summaryrefslogtreecommitdiffstats
path: root/binding_generator
diff options
context:
space:
mode:
Diffstat (limited to 'binding_generator')
-rw-r--r--binding_generator/src/main.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/binding_generator/src/main.rs b/binding_generator/src/main.rs
index f30b448..f9748f1 100644
--- a/binding_generator/src/main.rs
+++ b/binding_generator/src/main.rs
@@ -142,6 +142,12 @@ fn generate_class_content(forward_declares: &String, class: &GodotClass) -> Stri
contents = contents + "\t}\n\n\n";
}
+ if class.base_class != "" {
+ contents = contents + "\tvoid _init() {\n";
+ contents = contents + "\t\t\n";
+ contents = contents + "\t}\n\n";
+ }
+
if class.instanciable {
contents = contents + "\tstatic " + strip_name(&class.name) + "& _new();\n";
contents = contents + "\tvoid _destroy();\n\n";
@@ -227,7 +233,7 @@ fn generate_class_content(forward_declares: &String, class: &GodotClass) -> Stri
contents = contents + "namespace godot {\n\n";
contents = contents + "" + strip_name(&class.name) + "& " + strip_name(&class.name) + "::_new() {\n";
- contents = contents + "\tObject *ptr = ClassDB::instance(\"" + class.name.as_str() + "\");\n";
+ contents = contents + "\tObject ptr = ClassDB::instance(\"" + class.name.as_str() + "\");\n";
contents = contents + "\treturn reinterpret_cast<" + strip_name(&class.name) + "&>(ptr);";
contents = contents + "}\n\n";
@@ -235,6 +241,15 @@ fn generate_class_content(forward_declares: &String, class: &GodotClass) -> Stri
contents = contents + "\tgodot_object_destroy(__core_object);\n";
contents = contents + "}\n\n\n";
+ if class.base_class == "" {
+ // Object
+ contents = contents + "Variant::operator Object()const {\n\n";
+
+ contents = contents + "\treturn Object(godot_variant_as_object(&_godot_variant));\n\n";
+
+ contents = contents + "}\n\n";
+ }
+
contents = contents + "}\n";
}
@@ -260,6 +275,7 @@ fn escape_cpp(name: &String) -> &str {
match name.as_str() {
"class" => "_class",
"char" => "_char",
+ "short" => "_short",
x => x
}
} \ No newline at end of file