public bool TryGetParent(TimelineRecord record, [NotNullWhen(true)] out TimelineRecord?parent) { if (IdToNodeMap.TryGetValue(record.Id, out var node) && node.ParentNode is object) { parent = node.ParentNode.TimelineRecord; return(true); } parent = null; return(false); }
private bool TryFindUp(string id, Func <TimelineNode, bool> predicate, [NotNullWhen(true)] out TimelineNode?node) { node = null; if (!IdToNodeMap.TryGetValue(id, out var current)) { return(false); } do { if (predicate(current)) { node = current; return(true); } current = current.ParentNode; } while (current is object); return(false); }
public bool TryGetNode(TimelineRecord record, [NotNullWhen(true)] out TimelineNode?node) => IdToNodeMap.TryGetValue(record.Id, out node);
public bool TryGetNode(string id, [NotNullWhen(true)] out TimelineNode?node) => IdToNodeMap.TryGetValue(id, out node);
public bool IsPhase(string id) => IdToNodeMap.TryGetValue(id, out var node) && node.TimelineRecord.Type == "Phase";