public void RemoveNode(NodeType type, int index) { Debug.Assert(Enum.IsDefined(typeof(NodeType), type)); Debug.Assert(index >= 0); switch (type) { case NodeType.GuideNode: { GuideNodes.RemoveAt(index); break; } case NodeType.WallNode: { WallNodes.RemoveAt(index); break; } } Links.ForEach(link => { if (link.Type == type && link.StartIndex > index) { link.StartIndex--; } if (link.Type == type && link.EndIndex > index) { link.EndIndex--; } }); }
public IEnumerable <GuideNode> FindEntryNodes(string pattern) { if (string.IsNullOrEmpty(pattern)) { return(new List <GuideNode>()); } return (GuideNodes.Where(entryNode => entryNode.Name != null) .Where(entryNode => Regex.IsMatch(entryNode.Name, pattern))); }
public void ResetEntryNodes(bool prev = false, bool next = false) { GuideNodes.ForEach(entryNode => { if (prev) { entryNode.Prev = null; } if (next) { entryNode.Next = null; } }); }
public void AddNode(NodeBase node) { Debug.Assert(node != null); switch (node) { case GuideNode entryNode: { GuideNodes.Add(entryNode); return; } case WallNode wallNode: { WallNodes.Add(wallNode); return; } default: { throw new ArgumentException(Resources.UnexpectedTypeError, nameof(node)); } } }
public int GetEntryNodeIndex(GuideNode guide) { Debug.Assert(guide != null); return(GuideNodes.IndexOf(guide)); }