// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.

using UnityEngine;

namespace HutongGames.PlayMaker.Actions
{
	[ActionCategory(ActionCategory.Animation)]
	[Tooltip("Enables/Disables an Animation on a GameObject.\nAnimation time is paused while disabled. Animation must also have a non zero weight to play.")]
	public class EnableAnimation : BaseAnimationAction
	{
		[RequiredField]
		[CheckForComponent(typeof(Animation))]
        [Tooltip("The GameObject playing the animation.")]
		public FsmOwnerDefault gameObject;
		
		[RequiredField]
		[UIHint(UIHint.Animation)]
        [Tooltip("The name of the animation to enable/disable.")]
		public FsmString animName;
		
		[RequiredField]
        [Tooltip("Set to True to enable, False to disable.")]
		public FsmBool enable;
		
        [Tooltip("Reset the initial enabled state when exiting the state.")]
		public FsmBool resetOnExit;
		
		private AnimationState anim;
		
		public override void Reset()
		{
			gameObject = null;
			animName = null;
			enable = true;
			resetOnExit = false;
		}

		public override void OnEnter()
		{
			DoEnableAnimation(Fsm.GetOwnerDefaultTarget(gameObject));
			
			Finish();
		}

		void DoEnableAnimation(GameObject go)
		{
		    if (UpdateCache(go))
		    {
                anim = animation[animName.Value];
                if (anim != null)
                {
                    anim.enabled = enable.Value;
                }
		    }
		}
		
		public override void OnExit()
		{
			if (resetOnExit.Value && anim != null)
			{
				anim.enabled = !enable.Value;
			}
		}
	}
}