extensions/sdktools/extension.cpp
changeset 1735 d6966e3316e9
parent 1644 7033022af10d
child 1757 455a2ea38c67
     1.1 --- a/extensions/sdktools/extension.cpp	Sat Dec 01 00:37:47 2007 +0000
     1.2 +++ b/extensions/sdktools/extension.cpp	Sun Dec 02 01:51:48 2007 +0000
     1.3 @@ -35,6 +35,7 @@
     1.4  #include "vhelpers.h"
     1.5  #include "vglobals.h"
     1.6  #include "tempents.h"
     1.7 +#include "vsound.h"
     1.8  
     1.9  #if defined ORANGEBOX_BUILD
    1.10  	#define SDKTOOLS_GAME_FILE		"sdktools.games.ep2"
    1.11 @@ -63,6 +64,8 @@
    1.12  IVoiceServer *voiceserver = NULL;
    1.13  IPlayerInfoManager *playerinfomngr = NULL;
    1.14  ICvar *icvar = NULL;
    1.15 +SourceHook::CallClass<IVEngineServer> *enginePatch = NULL;
    1.16 +SourceHook::CallClass<IEngineSound> *enginesoundPatch = NULL;
    1.17  HandleType_t g_CallHandle = 0;
    1.18  HandleType_t g_TraceHandle = 0;
    1.19  
    1.20 @@ -149,6 +152,7 @@
    1.21  
    1.22  	g_TEManager.Shutdown();
    1.23  	s_TempEntHooks.Shutdown();
    1.24 +	s_SoundHooks.Shutdown();
    1.25  
    1.26  	gameconfs->CloseGameConfigFile(g_pGameConf);
    1.27  	playerhelpers->RemoveClientListener(&g_SdkTools);
    1.28 @@ -156,6 +160,17 @@
    1.29  
    1.30  	SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, LevelInit, gamedll, this, &SDKTools::LevelInit, true);
    1.31  	SH_REMOVE_HOOK_MEMFUNC(IServerGameDLL, ServerActivate, gamedll, this, &SDKTools::OnServerActivate, false);
    1.32 +
    1.33 +	if (enginePatch)
    1.34 +	{
    1.35 +		SH_RELEASE_CALLCLASS(enginePatch);
    1.36 +		enginePatch = NULL;
    1.37 +	}
    1.38 +	if (enginesoundPatch)
    1.39 +	{
    1.40 +		SH_RELEASE_CALLCLASS(enginesoundPatch);
    1.41 +		enginesoundPatch = NULL;
    1.42 +	}
    1.43  }
    1.44  
    1.45  bool SDKTools::SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late)
    1.46 @@ -170,6 +185,9 @@
    1.47  	GET_V_IFACE_ANY(GetServerFactory, playerinfomngr, IPlayerInfoManager, INTERFACEVERSION_PLAYERINFOMANAGER);
    1.48  	GET_V_IFACE_CURRENT(GetEngineFactory, icvar, ICvar, CVAR_INTERFACE_VERSION);
    1.49  
    1.50 +	enginePatch = SH_GET_CALLCLASS(engine);
    1.51 +	enginesoundPatch = SH_GET_CALLCLASS(engsound);
    1.52 +
    1.53  	return true;
    1.54  }
    1.55  
    1.56 @@ -179,6 +197,7 @@
    1.57  
    1.58  	g_TEManager.Initialize();
    1.59  	s_TempEntHooks.Initialize();
    1.60 +	s_SoundHooks.Initialize();
    1.61  	InitializeValveGlobals();
    1.62  }
    1.63