BizHawk/BizHawk.Client.Common/lua/LuaHelper.cs

37 lines
780 B
C#

using System.Linq;
using System.Reflection;
using NLua;
namespace BizHawk.Client.Common
{
public static class LuaHelper
{
public static LuaTable ToLuaTable(Lua lua, object obj)
{
var table = lua.NewTable();
var type = obj.GetType();
var methods = type.GetMethods();
foreach (var method in methods)
{
if (method.IsPublic)
{
string luaName = ""; // Empty will default to the actual method name;
var luaMethodAttr = (LuaMethodAttribute)method.GetCustomAttributes(typeof(LuaMethodAttribute)).FirstOrDefault();
if (luaMethodAttr != null)
{
luaName = luaMethodAttr.Name;
}
table[method.Name] = lua.RegisterFunction(luaName, obj, method);
}
}
return table;
}
}
}