void Start() { //Drawing to A texture texturePainter = new TexturePainter(); GameObject plane = GameObject.FindGameObjectWithTag("Player"); if (!enableTextureDrawer) { plane.SetActive(false); } plane.GetComponent <Renderer> ().material.mainTexture = texturePainter.texture; myslider = GameObject.Find("Slider").GetComponent <Slider>(); symmetryDropDown = GameObject.Find("Dropdown").GetComponent <Dropdown>(); List <System.String> options = new List <System.String> (); //Populate UI for (int i = 0; i < maxNumSymmetries; i++) { options.Add(i.ToString()); } symmetryDropDown.AddOptions(options); vectorDrawer = this.GetComponent <VectorDrawer> (); //vectorDrawer.linePoints = linePoints; vectorDrawer.setNumberOfLines(numOfLineRenderers); }
private string GenerateTree() { var expressionParserFactory = new DoubleExpressionParserFactory(); var generatorParser = new GeneratorParser <double>(expressionParserFactory); double constR = 1 / Math.Sqrt(2); double constU = 45; var input = "F(200)\n" + "F(l)->H(l) Uloz Doleva F(l*" + constR + ") Nacti Uloz Doprava F(l*" + constR + ") Nacti"; var reader = new StringReader(input); var generator = generatorParser.Parse(reader); generator.AdvanceNGenerations(8); var output = generator.CurrentGeneration; DrawingAction[] elements = new DrawingAction[] { new DrawingAction(0, canvas => canvas.AddToPath(new PathSegment(new IndexCanvasProperty <double>(0)))), new DrawingAction(1, canvas => canvas.AddToPath(new PathSegment(new IndexCanvasProperty <double>(0)))), new DrawingAction(2, canvas => canvas.PushToStack()), new DrawingAction(3, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(constU)))), new DrawingAction(4, canvas => canvas.PopFromStack()), new DrawingAction(5, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(-constU)))) }; var creator = new VectorDrawer(elements); string svg = creator.Draw(output, 0.3); return(svg); }
public static void DRAWING_TEST_GOSPER() { var expressionParserFactory = new DoubleExpressionParserFactory(); var generatorParser = new GeneratorParser <double>(expressionParserFactory); var input = "L\n" + "L->L Doprava R Doprava Doprava R Doleva L Doleva Doleva L L Doleva R Doprava\n" + "R->Doleva L Doprava R R Doprava Doprava R Doprava L Doleva Doleva L Doleva R"; var reader = new StringReader(input); var generator = generatorParser.Parse(reader); generator.AdvanceNGenerations(5); var output = generator.CurrentGeneration; DrawingAction[] elements = new DrawingAction[] { new DrawingAction(0, canvas => canvas.AddToPath(new PathSegment(new ValueCanvasProperty <double>(10)))), new DrawingAction(1, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(60)))), new DrawingAction(2, canvas => canvas.AddToPath(new PathSegment(new ValueCanvasProperty <double>(10)))), new DrawingAction(3, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(-60)))) }; var creator = new VectorDrawer(elements); string svg = creator.Draw(output); Console.WriteLine(svg); }
public void MouseUp() { clickStarted = false; List <Vector3> pong = new List <Vector3> (linePoints); VectorDrawer.smoothGauss(linePoints, pong); Draw(); // if (enableTextureDrawer) { // //LateDraw (); // texturePainter.drawTexture(linePoints); // texturePainter.texture.Apply (false); // vectorDrawer.undo (); // } //colorPickerTint = GameObject.FindGameObjectWithTag ("colorPickerUI").GetComponent<ColorPickerAdvanced> ().RGBAColor; //allPoints.Add (linePoints); //linePoints = new List<Vector3> (); linePoints.Clear(); vectorDrawer.Clear(); }
private void DrawTransform(Transform transform) { using (new GUILayout.VerticalScope()) { if (showGlobal) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Global Position", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); VectorDrawer.DrawVector3(transform.position, VECTOR_MAX_WIDTH); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Global Rotation", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); VectorDrawer.DrawVector3(transform.rotation.eulerAngles, VECTOR_MAX_WIDTH); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Lossy Scale", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); VectorDrawer.DrawVector3(transform.lossyScale, VECTOR_MAX_WIDTH); } } else { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Local Position", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); transform.localPosition = VectorDrawer.DrawVector3(transform.localPosition, VECTOR_MAX_WIDTH); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Local Rotation", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); transform.localRotation = Quaternion.Euler(VectorDrawer.DrawVector3(transform.localRotation.eulerAngles, VECTOR_MAX_WIDTH)); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Local Scale", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); transform.localScale = VectorDrawer.DrawVector3(transform.localScale, VECTOR_MAX_WIDTH); } } GUILayout.Space(5); if (GUILayout.Button("Toggle Local/Global", GUILayout.MaxWidth(125))) { showGlobal = !showGlobal; } } }
private static void DrawLayoutGroup(HorizontalOrVerticalLayoutGroup layoutGroup) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Padding", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); Tuple <int, int, int, int> padding = VectorDrawer.DrawInt4(layoutGroup.padding.left, layoutGroup.padding.right, layoutGroup.padding.top, layoutGroup.padding.bottom); layoutGroup.padding.left = padding.Item1; layoutGroup.padding.right = padding.Item2; layoutGroup.padding.top = padding.Item3; layoutGroup.padding.bottom = padding.Item4; } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Spacing", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); layoutGroup.spacing = NitroxGUILayout.FloatField(layoutGroup.spacing); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Child Alignment", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); layoutGroup.childAlignment = NitroxGUILayout.EnumPopup(layoutGroup.childAlignment); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Control Child Size", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); layoutGroup.childControlWidth = NitroxGUILayout.BoolField(layoutGroup.childControlWidth, "Width"); layoutGroup.childControlHeight = NitroxGUILayout.BoolField(layoutGroup.childControlHeight, "Height"); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Use Child Scale", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); layoutGroup.childScaleWidth = NitroxGUILayout.BoolField(layoutGroup.childScaleWidth, "Width"); layoutGroup.childScaleHeight = NitroxGUILayout.BoolField(layoutGroup.childScaleHeight, "Height"); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Child Force Expand", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); layoutGroup.childForceExpandWidth = NitroxGUILayout.BoolField(layoutGroup.childForceExpandWidth, "Width"); layoutGroup.childForceExpandHeight = NitroxGUILayout.BoolField(layoutGroup.childForceExpandHeight, "Height"); } }
public static void DRAWING_TEST_LEAF() { var expressionParserFactory = new DoubleExpressionParserFactory(); var generatorParser = new GeneratorParser <double>(expressionParserFactory); var input = "Uloz Otoc S(50) Nacti Uloz X Nacti Uloz Y Nacti\n" + "X->Uloz Doprava X Vytvor_polygon Polygon Nacti Polygon Z Polygon Ukonci_polygon \n" + "Y->Uloz Doleva Y Vytvor_polygon Polygon Nacti Polygon Z Polygon Ukonci_polygon\n" + "Z->Z F(100)\n" + "S(len)->F(len) Rotace(1) S(len)"; var reader = new StringReader(input); var generator = generatorParser.Parse(reader); generator.AdvanceNGenerations(20); var output = generator.CurrentGeneration; var greenLine = new PathSegment(new IndexCanvasProperty <double>(0)); var polygon = new Polygon(); polygon.FillColor = Color.Green; polygon.StrokeColor = Color.Black; DrawingAction[] elements = new DrawingAction[] { new DrawingAction(0, canvas => canvas.PushToStack()), new DrawingAction(1, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(180)))), new DrawingAction(2, canvas => canvas.AddToPath(greenLine)), new DrawingAction(3, canvas => canvas.PopFromStack()), new DrawingAction(4, canvas => { }), new DrawingAction(5, canvas => { }), new DrawingAction(6, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(10)))), new DrawingAction(7, canvas => canvas.CreatePolygon(polygon)), new DrawingAction(8, canvas => canvas.AddPositionToPolygon()), new DrawingAction(9, canvas => { }), new DrawingAction(10, canvas => canvas.ClosePolygon()), new DrawingAction(11, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(-10)))), new DrawingAction(12, canvas => canvas.AddToPath(greenLine)), new DrawingAction(13, canvas => canvas.Rotate(new Rotation(new IndexCanvasProperty <double>(0)))) }; var creator = new VectorDrawer(elements); string svg = creator.Draw(output); Console.WriteLine(svg); }
public static void DRAWING_TEST_ROSE() { var expressionParserFactory = new DoubleExpressionParserFactory(); var generatorParser = new GeneratorParser <double>(expressionParserFactory); var input = "Uloz Vytvor_polygon X(0,0) Polygon Ukonci_polygon Nacti Uloz Vytvor_polygon X(0,1) Polygon Ukonci_polygon\n" + "X(t,d):d=0->Polygon G(5, 1.15, -1) Polygon Uloz Doprava Y(t) G(3, 1.19, t) Polygon Ukonci_polygon Nacti Uloz Doprava Y(t) Vytvor_polygon Polygon Nacti X(t+1,d)\n" + "X(t,d):d=1->Polygon G(5, 1.15, -1) Polygon Uloz Doleva Y(t) G(3, 1.19, t) Polygon Ukonci_polygon Nacti Uloz Doleva Y(t) Vytvor_polygon Polygon Nacti X(t+1, d)\n" + "Y(t):t>0->G(1.3, 1.25, -1) Y(t-1)\n" + "G(s,r,t):t>1->G(s*r, r, t-1)\n" + "G(s,r,t):t=-1->G(s*r, r, -1)"; var reader = new StringReader(input); var generator = generatorParser.Parse(reader); generator.AdvanceNGenerations(25); var output = generator.CurrentGeneration; var polygon = new Polygon(); polygon.FillColor = Color.Green; polygon.StrokeColor = Color.Black; var moduleParser = generatorParser.ModuleParser; DrawingAction[] elements = new DrawingAction[] { new DrawingAction(moduleParser.GetModuleId("Uloz"), canvas => canvas.PushToStack()), new DrawingAction(moduleParser.GetModuleId("Nacti"), canvas => canvas.PopFromStack()), new DrawingAction(moduleParser.GetModuleId("Doprava"), canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(60)))), new DrawingAction(moduleParser.GetModuleId("Doleva"), canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(-60)))), new DrawingAction(moduleParser.GetModuleId("Vytvor_polygon"), canvas => canvas.CreatePolygon(polygon)), new DrawingAction(moduleParser.GetModuleId("Ukonci_polygon"), canvas => canvas.ClosePolygon()), new DrawingAction(moduleParser.GetModuleId("Polygon"), canvas => canvas.AddPositionToPolygon()), new DrawingAction(moduleParser.GetModuleId("X"), canvas => canvas.Move(new Move(new IndexCanvasProperty <double>(0)))), new DrawingAction(moduleParser.GetModuleId("Y"), canvas => canvas.Move(new Move(new IndexCanvasProperty <double>(0)))), new DrawingAction(moduleParser.GetModuleId("G"), canvas => canvas.Move(new Move(new IndexCanvasProperty <double>(0)))), }; var creator = new VectorDrawer(elements); string svg = creator.Draw(output); Console.WriteLine(svg); }
public static void DRAWING_TEST_TREE() { var expressionParserFactory = new DoubleExpressionParserFactory(); var generatorParser = new GeneratorParser <double>(expressionParserFactory); var input = "Mlada\n" + "Mlada->StaraUlozDopravaMladaNactiUlozDolevaMladaNactiStaraMlada\n" + "Stara->StaraStara"; var reader = new StringReader(input); var generator = generatorParser.Parse(reader); generator.AdvanceNGenerations(4); var output = generator.CurrentGeneration; var blackLine = new PathSegment(new ValueCanvasProperty <double>(10)); blackLine.FgColor = Color.Black; var greenLine = new PathSegment(new ValueCanvasProperty <double>(10)); greenLine.FgColor = Color.Green; DrawingAction[] elements = new DrawingAction[] { new DrawingAction(0, canvas => canvas.AddToPath(greenLine)), new DrawingAction(1, canvas => canvas.AddToPath(blackLine)), new DrawingAction(2, canvas => canvas.PushToStack()), new DrawingAction(3, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(45)))), new DrawingAction(4, canvas => canvas.PopFromStack()), new DrawingAction(5, canvas => canvas.Rotate(new Rotation(new ValueCanvasProperty <double>(-45)))) }; var creator = new VectorDrawer(elements); string svg = creator.Draw(output); Console.WriteLine(svg); }
private static void DrawCanvasScaler(CanvasScaler canvasScaler) { if (canvasScaler.GetComponent <Canvas>().renderMode == RenderMode.WorldSpace) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Dynamic Pixels Per Unit", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.dynamicPixelsPerUnit = NitroxGUILayout.FloatField(canvasScaler.dynamicPixelsPerUnit); } } else { using (new GUILayout.HorizontalScope()) { GUILayout.Label("UI Scale Mode", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.uiScaleMode = NitroxGUILayout.EnumPopup(canvasScaler.uiScaleMode); } if (canvasScaler.uiScaleMode == CanvasScaler.ScaleMode.ConstantPixelSize) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Scale Factor", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.scaleFactor = NitroxGUILayout.FloatField(canvasScaler.scaleFactor); } } else if (canvasScaler.uiScaleMode == CanvasScaler.ScaleMode.ScaleWithScreenSize) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Reference Resolution", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.referenceResolution = VectorDrawer.DrawVector2(canvasScaler.referenceResolution); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Screen Match Mode", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.screenMatchMode = NitroxGUILayout.EnumPopup(canvasScaler.screenMatchMode); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Match", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); float newMatchValue = NitroxGUILayout.FloatField(canvasScaler.matchWidthOrHeight); canvasScaler.matchWidthOrHeight = Mathf.Max(0, Mathf.Min(newMatchValue, 1)); } } else { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Physical Unit", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.physicalUnit = NitroxGUILayout.EnumPopup(canvasScaler.physicalUnit); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Fallback Screen DPI", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.matchWidthOrHeight = NitroxGUILayout.FloatField(canvasScaler.fallbackScreenDPI); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Default Sprite DPI", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); float newDefaultSpriteDPI = NitroxGUILayout.FloatField(canvasScaler.defaultSpriteDPI); canvasScaler.defaultSpriteDPI = Mathf.Max(1, newDefaultSpriteDPI); } } } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Reference Pixels Per Unit", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); canvasScaler.referencePixelsPerUnit = NitroxGUILayout.FloatField(canvasScaler.referencePixelsPerUnit); } }
private static void DrawRectTransform(RectTransform rectTransform) { using (new GUILayout.VerticalScope()) { //TODO: Implement position display like the Unity editor using (new GUILayout.HorizontalScope()) { GUILayout.Label("Local Position", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); rectTransform.localPosition = VectorDrawer.DrawVector3(rectTransform.localPosition, VECTOR_MAX_WIDTH); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Local Rotation", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); rectTransform.localRotation = Quaternion.Euler(VectorDrawer.DrawVector3(rectTransform.localRotation.eulerAngles, VECTOR_MAX_WIDTH)); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Local Scale", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); rectTransform.localScale = VectorDrawer.DrawVector3(rectTransform.localScale, VECTOR_MAX_WIDTH); } GUILayout.Space(20); using (new GUILayout.HorizontalScope()) { GUILayout.Label("Size", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); rectTransform.sizeDelta = VectorDrawer.DrawVector2(rectTransform.sizeDelta, VECTOR_MAX_WIDTH); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Anchor", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); AnchorMode anchorMode = VectorToAnchorMode(rectTransform.anchorMin, rectTransform.anchorMax); if (anchorMode == AnchorMode.NONE) { VectorDrawer.DrawVector2(rectTransform.anchorMin, VECTOR_MAX_WIDTH * 0.5f); VectorDrawer.DrawVector2(rectTransform.anchorMax, VECTOR_MAX_WIDTH * 0.5f); } else { anchorMode = NitroxGUILayout.EnumPopup(anchorMode, VECTOR_MAX_WIDTH); // Vector2[] anchorVectors = AnchorModeToVector(anchorMode); // rectTransform.anchorMin = anchorVectors[0]; // rectTransform.anchorMax = anchorVectors[1]; } } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Pivot", NitroxGUILayout.DrawerLabel, GUILayout.Width(LABEL_WIDTH)); NitroxGUILayout.Separator(); rectTransform.pivot = VectorDrawer.DrawVector2(rectTransform.pivot, VECTOR_MAX_WIDTH); } } }
private void GenerateSVG() { if (_modules.Count == 0) { ErrorMsg = "You have not defined any modules, please define them first!"; return; } if (_axiom.Count == 0) { ErrorMsg = "Your axiom is empty, please fill it first!"; return; } var expressionParserFactory = new DoubleExpressionParserFactory(); var sqrt = new Function <double>("sqrt", expressions => { return(parameters => Math.Sqrt(expressions[0](parameters))); }); expressionParserFactory.Functions = new[] { sqrt }; var generatorParser = new GeneratorParser <double>(expressionParserFactory); var builder = new StringBuilder(); builder.AppendLine(CreateAxiomInput()); foreach (var rule in _rules) { builder.AppendLine(CreateRuleInput(rule)); } var input = builder.ToString(); Generator <double> generator; var reader = new StringReader(input); try { generator = generatorParser.Parse(reader); } catch (ParserException) { ErrorMsg = "Error while processing your input. Please check if all rules are correct"; return; } generator.AdvanceNGenerations(GenerationsCount); var output = generator.CurrentGeneration; if (output.Count > 1000000) { ErrorMsg = "Resulting image is too complex, please try reducing number of generations"; return; } DrawingAction[] elements; try { elements = CreateDrawingActions(generatorParser.ModuleParser); } catch (ArgumentException) { ErrorMsg = "You have mistake in modules definition! Please revise them"; return; } var creator = new VectorDrawer(elements); try { if (RandomizationPercent != 0) { double randomFactor = ((double)RandomizationPercent) / 100; Svg = creator.Draw(output, randomFactor); } else { Svg = creator.Draw(output); } } catch (Exception) { ErrorMsg = "Internal error while drawing your image"; return; } }
private static void DrawGridLayoutGroup(GridLayoutGroup gridLayoutGroup) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Padding", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); Tuple <int, int, int, int> padding = VectorDrawer.DrawInt4(gridLayoutGroup.padding.left, gridLayoutGroup.padding.right, gridLayoutGroup.padding.top, gridLayoutGroup.padding.bottom); gridLayoutGroup.padding.left = padding.Item1; gridLayoutGroup.padding.right = padding.Item2; gridLayoutGroup.padding.top = padding.Item3; gridLayoutGroup.padding.bottom = padding.Item4; } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Cell Size", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.cellSize = VectorDrawer.DrawVector2(gridLayoutGroup.cellSize); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Spacing", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.spacing = VectorDrawer.DrawVector2(gridLayoutGroup.spacing); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Start Corner", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.startCorner = NitroxGUILayout.EnumPopup(gridLayoutGroup.startCorner); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Start Axis", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.startAxis = NitroxGUILayout.EnumPopup(gridLayoutGroup.startAxis); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Child Alignment", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.childAlignment = NitroxGUILayout.EnumPopup(gridLayoutGroup.childAlignment); } using (new GUILayout.HorizontalScope()) { GUILayout.Label("Constraint", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.constraint = NitroxGUILayout.EnumPopup(gridLayoutGroup.constraint); } if (gridLayoutGroup.constraint != GridLayoutGroup.Constraint.Flexible) { using (new GUILayout.HorizontalScope()) { GUILayout.Label("Constraint Count", NitroxGUILayout.DrawerLabel, GUILayout.Width(NitroxGUILayout.DEFAULT_LABEL_WIDTH)); NitroxGUILayout.Separator(); gridLayoutGroup.constraintCount = Math.Max(1, NitroxGUILayout.IntField(gridLayoutGroup.constraintCount)); } } }