#ifndef _RIVE_BLEND_STATE_HPP_
#define _RIVE_BLEND_STATE_HPP_
#include "rive/generated/animation/blend_state_base.hpp"
#include <stdio.h>
#include <vector>
#include <algorithm>

namespace rive
{
	class BlendAnimation;
	class LayerStateImporter;

	class BlendState : public BlendStateBase
	{
		friend class LayerStateImporter;

	private:
		std::vector<BlendAnimation*> m_Animations;
		void addAnimation(BlendAnimation* animation);

	public:
		~BlendState();
		inline const std::vector<BlendAnimation*>& animations() const
		{
			return m_Animations;
		}

#ifdef TESTING
		size_t animationCount() { return m_Animations.size(); }
		BlendAnimation* animation(size_t index) { return m_Animations[index]; }
#endif
	};
} // namespace rive

#endif
