[Bf-blender-cvs] [6c49b4154b1] blender2.8: Merge branch 'master' into blender2.8

Sergey Sharybin noreply at git.blender.org
Wed Dec 6 12:27:53 CET 2017


Commit: 6c49b4154b16aa7a3b867c561cc233ce5cdb9cb4
Author: Sergey Sharybin
Date:   Wed Dec 6 12:27:44 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB6c49b4154b16aa7a3b867c561cc233ce5cdb9cb4

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
index b947e3e01a0,9868a8d2208..531ea55cf5c
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
@@@ -319,54 -255,35 +319,54 @@@ void DepsgraphNodeBuilder::build_rig(Ob
  
  void DepsgraphNodeBuilder::build_proxy_rig(Object *object)
  {
- 	ID *obdata = (ID *)object->data;
+ 	bArmature *arm = (bArmature *)object->data;
  	OperationDepsNode *op_node;
 -
 -	build_animdata(&arm->id);
 -
 +	Object *object_cow;
 +	if (DEG_depsgraph_use_copy_on_write()) {
 +		/* NOTE: We need to expand both object and armature, so this way we can
 +		 * safely create object level pose.
 +		 */
 +		object_cow = expand_cow_datablock(object);
 +	}
 +	else {
 +		object_cow = object;
 +	}
 +	/* Sanity check. */
  	BLI_assert(object->pose != NULL);
 -
 +	/* Animation. */
- 	build_animdata(obdata);
++	build_animdata(&arm->id);
  	/* speed optimization for animation lookups */
  	BKE_pose_channels_hash_make(object->pose);
 -	if (object->pose->flag & POSE_CONSTRAINTS_NEED_UPDATE_FLAGS) {
 -		BKE_pose_update_constraint_flags(object->pose);
 +	if (object_cow->pose->flag & POSE_CONSTRAINTS_NEED_UPDATE_FLAGS) {
 +		BKE_pose_update_constraint_flags(object_cow->pose);
  	}
 -
  	op_node = add_operation_node(&object->id,
  	                             DEG_NODE_TYPE_EVAL_POSE,
 -	                             function_bind(BKE_pose_eval_proxy_copy, _1, object),
 +	                             function_bind(BKE_pose_eval_proxy_copy,
 +	                                           _1,
 +	                                           object_cow),
  	                             DEG_OPCODE_POSE_INIT);
  	op_node->set_as_entry();
 -
 -	LINKLIST_FOREACH (bPoseChannel *, pchan, &object->pose->chanbase) {
 -		op_node = add_operation_node(&object->id, DEG_NODE_TYPE_BONE, pchan->name,
 -		                             NULL, DEG_OPCODE_BONE_LOCAL);
 +	LINKLIST_FOREACH (bPoseChannel *, pchan, &object_cow->pose->chanbase) {
 +		/* Local bone transform. */
 +		op_node = add_operation_node(&object->id,
 +		                             DEG_NODE_TYPE_BONE,
 +		                             pchan->name,
 +		                             NULL,
 +		                             DEG_OPCODE_BONE_LOCAL);
  		op_node->set_as_entry();
 -
 -		add_operation_node(&object->id, DEG_NODE_TYPE_BONE, pchan->name,
 -		                   NULL, DEG_OPCODE_BONE_READY);
 -
 -		op_node = add_operation_node(&object->id, DEG_NODE_TYPE_BONE, pchan->name,
 -		                             NULL, DEG_OPCODE_BONE_DONE);
 +		/* Bone is ready for solvers. */
 +		add_operation_node(&object->id,
 +		                   DEG_NODE_TYPE_BONE,
 +		                   pchan->name,
 +		                   NULL,
 +		                   DEG_OPCODE_BONE_READY);
 +		/* Bone is fully evaluated. */
 +		op_node = add_operation_node(&object->id,
 +		                             DEG_NODE_TYPE_BONE,
 +		                             pchan->name,
 +		                             NULL,
 +		                             DEG_OPCODE_BONE_DONE);
  		op_node->set_as_exit();
  
  		/* Custom properties. */



More information about the Bf-blender-cvs mailing list