public InstancedMeshInfo MeshChunkBlocks(Vector3Int chunkIndex, ChunkLayer <Block> chunkLayer) { InstancedMeshInfo instancedMeshInfo = new InstancedMeshInfo(modelTypeCount); Chunk <Block> chunk = chunkLayer.GetChunk(chunkIndex); Vector3 chunkStart = chunkIndex.Multiply(chunkSettings.ChunkWorldLen); for (int x = 0; x < chunkSL; x++) { for (int y = 0; y < chunkSL; y++) { for (int z = 0; z < chunkSL; z++) { Vector3Int indexInChunk = new Vector3Int(x, y, z); Vector3 position = new Vector3(x, y, z) * chunkSettings.VoxelSize + chunkStart; Block block = chunk.GetVoxel(indexInChunk); TechnicalBlock technicalBlock = block.technicalBlock; if (technicalBlock != null) { instancedMeshInfo.AddModelInfos(technicalBlock.GetStaticMesh(), Matrix4x4.Translate(position) * technicalBlock.localTransform * Matrix4x4.Scale(Vector3.one * 0.5f)); } } } } return(instancedMeshInfo); }