Welcome to mirror list, hosted at ThFree Co, Russian Federation.

menu.py « nodes « startup « scripts « release - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0aa16af7f27369a04105c356ce115bfc8c10d739 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import bpy
from . function_tree import FunctionTree

def draw_menu(self, context):
    tree = context.space_data.node_tree
    if not isinstance(tree, FunctionTree):
        return

    layout = self.layout
    layout.operator_context = 'INVOKE_DEFAULT'

    layout.operator("fn.node_search", text="Search", icon='VIEWZOOM')
    layout.separator()
    layout.menu("FN_MT_function_nodes_menu", text="Function Nodes")
    layout.separator()
    insert_node(layout, "fn_ParticleSystemNode", "Particle System")
    layout.menu("BP_MT_influences_nodes_menu", text="Influences")
    layout.menu("BP_MT_action_nodes_menu", text="Actions")

class FunctionNodesMenu(bpy.types.Menu):
    bl_idname = "FN_MT_function_nodes_menu"
    bl_label = "Function Nodes Menu"

    def draw(self, context):
        layout = self.layout
        layout.operator_context = 'INVOKE_DEFAULT'

        insert_node(layout, "fn_SwitchNode", "Switch")
        layout.separator()
        insert_node(layout, "fn_FloatRangeNode", "Float Range")
        layout.separator()
        insert_node(layout, "fn_CombineVectorNode", "Combine Vector")
        insert_node(layout, "fn_SeparateVectorNode", "Separate Vector")
        insert_node(layout, "fn_VectorDistanceNode", "Vector Distance")
        layout.separator()
        insert_node(layout, "fn_SeparateColorNode", "Separate Color")
        insert_node(layout, "fn_CombineColorNode", "Combine Color")
        layout.separator()
        insert_node(layout, "fn_GetListElementNode", "Get List Element")
        insert_node(layout, "fn_ListLengthNode", "List Length")
        insert_node(layout, "fn_PackListNode", "Pack List")
        layout.separator()
        insert_node(layout, "fn_ObjectMeshNode", "Object Mesh")
        insert_node(layout, "fn_ObjectTransformsNode", "Object Transforms")
        insert_node(layout, "fn_TextLengthNode", "Text Length")

class InfluencesNodesMenu(bpy.types.Menu):
    bl_idname = "BP_MT_influences_nodes_menu"
    bl_label = "Influences Nodes Menu"

    def draw(self, context):
        layout = self.layout
        layout.operator_context = 'INVOKE_DEFAULT'

        insert_node(layout, "fn_CombineInfluencesNode", "Combine Influences")
        layout.separator()
        insert_node(layout, "fn_InitialGridEmitterNode", "Initial Grid Emitter")
        insert_node(layout, "fn_MeshEmitterNode", "Mesh Emitter")
        insert_node(layout, "fn_PointEmitterNode", "Point Emitter")
        layout.separator()
        insert_node(layout, "fn_AgeReachedEventNode", "Age Reached Event")
        insert_node(layout, "fn_MeshCollisionEventNode", "Mesh Collision Event")
        insert_node(layout, "fn_CustomEventNode", "Custom Event")
        layout.separator()
        insert_node(layout, "fn_ForceNode", "Force")
        layout.separator()
        insert_node(layout, "fn_SizeOverTimeNode", "Size Over Time")
        insert_node(layout, "fn_ParticleTrailsNode", "Trails")
        insert_node(layout, "fn_AlwaysExecuteNode", "Always Execute")


class ActionNodesMenu(bpy.types.Menu):
    bl_idname = "BP_MT_action_nodes_menu"
    bl_label = "Action Nodes Menu"

    def draw(self, context):
        layout = self.layout
        layout.operator_context = 'INVOKE_DEFAULT'

        insert_node(layout, "fn_ParticleConditionNode", "Condition")


def insert_node(layout, type, text, settings = {}, icon = "NONE"):
    operator = layout.operator("node.add_node", text = text, icon = icon)
    operator.type = type
    operator.use_transform = True
    for name, value in settings.items():
        item = operator.settings.add()
        item.name = name
        item.value = value
    return operator


def register():
    bpy.types.NODE_MT_add.append(draw_menu)