[Bf-blender-cvs] [079a2a6] depsgraph_refactor: Depsgrpah: Proxy relations were still nto correct
Sergey Sharybin
noreply at git.blender.org
Thu Feb 12 11:36:38 CET 2015
Commit: 079a2a6a467fe94405aa75908952274bd7ce0a69
Author: Sergey Sharybin
Date: Thu Feb 12 15:35:48 2015 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB079a2a6a467fe94405aa75908952274bd7ce0a69
Depsgrpah: Proxy relations were still nto correct
Now linked objects which depend on individual armature bones will keep
working after creating the proxy.
===================================================================
M source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
M source/blender/depsgraph/intern/depsgraph_build_relations.cpp
M source/blender/depsgraph/intern/depsnode_opcodes.h
===================================================================
diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
index 21db0f0..baa5b83 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
@@ -656,9 +656,28 @@ void DepsgraphNodeBuilder::build_proxy_rig(Scene *scene, Object *ob)
{
add_operation_node(&ob->id,
DEPSNODE_TYPE_EVAL_POSE,
- DEPSOP_TYPE_EXEC,
+ DEPSOP_TYPE_INIT,
function_bind(BKE_pose_eval_proxy_copy, _1, ob),
- DEG_OPCODE_POSE_PROXY_COPY);
+ DEG_OPCODE_POSE_INIT);
+
+ for (bPoseChannel *pchan = (bPoseChannel *)ob->pose->chanbase.first;
+ pchan != NULL;
+ pchan = pchan->next)
+ {
+ add_operation_node(&ob->id, DEPSNODE_TYPE_BONE, pchan->name,
+ DEPSOP_TYPE_INIT, NULL,
+ DEG_OPCODE_BONE_READY);
+
+ add_operation_node(&ob->id, DEPSNODE_TYPE_BONE, pchan->name,
+ DEPSOP_TYPE_POST, NULL,
+ DEG_OPCODE_BONE_DONE);
+ }
+
+ add_operation_node(&ob->id,
+ DEPSNODE_TYPE_EVAL_POSE,
+ DEPSOP_TYPE_POST,
+ NULL,
+ DEG_OPCODE_POSE_DONE);
}
/* Shapekeys */
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index 0208066..ed44766 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -1298,6 +1298,18 @@ void DepsgraphRelationBuilder::build_rig(Scene *scene, Object *ob)
void DepsgraphRelationBuilder::build_proxy_rig(Scene *scene, Object *ob)
{
+ OperationKey pose_init_key(&ob->id, DEPSNODE_TYPE_EVAL_POSE, DEG_OPCODE_POSE_INIT);
+ OperationKey pose_done_key(&ob->id, DEPSNODE_TYPE_EVAL_POSE, DEG_OPCODE_POSE_DONE);
+ for (bPoseChannel *pchan = (bPoseChannel *)ob->pose->chanbase.first;
+ pchan != NULL;
+ pchan = pchan->next)
+ {
+ OperationKey bone_ready_key(&ob->id, DEPSNODE_TYPE_BONE, pchan->name, DEG_OPCODE_BONE_READY);
+ OperationKey bone_done_key(&ob->id, DEPSNODE_TYPE_BONE, pchan->name, DEG_OPCODE_BONE_DONE);
+ add_relation(pose_init_key, bone_ready_key, DEPSREL_TYPE_OPERATION, "Pose Init -> Bone Ready");
+ add_relation(bone_ready_key, bone_done_key, DEPSREL_TYPE_OPERATION, "Ready -> Done");
+ add_relation(bone_done_key, pose_done_key, DEPSREL_TYPE_OPERATION, "Bone Done -> Pose Done");
+ }
}
/* Shapekeys */
diff --git a/source/blender/depsgraph/intern/depsnode_opcodes.h b/source/blender/depsgraph/intern/depsnode_opcodes.h
index c05e9c5..ed0955e 100644
--- a/source/blender/depsgraph/intern/depsnode_opcodes.h
+++ b/source/blender/depsgraph/intern/depsnode_opcodes.h
@@ -111,9 +111,6 @@ DEF_DEG_OPCODE(POSE_DONE)
DEF_DEG_OPCODE(POSE_IK_SOLVER)
DEF_DEG_OPCODE(POSE_SPLINE_IK_SOLVER)
-/* Copy proxy eval result */
-DEF_DEG_OPCODE(POSE_PROXY_COPY)
-
/* Bone -------------------------------------------- */
/* Bone local transforms - Entrypoint */
More information about the Bf-blender-cvs
mailing list