From c818ef7d4bf8af368e52441356d30810015aab60 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 9 Mar 2015 19:05:32 +0100 Subject: [PATCH] (EntityHandle) Fixed swap Former-commit-id: 735dd9d2c3080d202306ef9cfb1bb130639e93cd --- SDK/include/NDK/EntityHandle.inl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/SDK/include/NDK/EntityHandle.inl b/SDK/include/NDK/EntityHandle.inl index 6afdb2b0c..abd31dab1 100644 --- a/SDK/include/NDK/EntityHandle.inl +++ b/SDK/include/NDK/EntityHandle.inl @@ -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); }