forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			58 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import bpy | ||
|  | 
 | ||
|  | from lnx.logicnode.lnx_nodes import * | ||
|  | 
 | ||
|  | 
 | ||
|  | class SpawnCollectionNode(LnxLogicTreeNode): | ||
|  |     """
 | ||
|  |     Spawns a new instance of the selected `collection` from the given `scene`.  | ||
|  |     If the `scene` is empty or null, the current active scene is used. Each spawned  | ||
|  |     instance has an empty owner object to control the instance as a whole (like Blender | ||
|  |     uses it for collection instances). | ||
|  | 
 | ||
|  |     @input Scene: Scene in which the collection belongs. | ||
|  |     @input Collection: Collection to be spawned. | ||
|  |     @input In: activates the node. | ||
|  |     @input Transform: the transformation of the instance that should be | ||
|  |         spawned. Please note that the collection's instance offset is | ||
|  |         also taken into account. | ||
|  | 
 | ||
|  |     @output Out: activated when a collection instance was spawned. It is | ||
|  |         not activated when no collection is selected. | ||
|  |     @output Top-Level Objects: all objects in the last spawned | ||
|  |         collection that are direct children of the owner object of the | ||
|  |         collection's instance. | ||
|  |     @output All Objects: all objects in the last spawned collection. | ||
|  |     @output Owner Object: The owning object of the last spawned | ||
|  |         collection's instance. | ||
|  |     """
 | ||
|  |     bl_idname = 'LNSpawnCollectionNode' | ||
|  |     bl_label = 'Spawn Collection' | ||
|  |     lnx_section = 'collection' | ||
|  |     lnx_version = 2 | ||
|  | 
 | ||
|  |     property0: HaxePointerProperty('property0', name='Collection', type=bpy.types.Collection) | ||
|  | 
 | ||
|  |     property1: HaxePointerProperty( | ||
|  |         'property1', | ||
|  |         type=bpy.types.Scene, name='Scene', | ||
|  |         description='The scene from which to take the object') | ||
|  | 
 | ||
|  |     def lnx_init(self, context): | ||
|  |         self.add_input('LnxNodeSocketAction', 'In') | ||
|  |         self.add_input('LnxDynamicSocket', 'Transform') | ||
|  | 
 | ||
|  |         self.add_output('LnxNodeSocketAction', 'Out') | ||
|  |         self.add_output('LnxNodeSocketArray', 'Top-Level Objects') | ||
|  |         self.add_output('LnxNodeSocketArray', 'All Objects') | ||
|  |         self.add_output('LnxNodeSocketObject', 'Owner Object') | ||
|  | 
 | ||
|  |     def draw_buttons(self, context, layout): | ||
|  |         layout.prop_search(self, 'property1', bpy.data, "scenes") | ||
|  |         layout.prop_search(self, 'property0', bpy.data, 'collections', icon='NONE', text='') | ||
|  | 
 | ||
|  |     def get_replacement_node(self, node_tree: bpy.types.NodeTree): | ||
|  |         if self.lnx_version not in (0, 1): | ||
|  |             raise LookupError() | ||
|  | 
 | ||
|  |         return NodeReplacement.Identity(self) |