summaryrefslogtreecommitdiff
path: root/tier3/tier3.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /tier3/tier3.cpp
downloadarchived-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.cpp154
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;
+}