StringName is working fine with demo \o/

This commit is contained in:
Emmanuel Leblond
2022-10-23 22:31:57 +02:00
parent 3b82d5937b
commit b6ba0dca13
6 changed files with 29 additions and 17 deletions

View File

@@ -78,7 +78,7 @@ protected:
Wrapped(GodotObject *p_godot_object);
public:
static StringName get_class_static() {
static StringName &get_class_static() {
static StringName string_name = StringName("Wrapped");
return string_name;
}
@@ -159,12 +159,12 @@ public:
initialized = true; \
} \
\
static StringName get_class_static() { \
static StringName &get_class_static() { \
static StringName string_name = StringName(#m_class); \
return string_name; \
} \
\
static StringName get_parent_class_static() { \
static StringName &get_parent_class_static() { \
return m_inherits::get_class_static(); \
} \
\
@@ -349,12 +349,12 @@ protected:
public: \
static void initialize_class() {} \
\
static StringName get_class_static() { \
static StringName &get_class_static() { \
static StringName string_name = StringName(#m_class); \
return string_name; \
} \
\
static StringName get_parent_class_static() { \
static StringName &get_parent_class_static() { \
return m_inherits::get_class_static(); \
} \
\

View File

@@ -191,7 +191,7 @@ void ClassDB::_register_class(bool p_virtual) {
T::free, // GDNativeExtensionClassFreeInstance free_instance_func; /* this one is mandatory */
&ClassDB::get_virtual_func, // GDNativeExtensionClassGetVirtual get_virtual_func;
nullptr, // GDNativeExtensionClassGetRID get_rid;
(void *)&cl.name, // void *class_userdata;
(void *)&T::get_class_static(), // void *class_userdata;
};
internal::gdn_interface->classdb_register_extension_class(internal::library, cl.name._native_ptr(), cl.parent_name._native_ptr(), &class_info);
@@ -249,7 +249,7 @@ MethodBind *ClassDB::bind_vararg_method(uint32_t p_flags, StringName p_name, M p
std::unordered_map<StringName, ClassInfo>::iterator type_it = classes.find(instance_type);
if (type_it == classes.end()) {
memdelete(bind);
ERR_FAIL_V_MSG(nullptr, String("Class '{0}' doesn't exist.").format(instance_type));
ERR_FAIL_V_MSG(nullptr, String("Class '{0}' doesn't exist.").format(Array::make(instance_type)));
}
ClassInfo &type = type_it->second;

View File

@@ -121,7 +121,7 @@ public:
std::vector<PropertyInfo> vec;
// First element is return value
vec.reserve(argument_count + 1);
for (int i = 0; i < argument_count; i++) {
for (int i = 0; i < argument_count + 1; i++) {
vec.push_back(get_argument_info(i - 1));
}
return vec;