new signalReceived hook with better performance

signalReceived.YourComponent, with the checks in the lua-side this hook was being called too many times and it was using up to 10% cpu of the server
This commit is contained in:
Evil Factory
2021-09-07 11:02:24 -03:00
parent 5df4207521
commit 76f389dff9
2 changed files with 11 additions and 12 deletions
@@ -573,8 +573,6 @@ namespace Barotrauma
return null; return null;
foreach (HookFunction hf in hookFunctions[name].Values) foreach (HookFunction hf in hookFunctions[name].Values)
{
if (hf.name == name)
{ {
try try
{ {
@@ -589,7 +587,6 @@ namespace Barotrauma
env.HandleLuaException(e); env.HandleLuaException(e);
} }
} }
}
return null; return null;
} }
@@ -441,7 +441,9 @@ namespace Barotrauma.Items.Components
#if SERVER #if SERVER
if (!lastSignal.ContainsValue(connection.Name) || lastSignal[connection.Name] != signal.value) if (!lastSignal.ContainsValue(connection.Name) || lastSignal[connection.Name] != signal.value)
{ {
GameMain.Lua.hook.Call("signalReceived", new object[] { signal, connection }); object[] obj = new object[] { signal, connection };
GameMain.Lua.hook.Call("signalReceived", obj);
GameMain.Lua.hook.Call("signalReceived." + item.prefab.Identifier, obj);
lastSignal[connection.Name] = signal.value; lastSignal[connection.Name] = signal.value;
} }