diff options
author | A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> | 2024-01-28 15:16:09 +0100 |
---|---|---|
committer | A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> | 2024-03-10 11:02:43 +0100 |
commit | 59bcc2888c0c6002428ed1040ef6b36957a80e98 (patch) | |
tree | e78cf547c47bb31e35827eff93f6e7c492399605 /core/object/script_instance.cpp | |
parent | 0ace0a129284ffc6646b199699c1607a316fcec0 (diff) | |
download | redot-engine-59bcc2888c0c6002428ed1040ef6b36957a80e98.tar.gz |
Add methods to get argument count of methods
Added to:
* `Callable`s
* `Object`s
* `ClassDB`
* `Script(Instance)`s
Diffstat (limited to 'core/object/script_instance.cpp')
-rw-r--r-- | core/object/script_instance.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/core/object/script_instance.cpp b/core/object/script_instance.cpp index 303b127db1..65f44e8a6b 100644 --- a/core/object/script_instance.cpp +++ b/core/object/script_instance.cpp @@ -32,6 +32,28 @@ #include "core/object/script_language.h" +int ScriptInstance::get_method_argument_count(const StringName &p_method, bool *r_is_valid) const { + // Default implementation simply traverses hierarchy. + Ref<Script> script = get_script(); + while (script.is_valid()) { + bool valid = false; + int ret = script->get_script_method_argument_count(p_method, &valid); + if (valid) { + if (r_is_valid) { + *r_is_valid = true; + } + return ret; + } + + script = script->get_base_script(); + } + + if (r_is_valid) { + *r_is_valid = false; + } + return 0; +} + Variant ScriptInstance::call_const(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) { return callp(p_method, p_args, p_argcount, r_error); } |