API wrapper functions in metamod (dllapi.cpp,
newapi.cpp, engine_api.cpp) wrongly assume that
'PublicMetaGlobals' is not used by other wrapper
function earlier in call stack.
Calls do go throught multiple wrapper functions:
engine-main -> metamod-dllapi.cpp:mm_StartFrame ->
engine-MakeVectors. This example doesn't cause problems
but looking in to code shows that this hasn't been
think of. Checking wrapper function macros in metamod.h
shows that 'PublicMetaGlobals' is zeroed for
pre-plugin-function loop but not post-plugin-function loop.
This assumption causes problems when plugins call some
engine-callback-functions: engine-main ->
plugin:StartFrame -> engine:RunPlayerMove ->
metamod-dllapi.cpp:Cmd_Start -> gamedll:Cmd_Start.
When execution enters metamod:Cmd_Start,
'PublicMetaGlobals' is zeroed and loses information it
stored for metamod:StartFrame:plugin-loop. This causes
problems especially with bots build as metamod-plugins.
(ps. Metamod-P v21 has fix for this. (Check