[Bf-blender-cvs] [c01ffefb687] master: Pasting poses now updates motion paths

Joshua Leung noreply at git.blender.org
Sun Nov 19 14:09:24 CET 2017


Commit: c01ffefb687260c11b3eae8411e5af051f0ce10a
Author: Joshua Leung
Date:   Mon Nov 20 00:31:07 2017 +1300
Branches: master
https://developer.blender.org/rBc01ffefb687260c11b3eae8411e5af051f0ce10a

Pasting poses now updates motion paths

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

M	source/blender/editors/armature/pose_transform.c

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

diff --git a/source/blender/editors/armature/pose_transform.c b/source/blender/editors/armature/pose_transform.c
index 2d86610e065..3707b914ecb 100644
--- a/source/blender/editors/armature/pose_transform.c
+++ b/source/blender/editors/armature/pose_transform.c
@@ -484,12 +484,15 @@ static int pose_paste_exec(bContext *C, wmOperator *op)
 	bPoseChannel *chan;
 	const bool flip = RNA_boolean_get(op->ptr, "flipped");
 	bool selOnly = RNA_boolean_get(op->ptr, "selected_mask");
+	
 	/* Get KeyingSet to use. */
 	KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, ANIM_KS_WHOLE_CHARACTER_ID);
+	
 	/* Sanity checks. */
 	if (ELEM(NULL, ob, ob->pose)) {
 		return OPERATOR_CANCELLED;
 	}
+	
 	/* Read copy buffer .blend file. */
 	char str[FILE_MAX];
 	Main *tmp_bmain = BKE_main_new();
@@ -505,6 +508,7 @@ static int pose_paste_exec(bContext *C, wmOperator *op)
 		BKE_main_free(tmp_bmain);
 		return OPERATOR_CANCELLED;
 	}
+	
 	Object *object_from = tmp_bmain->object.first;
 	bPose *pose_from = object_from->pose;
 	if (pose_from == NULL) {
@@ -512,6 +516,7 @@ static int pose_paste_exec(bContext *C, wmOperator *op)
 		BKE_main_free(tmp_bmain);
 		return OPERATOR_CANCELLED;
 	}
+	
 	/* If selOnly option is enabled, if user hasn't selected any bones,
 	 * just go back to default behavior to be more in line with other
 	 * pose tools.
@@ -521,6 +526,7 @@ static int pose_paste_exec(bContext *C, wmOperator *op)
 			selOnly = false;
 		}
 	}
+	
 	/* Safely merge all of the channels in the buffer pose into any
 	 * existing pose.
 	 */
@@ -535,8 +541,15 @@ static int pose_paste_exec(bContext *C, wmOperator *op)
 		}
 	}
 	BKE_main_free(tmp_bmain);
+	
 	/* Update event for pose and deformation children. */
 	DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+	
+	/* Recalculate paths if any of the bones have paths... */
+	if ((ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS)) {
+		ED_pose_recalculate_paths(scene, ob);
+	}
+	
 	/* Notifiers for updates, */
 	WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);



More information about the Bf-blender-cvs mailing list