You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.0 KiB
101 lines
3.0 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//===========================================================================//
|
||
|
|
||
|
#include "matsys_controls/matsyscontrols.h"
|
||
|
#include <materialsystem/imaterialsystem.h>
|
||
|
#include <materialsystem/imaterialsystemhardwareconfig.h>
|
||
|
#include <datacache/imdlcache.h>
|
||
|
#include <VGuiMatSurface/IMatSystemSurface.h>
|
||
|
#include <istudiorender.h>
|
||
|
#include "vgui_controls/Controls.h"
|
||
|
|
||
|
// memdbgon must be the last include file in a .cpp file!!!
|
||
|
#include "tier0/memdbgon.h"
|
||
|
|
||
|
namespace vgui
|
||
|
{
|
||
|
|
||
|
IMaterialSystem *g_pMaterialSystem = NULL;
|
||
|
IMaterialSystem *MaterialSystem()
|
||
|
{
|
||
|
return g_pMaterialSystem;
|
||
|
}
|
||
|
|
||
|
IMaterialSystemHardwareConfig *g_pMaterialSystemHardwareConfig = NULL;
|
||
|
IMaterialSystemHardwareConfig *MaterialSystemHardwareConfig()
|
||
|
{
|
||
|
return g_pMaterialSystemHardwareConfig;
|
||
|
}
|
||
|
|
||
|
IMDLCache *g_pMDLCache = NULL;
|
||
|
IMDLCache *MDLCache()
|
||
|
{
|
||
|
return g_pMDLCache;
|
||
|
}
|
||
|
|
||
|
IMatSystemSurface *g_pMatSystemSurface = NULL;
|
||
|
IMatSystemSurface *MatSystemSurface()
|
||
|
{
|
||
|
return g_pMatSystemSurface;
|
||
|
}
|
||
|
|
||
|
IStudioRender *g_pStudioRender = NULL;
|
||
|
IStudioRender *StudioRender()
|
||
|
{
|
||
|
return g_pStudioRender;
|
||
|
}
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: finds a particular interface in the factory set
|
||
|
//-----------------------------------------------------------------------------
|
||
|
static void *InitializeInterface( char const *interfaceName, CreateInterfaceFn *factoryList, int numFactories )
|
||
|
{
|
||
|
void *retval;
|
||
|
|
||
|
for ( int i = 0; i < numFactories; i++ )
|
||
|
{
|
||
|
CreateInterfaceFn factory = factoryList[ i ];
|
||
|
if ( !factory )
|
||
|
continue;
|
||
|
|
||
|
retval = factory( interfaceName, NULL );
|
||
|
if ( retval )
|
||
|
return retval;
|
||
|
}
|
||
|
|
||
|
// No provider for requested interface!!!
|
||
|
// Assert( !"No provider for requested interface!!!" );
|
||
|
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Initializes the controls
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool VGui_InitMatSysInterfacesList( const char *moduleName, CreateInterfaceFn *factoryList, int numFactories )
|
||
|
{
|
||
|
if ( !vgui::VGui_InitInterfacesList( moduleName, factoryList, numFactories ) )
|
||
|
return false;
|
||
|
|
||
|
g_pMaterialSystem = (IMaterialSystem *)InitializeInterface( MATERIAL_SYSTEM_INTERFACE_VERSION, factoryList, numFactories );
|
||
|
g_pMatSystemSurface = (IMatSystemSurface *)InitializeInterface( MAT_SYSTEM_SURFACE_INTERFACE_VERSION, factoryList, numFactories );
|
||
|
g_pMDLCache = (IMDLCache *)InitializeInterface( MDLCACHE_INTERFACE_VERSION, factoryList, numFactories );
|
||
|
g_pStudioRender = (IStudioRender *)InitializeInterface( STUDIO_RENDER_INTERFACE_VERSION, factoryList, numFactories );
|
||
|
g_pMaterialSystemHardwareConfig = (IMaterialSystemHardwareConfig *)InitializeInterface( MATERIALSYSTEM_HARDWARECONFIG_INTERFACE_VERSION, factoryList, numFactories );
|
||
|
|
||
|
// MDL cache + studiorender are optional
|
||
|
return ( g_pMaterialSystem && g_pMatSystemSurface && g_pMaterialSystemHardwareConfig );
|
||
|
}
|
||
|
|
||
|
|
||
|
} // namespace vgui
|
||
|
|
||
|
|
||
|
|