Browse Source

Merge pull request #31844 from 2shady4u/TweenInSceneTree

Timer and Tween check if they are in SceneTree when starting
Rémi Verschelde 6 years ago
parent
commit
750f8d4926
3 changed files with 7 additions and 4 deletions
  1. 3 1
      scene/animation/tween.cpp
  2. 1 3
      scene/gui/control.cpp
  3. 3 0
      scene/main/timer.cpp

+ 3 - 1
scene/animation/tween.cpp

@@ -783,10 +783,12 @@ float Tween::get_speed_scale() const {
 }
 
 bool Tween::start() {
+
+	ERR_FAIL_COND_V_MSG(!is_inside_tree(), false, "Tween was not added to the SceneTree!");
+
 	// Are there any pending updates?
 	if (pending_update != 0) {
 		// Start the tweens after deferring
-		call_deferred("start");
 		return true;
 	}
 

+ 1 - 3
scene/gui/control.cpp

@@ -2149,9 +2149,7 @@ bool Control::has_focus() const {
 
 void Control::grab_focus() {
 
-	if (!is_inside_tree()) {
-		ERR_FAIL_COND(!is_inside_tree());
-	}
+	ERR_FAIL_COND(!is_inside_tree());
 
 	if (data.focus_mode == FOCUS_NONE) {
 		WARN_PRINT("This control can't grab focus. Use set_focus_mode() to allow a control to get focus.");

+ 3 - 0
scene/main/timer.cpp

@@ -107,6 +107,9 @@ bool Timer::has_autostart() const {
 }
 
 void Timer::start(float p_time) {
+
+	ERR_FAIL_COND_MSG(!is_inside_tree(), "Timer was not added to the SceneTree!");
+
 	if (p_time > 0) {
 		set_wait_time(p_time);
 	}