[Bf-blender-cvs] [d9829efb0a8] master: Cleanup: BKE_object_duplicate.

Bastien Montagne noreply at git.blender.org
Fri Mar 29 14:58:22 CET 2019


Commit: d9829efb0a8bdc7ca6e81cf6cde71bf4aa79770f
Author: Bastien Montagne
Date:   Fri Mar 29 14:53:45 2019 +0100
Branches: master
https://developer.blender.org/rBd9829efb0a8bdc7ca6e81cf6cde71bf4aa79770f

Cleanup: BKE_object_duplicate.

Comments, code consistency, remove disabled code...

===================================================================

M	source/blender/blenkernel/intern/object.c

===================================================================

diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 4f8be846b37..0a08f5f8270 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1427,6 +1427,13 @@ Object *BKE_object_copy(Main *bmain, const Object *ob)
 	return ob_copy;
 }
 
+/** Perform deep-copy of object and its 'children' data-blocks (obdata, materials, actions, etc.).
+ *
+ * \param dupflag Controls which sub-data are also duplicated (see \a eDupli_ID_Flags in \a DNA_userdef_types.h).
+ *
+ * \note Caller MUST free \a newid pointers itself (\a BKE_main_id_clear_newpoins()) and call updates of DEG too
+ *       (\a DAG_relations_tag_update()).
+ */
 Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
 {
 	Material ***matarar;
@@ -1547,17 +1554,19 @@ Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
 			}
 			break;
 		case OB_ARMATURE:
-			DEG_id_tag_update(&obn->id, ID_RECALC_GEOMETRY);
-			if (obn->pose)
-				BKE_pose_tag_recalc(bmain, obn->pose);
-			if (dupflag & USER_DUP_ARM) {
-				ID_NEW_REMAP_US2(obn->data)
-				else {
-					obn->data = ID_NEW_SET(obn->data, BKE_armature_copy(bmain, obn->data));
-					BKE_pose_rebuild(bmain, obn, obn->data, true);
-					didit = 1;
+			if (dupflag != 0) {
+				DEG_id_tag_update(&obn->id, ID_RECALC_GEOMETRY);
+				if (obn->pose)
+					BKE_pose_tag_recalc(bmain, obn->pose);
+				if (dupflag & USER_DUP_ARM) {
+					ID_NEW_REMAP_US2(obn->data)
+					else {
+						obn->data = ID_NEW_SET(obn->data, BKE_armature_copy(bmain, obn->data));
+						BKE_pose_rebuild(bmain, obn, obn->data, true);
+						didit = 1;
+					}
+					id_us_min(id);
 				}
-				id_us_min(id);
 			}
 			break;
 		case OB_LATTICE:
@@ -1650,14 +1659,10 @@ Object *BKE_object_duplicate(Main *bmain, const Object *ob, const int dupflag)
 
 	BKE_libblock_relink_to_newid(&obn->id);
 
-	/* DAG_relations_tag_update(bmain); */ /* caller must do */
-
 	if (ob->data != NULL) {
 		DEG_id_tag_update_ex(bmain, (ID *)obn->data, ID_RECALC_EDITORS);
 	}
 
-	/* BKE_main_id_clear_newpoins(bmain); */ /* Called must do. */
-
 	return obn;
 }



More information about the Bf-blender-cvs mailing list