コード例 #1
0
ファイル: AssetManager.cs プロジェクト: plavip/UnityAM
            private void HandleAsyncLoader()
            {
                AsynchronousAssetLoader asyncLoader = (AsynchronousAssetLoader)loader;

                if (!depsLoaded)
                {
                    if (!depsStarted)
                    {
                        ThreadPool.QueueUserWorkItem(LoadDeps);
                        depsStarted = true;
                    }
                }
                else
                {
                    if (!asyncStarted)
                    {
                        ThreadPool.QueueUserWorkItem(LoadAsync);
                        asyncStarted = true;
                    }
                    else if (asyncDone)
                    {
                        asset = asyncLoader.LoadSync(manager, descriptor.Path, Resolve(loader, descriptor), descriptor.Params);
                    }
                }
            }
コード例 #2
0
ファイル: AssetManager.cs プロジェクト: plavip/UnityAM
            /// <summary>
            /// Loads parts of the asset asynchronously, if the loader is an AsynchronousLoader.
            /// </summary>
            private void LoadAsync(System.Object threadContext)
            {
                try {
                    AsynchronousAssetLoader asyncLoader = (AsynchronousAssetLoader)loader;

                    if (depsLoaded)
                    {
                        asyncLoader.LoadAsync(manager, descriptor.Path, Resolve(loader, descriptor), descriptor.Params);

                        asyncDone = true;
                    }
                }
                catch (Exception ex) {
                    exception = ex;
                }
            }
コード例 #3
0
ファイル: AssetManager.cs プロジェクト: plavip/UnityAM
            /// <summary>
            /// Inject dependencies for loading. The tasks will be injected before the current one, and will be processed first.
            /// </summary>
            private void LoadDeps(System.Object threadContext)
            {
                try {
                    AsynchronousAssetLoader asyncLoader = (AsynchronousAssetLoader)loader;

                    dependencies = asyncLoader.GetDependencies(manager, descriptor.Path, Resolve(loader, descriptor), descriptor.Params);
                    if (dependencies != null)
                    {
                        manager.InjectDependencies(descriptor, dependencies);
                    }

                    depsLoaded = true;
                }
                catch (Exception ex) {
                    exception = ex;
                }
            }