/* * Pushes the object into the Lua stack according to its type. */ internal void push(IntPtr luaState, object o) { if (o == null) { LuaDLL.lua_pushnil(luaState); return; } Type t = o.GetType(); if (t == typeof(bool)) { bool b = (bool)o; LuaDLL.lua_pushboolean(luaState, b); } else if (t == typeof(UnityEngine.Object)) { UnityEngine.Object obj = (UnityEngine.Object)o; if (obj == null) { LuaDLL.lua_pushnil(luaState); return; } else { pushObject(luaState, o, "luaNet_metatable"); } } else if (t.IsEnum) { LuaScriptMgr.PushEnum(luaState, o); } else if (t.IsArray) { LuaScriptMgr.PushArray(luaState, o); } else if (t.IsPrimitive) { double d = Convert.ToDouble(o); LuaDLL.lua_pushnumber(luaState, d); } else if (t == typeof(string)) { string str = (string)o; LuaDLL.lua_pushstring(luaState, str); } else if (IsILua(o)) { #if !__NOGEN__ (((ILuaGeneratedType)o).__luaInterface_getLuaTable()).push(luaState); #endif } else if (t == typeof(LuaTable)) { ((LuaTable)o).push(luaState); } else if (t == typeof(LuaCSFunction)) { pushFunction(luaState, (LuaCSFunction)o); } else if (t == typeof(LuaFunction)) { ((LuaFunction)o).push(luaState); } else if (t.IsValueType) { int index = addObject(o); PushNewValueObject(luaState, o, index, "luaNet_metatable"); } else { pushObject(luaState, o, "luaNet_metatable"); } }