Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-11-13 16:48:48 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-11-13 16:48:48 +0300
commit1cb6cea71c10c0d22ba9cdd3eee5111d0734c193 (patch)
tree1cbd74c668006be134692e883ceef7286db3a368 /source/blender/depsgraph
parentf30a2a786214c4ef08612486c227add0bb6bf35b (diff)
parent8a03e4d409ec71beab612facf432eb57f3bc5f34 (diff)
Merge remote-tracking branch 'origin/master' into blender2.8
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc11
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc16
2 files changed, 20 insertions, 7 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 2c0aa951ffa..3e7ea039cad 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -987,10 +987,11 @@ void DepsgraphNodeBuilder::build_obdata_geom(Object *ob)
case OB_MBALL:
{
Object *mom = BKE_mball_basis_find(scene_, ob);
- /* Motherball - mom depends on children! */
+ /* NOTE: Only the motherball gets evaluated, it's children are
+ * having empty placeholders for the correct relations being built.
+ */
if (mom == ob) {
/* metaball evaluation operations */
- /* NOTE: only the motherball gets evaluated! */
op_node = add_operation_node(obdata,
DEG_NODE_TYPE_GEOMETRY,
function_bind(
@@ -999,6 +1000,12 @@ void DepsgraphNodeBuilder::build_obdata_geom(Object *ob)
(MetaBall *)obdata_cow),
DEG_OPCODE_PLACEHOLDER,
"Geometry Eval");
+ } else {
+ op_node = add_operation_node(obdata,
+ DEG_NODE_TYPE_GEOMETRY,
+ NULL,
+ DEG_OPCODE_PLACEHOLDER,
+ "Geometry Eval");
op_node->set_as_entry();
}
break;
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 34df44ae046..6e806089736 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1667,13 +1667,19 @@ void DepsgraphRelationBuilder::build_obdata_geom(Object *ob)
case OB_MBALL:
{
Object *mom = BKE_mball_basis_find(scene_, ob);
+ ComponentKey mom_geom_key(&mom->id, DEG_NODE_TYPE_GEOMETRY);
/* motherball - mom depends on children! */
- if (mom != ob) {
- /* non-motherball -> cannot be directly evaluated! */
- ComponentKey mom_key(&mom->id, DEG_NODE_TYPE_GEOMETRY);
+ if (mom == ob) {
+ ComponentKey mom_transform_key(&mom->id,
+ DEG_NODE_TYPE_TRANSFORM);
+ add_relation(mom_transform_key,
+ mom_geom_key,
+ "Metaball Motherball Transform -> Geometry");
+ }
+ else if (mom != ob) {
ComponentKey transform_key(&ob->id, DEG_NODE_TYPE_TRANSFORM);
- add_relation(geom_key, mom_key, "Metaball Motherball");
- add_relation(transform_key, mom_key, "Metaball Motherball");
+ add_relation(geom_key, mom_geom_key, "Metaball Motherball");
+ add_relation(transform_key, mom_geom_key, "Metaball Motherball");
}
break;
}