[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