diff --git a/include/cstrike/Interfaces/IVModelInfo.h b/include/cstrike/Interfaces/IVModelInfo.h index 06b9234..1f4ca3a 100644 --- a/include/cstrike/Interfaces/IVModelInfo.h +++ b/include/cstrike/Interfaces/IVModelInfo.h @@ -17,7 +17,76 @@ #define BONE_USED_BY_VERTEX_LOD7 0x20000 #define BONE_USED_BY_BONE_MERGE 0x40000 -class studiohdr_t; +struct mstudiobbox_t { + public: + inline const char* GetName() { + if (szhitboxnameindex == 0) + return nullptr; + + return ((const char*)this) + szhitboxnameindex; + } + + int bone; + int group; + Vector bbmin; + Vector bbmax; + int szhitboxnameindex; + int unused[8]; +}; + +struct mstudiohitboxset_t { + public: + inline const char* GetName() { + return ((const char*)this) + sznameindex; + } + + inline mstudiobbox_t* GetHitbox(int i) const { + return (mstudiobbox_t*)(((unsigned char*)this) + hitboxindex) + i; + }; + + int sznameindex; + int numhitboxes; + int hitboxindex; +}; + +class studiohdr_t { + public: + inline const mstudiohitboxset_t* GetHitboxSet(int i) { + if (i > numhitboxsets) + return nullptr; + + return (const mstudiohitboxset_t*)((unsigned char*)this + hitboxsetindex) + i; + } + + int id; + int version; + long checksum; + char szName[64]; + int length; + Vector vecEyePos; + Vector vecIllumPos; + Vector vecHullMin; + Vector vecHullMax; + Vector vecBBMin; + Vector vecBBMax; + int flags; + int numBones; + int indexBones; + int numbonecontrollers; + int bonecontrollerindex; + int numhitboxsets; + int hitboxsetindex; + int numlocalanim; + int localanimindex; + int numlocalseq; + int localseqindex; + int activitylistversion; + int eventsindexed; + int numtextures; + int textureindex; +}; + +class model_t; class IVModelInfoClient { public: