[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