Delegate simulator wakeup to cChunk
This commit is contained in:
parent
6c47f46c31
commit
fd5191854d
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user