Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public IGraphDebugData GetOrCreateChildGraphData(IGraphParentElement element)
        {
            if (!childrenGraphsData.TryGetValue(element, out var data))
            {
                data = new GraphDebugData(element.childGraph);
                childrenGraphsData.Add(element, data);
            }

            return(data);
        }
Ejemplo n.º 3
0
        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}.");
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public bool TryEnterParentElement(IGraphParentElement parentElement)
 {
     return(TryEnterParentElement(parentElement, out var error));
 }
Ejemplo n.º 6
0
 public new void EnterParentElement(IGraphParentElement parentElement)
 {
     base.EnterParentElement(parentElement);
 }
Ejemplo n.º 7
0
 public bool TryEnterParentElementUnsafe(IGraphParentElement parentElement)
 {
     return(TryEnterParentElement(parentElement, out var error, null, true));
 }
Ejemplo n.º 8
0
 public bool TryGetChildGraphData(IGraphParentElement element, out IGraphData data)
 {
     return(childrenGraphsData.TryGetValue(element, out data));
 }