Add dynamic node labels
This commit is contained in:
parent
f69185a765
commit
76389c8652
|
@ -23,3 +23,9 @@ class ArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketShader'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class BooleanArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketBool'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class ColorArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketColor'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class FloatArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketFloat'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class IntegerArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketInt'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class ObjectArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'ArmNodeSocketObject'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class StringArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketString'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -24,3 +24,9 @@ class VectorArrayNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'NodeSocketVector'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -54,3 +54,10 @@ class GamepadNode(ArmLogicTreeNode):
|
|||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
||||
layout.prop(self, 'property1')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
inp_gamepad = self.inputs['Gamepad']
|
||||
if inp_gamepad.is_linked:
|
||||
return f'{self.bl_label}: {self.property1}'
|
||||
|
||||
return f'{self.bl_label} {inp_gamepad.default_value}: {self.property1}'
|
||||
|
|
|
@ -77,3 +77,5 @@ class KeyboardNode(ArmLogicTreeNode):
|
|||
layout.prop(self, 'property0')
|
||||
layout.prop(self, 'property1')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
return f'{self.bl_label}: {self.property1}'
|
||||
|
|
|
@ -27,3 +27,6 @@ class MouseNode(ArmLogicTreeNode):
|
|||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
||||
layout.prop(self, 'property1')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
return f'{self.bl_label}: {self.property1}'
|
||||
|
|
|
@ -21,3 +21,6 @@ class SurfaceNode(ArmLogicTreeNode):
|
|||
|
||||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
return f'{self.bl_label}: {self.property0}'
|
||||
|
|
|
@ -22,3 +22,6 @@ class VirtualButtonNode(ArmLogicTreeNode):
|
|||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
||||
layout.prop(self, 'property1')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
return f'{self.bl_label}: {self.property1}'
|
||||
|
|
|
@ -29,3 +29,14 @@ class LoopNode(ArmLogicTreeNode):
|
|||
self.add_output('ArmNodeSocketAction', 'Loop')
|
||||
self.add_output('NodeSocketInt', 'Index')
|
||||
self.add_output('ArmNodeSocketAction', 'Done')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
inp_from = self.inputs['From']
|
||||
inp_to = self.inputs['To']
|
||||
if inp_from.is_linked and inp_to.is_linked:
|
||||
return self.bl_label
|
||||
|
||||
val_from = 'x' if inp_from.is_linked else inp_from.default_value
|
||||
val_to = 'y' if inp_to.is_linked else inp_to.default_value
|
||||
|
||||
return f'{self.bl_label}: {val_from}...{val_to}'
|
||||
|
|
|
@ -26,3 +26,9 @@ class MergeNode(ArmLogicTreeNode):
|
|||
op.socket_type = 'ArmNodeSocketAction'
|
||||
op2 = row.operator('arm.node_remove_input', text='', icon='X', emboss=True)
|
||||
op2.node_index = str(id(self))
|
||||
|
||||
def draw_label(self) -> str:
|
||||
if len(self.inputs) == 0:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: [{len(self.inputs)}]'
|
||||
|
|
|
@ -5,7 +5,7 @@ class MathNode(ArmLogicTreeNode):
|
|||
bl_idname = 'LNMathNode'
|
||||
bl_label = 'Math'
|
||||
arm_version = 1
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_enum_id_value(obj, prop_name, value):
|
||||
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
|
||||
|
@ -13,34 +13,34 @@ class MathNode(ArmLogicTreeNode):
|
|||
@staticmethod
|
||||
def get_count_in(operation_name):
|
||||
return {
|
||||
'Add': 0,
|
||||
'Subtract': 0,
|
||||
'Multiply': 0,
|
||||
'Add': 0,
|
||||
'Subtract': 0,
|
||||
'Multiply': 0,
|
||||
'Divide': 0,
|
||||
'Sine': 1,
|
||||
'Cosine': 1,
|
||||
'Abs': 1,
|
||||
'Tangent': 1,
|
||||
'Arcsine': 1,
|
||||
'Arccosine': 1,
|
||||
'Arctangent': 1,
|
||||
'Logarithm': 1,
|
||||
'Round': 1,
|
||||
'Floor': 1,
|
||||
'Ceil': 1,
|
||||
'Square Root': 1,
|
||||
'Fract': 1,
|
||||
'Sine': 1,
|
||||
'Cosine': 1,
|
||||
'Abs': 1,
|
||||
'Tangent': 1,
|
||||
'Arcsine': 1,
|
||||
'Arccosine': 1,
|
||||
'Arctangent': 1,
|
||||
'Logarithm': 1,
|
||||
'Round': 1,
|
||||
'Floor': 1,
|
||||
'Ceil': 1,
|
||||
'Square Root': 1,
|
||||
'Fract': 1,
|
||||
'Exponent': 1,
|
||||
'Max': 2,
|
||||
'Min': 2,
|
||||
'Power': 2,
|
||||
'Arctan2': 2,
|
||||
'Modulo': 2,
|
||||
'Less Than': 2,
|
||||
'Max': 2,
|
||||
'Min': 2,
|
||||
'Power': 2,
|
||||
'Arctan2': 2,
|
||||
'Modulo': 2,
|
||||
'Less Than': 2,
|
||||
'Greater Than': 2
|
||||
}.get(operation_name, 0)
|
||||
|
||||
def get_enum(self):
|
||||
def get_enum(self):
|
||||
return self.get('property0', 0)
|
||||
|
||||
def set_enum(self, value):
|
||||
|
@ -124,3 +124,6 @@ class MathNode(ArmLogicTreeNode):
|
|||
op.node_index = str(id(self))
|
||||
if len(self.inputs) == 2:
|
||||
column.enabled = False
|
||||
|
||||
def draw_label(self) -> str:
|
||||
return f'{self.bl_label}: {self.property0}'
|
||||
|
|
|
@ -148,3 +148,6 @@ class VectorMathNode(ArmLogicTreeNode):
|
|||
op.node_index = str(id(self))
|
||||
if len(self.inputs) == 2:
|
||||
column.enabled = False
|
||||
|
||||
def draw_label(self) -> str:
|
||||
return f'{self.bl_label}: {self.property0}'
|
||||
|
|
|
@ -21,3 +21,11 @@ class TimerNode(ArmLogicTreeNode):
|
|||
self.add_output('NodeSocketInt', 'Time Left')
|
||||
self.add_output('NodeSocketFloat', 'Progress')
|
||||
self.add_output('NodeSocketFloat', 'Repetitions')
|
||||
|
||||
def draw_label(self) -> str:
|
||||
inp_duration = self.inputs['Duration']
|
||||
inp_repeat = self.inputs['Repeat']
|
||||
if inp_duration.is_linked or inp_repeat.is_linked:
|
||||
return self.bl_label
|
||||
|
||||
return f'{self.bl_label}: {round(inp_duration.default_value, 3)}s ({inp_repeat.default_value} R.)'
|
||||
|
|
|
@ -11,3 +11,14 @@ class ObjectNode(ArmLogicTreeNode):
|
|||
self.add_input('ArmNodeSocketObject', 'Object In')
|
||||
|
||||
self.add_output('ArmNodeSocketObject', 'Object Out', is_var=True)
|
||||
|
||||
def draw_label(self) -> str:
|
||||
inp_object = self.inputs['Object In']
|
||||
if inp_object.is_linked:
|
||||
return self.bl_label
|
||||
|
||||
obj_name = inp_object.get_default_value()
|
||||
if obj_name == '':
|
||||
obj_name = '_self'
|
||||
|
||||
return f'{self.bl_label}: {obj_name}'
|
||||
|
|
Loading…
Reference in a new issue