summaryrefslogtreecommitdiffstats
path: root/src/Chunk.cpp
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2020-08-20 13:50:22 +0200
committerTiger Wang <ziwei.tiger@outlook.com>2020-08-21 01:50:09 +0200
commitd1b0d0f5b5c288c235c8bb3412b32bb446564e66 (patch)
tree506b0cbd578ed5b2289bae0a0a27ceaddb2e9039 /src/Chunk.cpp
parentRemove std::make_unique from redstone handler creation (diff)
downloadcuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.tar
cuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.tar.gz
cuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.tar.bz2
cuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.tar.lz
cuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.tar.xz
cuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.tar.zst
cuberite-d1b0d0f5b5c288c235c8bb3412b32bb446564e66.zip
Diffstat (limited to 'src/Chunk.cpp')
-rw-r--r--src/Chunk.cpp37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/Chunk.cpp b/src/Chunk.cpp
index 1aa377651..afbc3adca 100644
--- a/src/Chunk.cpp
+++ b/src/Chunk.cpp
@@ -56,7 +56,6 @@
cChunk::cChunk(
int a_ChunkX, int a_ChunkZ,
cChunkMap * a_ChunkMap, cWorld * a_World,
- cChunk * a_NeighborXM, cChunk * a_NeighborXP, cChunk * a_NeighborZM, cChunk * a_NeighborZP,
cAllocationPool<cChunkData::sChunkSection> & a_Pool
):
m_Presence(cpInvalid),
@@ -71,30 +70,31 @@ cChunk::cChunk(
m_World(a_World),
m_ChunkMap(a_ChunkMap),
m_ChunkData(a_Pool),
- m_NeighborXM(a_NeighborXM),
- m_NeighborXP(a_NeighborXP),
- m_NeighborZM(a_NeighborZM),
- m_NeighborZP(a_NeighborZP),
m_WaterSimulatorData(a_World->GetWaterSimulator()->CreateChunkData()),
m_LavaSimulatorData (a_World->GetLavaSimulator ()->CreateChunkData()),
m_RedstoneSimulatorData(a_World->GetRedstoneSimulator()->CreateChunkData()),
m_AlwaysTicked(0)
{
- if (a_NeighborXM != nullptr)
+ m_NeighborXM = a_ChunkMap->FindChunk(a_ChunkX - 1, a_ChunkZ);
+ m_NeighborXP = a_ChunkMap->FindChunk(a_ChunkX + 1, a_ChunkZ);
+ m_NeighborZM = a_ChunkMap->FindChunk(a_ChunkX, a_ChunkZ - 1);
+ m_NeighborZP = a_ChunkMap->FindChunk(a_ChunkX, a_ChunkZ + 1);
+
+ if (m_NeighborXM != nullptr)
{
- a_NeighborXM->m_NeighborXP = this;
+ m_NeighborXM->m_NeighborXP = this;
}
- if (a_NeighborXP != nullptr)
+ if (m_NeighborXP != nullptr)
{
- a_NeighborXP->m_NeighborXM = this;
+ m_NeighborXP->m_NeighborXM = this;
}
- if (a_NeighborZM != nullptr)
+ if (m_NeighborZM != nullptr)
{
- a_NeighborZM->m_NeighborZP = this;
+ m_NeighborZM->m_NeighborZP = this;
}
- if (a_NeighborZP != nullptr)
+ if (m_NeighborZP != nullptr)
{
- a_NeighborZP->m_NeighborZM = this;
+ m_NeighborZP->m_NeighborZM = this;
}
}
@@ -188,10 +188,11 @@ void cChunk::MarkRegenerating(void)
-bool cChunk::HasPlayerEntities()
+bool cChunk::HasPlayerEntities() const
{
- return std::any_of(m_Entities.begin(), m_Entities.end(),
- [](std::unique_ptr<cEntity>& Entity)
+ return std::any_of(
+ m_Entities.begin(), m_Entities.end(),
+ [](const auto & Entity)
{
return Entity->IsPlayer();
}
@@ -202,7 +203,7 @@ bool cChunk::HasPlayerEntities()
-bool cChunk::CanUnload(void)
+bool cChunk::CanUnload(void) const
{
return
m_LoadedByClient.empty() && // The chunk is not used by any client
@@ -216,7 +217,7 @@ bool cChunk::CanUnload(void)
-bool cChunk::CanUnloadAfterSaving(void)
+bool cChunk::CanUnloadAfterSaving(void) const
{
return
m_LoadedByClient.empty() && // The chunk is not used by any client