116 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			116 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | from lnx.logicnode.lnx_nodes import * | ||
|  | 
 | ||
|  | 
 | ||
|  | class LeenkxSendMessageNode(LnxLogicTreeNode): | ||
|  |     """Leenkx Send Message""" | ||
|  |     bl_idname = 'LNLeenkxSendMessageNode' | ||
|  |     bl_label = 'Leenkx Send Message' | ||
|  |     bl_description = 'Send messages to the Leenkx network' | ||
|  |     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('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', | ||
|  |         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'), | ||
|  |                  ('integer', 'Integer', 'Send an integer over the network to one or all of the clients'), | ||
|  |                  ('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') | ||
|  | 
 | ||
|  | 
 | ||
|  |     def __init__(self): | ||
|  |         array_nodes[str(id(self))] = self | ||
|  | 
 | ||
|  | 
 | ||
|  |     def lnx_init(self, context): | ||
|  |         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_output('LnxNodeSocketAction', 'Out') | ||
|  |          | ||
|  | 
 | ||
|  | 
 | ||
|  |     def draw_buttons(self, context, layout): | ||
|  |         layout.prop(self, 'property0') | ||
|  |         layout.prop(self, 'property1') | ||
|  |          | ||
|  | def register(): | ||
|  |     add_category('Leenkx', icon='ORIENTATION_CURSOR') | ||
|  |     LeenkxSendMessageNode.on_register() |