123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- // CGfxCharacter - [2020-04-13 11:57:46]
- #ifndef _CGFXCHARACTER_H_
- #define _CGFXCHARACTER_H_
- #include "CFTTModel.h"
- #include "CPlayer.h"
- #include "SAT.h"
- #include "TUV.h"
- #include "CAnimLib.h"
- #include "CFTTRenderToTexture.h"
- /*
- 0017D450 CGfxCharacter::CGfxCharacter(int,int,int,TPlayerInfo *,CPlayer *,int,int)
- 0017D688 CGfxCharacter::SetAnimation(int,float,int)
- 0017D69C CGfxCharacter::SetupPlayer(TPlayerInfo *,bool,int,int)
- 0017DC4C CGfxCharacter::~CGfxCharacter()
- 0017DD78 CGfxCharacter::SetTeamID(int)
- 0017DD80 CGfxCharacter::Init()
- 0017DDC0 CGfxCharacter::SetMegaAtlasDims(int,int,int,int)
- 0017DEF4 CGfxCharacter::LoadDefaultModels()
- 0017E5EC CGfxCharacter::Shutdown()
- 0017E640 CGfxCharacter::DeleteDefaultModels()
- 0017E8DC CGfxCharacter::SetLOD(int,int,int)
- 0017E8E6 CGfxCharacter::SetKit(int)
- 0017E8EC CGfxCharacter::SetBootsColour(EPlayerBoots)
- 0017E904 CGfxCharacter::SetFaceType(int)
- 0017E906 CGfxCharacter::SetSkinColour(EPlayerSkinColour,int)
- 0017E910 CGfxCharacter::SetFacialHair(EPlayerFacialHair,EPlayerHairColour)
- 0017E960 CGfxCharacter::SetHairColour(EPlayerHairColour)
- 0017E968 CGfxCharacter::GetOfficialSkinHair()
- 0017E984 CGfxCharacter::UpdateUVs()
- 0017E9C0 CGfxCharacter::CreateAtlasTextures(TPlayerInfo *,int,int,int,int)
- 0017F3D4 CGfxCharacter::SetBodyXTexture(TPlayerInfo *)
- 0017F530 CGfxCharacter::SetAnimationBlend(int,int,float,float,float,float,int,int)
- 0017F564 CGfxCharacter::SetVerts(CFTTModel *)
- 0017F5B4 CGfxCharacter::GenerateSamples(TSATFrameSample *,TCharAnimSpec *)
- 0017F7D8 CGfxCharacter::GetHeadRot()
- 0017F864 CGfxCharacter::UpdateMatrix(CFTTMatrix32 *)
- 0017F91C CGfxCharacter::UpdateMatrices(CFTTMatrix32 *)
- 0017FA70 CGfxCharacter::SkinShadow()
- 0017FA76 CGfxCharacter::SkinModels()
- 0017FAB8 CGfxCharacter::RenderBatch(ESHADOWMAP_SAMPLING,int)
- 00180860 CGfxCharacter::GetMegaTexture()
- 001808AC CGfxCharacter::RenderShadowBatch(int)
- 001809C8 CGfxCharacter::CreateMippedMegaTexture()
- 00180A30 CGfxCharacter::SkinProp()
- 00180A64 CGfxCharacter::RenderProp(CFTTMatrix32 &)
- 00180B20 CGfxCharacter::RenderShadow(CFTTMatrix32 *)
- 00180B70 CGfxCharacter::GetInfo(CFTTModel *&,CFTTMatrix32 &)
- 00180BD4 CGfxCharacter::ResetShadowMatrix()
- 00180BF0 CGfxCharacter::LockVertexBuffers()
- 00180C00 CGfxCharacter::UnlockVertexBuffers()
- 00180C0C CGfxCharacter::UpdateAnimation(bool)
- 00180E00 CGfxCharacter::GetUVScale(TBinUVScale *,int)
- 00180F28 CGfxCharacter::UpdateUVs(CFTTModel **,int,TUV **)
- 00181148 CGfxCharacter::SetPlayerIsKeeper(bool)
- 0018114E CGfxCharacter::UpdateBlinking()
- 00181188 CGfxCharacter::Blink(bool)
- 00181374 CGfxCharacter::GetHeadInfo(int,CFTTModel *&,CFTTModel *&,TUV *&,TUV *&,int &,EPlayerSkinColour &)
- 0xC44
- */
- enum EPlayerHairColour {
- EPlayerHairColour_0,
- EPlayerHairColour_1,
- EPlayerHairColour_2,
- EPlayerHairColour_3,
- EPlayerHairColour_4,
- EPlayerHairColour_5,
- EPlayerHairColour_6,
- EPlayerHairColour_7,
- };
- // 0x18
- struct OfficialSkinHair_st {
- int filed_0;
- int filed_4;
- int filed_8;
- int filed_C;
- int filed_10;
- int filed_14;
- };
- enum EPlayerSkinColour {
- EPlayerSkinColour_0,
- EPlayerSkinColour_1,
- EPlayerSkinColour_2,
- EPlayerSkinColour_3,
- EPlayerSkinColour_4,
- EPlayerSkinColour_5,
- EPlayerSkinColour_6,
- };
- enum EPlayerFacialHair {
- EPlayerFacialHair_0,
- EPlayerFacialHair_1,
- EPlayerFacialHair_2,
- EPlayerFacialHair_3,
- EPlayerFacialHair_4,
- EPlayerFacialHair_5,
- EPlayerFacialHair_6,
- EPlayerFacialHair_7,
- };
- enum ESHADOWMAP_SAMPLING {
- ESHADOWMAP_SAMPLING_0,
- ESHADOWMAP_SAMPLING_1,
- ESHADOWMAP_SAMPLING_2,
- ESHADOWMAP_SAMPLING_3,
- ESHADOWMAP_SAMPLING_4,
- ESHADOWMAP_SAMPLING_5,
- ESHADOWMAP_SAMPLING_6,
- ESHADOWMAP_SAMPLING_7,
- };
- enum EPlayerBoots {
- EPlayerBoots_0,
- EPlayerBoots_1,
- EPlayerBoots_2,
- EPlayerBoots_3,
- EPlayerBoots_4,
- EPlayerBoots_5,
- };
- struct TBinUVScale {
- float field_0;
- float field_4;
- float field_8;
- float field_c;
- };
- struct LOD {
- uint m_lod1;
- uint m_lod2;
- uint m_lod3;
- uint m_lod4;
- };
- struct TCharAnimSpec {
- int v_1;
- float v_2;
- int v_3;
- int v_4;
- };
- TSATAnim_TSX* GetAnim(uint a1);
- TSATAnim_TSX* GetLegAnim(uint a1);
- // TSATFrameSample 0x498
- class CGfxCharacter {
- public:
- CGfxCharacter(int, int, int, TPlayerInfo *, CPlayer *, int, int); // 0017D450
- ~CGfxCharacter(); // 0017DC4C
- void SetAnimation(int, float, int); // 0017D688
- void SetupPlayer(TPlayerInfo *, bool, int, int); // 0017D69C
- void SetTeamID(int); // 0017DD78
- static void Init(); // 0017DD80
- static void SetMegaAtlasDims(int, int, int, int); // 0017DDC0
- static void LoadDefaultModels(); // 0017DEF4
- static void Shutdown(); // 0017E5EC
- void DeleteDefaultModels(); // 0017E640
- void SetLOD(int, int, int); // 0017E8DC
- void SetKit(int); // 0017E8E6
- void SetBootsColour(EPlayerBoots); // 0017E8EC
- void SetFaceType(int); // 0017E904
- void SetSkinColour(EPlayerSkinColour, int); // 0017E906
- void SetFacialHair(EPlayerFacialHair, EPlayerHairColour); // 0017E910
- void SetHairColour(EPlayerHairColour); // 0017E960
- OfficialSkinHair_st *GetOfficialSkinHair(); // 0017E968
- void UpdateUVs(); // 0017E984
- void CreateAtlasTextures(TPlayerInfo *, int, int, int, int); // 0017E9C0
- void SetBodyXTexture(TPlayerInfo *); // 0017F3D4
- void SetAnimationBlend(int, int, float, float, float, float, int, int); // 0017F530
- void SetVerts(CFTTModel *); // 0017F564
- void GenerateSamples(TSATFrameSample *, TCharAnimSpec *); // 0017F5B4
- uint32 GetHeadRot(); // 0017F7D8
- void UpdateMatrix(CFTTMatrix32 *); // 0017F864
- void UpdateMatrices(CFTTMatrix32 *); // 0017F91C
- void SkinShadow(); // 0017FA70
- void SkinModels(); // 0017FA76
- void RenderBatch(ESHADOWMAP_SAMPLING, int); // 0017FAB8
- static CFTTTexture *GetMegaTexture(); // 00180860
- void RenderShadowBatch(int); // 001808AC
- static void CreateMippedMegaTexture(); // 001809C8
- void SkinProp(); // 00180A30
- void RenderProp(CFTTMatrix32 &); // 00180A64
- void RenderShadow(CFTTMatrix32 *); // 00180B20
- void GetInfo(CFTTModel *&, CFTTMatrix32 &); // 00180B70
- void ResetShadowMatrix(); // 00180BD4
- void LockVertexBuffers(); // 00180BF0
- void UnlockVertexBuffers(); // 00180C00
- int UpdateAnimation(bool); // 00180C0C
- int GetUVScale(TBinUVScale *, int); // 00180E00
- void UpdateUVs(CFTTModel **, int, TUV **); // 00180F28
- void SetPlayerIsKeeper(bool); // 00181148
- void UpdateBlinking(); // 0018114E
- void Blink(bool); // 00181188
- void GetHeadInfo(int, CFTTModel *&, CFTTModel *&, TUV *&, TUV *&, int &, EPlayerSkinColour &); // 00181374
- CFTTModel *m_ShadowModle_0;
- CFTTModel *m_BodyModles_4[5];
- CFTTModel *m_HairModeles_18[5];
- CFTTModel *m_HeaderModles_2c[5];
- // CFTTModel *m_ShadowModle_0[15];
- TUV *m_BodyUV_40[5];
- TUV *m_HairUV_54[5];
- TUV *m_HeaderUV_68[5];
- LOD m_lod_7c;
- int m_Count_8c;
- int m_TeamID_90;
- int m_TeamIndex_94;
- int m_PlayerIndex_98; //第0,11是守门员
- CPlayer *m_Player_9C;
- int m_AtlasCount_A0;
- int m_UnknowType_A4; //某种类型, 默认是0, 但是当m_PlayerIndex_98是14的时候, 会有1,2,3,4这几个值. 大部分的时候跟躯干相关, 控制2996/BB4
- bool m_IsKeeper_A8;
- bool m_UnknowType_A9; //当m_PlayerIndex_98是14的时候是1, 否则是0
- uchar m_UnknowType_AA; //当m_PlayerIndex_98大于14的时候是1, 其它情况是0
- char m_UnknowType_AB; //未知
- int m_Unknow_AC; //一个随机值, 不知道干嘛的
- int m_Unknow_B0;
- int m_IsJudgment_B4; //是否是裁判
- float m_ScaleMatrixFlag_B8;
- TCharAnimSpec m_UnknowAnimation_BC; // SetAnimation
- TCharAnimSpec m_UnknowAnimation_CC; // SetAnimationBlend
- float m_Rotate_DC;
- float m_Blend_E0;
- CFTTMatrix32 m_SalMatrix_E4[42];
- int m_Unknow_B64;
- int m_Unknow_B68;
- int m_Unknow_B6C;
- int m_Unknow_B70;
- int m_Unknow_B74;
- int m_Unknow_B78;
- int m_Unknow_B7C;
- int m_Unknow_B80;
- int m_Unknow_B84;
- int m_Unknow_B88;
- int m_Skincolor1_B8C;
- int m_Skincolor2_B90;
- int m_KitTextureID_B94;
- int m_AtlasAmbientTexture_B98;
- int m_FacialHairTexture_B9C;
- int m_HairMixColColour_BA0;
- EPlayerHairColour m_HairColour_BA4;
- int m_BootsTextureIndex_BA8;
- int m_BootsTexture_BAC;
- int m_GloveTexture_BB0;
- int m_UnknowTexture_BB4; // m_UnknowType_A4是4的时候是torso,其它时候是DiffuseTexture
- int m_BodyModleIndex_BB8;
- int m_HairModleIndex_BBC;
- int m_HeaderModleIndex_BC0;
- uchar m_UnknowBuf_BC4[0x60];
- int m_Materials_C24[8];
- static bool s_bDefaultModelsLoaded; // 003A4ABC
- static CFTTModel *s_pDefaultShadowModel[2]; // 003A4AC0
- static CFTTModel *s_pDefaultBodyModel[50]; // 003A4AC8
- static CFTTModel *s_pDefaultHairModel[100]; // 003A4B90
- static CFTTModel *s_pDefaultHeadModel[40]; // 003A4D20
- static CFTTModel *s_pPropModel[12]; // 003A4DC0
- static CAnimLib *s_pAnimLib; // 003A4DF0
- static int s_iAtlasAmbientTextures[10]; // 003A4DF4
- static int s_iSkinTextures[12]; // 003A4E1C
- static int s_iFacialHairTextures[7]; // 003A4E4C
- static int s_iHairMegaTexture; // 003A4E68
- static int s_iHairSpecularTexture; // 003A4E6C
- static int s_iHairNormalTexture; // 003A4E70
- static int s_iGlovesTextures[5]; // 003A4E74
- static int s_iBootsTextures[12]; // 003A4E88
- static float s_fAtlasDiscardAlpha; // 003A4EB8
- static int s_iCount; // 003A4EBC
- static int s_iAtlasCount; // 003A4EC0
- static int CHAR_MEGA_W; // 003A4EC4
- static int CHAR_MEGA_H; // 003A4EC8
- static CFTTRenderToTexture *s_pMegaRTT; // 003A4ECC
- static CFTTTexture *s_pMegaMippedTex; // 003A4ED0
- static int s_iWalkDirectionAnimLookUp[8]; // 0033EC28
- static int s_iManagerDiffuseTextures[12]; // 0033EC48
- static int s_iManagerSpecularTextures[3]; // 0033EC78
- static int s_iManagerNormalTextures[3]; // 0033EC84
- static int s_iManagerAmbientTextures[3]; // 0033EC90
- static int s_iTorsoSpecularTexture; // 0033EC9C
- static int s_iTorsoNormalTexture; // 0033ECA0
- static int s_iKitSpecularTexture; // 0033ECA4
- static int s_iKitDynamicNormalTexture; // 0033ECA8
- static int s_iKitDynamicAmbientTexture; // 0033ECAC
- static int s_iAtlasSpecularTexture; // 0033ECB0
- static int s_iAtlasNormalTexture; // 0033ECB4
- static int CHAR_ATLAS_W; // 0033ECB8
- static int CHAR_ATLAS_H; // 0033ECBC
- static int CHAR_MEGA_NUM_X; // 0033ECC0
- static int CHAR_MEGA_NUM_Y; // 0033ECC4
- };
- extern unsigned int s_uHairColours[8];
- #endif //_CGFXCHARACTER_H_
|