[Bf-blender-cvs] [bc9d51d048e] functions: expose collision normal in new Collision Info node

Jacques Lucke noreply at git.blender.org
Wed Jul 24 19:11:42 CEST 2019


Commit: bc9d51d048e914706a99773828eef54ac7f52000
Author: Jacques Lucke
Date:   Wed Jul 24 13:33:12 2019 +0200
Branches: functions
https://developer.blender.org/rBbc9d51d048e914706a99773828eef54ac7f52000

expose collision normal in new Collision Info node

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

A	release/scripts/startup/nodes/bparticle_nodes/collision_info.py
M	release/scripts/startup/nodes/bparticle_nodes/mesh_collision_event.py
M	source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp
M	source/blender/simulations/bparticles/events.cpp
M	source/blender/simulations/bparticles/events.hpp
M	source/blender/simulations/bparticles/inserters.cpp

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

diff --git a/release/scripts/startup/nodes/bparticle_nodes/collision_info.py b/release/scripts/startup/nodes/bparticle_nodes/collision_info.py
new file mode 100644
index 00000000000..e59abe38014
--- /dev/null
+++ b/release/scripts/startup/nodes/bparticle_nodes/collision_info.py
@@ -0,0 +1,11 @@
+import bpy
+from bpy.props import *
+from .. base import BParticlesNode
+from .. node_builder import NodeBuilder
+
+class CollisionInfoNode(bpy.types.Node, BParticlesNode):
+    bl_idname = "bp_CollisionInfoNode"
+    bl_label = "Collision Info"
+
+    def declaration(self, builder : NodeBuilder):
+        builder.fixed_output("normal", "Normal", "Vector")
diff --git a/release/scripts/startup/nodes/bparticle_nodes/mesh_collision_event.py b/release/scripts/startup/nodes/bparticle_nodes/mesh_collision_event.py
index 0846161ada0..071dc6c0558 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/mesh_collision_event.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/mesh_collision_event.py
@@ -15,7 +15,6 @@ class MeshCollisionEventNode(bpy.types.Node, BParticlesNode):
     def declaration(self, builder : NodeBuilder):
         builder.event_input("event", "Event")
         builder.control_flow_output("on_event", "On event")
-        builder.fixed_output("normal", "Normal", "Vector")
 
     def draw(self, layout):
         layout.prop(self, "object", text="")
diff --git a/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp b/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp
index cbdf0364373..a62d0950049 100644
--- a/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/inserters/nodes.cpp
@@ -256,7 +256,7 @@ static void INSERT_separate_vector(BTreeGraphBuilder &builder, VirtualNode *vnod
   SharedFunction fn = get_vectorized_function(
       Functions::GET_FN_separate_vector(),
       rna,
-      {{"use_list__vector", Functions::GET_FN_output_float_0()}});
+      {{"use_list__vector", Functions::GET_FN_output_float3_0()}});
   builder.insert_matching_function(fn, vnode);
 }
 
diff --git a/source/blender/simulations/bparticles/events.cpp b/source/blender/simulations/bparticles/events.cpp
index 10e17b48fe1..4e2db171572 100644
--- a/source/blender/simulations/bparticles/events.cpp
+++ b/source/blender/simulations/bparticles/events.cpp
@@ -2,6 +2,9 @@
 
 namespace BParticles {
 
+/* Age Reached Event
+ ******************************************/
+
 void AgeReachedEvent::attributes(AttributesDeclaration &builder)
 {
   builder.add_byte(m_identifier, 0);
@@ -57,6 +60,9 @@ void AgeReachedEvent::execute(EventExecuteInterface &interface)
   ActionInterface::RunFromEvent(m_action, interface);
 }
 
+/* Collision Event
+ ***********************************************/
+
 void MeshCollisionEvent::attributes(AttributesDeclaration &builder)
 {
   builder.add_float(m_identifier, 0.0f);
diff --git a/source/blender/simulations/bparticles/events.hpp b/source/blender/simulations/bparticles/events.hpp
index 473c6ac4178..1ef7675d1ab 100644
--- a/source/blender/simulations/bparticles/events.hpp
+++ b/source/blender/simulations/bparticles/events.hpp
@@ -48,9 +48,12 @@ class CollisionEventInfo : public EventInfo {
   {
   }
 
-  void *get_info_array(StringRef UNUSED(name)) override
+  void *get_info_array(StringRef name) override
   {
-    return (void *)m_normals.begin();
+    if (name == "Normal") {
+      return (void *)m_normals.begin();
+    }
+    return nullptr;
   }
 };
 
diff --git a/source/blender/simulations/bparticles/inserters.cpp b/source/blender/simulations/bparticles/inserters.cpp
index 2ad0e8c6664..b4fd2a0d75d 100644
--- a/source/blender/simulations/bparticles/inserters.cpp
+++ b/source/blender/simulations/bparticles/inserters.cpp
@@ -122,7 +122,7 @@ static ValueOrError<SharedFunction> create_function__action_inputs(VirtualNode *
     if (STREQ(vnode->idname(), "bp_ParticleInfoNode")) {
       name_prefix = "Attribute: ";
     }
-    else if (STREQ(vnode->idname(), "bp_MeshCollisionEventNode")) {
+    else if (STREQ(vnode->idname(), "bp_CollisionInfoNode")) {
       name_prefix = "Event: ";
     }
     else {



More information about the Bf-blender-cvs mailing list