from lnx.logicnode.lnx_nodes import * class CreateTrackerNode(LnxLogicTreeNode): """Create Tracker""" bl_idname = 'LNCreateTrackerNode' bl_label = 'Create Tracker Server' bl_description = ('Hosts a local tracker') lnx_category = 'Leenkx' lnx_version = 1 def __init__(self, *args, **kwargs): super(CreateTrackerNode, self).__init__(*args, **kwargs) array_nodes[str(id(self))] = self def update_sockets(self, context): if not self.inputs: return links = {} for socket in self.inputs: for link in socket.links: links.setdefault(socket.name, []).append( (link.from_node, link.from_socket)) for socket in self.inputs[1:]: self.inputs.remove(socket) self._add_mode_inputs() tree = self.id_data for socket in self.inputs: if socket.name in links: for from_node, from_socket in links[socket.name]: tree.links.new(from_socket, socket) def _add_mode_inputs(self): self.add_input('LnxStringSocket', 'Host', default_value='127.0.0.1') self.add_input('LnxIntSocket', 'Port', default_value=6969) if self.property0 == 'wss': self.add_input('LnxStringSocket', 'Cert File') self.add_input('LnxStringSocket', 'Key File') property0: HaxeEnumProperty('property0', items=[('udp', 'UDP', 'UDP tracker (BEP 15, sys targets only)'), ('http', 'HTTP', 'HTTP tracker (BEP 3)'), ('ws', 'WS', 'Plain WebSocket tracker (local relay, WebTorrent/web peers)'), ('wss', 'WSS', 'Secure WebSocket tracker (WebTorrent/web peers)')], name='Type', default='udp', update=update_sockets) def lnx_init(self, context): self.add_input('LnxNodeSocketAction', 'In') self._add_mode_inputs() self.add_output('LnxNodeSocketAction', 'Out') self.add_output('LnxDynamicSocket', 'Tracker') self.add_output('LnxStringSocket', 'URL') def draw_buttons(self, context, layout): layout.prop(self, 'property0') def register(): add_category('Leenkx', icon='ORIENTATION_CURSOR') CreateTrackerNode.on_register()