private void OnAirspaceContentUpdated(object sender, FlightTracksUpdatedEventArgs e) { var newflights = e.UpdatedFlights; if (newflights.Count > 0 || previous.Count > 0) { //Check for enter events foreach (var newf in newflights) { if (!previous.Any(x => x.GetTag() == newf.GetTag())) { EnterExitEvent newevent = new EnterExitEvent(newf, true); EnterExitEventDetected?.Invoke(this, new EnterExitEventDetectedArgs(newevent)); } } //Check for exit events foreach (var oldf in previous) { if (!newflights.Any(x => x.GetTag() == oldf.GetTag())) { EnterExitEvent newevent = new EnterExitEvent(oldf, false); EnterExitEventDetected?.Invoke(this, new EnterExitEventDetectedArgs(newevent)); } } } previous.Clear(); previous.AddRange(newflights); }
public void Deactivate(object o, ElapsedEventArgs args, EnterExitEvent ae) { ScheduledDeactivationsCount--; ActiveEvents.Remove(ae); EnterExitEventsUpdated?.Invoke(this, new EnterExitEventsUpdatedEventArgs(ActiveEvents)); }
public EnterExitEventDetectedArgs(EnterExitEvent e) { Event = e; }