Пример #1
0
    public float GetClipLength(string clipName)
    {
        AvatarAnimationClip clipObj = AnimationTemplate.GetClip(clipName);

        if (clipObj == null)
        {
            return(0);
        }

        return(clipObj.frameDuration * clipObj.Frames.Length);
    }
Пример #2
0
    public void ManualPlayByTime(string clipName, float time, bool isLoop)
    {
        AvatarAnimationClip clipObj = AnimationTemplate.GetClip(clipName);

        if (clipObj == null)
        {
            return;
        }

        float countTime = clipObj.frameDuration * clipObj.Frames.Length;
        int   currFrame = (int)(time / countTime * clipObj.Frames.Length);

        if (CurrFrame == currFrame && CurrClip != null && CurrClip.name == clipName)
        {
            return;
        }


        if (currFrame >= clipObj.Frames.Length)
        {
            if (isLoop)
            {
                currFrame %= clipObj.Frames.Length;
            }
            else
            {
                currFrame = clipObj.Frames.Length - 1;
            }
        }
        else if (currFrame < 0)
        {
            if (isLoop)
            {
                currFrame = Mathf.Abs(currFrame) % clipObj.Frames.Length;
                currFrame = clipObj.Frames.Length - currFrame;
            }
            else
            {
                currFrame = 0;
            }
        }

        CurrClip  = clipObj;
        CurrFrame = currFrame;

        UpdateRender();
    }
Пример #3
0
    public void Play(string clipName, bool randomStart, bool isLoop)
    {
        AvatarAnimationClip clipObj = AnimationTemplate.GetClip(clipName);

        if (clipObj == null)
        {
            return;
        }

        CurrClip  = clipObj;
        isPlaying = true;
        IsLoop    = isLoop;
        lostTime  = 0;

        int currFrame = randomStart ? UnityEngine.Random.Range(0, CurrClip.Frames.Length - 1) : 0;

        ManualPlayByFrame(clipName, currFrame, isLoop);
    }
Пример #4
0
    public void AddClip(string clipName)
    {
        int oldlen = Clips == null?0:Clips.Length;

        AvatarAnimationClip[] newClips = new AvatarAnimationClip[oldlen + 1];

        int i;

        for (i = 0; i < oldlen; i++)
        {
            newClips[i] = Clips[i];
        }

        AvatarAnimationClip newObj = new AvatarAnimationClip();

        newObj.clipName = clipName;
        newClips[i]     = newObj;
        Clips           = newClips;
    }