[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