public override void ActionCharAnimGUI (ActionCharAnim action)
	{
		#if UNITY_EDITOR
		
		action.methodMecanim = (AnimMethodCharMecanim) EditorGUILayout.EnumPopup ("Method:", action.methodMecanim);
		
		if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
		{
			action.parameterName = EditorGUILayout.TextField ("Parameter to affect:", action.parameterName);
			action.mecanimParameterType = (MecanimParameterType) EditorGUILayout.EnumPopup ("Parameter type:", action.mecanimParameterType);
			action.parameterValue = EditorGUILayout.FloatField ("Set as value:", action.parameterValue);
		}
		
		else if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
		{
			action.mecanimCharParameter = (MecanimCharParameter) EditorGUILayout.EnumPopup ("Parameter to change:", action.mecanimCharParameter);
			action.parameterName = EditorGUILayout.TextField ("New parameter name:", action.parameterName);

			if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
			{
				action.changeSound = EditorGUILayout.Toggle ("Change sound?", action.changeSound);
				if (action.changeSound)
				{
					action.standard = (AnimStandard) EditorGUILayout.EnumPopup ("Change:", action.standard);
					if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
					{
						action.newSound = (AudioClip) EditorGUILayout.ObjectField ("New sound:", action.newSound, typeof (AudioClip), false);
					}
					else
					{
						EditorGUILayout.HelpBox ("Only Walk and Run have a standard sounds.", MessageType.Info);
					}
				}
			}
		}

		else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
		{
			action.clip2D = EditorGUILayout.TextField ("Clip:", action.clip2D);
			action.includeDirection = EditorGUILayout.Toggle ("Add directional suffix?", action.includeDirection);
			
			action.layerInt = EditorGUILayout.IntField ("Mecanim layer:", action.layerInt);
			action.fadeTime = EditorGUILayout.Slider ("Transition time:", action.fadeTime, 0f, 1f);
			action.willWait = EditorGUILayout.Toggle ("Wait until finish?", action.willWait);
			if (action.willWait)
			{
				action.idleAfter = EditorGUILayout.Toggle ("Return to idle after?", action.idleAfter);
			}
		}

		if (GUI.changed)
		{
			EditorUtility.SetDirty (action);
		}
		
		#endif
	}
	public override void ActionCharAnimGUI (ActionCharAnim action)
	{
		#if UNITY_EDITOR

		action.method = (ActionCharAnim.AnimMethodChar) EditorGUILayout.EnumPopup ("Method:", action.method);

		if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
		{
			action.clip2D = EditorGUILayout.TextField ("Clip:", action.clip2D);
			action.includeDirection = EditorGUILayout.Toggle ("Add directional suffix?", action.includeDirection);
			
			action.playMode = (AnimPlayMode) EditorGUILayout.EnumPopup ("Play mode:", action.playMode);
			if (action.playMode == AnimPlayMode.Loop)
			{
				action.willWait = false;
			}
			else
			{
				action.willWait = EditorGUILayout.Toggle ("Wait until finish?", action.willWait);
			}
			
			action.layer = AnimLayer.Base;
		}
		else if (action.method == ActionCharAnim.AnimMethodChar.StopCustom)
		{
			EditorGUILayout.HelpBox ("This Action does not work for Sprite-based characters.", MessageType.Info);
		}
		else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
		{
			action.clip2D = EditorGUILayout.TextField ("Clip:", action.clip2D);
			action.standard = (AnimStandard) EditorGUILayout.EnumPopup ("Change:", action.standard);

			if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
			{
				action.changeSound = EditorGUILayout.Toggle ("Change sound?", action.changeSound);
				if (action.changeSound)
				{
					action.newSound = (AudioClip) EditorGUILayout.ObjectField ("New sound:", action.newSound, typeof (AudioClip), false);
				}
				action.changeSpeed = EditorGUILayout.Toggle ("Change speed?", action.changeSpeed);
				if (action.changeSpeed)
				{
					action.newSpeed = EditorGUILayout.FloatField ("New speed:", action.newSpeed);
				}
			}
		}

		if (GUI.changed)
		{
			EditorUtility.SetDirty (action);
		}

		#endif
	}
	public override void ActionCharAnimGUI (ActionCharAnim action)
	{
		#if UNITY_EDITOR

		action.method = (ActionCharAnim.AnimMethodChar) EditorGUILayout.EnumPopup ("Method:", action.method);
		
		if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
		{
			action.clip2D = EditorGUILayout.TextField ("Clip:", action.clip2D);
			action.includeDirection = EditorGUILayout.Toggle ("Add directional suffix?", action.includeDirection);
			
			action.layerInt = EditorGUILayout.IntField ("Mecanim layer:", action.layerInt);
			action.fadeTime = EditorGUILayout.Slider ("Transition time:", action.fadeTime, 0f, 1f);
			action.willWait = EditorGUILayout.Toggle ("Wait until finish?", action.willWait);
			if (action.willWait)
			{
				action.idleAfter = EditorGUILayout.Toggle ("Return to idle after?", action.idleAfter);
			}
		}
		else if (action.method == ActionCharAnim.AnimMethodChar.StopCustom)
		{
			EditorGUILayout.HelpBox ("This Action does not work for Sprite-based characters.", MessageType.Info);
		}
		else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
		{
			action.clip2D = EditorGUILayout.TextField ("Clip:", action.clip2D);
			action.standard = (AnimStandard) EditorGUILayout.EnumPopup ("Change:", action.standard);

			if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
			{
				action.changeSound = EditorGUILayout.Toggle ("Change sound?", action.changeSound);
				if (action.changeSound)
				{
					action.newSound = (AudioClip) EditorGUILayout.ObjectField ("New sound:", action.newSound, typeof (AudioClip), false);
				}
				action.changeSpeed = EditorGUILayout.Toggle ("Change speed?", action.changeSpeed);
				if (action.changeSpeed)
				{
					action.newSpeed = EditorGUILayout.FloatField ("New speed:", action.newSpeed);
				}
			}
		}
		else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
		{
			action.idleAfterCustom = EditorGUILayout.Toggle ("Wait for animation to finish?", action.idleAfterCustom);
		}

		if (GUI.changed)
		{
			EditorUtility.SetDirty (action);
		}
		
		#endif
	}
        public override float ActionCharAnimRun(ActionCharAnim action)
        {
            if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
            {
                if (action.parameterName != "")
                {
                    if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                    {
                        action.animChar.moveSpeedParameter = action.parameterName;
                    }
                    else if (action.mecanimCharParameter == MecanimCharParameter.TalkBool)
                    {
                        action.animChar.talkParameter = action.parameterName;
                    }
                    else if (action.mecanimCharParameter == MecanimCharParameter.TurnFloat)
                    {
                        action.animChar.turnParameter = action.parameterName;
                    }
                }

                if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat && action.changeSound)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkSound = action.newSound;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runSound = action.newSound;
                    }
                }

                return 0f;
            }

            if (character.GetAnimator () == null)
            {
                return 0f;
            }

            if (!action.isRunning)
            {
                action.isRunning = true;
                if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
                {
                    if (action.parameterName != "")
                    {
                        if (action.mecanimParameterType == MecanimParameterType.Float)
                        {
                            character.GetAnimator ().SetFloat (action.parameterName, action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Int)
                        {
                            character.GetAnimator ().SetInteger (action.parameterName, (int) action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Bool)
                        {
                            bool paramValue = false;
                            if (action.parameterValue > 0f)
                            {
                                paramValue = true;
                            }
                            character.GetAnimator ().SetBool (action.parameterName, paramValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Trigger)
                        {
                            character.GetAnimator ().SetTrigger (action.parameterName);
                        }
                    }
                }
                else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (action.clip2D != "")
                    {
                        character.GetAnimator ().CrossFade (action.clip2D, action.fadeTime, action.layerInt);

                        if (action.willWait)
                        {
                            return (action.defaultPauseTime);
                        }
                    }
                }
            }
            else
            {
                if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (action.clip2D != "")
                    {
                        if (character.GetAnimator ().GetCurrentAnimatorStateInfo (action.layerInt).normalizedTime < 0.98f)
                        {
                            return (action.defaultPauseTime / 6f);
                        }
                        else
                        {
                            action.isRunning = false;
                            return 0f;
                        }
                    }
                }
            }

            return 0f;
        }
        public override float ActionCharAnimRun(ActionCharAnim action)
        {
            string clip2DNew = action.clip2D;
            if (action.includeDirection)
            {
                clip2DNew += action.animChar.GetSpriteDirection ();
            }

            if (!action.isRunning)
            {
                action.isRunning = true;

                if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip2D != "")
                {
                    if (action.animChar.GetAnimator ())
                    {
                        action.animChar.charState = CharState.Custom;
                        action.animChar.GetAnimator ().CrossFade (clip2DNew, action.fadeTime, action.layerInt);
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                {
                    if (action.idleAfterCustom)
                    {
                        action.layerInt = 0;
                        return (action.defaultPauseTime);
                    }
                    else
                    {
                        action.animChar.ResetBaseClips ();
                        action.animChar.charState = CharState.Idle;
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
                {
                    if (action.clip2D != "")
                    {
                        if (action.standard == AnimStandard.Idle)
                        {
                            action.animChar.idleAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Walk)
                        {
                            action.animChar.walkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Talk)
                        {
                            action.animChar.talkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            action.animChar.runAnimSprite = action.clip2D;
                        }
                    }

                    if (action.changeSpeed)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            action.animChar.walkSpeedScale = action.newSpeed;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            action.animChar.runSpeedScale = action.newSpeed;
                        }
                    }

                    if (action.changeSound)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            if (action.newSound != null)
                            {
                                action.animChar.walkSound = action.newSound;
                            }
                            else
                            {
                                action.animChar.walkSound = null;
                            }
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            if (action.newSound != null)
                            {
                                action.animChar.runSound = action.newSound;
                            }
                            else
                            {
                                action.animChar.runSound = null;
                            }
                        }
                    }
                }

                if (action.willWait && action.clip2D != "")
                {
                    if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                    {
                        return (action.defaultPauseTime);
                    }
                }
            }

            else
            {
                if (action.animChar.GetAnimator ())
                {
                    // Calc how much longer left to wait
                    float totalLength = action.animChar.GetAnimator ().GetCurrentAnimatorStateInfo (action.layerInt).length;
                    float timeLeft = (1f - action.animChar.GetAnimator ().GetCurrentAnimatorStateInfo (action.layerInt).normalizedTime) * totalLength;

                    // Subtract a small amount of time to prevent overshooting
                    timeLeft -= 0.1f;

                    if (timeLeft > 0f)
                    {
                        return (timeLeft);
                    }
                    else
                    {
                        if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                        {
                            action.animChar.ResetBaseClips ();
                            action.animChar.charState = CharState.Idle;
                        }
                        else if (action.idleAfter)
                        {
                            action.animChar.charState = CharState.Idle;
                        }

                        action.isRunning = false;
                        return 0f;
                    }
                }
                else
                {
                    action.isRunning = false;
                    action.animChar.charState = CharState.Idle;
                    return 0f;
                }
            }

            return 0f;
        }
        public override void ActionCharAnimGUI(ActionCharAnim action)
        {
            #if UNITY_EDITOR

            action.method = (ActionCharAnim.AnimMethodChar) EditorGUILayout.EnumPopup ("Method:", action.method);

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom || action.method == ActionCharAnim.AnimMethodChar.StopCustom)
            {
                action.clip = (AnimationClip) EditorGUILayout.ObjectField ("Clip:", action.clip, typeof (AnimationClip), true);

                if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                {
                    action.layer = (AnimLayer) EditorGUILayout.EnumPopup ("Layer:", action.layer);

                    if (action.layer == AnimLayer.Base)
                    {
                        EditorGUILayout.LabelField ("Blend mode:", "Blend");
                        action.playModeBase = (AnimPlayModeBase) EditorGUILayout.EnumPopup ("Play mode:", action.playModeBase);
                    }
                    else
                    {
                        action.blendMode = (AnimationBlendMode) EditorGUILayout.EnumPopup ("Blend mode:", action.blendMode);
                        action.playMode = (AnimPlayMode) EditorGUILayout.EnumPopup ("Play mode:", action.playMode);
                    }
                }

                action.fadeTime = EditorGUILayout.Slider ("Transition time:", action.fadeTime, 0f, 1f);
                action.willWait = EditorGUILayout.Toggle ("Wait until finish?", action.willWait);
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                action.clip = (AnimationClip) EditorGUILayout.ObjectField ("Clip:", action.clip, typeof (AnimationClip), true);
                action.standard = (AnimStandard) EditorGUILayout.EnumPopup ("Change:", action.standard);

                if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
                {
                    action.changeSound = EditorGUILayout.Toggle ("Change sound?", action.changeSound);
                    if (action.changeSound)
                    {
                        action.newSound = (AudioClip) EditorGUILayout.ObjectField ("New sound:", action.newSound, typeof (AudioClip), false);
                    }
                    action.changeSpeed = EditorGUILayout.Toggle ("Change speed?", action.changeSpeed);
                    if (action.changeSpeed)
                    {
                        action.newSpeed = EditorGUILayout.FloatField ("New speed:", action.newSpeed);
                    }
                }
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty (action);
            }

            #endif
        }
Ejemplo n.º 7
0
 public virtual float ActionCharAnimRun(ActionCharAnim action)
 {
     return 0f;
 }
 public override void ActionCharAnimSkip(ActionCharAnim action)
 {
     ActionCharAnimRun (action);
 }
Ejemplo n.º 9
0
 public virtual bool RequiresRememberAnimator(ActionCharAnim action)
 {
     return(false);
 }
Ejemplo n.º 10
0
        public override void ActionCharAnimSkip(ActionCharAnim action)
        {
            if (action.animChar == null)
            {
                return;
            }

            Animation animation = action.animChar.GetAnimation();

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip)
            {
                if (action.layer == AnimLayer.Base)
                {
                    action.animChar.charState = CharState.Custom;
                    action.blendMode          = AnimationBlendMode.Blend;
                    action.playMode           = (AnimPlayMode)action.playModeBase;
                }

                if (action.playMode == AnimPlayMode.PlayOnce)
                {
                    if (action.layer == AnimLayer.Base && action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                    {
                        action.animChar.charState = CharState.Idle;
                        action.animChar.ResetBaseClips();
                    }
                }
                else
                {
                    AdvGame.CleanUnusedClips(animation);

                    WrapMode  wrap            = WrapMode.Once;
                    Transform mixingTransform = null;

                    if (action.layer == AnimLayer.UpperBody)
                    {
                        mixingTransform = action.animChar.upperBodyBone;
                    }
                    else if (action.layer == AnimLayer.LeftArm)
                    {
                        mixingTransform = action.animChar.leftArmBone;
                    }
                    else if (action.layer == AnimLayer.RightArm)
                    {
                        mixingTransform = action.animChar.rightArmBone;
                    }
                    else if (action.layer == AnimLayer.Neck || action.layer == AnimLayer.Head || action.layer == AnimLayer.Face || action.layer == AnimLayer.Mouth)
                    {
                        mixingTransform = action.animChar.neckBone;
                    }

                    if (action.playMode == AnimPlayMode.PlayOnceAndClamp)
                    {
                        wrap = WrapMode.ClampForever;
                    }
                    else if (action.playMode == AnimPlayMode.Loop)
                    {
                        wrap = WrapMode.Loop;
                    }

                    AdvGame.PlayAnimClipFrame(animation, AdvGame.GetAnimLayerInt(action.layer), action.clip, action.blendMode, wrap, action.fadeTime, mixingTransform, 1f);
                }

                AdvGame.CleanUnusedClips(animation);
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.StopCustom && action.clip)
            {
                if (action.clip != action.animChar.idleAnim && action.clip != action.animChar.walkAnim)
                {
                    animation.Blend(action.clip.name, 0f, 0f);
                }
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
            {
                action.animChar.ResetBaseClips();

                action.animChar.charState = CharState.Idle;
                AdvGame.CleanUnusedClips(animation);
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                if (action.clip != null)
                {
                    if (action.standard == AnimStandard.Idle)
                    {
                        action.animChar.idleAnim = action.clip;
                    }
                    else if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkAnim = action.clip;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runAnim = action.clip;
                    }
                    else if (action.standard == AnimStandard.Talk)
                    {
                        action.animChar.talkAnim = action.clip;
                    }
                }

                if (action.changeSpeed)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkSpeedScale = action.newSpeed;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runSpeedScale = action.newSpeed;
                    }
                }

                if (action.changeSound)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        if (action.newSound != null)
                        {
                            action.animChar.walkSound = action.newSound;
                        }
                        else
                        {
                            action.animChar.walkSound = null;
                        }
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        if (action.newSound != null)
                        {
                            action.animChar.runSound = action.newSound;
                        }
                        else
                        {
                            action.animChar.runSound = null;
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
        protected float ActionCharAnimProcess(ActionCharAnim action, bool isSkipping)
        {
            if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
            {
                if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                {
                    if (!string.IsNullOrEmpty(action.parameterName))
                    {
                        character.moveSpeedParameter = action.parameterName;
                    }

                    if (action.changeSpeed)
                    {
                        character.walkSpeedScale = action.newSpeed;
                        character.runSpeedScale  = action.parameterValue;
                    }

                    if (action.changeSound)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            character.walkSound = action.newSound;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            character.runSound = action.newSound;
                        }
                    }
                }
                else if (action.mecanimCharParameter == MecanimCharParameter.TalkBool)
                {
                    character.talkParameter = action.parameterName;
                }
                else if (action.mecanimCharParameter == MecanimCharParameter.TurnFloat)
                {
                    character.turnParameter = action.parameterName;
                }

                return(0f);
            }

            if (character.GetAnimator() == null)
            {
                return(0f);
            }

            if (!action.isRunning)
            {
                action.isRunning = true;
                if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
                {
                    if (!string.IsNullOrEmpty(action.parameterName))
                    {
                        if (action.mecanimParameterType == MecanimParameterType.Float)
                        {
                            character.GetAnimator().SetFloat(action.parameterName, action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Int)
                        {
                            character.GetAnimator().SetInteger(action.parameterName, (int)action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Bool)
                        {
                            bool paramValue = (action.parameterValue > 0f) ? true : false;
                            character.GetAnimator().SetBool(action.parameterName, paramValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Trigger)
                        {
                            if (!isSkipping || action.parameterValue < 1f)
                            {
                                character.GetAnimator().SetTrigger(action.parameterName);
                            }
                        }
                    }
                }
                else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (!string.IsNullOrEmpty(action.clip2D))
                    {
                        string clip2DNew = action.clip2D;
                        if (action.includeDirection)
                        {
                            clip2DNew += character.GetSpriteDirection();
                        }
                        character.GetAnimator().CrossFade(clip2DNew, action.fadeTime, action.layerInt);

                        if (action.willWait)
                        {
                            return(action.defaultPauseTime);
                        }
                    }
                }
            }
            else
            {
                if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (!string.IsNullOrEmpty(action.clip2D))
                    {
                        if (character.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).normalizedTime < 0.98f)
                        {
                            return(action.defaultPauseTime / 6f);
                        }
                        else
                        {
                            action.isRunning = false;
                            return(0f);
                        }
                    }
                }
            }

            return(0f);
        }
        public override void ActionCharAnimGUI(ActionCharAnim action, List <ActionParameter> parameters = null)
        {
                        #if UNITY_EDITOR
            action.method = (ActionCharAnim.AnimMethodChar)EditorGUILayout.EnumPopup("Method:", action.method);

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
            {
                action.clip2DParameterID = Action.ChooseParameterGUI("Clip:", parameters, action.clip2DParameterID, ParameterType.String);
                if (action.clip2DParameterID < 0)
                {
                    action.clip2D = EditorGUILayout.TextField("Clip:", action.clip2D);
                }

                action.includeDirection = EditorGUILayout.Toggle("Add directional suffix?", action.includeDirection);

                if (action.animChar != null && action.animChar.talkingAnimation == TalkingAnimation.Standard && action.animChar.separateTalkingLayer)
                {
                    action.hideHead = EditorGUILayout.Toggle("Hide head?", action.hideHead);
                    if (action.hideHead)
                    {
                        EditorGUILayout.HelpBox("The head layer will play '" + hideHeadClip + "' for the duration.", MessageType.Info);
                    }
                }

                action.layerInt = EditorGUILayout.IntField("Mecanim layer:", action.layerInt);
                action.fadeTime = EditorGUILayout.Slider("Transition time:", action.fadeTime, 0f, 1f);
                action.willWait = EditorGUILayout.Toggle("Wait until finish?", action.willWait);
                if (action.willWait)
                {
                    action.idleAfter = EditorGUILayout.Toggle("Return to idle after?", action.idleAfter);
                }
            }
            else if (action.method == ActionCharAnim.AnimMethodChar.StopCustom)
            {
                EditorGUILayout.HelpBox("This Action does not work for Sprite-based characters.", MessageType.Info);
            }
            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                action.standard = (AnimStandard)EditorGUILayout.EnumPopup("Change:", action.standard);

                action.clip2DParameterID = Action.ChooseParameterGUI("Clip:", parameters, action.clip2DParameterID, ParameterType.String);
                if (action.clip2DParameterID < 0)
                {
                    action.clip2D = EditorGUILayout.TextField("Clip:", action.clip2D);
                }

                if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
                {
                    action.changeSound = EditorGUILayout.Toggle("Change sound?", action.changeSound);
                    if (action.changeSound)
                    {
                        action.newSoundParameterID = Action.ChooseParameterGUI("New sound:", parameters, action.newSoundParameterID, ParameterType.UnityObject);
                        if (action.newSoundParameterID < 0)
                        {
                            action.newSound = (AudioClip)EditorGUILayout.ObjectField("New sound:", action.newSound, typeof(AudioClip), false);
                        }
                    }
                    action.changeSpeed = EditorGUILayout.Toggle("Change speed?", action.changeSpeed);
                    if (action.changeSpeed)
                    {
                        action.newSpeedParameterID = Action.ChooseParameterGUI("New speed:", parameters, action.newSpeedParameterID, ParameterType.Float);
                        if (action.newSpeedParameterID < 0)
                        {
                            action.newSpeed = EditorGUILayout.FloatField("New speed:", action.newSpeed);
                        }
                    }
                }
            }
            else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
            {
                action.idleAfterCustom = EditorGUILayout.Toggle("Wait for animation to finish?", action.idleAfterCustom);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(action);
            }
                        #endif
        }
        public override float ActionCharAnimRun(ActionCharAnim action)
        {
            string clip2DNew = action.clip2D;

            if (action.includeDirection)
            {
                clip2DNew += character.GetSpriteDirection();
            }

            if (!action.isRunning)
            {
                action.isRunning = true;

                if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && !string.IsNullOrEmpty(action.clip2D))
                {
                    if (character.GetAnimator())
                    {
                                                #if UNITY_EDITOR && (UNITY_5 || UNITY_2017_1_OR_NEWER)
                        int hash = Animator.StringToHash(clip2DNew);
                        if (!character.GetAnimator().HasState(action.layerInt, hash))
                        {
                            action.ReportWarning("Cannot play clip " + clip2DNew + " on " + character.name);
                        }
                                                #endif

                        character.charState = CharState.Custom;
                        character.GetAnimator().CrossFade(clip2DNew, action.fadeTime, action.layerInt);

                        if (action.hideHead && character.talkingAnimation == TalkingAnimation.Standard && character.separateTalkingLayer)
                        {
                            PlayHeadAnim(hideHeadClip, false);
                        }
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                {
                    if (action.idleAfterCustom)
                    {
                        action.layerInt = 0;
                        return(action.defaultPauseTime);
                    }
                    else
                    {
                        character.ResetBaseClips();
                        character.charState = CharState.Idle;
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
                {
                    if (!string.IsNullOrEmpty(action.clip2D))
                    {
                        if (action.standard == AnimStandard.Idle)
                        {
                            character.idleAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Walk)
                        {
                            character.walkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Talk)
                        {
                            character.talkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            character.runAnimSprite = action.clip2D;
                        }
                    }

                    if (action.changeSpeed)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            character.walkSpeedScale = action.newSpeed;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            character.runSpeedScale = action.newSpeed;
                        }
                    }

                    if (action.changeSound)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            if (action.newSound != null)
                            {
                                character.walkSound = action.newSound;
                            }
                            else
                            {
                                character.walkSound = null;
                            }
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            if (action.newSound != null)
                            {
                                character.runSound = action.newSound;
                            }
                            else
                            {
                                character.runSound = null;
                            }
                        }
                    }
                }

                if (action.willWait && !string.IsNullOrEmpty(action.clip2D))
                {
                    if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                    {
                        // In 2019, sometimes more than 1 frame is necessary for the transition to kick in
                                                #if UNITY_2019_1_OR_NEWER
                        return(Time.fixedDeltaTime * 2f);
                                                #else
                        return(action.defaultPauseTime);
                                                #endif
                    }
                }
            }

            else
            {
                if (character.GetAnimator())
                {
                    // Calc how much longer left to wait
                    float totalLength = character.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).length;
                    float timeLeft    = (1f - character.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).normalizedTime) * totalLength;

                    // Subtract a small amount of time to prevent overshooting
                    timeLeft -= 0.1f;

                    if (timeLeft > 0f)
                    {
                        return(timeLeft);
                    }
                    else
                    {
                        if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                        {
                            character.ResetBaseClips();
                            character.charState = CharState.Idle;
                        }
                        else if (action.idleAfter)
                        {
                            character.charState = CharState.Idle;
                        }

                        action.isRunning = false;
                        return(0f);
                    }
                }
                else
                {
                    action.isRunning    = false;
                    character.charState = CharState.Idle;
                    return(0f);
                }
            }

            return(0f);
        }
Ejemplo n.º 14
0
 public virtual float ActionCharAnimRun(ActionCharAnim action)
 {
     return(0f);
 }
Ejemplo n.º 15
0
 public virtual void ActionCharAnimAssignValues(ActionCharAnim action, List <ActionParameter> parameters)
 {
 }
Ejemplo n.º 16
0
 public virtual void ActionCharAnimGUI(ActionCharAnim action, List <ActionParameter> parameters = null)
 {
                 #if UNITY_EDITOR
     action.method = (ActionCharAnim.AnimMethodChar)EditorGUILayout.EnumPopup("Method:", action.method);
                 #endif
 }
 public override void ActionCharAnimSkip(ActionCharAnim action)
 {
     ActionCharAnimRun(action);
 }
    public override float ActionCharAnimRun(ActionCharAnim action)
    {
        string clip2DNew = action.clip2D;
        if (action.includeDirection)
        {
            clip2DNew += action.animChar.GetSpriteDirection ();
        }

        if (!action.isRunning)
        {
            action.isRunning = true;

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip2D != "")
            {
                action.animChar.charState = CharState.Custom;

                if (action.playMode == AnimPlayMode.Loop)
                {
                    tk2DIntegration.PlayAnimation (action.animChar.spriteChild, clip2DNew, true, WrapMode.Loop);
                    action.willWait = false;
                }
                else
                {
                    tk2DIntegration.PlayAnimation (action.animChar.spriteChild, clip2DNew, true, WrapMode.Once);
                }
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
            {
                action.animChar.ResetBaseClips ();
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                if (action.clip2D != "")
                {
                    if (action.standard == AnimStandard.Idle)
                    {
                        action.animChar.idleAnimSprite = action.clip2D;
                    }
                    else if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkAnimSprite = action.clip2D;
                    }
                    else if (action.standard == AnimStandard.Talk)
                    {
                        action.animChar.talkAnimSprite = action.clip2D;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runAnimSprite = action.clip2D;
                    }
                }

                if (action.changeSpeed)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkSpeedScale = action.newSpeed;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runSpeedScale = action.newSpeed;
                    }
                }

                if (action.changeSound)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        if (action.newSound != null)
                        {
                            action.animChar.walkSound = action.newSound;
                        }
                        else
                        {
                            action.animChar.walkSound = null;
                        }
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        if (action.newSound != null)
                        {
                            action.animChar.runSound = action.newSound;
                        }
                        else
                        {
                            action.animChar.runSound = null;
                        }
                    }
                }
            }

            if (action.willWait && action.clip2D != "")
            {
                if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                {
                    return (action.defaultPauseTime);
                }
            }
        }

        else
        {
            if (action.animChar.spriteChild && action.clip2D != "")
            {
                if (!tk2DIntegration.IsAnimationPlaying (action.animChar.spriteChild, action.clip2D))
                {
                    action.isRunning = false;
                    return 0f;
                }
                else
                {
                    return (action.defaultPauseTime / 6f);
                }
            }
        }

        return 0f;
    }
        public override float ActionCharAnimRun(ActionCharAnim action)
        {
            string clip2DNew = action.clip2D;

            if (action.includeDirection)
            {
                clip2DNew += action.animChar.GetSpriteDirection();
            }

            if (!action.isRunning)
            {
                action.isRunning = true;

                if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip2D != "")
                {
                    action.animChar.charState = CharState.Custom;

                    if (action.playMode == AnimPlayMode.Loop)
                    {
                        tk2DIntegration.PlayAnimation(action.animChar.spriteChild, clip2DNew, true, WrapMode.Loop);
                        action.willWait = false;
                    }
                    else
                    {
                        tk2DIntegration.PlayAnimation(action.animChar.spriteChild, clip2DNew, true, WrapMode.Once);
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                {
                    action.animChar.ResetBaseClips();
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
                {
                    if (action.clip2D != "")
                    {
                        if (action.standard == AnimStandard.Idle)
                        {
                            action.animChar.idleAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Walk)
                        {
                            action.animChar.walkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Talk)
                        {
                            action.animChar.talkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            action.animChar.runAnimSprite = action.clip2D;
                        }
                    }

                    if (action.changeSpeed)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            action.animChar.walkSpeedScale = action.newSpeed;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            action.animChar.runSpeedScale = action.newSpeed;
                        }
                    }

                    if (action.changeSound)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            if (action.newSound != null)
                            {
                                action.animChar.walkSound = action.newSound;
                            }
                            else
                            {
                                action.animChar.walkSound = null;
                            }
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            if (action.newSound != null)
                            {
                                action.animChar.runSound = action.newSound;
                            }
                            else
                            {
                                action.animChar.runSound = null;
                            }
                        }
                    }
                }

                if (action.willWait && action.clip2D != "")
                {
                    if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                    {
                        return(action.defaultPauseTime);
                    }
                }
            }

            else
            {
                if (action.animChar.spriteChild && action.clip2D != "")
                {
                    if (!tk2DIntegration.IsAnimationPlaying(action.animChar.spriteChild, action.clip2D))
                    {
                        action.isRunning = false;
                        return(0f);
                    }
                    else
                    {
                        return(action.defaultPauseTime / 6f);
                    }
                }
            }

            return(0f);
        }
Ejemplo n.º 20
0
    public override float ActionCharAnimRun(ActionCharAnim action)
    {
        if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
        {
            if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
            {
                action.animChar.moveSpeedParameter = action.parameterName;

                if (action.changeSpeed)
                {
                    character.walkSpeedScale = action.newSpeed;
                    character.runSpeedScale = action.parameterValue;
                }
            }
            else if (action.mecanimCharParameter == MecanimCharParameter.TalkBool)
            {
                action.animChar.talkParameter = action.parameterName;
            }
            else if (action.mecanimCharParameter == MecanimCharParameter.TurnFloat)
            {
                action.animChar.turnParameter = action.parameterName;
            }

            return 0f;
        }

        Animator animator = GetAnimator ();
        if (animator == null)
        {
            return 0f;
        }

        if (!action.isRunning)
        {
            action.isRunning = true;
            if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
            {
                if (action.parameterName != "")
                {
                    if (action.mecanimParameterType == MecanimParameterType.Float)
                    {
                        animator.SetFloat (action.parameterName, action.parameterValue);
                    }
                    else if (action.mecanimParameterType == MecanimParameterType.Int)
                    {
                        animator.SetInteger (action.parameterName, (int) action.parameterValue);
                    }
                    else if (action.mecanimParameterType == MecanimParameterType.Bool)
                    {
                        bool paramValue = false;
                        if (action.parameterValue > 0f)
                        {
                            paramValue = true;
                        }
                        animator.SetBool (action.parameterName, paramValue);
                    }
                    else if (action.mecanimParameterType == MecanimParameterType.Trigger)
                    {
                        animator.SetTrigger (action.parameterName);
                    }
                }
            }
            else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom && animator)
            {
                if (action.clip2D != "")
                {
                    string clip2DNew = action.clip2D;
                    if (action.includeDirection)
                    {
                        clip2DNew += action.animChar.GetSpriteDirection ();
                    }

                    animator.CrossFade (clip2DNew, action.fadeTime, action.layerInt);

                    if (action.willWait)
                    {
                        return (action.defaultPauseTime);
                    }
                }
            }
        }
        else
        {
            if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
            {
                if (animator && action.clip2D != "")
                {
                    if (animator.GetCurrentAnimatorStateInfo (action.layerInt).normalizedTime < 0.98f)
                    {
                        return (action.defaultPauseTime / 6f);
                    }
                    else
                    {
                        action.isRunning = false;
                        return 0f;
                    }
                }
            }
        }

        return 0f;
    }
Ejemplo n.º 21
0
        public override void ActionCharAnimGUI(ActionCharAnim action, List <ActionParameter> parameters = null)
        {
                        #if UNITY_EDITOR
            action.methodMecanim = (AnimMethodCharMecanim)EditorGUILayout.EnumPopup("Method:", action.methodMecanim);

            if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
            {
                action.parameterNameID = Action.ChooseParameterGUI("Parameter to affect:", parameters, action.parameterNameID, ParameterType.String);
                if (action.parameterNameID < 0)
                {
                    action.parameterName = EditorGUILayout.TextField("Parameter to affect:", action.parameterName);
                }

                action.mecanimParameterType = (MecanimParameterType)EditorGUILayout.EnumPopup("Parameter type:", action.mecanimParameterType);
                //action.parameterValue = EditorGUILayout.FloatField ("Set as value:", action.parameterValue);

                if (action.mecanimParameterType == MecanimParameterType.Bool)
                {
                    bool value = (action.parameterValue <= 0f) ? false : true;
                    value = EditorGUILayout.Toggle("Set as value:", value);
                    action.parameterValue = (value) ? 1f : 0f;
                }
                else if (action.mecanimParameterType == MecanimParameterType.Int)
                {
                    int value = (int)action.parameterValue;
                    value = EditorGUILayout.IntField("Set as value:", value);
                    action.parameterValue = (float)value;
                }
                else if (action.mecanimParameterType == MecanimParameterType.Float)
                {
                    action.parameterValue = EditorGUILayout.FloatField("Set as value:", action.parameterValue);
                }
                else if (action.mecanimParameterType == MecanimParameterType.Trigger)
                {
                    bool value = (action.parameterValue <= 0f) ? false : true;
                    value = EditorGUILayout.Toggle("Ignore when skipping?", value);
                    action.parameterValue = (value) ? 1f : 0f;
                }
            }

            else if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
            {
                action.mecanimCharParameter = (MecanimCharParameter)EditorGUILayout.EnumPopup("Parameter to change:", action.mecanimCharParameter);
                action.parameterName        = EditorGUILayout.TextField("New parameter name:", action.parameterName);

                if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                {
                    action.changeSound = EditorGUILayout.Toggle("Change sound?", action.changeSound);
                    if (action.changeSound)
                    {
                        action.standard = (AnimStandard)EditorGUILayout.EnumPopup("Change:", action.standard);
                        if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
                        {
                            action.newSound = (AudioClip)EditorGUILayout.ObjectField("New sound:", action.newSound, typeof(AudioClip), false);
                        }
                        else
                        {
                            EditorGUILayout.HelpBox("Only Walk and Run have a standard sounds.", MessageType.Info);
                        }
                    }
                }
            }

            else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
            {
                action.clip2DParameterID = Action.ChooseParameterGUI("Clip:", parameters, action.clip2DParameterID, ParameterType.String);
                if (action.clip2DParameterID < 0)
                {
                    action.clip2D = EditorGUILayout.TextField("Clip:", action.clip2D);
                }

                action.includeDirection = EditorGUILayout.Toggle("Add directional suffix?", action.includeDirection);
                action.layerInt         = EditorGUILayout.IntField("Mecanim layer:", action.layerInt);
                action.fadeTime         = EditorGUILayout.Slider("Transition time:", action.fadeTime, 0f, 1f);
                action.willWait         = EditorGUILayout.Toggle("Wait until finish?", action.willWait);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(action);
            }
                        #endif
        }
Ejemplo n.º 22
0
 public virtual void ActionCharAnimSkip(ActionCharAnim action)
 {
     ActionCharAnimRun(action);
 }
    public override void ActionCharAnimSkip(ActionCharAnim action)
    {
        string clip2DNew = action.clip2D;
        if (action.includeDirection)
        {
            clip2DNew += action.animChar.GetSpriteDirection ();
        }

        if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip2D != "")
        {
            if (!action.willWait || action.playMode == AnimPlayMode.Loop)
            {
                action.animChar.charState = CharState.Custom;

                if (action.playMode == AnimPlayMode.Loop)
                {
                    tk2DIntegration.PlayAnimation (action.animChar.spriteChild, clip2DNew, true, WrapMode.Loop);
                    action.willWait = false;
                }
                else
                {
                    tk2DIntegration.PlayAnimation (action.animChar.spriteChild, clip2DNew, true, WrapMode.Once);
                }
            }
            else
            {
                if (action.playMode == AnimPlayMode.PlayOnce)
                {
                    action.animChar.charState = CharState.Idle;
                }
            }
        }

        else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
        {
            action.animChar.ResetBaseClips ();
        }

        else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
        {
            if (action.clip2D != "")
            {
                if (action.standard == AnimStandard.Idle)
                {
                    action.animChar.idleAnimSprite = action.clip2D;
                }
                else if (action.standard == AnimStandard.Walk)
                {
                    action.animChar.walkAnimSprite = action.clip2D;
                }
                else if (action.standard == AnimStandard.Talk)
                {
                    action.animChar.talkAnimSprite = action.clip2D;
                }
                else if (action.standard == AnimStandard.Run)
                {
                    action.animChar.runAnimSprite = action.clip2D;
                }
            }

            if (action.changeSpeed)
            {
                if (action.standard == AnimStandard.Walk)
                {
                    action.animChar.walkSpeedScale = action.newSpeed;
                }
                else if (action.standard == AnimStandard.Run)
                {
                    action.animChar.runSpeedScale = action.newSpeed;
                }
            }

            if (action.changeSound)
            {
                if (action.standard == AnimStandard.Walk)
                {
                    if (action.newSound != null)
                    {
                        action.animChar.walkSound = action.newSound;
                    }
                    else
                    {
                        action.animChar.walkSound = null;
                    }
                }
                else if (action.standard == AnimStandard.Run)
                {
                    if (action.newSound != null)
                    {
                        action.animChar.runSound = action.newSound;
                    }
                    else
                    {
                        action.animChar.runSound = null;
                    }
                }
            }
        }
    }
Ejemplo n.º 24
0
 public override float ActionCharAnimRun(ActionCharAnim action)
 {
     return(ActionCharAnimProcess(action, false));
 }
        public override void ActionCharAnimGUI(ActionCharAnim action)
        {
            #if UNITY_EDITOR

            action.methodMecanim = (AnimMethodCharMecanim) EditorGUILayout.EnumPopup ("Method:", action.methodMecanim);

            if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
            {
                action.parameterName = EditorGUILayout.TextField ("Parameter to affect:", action.parameterName);
                action.mecanimParameterType = (MecanimParameterType) EditorGUILayout.EnumPopup ("Parameter type:", action.mecanimParameterType);
                if (action.mecanimParameterType != MecanimParameterType.Trigger)
                {
                    action.parameterValue = EditorGUILayout.FloatField ("Set as value:", action.parameterValue);
                }
            }

            else if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
            {
                action.mecanimCharParameter = (MecanimCharParameter) EditorGUILayout.EnumPopup ("Parameter to change:", action.mecanimCharParameter);
                action.parameterName = EditorGUILayout.TextField ("New parameter name:", action.parameterName);

                if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                {
                    action.changeSpeed = EditorGUILayout.Toggle ("Change speed scale?", action.changeSpeed);
                    if (action.changeSpeed)
                    {
                        action.newSpeed = EditorGUILayout.FloatField ("Walk speed scale:", action.newSpeed);
                        action.parameterValue = EditorGUILayout.FloatField ("Run speed scale:", action.parameterValue);
                    }
                }
            }

            else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
            {
                action.clip2D = EditorGUILayout.TextField ("Clip:", action.clip2D);
                action.includeDirection = EditorGUILayout.Toggle ("Add directional suffix?", action.includeDirection);

                action.layerInt = EditorGUILayout.IntField ("Mecanim layer:", action.layerInt);
                action.fadeTime = EditorGUILayout.Slider ("Transition time:", action.fadeTime, 0f, 1f);
                action.willWait = EditorGUILayout.Toggle ("Wait until finish?", action.willWait);
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty (action);
            }

            #endif
        }
Ejemplo n.º 26
0
        private float ActionCharAnimProcess(ActionCharAnim action, bool isSkipping)
        {
            if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
            {
                if (action.parameterName != "")
                {
                    if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                    {
                        action.animChar.moveSpeedParameter = action.parameterName;
                    }
                    else if (action.mecanimCharParameter == MecanimCharParameter.TalkBool)
                    {
                        action.animChar.talkParameter = action.parameterName;
                    }
                    else if (action.mecanimCharParameter == MecanimCharParameter.TurnFloat)
                    {
                        action.animChar.turnParameter = action.parameterName;
                    }
                }

                if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat && action.changeSound)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkSound = action.newSound;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runSound = action.newSound;
                    }
                }

                return(0f);
            }

            if (character.GetAnimator() == null)
            {
                return(0f);
            }

            if (!action.isRunning)
            {
                action.isRunning = true;
                if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
                {
                    if (action.parameterName != "")
                    {
                        if (action.mecanimParameterType == MecanimParameterType.Float)
                        {
                            character.GetAnimator().SetFloat(action.parameterName, action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Int)
                        {
                            character.GetAnimator().SetInteger(action.parameterName, (int)action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Bool)
                        {
                            bool paramValue = false;
                            if (action.parameterValue > 0f)
                            {
                                paramValue = true;
                            }
                            character.GetAnimator().SetBool(action.parameterName, paramValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Trigger)
                        {
                            if (!isSkipping || action.parameterValue != 1f)
                            {
                                character.GetAnimator().SetTrigger(action.parameterName);
                            }
                        }
                    }
                }
                else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (action.clip2D != "")
                    {
                        character.GetAnimator().CrossFade(action.clip2D, action.fadeTime, action.layerInt);

                        if (action.willWait)
                        {
                            return(action.defaultPauseTime);
                        }
                    }
                }
            }
            else
            {
                if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (action.clip2D != "")
                    {
                        if (character.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).normalizedTime < 0.98f)
                        {
                            return(action.defaultPauseTime / 6f);
                        }
                        else
                        {
                            action.isRunning = false;
                            return(0f);
                        }
                    }
                }
            }

            return(0f);
        }
Ejemplo n.º 27
0
 public virtual void ActionCharAnimGUI(ActionCharAnim action)
 {
     #if UNITY_EDITOR
     action.method = (ActionCharAnim.AnimMethodChar) EditorGUILayout.EnumPopup ("Method:", action.method);
     #endif
 }
Ejemplo n.º 28
0
 public override void ActionCharAnimSkip(ActionCharAnim action)
 {
     ActionCharAnimProcess(action, true);
 }
Ejemplo n.º 29
0
 public virtual void ActionCharAnimSkip(ActionCharAnim action)
 {
     ActionCharAnimRun (action);
 }
Ejemplo n.º 30
0
        public override void ActionCharAnimGUI(ActionCharAnim action, List <ActionParameter> parameters = null)
        {
                        #if UNITY_EDITOR
            action.method = (ActionCharAnim.AnimMethodChar)EditorGUILayout.EnumPopup("Method:", action.method);

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
            {
                action.clip2DParameterID = Action.ChooseParameterGUI("Clip:", parameters, action.clip2DParameterID, ParameterType.String);
                if (action.clip2DParameterID < 0)
                {
                    action.clip2D = EditorGUILayout.TextField("Clip:", action.clip2D);
                }
                action.includeDirection = EditorGUILayout.Toggle("Add directional suffix?", action.includeDirection);

                action.playMode = (AnimPlayMode)EditorGUILayout.EnumPopup("Play mode:", action.playMode);
                if (action.playMode == AnimPlayMode.Loop)
                {
                    action.willWait = false;
                }
                else
                {
                    action.willWait = EditorGUILayout.Toggle("Wait until finish?", action.willWait);
                }

                action.layer = AnimLayer.Base;
            }
            else if (action.method == ActionCharAnim.AnimMethodChar.StopCustom)
            {
                EditorGUILayout.HelpBox("This Action does not work for Sprite-based characters.", MessageType.Info);
            }
            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                action.clip2DParameterID = Action.ChooseParameterGUI("Clip:", parameters, action.clip2DParameterID, ParameterType.String);
                if (action.clip2DParameterID < 0)
                {
                    action.clip2D = EditorGUILayout.TextField("Clip:", action.clip2D);
                }
                action.standard = (AnimStandard)EditorGUILayout.EnumPopup("Change:", action.standard);

                if (action.standard == AnimStandard.Walk || action.standard == AnimStandard.Run)
                {
                    action.changeSound = EditorGUILayout.Toggle("Change sound?", action.changeSound);
                    if (action.changeSound)
                    {
                        action.newSoundParameterID = Action.ChooseParameterGUI("New sound:", parameters, action.newSoundParameterID, ParameterType.UnityObject);
                        if (action.newSoundParameterID < 0)
                        {
                            action.newSound = (AudioClip)EditorGUILayout.ObjectField("New sound:", action.newSound, typeof(AudioClip), false);
                        }
                    }
                    action.changeSpeed = EditorGUILayout.Toggle("Change speed?", action.changeSpeed);
                    if (action.changeSpeed)
                    {
                        action.newSpeedParameterID = Action.ChooseParameterGUI("New speed:", parameters, action.newSpeedParameterID, ParameterType.Float);
                        if (action.newSpeedParameterID < 0)
                        {
                            action.newSpeed = EditorGUILayout.FloatField("New speed:", action.newSpeed);
                        }
                    }
                }
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(action);
            }
                        #endif
        }
        public override void ActionCharAnimSkip(ActionCharAnim action)
        {
            if (action.animChar == null)
            {
                return;
            }

            Animation animation = null;

            if (action.animChar.spriteChild && action.animChar.spriteChild.GetComponent <Animation>())
            {
                animation = action.animChar.spriteChild.GetComponent <Animation>();
            }
            if (character.GetAnimation ())
            {
                animation = action.animChar.GetAnimation ();
            }

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip)
            {
                if (action.layer == AnimLayer.Base)
                {
                    action.animChar.charState = CharState.Custom;
                    action.blendMode = AnimationBlendMode.Blend;
                    action.playMode = (AnimPlayMode) action.playModeBase;
                }

                if (action.playMode == AnimPlayMode.PlayOnce)
                {
                    if (action.layer == AnimLayer.Base && action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                    {
                        action.animChar.charState = CharState.Idle;
                        action.animChar.ResetBaseClips ();
                    }
                }
                else
                {
                    AdvGame.CleanUnusedClips (animation);

                    WrapMode wrap = WrapMode.Once;
                    Transform mixingTransform = null;

                    if (action.layer == AnimLayer.UpperBody)
                    {
                        mixingTransform = action.animChar.upperBodyBone;
                    }
                    else if (action.layer == AnimLayer.LeftArm)
                    {
                        mixingTransform = action.animChar.leftArmBone;
                    }
                    else if (action.layer == AnimLayer.RightArm)
                    {
                        mixingTransform = action.animChar.rightArmBone;
                    }
                    else if (action.layer == AnimLayer.Neck || action.layer == AnimLayer.Head || action.layer == AnimLayer.Face || action.layer == AnimLayer.Mouth)
                    {
                        mixingTransform = action.animChar.neckBone;
                    }

                    if (action.playMode == AnimPlayMode.PlayOnceAndClamp)
                    {
                        wrap = WrapMode.ClampForever;
                    }
                    else if (action.playMode == AnimPlayMode.Loop)
                    {
                        wrap = WrapMode.Loop;
                    }

                    AdvGame.PlayAnimClipFrame (animation, AdvGame.GetAnimLayerInt (action.layer), action.clip, action.blendMode, wrap, action.fadeTime, mixingTransform, 1f);
                }

                AdvGame.CleanUnusedClips (animation);
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.StopCustom && action.clip)
            {
                if (action.clip != action.animChar.idleAnim && action.clip != action.animChar.walkAnim)
                {
                    animation.Blend (action.clip.name, 0f, 0f);
                }
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
            {
                action.animChar.ResetBaseClips ();

                action.animChar.charState = CharState.Idle;
                AdvGame.CleanUnusedClips (animation);
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                if (action.clip != null)
                {
                    if (action.standard == AnimStandard.Idle)
                    {
                        action.animChar.idleAnim = action.clip;
                    }
                    else if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkAnim = action.clip;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runAnim = action.clip;
                    }
                    else if (action.standard == AnimStandard.Talk)
                    {
                        action.animChar.talkAnim = action.clip;
                    }
                }

                if (action.changeSpeed)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        action.animChar.walkSpeedScale = action.newSpeed;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        action.animChar.runSpeedScale = action.newSpeed;
                    }
                }

                if (action.changeSound)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        if (action.newSound != null)
                        {
                            action.animChar.walkSound = action.newSound;
                        }
                        else
                        {
                            action.animChar.walkSound = null;
                        }
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        if (action.newSound != null)
                        {
                            action.animChar.runSound = action.newSound;
                        }
                        else
                        {
                            action.animChar.runSound = null;
                        }
                    }
                }
            }
        }
Ejemplo n.º 32
0
        public override void ActionCharAnimSkip(ActionCharAnim action)
        {
            string clip2DNew = action.clip2D;

            if (action.includeDirection)
            {
                clip2DNew += character.GetSpriteDirection();
            }

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip2D != "")
            {
                if (!action.willWait || action.playMode == AnimPlayMode.Loop)
                {
                    character.charState = CharState.Custom;

                    if (action.playMode == AnimPlayMode.Loop)
                    {
                        tk2DIntegration.PlayAnimation(character.spriteChild, clip2DNew, true, WrapMode.Loop);
                        action.willWait = false;
                    }
                    else
                    {
                        tk2DIntegration.PlayAnimation(character.spriteChild, clip2DNew, true, WrapMode.Once);
                    }
                }
                else
                {
                    if (action.playMode == AnimPlayMode.PlayOnce)
                    {
                        character.charState = CharState.Idle;
                    }
                }
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
            {
                character.ResetBaseClips();
            }

            else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                if (!string.IsNullOrEmpty(action.clip2D))
                {
                    if (action.standard == AnimStandard.Idle)
                    {
                        character.idleAnimSprite = action.clip2D;
                    }
                    else if (action.standard == AnimStandard.Walk)
                    {
                        character.walkAnimSprite = action.clip2D;
                    }
                    else if (action.standard == AnimStandard.Talk)
                    {
                        character.talkAnimSprite = action.clip2D;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        character.runAnimSprite = action.clip2D;
                    }
                }

                if (action.changeSpeed)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        character.walkSpeedScale = action.newSpeed;
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        character.runSpeedScale = action.newSpeed;
                    }
                }

                if (action.changeSound)
                {
                    if (action.standard == AnimStandard.Walk)
                    {
                        if (action.newSound != null)
                        {
                            character.walkSound = action.newSound;
                        }
                        else
                        {
                            character.walkSound = null;
                        }
                    }
                    else if (action.standard == AnimStandard.Run)
                    {
                        if (action.newSound != null)
                        {
                            character.runSound = action.newSound;
                        }
                        else
                        {
                            character.runSound = null;
                        }
                    }
                }
            }
        }
        public override void ActionCharAnimSkip(ActionCharAnim action)
        {
            if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
            {
                ActionCharAnimRun (action);
                return;
            }
            else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
            {
                action.animChar.ResetBaseClips ();
                action.animChar.charState = CharState.Idle;
                return;
            }

            string clip2DNew = action.clip2D;
            if (action.includeDirection)
            {
                clip2DNew += action.animChar.GetSpriteDirection ();
            }

            if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
            {
                if (action.willWait && action.idleAfter)
                {
                    action.animChar.charState = CharState.Idle;
                }
                else if (action.animChar.GetAnimator ())
                {
                    action.animChar.charState = CharState.Custom;
                    action.animChar.GetAnimator ().Play (clip2DNew, action.layerInt, 0.8f);
                }
            }
        }
        public override float ActionCharAnimRun(ActionCharAnim action)
        {
            string clip2DNew = action.clip2D;

            if (action.includeDirection)
            {
                clip2DNew += action.animChar.GetSpriteDirection();
            }

            if (!action.isRunning)
            {
                action.isRunning = true;

                if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom && action.clip2D != "")
                {
                    if (action.animChar.GetAnimator())
                    {
                        action.animChar.charState = CharState.Custom;
                        action.animChar.GetAnimator().CrossFade(clip2DNew, action.fadeTime, action.layerInt);
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                {
                    if (action.idleAfterCustom)
                    {
                        action.layerInt = 0;
                        return(action.defaultPauseTime);
                    }
                    else
                    {
                        action.animChar.ResetBaseClips();
                        action.animChar.charState = CharState.Idle;
                    }
                }

                else if (action.method == ActionCharAnim.AnimMethodChar.SetStandard)
                {
                    if (action.clip2D != "")
                    {
                        if (action.standard == AnimStandard.Idle)
                        {
                            action.animChar.idleAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Walk)
                        {
                            action.animChar.walkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Talk)
                        {
                            action.animChar.talkAnimSprite = action.clip2D;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            action.animChar.runAnimSprite = action.clip2D;
                        }
                    }

                    if (action.changeSpeed)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            action.animChar.walkSpeedScale = action.newSpeed;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            action.animChar.runSpeedScale = action.newSpeed;
                        }
                    }

                    if (action.changeSound)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            if (action.newSound != null)
                            {
                                action.animChar.walkSound = action.newSound;
                            }
                            else
                            {
                                action.animChar.walkSound = null;
                            }
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            if (action.newSound != null)
                            {
                                action.animChar.runSound = action.newSound;
                            }
                            else
                            {
                                action.animChar.runSound = null;
                            }
                        }
                    }
                }

                if (action.willWait && action.clip2D != "")
                {
                    if (action.method == ActionCharAnim.AnimMethodChar.PlayCustom)
                    {
                        return(action.defaultPauseTime);
                    }
                }
            }

            else
            {
                if (action.animChar.GetAnimator())
                {
                    // Calc how much longer left to wait
                    float totalLength = action.animChar.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).length;
                    float timeLeft    = (1f - action.animChar.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).normalizedTime) * totalLength;

                    // Subtract a small amount of time to prevent overshooting
                    timeLeft -= 0.1f;

                    if (timeLeft > 0f)
                    {
                        return(timeLeft);
                    }
                    else
                    {
                        if (action.method == ActionCharAnim.AnimMethodChar.ResetToIdle)
                        {
                            action.animChar.ResetBaseClips();
                            action.animChar.charState = CharState.Idle;
                        }
                        else if (action.idleAfter)
                        {
                            action.animChar.charState = CharState.Idle;
                        }

                        action.isRunning = false;
                        return(0f);
                    }
                }
                else
                {
                    action.isRunning          = false;
                    action.animChar.charState = CharState.Idle;
                    return(0f);
                }
            }

            return(0f);
        }
 public override void ActionCharAnimSkip(ActionCharAnim action)
 {
     if (action.methodMecanim != AnimMethodCharMecanim.ChangeParameterValue)
     {
         ActionCharAnimRun (action);
     }
 }
        protected float ActionCharAnimProcess(ActionCharAnim action, bool isSkipping)
        {
            if (action.methodMecanim == AnimMethodCharMecanim.SetStandard)
            {
                if (!string.IsNullOrEmpty(action.parameterName))
                {
                    if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                    {
                        character.moveSpeedParameter = action.parameterName;
                    }
                    else if (action.mecanimCharParameter == MecanimCharParameter.TalkBool)
                    {
                        character.talkParameter = action.parameterName;
                    }
                    else if (action.mecanimCharParameter == MecanimCharParameter.TurnFloat)
                    {
                        character.turnParameter = action.parameterName;
                    }
                }

                if (action.mecanimCharParameter == MecanimCharParameter.MoveSpeedFloat)
                {
                    if (action.changeSpeed)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            character.walkSpeedScale = action.newSpeed;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            character.runSpeedScale = action.newSpeed;
                        }
                    }

                    if (action.changeSound)
                    {
                        if (action.standard == AnimStandard.Walk)
                        {
                            character.walkSound = action.newSound;
                        }
                        else if (action.standard == AnimStandard.Run)
                        {
                            character.runSound = action.newSound;
                        }
                    }
                }

                return(0f);
            }

            if (character.GetAnimator() == null)
            {
                return(0f);
            }

            if (!action.isRunning)
            {
                action.isRunning = true;
                if (action.methodMecanim == AnimMethodCharMecanim.ChangeParameterValue)
                {
                    if (!string.IsNullOrEmpty(action.parameterName))
                    {
                        if (action.mecanimParameterType == MecanimParameterType.Float)
                        {
                            character.GetAnimator().SetFloat(action.parameterName, action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Int)
                        {
                            character.GetAnimator().SetInteger(action.parameterName, (int)action.parameterValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Bool)
                        {
                            bool paramValue = false;
                            if (action.parameterValue > 0f)
                            {
                                paramValue = true;
                            }
                            character.GetAnimator().SetBool(action.parameterName, paramValue);
                        }
                        else if (action.mecanimParameterType == MecanimParameterType.Trigger)
                        {
                            if (!isSkipping || action.parameterValue < 1f)
                            {
                                character.GetAnimator().SetTrigger(action.parameterName);
                            }
                        }
                    }
                }
                else if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (!string.IsNullOrEmpty(action.clip2D))
                    {
                        character.GetAnimator().CrossFade(action.clip2D, action.fadeTime, action.layerInt);

                        if (action.willWait)
                        {
                            // In 2019, sometimes more than 1 frame is necessary for the transition to kick in
                                                        #if UNITY_2019_1_OR_NEWER
                            return(Time.fixedDeltaTime * 2f);
                                                        #else
                            return(action.defaultPauseTime);
                                                        #endif
                        }
                    }
                }
            }
            else
            {
                if (action.methodMecanim == AnimMethodCharMecanim.PlayCustom)
                {
                    if (!string.IsNullOrEmpty(action.clip2D))
                    {
                        if (character.GetAnimator().GetCurrentAnimatorStateInfo(action.layerInt).normalizedTime < 0.98f)
                        {
                            return(action.defaultPauseTime / 6f);
                        }
                        else
                        {
                            action.isRunning = false;
                            return(0f);
                        }
                    }
                }
            }

            return(0f);
        }