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); }
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); }
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(); }