diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/public/engine/ivmodelinfo.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/public/engine/ivmodelinfo.h')
| -rw-r--r-- | sp/src/public/engine/ivmodelinfo.h | 522 |
1 files changed, 261 insertions, 261 deletions
diff --git a/sp/src/public/engine/ivmodelinfo.h b/sp/src/public/engine/ivmodelinfo.h index 28433a5a..6d534604 100644 --- a/sp/src/public/engine/ivmodelinfo.h +++ b/sp/src/public/engine/ivmodelinfo.h @@ -1,261 +1,261 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//===========================================================================//
-
-#ifndef IVMODELINFO_H
-#define IVMODELINFO_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "platform.h"
-#include "dbg.h"
-
-//-----------------------------------------------------------------------------
-// Forward declarations
-//-----------------------------------------------------------------------------
-class IMaterial;
-class KeyValues;
-struct vcollide_t;
-struct model_t;
-class Vector;
-class QAngle;
-class CGameTrace;
-struct cplane_t;
-typedef CGameTrace trace_t;
-struct studiohdr_t;
-struct virtualmodel_t;
-typedef unsigned char byte;
-struct virtualterrainparams_t;
-class CPhysCollide;
-typedef unsigned short MDLHandle_t;
-class CUtlBuffer;
-class IClientRenderable;
-
-
-//-----------------------------------------------------------------------------
-// Purpose: a callback class that is notified when a model has finished loading
-//-----------------------------------------------------------------------------
-abstract_class IModelLoadCallback
-{
-public:
- virtual void OnModelLoadComplete( const model_t* pModel ) = 0;
-
-protected:
- // Protected destructor so that nobody tries to delete via this interface.
- // Automatically unregisters if the callback is destroyed while still pending.
- ~IModelLoadCallback();
-};
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Automate refcount tracking on a model index
-//-----------------------------------------------------------------------------
-class CRefCountedModelIndex
-{
-private:
- int m_nIndex;
-public:
- CRefCountedModelIndex() : m_nIndex( -1 ) { }
- ~CRefCountedModelIndex() { Set( -1 ); }
-
- CRefCountedModelIndex( const CRefCountedModelIndex& src ) : m_nIndex( -1 ) { Set( src.m_nIndex ); }
- CRefCountedModelIndex& operator=( const CRefCountedModelIndex& src ) { Set( src.m_nIndex ); return *this; }
-
- explicit CRefCountedModelIndex( int i ) : m_nIndex( -1 ) { Set( i ); }
- CRefCountedModelIndex& operator=( int i ) { Set( i ); return *this; }
-
- int Get() const { return m_nIndex; }
- void Set( int i );
- void Clear() { Set( -1 ); }
-
- operator int () const { return m_nIndex; }
-};
-
-
-//-----------------------------------------------------------------------------
-// Model info interface
-//-----------------------------------------------------------------------------
-
-// change this when the new version is incompatable with the old
-#define VMODELINFO_CLIENT_INTERFACE_VERSION "VModelInfoClient006"
-#define VMODELINFO_SERVER_INTERFACE_VERSION_3 "VModelInfoServer003"
-#define VMODELINFO_SERVER_INTERFACE_VERSION "VModelInfoServer004"
-
-// MODEL INDEX RULES
-// If index >= 0, then index references the precached model string table
-// If index == -1, then the model is invalid
-// If index < -1, then the model is DYNAMIC and has a DYNAMIC INDEX of (-2 - index)
-// - if the dynamic index is ODD, then the model is CLIENT ONLY
-// and has a m_LocalDynamicModels lookup index of (dynamic index)>>1
-// - if the dynamic index is EVEN, then the model is NETWORKED
-// and has a dynamic model string table index of (dynamic index)>>1
-
-inline bool IsDynamicModelIndex( int modelindex ) { return modelindex < -1; }
-inline bool IsClientOnlyModelIndex( int modelindex ) { return modelindex < -1 && (modelindex & 1); }
-
-abstract_class IVModelInfo
-{
-public:
- virtual ~IVModelInfo( void ) { }
-
- // Returns model_t* pointer for a model given a precached or dynamic model index.
- virtual const model_t *GetModel( int modelindex ) = 0;
-
- // Returns index of model by name for precached or known dynamic models.
- // Does not adjust reference count for dynamic models.
- virtual int GetModelIndex( const char *name ) const = 0;
-
- // Returns name of model
- virtual const char *GetModelName( const model_t *model ) const = 0;
- virtual vcollide_t *GetVCollide( const model_t *model ) = 0;
- virtual vcollide_t *GetVCollide( int modelindex ) = 0;
- virtual void GetModelBounds( const model_t *model, Vector& mins, Vector& maxs ) const = 0;
- virtual void GetModelRenderBounds( const model_t *model, Vector& mins, Vector& maxs ) const = 0;
- virtual int GetModelFrameCount( const model_t *model ) const = 0;
- virtual int GetModelType( const model_t *model ) const = 0;
- virtual void *GetModelExtraData( const model_t *model ) = 0;
- virtual bool ModelHasMaterialProxy( const model_t *model ) const = 0;
- virtual bool IsTranslucent( model_t const* model ) const = 0;
- virtual bool IsTranslucentTwoPass( const model_t *model ) const = 0;
- virtual void RecomputeTranslucency( const model_t *model, int nSkin, int nBody, void /*IClientRenderable*/ *pClientRenderable, float fInstanceAlphaModulate=1.0f) = 0;
- virtual int GetModelMaterialCount( const model_t* model ) const = 0;
- virtual void GetModelMaterials( const model_t *model, int count, IMaterial** ppMaterial ) = 0;
- virtual bool IsModelVertexLit( const model_t *model ) const = 0;
- virtual const char *GetModelKeyValueText( const model_t *model ) = 0;
- virtual bool GetModelKeyValue( const model_t *model, CUtlBuffer &buf ) = 0; // supports keyvalue blocks in submodels
- virtual float GetModelRadius( const model_t *model ) = 0;
-
- virtual const studiohdr_t *FindModel( const studiohdr_t *pStudioHdr, void **cache, const char *modelname ) const = 0;
- virtual const studiohdr_t *FindModel( void *cache ) const = 0;
- virtual virtualmodel_t *GetVirtualModel( const studiohdr_t *pStudioHdr ) const = 0;
- virtual byte *GetAnimBlock( const studiohdr_t *pStudioHdr, int iBlock ) const = 0;
-
- // Available on client only!!!
- virtual void GetModelMaterialColorAndLighting( const model_t *model, Vector const& origin,
- QAngle const& angles, trace_t* pTrace,
- Vector& lighting, Vector& matColor ) = 0;
- virtual void GetIlluminationPoint( const model_t *model, IClientRenderable *pRenderable, Vector const& origin,
- QAngle const& angles, Vector* pLightingCenter ) = 0;
-
- virtual int GetModelContents( int modelIndex ) = 0;
- virtual studiohdr_t *GetStudiomodel( const model_t *mod ) = 0;
- virtual int GetModelSpriteWidth( const model_t *model ) const = 0;
- virtual int GetModelSpriteHeight( const model_t *model ) const = 0;
-
- // Sets/gets a map-specified fade range (client only)
- virtual void SetLevelScreenFadeRange( float flMinSize, float flMaxSize ) = 0;
- virtual void GetLevelScreenFadeRange( float *pMinArea, float *pMaxArea ) const = 0;
-
- // Sets/gets a map-specified per-view fade range (client only)
- virtual void SetViewScreenFadeRange( float flMinSize, float flMaxSize ) = 0;
-
- // Computes fade alpha based on distance fade + screen fade (client only)
- virtual unsigned char ComputeLevelScreenFade( const Vector &vecAbsOrigin, float flRadius, float flFadeScale ) const = 0;
- virtual unsigned char ComputeViewScreenFade( const Vector &vecAbsOrigin, float flRadius, float flFadeScale ) const = 0;
-
- // both client and server
- virtual int GetAutoplayList( const studiohdr_t *pStudioHdr, unsigned short **pAutoplayList ) const = 0;
-
- // Gets a virtual terrain collision model (creates if necessary)
- // NOTE: This may return NULL if the terrain model cannot be virtualized
- virtual CPhysCollide *GetCollideForVirtualTerrain( int index ) = 0;
-
- virtual bool IsUsingFBTexture( const model_t *model, int nSkin, int nBody, void /*IClientRenderable*/ *pClientRenderable ) const = 0;
-
- // Obsolete methods. These are left in to maintain binary compatibility with clients using the IVModelInfo old version.
- virtual const model_t *FindOrLoadModel( const char *name ) { Warning( "IVModelInfo::FindOrLoadModel is now obsolte.\n" ); return NULL; }
- virtual void InitDynamicModels( ) { Warning( "IVModelInfo::InitDynamicModels is now obsolte.\n" ); }
- virtual void ShutdownDynamicModels( ) { Warning( "IVModelInfo::ShutdownDynamicModels is now obsolte.\n" ); }
- virtual void AddDynamicModel( const char *name, int nModelIndex = -1 ) { Warning( "IVModelInfo::AddDynamicModel is now obsolte.\n" ); }
- virtual void ReferenceModel( int modelindex ) { Warning( "IVModelInfo::ReferenceModel is now obsolte.\n" ); }
- virtual void UnreferenceModel( int modelindex ) { Warning( "IVModelInfo::UnreferenceModel is now obsolte.\n" ); }
- virtual void CleanupDynamicModels( bool bForce = false ) { Warning( "IVModelInfo::CleanupDynamicModels is now obsolte.\n" ); }
-
- virtual MDLHandle_t GetCacheHandle( const model_t *model ) const = 0;
-
- // Returns planes of non-nodraw brush model surfaces
- virtual int GetBrushModelPlaneCount( const model_t *model ) const = 0;
- virtual void GetBrushModelPlane( const model_t *model, int nIndex, cplane_t &plane, Vector *pOrigin ) const = 0;
- virtual int GetSurfacepropsForVirtualTerrain( int index ) = 0;
-
- // Poked by engine host system
- virtual void OnLevelChange() = 0;
-
- virtual int GetModelClientSideIndex( const char *name ) const = 0;
-
- // Returns index of model by name, dynamically registered if not already known.
- virtual int RegisterDynamicModel( const char *name, bool bClientSide ) = 0;
-
- virtual bool IsDynamicModelLoading( int modelIndex ) = 0;
-
- virtual void AddRefDynamicModel( int modelIndex ) = 0;
- virtual void ReleaseDynamicModel( int modelIndex ) = 0;
-
- // Registers callback for when dynamic model has finished loading.
- // Automatically adds reference, pair with ReleaseDynamicModel.
- virtual bool RegisterModelLoadCallback( int modelindex, IModelLoadCallback* pCallback, bool bCallImmediatelyIfLoaded = true ) = 0;
- virtual void UnregisterModelLoadCallback( int modelindex, IModelLoadCallback* pCallback ) = 0;
-};
-
-typedef IVModelInfo IVModelInfo003;
-
-
-abstract_class IVModelInfoClient : public IVModelInfo
-{
-public:
- virtual void OnDynamicModelsStringTableChange( int nStringIndex, const char *pString, const void *pData ) = 0;
-
- // For tools only!
- virtual const model_t *FindOrLoadModel( const char *name ) = 0;
-};
-
-
-struct virtualterrainparams_t
-{
- // UNDONE: Add grouping here, specified in BSP file? (test grouping to see if this is necessary)
- int index;
-};
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Force removal from callback list on destruction to avoid crashes.
-//-----------------------------------------------------------------------------
-inline IModelLoadCallback::~IModelLoadCallback()
-{
-#ifdef CLIENT_DLL
- extern IVModelInfoClient *modelinfo;
-#else
- extern IVModelInfo *modelinfo;
-#endif
- if ( modelinfo )
- {
- modelinfo->UnregisterModelLoadCallback( -1, this );
- }
-}
-
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Automate refcount tracking on a model index
-//-----------------------------------------------------------------------------
-inline void CRefCountedModelIndex::Set( int i )
-{
-#ifdef CLIENT_DLL
- extern IVModelInfoClient *modelinfo;
-#else
- extern IVModelInfo *modelinfo;
-#endif
- if ( i == m_nIndex )
- return;
- modelinfo->AddRefDynamicModel( i );
- modelinfo->ReleaseDynamicModel( m_nIndex );
- m_nIndex = i;
-}
-
-
-#endif // IVMODELINFO_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//===========================================================================// + +#ifndef IVMODELINFO_H +#define IVMODELINFO_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "platform.h" +#include "dbg.h" + +//----------------------------------------------------------------------------- +// Forward declarations +//----------------------------------------------------------------------------- +class IMaterial; +class KeyValues; +struct vcollide_t; +struct model_t; +class Vector; +class QAngle; +class CGameTrace; +struct cplane_t; +typedef CGameTrace trace_t; +struct studiohdr_t; +struct virtualmodel_t; +typedef unsigned char byte; +struct virtualterrainparams_t; +class CPhysCollide; +typedef unsigned short MDLHandle_t; +class CUtlBuffer; +class IClientRenderable; + + +//----------------------------------------------------------------------------- +// Purpose: a callback class that is notified when a model has finished loading +//----------------------------------------------------------------------------- +abstract_class IModelLoadCallback +{ +public: + virtual void OnModelLoadComplete( const model_t* pModel ) = 0; + +protected: + // Protected destructor so that nobody tries to delete via this interface. + // Automatically unregisters if the callback is destroyed while still pending. + ~IModelLoadCallback(); +}; + + +//----------------------------------------------------------------------------- +// Purpose: Automate refcount tracking on a model index +//----------------------------------------------------------------------------- +class CRefCountedModelIndex +{ +private: + int m_nIndex; +public: + CRefCountedModelIndex() : m_nIndex( -1 ) { } + ~CRefCountedModelIndex() { Set( -1 ); } + + CRefCountedModelIndex( const CRefCountedModelIndex& src ) : m_nIndex( -1 ) { Set( src.m_nIndex ); } + CRefCountedModelIndex& operator=( const CRefCountedModelIndex& src ) { Set( src.m_nIndex ); return *this; } + + explicit CRefCountedModelIndex( int i ) : m_nIndex( -1 ) { Set( i ); } + CRefCountedModelIndex& operator=( int i ) { Set( i ); return *this; } + + int Get() const { return m_nIndex; } + void Set( int i ); + void Clear() { Set( -1 ); } + + operator int () const { return m_nIndex; } +}; + + +//----------------------------------------------------------------------------- +// Model info interface +//----------------------------------------------------------------------------- + +// change this when the new version is incompatable with the old +#define VMODELINFO_CLIENT_INTERFACE_VERSION "VModelInfoClient006" +#define VMODELINFO_SERVER_INTERFACE_VERSION_3 "VModelInfoServer003" +#define VMODELINFO_SERVER_INTERFACE_VERSION "VModelInfoServer004" + +// MODEL INDEX RULES +// If index >= 0, then index references the precached model string table +// If index == -1, then the model is invalid +// If index < -1, then the model is DYNAMIC and has a DYNAMIC INDEX of (-2 - index) +// - if the dynamic index is ODD, then the model is CLIENT ONLY +// and has a m_LocalDynamicModels lookup index of (dynamic index)>>1 +// - if the dynamic index is EVEN, then the model is NETWORKED +// and has a dynamic model string table index of (dynamic index)>>1 + +inline bool IsDynamicModelIndex( int modelindex ) { return modelindex < -1; } +inline bool IsClientOnlyModelIndex( int modelindex ) { return modelindex < -1 && (modelindex & 1); } + +abstract_class IVModelInfo +{ +public: + virtual ~IVModelInfo( void ) { } + + // Returns model_t* pointer for a model given a precached or dynamic model index. + virtual const model_t *GetModel( int modelindex ) = 0; + + // Returns index of model by name for precached or known dynamic models. + // Does not adjust reference count for dynamic models. + virtual int GetModelIndex( const char *name ) const = 0; + + // Returns name of model + virtual const char *GetModelName( const model_t *model ) const = 0; + virtual vcollide_t *GetVCollide( const model_t *model ) = 0; + virtual vcollide_t *GetVCollide( int modelindex ) = 0; + virtual void GetModelBounds( const model_t *model, Vector& mins, Vector& maxs ) const = 0; + virtual void GetModelRenderBounds( const model_t *model, Vector& mins, Vector& maxs ) const = 0; + virtual int GetModelFrameCount( const model_t *model ) const = 0; + virtual int GetModelType( const model_t *model ) const = 0; + virtual void *GetModelExtraData( const model_t *model ) = 0; + virtual bool ModelHasMaterialProxy( const model_t *model ) const = 0; + virtual bool IsTranslucent( model_t const* model ) const = 0; + virtual bool IsTranslucentTwoPass( const model_t *model ) const = 0; + virtual void RecomputeTranslucency( const model_t *model, int nSkin, int nBody, void /*IClientRenderable*/ *pClientRenderable, float fInstanceAlphaModulate=1.0f) = 0; + virtual int GetModelMaterialCount( const model_t* model ) const = 0; + virtual void GetModelMaterials( const model_t *model, int count, IMaterial** ppMaterial ) = 0; + virtual bool IsModelVertexLit( const model_t *model ) const = 0; + virtual const char *GetModelKeyValueText( const model_t *model ) = 0; + virtual bool GetModelKeyValue( const model_t *model, CUtlBuffer &buf ) = 0; // supports keyvalue blocks in submodels + virtual float GetModelRadius( const model_t *model ) = 0; + + virtual const studiohdr_t *FindModel( const studiohdr_t *pStudioHdr, void **cache, const char *modelname ) const = 0; + virtual const studiohdr_t *FindModel( void *cache ) const = 0; + virtual virtualmodel_t *GetVirtualModel( const studiohdr_t *pStudioHdr ) const = 0; + virtual byte *GetAnimBlock( const studiohdr_t *pStudioHdr, int iBlock ) const = 0; + + // Available on client only!!! + virtual void GetModelMaterialColorAndLighting( const model_t *model, Vector const& origin, + QAngle const& angles, trace_t* pTrace, + Vector& lighting, Vector& matColor ) = 0; + virtual void GetIlluminationPoint( const model_t *model, IClientRenderable *pRenderable, Vector const& origin, + QAngle const& angles, Vector* pLightingCenter ) = 0; + + virtual int GetModelContents( int modelIndex ) = 0; + virtual studiohdr_t *GetStudiomodel( const model_t *mod ) = 0; + virtual int GetModelSpriteWidth( const model_t *model ) const = 0; + virtual int GetModelSpriteHeight( const model_t *model ) const = 0; + + // Sets/gets a map-specified fade range (client only) + virtual void SetLevelScreenFadeRange( float flMinSize, float flMaxSize ) = 0; + virtual void GetLevelScreenFadeRange( float *pMinArea, float *pMaxArea ) const = 0; + + // Sets/gets a map-specified per-view fade range (client only) + virtual void SetViewScreenFadeRange( float flMinSize, float flMaxSize ) = 0; + + // Computes fade alpha based on distance fade + screen fade (client only) + virtual unsigned char ComputeLevelScreenFade( const Vector &vecAbsOrigin, float flRadius, float flFadeScale ) const = 0; + virtual unsigned char ComputeViewScreenFade( const Vector &vecAbsOrigin, float flRadius, float flFadeScale ) const = 0; + + // both client and server + virtual int GetAutoplayList( const studiohdr_t *pStudioHdr, unsigned short **pAutoplayList ) const = 0; + + // Gets a virtual terrain collision model (creates if necessary) + // NOTE: This may return NULL if the terrain model cannot be virtualized + virtual CPhysCollide *GetCollideForVirtualTerrain( int index ) = 0; + + virtual bool IsUsingFBTexture( const model_t *model, int nSkin, int nBody, void /*IClientRenderable*/ *pClientRenderable ) const = 0; + + // Obsolete methods. These are left in to maintain binary compatibility with clients using the IVModelInfo old version. + virtual const model_t *FindOrLoadModel( const char *name ) { Warning( "IVModelInfo::FindOrLoadModel is now obsolte.\n" ); return NULL; } + virtual void InitDynamicModels( ) { Warning( "IVModelInfo::InitDynamicModels is now obsolte.\n" ); } + virtual void ShutdownDynamicModels( ) { Warning( "IVModelInfo::ShutdownDynamicModels is now obsolte.\n" ); } + virtual void AddDynamicModel( const char *name, int nModelIndex = -1 ) { Warning( "IVModelInfo::AddDynamicModel is now obsolte.\n" ); } + virtual void ReferenceModel( int modelindex ) { Warning( "IVModelInfo::ReferenceModel is now obsolte.\n" ); } + virtual void UnreferenceModel( int modelindex ) { Warning( "IVModelInfo::UnreferenceModel is now obsolte.\n" ); } + virtual void CleanupDynamicModels( bool bForce = false ) { Warning( "IVModelInfo::CleanupDynamicModels is now obsolte.\n" ); } + + virtual MDLHandle_t GetCacheHandle( const model_t *model ) const = 0; + + // Returns planes of non-nodraw brush model surfaces + virtual int GetBrushModelPlaneCount( const model_t *model ) const = 0; + virtual void GetBrushModelPlane( const model_t *model, int nIndex, cplane_t &plane, Vector *pOrigin ) const = 0; + virtual int GetSurfacepropsForVirtualTerrain( int index ) = 0; + + // Poked by engine host system + virtual void OnLevelChange() = 0; + + virtual int GetModelClientSideIndex( const char *name ) const = 0; + + // Returns index of model by name, dynamically registered if not already known. + virtual int RegisterDynamicModel( const char *name, bool bClientSide ) = 0; + + virtual bool IsDynamicModelLoading( int modelIndex ) = 0; + + virtual void AddRefDynamicModel( int modelIndex ) = 0; + virtual void ReleaseDynamicModel( int modelIndex ) = 0; + + // Registers callback for when dynamic model has finished loading. + // Automatically adds reference, pair with ReleaseDynamicModel. + virtual bool RegisterModelLoadCallback( int modelindex, IModelLoadCallback* pCallback, bool bCallImmediatelyIfLoaded = true ) = 0; + virtual void UnregisterModelLoadCallback( int modelindex, IModelLoadCallback* pCallback ) = 0; +}; + +typedef IVModelInfo IVModelInfo003; + + +abstract_class IVModelInfoClient : public IVModelInfo +{ +public: + virtual void OnDynamicModelsStringTableChange( int nStringIndex, const char *pString, const void *pData ) = 0; + + // For tools only! + virtual const model_t *FindOrLoadModel( const char *name ) = 0; +}; + + +struct virtualterrainparams_t +{ + // UNDONE: Add grouping here, specified in BSP file? (test grouping to see if this is necessary) + int index; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Force removal from callback list on destruction to avoid crashes. +//----------------------------------------------------------------------------- +inline IModelLoadCallback::~IModelLoadCallback() +{ +#ifdef CLIENT_DLL + extern IVModelInfoClient *modelinfo; +#else + extern IVModelInfo *modelinfo; +#endif + if ( modelinfo ) + { + modelinfo->UnregisterModelLoadCallback( -1, this ); + } +} + + + +//----------------------------------------------------------------------------- +// Purpose: Automate refcount tracking on a model index +//----------------------------------------------------------------------------- +inline void CRefCountedModelIndex::Set( int i ) +{ +#ifdef CLIENT_DLL + extern IVModelInfoClient *modelinfo; +#else + extern IVModelInfo *modelinfo; +#endif + if ( i == m_nIndex ) + return; + modelinfo->AddRefDynamicModel( i ); + modelinfo->ReleaseDynamicModel( m_nIndex ); + m_nIndex = i; +} + + +#endif // IVMODELINFO_H |