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>
This commit is contained in:
@@ -9,26 +9,8 @@
|
||||
/** Performs the entire cChunkData coordinates test. */
|
||||
static void test()
|
||||
{
|
||||
class cMockAllocationPool
|
||||
: public cAllocationPool<cChunkData::sChunkSection>
|
||||
{
|
||||
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<cChunkData::sChunkSection> &) const noexcept override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
} Pool;
|
||||
{
|
||||
cChunkData buffer(Pool);
|
||||
ChunkBlockData buffer;
|
||||
|
||||
// Empty chunks
|
||||
buffer.SetBlock({ 0, 0, 0 }, 0xAB);
|
||||
@@ -44,6 +26,26 @@ static void test()
|
||||
TEST_EQUAL(buffer.GetBlock({ 0, 32, 0 }), 0x0);
|
||||
TEST_EQUAL(buffer.GetMeta({ 0, 48, 0 }), 0x0);
|
||||
|
||||
// Out of range GetBlock
|
||||
TEST_ASSERTS(
|
||||
buffer.GetBlock({ -1, 0, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetBlock({ 0, -1, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetBlock({ 0, 0, -1 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetBlock({ 256, 0, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetBlock({ 0, 256, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetBlock({ 0, 0, 256 });
|
||||
);
|
||||
|
||||
// Out of range SetBlock
|
||||
TEST_ASSERTS(
|
||||
buffer.SetBlock({ -1, 0, 0 }, 0)
|
||||
@@ -63,6 +65,27 @@ static void test()
|
||||
TEST_ASSERTS(
|
||||
buffer.SetBlock({ 0, 0, 256 }, 0)
|
||||
);
|
||||
|
||||
// Out of range GetMeta
|
||||
TEST_ASSERTS(
|
||||
buffer.GetMeta({ -1, 0, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetMeta({ 0, -1, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetMeta({ 0, 0, -1 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetMeta({ 256, 0, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetMeta({ 0, 256, 0 });
|
||||
);
|
||||
TEST_ASSERTS(
|
||||
buffer.GetMeta({ 0, 0, 256 });
|
||||
);
|
||||
|
||||
// Out of range SetMeta
|
||||
TEST_ASSERTS(
|
||||
buffer.SetMeta({ -1, 0, 0 }, 0)
|
||||
@@ -82,26 +105,10 @@ static void test()
|
||||
TEST_ASSERTS(
|
||||
buffer.SetMeta({ 0, 0, 256 }, 0)
|
||||
);
|
||||
|
||||
// Reading out of range blocks should return air
|
||||
TEST_EQUAL(buffer.GetBlock({ -1, 0, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetBlock({ 0, -1, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetBlock({ 0, 0, -1 }), 0);
|
||||
TEST_EQUAL(buffer.GetBlock({ 256, 0, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetBlock({ 0, 256, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetBlock({ 0, 0, 256 }), 0);
|
||||
|
||||
// Reading out of range metas should return 0
|
||||
TEST_EQUAL(buffer.GetMeta({ -1, 0, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetMeta({ 0, -1, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetMeta({ 0, 0, -1 }), 0);
|
||||
TEST_EQUAL(buffer.GetMeta({ 256, 0, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetMeta({ 0, 256, 0 }), 0);
|
||||
TEST_EQUAL(buffer.GetMeta({ 0, 0, 256 }), 0);
|
||||
}
|
||||
|
||||
{
|
||||
cChunkData buffer(Pool);
|
||||
ChunkBlockData buffer;
|
||||
|
||||
// Zero's
|
||||
buffer.SetBlock({ 0, 0, 0 }, 0x0);
|
||||
@@ -118,9 +125,9 @@ static void test()
|
||||
|
||||
{
|
||||
// Operator =
|
||||
cChunkData buffer(Pool);
|
||||
ChunkBlockData buffer;
|
||||
buffer.SetBlock({ 0, 0, 0 }, 0x42);
|
||||
cChunkData copy(Pool);
|
||||
ChunkBlockData copy;
|
||||
copy = std::move(buffer);
|
||||
TEST_EQUAL(copy.GetBlock({ 0, 0, 0 }), 0x42);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user