[Bf-blender-cvs] [14125d26526] functions: minor emitter API improvement
Jacques Lucke
noreply at git.blender.org
Tue Jun 18 12:38:57 CEST 2019
Commit: 14125d2652690d34eb135753f3a17e4a53568db2
Author: Jacques Lucke
Date: Tue Jun 18 10:05:16 2019 +0200
Branches: functions
https://developer.blender.org/rB14125d2652690d34eb135753f3a17e4a53568db2
minor emitter API improvement
===================================================================
M source/blender/simulations/bparticles/c_wrapper.cpp
M source/blender/simulations/bparticles/core.hpp
M source/blender/simulations/bparticles/emitter.cpp
===================================================================
diff --git a/source/blender/simulations/bparticles/c_wrapper.cpp b/source/blender/simulations/bparticles/c_wrapper.cpp
index ea752320f9d..5f8451d337a 100644
--- a/source/blender/simulations/bparticles/c_wrapper.cpp
+++ b/source/blender/simulations/bparticles/c_wrapper.cpp
@@ -16,6 +16,7 @@
}
using BParticles::AttributeArrays;
+using BParticles::AttributeType;
using BParticles::Description;
using BParticles::EmitterBuffers;
using BParticles::EmitterInfoBuilder;
@@ -74,8 +75,8 @@ class TestEmitter : public BParticles::Emitter {
public:
void info(EmitterInfoBuilder &builder) const override
{
- builder.inits_float3_attribute("Position");
- builder.inits_float3_attribute("Velocity");
+ builder.inits_attribute("Position", AttributeType::Float3);
+ builder.inits_attribute("Velocity", AttributeType::Float3);
}
void emit(BParticles::RequestEmitterBufferCB request_buffers) override
diff --git a/source/blender/simulations/bparticles/core.hpp b/source/blender/simulations/bparticles/core.hpp
index 148c229d6d0..5aa8c33ccee 100644
--- a/source/blender/simulations/bparticles/core.hpp
+++ b/source/blender/simulations/bparticles/core.hpp
@@ -125,6 +125,7 @@ class EmitterInfo {
class EmitterInfoBuilder {
private:
Emitter *m_emitter;
+ SmallSetVector<std::string> m_used_byte_attributes;
SmallSetVector<std::string> m_used_float_attributes;
SmallSetVector<std::string> m_used_float3_attributes;
@@ -133,19 +134,28 @@ class EmitterInfoBuilder {
{
}
- void inits_float_attribute(StringRef name)
- {
- m_used_float_attributes.add(name.to_std_string());
- }
- void inits_float3_attribute(StringRef name)
+ void inits_attribute(StringRef name, AttributeType type)
{
- m_used_float3_attributes.add(name.to_std_string());
+ switch (type) {
+ case AttributeType::Byte:
+ m_used_byte_attributes.add(name.to_std_string());
+ break;
+ case AttributeType::Float:
+ m_used_float_attributes.add(name.to_std_string());
+ break;
+ case AttributeType::Float3:
+ m_used_float3_attributes.add(name.to_std_string());
+ break;
+ default:
+ BLI_assert(false);
+ }
}
EmitterInfo build()
{
EmitterInfo info;
info.m_emitter = m_emitter;
+ info.m_used_byte_attributes = m_used_byte_attributes;
info.m_used_float_attributes = m_used_float_attributes;
info.m_used_float3_attributes = m_used_float3_attributes;
return info;
diff --git a/source/blender/simulations/bparticles/emitter.cpp b/source/blender/simulations/bparticles/emitter.cpp
index 2ee6e8f9c03..1f5f8b44da0 100644
--- a/source/blender/simulations/bparticles/emitter.cpp
+++ b/source/blender/simulations/bparticles/emitter.cpp
@@ -17,8 +17,8 @@ class PointEmitter : public Emitter {
void info(EmitterInfoBuilder &builder) const override
{
- builder.inits_float3_attribute("Position");
- builder.inits_float3_attribute("Velocity");
+ builder.inits_attribute("Position", AttributeType::Float3);
+ builder.inits_attribute("Velocity", AttributeType::Float3);
}
void emit(RequestEmitterBufferCB request_buffers) override
@@ -44,8 +44,8 @@ class SurfaceEmitter : public Emitter {
void info(EmitterInfoBuilder &builder) const override
{
- builder.inits_float3_attribute("Position");
- builder.inits_float3_attribute("Velocity");
+ builder.inits_attribute("Position", AttributeType::Float3);
+ builder.inits_attribute("Velocity", AttributeType::Float3);
}
void emit(RequestEmitterBufferCB request_buffers) override
More information about the Bf-blender-cvs
mailing list