#include "rive/animation/animation_state_instance.hpp"
#include "rive/animation/animation_state.hpp"

using namespace rive;

AnimationStateInstance::AnimationStateInstance(const AnimationState* state,
                                               ArtboardInstance* instance) :
    StateInstance(state),
    // We're careful to always instance a valid animation here as the
    // StateMachine makes assumptions about AnimationState's producing valid
    // AnimationStateInstances with backing animations. This was discovered when
    // using Clang address sanitizer. We previously returned a
    // SystemStateInstance (basically a no-op StateMachine state) which would
    // cause bad casts in parts of the code where we assumed AnimationStates
    // would have create AnimationStateInstances.
    m_AnimationInstance(state->animationOrEmpty(), instance),
    m_KeepGoing(true) {}

void AnimationStateInstance::advance(float seconds, Span<SMIInput*>) {
    m_KeepGoing = m_AnimationInstance.advance(seconds);
}

void AnimationStateInstance::apply(float mix) { m_AnimationInstance.apply(mix); }

bool AnimationStateInstance::keepGoing() const { return m_KeepGoing; }