Texture Nodes: Refactor Add menu #111838
|
@ -16,6 +16,7 @@ _modules = [
|
|||
"node_add_menu_compositor",
|
||||
"node_add_menu_geometry",
|
||||
"node_add_menu_shader",
|
||||
"node_add_menu_texture",
|
||||
"properties_animviz",
|
||||
"properties_constraint",
|
||||
"properties_data_armature",
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
# SPDX-FileCopyrightText: 2022-2023 Blender Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import bpy
|
||||
from bpy.types import Menu
|
||||
from bl_ui import node_add_menu
|
||||
|
||||
|
||||
class NODE_MT_category_texture_input(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_input"
|
||||
bl_label = "Input"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeCoordinates")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeCurveTime")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeImage")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexture")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_output(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_output"
|
||||
bl_label = "Output"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeOutput")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeViewer")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_color(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_color"
|
||||
bl_label = "Color"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeHueSaturation")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeInvert")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeMixRGB")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeCurveRGB")
|
||||
layout.separator()
|
||||
node_add_menu.add_node_type(layout, "TextureNodeCombineColor")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeSeparateColor")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_converter(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_converter"
|
||||
bl_label = "Converter"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeValToRGB")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeDistance")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeMath")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeRGBToBW")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeValToNor")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_distort(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_distort"
|
||||
bl_label = "Distort"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeAt")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeRotate")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeScale")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTranslate")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_pattern(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_pattern"
|
||||
bl_label = "Pattern"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeBricks")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeChecker")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_texture(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_texture"
|
||||
bl_label = "Texture"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexBlend")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexClouds")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexDistNoise")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexMagic")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexMarble")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexMusgrave")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexNoise")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexStucci")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexVoronoi")
|
||||
node_add_menu.add_node_type(layout, "TextureNodeTexWood")
|
||||
|
||||
|
||||
class NODE_MT_category_texture_group(Menu):
|
||||
bl_idname = "NODE_MT_category_texture_group"
|
||||
bl_label = "Group"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
node_add_menu.draw_node_group_add_menu(context, layout)
|
||||
|
||||
|
||||
class NODE_MT_texture_node_add_all(Menu):
|
||||
bl_idname = "NODE_MT_texture_node_add_all"
|
||||
bl_label = "Add"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
layout.menu("NODE_MT_category_texture_input")
|
||||
layout.menu("NODE_MT_category_texture_output")
|
||||
layout.separator()
|
||||
layout.menu("NODE_MT_category_texture_color")
|
||||
layout.menu("NODE_MT_category_texture_converter")
|
||||
layout.menu("NODE_MT_category_texture_distort")
|
||||
layout.menu("NODE_MT_category_texture_pattern")
|
||||
layout.menu("NODE_MT_category_texture_texture")
|
||||
layout.separator()
|
||||
layout.menu("NODE_MT_category_texture_group")
|
||||
layout.menu("NODE_MT_category_layout")
|
||||
|
||||
|
||||
classes = (
|
||||
NODE_MT_texture_node_add_all,
|
||||
NODE_MT_category_texture_input,
|
||||
NODE_MT_category_texture_output,
|
||||
NODE_MT_category_texture_color,
|
||||
NODE_MT_category_texture_converter,
|
||||
NODE_MT_category_texture_distort,
|
||||
NODE_MT_category_texture_pattern,
|
||||
NODE_MT_category_texture_texture,
|
||||
NODE_MT_category_texture_group,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
from bpy.utils import register_class
|
||||
for cls in classes:
|
||||
register_class(cls)
|
|
@ -243,6 +243,10 @@ class NODE_MT_add(bpy.types.Menu):
|
|||
props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM')
|
||||
layout.separator()
|
||||
layout.menu_contents("NODE_MT_shader_node_add_all")
|
||||
elif snode.tree_type == 'TextureNodeTree':
|
||||
props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM')
|
||||
layout.separator()
|
||||
layout.menu_contents("NODE_MT_texture_node_add_all")
|
||||
elif nodeitems_utils.has_node_categories(context):
|
||||
props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM')
|
||||
props.use_transform = True
|
||||
|
|
|
@ -36,13 +36,6 @@ class ShaderNodeCategory(SortedNodeCategory):
|
|||
context.space_data.tree_type == 'ShaderNodeTree')
|
||||
|
||||
|
||||
class TextureNodeCategory(SortedNodeCategory):
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return (context.space_data.type == 'NODE_EDITOR' and
|
||||
context.space_data.tree_type == 'TextureNodeTree')
|
||||
|
||||
|
||||
# Menu entry for node group tools.
|
||||
def group_tools_draw(_self, layout, _context):
|
||||
layout.operator("node.group_make")
|
||||
|
@ -101,69 +94,12 @@ def group_input_output_item_poll(context):
|
|||
return False
|
||||
|
||||
|
||||
texture_node_categories = [
|
||||
# Texture Nodes
|
||||
TextureNodeCategory("TEX_INPUT", "Input", items=[
|
||||
NodeItem("TextureNodeCurveTime"),
|
||||
NodeItem("TextureNodeCoordinates"),
|
||||
NodeItem("TextureNodeTexture"),
|
||||
NodeItem("TextureNodeImage"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_OUTPUT", "Output", items=[
|
||||
NodeItem("TextureNodeOutput"),
|
||||
NodeItem("TextureNodeViewer"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_OP_COLOR", "Color", items=[
|
||||
NodeItem("TextureNodeMixRGB"),
|
||||
NodeItem("TextureNodeCurveRGB"),
|
||||
NodeItem("TextureNodeInvert"),
|
||||
NodeItem("TextureNodeHueSaturation"),
|
||||
NodeItem("TextureNodeCombineColor"),
|
||||
NodeItem("TextureNodeSeparateColor"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_PATTERN", "Pattern", items=[
|
||||
NodeItem("TextureNodeChecker"),
|
||||
NodeItem("TextureNodeBricks"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_TEXTURE", "Textures", items=[
|
||||
NodeItem("TextureNodeTexNoise"),
|
||||
NodeItem("TextureNodeTexDistNoise"),
|
||||
NodeItem("TextureNodeTexClouds"),
|
||||
NodeItem("TextureNodeTexBlend"),
|
||||
NodeItem("TextureNodeTexVoronoi"),
|
||||
NodeItem("TextureNodeTexMagic"),
|
||||
NodeItem("TextureNodeTexMarble"),
|
||||
NodeItem("TextureNodeTexWood"),
|
||||
NodeItem("TextureNodeTexMusgrave"),
|
||||
NodeItem("TextureNodeTexStucci"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_CONVERTOR", "Converter", items=[
|
||||
NodeItem("TextureNodeMath"),
|
||||
NodeItem("TextureNodeValToRGB"),
|
||||
NodeItem("TextureNodeRGBToBW"),
|
||||
NodeItem("TextureNodeValToNor"),
|
||||
NodeItem("TextureNodeDistance"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_DISTORT", "Distort", items=[
|
||||
NodeItem("TextureNodeScale"),
|
||||
NodeItem("TextureNodeTranslate"),
|
||||
NodeItem("TextureNodeRotate"),
|
||||
NodeItem("TextureNodeAt"),
|
||||
]),
|
||||
TextureNodeCategory("TEX_GROUP", "Group", items=node_group_items),
|
||||
TextureNodeCategory("TEX_LAYOUT", "Layout", items=[
|
||||
NodeItem("NodeFrame"),
|
||||
NodeItem("NodeReroute"),
|
||||
]),
|
||||
]
|
||||
|
||||
|
||||
def register():
|
||||
nodeitems_utils.register_node_categories('TEXTURE', texture_node_categories)
|
||||
pass
|
||||
|
||||
|
||||
def unregister():
|
||||
nodeitems_utils.unregister_node_categories('TEXTURE')
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue