예제 #1
0
        public virtual void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
        {
            int  objectsToLoad = _loadables.Count;
            int  objectsLoaded = 0;
            bool hasError      = false;

            LoadSuccess onComplete = () =>
            {
                if (++objectsLoaded >= objectsToLoad)
                {
                    onLoadSuccess();
                }
            };
            LoadError onError = (e) =>
            {
                if (!hasError)
                {
                    onLoadError(e);
                }

                hasError = true;
            };

            if (_loadables.Count == 0)
            {
                TaskProvider.Instance.DelayedAction(() => onComplete());
            }
            else
            {
                foreach (ILoadableObject loadable in _loadables)
                {
                    loadable.LoadAsync(onComplete, onError);
                }
            }
        }
예제 #2
0
        public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
        {
            LoaderGroup loaderGroup = new LoaderGroup();

            PopulatedLoadGroup(loaderGroup);
            loaderGroup.LoadAsync(onLoadSuccess, onLoadFailed);
        }
예제 #3
0
        public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
        {
            try
            {
                // Load asset from assetBundle.
                string fileName = System.IO.Path.GetFileNameWithoutExtension(_path);
                AssetBundleLoadAssetOperation request = AssetBundleManager.LoadAssetAsync(_bundle, fileName, typeof(UnityEngine.Object));

                if (request == null)
                {
                    return;
                }

                TaskProvider.Instance.RunTask(request, () =>
                {
                    _asset   = request.GetAsset <UnityEngine.Object>();
                    IsLoaded = true;

                    if (_asset is ILoadableObject)
                    {
                        (_asset as ILoadableObject).LoadAsync(onLoadSuccess, onLoadError);
                    }
                    else
                    {
                        onLoadSuccess();
                    }
                });
            }
            catch (Exception e)
            {
                onLoadError(new LoadException(e.ToString(), e));
            }
        }
예제 #4
0
 public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     _action.Invoke(() =>
     {
         IsLoaded = true;
         onLoadSuccess();
     }, onLoadError);
 }
        protected override void InternalLoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
        {
            LoadSourceDataAsync((source) =>
            {
                PopulateData(source, ref _dataLookup);

                onLoadSuccess();
            }, onLoadFailed);
        }
예제 #6
0
 public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     List <LoaderGroup> .Enumerator groups = _groups.GetEnumerator();
     if (groups.MoveNext())
     {
         groups.Current.LoadAsync(() => { GroupLoaded(groups, onLoadSuccess, onLoadError); }, onLoadError);
     }
     else
     {
         TaskProvider.Instance.DelayedAction(() => onLoadSuccess());
     }
 }
예제 #7
0
        public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
        {
            LoaderGroup loaderGroup = new LoaderGroup();

            loaderGroup.AppendProvider(_loaderGroup);
            PopulatedLoadGroup(loaderGroup);
            loaderGroup.LoadAsync(() =>
            {
                IsLoaded = true;
                onLoadSuccess();
            }, onLoadFailed);
        }
예제 #8
0
 private void GroupLoaded(List <LoaderGroup> .Enumerator groups, LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     if (groups.MoveNext())
     {
         groups.Current.LoadAsync(() => { GroupLoaded(groups, onLoadSuccess, onLoadError); }, onLoadError);
     }
     else
     {
         groups.Dispose();
         TaskProvider.Instance.DelayedAction(() => onLoadSuccess());
     }
 }
예제 #9
0
 protected override void InternalLoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
 {
     try
     {
         _pandeaGameConfigurationData = Resources.Load <PandeaGameConfigurationData>(PandeaGameConfigurationDataPath);
         _pandeaGameConfigurationData.LoadAsync(onLoadSuccess, onLoadFailed);
     }
     catch (Exception e)
     {
         onLoadFailed(new LoadException("Failed to load game data.", e));
         throw;
     }
 }
        private void DoLoad(LoadSuccess onLoadSuccess, LoadError onLoadError, int i)
        {
            _loadables[i].LoadAsync(() =>
            {
                i++;

                if (i < _loadables.Count)
                {
                    DoLoad(onLoadSuccess, onLoadError, i);
                }
                else
                {
                    onLoadSuccess();
                }
            }, onLoadError);
        }
예제 #11
0
 public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
 {
     if (_list != null)
     {
         int loaded = 0;
         _list.ForEach((weakReference) =>
         {
             weakReference.LoadAssetAsync <T>((data, reference) =>
             {
                 if (++loaded >= _list.Count)
                 {
                     IsLoaded = true;
                     onLoadSuccess();
                 }
             }, (exception) => { onLoadFailed(new LoadException("Failed to load asset in list.", exception)); });
         });
     }
 }
예제 #12
0
        public void LoadAsync(LoadSuccess onComplete, LoadError onError)
        {
            WeakReference[] weakReferences     = WeakReferences();
            int             assetCount         = weakReferences.Length;
            int             totalLoadsRequired = assetCount + 1;
            int             loadsCompleted     = 0;
            bool            hasFailed          = false;

            Action <WeakReference> assetLoaded = (reference) =>
            {
                if (++loadsCompleted >= totalLoadsRequired)
                {
                    onComplete();
                }
            };


            LoadSuccess adjunctLoaded = () =>
            {
                if (++loadsCompleted >= totalLoadsRequired)
                {
                    onComplete();
                }
            };

            Action <WeakReferenceException> assetLoadFailed = (e) =>
            {
                if (!hasFailed)
                {
                    onError(new LoadException("Failed to load references", e));
                }

                hasFailed = true;
            };


            foreach (WeakReference reference in weakReferences)
            {
                reference.LoadAssetAsync(assetLoaded, assetLoadFailed);
            }

            AdjunctLoad(adjunctLoaded, onError);
        }
        public static Task LoadPageAsync() => Task.Run(() =>
        {
            try
            {
                IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(Address), Port);

                using (TcpClient client = new TcpClient())
                {
                    client.Connect(ipPoint);
                    BinaryReader br           = new BinaryReader(client.GetStream());
                    int size                  = br.ReadInt32();
                    BinaryFormatter formatter = new BinaryFormatter();
                    var resultArr             = formatter.Deserialize(new MemoryStream(br.ReadBytes(size))) as GameInfo[];
                    LoadSuccess?.Invoke(resultArr);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Не удалось получить данные от сервера.\n" + ex.Message);
            }
        });
예제 #14
0
        public override void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
        {
            try
            {
                AsyncOperation asyncLoad =
                    SceneManager.LoadSceneAsync(_sceneName, LoadSceneMode.Additive);

                asyncLoad.completed += (operation) =>
                {
                    _scene = SceneManager.GetSceneByName(_sceneName);

                    /*foreach (GameObject go in _scene.GetRootGameObjects())
                     * {
                     *  go.transform.SetParent(GetTransform());
                     * }*/

                    onLoadSuccess();
                };
            }
            catch (Exception e)
            {
                onLoadError(new LoadException("There was a problem loading scene data", e));
            }
        }
예제 #15
0
 public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     LoadAssetAsync(WeakReference => onLoadSuccess(), (e) => onLoadError(new LoadException("Problem loading asset", e)));
 }
예제 #16
0
 protected override void InternalLoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
 {
     staticData = GameResources.Instance.SynchronousStaticData;
     staticData.LoadAsync(onLoadSuccess, onLoadFailed);
 }
예제 #17
0
 public virtual void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     onLoadSuccess();
 }
예제 #18
0
 protected virtual void AdjunctLoad(LoadSuccess onComplete, LoadError onError)
 {
     onComplete();
 }
예제 #19
0
 protected abstract void InternalLoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed);
예제 #20
0
 public void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
 {
     InternalLoadAsync(() => { IsLoaded = true;
                               onLoadSuccess(); }, onLoadFailed);
 }
 public abstract void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed);
 public override void LoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     DoLoad(onLoadSuccess, onLoadError);
 }
 private void DoLoad(LoadSuccess onLoadSuccess, LoadError onLoadError)
 {
     DoLoad(onLoadSuccess, onLoadError, 0);
 }
 protected override void InternalLoadAsync(LoadSuccess onLoadSuccess, LoadError onLoadFailed)
 {
     onLoadSuccess();
 }
예제 #25
0
 public void OnLoadSuccess(EventArgs e)
 {
     LoadSuccess?.Invoke(this, e);
 }