diff options
author | Jacques Lucke <jacques@blender.org> | 2020-05-13 13:39:17 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-05-13 13:39:17 +0300 |
commit | b55c78a289c600696282f97191d6e800a1c1ac34 (patch) | |
tree | a17132a55b05b0e90e5a1ed4ada7d153b9d4e116 /source/blender/depsgraph/intern/builder | |
parent | 23fd95458c264dc53f5ce94cd2c65404a69d0f6f (diff) |
Simulation: Add modifier to access simulation data
For now the "Simulation" modifier only exists for point cloud objects, because
we need this for the particle system. Right now, the modifier is doing nothing.
There is a new `DEG_add_simulation_relation` function that is used
by the modifier to make sure that the simulation is evaluated before
the modifier is executed.
Reviewers: brecht, sergey
Differential Revision: https://developer.blender.org/D7549
Diffstat (limited to 'source/blender/depsgraph/intern/builder')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes.cc | 6 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index cefe87d1e1f..44ddd9522e0 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -97,6 +97,7 @@ #include "BKE_scene.h" #include "BKE_sequencer.h" #include "BKE_shader_fx.h" +#include "BKE_simulation.h" #include "BKE_sound.h" #include "BKE_tracking.h" #include "BKE_volume.h" @@ -1753,6 +1754,11 @@ void DepsgraphNodeBuilder::build_simulation(Simulation *simulation) add_id_node(&simulation->id); build_animdata(&simulation->id); build_parameters(&simulation->id); + + add_operation_node(&simulation->id, + NodeType::SIMULATION, + OperationCode::SIMULATION_EVAL, + function_bind(BKE_simulation_data_update, _1, get_cow_datablock(scene_))); } void DepsgraphNodeBuilder::build_scene_sequencer(Scene *scene) diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 6bdb7500b4a..8f977e07f17 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -2578,6 +2578,11 @@ void DepsgraphRelationBuilder::build_simulation(Simulation *simulation) } build_animdata(&simulation->id); build_parameters(&simulation->id); + + OperationKey simulation_update_key( + &simulation->id, NodeType::SIMULATION, OperationCode::SIMULATION_EVAL); + TimeSourceKey time_src_key; + add_relation(time_src_key, simulation_update_key, "TimeSrc -> Simulation"); } void DepsgraphRelationBuilder::build_scene_sequencer(Scene *scene) |