예제 #1
0
        public CoroutineHandler StartHandler(IEnumerator rIEnum)
        {
            var rCourtineObj          = UtilTool.CreateGameObject(this.mCoroutineRootObj, "coroutine");
            CoroutineHandler rHandler = rCourtineObj.ReceiveComponent <CoroutineHandler>();

            rHandler.StartHandler(rIEnum);
            return(rHandler);
        }
예제 #2
0
 public void Stop(CoroutineHandler rCoroutineHandler)
 {
     if (rCoroutineHandler != null)
     {
         rCoroutineHandler.StopAllCoroutines();
         GameObject.DestroyImmediate(rCoroutineHandler.gameObject);
         rCoroutineHandler.Coroutine = null;
     }
     rCoroutineHandler = null;
 }
예제 #3
0
 public IAsyncOperation <T> Start(IEnumerator rIEnum, Action <float> rProgressAction = null)
 {
     this.mAsyncResult = new AsyncCompletionSource <T>();
     this.mHandler     = CoroutineManager.Instance.StartHandler(rIEnum);
     this.mAsyncResult.AddCompletionCallback((rContinuation) =>
     {
         if (rContinuation.IsCanceled || rContinuation.IsFaulted)
         {
             CoroutineManager.Instance.Stop(this.mHandler);
         }
     });
     if (rProgressAction != null)
     {
         this.mAsyncResult.AddProgressCallback(rProgressAction);
     }
     return(this.mAsyncResult.Operation);
 }
예제 #4
0
 public CoroutineRequest <T> Start(IEnumerator rIEnum)
 {
     this.Handler = CoroutineManager.Instance.StartHandler(rIEnum);
     return(this);
 }