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 }
public virtual float ActionCharAnimRun(ActionCharAnim action) { return 0f; }
public override void ActionCharAnimSkip(ActionCharAnim action) { ActionCharAnimRun (action); }
public virtual bool RequiresRememberAnimator(ActionCharAnim action) { return(false); }
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; } } } } }
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); }
public virtual float ActionCharAnimRun(ActionCharAnim action) { return(0f); }
public virtual void ActionCharAnimAssignValues(ActionCharAnim action, List <ActionParameter> parameters) { }
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); }
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; }
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 }
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; } } } } }
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 }
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); }
public virtual void ActionCharAnimGUI(ActionCharAnim action) { #if UNITY_EDITOR action.method = (ActionCharAnim.AnimMethodChar) EditorGUILayout.EnumPopup ("Method:", action.method); #endif }
public override void ActionCharAnimSkip(ActionCharAnim action) { ActionCharAnimProcess(action, true); }
public virtual void ActionCharAnimSkip(ActionCharAnim action) { ActionCharAnimRun (action); }
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; } } } } }
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); }