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.
265 lines
6.7 KiB
265 lines
6.7 KiB
//========= 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
|
|
|