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.
nekohook/modules/insurgency/sdk/IPhysicsSurfaceProps.h
2020-08-04 13:13:01 -04:00

99 lines
2.7 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;
};
struct surfacesoundnames_t {
unsigned short walkStepLeft;
unsigned short walkStepRight;
unsigned short runStepLeft;
unsigned short runStepRight;
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 surfacesoundhandles_t {
short walkStepLeft;
short walkStepRight;
short runStepLeft;
short runStepRight;
short impactSoft;
short impactHard;
short scrapeSmooth;
short scrapeRough;
short bulletImpact;
short rolling;
short breakSound;
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;
surfacesoundhandles_t soundhandles;
};
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;
};