Commit: c9a9e8670be09ddcc2868b838cc9fbcf0b8e551c
Author: Jacques Lucke
Date:   Fri Feb 22 14:28:33 2019 +0100
Branches: functions
https://developer.blender.org/rBc9a9e8670be09ddcc2868b838cc9fbcf0b8e551c

pass index to function in displace modifier

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

M       release/scripts/startup/function_nodes/menu.py
M       release/scripts/startup/function_nodes/nodes/__init__.py
A       release/scripts/startup/function_nodes/nodes/random_number.py
M       source/blender/functions/nodes/nodes.cpp
M       source/blender/modifiers/intern/MOD_displace.c

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

diff --git a/release/scripts/startup/function_nodes/menu.py 
b/release/scripts/startup/function_nodes/menu.py
index 1d98803309b..ccc33a89e4b 100644
--- a/release/scripts/startup/function_nodes/menu.py
+++ b/release/scripts/startup/function_nodes/menu.py
@@ -17,6 +17,7 @@ def draw_menu(self, context):
     insert_node(layout, "fn_SeparateVectorNode", "Separate Vector")
     insert_node(layout, "fn_VectorDistanceNode", "Vector Distance")
     insert_node(layout, "fn_ClampNode", "Clamp")
+    insert_node(layout, "fn_RandomNumberNode", "Random Number")
     insert_node(layout, "fn_ObjectTransformsNode", "Object Transforms")
 
 def insert_node(layout, type, text, settings = {}, icon = "NONE"):
diff --git a/release/scripts/startup/function_nodes/nodes/__init__.py 
b/release/scripts/startup/function_nodes/nodes/__init__.py
index 7be89bc2b39..67de0140269 100644
--- a/release/scripts/startup/function_nodes/nodes/__init__.py
+++ b/release/scripts/startup/function_nodes/nodes/__init__.py
@@ -8,4 +8,5 @@ from . import (
     object_transforms,
     vector_distance,
     clamp,
+    random_number,
 )
\ No newline at end of file
diff --git a/release/scripts/startup/function_nodes/nodes/random_number.py 
b/release/scripts/startup/function_nodes/nodes/random_number.py
new file mode 100644
index 00000000000..868098f485b
--- /dev/null
+++ b/release/scripts/startup/function_nodes/nodes/random_number.py
@@ -0,0 +1,17 @@
+import bpy
+from .. base import FunctionNode
+
+class RandomNumberNode(bpy.types.Node, FunctionNode):
+    bl_idname = "fn_RandomNumberNode"
+    bl_label = "Random Number"
+
+    def get_sockets(self):
+        return [
+            ("fn_IntegerSocket", "Seed"),
+            ("fn_FloatSocket", "Min"),
+            ("fn_FloatSocket", "Max"),
+        ], [
+            ("fn_FloatSocket", "Value"),
+        ]
+
+bpy.utils.register_class(RandomNumberNode)
\ No newline at end of file
diff --git a/source/blender/functions/nodes/nodes.cpp 
b/source/blender/functions/nodes/nodes.cpp
index 87ca7b4b204..df4012eedf4 100644
--- a/source/blender/functions/nodes/nodes.cpp
+++ b/source/blender/functions/nodes/nodes.cpp
@@ -13,7 +13,8 @@ namespace FN { namespace Nodes {
 
        InsertNode get_node_inserter(const std::string &name)
        {
-               return node_inserters.lookup_default(name, nullptr);
+               BLI_assert(node_inserters.contains(name));
+               return node_inserters.lookup(name);
        }
 
        InsertSocket get_socket_inserter(const std::string &name)
diff --git a/source/blender/modifiers/intern/MOD_displace.c 
b/source/blender/modifiers/intern/MOD_displace.c
index 54f61ecd161..8abb1683d76 100644
--- a/source/blender/modifiers/intern/MOD_displace.c
+++ b/source/blender/modifiers/intern/MOD_displace.c
@@ -72,9 +72,10 @@ static FnFunction getCurrentFunction(DisplaceModifierData 
*dmd)
        bNodeTree *tree = (bNodeTree *)DEG_get_original_id((ID 
*)dmd->function_tree);
 
        FnType float_ty = FN_type_borrow_float();
+       FnType int32_ty = FN_type_borrow_int32();
        FnType fvec3_ty = FN_type_borrow_fvec3();
 
-       FnType inputs[] = { fvec3_ty, NULL };
+       FnType inputs[] = { fvec3_ty, int32_ty, NULL };
        FnType outputs[] = { float_ty, NULL };
 
        return FN_function_get_with_signature(tree, inputs, outputs);
@@ -220,6 +221,7 @@ static void displaceModifier_do_task(
                FnTuple fn_in = FN_tuple_for_input(data->calc_weight_func);
                FnTuple fn_out = FN_tuple_for_output(data->calc_weight_func);
                FN_tuple_set_float_vector_3(fn_in, 0, vertexCos[iter]);
+               FN_tuple_set_int32(fn_in, 1, iter);
                FnTupleCallBody callable = 
FN_function_get_callable(data->calc_weight_func);
                FN_function_call(callable, fn_in, fn_out);
                weight = FN_tuple_get_float(fn_out, 0);

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

Reply via email to