public static async Task StartFancyAsync(string kn5, string skinId = null, string showroomKn5 = null) {
if (_starting) return;
_starting = true;
_last?.Stop();
_last = null;
Kn5ObjectRenderer renderer = null;
try {
FancyShowroomWrapper wrapper;
using (var waiting = new WaitingDialog()) {
waiting.Report(ControlsStrings.CustomShowroom_Loading);
renderer = await Task.Run(() => new Kn5ObjectRenderer(kn5, showroomKn5));
renderer.UseFxaa = SettingsHolder.CustomShowroom.LiteUseFxaa;
wrapper = new FancyShowroomWrapper(renderer);
if (skinId != null) {
renderer.SelectSkin(skinId);
}
_last = wrapper;
SetProperties(wrapper, renderer);
wrapper.Form.Icon = AppIconService.GetAppIcon();
}
wrapper.Run(() => _starting = false);
} catch (Exception e) {
NonfatalError.Notify(ControlsStrings.CustomShowroom_CannotStart, e);
} finally {
renderer?.Dispose();
_last = null;
}
}