public void Save(NodeTreeEditorData data, string saveName) { Debug.Log($"{data.Nodes.Count}"); var connections = data.Connections.Select(x => _mediaType.ConvertFrom <ConnectionData>(x)).ToList(); data.Nodes .ForEach(oNode => oNode.NodeData.NextIds = data.Nodes .Where(xNode => connections.Any(connection => connection.OutNodeID == oNode.NodeData.Id && connection.InNodeID == xNode.NodeData.Id)) .OrderBy(x => x.X) .Select(x => x.NodeData.Id) .ToList()); _storage.Put(saveName, new NodeTreeData { StartIds = connections.Where(x => x.OutNodeID == _mediaType.ConvertFrom <StartNodeData>(data.StartNode).ID).Select(x => x.InNodeID).ToArray(), Nodes = data.Nodes.Select(x => x.NodeData).ToArray() }); }
private void Execute(NodeTreeChanged msg) { if (CurrentNodeTree.IsActive) { _messagesToWaitFor = new List <Type>(); CurrentNodeTree.ShouldEnd = false; _nodeTree = _mediaType.ConvertFrom <NodeTreeData>(CurrentNodeTree.NodeTree.text); EnsureNodeTreeObjectsCreated(); CurrentNodeTree.NextNodeIds = _nodeTree.StartIds; Next(); } }
private void Load() { var path = EditorUtility.OpenFilePanel("Load Dialogue File", Application.dataPath + "/Dialogues", "vn"); if (path.Length != 0) { var nodeEditor = _mediaType.ConvertFrom <NodeTreeEditorData>(File.ReadAllText(path)); _menuBar.NodeTreeName = nodeEditor.Name; _startNode = new StartNode(_mediaType, nodeEditor.StartNode, OnClickConnectionPoint); _nodes = nodeEditor.Nodes.Select(CreateNode).ToList(); _connections = nodeEditor.Connections .Select(x => new Connection(_mediaType, x, _nodes, _startNode, OnClickRemoveConnection)).ToList(); _zoom = nodeEditor.Zoom > 0 ? nodeEditor.Zoom : 1; } }
public StartNode(IMediaType mediaType, string media, Action <ConnectionPoint> onClickConnection) : this(mediaType.ConvertFrom <StartNodeData>(media), onClickConnection) { }
public Connection(IMediaType mediaType, string media, List <Node> nodes, StartNode startNode, Action <Connection> onClick) : this(mediaType.ConvertFrom <ConnectionData>(media), nodes, startNode, onClick) { }