예제 #1
0
        private void render()
        {
            int len = handlerList.Count;

            tempHandle.Clear();

            float currentTime = Time.time;

            for (int i = len - 1; i > -1; i--)
            {
                if (currentTime > timeList[i])
                {
                    tempHandle.Add(handlerList[i]);
                    handlerList.RemoveAt(i);
                    timeList.RemoveAt(i);
                }
            }

            len = tempHandle.Count;
            for (int i = len - 1; i > -1; i--)
            {
                tempHandle[i]();
            }

            if (handlerList.Count == 0)
            {
                TickManager.remove(render);
            }
        }
예제 #2
0
 protected virtual void OnDrawGizmos()
 {
     if (Application.isPlaying)
     {
         TickManager.getInstance().gizmos();
     }
 }
예제 #3
0
        private void forceTime(float now)
        {
            int total = 0;
            List <IAutoReleaseRef> clearList = new List <IAutoReleaseRef>();

            foreach (IAutoReleaseRef res in pool.Keys)
            {
                total++;
                if (now - pool[res] > TIMEOUT)
                {
                    clearList.Add(res);
                }
            }


            int len = clearList.Count;

            if (len > 0)
            {
                foreach (IAutoReleaseRef res in clearList)
                {
                    res.__dispose();
                    pool.Remove(res);
                }
            }

            if (pool.Count == 0)
            {
                TickManager.Remove(tick);
            }
        }
예제 #4
0
        public void render(float deltaTime)
        {
            if (len < 1)
            {
                TickManager.Remove(render);
                return;
            }
            float now = Time.realtimeSinceStartup;
            float dis = now - pre;

            if (dis < delayTime - 0.016f)
            {
                return;
            }
            pre = now;

            dispatching = true;
            SignalNode <float> t = firstNode;

            List <SignalNode <float> > temp = GetSignalNodeList();

            while (t != null)
            {
                if (t.active == NodeActiveState.Runing)
                {
                    float delta = delayTime;
                    if (t.data != -1)
                    {
                        delta = t.data - pre;
                        if (delta < 0)
                        {
                            ___removeHandle(t.action);
                        }
                    }
                    t.action(delta);
                }
                temp.Add(t);
                t = t.next;
            }
            dispatching = false;

            int l = temp.Count;

            for (int i = 0; i < l; i++)
            {
                SignalNode <float> item = temp[i];
                if (item.active == NodeActiveState.ToDoDelete)
                {
                    _remove(item, item.action);
                }
                else if (item.active == NodeActiveState.ToDoAdd)
                {
                    item.active = NodeActiveState.Runing;
                }
            }
            Recycle(temp);
        }
예제 #5
0
 public override void OnPointerUp(PointerEventData eventData)
 {
     isDown = false;
     if (mouseEnterEnabled)
     {
         TickManager.Remove(tick);
     }
     this.simpleDispatch(MouseEventX.MOUSE_UP, eventData);
     base.OnPointerUp(eventData);
 }
        private void _forceAll()
        {
            foreach (IAutoReleaseRef res in pool.Keys)
            {
                res.__dispose();
            }
            pool.Clear();

            isRunning = false;
            TickManager.remove(tick);
        }
예제 #7
0
 private void _add(IAutoReleaseRef value)
 {
     if (pool.ContainsKey(value))
     {
         //更新刷新时间;
         pool[value] = Time.realtimeSinceStartup;
         return;
     }
     pool.Add(value, Time.realtimeSinceStartup);
     TickManager.Add(tick);
 }
예제 #8
0
        public override void OnPointerDown(PointerEventData eventData)
        {
            isDown = true;

            if (mouseEnterEnabled)
            {
                TickManager.Add(tick);
            }
            this.simpleDispatch(MouseEventX.MOUSE_DOWN, eventData);
            base.OnPointerDown(eventData);
        }
예제 #9
0
 private void add(Action <float> handler, float delayTime)
 {
     if (delayTime > 0)
     {
         delayTime = Time.realtimeSinceStartup + delayTime;
     }
     ___addHandle(handler, delayTime, true);
     if (len == 1)
     {
         TickManager.Add(render);
     }
 }
예제 #10
0
        protected override IEnumerator doLoad()
        {
            www = new WWW(formatedURL(url));

            if (checkProgress)
            {
                TickManager.add(progress);
            }
            yield return(www);

            if (checkProgress)
            {
                TickManager.remove(progress);
            }

            if (www == null)
            {
                _state = AssetState.FAILD;
                _data  = null;
                string message = string.Format("加载文件失败:{0} 已被dispose", url);
                DebugX.Log(message);
                this.dispatchEvent(new EventX(EventX.FAILED, message));
            }
            else
            {
                if (string.IsNullOrEmpty(www.error))
                {
//                    if (www.isDone)
//                    {
                    _state = AssetState.READY;
                    _data  = www.bytes;
                    this.simpleDispatch(EventX.COMPLETE, _data);
                    //                   }
//                    else
//                    {
//                        _state = AssetState.FAILD;
//                        _data = null;
//                        string message = string.Format("加载文件失败:{0} 没有完成", url);
//                        DebugX.Log(message);
//                        this.dispatchEvent(new EventX(EventX.FAILED, message));
//                    }
                }
                else
                {
                    _state = AssetState.FAILD;
                    _data  = null;
                    string message = string.Format("加载文件失败:{0} error:{1}", url, www.error);
                    DebugX.LogWarning(message);
                    this.simpleDispatch(EventX.FAILED, message);
                }
            }
        }
예제 #11
0
 private void add(float delayTime, Action handler)
 {
     ___addHandle(handler, Time.time + delayTime, true);
     if (len > 0)
     {
         TickManager.Add(render);
     }
     else if (firstNode != null)
     {
         TickManager.Add(render);
         DebugX.LogError("callLater 有bug:" + len);
     }
 }
예제 #12
0
 private void add(float deletime, Action handler)
 {
     if (handlerList.IndexOf(handler) != -1)
     {
         return;
     }
     handlerList.Add(handler);
     timeList.Add(Time.time + deletime);
     if (handlerList.Count == 1)
     {
         TickManager.add(render);
     }
 }
        private void _add(IAutoReleaseRef value)
        {
            if (pool.ContainsKey(value))
            {
                return;
            }
            pool.Add(value, DateTime.Now.Ticks);

            if (isRunning == false)
            {
                isRunning = true;
                TickManager.add(tick);
            }
        }
        public static bool remove(Action <int> value)
        {
            if (set.ContainsKey(value))
            {
                set.Remove(value);
            }

            if (set.Count == 0)
            {
                pre = DateTime.MinValue;
                TickManager.remove(tick);
            }

            return(true);
        }
예제 #15
0
        //private List<Action> tempHandle = new List<Action>();
        private void render(float deltaTime)
        {
            if (len > 0)
            {
                dispatching = true;
                ActionNode <float> t = firstNode;

                List <ActionNode <float> > temp = GetSignalNodeList();
                float now = Time.time;
                while (t != null)
                {
                    if (t.active == NodeActiveState.Runing)
                    {
                        if (now > t.data)
                        {
                            Remove(t.action);
                            t.action();
                            //DebugX.Log("callLater:" + now + ":" + t.data);
                        }
                    }
                    temp.Add(t);
                    t = t.next;
                }
                dispatching = false;

                int l = temp.Count;
                for (int i = 0; i < l; i++)
                {
                    ActionNode <float> item = temp[i];
                    if (item.active == NodeActiveState.ToDoDelete)
                    {
                        _remove(item, item.action);
                    }
                    else if (item.active == NodeActiveState.ToDoAdd)
                    {
                        item.active = NodeActiveState.Runing;
                    }
                }
                Recycle(temp);
            }
            else
            {
                TickManager.Remove(render);
            }
        }
        public static bool add(Action <int> value, int time)
        {
            if (removes.Contains(value))
            {
                removes.Remove(value);
            }

            if (set.ContainsKey(value))
            {
                set[value] = time;
            }
            else
            {
                set.Add(value, time);
                if (set.Count == 1)
                {
                    TickManager.add(tick);
                }
            }
            return(true);
        }
        private void tick()
        {
            if ((timeCount += Time.deltaTime) < 3000)
            {
                return;
            }

            timeCount = 0;
            long now   = DateTime.Now.Ticks;
            int  total = 0;

            List <IAutoReleaseRef> clearList = new List <IAutoReleaseRef>();

            foreach (IAutoReleaseRef res in pool.Keys)
            {
                total++;
                if (now - pool[res] > TIMEOUT)
                {
                    clearList.Add(res);
                }
            }


            int len = clearList.Count;

            if (len > 0)
            {
                foreach (IAutoReleaseRef res in clearList)
                {
                    res.__dispose();
                    pool.Remove(res);
                }
            }

            if (total == len)
            {
                isRunning = false;
                TickManager.remove(tick);
            }
        }
예제 #18
0
 protected virtual void Update()
 {
     ResizeMananger.getInstance().resize(Screen.width, Screen.height);
     TickManager.getInstance().tick();
 }
예제 #19
0
 protected virtual void FixedUpdate()
 {
     InputManager.getInstance().update();
     TickManager.getInstance().fixedTick();
 }