[Bf-blender-cvs] [dd856ee973b] functions: Cleanup: reorder some functions
Jacques Lucke
noreply at git.blender.org
Tue Jun 18 12:39:03 CEST 2019
Commit: dd856ee973bd2d92d016bff4f3b7611287e3385a
Author: Jacques Lucke
Date: Tue Jun 18 11:49:15 2019 +0200
Branches: functions
https://developer.blender.org/rBdd856ee973bd2d92d016bff4f3b7611287e3385a
Cleanup: reorder some functions
===================================================================
M source/blender/simulations/bparticles/playground_solver.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/playground_solver.cpp b/source/blender/simulations/bparticles/playground_solver.cpp
index 127f307e2bd..8ac59b3fdab 100644
--- a/source/blender/simulations/bparticles/playground_solver.cpp
+++ b/source/blender/simulations/bparticles/playground_solver.cpp
@@ -63,20 +63,29 @@ class SimpleSolver : public Solver {
return state;
}
- BLI_NOINLINE void step_new_particles(AttributeArrays &slice, MyState &state)
+ void step(WrappedState &wrapped_state, float elapsed_seconds) override
{
- auto positions = slice.get_float3("Position");
- auto velocities = slice.get_float3("Velocity");
- auto birth_times = slice.get_float("Birth Time");
+ MyState &state = wrapped_state.state<MyState>();
+ state.seconds_since_start += elapsed_seconds;
- SmallVector<float3> combined_force(slice.size());
- this->compute_combined_force(slice, combined_force);
+ ParticlesContainer &particles = *state.particles;
- for (uint i = 0; i < slice.size(); i++) {
- float seconds_since_birth = state.seconds_since_start - birth_times[i];
- positions[i] += velocities[i] * seconds_since_birth;
- velocities[i] += combined_force[i] * seconds_since_birth;
+ for (ParticlesBlock *block : particles.active_blocks()) {
+ this->step_block(state, block, elapsed_seconds);
+ this->delete_dead_particles(block);
}
+
+ this->emit_new_particles(state, elapsed_seconds);
+ this->compress_all_blocks(particles);
+
+ std::cout << "Particle Amount: " << this->particle_amount(wrapped_state) << "\n";
+ std::cout << "Block amount: " << particles.active_blocks().size() << "\n";
+ }
+
+ BLI_NOINLINE void step_block(MyState &state, ParticlesBlock *block, float elapsed_seconds)
+ {
+ AttributeArrays slice = block->slice_active();
+ this->step_slice(state, slice, elapsed_seconds);
}
BLI_NOINLINE void step_slice(MyState &state, AttributeArrays &buffers, float elapsed_seconds)
@@ -123,12 +132,6 @@ class SimpleSolver : public Solver {
}
}
- BLI_NOINLINE void step_block(MyState &state, ParticlesBlock *block, float elapsed_seconds)
- {
- AttributeArrays slice = block->slice_active();
- this->step_slice(state, slice, elapsed_seconds);
- }
-
BLI_NOINLINE void compute_combined_force(AttributeArrays &slice, ArrayRef<float3> dst)
{
BLI_assert(slice.size() == dst.size());
@@ -138,6 +141,22 @@ class SimpleSolver : public Solver {
}
}
+ BLI_NOINLINE void step_new_particles(AttributeArrays &slice, MyState &state)
+ {
+ auto positions = slice.get_float3("Position");
+ auto velocities = slice.get_float3("Velocity");
+ auto birth_times = slice.get_float("Birth Time");
+
+ SmallVector<float3> combined_force(slice.size());
+ this->compute_combined_force(slice, combined_force);
+
+ for (uint i = 0; i < slice.size(); i++) {
+ float seconds_since_birth = state.seconds_since_start - birth_times[i];
+ positions[i] += velocities[i] * seconds_since_birth;
+ velocities[i] += combined_force[i] * seconds_since_birth;
+ }
+ }
+
BLI_NOINLINE void delete_dead_particles(ParticlesBlock *block)
{
auto kill_states = block->slice_active().get_byte("Kill State");
@@ -221,24 +240,8 @@ class SimpleSolver : public Solver {
}
}
- void step(WrappedState &wrapped_state, float elapsed_seconds) override
- {
- MyState &state = wrapped_state.state<MyState>();
- state.seconds_since_start += elapsed_seconds;
-
- ParticlesContainer &particles = *state.particles;
-
- for (ParticlesBlock *block : particles.active_blocks()) {
- this->step_block(state, block, elapsed_seconds);
- this->delete_dead_particles(block);
- }
-
- this->emit_new_particles(state, elapsed_seconds);
- this->compress_all_blocks(particles);
-
- std::cout << "Particle Amount: " << this->particle_amount(wrapped_state) << "\n";
- std::cout << "Block amount: " << particles.active_blocks().size() << "\n";
- }
+ /* Access data from the outside.
+ *********************************************/
uint particle_amount(WrappedState &wrapped_state) override
{
More information about the Bf-blender-cvs
mailing list