forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from lnx.logicnode.lnx_nodes import *
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class GamepadNode(LnxLogicTreeNode):
							 | 
						||
| 
								 | 
							
								    """Activates the output on the given gamepad event.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @seeNode Gamepad Coords
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @input Gamepad: the ID of the gamepad.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @option State: the state of the gamepad button to listen to.
							 | 
						||
| 
								 | 
							
								    @option Button: the gamepad button that should activate the output.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    bl_idname = 'LNMergedGamepadNode'
							 | 
						||
| 
								 | 
							
								    bl_label = 'Gamepad'
							 | 
						||
| 
								 | 
							
								    lnx_version = 1
							 | 
						||
| 
								 | 
							
								    lnx_section = 'gamepad'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    property0: HaxeEnumProperty(
							 | 
						||
| 
								 | 
							
								        'property0',
							 | 
						||
| 
								 | 
							
								        items = [('started', 'Started', 'The gamepad button starts to be pressed'),
							 | 
						||
| 
								 | 
							
								                 ('down', 'Down', 'The gamepad button is pressed'),
							 | 
						||
| 
								 | 
							
								                 ('released', 'Released', 'The gamepad button stops being pressed')],
							 | 
						||
| 
								 | 
							
								                 # ('Moved Left', 'Moved Left', 'Moved Left'),
							 | 
						||
| 
								 | 
							
								                 # ('Moved Right', 'Moved Right', 'Moved Right'),],
							 | 
						||
| 
								 | 
							
								        name='', default='down')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    property1: HaxeEnumProperty(
							 | 
						||
| 
								 | 
							
								        'property1',
							 | 
						||
| 
								 | 
							
								        items = [('cross', 'cross / a', 'cross / a'),
							 | 
						||
| 
								 | 
							
								                 ('circle', 'circle / b', 'circle / b'),
							 | 
						||
| 
								 | 
							
								                 ('square', 'square / x', 'square / x'),
							 | 
						||
| 
								 | 
							
								                 ('triangle', 'triangle / y', 'triangle / y'),
							 | 
						||
| 
								 | 
							
								                 ('l1', 'l1 / lb', 'l1 / lb'),
							 | 
						||
| 
								 | 
							
								                 ('r1', 'r1 / rb', 'r1 / rb'),
							 | 
						||
| 
								 | 
							
								                 ('l2', 'l2 / lt', 'l2 / lt'),
							 | 
						||
| 
								 | 
							
								                 ('r2', 'r2 / rt', 'r2 / rt'),
							 | 
						||
| 
								 | 
							
								                 ('share', 'share', 'share'),
							 | 
						||
| 
								 | 
							
								                 ('options', 'options', 'options'),
							 | 
						||
| 
								 | 
							
								                 ('l3', 'l3', 'l3'),
							 | 
						||
| 
								 | 
							
								                 ('r3', 'r3', 'r3'),
							 | 
						||
| 
								 | 
							
								                 ('up', 'up', 'up'),
							 | 
						||
| 
								 | 
							
								                 ('down', 'down', 'down'),
							 | 
						||
| 
								 | 
							
								                 ('left', 'left', 'left'),
							 | 
						||
| 
								 | 
							
								                 ('right', 'right', 'right'),
							 | 
						||
| 
								 | 
							
								                 ('home', 'home', 'home'),
							 | 
						||
| 
								 | 
							
								                 ('touchpad', 'touchpad', 'touchpad'),],
							 | 
						||
| 
								 | 
							
								        name='', default='cross')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def lnx_init(self, context):
							 | 
						||
| 
								 | 
							
								        self.add_output('LnxNodeSocketAction', 'Out')
							 | 
						||
| 
								 | 
							
								        self.add_output('LnxBoolSocket', 'State')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self.add_input('LnxIntSocket', 'Gamepad')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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_raw}: {self.property1}'
							 |