public override void Initialize()
        {
            this.StartCoroutine(Coroutine());

            IEnumerator Coroutine()
            {
                yield return(CreatePool());

                yield return(GPSPositionManager.WaitForInitialization());

                yield return(GoogleMapsManager.WaitForInitialization());

                this.SetInstance(this);

                GPSPositionManager.Instance.OnGPSChanged += this.OnGPSChanged;

                if (GPSPositionManager.Instance.HasReceivedGPSData)
                {
                    this.OnGPSChanged(GPSPositionManager.Instance.CurrentLatLong);
                }
            }

            IEnumerator CreatePool()
            {
                // TODO [bgish]: Pool all the necessary game objects over multiple frames
                yield break;
            }
        }
        public static FlightDetail GetFlightDetail(AirportModel departureAirportModel, AirportModel arrivalAirportModel, AircraftModel aircraftModel)
        {
            var detail = new FlightDetail
            {
                DistanceInKm = GPSPositionManager.DistanceInKmBetween(departureAirportModel, arrivalAirportModel)
            };

            detail.FuelNeeded = detail.DistanceInKm * aircraftModel.ConsumptionPerKm + aircraftModel.TakeOffEffort;
            return(detail);
        }