From ad290a18f456ade9654a5a9425132dab5d0f64f9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 23 Apr 2015 14:26:48 +0200 Subject: [PATCH] Ndk/Components: Added On[Attached|Detached] events Former-commit-id: 46e5b5720a8496dfe536181918ae0a995e028fc1 --- SDK/include/NDK/BaseComponent.hpp | 2 ++ SDK/include/NDK/BaseComponent.inl | 10 +++++++++- SDK/src/NDK/BaseComponent.cpp | 8 ++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/SDK/include/NDK/BaseComponent.hpp b/SDK/include/NDK/BaseComponent.hpp index fc1e88058..4e9b53328 100644 --- a/SDK/include/NDK/BaseComponent.hpp +++ b/SDK/include/NDK/BaseComponent.hpp @@ -43,8 +43,10 @@ namespace Ndk static ComponentIndex RegisterComponent(ComponentId id, Factory factoryFunc); private: + virtual void OnAttached(); virtual void OnComponentAttached(BaseComponent& component); virtual void OnComponentDetached(BaseComponent& component); + virtual void OnDetached(); void SetEntity(Entity* entity); static bool Initialize(); diff --git a/SDK/include/NDK/BaseComponent.inl b/SDK/include/NDK/BaseComponent.inl index 290a5de2d..b8637b457 100644 --- a/SDK/include/NDK/BaseComponent.inl +++ b/SDK/include/NDK/BaseComponent.inl @@ -38,7 +38,15 @@ namespace Ndk inline void BaseComponent::SetEntity(Entity* entity) { - m_entity = entity; + if (m_entity != entity) + { + if (m_entity) + OnDetached(); + + m_entity = entity; + if (m_entity) + OnAttached(); + } } inline bool BaseComponent::Initialize() diff --git a/SDK/src/NDK/BaseComponent.cpp b/SDK/src/NDK/BaseComponent.cpp index 6a54563df..1a0b85168 100644 --- a/SDK/src/NDK/BaseComponent.cpp +++ b/SDK/src/NDK/BaseComponent.cpp @@ -8,6 +8,10 @@ namespace Ndk { BaseComponent::~BaseComponent() = default; + void BaseComponent::OnAttached() + { + } + void BaseComponent::OnComponentAttached(BaseComponent& component) { NazaraUnused(component); @@ -18,6 +22,10 @@ namespace Ndk NazaraUnused(component); } + void BaseComponent::OnDetached() + { + } + std::vector BaseComponent::s_entries; std::unordered_map BaseComponent::s_idToIndex; }