private static DarkKn5ObjectRenderer CreateRenderer([NotNull] string acRoot, [NotNull] DarkPreviewsOptions options, [CanBeNull] CarDescription initialCar, [CanBeNull] string initialSkinId) { var renderer = new DarkKn5ObjectRenderer(initialCar, GetShowroomKn5(acRoot, options.Showroom)) { LoadCarLights = true, LoadShowroomLights = true }; SetRendererOptions(acRoot, renderer, options); renderer.SelectSkin(initialSkinId); renderer.Initialize(); SetRendererCarOptions(renderer, options); return(renderer); }
/// <summary> /// Update preview. /// </summary> /// <param name="carId">Car ID.</param> /// <param name="skinId">Skin ID.</param> /// <param name="destination">Destination filename.</param> /// <param name="carData">Car data (provide it only if it’s already loaded, so Updater won’t load it again).</param> /// <param name="information">Some lines for EXIF data, optional.</param> /// <param name="callback">Callback in sync version? Because, with Delayed Convertation enabled, even sync version is not so sync.</param> public void Shot([NotNull] string carId, [NotNull] string skinId, string destination = null, DataWrapper carData = null, ImageUtils.ImageInformation information = null, Action callback = null) { if (_carId != carId) { if (_renderer == null) { _renderer = CreateRenderer(_acRoot, _options, GetCarDescription(carId, carData), skinId); } else { _renderer.MainSlot.SetCar(GetCarDescription(carId, carData), skinId); } _carId = carId; UpdateCamera(); } else { _renderer.SelectSkin(skinId); } _renderer.OnTick(float.MaxValue); ShotInner(carId, skinId, destination, information, callback); }
private static DarkKn5ObjectRenderer CreateRenderer(string acRoot, DarkPreviewsOptions options, CarDescription initialCar, string initialSkinId) { var showroom = options.Showroom; if (showroom != null && !File.Exists(showroom)) { var kn5 = Path.Combine(FileUtils.GetShowroomDirectory(acRoot, showroom), $"{showroom}.kn5"); showroom = File.Exists(kn5) ? kn5 : null; } var renderer = new DarkKn5ObjectRenderer(initialCar, showroom); SetRendererOptions(renderer, options); renderer.SelectSkin(initialSkinId); renderer.Initialize(); SetRendererCarOptions(renderer, options); return(renderer); }