Uses StringName in GDExtension perf critical instance creation & method/properties setter/getter

This commit is contained in:
Emmanuel Leblond
2022-10-22 13:46:59 +02:00
parent 73ad6717e9
commit 0e81f89dd3
4 changed files with 46 additions and 34 deletions

View File

@@ -36,20 +36,20 @@
namespace godot {
const char *Wrapped::_get_extension_class() const {
const StringName *Wrapped::_get_extension_class() const {
return nullptr;
}
void Wrapped::_postinitialize() {
const char *extension_class = _get_extension_class();
const StringName *extension_class = _get_extension_class();
if (extension_class) {
godot::internal::gdn_interface->object_set_instance(_owner, extension_class, this);
godot::internal::gdn_interface->object_set_instance(_owner, (void *)extension_class, this);
}
godot::internal::gdn_interface->object_set_instance_binding(_owner, godot::internal::token, this, _get_bindings_callbacks());
}
Wrapped::Wrapped(const char *p_godot_class) {
_owner = godot::internal::gdn_interface->classdb_construct_object(p_godot_class);
Wrapped::Wrapped(const StringName p_godot_class) {
_owner = godot::internal::gdn_interface->classdb_construct_object((void *)&p_godot_class);
}
Wrapped::Wrapped(GodotObject *p_godot_object) {