48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
from bpy.props import EnumProperty
|
|
|
|
from arm.logicnode.arm_nodes import *
|
|
|
|
|
|
class SetShaderUniformNode(ArmLogicTreeNode):
|
|
"""Set a global shader uniform value."""
|
|
bl_idname = 'LNSetShaderUniformNode'
|
|
bl_label = 'Set Shader Uniform'
|
|
bl_width_default = 200
|
|
arm_section = 'shaders'
|
|
arm_version = 1
|
|
|
|
def on_update_uniform_type(self, _):
|
|
self.inputs.remove(self.inputs[2])
|
|
|
|
if self.property0 == 'int':
|
|
self.add_input('NodeSocketInt', 'Int')
|
|
elif self.property0 == 'float':
|
|
self.add_input('NodeSocketFloat', 'Float')
|
|
elif self.property0 in ('vec2', 'vec3', 'vec4'):
|
|
self.add_input('NodeSocketVector', 'Vector')
|
|
|
|
property0: HaxeEnumProperty(
|
|
'property0',
|
|
items = [('int', 'int', 'int'),
|
|
('float', 'float', 'float'),
|
|
('vec2', 'vec2', 'vec2'),
|
|
('vec3', 'vec3', 'vec3'),
|
|
('vec4', 'vec4', 'vec4')],
|
|
name='Uniform Type',
|
|
default='float',
|
|
description="The type of the uniform",
|
|
update=on_update_uniform_type)
|
|
|
|
def init(self, context):
|
|
super().init(context)
|
|
self.add_input('ArmNodeSocketAction', 'In')
|
|
self.add_input('NodeSocketString', 'Uniform Name')
|
|
self.add_input('NodeSocketFloat', 'Float')
|
|
self.add_output('ArmNodeSocketAction', 'Out')
|
|
|
|
def draw_buttons(self, context, layout):
|
|
split = layout.split(factor=0.5, align=True)
|
|
|
|
split.label(text="Type")
|
|
split.prop(self, "property0", text="")
|