Add dynamic node labels

This commit is contained in:
Moritz Brückner 2020-12-15 23:47:38 +01:00
parent f69185a765
commit 76389c8652
19 changed files with 132 additions and 24 deletions

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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)}]'

View file

@ -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}'

View file

@ -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}'

View file

@ -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}'

View file

@ -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}'

View file

@ -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}'

View file

@ -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}'

View file

@ -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)}]'

View file

@ -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}'

View file

@ -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}'

View file

@ -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.)'

View file

@ -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}'