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.
146 lines
4.9 KiB
146 lines
4.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef ITOOLSYSTEM_H |
|
#define ITOOLSYSTEM_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "itoolentity.h" |
|
#include "interface.h" |
|
#include "materialsystem/imaterialproxy.h" |
|
#include "inputsystem/iinputsystem.h" |
|
|
|
class KeyValues; |
|
struct SpatializationInfo_t; |
|
struct AudioState_t; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: All tools expose this interface, which includes both client and server |
|
// related hooks |
|
//----------------------------------------------------------------------------- |
|
class IToolSystem |
|
{ |
|
public: |
|
// Name describing the tool |
|
virtual char const *GetToolName() = 0; |
|
|
|
// Called at the end of engine startup (after client .dll and server .dll have been loaded) |
|
virtual bool Init() = 0; |
|
|
|
// Called during RemoveTool or when engine is shutting down |
|
virtual void Shutdown() = 0; |
|
|
|
// Called after server.dll is loaded |
|
virtual bool ServerInit( CreateInterfaceFn serverFactory ) = 0; |
|
// Called after client.dll is loaded |
|
virtual bool ClientInit( CreateInterfaceFn clientFactory ) = 0; |
|
|
|
virtual void ServerShutdown() = 0; |
|
virtual void ClientShutdown() = 0; |
|
|
|
// Allow tool to override quitting, called before Shutdown(), return no to abort quitting |
|
virtual bool CanQuit() = 0; |
|
|
|
// Called when another system wiches to post a message to the tool and/or a specific entity |
|
// FIXME: Are KeyValues too inefficient here? |
|
virtual void PostMessage( HTOOLHANDLE hEntity, KeyValues *message ) = 0; |
|
|
|
// Called oncer per frame even when no level is loaded... (call ProcessMessages()) |
|
virtual void Think( bool finalTick ) = 0; |
|
|
|
// Server calls: |
|
|
|
// Level init, shutdown |
|
virtual void ServerLevelInitPreEntity() = 0; |
|
// entities are created / spawned / precached here |
|
virtual void ServerLevelInitPostEntity() = 0; |
|
|
|
virtual void ServerLevelShutdownPreEntity() = 0; |
|
// Entities are deleted / released here... |
|
virtual void ServerLevelShutdownPostEntity() = 0; |
|
// end of level shutdown |
|
|
|
// Called each frame before entities think |
|
virtual void ServerFrameUpdatePreEntityThink() = 0; |
|
// called after entities think |
|
virtual void ServerFrameUpdatePostEntityThink() = 0; |
|
virtual void ServerPreClientUpdate() = 0; |
|
virtual void ServerPreSetupVisibility() = 0; |
|
|
|
// Used to allow the tool to spawn different entities when it's active |
|
virtual const char* GetEntityData( const char *pActualEntityData ) = 0; |
|
|
|
// Client calls: |
|
// Level init, shutdown |
|
virtual void ClientLevelInitPreEntity() = 0; |
|
// entities are created / spawned / precached here |
|
virtual void ClientLevelInitPostEntity() = 0; |
|
|
|
virtual void ClientLevelShutdownPreEntity() = 0; |
|
// Entities are deleted / released here... |
|
virtual void ClientLevelShutdownPostEntity() = 0; |
|
// end of level shutdown |
|
// Called before rendering |
|
virtual void ClientPreRender() = 0; |
|
virtual void ClientPostRender() = 0; |
|
|
|
// Let tool override viewport for engine |
|
virtual void AdjustEngineViewport( int& x, int& y, int& width, int& height ) = 0; |
|
|
|
// let tool override view/camera |
|
virtual bool SetupEngineView( Vector &origin, QAngle &angles, float &fov ) = 0; |
|
|
|
// let tool override microphone |
|
virtual bool SetupAudioState( AudioState_t &audioState ) = 0; |
|
|
|
// Should the client be allowed to render the view normally? |
|
virtual bool ShouldGameRenderView() = 0; |
|
virtual bool IsThirdPersonCamera() = 0; |
|
|
|
// is the current tool recording? |
|
virtual bool IsToolRecording() = 0; |
|
|
|
virtual IMaterialProxy *LookupProxy( const char *proxyName ) = 0; |
|
|
|
// Possible hooks for rendering |
|
// virtual void Think( float curtime, float frametime ) = 0; |
|
// virtual void Prerender() = 0; |
|
// virtual void Render3D() = 0; |
|
// virtual void Render2D() = 0; |
|
// Tool activation/deactivation |
|
|
|
// This tool is being activated |
|
virtual void OnToolActivate() = 0; |
|
// Another tool is being activated |
|
virtual void OnToolDeactivate() = 0; |
|
|
|
virtual bool TrapKey( ButtonCode_t key, bool down ) = 0; |
|
|
|
virtual bool GetSoundSpatialization( int iUserData, int guid, SpatializationInfo_t& info ) = 0; |
|
|
|
// Unlike the client .dll pre/post render stuff, these get called no matter whether a map is loaded and they only get called once per frame!!! |
|
virtual void RenderFrameBegin() = 0; |
|
virtual void RenderFrameEnd() = 0; |
|
|
|
// wraps the entire frame - surrounding all other begin/end and pre/post calls |
|
virtual void HostRunFrameBegin() = 0; |
|
virtual void HostRunFrameEnd() = 0; |
|
|
|
// See enginevgui.h for paintmode_t enum definitions |
|
virtual void VGui_PreRender( int paintMode ) = 0; |
|
virtual void VGui_PostRender( int paintMode ) = 0; |
|
|
|
virtual void VGui_PreSimulate() = 0; |
|
virtual void VGui_PostSimulate() = 0; |
|
}; |
|
|
|
// Pointer to a member method of IGameSystem |
|
typedef void (IToolSystem::*ToolSystemFunc_t)(); |
|
typedef void (IToolSystem::*ToolSystemFunc_Int_t)( int arg ); |
|
|
|
#endif // ITOOLSYSTEM_H
|
|
|