armory/blender/arm/logicnode/renderpath/LN_set_shader_uniform.py
2021-07-03 19:45:05 +02:00

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="")