Inheritance: TrackMapRenderer, IKn5ObjectRenderer
        public static async Task Run(TrackObjectBase track) {
            var modelsFilename = track.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;
                }
            }

            Kn5 kn5;
            using (var waiting = new WaitingDialog()) {
                waiting.Report("Loading model…");
                kn5 = await Task.Run(() => modelsFilename != null ? Kn5.FromModelsIniFile(modelsFilename) : Kn5.FromFile(kn5Filename));
            }

            using (var renderer = new TrackMapPreparationRenderer(kn5)) {
                var wrapper = new TrackMapRendererWrapper(track, renderer);
                wrapper.Form.Icon = AppIconService.GetAppIcon();
                wrapper.Run();
            }
        }
 public TrackMapRendererWrapper(TrackObjectBase track, TrackMapPreparationRenderer renderer) : base(renderer, track.Name, 680, 680) {
     _helper = new AttachedHelper(this, new TrackMapRendererTools(track, renderer), 240);
 }