Esempio n. 1
0
 public LoadGameObjectFunc()
 {
     m_LoadCall = (AssetItem item) =>
     {
         GameObject         t            = null;
         CoreGameObjectPool resourcePool = null;
         m_Owner.m_Pools.TryGetValue(m_AssetPath, out resourcePool);
         if (resourcePool is null)
         {
             resourcePool = new CoreGameObjectPool(item);
             m_Owner.m_Pools.Add(m_AssetPath, resourcePool);
         }
         else
         {
             GameManager.Instance.m_ABMgr.UnloadAsset(item);
         }
         t = resourcePool.Spawn();
         m_Callback?.Invoke(t);
         m_Callback  = null;
         m_AssetPath = null;
         m_Parent    = null;
         m_Name      = null;
         m_Owner.m_LambdaCache.AddLast(this);
         m_Owner = null;
     };
 }
Esempio n. 2
0
    public void DestroyOne(string path, bool OnlyUnUsed = false)
    {
        CoreGameObjectPool pool = m_Pools[path];

        if ((!OnlyUnUsed) || (OnlyUnUsed && pool.NotUsed()))
        {
            GameManager.Instance.m_ABMgr.UnloadAsset(pool.AssetItem);
            pool.Destroy();
            m_Pools.Remove(path);
        }
    }
Esempio n. 3
0
        static int _g_get_AssetItem(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);

                CoreGameObjectPool gen_to_be_invoked = (CoreGameObjectPool)translator.FastGetCSObj(L, 1);
                translator.Push(L, gen_to_be_invoked.AssetItem);
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(1);
        }
Esempio n. 4
0
    public GameObject Spawn(string path, Transform parent = null)
    {
        CoreGameObjectPool resourcePool = null;

        m_Pools.TryGetValue(path, out resourcePool);
        if (resourcePool is null)
        {
            AssetItem item = GameManager.Instance.m_ABMgr.LoadAsset(path);
            resourcePool = new CoreGameObjectPool(item, parent);
            m_Pools.Add(path, resourcePool);
        }
        return(resourcePool.Spawn());
    }
Esempio n. 5
0
    public void Recycle(GameObject obj)
    {
        foreach (var item in m_Pools)
        {
            CoreGameObjectPool pool = item.Value;
            if (pool.IsSpawnedObj(obj))
            {
                pool.Recycle(obj);
                return;
            }
        }
        UnityEngine.Debug.LogError("试图回收不在CoreCompositePool池中的GameObject、或重复回收!");
//        m_Pools[path].Recycle(obj);
    }
Esempio n. 6
0
    public void SpawnAsync(string path, Action <GameObject> callback, Transform parent = null)
    {
        CoreGameObjectPool resourcePool = null;

        m_Pools.TryGetValue(path, out resourcePool);
        if (resourcePool is null)
        {
            LoadGameObjectFunc lambda = m_LambdaCache.CreateOrPop();
            lambda.Init(this, path, callback);
            GameManager.Instance.m_ABMgr.LoadAssetAsync(path, lambda.m_LoadCall);
        }
        else
        {
            GameObject t = resourcePool.Spawn();
            callback?.Invoke(t);
        }
    }
Esempio n. 7
0
        static int _m_Destroy(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                CoreGameObjectPool gen_to_be_invoked = (CoreGameObjectPool)translator.FastGetCSObj(L, 1);



                {
                    gen_to_be_invoked.Destroy(  );



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 8
0
        static int __CreateInstance(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                if (LuaAPI.lua_gettop(L) == 4 && translator.Assignable <AssetItem>(L, 2) && translator.Assignable <UnityEngine.Transform>(L, 3) && (LuaAPI.lua_isnil(L, 4) || LuaAPI.lua_type(L, 4) == LuaTypes.LUA_TSTRING))
                {
                    AssetItem             _assetItem = (AssetItem)translator.GetObject(L, 2, typeof(AssetItem));
                    UnityEngine.Transform _ObjParent = (UnityEngine.Transform)translator.GetObject(L, 3, typeof(UnityEngine.Transform));
                    string _poolName = LuaAPI.lua_tostring(L, 4);

                    CoreGameObjectPool gen_ret = new CoreGameObjectPool(_assetItem, _ObjParent, _poolName);
                    translator.Push(L, gen_ret);

                    return(1);
                }
                if (LuaAPI.lua_gettop(L) == 3 && translator.Assignable <AssetItem>(L, 2) && translator.Assignable <UnityEngine.Transform>(L, 3))
                {
                    AssetItem             _assetItem = (AssetItem)translator.GetObject(L, 2, typeof(AssetItem));
                    UnityEngine.Transform _ObjParent = (UnityEngine.Transform)translator.GetObject(L, 3, typeof(UnityEngine.Transform));

                    CoreGameObjectPool gen_ret = new CoreGameObjectPool(_assetItem, _ObjParent);
                    translator.Push(L, gen_ret);

                    return(1);
                }
                if (LuaAPI.lua_gettop(L) == 2 && translator.Assignable <AssetItem>(L, 2))
                {
                    AssetItem _assetItem = (AssetItem)translator.GetObject(L, 2, typeof(AssetItem));

                    CoreGameObjectPool gen_ret = new CoreGameObjectPool(_assetItem);
                    translator.Push(L, gen_ret);

                    return(1);
                }
            }
            catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(LuaAPI.luaL_error(L, "invalid arguments to CoreGameObjectPool constructor!"));
        }
Esempio n. 9
0
        static int _m_NotUsed(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                CoreGameObjectPool gen_to_be_invoked = (CoreGameObjectPool)translator.FastGetCSObj(L, 1);



                {
                    bool gen_ret = gen_to_be_invoked.NotUsed(  );
                    LuaAPI.lua_pushboolean(L, gen_ret);



                    return(1);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 10
0
        static int _m_Spawn(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                CoreGameObjectPool gen_to_be_invoked = (CoreGameObjectPool)translator.FastGetCSObj(L, 1);



                {
                    UnityEngine.GameObject gen_ret = gen_to_be_invoked.Spawn(  );
                    translator.Push(L, gen_ret);



                    return(1);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }
Esempio n. 11
0
        static int _m_Recycle(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);


                CoreGameObjectPool gen_to_be_invoked = (CoreGameObjectPool)translator.FastGetCSObj(L, 1);



                {
                    UnityEngine.GameObject _obj = (UnityEngine.GameObject)translator.GetObject(L, 2, typeof(UnityEngine.GameObject));

                    gen_to_be_invoked.Recycle(_obj);



                    return(0);
                }
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
        }