1- from stlib .core .parameters import EntityParameters
2- import dataclasses
3- import Sofa
1+ from stlib .core .basePrefab import BasePrefab
2+ from stlib .core .baseParameters import BaseParameters , Callable , Optional , dataclasses , Any
3+ from stlib .geometry import GeometryParameters
4+ from Sofa .Core import Object
45
5- class VisualModel ( Sofa . Core . BasePrefab ):
6- @ dataclasses . dataclass
7- class Parameters ( EntityParameters ):
8- name : str = "VisualModel"
6+ @ dataclasses . dataclass
7+ class VisualParameters ( BaseParameters ):
8+ color : Optional [ list [ float ]]
9+ texture : Optional [ str ]
910
10- filename : str = "mesh/sphere_02.obj"
11-
12- renderer : dict = dataclasses .field (default_factory = dict )
13- mapping : dict = dataclasses .field (default_factory = dict )
11+ geometry : GeometryParameters
12+ addMapping : Optional [Callable ]
1413
1514
15+ class Visual (BasePrefab ):
16+ container : Object # This should be more specialized into the right SOFA type
17+ modifier : Optional [Object ]
1618
17- def __init__ (self , parent = None , parameters : VisualModelParameters = VisualModelParameters () ):
18- Sofa . Core . Node . __init__ (self , name = parameters . name )
19+ def __init__ (self , params : GeometryParameters ):
20+ BasePrefab . __init__ (self , params )
1921
20- if parent != None :
21- parent .addChild (self )
22-
23- self .addObject ("MeshOBJLoader" , name = "loader" , filename = parameters .filename )
24- self .addRenderer (** to_dict (parameters .renderer ) | {"src" : "@loader" } )
25- self .addMapping (** to_dict (parameters .mapping ) )
26-
27- def addRenderer (self , ** kwargs ):
28- self .addObject ("OglModel" , name = "renderer" , ** kwargs )
29-
30- def addMapping (self , ** kwargs ):
31- self .addObject ("RigidMapping" , name = "mapping" , ** kwargs )
32-
0 commit comments