Replace BIND_VMETHOD by new GDVIRTUAL syntax

* New syntax is type safe.
* New syntax allows for type safe virtuals in native extensions.
* New syntax permits extremely fast calling.

Note: Everything was replaced where possible except for `_gui_input` `_input` and `_unhandled_input`.
These will require API rework on a separate PR as they work different than the rest of the functions.

Added a new method flag METHOD_FLAG_OBJECT_CORE, used internally. Allows to not dump the core virtuals like `_notification` to the json API, since each language will implement those as it is best fits.
This commit is contained in:
reduz 2021-08-21 22:52:44 -03:00
parent 2a5c64f2a1
commit 3682978aee
104 changed files with 1389 additions and 1227 deletions

View file

@ -102,6 +102,7 @@ private:
Map<StringName, Variant> cache;
GDVIRTUAL0(_update_property)
protected:
void _notification(int p_what);
static void _bind_methods();
@ -192,6 +193,12 @@ class EditorInspectorPlugin : public RefCounted {
protected:
static void _bind_methods();
GDVIRTUAL1RC(bool, _can_handle, Variant)
GDVIRTUAL0(_parse_begin)
GDVIRTUAL2(_parse_category, Object *, String)
GDVIRTUAL7R(bool, _parse_property, Object *, int, String, int, String, int, bool)
GDVIRTUAL0(_parse_end)
public:
void add_custom_control(Control *control);
void add_property_editor(const String &p_for_property, Control *p_prop);