/// <summary> /// Update the internal palette to match the bitsPerBlock /// </summary> /// <remarks>This should never be called directly, please use <see cref="Resize"/></remarks> /// <param name="bitsPerBlock">The number of bits used to store a block state</param> /// <returns>true if the internal array must be updated, false otherwise</returns> private bool UpdatePalette(byte bitsPerBlock) { bitsPerBlock = System.Math.Clamp(bitsPerBlock, MinBitsPerBlock, _globalPalette.BitsPerBlock); if (BlockPalette.BitsPerBlock == bitsPerBlock) { return(false); } var flag = true; if (bitsPerBlock <= 8) { if (BlockPalette is LinearBlockPalette blockPalette) { blockPalette.Resize(bitsPerBlock); flag = false; } else { BlockPalette = new LinearBlockPalette(_globalPalette, bitsPerBlock); } } else { BlockPalette = _globalPalette; } _nBitsArray = NBitsArray.Create(bitsPerBlock, 4096); // TODO replace that by chunk section block count return(flag); }
/// <summary> /// Update the internal palette to match the bitsPerBlock /// </summary> /// <remarks>This should never be called directly, please use <see cref="Resize"/></remarks> /// <param name="bitsPerBlock">The number of bits used to store a block state</param> /// <returns>true if the internal array must be updated, false otherwise</returns> private bool UpdatePalette(byte bitsPerBlock) { bitsPerBlock = Math.Clamp(bitsPerBlock, MinBitsPerBlock, _globalPalette.BitsPerBlock); if (BlockPalette.BitsPerBlock == bitsPerBlock) { return(false); } var flag = true; if (bitsPerBlock <= 8) { if (BlockPalette is LinearBlockPalette blockPalette) { blockPalette.Resize(bitsPerBlock); flag = false; } else { BlockPalette = new LinearBlockPalette(_globalPalette, bitsPerBlock); } } else { BlockPalette = _globalPalette; } _nBitsArray = NBitsArray.Create(bitsPerBlock, Minecraft.Units.Chunk.SectionBlockCount); return(flag); }