浏览代码

Revert "Ensure non-emitting particles not processed on entering tree"

This reverts commit 24b7f088927e17d80e1e21573b16bee8d3d5d50b.

This causes a particles regression in tps-demo
Hein-Pieter van Braam-Stewart 6 年之前
父节点
当前提交
4aa7760c74
共有 2 个文件被更改,包括 7 次插入10 次删除
  1. 3 4
      scene/2d/cpu_particles_2d.cpp
  2. 4 6
      scene/3d/cpu_particles.cpp

+ 3 - 4
scene/2d/cpu_particles_2d.cpp

@@ -37,8 +37,7 @@
 void CPUParticles2D::set_emitting(bool p_emitting) {
 
 	emitting = p_emitting;
-	if (emitting)
-		set_process_internal(true);
+	set_process_internal(true);
 }
 
 void CPUParticles2D::set_amount(int p_amount) {
@@ -966,7 +965,7 @@ void CPUParticles2D::_update_render_thread() {
 void CPUParticles2D::_notification(int p_what) {
 
 	if (p_what == NOTIFICATION_ENTER_TREE) {
-		set_process_internal(emitting);
+		_set_redraw(true);
 	}
 
 	if (p_what == NOTIFICATION_EXIT_TREE) {
@@ -1002,6 +1001,7 @@ void CPUParticles2D::_notification(int p_what) {
 
 		float delta = get_process_delta_time();
 		if (emitting) {
+			_set_redraw(true);
 			inactive_time = 0;
 		} else {
 			inactive_time += delta;
@@ -1017,7 +1017,6 @@ void CPUParticles2D::_notification(int p_what) {
 				return;
 			}
 		}
-		_set_redraw(true);
 
 		if (time == 0 && pre_process_time > 0.0) {
 

+ 4 - 6
scene/3d/cpu_particles.cpp

@@ -47,8 +47,7 @@ PoolVector<Face3> CPUParticles::get_faces(uint32_t p_usage_flags) const {
 void CPUParticles::set_emitting(bool p_emitting) {
 
 	emitting = p_emitting;
-	if (emitting)
-		set_process_internal(true);
+	set_process_internal(true);
 }
 
 void CPUParticles::set_amount(int p_amount) {
@@ -1003,11 +1002,9 @@ void CPUParticles::_set_redraw(bool p_redraw) {
 	if (redraw) {
 		VS::get_singleton()->connect("frame_pre_draw", this, "_update_render_thread");
 		VS::get_singleton()->instance_geometry_set_flag(get_instance(), VS::INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE, true);
-		VS::get_singleton()->multimesh_set_visible_instances(multimesh, -1);
 	} else {
 		VS::get_singleton()->disconnect("frame_pre_draw", this, "_update_render_thread");
 		VS::get_singleton()->instance_geometry_set_flag(get_instance(), VS::INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE, false);
-		VS::get_singleton()->multimesh_set_visible_instances(multimesh, 0);
 	}
 #ifndef NO_THREADS
 	update_mutex->unlock();
@@ -1032,7 +1029,7 @@ void CPUParticles::_update_render_thread() {
 void CPUParticles::_notification(int p_what) {
 
 	if (p_what == NOTIFICATION_ENTER_TREE) {
-		set_process_internal(emitting);
+		_set_redraw(true);
 	}
 
 	if (p_what == NOTIFICATION_EXIT_TREE) {
@@ -1051,6 +1048,8 @@ void CPUParticles::_notification(int p_what) {
 
 		float delta = get_process_delta_time();
 		if (emitting) {
+
+			_set_redraw(true);
 			inactive_time = 0;
 		} else {
 			inactive_time += delta;
@@ -1066,7 +1065,6 @@ void CPUParticles::_notification(int p_what) {
 				return;
 			}
 		}
-		_set_redraw(true);
 
 		bool processed = false;