Use irr_ptr for MapBlockMesh::m_mesh

This commit is contained in:
Desour 2023-09-15 00:00:00 +02:00 committed by sfan5
parent 2b2f2dee20
commit 9827f9df1b
2 changed files with 8 additions and 8 deletions

@ -615,7 +615,7 @@ MapBlockMesh::MapBlockMesh(Client *client, MeshMakeData *data, v3s16 camera_offs
ZoneScoped; ZoneScoped;
for (auto &m : m_mesh) for (auto &m : m_mesh)
m = new scene::SMesh(); m = make_irr<scene::SMesh>();
m_enable_shaders = data->m_use_shaders; m_enable_shaders = data->m_use_shaders;
auto mesh_grid = client->getMeshGrid(); auto mesh_grid = client->getMeshGrid();
@ -663,7 +663,7 @@ MapBlockMesh::MapBlockMesh(Client *client, MeshMakeData *data, v3s16 camera_offs
m_bounding_radius = std::sqrt(collector.m_bounding_radius_sq); m_bounding_radius = std::sqrt(collector.m_bounding_radius_sq);
for (int layer = 0; layer < MAX_TILE_LAYERS; layer++) { for (int layer = 0; layer < MAX_TILE_LAYERS; layer++) {
scene::SMesh *mesh = (scene::SMesh *)m_mesh[layer]; scene::SMesh *mesh = static_cast<scene::SMesh *>(m_mesh[layer].get());
for(u32 i = 0; i < collector.prebuffers[layer].size(); i++) for(u32 i = 0; i < collector.prebuffers[layer].size(); i++)
{ {
@ -793,10 +793,10 @@ MapBlockMesh::MapBlockMesh(Client *client, MeshMakeData *data, v3s16 camera_offs
MapBlockMesh::~MapBlockMesh() MapBlockMesh::~MapBlockMesh()
{ {
size_t sz = 0; size_t sz = 0;
for (scene::IMesh *m : m_mesh) { for (auto &&m : m_mesh) {
for (u32 i = 0; i < m->getMeshBufferCount(); i++) for (u32 i = 0; i < m->getMeshBufferCount(); i++)
sz += m->getMeshBuffer(i)->getSize(); sz += m->getMeshBuffer(i)->getSize();
m->drop(); m.reset();
} }
for (MinimapMapblock *block : m_minimap_mapblocks) for (MinimapMapblock *block : m_minimap_mapblocks)
delete block; delete block;
@ -865,7 +865,7 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack,
get_sunlight_color(&day_color, daynight_ratio); get_sunlight_color(&day_color, daynight_ratio);
for (auto &daynight_diff : m_daynight_diffs) { for (auto &daynight_diff : m_daynight_diffs) {
auto *mesh = m_mesh[daynight_diff.first.first]; auto *mesh = m_mesh[daynight_diff.first.first].get();
mesh->setDirty(scene::EBT_VERTEX); // force reload to VBO mesh->setDirty(scene::EBT_VERTEX); // force reload to VBO
scene::IMeshBuffer *buf = mesh-> scene::IMeshBuffer *buf = mesh->
getMeshBuffer(daynight_diff.first.second); getMeshBuffer(daynight_diff.first.second);

@ -193,12 +193,12 @@ public:
scene::IMesh *getMesh() scene::IMesh *getMesh()
{ {
return m_mesh[0]; return m_mesh[0].get();
} }
scene::IMesh *getMesh(u8 layer) scene::IMesh *getMesh(u8 layer)
{ {
return m_mesh[layer]; return m_mesh[layer].get();
} }
std::vector<MinimapMapblock*> moveMinimapMapblocks() std::vector<MinimapMapblock*> moveMinimapMapblocks()
@ -242,7 +242,7 @@ private:
TileLayer tile; TileLayer tile;
}; };
scene::IMesh *m_mesh[MAX_TILE_LAYERS]; irr_ptr<scene::IMesh> m_mesh[MAX_TILE_LAYERS];
std::vector<MinimapMapblock*> m_minimap_mapblocks; std::vector<MinimapMapblock*> m_minimap_mapblocks;
ITextureSource *m_tsrc; ITextureSource *m_tsrc;
IShaderSource *m_shdrsrc; IShaderSource *m_shdrsrc;