aboutsummaryrefslogtreecommitdiff
path: root/mp/src/utils/vbsp/ivp.h
blob: 318a199d3e3846ee06f722d4e050efcacfdf8f43 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//========= Copyright 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<char> m_buffer;
};

#endif // IVP_H