2025-01-22 16:18:30 +01:00

62 lines
2.2 KiB
Python

from lnx.logicnode.lnx_nodes import *
class MouseNode(LnxLogicTreeNode):
"""Activates the output on the given mouse event."""
bl_idname = 'LNMergedMouseNode'
bl_label = 'Mouse'
lnx_section = 'mouse'
lnx_version = 3
property0: HaxeEnumProperty(
'property0',
items = [('started', 'Started', 'The mouse button begins to be pressed'),
('down', 'Down', 'The mouse button is pressed'),
('released', 'Released', 'The mouse button stops being pressed'),
('moved', 'Moved', 'Moved')],
name='', default='down')
property1: HaxeEnumProperty(
'property1',
items = [('left', 'Left', 'Left mouse button'),
('middle', 'Middle', 'Middle mouse button'),
('right', 'Right', 'Right mouse button'),
('side1', 'Side 1', 'Side 1 mouse button'),
('side2', 'Side 2', 'Side 2 mouse button')],
name='', default='left')
property2: HaxeBoolProperty(
'property2',
name='Include Debug Console',
description=(
'If disabled, this node does not react to mouse press events'
' over the debug console area. Enable this option to catch those events'
)
)
def lnx_init(self, context):
self.add_output('LnxNodeSocketAction', 'Out')
self.add_output('LnxBoolSocket', 'State')
def draw_buttons(self, context, layout):
layout.prop(self, 'property0')
if self.property0 != 'moved':
layout.prop(self, 'property1')
layout.prop(self, 'property2')
def draw_label(self) -> str:
return f'{self.bl_label}: {self.property1}'
def get_replacement_node(self, node_tree: bpy.types.NodeTree):
if 0 <= self.lnx_version < 2:
return NodeReplacement.Identity(self)
elif self.lnx_version == 2:
return NodeReplacement(
'LNMergedMouseNode', self.lnx_version, 'LNMergedMouseNode', 3,
in_socket_mapping={}, out_socket_mapping={0: 0, 1: 1},
property_mapping={'property0': 'property0', 'property1': 'property1'},
property_defaults={'property2': True}
)
raise LookupError()