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
path: root/source
diff options
context:
space:
mode:
authorJacques Lucke <mail@jlucke.com>2019-07-25 11:01:10 +0300
committerJacques Lucke <mail@jlucke.com>2019-07-25 11:01:10 +0300
commit7e4c48977846b7eb18d1ad81d87236baa6356e63 (patch)
tree2d85a3d852796a93f4b321553f35d45fcb058b4b /source
parentc92dd7bed6e0deeeef17a70cff38cc832706f22c (diff)
use particle function for gravity force
Diffstat (limited to 'source')
-rw-r--r--source/blender/simulations/bparticles/forces.cpp14
-rw-r--r--source/blender/simulations/bparticles/forces.hpp7
-rw-r--r--source/blender/simulations/bparticles/inserters.cpp2
3 files changed, 7 insertions, 16 deletions
diff --git a/source/blender/simulations/bparticles/forces.cpp b/source/blender/simulations/bparticles/forces.cpp
index 9101e7d9271..f28fb478785 100644
--- a/source/blender/simulations/bparticles/forces.cpp
+++ b/source/blender/simulations/bparticles/forces.cpp
@@ -13,17 +13,11 @@ void GravityForce::add_force(ForceInterface &interface)
ParticlesBlock &block = interface.block();
ArrayRef<float3> destination = interface.combined_destination();
- FN_TUPLE_CALL_ALLOC_TUPLES(m_compute_acceleration_body, fn_in, fn_out);
-
- FN::ExecutionStack stack;
- FN::ExecutionContext execution_context(stack);
-
- m_compute_acceleration_body.call(fn_in, fn_out, execution_context);
-
- float3 acceleration = fn_out.get<float3>(0);
+ auto inputs = m_compute_inputs.compute(interface);
- for (uint i = 0; i < block.active_amount(); i++) {
- destination[i] += acceleration;
+ for (uint pindex = 0; pindex < block.active_amount(); pindex++) {
+ float3 acceleration = inputs->get<float3>("Direction", 0, pindex);
+ destination[pindex] += acceleration;
}
};
diff --git a/source/blender/simulations/bparticles/forces.hpp b/source/blender/simulations/bparticles/forces.hpp
index 7460a1877c2..83807f26cee 100644
--- a/source/blender/simulations/bparticles/forces.hpp
+++ b/source/blender/simulations/bparticles/forces.hpp
@@ -14,13 +14,10 @@ class Force {
class GravityForce : public Force {
private:
- SharedFunction m_compute_acceleration_fn;
- TupleCallBody &m_compute_acceleration_body;
+ ParticleFunction m_compute_inputs;
public:
- GravityForce(SharedFunction &compute_acceleration_fn)
- : m_compute_acceleration_fn(compute_acceleration_fn),
- m_compute_acceleration_body(m_compute_acceleration_fn->body<TupleCallBody>())
+ GravityForce(ParticleFunction compute_inputs) : m_compute_inputs(std::move(compute_inputs))
{
}
diff --git a/source/blender/simulations/bparticles/inserters.cpp b/source/blender/simulations/bparticles/inserters.cpp
index 4e53f85ccd7..be37daadbc1 100644
--- a/source/blender/simulations/bparticles/inserters.cpp
+++ b/source/blender/simulations/bparticles/inserters.cpp
@@ -232,7 +232,7 @@ static std::unique_ptr<Force> BUILD_FORCE_gravity(BuildContext &ctx, VirtualNode
}
SharedFunction fn = fn_or_error.extract_value();
- return std::unique_ptr<Force>(new GravityForce(fn));
+ return std::unique_ptr<Force>(new GravityForce(ParticleFunction(fn)));
}
static std::unique_ptr<Force> BUILD_FORCE_turbulence(BuildContext &ctx, VirtualNode *vnode)