// preview a frame in the scene view public override void previewFrame(AMITarget target, float frame, int frameRate, bool play, float playSpeed) { GameObject go = GetTarget(target) as GameObject; if (!go || keys.Count == 0) { return; } Animation anim = go.GetComponent <Animation>(); if (frame < keys[0].frame) { AMAnimationKey amKey = keys[0] as AMAnimationKey; if (amKey.amClip) { AMUtil.SampleAnimation(anim, amKey.amClip.name, amKey.wrapMode, amKey.crossfade ? 0.0f : 1.0f, 0.0f); } return; } for (int i = keys.Count - 1; i >= 0; i--) { if (keys[i].frame <= frame) { AMAnimationKey amKey = keys[i] as AMAnimationKey; if (amKey.amClip) { float t = (frame - (float)amKey.frame) / (float)frameRate; if (amKey.crossfade) { if (i > 0) { AMAnimationKey amPrevKey = keys[i - 1] as AMAnimationKey; if (amPrevKey.amClip) { float prevT = (frame - (float)amPrevKey.frame) / (float)frameRate; AMUtil.SampleAnimationCrossFade(anim, amKey.crossfadeTime, amPrevKey.amClip.name, amPrevKey.wrapMode, prevT, amKey.amClip.name, amKey.wrapMode, t); } } else { AMUtil.SampleAnimationFadeIn(anim, amKey.amClip.name, amKey.wrapMode, amKey.crossfadeTime, t); } } else { AMUtil.SampleAnimation(anim, amKey.amClip.name, amKey.wrapMode, 1.0f, t); } } break; } } }