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/itoolframework.h | 265 +++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 mp/src/public/toolframework/itoolframework.h (limited to 'mp/src/public/toolframework/itoolframework.h') 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 -- cgit v1.2.3