[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / src / BulletCollision / CollisionDispatch / btCollisionObjectWrapper.h
1 #ifndef BT_COLLISION_OBJECT_WRAPPER_H
2 #define BT_COLLISION_OBJECT_WRAPPER_H
3
4 ///btCollisionObjectWrapperis an internal data structure.
5 ///Most users can ignore this and use btCollisionObject and btCollisionShape instead
6 class btCollisionShape;
7 class btCollisionObject;
8 class btTransform;
9 #include "LinearMath/btScalar.h"  // for SIMD_FORCE_INLINE definition
10
11 #define BT_DECLARE_STACK_ONLY_OBJECT \
12 private:                             \
13         void* operator new(size_t size); \
14         void operator delete(void*);
15
16 struct btCollisionObjectWrapper;
17 struct btCollisionObjectWrapper
18 {
19         BT_DECLARE_STACK_ONLY_OBJECT
20
21 private:
22         btCollisionObjectWrapper(const btCollisionObjectWrapper&);  // not implemented. Not allowed.
23         btCollisionObjectWrapper* operator=(const btCollisionObjectWrapper&);
24
25 public:
26         const btCollisionObjectWrapper* m_parent;
27         const btCollisionShape* m_shape;
28         const btCollisionObject* m_collisionObject;
29         const btTransform& m_worldTransform;
30     const btTransform* m_preTransform;
31         int m_partId;
32         int m_index;
33
34         btCollisionObjectWrapper(const btCollisionObjectWrapper* parent, const btCollisionShape* shape, const btCollisionObject* collisionObject, const btTransform& worldTransform, int partId, int index)
35                 : m_parent(parent), m_shape(shape), m_collisionObject(collisionObject), m_worldTransform(worldTransform), m_preTransform(NULL), m_partId(partId), m_index(index)
36         {
37         }
38     
39     btCollisionObjectWrapper(const btCollisionObjectWrapper* parent, const btCollisionShape* shape, const btCollisionObject* collisionObject, const btTransform& worldTransform, const btTransform& preTransform, int partId, int index)
40     : m_parent(parent), m_shape(shape), m_collisionObject(collisionObject), m_worldTransform(worldTransform), m_preTransform(&preTransform), m_partId(partId), m_index(index)
41     {
42     }
43
44         SIMD_FORCE_INLINE const btTransform& getWorldTransform() const { return m_worldTransform; }
45         SIMD_FORCE_INLINE const btCollisionObject* getCollisionObject() const { return m_collisionObject; }
46         SIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const { return m_shape; }
47 };
48
49 #endif  //BT_COLLISION_OBJECT_WRAPPER_H