X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Ftransform.h;h=fc63f29d4dbfa0d082bfa014269c78e20797a0bb;hb=dc90919dcc6519c7611ff7f8f6b7c22876e2fc13;hp=05c895b42e949b42e2e2c328a6dd72b3fca90e5d;hpb=8ec00c2260b0b2a0ac5259b9a7038fad669af04c;p=libs%2Fgame.git diff --git a/source/game/transform.h b/source/game/transform.h index 05c895b..fc63f29 100644 --- a/source/game/transform.h +++ b/source/game/transform.h @@ -5,6 +5,7 @@ #include #include #include "component.h" +#include "mspgame_api.h" namespace Msp::Game { @@ -22,13 +23,15 @@ struct TransformValues { } }; -class Transform: public Component +struct TransformData { -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(); +}; +class MSPGAME_API Transform: public BufferedComponent +{ public: Transform(Handle); @@ -36,11 +39,11 @@ public: 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; } - const LinAl::Vector &get_scale() const { return values.scale; } - const LinAl::Matrix &get_world_matrix() const { return world_matrix; } + const TransformValues &get_values() const { return read().values; } + const LinAl::Vector &get_position() const { return read().values.position; } + const Geometry::Quaternion &get_rotation() const { return read().values.rotation; } + const LinAl::Vector &get_scale() const { return read().values.scale; } + const LinAl::Matrix &get_world_matrix() const { return read().world_matrix; } void update_world_matrix(const Transform *); };