Stabilise MoveToWorld (#4004)
* Stabilise MoveToWorld * Fix comments and deprecate ScheduleMoveToWorld * Enhanced thread safety for m_WorldChangeInfo * Return unique_ptr from cAtomicUniquePtr::exchange * cWorld now calls entity cEntity::OnAddToWorld and cEntity::OnRemoveFromWorld. Allows broadcasting entities added to the world from the world's tick thread. This also factors out some common code from cEntity::DoMoveToWorld and cEntity::Initialize. As a consequence, cEntity::Destroy(false) (i.e. Destroying the entity without broadcasting) is impossible. This isn't used anywhere in Cuberite so it's now deprecated. * Update entity position after removing it from the world. Fixes broadcasts being sent to the wrong chunk. * Fix style * cEntity: Update LastSentPosition when sending spawn packet * Add Wno-deprecated-declarations to the lua bindings * Kill uses of ScheduleMoveToWorld
This commit is contained in:
@@ -156,7 +156,7 @@ void cPickup::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk)
|
||||
m_Timer += a_Dt; // In case we have to destroy the pickup in the same tick.
|
||||
if (m_Timer > std::chrono::milliseconds(500))
|
||||
{
|
||||
Destroy(true);
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -180,14 +180,14 @@ void cPickup::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk)
|
||||
{
|
||||
if (m_Timer > std::chrono::milliseconds(500)) // 0.5 second
|
||||
{
|
||||
Destroy(true);
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_Timer > m_Lifetime)
|
||||
{
|
||||
Destroy(true);
|
||||
Destroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -200,7 +200,7 @@ bool cPickup::DoTakeDamage(TakeDamageInfo & a_TDI)
|
||||
{
|
||||
if (a_TDI.DamageType == dtCactusContact)
|
||||
{
|
||||
Destroy(true);
|
||||
Destroy();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user