//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef IVP_H #define IVP_H #ifdef _WIN32 #pragma once #endif #include "utlvector.h" class CPhysCollide; class CTextBuffer; class IPhysicsCollision; extern IPhysicsCollision *physcollision; // a list of all of the materials in the world model extern int RemapWorldMaterial( int materialIndexIn ); class CPhysCollisionEntry { public: CPhysCollisionEntry( CPhysCollide *pCollide ); virtual void WriteToTextBuffer( CTextBuffer *pTextBuffer, int modelIndex, int collideIndex ) = 0; virtual void DumpCollide( CTextBuffer *pTextBuffer, int modelIndex, int collideIndex ) = 0; unsigned int GetCollisionBinarySize(); unsigned int WriteCollisionBinary( char *pDest ); protected: void DumpCollideFileName( const char *pName, int modelIndex, CTextBuffer *pTextBuffer ); protected: CPhysCollide *m_pCollide; }; class CPhysCollisionEntryStaticMesh : public CPhysCollisionEntry { public: CPhysCollisionEntryStaticMesh( CPhysCollide *pCollide, const char *pMaterialName ); virtual void WriteToTextBuffer( CTextBuffer *pTextBuffer, int modelIndex, int collideIndex ); virtual void DumpCollide( CTextBuffer *pTextBuffer, int modelIndex, int collideIndex ); private: const char *m_pMaterial; }; class CTextBuffer { public: CTextBuffer( void ); ~CTextBuffer( void ); inline int GetSize( void ) { return m_buffer.Count(); } inline char *GetData( void ) { return m_buffer.Base(); } void WriteText( const char *pText ); void WriteIntKey( const char *pKeyName, int outputData ); void WriteStringKey( const char *pKeyName, const char *outputData ); void WriteFloatKey( const char *pKeyName, float outputData ); void WriteFloatArrayKey( const char *pKeyName, const float *outputData, int count ); void CopyStringQuotes( const char *pString ); void Terminate( void ); private: void CopyData( const char *pData, int len ); CUtlVector m_buffer; }; #endif // IVP_H