Пример #1
0
        private async Task Run(params object[] args)
        {
            Func <ILoader <object>, Task <object> > load = async(loader) => await Load(loader, resources);

            var loading      = (await Scene.instance.Run("Loading", load)) as ILoader <object>;
            var loaderAssets = await loading.Get() as Tuple <ASSET_DIC, AsyncOperation>;

            this.assets = loaderAssets.Item1;

            var data = new SceneData()
            {
                name      = name,
                args      = args,
                operation = loaderAssets.Item2,
                option    = new LoadingOption()
                {
                    block = false
                },
            };
            await Scene.instance.Run(data);
        }
Пример #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));
        }
Пример #3
0
 private Loader(string name, List <string> resources)
 {
     this.name      = name;
     this.resources = resources;
     this.assets    = new Dictionary <string, AssetRef>();
 }