Ejemplo n.º 1
0
        public int SystemInt32(XLua.LuaTable self, object field)
        {
#if THREAD_SAFT || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.L;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.Push(L, self);
            translator.PushAny(L, field);

            int __gen_error = LuaAPI.lua_pcall(L, 2, 1, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }


            int __gen_ret = LuaAPI.xlua_tointeger(L, err_func + 1);
            LuaAPI.lua_settop(L, err_func - 1);
            return(__gen_ret);

#if THREAD_SAFT || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取指定角色id的指定范围内的离玩家最近的怪物
        /// </summary>
        /// <param name="actorId"></param>
        /// <returns></returns>
        public static Actor GetNearestMonsterByActorIds(XLua.LuaTable actorIds, float range)
        {
            float minDistance    = float.MaxValue;
            Actor nearestMonster = null;
            Actor localPlayer    = Game.Instance.GetLocalPlayer();
            float sqrRange       = range * range;

            if (localPlayer != null && actorIds != null)
            {
                List <uint> actorIdList    = XLua.XUtils.CreateListByLuaTable <uint, uint>(actorIds);
                Vector3     localPlayerPos = localPlayer.Trans.position;
                foreach (Actor monster in ActorManager.Instance.MonsterSet.Values)
                {
                    if (monster != null && actorIdList.Contains(monster.TypeIdx))
                    {
                        float distance = (localPlayerPos - monster.Trans.position).sqrMagnitude;
                        if (distance < sqrRange && distance < minDistance)
                        {
                            minDistance    = distance;
                            nearestMonster = monster;
                        }
                    }
                }
            }

            return(nearestMonster);
        }
Ejemplo n.º 3
0
        public static void addLuaEventListener(XLua.LuaTable scriptEnv, string priex = "do")
        {
            IEnumerator it = scriptEnv.GetKeys().GetEnumerator();

            try
            {
                while (it.MoveNext())
                {
                    object f = scriptEnv.Get <object>(it.Current.ToString());
                    if (f != null && f.GetType() == typeof(XLua.LuaFunction))
                    {
                        if (it.Current.ToString().StartsWith(priex))
                        {
                            int  name = int.Parse(it.Current.ToString().Substring(priex.Length));
                            Node node = new Node();
                            node.parent = null;
                            node.method = null;
                            //unityAction3 unityFunction;
                            //scriptEnv.Get(it.Current.ToString(), out node.action);
                            node.action = scriptEnv.Get <XLua.LuaFunction>(it.Current.ToString());
                            if (!dict.ContainsKey(name))
                            {
                                dict.Add(name, node);
                                Logger.wanr(it.Current, "Lua 事件注册成功");
                            }
                            else
                            {
                                Logger.wanr("Lua方法注册 失败: " + name);
                            }
                        }
                    }
                }
            }
            catch (Exception e) { Logger.wanr("Lua事件注册时出错"); Logger.wanr(e.Message); }
        }
        public XLua.LuaTable __Gen_Delegate_Imp33(object p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.PushAny(L, p0);

            int __gen_error = LuaAPI.lua_pcall(L, 1, 1, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }


            XLua.LuaTable __gen_ret = (XLua.LuaTable)translator.GetObject(L, err_func + 1, typeof(XLua.LuaTable));
            LuaAPI.lua_settop(L, err_func - 1);
            return(__gen_ret);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 5
0
        public void __Gen_Delegate_Imp1(XLua.LuaTable p0, float p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.Push(L, p0);
            LuaAPI.lua_pushnumber(L, p1);

            int __gen_error = LuaAPI.lua_pcall(L, 2, 0, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }



            LuaAPI.lua_settop(L, err_func - 1);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 6
0
        //添加方法
        public static void addEventLinstener(XLua.LuaTable scriptEnv, string priex = "do")
        {
            IEnumerator it = scriptEnv.GetKeys().GetEnumerator();

            try
            {
                while (it.MoveNext())
                {
                    object f = scriptEnv.Get <object>(it.Current.ToString());
                    if (f != null && f.GetType() == typeof(XLua.LuaFunction))
                    {
                        if (it.Current.ToString().StartsWith(priex))
                        {
                            int          name = int.Parse(it.Current.ToString().Substring(priex.Length));
                            unityAction3 unityFunction;
                            scriptEnv.Get(it.Current.ToString(), out unityFunction);
                            if (!isLinsteners(name))
                            {
                                funcs.Add(name, unityFunction);
                            }
                            Logger.wanr(it.Current, "Lua 事件注册成功");
                        }
                    }
                }
            }
            catch (Exception e) { Logger.wanr("Lua事件注册时出错"); Logger.wanr(e.Message); }
        }
Ejemplo n.º 7
0
        public XLua.LuaTable XLuaLuaTable(object self, int a, int b)
        {
#if THREAD_SAFT || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.L;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.PushAny(L, self);
            LuaAPI.xlua_pushinteger(L, a);
            LuaAPI.xlua_pushinteger(L, b);

            int __gen_error = LuaAPI.lua_pcall(L, 3, 1, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }


            XLua.LuaTable __gen_ret = (XLua.LuaTable)translator.GetObject(L, err_func + 1, typeof(XLua.LuaTable));
            LuaAPI.lua_settop(L, err_func - 1);
            return(__gen_ret);

#if THREAD_SAFT || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 8
0
        public void __Gen_Delegate_Imp3(XLua.LuaTable p0, System.Collections.Generic.List <UnityEngine.AssetBundle> p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.Push(L, p0);
            translator.Push(L, p1);

            int __gen_error = LuaAPI.lua_pcall(L, 2, 0, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }



            LuaAPI.lua_settop(L, err_func - 1);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
        public int __Gen_Delegate_Imp23(XLua.LuaTable p0)
        {
#if THREAD_SAFT || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.Push(L, p0);

            int __gen_error = LuaAPI.lua_pcall(L, 1, 1, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }


            int __gen_ret = LuaAPI.xlua_tointeger(L, err_func + 1);
            LuaAPI.lua_settop(L, err_func - 1);
            return(__gen_ret);

#if THREAD_SAFT || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 10
0
        public void __Gen_Delegate_Imp2(XLua.LuaTable p0, UnityEngine.GameObject p1, UnityEngine.Vector2 p2)
        {
#if THREAD_SAFT || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.Push(L, p0);
            translator.Push(L, p1);
            translator.PushUnityEngineVector2(L, p2);

            int __gen_error = LuaAPI.lua_pcall(L, 3, 0, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }



            LuaAPI.lua_settop(L, err_func - 1);

#if THREAD_SAFT || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 11
0
        public void SystemVoid(XLua.LuaTable self)
        {
#if THREAD_SAFT || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.L;
            int err_func   = LuaAPI.load_error_func(L, errorFuncRef);
            ObjectTranslator translator = luaEnv.translator;

            LuaAPI.lua_getref(L, luaReference);

            translator.Push(L, self);

            int __gen_error = LuaAPI.lua_pcall(L, 1, 0, err_func);
            if (__gen_error != 0)
            {
                luaEnv.ThrowExceptionFromError(err_func - 1);
            }



            LuaAPI.lua_settop(L, err_func - 1);

#if THREAD_SAFT || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 12
0
 public object[] DoFile(string filename, string chunkName = "chunk", XLua.LuaTable env = null)
 {
     if (null == m_luaVM)
     {
         return(null);
     }
     return(m_luaVM.DoString("require '" + filename + "'", chunkName, env));
 }
Ejemplo n.º 13
0
 public static XLua.LuaTable LoadMap(string mapName, Action callback = null)
 {
     XLua.LuaTable table = (XLua.LuaTable)XLuaManager.OperationTablePool.Alloc();
     table.Set("IsDone", false);
     table.Set("proess", 0);
     LoadMapInternal(table, mapName, callback);
     return(table);
 }
Ejemplo n.º 14
0
        public static Goods CreateWeddingRingByIdInfo(uint idInfo, XLua.LuaTable mateInfo)
        {
            if (idInfo <= 0)
            {
                return(null);
            }

            return(new GoodsWeddingRing(idInfo, mateInfo));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 关闭UI的附带参数 Lua table
        /// </summary>
        /// <param name="table"></param>
        public void OnUICloseMessage_LuaTable(XLua.LuaTable table)
        {
            var luabehaviour = gameObject.GetComponent <Lua.LuaBehaviour>();

            if (luabehaviour != null)
            {
                luabehaviour.OnUICloseMessage_LuaTable(table);
            }
        }
Ejemplo n.º 16
0
 public void CloseUIWithLuaParam(int ui_id, XLua.LuaTable luaParam)
 {
     if (IsAdvanced)
     {
         m_UIMgr_Adv.CloseUI(ui_id, LuaParam: luaParam);
     }
     else
     {
         XLog.PrintW("[TinaX][UIKit]当前UI系统不是高级模式,但被尝试用高级模式的 ID 形式操作UI");
         return;
     }
 }
        private static async Task LuaLoadUIInternerl(XLua.LuaTable table, UIConfig info)
        {
            GameObject result = await Addressables.InstantiateAsync(info.Path).Task;

            Canvas canvas = result.GetComponent <Canvas>();

            canvas.worldCamera = Camera.main;
            table.Set("Result", result.GetComponent <UIView>().GetUIView());
            table.Set("IsDone", true);
            table.Set("proess", 1);
            TimeManager.DelayRecycle(table, 1);
        }
Ejemplo n.º 18
0
 public IUIEntity OpenUIByPathWhitLuaParam(string ui_path, XLua.LuaTable lua_param, bool use_mask, bool close_by_mask = false)
 {
     if (IsAdvanced)
     {
         //高级模式
         return(m_UIMgr_Adv.OpenUIByPath(ui_path, use_mask, close_by_mask, LuaParam: lua_param));
     }
     else
     {
         return(m_UIMgr_Normal.OpenUIByPath(ui_path, use_mask, close_by_mask, LuaParam: lua_param));
     }
 }
Ejemplo n.º 19
0
        public void CloseUI(string ui_name, System.Object close_param = null, XLua.LuaTable LuaParam = null)
        {
            var uiPath = mGateway.UIKit_DefaultUIGroup.GetPathByName(ui_name);

            if (uiPath.IsNullOrEmpty())
            {
                XLog.PrintE("[TinaX][UIKit]关闭UI失败,无法通过UI名:" + ui_name + " 获取到对应的UI路径");
                return;
            }

            PCloseUI(uiPath, close_param: close_param, lua_close_param: LuaParam);
        }
Ejemplo n.º 20
0
        public void LoadLuaString(bool isAssetBundle, string dirType, string scriptName, string scriptPath)
        {
#if HOTFIX_ENABLE
            scriptEnv = UIManager.luaenv.NewTable();
            XLua.LuaTable meta = UIManager.luaenv.NewTable();
            meta.Set("__index", UIManager.luaenv.Global);
            scriptEnv.SetMetaTable(meta);
            meta.Dispose();
            scriptEnv.Set("self", this);

            if (dirType == "Resources")
            {
                TextAsset luaStr = Resources.Load <TextAsset>(scriptPath);
                if (luaStr != null)
                {
                    UIManager.luaenv.DoString(luaStr.text, "LuaUIBehaviour", scriptEnv);
                }
                else
                {
                    Debug.Log(scriptPath + "is null!");
                }
            }
            else if (dirType == "streamingAssetsPath")
            {
#if UNITY_ANDROID && !UNITY_EDITOR
                string str = UIFactory.GetAndoidStreamingAssetLuaScripts(scriptName);
                if (!string.IsNullOrEmpty(str))
                {
                    UIManager.luaenv.DoString(str, "LuaUIBehaviour", scriptEnv);
                }
                else
                {
                    Debug.Log(scriptPath + "is null!");
                }
#else
                LoadLuaScript(isAssetBundle, dirType, scriptName, scriptPath);
#endif
            }
            else
            {
                LoadLuaScript(isAssetBundle, dirType, scriptName, scriptPath);
            }

            scriptEnv.Get("uiFormType", out _luaUiFormType);
            scriptEnv.Get("OnInit", out luaOnInit);
            scriptEnv.Get("OnExcute", out luaOnExcute);
            scriptEnv.Get("OnDisplay", out luaOnDisplay);
            scriptEnv.Get("OnHide", out luaOnHide);
            scriptEnv.Get("OnReDisplay", out luaOnReDisplay);
            scriptEnv.Get("OnFreese", out luaOnFreese);
            scriptEnv.Get("OnRelease", out luaOnRelease);
#endif
        }
Ejemplo n.º 21
0
 public void CloseUIByPathWithLuaParam(string ui_path, XLua.LuaTable luaParam)
 {
     if (IsAdvanced)
     {
         //高级模式下,不可用UI名关闭UI
         XLog.PrintW("[TinaX][UIKit]当前UI系统为高级模式,不可使用UI名称操作UI, 请使用UI实例的句柄ID");
         return;
     }
     else
     {
         m_UIMgr_Normal.CloseUIByPath(ui_path, LuaParam: luaParam);
     }
 }
Ejemplo n.º 22
0
        public void SendMessage(XLua.LuaTable message)
        {
            if (!this.IsConnect)
            {
                UnityEngine.Debug.LogError("SendMessage this.IsConnect == False");
                return;
            }

            lock (m_sendMessages)
            {
                var luaMessage = new FastNet.LocalMessage(message);
                m_sendMessages.Enqueue(luaMessage);
            }
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 创于预览角色(使用luatable的接口)
        /// </summary>
        /// <param name="type_id"></param>
        /// <param name="uid"></param>
        /// <param name="modIdLst"></param>
        /// <param name="fashions"></param>
        /// <param name="suit_effects"></param>
        /// <param name="cbResLoad"></param>
        /// <param name="no_show_parts">不允许显示的模型部位列表(lua table)</param>
        /// <returns></returns>
        public static UnitID CreateClientModelForLua(uint type_id, uint uid, XLua.LuaTable modIdLst, XLua.LuaTable fashions, XLua.LuaTable suit_effects, Action <Actor> cbResLoad = null, XLua.LuaTable no_show_parts = null, bool is_ui_model = true, bool updateWithRawActor = true)
        {
            List <uint> model_id_list = XLua.XUtils.CreateListByLuaTable <uint, uint>(modIdLst);
            List <uint> fashions_list = XLua.XUtils.CreateListByLuaTable <uint, uint>(fashions);

            List <uint> suit_effects_list = XLua.XUtils.CreateListByLuaTable <uint, uint>(suit_effects);
            List <xc.DBAvatarPart.BODY_PART> no_show_parts_list = null;

            if (no_show_parts != null)
            {
                no_show_parts_list = XLua.XUtils.CreateListByLuaTable <uint, xc.DBAvatarPart.BODY_PART>(no_show_parts);
            }
            return(CreateClientModelForLua(type_id, uid, model_id_list, fashions_list, suit_effects_list, cbResLoad, no_show_parts_list, is_ui_model, updateWithRawActor));
        }
Ejemplo n.º 24
0
        static void GenProtocol()
        {
            LuaManager luaMgr           = new LuaManager();
            Action <string, string> gen = null;

            XLua.LuaTable protocol = null;
            try
            {
                luaMgr.Init();
                luaMgr.AddSearchPath(EditorConst.EditorDir);
                luaMgr.AddSearchPath(EditorConst.ScriptDir);
                protocol = luaMgr.GetTable("Protocol");

                List <string> files = new List <string>(Directory.GetFiles(c2s_dir));
                files.Add(notice_file);
                StringBuilder des = new StringBuilder();
                for (int i = 0; i < files.Count; i++)
                {
                    string content = File.ReadAllText(files[i]);
                    des.AppendFormat("{0}\n", content);
                }

                string rawProto  = File.ReadAllText(protoc_file);
                string desString = string.Format("return [[\n{0}]]", des.ToString());
                gen = protocol.Get <Action <string, string> >("GenProtocol");
                gen(desString, rawProto);
                gen = null;

                string messageString = protocol.Get <Func <string> >("GetMessageString")();
                string protoString   = protocol.Get <Func <string> >("GetProtoString")();
                string dir           = EditorConst.ScriptDir + "/Protocol/";
                File.WriteAllText(dir + "Descriptor.lua", desString);
                File.WriteAllText(dir + "Protocol.lua", protoString);
                File.WriteAllText(dir + "Message.lua", messageString);
            }
            catch (Exception e)
            {
                Debug.LogErrorFormat("{0}\n{1}", e.Message, e.StackTrace);
            }
            finally
            {
                protocol.Dispose();
                protocol = null;
                luaMgr.Dispose();
            }
        }
        public static XLua.LuaTable LuaLoadUI(int id)
        {
            UIConfig uIConfig = UIConfigAsset.Get(id);

            if (uIConfig != null)
            {
                XLua.LuaTable table = (XLua.LuaTable)XLuaManager.OperationTablePool.Alloc();
                table.Set("IsDone", false);
                table.Set("proess", 0);
                LuaLoadUIInternerl(table, uIConfig);
                return(table);
            }
            else
            {
                throw new Exception($"招不到UI路径{id}");
            }
        }
Ejemplo n.º 26
0
        public GoodsWeddingRing(uint idInfo, XLua.LuaTable mateInfo)
        {
            mIdInfo   = idInfo;
            mMateInfo = mateInfo;
            CreateGoodsByTypeId(DBData.gid);


            if (normal_attrs == null)
            {
                normal_attrs = new ActorAttribute();
            }
            else
            {
                normal_attrs.Clear();
            }

            if (DBData != null)
            {
                List <DBTextResource.DBAttrItem> list = DBData.normal_attrs;
                for (int i = 0; i < list.Count; i++)
                {
                    normal_attrs.Add(list[i].attr_id, list[i].attr_num);
                }
            }



            if (couple_attrs == null)
            {
                couple_attrs = new ActorAttribute();
            }
            else
            {
                couple_attrs.Clear();
            }

            if (DBData != null)
            {
                List <DBTextResource.DBAttrItem> list = DBData.couple_attrs;
                for (int i = 0; i < list.Count; i++)
                {
                    couple_attrs.Add(list[i].attr_id, list[i].attr_num);
                }
            }
        }
Ejemplo n.º 27
0
        public void __Gen_Delegate_Imp0(XLua.LuaTable p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int errFunc    = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
            ObjectTranslator translator = luaEnv.translator;
            translator.Push(L, p0);

            PCall(L, 1, 0, errFunc);



            LuaAPI.lua_settop(L, errFunc - 1);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 28
0
        public void __Gen_Delegate_Imp3(XLua.LuaTable p0, System.Collections.Generic.List <UnityEngine.AssetBundle> p1)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int errFunc    = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
            ObjectTranslator translator = luaEnv.translator;
            translator.Push(L, p0);
            translator.Push(L, p1);

            PCall(L, 2, 0, errFunc);



            LuaAPI.lua_settop(L, errFunc - 1);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 29
0
        public XLua.LuaTable __Gen_Delegate_Imp2(string p0)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int errFunc    = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
            ObjectTranslator translator = luaEnv.translator;
            LuaAPI.lua_pushstring(L, p0);

            PCall(L, 1, 1, errFunc);


            XLua.LuaTable __gen_ret = (XLua.LuaTable)translator.GetObject(L, errFunc + 1, typeof(XLua.LuaTable));
            LuaAPI.lua_settop(L, errFunc - 1);
            return(__gen_ret);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }
Ejemplo n.º 30
0
        public void __Gen_Delegate_Imp15(UnityEngine.GameObject p0, XLua.LuaTable p1, UnityEngine.CanvasGroup p2)
        {
#if THREAD_SAFE || HOTFIX_ENABLE
            lock (luaEnv.luaEnvLock)
            {
#endif
            RealStatePtr L = luaEnv.rawL;
            int errFunc    = LuaAPI.pcall_prepare(L, errorFuncRef, luaReference);
            ObjectTranslator translator = luaEnv.translator;
            translator.Push(L, p0);
            translator.Push(L, p1);
            translator.Push(L, p2);

            PCall(L, 3, 0, errFunc);



            LuaAPI.lua_settop(L, errFunc - 1);

#if THREAD_SAFE || HOTFIX_ENABLE
        }
#endif
        }