Files
LNXSDK/leenkx/blender/lnx/logicnode/custom/LN_leenkx_close_connection.py

52 lines
1.8 KiB
Python
Raw Normal View History

2025-01-22 16:18:30 +01:00
from lnx.logicnode.lnx_nodes import *
class LeenkxCloseConnectionNode(LnxLogicTreeNode):
"""Close connection on the network"""
bl_idname = 'LNLeenkxCloseConnectionNode'
bl_label = 'Close Leenkx Connection'
2026-10-06 02:10:08 -07:00
bl_description = ('Tear down a Leenkx connection, or drop a single peer from it')
2025-01-22 16:18:30 +01:00
lnx_version = 1
lnx_category = 'Leenkx'
2026-10-06 02:10:08 -07:00
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',
2025-01-22 16:18:30 +01:00
items = [('client', 'Leenkx Client', 'Close the Leenkx Client connection on the network'),
2026-10-06 02:10:08 -07:00
('peer', 'Single Peer', 'Drop a peer from the connection (forgets its address; it can rejoin on a new handshake)')],
2025-01-22 16:18:30 +01:00
name='', default='client',
2026-10-06 02:10:08 -07:00
update=update_sockets)
2025-01-22 16:18:30 +01:00
def lnx_init(self, context):
self.add_input('LnxNodeSocketAction', 'In')
self.add_input('LnxDynamicSocket', 'Connection')
2026-10-06 02:10:08 -07:00
if self.property0 == 'peer':
self.add_input('LnxStringSocket', 'ID')
2025-01-22 16:18:30 +01:00
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()