aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/toolframework/itoolsystem.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/toolframework/itoolsystem.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/toolframework/itoolsystem.h')
-rw-r--r--mp/src/public/toolframework/itoolsystem.h146
1 files changed, 146 insertions, 0 deletions
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