// TODO: dont allow public constructor, use a chunk manager/provider instead public LocalChunk(IChunkColumn parent, int y, IBlockPalette blockPalette, BlockState airBlock) { // TODO: validate Y through a chunk manager or something Y = y; Column = parent ?? throw new ArgumentNullException(nameof(parent)); BlockPalette = blockPalette ?? throw new ArgumentNullException(nameof(blockPalette)); AirBlock = airBlock; // TODO: pool storage arrays _blocks = BitArray32.AllocateUninitialized(BlockCount, BlockPalette.BitsPerBlock); }