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);
    }