#ifndef SPECTRE_GRAPHICS_TRANSFORMABLE_H #define SPECTRE_GRAPHICS_TRANSFORMABLE_H #include #include class Transformable { public : Transformable(); Transformable(const Vector2f& position); virtual ~Transformable(); // Position void setPosition(const Vector2f& position); void setPosition(float x, float y); void move(const Vector2f& offset); const Vector2f& getPosition() const; // Rotation void setRotation(float angle); void rotate(float angle); float getRotation() const; // Scale void setScale(const Vector2f& offset); void setScale(float scale); void scale(const Vector2f& offset); void scale(float scale); const Vector2f getScale() const; const Transform& getTransform() const; private : Vector2f m_position; float m_rotation; Vector2f m_scale; mutable bool m_transformNeedsUpdate; mutable Transform m_transform; }; #endif /* SPECTRE_GRAPHICS_TRANSFORMABLE_H */