raylib-cpp
C++ object-oriented wrapper library for raylib.
Physics.hpp
1 #ifndef RAYLIB_CPP_INCLUDE_PHYSICS_HPP_
2 #define RAYLIB_CPP_INCLUDE_PHYSICS_HPP_
3 
4 #include "./raylib.hpp"
5 #include "./physac.hpp"
6 #include "./Vector2.hpp"
7 
8 namespace raylib {
12 class Physics {
13  public:
14  Physics() {
15  Init();
16  }
17 
18  Physics(float gravityY) {
19  Init();
20  SetGravity(0, gravityY);
21  }
22 
23  Physics(float gravityX, float gravityY) {
24  Init();
25  SetGravity(gravityX, gravityY);
26  }
27 
28  ~Physics() {
29  Close();
30  }
31 
32  inline Physics& Init() {
33  ::InitPhysics();
34  return *this;
35  }
36 
37  inline Physics& Update() {
38  ::UpdatePhysics();
39  return *this;
40  }
41 
42  inline Physics& Reset() {
43  ::ResetPhysics();
44  return *this;
45  }
46 
47  inline Physics& Close() {
48  ::ClosePhysics();
49  return *this;
50  }
51 
52  inline Physics& SetTimeStep(double delta) {
53  ::SetPhysicsTimeStep(delta);
54  return *this;
55  }
56 
57  inline Physics& SetGravity(float x, float y) {
58  ::SetPhysicsGravity(x, y);
59  return *this;
60  }
61 
62  inline PhysicsBody CreateBodyCircle(Vector2 pos, float radius, float density) {
63  return ::CreatePhysicsBodyCircle(pos, radius, density);
64  }
65 
66  inline PhysicsBody CreateBodyRectangle(Vector2 pos, float width, float height, float density) {
67  return ::CreatePhysicsBodyRectangle(pos, width, height, density);
68  }
69 
70  inline PhysicsBody CreateBodyPolygon(Vector2 pos, float radius, int sides, float density) {
71  return ::CreatePhysicsBodyPolygon(pos, radius, sides, density);
72  }
73 
74  inline Physics& DestroyBody(PhysicsBody body) {
75  ::DestroyPhysicsBody(body);
76  return *this;
77  }
78 
79  inline Physics& AddForce(PhysicsBody body, Vector2 force) {
80  ::PhysicsAddForce(body, force);
81  return *this;
82  }
83 
84  inline Physics& AddTorque(PhysicsBody body, float amount) {
85  ::PhysicsAddTorque(body, amount);
86  return *this;
87  }
88 
89  inline Physics& Shatter(PhysicsBody body, Vector2 position, float force) {
90  ::PhysicsShatter(body, position, force);
91  return *this;
92  }
93 
94  inline Physics& SetBodyRotation(PhysicsBody body, float radians) {
95  ::SetPhysicsBodyRotation(body, radians);
96  return *this;
97  }
98 
99  inline int GetBodiesCount() const {
100  return ::GetPhysicsBodiesCount();
101  }
102 
103  inline PhysicsBody GetBody(int index) const {
104  return ::GetPhysicsBody(index);
105  }
106 
107  inline int GetShapeType(int index) const {
108  return ::GetPhysicsShapeType(index);
109  }
110 
111  inline int GetShapeVerticesCount(int index) const {
112  return ::GetPhysicsShapeVerticesCount(index);
113  }
114 
115  inline Vector2 GetShapeVertex(PhysicsBody body, int vertex) const {
116  return ::GetPhysicsShapeVertex(body, vertex);
117  }
118 };
119 } // namespace raylib
120 
121 #endif // RAYLIB_CPP_INCLUDE_PHYSICS_HPP_
raylib
All raylib-cpp classes and functions appear in the raylib namespace.
Definition: AudioDevice.hpp:8
raylib::Physics
2D Physics library for videogames
Definition: Physics.hpp:12
raylib::Vector2
Vector2 type.
Definition: Vector2.hpp:16