diff --git a/SDK/include/NDK/Components/ParticleEmitterComponent.hpp b/SDK/include/NDK/Components/ParticleEmitterComponent.hpp index 8d93e0495..6ad3e3981 100644 --- a/SDK/include/NDK/Components/ParticleEmitterComponent.hpp +++ b/SDK/include/NDK/Components/ParticleEmitterComponent.hpp @@ -19,28 +19,23 @@ namespace Ndk public: using SetupFunc = std::function; - ParticleEmitterComponent(Nz::ParticleGroup* group); - ParticleEmitterComponent(const ParticleEmitterComponent& emitter); - ParticleEmitterComponent(ParticleEmitterComponent&& emitter); - ~ParticleEmitterComponent(); + inline ParticleEmitterComponent(); + ParticleEmitterComponent(const ParticleEmitterComponent& emitter) = default; + ParticleEmitterComponent(ParticleEmitterComponent&& emitter) = default; + ~ParticleEmitterComponent() = default; + + void Enable(bool active = true); inline bool IsActive() const; - void SetActive(bool active = true); - void SetGroup(Nz::ParticleGroup* group); inline void SetSetupFunc(SetupFunc func); static ComponentIndex componentIndex; private: - void OnParticleGroupRelease(const Nz::ParticleGroup* particleGroup); - void SetupParticles(Nz::ParticleMapper& mapper, unsigned int count) const override; - NazaraSlot(Nz::ParticleGroup, OnParticleGroupRelease, m_particleGroupRelease); - SetupFunc m_setupFunc; - Nz::ParticleGroup* m_particleGroup; bool m_isActive; }; } diff --git a/SDK/include/NDK/Components/ParticleEmitterComponent.inl b/SDK/include/NDK/Components/ParticleEmitterComponent.inl index 6cc9e8c29..342b5e56f 100644 --- a/SDK/include/NDK/Components/ParticleEmitterComponent.inl +++ b/SDK/include/NDK/Components/ParticleEmitterComponent.inl @@ -6,6 +6,16 @@ namespace Ndk { + inline ParticleEmitterComponent::ParticleEmitterComponent() : + m_isActive(true) + { + } + + inline void Ndk::ParticleEmitterComponent::Enable(bool active) + { + m_isActive = active; + } + inline bool ParticleEmitterComponent::IsActive() const { return m_isActive; diff --git a/SDK/src/NDK/Components/ParticleEmitterComponent.cpp b/SDK/src/NDK/Components/ParticleEmitterComponent.cpp index 6a3cfeb7e..2ae4365e6 100644 --- a/SDK/src/NDK/Components/ParticleEmitterComponent.cpp +++ b/SDK/src/NDK/Components/ParticleEmitterComponent.cpp @@ -7,51 +7,9 @@ namespace Ndk { - ParticleEmitterComponent::ParticleEmitterComponent(Nz::ParticleGroup* group) : - m_particleGroup(group), - m_isActive(true) + void ParticleEmitterComponent::SetupParticles(Nz::ParticleMapper& mapper, unsigned int count) const { - if (m_particleGroup) - m_particleGroup->AddEmitter(this); - } - - ParticleEmitterComponent::ParticleEmitterComponent(const ParticleEmitterComponent& emitter) : - m_particleGroup(emitter.m_particleGroup), - m_isActive(emitter.m_isActive) - { - if (m_isActive) - m_particleGroup->AddEmitter(this); - } - - ParticleEmitterComponent::~ParticleEmitterComponent() - { - m_particleGroup->RemoveEmitter(this); - } - - inline void Ndk::ParticleEmitterComponent::SetActive(bool active) - { - if (m_isActive != active) - { - if (active) - m_particleGroup->AddEmitter(this); - else - m_particleGroup->RemoveEmitter(this); - } - } - - void ParticleEmitterComponent::SetGroup(Nz::ParticleGroup* group) - { - if (m_particleGroup) - m_particleGroup->RemoveEmitter(this); - - m_particleGroup = group; - if (m_particleGroup && m_isActive) - m_particleGroup = group; - } - - inline void ParticleEmitterComponent::SetupParticles(Nz::ParticleMapper& mapper, unsigned int count) const - { - if (m_setupFunc) + if (m_isActive && m_setupFunc) m_setupFunc(m_entity, mapper, count); }