LNXSDK/leenkx/blender/lnx/logicnode/logic/LN_value_changed.py

39 lines
1.5 KiB
Python
Raw Normal View History

2025-01-22 16:18:30 +01:00
from lnx.logicnode.lnx_nodes import *
class ValueChangedNode(LnxLogicTreeNode):
"""Upon activation through the `In` input, this node checks whether
the given value is different than the value from the last execution
of this node.
@output Changed: Activates if the value has changed compared to the
last time the node was executed or if the node is executed for
the first time and there is no value for comparison yet.
@output Unchanged: Activates if the value is the same as it was when
the node was executed the last time.
@output Is Initial: Activates if the value is equal to the value at
the first time the node was executed or if the node is executed
for the first time. This output works independently of the
`Changed` or `Unchanged` outputs.
"""
bl_idname = 'LNValueChangedNode'
bl_label = 'Value Changed'
lnx_version = 2
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Value')
self.add_output('LnxNodeSocketAction', 'Changed')
self.add_output('LnxNodeSocketAction', 'Unchanged')
self.add_output('LnxNodeSocketAction', 'Is Initial')
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if self.lnx_version not in (0, 1):
raise LookupError()
return NodeReplacement(
'LNValueChangedNode', self.lnx_version, 'LNValueChangedNode', 2,
in_socket_mapping={0: 0, 1: 1}, out_socket_mapping={0: 0, 1: 2}
)