summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--binding_generator/src/main.rs8
-rw-r--r--include/SConstruct4
-rw-r--r--include/godot_cpp/Godot.hpp2
-rw-r--r--include/godot_cpp/core/String.cpp5
-rw-r--r--include/godot_cpp/core/String.hpp2
5 files changed, 16 insertions, 5 deletions
diff --git a/binding_generator/src/main.rs b/binding_generator/src/main.rs
index 1af7aaa..d426fa8 100644
--- a/binding_generator/src/main.rs
+++ b/binding_generator/src/main.rs
@@ -504,7 +504,8 @@ fn generate_icall_header(icalls: &HashSet<(String, Vec<String>)>) -> String {
contents = contents + return_type(ret) + " " + get_icall_name_ref((ret, args)).as_str() + "(godot_method_bind *mb, godot_object *inst";
for arg in args {
contents = contents + ", ";
- if !is_primitive(&arg) && is_core_type(&arg) {
+ // if !is_primitive(&arg) && is_core_type(&arg) {
+ if !is_primitive(&arg) {
contents = contents + "const " + arg.as_str() + "&";
} else {
contents = contents + "const " + arg.as_str() + "";
@@ -544,7 +545,8 @@ fn generate_icall_implementation(icalls: &HashSet<(String, Vec<String>)>) -> Str
let mut i = 0;
for arg in args {
contents = contents + ", ";
- if !is_primitive(&arg) && is_core_type(&arg) {
+ // if !is_primitive(&arg) && is_core_type(&arg) {
+ if !is_primitive(&arg) {
contents = contents + "const " + arg.as_str() + "&";
} else {
contents = contents + "const " + arg.as_str() + "";
@@ -570,7 +572,7 @@ fn generate_icall_implementation(icalls: &HashSet<(String, Vec<String>)>) -> Str
} else if is_core_type(arg) {
contents = contents + "(void *) &arg" + j.to_string().as_str();
} else {
- contents = contents + "(void *) *(godot_object**) &arg" + j.to_string().as_str();
+ contents = contents + "(void *) arg" + j.to_string().as_str() + ".__core_object";
}
contents = contents + ",\n";
j = j + 1;
diff --git a/include/SConstruct b/include/SConstruct
index 1e8f7b9..158ac20 100644
--- a/include/SConstruct
+++ b/include/SConstruct
@@ -57,7 +57,9 @@ elif target == "bindings":
env.Append(LINKFLAGS = ['-Wl,-R,\'$$ORIGIN/\''])
env.Append(CPPPATH=['.', './godot', './godot_cpp'])
- env.Append(LIBS=['godot_cpp_core', 'godot.windows.tools.64'])
+ if platform == "windows":
+ env.Append(LIBS=['godot.windows.tools.64'])
+ env.Append(LIBS=['godot_cpp_core'])
env.Append(LIBPATH=["."])
env.Append(CPPFLAGS=['-D_GD_CPP_BINDING_IMPL'])
diff --git a/include/godot_cpp/Godot.hpp b/include/godot_cpp/Godot.hpp
index c3df7e4..bacfd64 100644
--- a/include/godot_cpp/Godot.hpp
+++ b/include/godot_cpp/Godot.hpp
@@ -173,7 +173,7 @@ struct _WrappedMethod1<T, void, A0> {
(obj->*(method->f))(*arg[0]);
return v;
- }
+ }
};
diff --git a/include/godot_cpp/core/String.cpp b/include/godot_cpp/core/String.cpp
index c3c78e4..af83f2e 100644
--- a/include/godot_cpp/core/String.cpp
+++ b/include/godot_cpp/core/String.cpp
@@ -66,6 +66,11 @@ int String::length() const
return len;
}
+void String::operator =(const String &s)
+{
+ godot_string_copy_string(&_godot_string, &s._godot_string);
+}
+
bool String::operator ==(const String &s)
{
return godot_string_operator_equal(&_godot_string, &s._godot_string);
diff --git a/include/godot_cpp/core/String.hpp b/include/godot_cpp/core/String.hpp
index ec14242..00790ae 100644
--- a/include/godot_cpp/core/String.hpp
+++ b/include/godot_cpp/core/String.hpp
@@ -41,6 +41,8 @@ public:
int length() const;
+ void operator =(const String &s);
+
bool operator ==(const String &s);
bool operator !=(const String &s);