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);
                        }
                }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to