private void RefreshAll(PBSHighwayNode extraNode = null) { var relatedAreas = ConnectionHandler.InConnections .Concat(ConnectionHandler.OutConnections) .Select(c => c.TargetPbsObject).OfType <PBSHighwayNode>() .Select(n => new HighwaySegmentInfo { EndPosition = n.CurrentPosition, Radius = Math.Max(WorkRange, n.WorkRange), StatPosition = CurrentPosition }) .Select(si => si.BoundingArea()) .ToList(); if (extraNode != null) { var s = new HighwaySegmentInfo { EndPosition = extraNode.CurrentPosition, Radius = Math.Max(WorkRange, extraNode.WorkRange), StatPosition = CurrentPosition }; var area = s.BoundingArea(); relatedAreas.Add(area); } Zone.HighwayHandler.SubmitMore(relatedAreas); }
public List <HighwaySegmentInfo> GetOutgoingLiveSegments() { var mySegments = new List <HighwaySegmentInfo>(); if (!IsGoodHighwayTarget()) { return(mySegments); } foreach (var connectedHighwayNode in GetConnectedHighwayTargets()) { if (!connectedHighwayNode.IsGoodHighwayTarget()) { continue; } var i = new HighwaySegmentInfo() { StatPosition = CurrentPosition, EndPosition = connectedHighwayNode.CurrentPosition, Radius = Math.Max(WorkRange, connectedHighwayNode.WorkRange) }; mySegments.Add(i); } return(mySegments); }