[Bf-blender-cvs] [0d75164] object_nodes: Test of node conversion from bNodes to internal instruction graph.

Lukas Tönne noreply at git.blender.org
Tue Nov 24 09:43:05 CET 2015


Commit: 0d751648f804b5799b5ae09480d9947538eba084
Author: Lukas Tönne
Date:   Mon Oct 19 12:16:48 2015 +0200
Branches: object_nodes
https://developer.blender.org/rB0d751648f804b5799b5ae09480d9947538eba084

Test of node conversion from bNodes to internal instruction graph.

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

M	release/scripts/startup/bl_operators/object_nodes.py
M	source/blender/blenvm/intern/bvm_api.cc

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

diff --git a/release/scripts/startup/bl_operators/object_nodes.py b/release/scripts/startup/bl_operators/object_nodes.py
index 689ff96..e5dd897 100644
--- a/release/scripts/startup/bl_operators/object_nodes.py
+++ b/release/scripts/startup/bl_operators/object_nodes.py
@@ -42,8 +42,8 @@ node_categories = [
     ObjectNodeCategory("COMPONENTS", "Components", items=[
         NodeItem("ForceFieldNode"),
         ]),
-    ForceFieldNodeCategory("FORCE_FIELD", "Force Field", items=[
-        NodeItem("ForceForceNode"),
+    ForceFieldNodeCategory("FORCE_OUTPUT", "Output", items=[
+        NodeItem("ForceOutputNode"),
         ]),
     ]
 
@@ -104,14 +104,15 @@ class ForceNodeBase():
         return ntree.bl_idname == 'ForceFieldNodeTree'
 
 
-class ForceForceNode(ForceNodeBase, ObjectNode):
-    '''Force'''
-    bl_idname = 'ForceForceNode'
-    bl_label = 'Force'
+class ForceOutputNode(ForceNodeBase, ObjectNode):
+    '''Force Output'''
+    bl_idname = 'ForceOutputNode'
+    bl_label = 'Output'
     bl_icon = 'FORCE_FORCE'
 
     def init(self, context):
-        self.inputs.new('NodeSocketFloat', "Strength")
+        self.inputs.new('NodeSocketVector', "Force")
+        self.inputs.new('NodeSocketVector', "Impulse")
 
 ###############################################################################
 
diff --git a/source/blender/blenvm/intern/bvm_api.cc b/source/blender/blenvm/intern/bvm_api.cc
index db657fc..e43eebf 100644
--- a/source/blender/blenvm/intern/bvm_api.cc
+++ b/source/blender/blenvm/intern/bvm_api.cc
@@ -33,6 +33,7 @@
 
 extern "C" {
 #include "BLI_utildefines.h"
+#include "BLI_listbase.h"
 
 #include "DNA_node_types.h"
 
@@ -119,14 +120,38 @@ static void gen_forcefield_nodegraph(bNodeTree *btree, bvm::NodeGraph &graph)
 		graph.add_output("impulse", BVM_FLOAT3, zero);
 	}
 	
-#if 0
+#if 1
 	for (bNode *bnode = (bNode*)btree->nodes.first; bnode; bnode = bnode->next) {
 		BLI_assert(bnode->typeinfo != NULL);
 		if (!nodeIsRegistered(bnode))
 			continue;
 		
 		const char *type = bnode->typeinfo->idname;
+#if 0
 		/*NodeInstance *node =*/ graph.add_node(type, bnode->name);
+#else
+		if (bvm::string(type) == "ForceOutputNode") {
+			{
+				bvm::NodeInstance *node = graph.add_node("PASS_FLOAT3", "RET_FORCE_" + bvm::string(bnode->name));
+				
+				bNodeSocket *binput = (bNodeSocket *)BLI_findlink(&bnode->inputs, 0);
+				bNodeSocketValueVector *bvalue = (bNodeSocketValueVector *)binput->default_value;
+				node->set_input_value("value", bvm::float3(bvalue->value[0], bvalue->value[1], bvalue->value[2]));
+				
+				graph.set_output_link("force", node, "value");
+			}
+			
+			{
+				bvm::NodeInstance *node = graph.add_node("PASS_FLOAT3", "RET_IMPULSE_" + bvm::string(bnode->name));
+				
+				bNodeSocket *binput = (bNodeSocket *)BLI_findlink(&bnode->inputs, 1);
+				bNodeSocketValueVector *bvalue = (bNodeSocketValueVector *)binput->default_value;
+				node->set_input_value("value", bvm::float3(bvalue->value[0], bvalue->value[1], bvalue->value[2]));
+				
+				graph.set_output_link("impulse", node, "value");
+			}
+		}
+#endif
 	}
 	
 	for (bNodeLink *blink = (bNodeLink *)btree->links.first; blink; blink = blink->next) {




More information about the Bf-blender-cvs mailing list