X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fgame%2Ftransform.h;h=1239546be803dec1c89f23a63e4f19bb6a252cf1;hb=bfbcfa2678c70d661cb9104b2ef677d7d7b5a637;hp=05c895b42e949b42e2e2c328a6dd72b3fca90e5d;hpb=8ec00c2260b0b2a0ac5259b9a7038fad669af04c;p=libs%2Fgame.git diff --git a/source/game/transform.h b/source/game/transform.h index 05c895b..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 world_matrix; + 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 *); };