54 virtual void Create()
override;
55 virtual void Destroy()
override;
59 virtual void Tick(
float deltaTime)
override;
63 virtual void Render()
override;
66 virtual void SetTransform(
const glm::mat4& transform)
override;
68 void EnablePhysics(
bool enable);
69 void EnableCollision(
bool enable);
70 void EnableOverlaps(
bool enable);
71 bool IsPhysicsEnabled()
const;
72 bool IsCollisionEnabled()
const;
73 bool AreOverlapsEnabled()
const;
75 float GetCullDistance()
const;
76 void SetCullDistance(
float cullDistance);
78 float GetMass()
const;
79 float GetLinearDamping()
const;
80 float GetAngularDamping()
const;
81 float GetRestitution()
const;
82 float GetFriction()
const;
83 float GetRollingFriction();
84 glm::vec3 GetLinearFactor()
const;
85 glm::vec3 GetAngularFactor()
const;
86 uint8_t GetCollisionGroup()
const;
87 uint8_t GetCollisionMask()
const;
89 void SetMass(
float mass);
90 void SetLinearDamping(
float linearDamping);
91 void SetAngularDamping(
float angularDamping);
92 void SetRestitution(
float restitution);
93 void SetFriction(
float friction);
94 void SetRollingFriction(
float rollingFriction);
95 void SetLinearFactor(glm::vec3 linearFactor);
96 void SetAngularFactor(glm::vec3 angularFactor);
97 void SetCollisionGroup(uint8_t group);
98 void SetCollisionMask(uint8_t mask);
100 glm::vec3 GetLinearVelocity()
const;
101 glm::vec3 GetAngularVelocity()
const;
103 void AddLinearVelocity(glm::vec3 deltaVelocity);
104 void AddAngularVelocity(glm::vec3 deltaVelocity);
105 void SetLinearVelocity(glm::vec3 linearVelocity);
106 void SetAngularVelocity(glm::vec3 angularVelocity);
107 void AddForce(glm::vec3 force);
108 void AddImpulse(glm::vec3 impulse);
111 void FullSyncRigidBodyTransform();
113 void SyncRigidBodyTransform();
114 void SyncRigidBodyMass();
115 void SyncCollisionFlags();
117 void EnableCastShadows(
bool enable);
118 bool ShouldCastShadows()
const;
120 void EnableReceiveShadows(
bool enable);
121 bool ShouldReceiveShadows()
const;
123 void EnableReceiveSimpleShadows(
bool enable);
124 bool ShouldReceiveSimpleShadows()
const;
126 uint8_t GetLightingChannels()
const;
127 void SetLightingChannels(uint8_t channels);
131 btRigidBody* GetRigidBody();
132 btCollisionShape* GetCollisionShape();
133 void SetCollisionShape(btCollisionShape* newShape);
136 bool SweepToWorldPosition(glm::vec3 position,
SweepTestResult& outSweepResult, uint8_t mask = 0,
bool testOnly =
false);
137 bool SweepTest(glm::vec3 position,
SweepTestResult& outSweepResult, uint8_t mask = 0);
140 virtual Bounds GetLocalBounds()
const;
146 glm::vec4 GetCollisionDebugColor();
150 static btCollisionShape* GetEmptyCollisionShape();
152 bool IsRigidBodyInWorld()
const;
153 void EnableRigidBody(
bool enable);
154 void DestroyComponentCollisionShape();
156 btRigidBody* mRigidBody =
nullptr;
157 PolyphaseMotionState* mMotionState =
nullptr;
158 btCollisionShape* mCollisionShape =
nullptr;
160 float mCullDistance = 0.0f;
164 float mRestitution = 0.0f;
165 float mFriction = 0.5f;
168 uint8_t mLightingChannels = 0x01;
170 bool mPhysicsEnabled =
false;
171 bool mCollisionEnabled =
false;
172 bool mOverlapsEnabled =
false;
173 bool mCastShadows =
false;
174 bool mReceiveShadows =
true;
175 bool mReceiveSimpleShadows =
true;