-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPhysicsComponent.h
More file actions
50 lines (34 loc) · 1.3 KB
/
PhysicsComponent.h
File metadata and controls
50 lines (34 loc) · 1.3 KB
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
#ifndef PHYSICS_COMPONENT_H
#define PHYSICS_COMPONENT_H
#include "Component.h"
#include <DirectXMath.h>
using namespace DirectX;
class PhysicsComponent : public Component
{
public:
float GetMass() const { return 1.0f / mInverseMass; }
float GetInverseMass() const { return mInverseMass; }
void SetMass(float mass) { mInverseMass = 1.0f / mass; }
void SetInverseMass(float inverseMass) { mInverseMass = inverseMass; }
XMFLOAT3X3 GetInertiaTensorWorld() const;
XMFLOAT3X3 GetInverseInertiaTensorWorld() const;
void SetInertiaTensor(const XMFLOAT3X3 &inertiaTensor);
void AddForce(const XMFLOAT3 &force);
void AddForceToBody(const XMFLOAT3 &force, const XMFLOAT3 &applicationPoint);
void AddTorque(const XMFLOAT3 &torque);
void ClearForceAccumulator() { mForceAccumulator = XMFLOAT3(); }
void ClearTorqueAccumulator() { mTorqueAccumulator = XMFLOAT3(); }
XMFLOAT3 GetForce() const { return mForceAccumulator; }
XMFLOAT3 GetTorque() const { return mTorqueAccumulator; }
float GetRoughness() const { return mRoughness; }
float GetElasticity() const { return mElasticity; }
private:
float mInverseMass = 0.0f;
XMFLOAT3X3 mInertiaTensor;
XMFLOAT3X3 mInverseInertiaTensor;
XMFLOAT3 mForceAccumulator;
XMFLOAT3 mTorqueAccumulator;
float mRoughness;
float mElasticity;
};
#endif // PHYSICS_COMPONENT_H