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
}
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())
{
@@ -752,9 +765,22 @@ namespace Barotrauma
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())
{
@@ -765,14 +791,30 @@ namespace Barotrauma
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())
__result = result.Object();