diff --git a/binding_generator/src/main.rs b/binding_generator/src/main.rs index d426fa8..8ae1ea0 100644 --- a/binding_generator/src/main.rs +++ b/binding_generator/src/main.rs @@ -197,6 +197,7 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) -> // object constructor if !class.singleton { contents = contents + "\t" + strip_name(&class.name) + "(const Object& ptr);\n\n"; + contents = contents + "\t" + strip_name(&class.name) + "(const Variant& obj);\n\n"; } // object cast @@ -325,6 +326,10 @@ fn generate_class_implementation(icalls: &mut HashSet<(String, Vec)>, us contents = contents + "" + strip_name(&class.name) + "::" + strip_name(&class.name) + "(const Object& ptr)\n{\n"; contents = contents + "\t__core_object = ptr.__core_object;\n"; contents = contents + "}\n\n\n"; + + contents = contents + "" + strip_name(&class.name) + "::" + strip_name(&class.name) + "(const Variant& obj)\n{\n"; + contents = contents + "\t__core_object = ((Object) obj).__core_object;\n"; + contents = contents + "}\n\n\n"; } // Object constructor diff --git a/include/godot_cpp/Godot.hpp b/include/godot_cpp/Godot.hpp index 0fab5ba..64b76d4 100644 --- a/include/godot_cpp/Godot.hpp +++ b/include/godot_cpp/Godot.hpp @@ -13,9 +13,10 @@ namespace godot { #define GODOT_CLASS(Name, Base) \ - public: static char *___get_type_name() { return (char *) #Name; } \ - static char *___get_base_type_name() { return (char *) #Base; } \ - Name(godot_object *o) { __core_object = o; } \ + public: inline static char *___get_type_name() { return (char *) #Name; } \ + inline static char *___get_base_type_name() { return (char *) #Base; } \ + inline Name(godot_object *o) { __core_object = o; } \ + inline Name(const Variant& obj) { __core_object = ((Object) obj).__core_object; } \ private: @@ -539,7 +540,6 @@ void register_property(char *name, void (T::*setter)(P), P (T::*getter)(), P def attr.type = def_val.get_type(); attr.default_value = *(godot_variant *) &def_val; attr.hint = hint; - attr.listed = true; attr.rset_type = rpc_mode; attr.usage = usage;