From bf0c7fe0dc4a8e71d6ffafe8ed622ee834f14c6d Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 1 Feb 2026 23:32:00 +0100 Subject: [PATCH] Fix timescale in `FixedTimestep` particles update and when using Editor preview #3811 --- Source/Engine/Particles/ParticleEffect.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/Engine/Particles/ParticleEffect.cpp b/Source/Engine/Particles/ParticleEffect.cpp index 9592147a7..14467664c 100644 --- a/Source/Engine/Particles/ParticleEffect.cpp +++ b/Source/Engine/Particles/ParticleEffect.cpp @@ -11,6 +11,10 @@ #include "Engine/Level/Scene/Scene.h" #include "Engine/Engine/Time.h" #include "Engine/Engine/Engine.h" +#if USE_EDITOR +#include "Editor/Editor.h" +#include "Editor/Managed/ManagedEditor.h" +#endif ParticleEffect::ParticleEffect(const SpawnParams& params) : Actor(params) @@ -465,7 +469,12 @@ void ParticleEffect::Update() if (UpdateMode == SimulationUpdateMode::FixedTimestep) { // Check if last simulation update was past enough to kick a new on - const float time = Time::Update.Time.GetTotalSeconds(); + bool useTimeScale = UseTimeScale; +#if USE_EDITOR + if (!Editor::IsPlayMode && IsDuringPlay()) + useTimeScale = false; +#endif + const float time = (useTimeScale ? Time::Update.Time : Time::Update.UnscaledTime).GetTotalSeconds(); if (time - Instance.LastUpdateTime < FixedTimestep) return; } @@ -475,9 +484,6 @@ void ParticleEffect::Update() #if USE_EDITOR -#include "Editor/Editor.h" -#include "Editor/Managed/ManagedEditor.h" - void ParticleEffect::UpdateExecuteInEditor() { // Auto-play in Editor