(EntityHandle) Fixed swap

Former-commit-id: 735dd9d2c3080d202306ef9cfb1bb130639e93cd
This commit is contained in:
Lynix 2015-03-09 19:05:32 +01:00
parent 0d8f7546a9
commit c818ef7d4b
1 changed files with 16 additions and 0 deletions

View File

@ -68,6 +68,22 @@ namespace Ndk
inline EntityHandle& EntityHandle::Swap(EntityHandle& handle)
{
// Comme nous inversons les handles, nous devons prévenir les entités
// La version par défaut de swap (à base de move) aurait fonctionné,
// mais en enregistrant les handles une fois de plus que nécessaire (à cause de la copie temporaire).
if (m_entity)
{
m_entity->UnregisterHandle(this);
m_entity->RegisterHandle(&handle);
}
if (handle.m_entity)
{
handle.m_entity->UnregisterHandle(&handle);
handle.m_entity->RegisterHandle(this);
}
// On effectue l'échange
std::swap(m_entity, handle.m_entity);
}