Sfoglia il codice sorgente

Merge pull request #11013 from MednauN/master

Fix duplication of node with script
Rémi Verschelde 8 anni fa
parent
commit
a1779c9044
1 ha cambiato i file con 12 aggiunte e 1 eliminazioni
  1. 12 1
      scene/main/node.cpp

+ 12 - 1
scene/main/node.cpp

@@ -29,6 +29,7 @@
 /*************************************************************************/
 #include "node.h"
 
+#include "core/core_string_names.h"
 #include "instance_placeholder.h"
 #include "io/resource_loader.h"
 #include "message_queue.h"
@@ -2104,12 +2105,22 @@ Node *Node::_duplicate(int p_flags) const {
 
 	get_property_list(&plist);
 
+	StringName script_property_name = CoreStringNames::get_singleton()->_script;
+
+	if (p_flags & DUPLICATE_SCRIPTS) {
+		bool is_valid = false;
+		Variant script = get(script_property_name, &is_valid);
+		if (is_valid) {
+			node->set(script_property_name, script);
+		}
+	}
+
 	for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
 
 		if (!(E->get().usage & PROPERTY_USAGE_STORAGE))
 			continue;
 		String name = E->get().name;
-		if (!(p_flags & DUPLICATE_SCRIPTS) && name == "script/script")
+		if (name == script_property_name)
 			continue;
 
 		Variant value = get(name);