#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;
}