from lnx.logicnode.lnx_nodes import * class LeenkxCloseConnectionNode(LnxLogicTreeNode): """Close connection on the network""" bl_idname = 'LNLeenkxCloseConnectionNode' bl_label = 'Close Leenkx Connection' bl_description = ('Tear down a Leenkx connection, or drop a single peer from it') lnx_version = 1 lnx_category = 'Leenkx' 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[2:]: self.inputs.remove(socket) if self.property0 == 'peer': self.add_input('LnxStringSocket', 'ID') 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) property0: HaxeEnumProperty('property0', items = [('client', 'Leenkx Client', 'Close the Leenkx Client connection on the network'), ('peer', 'Single Peer', 'Drop a peer from the connection (forgets its address; it can rejoin on a new handshake)')], name='', default='client', update=update_sockets) def lnx_init(self, context): self.add_input('LnxNodeSocketAction', 'In') self.add_input('LnxDynamicSocket', 'Connection') if self.property0 == 'peer': self.add_input('LnxStringSocket', 'ID') self.add_output('LnxNodeSocketAction', 'Out') def draw_buttons(self, context, layout): layout.prop(self, 'property0') def register(): add_category('Leenkx', icon='ORIENTATION_CURSOR') LeenkxCloseConnectionNode.on_register()