Skip to content
Snippets Groups Projects
Commit 31656101 authored by Pablo Vazquez's avatar Pablo Vazquez
Browse files

Amaranth: Remove "Switch Material" feature

Since 2.8 the Shader Editor has a popover with a UIList of all materials,
much more complete than the dropdown implementation in Amaranth.

Good to see Amaranth features being replaced by built-in ones in Blender :D
parent 6b9007c0
No related branches found
No related tags found
No related merge requests found
......@@ -41,7 +41,6 @@ from amaranth.node_editor import (
simplify_nodes,
node_stats,
normal_node,
switch_material,
node_shader_extra,
)
......
# SPDX-License-Identifier: GPL-2.0-or-later
"""
Material Selector
Quickly switch materials in the active mesh without going to the Properties editor
Based on 'Afeitadora's work on Elysiun
http://www.elysiun.com/forum/showthread.php?290097-Dynamic-Object-Dropdown-List&p=2361851#post2361851
"""
import bpy
def ui_node_editor_material_select(self, context):
act_ob = context.active_object
if act_ob and context.active_object.type in {'MESH', 'CURVE', 'SURFACE', 'META'} and \
context.space_data.tree_type == 'ShaderNodeTree' and \
context.space_data.shader_type == 'OBJECT':
if act_ob.active_material:
mat_name = act_ob.active_material.name
else:
mat_name = "No Material"
self.layout.operator_menu_enum("material.menu_select",
"material_select",
text=mat_name,
icon="MATERIAL")
class AMNodeEditorMaterialSelect(bpy.types.Operator):
bl_idname = "material.menu_select"
bl_label = "Select Material"
bl_description = "Switch to another material in this mesh"
def avail_materials(self,context):
items = [(str(i),x.name,x.name, "MATERIAL", i) for i,x in enumerate(bpy.context.active_object.material_slots)]
return items
material_select: bpy.props.EnumProperty(items = avail_materials, name = "Available Materials")
@classmethod
def poll(cls, context):
return context.active_object
def execute(self,context):
bpy.context.active_object.active_material_index = int(self.material_select)
return {'FINISHED'}
def register():
bpy.utils.register_class(AMNodeEditorMaterialSelect)
bpy.types.NODE_HT_header.append(ui_node_editor_material_select)
def unregister():
bpy.utils.unregister_class(AMNodeEditorMaterialSelect)
bpy.types.NODE_HT_header.remove(ui_node_editor_material_select)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment