120 lines
3.2 KiB
C++
120 lines
3.2 KiB
C++
|
//=========== (C) Copyright 1999 Valve, L.L.C. All rights reserved. ===========
|
||
|
//
|
||
|
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||
|
// The contents may be used and/or copied only with the written permission of
|
||
|
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||
|
// the agreement/contract under which the contents have been supplied.
|
||
|
//
|
||
|
//=============================================================================
|
||
|
#ifdef _WIN32
|
||
|
|
||
|
#include "appframework/vguimatsysapp.h"
|
||
|
#include "vgui/IVGui.h"
|
||
|
#include "vgui/ISurface.h"
|
||
|
#include "vgui_controls/controls.h"
|
||
|
#include "vgui/IScheme.h"
|
||
|
#include "vgui/ILocalize.h"
|
||
|
#include "tier0/dbg.h"
|
||
|
#include "VGuiMatSurface/IMatSystemSurface.h"
|
||
|
#include "tier3/tier3.h"
|
||
|
#include "inputsystem/iinputstacksystem.h"
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Constructor
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CVguiMatSysApp::CVguiMatSysApp()
|
||
|
{
|
||
|
m_hAppInputContext = INPUT_CONTEXT_HANDLE_INVALID;
|
||
|
}
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Create all singleton systems
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool CVguiMatSysApp::Create()
|
||
|
{
|
||
|
if ( !BaseClass::Create() )
|
||
|
return false;
|
||
|
|
||
|
AppSystemInfo_t appSystems[] =
|
||
|
{
|
||
|
{ "inputsystem.dll", INPUTSTACKSYSTEM_INTERFACE_VERSION },
|
||
|
// NOTE: This has to occur before vgui2.dll so it replaces vgui2's surface implementation
|
||
|
{ "vguimatsurface.dll", VGUI_SURFACE_INTERFACE_VERSION },
|
||
|
{ "vgui2.dll", VGUI_IVGUI_INTERFACE_VERSION },
|
||
|
|
||
|
// Required to terminate the list
|
||
|
{ "", "" }
|
||
|
};
|
||
|
|
||
|
return AddSystems( appSystems );
|
||
|
}
|
||
|
|
||
|
void CVguiMatSysApp::Destroy()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Init, shutdown
|
||
|
//-----------------------------------------------------------------------------
|
||
|
bool CVguiMatSysApp::PreInit( )
|
||
|
{
|
||
|
if ( !BaseClass::PreInit() )
|
||
|
return false;
|
||
|
|
||
|
CreateInterfaceFn factory = GetFactory();
|
||
|
ConnectTier3Libraries( &factory, 1 );
|
||
|
if ( !vgui::VGui_InitInterfacesList( "CVguiSteamApp", &factory, 1 ) )
|
||
|
return false;
|
||
|
|
||
|
if ( !g_pMatSystemSurface )
|
||
|
{
|
||
|
Warning( "CVguiMatSysApp::PreInit: Unable to connect to necessary interface!\n" );
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
g_pMatSystemSurface->EnableWindowsMessages( true );
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
bool CVguiMatSysApp::PostInit()
|
||
|
{
|
||
|
if ( !BaseClass::PostInit() )
|
||
|
return false;
|
||
|
|
||
|
m_hAppInputContext = g_pInputStackSystem->PushInputContext();
|
||
|
InputContextHandle_t hVGuiInputContext = g_pInputStackSystem->PushInputContext();
|
||
|
g_pMatSystemSurface->SetInputContext( hVGuiInputContext );
|
||
|
g_pMatSystemSurface->EnableWindowsMessages( true );
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
void CVguiMatSysApp::PreShutdown()
|
||
|
{
|
||
|
g_pMatSystemSurface->EnableWindowsMessages( false );
|
||
|
g_pMatSystemSurface->SetInputContext( NULL );
|
||
|
if ( m_hAppInputContext != INPUT_CONTEXT_HANDLE_INVALID )
|
||
|
{
|
||
|
g_pInputStackSystem->PopInputContext(); // Vgui
|
||
|
g_pInputStackSystem->PopInputContext(); // App
|
||
|
}
|
||
|
|
||
|
BaseClass::PreShutdown();
|
||
|
}
|
||
|
|
||
|
void CVguiMatSysApp::PostShutdown()
|
||
|
{
|
||
|
DisconnectTier3Libraries();
|
||
|
BaseClass::PostShutdown();
|
||
|
}
|
||
|
|
||
|
InputContextHandle_t CVguiMatSysApp::GetAppInputContext()
|
||
|
{
|
||
|
return m_hAppInputContext;
|
||
|
}
|
||
|
|
||
|
#endif // _WIN32
|
||
|
|