public IGraphData CreateChildGraphData(IGraphParentElement element) { // Debug.Log($"Creating child graph data for {element}"); if (childrenGraphsData.ContainsKey(element)) { throw new InvalidOperationException($"Graph data already contains child graph data for {element}."); } IGraphData childGraphData; if (phantomChildrenGraphsData.TryGetValue(element.guid, out childGraphData)) { // Debug.Log($"Restoring phantom child graph data for {element}."); phantomChildrenGraphsData.Remove(element.guid); } else { childGraphData = element.childGraph.CreateData(); } childrenGraphsData.Add(element, childGraphData); return(childGraphData); }
public IGraphDebugData GetOrCreateChildGraphData(IGraphParentElement element) { if (!childrenGraphsData.TryGetValue(element, out var data)) { data = new GraphDebugData(element.childGraph); childrenGraphsData.Add(element, data); } return(data); }
public void FreeChildGraphData(IGraphParentElement element) { // Debug.Log($"Freeing child graph data for {element}"); if (childrenGraphsData.TryGetValue(element, out var childGraphData)) { childrenGraphsData.Remove(element); phantomChildrenGraphsData.Add(element.guid, childGraphData); } else { Debug.LogWarning($"Graph data does not contain child graph data to free for {element}."); } }
public GraphReference ChildReference(IGraphParentElement parentElement, bool ensureValid, int?maxRecursionDepth = null) { var pointer = Clone(); if (!pointer.TryEnterParentElement(parentElement, out var error, maxRecursionDepth)) { if (ensureValid) { throw new GraphPointerException(error, this); } else { return(null); } } pointer.Hash(); return(pointer); }
public bool TryEnterParentElement(IGraphParentElement parentElement) { return(TryEnterParentElement(parentElement, out var error)); }
public new void EnterParentElement(IGraphParentElement parentElement) { base.EnterParentElement(parentElement); }
public bool TryEnterParentElementUnsafe(IGraphParentElement parentElement) { return(TryEnterParentElement(parentElement, out var error, null, true)); }
public bool TryGetChildGraphData(IGraphParentElement element, out IGraphData data) { return(childrenGraphsData.TryGetValue(element, out data)); }