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; }
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); }
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); }
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); }
private bool IsRepository(UINavRepository repository) { return(Equals(this.repository, repository)); }
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); }