示例#1
0
        public void Recycle(T Obj)
        {
            UsedCount--;
            IdleCount++;

            if (Obj != null && ObjectCacheList_.ContainsKey(Obj.GetInstanceID()))
            {
                TriggerRecycle(ObjectCacheList_[Obj.GetInstanceID()] as ObjectPoolCache <T>);
            }
        }
示例#2
0
 private void DisposeObjectList(List <int> Keys)
 {
     foreach (var Key in Keys)
     {
         if (ObjectCacheList_.ContainsKey(Key))
         {
             TriggerDispose(ObjectCacheList_[Key] as ObjectPoolCache <T>);
             ObjectCacheList_.Remove(Key);
         }
     }
 }
示例#3
0
        public override void Dispose()
        {
            foreach (var Cache in ObjectCacheList_)
            {
                TriggerDispose(Cache.Value as ObjectPoolCache <T>);
            }

            ObjectCacheList_.Clear();
            UsedCount = 0;
            IdleCount = 0;

            CreateFunc_  = null;
            SpawnFunc_   = null;
            RecycleFunc_ = null;
            DisposeFunc_ = null;
        }
示例#4
0
        public T Spawn()
        {
            foreach (var Cache in ObjectCacheList_)
            {
                if (!Cache.Value.Used)
                {
                    UsedCount++;
                    IdleCount--;
                    var TCache = Cache.Value as ObjectPoolCache <T>;
                    TriggerSpawn(TCache);
                    return(TCache.Entity);
                }
            }

            var Obj      = CreateFunc_.Invoke();
            var NewCache = new ObjectPoolCache <T>(Obj);

            ObjectCacheList_.Add(Obj.GetInstanceID(), NewCache);
            TriggerSpawn(NewCache);
            UsedCount++;

            return(Obj);
        }