Explorar o código

Respect returned bool from virtual process methods in SceneTree

SceneTree overrides the virtual `process` and `physics_process` methods
that it inherits from MainLoop. These methods return a boolean that
determines if the main loop should end.
The SceneTree was ignoring the returned boolean, so scripts inheriting
from SceneTree that override these methods and return true didn't exit
the main loop. Now the boolean is checked.
Raul Santos %!s(int64=2) %!d(string=hai) anos
pai
achega
5373b67e2a
Modificáronse 1 ficheiros con 6 adicións e 2 borrados
  1. 6 2
      scene/main/scene_tree.cpp

+ 6 - 2
scene/main/scene_tree.cpp

@@ -456,7 +456,9 @@ bool SceneTree::physics_process(double p_time) {
 
 
 	flush_transform_notifications();
 	flush_transform_notifications();
 
 
-	MainLoop::physics_process(p_time);
+	if (MainLoop::physics_process(p_time)) {
+		_quit = true;
+	}
 	physics_process_time = p_time;
 	physics_process_time = p_time;
 
 
 	emit_signal(SNAME("physics_frame"));
 	emit_signal(SNAME("physics_frame"));
@@ -484,7 +486,9 @@ bool SceneTree::physics_process(double p_time) {
 bool SceneTree::process(double p_time) {
 bool SceneTree::process(double p_time) {
 	root_lock++;
 	root_lock++;
 
 
-	MainLoop::process(p_time);
+	if (MainLoop::process(p_time)) {
+		_quit = true;
+	}
 
 
 	process_time = p_time;
 	process_time = p_time;