private void Resize()
    {
        float preferredWidth = tm.GetPreferredValues(inputField.text).x;
        float newWidth       = Mathf.Max(preferredWidth, tm.GetPreferredValues("C").x);

        rt.sizeDelta = new Vector2(newWidth, rt.sizeDelta.y);
    }
Beispiel #2
0
        private void ResizeToMatchText()
        {
            // Find the biggest height between both text layers
            float biggestY = txLeft.preferredHeight;
            float rightY   = txRight.preferredHeight;

            if (rightY > biggestY)
            {
                biggestY = rightY;
            }

            // Dont forget to add the margins
            //var margins = TextLeft.margin.y * 2;
            var margins = 0;

            // Also reduce width if text is small
            float widthLeft  = Mathf.Clamp(txRight.GetPreferredValues().x + txLeft.GetPreferredValues().x + margins, 0, RectTransform.sizeDelta.x);
            float widthRight = Mathf.Clamp(txRight.GetPreferredValues().x + margins, 0, RectTransform.sizeDelta.x);
            float width      = Mathf.Max(widthLeft, widthRight);

            //float width = RectTransform.sizeDelta.x;

            // Update the height of the tooltip panel
            RectTransform.sizeDelta = new Vector2(width, biggestY + margins);
        }
Beispiel #3
0
    private void Start()
    {
        value.ForceMeshUpdate();
        Vector2 valueSize = value.GetPreferredValues();

        valueRectTransform           = value.GetComponent <RectTransform>();
        valueRectTransform.sizeDelta = new Vector2(valueSize.x, 50);
        SetAnchoredPosition(value.gameObject, new Vector2(0, 165));
    }
Beispiel #4
0
 public void OpenToolTip(Upgrade targetUpgrade, Vector3 textPos)
 {
     targetUpgrade.SetDescriptionText(tooltipText);
     tooltipBox.sizeDelta = tooltipText.GetPreferredValues();
     tooltipBox.gameObject.SetActive(true);
     tooltipBox.transform.position = new Vector2(textPos.x, textPos.y);
     tooltipBox.ForceUpdateRectTransforms();
     tooltipBox.anchoredPosition = new Vector2(tooltipBox.anchoredPosition.x, tooltipBox.anchoredPosition.y + verticalOffset);
     tooltipBox.sizeDelta        = tooltipText.GetPreferredValues();
 }
Beispiel #5
0
        public void SetText(string value)
        {
            var padding = _canvasWrapperTransform.sizeDelta.x * (screenPadding / 100);

            var wrapWidth = _canvasWrapperTransform.ResizeToMatchCamera(_camera).x - padding;

            var wrappedText = _textMesh.WrapText(value, wrapWidth);

            var valueSizeDelta = _textMesh.GetPreferredValues(wrappedText);

            var paddingSizeDelta = _textMesh.GetPreferredValues(value);

            valueSizeDelta += Vector2.one * backgroundPadding;

            if (mode.Equals(Subtitle.Mode.OBJECT))
            {
                _canvasWrapperTransform.sizeDelta   = Vector3.one;
                _textMeshWrapperTransform.sizeDelta = valueSizeDelta;

                if (position.Equals(Subtitle.Position.TOP))
                {
                    _textMeshWrapperTransform.pivot = new Vector2(0.5f, 0);

                    _textMeshWrapperTransform.position = targetTransform.position + new Vector3(
                        0,
                        objectPadding +
                        targetCollider.bounds.extents.y,
                        0);
                }
                else
                {
                    _textMeshWrapperTransform.pivot = new Vector2(0.5f, 1);

                    _textMeshWrapperTransform.position = targetTransform.position - new Vector3(
                        0,
                        objectPadding +
                        targetCollider.bounds.extents.y,
                        0);
                }
            }
            else
            {
                _textMeshWrapperTransform.SetInsetAndSizeFromParentEdge(
                    position.Equals(Subtitle.Position.TOP)
                        ? RectTransform.Edge.Top
                        : RectTransform.Edge.Bottom,
                    paddingSizeDelta.y,
                    valueSizeDelta.y);

                _textMeshWrapperTransform.sizeDelta = valueSizeDelta;
            }

            _textMesh.text = wrappedText;
        }
Beispiel #6
0
        public void Init(ArgumentSpec argSpec, Argument arg, CodeList codeList)
        {
            this.arg = arg;

            // Configure dropdown options
            dropdown = GetComponent <TMP_Dropdown>();
            TextMeshProUGUI tm = GetComponentInChildren <TextMeshProUGUI>();

            float maxPreferredWidth = 0;

            if (argSpec.regOnly)
            {
                for (int regNum = 0; regNum < VirtualMachine.NUM_TOTAL_REGS; ++regNum)
                {
                    string regName = "R" + regNum;
                    dropdown.options.Add(new TMP_Dropdown.OptionData(regName));
                    maxPreferredWidth = Mathf.Max(tm.GetPreferredValues(regName).x, maxPreferredWidth);
                }
            }
            else
            {
                foreach (string presetName in argSpec.presets)
                {
                    dropdown.options.Add(new TMP_Dropdown.OptionData(presetName));
                    maxPreferredWidth = Mathf.Max(tm.GetPreferredValues(presetName).x, maxPreferredWidth);
                }
            }

            // Register value change handlers
            Argument.Type argType = argSpec.regOnly ? Argument.Type.REGISTER : Argument.Type.IMMEDIATE;
            dropdown.onValueChanged.AddListener((int val) =>
            {
                if (selfChange.Value)
                {
                    return;
                }
                arg.val          = val;
                selfChange.Value = true;
                arg.BroadcastChange();
                codeList.Program.BroadcastArgumentChange();
            });
            arg.OnChange += HandleArgChange;

            // Init value
            HandleArgChange();

            // Resize to fit the max preferred width
            RectTransform dropdownRT = dropdown.GetComponent <RectTransform>();
            RectTransform labelRT    = tm.GetComponent <RectTransform>();

            dropdownRT.sizeDelta = new Vector2(maxPreferredWidth - labelRT.sizeDelta.x, dropdownRT.sizeDelta.y);
        }
    private void ShowDecription(Vector2 position, string description)
    {
        gameObject.SetActive(true);
        float textPadding = 8f;
        float x           = text.GetPreferredValues(description).x *3 / 4;
        float y           = text.GetPreferredValues(description).y + (textPadding * 2);

        text.SetText(description);
        Vector2 backgroundSize = new Vector2(x, y);

        background.sizeDelta = backgroundSize;
        transform.position   = position;
    }
Beispiel #8
0
        static void CreateTextMeshProGuiObjectPerform(MenuCommand menuCommand)
        {
            GameObject go = TMP_DefaultControls.CreateText(GetStandardResources());

            // Override text color and font size
            TextMeshProUGUI textComponent = go.GetComponent <TextMeshProUGUI>();

            if (textComponent.m_isWaitingOnResourceLoad == false)
            {
                // Apply TMP Settings Defaults if no Preset is defined
                if (Preset.GetDefaultForObject(textComponent) == null)
                {
                    textComponent.fontSize = TMP_Settings.defaultFontSize;
                    textComponent.color    = Color.white;
                    textComponent.text     = "New Text";
                }

                if (TMP_Settings.autoSizeTextContainer)
                {
                    Vector2 size = textComponent.GetPreferredValues(TMP_Math.FLOAT_MAX, TMP_Math.FLOAT_MAX);
                    textComponent.rectTransform.sizeDelta = size;
                }
                else
                {
                    textComponent.rectTransform.sizeDelta = TMP_Settings.defaultTextMeshProUITextContainerSize;
                }
            }

            PlaceUIElementRoot(go, menuCommand);
        }
Beispiel #9
0
 // Updates if it is too big.
 // Currently doesn't update if the text becomes smaller.
 void OnRectTransformDimensionsChange()
 {
     if (layoutElem != null && layoutElem.preferredHeight <= 0 && tmpu.preferredHeight > tmpu.GetPreferredValues(" ").y *maxLines)
     {
         layoutElem.preferredHeight = (tmpu.GetPreferredValues(" ").y + 1) * maxLines;
     }
 }
Beispiel #10
0
    protected virtual void Update()
    {
        if (!_isTextNull && (Text.text != _lastText || _lastSize != _selfRectTransform.rect.size || _forceRefresh || ControlAxes != _lastControlAxes))
        {
            var preferredSize = Text.GetPreferredValues(MaxX, MaxY);
            preferredSize.x = Mathf.Clamp(preferredSize.x, MinX, MaxX);
            preferredSize.y = Mathf.Clamp(preferredSize.y, MinY, MaxY);
            preferredSize  += Padding;

            if ((ControlAxes & Mode.Horizontal) != 0)
            {
                _selfRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, preferredSize.x);
                if (ResizeTextObject)
                {
                    _textRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, preferredSize.x);
                }
            }
            if ((ControlAxes & Mode.Vertical) != 0)
            {
                _selfRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, preferredSize.y);
                if (ResizeTextObject)
                {
                    _textRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, preferredSize.y);
                }
            }

            _lastText        = Text.text;
            _lastSize        = _selfRectTransform.rect.size;
            _lastControlAxes = ControlAxes;
            _forceRefresh    = false;
        }
    }
Beispiel #11
0
    private float IncreaseHeightToFitText(TextMeshProUGUI textField, string newText, params RectTransform[] containers)
    {
        var currentTextHeight = textField.rectTransform.sizeDelta.y;
        var perferredHeight   = textField.GetPreferredValues(newText, textField.rectTransform.rect.width, 0).y;

        if (perferredHeight > currentTextHeight)
        {
            var sizeDifference = new Vector2(0, perferredHeight - currentTextHeight);
            textField.rectTransform.sizeDelta += sizeDifference;

            foreach (var container in containers)
            {
                if (!container)
                {
                    continue;
                }

                container.sizeDelta += sizeDifference;
            }

            return(perferredHeight);
        }

        return(0);
    }
    private GameObject[] splitTMPRO(TextMeshProUGUI mytextmesh)
    {
        string mytext = mytextmesh.text;

        GameObject[] array    = new GameObject[mytext.Length];
        Vector2      worddims = mytextmesh.GetPreferredValues();

        mytextmesh.rectTransform.sizeDelta = new Vector2(worddims.x, worddims.y);
        //mytextmesh.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, worddims.x);
        RectTransform r      = mytextmesh.rectTransform;
        float         startx = r.position.x - worddims.x / 2;
        float         starty = r.position.y;
        float         startz = r.position.z;

        float offset = startx;
        int   index  = 0;

        foreach (char c in mytext)
        {
            GameObject      char_obj  = Instantiate(Resources.Load <GameObject>("blank letter"), transform);
            TextMeshProUGUI char_mesh = char_obj.GetComponent <TextMeshProUGUI>();
            char_mesh.SetText(c.ToString());      // set text to correct letter of the original string
            Vector2 dims = char_mesh.GetPreferredValues();
            offset += dims.x;
            Vector3 character_position = new Vector3(offset - dims.x / 2, starty, startz);

            char_obj.transform.position       = character_position; // instantiate blank template as child of this gameobject and set position
            char_mesh.rectTransform.sizeDelta = new Vector2(dims.x, dims.y);
            array[index] = char_obj;
            index++;
        }
        Destroy(mytextmesh); // destroy original text
        return(array);
    }
Beispiel #13
0
        public static string WrapText(this TextMeshProUGUI textMesh, string text, float wrapWidth)
        {
            var lines = new List <string> {
                ""
            };

            var words = Regex.Split(text, @"(?:\s+)");

            foreach (var word in words)
            {
                var combinedWords = $"{lines[lines.Count - 1]} {word}".Trim();

                var valueSizeDelta = textMesh.GetPreferredValues(combinedWords);

                if (valueSizeDelta.x > wrapWidth)
                {
                    lines.Add(word);
                }
                else
                {
                    lines[lines.Count - 1] = combinedWords;
                }
            }

            return(string.Join("\n", lines).Trim());
        }
        public void Refresh(float primarySpace, float secondarySpace)
        {
            float charWidth = m_text.GetPreferredValues("0").x;

            if (m_isSecondary)
            {
                if (secondarySpace < m_text.text.Length * charWidth + 10)
                {
                    m_text.alpha = 0;
                }
                else
                {
                    m_text.alpha = 1;
                }
            }
            else if (m_isPrimary)
            {
                if (primarySpace < m_text.text.Length * charWidth + 10)
                {
                    m_text.alpha = 0;
                }
                else
                {
                    m_text.alpha = 1;
                }
            }
        }
 public void SetName(string value)
 {
     label.text = value;
     // we need to get the preferred width instantly and not at the next frame
     // which is why we call GetPreferredValues
     nameRect.sizeDelta = new Vector2(label.GetPreferredValues(value).x + 60f, nameRect.sizeDelta.y);
 }
Beispiel #16
0
        private void UpdateText(string message)
        {
            Vector2       values        = text.GetPreferredValues(message);
            RectTransform rectTransform = canvas.GetComponent <RectTransform>();

            rectTransform.sizeDelta = new Vector2(values.x + 0.4f, rectTransform.rect.height);
            text.SetText(message);
        }
    public override void Render(Design design)
    {
        base.Render(design);
        contentField.text = (design as AddOnViewTooltip).content;
        float rectWidth = contentField.GetPreferredValues(Mathf.Infinity, GetHeight()).x;

        rect.sizeDelta = new Vector2(rectWidth, rect.sizeDelta.y) + new Vector2(10, 0);
    }
Beispiel #18
0
    public static float SetTextAndExpandVertically(GameObject go, string text, float width)
    {
        TextMeshProUGUI tmpro = go.GetComponent <TextMeshProUGUI>();
        RectTransform   rect  = go.GetComponent <RectTransform>();

        tmpro.SetText(text);
        float lineHeight = tmpro.GetPreferredValues().y;
        float height     = (tmpro.GetPreferredValues(text, width, lineHeight).y / lineHeight);
        int   h          = (int)Mathf.Floor(height);

        if (height - h > 0.1f)
        {
            h += 1;
        }
        rect.sizeDelta = new Vector2(rect.sizeDelta.x, h * lineHeight);
        return(rect.sizeDelta.y);
    }
Beispiel #19
0
        public void SetText(string text)
        {
            if (!Main.Settings.ShouldPauseAI)
            {
                return;
            }

            _text.text = text;

            var containerRectTransform = ParentObject.GetComponent <RectTransform>();
            var textRectTransform      = _text.gameObject.GetComponent <RectTransform>();

            containerRectTransform.sizeDelta = _text.GetPreferredValues() + new Vector2(_margin, _margin);
            textRectTransform.sizeDelta      = _text.GetPreferredValues();

            Show();
        }
Beispiel #20
0
        public void SetShortcut(string keyName)
        {
            var scale = _mesh.GetPreferredValues(keyName);

            _mesh.SetText(keyName);
            _keyRect.sizeDelta  = scale;
            _slotRect.sizeDelta = scale + new Vector2(10f, 6f);
        }
Beispiel #21
0
        protected override void InitializeContent()
        {
            _text = GetComponent <TextMeshProUGUI>();
            _text.SetText(Display);
            _text.ForceMeshUpdate();

            PreferredSize = _text.GetPreferredValues(Display);
        }
Beispiel #22
0
    protected void SetText(string value)
    {
        var valueSizeDelta = _textMesh.GetPreferredValues(value);

        _canvas.GetComponent <RectTransform>().sizeDelta = valueSizeDelta;

        _textMesh.text = value;
    }
Beispiel #23
0
        private void adjustLayout()
        {
            _text.autoSizeTextContainer = true;
            float preferedWidth = _text.GetPreferredValues(_text.text).x;

            _text.autoSizeTextContainer = false;
            _layoutElement.minWidth     = preferedWidth;
        }
Beispiel #24
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Alpha1))
     {
         vector2 = textMeshProUGUI.GetPreferredValues(textMeshProUGUI.text, 500, Mathf.Infinity);
         layoutElement.preferredHeight = vector2.y;
         Debug.Log(vector2);
     }
 }
Beispiel #25
0
        protected Page ConstructPage(TextMeshProUGUI tmp, string objName, int pageNum, string text)
        {
            Page    page            = new Page(tmp, objName, pageNum);
            Vector2 preferredValues = tmp.GetPreferredValues(text);

            page.PreferredVals = preferredValues;
            tmp.text           = text;
            return(page);
        }
    public void SetText(string text)
    {
        interactionLabel.SetText(text);
        controlHint.transform.position =
            interactionLabel.transform.position +
            new Vector3(interactionLabel.GetPreferredValues().x / 2.0f + 5, 0, 0);

        gameObject.SetActive(true);
    }
    private void SetPositionBasedOnText(TextMeshProUGUI textField, string newText, params RectTransform[] toTheRightOf)
    {
        var position = textField.GetPreferredValues(newText, textField.rectTransform.sizeDelta.x, textField.rectTransform.sizeDelta.y);

        foreach (var control in toTheRightOf)
        {
            control.anchoredPosition = textField.rectTransform.anchoredPosition + position.X() + padding;
        }
    }
    private void RecalculateContentSize()
    {
        // make the scroll rect bigger based on the content anyone adds
        Vector2 size = ScrollTransform.sizeDelta;

        size.y = screen.GetPreferredValues(screen.text).y + 10;
        ScrollTransform.sizeDelta     = size;
        ScrollRect.normalizedPosition = new Vector2(0, 0);
    }
Beispiel #29
0
    public void SetCharacterName(string name)
    {
        nameText.text = name;

        var size = nameText.GetPreferredValues(name, Mathf.Infinity, nameRect.rect.height);

        size.y             = nameRect.sizeDelta.y;
        size.x            += 80f;
        nameRect.sizeDelta = size;
    }
        private void Resize(string newText = null)
        {
            string        text            = newText == null ? inputFieldTM.text : newText;
            RectTransform tmRT            = inputFieldTM.GetComponent <RectTransform>();
            float         preferredWidth  = inputFieldTM.GetPreferredValues(text + "C").x; // Extra character to account for caret
            float         widthDifference = inputFieldRT.GetWorldSize().x - tmRT.GetWorldSize().x;
            float         totalWidth      = preferredWidth + widthDifference;

            inputFieldRT.sizeDelta = new Vector2(totalWidth, inputFieldRT.sizeDelta.y);
        }