diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /tier3/tier3.cpp | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'tier3/tier3.cpp')
| -rw-r--r-- | tier3/tier3.cpp | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/tier3/tier3.cpp b/tier3/tier3.cpp new file mode 100644 index 0000000..20241a6 --- /dev/null +++ b/tier3/tier3.cpp @@ -0,0 +1,154 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: A higher level link library for general use in the game and tools. +// +//===========================================================================// + +#include "tier3/tier3.h" +#include "tier0/dbg.h" +#include "istudiorender.h" +#include "vgui/IVGui.h" +#include "vgui/IInput.h" +#include "vgui/IPanel.h" +#include "vgui/ISurface.h" +#include "vgui/ILocalize.h" +#include "vgui/IScheme.h" +#include "vgui/ISystem.h" +#include "VGuiMatSurface/IMatSystemSurface.h" +#include "datacache/idatacache.h" +#include "datacache/imdlcache.h" +#include "video/ivideoservices.h" +#include "movieobjects/idmemakefileutils.h" +#include "vphysics_interface.h" +#include "SoundEmitterSystem/isoundemittersystembase.h" +#include "ivtex.h" + + +//----------------------------------------------------------------------------- +// These tier3 libraries must be set by any users of this library. +// They can be set by calling ConnectTier3Libraries. +// It is hoped that setting this, and using this library will be the common mechanism for +// allowing link libraries to access tier3 library interfaces +//----------------------------------------------------------------------------- +IStudioRender *g_pStudioRender = 0; +IStudioRender *studiorender = 0; +IMatSystemSurface *g_pMatSystemSurface = 0; +vgui::IInput *g_pVGuiInput = 0; +vgui::ISurface *g_pVGuiSurface = 0; +vgui::IPanel *g_pVGuiPanel = 0; +vgui::IVGui *g_pVGui = 0; +vgui::ILocalize *g_pVGuiLocalize = 0; +vgui::ISchemeManager *g_pVGuiSchemeManager = 0; +vgui::ISystem *g_pVGuiSystem = 0; +IDataCache *g_pDataCache = 0; +IMDLCache *g_pMDLCache = 0; +IMDLCache *mdlcache = 0; +IVideoServices *g_pVideo = NULL; +IDmeMakefileUtils *g_pDmeMakefileUtils = 0; +IPhysicsCollision *g_pPhysicsCollision = 0; +ISoundEmitterSystemBase *g_pSoundEmitterSystem = 0; +IVTex *g_pVTex = 0; + + +//----------------------------------------------------------------------------- +// Call this to connect to all tier 3 libraries. +// It's up to the caller to check the globals it cares about to see if ones are missing +//----------------------------------------------------------------------------- +void ConnectTier3Libraries( CreateInterfaceFn *pFactoryList, int nFactoryCount ) +{ + // Don't connect twice.. + Assert( !g_pStudioRender && !studiorender && !g_pMatSystemSurface && !g_pVGui && !g_pVGuiPanel && !g_pVGuiInput && + !g_pVGuiSurface && !g_pDataCache && !g_pMDLCache && !mdlcache && !g_pVideo && + !g_pDmeMakefileUtils && !g_pPhysicsCollision && !g_pVGuiLocalize && !g_pSoundEmitterSystem && + !g_pVGuiSchemeManager && !g_pVGuiSystem ); + + for ( int i = 0; i < nFactoryCount; ++i ) + { + if ( !g_pStudioRender ) + { + g_pStudioRender = studiorender = ( IStudioRender * )pFactoryList[i]( STUDIO_RENDER_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGui ) + { + g_pVGui = (vgui::IVGui*)pFactoryList[i]( VGUI_IVGUI_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGuiInput ) + { + g_pVGuiInput = (vgui::IInput*)pFactoryList[i]( VGUI_INPUT_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGuiPanel ) + { + g_pVGuiPanel = (vgui::IPanel*)pFactoryList[i]( VGUI_PANEL_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGuiSurface ) + { + g_pVGuiSurface = (vgui::ISurface*)pFactoryList[i]( VGUI_SURFACE_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGuiSchemeManager ) + { + g_pVGuiSchemeManager = (vgui::ISchemeManager*)pFactoryList[i]( VGUI_SCHEME_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGuiSystem ) + { + g_pVGuiSystem = (vgui::ISystem*)pFactoryList[i]( VGUI_SYSTEM_INTERFACE_VERSION, NULL ); + } + if ( !g_pVGuiLocalize ) + { + g_pVGuiLocalize = (vgui::ILocalize*)pFactoryList[i]( VGUI_LOCALIZE_INTERFACE_VERSION, NULL ); + } + if ( !g_pMatSystemSurface ) + { + g_pMatSystemSurface = ( IMatSystemSurface * )pFactoryList[i]( MAT_SYSTEM_SURFACE_INTERFACE_VERSION, NULL ); + } + if ( !g_pDataCache ) + { + g_pDataCache = (IDataCache*)pFactoryList[i]( DATACACHE_INTERFACE_VERSION, NULL ); + } + if ( !g_pMDLCache ) + { + g_pMDLCache = mdlcache = (IMDLCache*)pFactoryList[i]( MDLCACHE_INTERFACE_VERSION, NULL ); + } + if ( !g_pVideo ) + { + g_pVideo = (IVideoServices *)pFactoryList[i](VIDEO_SERVICES_INTERFACE_VERSION, NULL); + } + if ( !g_pDmeMakefileUtils ) + { + g_pDmeMakefileUtils = (IDmeMakefileUtils*)pFactoryList[i]( DMEMAKEFILE_UTILS_INTERFACE_VERSION, NULL ); + } + if ( !g_pPhysicsCollision ) + { + g_pPhysicsCollision = ( IPhysicsCollision* )pFactoryList[i]( VPHYSICS_COLLISION_INTERFACE_VERSION, NULL ); + } + if ( !g_pSoundEmitterSystem ) + { + g_pSoundEmitterSystem = ( ISoundEmitterSystemBase* )pFactoryList[i]( SOUNDEMITTERSYSTEM_INTERFACE_VERSION, NULL ); + } + if ( !g_pVTex ) + { + g_pVTex = ( IVTex * )pFactoryList[i]( IVTEX_VERSION_STRING, NULL ); + } + } +} + +void DisconnectTier3Libraries() +{ + g_pStudioRender = 0; + studiorender = 0; + g_pVGui = 0; + g_pVGuiInput = 0; + g_pVGuiPanel = 0; + g_pVGuiSurface = 0; + g_pVGuiLocalize = 0; + g_pVGuiSchemeManager = 0; + g_pVGuiSystem = 0; + g_pMatSystemSurface = 0; + g_pDataCache = 0; + g_pMDLCache = 0; + mdlcache = 0; + g_pVideo = NULL; + g_pPhysicsCollision = 0; + g_pDmeMakefileUtils = NULL; + g_pSoundEmitterSystem = 0; + g_pVTex = NULL; +} |