X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Ftransform.h;h=1239546be803dec1c89f23a63e4f19bb6a252cf1;hb=bfbcfa2678c70d661cb9104b2ef677d7d7b5a637;hp=b1766aeb993292d576acb3abf23e7be9ec68fcee;hpb=a99b57a74252fd3de649d544d070b747f91fcf4d;p=libs%2Fgame.git diff --git a/source/game/transform.h b/source/game/transform.h index b1766ae..1239546 100644 --- a/source/game/transform.h +++ b/source/game/transform.h @@ -22,13 +22,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 Transform: public BufferedComponent +{ public: Transform(Handle); @@ -36,11 +38,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 *); };