示例#1
0
        public IGraphElementData CreateElementData(IGraphElementWithData element)
        {
            // Debug.Log($"Creating element data for {element}");

            if (elementsData.ContainsKey(element))
            {
                throw new InvalidOperationException($"Graph data already contains element data for {element}.");
            }

            IGraphElementData elementData;

            if (phantomElementsData.TryGetValue(element.guid, out elementData))
            {
                // Debug.Log($"Restoring phantom element data for {element}.");
                phantomElementsData.Remove(element.guid);
            }
            else
            {
                elementData = element.CreateData();
            }

            elementsData.Add(element, elementData);

            return(elementData);
        }
示例#2
0
        public void FreeElementData(IGraphElementWithData element)
        {
            // Debug.Log($"Freeing element data for {element}");

            if (elementsData.TryGetValue(element, out var elementData))
            {
                elementsData.Remove(element);
                phantomElementsData.Add(element.guid, elementData);
            }
            else
            {
                Debug.LogWarning($"Graph data does not contain element data to free for {element}.");
            }
        }
示例#3
0
 public bool TryGetElementData(IGraphElementWithData element, out IGraphElementData data)
 {
     return(elementsData.TryGetValue(element, out data));
 }