Пример #1
0
    public void Configure(Animator animator, EnemyAnimationConfig config)
    {
        graph = PlayableGraph.Create();
        graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);
        mixer = AnimationMixerPlayable.Create(graph, 4);

        var clip = AnimationClipPlayable.Create(graph, config.Move);

        clip.Pause();
        mixer.ConnectInput((int)Clip.Move, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Intro);
        clip.SetDuration(config.Intro.length);
        clip.Pause();
        mixer.ConnectInput((int)Clip.Intro, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Outro);
        clip.SetDuration(config.Outro.length);
        clip.Pause();
        mixer.ConnectInput((int)Clip.Outro, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Dying);
        clip.SetDuration(config.Dying.length);
        clip.Pause();
        mixer.ConnectInput((int)Clip.Dying, clip, 0);

        var output = AnimationPlayableOutput.Create(graph, "Enemy", animator);

        output.SetSourcePlayable(mixer);
    }
Пример #2
0
    public void RestoreAfterHotReload(Animator animator, EnemyAnimationConfig config, float speed)
    {
        Configure(animator, config);
        GetPlayable(Clip.Move).SetSpeed(speed);
        var clip = GetPlayable(CurrentClip);

        clip.SetTime(clipTime);
        clip.Play();
        SetWeight(CurrentClip, 1f);
        graph.Play();

        if (CurrentClip == Clip.Intro && hasAppearClip)
        {
            clip = GetPlayable(Clip.Appear);
            clip.SetTime(clipTime);
            clip.Play();
            SetWeight(Clip.Appear, 1f);
        }
        else if (CurrentClip >= Clip.Outro && hasDisappearClip)
        {
            clip = GetPlayable(Clip.Disappear);
            clip.Play();
            double delay = GetPlayable(CurrentClip).GetDuration() - clip.GetDuration() - clipTime;
            if (delay > 0f)
            {
                clip.SetDelay(delay);
            }
            else
            {
                clip.SetTime(-delay);
            }

            SetWeight(Clip.Disappear, 1f);
        }
    }
Пример #3
0
    public EnemyAnimator Configure(Animator animator, EnemyAnimationConfig config)
    {
        flag             = true;
        hasAppearClip    = config.Appear;
        hasDisappearClip = config.Disappear;

        graph = PlayableGraph.Create();
        graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);
        mixer = AnimationMixerPlayable.Create(
            graph, hasAppearClip || hasDisappearClip ? 6 : 4
            );

        var clip = AnimationClipPlayable.Create(graph, config.Move);

        clip.Pause();
        int val = (int)Clip.Move;

        mixer.ConnectInput(val, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Intro);
        clip.SetDuration(config.Intro.length);
        clip.Pause();
        val = (int)Clip.Intro;
        mixer.ConnectInput(val, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Outro);
        clip.SetDuration(config.Outro.length);
        clip.Pause();
        val = (int)Clip.Outro;
        mixer.ConnectInput(val, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Dying);
        clip.SetDuration(config.Dying.length);
        clip.Pause();
        val = (int)Clip.Dying;
        mixer.ConnectInput(val, clip, 0);

        if (hasAppearClip)
        {
            clip = AnimationClipPlayable.Create(graph, config.Appear);
            clip.SetDuration(config.Appear.length);
            clip.Pause();
            mixer.ConnectInput((int)Clip.Appear, clip, 0);
        }

        if (hasDisappearClip)
        {
            clip = AnimationClipPlayable.Create(graph, config.Disappear);
            clip.SetDuration(config.Disappear.length);
            clip.Pause();
            mixer.ConnectInput((int)Clip.Disappear, clip, 0);
        }

        var output = AnimationPlayableOutput.Create(graph, "Enemy", animator);

        output.SetSourcePlayable(mixer);
        return(this);
    }
Пример #4
0
    public void Configure(Animator animator, EnemyAnimationConfig config)
    {
        hasAppearClip    = config.Appear;
        hasDisappearClip = config.Disappear;
        int mixerCount = hasAppearClip || hasAppearClip ? 6 : 4;

        graph = PlayableGraph.Create();
        graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);
        mixer = AnimationMixerPlayable.Create(graph, mixerCount);

        var clip = AnimationClipPlayable.Create(graph, config.Move);

        clip.Pause();
        mixer.ConnectInput((int)Clip.Move, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Intro);
        clip.SetDuration(config.Intro.length);
        mixer.ConnectInput((int)Clip.Intro, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Outro);
        clip.SetDuration(config.Outro.length);
        clip.Pause();
        mixer.ConnectInput((int)Clip.Outro, clip, 0);

        clip = AnimationClipPlayable.Create(graph, config.Dying);
        clip.SetDuration(config.Dying.length);
        clip.Pause();
        mixer.ConnectInput((int)Clip.Dying, clip, 0);

        if (hasAppearClip)
        {
            clip = AnimationClipPlayable.Create(graph, config.Appear);
            clip.SetDuration(config.Appear.length);
            clip.Pause();
            mixer.ConnectInput((int)Clip.Appear, clip, 0);
        }

        if (hasDisappearClip)
        {
            clip = AnimationClipPlayable.Create(graph, config.Disappear);
            clip.SetDuration(config.Appear.length);
            clip.Pause();
            mixer.ConnectInput((int)Clip.Disappear, clip, 0);
        }

        var output = AnimationPlayableOutput.Create(graph, "Enemy", animator);

        output.SetSourcePlayable(mixer);
    }