From b93f6fa1ba273a5aa049dda56bb9a701534af76d Mon Sep 17 00:00:00 2001 From: Qbieshay Date: Mon, 23 Jun 2025 23:09:46 +0200 Subject: [PATCH] Fix particles resetting properties when emitting is toggled --- scene/2d/cpu_particles_2d.cpp | 2 +- scene/2d/gpu_particles_2d.cpp | 2 +- scene/3d/cpu_particles_3d.cpp | 2 +- scene/3d/gpu_particles_3d.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp index af1e6d725d3..a25c02facd8 100644 --- a/scene/2d/cpu_particles_2d.cpp +++ b/scene/2d/cpu_particles_2d.cpp @@ -45,7 +45,7 @@ void CPUParticles2D::set_emitting(bool p_emitting) { return; } - if (p_emitting && !use_fixed_seed) { + if (p_emitting && !use_fixed_seed && one_shot) { set_seed(Math::rand()); } diff --git a/scene/2d/gpu_particles_2d.cpp b/scene/2d/gpu_particles_2d.cpp index d40b9047b63..58d7d9bbe45 100644 --- a/scene/2d/gpu_particles_2d.cpp +++ b/scene/2d/gpu_particles_2d.cpp @@ -41,7 +41,7 @@ void GPUParticles2D::set_emitting(bool p_emitting) { // Do not return even if `p_emitting == emitting` because `emitting` is just an approximation. - if (p_emitting && p_emitting != emitting && !use_fixed_seed) { + if (p_emitting && p_emitting != emitting && !use_fixed_seed && one_shot) { set_seed(Math::rand()); } if (p_emitting && one_shot) { diff --git a/scene/3d/cpu_particles_3d.cpp b/scene/3d/cpu_particles_3d.cpp index c44cab1d7b2..12fd33ffba6 100644 --- a/scene/3d/cpu_particles_3d.cpp +++ b/scene/3d/cpu_particles_3d.cpp @@ -48,7 +48,7 @@ void CPUParticles3D::set_emitting(bool p_emitting) { return; } - if (p_emitting && !use_fixed_seed) { + if (p_emitting && !use_fixed_seed && one_shot) { set_seed(Math::rand()); } diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp index 7555a9af02c..4048750d26a 100644 --- a/scene/3d/gpu_particles_3d.cpp +++ b/scene/3d/gpu_particles_3d.cpp @@ -42,7 +42,7 @@ AABB GPUParticles3D::get_aabb() const { void GPUParticles3D::set_emitting(bool p_emitting) { // Do not return even if `p_emitting == emitting` because `emitting` is just an approximation. - if (p_emitting && p_emitting != emitting && !use_fixed_seed) { + if (p_emitting && p_emitting != emitting && !use_fixed_seed && one_shot) { set_seed(Math::rand()); } if (p_emitting && one_shot) {