Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
#include "cbase.h"
#include "faceposer_vgui.h"
#include <vgui/IVGui.h>
#include <vgui/ISurface.h>
#include <vgui/ISystem.h>
#include "vgui/IInput.h"
#include <VGuiMatSurface/IMatSystemSurface.h>
#include <matsys_controls/matsyscontrols.h>
#include <dme_controls/dmecontrols.h>
//#include "material.h"
#include "vgui_controls/AnimationController.h"
#include "inputsystem/iinputsystem.h"
#include "VGuiWnd.h"
extern CreateInterfaceFn g_Factory;
//-----------------------------------------------------------------------------
// Purpose: singleton accessor
//-----------------------------------------------------------------------------
static CFacePoserVGui s_FaceposerVGui;
CFacePoserVGui *FaceposerVGui() { return &s_FaceposerVGui; }
CFacePoserVGui::CFacePoserVGui(void) { m_pActiveWindow = NULL; m_hMainWindow = NULL; }
//-----------------------------------------------------------------------------
// Setup the base vgui panels
//-----------------------------------------------------------------------------
bool CFacePoserVGui::Init( HWND hWindow ) { // initialize vgui_control interfaces
if (!vgui::VGui_InitInterfacesList( "FACEPOSER", &g_Factory, 1 )) return false;
// if ( !vgui::VGui_InitMatSysInterfacesList( "FACEPOSER", &g_Factory, 1 ) )
// return false;
// All of the various tools .dlls expose GetVGuiControlsModuleName() to us to make sure we don't have communication across .dlls
// if ( !vgui::VGui_InitDmeInterfacesList( "FACEPOSER", &g_Factory, 1 ) )
// return false;
if ( !g_pMatSystemSurface ) return false;
// configuration settings
vgui::system()->SetUserConfigFile("faceposer.vdf", "EXECUTABLE_PATH");
// Are we trapping input?
g_pMatSystemSurface->EnableWindowsMessages( true );
// Need to be able to play sounds through vgui
// g_pMatSystemSurface->InstallPlaySoundFunc( VGui_PlaySound );
// load scheme
if (!vgui::scheme()->LoadSchemeFromFile("Resource/SourceScheme.res", "FacePoser")) { return false; }
m_hMainWindow = hWindow;
// Start the App running
vgui::ivgui()->Start(); vgui::ivgui()->SetSleep(false);
return true; }
void CFacePoserVGui::SetFocus( CVGuiWnd *pVGuiWnd ) { if ( pVGuiWnd == m_pActiveWindow ) return;
g_pInputSystem->PollInputState(); vgui::ivgui()->RunFrame();
g_pMatSystemSurface->AttachToWindow( NULL, false ); g_pInputSystem->DetachFromWindow( );
if ( pVGuiWnd ) { HWND hWnd = (HWND)pVGuiWnd->GetParentWnd()->getHandle();
m_pActiveWindow = pVGuiWnd; g_pInputSystem->AttachToWindow( hWnd ); g_pMatSystemSurface->AttachToWindow( hWnd, false ); vgui::ivgui()->ActivateContext( pVGuiWnd->GetVGuiContext() ); } else { m_pActiveWindow = NULL; vgui::ivgui()->ActivateContext( vgui::DEFAULT_VGUI_CONTEXT ); } }
bool CFacePoserVGui::HasFocus( CVGuiWnd *pWnd ) { return m_pActiveWindow == pWnd; }
void CFacePoserVGui::Simulate() { // VPROF( "CFacePoserVGui::Simulate" );
if ( !IsInitialized() ) return;
g_pInputSystem->PollInputState(); vgui::ivgui()->RunFrame();
// run vgui animations
vgui::GetAnimationController()->UpdateAnimations( vgui::system()->GetCurrentTime() ); }
void CFacePoserVGui::Shutdown() { // Give panels a chance to settle so things
// Marked for deletion will actually get deleted
if ( !IsInitialized() ) return;
g_pInputSystem->PollInputState(); vgui::ivgui()->RunFrame();
// stop the App running
vgui::ivgui()->Stop(); }
CFacePoserVGui::~CFacePoserVGui(void) { }
|