Exemplo n.º 1
0
        // 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;
                }
            }
        }