예제 #1
0
    private FigmaData parseFigmaData(string data)
    {
        FigmaData result    = new FigmaData();
        Type      figmaType = typeof(FigmaData);

        string[] properties = data.Split(new char[] { ';' });
        properties = properties.GetAllWithoutLast();

        for (int i = 0; i < properties.Length; i++)
        {
            string p = properties[i];
            p = p.Trim();
            p = p.Replace(" ", "");

            Debug.LogWarning("P value is [" + p + "]");
            string pName     = p.GetUntilOrEmpty();
            string pValueStr = p.GetBetweenTwoStrings(":", "px");
            float  pValue    = float.Parse(pValueStr);

            FieldInfo nextField = figmaType.GetField(pName);
            nextField.SetValue(result, pValue);
        }

        Debug.Log("Figma data was parsed! New FigmaData object - " + result.ToString());

        return(result);
    }
예제 #2
0
    private void FigmaToRectTransform(FigmaData fData, RectTransform rectT, bool relativeParent = false)
    {
        rectT.sizeDelta = new Vector2(fData.width, fData.height);

        int screenWidth;
        int screenHeight;

        if (relativeParent)
        {
            screenWidth  = (int)rectT.transform.parent.GetComponent <RectTransform>().sizeDelta.x;
            screenHeight = (int)rectT.transform.parent.GetComponent <RectTransform>().sizeDelta.y;
        }
        else
        {
            screenWidth  = defaultScreenWidth;
            screenHeight = defaultScreenHeight;
        }

        Vector2 newPos = new Vector2(
            (-screenWidth / 2) + fData.left + (fData.width / 2),
            (screenHeight / 2) - fData.top - (fData.height / 2));

        rectT.localPosition = newPos;

        Debug.LogWarning("offsetMin = " + rectT.offsetMin);
        Debug.LogWarning("offsetMax = " + rectT.offsetMax);
    }
예제 #3
0
    void OnGUI()
    {
        EditorGUILayout.BeginVertical();

        EditorGUILayout.LabelField(string.Format("Default Screen Resolution - {0}x{1}", defaultScreenWidth, defaultScreenHeight));

        relativeParent = EditorGUILayout.Toggle("Derrive relative parent", relativeParent);

        EditorGUILayout.LabelField("Figma data");
        figmaText = EditorGUILayout.TextField(figmaText, GUILayout.MinHeight(100));
        if (GUILayout.Button("Paste from Clipboard"))
        {
            figmaText = GUIUtility.systemCopyBuffer;
        }
        if (GUILayout.Button("Parse and Paste to Selected"))
        {
            FigmaData figmaData = parseFigmaData(figmaText);
            selectedGameObject = Selection.activeGameObject;
            if (selectedGameObject != null)
            {
                RectTransform selectedRectT = selectedGameObject.GetComponent <RectTransform>();
                if (selectedRectT != null)
                {
                    FigmaToRectTransform(figmaData, selectedRectT, relativeParent);
                }
            }
        }

        EditorGUILayout.EndVertical();
    }