Example #1
0
 public override void OnGUI()
 {
     if (CanvasGUI.DoubleClick(position, name[0].ToString(), GUI.skin.box))
     {
         OverlayMenu.UpdateOverlays(this);
     }
 }
Example #2
0
 public override void OnGUI()
 {
     if (CanvasGUI.DoubleClick(position, new GUIContent(name + ": " + Count), GUI.skin.box, tint))
     {
         OverlayMenu.UpdateOverlays(this);
     }
 }
        void ToolBar()
        {
            CanvasGUI.BeginGroup(CanvasGUI.ToolBarRect, GUI.skin.box, cache.States.curSpace == EventSpace.Toolbar);

            GUI.Label(new Rect(5, 5, CanvasGUI.ToolBarRect.width - 10, 20), new GUIContent(cache.CanvasName + (cache.AutoLoaded ? " (Last Session)" : "")));

            if (CanvasGUI.Button(new Rect(5, 30, CanvasGUI.ToolBarRect.width - 10, 20), "Save"))
            {
                cache = (cache.IsFileSaved && !cache.AutoLoaded) ? EditorCache.SaveCache(cache.SavePath ?? AssetDatabase.GetAssetPath(cache), cache) : SaveCanvas();
            }

            if (CanvasGUI.Button(new Rect(5, 55, CanvasGUI.ToolBarRect.width - 10, 20), "Save As"))
            {
                SaveCanvas();
            }

            if (CanvasGUI.Button(new Rect(5, 80, CanvasGUI.ToolBarRect.width - 10, 20), "Load"))
            {
                LoadCanvas();
            }

            if (CanvasGUI.Button(new Rect(5, 105, CanvasGUI.ToolBarRect.width - 10, 20), "New Canvas"))
            {
                cache = EditorCache.NewCache();
            }

            if (CanvasGUI.Button(new Rect(5, 130, CanvasGUI.ToolBarRect.width - 10, 20), "Settings"))
            {
                Setting();
            }

            CanvasGUI.EndGroup();
        }
            public override void OnGUI()
            {
                Event current   = Event.current;
                Rect  tolerance = new Rect(position);

                tolerance.xMin -= 20;
                tolerance.xMax += 20;
                tolerance.yMin -= 20;
                tolerance.yMax += 20;

                bool hasFocus = tolerance.Contains(current.mousePosition);

                CanvasGUI.BeginGroup(position, GUI.skin.box, hasFocus);

                string nodeName = obj.name;

                if (CanvasGUI.TextField(new Rect(5, 5, 240, 20), ref nodeName))
                {
                    obj.name = DialogueEditorGUI.Cache.Actors.ItemNames[DialogueEditorGUI.Cache.Actors.ItemNames.IndexOf(obj.name)] = nodeName;
                }
                obj.Tint = UnityEditor.EditorGUI.ColorField(new Rect(5, 30, 140, 20), obj.Tint);

                CanvasGUI.EndGroup();

                if (current.type == EventType.MouseUp && !hasFocus)
                {
                    close = true;
                }

                if (!obj || close)
                {
                    UpdateOverlays(obj);
                }
            }
        public static void UpdateSelection(EditorStates states)
        {
            if (string.IsNullOrEmpty(states.info))
            {
                throw new UnityException();
            }

            if (states.info == "none")
            {
                States.curState.focusedObjects = new ScriptableObject[] { null }
            }
            ;
            else
            {
                states.info = states.info.Substring(1, states.info.Length - 2);
                string[] coords = states.info.Split(',');

                if (coords.Length == 2)
                {
                    states.curState.focusedObjects = CanvasGUI.ObjectAtPosition(new Vector2(float.Parse(coords[0]), float.Parse(coords[1])));
                }
            }
            InputSystem.HandleEventSpace(states);
            InputSystem.HandleSelecting(states);
        }
Example #6
0
        public override void OnGUI()
        {
            for (int i = 1; i < Count; i++)
            {
                Condition condition = Get(i);

                if (CanvasGUI.Button(new Rect(condition.Position.xMax + 2, condition.Position.yMin, 20, 20), "X"))
                {
                    condition.Delete();
                    i--;
                    continue;
                }
                condition.OnGUI();
            }

            if (CanvasGUI.Button(new Rect(CanvasGUI.OptionRect.width - 25, 5, 20, 20), "+"))
            {
                GenericMenu menu   = new GenericMenu(CanvasGUI.OptionRect);
                string[]    values = Enum.GetNames(typeof(ConditionalState));

                for (int i = 1; i < values.Length; i++)
                {
                    menu.AddMenuItem(new GUIContent(values[i]), false, AddConditionCallback, values[i]);
                }
                menu.Show(new Vector2(CanvasGUI.OptionRect.width - 5, 25));
            }
        }
        public void OnGUI()
        {
            CanvasGUI.Position = position;

            if (DateTime.Now - lastCheck >= ResourceManager.CheckRate)
            {
                if (!EditorCache.ValidateCanvas(cache))
                {
                    Debug.LogWarning("Loading last opened session.");
                    InitCanvas();
                    cache = EditorCache.LoadCache();
                }
                else
                {
                    cache.Init();
                }
                lastCheck = DateTime.Now;
            }

            InputSystem.EarlyInputEvents(cache.States);
            DialogueEditorGUI.OnGUI(cache.States);
            ToolBar();
            InputSystem.LateInputEvents(cache.States);
            cache.States.UpdateEvents();

            if (openDebug = CanvasGUI.Toggle(new Rect(5, 5, 130, 20), new GUIContent("Debug Window"), openDebug))
            {
                DebuggerWindow();
            }
        }
        public override void OnGUI()
        {
            base.OnGUI();

            CanvasGUI.BeginGroup(Position, GUI.skin.box, actor.Tint, HasControl);

            if (Locked)
            {
                GUI.Label(new Rect(5, 5, 240, 20), name);
            }
            else
            {
                string nodeName = name;

                if (CanvasGUI.TextField(new Rect(5, 5, 240, 20), ref nodeName))
                {
                    name = DialogueEditorGUI.Cache.Nodes.ItemNames[DialogueEditorGUI.Cache.Nodes.ItemNames.IndexOf(name)] = nodeName;
                }
            }

            if (CanvasGUI.Button(new Rect(Position.size.x - 50, 5, 20, 20), new GUIContent("L"), GUI.skin.button))
            {
                Locked = !Locked;
            }

            if (CanvasGUI.Button(new Rect(Position.size.x - 25, 5, 20, 20), new GUIContent("X"), GUI.skin.button))
            {
                Delete();
            }
            textArea = CanvasGUI.TextArea(new Rect(5, 30, 290, 65), textArea);

            CanvasGUI.EndGroup();
        }
 protected override void Construct()
 {
     name     = "Start Node";
     position = new Rect(CanvasGUI.CanvasToScreenPosition(CanvasGUI.CanvasRect.center), ResourceManager.START_NODE_SIZE);
     nodules  = NoduleDatabase.CreateNew(this);
     nodules.Add(BaseNodule.Create <OutputNodule> (this));
     DialogueEditorGUI.Cache.SaveNewObject(this, false);
 }
 public static void InitCanvas()
 {
     ResourceManager.SetupPaths();
     CanvasGUI.SetupGUI();
     NodeTypes.FetchAllNodes();
     NoduleTypes.FetchAllNodules();
     OverlayMenuTypes.FetchAllOverlayMenus();
     InputSystem.SetupInputHandlers();
 }
Example #11
0
 public virtual void DrawConnection()
 {
     foreach (BaseNodule nodule in nodules.OfType <OutputNodule> ())
     {
         foreach (BaseNodule connectedNodule in nodule.Nodules)
         {
             CanvasGUI.DrawConnection(nodule, connectedNodule, Color.cyan);
         }
     }
 }
 public static void HandleFocusing(EditorStates states)
 {
     if (unfocusControls == states && states.curEvent.type == EventType.Repaint)
     {
         GUIUtility.hotControl      = 0;
         GUIUtility.keyboardControl = 0;
         unfocusControls            = null;
     }
     states.curState.focusedObjects = CanvasGUI.ObjectAtPosition(CanvasGUI.CanvasToScreenPosition(states.curState, states.mousePos));
 }
        public override void OnGUI()
        {
            CanvasGUI.Box(new Rect(position.position, new Vector2(20, position.height)),
                          new GUIContent(conditional.ToString()[0].ToString()));
            string nodeName = name;

            if (CanvasGUI.TextField(new Rect(new Vector2(position.x + 25, position.y), new Vector2(140, 20)), ref nodeName))
            {
                name = DialogueEditorGUI.Cache.Conditions.ItemNames[DialogueEditorGUI.Cache.Conditions.ItemNames.IndexOf(name)] = nodeName;
            }
        }
        public static void OnGUI(EditorStates states)
        {
            States = states;
            EditorState curState = states.curState;

            CanvasGUI.BeginGroup(new Rect(curState.panDelta, curState.canvasSize), (states.curSpace | EventSpace.CanvasSpace) == EventSpace.CanvasSpace);

            for (int i = 0; i < Cache.Nodes.Count; i++)
            {
                Cache.Nodes.Get(i).DrawConnection();
            }

            if (curState.connectionIndex > -1)
            {
                BaseNodule startNodule = curState.selectedObject as BaseNodule;

                if (curState.connectionIndex > startNodule.Nodules.Count - 1)
                {
                    InputHandlers.OnSelectConnection(states);
                }
                else
                {
                    CanvasGUI.DrawConnection(startNodule, startNodule.Nodules.Get(curState.connectionIndex), Color.red);
                }
            }
            Cache.Nodes.OnGUI();

            CanvasGUI.EndGroup();
            CanvasGUI.BeginGroup(CanvasGUI.OptionRect, GUI.skin.box, states.curSpace == EventSpace.Actor);

            switch (tab)
            {
            case OptionTab.actor:
                Cache.Actors.OnGUI();
                break;

            case OptionTab.condition:
                Cache.Conditions.OnGUI();
                break;
            }

            if (CanvasGUI.Button(new Rect(5, 5, 70, 20), "Conditions"))
            {
                tab = OptionTab.condition;
            }
            else if (CanvasGUI.Button(new Rect(80, 5, 50, 20), "Actors"))
            {
                tab = OptionTab.actor;
            }

            CanvasGUI.EndGroup();
        }
        public void Show(Vector2 menuPosition, float width = 40)
        {
            if (items.Count <= 0)
            {
                return;
            }
            minWidth = width;
            CalculateRects(items, CanvasGUI.GUItoWindowPosition(menuPosition));
            groupsToDraw = new List <ItemGroup> ()
            {
                items
            };

            OnShow();
        }
Example #16
0
        public override void OnGUI()
        {
            for (int i = 0; i < Count; i++)
            {
                OptionNode option = Get(i);
                option.OnGUI();

                if (!mainNode.Locked && CanvasGUI.Button(new Rect(
                                                             new Vector2(option.Position.center.x, option.Position.yMin - optionSpacing * 0.5f) - new Vector2(45, 14) * 0.5f,
                                                             new Vector2(45, 14)), "Unlink"))
                {
                    Remove(option);
                    continue;
                }
            }
        }
Example #17
0
        public override void OnGUI()
        {
            base.OnGUI();

            CanvasGUI.BeginGroup(Position, GUI.skin.box, actor.Tint, HasControl);

            if (Locked)
            {
                GUI.Label(new Rect(5, 5, 240, 20), name);
                GUI.Label(new Rect(5, 30, 240, 20), actor.name);
            }
            else
            {
                EditorCache cache    = DialogueEditorGUI.Cache;
                string      nodeName = name;

                if (CanvasGUI.TextField(new Rect(5, 5, 240, 20), ref nodeName))
                {
                    name = cache.Nodes.ItemNames[cache.Nodes.ItemNames.IndexOf(name)] = nodeName;
                }

                ActorDatabase actors = cache.Actors;
                actor = actors.Get(CanvasGUI.DropDownMenu(new Rect(5, 30, 240, 20),
                                                          position, actors.GetIndex(actor), actors.ItemNames.ToArray()));
            }

            if (CanvasGUI.Button(new Rect(Position.size.x - 50, 5, 20, 20), new GUIContent("L"), GUI.skin.button))
            {
                Locked = !Locked;
            }

            if (CanvasGUI.Button(new Rect(Position.size.x - 25, 5, 20, 20), new GUIContent("X"), GUI.skin.button))
            {
                Delete();
            }
            textArea = CanvasGUI.TextArea(new Rect(5, 55, 290, 115), textArea);

            if (CanvasGUI.Button(new Rect(5, 175, 290, 20), new GUIContent("Add Dialogue Option"), GUI.skin.button))
            {
                options.Add(OptionNode.Create(options.NextItemName("Option"), this));
            }

            CanvasGUI.EndGroup();

            options.OnGUI();
        }
            public override void OnGUI()
            {
                Event current   = Event.current;
                Rect  tolerance = new Rect(position);

                tolerance.xMin -= 20;
                tolerance.xMax += 20;
                tolerance.yMin -= 20;
                tolerance.yMax += 20;

                bool hasFocus = tolerance.Contains(current.mousePosition);

                CanvasGUI.BeginGroup(position, GUI.skin.box, hasFocus);

                ConditionDatabase conditions = DialogueEditorGUI.Cache.Conditions;

                obj.Condition = conditions.Get(CanvasGUI.DropDownMenu(new Rect(5, 5, position.width - 10, 20), position,
                                                                      conditions.GetIndex(obj.Condition), conditions.ItemNames.ToArray()));

                for (int i = 0; i < obj.ConditionValues.Count; i++)
                {
                    var val = obj.ConditionValues[i];

                    CanvasGUI.TextLabel(new Rect(30, 30 + 25 * 1, 20, 20), val.userParam.ToString());

                    string[] names = Enum.GetNames(typeof(EqualityState));
                    val.equality = (EqualityState)Enum.Parse(typeof(EqualityState),
                                                             names[CanvasGUI.DropDownMenu(new Rect(5, 30 + 25, 100, 20), (int)val.equality, names)]);
                }

                CanvasGUI.EndGroup();

                if (current.type == EventType.MouseUp && !hasFocus)
                {
                    close = true;
                }

                if (!obj || close)
                {
                    UpdateOverlays(obj);
                }
            }
            ValueType DrawParam(Rect rect, ValueType param)
            {
                ConditionalState conditional = obj.Condition.Conditional;

                switch (conditional)
                {
                case (ConditionalState.Bool):
                    return(CanvasGUI.DropDownMenu(rect, (int)param, new string[] { "False", "True" }));

                case (ConditionalState.Float):
                    break;

                case (ConditionalState.Int):
                    break;

                case (ConditionalState.None):
                    break;
                }

                return(null);
            }
        public override void OnGUI()
        {
            for (int i = 0; i < Count; i++)
            {
                Actor actor = Get(i);

                if (i > 0 && CanvasGUI.Button(new Rect(actor.Position.xMax + 2, actor.Position.yMin, 20, 20), "X"))
                {
                    actor.Delete();
                    continue;
                }
                actor.OnGUI();
            }

            if (CanvasGUI.Button(new Rect(CanvasGUI.OptionRect.width - 25, 5, 20, 20), "+"))
            {
                Add(Actor.Create(NextItemName("New Actor"),
                                 new Color(Random.Range(0.000f, 1.000f), Random.Range(0.000f, 1.000f), Random.Range(0.000f, 1.000f)),
                                 new Rect(5, 27 + 22 * (Count), CanvasGUI.OptionRect.width - 34, 20)));
            }
        }
        public static void EndNodeDrag(EditorStates states)
        {
            EditorState state = states.curState;

            if (state.dragNode)
            {
                if (state.selectedObject is OptionNode && (states.mousePos - state.startPos).magnitude > 10)
                {
                    states.mousePos = CanvasGUI.CanvasToScreenPosition(state, states.mousePos);

                    foreach (MainNode node in DialogueEditorGUI.Cache.Nodes.OfType <MainNode> ())
                    {
                        if (node.Options.OptionAddRect.Contains(states.mousePos))
                        {
                            DialogueEditorGUI.Cache.Nodes.Remove(state.selectedObject as OptionNode);
                            node.Options.Add(state.selectedObject as OptionNode);
                            break;
                        }
                    }
                }
                state.dragNode = false;
                DialogueEditorGUI.Repaint();
            }
        }
 public GenericMenu()
 {
     items     = new ItemGroup();
     controlID = GUIUtility.GetControlID(items.GetHashCode(), FocusType.Keyboard, new Rect(CanvasGUI.GUItoWindowPosition(items.position.position), items.position.size));
 }
        protected override void OnGUI()
        {
            for (int i = 0; i < groupsToDraw.Count; i++)
            {
                ItemGroup itemGroup = groupsToDraw[i];
                Rect      tolerance = new Rect(itemGroup.position);
                tolerance.xMin -= 20;
                tolerance.yMin -= 20;
                tolerance.xMax += 20;
                tolerance.yMax += 20;
                bool hasFocus = tolerance.Contains(Event.current.mousePosition);

                CanvasGUI.BeginGroup(itemGroup.position, GUI.skin.box, hasFocus);

                foreach (MenuItem item in itemGroup)
                {
                    if (item.content.text.Equals("Saparator"))
                    {
                        GUI.Label(item.position, "----------");
                    }
                    else if (item.position.Contains(Event.current.mousePosition))
                    {
                        if (Event.current.type == EventType.MouseUp && Event.current.button == 0)
                        {
                            if (item.Group)
                            {
                                groupsToDraw.Add(item.subItems);
                            }
                            else
                            {
                                item.Execute();
                                close = true;
                            }
                            Event.current.Use();
                        }

                        if (item.Group && groupsToDraw.Exists(j => j == item.subItems))
                        {
                            item.subItems.forceFocus = true;
                        }
                        CanvasGUI.Box(item.position, item.content);
                    }
                    else
                    {
                        if (item.Group && groupsToDraw.Exists(j => j == item.subItems))
                        {
                            item.subItems.forceFocus = false;
                        }
                        GUI.Label(item.position, item.content);
                    }

                    if (item.Group)
                    {
                        GUI.Label(new Rect(item.position.position + new Vector2(item.position.size.x - GroupIconSize, 0),
                                           new Vector2(GroupIconSize, minHeight)), ">");
                    }
                }

                CanvasGUI.EndGroup();

                if (!hasFocus && !itemGroup.forceFocus)
                {
                    if (i != 0)
                    {
                        groupsToDraw.Remove(itemGroup);
                    }
                    else if (Event.current.type == EventType.MouseUp)
                    {
                        close = true;
                    }
                }
            }

            if (groupsToDraw.Count == 0 || close)
            {
                OnClose();
            }
            DialogueEditorGUI.OnRepaint();
        }
        static void AddCallBack(object callBackObj)
        {
            EditorStates states = callBackObj as EditorStates;

            if (states == null)
            {
                throw new UnityException();
            }
            EditorState state = states.curState;

            if (states.info.Contains("Node"))
            {
                switch (states.curSpace)
                {
                case EventSpace.Node:
                    if (states.info == "OptionNode")
                    {
                        if (state.selectedObject is MainNode)
                        {
                            MainNode main = state.selectedObject as MainNode;
                            main.Options.Add(OptionNode.Create(main.Options.NextItemName("Option"), main));
                        }
                        else
                        {
                            goto default;
                        }
                    }
                    else if (states.info == "MainNode")
                    {
                        goto default;
                    }
                    else
                    {
                        Debug.LogError("Cannot recognise name of 'Node'. Add More Error here");
                        return;
                    }
                    break;

                default:
                    EditorCache cache = DialogueEditorGUI.Cache;
                    cache.Nodes.Add(DialogueNode.Create(states.info,
                                                        cache.Nodes.NextItemName(states.info),
                                                        CanvasGUI.CanvasToScreenPosition(state, states.mousePos),
                                                        cache.Actors.DefaultActor));
                    break;
                }
            }
            else if (states.info.Contains("Nodule"))
            {
                BaseNode node = (states.curSpace == EventSpace.Node) ? state.selectedObject as BaseNode :
                                (states.curSpace == EventSpace.Nodule) ? (state.selectedObject as BaseNodule).MainNode :
                                null;

                if (node)
                {
                    node.Nodules.Add(BaseNodule.Create(states.info, node.Nodules.NextItemName(states.info), node));
                }
            }
            else
            {
                throw new UnityException();
            }
        }
        public GenericMenu(Rect newBoundingRect)
        {
            items     = new ItemGroup();
            controlID = GUIUtility.GetControlID(items.GetHashCode(), FocusType.Keyboard, new Rect(CanvasGUI.GUItoWindowPosition(items.position.position), items.position.size));

            if (newBoundingRect != Rect.zero)
            {
                boundingRect = newBoundingRect;
            }
        }
 public override void OnGUI()
 {
     base.OnGUI();
     CanvasGUI.Box(position, new GUIContent("Start Node"), Color.green);
 }