P2P Export - Nodes - Patch
This commit is contained in:
@ -9,77 +9,55 @@ class LeenkxSendMessageNode(LnxLogicTreeNode):
|
||||
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
|
||||
def update_sockets(self, context):
|
||||
if not self.inputs:
|
||||
return
|
||||
links = {}
|
||||
send_all = True
|
||||
for socket in self.inputs:
|
||||
for link in socket.links:
|
||||
links.setdefault(socket.name, []).append(
|
||||
(link.from_node, link.from_socket))
|
||||
if socket.name == 'Send All':
|
||||
send_all = socket.default_value_raw
|
||||
for socket in self.inputs[3:]:
|
||||
self.inputs.remove(socket)
|
||||
self._add_data_inputs(send_all)
|
||||
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)
|
||||
|
||||
@staticmethod
|
||||
def get_count_in(type_name):
|
||||
return {
|
||||
'client': 0,
|
||||
'host': 1,
|
||||
'securehost': 2
|
||||
}.get(type_name, 0)
|
||||
def _add_data_inputs(self, send_all=True):
|
||||
data_sockets = {
|
||||
'string': ('LnxStringSocket', 'String payload to send'),
|
||||
'vector': ('LnxVectorSocket', 'Vector payload to send'),
|
||||
'float': ('LnxFloatSocket', 'Float payload to send'),
|
||||
'integer': ('LnxIntSocket', 'Integer payload to send'),
|
||||
'boolean': ('LnxBoolSocket', 'Boolean payload to send'),
|
||||
'transform': ('LnxDynamicSocket', 'Transform (Mat4) payload to send'),
|
||||
'rotation': ('LnxRotationSocket', 'Rotation (Quat) payload to send'),
|
||||
}
|
||||
socket_type, desc = data_sockets.get(self.property1, data_sockets['string'])
|
||||
self.add_input(socket_type, 'Data')
|
||||
self.add_input('LnxBoolSocket', 'Send All', default_value=send_all)
|
||||
if not send_all:
|
||||
self._add_id_input()
|
||||
|
||||
def get_enum(self):
|
||||
return self.get('property0', 0)
|
||||
def _add_id_input(self):
|
||||
self.add_input('LnxStringSocket', 'ID')
|
||||
|
||||
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
|
||||
def on_socket_val_update(self, context, socket):
|
||||
if socket.name == 'Send All':
|
||||
if (len(self.inputs) > 5
|
||||
and self.inputs[5].name == 'ID'):
|
||||
self.inputs.remove(self.inputs[5])
|
||||
if not socket.default_value_raw:
|
||||
self._add_id_input()
|
||||
super().on_socket_val_update(context, socket)
|
||||
|
||||
#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('LnxNodeSocketAction', 'In')
|
||||
self.add_input('LnxDynamicSocket', 'Connection')
|
||||
self.add_input('LnxStringSocket', 'API')
|
||||
self.add_input('LnxDynamicSocket', 'Data')
|
||||
self.add_input('LnxStringSocket', 'ID')
|
||||
self.add_input('LnxBoolSocket', 'Send All')
|
||||
|
||||
# Arguements for type Host
|
||||
if (self.get_count_in(select_current) == 1):
|
||||
self.add_input('LnxNodeSocketAction', 'In')
|
||||
self.add_input('LnxDynamicSocket', 'Connection')
|
||||
self.add_input('LnxStringSocket', 'API')
|
||||
self.add_input('LnxDynamicSocket', 'Data')
|
||||
self.add_input('LnxStringSocket', 'ID')
|
||||
self.add_input('LnxBoolSocket', 'Send All')
|
||||
|
||||
|
||||
# Arguements for type Secure Host
|
||||
if (self.get_count_in(select_current) == 2):
|
||||
self.add_input('LnxNodeSocketAction', 'In')
|
||||
self.add_input('LnxDynamicSocket', 'Connection')
|
||||
self.add_input('LnxStringSocket', 'API')
|
||||
self.add_input('LnxDynamicSocket', 'Data')
|
||||
self.add_input('LnxStringSocket', 'ID')
|
||||
self.add_input('LnxBoolSocket', 'Send All')
|
||||
|
||||
|
||||
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',
|
||||
property1: HaxeEnumProperty('property1',
|
||||
items = [('string', 'String', 'Send a string over the network to one or all of the clients'),
|
||||
('vector', 'Vector', 'Send a vector over the network to one or all of the clients'),
|
||||
('float', 'Float', 'Send a float over the network to one or all of the clients'),
|
||||
@ -87,8 +65,12 @@ class LeenkxSendMessageNode(LnxLogicTreeNode):
|
||||
('boolean', 'Boolean', 'Send a boolean over the network to one or all of the clients'),
|
||||
('transform', 'Transform', 'Send a transform over the network to one or all of the clients'),
|
||||
('rotation', 'Rotation', 'Send a rotation over the network to one or all of the clients')],
|
||||
name='',
|
||||
default='string')
|
||||
name='', default='string', update=update_sockets)
|
||||
|
||||
property2: HaxeBoolProperty('property2',
|
||||
name='Encrypted',
|
||||
description='Use full encryption protocol (signing, bencode, box encryption). Disable for fast raw message mode',
|
||||
default=False)
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
@ -100,17 +82,15 @@ class LeenkxSendMessageNode(LnxLogicTreeNode):
|
||||
self.add_input('LnxNodeSocketAction', 'In')
|
||||
self.add_input('LnxDynamicSocket', 'Connection')
|
||||
self.add_input('LnxStringSocket', 'API')
|
||||
self.add_input('LnxDynamicSocket', 'Data')
|
||||
self.add_input('LnxStringSocket', 'ID')
|
||||
self.add_input('LnxBoolSocket', 'Send All')
|
||||
|
||||
self._add_data_inputs()
|
||||
|
||||
self.add_output('LnxNodeSocketAction', 'Out')
|
||||
|
||||
|
||||
|
||||
|
||||
def draw_buttons(self, context, layout):
|
||||
layout.prop(self, 'property0')
|
||||
layout.prop(self, 'property1')
|
||||
layout.prop(self, 'property2')
|
||||
|
||||
def register():
|
||||
add_category('Leenkx', icon='ORIENTATION_CURSOR')
|
||||
|
||||
Reference in New Issue
Block a user