[Bf-blender-cvs] [06565e21eab] functions: use action context in mesh emitter

Jacques Lucke noreply at git.blender.org
Mon Sep 2 12:32:12 CEST 2019


Commit: 06565e21eaba7d2a3b4c2bdae7f2b2a88fa5c619
Author: Jacques Lucke
Date:   Mon Sep 2 12:31:49 2019 +0200
Branches: functions
https://developer.blender.org/rB06565e21eaba7d2a3b4c2bdae7f2b2a88fa5c619

use action context in mesh emitter

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

M	source/blender/simulations/bparticles/emitters.cpp

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

diff --git a/source/blender/simulations/bparticles/emitters.cpp b/source/blender/simulations/bparticles/emitters.cpp
index de3ad32d366..152654cc845 100644
--- a/source/blender/simulations/bparticles/emitters.cpp
+++ b/source/blender/simulations/bparticles/emitters.cpp
@@ -13,6 +13,7 @@
 #include "FN_types.hpp"
 
 #include "emitters.hpp"
+#include "action_contexts.hpp"
 
 namespace BParticles {
 
@@ -301,8 +302,8 @@ void SurfaceEmitter::emit(EmitterInterface &interface)
   TemporaryArray<float3> positions_before_birth(particles_to_emit);
   float4x4::transform_positions(transforms_before_birth, local_positions, positions_before_birth);
 
-  TemporaryArray<float3> normals(particles_to_emit);
-  float4x4::transform_directions(transforms_at_birth, local_normals, normals);
+  TemporaryArray<float3> world_normals(particles_to_emit);
+  float4x4::transform_directions(transforms_at_birth, local_normals, world_normals);
 
   TemporaryArray<float> sizes(particles_to_emit);
   sizes.fill(m_size);
@@ -316,7 +317,7 @@ void SurfaceEmitter::emit(EmitterInterface &interface)
     float3 point_at_birth = positions_at_birth[i];
     float3 point_before_birth = positions_before_birth[i];
 
-    float3 normal_velocity = normals[i];
+    float3 normal_velocity = world_normals[i];
     float3 emitter_velocity = (point_at_birth - point_before_birth) / epsilon;
 
     velocities[i] = normal_velocity * m_normal_velocity + emitter_velocity * m_emitter_velocity;
@@ -330,7 +331,14 @@ void SurfaceEmitter::emit(EmitterInterface &interface)
     new_particles.set<float>("Size", sizes);
     new_particles.set<float>("Birth Time", birth_times);
 
-    m_on_birth_action->execute_from_emitter(new_particles, interface);
+    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);
   }
 }



More information about the Bf-blender-cvs mailing list