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

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;
};