public float GetClipLength(string clipName) { AvatarAnimationClip clipObj = AnimationTemplate.GetClip(clipName); if (clipObj == null) { return(0); } return(clipObj.frameDuration * clipObj.Frames.Length); }
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(); }
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); }
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; }