void Update()
    {
        if (TargetCamera != null)
        {
            Vector3 fwd = Vector3.Normalize(transform.position - TargetCamera.transform.position);

            if (Vector3.Dot(fwd, m_BaseForward) > 0)
            {
                transform.forward = m_BaseForward;
            }
            else
            {
                transform.forward = -m_BaseForward;
            }
        }

        if (VirtualCameraManger == null)
        {
            VirtualCameraManger = Manager.Get <VirtualCameraManager>();
        }

        if (VirtualCameraManger == null)
        {
            Debug.LogWarning("Virtual Camera Manager not present.");
            return;
        }

        if (Vector3.Distance(VirtualCameraManger.transform.position, transform.position) < ShowDistance)
        {
            m_Visibility += Time.deltaTime / ShowDuration;
        }
        else
        {
            m_Visibility -= Time.deltaTime / HideDuration;
        }

        m_Visibility = Mathf.Clamp(m_Visibility, 0, 1);

        if (m_Visibility == 0)
        {
            Panel.Root.SetActive(false);
        }
        else
        {
            Vector2 scale = new Vector2(PanelSizeXAnimation.Evaluate(m_Visibility), PanelSizeYAnimation.Evaluate(m_Visibility));
            Panel.Root.SetActive(true);
            Panel.Size       = new Vector2(scale.x * m_DefaultSize.x, scale.y * m_DefaultSize.y);
            Panel.PanelColor = m_DefaultPanelColor * PanelColorAnimation.Evaluate(m_Visibility);
            Panel.TitleColor = m_DefaultTitleColor * TextColorAnimation.Evaluate(m_Visibility);
            Panel.BodyColor  = m_DefaultBodyColor * TextColorAnimation.Evaluate(m_Visibility);
            Panel.Layout();

            foreach (var obj in Panel.OtherSubObjects)
            {
                obj.transform.localScale = new Vector3(scale.x, scale.y, 1);
                //if (m_Visibility == 1 && !obj.activeSelf) obj.SetActive(true);
                //if (m_Visibility < 1 && obj.activeSelf) obj.SetActive(false);
            }
        }
    }