diff options
Diffstat (limited to 'source/blender/depsgraph')
3 files changed, 28 insertions, 4 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 5f591b4aee0..dff2f427f27 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -1197,7 +1197,7 @@ void DepsgraphRelationBuilder::build_constraints(ID *id, // TODO: loc vs rot vs scale? if (&ct->tar->id == id) { /* Constraint targeting own object: - * - This case is fine IFF we're dealing with a bone + * - This case is fine IF we're dealing with a bone * constraint pointing to its own armature. In that * case, it's just transform -> bone. * - If however it is a real self targeting case, just @@ -1768,7 +1768,7 @@ void DepsgraphRelationBuilder::build_rigidbody(Scene *scene) RELATION_FLAG_GODMODE); } - /* Final transform is whetever solver gave to us. */ + /* Final transform is whatever the solver gave to us. */ if (object->rigidbody_object->type == RBO_TYPE_ACTIVE) { /* We do not have to update the objects final transform after the simulation if it is * passive or controlled by the animation system in blender. diff --git a/source/blender/depsgraph/intern/depsgraph_query_iter.cc b/source/blender/depsgraph/intern/depsgraph_query_iter.cc index e472d82f2ee..c9780b9b129 100644 --- a/source/blender/depsgraph/intern/depsgraph_query_iter.cc +++ b/source/blender/depsgraph/intern/depsgraph_query_iter.cc @@ -193,6 +193,30 @@ bool deg_iterator_components_step(BLI_Iterator *iter) } } + /* The volume component. */ + if (data->geometry_component_id == 2) { + data->geometry_component_id++; + + /* Don't use a temporary object for this component, when the owner is a volume object. */ + if (data->geometry_component_owner->type == OB_VOLUME) { + iter->current = data->geometry_component_owner; + return true; + } + + const VolumeComponent *component = geometry_set->get_component_for_read<VolumeComponent>(); + if (component != nullptr) { + const Volume *volume = component->get_for_read(); + + Object *temp_object = &data->temp_geometry_component_object; + *temp_object = *data->geometry_component_owner; + temp_object->type = OB_VOLUME; + temp_object->data = (void *)volume; + temp_object->runtime.select_id = data->geometry_component_owner->runtime.select_id; + iter->current = temp_object; + return true; + } + } + data->geometry_component_owner = nullptr; return false; } diff --git a/source/blender/depsgraph/intern/node/deg_node_id.h b/source/blender/depsgraph/intern/node/deg_node_id.h index c4d36685bb8..e2d3b3fc36f 100644 --- a/source/blender/depsgraph/intern/node/deg_node_id.h +++ b/source/blender/depsgraph/intern/node/deg_node_id.h @@ -88,7 +88,7 @@ struct IDNode : public Node { * which could be "stale" pointer. */ uint id_orig_session_uuid; - /* Evaluated datablock. + /* Evaluated data-block. * Will be covered by the copy-on-write system if the ID Type needs it. */ ID *id_cow; @@ -107,7 +107,7 @@ struct IDNode : public Node { eDepsNode_LinkedState_Type linked_state; - /* Indicates the datablock is visible in the evaluated scene. */ + /* Indicates the data-block is visible in the evaluated scene. */ bool is_directly_visible; /* For the collection type of ID, denotes whether collection was fully |