Don't remap resources belonging to instance
This commit is contained in:
parent
d567abd714
commit
8e8398209e
1 changed files with 10 additions and 0 deletions
|
@ -2959,6 +2959,7 @@ void SceneTreeDock::_clear_clipboard() {
|
||||||
void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap) {
|
void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap) {
|
||||||
List<PropertyInfo> props;
|
List<PropertyInfo> props;
|
||||||
p_node->get_property_list(&props);
|
p_node->get_property_list(&props);
|
||||||
|
bool is_instanced = EditorPropertyRevert::may_node_be_in_instance(p_node);
|
||||||
|
|
||||||
for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
|
for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
|
||||||
if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
|
if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
|
||||||
|
@ -2969,6 +2970,15 @@ void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap)
|
||||||
if (v.is_ref()) {
|
if (v.is_ref()) {
|
||||||
RES res = v;
|
RES res = v;
|
||||||
if (res.is_valid()) {
|
if (res.is_valid()) {
|
||||||
|
if (is_instanced) {
|
||||||
|
Variant orig;
|
||||||
|
if (EditorPropertyRevert::get_instanced_node_original_property(p_node, E->get().name, orig)) {
|
||||||
|
if (!EditorPropertyRevert::is_node_property_different(p_node, v, orig)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((res->get_path() == "" || res->get_path().find("::") > -1) && !r_remap.has(res)) {
|
if ((res->get_path() == "" || res->get_path().find("::") > -1) && !r_remap.has(res)) {
|
||||||
_create_remap_for_resource(res, r_remap);
|
_create_remap_for_resource(res, r_remap);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue