diff options
Diffstat (limited to 'public/tier3')
| -rw-r--r-- | public/tier3/choreoutils.h | 39 | ||||
| -rw-r--r-- | public/tier3/mdlutils.h | 97 | ||||
| -rw-r--r-- | public/tier3/scenetokenprocessor.h | 18 | ||||
| -rw-r--r-- | public/tier3/tier3.h | 114 | ||||
| -rw-r--r-- | public/tier3/tier3dm.h | 55 |
5 files changed, 323 insertions, 0 deletions
diff --git a/public/tier3/choreoutils.h b/public/tier3/choreoutils.h new file mode 100644 index 0000000..b531737 --- /dev/null +++ b/public/tier3/choreoutils.h @@ -0,0 +1,39 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Helper methods + classes for choreo +// +//===========================================================================// + +#ifndef CHOREOUTILS_H +#define CHOREOUTILS_H + +#if defined( _WIN32 ) +#pragma once +#endif + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class CChoreoScene; +class CChoreoEvent; +class CStudioHdr; + + +//----------------------------------------------------------------------------- +// Finds sound files associated with events +//----------------------------------------------------------------------------- +const char *GetSoundForEvent( CChoreoEvent *pEvent, CStudioHdr *pStudioHdr ); + + +//----------------------------------------------------------------------------- +// Fixes up the duration of a choreo scene based on wav files + animations +// Returns true if a change needed to be made +//----------------------------------------------------------------------------- +bool AutoAddGestureKeys( CChoreoEvent *e, CStudioHdr *pStudioHdr, float *pPoseParameters, bool bCheckOnly ); +bool UpdateGestureLength( CChoreoEvent *e, CStudioHdr *pStudioHdr, float *pPoseParameters, bool bCheckOnly ); +bool UpdateSequenceLength( CChoreoEvent *e, CStudioHdr *pStudioHdr, float *pPoseParameters, bool bCheckOnly, bool bVerbose ); + + +#endif // CHOREOUTILS_H + diff --git a/public/tier3/mdlutils.h b/public/tier3/mdlutils.h new file mode 100644 index 0000000..1e04abd --- /dev/null +++ b/public/tier3/mdlutils.h @@ -0,0 +1,97 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: A higher level link library for general use in the game and tools. +// +//===========================================================================// + + +#ifndef MDLUTILS_H +#define MDLUTILS_H + +#if defined( _WIN32 ) +#pragma once +#endif + +#include "datacache/imdlcache.h" +#include "mathlib/vector.h" +#include "Color.h" +#include "studio.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +struct matrix3x4_t; + +struct MDLSquenceLayer_t +{ + int m_nSequenceIndex; + float m_flWeight; + bool m_bNoLoop; + float m_flCycleBeganAt; +}; + +//----------------------------------------------------------------------------- +// Class containing simplistic MDL state for use in rendering +//----------------------------------------------------------------------------- +class CMDL +{ +public: + CMDL(); + ~CMDL(); + + void SetMDL( MDLHandle_t h ); + MDLHandle_t GetMDL() const; + + // Simple version of drawing; sets up bones for you + void Draw( const matrix3x4_t& rootToWorld ); + + // NOTE: This version of draw assumes you've filled in the bone to world + // matrix yourself by calling IStudioRender::LockBoneMatrices. The pointer + // returned by that method needs to be passed into here + void Draw( const matrix3x4_t& rootToWorld, const matrix3x4_t *pBoneToWorld ); + + + void SetUpBones( const matrix3x4_t& shapeToWorld, int nMaxBoneCount, matrix3x4_t *pOutputMatrices, const float *pPoseParameters = NULL, MDLSquenceLayer_t *pSequenceLayers = NULL, int nNumSequenceLayers = 0 ); + void SetupBonesWithBoneMerge( const CStudioHdr *pMergeHdr, matrix3x4_t *pMergeBoneToWorld, + const CStudioHdr *pFollow, const matrix3x4_t *pFollowBoneToWorld, const matrix3x4_t &matModelToWorld ); + + studiohdr_t *GetStudioHdr(); + +private: + void UnreferenceMDL(); + +public: + MDLHandle_t m_MDLHandle; + Color m_Color; + int m_nSkin; + int m_nBody; + int m_nSequence; + int m_nLOD; + float m_flPlaybackRate; + float m_flTime; + float m_pFlexControls[ MAXSTUDIOFLEXCTRL * 4 ]; + Vector m_vecViewTarget; + bool m_bWorldSpaceViewTarget; + void *m_pProxyData; +}; + + +//----------------------------------------------------------------------------- +// Returns the bounding box for the model +//----------------------------------------------------------------------------- +void GetMDLBoundingBox( Vector *pMins, Vector *pMaxs, MDLHandle_t h, int nSequence ); + +//----------------------------------------------------------------------------- +// Returns the radius of the model as measured from the origin +//----------------------------------------------------------------------------- +float GetMDLRadius( MDLHandle_t h, int nSequence ); + +//----------------------------------------------------------------------------- +// Returns a more accurate bounding sphere +//----------------------------------------------------------------------------- +void GetMDLBoundingSphere( Vector *pVecCenter, float *pRadius, MDLHandle_t h, int nSequence ); + + +#endif // MDLUTILS_H + diff --git a/public/tier3/scenetokenprocessor.h b/public/tier3/scenetokenprocessor.h new file mode 100644 index 0000000..d614b75 --- /dev/null +++ b/public/tier3/scenetokenprocessor.h @@ -0,0 +1,18 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#ifndef SCENETOKENPROCESSOR_H +#define SCENETOKENPROCESSOR_H +#ifdef _WIN32 +#pragma once +#endif + +class ISceneTokenProcessor; + +ISceneTokenProcessor *GetTokenProcessor(); +void SetTokenProcessorBuffer( const char *buf ); + +#endif // SCENETOKENPROCESSOR_H diff --git a/public/tier3/tier3.h b/public/tier3/tier3.h new file mode 100644 index 0000000..7f53353 --- /dev/null +++ b/public/tier3/tier3.h @@ -0,0 +1,114 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: A higher level link library for general use in the game and tools. +// +//===========================================================================// + + +#ifndef TIER3_H +#define TIER3_H + +#if defined( _WIN32 ) +#pragma once +#endif + +#include "tier2/tier2.h" + + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class IStudioRender; +class IMatSystemSurface; +class IDataCache; +class IMDLCache; +class IVideoServices; +class IDmeMakefileUtils; +class IPhysicsCollision; +class ISoundEmitterSystemBase; +class IVTex; + +namespace vgui +{ + class ISurface; + class IVGui; + class IInput; + class IPanel; + class ILocalize; + class ISchemeManager; + class ISystem; +} + + +//----------------------------------------------------------------------------- +// These tier3 libraries must be set by any users of this library. +// They can be set by calling ConnectTier3Libraries. +// It is hoped that setting this, and using this library will be the common mechanism for +// allowing link libraries to access tier3 library interfaces +//----------------------------------------------------------------------------- +extern IStudioRender *g_pStudioRender; +extern IStudioRender *studiorender; +extern IMatSystemSurface *g_pMatSystemSurface; +extern vgui::ISurface *g_pVGuiSurface; +extern vgui::IInput *g_pVGuiInput; +extern vgui::IVGui *g_pVGui; +extern vgui::IPanel *g_pVGuiPanel; +extern vgui::ILocalize *g_pVGuiLocalize; +extern vgui::ISchemeManager *g_pVGuiSchemeManager; +extern vgui::ISystem *g_pVGuiSystem; +extern IDataCache *g_pDataCache; // FIXME: Should IDataCache be in tier2? +extern IMDLCache *g_pMDLCache; +extern IMDLCache *mdlcache; +extern IVideoServices *g_pVideo; +extern IDmeMakefileUtils *g_pDmeMakefileUtils; +extern IPhysicsCollision *g_pPhysicsCollision; +extern ISoundEmitterSystemBase *g_pSoundEmitterSystem; +extern IVTex *g_pVTex; + + +//----------------------------------------------------------------------------- +// Call this to connect to/disconnect from all tier 3 libraries. +// It's up to the caller to check the globals it cares about to see if ones are missing +//----------------------------------------------------------------------------- +void ConnectTier3Libraries( CreateInterfaceFn *pFactoryList, int nFactoryCount ); +void DisconnectTier3Libraries(); + + +//----------------------------------------------------------------------------- +// Helper empty implementation of an IAppSystem for tier2 libraries +//----------------------------------------------------------------------------- +template< class IInterface, int ConVarFlag = 0 > +class CTier3AppSystem : public CTier2AppSystem< IInterface, ConVarFlag > +{ + typedef CTier2AppSystem< IInterface, ConVarFlag > BaseClass; + +public: + CTier3AppSystem( bool bIsPrimaryAppSystem = true ) : BaseClass( bIsPrimaryAppSystem ) + { + } + + virtual bool Connect( CreateInterfaceFn factory ) + { + if ( !BaseClass::Connect( factory ) ) + return false; + + if ( BaseClass::IsPrimaryAppSystem() ) + { + ConnectTier3Libraries( &factory, 1 ); + } + return true; + } + + virtual void Disconnect() + { + if ( BaseClass::IsPrimaryAppSystem() ) + { + DisconnectTier3Libraries(); + } + BaseClass::Disconnect(); + } +}; + + +#endif // TIER3_H + diff --git a/public/tier3/tier3dm.h b/public/tier3/tier3dm.h new file mode 100644 index 0000000..5ac6028 --- /dev/null +++ b/public/tier3/tier3dm.h @@ -0,0 +1,55 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: A higher level link library for general use in the game and tools. +// +//===========================================================================// + + +#ifndef TIER3DM_H +#define TIER3DM_H + +#if defined( _WIN32 ) +#pragma once +#endif + +#include "tier3/tier3.h" +#include "tier2/tier2dm.h" + +//----------------------------------------------------------------------------- +// Helper empty implementation of an IAppSystem for tier2 libraries +//----------------------------------------------------------------------------- +template< class IInterface, int ConVarFlag = 0 > +class CTier3DmAppSystem : public CTier2DmAppSystem< IInterface, ConVarFlag > +{ + typedef CTier2DmAppSystem< IInterface, ConVarFlag > BaseClass; + +public: + CTier3DmAppSystem( bool bIsPrimaryAppSystem = true ) : BaseClass( bIsPrimaryAppSystem ) + { + } + + virtual bool Connect( CreateInterfaceFn factory ) + { + if ( !BaseClass::Connect( factory ) ) + return false; + + if ( IsPrimaryAppSystem() ) + { + ConnectTier3Libraries( &factory, 1 ); + } + return true; + } + + virtual void Disconnect() + { + if ( IsPrimaryAppSystem() ) + { + DisconnectTier3Libraries(); + } + BaseClass::Disconnect(); + } +}; + + +#endif // TIER3DM_H + |