37 lines
780 B
C#
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;
|
|
}
|
|
}
|
|
}
|