42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | from lnx.logicnode.lnx_nodes import * | ||
|  | 
 | ||
|  | class LoopNode(LnxLogicTreeNode): | ||
|  |     """Resembles a for-loop (`for (i in from...to)`) that is executed at
 | ||
|  |     once when this node is activated. | ||
|  | 
 | ||
|  |     @seeNode While | ||
|  |     @seeNode Loop Break | ||
|  | 
 | ||
|  |     @input From: The value to start the loop from (inclusive) | ||
|  |     @input To: The value to end the loop at (exclusive) | ||
|  | 
 | ||
|  |     @output Loop: Active at every iteration of the loop | ||
|  |     @output Index: The index for the current iteration | ||
|  |     @output Done: Activated once when the looping is done | ||
|  |     """
 | ||
|  |     bl_idname = 'LNLoopNode' | ||
|  |     bl_label = 'Loop' | ||
|  |     bl_description = 'Resembles a for-loop that is executed at once when this node is activated' | ||
|  |     lnx_section = 'flow' | ||
|  |     lnx_version = 1 | ||
|  | 
 | ||
|  |     def lnx_init(self, context): | ||
|  |         self.add_input('LnxNodeSocketAction', 'In') | ||
|  |         self.add_input('LnxIntSocket', 'From') | ||
|  |         self.add_input('LnxIntSocket', 'To') | ||
|  | 
 | ||
|  |         self.add_output('LnxNodeSocketAction', 'Loop') | ||
|  |         self.add_output('LnxIntSocket', 'Index') | ||
|  |         self.add_output('LnxNodeSocketAction', 'Done') | ||
|  | 
 | ||
|  |     def draw_label(self) -> str: | ||
|  |         inp_from = self.inputs['From'] | ||
|  |         inp_to = self.inputs['To'] | ||
|  |         if inp_from.is_linked and inp_to.is_linked: | ||
|  |             return self.bl_label | ||
|  | 
 | ||
|  |         val_from = 'x' if inp_from.is_linked else inp_from.default_value_raw | ||
|  |         val_to = 'y' if inp_to.is_linked else inp_to.default_value_raw | ||
|  | 
 | ||
|  |         return f'{self.bl_label}: {val_from}...{val_to}' |