diff options
Diffstat (limited to 'scene/main/node.cpp')
-rw-r--r-- | scene/main/node.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/scene/main/node.cpp b/scene/main/node.cpp index f25e178d23..b78dfb2f2c 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2326,8 +2326,14 @@ void Node::_propagate_replace_owner(Node *p_owner, Node *p_by_owner) { Ref<Tween> Node::create_tween() { ERR_THREAD_GUARD_V(Ref<Tween>()); - ERR_FAIL_NULL_V_MSG(data.tree, nullptr, "Can't create Tween when not inside scene tree."); - Ref<Tween> tween = get_tree()->create_tween(); + + SceneTree *tree = data.tree; + if (!tree) { + tree = SceneTree::get_singleton(); + } + ERR_FAIL_NULL_V_MSG(tree, Ref<Tween>(), "No available SceneTree to create the Tween."); + + Ref<Tween> tween = tree->create_tween(); tween->bind_node(this); return tween; } |