private Connector(FlowObj flow, TaskObj taskFrom, Pin pinFrom, TaskObj taskTo, Pin pinTo) { Flow = flow; TaskFrom = taskFrom; PinFrom = pinFrom; TaskTo = taskTo; PinTo = pinTo; if (flow.Route != null) { points = new List <Point>(); var iterator = flow.Route.GetEnumerator(); while (iterator.MoveNext()) { var x = (int)iterator.Current; if (!iterator.MoveNext()) { Debug.WriteLine("Odd number of route coordinates, ignoring - {0}:{1}", taskFrom.TaskId, flow.Name); Points = null; break; } var y = (int)iterator.Current; points.Add(new Point(x, y)); } } Bounds = GetBounds(); connectors.Add(this); }
public static Connector Create(FlowObj flow, Pin pinFrom, Pin pinTo) { var taskFrom = pinFrom.Shape.Task; var taskTo = pinTo.Shape.Task; return(connectors.SingleOrDefault(c => c.TaskFrom == taskFrom && c.PinFrom == pinFrom) ?? new Connector(flow, taskFrom, pinFrom, taskTo, pinTo)); }