fixed crash bug on shutdown

removed implementations from header

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%402043
This commit is contained in:
David Anderson 2008-04-12 01:33:55 +00:00
parent 75a77c1925
commit c42a26bb66
2 changed files with 44 additions and 32 deletions

View File

@ -35,6 +35,45 @@
ISourcePawnEngine *spengine = NULL; ISourcePawnEngine *spengine = NULL;
EntityOutputManager g_OutputManager; EntityOutputManager g_OutputManager;
EntityOutputManager::EntityOutputManager()
{
info_address = NULL;
info_callback = NULL;
HookCount = 0;
is_detoured = false;
enabled = false;
}
EntityOutputManager::~EntityOutputManager()
{
if (!enabled)
{
return;
}
EntityOutputs->Destroy();
ClassNames->Destroy();
ShutdownFireEventDetour();
}
void EntityOutputManager::Init()
{
enabled = CreateFireEventDetour();
if (!enabled)
{
return;
}
EntityOutputs = adtfactory->CreateBasicTrie();
ClassNames = adtfactory->CreateBasicTrie();
}
bool EntityOutputManager::IsEnabled()
{
return enabled;
}
bool EntityOutputManager::CreateFireEventDetour() bool EntityOutputManager::CreateFireEventDetour()
{ {
if (!g_pGameConf->GetMemSig("FireOutput", &info_address) || !info_address) if (!g_pGameConf->GetMemSig("FireOutput", &info_address) || !info_address)

View File

@ -91,39 +91,12 @@ struct ClassNameStruct
class EntityOutputManager : public IPluginsListener class EntityOutputManager : public IPluginsListener
{ {
public: public:
EntityOutputManager() EntityOutputManager();
{ ~EntityOutputManager();
info_address = NULL; public:
info_callback = NULL; void Init();
HookCount = 0;
is_detoured = false;
enabled = false;
}
~EntityOutputManager() bool IsEnabled();
{
EntityOutputs->Destroy();
ClassNames->Destroy();
ShutdownFireEventDetour();
}
void Init()
{
enabled = CreateFireEventDetour();
if (!enabled)
{
return;
}
EntityOutputs = adtfactory->CreateBasicTrie();
ClassNames = adtfactory->CreateBasicTrie();
}
bool IsEnabled()
{
return enabled;
}
void FireEventDetour(void *pOutput, CBaseEntity *pActivator, CBaseEntity *pCaller, float fDelay); void FireEventDetour(void *pOutput, CBaseEntity *pActivator, CBaseEntity *pCaller, float fDelay);