X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Ftransform.h;h=b1766aeb993292d576acb3abf23e7be9ec68fcee;hb=c193dd08af5159544008b5fee0813b1f716ac062;hp=d6984993653d78f78c4d67f6ad31bbbc0dc5e359;hpb=c809f54b802727926bae40e9fe67d0e3c94fd2c0;p=libs%2Fgame.git diff --git a/source/game/transform.h b/source/game/transform.h index d698499..b1766ae 100644 --- a/source/game/transform.h +++ b/source/game/transform.h @@ -13,19 +13,29 @@ struct TransformValues LinAl::Vector position; Geometry::Quaternion rotation = Geometry::Quaternion::one(); LinAl::Vector scale = { 1.0f, 1.0f, 1.0f }; + + TransformValues() = default; + TransformValues(const LinAl::Vector &p): position(p) { } + TransformValues(const LinAl::Vector &p, const Geometry::Quaternion &r, + const LinAl::Vector &s = LinAl::Vector(1.0f, 1.0f, 1.0f)): + position(p), rotation(r), scale(s) + { } }; class Transform: public Component { private: TransformValues values; - LinAl::Matrix local_matrix; - LinAl::Matrix world_matrix; + LinAl::Matrix local_matrix = LinAl::Matrix::identity(); + LinAl::Matrix world_matrix = LinAl::Matrix::identity(); public: Transform(Handle); void set_values(const TransformValues &); + void set_position(const LinAl::Vector &); + void set_rotation(const Geometry::Quaternion &); + void set_scale(const LinAl::Vector &); const TransformValues &get_values() const { return values; } const LinAl::Vector &get_position() const { return values.position; } const Geometry::Quaternion &get_rotation() const { return values.rotation; }