Merge pull request #11013 from MednauN/master

Fix duplication of node with script
This commit is contained in:
Rémi Verschelde 2017-09-21 10:53:58 +02:00 committed by GitHub
commit a1779c9044
1 changed files with 12 additions and 1 deletions

View File

@ -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);