source-sdk-2013-mapbase/sp/src/game/client/iclientmode.h
Joe Ludwig beaae8ac45 Updated the SDK with the latest code from the TF and HL2 branches
* Adds support for Visual Studio 2012 and 2013
* VR Mode:
. Switches from headtrack.dll to sourcevr.dll
. Improved readability of the UI in VR
. Removed the IPD calibration tool. TF2 will now obey the Oculus
configuration file. Use the Oculus calibration tool in your SDK or
install and run "OpenVR" under Tools in Steam to calibrate your IPD.
. Added dropdown to enable VR mode in the Video options. Removed the -vr
command line option.
. Added the ability to switch in and out of VR mode without quitting the
game
. By default VR mode will run full screen. To switch back to a
borderless window set the vr_force_windowed convar.
. Added support for VR mode on Linux
* Many assorted bug fixes and other changes from Team Fortress in
various shared files
2013-12-03 08:54:16 -08:00

156 lines
4.6 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $Revision: $
// $NoKeywords: $
//=============================================================================//
#ifndef ICLIENTMODE_H
#define ICLIENTMODE_H
#include <vgui/VGUI.h>
#include "client_virtualreality.h"
class CViewSetup;
class C_BaseEntity;
class C_BasePlayer;
class CUserCmd;
namespace vgui
{
class Panel;
class AnimationController;
}
// Message mode types
enum
{
MM_NONE = 0,
MM_SAY,
MM_SAY_TEAM,
};
abstract_class IClientMode
{
// Misc.
public:
virtual ~IClientMode() {}
// Called before the HUD is initialized.
virtual void InitViewport()=0;
// One time init when .dll is first loaded.
virtual void Init()=0;
// Called when vgui is shutting down.
virtual void VGui_Shutdown() = 0;
// One time call when dll is shutting down
virtual void Shutdown()=0;
// Called when switching from one IClientMode to another.
// This can re-layout the view and such.
// Note that Enable and Disable are called when the DLL initializes and shuts down.
virtual void Enable()=0;
// Called when it's about to go into another client mode.
virtual void Disable()=0;
// Called when initializing or when the view changes.
// This should move the viewport into the correct position.
virtual void Layout()=0;
// Gets at the viewport, if there is one...
virtual vgui::Panel *GetViewport() = 0;
// Gets at the viewports vgui panel animation controller, if there is one...
virtual vgui::AnimationController *GetViewportAnimationController() = 0;
// called every time shared client dll/engine data gets changed,
// and gives the cdll a chance to modify the data.
virtual void ProcessInput( bool bActive ) = 0;
// The mode can choose to draw/not draw entities.
virtual bool ShouldDrawDetailObjects( ) = 0;
virtual bool ShouldDrawEntity(C_BaseEntity *pEnt) = 0;
virtual bool ShouldDrawLocalPlayer( C_BasePlayer *pPlayer ) = 0;
virtual bool ShouldDrawParticles( ) = 0;
// The mode can choose to not draw fog
virtual bool ShouldDrawFog( void ) = 0;
virtual void OverrideView( CViewSetup *pSetup ) = 0;
virtual int KeyInput( int down, ButtonCode_t keynum, const char *pszCurrentBinding ) = 0;
virtual void StartMessageMode( int iMessageModeType ) = 0;
virtual vgui::Panel *GetMessagePanel() = 0;
virtual void OverrideMouseInput( float *x, float *y ) = 0;
virtual bool CreateMove( float flInputSampleTime, CUserCmd *cmd ) = 0;
virtual void LevelInit( const char *newmap ) = 0;
virtual void LevelShutdown( void ) = 0;
// Certain modes hide the view model
virtual bool ShouldDrawViewModel( void ) = 0;
virtual bool ShouldDrawCrosshair( void ) = 0;
// Let mode override viewport for engine
virtual void AdjustEngineViewport( int& x, int& y, int& width, int& height ) = 0;
// Called before rendering a view.
virtual void PreRender( CViewSetup *pSetup ) = 0;
// Called after everything is rendered.
virtual void PostRender( void ) = 0;
virtual void PostRenderVGui() = 0;
virtual void ActivateInGameVGuiContext( vgui::Panel *pPanel ) = 0;
virtual void DeactivateInGameVGuiContext() = 0;
virtual float GetViewModelFOV( void ) = 0;
virtual bool CanRecordDemo( char *errorMsg, int length ) const = 0;
virtual void ComputeVguiResConditions( KeyValues *pkvConditions ) = 0;
//=============================================================================
// HPE_BEGIN:
// [menglish] Save server information shown to the client in a persistent place
//=============================================================================
virtual wchar_t* GetServerName() = 0;
virtual void SetServerName(wchar_t* name) = 0;
virtual wchar_t* GetMapName() = 0;
virtual void SetMapName(wchar_t* name) = 0;
//=============================================================================
// HPE_END
//=============================================================================
virtual bool DoPostScreenSpaceEffects( const CViewSetup *pSetup ) = 0;
virtual void DisplayReplayMessage( const char *pLocalizeName, float flDuration, bool bUrgent,
const char *pSound, bool bDlg ) = 0;
// Updates.
public:
// Called every frame.
virtual void Update()=0;
// Returns true if VR mode should black out everything around the UI
virtual bool ShouldBlackoutAroundHUD() = 0;
// Returns true if VR mode should black out everything around the UI
virtual HeadtrackMovementMode_t ShouldOverrideHeadtrackControl() = 0;
virtual bool IsInfoPanelAllowed() = 0;
virtual void InfoPanelDisplayed() = 0;
virtual bool IsHTMLInfoPanelAllowed() = 0;
};
extern IClientMode *g_pClientMode;
#endif