diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-01-08 11:53:53 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-01-08 11:53:53 +0100 |
commit | 97607b6ab32aa608819005fc4be296755b749b16 (patch) | |
tree | 256d625ccc23b8bf662cd062f7d754cba059f323 /scene/2d/gpu_particles_2d.cpp | |
parent | 48b726deba12826a23fee958b942d93f34160f6c (diff) | |
parent | cb0a37f61aa772341e63e8ae8ee5bece211613f8 (diff) | |
download | redot-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.cpp | 13 |
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) { |