vphysics_jolt/vphysics_jolt/vjolt_surfaceprops.h

68 lines
2.3 KiB
C
Raw Normal View History

2022-08-28 22:31:01 +01:00
#pragma once
struct JoltSurfaceProp
{
surfacedata_t data;
};
class JoltPhysicsMaterialIndexSaveOps : public CDefSaveRestoreOps
{
public:
void Save( const SaveRestoreFieldInfo_t &fieldInfo, ISave *pSave ) override;
void Restore( const SaveRestoreFieldInfo_t& fieldInfo, IRestore* pRestore ) override;
bool IsEmpty( const SaveRestoreFieldInfo_t &fieldInfo ) override;
void MakeEmpty( const SaveRestoreFieldInfo_t &fieldInfo ) override;
static JoltPhysicsMaterialIndexSaveOps& GetInstance() { return s_Instance; }
private:
static JoltPhysicsMaterialIndexSaveOps s_Instance;
};
class JoltPhysicsSurfaceProps final : public IPhysicsSurfaceProps
{
public:
JoltPhysicsSurfaceProps();
int ParseSurfaceData( const char *pFilename, const char *pTextfile ) override;
int SurfacePropCount( void ) const override;
int GetSurfaceIndex( const char *pSurfacePropName ) const override;
void GetPhysicsProperties( int surfaceDataIndex, float *density, float *thickness, float *friction, float *elasticity ) const override;
surfacedata_t *GetSurfaceData( int surfaceDataIndex ) override;
const char *GetString( unsigned short stringTableIndex ) const override;
const char *GetPropName( int surfaceDataIndex ) const override;
void SetWorldMaterialIndexTable( int *pMapArray, int mapSize ) override;
void GetPhysicsParameters( int surfaceDataIndex, surfacephysicsparams_t *pParamsOut ) const override;
ISaveRestoreOps *GetMaterialIndexDataOps() const override_portal2;
// GMod-specific internal gubbins that was exposed in the public interface.
void *GetIVPMaterial( int nIndex ) override_gmod;
int GetIVPMaterialIndex( const void *pMaterial ) const override_gmod;
void *GetIVPManager( void ) override_gmod;
int RemapIVPMaterialIndex( int nIndex ) const override_gmod;
const char *GetReservedMaterialName( int nMaterialIndex ) const override_gmod;
2022-08-28 22:31:01 +01:00
public:
static JoltPhysicsSurfaceProps& GetInstance() { return s_PhysicsSurfaceProps; }
unsigned short RegisterSound( const char *pName );
private:
static JoltPhysicsSurfaceProps s_PhysicsSurfaceProps;
CUtlStringMap< JoltSurfaceProp > m_SurfaceProps;
CUtlSymbolTable m_SoundStrings;
static constexpr UtlSymId_t BaseMaterialIdx = UtlSymId_t( 0 );
KeyValues *SurfacePropsToKeyValues( const char *pszBuffer );
};