When you override the Render method, you draw only the lights in that function.
So your code may look like:
class Ship : public sf::Sprite
{
public:
Ship(const Image &Img,
const Vector2f &Position=Vector2f(0, 0),
const Vector2f &Scale=Vector2f(1, 1),
float Rotation=0.f,
const Color &Col=Color(255, 255, 255, 255))
:Ship::Sprite(Img, Position, Scale, Rotation, Col)
{
//Load your light here and set its position relative to the ship.
light = sf::Sprite(XXXXX);
}
virtual ~Ship()
{}
private:
sf::Sprite light; //Stores the light to draw.
virtual void Render(sf::RenderTarget& Window) const
{
Sprite::Render(Window); //Draws the ship.
Window.Draw(light); //Draws the light.
}
};
In your main loop, you then move, scale, rotate, and draw one ship object. The light will be moved along and drawn with it automatically.