public override void OnPostTargetMembersGUI() { if (IsMultiSelect) { return; } InspectorGUI.HandleFrame(TrackWheel.Frame, 1); }
public void OnInspectorGUI() { if (Mode == ToolMode.Direction) { StartFrameNameId = "Frame"; } StartFrameToolEnable = Line.Valid; EndFrameToolEnable = Line.Valid; bool toggleCreateEdge = false; bool toggleFlipDirection = false; bool toggleRenderAsArrow = false; bool showTools = !EditorApplication.isPlaying; if (showTools) { var toolButtonData = new List <InspectorGUI.ToolButtonData>(); toolButtonData.Add(InspectorGUI.ToolButtonData.Create(ToolIcon.VisualizeLineDirection, RenderAsArrow, "Visualize line direction.", () => toggleRenderAsArrow = true, Mode != ToolMode.Direction)); toolButtonData.Add(InspectorGUI.ToolButtonData.Create(ToolIcon.FlipDirection, false, "Flip direction.", () => toggleFlipDirection = true, Line.Valid)); toolButtonData.Add(InspectorGUI.ToolButtonData.Create(ToolIcon.FindTransformGivenEdge, EdgeDetectionToolEnable, "Find line given edge.", () => toggleCreateEdge = true)); InspectorGUI.ToolButtons(toolButtonData.ToArray()); } if (toggleCreateEdge) { EdgeDetectionToolEnable = !EdgeDetectionToolEnable; } if (toggleFlipDirection && EditorUtility.DisplayDialog("Line direction", "Flip direction of " + Name + "?", "Yes", "No")) { StartFrameToolEnable = false; if (Mode == ToolMode.Direction) { Line.End.Position = Line.End.Position - 2.0f * Line.Length * Line.Direction; Line.Start.Rotation = Quaternion.Euler(-Line.Start.Rotation.eulerAngles); Line.End.Rotation = Quaternion.Euler(-Line.End.Rotation.eulerAngles); } else { var tmp = Line.Start; Line.Start = Line.End; Line.End = tmp; } } if (toggleRenderAsArrow) { RenderAsArrow = !RenderAsArrow; } if (!Line.Valid) { InspectorGUI.WarningLabel(Name + " isn't created - use Tools to configure."); } if (StartFrameToolEnable) { if (InspectorGUI.Foldout(GetToggleData(StartFrameNameId), GUI.MakeLabel(StartFrameNameId, true))) { StartFrameTool.ForceDisableTransformHandle = EditorApplication.isPlaying; using (new GUI.EnabledBlock(!EditorApplication.isPlaying)) InspectorGUI.HandleFrame(StartFrameTool.Frame, 1); } } if (EndFrameToolEnable) { if (InspectorGUI.Foldout(GetToggleData(EndFrameNameId), GUI.MakeLabel(EndFrameNameId, true))) { EndFrameTool.ForceDisableTransformHandle = EditorApplication.isPlaying; using (new GUI.EnabledBlock(!EditorApplication.isPlaying)) InspectorGUI.HandleFrame(EndFrameTool.Frame, 1); } } Synchronize(); }
private void RouteGUI() { var addNewPressed = false; var insertBeforePressed = false; var insertAfterPressed = false; var erasePressed = false; NodeT listOpNode = null; Undo.RecordObject(Route, "Route changed"); if (InspectorGUI.Foldout(EditorData.Instance.GetData(Parent, "Route", entry => { entry.Bool = true; }), GUI.MakeLabel("Route"))) { var validatedRoute = Route.GetValidated(); foreach (var validatedNode in validatedRoute) { var node = validatedNode.Node; using (InspectorGUI.IndentScope.Single) { var foldoutState = NodeFoldout(validatedNode); if (foldoutState.Foldout) { OnPreFrameGUI(node); InspectorGUI.HandleFrame(node, 1); OnPostFrameGUI(node); } if (listOpNode == null && foldoutState.ButtonPressed) { listOpNode = node; } insertBeforePressed = insertBeforePressed || foldoutState.InsertBefore; insertAfterPressed = insertAfterPressed || foldoutState.InsertAfter; erasePressed = erasePressed || foldoutState.Erase; } if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition) && Event.current.type == EventType.MouseDown && Event.current.button == 0) { Selected = node; } } GUILayout.BeginHorizontal(); { InspectorGUI.Separator(1, EditorGUIUtility.singleLineHeight); addNewPressed = InspectorGUI.Button(MiscIcon.EntryAdd, true, "Add new node to the route.", GUILayout.Width(18)); if (listOpNode == null && addNewPressed) { listOpNode = Route.LastOrDefault(); } } GUILayout.EndHorizontal(); } else { InspectorGUI.Separator(1, 3); } if (addNewPressed || insertBeforePressed || insertAfterPressed) { NodeT newRouteNode = null; // Clicking "Add" will not copy data from last node. newRouteNode = listOpNode != null? addNewPressed? RouteNode.Create <NodeT>(null, listOpNode.Position, listOpNode.Rotation) : RouteNode.Create <NodeT>(listOpNode.Parent, listOpNode.LocalPosition, listOpNode.LocalRotation) : RouteNode.Create <NodeT>(); OnNodeCreate(newRouteNode, listOpNode, addNewPressed); if (addNewPressed) { Route.Add(newRouteNode); } if (insertBeforePressed) { Route.InsertBefore(newRouteNode, listOpNode); } if (insertAfterPressed) { Route.InsertAfter(newRouteNode, listOpNode); } if (newRouteNode != null) { CreateRouteNodeTool(newRouteNode); Selected = newRouteNode; } } else if (listOpNode != null && erasePressed) { Selected = null; Route.Remove(listOpNode); } }