1
0

Delegate simulator wakeup to cChunk

This commit is contained in:
Tiger Wang 2020-07-28 23:39:55 +01:00
parent 6c47f46c31
commit fd5191854d
2 changed files with 12 additions and 12 deletions

View File

@ -585,22 +585,18 @@ void cBlockHandler::Check(
cChunk & a_Chunk
)
{
if (!CanBeAt(a_ChunkInterface, a_RelPos, a_Chunk))
if (CanBeAt(a_ChunkInterface, a_RelPos, a_Chunk))
{
if (DoesDropOnUnsuitable())
{
a_ChunkInterface.DropBlockAsPickups(a_Chunk.RelativeToAbsolute(a_RelPos));
}
else
{
a_Chunk.SetBlock(a_RelPos, E_BLOCK_AIR, 0);
}
return;
}
if (DoesDropOnUnsuitable())
{
a_ChunkInterface.DropBlockAsPickups(a_Chunk.RelativeToAbsolute(a_RelPos));
}
else
{
// Wake up the simulators for this block:
auto absPos = a_Chunk.RelativeToAbsolute(a_RelPos);
a_Chunk.GetWorld()->GetSimulatorManager()->WakeUp(absPos, &a_Chunk);
a_Chunk.SetBlock(a_RelPos, E_BLOCK_AIR, 0);
}
}

View File

@ -1314,6 +1314,10 @@ void cChunk::SetBlock(Vector3i a_RelPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_Blo
m_ToTickBlocks.push_back(a_RelPos);
QueueTickBlockNeighbors(a_RelPos);
// TODO: use relative coordinates, cChunk reference
// Wake up the simulators for this block:
GetWorld()->GetSimulatorManager()->WakeUp(RelativeToAbsolute(a_RelPos), this);
// If there was a block entity, remove it:
cBlockEntity * BlockEntity = GetBlockEntityRel(a_RelPos);
if (BlockEntity != nullptr)