summaryrefslogtreecommitdiffstats
path: root/scene/main
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-10-04 22:43:30 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-10-04 22:43:30 +0200
commit14eee2b9301ed0d35e14fee349851d00fba4c71c (patch)
treec5fd018da616edafb07c7d79d3f832e85fea0688 /scene/main
parent0c3ff561d7f050b27a0684dae3fc59111efa304c (diff)
parent22ccfc5a392811bedf605a1462f58019fa807ea7 (diff)
downloadredot-engine-14eee2b9301ed0d35e14fee349851d00fba4c71c.tar.gz
Merge pull request #97240 from KoBeWi/wrong_number
Print error on invalid `call_group()` calls
Diffstat (limited to 'scene/main')
-rw-r--r--scene/main/scene_tree.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 106130872d..71d91b970e 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -302,11 +302,15 @@ void SceneTree::call_group_flagsp(uint32_t p_call_flags, const StringName &p_gro
continue;
}
+ Node *node = gr_nodes[i];
if (!(p_call_flags & GROUP_CALL_DEFERRED)) {
Callable::CallError ce;
- gr_nodes[i]->callp(p_function, p_args, p_argcount, ce);
+ node->callp(p_function, p_args, p_argcount, ce);
+ if (unlikely(ce.error != Callable::CallError::CALL_OK && ce.error != Callable::CallError::CALL_ERROR_INVALID_METHOD)) {
+ ERR_PRINT(vformat("Error calling group method on node \"%s\": %s.", node->get_name(), Variant::get_callable_error_text(Callable(node, p_function), p_args, p_argcount, ce)));
+ }
} else {
- MessageQueue::get_singleton()->push_callp(gr_nodes[i], p_function, p_args, p_argcount);
+ MessageQueue::get_singleton()->push_callp(node, p_function, p_args, p_argcount);
}
}
@@ -316,11 +320,15 @@ void SceneTree::call_group_flagsp(uint32_t p_call_flags, const StringName &p_gro
continue;
}
+ Node *node = gr_nodes[i];
if (!(p_call_flags & GROUP_CALL_DEFERRED)) {
Callable::CallError ce;
- gr_nodes[i]->callp(p_function, p_args, p_argcount, ce);
+ node->callp(p_function, p_args, p_argcount, ce);
+ if (unlikely(ce.error != Callable::CallError::CALL_OK && ce.error != Callable::CallError::CALL_ERROR_INVALID_METHOD)) {
+ ERR_PRINT(vformat("Error calling group method on node \"%s\": %s.", node->get_name(), Variant::get_callable_error_text(Callable(node, p_function), p_args, p_argcount, ce)));
+ }
} else {
- MessageQueue::get_singleton()->push_callp(gr_nodes[i], p_function, p_args, p_argcount);
+ MessageQueue::get_singleton()->push_callp(node, p_function, p_args, p_argcount);
}
}
}