// CGfxCrowd - [2020-04-13 11:57:46] #ifndef _CGFXCROWD_H_ #define _CGFXCROWD_H_ #include "TGfxCrowdState.h" #include "CFTTModel.h" #include "FTTVector.h" #include "CStaticAABBTree.h" #include "FTTUPtr.h" #include "CrowdTextureCreationData.h" #include "TDrawCall.h" #include "CGfxCrowdCardGroup.h" #include "CGfxCrowdFlagRender.h" #include "CFTTRenderToTexture.h" #include "TCrowd.h" //class TGfxCrowdState; /* 0019691C CGfxCrowd::CGfxCrowd() 00196A10 CGfxCrowd::~CGfxCrowd() 001968CC CGfxCrowd::Initialise() 001968EC CGfxCrowd::Shutdown() 0019690C CGfxCrowd::Get() 00196AF8 CGfxCrowd::Shut() 00196E72 CGfxCrowd::Init() 00197140 CGfxCrowd::AddStand(CFTTModel *,CFTTMatrix32) 00199D4C CGfxCrowd::GetCapacity(CFTTModel *,CFTTMatrix32) 00199E08 CGfxCrowd::AssessDesirability(TGfxCrowdSeat &) 00199E3C CGfxCrowd::AssessDesirability(TGfxCrowdSeat &,bool) 00199ED0 CGfxCrowd::Distribute(uint) 0019CBA0 CGfxCrowd::UpdateCrowdTextures(uint) 0019F7E4 CGfxCrowd::Render() 0019F85C CGfxCrowd::RenderSteward() 0019F990 CGfxCrowd::RenderStatic() 0019FCC8 CGfxCrowd::RenderDynamic() 001A101C CGfxCrowd::Process() 001A12C8 CGfxCrowd::GetCrowdState(float &,float &,float &) 001A12E6 CGfxCrowd::GetCapacity() 001A12EA CGfxCrowd::GetTextureCreationData() 001A12F0 CGfxCrowd::GetCrowdValue(ECrowdMemberType) 001A12FC CGfxCrowd::SetCrowdValue(ECrowdMemberType,float) 0xCBD4 */ struct TGfxCrowdSection { int un_0; }; struct TGfxCardSection { int un_0; }; struct TGfxCrowdDynamic { int un_0; }; struct TShot { uchar b_0; uchar b_1; ushort field_2; float f_4; float f_8; float f_C; float f_10; float f_14; float f_18; }; struct SortShots { }; /* Crowd 相关类, 重点检查 Anderson CGfxCrowd.cpp CGfxCrowdCardGroup.cpp CGfxCrowdFlagPhysics.cpp CGfxCrowdFlagRender.cpp CrowdSortB.cpp CrowdSortD.cpp CrowdTextureCreationData.cpp TCrowdMember.cpp TGfxCrowdState.cpp */ class CrowdTextureCreationData; class CGfxCrowd { public: CGfxCrowd(); // 0019691C ~CGfxCrowd(); // 00196A10 static void Initialise(); // 001968CC static void Shutdown(); // 001968EC static CGfxCrowd *Get(); // 0019690C static void Shut(); // 00196AF8 void Init(); // 00196E72 void AddStand(CFTTModel *, CFTTMatrix32); // 00197140 void GetCapacity(CFTTModel *, CFTTMatrix32); // 00199D4C void AssessDesirability(TGfxCrowdSeat &); // 00199E08 void AssessDesirability(TGfxCrowdSeat &, bool); // 00199E3C void Distribute(uint); // 00199ED0 void UpdateCrowdTextures(uint); // 0019CBA0 void Render(); // 0019F7E4 void RenderSteward(); // 0019F85C void RenderStatic(); // 0019F990 void RenderDynamic(); // 0019FCC8 void Process(); // 001A101C void GetCrowdState(float &, float &, float &); // 001A12C8 int GetCapacity(); // 001A12E6 CrowdTextureCreationData *GetTextureCreationData(); // 001A12EA float GetCrowdValue(ECrowdMemberType); // 001A12F0 void SetCrowdValue(ECrowdMemberType, float); // 001A12FC FTTVector vec_0; FTTVector vec_14; FTTVector vec_28; FTTVector vec_3C; FTTVector> vec_50; FTTVector> vec_64; FTTVector> vec_78; FTTUPtr aVec_8C[2]; FTTUPtr tUPtr_94; FTTUPtr tUPtr_98; CFTTTexture *ptexture_9C; CFTTTexture *ptexture_A0; CFTTTexture *ptexture_A4; FTTVector vec_A8; FTTVector vec_BC; FTTUPtr tPtrTextureData_D0; int field_D4; struct CGfxCrowd_D8 { float f_0; float f_4; float f_8; float f_C; float f_10; float f_14; float f_18; float f_1C; float f_20; int f_24; int f_28; int f_2C; }data_d8[0x20][0x20]; //int field_D8; // uchar field_6D8[0xB9FC]; //????????????????????????????????????????????????????? 未知 // int field_C0D4; FTTVector vec_C0D8; TGfxCrowdState tCrowd_C0EC[9]; TGfxCrowdState tCrowd_C1A0[32][4]; FTTVector> vec_CBA0; bool b_CBB4; bool b_CBB5; bool b_CBB6; bool b_CBB7; float f_CBB8; uint dCrowdNewShaderID_CBBC[3]; // 00196A3C 此处可以确定是一个数组 float f_CBC8[3]; // 001A12FC static CGfxCrowd *ms_pInstance; }; #endif //_CGFXCROWD_H_