/* private bool IsFrameBanned(int frame) * { * foreach (var pair in banQueue) * { * if (frame >= pair[0] && frame <= pair[0] + pair[1]) * return true; * } * * return false; * }*/ private bool IsFrameTooClose(int frame, float threshold) { float currentAnimTime = animator.GetCurrentAnimatorStateInfo(0).normalizedTime; AnimLookup aLookup = poseData.GetAnimationAtFrame(frame); return(aLookup.Value == current && Mathf.Abs((aLookup.Key / 30f) - currentAnimTime) < threshold); }
private void PlayAtUniqueFrame(int frame) { int layer = isDefault ? 0 : animator.GetLayerIndex("Motion Matching"); AnimLookup toPlay = poseData.GetAnimationAtFrame(frame); animator.CrossFadeInFixedTime(toPlay.Value, crossFadeTime, layer, toPlay.Key / 30f); //Debug.Log("playing " + toPlay.Value + " at frame " + toPlay.Key); current = toPlay.Value; }
private void PlayMMAnim(AnimLookup candidate) { animator.CrossFadeInFixedTime(candidate.Value, crossFadeTime, 0, candidate.Key / 30f); current = candidate.Value; }