aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/toolframework/itoolframework.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/itoolframework.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/itoolframework.h')
-rw-r--r--mp/src/public/toolframework/itoolframework.h265
1 files changed, 265 insertions, 0 deletions
diff --git a/mp/src/public/toolframework/itoolframework.h b/mp/src/public/toolframework/itoolframework.h
new file mode 100644
index 00000000..c757623c
--- /dev/null
+++ b/mp/src/public/toolframework/itoolframework.h
@@ -0,0 +1,265 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef ITOOLFRAMEWORK_H
+#define ITOOLFRAMEWORK_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "appframework/IAppSystem.h"
+#include "materialsystem/imaterialproxy.h"
+#include "toolframework/itoolentity.h"
+#include "mathlib/vector.h"
+#include "Color.h"
+#include "toolframework/itoolentity.h" // HTOOLHANDLE defn
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class IToolSystem;
+struct SpatializationInfo_t;
+class KeyValues;
+class CBoneList;
+
+
+//-----------------------------------------------------------------------------
+// Standard messages
+//-----------------------------------------------------------------------------
+struct BaseEntityRecordingState_t
+{
+ BaseEntityRecordingState_t() :
+ m_flTime( 0.0f ),
+ m_pModelName( 0 ),
+ m_nOwner( -1 ),
+ m_nEffects( 0 ),
+ m_bVisible( false ),
+ m_bRecordFinalVisibleSample( false )
+ {
+ m_vecRenderOrigin.Init();
+ m_vecRenderAngles.Init();
+ }
+
+ float m_flTime;
+ const char *m_pModelName;
+ int m_nOwner;
+ int m_nEffects;
+ bool m_bVisible : 1;
+ bool m_bRecordFinalVisibleSample : 1;
+ Vector m_vecRenderOrigin;
+ QAngle m_vecRenderAngles;
+};
+
+struct SpriteRecordingState_t
+{
+ float m_flRenderScale;
+ float m_flFrame;
+ int m_nRenderMode;
+ bool m_nRenderFX;
+ Color m_Color;
+ float m_flProxyRadius;
+};
+
+struct BaseAnimatingRecordingState_t
+{
+ int m_nSkin;
+ int m_nBody;
+ int m_nSequence;
+ CBoneList *m_pBoneList;
+};
+
+struct BaseFlexRecordingState_t
+{
+ int m_nFlexCount;
+ float *m_pDestWeight;
+ Vector m_vecViewTarget;
+};
+
+struct CameraRecordingState_t
+{
+ bool m_bThirdPerson;
+ float m_flFOV;
+ Vector m_vecEyePosition;
+ QAngle m_vecEyeAngles;
+};
+
+struct MonitorRecordingState_t
+{
+ bool m_bActive;
+ float m_flFOV;
+ bool m_bFogEnabled;
+ float m_flFogStart;
+ float m_flFogEnd;
+ Color m_FogColor;
+};
+
+struct EntityTeleportedRecordingState_t
+{
+ Vector m_vecTo;
+ QAngle m_qaTo;
+ bool m_bTeleported;
+ bool m_bViewOverride;
+ matrix3x4_t m_teleportMatrix;
+};
+
+struct PortalRecordingState_t
+{
+ int m_nPortalId;
+ int m_nLinkedPortalId;
+ float m_fStaticAmount;
+ float m_fSecondaryStaticAmount;
+ float m_fOpenAmount;
+ bool m_bIsPortal2; //for any set of portals, one must be portal 1, and the other portal 2. Uses different render targets
+};
+
+struct ParticleSystemCreatedState_t
+{
+ int m_nParticleSystemId;
+ const char * m_pName;
+ float m_flTime;
+ int m_nOwner;
+};
+
+struct ParticleSystemDestroyedState_t
+{
+ int m_nParticleSystemId;
+ float m_flTime;
+};
+
+struct ParticleSystemStopEmissionState_t
+{
+ int m_nParticleSystemId;
+ float m_flTime;
+ bool m_bInfiniteOnly;
+};
+
+struct ParticleSystemSetControlPointObjectState_t
+{
+ int m_nParticleSystemId;
+ float m_flTime;
+ int m_nControlPoint;
+ int m_nObject;
+};
+
+struct ParticleSystemSetControlPointPositionState_t
+{
+ int m_nParticleSystemId;
+ float m_flTime;
+ int m_nControlPoint;
+ Vector m_vecPosition;
+};
+
+struct ParticleSystemSetControlPointOrientationState_t
+{
+ int m_nParticleSystemId;
+ float m_flTime;
+ int m_nControlPoint;
+ Quaternion m_qOrientation;
+};
+
+
+//-----------------------------------------------------------------------------
+// Purpose: This interface lives in the engine and handles loading up/unloading all
+// available tools
+//-----------------------------------------------------------------------------
+class IToolFrameworkInternal : public IAppSystem
+{
+public: // Client Hooks
+ virtual bool ClientInit( CreateInterfaceFn clientFactory ) = 0;
+ virtual void ClientShutdown() = 0;
+
+ // Level init, shutdown
+ virtual void ClientLevelInitPreEntityAllTools() = 0;
+ // entities are created / spawned / precached here
+ virtual void ClientLevelInitPostEntityAllTools() = 0;
+
+ virtual void ClientLevelShutdownPreEntityAllTools() = 0;
+ // Entities are deleted / released here...
+ virtual void ClientLevelShutdownPostEntityAllTools() = 0;
+
+ virtual void ClientPreRenderAllTools() = 0;
+ virtual void ClientPostRenderAllTools() = 0;
+
+ // Should we render with a thirdperson camera?
+ virtual bool IsThirdPersonCamera() = 0;
+
+ // is the current tool recording?
+ virtual bool IsToolRecording() = 0;
+
+public: // Server Hooks
+ // Level init, shutdown
+ virtual bool ServerInit( CreateInterfaceFn serverFactory ) = 0;
+ virtual void ServerShutdown() = 0;
+
+ virtual void ServerLevelInitPreEntityAllTools() = 0;
+ // entities are created / spawned / precached here
+ virtual void ServerLevelInitPostEntityAllTools() = 0;
+
+ virtual void ServerLevelShutdownPreEntityAllTools() = 0;
+ // Entities are deleted / released here...
+ virtual void ServerLevelShutdownPostEntityAllTools() = 0;
+ // end of level shutdown
+
+ // Called each frame before entities think
+ virtual void ServerFrameUpdatePreEntityThinkAllTools() = 0;
+ // called after entities think
+ virtual void ServerFrameUpdatePostEntityThinkAllTools() = 0;
+ virtual void ServerPreClientUpdateAllTools() = 0;
+
+ virtual void ServerPreSetupVisibilityAllTools() = 0;
+
+public: // Other Hooks
+ // If any tool returns false, the engine will not actually quit
+ // FIXME: Not implemented yet
+ virtual bool CanQuit() = 0;
+
+ // Called at end of Host_Init
+ virtual bool PostInit() = 0;
+
+ virtual void Think( bool finalTick ) = 0;
+
+ virtual void PostMessage( KeyValues *msg ) = 0;
+
+ virtual bool GetSoundSpatialization( int iUserData, int guid, SpatializationInfo_t& info ) = 0;
+
+ virtual void HostRunFrameBegin() = 0;
+ virtual void HostRunFrameEnd() = 0;
+
+ virtual void RenderFrameBegin() = 0;
+ virtual void RenderFrameEnd() = 0;
+
+ // Paintmode is an enum declared in enginevgui.h
+ virtual void VGui_PreRenderAllTools( int paintMode ) = 0;
+ virtual void VGui_PostRenderAllTools( int paintMode ) = 0;
+
+ virtual void VGui_PreSimulateAllTools() = 0;
+ virtual void VGui_PostSimulateAllTools() = 0;
+
+ // Are we using tools?
+ virtual bool InToolMode() = 0;
+
+ // Should the game be allowed to render the world?
+ virtual bool ShouldGameRenderView() = 0;
+
+ virtual IMaterialProxy *LookupProxy( const char *proxyName ) = 0;
+
+public: // general framework hooks
+ virtual int GetToolCount() = 0;
+ virtual char const *GetToolName( int index ) = 0;
+ virtual void SwitchToTool( int index ) = 0;
+ virtual IToolSystem *SwitchToTool( const char *pToolName ) = 0;
+ virtual bool IsTopmostTool( const IToolSystem *sys ) = 0;
+ virtual const IToolSystem *GetToolSystem( int index ) const = 0;
+ virtual IToolSystem *GetTopmostTool() = 0;
+};
+
+// Expose to rest of engine as a singleton
+extern IToolFrameworkInternal *toolframework;
+
+// Exposed to launcher to automatically add AppSystemGroup hooks
+#define VTOOLFRAMEWORK_INTERFACE_VERSION "VTOOLFRAMEWORKVERSION002"
+
+#endif // ITOOLFRAMEWORK_H