diff options
Diffstat (limited to 'src/ChunkDef.h')
-rw-r--r-- | src/ChunkDef.h | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/src/ChunkDef.h b/src/ChunkDef.h index 673ae347a..12036cdbe 100644 --- a/src/ChunkDef.h +++ b/src/ChunkDef.h @@ -207,36 +207,22 @@ public: } - inline static int MakeIndex(int x, int y, int z) + inline static size_t MakeIndex(int x, int y, int z) { - if ( - (x < Width) && (x > -1) && - (y < Height) && (y > -1) && - (z < Width) && (z > -1) - ) - { - return MakeIndexNoCheck(x, y, z); - } - FLOGERROR("cChunkDef::MakeIndex(): coords out of range: {0}; returning fake index 0", Vector3i{x, y, z}); - ASSERT(!"cChunkDef::MakeIndex(): coords out of chunk range!"); - return 0; - } - + ASSERT(IsValidRelPos({ x, y, z })); - inline static int MakeIndexNoCheck(int x, int y, int z) - { #if AXIS_ORDER == AXIS_ORDER_XZY // For some reason, NOT using the Horner schema is faster. Weird. - return x + (z * cChunkDef::Width) + (y * cChunkDef::Width * cChunkDef::Width); // 1.2 uses XZY + return static_cast<size_t>(x + (z * Width) + (y * Width * Width)); // 1.2 uses XZY #elif AXIS_ORDER == AXIS_ORDER_YZX - return y + (z * cChunkDef::Width) + (x * cChunkDef::Height * cChunkDef::Width); // 1.1 uses YZX + return static_cast<size_t>(y + (z * Width) + (x * Height * Width)); // 1.1 uses YZX #endif } - inline static int MakeIndexNoCheck(Vector3i a_RelPos) + inline static size_t MakeIndex(Vector3i a_RelPos) { - return MakeIndexNoCheck(a_RelPos.x, a_RelPos.y, a_RelPos.z); + return MakeIndex(a_RelPos.x, a_RelPos.y, a_RelPos.z); } @@ -263,7 +249,7 @@ public: ASSERT((a_X >= 0) && (a_X < Width)); ASSERT((a_Y >= 0) && (a_Y < Height)); ASSERT((a_Z >= 0) && (a_Z < Width)); - a_BlockTypes[MakeIndexNoCheck(a_X, a_Y, a_Z)] = a_Type; + a_BlockTypes[MakeIndex(a_X, a_Y, a_Z)] = a_Type; } @@ -277,7 +263,7 @@ public: inline static BLOCKTYPE GetBlock(const BLOCKTYPE * a_BlockTypes, Vector3i a_RelPos) { ASSERT(IsValidRelPos(a_RelPos)); - return a_BlockTypes[MakeIndexNoCheck(a_RelPos)]; + return a_BlockTypes[MakeIndex(a_RelPos)]; } @@ -286,7 +272,7 @@ public: ASSERT((a_X >= 0) && (a_X < Width)); ASSERT((a_Y >= 0) && (a_Y < Height)); ASSERT((a_Z >= 0) && (a_Z < Width)); - return a_BlockTypes[MakeIndexNoCheck(a_X, a_Y, a_Z)]; + return a_BlockTypes[MakeIndex(a_X, a_Y, a_Z)]; } @@ -333,8 +319,7 @@ public: { if ((x < Width) && (x > -1) && (y < Height) && (y > -1) && (z < Width) && (z > -1)) { - int Index = MakeIndexNoCheck(x, y, z); - return ExpandNibble(a_Buffer, static_cast<size_t>(Index)); + return ExpandNibble(a_Buffer, MakeIndex(x, y, z)); } ASSERT(!"cChunkDef::GetNibble(): coords out of chunk range!"); return 0; @@ -436,7 +421,6 @@ struct sSetBlock } }; -typedef std::list<sSetBlock> sSetBlockList; typedef std::vector<sSetBlock> sSetBlockVector; typedef std::list<cChunkCoords> cChunkCoordsList; @@ -461,27 +445,6 @@ public: -class cChunkCoordsWithBool -{ -public: - int m_ChunkX; - int m_ChunkZ; - bool m_ForceGenerate; - - cChunkCoordsWithBool(int a_ChunkX, int a_ChunkZ, bool a_ForceGenerate) : m_ChunkX(a_ChunkX), m_ChunkZ(a_ChunkZ), m_ForceGenerate(a_ForceGenerate){} - - bool operator == (const cChunkCoordsWithBool & a_Other) const - { - return ((m_ChunkX == a_Other.m_ChunkX) && (m_ChunkZ == a_Other.m_ChunkZ) && (m_ForceGenerate == a_Other.m_ForceGenerate)); - } -}; - -typedef std::list<cChunkCoordsWithBool> cChunkCoordsWithBoolList; - - - - - /** Interface class used as a callback for operations that involve chunk coords */ class cChunkCoordCallback { @@ -518,7 +481,6 @@ public: } ; typedef cCoordWithData<int> cCoordWithInt; -typedef cCoordWithData<BLOCKTYPE> cCoordWithBlock; typedef std::list<cCoordWithInt> cCoordWithIntList; typedef std::vector<cCoordWithInt> cCoordWithIntVector; |