Exemplo n.º 1
0
    public static void AddTimelineAnimEvent(Animator anim, AnimatorStateTrack animTrack)
    {
        if (anim == null || animTrack == null)
        {
            return;
        }
        double            lastTime    = -1;
        TimelineAnimEvent lastHitAnim = null;

        foreach (var clip in animTrack.GetClips())
        {
            if (clip != null)
            {
                TimelineAnimEvent evt = AddTimelineAnimEvent(anim, clip);
                if (evt != null && evt.stateName.StartsWith("hit") && evt.triggerTime > lastTime)
                {
                    lastTime    = evt.triggerTime;
                    lastHitAnim = evt;
                }
            }
        }
        if (lastHitAnim != null)
        {
            lastHitAnim.isLastHit = true;
        }
    }
Exemplo n.º 2
0
    public static TimelineAnimEvent AddTimelineAnimEvent(Animator anim, TimelineClip clip)
    {
        if (anim == null || clip == null || !(clip.asset is AnimatorStatePlayableAsset))
        {
            return(null);
        }

        var evt = new TimelineAnimEvent(anim, clip.asset as AnimatorStatePlayableAsset, clip.start);

        if (evt.anim != null)
        {
            for (int i = 0; i < animEvts.Count; i++)
            {
                if (animEvts[i].triggerTime > evt.triggerTime)
                {
                    animEvts.Insert(i, evt);
                    return(null);
                }
            }
            animEvts.Add(evt);
        }
        return(evt);
    }