Esempio n. 1
0
 void Awake()
 {
     m_Instance      = this;
     m_TextMesh      = GetComponent <TextMesh>();
     m_TextRenderer  = GetComponent <Renderer>();
     m_StringSizeMap = new Dictionary <TextParams, Vector2>();
 }
Esempio n. 2
0
        // maxWidth is in meters
        static void SetTextResize(string text, TextMesh dest, float maxWidth)
        {
            maxWidth  = maxWidth * App.METERS_TO_UNITS;
            dest.text = text;
            float fTextWidth = TextMeasureScript.GetTextWidth(dest);
            float ratio      = Mathf.Min(1, maxWidth / fTextWidth);

            dest.transform.localScale = Vector3.one * ratio;
        }
Esempio n. 3
0
        override protected void Awake()
        {
            base.Awake();

            m_CurrentScale = m_ScaleRange.x;
            m_BaseScale    = m_Mesh.localScale;
            if (m_DismissMessage)
            {
                TextMesh mesh = m_DismissMessage.GetComponentInChildren <TextMesh>();
                m_DismissTextSize.x = TextMeasureScript.GetTextWidth(mesh);
                m_DismissTextSize.y = TextMeasureScript.GetTextHeight(mesh);
            }
            m_TransitionScale = 0.0f;
            m_AspectRatio     = 1.0f;
            UpdateScale();
        }
Esempio n. 4
0
        private void AddNewLineImpl(string sText, bool bNotify = false)
        {
            string remainingText = "";

            //scoot all the lines around
            for (int i = 0; i < m_InfoLines.Length; ++i)
            {
                Vector3 vLocalPos = m_InfoLines[i].m_Line.transform.localPosition;
                vLocalPos.y += m_LineSpacing;
                m_InfoLines[i].m_Line.transform.localPosition = vLocalPos;
            }

            //set the new line's text
            InfoLine operateLine = m_InfoLines[m_LineOperateIndex];

            operateLine.m_Line.transform.localPosition = m_BaseLineLocalPositionOffset;
            operateLine.m_TextMesh.text           = sText;
            operateLine.m_Renderer.material.color = bNotify ? m_NotificationTextColor : m_StandardTextColor;
            operateLine.m_LineWidth = TextMeasureScript.GetTextWidth(operateLine.m_TextMesh);

            // Split long lines - cheap and nasty, as it assumes that all characters in a string are the
            // same length, but as the console widens to accommodate its lines anyway, I don't think it
            // matters.
            if (operateLine.m_LineWidth > m_MaxLineWidth)
            {
                float portion    = m_MaxLineWidth / operateLine.m_LineWidth;
                int   splitPoint = Mathf.FloorToInt(sText.Length * portion);
                // Look back a few characters to see if there's a better character to split on
                for (int i = 0; (i > -kSplitSearchMagnitude) && ((i + splitPoint) > 0); i--)
                {
                    if (!System.Char.IsLetter(sText[i + splitPoint]))
                    {
                        splitPoint += i;
                        break;
                    }
                }
                remainingText = sText.Substring(splitPoint).TrimStart();
                operateLine.m_TextMesh.text = sText.Substring(0, splitPoint);
                operateLine.m_LineWidth     = TextMeasureScript.GetTextWidth(operateLine.m_TextMesh);
            }

            //update our operating index
            --m_LineOperateIndex;
            if (m_LineOperateIndex < 0)
            {
                m_LineOperateIndex += m_InfoLines.Length;
            }

            UpdateBackgroundWidth();

            //reset our timer
            if (bNotify)
            {
                m_NotificationDisplayTimer = m_NotificationDisplayDuration;
                m_Notification.Play();
            }
            if (remainingText.Length > 0)
            {
                // TODO: remove the tail-recursion
                AddNewLineImpl(remainingText, false);
            }
        }