/// <summary>
        /// See Monobehaviour.Update.
        /// </summary>
        void Update()
        {
            if (m_AnimState == 1)
            {
                m_AnimDeltaTime = Time.realtimeSinceStartup - m_AnimStartTime;

                if (m_AnimDeltaTime <= m_AnimationDuration)
                {
                    m_RectTransform.anchoredPosition = Tween.QuintOut(m_CurrentPos, new Vector2(m_MaxPosition, m_RectTransform.anchoredPosition.y), m_AnimDeltaTime, m_AnimationDuration);

                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = Tween.QuintOut(m_CurrentBackgroundAlpha, 1f, m_AnimDeltaTime, m_AnimationDuration);
                    }

                    m_ShadowCanvasGroup.alpha = Tween.QuintIn(m_CurrentShadowAlpha, 1f, m_AnimDeltaTime, m_AnimationDuration / 2f);
                }
                else
                {
                    m_RectTransform.anchoredPosition = new Vector2(m_MaxPosition, m_RectTransform.anchoredPosition.y);
                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = 1f;
                    }
                    m_AnimState = 0;
                }
            }
            else if (m_AnimState == 2)
            {
                m_AnimDeltaTime = Time.realtimeSinceStartup - m_AnimStartTime;

                if (m_AnimDeltaTime <= m_AnimationDuration)
                {
                    m_RectTransform.anchoredPosition = Tween.QuintOut(m_CurrentPos, new Vector2(m_MinPosition, m_RectTransform.anchoredPosition.y), m_AnimDeltaTime, m_AnimationDuration);

                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = Tween.QuintOut(m_CurrentBackgroundAlpha, 0f, m_AnimDeltaTime, m_AnimationDuration);
                    }

                    m_ShadowCanvasGroup.alpha = Tween.QuintIn(m_CurrentShadowAlpha, 0f, m_AnimDeltaTime, m_AnimationDuration);
                }
                else
                {
                    m_RectTransform.anchoredPosition = new Vector2(m_MinPosition, m_RectTransform.anchoredPosition.y);
                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = 0f;
                    }

                    m_BackgroundGameObject.SetActive(false);
                    m_ShadowGameObject.SetActive(false);
                    m_PanelLayer.SetActive(false);

                    m_AnimState = 0;
                }
            }

            m_RectTransform.anchoredPosition = new Vector2(Mathf.Clamp(m_RectTransform.anchoredPosition.x, m_MinPosition, m_MaxPosition), m_RectTransform.anchoredPosition.y);
        }
        protected virtual void Update()
        {
            if (m_AnimState > 0)
            {
                if (m_AnimStartTime < 0)
                {
                    m_AnimStartTime = Time.realtimeSinceStartup;
                }
                Kyub.Performance.SustainedPerformanceManager.Refresh(this);
            }

            if (m_AnimState == 1)
            {
                m_AnimDeltaTime = Time.realtimeSinceStartup - m_AnimStartTime;

                if (m_AnimDeltaTime <= m_AnimationDuration)
                {
                    m_RectTransform.anchoredPosition = Tween.QuintOut(m_CurrentPos, new Vector2(m_MaxPosition, m_RectTransform.anchoredPosition.y), m_AnimDeltaTime, m_AnimationDuration);

                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = Tween.QuintOut(m_CurrentBackgroundAlpha, 1f, m_AnimDeltaTime, m_AnimationDuration);
                    }

                    m_ShadowCanvasGroup.alpha = Tween.QuintIn(m_CurrentShadowAlpha, 1f, m_AnimDeltaTime, m_AnimationDuration / 2f);
                }
                else
                {
                    m_RectTransform.anchoredPosition = new Vector2(m_MaxPosition, m_RectTransform.anchoredPosition.y);
                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = 1f;
                    }
                    m_AnimState = 0;
                    HandleOnOpenEnd();
                }
            }
            else if (m_AnimState == 2)
            {
                m_AnimDeltaTime = Time.realtimeSinceStartup - m_AnimStartTime;

                if (m_AnimDeltaTime <= m_AnimationDuration)
                {
                    m_RectTransform.anchoredPosition = Tween.QuintOut(m_CurrentPos, new Vector2(m_MinPosition, m_RectTransform.anchoredPosition.y), m_AnimDeltaTime, m_AnimationDuration);

                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = Tween.QuintOut(m_CurrentBackgroundAlpha, 0f, m_AnimDeltaTime, m_AnimationDuration);
                    }

                    m_ShadowCanvasGroup.alpha = Tween.QuintIn(m_CurrentShadowAlpha, 0f, m_AnimDeltaTime, m_AnimationDuration);
                }
                else
                {
                    m_RectTransform.anchoredPosition = new Vector2(m_MinPosition, m_RectTransform.anchoredPosition.y);
                    if (m_DarkenBackground)
                    {
                        m_BackgroundCanvasGroup.alpha = 0f;
                    }

                    m_BackgroundGameObject.SetActive(false);
                    m_ShadowGameObject.SetActive(false);
                    m_PanelLayer.SetActive(false);

                    m_AnimState = 0;
                    HandleOnCloseEnd();
                }
            }

            m_RectTransform.anchoredPosition = new Vector2(Mathf.Clamp(m_RectTransform.anchoredPosition.x, Mathf.Min(m_MinPosition, m_MaxPosition), Mathf.Max(m_MinPosition, m_MaxPosition)), m_RectTransform.anchoredPosition.y);
        }