diff options
| author | boris <wzn@moneybot.cc> | 2018-11-28 16:00:02 +1300 |
|---|---|---|
| committer | boris <wzn@moneybot.cc> | 2018-11-28 16:00:02 +1300 |
| commit | 3d412a4b30a9f7c7f51ea6562e694315948bd3da (patch) | |
| tree | 26d67dfd1f3e5fd12903ad13e85d0cb8bcf8f21c /cheat/gmod/IVModelInfoClient.hpp | |
| parent | e4729e4393d90271a3814c7a79950a660c48325a (diff) | |
cleaned up
in short, the cheat and loader are now separate solutions. unused stuff was moved into the legacy solution in case anyone wants to compile it or whatever.
i can change this back if you want to. also, i configured the loader to compile in x64, and have separate build types for linux and win64
Diffstat (limited to 'cheat/gmod/IVModelInfoClient.hpp')
| -rw-r--r-- | cheat/gmod/IVModelInfoClient.hpp | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/cheat/gmod/IVModelInfoClient.hpp b/cheat/gmod/IVModelInfoClient.hpp new file mode 100644 index 0000000..957c6d9 --- /dev/null +++ b/cheat/gmod/IVModelInfoClient.hpp @@ -0,0 +1,134 @@ +#pragma once
+#include "IVEngineClient.hpp"
+#include "IClientEntityList.hpp"
+
+struct DrawModelState_t;
+
+struct mstudiobbox_t
+{
+ int bone;
+ int group;
+ vec3_t min;
+ vec3_t max;
+ int szhitboxnameindex;
+
+ const char* get_name( ) {
+ if( szhitboxnameindex == 0 )
+ return "";
+
+ return ( ( const char* )this ) + szhitboxnameindex;
+ }
+
+ int unused[ 8 ];
+};
+
+struct mstudiobone_t
+{
+ int sznameindex;
+ inline char * const get_name( void ) const { return ( ( char * )this ) + sznameindex; }
+ int parent;
+ char pad01[ 152 ];
+ int flags;
+ char pad02[ 52 ];
+};
+
+struct mstudiohitboxset_t
+{
+ int sznameindex;
+ inline char * const get_name( void ) const { return ( ( char * )this ) + sznameindex; }
+ int numhitboxes;
+ int hitboxindex;
+ inline mstudiobbox_t *get_hitbox( int i ) const { return ( mstudiobbox_t * )( ( ( unsigned char * )this ) + hitboxindex ) + i; };
+};
+
+struct studiohdr_t
+{
+ char pad00[ 12 ];
+ char name[ 64 ];
+ char pad01[ 80 ];
+ int numbones;
+ int boneIndex;
+ inline mstudiobone_t *get_bone( int i ) { return ( mstudiobone_t * )( ( ( unsigned char* )this ) + boneIndex ) + i; }
+ char pad02[ 8 ];
+ int numhitboxsets;
+ int hitboxsetindex;
+
+ mstudiohitboxset_t* get_hitbox_set( int i ) {
+ return ( mstudiohitboxset_t * )( ( ( char * )this ) + hitboxsetindex ) + i;
+ }
+
+ char pad03[ 24 ];
+ int numtextures;
+ inline mstudiobbox_t* get_hit_box( int index ) { return ( ( mstudiohitboxset_t* )( ( unsigned char* )this + hitboxsetindex ) )->get_hitbox( index ); }
+};
+
+struct ModelRenderInfo_t {
+ vec3_t m_origin;
+ vec3_t m_angles;
+ char pad[ 0x4 ];
+ void* m_renderable;
+ const model_t* m_model;
+ const matrix3x4* m_model2world;
+ const matrix3x4* m_light_offset;
+ const vec3_t* m_light_origin;
+ int m_flags;
+ int m_entity_index;
+ int m_skin;
+ int m_body;
+ int m_hitboxset;
+ uint16_t* m_instance;
+
+ ModelRenderInfo_t( ) {
+ m_model2world = nullptr;
+ m_light_offset = nullptr;
+ m_light_origin = nullptr;
+ }
+};
+
+class IVModelInfoClient {
+public:
+ model_t* GetModel( int index ) {
+ using fn = model_t*( __thiscall* )( void*, int );
+ return util::get_vfunc< fn >( this, 1 )( this, index );
+ }
+
+ int GetModelIndex( const char* name ) {
+ using fn = int( __thiscall* )( void*, const char* );
+ return util::get_vfunc< fn >( this, 2 )( this, name );
+ }
+
+ const char* GetModelName( const model_t* model ) {
+ using fn = const char* ( __thiscall* )( void*, const model_t* );
+ return util::get_vfunc< fn >( this, 3 )( this, model );
+ }
+
+ studiohdr_t* GetStudiomodel( const model_t* mod ) {
+ using fn = studiohdr_t* ( __thiscall* )( void*, const model_t* );
+ return util::get_vfunc< fn >( this, 28 )( this, mod );
+ }
+
+ void GetModelMaterials( const model_t *model, int count, class IMaterial** ppMaterial ) {
+ using fn = const void( __thiscall* )( void*, const model_t*, int, IMaterial** );
+ util::get_vfunc< fn >( this, 16 )( this, model, count, ppMaterial );
+ }
+};
+
+enum OverrideType_t {
+ OVERRIDE_NORMAL = 0,
+ OVERRIDE_BUILD_SHADOWS,
+ OVERRIDE_DEPTH_WRITE,
+ OVERRIDE_SSAO_DEPTH_WRITE,
+};
+
+class IVModelRender {
+public:
+ void ForcedMaterialOverride( IMaterial* newMaterial, OverrideType_t nOverrideType = OVERRIDE_NORMAL, int unk = 0 ) {
+ using fn = void( __thiscall* )( void*, IMaterial*, OverrideType_t, int );
+ return util::get_vfunc< fn >( this, 1 )( this, newMaterial, nOverrideType, unk );
+ }
+
+ void DrawModelExecute( void* matctx, const DrawModelState_t& state, const ModelRenderInfo_t& pInfo, matrix3x4* pCustomBoneToWorld ) {
+ using fn = void( __thiscall* )( void*, void*, const DrawModelState_t&, const ModelRenderInfo_t&, matrix3x4* );
+ util::get_vfunc< fn >( this, 21 )( this, matctx, state, pInfo, pCustomBoneToWorld );
+ }
+};
\ No newline at end of file |
