Esempio n. 1
0
    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);
                    }
                }
            }
        }
    }
Esempio n. 2
0
    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);
            }
        }
    }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
    public override void OnInspectorGUI()
    {
        graphColor = EditorGUILayout.ColorField(graphColor);
        GraphEditorWindow.SetGraphColor(graph, graphColor);

        base.OnInspectorGUI();
    }
Esempio n. 5
0
 public void OnSceneGUI()
 {
     if (selectedAddLinkObjectFrom != null && selectedAddLinkObjectTo != null)
     {
         Vector3 pinShift = GraphEditorWindow.GetGraphNodePinShift(selectedAddLinkObjectFrom);
         Handles.DrawLine(selectedAddLinkObjectFrom.transform.position + pinShift, selectedAddLinkObjectTo.transform.position + pinShift);
     }
 }
Esempio n. 6
0
    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;
            }
        }
Esempio n. 10
0
    public static void ShowGraphEditor()
    {
        GraphEditorWindow window = EditorWindow.GetWindow(typeof(GraphEditorWindow)) as GraphEditorWindow;

        window.Reset();
    }
Esempio n. 11
0
    static void Init()
    {
        GraphEditorWindow gew = EditorWindow.GetWindow <GraphEditorWindow>();

        gew.Setup();
    }
Esempio n. 12
0
        public static bool OpenMachineConfig(int instanceID, int line)
        {
            UConfigurableMachine config = EditorUtility.InstanceIDToObject(instanceID) as UConfigurableMachine;

            return((config != null) && (null != GraphEditorWindow.Show(config)));
        }
Esempio n. 13
0
        public static bool OpenMachine(int instanceID, int line)
        {
            UMachineObject machine = EditorUtility.InstanceIDToObject(instanceID) as UMachineObject;

            return((machine != null) && (null != GraphEditorWindow.Show(machine)));
        }
Esempio n. 14
0
        public static bool OpenIncidentConfig(int instanceID, int line)
        {
            IncidentConfig config = EditorUtility.InstanceIDToObject(instanceID) as IncidentConfig;

            return((config != null) && (null != GraphEditorWindow.Show(config)));
        }
Esempio n. 15
0
        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();
        }