Пример #1
0
        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));
        }
Пример #2
0
        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);
                    });
                }
            }
        }