コード例 #1
0
        public void Load(UINavRepository repository)
        {
            this.repository = repository;

            toolbar.DefaultInputControllerField.SetValueWithoutNotify(repository.DefaultInputController);
            toolbar.DefaultInAnimationField.SetValueWithoutNotify(repository.DefaultInAnimation);
            toolbar.DefaultOutAnimationField.SetValueWithoutNotify(repository.DefaultOutAnimation);

            ClearGraph();
            CreateNodes();

            this.repository = null;
        }
コード例 #2
0
        private void CreateMainContainer(UINavRepository repository)
        {
            Repository = repository;

            ObjectField repositoryField = new ObjectField("UI Navigation Graph")
            {
                objectType = typeof(UINavRepository), value = repository
            };

            repositoryField.RegisterValueChangedCallback(evt =>
            {
                if (evt.newValue is UINavRepository v)
                {
                    Repository = v;
                }
            });

            mainContainer.Add(repositoryField);
            mainContainer.style.backgroundColor = new Color(0.2f, 0.2f, 0.2f, 1);
        }
コード例 #3
0
        private void Open(UINavRepository repository, string path)
        {
            string name = System.IO.Path.GetFileNameWithoutExtension(path);

            if (!IsRepository(repository))
            {
                if (this.repository != null)
                {
                    if (EditorUtility.DisplayDialog("File Not Saved", "Save " + System.IO.Path.GetFileNameWithoutExtension(filePath), "OK", "Cancel"))
                    {
                        SaveData();
                    }
                }

                this.repository = repository;
                LoadData();
            }

            this.filePath     = path;
            titleContent.text = System.IO.Path.GetFileNameWithoutExtension(path);
        }
コード例 #4
0
        public NavNestedNode(UINavGraphView graphView, Vector2 position, string guid, UINavRepository repository)
            : base(graphView, "NavNested", position, guid)
        {
            CreateMainContainer(repository);

            AddPort("In", Direction.Input, Port.Capacity.Multi);
            AddPort("Out", Direction.Output, Port.Capacity.Single);
            AddPort("Back", Direction.Output, Port.Capacity.Single);
        }
コード例 #5
0
 private bool IsRepository(UINavRepository repository)
 {
     return(Equals(this.repository, repository));
 }
コード例 #6
0
        public void Save(string path, UINavRepository repository)
        {
            bool isNewRepository = repository == null;

            if (isNewRepository)
            {
                repository = ScriptableObject.CreateInstance <UINavRepository>();
            }

            repository.DefaultInputController = toolbar.DefaultInputControllerField.text;
            repository.DefaultInAnimation     = toolbar.DefaultInAnimationField.text;
            repository.DefaultOutAnimation    = toolbar.DefaultOutAnimationField.text;

            repository.NestedNodes.Clear();
            repository.StateNodes.Clear();

            foreach (NavBaseNode node in Nodes)
            {
                List <NavOutputPortData> outputPorts = new List <NavOutputPortData>();
                foreach (Port p in node.outputContainer.Query <Port>().ToList())
                {
                    TextField t    = p.Q <TextField>();
                    string    name = t != null ? t.text : p.name;

                    string connected = "";

                    if (p.connections.Count() > 0)
                    {
                        Port inport = p.connections.First().input;
                        if (inport.node is NavBaseNode connectedNode)
                        {
                            connected = connectedNode.GUID;
                        }
                    }
                    outputPorts.Add(new NavOutputPortData(name, connected));
                }

                if (node is NavStateNode stateNode)
                {
                    repository.StateNodes.Add(new NavStateNodeData(node.GUID, node.GetPosition().position, outputPorts, stateNode.PanelName)
                    {
                        InputController = stateNode.InputControllerField.text,
                        DoNotHide       = stateNode.DoNotHideField.value,
                        InAnimation     = stateNode.InAnimationField.text,
                        OutAnimation    = stateNode.OutAnimationField.text
                    });
                }
                else if (node is NavNestedNode nestedNode)
                {
                    repository.NestedNodes.Add(new NavNestedNodeData(node.GUID, node.GetPosition().position, outputPorts.First(), outputPorts[1], nestedNode.Repository));
                }
                else if (node is NavStartNode)
                {
                    repository.StartNode = new NavStartNodeData(node.GUID, node.GetPosition().position, outputPorts.First());
                }
                else if (node is NavNestedEndNode)
                {
                    repository.NestedEndNode = new NavNestedEndNodeData(node.GUID, node.GetPosition().position, outputPorts.First());
                }
            }


            if (isNewRepository)
            {
                if (!AssetDatabase.IsValidFolder(Path.GetDirectoryName(path)))
                {
                    path = "Assets/" + Path.GetFileName(path);
                }
                Debug.Log("Is null " + (repository == null) + " " + (path == null));


                AssetDatabase.CreateAsset(repository, path);
            }
            AssetDatabase.SaveAssets();

            EditorUtility.SetDirty(repository);
        }