print performance warning for lua scripts using mobj hooks without specific mobjtype

thx indev for help <3
these may trash performance quite hard at times
and are not visible from just perfstats most of the time
This commit is contained in:
alufolie91 committed 2026-07-01 19:21:32 +02:00
1 parent c585ec2c01
commit c6fc75c379
1 file changed
+38
+38
View File
@@ -574,10 +574,48 @@ static int call_string_hooks(Hook_State *hook)
return calls;
}
FUNCINLINE static ATTRINLINE int call_mobj_type_hooks(Hook_State *hook, mobjtype_t mobj_type)
{
static UINT8 seen = 0; // so we dont have to check all this shit constantly
int numCalls = call_mapped(hook, &mobjHookIds[mobj_type][hook->hook_type]);
if (!seen && numCalls > 0 && mobj_type == MT_NULL && (
hook->hook_type == MOBJ_HOOK(MobjThinker )
|| hook->hook_type == MOBJ_HOOK(MobjCollide )
|| hook->hook_type == MOBJ_HOOK(MobjMoveCollide)
|| hook->hook_type == MOBJ_HOOK(MobjFuse )
|| hook->hook_type == MOBJ_HOOK(MobjThinker )
|| hook->hook_type == MOBJ_HOOK(BossThinker )
))
{
seen = 1;
CONS_Alert(
CONS_WARNING, "%s\n", va(
"%s hooks not attached to a specific mobj type may cause performance issues!",
mobjHookNames[hook->hook_type])
);
// print which script triggered it, ty indev <3
for (int k = 0; k < mobjHookIds[mobj_type][hook->hook_type].numHooks; ++k)
{
lua_getref(gL, hookRefs[mobjHookIds[mobj_type][hook->hook_type].ids[k].id]);
lua_Debug ar;
lua_getinfo(gL, ">S", &ar);
CONS_Printf("%s:%d\n", ar.short_src, ar.linedefined);
}
}
return numCalls;
}
/*
FUNCINLINE static ATTRINLINE int call_mobj_type_hooks(Hook_State *hook, mobjtype_t mobj_type)
{
return call_mapped(hook, &mobjHookIds[mobj_type][hook->hook_type]);
}
*/
static int call_hooks
(