Esempio n. 1
0
        private async Task <ASSET_DIC> LoadAssets(ILoader <object> loading, List <string> resources)
        {
            async Task <Tuple <string, AssetRef> > LoadFunc(string path)
            {
                var go = await MVP.Framework.Resource.instance.LoadAsync(path, BuildOption(loading));

                return(Tuple.Create(path, go));
            };

            var tasks = new List <IObservable <Tuple <string, AssetRef> > >();

            tasks = resources.Aggregate(tasks, (data, it) =>
            {
                data.Add(ObservableTask.Create(LoadFunc(it)));
                return(data);
            });
            var results = await tasks.WhenAll();

            return(results.ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2));
        }
Esempio n. 2
0
        private async Task <Tuple <ASSET_DIC, AsyncOperation> > Load(ILoader <object> loading, List <string> resources)
        {
            async Task <Tuple <string, object> > LoadAssetsFunc()
            {
                var result = await LoadAssets(loading, resources);

                return(Tuple.Create("assets", result as object));
            };

            async Task <Tuple <string, object> > LoadSceneFunc()
            {
                var result = await Scene.instance.Load(this.name, BuildOption(loading));

                return(Tuple.Create("scene", result as object));
            };

            var tasks = new List <IObservable <Tuple <string, object> > >();

            tasks.Add(ObservableTask.Create(LoadAssetsFunc()));
            tasks.Add(ObservableTask.Create(LoadSceneFunc()));
            var loaders = await tasks.WhenAll();

            ASSET_DIC assetDic = null; AsyncOperation asyncOperation = null;

            foreach (var loader in loaders)
            {
                if (loader.Item1.Equals("assets"))
                {
                    assetDic = loader.Item2 as ASSET_DIC;
                }
                if (loader.Item1.Equals("scene"))
                {
                    asyncOperation = loader.Item2 as AsyncOperation;
                }
            }

            return(Tuple.Create(assetDic, asyncOperation));
        }