67 lines
1.4 KiB
C++
67 lines
1.4 KiB
C++
#pragma once
|
||
|
||
enum
|
||
{
|
||
HITGROUP_GENERIC = 0,
|
||
HITGROUP_HEAD = 1,
|
||
HITGROUP_CHEST = 2,
|
||
HITGROUP_STOMACH = 3,
|
||
HITGROUP_LEFTARM = 4,
|
||
HITGROUP_RIGHTARM = 5,
|
||
HITGROUP_LEFTLEG = 6,
|
||
HITGROUP_RIGHTLEG = 7,
|
||
HITGROUP_GEAR = 10,
|
||
};
|
||
|
||
struct mstudiobbox
|
||
{
|
||
int bone;
|
||
int group;
|
||
Vector bbmin;
|
||
Vector bbmax;
|
||
int szhitboxnameindex;
|
||
int unused[8];
|
||
};
|
||
|
||
struct mstudiohitboxset
|
||
{
|
||
int sznameindex;
|
||
inline char* const pszName(void) const { return ((char*)this) + sznameindex; }
|
||
int numhitboxes;
|
||
int hitboxindex;
|
||
inline mstudiobbox* pHitbox(int i) const { return (mstudiobbox*)(((BYTE*)this) + hitboxindex) + i; };
|
||
};
|
||
|
||
struct studiohdr
|
||
{
|
||
unsigned char pad[0xAC];
|
||
int numhitboxsets;
|
||
int hitboxsetindex;
|
||
|
||
mstudiohitboxset* pHitboxSet(int i) const
|
||
{
|
||
return (mstudiohitboxset*)(((BYTE*)this) + hitboxsetindex) + i;
|
||
};
|
||
|
||
inline int GetHitboxCount(int set) const
|
||
{
|
||
mstudiohitboxset const* s = pHitboxSet(set);
|
||
if (!s)
|
||
return 0;
|
||
return s->numhitboxes;
|
||
}
|
||
};
|
||
|
||
class CModelInfo
|
||
{
|
||
public:
|
||
inline const char* GetModelName(const void* Model)
|
||
{
|
||
return getvfunc<const char*(__thiscall *)(void*, const void*)>(this, 3)(this, Model);
|
||
}
|
||
studiohdr* GetStudiomodel(const DWORD *mod)
|
||
{
|
||
typedef studiohdr* (__thiscall* GetStudiomodelFn)(void*, const DWORD*);
|
||
return getvfunc< GetStudiomodelFn >(this, 30)(this, mod);
|
||
}
|
||
}; |