// Update is called once per frame
        void Update()
        {
            if (mDic.Count == 0)
            {
                return;
            }

            Dictionary <AsyncOperation, TimerInfo> .Enumerator iter = mDic.GetEnumerator();

            while (iter.MoveNext())
            {
                if (iter.Current.Value != null)
                {
                    if (iter.Current.Value.target != null)
                    {
                        OnTimerEvent(iter.Current.Value, Time.deltaTime);
                    }
                }
            }

            if (mDeleteList.Count > 0)
            {
                for (int i = 0; i < mDeleteList.Count; ++i)
                {
                    IAsyncOperationItem item = mDeleteList[i];
                    RemoveAsyncOperation(item);
                }

                mDeleteList.Clear();
            }
        }
        public void AddDeleteList(IAsyncOperationItem item)
        {
            if (item == null)
            {
                return;
            }

            item.SetDelete(true);
        }
예제 #3
0
        private void AddItem(IAsyncOperationItem item)
        {
            item.Changed += ItemChanged;

            lock (operationsLock)
            {
                operations.Add(item);
            }

            OnChanged();
        }
        protected void RemoveAsyncOperation(IAsyncOperationItem item)
        {
            if (item == null)
            {
                return;
            }

            AsyncOperation opt = item.GetOperation();

            RemoveAsyncOperation(opt);
            item.Release();
        }
    public AsyncOperationItem <T, U> GetAsyncOptionTimerOprItem <T, U>(ITimer obj) where T : AsyncOperation
    {
        if (obj == null)
        {
            return(null);
        }
        IAsyncOperationItem item = (IAsyncOperationItem)obj.UserData;

        if (item == null)
        {
            return(null);
        }
        return(item as AsyncOperationItem <T, U>);
    }
예제 #6
0
	public void RemoveAsyncOperation(IAsyncOperationItem item)
	{
		if (item == null)
			return;
		
		Timer time;
		AsyncOperation opt = item.GetOperation ();
		if (mDic.TryGetValue (opt, out time) && (time != null)) {
			mDic.Remove(opt);
			time.Dispose();
		}
		
		item.Release ();
	}
    public AsyncOperation GetAsyncOptionTimerOpr(Timer obj)
    {
        if (obj == null)
        {
            return(null);
        }
        IAsyncOperationItem item = (IAsyncOperationItem)obj.UserData;

        if (item == null)
        {
            return(null);
        }
        AsyncOperation opt = item.GetOperation();

        return(opt);
    }
        public AsyncOperationItem <T, U> GetAsyncOptionTimerOprItem <T, U>(TimerInfo obj) where T : AsyncOperation
        {
            if (obj == null)
            {
                return(null);
            }

            IAsyncOperationItem item = (IAsyncOperationItem)obj.target;

            if (item == null)
            {
                return(null);
            }

            return(item as AsyncOperationItem <T, U>);
        }
        public void AddDeleteList(AsyncOperation opt)
        {
            TimerInfo time;

            if (mDic.TryGetValue(opt, out time) && (time != null))
            {
                IAsyncOperationItem item = (IAsyncOperationItem)time.target;

                if (item == null)
                {
                    return;
                }

                item.SetDelete(true);
            }
        }
예제 #10
0
	public void Clear()
	{
		Dictionary<AsyncOperation, Timer>.Enumerator iter = mDic.GetEnumerator ();
		while (iter.MoveNext()) {
			if (iter.Current.Value != null)
			{
				if (iter.Current.Value.UserData != null)
				{
					IAsyncOperationItem item = iter.Current.Value.UserData as IAsyncOperationItem;
					if (item != null)
						item.Release();
				}
				iter.Current.Value.Dispose();
			}
		}

		iter.Dispose ();
		mDic.Clear ();
	}
예제 #11
0
	protected  void OnTimerEvent(Timer obj, float timer)
	{
		IAsyncOperationItem item = (IAsyncOperationItem)obj.UserData;
		if (item == null) {
			obj.Dispose();
			return;
		}

		AsyncOperation opt = item.GetOperation ();
		if (opt == null) {
			obj.Dispose();
			return;
		}

		item.Process ();
		if (opt.isDone)
			RemoveAsyncOperation(item);

	}
        protected void OnTimerEvent(TimerInfo obj, float timer)
        {
            IAsyncOperationItem item = (IAsyncOperationItem)obj.target;

            if (item.IsDelete())
            {
                mDeleteList.Add(item);
                return;
            }

            AsyncOperation opt = item.GetOperation();

            item.Process();

            if (opt.isDone)
            {
                mDeleteList.Add(item);
            }

            //RemoveAsyncOperation(item);
        }