Explorar o código

Fix particles emitting when emitting is set to false in scene

Caused by #10297 calling particles_restart() on the same frame as the one set_emitting(false) is called. The rasterizer would wait a frame, and then set emitting back to true.
Bojidar Marinov %!s(int64=8) %!d(string=hai) anos
pai
achega
995fca44b2
Modificáronse 1 ficheiros con 4 adicións e 0 borrados
  1. 4 0
      drivers/gles3/rasterizer_storage_gles3.cpp

+ 4 - 0
drivers/gles3/rasterizer_storage_gles3.cpp

@@ -5177,6 +5177,10 @@ void RasterizerStorageGLES3::particles_set_emitting(RID p_particles, bool p_emit
 
 
 	Particles *particles = particles_owner.getornull(p_particles);
 	Particles *particles = particles_owner.getornull(p_particles);
 	ERR_FAIL_COND(!particles);
 	ERR_FAIL_COND(!particles);
+	if (p_emitting != particles->emitting) {
+		// Restart is overriden by set_emitting
+		particles->restart_request = false;
+	}
 	particles->emitting = p_emitting;
 	particles->emitting = p_emitting;
 }
 }
 void RasterizerStorageGLES3::particles_set_amount(RID p_particles, int p_amount) {
 void RasterizerStorageGLES3::particles_set_amount(RID p_particles, int p_amount) {