public void StartCapturing(CaptureJob captureJob) { Capturing = true; currentCaptureJob = captureJob; pngs.Clear(); AnimationController = AssetBundlesLoader.CaptureParents[currentCaptureJob.slotIndex].GetComponent <AnimationController>(); AnimationController.AnimationFinished += HandleAnimationFinished; AnimationController.Init(); Logger.Log($"Start rendering job {currentCaptureJob.Guid} with settings {GifWidth}x{GifHeight} capture time {AnimationController.AnimationDuration}"); }
void AssignSlot(CaptureJob job) { for (int i = 0; i < availableSlots.Length; i++) { if (availableSlots[i]) { job.slotIndex = i; availableSlots[i] = false; return; } } throw new Exception("All slots are busy."); }
void JobAction(CaptureJob job) { try { AssignSlot(job); UnityMainThreadDispatcher.Instance().Enqueue(() => { var shield = AssetBundlesLoader.GenerateRandomShield(new Vector3(SpawnX, SpawnY + job.slotIndex * SpacingPerCamera, SpawnZ), job.slotIndex); //Save shield selection File.WriteAllText($"{job.UserId}.shield", JsonUtility.ToJson(shield)); GifCaptureManagers[job.slotIndex].StartCapturing(job); }); } catch (Exception) { job.Status = CaptureJobStatus.Error; } }