@@ -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