Imported Upstream version 2.81
[platform/upstream/libbullet.git] / Demos / GenericJointDemo / Ragdoll.h
1 #ifndef RAGDOLL_H_INCLUDED
2 #define RAGDOLL_H_INCLUDED
3
4 #include "DemoApplication.h"
5 #include "LinearMath/btAlignedObjectArray.h"
6 #include "btBulletDynamicsCommon.h"
7
8
9
10
11 class RagDoll
12 {
13         enum
14         {
15                 BODYPART_PELVIS = 0,
16                 BODYPART_SPINE,
17                 BODYPART_HEAD,
18
19                 BODYPART_LEFT_UPPER_LEG,
20                 BODYPART_LEFT_LOWER_LEG,
21
22                 BODYPART_RIGHT_UPPER_LEG,
23                 BODYPART_RIGHT_LOWER_LEG,
24
25                 BODYPART_LEFT_UPPER_ARM,
26                 BODYPART_LEFT_LOWER_ARM,
27
28                 BODYPART_RIGHT_UPPER_ARM,
29                 BODYPART_RIGHT_LOWER_ARM,
30
31                 BODYPART_COUNT
32         };
33
34         enum
35         {
36                 JOINT_PELVIS_SPINE = 0,
37                 JOINT_SPINE_HEAD,
38
39                 JOINT_LEFT_HIP,
40                 JOINT_LEFT_KNEE,
41
42                 JOINT_RIGHT_HIP,
43                 JOINT_RIGHT_KNEE,
44
45                 JOINT_LEFT_SHOULDER,
46                 JOINT_LEFT_ELBOW,
47
48                 JOINT_RIGHT_SHOULDER,
49                 JOINT_RIGHT_ELBOW,
50
51                 JOINT_COUNT
52         };
53
54         btDynamicsWorld* m_ownerWorld;
55         btCollisionShape* m_shapes[BODYPART_COUNT];
56         btRigidBody* m_bodies[BODYPART_COUNT];
57         btTypedConstraint* m_joints[JOINT_COUNT];
58
59         btRigidBody* localCreateRigidBody (btScalar mass, const btTransform& startTransform, btCollisionShape* shape);
60
61 public:
62         RagDoll (btDynamicsWorld* ownerWorld,
63                                 const btVector3& positionOffset,
64                                 btScalar scale_ragdoll = btScalar(1.0));
65
66         ~RagDoll ();
67 };
68
69
70
71 #endif // RAGDOLL_H_INCLUDED