1
0

More Vector3 in cBlockHandler (#4644)

* cBlockHandler.OnUpdate uses Vector3 params.

Also slightly changed how block ticking works.
This commit is contained in:
Mattes D
2020-04-17 11:36:37 +02:00
committed by GitHub
parent 96bd4637d7
commit 26ac146f41
27 changed files with 406 additions and 253 deletions

View File

@@ -2030,16 +2030,16 @@ int cChunkMap::GrowPlantAt(Vector3i a_BlockPos, int a_NumStages)
void cChunkMap::SetNextBlockTick(int a_BlockX, int a_BlockY, int a_BlockZ)
void cChunkMap::SetNextBlockToTick(const Vector3i a_BlockPos)
{
int ChunkX, ChunkZ;
cChunkDef::AbsoluteToRelative(a_BlockX, a_BlockY, a_BlockZ, ChunkX, ChunkZ);
auto ChunkPos = cChunkDef::BlockToChunk(a_BlockPos);
auto RelPos = cChunkDef::AbsoluteToRelative(a_BlockPos, ChunkPos);
cCSLock Lock(m_CSChunks);
cChunkPtr Chunk = GetChunkNoLoad(ChunkX, ChunkZ);
auto Chunk = GetChunkNoLoad(ChunkPos);
if (Chunk != nullptr)
{
Chunk->SetNextBlockTick(a_BlockX, a_BlockY, a_BlockZ);
Chunk->SetNextBlockToTick(RelPos);
}
}
@@ -2100,17 +2100,17 @@ void cChunkMap::Tick(std::chrono::milliseconds a_Dt)
void cChunkMap::TickBlock(int a_BlockX, int a_BlockY, int a_BlockZ)
void cChunkMap::TickBlock(const Vector3i a_BlockPos)
{
auto ChunkPos = cChunkDef::BlockToChunk(a_BlockPos);
auto RelPos = cChunkDef::AbsoluteToRelative(a_BlockPos, ChunkPos);
cCSLock Lock(m_CSChunks);
int ChunkX, ChunkZ;
cChunkDef::AbsoluteToRelative(a_BlockX, a_BlockY, a_BlockZ, ChunkX, ChunkZ);
cChunkPtr Chunk = GetChunkNoLoad(ChunkX, ChunkZ);
auto Chunk = GetChunkNoLoad(ChunkPos);
if ((Chunk == nullptr) || !Chunk->IsValid())
{
return;
}
Chunk->TickBlock(a_BlockX, a_BlockY, a_BlockZ);
Chunk->TickBlock(RelPos);
}