lua_setfield() private method

private lua_setfield ( IntPtr luaState, int stackPos, string name ) : void
luaState System.IntPtr
stackPos int
name string
return void
示例#1
0
        public static void OpenLibs(IntPtr L)
        {
            if (!SNG_LUA_DEBUG)
            {
                AddLuaLoader(L);
            }

            LuaDLL.tolua_atpanic(L, Panic);
            LuaDLL.tolua_pushcfunction(L, Print);
            LuaDLL.lua_setglobal(L, "print");
            LuaDLL.tolua_pushcfunction(L, DoFile);
            LuaDLL.lua_setglobal(L, "dofile");
            LuaDLL.tolua_pushcfunction(L, LoadFile);
            LuaDLL.lua_setglobal(L, "loadfile");

            LuaDLL.lua_getglobal(L, "tolua");

            LuaDLL.lua_pushstring(L, "isnull");
            LuaDLL.lua_pushcfunction(L, IsNull);
            LuaDLL.lua_rawset(L, -3);

            LuaDLL.lua_pushstring(L, "typeof");
            LuaDLL.lua_pushcfunction(L, GetClassType);
            LuaDLL.lua_rawset(L, -3);

            LuaDLL.lua_pushstring(L, "tolstring");
            LuaDLL.tolua_pushcfunction(L, BufferToString);
            LuaDLL.lua_rawset(L, -3);

            LuaDLL.lua_pushstring(L, "toarray");
            LuaDLL.tolua_pushcfunction(L, TableToArray);
            LuaDLL.lua_rawset(L, -3);

            //手动模拟gc
            //LuaDLL.lua_pushstring(L, "collect");
            //LuaDLL.lua_pushcfunction(L, Collect);
            //LuaDLL.lua_rawset(L, -3);

            int meta = LuaStatic.GetMetaReference(L, typeof(NullObject));

            LuaDLL.lua_pushstring(L, "null");
            LuaDLL.tolua_pushnewudata(L, meta, 1);
            LuaDLL.lua_rawset(L, -3);
            LuaDLL.lua_pop(L, 1);

            LuaDLL.tolua_pushudata(L, 1);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "null");

#if UNITY_EDITOR
            GetToLuaInstanceID();
            GetConsoleWindowListView();
#endif
        }
示例#2
0
文件: LuaDLL.cs 项目: sakyaer/emoji
        public static void lua_pushvector2(IntPtr luaState, Vector2 vector2)
        {
            LuaDLL.lua_newtable(luaState);
            LuaDLL.lua_pushnumber(luaState, (double)vector2.x);
            LuaDLL.lua_setfield(luaState, -2, "x");
            LuaDLL.lua_pushnumber(luaState, (double)vector2.y);
            LuaDLL.lua_setfield(luaState, -2, "y");

            lua_setmetatable(luaState, "Vector2");

            LuaDLL.lua_pushvalue(luaState, -1);
        }
示例#3
0
        public static void Register(IntPtr L)
        {
            int oldTop = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getglobal(L, "Director");

            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Director");
                LuaDLL.lua_getglobal(L, "Director");
            }

            LuaDLL.lua_pushstdcallcfunction(L, LuaDirector.GetInstance, "GetInstance");
            LuaDLL.lua_pushstdcallcfunction(L, LuaDirector.LogTest, "LogTest");
            LuaDLL.lua_pushcsharpproperty(L, "value", LuaDirector.get_value, LuaDirector.set_value);
            LuaDLL.lua_pushcsharpproperty(L, "luaState", LuaDirector.get_luaState, null);
            LuaDLL.lua_pushcsharpproperty(L, "scheduler", LuaDirector.get_scheduler, null);
            LuaDLL.lua_pushcsharpproperty(L, "uiManager", LuaDirector.get_uiManager, null);
            LuaDLL.lua_pushcsharpproperty(L, "eventDispatcher", LuaDirector.get_eventDispatcher, null);

            LuaDLL.lua_getglobal(L, "readIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__index");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_getglobal(L, "writeIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__newindex");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_pushstdcallcfunction(L, new LuaCSFunction(LuaStatic.GameObjectGC));
            LuaDLL.lua_setfield(L, -2, "__gc");
            LuaDLL.lua_getglobal(L, "MonoBehaviour");
            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "MonoBehaviour");
                LuaDLL.lua_getglobal(L, "MonoBehaviour");
                LuaDLL.lua_setmetatable(L, -2);
            }
            else
            {
                LuaDLL.lua_setmetatable(L, -2);
            }

            LuaDLL.lua_settop(L, oldTop);
            LuaStatic.AddTypeDict(typeof(Director));
        }
示例#4
0
文件: LuaDLL.cs 项目: sakyaer/emoji
        public static void lua_pushcsharpproperty(IntPtr luaState, string propertyName, LuaCSFunction get, LuaCSFunction set)
        {
            LuaDLL.lua_newtable(luaState);
            LuaDLL.lua_pushstdcallcfunction(luaState, get);
            LuaDLL.lua_setfield(luaState, -2, "get");

            if (set != null)
            {
                LuaDLL.lua_pushstdcallcfunction(luaState, set);
                LuaDLL.lua_setfield(luaState, -2, "set");
            }

            LuaDLL.lua_setfield(luaState, -2, propertyName);
        }
示例#5
0
        static public void OpenLibs(IntPtr L)
        {
            LuaDLL.lua_atpanic(L, Panic);
            LuaDLL.lua_pushstdcallcfunction(L, Print);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "print");
            LuaDLL.lua_pushstdcallcfunction(L, DoFile);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "dofile");

            //#if UNITY_EDITOR
            //AddLuaLoader(L);
            //#else
            AddLuaLoader2(L);
            //#endif
        }
示例#6
0
        public static void Register(IntPtr L)
        {
            int oldTop = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getglobal(L, "Scheduler");

            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Scheduler");
                LuaDLL.lua_getglobal(L, "Scheduler");
            }

            LuaDLL.lua_pushstdcallcfunction(L, LuaScheduler.MakeInstance, "MakeInstance");
            LuaDLL.lua_pushstdcallcfunction(L, LuaScheduler.SchedulerCSFun, "SchedulerCSFun");
            LuaDLL.lua_pushstdcallcfunction(L, LuaScheduler.UnSchedulerCSFun, "UnSchedulerCSFun");
            LuaDLL.lua_pushstdcallcfunction(L, LuaScheduler.SetTimeOut, "SetTimeOut");
            LuaDLL.lua_pushstdcallcfunction(L, LuaScheduler.ExecuteCoroutine, "ExecuteCoroutine");

            LuaDLL.lua_getglobal(L, "readIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__index");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_getglobal(L, "writeIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__newindex");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_pushstdcallcfunction(L, new LuaCSFunction(LuaStatic.GameObjectGC));
            LuaDLL.lua_setfield(L, -2, "__gc");
            LuaDLL.lua_getglobal(L, "MonoBehaviour");
            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "MonoBehaviour");
                LuaDLL.lua_getglobal(L, "MonoBehaviour");
                LuaDLL.lua_setmetatable(L, -2);
            }
            else
            {
                LuaDLL.lua_setmetatable(L, -2);
            }

            LuaDLL.lua_settop(L, oldTop);
            LuaStatic.AddTypeDict(typeof(Scheduler));
        }
示例#7
0
文件: LuaDLL.cs 项目: sakyaer/emoji
        public static void lua_pushvector4(IntPtr luaState, Vector4 v)
        {
            LuaDLL.lua_newtable(luaState);
            LuaDLL.lua_pushnumber(luaState, (double)v.x);
            LuaDLL.lua_setfield(luaState, -2, "x");
            LuaDLL.lua_pushnumber(luaState, (double)v.y);
            LuaDLL.lua_setfield(luaState, -2, "y");
            LuaDLL.lua_pushnumber(luaState, (double)v.z);
            LuaDLL.lua_setfield(luaState, -2, "z");
            LuaDLL.lua_pushnumber(luaState, (double)v.w);
            LuaDLL.lua_setfield(luaState, -2, "w");

            lua_setmetatable(luaState, "Vector4");

            LuaDLL.lua_pushvalue(luaState, -1);
        }
示例#8
0
文件: LuaDLL.cs 项目: sakyaer/emoji
        public static void lua_pushrect(IntPtr luaState, Rect rect)
        {
            LuaDLL.lua_newtable(luaState);
            LuaDLL.lua_pushnumber(luaState, (double)rect.x);
            LuaDLL.lua_setfield(luaState, -2, "x");
            LuaDLL.lua_pushnumber(luaState, (double)rect.y);
            LuaDLL.lua_setfield(luaState, -2, "y");
            LuaDLL.lua_pushnumber(luaState, (double)rect.width);
            LuaDLL.lua_setfield(luaState, -2, "width");
            LuaDLL.lua_pushnumber(luaState, (double)rect.height);
            LuaDLL.lua_setfield(luaState, -2, "height");

            lua_setmetatable(luaState, "Rect");

            LuaDLL.lua_pushvalue(luaState, -1);
        }
示例#9
0
        public static void Register(IntPtr L)
        {
            int oldTop = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getglobal(L, "Object");

            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Object");
                LuaDLL.lua_getglobal(L, "Object");
            }

            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.New, "New");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.Destroy, "Destroy");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.DestroyImmediate, "DestroyImmediate");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.FindObjectsOfType, "FindObjectsOfType");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.DontDestroyOnLoad, "DontDestroyOnLoad");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.DestroyObject, "DestroyObject");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.ToString, "ToString");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.Equals, "Equals");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.GetHashCode, "GetHashCode");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.GetInstanceID, "GetInstanceID");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.Instantiate, "Instantiate");
            LuaDLL.lua_pushstdcallcfunction(L, LuaObject.FindObjectOfType, "FindObjectOfType");
            LuaDLL.lua_pushcsharpproperty(L, "name", LuaObject.get_name, LuaObject.set_name);
            LuaDLL.lua_pushcsharpproperty(L, "hideFlags", LuaObject.get_hideFlags, LuaObject.set_hideFlags);

            LuaDLL.lua_getglobal(L, "readIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__index");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_getglobal(L, "writeIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__newindex");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_pushstdcallcfunction(L, new LuaCSFunction(LuaStatic.GameObjectGC));
            LuaDLL.lua_setfield(L, -2, "__gc");

            LuaDLL.lua_settop(L, oldTop);
            LuaStatic.AddTypeDict(typeof(UnityEngine.Object));
        }
示例#10
0
        public static void OpenLibs(IntPtr L)
        {
            LuaDLL.lua_getglobal(L, "tolua");
            LuaDLL.lua_pushstring(L, "isnull");
            LuaDLL.lua_pushcfunction(L, new LuaCSFunction(ToLua.IsNull));
            LuaDLL.lua_rawset(L, -3);
            LuaDLL.lua_pushstring(L, "tolstring");
            LuaDLL.tolua_pushcfunction(L, new LuaCSFunction(ToLua.BufferToString));
            LuaDLL.lua_rawset(L, -3);
            LuaDLL.lua_pushstring(L, "typeof");
            LuaDLL.lua_pushcfunction(L, new LuaCSFunction(ToLua.GetClassType));
            LuaDLL.lua_rawset(L, -3);
            int metaReference = LuaStatic.GetMetaReference(L, typeof(NullObject));

            LuaDLL.lua_pushstring(L, "null");
            LuaDLL.tolua_pushnewudata(L, metaReference, 1);
            LuaDLL.lua_rawset(L, -3);
            LuaDLL.lua_pop(L, 1);
            LuaDLL.tolua_pushudata(L, 1);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "null");
        }
示例#11
0
        public static void Register(IntPtr L)
        {
            int oldTop = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getglobal(L, "Resources");

            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Resources");
                LuaDLL.lua_getglobal(L, "Resources");
            }

            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.New, "New");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.FindObjectsOfTypeAll, "FindObjectsOfTypeAll");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.Load, "Load");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.LoadAsync, "LoadAsync");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.LoadAll, "LoadAll");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.GetBuiltinResource, "GetBuiltinResource");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.UnloadAsset, "UnloadAsset");
            LuaDLL.lua_pushstdcallcfunction(L, LuaResources.UnloadUnusedAssets, "UnloadUnusedAssets");

            LuaDLL.lua_getglobal(L, "readIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__index");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_getglobal(L, "writeIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__newindex");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_pushstdcallcfunction(L, new LuaCSFunction(LuaStatic.GameObjectGC));
            LuaDLL.lua_setfield(L, -2, "__gc");

            LuaDLL.lua_settop(L, oldTop);
            LuaStatic.AddTypeDict(typeof(UnityEngine.Resources));
        }
示例#12
0
        public LuaState()
        {
            // Create State
            L = LuaDLL.luaL_newstate();

            // Create LuaInterface library
            LuaDLL.luaL_openlibs(L);
            LuaDLL.lua_pushstring(L, "LUAINTERFACE LOADED");
            LuaDLL.lua_pushboolean(L, true);
            LuaDLL.lua_settable(L, (int)LuaIndexes.LUA_REGISTRYINDEX);
            LuaDLL.lua_newtable(L);

            LuaDLL.lua_setglobal(L, "luanet");
            LuaDLL.lua_pushvalue(L, (int)LuaIndexes.LUA_GLOBALSINDEX);  //鍘嬪叆浜哶G琛?
            LuaDLL.lua_getglobal(L, "luanet");
            LuaDLL.lua_pushstring(L, "getmetatable");
            LuaDLL.lua_getglobal(L, "getmetatable");
            LuaDLL.lua_settable(L, -3);
            LuaDLL.lua_pushstring(L, "rawget");
            LuaDLL.lua_getglobal(L, "rawget");
            LuaDLL.lua_settable(L, -3);
            LuaDLL.lua_pushstring(L, "rawset");
            LuaDLL.lua_getglobal(L, "rawset");
            LuaDLL.lua_settable(L, -3);

            // Set luanet as global for object translator
            LuaDLL.lua_replace(L, (int)LuaIndexes.LUA_GLOBALSINDEX); //鐢╨uanet鏇挎崲_G琛?
            translator = new ObjectTranslator(this, L);
            LuaDLL.lua_replace(L, (int)LuaIndexes.LUA_GLOBALSINDEX); //鎭㈠_G琛?

            translator.PushTranslator(L);

            // We need to keep this in a managed reference so the delegate doesn't get garbage collected
            panicCallback = new LuaCSFunction(LuaStatic.panic);
            LuaDLL.lua_atpanic(L, panicCallback);

            printFunction = new LuaCSFunction(LuaStatic.print);
            LuaDLL.lua_pushstdcallcfunction(L, printFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "lprint");

            warnFunction = new LuaCSFunction(LuaStatic.warn);
            LuaDLL.lua_pushstdcallcfunction(L, warnFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "lwarn");

            breakFunction = new LuaCSFunction(LuaStatic.breakFunc);
            LuaDLL.lua_pushstdcallcfunction(L, breakFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "breakpoint");

            loadfileFunction = new LuaCSFunction(LuaStatic.loadfile);
            LuaDLL.lua_pushstdcallcfunction(L, loadfileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "loadfile");

            dofileFunction = new LuaCSFunction(LuaStatic.dofile);
            LuaDLL.lua_pushstdcallcfunction(L, dofileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "dofile");

            pcallFunction = new LuaCSFunction(LuaStatic.pcall);
            LuaDLL.lua_pushstdcallcfunction(L, pcallFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "pcall");

            LuaDLL.lua_pushstdcallcfunction(L, LuaStatic.errorFunc_traceback);
            errorFuncRef = LuaDLL.luaL_ref(L, LuaIndexes.LUA_REGISTRYINDEX);

            // Insert our loader FIRST
            loaderFunction = new LuaCSFunction(LuaStatic.loader);
            LuaDLL.lua_pushstdcallcfunction(L, loaderFunction);
            int loaderFunc = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getfield(L, LuaIndexes.LUA_GLOBALSINDEX, "package");
            LuaDLL.lua_getfield(L, -1, "loaders");
            int loaderTable = LuaDLL.lua_gettop(L);

            // Shift table elements right
            for (int e = LuaDLL.luaL_getn(L, loaderTable) + 1; e > 1; e--)
            {
                LuaDLL.lua_rawgeti(L, loaderTable, e - 1);
                LuaDLL.lua_rawseti(L, loaderTable, e);
            }
            LuaDLL.lua_pushvalue(L, loaderFunc);
            LuaDLL.lua_rawseti(L, loaderTable, 1);
            LuaDLL.lua_settop(L, 0);

            DoString(LuaStatic.init_luanet);
            tracebackFunction = new LuaCSFunction(LuaStatic.traceback);
        }
示例#13
0
 public void LuaSetField(int idx, string key)
 {
     LuaDLL.lua_setfield(L, idx, key);
 }
示例#14
0
        public static void Register(IntPtr L)
        {
            int oldTop = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getglobal(L, "Transform");

            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Transform");
                LuaDLL.lua_getglobal(L, "Transform");
            }

            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.SetParent, "SetParent");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.Translate, "Translate");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.Rotate, "Rotate");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.RotateAround, "RotateAround");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.LookAt, "LookAt");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.TransformDirection, "TransformDirection");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.InverseTransformDirection, "InverseTransformDirection");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.TransformVector, "TransformVector");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.InverseTransformVector, "InverseTransformVector");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.TransformPoint, "TransformPoint");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.InverseTransformPoint, "InverseTransformPoint");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.DetachChildren, "DetachChildren");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.SetAsFirstSibling, "SetAsFirstSibling");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.SetAsLastSibling, "SetAsLastSibling");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.SetSiblingIndex, "SetSiblingIndex");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.GetSiblingIndex, "GetSiblingIndex");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.Find, "Find");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.IsChildOf, "IsChildOf");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.FindChild, "FindChild");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.GetEnumerator, "GetEnumerator");
            LuaDLL.lua_pushstdcallcfunction(L, LuaTransform.GetChild, "GetChild");
            LuaDLL.lua_pushcsharpproperty(L, "position", LuaTransform.get_position, LuaTransform.set_position);
            LuaDLL.lua_pushcsharpproperty(L, "localPosition", LuaTransform.get_localPosition, LuaTransform.set_localPosition);
            LuaDLL.lua_pushcsharpproperty(L, "eulerAngles", LuaTransform.get_eulerAngles, LuaTransform.set_eulerAngles);
            LuaDLL.lua_pushcsharpproperty(L, "localEulerAngles", LuaTransform.get_localEulerAngles, LuaTransform.set_localEulerAngles);
            LuaDLL.lua_pushcsharpproperty(L, "right", LuaTransform.get_right, LuaTransform.set_right);
            LuaDLL.lua_pushcsharpproperty(L, "up", LuaTransform.get_up, LuaTransform.set_up);
            LuaDLL.lua_pushcsharpproperty(L, "forward", LuaTransform.get_forward, LuaTransform.set_forward);
            LuaDLL.lua_pushcsharpproperty(L, "rotation", LuaTransform.get_rotation, LuaTransform.set_rotation);
            LuaDLL.lua_pushcsharpproperty(L, "localRotation", LuaTransform.get_localRotation, LuaTransform.set_localRotation);
            LuaDLL.lua_pushcsharpproperty(L, "localScale", LuaTransform.get_localScale, LuaTransform.set_localScale);
            LuaDLL.lua_pushcsharpproperty(L, "parent", LuaTransform.get_parent, LuaTransform.set_parent);
            LuaDLL.lua_pushcsharpproperty(L, "worldToLocalMatrix", LuaTransform.get_worldToLocalMatrix, null);
            LuaDLL.lua_pushcsharpproperty(L, "localToWorldMatrix", LuaTransform.get_localToWorldMatrix, null);
            LuaDLL.lua_pushcsharpproperty(L, "root", LuaTransform.get_root, null);
            LuaDLL.lua_pushcsharpproperty(L, "childCount", LuaTransform.get_childCount, null);
            LuaDLL.lua_pushcsharpproperty(L, "lossyScale", LuaTransform.get_lossyScale, null);
            LuaDLL.lua_pushcsharpproperty(L, "hasChanged", LuaTransform.get_hasChanged, LuaTransform.set_hasChanged);

            LuaDLL.lua_getglobal(L, "readIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__index");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_getglobal(L, "writeIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__newindex");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_pushstdcallcfunction(L, new LuaCSFunction(LuaStatic.GameObjectGC));
            LuaDLL.lua_setfield(L, -2, "__gc");
            LuaDLL.lua_getglobal(L, "Component");
            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Component");
                LuaDLL.lua_getglobal(L, "Component");
                LuaDLL.lua_setmetatable(L, -2);
            }
            else
            {
                LuaDLL.lua_setmetatable(L, -2);
            }

            LuaDLL.lua_settop(L, oldTop);
            LuaStatic.AddTypeDict(typeof(UnityEngine.Transform));
        }
示例#15
0
 public static void lua_setglobal(IntPtr luaState, string name)
 {
     LuaDLL.lua_setfield(luaState, LuaIndexes.LUA_GLOBALSINDEX, name);
 }
示例#16
0
        public static void Register(IntPtr L)
        {
            int oldTop = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getglobal(L, "GameObject");

            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "GameObject");
                LuaDLL.lua_getglobal(L, "GameObject");
            }

            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.New, "New");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.CreatePrimitive, "CreatePrimitive");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.GetComponent, "GetComponent");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.GetComponentInChildren, "GetComponentInChildren");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.GetComponentInParent, "GetComponentInParent");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.GetComponents, "GetComponents");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.GetComponentsInChildren, "GetComponentsInChildren");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.GetComponentsInParent, "GetComponentsInParent");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.SetActive, "SetActive");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.CompareTag, "CompareTag");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.FindGameObjectWithTag, "FindGameObjectWithTag");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.FindWithTag, "FindWithTag");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.FindGameObjectsWithTag, "FindGameObjectsWithTag");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.SendMessageUpwards, "SendMessageUpwards");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.SendMessage, "SendMessage");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.BroadcastMessage, "BroadcastMessage");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.AddComponent, "AddComponent");
            LuaDLL.lua_pushstdcallcfunction(L, LuaGameObject.Find, "Find");
            LuaDLL.lua_pushcsharpproperty(L, "transform", LuaGameObject.get_transform, null);
            LuaDLL.lua_pushcsharpproperty(L, "layer", LuaGameObject.get_layer, LuaGameObject.set_layer);
            LuaDLL.lua_pushcsharpproperty(L, "activeSelf", LuaGameObject.get_activeSelf, null);
            LuaDLL.lua_pushcsharpproperty(L, "activeInHierarchy", LuaGameObject.get_activeInHierarchy, null);
            LuaDLL.lua_pushcsharpproperty(L, "isStatic", LuaGameObject.get_isStatic, LuaGameObject.set_isStatic);
            LuaDLL.lua_pushcsharpproperty(L, "tag", LuaGameObject.get_tag, LuaGameObject.set_tag);
            LuaDLL.lua_pushcsharpproperty(L, "gameObject", LuaGameObject.get_gameObject, null);

            LuaDLL.lua_getglobal(L, "readIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__index");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_getglobal(L, "writeIndex");
            LuaDLL.lua_pushvalue(L, -1);
            LuaDLL.lua_setfield(L, -3, "__newindex");
            LuaDLL.lua_pop(L, 1);

            LuaDLL.lua_pushstdcallcfunction(L, new LuaCSFunction(LuaStatic.GameObjectGC));
            LuaDLL.lua_setfield(L, -2, "__gc");
            LuaDLL.lua_getglobal(L, "Object");
            if (LuaDLL.lua_isnil(L, -1))
            {
                LuaDLL.lua_pop(L, 1);
                LuaDLL.lua_newtable(L);
                LuaDLL.lua_setglobal(L, "Object");
                LuaDLL.lua_getglobal(L, "Object");
                LuaDLL.lua_setmetatable(L, -2);
            }
            else
            {
                LuaDLL.lua_setmetatable(L, -2);
            }

            LuaDLL.lua_settop(L, oldTop);
            LuaStatic.AddTypeDict(typeof(UnityEngine.GameObject));
        }
示例#17
0
        public LuaState()
        {
            // Create State
            L = LuaDLL.luaL_newstate();

            // Create LuaInterface library
            LuaDLL.luaL_openlibs(L);
            LuaDLL.lua_pushstring(L, "LUAINTERFACE LOADED");
            LuaDLL.lua_pushboolean(L, true);
            LuaDLL.lua_settable(L, (int)LuaIndexes.LUA_REGISTRYINDEX);
            LuaDLL.lua_newtable(L);
            LuaDLL.lua_setglobal(L, "luanet");
            LuaDLL.lua_pushvalue(L, (int)LuaIndexes.LUA_GLOBALSINDEX);
            LuaDLL.lua_getglobal(L, "luanet");
            LuaDLL.lua_pushstring(L, "getmetatable");
            LuaDLL.lua_getglobal(L, "getmetatable");
            LuaDLL.lua_settable(L, -3);

            // Set luanet as global for object translator
            LuaDLL.lua_replace(L, (int)LuaIndexes.LUA_GLOBALSINDEX);
            translator = new ObjectTranslator(this, L);
            LuaDLL.lua_replace(L, (int)LuaIndexes.LUA_GLOBALSINDEX);

            GCHandle handle  = GCHandle.Alloc(translator, GCHandleType.Pinned);
            IntPtr   thisptr = GCHandle.ToIntPtr(handle);

            LuaDLL.lua_pushlightuserdata(L, thisptr);
            LuaDLL.lua_setglobal(L, "_translator");

            // We need to keep this in a managed reference so the delegate doesn't get garbage collected
            panicCallback = new LuaCSFunction(LuaStatic.panic);
            LuaDLL.lua_atpanic(L, panicCallback);

            printFunction = new LuaCSFunction(LuaStatic.print);
            LuaDLL.lua_pushstdcallcfunction(L, printFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "print");

            loadfileFunction = new LuaCSFunction(LuaStatic.loadfile);
            LuaDLL.lua_pushstdcallcfunction(L, loadfileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "loadfile");

            dofileFunction = new LuaCSFunction(LuaStatic.dofile);
            LuaDLL.lua_pushstdcallcfunction(L, dofileFunction);
            LuaDLL.lua_setfield(L, LuaIndexes.LUA_GLOBALSINDEX, "dofile");

            // Insert our loader FIRST
            loaderFunction = new LuaCSFunction(LuaStatic.loader);
            LuaDLL.lua_pushstdcallcfunction(L, loaderFunction);
            int loaderFunc = LuaDLL.lua_gettop(L);

            LuaDLL.lua_getfield(L, LuaIndexes.LUA_GLOBALSINDEX, "package");
            LuaDLL.lua_getfield(L, -1, "loaders");
            int loaderTable = LuaDLL.lua_gettop(L);

            // Shift table elements right
            for (int e = LuaDLL.luaL_getn(L, loaderTable) + 1; e > 1; e--)
            {
                LuaDLL.lua_rawgeti(L, loaderTable, e - 1);
                LuaDLL.lua_rawseti(L, loaderTable, e);
            }
            LuaDLL.lua_pushvalue(L, loaderFunc);
            LuaDLL.lua_rawseti(L, loaderTable, 1);
            LuaDLL.lua_settop(L, 0);

            DoString(LuaStatic.init_luanet);
            tracebackFunction = new LuaCSFunction(LuaStatic.traceback);
        }