public void AddOrUpdateLine(DataLine dataLine, int stamp) { try { Node source = modelDatabase.GetNode(dataLine.Source); if (!TryGetTarget(dataLine, out Node target)) { return; } if (TryGetLine(source, target, out Line line)) { // Already added link line.Stamp = stamp; if (dataLine.Points == null) { if (modelDatabase.TryGetSavedLine(source.Name, target.Name, out DataLine savedLine)) { line.View.Points.InsertRange(1, savedLine.Points); } } return; } AddLine(source, target, dataLine.LinkCount, dataLine.Points); } catch (Exception e) { Log.Exception(e, $"Failed to update link {dataLine}"); throw; } }
public void AddOrUpdateLink(DataLink dataLink, int stamp) { try { Node source = modelService.GetNode(dataLink.Source); if (!TryGetTarget(dataLink, out Node target)) { modelService.QueueNode(new DataNode(dataLink.Target, null, dataLink.TargetType)); return; } target.Stamp = stamp; if (TryGetLink(source, target, out Link link)) { // Already added link link.Stamp = stamp; return; } link = AddLink(source, target); link.Stamp = stamp; if (!dataLink.IsAdded) { AddLinkToLines(link); } } catch (Exception e) { Log.Exception(e, $"Failed to update link {dataLink}"); throw; } }