84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
#pragma once
|
|
|
|
struct surfacephysicsparams_t {
|
|
float friction;
|
|
float elasticity;
|
|
float density;
|
|
float thickness;
|
|
float dampening;
|
|
};
|
|
|
|
struct surfaceaudioparams_t {
|
|
float reflectivity;
|
|
float hardnessFactor;
|
|
float roughnessFactor;
|
|
float roughThreshold;
|
|
float hardThreshold;
|
|
float hardVelocityThreshold;
|
|
float highToneOcclusion;
|
|
float midToneOcclusion;
|
|
float lowToneOcclusion;
|
|
};
|
|
|
|
struct surfacesoundnames_t {
|
|
unsigned short stepleft;
|
|
unsigned short stepright;
|
|
unsigned short impactSoft;
|
|
unsigned short impactHard;
|
|
unsigned short scrapeSmooth;
|
|
unsigned short scrapeRough;
|
|
unsigned short bulletImpact;
|
|
unsigned short rolling;
|
|
unsigned short breakSound;
|
|
unsigned short strainSound;
|
|
};
|
|
|
|
struct surfacegameprops_t {
|
|
public:
|
|
float maxSpeedFactor;
|
|
float jumpFactor;
|
|
char pad00[0x4];
|
|
float flPenetrationModifier;
|
|
float flDamageModifier;
|
|
unsigned short material;
|
|
char pad01[0x3];
|
|
};
|
|
|
|
struct surfacedata_t {
|
|
surfacephysicsparams_t physics;
|
|
surfaceaudioparams_t audio;
|
|
surfacesoundnames_t sounds;
|
|
surfacegameprops_t game;
|
|
};
|
|
|
|
class IPhysicsSurfaceProps {
|
|
public:
|
|
virtual ~IPhysicsSurfaceProps(void) {}
|
|
|
|
// parses a text file containing surface prop keys
|
|
virtual int ParseSurfaceData(const char* pFilename,
|
|
const char* pTextfile) = 0;
|
|
|
|
// current number of entries in the database
|
|
virtual int SurfacePropCount(void) const = 0;
|
|
|
|
virtual int GetSurfaceIndex(const char* pSurfacePropName) const = 0;
|
|
|
|
virtual void GetPhysicsProperties(int surfaceDataIndex, float* density,
|
|
float* thickness, float* friction,
|
|
float* elasticity) const = 0;
|
|
|
|
virtual surfacedata_t* GetSurfaceData(int surfaceDataIndex) = 0;
|
|
|
|
virtual const char* GetString(unsigned short stringTableIndex) const = 0;
|
|
|
|
virtual const char* GetPropName(int surfaceDataIndex) const = 0;
|
|
|
|
// sets the global index table for world materials
|
|
// UNDONE: Make this per-CPhysCollide
|
|
virtual void SetWorldMaterialIndexTable(int* pMapArray, int mapSize) = 0;
|
|
|
|
// NOTE: Same as GetPhysicsProperties, but maybe more convenient
|
|
virtual void GetPhysicsParameters(
|
|
int surfaceDataIndex, surfacephysicsparams_t* pParamsOut) const = 0;
|
|
}; |