]> git.tdb.fi Git - libs/game.git/blob - source/game/transform.cpp
6af24c0279ea3ebaaab0ba83a0a0cd4203f62053
[libs/game.git] / source / game / transform.cpp
1 #include "transform.h"
2 #include <msp/geometry/affinetransform.h>
3
4 namespace Msp::Game {
5
6 Transform::Transform(Handle<Entity> e):
7         Component(e)
8 { }
9
10 void Transform::set_values(const TransformValues &v)
11 {
12         values = v;
13 }
14
15 void Transform::update_world_matrix(const Transform *parent)
16 {
17         using Affine = Geometry::AffineTransform<float, 3>;
18
19         local_matrix = Affine::translation(values.position)*
20                 Affine::rotation(values.rotation)*Affine::scaling(values.scale);
21         if(parent)
22                 world_matrix = parent->get_world_matrix()*local_matrix;
23         else
24                 world_matrix = local_matrix;
25 }
26
27 } // namespace Msp::Game