Example #1
0
        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));
 }
Example #3
0
 public EnterExitEventDetectedArgs(EnterExitEvent e)
 {
     Event = e;
 }