[Bf-blender-cvs] [e4b9550] depsgraph_refactor: Object transform nodes are now hooked up correctly
Joshua Leung
noreply at git.blender.org
Thu Dec 18 05:09:23 CET 2014
Commit: e4b9550140ebff4e8c9810b99d6c15dd58068c4a
Author: Joshua Leung
Date: Thu Dec 18 15:24:36 2014 +1300
Branches: depsgraph_refactor
https://developer.blender.org/rBe4b9550140ebff4e8c9810b99d6c15dd58068c4a
Object transform nodes are now hooked up correctly
The constraint stack could still benefit from being split up into multiple ops
(e.g. "pre", ... "constraint-n"..., "post"), but this order should be ok for now.
===================================================================
M source/blender/depsgraph/intern/depsgraph_build_relations.cpp
===================================================================
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index aa9bea5..11621df 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -259,11 +259,19 @@ void DepsgraphRelationBuilder::build_scene(Scene *scene)
void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
{
/* Object Transforms */
- // XXX: lcoal transform -> parent key when parent is present!
+ eDepsOperation_Code base_op = (ob->parent) ? DEG_OPCODE_TRANSFORM_PARENT : DEG_OPCODE_TRANSFORM_LOCAL;
+ OperationKey base_op_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, base_op);
+
OperationKey local_transform_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, DEG_OPCODE_TRANSFORM_LOCAL);
+ OperationKey parent_transform_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, DEG_OPCODE_TRANSFORM_PARENT);
- if (ob->parent)
+ if (ob->parent) {
+ /* parent relationship */
build_object_parent(ob);
+
+ /* local -> parent */
+ add_relation(local_transform_key, parent_transform_key, DEPSREL_TYPE_COMPONENT_ORDER, "[ObLocal -> ObParent]");
+ }
/* object constraints */
@@ -271,15 +279,19 @@ void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
OperationKey ob_ubereval_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, DEG_OPCODE_OBJECT_UBEREVAL);
if (ob->constraints.first) {
+ OperationKey constraint_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, DEG_OPCODE_TRANSFORM_CONSTRAINTS);
+
+ /* constraint relations */
+ // TODO: provide base op
+ // XXX: this is broken
build_constraints(scene, &ob->id, DEPSNODE_TYPE_TRANSFORM, "", &ob->constraints);
- OperationKey constraint_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, DEG_OPCODE_TRANSFORM_CONSTRAINTS);
- add_relation(local_transform_key, constraint_key, DEPSREL_TYPE_COMPONENT_ORDER, "[Ob Local -> Constraint Stack]");
+ /* operation order */
+ add_relation(base_op_key, constraint_key, DEPSREL_TYPE_COMPONENT_ORDER, "[ObBase-> Constraint Stack]");
add_relation(constraint_key, ob_ubereval_key, DEPSREL_TYPE_COMPONENT_ORDER, "Temp Ubereval");
}
else {
- printf("connecting local to uber\n");
- add_relation(local_transform_key, ob_ubereval_key, DEPSREL_TYPE_COMPONENT_ORDER, "Object Transform");
+ add_relation(base_op_key, ob_ubereval_key, DEPSREL_TYPE_COMPONENT_ORDER, "Object Transform");
}
@@ -289,7 +301,6 @@ void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
// XXX: fixme
if (ob->adt) {
ComponentKey adt_key(&ob->id, DEPSNODE_TYPE_ANIMATION);
- ComponentKey transform_key(&ob->id, DEPSNODE_TYPE_TRANSFORM);
add_relation(adt_key, local_transform_key, DEPSREL_TYPE_OPERATION, "Object Animation");
}
@@ -337,7 +348,7 @@ void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
void DepsgraphRelationBuilder::build_object_parent(Object *ob)
{
- ComponentKey ob_key(&ob->id, DEPSNODE_TYPE_TRANSFORM);
+ OperationKey ob_key(&ob->id, DEPSNODE_TYPE_TRANSFORM, DEG_OPCODE_TRANSFORM_PARENT);
/* type-specific links */
switch (ob->partype) {
More information about the Bf-blender-cvs
mailing list