예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 public bool TryGetNode(TimelineRecord record, [NotNullWhen(true)] out TimelineNode?node) =>
 IdToNodeMap.TryGetValue(record.Id, out node);
예제 #4
0
 public bool TryGetNode(string id, [NotNullWhen(true)] out TimelineNode?node) =>
 IdToNodeMap.TryGetValue(id, out node);
예제 #5
0
 public bool IsPhase(string id) =>
 IdToNodeMap.TryGetValue(id, out var node) &&
 node.TimelineRecord.Type == "Phase";