示例#1
0
        public static T CacheInvokeFunc <T>(string Script, params ScriptArg[] Args)
        {
            LuaFuncRef Func = CacheCompile(Script);

            // TODO: Single environment

            using (LuaReference Env = Lua.CreateNewEnvironment(Lua.GUIEnvironment)) {
                Lua.SetEnvironment(Func, Env);

                foreach (var Arg in Args)
                {
                    Lua.Set(Env, Arg.Name, Arg.Value);
                }

                return(Lua.Run <T>(Func));
            }
        }
示例#2
0
        static LuaFuncRef CacheCompile(string Script)
        {
            LuaFuncRef ScriptDelegate = null;

            Script = Script.Trim();

            if (Scripts.ContainsKey(Script))
            {
                ScriptDelegate = Scripts[Script];
            }
            else
            {
                ScriptDelegate = Lua.Compile(Script);
                Scripts.Add(Script, ScriptDelegate);
            }

            return(ScriptDelegate);
        }