diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-11-13 16:48:48 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-11-13 16:48:48 +0300 |
commit | 1cb6cea71c10c0d22ba9cdd3eee5111d0734c193 (patch) | |
tree | 1cbd74c668006be134692e883ceef7286db3a368 /source/blender/depsgraph | |
parent | f30a2a786214c4ef08612486c227add0bb6bf35b (diff) | |
parent | 8a03e4d409ec71beab612facf432eb57f3bc5f34 (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.cc | 11 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 16 |
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; } |