Animator

L'Animator, est le GameComponent dont va avoir besoin un GameObject, pour animer son GraphicComponent, le plus souvent une Image, et donc le rectangleShape détenu par cette Image.

Fonctionnement:

L'Animator dispose d'un AnimationController, une machine à état qui utilisera des AnimationState. Chaque AnimationState aura une Animation, et chaque Animation aura au minimum 1 Sequence de frames, mais pourrait en avoir plusieurs.
La finalité, étant qu'une Animation fournit un sf::IntRect, qui sera communiqué à l'Image par l'Animator uniquement à la condition qu'il ait changé.

Update:

void Animator::Update(std::shared_ptr<GameObject> _world)
{
    if (auto image = m_linkedImg.lock())
    {
        if (m_animationController->Update()) //Renvoi true si la frame a changé
            image->SetFrameRectByRef(m_animationController->GetCurrentFrame());
    }
}

Equiper un animator sur un GameObject:

//Ajout de l'animator à l'objet, et conservation en variable le temps de le setup
auto playerAnimator = m_player->AddComponent<Animator>();
//Creation d'une instance d'animation controller, de la class héritée que l'on souhaite
auto playerAnimationController = new AnimationController_Player(playerAnimator);
//Confier le controller à l'animator.
playerAnimator->SetAnimationController(playerAnimationController);