diff options
Diffstat (limited to 'src/Entities/Entity.cpp')
-rw-r--r-- | src/Entities/Entity.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 30aa87f37..6e1dec957 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -1927,10 +1927,13 @@ void cEntity::AttachTo(cEntity * a_AttachTo) Detach(); } - // Attach to the new entity: + // Update state information m_AttachedTo = a_AttachTo; a_AttachTo->m_Attachee = this; - m_World->BroadcastAttachEntity(*this, a_AttachTo); + if (a_AttachTo != nullptr) + { + m_World->BroadcastAttachEntity(*this, *a_AttachTo); + } } @@ -1941,12 +1944,13 @@ void cEntity::Detach(void) { if (m_AttachedTo == nullptr) { - // Attached to no entity, our work is done + // Already not attached to any entity, our work is done return; } + m_World->BroadcastDetachEntity(*this, *m_AttachedTo); + m_AttachedTo->m_Attachee = nullptr; m_AttachedTo = nullptr; - m_World->BroadcastAttachEntity(*this, nullptr); } |