private static int AddRepeatingTimer(IntPtr L)
    {
        int result;

        try
        {
            ToLua.CheckArgsCount(L, 6);
            TimerManager            timerManager = (TimerManager)ToLua.CheckObject(L, 1, typeof(TimerManager));
            GameObject              go           = (GameObject)ToLua.CheckUnityObject(L, 2, typeof(GameObject));
            string                  timerName    = ToLua.CheckString(L, 3);
            float                   delay        = (float)LuaDLL.luaL_checknumber(L, 4);
            float                   interval     = (float)LuaDLL.luaL_checknumber(L, 5);
            LuaTypes                luaTypes     = LuaDLL.lua_type(L, 6);
            TimerManager.UpdateFunc func;
            if (luaTypes != LuaTypes.LUA_TFUNCTION)
            {
                func = (TimerManager.UpdateFunc)ToLua.CheckObject(L, 6, typeof(TimerManager.UpdateFunc));
            }
            else
            {
                LuaFunction func2 = ToLua.ToLuaFunction(L, 6);
                func = (DelegateFactory.CreateDelegate(typeof(TimerManager.UpdateFunc), func2) as TimerManager.UpdateFunc);
            }
            timerManager.AddRepeatingTimer(go, timerName, delay, interval, func);
            result = 0;
        }
        catch (Exception e)
        {
            result = LuaDLL.toluaL_exception(L, e, null);
        }
        return(result);
    }