Quellcode durchsuchen

Use GDExtension `to_string` in Node

Matches the `Object::to_string` implementation.
Raul Santos vor 1 Jahr
Ursprung
Commit
29bf60cc02
2 geänderte Dateien mit 8 neuen und 1 gelöschten Zeilen
  1. 1 0
      core/object/object.cpp
  2. 7 1
      scene/main/node.cpp

+ 1 - 0
core/object/object.cpp

@@ -923,6 +923,7 @@ void Object::notification(int p_notification, bool p_reversed) {
 }
 
 String Object::to_string() {
+	// Keep this method in sync with `Node::to_string`.
 	if (script_instance) {
 		bool valid;
 		String ret = script_instance->to_string(&valid);

+ 7 - 1
scene/main/node.cpp

@@ -2583,6 +2583,7 @@ void Node::get_storable_properties(HashSet<StringName> &r_storable_properties) c
 }
 
 String Node::to_string() {
+	// Keep this method in sync with `Object::to_string`.
 	ERR_THREAD_GUARD_V(String());
 	if (get_script_instance()) {
 		bool valid;
@@ -2591,7 +2592,12 @@ String Node::to_string() {
 			return ret;
 		}
 	}
-
+	if (_get_extension() && _get_extension()->to_string) {
+		String ret;
+		GDExtensionBool is_valid;
+		_get_extension()->to_string(_get_extension_instance(), &is_valid, &ret);
+		return ret;
+	}
 	return (get_name() ? String(get_name()) + ":" : "") + Object::to_string();
 }