public void Refresh()
        {
            if (ClipIndex >= 0)
            {
                RuntimeAnimationClip clip = m_rtClips[ClipIndex];
                if (clip == null)
                {
                    m_isPlaying = false;
                    m_animation.Stop();
                    return;
                }
                clip.Refresh();
                clip.Clip.wrapMode = WrapMode.ClampForever;

                float          speed          = 0;
                float          normalizedTime = 0;
                AnimationState animationState;
                if (m_animation.isPlaying)
                {
                    animationState = m_animation[clip.Clip.name];
                    if (animationState != null)
                    {
                        speed = animationState.speed;
                        if (!m_isPlaying)
                        {
                            speed = 0;
                        }
                        normalizedTime = animationState.normalizedTime;
                    }
                }

                m_animation.Stop();
                if (m_animation.clip != null)
                {
                    m_animation.RemoveClip(m_animation.clip.name);
                }
                m_animation.clip = null;
                if (clip.Clip != null)
                {
                    m_animation.AddClip(clip.Clip, clip.Clip.name);
                }
                m_animation.clip = clip.Clip;
                m_animation.Play(clip.Clip.name);

                if (m_animation.isPlaying)
                {
                    m_isPlaying          = !clip.Clip.empty && speed > 0;
                    animationState       = m_animation[clip.Clip.name];
                    animationState.speed = speed;
                    if (float.IsInfinity(normalizedTime) || float.IsNaN(normalizedTime))
                    {
                        normalizedTime = 0;
                    }
                    animationState.normalizedTime = normalizedTime;
                }
                else
                {
                    m_isPlaying = false;
                }
            }
            else
            {
                m_isPlaying = false;
                m_animation.Stop();
            }
        }