Browse Source

Update GPUParticles2D/3D speed scale on ENTER_TREE

Fix for https://github.com/godotengine/godot/issues/75218

Pause notifications are not sent when a node is added as a child. So GPUParticles2D should also obey its can_process status on ENTER_TREE, not just PAUSED/UNPAUSED.

(cherry picked from commit 4652fbd09e81741a146c7dd1dcc89bf4235bdb75)
Brian Long 2 years ago
parent
commit
838a82f885
2 changed files with 10 additions and 0 deletions
  1. 5 0
      scene/2d/gpu_particles_2d.cpp
  2. 5 0
      scene/3d/gpu_particles_3d.cpp

+ 5 - 0
scene/2d/gpu_particles_2d.cpp

@@ -538,6 +538,11 @@ void GPUParticles2D::_notification(int p_what) {
 			if (sub_emitter != NodePath()) {
 				_attach_sub_emitter();
 			}
+			if (can_process()) {
+				RS::get_singleton()->particles_set_speed_scale(particles, speed_scale);
+			} else {
+				RS::get_singleton()->particles_set_speed_scale(particles, 0);
+			}
 		} break;
 
 		case NOTIFICATION_EXIT_TREE: {

+ 5 - 0
scene/3d/gpu_particles_3d.cpp

@@ -439,6 +439,11 @@ void GPUParticles3D::_notification(int p_what) {
 			if (sub_emitter != NodePath()) {
 				_attach_sub_emitter();
 			}
+			if (can_process()) {
+				RS::get_singleton()->particles_set_speed_scale(particles, speed_scale);
+			} else {
+				RS::get_singleton()->particles_set_speed_scale(particles, 0);
+			}
 		} break;
 
 		case NOTIFICATION_EXIT_TREE: {