]> git.tdb.fi Git - libs/game.git/blobdiff - source/game/transform.h
Convert components to buffered where appropriate
[libs/game.git] / source / game / transform.h
index b1766aeb993292d576acb3abf23e7be9ec68fcee..1239546be803dec1c89f23a63e4f19bb6a252cf1 100644 (file)
@@ -22,13 +22,15 @@ struct TransformValues
        { }
 };
 
-class Transform: public Component
+struct TransformData
 {
-private:
        TransformValues values;
        LinAl::Matrix<float, 4, 4> local_matrix = LinAl::Matrix<float, 4, 4>::identity();
        LinAl::Matrix<float, 4, 4> world_matrix = LinAl::Matrix<float, 4, 4>::identity();
+};
 
+class Transform: public BufferedComponent<TransformData>
+{
 public:
        Transform(Handle<Entity>);
 
@@ -36,11 +38,11 @@ public:
        void set_position(const LinAl::Vector<float, 3> &);
        void set_rotation(const Geometry::Quaternion<float> &);
        void set_scale(const LinAl::Vector<float, 3> &);
-       const TransformValues &get_values() const { return values; }
-       const LinAl::Vector<float, 3> &get_position() const { return values.position; }
-       const Geometry::Quaternion<float> &get_rotation() const { return values.rotation; }
-       const LinAl::Vector<float, 3> &get_scale() const { return values.scale; }
-       const LinAl::Matrix<float, 4, 4> &get_world_matrix() const { return world_matrix; }
+       const TransformValues &get_values() const { return read().values; }
+       const LinAl::Vector<float, 3> &get_position() const { return read().values.position; }
+       const Geometry::Quaternion<float> &get_rotation() const { return read().values.rotation; }
+       const LinAl::Vector<float, 3> &get_scale() const { return read().values.scale; }
+       const LinAl::Matrix<float, 4, 4> &get_world_matrix() const { return read().world_matrix; }
 
        void update_world_matrix(const Transform *);
 };