예제 #1
0
        /// <summary>
        /// 从 UpdateManager 注销一个 FixedUpdate 方法。
        /// </summary>
        /// <param name="func">待注销的 FixedUpdate 方法。</param>
        public static void UnregisterFixedUpdate(FastUpdate func)
        {
            fixedUpdatesToBeAdded.Remove(func);

            if (!fixedUpdatesToBeRemoved.Contains(func))
            {
                fixedUpdatesToBeRemoved.Add(func);
            }
        }
예제 #2
0
        /// <summary>
        /// 向 UpdateManager 注册一个 Update 方法。
        /// 如果之前已经提交注销该方法,则取消注销申请;如果之前已经提交注册该方法,则保留注册申请。
        /// </summary>
        /// <param name="func">待注册的 Update 方法。</param>
        public static void RegisterUpdate(FastUpdate func)
        {
            updatesToBeRemoved.Remove(func);

            if (!updatesToBeAdded.Contains(func))
            {
                updatesToBeAdded.Add(func);
            }
        }
예제 #3
0
        /// <summary>
        /// 从 UpdateManager 注销一个 LateUpdate 方法。
        /// </summary>
        /// <param name="func">待注销的 LateUpdate 方法。</param>
        public static void UnregisterLateUpdate(FastUpdate func)
        {
            lateUpdatesToBeAdded.Remove(func);

            if (!lateUpdatesToBeRemoved.Contains(func))
            {
                lateUpdatesToBeRemoved.Add(func);
            }
        }
        private void PostUpdate(double delta)
        {
            _session.GameMobs.Remove(null);
            _session.GameTower.Remove(null);

            if (_fastUpdateObjectQueue.Count > 0)
            {
                return;
            }
            var mobs  = _session.GameMobs.Where(a => a != null).OrderBy(r => r.LastUpdate).Take(_maxMobsSendUpdate).ToList();
            var tower = _session.GameTower.Where(a => a != null && a.hasChanged).OrderBy(r => r.LastUpdate).Take(_maxMobsSendUpdate)
                        .ToList();

            var up = new FastUpdate
            {
                Mobs  = mobs.Select(a => a.ToMobMoveObject()).ToArray(),
                Tower = tower.Select(a => a.ToTowerStateModel()).ToArray()
            };

            _fastUpdateObjectQueue.Push(up);
        }