using System; using System.Collections.Generic; namespace BehaviorDesigner.Runtime { public static class ObjectPool { private static Dictionary poolDictionary = new Dictionary(); public static T Get() { if (poolDictionary.ContainsKey(typeof(T))) { List list = poolDictionary[typeof(T)] as List; if (list.Count > 0) { T result = list[0]; list.RemoveAt(0); return result; } } return (T)TaskUtility.CreateInstance(typeof(T)); } public static void Return(T obj) { if (obj != null) { if (poolDictionary.ContainsKey(typeof(T))) { List list = poolDictionary[typeof(T)] as List; list.Add(obj); } else { List list2 = new List(); list2.Add(obj); poolDictionary.Add(typeof(T), list2); } } } } }