diff --git a/include/Nazara/Graphics/ParticleSystem.hpp b/include/Nazara/Graphics/ParticleSystem.hpp index 73192de4c..b5fc30c2b 100644 --- a/include/Nazara/Graphics/ParticleSystem.hpp +++ b/include/Nazara/Graphics/ParticleSystem.hpp @@ -69,8 +69,8 @@ class NAZARA_API NzParticleSystem : public NzSceneNode, NzUpdatable void Register() override; void ResizeBuffer(); void Unregister() override; - void UpdateBoundingVolume() const; void Update() override; + void UpdateBoundingVolume() const; std::set> m_dyingParticles; mutable std::vector m_buffer; diff --git a/src/Nazara/Graphics/ParticleSystem.cpp b/src/Nazara/Graphics/ParticleSystem.cpp index 0d95f63a4..fbc8cd908 100644 --- a/src/Nazara/Graphics/ParticleSystem.cpp +++ b/src/Nazara/Graphics/ParticleSystem.cpp @@ -295,18 +295,6 @@ void NzParticleSystem::Unregister() m_scene->UnregisterForUpdate(this); } -void NzParticleSystem::UpdateBoundingVolume() const -{ - if (m_boundingVolume.IsNull()) - GenerateAABB(); - - if (!m_transformMatrixUpdated) - UpdateTransformMatrix(); - - m_boundingVolume.Update(m_transformMatrix); - m_boundingVolumeUpdated = true; -} - void NzParticleSystem::Update() { float elapsedTime = m_scene->GetUpdateTime(); @@ -345,8 +333,7 @@ void NzParticleSystem::Update() controller->Apply(*this, mapper, 0, m_particleCount-1, elapsedTime); } - m_processing = false; - onExit.Reset(); + onExit.CallAndReset(); // On tue maintenant les particules mortes durant la mise à jour if (m_dyingParticles.size() < m_particleCount) @@ -363,3 +350,15 @@ void NzParticleSystem::Update() m_dyingParticles.clear(); } } + +void NzParticleSystem::UpdateBoundingVolume() const +{ + if (m_boundingVolume.IsNull()) + GenerateAABB(); + + if (!m_transformMatrixUpdated) + UpdateTransformMatrix(); + + m_boundingVolume.Update(m_transformMatrix); + m_boundingVolumeUpdated = true; +}