// protected static bool get_boolean(ILuaState lua, int idx, string key) { idx = LuaVM.NormalizeIndex(lua, idx); lua.GetField(idx, key); bool b = lua.ToBoolean(-1); lua.Pop(1); return(b); }
// protected static T get_member <T>(ILuaState lua, int idx, string key) { idx = LuaVM.NormalizeIndex(lua, idx); lua.GetField(idx, key); T obj = (T)lua.ToUserData(-1); lua.Pop(1); return(obj); }
// スタック上の指定インデクスから指定個数の要素をテーブルにセットする protected static void set_value_to_table(ILuaState lua, int dst, int src, int nval) { dst = LuaVM.NormalizeIndex(lua, dst); src = LuaVM.NormalizeIndex(lua, src); for (int i = 1; i <= nval; ++i) { lua.PushValue(src + i - 1); lua.RawSetI(dst, i); } }
// スタック上の指定位置にあるテーブルの要素をコピーする protected static void copy_table(ILuaState lua, int dst, int src) { dst = LuaVM.NormalizeIndex(lua, dst); src = LuaVM.NormalizeIndex(lua, src); int sz = lua.RawLen(src); for (int i = 1; i <= sz; ++i) { lua.RawGetI(src, i); lua.RawSetI(dst, i); } }
public int InvokeScriptFunction(ILuaState lua, string funcname, int narg) { if (_script != null && _script.HasFunction(funcname)) { PushSelfTable(lua); if (narg > 0) { lua.Insert(LuaVM.NormalizeIndex(lua, -(narg + 1))); } return(_script.InvokeFunction(lua, funcname, narg + 1)); } return(0); }
internal int InvokeFunction(ILuaState lua, string funcname, int narg, int selftable = LuaConstants.LUA_NOREF) { LuaVM.Assert(lua, _functions.ContainsKey(funcname)); int key = _functions[funcname]; lua.RawGetI(LuaDef.LUA_REGISTRYINDEX, key); int b = LuaVM.NormalizeIndex(lua, -(narg + 1)); lua.Insert(b); int nresult = invoke_function(lua, narg, selftable); return(nresult); }
internal int invoke_function(ILuaState lua, int narg, int selftable = LuaConstants.LUA_NOREF) { int top = lua.GetTop() - (narg + 1); // insert `traceback' function lua.PushCSharpFunction(Traceback); int b = LuaVM.NormalizeIndex(lua, -(narg + 2)); lua.Insert(b); var status = lua.PCall(narg, LuaDef.LUA_MULTRET, b); if (status != ThreadStatus.LUA_OK) { Debug.LogError(status); Debug.LogError(lua.ToString(-1)); } // remove `traceback' function lua.Remove(b); return(lua.GetTop() - top); }
public static Color ToColor(ILuaState lua, int idx) { idx = LuaVM.NormalizeIndex(lua, idx); check_value(lua, idx); int n = lua.GetTop(); lua.RawGetI(idx, 1); float r = (float)lua.ToNumber(-1); lua.RawGetI(idx, 2); float g = (float)lua.ToNumber(-1); lua.RawGetI(idx, 3); float b = (float)lua.ToNumber(-1); lua.RawGetI(idx, 4); float a = (float)lua.ToNumber(-1); lua.SetTop(n); return(new Color(r, g, b, a)); }
// protected static void set_member <T>(ILuaState lua, int idx, string key, T obj) { idx = LuaVM.NormalizeIndex(lua, idx); lua.PushLightUserData(obj); lua.SetField(idx, key); }
// protected static void set_boolean(ILuaState lua, int idx, string key, bool b) { idx = LuaVM.NormalizeIndex(lua, idx); lua.PushBoolean(b); lua.SetField(idx, key); }