Exemplo n.º 1
0
        /// <summary>
        /// Executes a Lua chunk and returns all the chunk's return values in an array.
        /// </summary>
        /// <param name = "chunk">Chunk to execute</param>
        /// <param name = "chunkName">Name to associate with the chunk. Defaults to "chunk".</param>
        /// <returns></returns>
        public object[] DoString(string chunk, string chunkName = "chunk")
        {
            int oldTop = LuaLib.LuaGetTop(luaState);

            executing = true;

            if (LuaLib.LuaLLoadBuffer(luaState, chunk, chunkName) == 0)
            {
                try
                {
                    if (LuaLib.LuaPCall(luaState, 0, -1, 0) == 0)
                    {
                        return(translator.PopValues(luaState, oldTop));
                    }
                    else
                    {
                        ThrowExceptionFromError(oldTop);
                    }
                }
                finally
                {
                    executing = false;
                }
            }
            else
            {
                ThrowExceptionFromError(oldTop);
            }

            return(null);                               // Never reached - keeps compiler happy
        }
Exemplo n.º 2
0
 public static void LoadImportExpand(this Lua lua)
 {
     int result = LuaLib.LuaLLoadBuffer(lua.LuaState, LunaPackage, "Import.lua(in Import.cs)");
     if (result != 0)
         throw new NotSupportedException("Import.LoadExpand failed");
     
     LuaLib.LuaPCall (lua.LuaState, 0, -1, 0);
 }
Exemplo n.º 3
0
        public static int Searcher_UnityLua(LuaState luaState)
        {
            string fileName = LuaLib.LuaToString(luaState, 1);
            fileName = fileName.Replace('.', '/');
            fileName += ".lua";

            var file = LoadAsset(fileName) as UnityEngine.TextAsset;
            if(file == null)
                return 0;

            var data = file.bytes;
            LuaLib.LuaLLoadBuffer(luaState, data, fileName);

            return 1;
        }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name = "chunk"></param>
        /// <param name = "name"></param>
        /// <returns></returns>
        public LuaFunction LoadString(byte[] chunk, string name)
        {
            int oldTop = LuaLib.LuaGetTop(luaState);

            executing = true;

            try {
                if (LuaLib.LuaLLoadBuffer(luaState, chunk, name) != 0)
                {
                    ThrowExceptionFromError(oldTop);
                }
            } finally {
                executing = false;
            }

            var result = translator.GetFunction(luaState, -1);

            translator.PopValues(luaState, oldTop);
            return(result);
        }
Exemplo n.º 5
0
Arquivo: Lua.cs Projeto: zwwl0801/NLua
        /// <summary>
        /// Executes a Lua chunk and returns all the chunk's return values in an array.
        /// </summary>
        /// <param name = "chunk">Chunk to execute</param>
        /// <param name = "chunkName">Name to associate with the chunk. Defaults to "chunk".</param>
        /// <returns></returns>
        public object[] DoString(byte[] chunk, string chunkName = "chunk")
        {
            int oldTop = LuaLib.LuaGetTop(luaState);

            executing = true;

            if (LuaLib.LuaLLoadBuffer(luaState, chunk, chunkName) == 0)
            {
                int errfunction = 0;
                if (UseTraceback)
                {
                    errfunction = PushDebugTraceback(luaState, 0);
                    oldTop++;
                }

                try
                {
                    if (LuaLib.LuaPCall(luaState, 0, -1, errfunction) == 0)
                    {
                        return(translator.PopValues(luaState, oldTop));
                    }
                    else
                    {
                        ThrowExceptionFromError(oldTop);
                    }
                }
                finally
                {
                    executing = false;
                }
            }
            else
            {
                ThrowExceptionFromError(oldTop);
            }

            return(null);                               // Never reached - keeps compiler happy
        }