// // Created by Benjamin on 4/29/2021. // #ifndef SFML_TEMPLATE_RIDER_H #define SFML_TEMPLATE_RIDER_H class Rider : public GameSprite { private: GameSprite *mount; sf::Vector2f relativeLoc; public: Rider(const sf::Texture &texture, float scale, GameSprite *_mount, sf::Vector2f worldCoord) : GameSprite(texture, scale) { mount = _mount; relativeLoc = sf::Vector2f(worldCoord.x - mount->getPosition().x, worldCoord.y - mount->getPosition().y); relativeLoc = mount->getInverseTransform().transformPoint(relativeLoc); } void update() override { sf::Vector2f newLoc = mount->getTransform().transformPoint(relativeLoc); setPosition(newLoc); GameSprite::update(); } }; #endif //SFML_TEMPLATE_RIDER_H