diff options
Diffstat (limited to 'game/shared/portal/StaticCollisionPolyhedronCache.h')
| -rw-r--r-- | game/shared/portal/StaticCollisionPolyhedronCache.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/game/shared/portal/StaticCollisionPolyhedronCache.h b/game/shared/portal/StaticCollisionPolyhedronCache.h new file mode 100644 index 0000000..b759317 --- /dev/null +++ b/game/shared/portal/StaticCollisionPolyhedronCache.h @@ -0,0 +1,52 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Portals use polyhedrons to clip and carve their custom collision areas. +// This file should provide caches of polyhedrons with the initial conversion +// processes already completed. +// +// $NoKeywords: $ +//=====================================================================================// + + +#include "igamesystem.h" +#include "mathlib/polyhedron.h" +#include "tier1/utlvector.h" +#include "tier1/utlstring.h" +#include "tier1/utlmap.h" + + + +class CStaticCollisionPolyhedronCache : public CAutoGameSystem +{ +public: + CStaticCollisionPolyhedronCache( void ); + ~CStaticCollisionPolyhedronCache( void ); + + void LevelInitPreEntity( void ); + void Shutdown( void ); + + const CPolyhedron *GetBrushPolyhedron( int iBrushNumber ); + int GetStaticPropPolyhedrons( ICollideable *pStaticProp, CPolyhedron **pOutputPolyhedronArray, int iOutputArraySize ); + +private: + // See comments in LevelInitPreEntity for why these members are commented out +// CUtlString m_CachedMap; + + CUtlVector<CPolyhedron *> m_BrushPolyhedrons; + + struct StaticPropPolyhedronCacheInfo_t + { + int iStartIndex; + int iNumPolyhedrons; + int iStaticPropIndex; //helps us remap ICollideable pointers when the map is restarted + }; + + CUtlVector<CPolyhedron *> m_StaticPropPolyhedrons; + CUtlMap<ICollideable *, StaticPropPolyhedronCacheInfo_t> m_CollideableIndicesMap; + + + void Clear( void ); + void Update( void ); +}; + +extern CStaticCollisionPolyhedronCache g_StaticCollisionPolyhedronCache; |