[Bf-blender-cvs] [aa10876c62b] functions: vectorize surface hook nodes
Jacques Lucke
noreply at git.blender.org
Wed Dec 11 12:19:06 CET 2019
Commit: aa10876c62b12e86dd3f599c6b59a850efe1c67c
Author: Jacques Lucke
Date: Wed Dec 11 12:18:56 2019 +0100
Branches: functions
https://developer.blender.org/rBaa10876c62b12e86dd3f599c6b59a850efe1c67c
vectorize surface hook nodes
===================================================================
M release/scripts/startup/nodes/function_nodes/object_mesh.py
M source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
===================================================================
diff --git a/release/scripts/startup/nodes/function_nodes/object_mesh.py b/release/scripts/startup/nodes/function_nodes/object_mesh.py
index 358181e656a..7be0c3e4244 100644
--- a/release/scripts/startup/nodes/function_nodes/object_mesh.py
+++ b/release/scripts/startup/nodes/function_nodes/object_mesh.py
@@ -24,28 +24,35 @@ class ClosestLocationOnObjectNode(bpy.types.Node, FunctionNode):
bl_idname = "fn_ClosestLocationOnObjectNode"
bl_label = "Closest Location on Object"
- def declaration(self, builder):
- builder.fixed_input("object", "Object", "Object")
- builder.fixed_input("position", "Position", "Vector")
- builder.fixed_output("closest_hook", "Closest Hook", "Surface Hook")
+ use_list__object: NodeBuilder.VectorizedProperty()
+ use_list__position: NodeBuilder.VectorizedProperty()
+
+ def declaration(self, builder: NodeBuilder):
+ builder.vectorized_input("object", "use_list__object", "Object", "Objects", "Object")
+ builder.vectorized_input("position", "use_list__position", "Position", "Positions", "Vector")
+ builder.vectorized_output("closest_hook", ["use_list__object", "use_list__position"], "Closest Hook", "Closest Hooks", "Surface Hook")
class GetPositionOnSurfaceNode(bpy.types.Node, FunctionNode):
bl_idname = "fn_GetPositionOnSurfaceNode"
bl_label = "Get Position on Surface"
- def declaration(self, builder):
- builder.fixed_input("surface_hook", "Surface Hook", "Surface Hook")
- builder.fixed_output("position", "Position", "Vector")
+ use_list__surface_hook: NodeBuilder.VectorizedProperty()
+
+ def declaration(self, builder: NodeBuilder):
+ builder.vectorized_input("surface_hook", "use_list__surface_hook", "Surface Hook", "Surface Hooks", "Surface Hook")
+ builder.vectorized_output("position", ["use_list__surface_hook"], "Position", "Positions", "Vector")
class GetNormalOnSurfaceNode(bpy.types.Node, FunctionNode):
bl_idname = "fn_GetNormalOnSurfaceNode"
bl_label = "Get Normal on Surface"
+ use_list__surface_hook: NodeBuilder.VectorizedProperty()
+
def declaration(self, builder):
- builder.fixed_input("surface_hook", "Surface Hook", "Surface Hook")
- builder.fixed_output("normal", "Normal", "Vector")
+ builder.vectorized_input("surface_hook", "use_list__surface_hook", "Surface Hook", "Surface Hooks", "Surface Hook")
+ builder.vectorized_output("normal", ["use_list__surface_hook"], "Normal", "Normals", "Vector")
class GetWeightOnSurfaceNode(bpy.types.Node, FunctionNode):
@@ -57,10 +64,12 @@ class GetWeightOnSurfaceNode(bpy.types.Node, FunctionNode):
default="Group",
)
+ use_list__surface_hook: NodeBuilder.VectorizedProperty()
+
def declaration(self, builder):
- builder.fixed_input("surface_hook", "Surface Hook", "Surface Hook")
- builder.fixed_output("weight", "Weight", "Float")
-
+ builder.vectorized_input("surface_hook", "use_list__surface_hook", "Surface Hook", "Surface Hooks", "Surface Hook")
+ builder.vectorized_output("weight", ["use_list__surface_hook"], "Weight", "Weights", "Float")
+
def draw(self, layout):
layout.prop(self, "vertex_group_name", text="", icon="GROUP_VERTEX")
@@ -74,9 +83,11 @@ class GetImageColorOnSurfaceNode(bpy.types.Node, FunctionNode):
type=bpy.types.Image,
)
+ use_list__surface_hook: NodeBuilder.VectorizedProperty()
+
def declaration(self, builder: NodeBuilder):
- builder.fixed_input("surface_hook", "Surface Hook", "Surface Hook")
- builder.fixed_output("color", "Color", "Color")
+ builder.vectorized_input("surface_hook", "use_list__surface_hook", "Surface Hook", "Surface Hooks", "Surface Hook")
+ builder.vectorized_output("color", ["use_list__surface_hook"], "Color", "Colors", "Color")
def draw(self, layout):
- layout.prop(self, "image", text="")
\ No newline at end of file
+ layout.prop(self, "image", text="")
diff --git a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
index b634e330f4e..efa3627ca6b 100644
--- a/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions/intern/inlined_tree_multi_function_network/mappings_nodes.cc
@@ -64,24 +64,28 @@ static void INSERT_object_mesh_info(VNodeMFNetworkBuilder &builder)
static void INSERT_get_position_on_surface(VNodeMFNetworkBuilder &builder)
{
- builder.set_constructed_matching_fn<MF_GetPositionOnSurface>();
+ builder.set_vectorized_constructed_matching_fn<MF_GetPositionOnSurface>(
+ {"use_list__surface_hook"});
}
static void INSERT_get_normal_on_surface(VNodeMFNetworkBuilder &builder)
{
- builder.set_constructed_matching_fn<MF_GetNormalOnSurface>();
+ builder.set_vectorized_constructed_matching_fn<MF_GetNormalOnSurface>(
+ {"use_list__surface_hook"});
}
static void INSERT_get_weight_on_surface(VNodeMFNetworkBuilder &builder)
{
std::string group_name = builder.string_from_property("vertex_group_name");
- builder.set_constructed_matching_fn<MF_GetWeightOnSurface>(std::move(group_name));
+ builder.set_vectorized_constructed_matching_fn<MF_GetWeightOnSurface>({"use_list__surface_hook"},
+ std::move(group_name));
}
static void INSERT_get_image_color_on_surface(VNodeMFNetworkBuilder &builder)
{
Image *image = (Image *)RNA_pointer_get(builder.rna(), "image").data;
- builder.set_constructed_matching_fn<MF_GetImageColorOnSurface>(image);
+ builder.set_vectorized_constructed_matching_fn<MF_GetImageColorOnSurface>(
+ {"use_list__surface_hook"}, image);
}
static void INSERT_particle_is_in_group(VNodeMFNetworkBuilder &builder)
@@ -403,9 +407,10 @@ static void INSERT_get_particle_attribute(VNodeMFNetworkBuilder &builder)
builder.set_constructed_matching_fn<MF_ParticleAttributes>(std::move(name), type);
}
-static void INSERT_closest_location_on_object(VNodeMFNetworkBuilder &builder)
+static void INSERT_closest_surface_hook_on_object(VNodeMFNetworkBuilder &builder)
{
- builder.set_constructed_matching_fn<MF_ClosestSurfaceHookOnObject>();
+ builder.set_vectorized_constructed_matching_fn<MF_ClosestSurfaceHookOnObject>(
+ {"use_list__object", "use_list__position"});
}
static void INSERT_clamp_float(VNodeMFNetworkBuilder &builder)
@@ -466,7 +471,7 @@ void add_inlined_tree_node_mapping_info(VTreeMultiFunctionMappings &mappings)
mappings.xnode_inserters.add_new("fn_ParticleInfoNode", INSERT_particle_info);
mappings.xnode_inserters.add_new("fn_GetParticleAttributeNode", INSERT_get_particle_attribute);
mappings.xnode_inserters.add_new("fn_ClosestLocationOnObjectNode",
- INSERT_closest_location_on_object);
+ INSERT_closest_surface_hook_on_object);
mappings.xnode_inserters.add_new("fn_MapRangeNode", INSERT_map_range);
mappings.xnode_inserters.add_new("fn_FloatClampNode", INSERT_clamp_float);
mappings.xnode_inserters.add_new("fn_RandomFloatNode", INSERT_random_float);
More information about the Bf-blender-cvs
mailing list