Skip to content

Commit 2c3c69f

Browse files
committed
Tilemap submesh errors check
1 parent 813e11c commit 2c3c69f

1 file changed

Lines changed: 11 additions & 7 deletions

File tree

engine/core/subsystem/MeshSystem.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,9 @@ bool MeshSystem::createTilemap(TilemapComponent& tilemap, MeshComponent& mesh){
233233
preReserveTiles--;
234234
}
235235
TileRectData& rectData = tilemap.tilesRect[tilemap.tiles[i].rectId];
236+
if (rectData.submeshId < 0 || (unsigned int)rectData.submeshId >= mesh.numSubmeshes){
237+
continue;
238+
}
236239
Texture& texture = mesh.submeshes[rectData.submeshId].material.baseColorTexture;
237240
Texture& mainTexture = mesh.submeshes[0].material.baseColorTexture;
238241
if (!texture.empty()){
@@ -296,9 +299,10 @@ bool MeshSystem::createTilemap(TilemapComponent& tilemap, MeshComponent& mesh){
296299
tilemap.height = static_cast<unsigned int>(tilemap.tiles[i].position.y + tilemap.tiles[i].height);
297300

298301
TileRectData& rectData = tilemap.tilesRect[tilemap.tiles[i].rectId];
302+
int submeshId = (rectData.submeshId >= 0 && (unsigned int)rectData.submeshId < mesh.numSubmeshes) ? rectData.submeshId : 0;
299303
Rect& tileRect = rectData.rect;
300304

301-
Texture& texture = mesh.submeshes[rectData.submeshId].material.baseColorTexture;
305+
Texture& texture = mesh.submeshes[submeshId].material.baseColorTexture;
302306
Texture& mainTexture = mesh.submeshes[0].material.baseColorTexture;
303307

304308
unsigned int texWidth = 0;
@@ -351,12 +355,12 @@ bool MeshSystem::createTilemap(TilemapComponent& tilemap, MeshComponent& mesh){
351355
mesh.buffer.addVector4(attColor, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
352356
mesh.buffer.addVector4(attColor, Vector4(1.0f, 1.0f, 1.0f, 1.0f));
353357

354-
indexMap[rectData.submeshId].push_back(0 + (i*4));
355-
indexMap[rectData.submeshId].push_back(1 + (i*4));
356-
indexMap[rectData.submeshId].push_back(2 + (i*4));
357-
indexMap[rectData.submeshId].push_back(0 + (i*4));
358-
indexMap[rectData.submeshId].push_back(2 + (i*4));
359-
indexMap[rectData.submeshId].push_back(3 + (i*4));
358+
indexMap[submeshId].push_back(0 + (i*4));
359+
indexMap[submeshId].push_back(1 + (i*4));
360+
indexMap[submeshId].push_back(2 + (i*4));
361+
indexMap[submeshId].push_back(0 + (i*4));
362+
indexMap[submeshId].push_back(2 + (i*4));
363+
indexMap[submeshId].push_back(3 + (i*4));
360364

361365
}
362366

0 commit comments

Comments
 (0)