[Bf-blender-cvs] [49b6e1dccf1] functions: abstract mesh surface action context

Jacques Lucke noreply at git.blender.org
Mon Sep 2 15:40:25 CEST 2019


Commit: 49b6e1dccf1378555754986255d8eacf62e6b3ce
Author: Jacques Lucke
Date:   Mon Sep 2 15:13:49 2019 +0200
Branches: functions
https://developer.blender.org/rB49b6e1dccf1378555754986255d8eacf62e6b3ce

abstract mesh surface action context

===================================================================

M	source/blender/simulations/bparticles/action_contexts.hpp
M	source/blender/simulations/bparticles/emitters.cpp
M	source/blender/simulations/bparticles/events.cpp

===================================================================

diff --git a/source/blender/simulations/bparticles/action_contexts.hpp b/source/blender/simulations/bparticles/action_contexts.hpp
index 8c9dfbd3bb9..318b0556113 100644
--- a/source/blender/simulations/bparticles/action_contexts.hpp
+++ b/source/blender/simulations/bparticles/action_contexts.hpp
@@ -7,6 +7,16 @@ struct Object;
 namespace BParticles {
 
 class MeshSurfaceActionContext : public ActionContext {
+ public:
+  virtual const Object *object() const = 0;
+  virtual ArrayRef<float4x4> world_transforms() const = 0;
+  virtual ArrayRef<float3> local_positions() const = 0;
+  virtual ArrayRef<float3> local_normals() const = 0;
+  virtual ArrayRef<float3> world_normals() const = 0;
+  virtual ArrayRef<uint> looptri_indices() const = 0;
+};
+
+class MeshCollisionContext : public MeshSurfaceActionContext {
  private:
   Object *m_object;
   ArrayRef<float4x4> m_world_transforms;
@@ -16,12 +26,12 @@ class MeshSurfaceActionContext : public ActionContext {
   ArrayRef<uint> m_looptri_indices;
 
  public:
-  MeshSurfaceActionContext(Object *object,
-                           ArrayRef<float4x4> world_transforms,
-                           ArrayRef<float3> local_positions,
-                           ArrayRef<float3> local_normals,
-                           ArrayRef<float3> world_normals,
-                           ArrayRef<uint> looptri_indices)
+  MeshCollisionContext(Object *object,
+                       ArrayRef<float4x4> world_transforms,
+                       ArrayRef<float3> local_positions,
+                       ArrayRef<float3> local_normals,
+                       ArrayRef<float3> world_normals,
+                       ArrayRef<uint> looptri_indices)
       : m_object(object),
         m_world_transforms(world_transforms),
         m_local_positions(local_positions),
@@ -31,32 +41,32 @@ class MeshSurfaceActionContext : public ActionContext {
   {
   }
 
-  const Object *object() const
+  const Object *object() const override
   {
     return m_object;
   }
 
-  ArrayRef<float4x4> world_transforms() const
+  ArrayRef<float4x4> world_transforms() const override
   {
     return m_world_transforms;
   }
 
-  ArrayRef<float3> local_positions() const
+  ArrayRef<float3> local_positions() const override
   {
     return m_local_positions;
   }
 
-  ArrayRef<float3> local_normals() const
+  ArrayRef<float3> local_normals() const override
   {
     return m_local_normals;
   }
 
-  ArrayRef<float3> world_normals() const
+  ArrayRef<float3> world_normals() const override
   {
     return m_world_normals;
   }
 
-  ArrayRef<uint> looptri_indices() const
+  ArrayRef<uint> looptri_indices() const override
   {
     return m_looptri_indices;
   }
diff --git a/source/blender/simulations/bparticles/emitters.cpp b/source/blender/simulations/bparticles/emitters.cpp
index 152654cc845..0da811e6dbf 100644
--- a/source/blender/simulations/bparticles/emitters.cpp
+++ b/source/blender/simulations/bparticles/emitters.cpp
@@ -331,14 +331,14 @@ void SurfaceEmitter::emit(EmitterInterface &interface)
     new_particles.set<float>("Size", sizes);
     new_particles.set<float>("Birth Time", birth_times);
 
-    MeshSurfaceActionContext action_context(m_object,
-                                            transforms_at_birth,
-                                            local_positions,
-                                            local_normals,
-                                            world_normals,
-                                            triangles_to_sample);
-
-    m_on_birth_action->execute_from_emitter(new_particles, interface, &action_context);
+    // MeshSurfaceActionContext action_context(m_object,
+    //                                         transforms_at_birth,
+    //                                         local_positions,
+    //                                         local_normals,
+    //                                         world_normals,
+    //                                         triangles_to_sample);
+
+    m_on_birth_action->execute_from_emitter(new_particles, interface);
   }
 }
 
diff --git a/source/blender/simulations/bparticles/events.cpp b/source/blender/simulations/bparticles/events.cpp
index a4090600f6a..eedab18a9ed 100644
--- a/source/blender/simulations/bparticles/events.cpp
+++ b/source/blender/simulations/bparticles/events.cpp
@@ -146,7 +146,7 @@ void MeshCollisionEvent::execute(EventExecuteInterface &interface)
     last_collision_times[pindex] = interface.current_times()[pindex];
   }
 
-  MeshSurfaceActionContext action_context(
+  MeshCollisionContext action_context(
       m_object, world_transforms, local_positions, local_normals, world_normals, looptri_indices);
 
   m_action->execute_from_event(interface, &action_context);



More information about the Bf-blender-cvs mailing list