#include "rive/artboard.hpp"
#include "rive/animation/blend_state_transition.hpp"
#include "rive/animation/blend_state_instance.hpp"
#include "rive/animation/blend_state_1d.hpp"
#include "rive/animation/blend_state_direct.hpp"
#include "rive/animation/blend_state_1d_instance.hpp"
#include "rive/animation/blend_state_direct_instance.hpp"

using namespace rive;

const LinearAnimationInstance*
BlendStateTransition::exitTimeAnimationInstance(const StateInstance* from) const
{
    if (from != nullptr)
    {
        switch (from->state()->coreType())
        {
            case BlendState1D::typeKey:

                return static_cast<const BlendState1DInstance*>(from)->animationInstance(
                    m_ExitBlendAnimation);

            case BlendStateDirect::typeKey:

                return static_cast<const BlendStateDirectInstance*>(from)->animationInstance(
                    m_ExitBlendAnimation);
        }
    }

    return nullptr;
}

const LinearAnimation* BlendStateTransition::exitTimeAnimation(const LayerState* from) const
{
    if (m_ExitBlendAnimation != nullptr)
    {
        return m_ExitBlendAnimation->animation();
    }
    return nullptr;
}