public AsyncOperationEnumerator <Delighting.IProcessOperation> ProcessAsync(Delighting.ProcessArgs args) { var error = ValidateInputs(); if (error != Delighting.ErrorCode.NoErrors) { var result = new AsyncOperationEnumerator <Delighting.IProcessOperation>(null, 0); var width = 0; var height = 0; if (vm.baseTexture != null) { width = vm.baseTexture.width; height = vm.baseTexture.height; } result.SetError(new Delighting.ProcessException(error, "Error during process", width, height)); return(result); } var e = DoProcess(args, true); var stepCount = 0; while (e.MoveNext()) { ++stepCount; } return(new AsyncOperationEnumerator <Delighting.IProcessOperation>(DoProcess(args, false), stepCount)); }
public AsyncOperationEnumerator <Delighting.ILoadAssetFolderOperation> LoadInputFolderAsync(string inputFolderPath) { if (!AssetDatabase.IsValidFolder(inputFolderPath)) { throw new ArgumentException("inputFolderPath is not a valid asset folder"); } var assetPaths = Directory.GetFiles(inputFolderPath, "*", SearchOption.TopDirectoryOnly); var result = new AsyncOperationEnumerator <Delighting.ILoadAssetFolderOperation>(LoadAssets(assetPaths), assetPaths.Length); return(result); }
void Update() { if (m_LoadAssetFolderOperation != null && !m_LoadAssetFolderOperation.MoveNext()) { m_LoadAssetFolderOperation = null; } if (m_ProcessOperation != null && !m_ProcessOperation.MoveNext()) { if (m_ProcessOperation.error != null) { m_PendingOperations &= ~PendingOperation.RenderPreview; var errors = GetErrorMessagesFrom(((Delighting.ProcessException)m_ProcessOperation.error).errorCode); for (int i = 0; i < errors.Count; i++) { Debug.LogError(errors[i]); } } else { if (m_FitToPreviewAfterProcess) { m_PendingOperations |= PendingOperation.FitPreviewToWindow; m_FitToPreviewAfterProcess = false; } m_PendingOperations |= PendingOperation.RenderPreview; } m_ProcessOperation = null; // Trigger the process operation with current process step SetProcessStep(m_FromProcessStep); } if ((m_PendingOperations & PendingOperation.RenderPreview) != 0) { m_PendingOperations &= ~PendingOperation.RenderPreview; if (m_Service.ValidateInputs() == Delighting.ErrorCode.NoErrors) { m_Service.RenderPreview(); } } if ((m_PendingOperations & PendingOperation.FitPreviewToWindow) != 0) { m_PendingOperations &= ~PendingOperation.FitPreviewToWindow; fitCanvasToWindow = true; } }
void UpdatePendingOperations() { m_UpdateRequested = false; if ((m_PendingOperations & PendingOperation.LoadInputFolder) != 0) { m_PendingOperations &= ~PendingOperation.LoadInputFolder; if (m_LoadAssetFolderOperation != null) { Debug.LogWarning("A folder is already being loaded, ignoring request to load a folder"); } else { m_LoadAssetFolderOperation = m_Service.LoadInputFolderAsync(inputFolderPath); m_LoadAssetFolderOperation.OnProgress(progress => { loadingShow = true; loadingProgress = progress; loadingContent = string.Format("Loading folder: {0:P2}", progress); }); m_LoadAssetFolderOperation.OnComplete(result => { m_Service.Reset(); m_Service.SetInput(result); m_FitToPreviewAfterProcess = true; SetProcessStep(Delighting.ProcessStep.Gather); pendingOperation |= PendingOperation.Process; }); m_LoadAssetFolderOperation.OnError(e => { loadingShow = false; Debug.LogException(e); }); } } if ((m_PendingOperations & PendingOperation.Process) != 0 && m_ProcessOperation == null) { m_PendingOperations &= ~PendingOperation.Process; if (m_FromProcessStep != Delighting.ProcessStep.None) { m_ProcessOperation = m_Service.ProcessAsync(new Delighting.ProcessArgs { fromStep = m_FromProcessStep, calculateResult = false }); m_FromProcessStep = Delighting.ProcessStep.None; m_ProcessOperation.OnProgress(progress => { loadingShow = true; loadingProgress = progress; loadingContent = string.Format("De-Lighting: {0:P2}", progress); }); m_ProcessOperation.OnComplete(result => { loadingShow = false; loadingProgress = 1; }); m_ProcessOperation.OnError(e => { loadingShow = false; loadingProgress = 1; Debug.LogException(e); }); } } }