public static void DrawGraphGizmo(Graph graph, GizmoType type) { Color graphColor = GraphEditorWindow.GetGraphColor(graph); using (new GizmosColor(graphColor)) { foreach (GraphNode node in graph.Nodes) { GraphNodeEditor.DrawGraphNodeGizmo(node, GizmoType.NonSelected); } Color linkColor = Color.gray; if ((type & GizmoType.Selected) != 0) { linkColor = graphColor * 0.75f; } else if ((type & GizmoType.NonSelected) != 0) { linkColor = graphColor * 0.25f; } using (new GizmosColor(linkColor)) { foreach (var links in graph.Links) { GraphNode nodeFrom = links.Key; foreach (GraphNode nodeTo in links.Value) { Vector3 pinShift = GraphEditorWindow.GetGraphNodePinShift(nodeTo); Gizmos.DrawLine(nodeFrom.transform.position + pinShift, nodeTo.transform.position + pinShift); } } } } }
public static void DrawGraphNodeGizmo(GraphNode node, GizmoType type) { using (new GizmosColor(GraphEditorWindow.GetGraphColor(node.graph))) { if (node.graph == null) { Vector3 nodePinPosition = node.transform.position + GraphEditorWindow.GetGraphNodePinShift(node); Gizmos.DrawLine(node.transform.position, nodePinPosition); Gizmos.DrawWireSphere(nodePinPosition, GraphEditorWindow.GraphNodePinRadius * 1.1f); return; } if ((type & GizmoType.Selected) != 0) { GraphEditor.DrawGraphGizmo(node.graph, GizmoType.NonSelected); Vector3 pinShift = GraphEditorWindow.GetGraphNodePinShift(node); Vector3 nodePinPosition = node.transform.position + pinShift; Gizmos.DrawLine(node.transform.position, nodePinPosition); Gizmos.DrawWireSphere(nodePinPosition, GraphEditorWindow.GraphNodePinRadius * 1.1f); foreach (GraphNode linkedNode in node.EnumLinkedNodes()) { Gizmos.DrawLine(nodePinPosition, linkedNode.transform.position + pinShift); } } else if (type == GizmoType.NonSelected) { Vector3 pinShift = GraphEditorWindow.GetGraphNodePinShift(node); Vector3 nodePinPosition = node.transform.position + pinShift; Gizmos.DrawLine(node.transform.position, nodePinPosition); Gizmos.DrawSphere(nodePinPosition, GraphEditorWindow.GraphNodePinRadius); } } }
private void ShowGraphEditor() { // TODO: Ensure only one window instance per-graph is open GraphEditorWindow window = CreateInstance <GraphEditorWindow>(); ExecGraph graph = target as ExecGraph; // Create a toolbar to run/compile var toolbar = new IMGUIContainer(() => { GUILayout.BeginHorizontal(EditorStyles.toolbar); if (GUILayout.Button("Execute", EditorStyles.toolbarButton)) { graph.Execute(); } if (GUILayout.Button("Compile", EditorStyles.toolbarButton)) { graph.Compile(); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); }); window.rootVisualElement.Add(toolbar); window.Show(); window.Load(graph); }
public override void OnInspectorGUI() { graphColor = EditorGUILayout.ColorField(graphColor); GraphEditorWindow.SetGraphColor(graph, graphColor); base.OnInspectorGUI(); }
public void OnSceneGUI() { if (selectedAddLinkObjectFrom != null && selectedAddLinkObjectTo != null) { Vector3 pinShift = GraphEditorWindow.GetGraphNodePinShift(selectedAddLinkObjectFrom); Handles.DrawLine(selectedAddLinkObjectFrom.transform.position + pinShift, selectedAddLinkObjectTo.transform.position + pinShift); } }
public void OnEnable() { graph = (Graph)target; graphColor = GraphEditorWindow.GetGraphColor(graph); UpdateGraphNodes(null); GraphEditorWindow.graphPinLevels.Clear(); GraphEditorWindow.graphPinLevels.Add(graph, 0); }
static OptionHandler CreateHandler(GraphEditorWindow form) { GraphControl gc = form.GraphControl; IGraph g = form.Graph; GraphEditorInputMode geim = form.GraphEditorInputMode; OptionHandler handler = new OptionHandler(NAME); OptionGroup controlGroup = handler.AddGroup(UI_DEFAULTS); controlGroup.AddDouble(HitTestRadius, gc.HitTestRadius); controlGroup.AddBool(AutoRemoveEmptyLabels, geim.AutoRemoveEmptyLabels); // var gridEnabledItem = controlGroup.AddBool(GridEnabled, form.Grid.Enabled); var gridVisibleItem = controlGroup.AddBool(GridVisible, form.GridVisible); var gridWidthItem = controlGroup.AddInt(GridWidth, form.GridWidth); var gridSnapTypeItem = controlGroup.AddList(GridSnapeType, new List <GridSnapTypes>() { GridSnapTypes.All, GridSnapTypes.GridPoints, GridSnapTypes.HorizontalLines, GridSnapTypes.Lines, GridSnapTypes.None, GridSnapTypes.VerticalLines }, form.GridSnapType); ConstraintManager cm = new ConstraintManager(handler); cm.SetEnabledOnCondition( ConstraintManager.LogicalCondition.Or(cm.CreateValueEqualsCondition(gridVisibleItem, true), cm.CreateValueEqualsCondition(gridVisibleItem, true)), gridWidthItem); cm.SetEnabledOnValueEquals(gridVisibleItem, true, gridSnapTypeItem); if (g != null) { OptionGroup graphGroup = handler.AddGroup(GRAPH_SETTINGS); graphGroup.AddBool(AutoAdjustPreferredLabelSize, g.NodeDefaults.Labels.AutoAdjustPreferredSize); graphGroup.AddBool(AutoCleanupPorts, g.NodeDefaults.Ports.AutoCleanUp); OptionGroup sharingGroup = graphGroup.AddGroup(SHARING_SETTINGS); sharingGroup.AddBool(ShareDefaultNodeStyleInstance, g.NodeDefaults.ShareStyleInstance); sharingGroup.AddBool(ShareDefaultEdgeStyleInstance, g.EdgeDefaults.ShareStyleInstance); sharingGroup.AddBool(ShareDefaultNodeLabelStyleInstance, g.NodeDefaults.Labels.ShareStyleInstance); sharingGroup.AddBool(ShareDefaultEdgeLabelStyleInstance, g.EdgeDefaults.Labels.ShareStyleInstance); sharingGroup.AddBool(ShareDefaultPortStyleInstance, g.NodeDefaults.Ports.ShareStyleInstance); sharingGroup.AddBool(ShareDefaultNodeLabelModelParameter, g.NodeDefaults.Labels.ShareLayoutParameterInstance); sharingGroup.AddBool(ShareDefaultEdgeLabelModelParameter, g.EdgeDefaults.Labels.ShareLayoutParameterInstance); } OptionGroup miscGroup = handler.AddGroup(MISC_SETTINGS); UndoEngine undoEngine = form.Graph.GetUndoEngine(); if (undoEngine != null) { miscGroup.AddInt(UndoEngine_Size, undoEngine.Size); } return(handler); }
public static void EditDefaults(GraphEditorWindow form) { OptionHandler handler = CreateHandler(form); handler.I18nFactory = i18NFactory; if (new EditorForm { OptionHandler = handler, IsAutoAdopt = true, IsAutoCommit = true, ShowResetButton = true, Owner = form, Title = i18NFactory.GetString(NAME, NAME) }.ShowDialog() == true) { CommitValuesToForm(handler, form); } }
private static void CommitValuesToForm(OptionHandler handler, GraphEditorWindow form) { GraphControl gc = form.GraphControl; IGraph g = form.Graph; GraphEditorInputMode geim = form.GraphEditorInputMode; OptionGroup controlGroup = handler.GetGroupByName(UI_DEFAULTS); OptionGroup graphGroup = handler.GetGroupByName(GRAPH_SETTINGS); OptionGroup sharingGroup = (OptionGroup)graphGroup.GetGroupByName(SHARING_SETTINGS); OptionGroup miscGroup = handler.GetGroupByName(MISC_SETTINGS); gc.HitTestRadius = (double)controlGroup[HitTestRadius].Value; geim.AutoRemoveEmptyLabels = (bool)controlGroup[AutoRemoveEmptyLabels].Value; form.GridWidth = (int)controlGroup[GridWidth].Value; form.GridSnapType = (GridSnapTypes)controlGroup[GridSnapeType].Value; form.GridVisible = (bool)controlGroup[GridVisible].Value; if (g != null) { g.NodeDefaults.Labels.AutoAdjustPreferredSize = g.EdgeDefaults.Labels.AutoAdjustPreferredSize = (bool)graphGroup[AutoAdjustPreferredLabelSize].Value; g.NodeDefaults.Ports.AutoCleanUp = g.EdgeDefaults.Ports.AutoCleanUp = (bool)graphGroup[AutoCleanupPorts].Value; g.NodeDefaults.ShareStyleInstance = (bool)sharingGroup[ShareDefaultNodeStyleInstance].Value; g.EdgeDefaults.ShareStyleInstance = (bool)sharingGroup[ShareDefaultEdgeStyleInstance].Value; g.NodeDefaults.Labels.ShareStyleInstance = (bool)sharingGroup[ShareDefaultNodeLabelStyleInstance].Value; g.EdgeDefaults.Labels.ShareStyleInstance = (bool)sharingGroup[ShareDefaultEdgeLabelStyleInstance].Value; g.NodeDefaults.Ports.ShareStyleInstance = g.EdgeDefaults.Ports.ShareStyleInstance = (bool)sharingGroup[ShareDefaultPortStyleInstance].Value; g.NodeDefaults.Labels.ShareLayoutParameterInstance = (bool)sharingGroup[ShareDefaultNodeLabelModelParameter].Value; g.EdgeDefaults.Labels.ShareLayoutParameterInstance = (bool)sharingGroup[ShareDefaultEdgeLabelModelParameter].Value; } UndoEngine undoEngine = form.Graph.GetUndoEngine(); if (undoEngine != null) { undoEngine.Size = (int)miscGroup[UndoEngine_Size].Value; } }
public static void ShowGraphEditor() { GraphEditorWindow window = EditorWindow.GetWindow(typeof(GraphEditorWindow)) as GraphEditorWindow; window.Reset(); }
static void Init() { GraphEditorWindow gew = EditorWindow.GetWindow <GraphEditorWindow>(); gew.Setup(); }
public static bool OpenMachineConfig(int instanceID, int line) { UConfigurableMachine config = EditorUtility.InstanceIDToObject(instanceID) as UConfigurableMachine; return((config != null) && (null != GraphEditorWindow.Show(config))); }
public static bool OpenMachine(int instanceID, int line) { UMachineObject machine = EditorUtility.InstanceIDToObject(instanceID) as UMachineObject; return((machine != null) && (null != GraphEditorWindow.Show(machine))); }
public static bool OpenIncidentConfig(int instanceID, int line) { IncidentConfig config = EditorUtility.InstanceIDToObject(instanceID) as IncidentConfig; return((config != null) && (null != GraphEditorWindow.Show(config))); }
public override void OnInspectorGUI() { SerializedProperty property = null; serializedObject.Update(); int index = serializedObject.FindProperty("_index").intValue; if (index >= 0) { bool selectText = _index != index; bool isNode = serializedObject.FindProperty("_isNode").boolValue; if (isNode) { property = serializedObject.FindProperty("Incident.Nodes").GetArrayElementAtIndex(index); DrawMoment(property); } else { property = serializedObject.FindProperty("Incident.LinkData"); property.arraySize = serializedObject.FindProperty("Incident.Links").arraySize; DrawTransition(property.GetArrayElementAtIndex(index)); } _index = index; if (property != null && selectText) { EditorGUI.FocusTextInControl(FOCUS_ID); TextEditor txt = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl); if (txt != null) { txt.SelectAll(); Array.Find(Resources.FindObjectsOfTypeAll <EditorWindow>(), w => w.titleContent.text == "Inspector").Focus(); } } if ((Event.current.modifiers & (EventModifiers.Command | EventModifiers.Control)) > 0 && (Event.current.keyCode == KeyCode.Backspace || Event.current.keyCode == KeyCode.Delete) && GraphEditorWindow.DeleteSelected(serializedObject.targetObject as IncidentConfig, index, isNode)) { serializedObject.FindProperty("_isNode").boolValue = false; serializedObject.FindProperty("_index").intValue = -1; } } else { SerializedProperty incident = serializedObject.FindProperty("Incident"); SerializedProperty dateProperty = incident.FindPropertyRelative("_date"); bool fixedDate = GUILayout.Toggle(dateProperty.longValue >= 0, "Date"); if (!fixedDate) { dateProperty.longValue = -1; } else { EditorGUILayout.BeginHorizontal(); DateTime date = dateProperty.longValue > 0 ? DateTime.MinValue.AddTicks(dateProperty.longValue) : DateTime.MinValue; int day = Mathf.Clamp(EditorGUILayout.IntField(date.Day, GUILayout.MaxWidth(30f)), 1, DateTime.DaysInMonth(date.Year, date.Month)); int month = EditorGUILayout.Popup(date.Month - 1, MONTHS) + 1; int year = Mathf.Clamp(EditorGUILayout.IntField(date.Year, GUILayout.MaxWidth(80f)), 1, 9999); dateProperty.longValue = new DateTime(year, month, day).Ticks; EditorGUILayout.EndHorizontal(); } incident.FindPropertyRelative("OneShot").boolValue = GUILayout.Toggle(incident.FindPropertyRelative("OneShot").boolValue, "One-Shot"); } serializedObject.ApplyModifiedProperties(); }