X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Frigidbody.cpp;h=391707a574ee40b2e8b36f8fd098961aab95ab4f;hb=da195e0fa114b82708d7c2bbd6297590f34f79a4;hp=509e3a939cf0872ea4f2daa26e8f8184fe9c24cd;hpb=1819b186d60376a546722d99edd686e876b81d9f;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/rigidbody.cpp b/examples/bassteroids/source/rigidbody.cpp index 509e3a9..391707a 100644 --- a/examples/bassteroids/source/rigidbody.cpp +++ b/examples/bassteroids/source/rigidbody.cpp @@ -1,4 +1,6 @@ #include "rigidbody.h" +#include +#include using namespace Msp; @@ -16,3 +18,26 @@ void RigidBody::set_angular_velocity(Geometry::Angle as) { angular_velocity = as; } + +void RigidBody::add_force(const LinAl::Vector &f) +{ + force += f; +} + +void RigidBody::add_force(const LinAl::Vector &f, const LinAl::Vector &p) +{ + force += f; + LinAl::Vector r = p-entity->get_transform()->get_position().slice<2>(0); + torque += r.x*f.y-r.y*f.x; +} + +void RigidBody::add_torque(float t) +{ + torque += t; +} + +void RigidBody::clear_forces() +{ + force = LinAl::Vector(); + torque = 0.0f; +}