From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- mp/src/public/toolframework/itoolsystem.h | 146 ++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 mp/src/public/toolframework/itoolsystem.h (limited to 'mp/src/public/toolframework/itoolsystem.h') diff --git a/mp/src/public/toolframework/itoolsystem.h b/mp/src/public/toolframework/itoolsystem.h new file mode 100644 index 00000000..8fd28ca4 --- /dev/null +++ b/mp/src/public/toolframework/itoolsystem.h @@ -0,0 +1,146 @@ +//========= 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 -- cgit v1.2.3