summaryrefslogtreecommitdiffstats
path: root/scene/2d/gpu_particles_2d.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-01-08 11:53:53 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-01-08 11:53:53 +0100
commit97607b6ab32aa608819005fc4be296755b749b16 (patch)
tree256d625ccc23b8bf662cd062f7d754cba059f323 /scene/2d/gpu_particles_2d.cpp
parent48b726deba12826a23fee958b942d93f34160f6c (diff)
parentcb0a37f61aa772341e63e8ae8ee5bece211613f8 (diff)
downloadredot-engine-97607b6ab32aa608819005fc4be296755b749b16.tar.gz
Merge pull request #86474 from KoBeWi/particular_velocity
Only update particle velocity when it changes
Diffstat (limited to 'scene/2d/gpu_particles_2d.cpp')
-rw-r--r--scene/2d/gpu_particles_2d.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/scene/2d/gpu_particles_2d.cpp b/scene/2d/gpu_particles_2d.cpp
index ee33ff88d4..71da9cc520 100644
--- a/scene/2d/gpu_particles_2d.cpp
+++ b/scene/2d/gpu_particles_2d.cpp
@@ -712,12 +712,15 @@ void GPUParticles2D::_notification(int p_what) {
} break;
case NOTIFICATION_INTERNAL_PROCESS: {
- RS::get_singleton()->particles_set_emitter_velocity(particles,
- Vector3((get_global_position() - previous_position).x,
- (get_global_position() - previous_position).y,
- 0.0) /
- get_process_delta_time());
+ const Vector3 velocity = Vector3((get_global_position() - previous_position).x, (get_global_position() - previous_position).y, 0.0) /
+ get_process_delta_time();
+
+ if (velocity != previous_velocity) {
+ RS::get_singleton()->particles_set_emitter_velocity(particles, velocity);
+ previous_velocity = velocity;
+ }
previous_position = get_global_position();
+
if (one_shot) {
time += get_process_delta_time();
if (time > emission_time) {