X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Ftransform.cpp;fp=source%2Fgame%2Ftransform.cpp;h=6af24c0279ea3ebaaab0ba83a0a0cd4203f62053;hb=c809f54b802727926bae40e9fe67d0e3c94fd2c0;hp=0000000000000000000000000000000000000000;hpb=5ef7c7a9e1e6681ce43fae217e0c3a1b846e6874;p=libs%2Fgame.git diff --git a/source/game/transform.cpp b/source/game/transform.cpp new file mode 100644 index 0000000..6af24c0 --- /dev/null +++ b/source/game/transform.cpp @@ -0,0 +1,27 @@ +#include "transform.h" +#include + +namespace Msp::Game { + +Transform::Transform(Handle e): + Component(e) +{ } + +void Transform::set_values(const TransformValues &v) +{ + values = v; +} + +void Transform::update_world_matrix(const Transform *parent) +{ + using Affine = Geometry::AffineTransform; + + local_matrix = Affine::translation(values.position)* + Affine::rotation(values.rotation)*Affine::scaling(values.scale); + if(parent) + world_matrix = parent->get_world_matrix()*local_matrix; + else + world_matrix = local_matrix; +} + +} // namespace Msp::Game