2 #include <msp/geometry/affinetransform.h>
6 Transform::Transform(Handle<Entity> e):
10 void Transform::set_values(const TransformValues &v)
15 void Transform::set_position(const LinAl::Vector<float, 3> &p)
20 void Transform::set_rotation(const Geometry::Quaternion<float> &r)
22 values.rotation = normalize(r);
25 void Transform::set_scale(const LinAl::Vector<float, 3> &s)
30 void Transform::update_world_matrix(const Transform *parent)
32 using Affine = Geometry::AffineTransform<float, 3>;
34 local_matrix = Affine::translation(values.position)*
35 Affine::rotation(values.rotation)*Affine::scaling(values.scale);
37 world_matrix = parent->get_world_matrix()*local_matrix;
39 world_matrix = local_matrix;
42 } // namespace Msp::Game