From 868cd94ee9a5a0638c014a4cc42224f01ff234c8 Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Fri, 5 Mar 2021 13:03:55 +0000 Subject: Prepare ChunkData for BlockState storage (#5105) * Rename ChunkData Creatable test * Add missing Y-check in RedstoneWireHandler * Remove ChunkDef.h dependency in Scoreboard * Prepare ChunkData for BlockState storage + Split chunk block, meta, block & sky light storage + Load the height map from disk - Reduce duplicated code in ChunkData - Remove saving MCSBiomes, there aren't any - Remove the allocation pool, ref #4315, #3864 * fixed build * fixed test * fixed the debug compile Co-authored-by: 12xx12 <44411062+12xx12@users.noreply.github.com> --- tests/ChunkData/ArraytoCoord.cpp | 99 ++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 50 deletions(-) (limited to 'tests/ChunkData/ArraytoCoord.cpp') diff --git a/tests/ChunkData/ArraytoCoord.cpp b/tests/ChunkData/ArraytoCoord.cpp index 1fdaf3365..89fd8f731 100644 --- a/tests/ChunkData/ArraytoCoord.cpp +++ b/tests/ChunkData/ArraytoCoord.cpp @@ -8,100 +8,99 @@ /** Performs the entire ArrayToCoords test. */ static void test() { - - class cMockAllocationPool - : public cAllocationPool - { - virtual cChunkData::sChunkSection * Allocate() override - { - return new cChunkData::sChunkSection(); - } - - virtual void Free(cChunkData::sChunkSection * a_Ptr) override - { - delete a_Ptr; - } - - virtual bool DoIsEqual(const cAllocationPool &) const noexcept override - { - return false; - } - } Pool; { - - // Test first segment - cChunkData buffer(Pool); + // Test first segment (blocks) + ChunkBlockData buffer; BLOCKTYPE SrcBlockBuffer[16 * 16 * 256]; memset(SrcBlockBuffer, 0x00, sizeof(SrcBlockBuffer)); SrcBlockBuffer[7 + (4 * 16) + (5 * 16 * 16)] = 0xcd; - buffer.SetBlockTypes(SrcBlockBuffer); - TEST_EQUAL(buffer.GetBlock({ 7, 5, 4 }), 0xcd); NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); SrcNibbleBuffer[(6 + (1 * 16) + (2 * 16 * 16)) / 2] = 0xe; - buffer.SetMetas(SrcNibbleBuffer); + + buffer.SetAll(SrcBlockBuffer, SrcNibbleBuffer); + + TEST_EQUAL(buffer.GetBlock({ 7, 5, 4 }), 0xcd); TEST_EQUAL(buffer.GetMeta({ 6, 2, 1 }), 0xe); + } - memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); - SrcNibbleBuffer[(6 + (1 * 16) + (2 * 16 * 16)) / 2] = 0xe; - buffer.SetBlockLight(SrcNibbleBuffer); - TEST_EQUAL(buffer.GetBlockLight({ 6, 2, 1 }), 0xe); + { + // Test first segment (lights) + ChunkLightData buffer; + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); SrcNibbleBuffer[(6 + (1 * 16) + (2 * 16 * 16)) / 2] = 0xe; - buffer.SetSkyLight(SrcNibbleBuffer); + + buffer.SetAll(SrcNibbleBuffer, SrcNibbleBuffer); + + TEST_EQUAL(buffer.GetBlockLight({ 6, 2, 1 }), 0xe); TEST_EQUAL(buffer.GetSkyLight({ 6, 2, 1 }), 0xe); } { - // test following segment - cChunkData buffer(Pool); + // test following segment (blocks) + ChunkBlockData buffer; BLOCKTYPE SrcBlockBuffer[16 * 16 * 256]; memset(SrcBlockBuffer, 0x00, sizeof(SrcBlockBuffer)); SrcBlockBuffer[7 + (4 * 16) + (24 * 16 * 16)] = 0xcd; - buffer.SetBlockTypes(SrcBlockBuffer); - TEST_EQUAL(buffer.GetBlock({ 7, 24, 4 }), 0xcd); NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); SrcNibbleBuffer[(6 + (1 * 16) + (24 * 16 * 16)) / 2] = 0xe; - buffer.SetMetas(SrcNibbleBuffer); + + buffer.SetAll(SrcBlockBuffer, SrcNibbleBuffer); + + TEST_EQUAL(buffer.GetBlock({ 7, 24, 4 }), 0xcd); TEST_EQUAL(buffer.GetMeta({ 6, 24, 1 }), 0xe); + } - memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); - SrcNibbleBuffer[(6 + 1 * 16 + 24 * 16 * 16) / 2] = 0xe; - buffer.SetBlockLight(SrcNibbleBuffer); - TEST_EQUAL(buffer.GetBlockLight({ 6, 24, 1 }), 0xe); + { + // test following segment (lights) + ChunkLightData buffer; - memset(SrcNibbleBuffer, 0xff, sizeof(SrcNibbleBuffer)); + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; + memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); SrcNibbleBuffer[(6 + (1 * 16) + (24 * 16 * 16)) / 2] = 0xe; - buffer.SetSkyLight(SrcNibbleBuffer); + + buffer.SetAll(SrcNibbleBuffer, SrcNibbleBuffer); + + TEST_EQUAL(buffer.GetBlockLight({ 6, 24, 1 }), 0xe); TEST_EQUAL(buffer.GetSkyLight({ 6, 24, 1 }), 0xe); } { - // test zeros - cChunkData buffer(Pool); + // test zeros (blocks) + ChunkBlockData buffer; BLOCKTYPE SrcBlockBuffer[16 * 16 * 256]; memset(SrcBlockBuffer, 0x00, sizeof(SrcBlockBuffer)); - buffer.SetBlockTypes(SrcBlockBuffer); - TEST_EQUAL(buffer.GetBlock({ 7, 24, 4 }), 0x00); NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); - buffer.SetMetas(SrcNibbleBuffer); + + buffer.SetAll(SrcBlockBuffer, SrcNibbleBuffer); + + TEST_EQUAL(buffer.GetBlock({ 7, 24, 4 }), 0x00); TEST_EQUAL(buffer.GetMeta({ 6, 24, 1 }), 0x0); + } + + { + // test zeros (lights) + ChunkLightData buffer; + NIBBLETYPE SrcNibbleBuffer[16 * 16 * 256 / 2]; memset(SrcNibbleBuffer, 0x00, sizeof(SrcNibbleBuffer)); - buffer.SetBlockLight(SrcNibbleBuffer); - TEST_EQUAL(buffer.GetBlockLight({ 6, 24, 1 }), 0x0); - memset(SrcNibbleBuffer, 0xff, sizeof(SrcNibbleBuffer)); - buffer.SetSkyLight(SrcNibbleBuffer); + NIBBLETYPE SrcNibbleBuffer2[16 * 16 * 256 / 2]; + memset(SrcNibbleBuffer2, 0xff, sizeof(SrcNibbleBuffer2)); + + buffer.SetAll(SrcNibbleBuffer, SrcNibbleBuffer2); + + TEST_EQUAL(buffer.GetBlockLight({ 6, 24, 1 }), 0x0); TEST_EQUAL(buffer.GetSkyLight({ 6, 24, 1 }), 0xf); } } -- cgit v1.2.3