[Bf-blender-cvs] [0b3ff01ba4b] functions: bring back some emitter settings
Jacques Lucke
noreply at git.blender.org
Mon Jul 15 18:12:36 CEST 2019
Commit: 0b3ff01ba4b0e6dbf5c7781cc5aa0442f8090d21
Author: Jacques Lucke
Date: Mon Jul 15 15:23:20 2019 +0200
Branches: functions
https://developer.blender.org/rB0b3ff01ba4b0e6dbf5c7781cc5aa0442f8090d21
bring back some emitter settings
===================================================================
M source/blender/simulations/bparticles/emitters.cpp
M source/blender/simulations/bparticles/emitters.hpp
M source/blender/simulations/bparticles/inserters.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/emitters.cpp b/source/blender/simulations/bparticles/emitters.cpp
index be901497cf6..919c5eaf636 100644
--- a/source/blender/simulations/bparticles/emitters.cpp
+++ b/source/blender/simulations/bparticles/emitters.cpp
@@ -102,9 +102,9 @@ void SurfaceEmitter::emit(EmitterInterface &interface)
float3 emitter_velocity = (point_at_birth - point_before_birth) / epsilon;
positions.append(point_at_birth);
- velocities.append(normal_velocity + emitter_velocity);
+ velocities.append(normal_velocity * m_normal_velocity + emitter_velocity * m_emitter_velocity);
birth_times.append(interface.time_span().interpolate(birth_moment));
- sizes.append(0.1f);
+ sizes.append(m_size);
}
auto target = interface.particle_allocator().request(m_particle_type_name, positions.size());
diff --git a/source/blender/simulations/bparticles/emitters.hpp b/source/blender/simulations/bparticles/emitters.hpp
index a88cb2efa62..f95d1c55407 100644
--- a/source/blender/simulations/bparticles/emitters.hpp
+++ b/source/blender/simulations/bparticles/emitters.hpp
@@ -14,9 +14,13 @@ using FN::TupleCallBody;
struct SurfaceEmitter : public Emitter {
std::string m_particle_type_name;
std::unique_ptr<Action> m_action;
+
Object *m_object;
float4x4 m_transform_start, m_transform_end;
float m_rate;
+ float m_normal_velocity;
+ float m_emitter_velocity;
+ float m_size;
void emit(EmitterInterface &interface) override;
};
diff --git a/source/blender/simulations/bparticles/inserters.cpp b/source/blender/simulations/bparticles/inserters.cpp
index 294aab2013d..fa4f59aeec0 100644
--- a/source/blender/simulations/bparticles/inserters.cpp
+++ b/source/blender/simulations/bparticles/inserters.cpp
@@ -236,11 +236,17 @@ static std::unique_ptr<Emitter> BUILD_EMITTER_mesh_surface(BuildContext &ctx,
auto emitter = std::unique_ptr<SurfaceEmitter>(new SurfaceEmitter());
emitter->m_action = build_action(ctx, {bSocketList(bnode->outputs).get(0), bnode});
emitter->m_particle_type_name = particle_type_name.to_std_string();
+
emitter->m_object = fn_out.get<Object *>(0);
emitter->m_rate = fn_out.get<float>(1);
+ emitter->m_normal_velocity = fn_out.get<float>(2);
+ emitter->m_emitter_velocity = fn_out.get<float>(3);
+ emitter->m_size = fn_out.get<float>(4);
+
emitter->m_transform_end = emitter->m_object->obmat;
emitter->m_transform_start = ctx.world_state.get_last_and_store_current(
bnode->name, emitter->m_transform_end);
+
return emitter;
}
More information about the Bf-blender-cvs
mailing list