namespace Voxel { public class ChunkMesh { public int X; public int Y; private byte[] _packedData; public int Size = 0; public ChunkMesh(int x, int y) { _packedData = Array.Empty(); X = x; Y = y; } public void SetFaces(List faces) { Size = faces.Count; _packedData = PackFaces(faces); } private static byte[] PackFaces(List faces) { const int BYTES_PER_FACE = 4; int totalFaces = faces.Count; var result = new byte[faces.Count * BYTES_PER_FACE]; for (int i = 0; i < totalFaces; i++) { var face = faces[i]; uint packed = face._data; int offset = i * 4; // Write little-endian (important!) result[offset] = (byte)(packed); result[offset + 1] = (byte)(packed >> 8); result[offset + 2] = (byte)(packed >> 16); result[offset + 3] = (byte)(packed >> 24); } return result; } public byte[] GetPackedData() => _packedData; } }