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); }
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}."); } }
public bool TryGetElementData(IGraphElementWithData element, out IGraphElementData data) { return(elementsData.TryGetValue(element, out data)); }