LinAl::Vector<float, 3> position;
Geometry::Quaternion<float> rotation = Geometry::Quaternion<float>::one();
LinAl::Vector<float, 3> scale = { 1.0f, 1.0f, 1.0f };
+
+ TransformValues() = default;
+ TransformValues(const LinAl::Vector<float, 3> &p): position(p) { }
+ TransformValues(const LinAl::Vector<float, 3> &p, const Geometry::Quaternion<float> &r,
+ const LinAl::Vector<float, 3> &s = LinAl::Vector<float, 3>(1.0f, 1.0f, 1.0f)):
+ position(p), rotation(r), scale(s)
+ { }
};
class Transform: public Component
{
private:
TransformValues values;
- LinAl::Matrix<float, 4, 4> local_matrix;
- LinAl::Matrix<float, 4, 4> world_matrix;
+ LinAl::Matrix<float, 4, 4> local_matrix = LinAl::Matrix<float, 4, 4>::identity();
+ LinAl::Matrix<float, 4, 4> world_matrix = LinAl::Matrix<float, 4, 4>::identity();
public:
Transform(Handle<Entity>);