1
0
Fork 0

Simplify MoveEntityToNewChunk

- No longer try getting from the chunkmap if GetNeighborChunk fails, since nothing else does this and entities (in future) will not tick close to an unloaded chunk edge
* GetRelNeighborChunk uses FindChunk
This commit is contained in:
Tiger Wang 2020-08-28 21:32:46 +01:00
parent 08bd77e547
commit 7023548de0
2 changed files with 4 additions and 8 deletions

View File

@ -724,12 +724,8 @@ void cChunk::MoveEntityToNewChunk(OwnedEntity a_Entity)
cChunk * Neighbor = GetNeighborChunk(a_Entity->GetChunkX() * cChunkDef::Width, a_Entity->GetChunkZ() * cChunkDef::Width);
if (Neighbor == nullptr)
{
Neighbor = m_ChunkMap->GetChunk(a_Entity->GetChunkX(), a_Entity->GetChunkZ());
if (Neighbor == nullptr) // This will assert inside GetChunk in debug builds
{
LOGWARNING("%s: Failed to move entity, destination chunk unreachable. Entity lost", __FUNCTION__);
return;
}
LOGWARNING("%s: Failed to move entity, destination chunk unreachable. Entity lost", __FUNCTION__);
return;
}
ASSERT(Neighbor != this); // Moving into the same chunk? wtf?
@ -2151,7 +2147,7 @@ cChunk * cChunk::GetRelNeighborChunk(int a_RelX, int a_RelZ)
int BlockZ = m_PosZ * cChunkDef::Width + a_RelZ;
int ChunkX, ChunkZ;
BlockToChunk(BlockX, BlockZ, ChunkX, ChunkZ);
return m_ChunkMap->GetChunkNoLoad(ChunkX, ChunkZ);
return m_ChunkMap->FindChunk(ChunkX, ChunkZ);
}
// Walk the neighbors:

View File

@ -401,7 +401,7 @@ public:
private:
// Chunks query their neighbors using GetChunk(), while being ticked
// Chunks query their neighbors using FindChunk(), while being ticked
friend class cChunk;
// The chunkstay can (de-)register itself using AddChunkStay() and DelChunkStay()