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();
}