Beispiel #1
0
        private async Task <GeneratePathResult> GeneratePath(Vector3 start, Vector3 end)
        {
            CurrentPath = new FlightPath(start, end, flightNavigationArgs);

            FlightPath path;

            if (FlightPath.Paths.TryGetValue(CurrentPath.Key, out path))
            {
                CurrentPath = path;

                return(GeneratePathResult.SuccessUseExisting);
            }

            if (await CurrentPath.BuildPath())
            {
                if (CurrentPath.Count > 0)
                {
                    FlightPath.Paths[CurrentPath.Key] = CurrentPath;

                    return(GeneratePathResult.Success);
                }
            }

            logger.Error(
                Localization.Localization.FlightEnabledNavigator_NoPath);
            Clear();

            return(GeneratePathResult.Success);
        }
        private async Task <GeneratePathResult> GeneratePath(Vector3 start, Vector3 end)
        {
            CurrentPath = new FlightPath(start, end, flightNavigationArgs);

            FlightPath path;

            if (FlightPath.Paths.TryGetValue(CurrentPath.Key, out path))
            {
                CurrentPath = path;

                return(GeneratePathResult.SuccessUseExisting);
            }

            if (await CurrentPath.BuildPath())
            {
                if (CurrentPath.Count > 0)
                {
                    FlightPath.Paths[CurrentPath.Key] = CurrentPath;

                    return(GeneratePathResult.Success);
                }
            }

            logger.Error(
                Localization.Localization.FlightEnabledNavigator_NoPath);
            Clear();

            Navigator.NavigationProvider = innerNavigator;
#pragma warning disable 4014
            Task.Factory.StartNew(
#pragma warning restore 4014
                () =>
            {
                Thread.Sleep(10000);
                logger.Info(Localization.Localization.FlightEnabledNavigator_ResetNavigatonProvider);
                Navigator.NavigationProvider = this;
            });

            return(GeneratePathResult.Failed);
        }