diff options
author | kobewi <kobewi4e@gmail.com> | 2024-01-29 14:10:07 +0100 |
---|---|---|
committer | kobewi <kobewi4e@gmail.com> | 2024-01-29 20:18:43 +0100 |
commit | 0de8a736dad9bf9ed5b8075946bf1e96a47b20f6 (patch) | |
tree | aa2171a0feb7fa016d970794b82a9c2051a373eb /scene/main/node.cpp | |
parent | fa48a51183567934984b381ad8ec281cb24d66ba (diff) | |
download | redot-engine-0de8a736dad9bf9ed5b8075946bf1e96a47b20f6.tar.gz |
Allow Node.create_tween() outside SceneTree
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; } |