diff --git a/Source/Engine/Particles/ParticleEffect.cpp b/Source/Engine/Particles/ParticleEffect.cpp
index 788a4263f..e461f332e 100644
--- a/Source/Engine/Particles/ParticleEffect.cpp
+++ b/Source/Engine/Particles/ParticleEffect.cpp
@@ -284,6 +284,7 @@ void ParticleEffect::UpdateSimulation(bool singleFrame)
void ParticleEffect::Play()
{
_isPlaying = true;
+ _isStopped = false;
}
void ParticleEffect::Pause()
@@ -293,6 +294,7 @@ void ParticleEffect::Pause()
void ParticleEffect::Stop()
{
+ _isStopped = true;
_isPlaying = false;
ResetSimulation();
}
@@ -448,7 +450,7 @@ void ParticleEffect::Update()
void ParticleEffect::UpdateExecuteInEditor()
{
// Auto-play in Editor
- if (!Editor::IsPlayMode)
+ if (!Editor::IsPlayMode && !_isStopped)
{
_isPlaying = true;
Update();
diff --git a/Source/Engine/Particles/ParticleEffect.h b/Source/Engine/Particles/ParticleEffect.h
index 9e9792a4c..d3f0cc9d0 100644
--- a/Source/Engine/Particles/ParticleEffect.h
+++ b/Source/Engine/Particles/ParticleEffect.h
@@ -133,7 +133,7 @@ public:
///
/// The particle system instance that plays the particles simulation in the game.
///
-API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Particle Effects\"), ActorToolbox(\"Visuals\")")
+API_CLASS(Attributes="ActorContextMenu(\"New/Visuals/Particle Effect\"), ActorToolbox(\"Visuals\")")
class FLAXENGINE_API ParticleEffect : public Actor
{
DECLARE_SCENE_OBJECT(ParticleEffect);
@@ -185,6 +185,7 @@ private:
Array _parameters; // Cached for scripting API
Array _parametersOverrides; // Cached parameter modifications to be applied to the parameters
bool _isPlaying = false;
+ bool _isStopped = false;
public:
///
diff --git a/Source/Engine/Particles/Particles.cpp b/Source/Engine/Particles/Particles.cpp
index 5850b6736..52845a0f8 100644
--- a/Source/Engine/Particles/Particles.cpp
+++ b/Source/Engine/Particles/Particles.cpp
@@ -1318,6 +1318,8 @@ void ParticlesSystem::Job(int32 index)
emitterInstance.Buffer = nullptr;
}
}
+ // Stop playing effect.
+ effect->Stop();
return;
}
}