forked from LeenkxTeam/LNXSDK
110 lines
4.1 KiB
Python
110 lines
4.1 KiB
Python
|
from lnx.logicnode.lnx_nodes import *
|
||
|
|
||
|
|
||
|
class LeenkxEventNode(LnxLogicTreeNode):
|
||
|
"""Leenkx Event"""
|
||
|
bl_idname = 'LNLeenkxEventNode'
|
||
|
bl_label = 'Leenkx Event'
|
||
|
bl_description = 'Trigger an event from the network passing both data and ID'
|
||
|
lnx_category = 'Leenkx'
|
||
|
lnx_version = 1
|
||
|
|
||
|
@staticmethod
|
||
|
def get_enum_id_value(obj, prop_name, value):
|
||
|
return obj.bl_rna.properties[prop_name].enum_items[value].identifier
|
||
|
|
||
|
@staticmethod
|
||
|
def get_count_in(type_name):
|
||
|
return {
|
||
|
'client': 0,
|
||
|
'host': 1,
|
||
|
'securehost': 2
|
||
|
}.get(type_name, 0)
|
||
|
|
||
|
def get_enum(self):
|
||
|
return self.get('property0', 0)
|
||
|
|
||
|
def set_enum(self, value):
|
||
|
# Checking the selection of each type
|
||
|
select_current = self.get_enum_id_value(self, 'property0', value)
|
||
|
select_prev = self.property0
|
||
|
|
||
|
#Check if type changed
|
||
|
if select_prev != select_current:
|
||
|
|
||
|
for i in self.inputs:
|
||
|
self.inputs.remove(i)
|
||
|
|
||
|
# Arguements for type Client
|
||
|
if (self.get_count_in(select_current) == 0):
|
||
|
self.add_input('LnxStringSocket', 'Url', default_value="8001")
|
||
|
|
||
|
|
||
|
# Arguements for type Host
|
||
|
if (self.get_count_in(select_current) == 1):
|
||
|
self.add_input('LnxStringSocket', 'Domain', default_value="127.0.0.1")
|
||
|
self.add_input('LnxIntSocket', 'Port', default_value=8001)
|
||
|
|
||
|
|
||
|
# Arguements for type Secure Host
|
||
|
if (self.get_count_in(select_current) == 2):
|
||
|
self.add_input('LnxStringSocket', 'Domain', default_value="127.0.0.1")
|
||
|
self.add_input('LnxIntSocket', 'Port', default_value=8001)
|
||
|
|
||
|
|
||
|
self['property0'] = value
|
||
|
|
||
|
|
||
|
property0: HaxeEnumProperty(
|
||
|
'property0',
|
||
|
items = [('client', 'Client', 'Network client Event listener'),
|
||
|
('host', 'Host', 'Network host Event listener'),
|
||
|
('securehost', 'Secure Host', 'Network secure host Event listener')],
|
||
|
name='',
|
||
|
default='client',
|
||
|
set=set_enum,
|
||
|
get=get_enum)
|
||
|
|
||
|
|
||
|
property1: HaxeEnumProperty(
|
||
|
'property1',
|
||
|
items = [('onopen', 'OnOpen', 'Listens to onOpen event'),
|
||
|
('onmessage', 'OnMessage', 'Listens to onMessage event'),
|
||
|
('onerror', 'OnError', 'Listens to onError event'),
|
||
|
('onclose', 'OnClose', 'Listens to onClose event'),
|
||
|
('onseen', 'OnSeen', 'Listens to onClose event'),
|
||
|
('onserver', 'OnServer', 'Listens to onClose event'),
|
||
|
('onconnections', 'OnConnections', 'Listens to onClose event'),
|
||
|
('onping', 'OnPing', 'Listens to onClose event'),
|
||
|
('onleft', 'OnLeft', 'Listens to onClose event'),
|
||
|
('ontimeout', 'OnTimeout', 'Listens to onClose event'),
|
||
|
('onrpc', 'OnRpc', 'Listens to onClose event'),
|
||
|
('onrpcresponse', 'OnRpcResponse', 'Listens to onClose event'),
|
||
|
('onwireleft', 'OnWireLeft', 'Listens to onClose event'),
|
||
|
('onwireseen', 'OnWireSeen', 'Listens to onClose event'),
|
||
|
('ontorrent', 'OnTorrent', 'Listens to onClose event'),
|
||
|
('ontracker', 'OnTracker', 'Listens to onClose event'),
|
||
|
('onannounce', 'OnAnnounce', 'Listens to onClose event')],
|
||
|
name='',
|
||
|
default='onopen')
|
||
|
|
||
|
def __init__(self):
|
||
|
array_nodes[str(id(self))] = self
|
||
|
|
||
|
|
||
|
def lnx_init(self, context):
|
||
|
#self.add_input('LnxNodeSocketAction', 'In')
|
||
|
self.add_input('LnxStringSocket', 'Url', default_value="ws://127.0.0.1:8001")
|
||
|
|
||
|
self.add_output('LnxNodeSocketAction', 'Out')
|
||
|
self.add_output('LnxDynamicSocket', 'ID')
|
||
|
self.add_output('LnxDynamicSocket', 'Data')
|
||
|
|
||
|
|
||
|
def draw_buttons(self, context, layout):
|
||
|
layout.prop(self, 'property0')
|
||
|
layout.prop(self, 'property1')
|
||
|
|
||
|
def register():
|
||
|
add_category('Leenkx', icon='ORIENTATION_CURSOR')
|
||
|
LeenkxEventNode.on_register()
|