provide instance in Hook Method

This commit is contained in:
Evil Factory
2021-11-08 22:27:27 -03:00
parent 192c103597
commit 5c6450c6a2
@@ -740,9 +740,22 @@ namespace Barotrauma
Before, After Before, After
} }
static bool HookLuaPatchPrefix(MethodBase __originalMethod, object[] __params) static bool HookLuaPatchPrefix(MethodBase __originalMethod, object[] __params, object __instance)
{ {
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], __params)); object[] parameters;
if (__instance == null)
{
parameters = __params;
}
else
{
parameters = new object[__params.Length + 1];
__params.CopyTo(parameters, 1);
parameters[0] = __instance;
}
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], parameters));
if (!result.IsNull()) if (!result.IsNull())
{ {
@@ -752,9 +765,22 @@ namespace Barotrauma
return true; return true;
} }
static bool HookLuaPatchRetPrefix(MethodBase __originalMethod, object[] __params, ref object __result) static bool HookLuaPatchRetPrefix(MethodBase __originalMethod, object[] __params, ref object __result, object __instance)
{ {
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], __params)); object[] parameters;
if (__instance == null)
{
parameters = __params;
}
else
{
parameters = new object[__params.Length + 1];
__params.CopyTo(parameters, 1);
parameters[0] = __instance;
}
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], parameters));
if (!result.IsNull()) if (!result.IsNull())
{ {
@@ -765,14 +791,30 @@ namespace Barotrauma
return true; return true;
} }
static void HookLuaPatchPostfix(MethodBase __originalMethod, object[] __params) static void HookLuaPatchPostfix(MethodBase __originalMethod, object[] __params, object __instance)
{ {
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], __params)); if (__instance == null)
luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], __params);
else
luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], __instance, __params);
} }
static void HookLuaPatchRetPostfix(MethodBase __originalMethod, object[] __params, ref object __result) static void HookLuaPatchRetPostfix(MethodBase __originalMethod, object[] __params, ref object __result, object __instance)
{ {
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], __params)); object[] parameters;
if (__instance == null)
{
parameters = __params;
}
else
{
parameters = new object[__params.Length + 1];
__params.CopyTo(parameters, 1);
parameters[0] = __instance;
}
var result = new LuaResult(luaSetup.hook.Call(methodNameToHookName[__originalMethod.Name], parameters));
if (!result.IsNull()) if (!result.IsNull())
__result = result.Object(); __result = result.Object();