示例#1
0
        public void Awake <P1, P2, P3>(Disposer disposer, P1 p1, P2 p2, P3 p3)
        {
            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
            {
                throw new Exception($"{disposer.GetType().Name} not found awake3");
            }
            IAwake <P1, P2, P3> iAwake = objectEvent as IAwake <P1, P2, P3>;

            if (iAwake == null)
            {
                throw new Exception($"{disposer.GetType().Name} not found awake3");
            }
            objectEvent.Set(disposer);
            iAwake.Awake(p1, p2, p3);
        }
示例#2
0
        public void Load()
        {
            while (this.loaders.Count > 0)
            {
                Disposer disposer = this.loaders.Dequeue();
                if (disposer.Id == 0)
                {
                    continue;
                }

                if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
                {
                    continue;
                }

                this.loaders2.Enqueue(disposer);

                ILoad iLoad = objectEvent as ILoad;
                if (iLoad == null)
                {
                    continue;
                }
                objectEvent.Set(disposer);
                try
                {
                    iLoad.Load();
                }
                catch (Exception e)
                {
                    Log.Error(e.ToString());
                }
            }

            ObjectHelper.Swap(ref this.loaders, ref this.loaders2);
        }
示例#3
0
文件: EventSystem.cs 项目: lzchina/ET
        public void Add(Disposer disposer)
        {
            IObjectSystem objectSystem;

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectSystem))
            {
                return;
            }

            if (objectSystem is ILoad)
            {
                this.loaders.Enqueue(disposer);
            }

            if (objectSystem is IUpdate)
            {
                this.updates.Enqueue(disposer);
            }

            if (objectSystem is IStart)
            {
                this.starts.Enqueue(disposer);
            }

            if (objectSystem is ILateUpdate)
            {
                this.lateUpdates.Enqueue(disposer);
            }
        }
示例#4
0
        private void Start()
        {
            unique.Clear();
            while (this.starts.Count > 0)
            {
                Disposer disposer = this.starts.Dequeue();

                if (!this.unique.Add(disposer))
                {
                    continue;
                }

                if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectSystem objectEvent))
                {
                    continue;
                }
                IStart iStart = objectEvent as IStart;
                if (iStart == null)
                {
                    continue;
                }
                objectEvent.Set(disposer);
                iStart.Start();
            }
        }
示例#5
0
        public void Update()
        {
            while (this.updates.Count > 0)
            {
                Disposer disposer = this.updates.Dequeue();
                if (disposer.Id == 0)
                {
                    continue;
                }
                if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
                {
                    continue;
                }

                this.updates2.Enqueue(disposer);

                IUpdate iUpdate = objectEvent as IUpdate;
                if (iUpdate == null)
                {
                    continue;
                }
                objectEvent.Set(disposer);
                try
                {
                    iUpdate.Update();
                }
                catch (Exception e)
                {
                    Log.Error(e.ToString());
                }
            }

            ObjectHelper.Swap(ref this.updates, ref this.updates2);
        }
示例#6
0
        public void Awake <P1, P2>(Disposer disposer, P1 p1, P2 p2)
        {
            this.Add(disposer);

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectSystem objectEvent))
            {
                throw new Exception($"{disposer.GetType().Name} not found awake2");
            }
            IAwake <P1, P2> iAwake = objectEvent as IAwake <P1, P2>;

            if (iAwake == null)
            {
                throw new Exception($"{disposer.GetType().Name} not found awake2");
            }
            objectEvent.Set(disposer);
            iAwake.Awake(p1, p2);
        }
示例#7
0
        public void Awake <P1>(Disposer disposer, P1 p1)
        {
            Instance.Add(disposer);

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
            {
                throw new Exception($"{disposer.GetType().Name} not found awake1");
            }
            IAwake <P1> iAwake = objectEvent as IAwake <P1>;

            if (iAwake == null)
            {
                throw new Exception($"{disposer.GetType().Name} not found awake1");
            }
            objectEvent.Set(disposer);
            iAwake.Awake(p1);
        }
示例#8
0
        public void Awake(Disposer disposer, object p1, object p2, object p3)
        {
            EntityTypeInfo entityTypeInfo;

            if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
            {
                return;
            }
            entityTypeInfo.Get(EntityEventType.Awake3)?.Run(disposer, p1, p2, p3);
        }
        public void Awake(Disposer disposer, object p1)
        {
            EntityTypeInfo entityTypeInfo;

            if (!this.eventInfo.TryGetValue(this.GetEntityEventIdByType(disposer.GetType()), out entityTypeInfo))
            {
                return;
            }
            entityTypeInfo.Get(EntityEventType.Awake1)?.Run(disposer, p1);
        }
示例#10
0
        public void Awake(Disposer disposer)
        {
            EntityTypeInfo entityTypeInfo;

            if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
            {
                return;
            }
            entityTypeInfo.Get(EntityEventType.Awake)?.Run(disposer);
        }
示例#11
0
        public void Recycle(Disposer obj)
        {
            Type type = obj.GetType();
            EQueue <Disposer> queue;

            if (!this.dictionary.TryGetValue(type, out queue))
            {
                queue = new EQueue <Disposer>();
            }
            queue.Enqueue(obj);
        }
示例#12
0
        public void Remove(Disposer disposer)
        {
            EntityTypeInfo entityTypeInfo;

            if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
            {
                return;
            }

            foreach (EntityEventType disposerEvent2Type in entityTypeInfo.GetDisposerEvent2Types())
            {
                this.disposers[disposerEvent2Type].Remove(disposer);
            }
        }
示例#13
0
        public void AddToCache(Disposer disposer, string collectionName = "")
        {
            if (collectionName == "")
            {
                collectionName = disposer.GetType().Name;
            }
            Dictionary <long, Disposer> collection;

            if (!this.cache.TryGetValue(collectionName, out collection))
            {
                collection = new Dictionary <long, Disposer>();
                this.cache.Add(collectionName, collection);
            }
            collection[disposer.Id] = disposer;
        }
示例#14
0
        public void Awake <P1, P2, P3>(Disposer disposer, P1 p1, P2 p2, P3 p3)
        {
            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
            {
                return;
            }
            IAwake <P1, P2, P3> iAwake = objectEvent as IAwake <P1, P2, P3>;

            if (iAwake == null)
            {
                return;
            }
            objectEvent.Set(disposer);
            iAwake.Awake(p1, p2, p3);
        }
示例#15
0
        public void Awake(Disposer disposer)
        {
            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
            {
                return;
            }
            IAwake iAwake = objectEvent as IAwake;

            if (iAwake == null)
            {
                return;
            }
            objectEvent.Set(disposer);
            iAwake.Awake();
        }
示例#16
0
        public Task <bool> Add(Disposer disposer, string collectionName = "")
        {
            TaskCompletionSource <bool> tcs = new TaskCompletionSource <bool>();

            this.AddToCache(disposer, collectionName);

            if (collectionName == "")
            {
                collectionName = disposer.GetType().Name;
            }
            DBSaveTask task = EntityFactory.CreateWithId <DBSaveTask, Disposer, string, TaskCompletionSource <bool> >(disposer.Id, disposer, collectionName, tcs);

            this.tasks[(int)((ulong)task.Id % taskCount)].Add(task);

            return(tcs.Task);
        }
示例#17
0
        public void Awake <P1>(Disposer disposer, P1 p1)
        {
            IObjectEvent objectEvent;

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectEvent))
            {
                return;
            }
            IAwake <P1> iAwake = objectEvent as IAwake <P1>;

            if (iAwake == null)
            {
                return;
            }
            objectEvent.Set(disposer);
            iAwake.Awake(p1);
        }
示例#18
0
文件: EventSystem.cs 项目: lzchina/ET
        public void Update()
        {
            this.Start();

            this.unique.Clear();
            while (this.updates.Count > 0)
            {
                Disposer disposer = this.updates.Dequeue();
                if (disposer.Id == 0)
                {
                    continue;
                }

                if (!this.unique.Add(disposer))
                {
                    continue;
                }

                IObjectSystem objectSystem;
                if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectSystem))
                {
                    continue;
                }

                this.updates2.Enqueue(disposer);

                IUpdate iUpdate = objectSystem as IUpdate;
                if (iUpdate == null)
                {
                    continue;
                }
                objectSystem.Set(disposer);
                try
                {
                    iUpdate.Update();
                }
                catch (Exception e)
                {
                    Log.Error(e.ToString());
                }
            }

            ObjectHelper.Swap(ref this.updates, ref this.updates2);
        }
示例#19
0
        public void Awake <P1, P2>(Disposer disposer, P1 p1, P2 p2)
        {
            ObjectEvents.Instance.Add(disposer);

            IObjectEvent objectEvent;

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectEvent))
            {
                return;
            }
            IAwake <P1, P2> iAwake = objectEvent as IAwake <P1, P2>;

            if (iAwake == null)
            {
                return;
            }
            objectEvent.Set(disposer);
            iAwake.Awake(p1, p2);
        }
示例#20
0
        public void Awake <P1, P2, P3>(Disposer disposer, P1 p1, P2 p2, P3 p3)
        {
            this.Add(disposer);

            IObjectSystem objectSystem;

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectSystem))
            {
                return;
            }
            IAwake <P1, P2, P3> iAwake = objectSystem as IAwake <P1, P2, P3>;

            if (iAwake == null)
            {
                return;
            }
            objectSystem.Set(disposer);
            iAwake.Awake(p1, p2, p3);
        }
示例#21
0
        public void Awake(Disposer disposer)
        {
            this.Add(disposer);

            IObjectSystem objectSystem;

            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectSystem))
            {
                return;
            }
            IAwake iAwake = objectSystem as IAwake;

            if (iAwake == null)
            {
                return;
            }
            objectSystem.Set(disposer);
            iAwake.Awake();
        }
示例#22
0
        private void Start()
        {
            while (this.starts.Count > 0)
            {
                Disposer disposer = this.starts.Dequeue();

                IObjectEvent objectEvent;
                if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectEvent))
                {
                    continue;
                }
                IStart iStart = objectEvent as IStart;
                if (iStart == null)
                {
                    continue;
                }
                objectEvent.Set(disposer);
                iStart.Start();
            }
        }
示例#23
0
        public void Add(Disposer disposer)
        {
            if (!this.disposerEvents.TryGetValue(disposer.GetType(), out IObjectEvent objectEvent))
            {
                return;
            }

            if (objectEvent is ILoad)
            {
                this.loaders.Enqueue(disposer);
            }

            if (objectEvent is IUpdate)
            {
                this.updates.Enqueue(disposer);
            }

            if (objectEvent is IStart)
            {
                this.starts.Enqueue(disposer);
            }
        }
示例#24
0
        public void LateUpdate()
        {
            while (this.lateUpdates.Count > 0)
            {
                Disposer disposer = this.lateUpdates.Dequeue();
                if (disposer.Id == 0)
                {
                    continue;
                }

                IObjectSystem objectSystem;
                if (!this.disposerEvents.TryGetValue(disposer.GetType(), out objectSystem))
                {
                    continue;
                }

                this.lateUpdates2.Enqueue(disposer);

                ILateUpdate iLateUpdate = objectSystem as ILateUpdate;
                if (iLateUpdate == null)
                {
                    continue;
                }
                objectSystem.Set(disposer);
                try
                {
                    iLateUpdate.LateUpdate();
                }
                catch (Exception e)
                {
                    Log.Error(e.ToString());
                }
            }

            ObjectHelper.Swap(ref this.lateUpdates, ref this.lateUpdates2);
        }
示例#25
0
        public void Awake(Disposer disposer)
        {
            EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];

            entityTypeInfo.Get(EntityEventType.Awake)?.Run(disposer);
        }
示例#26
0
		public void Awake(Disposer disposer)
		{
			EntityTypeInfo entityTypeInfo;
			if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
			{
				return;
			}
			entityTypeInfo.Get(EntityEventType.Awake)?.Run(disposer);
		}
示例#27
0
		public void Awake(Disposer disposer, object p1, object p2, object p3)
		{
			EntityTypeInfo entityTypeInfo;
			if (!this.eventInfo.TryGetValue(disposer.GetType(), out entityTypeInfo))
			{
				return;
			}
			entityTypeInfo.Get(EntityEventType.Awake3)?.Run(disposer, p1, p2, p3);
		}
示例#28
0
        public void Awake(Disposer disposer, object p1, object p2, object p3)
        {
            EntityTypeInfo entityTypeInfo = this.eventInfo[disposer.GetType()];

            entityTypeInfo.Get(EntityEventType.Awake3)?.Run(disposer, p1, p2, p3);
        }