[Bf-blender-cvs] [c98b2e74df2] blender2.8: Merge branch 'master' into blender2.8
Bastien Montagne
noreply at git.blender.org
Tue Jun 12 12:39:05 CEST 2018
Commit: c98b2e74df2e531726f5ceabe76342282f695f23
Author: Bastien Montagne
Date: Tue Jun 12 12:38:54 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBc98b2e74df2e531726f5ceabe76342282f695f23
Merge branch 'master' into blender2.8
Conflicts:
source/blender/editors/object/object_add.c
source/blender/editors/object/object_relations.c
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_animsys.h
index 326c25e8899,b25f57b4be2..7ae9527b2f7
--- a/source/blender/blenkernel/BKE_animsys.h
+++ b/source/blender/blenkernel/BKE_animsys.h
@@@ -70,13 -68,13 +70,13 @@@ bool BKE_animdata_set_action(struct Rep
void BKE_animdata_free(struct ID *id, const bool do_id_user);
/* Copy AnimData */
-struct AnimData *BKE_animdata_copy(struct Main *bmain, struct AnimData *adt, const bool do_action);
+struct AnimData *BKE_animdata_copy(struct Main *bmain, struct AnimData *adt, const bool do_action, const bool do_id_user);
/* Copy AnimData */
-bool BKE_animdata_copy_id(struct Main *bmain, struct ID *id_to, struct ID *id_from, const bool do_action);
+bool BKE_animdata_copy_id(struct Main *bmain, struct ID *id_to, struct ID *id_from, const bool do_action, const bool do_id_user);
/* Copy AnimData Actions */
- void BKE_animdata_copy_id_action(struct ID *id, const bool set_newid);
+ void BKE_animdata_copy_id_action(struct Main *bmain, struct ID *id, const bool set_newid);
/* Merge copies of data from source AnimData block */
typedef enum eAnimData_MergeCopy_Modes {
diff --cc source/blender/blenkernel/intern/nla.c
index b91887e6815,1db4e878c9a..56705c834d5
--- a/source/blender/blenkernel/intern/nla.c
+++ b/source/blender/blenkernel/intern/nla.c
@@@ -54,12 -54,13 +54,13 @@@
#include "BKE_action.h"
#include "BKE_fcurve.h"
- #include "BKE_nla.h"
#include "BKE_global.h"
#include "BKE_library.h"
+ #include "BKE_main.h"
+ #include "BKE_nla.h"
#ifdef WITH_AUDASPACE
-# include AUD_SPECIAL_H
+# include <AUD_Special.h>
#endif
#include "RNA_access.h"
diff --cc source/blender/editors/object/object_add.c
index 9ce7f556448,039ea518b23..e079cfd1d90
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@@ -2256,10 -2194,25 +2256,10 @@@ static Base *object_add_duplicate_inter
}
if (dupflag & USER_DUP_ACT) {
- BKE_animdata_copy_id_action((ID *)obn->data, true);
- bActuator *act;
-
+ BKE_animdata_copy_id_action(bmain, (ID *)obn->data, true);
if (key) {
- BKE_animdata_copy_id_action((ID *)key, true);
+ BKE_animdata_copy_id_action(bmain, (ID *)key, true);
}
-
- /* Update the duplicated action in the action actuators */
- /* XXX TODO this code is all wrong! actact->act is user-refcounted (see readfile.c),
- * and what about other ID pointers of other BGE logic bricks,
- * and since this is object-level, why is it only ran if obdata was duplicated??? -mont29 */
- for (act = obn->actuators.first; act; act = act->next) {
- if (act->type == ACT_ACTION) {
- bActionActuator *actact = (bActionActuator *) act->data;
- if (ob->adt && actact->act == ob->adt->action) {
- actact->act = obn->adt->action;
- }
- }
- }
}
if (dupflag & USER_DUP_MAT) {
diff --cc source/blender/editors/object/object_relations.c
index 4f441826bfd,727b7d69723..84e3e63fede
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@@ -1803,10 -1908,10 +1803,10 @@@ static void single_obdata_users(Main *b
case OB_LATTICE:
ob->data = lat = ID_NEW_SET(ob->data, BKE_lattice_copy(bmain, ob->data));
if (lat->key) /* We do not need to set lat->key->id.newid here... */
- BKE_animdata_copy_id_action((ID *)lat->key, false);
+ BKE_animdata_copy_id_action(bmain, (ID *)lat->key, false);
break;
case OB_ARMATURE:
- DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+ DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
ob->data = ID_NEW_SET(ob->data, BKE_armature_copy(bmain, ob->data));
BKE_pose_rebuild(ob, ob->data);
break;
@@@ -1845,26 -1943,31 +1845,26 @@@
}
}
- static void single_object_action_users(Scene *scene, ViewLayer *view_layer, const int flag)
-static void single_object_action_users(Main *bmain, Scene *scene, const int flag)
++static void single_object_action_users(Main *bmain, Scene *scene, ViewLayer *view_layer, const int flag)
{
- Object *ob;
- Base *base;
-
- for (base = FIRSTBASE; base; base = base->next) {
- ob = base->object;
- if (!ID_IS_LINKED(ob) && (flag == 0 || (base->flag & SELECT)) ) {
- DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+ FOREACH_OBJECT_FLAG_BEGIN(scene, view_layer, flag, ob)
+ {
+ if (!ID_IS_LINKED(ob)) {
+ DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
- BKE_animdata_copy_id_action(&ob->id, false);
+ BKE_animdata_copy_id_action(bmain, &ob->id, false);
}
}
+ FOREACH_OBJECT_FLAG_END;
}
-static void single_mat_users(Main *bmain, Scene *scene, const int flag, const bool do_textures)
+static void single_mat_users(Main *bmain, Scene *scene, ViewLayer *view_layer, const int flag)
{
- Object *ob;
- Base *base;
Material *ma, *man;
- Tex *tex;
- int a, b;
+ int a;
- for (base = FIRSTBASE; base; base = base->next) {
- ob = base->object;
- if (!ID_IS_LINKED(ob) && (flag == 0 || (base->flag & SELECT)) ) {
+ FOREACH_OBJECT_FLAG_BEGIN(scene, view_layer, flag, ob)
+ {
+ if (!ID_IS_LINKED(ob)) {
for (a = 1; a <= ob->totcol; a++) {
ma = give_current_material(ob, a);
if (ma) {
@@@ -1910,14 -2087,22 +1910,14 @@@ static void single_mat_users_expand(Mai
}
/* used for copying scenes */
-void ED_object_single_users(Main *bmain, Scene *scene, const bool full, const bool copy_groups)
+void ED_object_single_users(Main *bmain, Scene *scene, const bool full, const bool copy_collections)
{
- single_object_users(bmain, scene, NULL, 0, copy_groups);
+ single_object_users(bmain, scene, NULL, 0, copy_collections);
if (full) {
- single_obdata_users(bmain, scene, 0);
- single_object_action_users(bmain, scene, 0);
+ single_obdata_users(bmain, scene, NULL, 0);
- single_object_action_users(scene, NULL, 0);
++ single_object_action_users(bmain, scene, NULL, 0);
single_mat_users_expand(bmain);
- single_tex_users_expand(bmain);
}
/* Relink nodetrees' pointers that have been duplicated. */
@@@ -2453,11 -2430,15 +2453,11 @@@ static int make_single_user_exec(bConte
}
if (RNA_boolean_get(op->ptr, "material")) {
- single_mat_users(bmain, scene, flag, RNA_boolean_get(op->ptr, "texture"));
+ single_mat_users(bmain, scene, view_layer, flag);
}
-#if 0 /* can't do this separate from materials */
- if (RNA_boolean_get(op->ptr, "texture"))
- single_mat_users(scene, flag, true);
-#endif
if (RNA_boolean_get(op->ptr, "animation")) {
- single_object_action_users(scene, view_layer, flag);
- single_object_action_users(bmain, scene, flag);
++ single_object_action_users(bmain, scene, view_layer, flag);
}
BKE_main_id_clear_newpoins(bmain);
More information about the Bf-blender-cvs
mailing list