public void Save() { _Editor.Tree.Clear(); foreach (var item in this._Panel.Controls) { if (item is AnimNodeItem) { ((AnimNodeItem)item).Save(); _Editor.Tree.Add(((AnimNodeItem)item).Data); } } List <Skill.Editor.UI.Connection> connections = new List <UI.Connection>(); foreach (var item in this.Controls) { if (item is Skill.Editor.UI.Connection) { connections.Add((Skill.Editor.UI.Connection)item); } } _Editor.Tree.Connections = new ConnectionData[connections.Count]; for (int i = 0; i < connections.Count; i++) { Skill.Editor.UI.Connection c = connections[i]; AnimNodeItem start = (AnimNodeItem)c.Start.UserData; AnimNodeItem end = (AnimNodeItem)c.End.UserData; if (c.Start.ConnectorType == UI.ConnectorType.Output) { _Editor.Tree.Connections[i] = new ConnectionData(start.Data, end.Data, end.GetConnectorIndex(c.End)); } else { _Editor.Tree.Connections[i] = new ConnectionData(end.Data, start.Data, start.GetConnectorIndex(c.Start)); } } _Editor.Tree.Zoom = this._Panel.ZoomFactor; _Editor.Tree.PanX = this._Panel.PanPosition.x; _Editor.Tree.PanY = this._Panel.PanPosition.y; }
internal void Remove(AnimNodeItem item) { _Panel.Controls.Remove(item); item.RemoveAllConnections(); List <Skill.Editor.UI.Connection> connectionList = new List <UI.Connection>(); foreach (var c in Controls) { if (c is Skill.Editor.UI.Connection) { Skill.Editor.UI.Connection connection = (Skill.Editor.UI.Connection)c; if (connection.Start.UserData == item || connection.End.UserData == item) { connectionList.Add(connection); } } } foreach (var c in connectionList) { c.Break(); } connectionList.Clear(); }