-
Notifications
You must be signed in to change notification settings - Fork 54
Expand file tree
/
Copy pathcollision_model.py
More file actions
34 lines (29 loc) · 1.9 KB
/
collision_model.py
File metadata and controls
34 lines (29 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from splib.core.node_wrapper import ReusableMethod
from splib.core.utils import DEFAULT_VALUE
from splib.core.enum_types import CollisionPrimitive
@ReusableMethod
def addCollisionModels(node, primitive : CollisionPrimitive,
topology=DEFAULT_VALUE,
selfCollision=DEFAULT_VALUE,
proximity=DEFAULT_VALUE,
group=DEFAULT_VALUE,
contactStiffness=DEFAULT_VALUE,
contactFriction=DEFAULT_VALUE,
spheresRadius=DEFAULT_VALUE,
**kwargs):
match primitive:
case CollisionPrimitive.POINTS:
node.addObject("PointCollisionModel", name="PointCollision", topology=topology, selfCollision=selfCollision, proximity=proximity, contactStiffness=contactStiffness, contactFriction=contactFriction, group=group, **kwargs)
return
case CollisionPrimitive.LINES:
node.addObject("LineCollisionModel", name="EdgeCollision", topology=topology, selfCollision=selfCollision, proximity=proximity, contactStiffness=contactStiffness, contactFriction=contactFriction, group=group, **kwargs)
return
case CollisionPrimitive.TRIANGLES:
node.addObject("TriangleCollisionModel", name="TriangleCollision", topology=topology, selfCollision=selfCollision, proximity=proximity, contactStiffness=contactStiffness, contactFriction=contactFriction, group=group,**kwargs)
return
case CollisionPrimitive.SPHERES:
node.addObject("SphereCollisionModel", name="SphereCollision", topology=topology, selfCollision=selfCollision, proximity=proximity, contactStiffness=contactStiffness, contactFriction=contactFriction, group=group, radius=spheresRadius, **kwargs)
return
case _:
return
#Cube and tetra are missing.