[Bf-blender-cvs] [584ab40] depsgraph_refactor: Depsgraph: Add proper relations to the boolean modifier
Sergey Sharybin
noreply at git.blender.org
Fri Dec 5 09:24:05 CET 2014
Commit: 584ab40404437d3501a079c8219aa4a76acfc59c
Author: Sergey Sharybin
Date: Fri Dec 5 13:22:48 2014 +0500
Branches: depsgraph_refactor
https://developer.blender.org/rB584ab40404437d3501a079c8219aa4a76acfc59c
Depsgraph: Add proper relations to the boolean modifier
This allows to get rid of some hardcoded relations between transform and geometry
components in the depsgraph itself.
===================================================================
M source/blender/depsgraph/intern/depsgraph_build_relations.cpp
M source/blender/modifiers/intern/MOD_boolean.c
===================================================================
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index 593a4e2..e674efc 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -326,11 +326,6 @@ void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
ComponentKey transform_key(&ob->id, DEPSNODE_TYPE_TRANSFORM);
add_relation(adt_key, local_transform_key, DEPSREL_TYPE_OPERATION, "Object Animation");
}
-
- /* TODO(sergey): This is a temp solution for now only. */
- ComponentKey transform_key(&ob->id, DEPSNODE_TYPE_TRANSFORM);
- ComponentKey geometry_key(&ob->id, DEPSNODE_TYPE_GEOMETRY);
- add_relation(transform_key, geometry_key, DEPSREL_TYPE_COMPONENT_ORDER, "Object Transform");
}
void DepsgraphRelationBuilder::build_object_parent(Object *ob)
@@ -1049,11 +1044,6 @@ void DepsgraphRelationBuilder::build_rig(Scene *scene, Object *ob)
add_relation(transforms_key, final_transforms_key, DEPSREL_TYPE_TRANSFORM, "Bone Final Transforms");
}
}
-
- /* TODO(sergey): do we really need this relation? */
- ComponentKey pose_eval_key(&ob->id, DEPSNODE_TYPE_EVAL_POSE);
- OperationKey geom_ubereval_key(&ob->id, DEPSNODE_TYPE_GEOMETRY, "Object Data UberEval");
- add_relation(pose_eval_key, geom_ubereval_key, DEPSREL_TYPE_OPERATION, "Pose `relation");
}
/* Shapekeys */
diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c
index aa5ddd4..f4d3bc7 100644
--- a/source/blender/modifiers/intern/MOD_boolean.c
+++ b/source/blender/modifiers/intern/MOD_boolean.c
@@ -88,6 +88,21 @@ static void updateDepgraph(ModifierData *md, DagForest *forest,
}
}
+static void updateDepsgraph(ModifierData *md,
+ struct Scene *UNUSED(scene),
+ Object *ob,
+ struct DepsNodeHandle *node)
+{
+ BooleanModifierData *bmd = (BooleanModifierData *) md;
+
+ if (bmd->object != NULL) {
+ DEG_add_object_relation(node, bmd->object, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
+ DEG_add_object_relation(node, bmd->object, DEG_OB_COMP_GEOMETRY, "Boolean Modifier");
+ }
+ /* We need own transformation as well. */
+ DEG_add_object_relation(node, ob, DEG_OB_COMP_TRANSFORM, "Boolean Modifier");
+}
+
#ifdef WITH_MOD_BOOLEAN
static DerivedMesh *get_quick_derivedMesh(DerivedMesh *derivedData, DerivedMesh *dm, int operation)
{
@@ -192,7 +207,7 @@ ModifierTypeInfo modifierType_Boolean = {
/* freeData */ NULL,
/* isDisabled */ isDisabled,
/* updateDepgraph */ updateDepgraph,
- /* updateDepsgraph */ NULL,
+ /* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
More information about the Bf-blender-cvs
mailing list