[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