Skip to content

Commit 879b59d

Browse files
committed
Add first implem of entity
1 parent 1c32b92 commit 879b59d

4 files changed

Lines changed: 32 additions & 19 deletions

File tree

stlib/entities/__entity__.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,28 @@
33
from stlib.prefabs.visual import VisualParameters, Visual
44
from stlib.prefabs.behavior import Behavior, BehaviorParameters
55
from stlib.geometry import Geometry
6+
from stlib.geometry.extract import ExtractParameters
67
import dataclasses
78
from typing import Callable, Optional, overload, Any
89
from stlib.geometry import GeometryParameters
10+
from splib.core.enum_types import StateType
911
import Sofa
1012

1113

1214
@dataclasses.dataclass
1315
class EntityParameters(BaseParameters):
1416
name = "Entity"
1517

16-
# addSimulation : Callable = Simulation
17-
#setConstitutiveLaw # : Callable = addBidule
18-
#setBoundaryCondition #: Callable = addBidule
18+
template : StateType
1919

20+
### QUID
2021
addCollision : Optional[Callable] = lambda x : Collision(CollisionParameters())
2122
addVisual : Optional[Callable] = lambda x : Visual(VisualParameters())
2223

2324
geometry : GeometryParameters
24-
# mechanical : dict = dataclasses.field(default_factory=dict)
25+
behavior : BehaviorParameters
2526
collision : Optional[CollisionParameters] = None
2627
visual : Optional[VisualParameters] = None
27-
# simulation : SimulationParameters = SimulationParameters()
2828

2929

3030

@@ -47,16 +47,29 @@ def __init__(self, parent=None, parameters=EntityParameters(), **kwargs):
4747

4848
self.parameters = parameters
4949

50-
self.add(Geometry, self.parameters.geometry)
51-
self.addBehavior(parameters=parameters.behavior)
52-
self.addVisual(parameters=parameters.visual)
53-
self.addCollision(parameters=parameters.collision)
50+
self.geometry = self.add(Geometry, self.parameters.geometry)
5451

55-
def addBehavior(self, **kwargs):
56-
self.parameters.addBehavior(self, **kwargs)
52+
### Check compatilibility of Behavior
53+
if self.parameters.behavior.stateType != self.parameters.template:
54+
print("WARNING: imcompatibility between templates of entity and behavior")
55+
self.parameters.behavior.stateType = self.parameters.template
5756

58-
def addVisual(self, **kwargs):
59-
self.parameters.addVisual(self, **kwargs)
57+
self.behavior = self.add(Behavior,self.parameters.behavior)
58+
59+
if self.parameters.collision is not None:
60+
self.collision = self.add(Collision,self.parameters.collision)
61+
self.addMapping(self.parameters.collision, self.collision)
62+
63+
64+
if self.parameters.visual is not None:
65+
self.visual = self.add(Visual,self.parameters.visual)
66+
self.addMapping(self.parameters.visual, self.visual)
6067

61-
def addCollision(self, **kwargs):
62-
self.parameters.addCollision(self, **kwargs)
68+
def addMapping(self, destParameter, destPrefab):
69+
if( self.parameters.template == StateType.VEC3):
70+
if isinstance(destParameter.geometry,ExtractParameters):
71+
destPrefab.addObject("IdentityMapping", input="@../behavior/", output="@.", template='Vec3,Vec3')
72+
else :
73+
destPrefab.addObject("BarycentricMapping", input="@../behavior/", output="@.", template='Vec3,Vec3')
74+
else:
75+
destPrefab.addObject("RigidMapping", input="@../behavior", output="@.", template='Rigid3,Vec3')

stlib/prefabs/behavior.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from stlib.core.baseParameters import BaseParameters, Callable, Optional, dataclasses, Any
22
from splib.core.enum_types import StateType
3+
from stlib.core.basePrefab import BasePrefab
34

45

56
@dataclasses.dataclass
@@ -13,3 +14,6 @@ class BehaviorParameters(BaseParameters):
1314

1415

1516

17+
class Behavior(BasePrefab):
18+
def __init__(self, params: BehaviorParameters):
19+
BasePrefab.__init__(self, params)

stlib/prefabs/collision.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class CollisionParameters(BaseParameters):
1717
contactDistance : Optional[float] = DEFAULT_VALUE
1818

1919
geometry : GeometryParameters = dataclasses.field(default_factory = lambda : GeometryParameters())
20-
addMapping : Optional[Callable] = None
2120

2221

2322
class Collision(BasePrefab):
@@ -34,8 +33,6 @@ def __init__(self, params: CollisionParameters):
3433
group=params.group,
3534
**params.kwargs)
3635

37-
if params.addMapping is not None:
38-
params.addMapping(self)
3936

4037
@staticmethod
4138
def getParameters(**kwargs) -> CollisionParameters:

stlib/prefabs/visual.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class VisualParameters(BaseParameters):
1212
texture : Optional[str] = None
1313

1414
geometry : GeometryParameters = dataclasses.field(default_factory = lambda : GeometryParameters())
15-
addMapping : Optional[Callable] = None
1615

1716

1817
class Visual(BasePrefab):

0 commit comments

Comments
 (0)