Example #1
0
    public override void ActionAnimSkip(ActionAnim action)
    {
        if (action.method == AnimMethod.PlayCustom && action._anim && action.clip)
        {
            AdvGame.CleanUnusedClips(action._anim);

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

            AdvGame.PlayAnimClipFrame(action._anim, 0, action.clip, action.blendMode, wrap, 0f, null, 1f);
        }

        else if (action.method == AnimMethod.StopCustom && action._anim && action.clip)
        {
            AdvGame.CleanUnusedClips(action._anim);
            action._anim.Blend(action.clip.name, 0f, 0f);
        }

        else if (action.method == AnimMethod.BlendShape && action.shapeKey > -1)
        {
            if (action.shapeObject)
            {
                action.shapeObject.Change(action.shapeKey, action.shapeValue, 0f);
            }
        }
    }
Example #2
0
    override public float Run()
    {
        if (!isRunning)
        {
            isRunning = true;

            if (_anim && clip)
            {
                if (method == AnimMethod.PlayCustom)
                {
                    AdvGame.CleanUnusedClips(_anim);

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

                    AdvGame.PlayAnimClip(_anim, 0, clip, blendMode, wrap, fadeTime, null);
                }

                else if (method == AnimMethod.StopCustom)
                {
                    AdvGame.CleanUnusedClips(_anim);
                    _anim.animation.Blend(clip.name, 0f, fadeTime);
                }

                if (willWait)
                {
                    return(defaultPauseTime);
                }
            }

            return(0f);
        }
        else
        {
            if (!_anim.IsPlaying(clip.name))
            {
                isRunning = false;
                return(0f);
            }
            else
            {
                return(defaultPauseTime);
            }
        }
    }
Example #3
0
    public override void ActionSpeechSkip(ActionSpeech action)
    {
        if (action.speaker.talkingAnimation == TalkingAnimation.CustomFace && (action.headClip || action.mouthClip))
        {
            AdvGame.CleanUnusedClips(action.speaker.GetComponent <Animation>());

            if (action.headClip)
            {
                AdvGame.PlayAnimClipFrame(action.speaker.GetComponent <Animation>(), AdvGame.GetAnimLayerInt(AnimLayer.Head), action.headClip, AnimationBlendMode.Additive, WrapMode.Once, 0f, action.speaker.neckBone, 1f);
            }

            if (action.mouthClip)
            {
                AdvGame.PlayAnimClipFrame(action.speaker.GetComponent <Animation>(), AdvGame.GetAnimLayerInt(AnimLayer.Mouth), action.mouthClip, AnimationBlendMode.Additive, WrapMode.Once, 0f, action.speaker.neckBone, 1f);
            }
        }
    }
Example #4
0
    override public float Run()
    {
        dialog       = GameObject.FindWithTag(Tags.gameEngine).GetComponent <Dialog>();
        stateHandler = GameObject.FindWithTag(Tags.persistentEngine).GetComponent <StateHandler>();
        options      = stateHandler.GetComponent <Options>();

        if (dialog && stateHandler && options)
        {
            if (!isRunning)
            {
                isRunning = true;

                string _text     = messageText;
                string _language = "";

                if (options.optionsData.language > 0)
                {
                    // Not in original language, so pull translation in from Speech Manager
                    if (!speechManager)
                    {
                        speechManager = AdvGame.GetReferences().speechManager;
                    }

                    if (speechManager.GetLineByID(lineID) != null && speechManager.GetLineByID(lineID).translationText.Count > (options.optionsData.language - 1))
                    {
                        _text     = speechManager.GetLineByID(lineID).translationText [options.optionsData.language - 1];
                        _language = speechManager.languages[options.optionsData.language];
                    }
                }

                if (_text != "")
                {
                    dialog.KillDialog();

                    if (isBackground)
                    {
                        stateHandler.gameState = GameState.Normal;
                    }
                    else
                    {
                        stateHandler.gameState = GameState.Cutscene;
                    }

                    if (isPlayer)
                    {
                        speaker = GameObject.FindWithTag(Tags.player).GetComponent <Player>();
                    }

                    if (speaker)
                    {
                        dialog.StartDialog(speaker, _text, lineID, _language);

                        if (headClip || mouthClip)
                        {
                            AdvGame.CleanUnusedClips(speaker.GetComponent <Animation>());

                            if (headClip)
                            {
                                AdvGame.PlayAnimClip(speaker.GetComponent <Animation>(), (int)AnimLayer.Head, headClip, AnimationBlendMode.Additive, WrapMode.Once, 0f, speaker.neckBone);
                            }

                            if (mouthClip)
                            {
                                AdvGame.PlayAnimClip(speaker.GetComponent <Animation>(), (int)AnimLayer.Mouth, mouthClip, AnimationBlendMode.Additive, WrapMode.Once, 0f, speaker.neckBone);
                            }
                        }
                    }
                    else
                    {
                        dialog.StartDialog(_text);
                    }

                    if (!isBackground)
                    {
                        return(defaultPauseTime);
                    }
                }

                return(0f);
            }
            else
            {
                if (!dialog.isMessageAlive)
                {
                    isRunning = false;
                    stateHandler.gameState = GameState.Cutscene;
                    return(0f);
                }
                else
                {
                    return(defaultPauseTime);
                }
            }
        }

        return(0f);
    }
Example #5
0
    public override float ActionAnimRun(ActionAnim action)
    {
        if (!action.isRunning)
        {
            action.isRunning = true;

            if (action.method == AnimMethod.PlayCustom && action._anim && action.clip)
            {
                AdvGame.CleanUnusedClips(action._anim);

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

                AdvGame.PlayAnimClip(action._anim, 0, action.clip, action.blendMode, wrap, action.fadeTime, null, false);
            }

            else if (action.method == AnimMethod.StopCustom && action._anim && action.clip)
            {
                AdvGame.CleanUnusedClips(action._anim);
                action._anim.Blend(action.clip.name, 0f, action.fadeTime);
            }

            else if (action.method == AnimMethod.BlendShape && action.shapeKey > -1)
            {
                if (action.shapeObject)
                {
                    action.shapeObject.Change(action.shapeKey, action.shapeValue, action.fadeTime);

                    if (action.willWait)
                    {
                        return(action.fadeTime);
                    }
                }
            }

            if (action.willWait)
            {
                return(action.defaultPauseTime);
            }
        }
        else
        {
            if (action.method == AnimMethod.PlayCustom && action._anim && action.clip)
            {
                if (!action._anim.IsPlaying(action.clip.name))
                {
                    action.isRunning = false;
                    return(0f);
                }
                else
                {
                    return(action.defaultPauseTime);
                }
            }
            else if (action.method == AnimMethod.BlendShape && action.shapeObject)
            {
                action.isRunning = false;
                return(0f);
            }
        }

        return(0f);
    }
Example #6
0
    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._animation)
        {
            animation = action.animChar._animation;
        }

        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;
                    }
                }
            }
        }
    }
Example #7
0
    override public float Run()
    {
        if (isPlayer)
        {
            animChar = GameObject.FindWithTag(Tags.player).GetComponent <Char>();
        }

        if (!isRunning)
        {
            isRunning = true;


            if (animChar)
            {
                if (method == AnimMethodChar.PlayCustom && clip)
                {
                    AdvGame.CleanUnusedClips(animChar.animation);

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

                    if (layer == AnimLayer.Base)
                    {
                        animChar.charState = CharState.Custom;
                        blendMode          = AnimationBlendMode.Blend;
                        playMode           = (AnimPlayMode)playModeBase;
                    }
                    else if (layer == AnimLayer.UpperBody)
                    {
                        mixingTransform = animChar.upperBodyBone;
                    }
                    else if (layer == AnimLayer.LeftArm)
                    {
                        mixingTransform = animChar.leftArmBone;
                    }
                    else if (layer == AnimLayer.RightArm)
                    {
                        mixingTransform = animChar.rightArmBone;
                    }
                    else if (layer == AnimLayer.Neck || layer == AnimLayer.Head || layer == AnimLayer.Face || layer == AnimLayer.Mouth)
                    {
                        mixingTransform = animChar.neckBone;
                    }

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

                    AdvGame.PlayAnimClip(animChar.GetComponent <Animation>(), (int)layer, clip, blendMode, wrap, fadeTime, mixingTransform);
                }

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

                else if (method == AnimMethodChar.ResetToIdle)
                {
                    animChar.ResetBaseClips();
                    animChar.charState = CharState.Idle;
                    AdvGame.CleanUnusedClips(animChar.animation);
                }

                else if (method == AnimMethodChar.SetStandard && clip)
                {
                    if (standard == AnimStandard.Idle)
                    {
                        animChar.idleAnim = clip;
                    }

                    else if (standard == AnimStandard.Walk)
                    {
                        animChar.walkAnim = clip;
                    }

                    else if (standard == AnimStandard.Run)
                    {
                        animChar.runAnim = clip;
                    }
                }


                if (willWait && clip)
                {
                    if (method == AnimMethodChar.PlayCustom)
                    {
                        return(defaultPauseTime);
                    }
                    else if (method == AnimMethodChar.StopCustom)
                    {
                        return(fadeTime);
                    }
                }
            }

            return(0f);
        }
        else
        {
            if (animChar.animation[clip.name] && animChar.animation[clip.name].normalizedTime < 1f && animChar.animation.IsPlaying(clip.name))
            {
                return(defaultPauseTime);
            }
            else
            {
                isRunning = false;

                if (playMode == AnimPlayMode.PlayOnce)
                {
                    animChar.animation.Blend(clip.name, 0f, fadeTime);

                    if (layer == AnimLayer.Base && method == AnimMethodChar.PlayCustom)
                    {
                        animChar.charState = CharState.Idle;
                        animChar.ResetBaseClips();
                    }
                }

                AdvGame.CleanUnusedClips(animChar.animation);

                return(0f);
            }
        }
    }