Add ability to bind typed arrays to script API
Note: Only replaced 2 instances to test, Node.get_children and TileMap.get_used_cells Note: Will do a mass replace on later PRs of whathever I can find, but probably need a tool to grep through doc. Warning: Mono will break, needs to be fixed (and so do TypeScript and NativeScript, need to ask respective maintainers)
This commit is contained in:
parent
7343ec13d9
commit
5d4dc2d45c
24 changed files with 452 additions and 10 deletions
|
|
@ -111,6 +111,13 @@ void NativeScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder)
|
|||
|
||||
#endif
|
||||
|
||||
bool NativeScript::inherits_script(const Ref<Script> &p_script) const {
|
||||
#ifndef _MSC_VER
|
||||
#warning inheritance needs to be implemented in NativeScript
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
void NativeScript::set_class_name(String p_class_name) {
|
||||
class_name = p_class_name;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,6 +133,8 @@ protected:
|
|||
public:
|
||||
inline NativeScriptDesc *get_script_desc() const;
|
||||
|
||||
bool inherits_script(const Ref<Script> &p_script) const;
|
||||
|
||||
void set_class_name(String p_class_name);
|
||||
String get_class_name() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -140,6 +140,13 @@ bool PluginScript::can_instance() const {
|
|||
return can;
|
||||
}
|
||||
|
||||
bool PluginScript::inherits_script(const Ref<Script> &p_script) const {
|
||||
#ifndef _MSC_VER
|
||||
#warning inheritance needs to be implemented in PluginScript
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
Ref<Script> PluginScript::get_base_script() const {
|
||||
if (_ref_base_parent.is_valid()) {
|
||||
return Ref<PluginScript>(_ref_base_parent);
|
||||
|
|
|
|||
|
|
@ -72,6 +72,8 @@ private:
|
|||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
bool inherits_script(const Ref<Script> &p_script) const;
|
||||
|
||||
PluginScriptInstance *_create_instance(const Variant **p_args, int p_argcount, Object *p_owner, Callable::CallError &r_error);
|
||||
Variant _new(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
|
||||
|
||||
|
|
|
|||
|
|
@ -895,6 +895,24 @@ Ref<GDScript> GDScript::get_base() const {
|
|||
return base;
|
||||
}
|
||||
|
||||
bool GDScript::inherits_script(const Ref<Script> &p_script) const {
|
||||
Ref<GDScript> gd = p_script;
|
||||
if (gd.is_null()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const GDScript *s = this;
|
||||
|
||||
while (s) {
|
||||
if (s == p_script.ptr()) {
|
||||
return true;
|
||||
}
|
||||
s = s->_base;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool GDScript::has_script_signal(const StringName &p_signal) const {
|
||||
if (_signals.has(p_signal))
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -151,6 +151,8 @@ protected:
|
|||
public:
|
||||
virtual bool is_valid() const { return valid; }
|
||||
|
||||
bool inherits_script(const Ref<Script> &p_script) const;
|
||||
|
||||
const Map<StringName, Ref<GDScript>> &get_subclasses() const { return subclasses; }
|
||||
const Map<StringName, Variant> &get_constants() const { return constants; }
|
||||
const Set<StringName> &get_members() const { return members; }
|
||||
|
|
|
|||
|
|
@ -3536,6 +3536,18 @@ void CSharpScript::get_script_signal_list(List<MethodInfo> *r_signals) const {
|
|||
}
|
||||
}
|
||||
|
||||
bool CSharpScript::inherits_script(const Ref<Script> &p_script) const {
|
||||
Ref<CSharpScript> cs = p_script;
|
||||
if (cs.is_null()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#warning TODO: Implement CSharpScript::inherits_script and other relevant changes after GH-38063.
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
Ref<Script> CSharpScript::get_base_script() const {
|
||||
|
||||
// TODO search in metadata file once we have it, not important any way?
|
||||
|
|
|
|||
|
|
@ -194,6 +194,8 @@ public:
|
|||
virtual bool is_tool() const { return tool; }
|
||||
virtual bool is_valid() const { return valid; }
|
||||
|
||||
bool inherits_script(const Ref<Script> &p_script) const;
|
||||
|
||||
virtual Ref<Script> get_base_script() const;
|
||||
virtual ScriptLanguage *get_language() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -1460,6 +1460,10 @@ VisualScript::VisualScript() {
|
|||
is_tool_script = false;
|
||||
}
|
||||
|
||||
bool VisualScript::inherits_script(const Ref<Script> &p_script) const {
|
||||
return this == p_script.ptr(); //there is no inheritance in visual scripts, so this is enough
|
||||
}
|
||||
|
||||
StringName VisualScript::get_default_func() const {
|
||||
return StringName("f_312843592");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -272,6 +272,8 @@ protected:
|
|||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
bool inherits_script(const Ref<Script> &p_script) const;
|
||||
|
||||
// TODO: Remove it in future when breaking changes are acceptable
|
||||
StringName get_default_func() const;
|
||||
void add_function(const StringName &p_name);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue