X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Ftransform.h;h=fc63f29d4dbfa0d082bfa014269c78e20797a0bb;hb=12c863fc1bc5456a4b3aceacc88904d76bd1d8bb;hp=b1766aeb993292d576acb3abf23e7be9ec68fcee;hpb=c193dd08af5159544008b5fee0813b1f716ac062;p=libs%2Fgame.git diff --git a/source/game/transform.h b/source/game/transform.h index b1766ae..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::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 *); };