12 #ifndef hifi_AvatarMotionState_h
13 #define hifi_AvatarMotionState_h
17 #include <ObjectMotionState.h>
18 #include <BulletUtil.h>
20 #include "OtherAvatar.h"
22 class AvatarMotionState :
public ObjectMotionState {
24 AvatarMotionState(OtherAvatarPointer avatar,
const btCollisionShape* shape);
26 void handleEasyChanges(uint32_t& flags)
override;
28 PhysicsMotionType getMotionType()
const override {
return _motionType; }
30 uint32_t getIncomingDirtyFlags()
const override;
31 void clearIncomingDirtyFlags(uint32_t mask = DIRTY_PHYSICS_FLAGS)
override;
33 PhysicsMotionType computePhysicsMotionType()
const override;
35 bool isMoving()
const override;
38 void getWorldTransform(btTransform& worldTrans)
const override;
41 void setWorldTransform(
const btTransform& worldTrans)
override;
48 float getObjectRestitution()
const override;
49 float getObjectFriction()
const override;
50 float getObjectLinearDamping()
const override;
51 float getObjectAngularDamping()
const override;
53 glm::vec3 getObjectPosition()
const override;
54 glm::quat getObjectRotation()
const override;
55 glm::vec3 getObjectLinearVelocity()
const override;
56 glm::vec3 getObjectAngularVelocity()
const override;
57 glm::vec3 getObjectGravity()
const override;
59 const QUuid getObjectID()
const override;
61 QString getName()
const override;
62 ShapeType getShapeType()
const override {
return SHAPE_TYPE_CAPSULE_Y; }
63 QUuid getSimulatorID()
const override;
65 void setBoundingBox(
const glm::vec3& corner,
const glm::vec3& diagonal);
67 void addDirtyFlags(uint32_t flags) { _dirtyFlags |= flags; }
69 void setCollisionGroup(int32_t group) { _collisionGroup = group; }
70 int32_t getCollisionGroup() {
return _collisionGroup; }
72 void computeCollisionGroupAndMask(int32_t& group, int32_t& mask)
const override;
74 float getMass()
const override;
76 friend class AvatarManager;
80 void setRigidBody(btRigidBody* body)
override;
81 void setShape(
const btCollisionShape* shape)
override;
82 void cacheShapeDiameter();
88 OtherAvatarPointer _avatar;
89 float _diameter { 0.0f };
90 int32_t _collisionGroup;