X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Frigidbody.h;h=b75d034ab98e03b42a4beb81cb08d21532d1f4b4;hb=bfbcfa2678c70d661cb9104b2ef677d7d7b5a637;hp=aaffdc03c19eec0f18d131d88dd773d6aa8633d6;hpb=a99b57a74252fd3de649d544d070b747f91fcf4d;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/rigidbody.h b/examples/bassteroids/source/rigidbody.h index aaffdc0..b75d034 100644 --- a/examples/bassteroids/source/rigidbody.h +++ b/examples/bassteroids/source/rigidbody.h @@ -11,17 +11,21 @@ struct RigidBodySetup float moment_of_inertia = 0.5f; }; -class RigidBody: public Msp::Game::Component +struct RigidBodyData +{ + Msp::LinAl::Vector velocity; + Msp::Geometry::Angle angular_velocity; + Msp::LinAl::Vector force; + float torque = 0.0f; +}; + +class RigidBody: public Msp::Game::BufferedComponent { public: using Setup = RigidBodySetup; 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 &); @@ -34,10 +38,10 @@ public: 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; } + const Msp::LinAl::Vector &get_velocity() const { return read().velocity; } + Msp::Geometry::Angle get_angular_velocity() const { return read().angular_velocity; } + const Msp::LinAl::Vector &get_force() const { return read().force; } + float get_torque() const { return read().torque; } }; #endif