12 #ifndef hifi_CharacterGhostObject_h
13 #define hifi_CharacterGhostObject_h
17 #include <btBulletDynamicsCommon.h>
18 #include <BulletCollision/CollisionDispatch/btGhostObject.h>
21 #include "CharacterSweepResult.h"
22 #include "CharacterRayResult.h"
24 class CharacterGhostShape;
26 class CharacterGhostObject :
public btGhostObject {
28 CharacterGhostObject() { }
29 ~CharacterGhostObject();
31 void setCollisionGroupAndMask(int32_t group, int32_t mask);
32 void getCollisionGroupAndMask(int32_t& group, int32_t& mask)
const;
34 void setRadiusAndHalfHeight(btScalar radius, btScalar halfHeight);
35 void setUpDirection(
const btVector3& up);
37 void setCharacterShape(btConvexHullShape* shape);
39 void setCollisionWorld(btCollisionWorld* world);
41 bool rayTest(
const btVector3& start,
43 CharacterRayResult& result)
const;
45 void refreshOverlappingPairCache();
48 void removeFromWorld();
52 btCollisionWorld* _world {
nullptr };
53 btScalar _halfHeight { 0.0f };
54 btScalar _radius { 0.0f };
55 btConvexHullShape* _characterShape {
nullptr };
56 CharacterGhostShape* _ghostShape {
nullptr };
57 int32_t _collisionFilterGroup { 0 };
58 int32_t _collisionFilterMask { 0 };
59 bool _inWorld {
false };