コード例 #1
0
 public void CallFunction(string func)
 {
     if (luaScript.Globals[func] != null)
     {
         luaScript.Call(luaScript.Globals[func]);
     }
 }
コード例 #2
0
    /// <summary>
    /// hook called from LuaUIButtons
    /// </summary>
    void OnLuaUIButtonClick(GameObject button)
    {
        foreach (LuaHandler luaHandler in FindObjectsOfType <LuaHandler>())
        {
            MoonSharp.Interpreter.Script luaScript = luaHandler.luaScript;

            if (luaScript != null && luaScript.Globals["OnUIButtonClick"] != null)
            {
                luaScript.Call(luaScript.Globals["OnUIButtonClick"], Task.GetOrMakeLuaUIObject(button));
            }
        }
    }
コード例 #3
0
ファイル: Chapter2.cs プロジェクト: cyecp/moonsharp
		public static double MoonSharpFactorial2()
		{
			string scriptCode = @"    
		-- defines a factorial function
		function fact (n)
			if (n == 0) then
				return 1
			else
				return n*fact(n - 1)
			end
		end";

			Script script = new Script();

			script.DoString(scriptCode);

			DynValue res = script.Call(script.Globals["fact"], 4);

			return res.Number;
		}
コード例 #4
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string scriptCode = "function f(a,b) " + Chunk.Text + " end";

            var script = new Script();

            try
            {
                script.DoString(scriptCode);

                DynValue luaFunction = script.Globals.Get("f");

                // Type conversion for the parameters is optional
                DynValue res = script.Call(
                                        luaFunction,
                                        DynValue.NewString(ParameterA.Text).CastToNumber(),
                                        Double.Parse(ParameterB.Text));

                // Check the return type.
                if (res.Type != DataType.Number)
                {
                    throw new InvalidCastException("Invalid return type: " + res.Type.ToString());
                }

                Result.Foreground = new SolidColorBrush(Colors.Black);

                // Type conversion swallows exceptions.
                Result.Text = res.Number.ToString();
                // Result.Text = res.CastToNumber().ToString();
            }
            catch (Exception ex)
            {
                Result.Foreground = new SolidColorBrush(Colors.Red);
                Result.Text = ex.Message;
            }
        }
コード例 #5
0
 public void ExecuteDraw()
 {
     Lua.Call(DrawHandle);
 }
コード例 #6
0
ファイル: AsyncExtensions.cs プロジェクト: xiexin36/moonsharp
 /// <summary>
 /// Asynchronously calls the specified function.
 ///
 /// This method is supported only on .NET 4.x and .NET 4.x PCL targets.
 /// </summary>
 /// <param name="script">The script.</param>
 /// <param name="function">The Lua/MoonSharp function to be called</param>
 /// <param name="args">The arguments to pass to the function.</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentException">Thrown if function is not of DataType.Function</exception>
 public static Task <DynValue> CallAsync(this Script script, object function, params object[] args)
 {
     return(ExecAsync(() => script.Call(function, args)));
 }
コード例 #7
0
ファイル: AsyncExtensions.cs プロジェクト: xiexin36/moonsharp
 /// <summary>
 /// Asynchronously calls the specified function.
 /// This method is supported only on .NET 4.x and .NET 4.x PCL targets.
 /// </summary>
 /// <param name="script">The script.</param>
 /// <param name="function">The Lua/MoonSharp function to be called</param>
 /// <returns></returns>
 /// <exception cref="System.ArgumentException">Thrown if function is not of DataType.Function</exception>
 public static Task <DynValue> CallAsync(this Script script, object function)
 {
     return(ExecAsync(() => script.Call(function)));
 }
コード例 #8
0
ファイル: Program.cs プロジェクト: treytomes/ASCIIWorld2
		private static void CallbackTest()
		{
			var scriptCode = @"    
				-- defines a factorial function
				function fact (n)
					if (n == 0) then
						return 1
					else
						return Mul(n, fact(n - 1));
					end
				end";

			var script = new Script();
			script.Globals["Mul"] = (Func<int, int, int>)Mul;
			script.DoString(scriptCode);

			var res = script.Call(script.Globals["fact"], 4);

			Console.WriteLine(res.Number);
		}
コード例 #9
0
ファイル: Program.cs プロジェクト: treytomes/ASCIIWorld2
		private static double MoonSharp6()
		{
			string scriptCode = @"    
				-- defines a factorial function
				function fact (n)
					if (n == 0) then
						return 1
					else
						return n*fact(n - 1)
					end
				end";

			var script = new Script();
			script.DoString(scriptCode);

			var luaFactFunction = script.Globals.Get("fact");
			var result = script.Call(luaFactFunction, DynValue.NewNumber(4));
			return result.Number;
		}
コード例 #10
0
ファイル: Program.cs プロジェクト: treytomes/ASCIIWorld2
		private static double MoonSharp4()
		{
			string scriptCode = @"    
				-- defines a factorial function
				function fact (n)
					if (n == 0) then
						return 1
					else
						return n*fact(n - 1)
					end
				end";

			var script = new Script();
			script.DoString(scriptCode);
			var result = script.Call(script.Globals["fact"], 4);
			return result.Number;
		}
コード例 #11
0
ファイル: Program.cs プロジェクト: cyecp/moonsharp
		static void Main(string[] args)
		{
			Script.WarmUp();

			Stopwatch sw;

			sw = Stopwatch.StartNew();

			var _s = new Script();
			_s.LoadString(scriptText);

			sw.Stop();

			Console.WriteLine("Build : {0} ms", sw.ElapsedMilliseconds);

			sw = Stopwatch.StartNew();

			var script = new Script();
			script.Globals.Set("check", DynValue.NewCallback(new CallbackFunction(Check)));
			CallbackFunction.DefaultAccessMode = InteropAccessMode.Preoptimized;

			//script.Globals["print"] = (Action<int, string, int>)PrintX;


			DynValue func = script.LoadString(scriptText);

			sw.Stop();

			Console.WriteLine("Build 2: {0} ms", sw.ElapsedMilliseconds);


			sw = Stopwatch.StartNew();
			for (int i = 0; i < ITERATIONS; i++)
			{
				script.Call(func);
			}
			sw.Stop();

			Console.WriteLine("MoonSharp : {0} ms", sw.ElapsedMilliseconds);


			lua.RegisterFunction("check", typeof(Program).GetMethod("NCheck"));

			File.WriteAllText(@"c:\temp\hanoi.lua", scriptText);

#if !PROFILER

			var fn = lua.LoadFile(@"c:\temp\hanoi.lua");

			sw = Stopwatch.StartNew();
			for (int i = 0; i < ITERATIONS; i++)
			{
				fn.Call();
			}
			sw.Stop();

#endif

			Console.WriteLine("NLua  : {0} ms", sw.ElapsedMilliseconds);

			Console.WriteLine("M# == NL ? {0}", g_MoonSharpStr.ToString() == g_NLuaStr.ToString());

			Console.WriteLine("=== MoonSharp ===");
			//Console.WriteLine(g_MoonSharpStr.ToString());
			Console.WriteLine("");
			Console.WriteLine("=== NLua  ===");
			//Console.WriteLine(g_NLuaStr.ToString());

			Console.ReadKey();
		}