示例#1
0
        public T Create <T>(EntityParam param) where T : Entity, new()
        {
            T entity = this._gPool.Pop <T>();

            this._idToEntity[param.rid] = entity;
            this._entities.Add(entity);

            System.Type t = typeof(T);
            if (typeof(Collider).IsAssignableFrom(t))
            {
                Collider collider = entity as Collider;
                this._colliders.Add(collider);
            }
            if (typeof(ITrigger).IsAssignableFrom(t))
            {
                ITrigger trigger = entity as ITrigger;
                this._triggers.Add(trigger);
            }
            if (typeof(Item).IsAssignableFrom(t))
            {
                Item item = entity as Item;
                this._idToItem[param.rid] = item;
                this._items.Add(item);
            }
            if (typeof(Champion).IsAssignableFrom(t))
            {
                Champion champion = entity as Champion;
                this._idToChampion[param.rid] = champion;
                this._champions.Add(champion);
            }
            SyncEvent.CreateEntity(entity.GetType().Name, param);
            entity.OnAddedToBattle(this._battle, param);
            return(entity);
        }