public void Recycle(T Obj) { UsedCount--; IdleCount++; if (Obj != null && ObjectCacheList_.ContainsKey(Obj.GetInstanceID())) { TriggerRecycle(ObjectCacheList_[Obj.GetInstanceID()] as ObjectPoolCache <T>); } }
private void DisposeObjectList(List <int> Keys) { foreach (var Key in Keys) { if (ObjectCacheList_.ContainsKey(Key)) { TriggerDispose(ObjectCacheList_[Key] as ObjectPoolCache <T>); ObjectCacheList_.Remove(Key); } } }
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; }
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); }