This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

80 lines
2.3 KiB
C++

//========= 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