[Bf-blender-cvs] [7fa6389d62f] functions: Get List Element and Append to List node
Jacques Lucke
noreply at git.blender.org
Sun Mar 10 16:28:45 CET 2019
Commit: 7fa6389d62f32291036efe8383d0383126231335
Author: Jacques Lucke
Date: Sun Mar 10 15:38:11 2019 +0100
Branches: functions
https://developer.blender.org/rB7fa6389d62f32291036efe8383d0383126231335
Get List Element and Append to List node
===================================================================
A release/scripts/startup/function_nodes/nodes/append_to_list.py
A release/scripts/startup/function_nodes/nodes/get_list_element.py
M release/scripts/startup/function_nodes/sockets.py
M source/blender/functions/frontends/data_flow_nodes/test_nodes.cpp
M source/blender/functions/functions/lists.cpp
===================================================================
diff --git a/release/scripts/startup/function_nodes/nodes/append_to_list.py b/release/scripts/startup/function_nodes/nodes/append_to_list.py
new file mode 100644
index 00000000000..8a8031d755c
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/append_to_list.py
@@ -0,0 +1,14 @@
+import bpy
+from .. base import FunctionNode
+
+class AppendToListNode(bpy.types.Node, FunctionNode):
+ bl_idname = "fn_AppendToListNode"
+ bl_label = "Append to List"
+
+ def get_sockets(self):
+ return [
+ ("fn_FloatListSocket", "List"),
+ ("fn_FloatSocket", "Value"),
+ ], [
+ ("fn_FloatListSocket", "List"),
+ ]
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/get_list_element.py b/release/scripts/startup/function_nodes/nodes/get_list_element.py
new file mode 100644
index 00000000000..ea64a6e7792
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/get_list_element.py
@@ -0,0 +1,15 @@
+import bpy
+from .. base import FunctionNode
+
+class GetListElementNode(bpy.types.Node, FunctionNode):
+ bl_idname = "fn_GetListElementNode"
+ bl_label = "Get List Element"
+
+ def get_sockets(self):
+ return [
+ ("fn_FloatListSocket", "List"),
+ ("fn_IntegerSocket", "Index"),
+ ("fn_FloatSocket", "Fallback"),
+ ], [
+ ("fn_FloatSocket", "Value"),
+ ]
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/sockets.py b/release/scripts/startup/function_nodes/sockets.py
index 3d6ab91e94d..d019515b3d0 100644
--- a/release/scripts/startup/function_nodes/sockets.py
+++ b/release/scripts/startup/function_nodes/sockets.py
@@ -41,3 +41,8 @@ class VectorSocket(bpy.types.NodeSocket, DataSocket):
def draw_property(self, layout, node, text):
layout.column().prop(self, "value", text=text)
+
+class FloatListSocket(bpy.types.NodeSocket, DataSocket):
+ bl_idname = "fn_FloatListSocket"
+ bl_label = "Float List Socket"
+ color = (0, 0.3, 0.5, 0.5)
\ No newline at end of file
diff --git a/source/blender/functions/frontends/data_flow_nodes/test_nodes.cpp b/source/blender/functions/frontends/data_flow_nodes/test_nodes.cpp
index 540b470842a..a2e113553ed 100644
--- a/source/blender/functions/frontends/data_flow_nodes/test_nodes.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/test_nodes.cpp
@@ -71,6 +71,26 @@ namespace FN { namespace DataFlowNodes {
builder.map_output(min_node->output(0), bnode, 0);
}
+ static void insert_append_list_node(
+ Builder &builder,
+ const BuilderContext UNUSED(ctx),
+ bNode *bnode)
+ {
+ SharedFunction &append_float = Functions::append_float();
+ Node *node = builder.insert_function(append_float);
+ builder.map_sockets(node, bnode);
+ }
+
+ static void insert_get_list_element_node(
+ Builder &builder,
+ const BuilderContext UNUSED(ctx),
+ bNode *bnode)
+ {
+ SharedFunction &get_float = Functions::get_float_list_element();
+ Node *node = builder.insert_function(get_float);
+ builder.map_sockets(node, bnode);
+ }
+
void register_node_inserters(GraphInserters &inserters)
{
inserters.reg_node_function("fn_CombineVectorNode", Functions::combine_vector);
@@ -78,9 +98,12 @@ namespace FN { namespace DataFlowNodes {
inserters.reg_node_function("fn_VectorDistanceNode", Functions::separate_vector);
inserters.reg_node_function("fn_RandomNumberNode", Functions::random_number);
inserters.reg_node_function("fn_MapRangeNode", Functions::map_range);
+
inserters.reg_node_inserter("fn_ObjectTransformsNode", insert_object_transforms_node);
inserters.reg_node_inserter("fn_FloatMathNode", insert_float_math_node);
inserters.reg_node_inserter("fn_ClampNode", insert_clamp_node);
+ inserters.reg_node_inserter("fn_AppendToListNode", insert_append_list_node);
+ inserters.reg_node_inserter("fn_GetListElementNode", insert_get_list_element_node);
}
} }
\ No newline at end of file
diff --git a/source/blender/functions/functions/lists.cpp b/source/blender/functions/functions/lists.cpp
index aff411ad4ca..d8f50a03659 100644
--- a/source/blender/functions/functions/lists.cpp
+++ b/source/blender/functions/functions/lists.cpp
@@ -30,12 +30,12 @@ namespace FN { namespace Functions {
int32_t index = fn_in.get<int32_t>(1);
if (index >= 0 && index < list->size()) {
- List<T> *list_ = list.ptr();
+ const List<T> *list_ = list.ptr();
T value = (*list_)[index];
fn_out.move_in(0, value);
}
else {
- T fallback = fn_in.relocate_out<T>(0);
+ T fallback = fn_in.relocate_out<T>(2);
fn_out.move_in(0, fallback);
}
}
More information about the Bf-blender-cvs
mailing list