Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2019-05-28 22:02:40 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2019-05-28 22:02:40 +0300
commitdb0568329e46cf58eed2d0f8ab633bdc52251bfc (patch)
treeda79f61dcf41e1a3397acd0b1c80c5a76aa98348
parent574e7903407044a18c39af5eed6576744cd5d106 (diff)
Fix T65175: nodetree animation stays linked after duplicating a lamp
Reviewers: mont29, brecht Maniphest Tasks: T65175 Differential Revision: https://developer.blender.org/D4956
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c5
-rw-r--r--source/blender/blenkernel/intern/object.c18
-rw-r--r--source/blender/editors/object/object_relations.c3
3 files changed, 14 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 4a939180fb0..952859e0c7b 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -59,6 +59,7 @@
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_nla.h"
+#include "BKE_node.h"
#include "BKE_report.h"
#include "BKE_texture.h"
@@ -365,6 +366,10 @@ void BKE_animdata_copy_id_action(Main *bmain, ID *id, const bool set_newid)
BKE_action_copy(bmain, adt->tmpact);
}
}
+ bNodeTree *ntree = ntreeFromID(id);
+ if (ntree) {
+ BKE_animdata_copy_id_action(bmain, &ntree->id, set_newid);
+ }
}
/* Merge copies of the data from the src AnimData into the destination AnimData */
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index fcb1066b633..a4dbbb5d238 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1512,12 +1512,11 @@ Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
else
{
obn->mat[a] = ID_NEW_SET(obn->mat[a], BKE_material_copy(bmain, obn->mat[a]));
+ if (dupflag & USER_DUP_ACT) {
+ BKE_animdata_copy_id_action(bmain, &obn->mat[a]->id, true);
+ }
}
id_us_min(id);
-
- if (dupflag & USER_DUP_ACT) {
- BKE_animdata_copy_id_action(bmain, &obn->mat[a]->id, true);
- }
}
}
}
@@ -1530,12 +1529,10 @@ Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
else
{
psys->part = ID_NEW_SET(psys->part, BKE_particlesettings_copy(bmain, psys->part));
+ if (dupflag & USER_DUP_ACT) {
+ BKE_animdata_copy_id_action(bmain, &psys->part->id, true);
+ }
}
-
- if (dupflag & USER_DUP_ACT) {
- BKE_animdata_copy_id_action(bmain, &psys->part->id, true);
- }
-
id_us_min(id);
}
}
@@ -1712,6 +1709,9 @@ Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
else
{
(*matarar)[a] = ID_NEW_SET((*matarar)[a], BKE_material_copy(bmain, (*matarar)[a]));
+ if (dupflag & USER_DUP_ACT) {
+ BKE_animdata_copy_id_action(bmain, &(*matarar)[a]->id, true);
+ }
}
id_us_min(id);
}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 6df012cdc80..6879a7f4a06 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1967,9 +1967,6 @@ static void single_mat_users(
if (ma->id.us > 1) {
man = BKE_material_copy(bmain, ma);
BKE_animdata_copy_id_action(bmain, &man->id, false);
- if (man->nodetree != NULL) {
- BKE_animdata_copy_id_action(bmain, &man->nodetree->id, false);
- }
man->id.us = 0;
assign_material(bmain, ob, man, a, BKE_MAT_ASSIGN_USERPREF);