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);