]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/rigidbody.cpp
Convert components to buffered where appropriate
[libs/game.git] / examples / bassteroids / source / rigidbody.cpp
index 391707a574ee40b2e8b36f8fd098961aab95ab4f..d677fb7ab778c0964cd777d593d58e179ce5987f 100644 (file)
@@ -5,39 +5,41 @@
 using namespace Msp;
 
 RigidBody::RigidBody(Game::Handle<Game::Entity> e, const Setup &s):
-       Component(e),
+       BufferedComponent<RigidBodyData>(e),
        setup(s)
 { }
 
 void RigidBody::set_velocity(const LinAl::Vector<float, 2> &v)
 {
-       velocity = v;
+       write().velocity = v;
 }
 
 void RigidBody::set_angular_velocity(Geometry::Angle<float> as)
 {
-       angular_velocity = as;
+       write().angular_velocity = as;
 }
 
 void RigidBody::add_force(const LinAl::Vector<float, 2> &f)
 {
-       force += f;
+       write().force += f;
 }
 
 void RigidBody::add_force(const LinAl::Vector<float, 2> &f, const LinAl::Vector<float, 2> &p)
 {
-       force += f;
+       Data &d = write();
+       d.force += f;
        LinAl::Vector<float, 2> r = p-entity->get_transform()->get_position().slice<2>(0);
-       torque += r.x*f.y-r.y*f.x;
+       d.torque += r.x*f.y-r.y*f.x;
 }
 
 void RigidBody::add_torque(float t)
 {
-       torque += t;
+       write().torque += t;
 }
 
 void RigidBody::clear_forces()
 {
-       force = LinAl::Vector<float, 2>();
-       torque = 0.0f;
+       Data &d = write();
+       d.force = LinAl::Vector<float, 2>();
+       d.torque = 0.0f;
 }