[Bf-blender-cvs] [0842654] object_nodes: Moved type conversion utility functions to the common_node module.

Lukas Tönne noreply at git.blender.org
Sun Dec 6 13:44:39 CET 2015


Commit: 084265454e178ee3d76d8abda161ba0a9448a18d
Author: Lukas Tönne
Date:   Sun Dec 6 11:37:43 2015 +0100
Branches: object_nodes
https://developer.blender.org/rB084265454e178ee3d76d8abda161ba0a9448a18d

Moved type conversion utility functions to the common_node module.

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

M	release/scripts/nodes/common_nodes.py
M	release/scripts/nodes/group_nodes.py

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

diff --git a/release/scripts/nodes/common_nodes.py b/release/scripts/nodes/common_nodes.py
index 126562e..e5ef476 100644
--- a/release/scripts/nodes/common_nodes.py
+++ b/release/scripts/nodes/common_nodes.py
@@ -24,20 +24,38 @@ from bpy.types import Operator, ObjectNode, NodeTree, Node, NodeSocket
 from bpy.props import *
 from node_compiler import NodeCompiler, NodeWrapper, InputWrapper, OutputWrapper, StringDict
 
+bvm_type_items = [
+    ("FLOAT", "Float", "Floating point number", 0, 0),
+    ("INT", "Int", "Integer number", 0, 1),
+    ("VECTOR", "Vector", "3D vector", 0, 2),
+    ("COLOR", "Color", "RGBA color", 0, 3),
+    ("MESH", "Mesh", "Mesh data", 0, 4),
+    ]
+
+def bvm_type_to_socket(base_type):
+    types = {
+        "FLOAT" : bpy.types.NodeSocketFloat,
+        "INT" : bpy.types.NodeSocketInt,
+        "VECTOR" : bpy.types.NodeSocketVector,
+        "COLOR" : bpy.types.NodeSocketColor,
+        "MESH" : bpy.types.GeometrySocket,
+        }
+    return types.get(base_type, None)
+
+def socket_type_to_bvm(socket):
+    if isinstance(socket, bpy.types.NodeSocketFloat):
+        return 'FLOAT'
+    elif isinstance(socket, bpy.types.NodeSocketVector):
+        return 'FLOAT3'
+    elif isinstance(socket, bpy.types.NodeSocketColor):
+        return 'FLOAT4'
+    elif isinstance(socket, bpy.types.NodeSocketInt):
+        return 'INT'
+    elif isinstance(socket, bpy.types.GeometrySocket):
+        return 'MESH'
+
 class NodeTreeBase():
     def bvm_compile(self, context, graph):
-        def socket_type_to_bvm(socket):
-            if isinstance(socket, bpy.types.NodeSocketFloat):
-                return 'FLOAT'
-            elif isinstance(socket, bpy.types.NodeSocketVector):
-                return 'FLOAT3'
-            elif isinstance(socket, bpy.types.NodeSocketColor):
-                return 'FLOAT4'
-            elif isinstance(socket, bpy.types.NodeSocketInt):
-                return 'INT'
-            elif isinstance(socket, bpy.types.GeometrySocket):
-                return 'MESH'
-
         comp = NodeCompiler(context, graph)
 
         input_map = dict()
diff --git a/release/scripts/nodes/group_nodes.py b/release/scripts/nodes/group_nodes.py
index 821c434..61d1ed6 100644
--- a/release/scripts/nodes/group_nodes.py
+++ b/release/scripts/nodes/group_nodes.py
@@ -22,33 +22,16 @@ import bpy
 import nodeitems_utils
 from bpy.types import Operator, Panel, UIList, NodeTree, Node, NodeSocket, ObjectNode, PropertyGroup, BVMTypeDesc
 from bpy.props import *
+from common_nodes import bvm_type_items, bvm_type_to_socket
 
 ###############################################################################
 # Group Interface
 
-_base_type_items = [
-    ("FLOAT", "Float", "Floating point number", 0, 0),
-    ("INT", "Int", "Integer number", 0, 1),
-    ("VECTOR", "Vector", "3D vector", 0, 2),
-    ("COLOR", "Color", "RGBA color", 0, 3),
-    ("MESH", "Mesh", "Mesh data", 0, 4),
-    ]
-
-def _base_type_to_socket(base_type):
-    types = {
-        "FLOAT" : bpy.types.NodeSocketFloat,
-        "INT" : bpy.types.NodeSocketInt,
-        "VECTOR" : bpy.types.NodeSocketVector,
-        "COLOR" : bpy.types.NodeSocketColor,
-        "MESH" : bpy.types.GeometrySocket,
-        }
-    return types.get(base_type, None)
-
 def make_node_group_interface(prefix, treetype, tree_items_update):
     _in_out_items = [('IN', "In", "Input"), ('OUT', "Out", "Output")]
 
     prop_name = StringProperty(name="Name", default="Value", update=tree_items_update)
-    prop_base_type = EnumProperty(name="Base Type", items=_base_type_items, default='FLOAT', update=tree_items_update)
+    prop_base_type = EnumProperty(name="Base Type", items=bvm_type_items, default='FLOAT', update=tree_items_update)
     prop_in_out = EnumProperty(name="In/Out", items=_in_out_items, default='IN')
 
     # XXX PropertyGroup does not have a bl_idname,
@@ -234,7 +217,7 @@ def make_node_group_types(prefix, treetype, node_base):
         
         def find_match(s):
             for i in free_items:
-                if i.name == s.name and isinstance(s, _base_type_to_socket(i.base_type)):
+                if i.name == s.name and isinstance(s, bvm_type_to_socket(i.base_type)):
                     return i
 
         def socket_index(s):
@@ -264,7 +247,7 @@ def make_node_group_types(prefix, treetype, node_base):
             s = match.get(i, None)
             if s is None:
                 # add socket for unmatched item
-                stype = _base_type_to_socket(i.base_type)
+                stype = bvm_type_to_socket(i.base_type)
                 s = sockets.new(stype.bl_rna.identifier, i.name)
 
             index = socket_index(s)




More information about the Bf-blender-cvs mailing list