@@ -13,6 +13,7 @@ class TreeMesherNode(bpy.types.Node, MtreeNode):
1313
1414    radial_resolution  : bpy .props .IntProperty (name = "Radial Resolution" , default = 32 , min = 3 , update = on_update_prop )
1515    smoothness  : bpy .props .IntProperty (name = "smoothness" , default = 4 , min = 0 , update = on_update_prop )
16+     tree_object  : bpy .props .StringProperty (default = "" )
1617
1718    def  init (self , context ):
1819        self .add_output ("mt_TreeSocket" , "Tree" , is_property = False )
@@ -24,19 +25,28 @@ def draw_generate(self, container):
2425        properties .function_name  =  "build_tree" 
2526
2627
28+     def  has_valid_tree_object (self ):
29+         return  bpy .context .scene .objects .get (self .tree_object , None ) is  not None 
30+ 
31+ 
2732    def  draw_properties (self , container ):
2833        container .prop (self , "radial_resolution" )
2934        container .prop (self , "smoothness" )
3035
3136    def  draw_distribute_leaves (self , container ):
32-         properties  =  container .operator ("mtree.add_leaves" , text = "Add leaves" )
33-         properties .object_id  =  self .get_current_tree_object ().name 
37+         if  self .has_valid_tree_object ():
38+             properties  =  container .operator ("mtree.add_leaves" , text = "Add leaves" )
39+             properties .object_id  =  self .get_current_tree_object ().name 
40+ 
41+     def  draw_current_tree_object (self , container , context ):
42+         container .prop_search (self , property = "tree_object" , search_data = context .scene , search_property = "objects" , text = "" )
3443
3544    def  draw (self , context , layout ):
3645        valid_tree  =  self .get_tree_validity ()
3746        generate_row  =  layout .row ()
3847        generate_row .enabled  =  valid_tree 
3948        self .draw_generate (generate_row )
49+         self .draw_current_tree_object (layout , context )
4050        self .draw_properties (layout )
4151        leaves_row  =  layout .row ()
4252        leaves_row .enabled  =  valid_tree 
@@ -60,11 +70,14 @@ def mesh_tree(self, tree):
6070        return  mesh_data 
6171
6272    def  get_current_tree_object (self ):
63-         tree_obj  =  bpy .context .object 
73+         tree_obj  =  bpy .context .scene . objects . get ( self . tree_object ,  None ) 
6474        if  tree_obj  is  None :
6575            tree_mesh  =  bpy .data .meshes .new ('tree' )
6676            tree_obj  =  bpy .data .objects .new ("tree" , tree_mesh )
6777            bpy .context .collection .objects .link (tree_obj )
78+             self .tree_object  =  tree_obj .name 
79+             bpy .context .view_layer .objects .active  =  tree_obj 
80+             tree_obj .select_set (True )
6881        return  tree_obj 
6982
7083    def  output_object (self , cp_mesh ):
0 commit comments