public ViewModel([NotNull] ToolsKn5ObjectRenderer renderer, CarObject carObject, string skinId) { if (renderer == null) throw new ArgumentNullException(nameof(renderer)); Renderer = renderer; renderer.PropertyChanged += Renderer_PropertyChanged; renderer.Tick += Renderer_Tick; Car = carObject; Skin = skinId == null ? Car.SelectedSkin : Car.GetSkinById(skinId); Car.SkinsManager.EnsureLoadedAsync().Forget(); Saveable = new SaveHelper<SaveableData>("__LiteShowroomTools", () => new SaveableData { AmbientShadowDiffusion = AmbientShadowDiffusion, AmbientShadowBrightness = AmbientShadowBrightness, AmbientShadowIterations = AmbientShadowIterations, AmbientShadowHideWheels = AmbientShadowHideWheels, AmbientShadowFade = AmbientShadowFade, LiveReload = Renderer.LiveReload, }, o => { AmbientShadowDiffusion = o.AmbientShadowDiffusion; AmbientShadowBrightness = o.AmbientShadowBrightness; AmbientShadowIterations = o.AmbientShadowIterations; AmbientShadowHideWheels = o.AmbientShadowHideWheels; AmbientShadowFade = o.AmbientShadowFade ?? true; Renderer.LiveReload = o.LiveReload; }, () => { Reset(false); }); Saveable.Initialize(); }