-
Notifications
You must be signed in to change notification settings - Fork 0
/
RigidBody.h
49 lines (35 loc) · 1.23 KB
/
RigidBody.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#pragma once
#include "Body.h"
#include "ColliderTester.h"
class RigidBody :
public Body
{
public:
RigidBody();
~RigidBody();
OBB getOrientedBoxCollider();
BoundingSphere getSphereCollider();
// set and get methods
void setAngVel(const glm::vec3 omega) { m_angVel = omega; }
void setAngAcc(const glm::vec3 alpha) { m_angAcc = alpha; }
void setInvInertia(const glm::mat3 &invInertia) { m_invInertia = invInertia; }
void setMass(float mass) { m_mass = mass; updateInvInertia(); }
glm::vec3 getAngVel() { return m_angVel; }
glm::vec3 getAngAcc() { return m_angAcc; }
glm::mat3 getInvInertia() { return m_invInertia; }
void scale(glm::vec3 vect) { m_mesh.scale(vect); updateInvInertia(); }
inline const glm::vec3& getScaleVec() const { return glm::vec3(getScale()[0].x, getScale()[1].y, getScale()[2].z); }
void updateInvInertia();
ColliderTester getCollider() { return m_collider; }
void addCollider(TYPE type) { m_collider.setType(type); }
// COLLISION DETECTION FUNCTION
IntersectData canCollideStatic();
IntersectData canCollideDynamic(RigidBody* other);
// CREATE COLLISION SHAPES FROM THE OBJECT
private:
float m_density;
glm::mat3 m_invInertia;
glm::vec3 m_angVel;
glm::vec3 m_angAcc;
ColliderTester m_collider;
};