Example #1
0
        public static async Task Run(TrackObjectBase track)
        {
            var modelsFilename = track.ModelsFilename;

            Logging.Debug(modelsFilename);

            string kn5Filename = null;

            if (!File.Exists(modelsFilename))
            {
                modelsFilename = null;
                kn5Filename    = Path.Combine(track.Location, track.Id + ".kn5");
                if (!File.Exists(kn5Filename))
                {
                    ModernDialog.ShowMessage("Model not found");
                    return;
                }
            }

            TrackMapPreparationRenderer renderer = null;

            try {
                using (WaitingDialog.Create("Loading model…")) {
                    renderer = modelsFilename == null ?
                               new TrackMapPreparationRenderer(await Task.Run(() => Kn5.FromFile(kn5Filename))) :
                               new TrackMapPreparationRenderer(await Task.Run(() => TrackComplexModelDescription.CreateLoaded(modelsFilename)));
                }

                var wrapper = new TrackMapRendererWrapper(track, renderer);
                wrapper.Form.Icon = AppIconService.GetAppIcon();
                wrapper.Run();
            } finally {
                renderer?.Dispose();
            }
        }
Example #2
0
        private static async Task RunInner(TrackObjectBase track, bool aiLane)
        {
            string modelsFilename = null, kn5Filename = null, aiLaneFilename = null;

            if (!aiLane)
            {
                modelsFilename = track.ModelsFilename;
                if (!File.Exists(modelsFilename))
                {
                    modelsFilename = null;
                    kn5Filename    = Path.Combine(track.Location, track.Id + ".kn5");
                    if (!File.Exists(kn5Filename))
                    {
                        ModernDialog.ShowMessage("Model not found");
                        return;
                    }
                }
            }
            else
            {
                aiLaneFilename = track.AiLaneFastFilename;
                if (!File.Exists(aiLaneFilename))
                {
                    ModernDialog.ShowMessage("AI lane not found");
                    return;
                }
            }

            await PrepareAsync();

            TrackMapPreparationRenderer renderer = null;

            try {
                using (WaitingDialog.Create("Loading model…")) {
                    renderer = aiLaneFilename == null ?
                               modelsFilename == null ?
                               new TrackMapPreparationRenderer(await Task.Run(() => Kn5.FromFile(kn5Filename))) :
                               new TrackMapPreparationRenderer(await Task.Run(() => TrackComplexModelDescription.CreateLoaded(modelsFilename))) :
                               new TrackMapPreparationRenderer(await Task.Run(() => AiSpline.FromFile(aiLaneFilename)));
                }

                var wrapper = new TrackMapRendererWrapper(track, renderer);
                wrapper.Form.Icon = AppIconService.GetAppIcon();
                wrapper.Run();
            } catch (Exception e) {
                NonfatalError.Notify("Can’t update map", e);
            } finally {
                renderer?.Dispose();
            }
        }