]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/rigidbody.h
Implement a simple physics system in Bassteroids
[libs/game.git] / examples / bassteroids / source / rigidbody.h
diff --git a/examples/bassteroids/source/rigidbody.h b/examples/bassteroids/source/rigidbody.h
new file mode 100644 (file)
index 0000000..8a7a5b3
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef RIGIDBODY_H_
+#define RIGIDBODY_H_
+
+#include <msp/game/component.h>
+#include <msp/geometry/angle.h>
+#include <msp/linal/vector.h>
+
+struct RigidBodySetup
+{
+       float mass = 1.0f;
+};
+
+class RigidBody: public Msp::Game::Component
+{
+public:
+       using Setup = RigidBodySetup;
+
+private:
+       const Setup &setup;
+       Msp::LinAl::Vector<float, 2> velocity;
+
+public:
+       RigidBody(Msp::Game::Handle<Msp::Game::Entity>, const Setup &);
+
+       float get_mass() const { return setup.mass; }
+       void set_velocity(const Msp::LinAl::Vector<float, 2> &);
+       const Msp::LinAl::Vector<float, 2> &get_velocity() const { return velocity; }
+};
+
+#endif