@@ -542,6 +542,44 @@ def __init__(self, name: str, scene: "Scene"):
542
542
self .name = name
543
543
544
544
545
+ class InvisibleAdder :
546
+ def __init__ (self , scene : "Scene" ):
547
+ self ._scene = scene
548
+
549
+ def sphere (self , position : list [float ], radius : float ) -> Sphere :
550
+ sphere = Sphere ().add (position , radius )
551
+ self ._scene ._sphere .append (sphere )
552
+ return sphere
553
+
554
+ def wall (self , position : list [float ], normal : list [float ]) -> Wall :
555
+ wall = Wall ().add (position , normal )
556
+ self ._scene ._wall .append (wall )
557
+ return wall
558
+
559
+
560
+ class SessionAdder :
561
+ def __init__ (self , scene : "Scene" ):
562
+ self ._scene = scene
563
+ self .invisible = InvisibleAdder (scene )
564
+
565
+ def __call__ (self , mesh_name : str , ref_name : str = "" ) -> "Object" :
566
+ if ref_name == "" :
567
+ ref_name = mesh_name
568
+ count = 0
569
+ while ref_name in self ._scene ._object .keys ():
570
+ count += 1
571
+ ref_name = f"{ mesh_name } _{ count } "
572
+ mesh_list = self ._scene ._asset .list ()
573
+ if mesh_name not in mesh_list :
574
+ raise Exception (f"mesh_name '{ mesh_name } ' does not exist" )
575
+ elif ref_name in self ._scene ._object .keys ():
576
+ raise Exception (f"ref_name '{ ref_name } ' already exists" )
577
+ else :
578
+ obj = Object (self ._scene ._asset , mesh_name )
579
+ self ._scene ._object [ref_name ] = obj
580
+ return obj
581
+
582
+
545
583
class Scene :
546
584
def __init__ (self , name : str , plot : PlotManager , asset : AssetManager , save_func ):
547
585
self ._name = name
@@ -551,45 +589,19 @@ def __init__(self, name: str, plot: PlotManager, asset: AssetManager, save_func)
551
589
self ._object = {}
552
590
self ._sphere = []
553
591
self ._wall = []
592
+ self .add = SessionAdder (self )
554
593
self .info = SceneInfo (name , self )
555
594
556
595
def clear (self ) -> "Scene" :
557
596
self ._object .clear ()
558
597
return self
559
598
560
- def add (self , mesh_name : str , ref_name : str = "" ) -> "Object" :
561
- if ref_name == "" :
562
- ref_name = mesh_name
563
- count = 0
564
- while ref_name in self ._object .keys ():
565
- count += 1
566
- ref_name = f"{ mesh_name } _{ count } "
567
- mesh_list = self ._asset .list ()
568
- if mesh_name not in mesh_list :
569
- raise Exception (f"mesh_name '{ mesh_name } ' does not exist" )
570
- elif ref_name in self ._object .keys ():
571
- raise Exception (f"ref_name '{ ref_name } ' already exists" )
572
- else :
573
- obj = Object (self ._asset , mesh_name )
574
- self ._object [ref_name ] = obj
575
- return obj
576
-
577
599
def pick (self , name : str ) -> "Object" :
578
600
if name not in self ._object .keys ():
579
601
raise Exception (f"object { name } does not exist" )
580
602
else :
581
603
return self ._object [name ]
582
604
583
- def add_invisible_sphere (self , position : list [float ], radius : float ) -> Sphere :
584
- sphere = Sphere ().add (position , radius )
585
- self ._sphere .append (sphere )
586
- return sphere
587
-
588
- def add_invisible_wall (self , position : list [float ], normal : list [float ]) -> Wall :
589
- wall = Wall ().add (position , normal )
590
- self ._wall .append (wall )
591
- return wall
592
-
593
605
def build (self ) -> FixedScene :
594
606
pbar = tqdm (total = 10 , desc = "build" , ncols = 70 )
595
607
concat_count = 0
0 commit comments