X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Frigidbody.h;h=aaffdc03c19eec0f18d131d88dd773d6aa8633d6;hb=da195e0fa114b82708d7c2bbd6297590f34f79a4;hp=8a7a5b3568a6b75920366480687161c65360f95f;hpb=0636566dd84ca185d3e9a6fae02459569c42d220;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/rigidbody.h b/examples/bassteroids/source/rigidbody.h index 8a7a5b3..aaffdc0 100644 --- a/examples/bassteroids/source/rigidbody.h +++ b/examples/bassteroids/source/rigidbody.h @@ -8,6 +8,7 @@ struct RigidBodySetup { float mass = 1.0f; + float moment_of_inertia = 0.5f; }; class RigidBody: public Msp::Game::Component @@ -18,13 +19,25 @@ public: private: const Setup &setup; Msp::LinAl::Vector velocity; + Msp::Geometry::Angle angular_velocity; + Msp::LinAl::Vector force; + float torque = 0.0f; public: RigidBody(Msp::Game::Handle, const Setup &); float get_mass() const { return setup.mass; } + float get_moment_of_inertia() const { return setup.moment_of_inertia; } void set_velocity(const Msp::LinAl::Vector &); + void set_angular_velocity(Msp::Geometry::Angle); + void add_force(const Msp::LinAl::Vector &); + void add_force(const Msp::LinAl::Vector &, const Msp::LinAl::Vector &); + void add_torque(float); + void clear_forces(); const Msp::LinAl::Vector &get_velocity() const { return velocity; } + Msp::Geometry::Angle get_angular_velocity() const { return angular_velocity; } + const Msp::LinAl::Vector &get_force() const { return force; } + float get_torque() const { return torque; } }; #endif