X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Frigidbody.cpp;h=391707a574ee40b2e8b36f8fd098961aab95ab4f;hb=da195e0fa114b82708d7c2bbd6297590f34f79a4;hp=c1d096e6a69817a2ba00299349810304b7f4a9f4;hpb=0636566dd84ca185d3e9a6fae02459569c42d220;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/rigidbody.cpp b/examples/bassteroids/source/rigidbody.cpp index c1d096e..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; @@ -11,3 +13,31 @@ void RigidBody::set_velocity(const LinAl::Vector &v) { velocity = v; } + +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; +}