#ifndef _RIVE_TRANSITION_CONDITION_HPP_
#define _RIVE_TRANSITION_CONDITION_HPP_
#include "rive/generated/animation/transition_condition_base.hpp"

namespace rive
{
	class StateMachineInput;
	class SMIInput;

	class TransitionCondition : public TransitionConditionBase
	{
	public:
		StatusCode onAddedDirty(CoreContext* context) override;
		StatusCode onAddedClean(CoreContext* context) override;

		StatusCode import(ImportStack& importStack) override;

		virtual bool evaluate(const SMIInput* inputInstance) const
		{
			return true;
		}

	protected:
		virtual bool validateInputType(const StateMachineInput* input) const
		{
			return true;
		}
	};
} // namespace rive

#endif