public static bool NewTable(ScriptState luaState, string fullPath) { var runtime = LuaRuntimePool.GetRuntime(luaState); var oldTop = LuaCore.GetTop(luaState); var paths = GetSearchPaths(fullPath); var tableName = paths[0]; if (paths.Length > 1) { LuaCore.GetGlobal(luaState, paths[0]); if (!TableNotFound(runtime, luaState, -1, paths[0])) { return(false); } for (int i = 1; i < paths.Length - 1; i++) { LuaCore.PushString(luaState, paths[i]); LuaCore.GetTable(luaState, -2); if (!TableNotFound(runtime, luaState, -1, paths[i])) { return(false); } } tableName = paths[paths.Length - 1]; } LuaCore.CreateTable(luaState); LuaCore.SetGlobal(luaState, tableName); LuaCore.SetTop(luaState, oldTop); return(true); }
public override int Reg2Env() { var luaState = State; LuaCore.PushString(luaState, GlobalName); LuaCore.CreateTable(luaState); LuaCore.CreateTable(luaState); LuaCore.PushString(luaState, "__mode"); LuaCore.PushString(luaState, "v"); LuaCore.SetTable(luaState, -3); LuaCore.SetMetatable(luaState, -2); LuaCore.SetGlobalTable(luaState); return(1); }