mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 20:16:10 +08:00
Added original SDK code for Alien Swarm.
This commit is contained in:
321
public/toolframework/itoolframework.h
Normal file
321
public/toolframework/itoolframework.h
Normal file
@ -0,0 +1,321 @@
|
||||
//====== Copyright <20> 1996-2005, 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"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Forward declarations
|
||||
//-----------------------------------------------------------------------------
|
||||
class IToolSystem;
|
||||
struct SpatializationInfo_t;
|
||||
class KeyValues;
|
||||
class CBoneList;
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Standard messages
|
||||
//-----------------------------------------------------------------------------
|
||||
struct EffectRecordingState_t
|
||||
{
|
||||
bool m_bVisible : 1;
|
||||
bool m_bThirdPerson : 1;
|
||||
Color m_Color;
|
||||
float m_Scale;
|
||||
const char *m_pMaterialName;
|
||||
int m_nAttachment;
|
||||
Vector m_vecAttachment; // only used if m_nAttachment is -1
|
||||
};
|
||||
|
||||
struct BaseEntityRecordingState_t
|
||||
{
|
||||
BaseEntityRecordingState_t() :
|
||||
m_flTime( 0.0f ),
|
||||
m_pModelName( 0 ),
|
||||
m_nOwner( -1 ),
|
||||
m_fEffects( 0 ),
|
||||
m_bVisible( false ),
|
||||
m_bRecordFinalVisibleSample( false ),
|
||||
m_numEffects( 0 ),
|
||||
m_pEffects( NULL ),
|
||||
m_nFollowEntity( -1 )
|
||||
{
|
||||
m_vecRenderOrigin.Init();
|
||||
m_vecRenderAngles.Init();
|
||||
}
|
||||
|
||||
float m_flTime;
|
||||
const char *m_pModelName;
|
||||
int m_nOwner;
|
||||
int m_fEffects;
|
||||
bool m_bVisible : 1;
|
||||
bool m_bRecordFinalVisibleSample : 1;
|
||||
Vector m_vecRenderOrigin;
|
||||
QAngle m_vecRenderAngles;
|
||||
int m_nFollowEntity;
|
||||
|
||||
int m_numEffects;
|
||||
EffectRecordingState_t *m_pEffects;
|
||||
};
|
||||
|
||||
struct SpriteRecordingState_t
|
||||
{
|
||||
float m_flRenderScale;
|
||||
float m_flFrame;
|
||||
int m_nRenderMode;
|
||||
bool m_nRenderFX;
|
||||
Color m_Color;
|
||||
float m_flProxyRadius;
|
||||
};
|
||||
|
||||
struct BaseAnimatingHighLevelRecordingState_t
|
||||
{
|
||||
BaseAnimatingHighLevelRecordingState_t()
|
||||
: m_bClearIkTargets( false ),
|
||||
m_bIsRagdoll( false ),
|
||||
m_bShouldCreateIkContext( false ),
|
||||
m_nNumPoseParams( 0 ),
|
||||
m_flCycle( 0.0f ),
|
||||
m_flPlaybackRate( 1.0f ),
|
||||
m_flCycleRate( 0.0f ),
|
||||
m_nFrameCount( 0 ),
|
||||
m_bInterpEffectActive( false )
|
||||
{
|
||||
}
|
||||
|
||||
bool m_bClearIkTargets;
|
||||
bool m_bIsRagdoll;
|
||||
bool m_bShouldCreateIkContext;
|
||||
int m_nNumPoseParams;
|
||||
|
||||
float m_flCycle;
|
||||
float m_flPlaybackRate;
|
||||
float m_flCycleRate;
|
||||
int m_nFrameCount;
|
||||
|
||||
float m_flPoseParameter[MAXSTUDIOPOSEPARAM];
|
||||
|
||||
bool m_bInterpEffectActive;
|
||||
};
|
||||
|
||||
struct BaseAnimatingRecordingState_t
|
||||
{
|
||||
BaseAnimatingHighLevelRecordingState_t m_highLevelState;
|
||||
|
||||
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;
|
||||
|
||||
// Should sounds from the game be played?
|
||||
virtual bool ShouldGamePlaySounds() = 0;
|
||||
|
||||
virtual IMaterialProxy *LookupProxy( const char *proxyName ) = 0;
|
||||
|
||||
public: // general framework hooks
|
||||
virtual bool LoadFilmmaker() = 0;
|
||||
virtual void UnloadFilmmaker() = 0;
|
||||
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;
|
||||
// If module not already loaded, loads it and optionally switches to first tool in module. Returns false if load failed or tool already loaded
|
||||
virtual bool LoadToolModule( char const *pToolModule, bool bSwitchToFirst ) = 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
|
Reference in New Issue
Block a user