static int GetObjectPool(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 2 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); GameFramework.ObjectPool.ObjectPoolBase o = obj.GetObjectPool(arg0); ToLua.PushObject(L, o); return(1); } else if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(string))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); string arg1 = ToLua.ToString(L, 3); GameFramework.ObjectPool.ObjectPoolBase o = obj.GetObjectPool(arg0, arg1); ToLua.PushObject(L, o); return(1); } else { return(LuaDLL.luaL_throw(L, "invalid arguments to method: UnityGameFramework.Runtime.ObjectPoolComponent.GetObjectPool")); } } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
/// <summary> /// 获取所有对象池。 /// </summary> /// <param name="sort">是否根据对象池的优先级排序。</param> /// <returns>所有对象池。</returns> public ObjectPoolBase[] GetAllObjectPools(bool sort) { if (sort) { List <ObjectPoolBase> results = new List <ObjectPoolBase>(); foreach (KeyValuePair <string, ObjectPoolBase> objectPool in m_ObjectPools) { results.Add(objectPool.Value); } results.Sort(ObjectPoolComparer); return(results.ToArray()); } else { int index = 0; ObjectPoolBase[] results = new ObjectPoolBase[m_ObjectPools.Count]; foreach (KeyValuePair <string, ObjectPoolBase> objectPool in m_ObjectPools) { results[index++] = objectPool.Value; } return(results); } }
/// <summary> /// 销毁对象池。 /// </summary> /// <param name="objectPool">要销毁的对象池。</param> /// <returns>是否销毁对象池成功。</returns> public bool DestroyObjectPool(ObjectPoolBase objectPool) { if (objectPool == null) { throw new GameFrameworkException("Object pool is invalid."); } return(InternalDestroyObjectPool(Utility.Text.GetFullName(objectPool.ObjectType, objectPool.Name))); }
private ObjectPoolBase InternalGetObjectPool(string fullName) { ObjectPoolBase objectPool = null; if (m_ObjectPools.TryGetValue(fullName, out objectPool)) { return(objectPool); } return(null); }
/// <summary> /// 获取对象池。 /// </summary> /// <typeparam name="T">对象类型。</typeparam> /// <param name="name">对象池名称。</param> /// <returns>要获取的对象池。</returns> public IObjectPool <T> GetObjectPool <T>(string name) where T : ObjectBase { ObjectPoolBase objectPool = null; if (m_ObjectPools.TryGetValue(Utility.Text.GetFullName <T>(name), out objectPool)) { return(objectPool as IObjectPool <T>); } return(null); }
private bool InternalDestroyObjectPool(string fullName) { ObjectPoolBase objectPool = null; if (m_ObjectPools.TryGetValue(fullName, out objectPool)) { objectPool.Shutdown(); return(m_ObjectPools.Remove(fullName)); } return(false); }
/// <summary> /// 销毁对象池。 /// </summary> /// <typeparam name="T">对象类型。</typeparam> /// <param name="name">要销毁的对象池名称。</param> /// <returns>是否销毁对象池成功。</returns> public bool DestroyObjectPool <T>(string name) where T : ObjectBase { string fullName = Utility.Text.GetFullName <T>(name); ObjectPoolBase objectPool = null; if (m_ObjectPools.TryGetValue(fullName, out objectPool)) { objectPool.Shutdown(); return(m_ObjectPools.Remove(fullName)); } return(false); }
/// <summary> /// 获取对象池。 /// </summary> /// <param name="fullName">对象池完整名称。</param> /// <returns>要获取的对象池。</returns> public ObjectPoolBase GetObjectPool(string fullName) { if (string.IsNullOrEmpty(fullName)) { throw new Exception("Full name is invalid."); } ObjectPoolBase objectPool = null; if (m_ObjectPools.TryGetValue(fullName, out objectPool)) { return(objectPool); } return(null); }
/// <summary> /// 获取所有对象池。 /// </summary> /// <param name="sort">是否根据对象池的优先级排序。</param> /// <returns>所有对象池。</returns> public ObjectPoolBase[] GetAllObjectPools(bool sort) { if (sort) { List <ObjectPoolBase> objectPools = new List <ObjectPoolBase>(m_ObjectPools.Values); objectPools.Sort(ObjectPoolComparer); return(objectPools.ToArray()); } else { int index = 0; ObjectPoolBase[] objectPools = new ObjectPoolBase[m_ObjectPools.Count]; foreach (ObjectPoolBase objectPool in m_ObjectPools.Values) { objectPools[index++] = objectPool; } return(objectPools); } }
private ObjectPoolBase InternalCreateObjectPool(Type objectType, string name, bool allowMultiSpawn, int capacity, float expireTime, int priority) { if (objectType == null) { throw new GameFrameworkException("Object type is invalid."); } if (!typeof(ObjectBase).IsAssignableFrom(objectType)) { throw new GameFrameworkException(string.Format("Object type '{0}' is invalid.", objectType.FullName)); } if (HasObjectPool(objectType, name)) { throw new GameFrameworkException(string.Format("Already exist object pool '{0}'.", Utility.Text.GetFullName(objectType, name))); } Type objectPoolType = typeof(ObjectPool <>).MakeGenericType(objectType); ObjectPoolBase objectPool = (ObjectPoolBase)Activator.CreateInstance(objectPoolType, name, allowMultiSpawn, capacity, expireTime, priority); m_ObjectPools.Add(Utility.Text.GetFullName(objectType, name), objectPool); return(objectPool); }
private int ObjectPoolComparer(ObjectPoolBase a, ObjectPoolBase b) { return(a.Priority.CompareTo(b.Priority)); }
static int CreateMultiSpawnObjectPool(IntPtr L) { try { int count = LuaDLL.lua_gettop(L); if (count == 2 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0); ToLua.PushObject(L, o); return(1); } else if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(float))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); float arg1 = (float)LuaDLL.lua_tonumber(L, 3); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1); ToLua.PushObject(L, o); return(1); } else if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(string))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); string arg1 = ToLua.ToString(L, 3); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1); ToLua.PushObject(L, o); return(1); } else if (count == 4 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(float), typeof(int))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); float arg1 = (float)LuaDLL.lua_tonumber(L, 3); int arg2 = (int)LuaDLL.lua_tonumber(L, 4); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2); ToLua.PushObject(L, o); return(1); } else if (count == 4 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(int), typeof(float))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); int arg1 = (int)LuaDLL.lua_tonumber(L, 3); float arg2 = (float)LuaDLL.lua_tonumber(L, 4); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2); ToLua.PushObject(L, o); return(1); } else if (count == 4 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(string), typeof(float))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); string arg1 = ToLua.ToString(L, 3); float arg2 = (float)LuaDLL.lua_tonumber(L, 4); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2); ToLua.PushObject(L, o); return(1); } else if (count == 5 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(int), typeof(float), typeof(int))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); int arg1 = (int)LuaDLL.lua_tonumber(L, 3); float arg2 = (float)LuaDLL.lua_tonumber(L, 4); int arg3 = (int)LuaDLL.lua_tonumber(L, 5); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2, arg3); ToLua.PushObject(L, o); return(1); } else if (count == 5 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(string), typeof(float), typeof(int))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); string arg1 = ToLua.ToString(L, 3); float arg2 = (float)LuaDLL.lua_tonumber(L, 4); int arg3 = (int)LuaDLL.lua_tonumber(L, 5); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2, arg3); ToLua.PushObject(L, o); return(1); } else if (count == 5 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(string), typeof(int), typeof(float))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); string arg1 = ToLua.ToString(L, 3); int arg2 = (int)LuaDLL.lua_tonumber(L, 4); float arg3 = (float)LuaDLL.lua_tonumber(L, 5); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2, arg3); ToLua.PushObject(L, o); return(1); } else if (count == 6 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.ObjectPoolComponent), typeof(System.Type), typeof(string), typeof(int), typeof(float), typeof(int))) { UnityGameFramework.Runtime.ObjectPoolComponent obj = (UnityGameFramework.Runtime.ObjectPoolComponent)ToLua.ToObject(L, 1); System.Type arg0 = (System.Type)ToLua.ToObject(L, 2); string arg1 = ToLua.ToString(L, 3); int arg2 = (int)LuaDLL.lua_tonumber(L, 4); float arg3 = (float)LuaDLL.lua_tonumber(L, 5); int arg4 = (int)LuaDLL.lua_tonumber(L, 6); GameFramework.ObjectPool.ObjectPoolBase o = obj.CreateMultiSpawnObjectPool(arg0, arg1, arg2, arg3, arg4); ToLua.PushObject(L, o); return(1); } else { return(LuaDLL.luaL_throw(L, "invalid arguments to method: UnityGameFramework.Runtime.ObjectPoolComponent.CreateMultiSpawnObjectPool")); } } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }