CGfxCrowd.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. // CGfxCrowd - [2020-04-13 11:57:46]
  2. #ifndef _CGFXCROWD_H_
  3. #define _CGFXCROWD_H_
  4. #include "TGfxCrowdState.h"
  5. #include "CFTTModel.h"
  6. #include "FTTVector.h"
  7. #include "CStaticAABBTree.h"
  8. #include "FTTUPtr.h"
  9. #include "CrowdTextureCreationData.h"
  10. #include "TDrawCall.h"
  11. #include "CGfxCrowdCardGroup.h"
  12. #include "CGfxCrowdFlagRender.h"
  13. #include "CFTTRenderToTexture.h"
  14. #include "TCrowd.h"
  15. //class TGfxCrowdState;
  16. /*
  17. 0019691C CGfxCrowd::CGfxCrowd()
  18. 00196A10 CGfxCrowd::~CGfxCrowd()
  19. 001968CC CGfxCrowd::Initialise()
  20. 001968EC CGfxCrowd::Shutdown()
  21. 0019690C CGfxCrowd::Get()
  22. 00196AF8 CGfxCrowd::Shut()
  23. 00196E72 CGfxCrowd::Init()
  24. 00197140 CGfxCrowd::AddStand(CFTTModel *,CFTTMatrix32)
  25. 00199D4C CGfxCrowd::GetCapacity(CFTTModel *,CFTTMatrix32)
  26. 00199E08 CGfxCrowd::AssessDesirability(TGfxCrowdSeat &)
  27. 00199E3C CGfxCrowd::AssessDesirability(TGfxCrowdSeat &,bool)
  28. 00199ED0 CGfxCrowd::Distribute(uint)
  29. 0019CBA0 CGfxCrowd::UpdateCrowdTextures(uint)
  30. 0019F7E4 CGfxCrowd::Render()
  31. 0019F85C CGfxCrowd::RenderSteward()
  32. 0019F990 CGfxCrowd::RenderStatic()
  33. 0019FCC8 CGfxCrowd::RenderDynamic()
  34. 001A101C CGfxCrowd::Process()
  35. 001A12C8 CGfxCrowd::GetCrowdState(float &,float &,float &)
  36. 001A12E6 CGfxCrowd::GetCapacity()
  37. 001A12EA CGfxCrowd::GetTextureCreationData()
  38. 001A12F0 CGfxCrowd::GetCrowdValue(ECrowdMemberType)
  39. 001A12FC CGfxCrowd::SetCrowdValue(ECrowdMemberType,float)
  40. 0xCBD4
  41. */
  42. struct TGfxCrowdSection {
  43. int un_0;
  44. };
  45. struct TGfxCardSection {
  46. int un_0;
  47. };
  48. struct TGfxCrowdDynamic {
  49. int un_0;
  50. };
  51. struct TShot
  52. {
  53. uchar b_0;
  54. uchar b_1;
  55. ushort field_2;
  56. float f_4;
  57. float f_8;
  58. float f_C;
  59. float f_10;
  60. float f_14;
  61. float f_18;
  62. };
  63. struct SortShots
  64. {
  65. };
  66. /*
  67. Crowd 相关类, 重点检查 Anderson
  68. CGfxCrowd.cpp
  69. CGfxCrowdCardGroup.cpp
  70. CGfxCrowdFlagPhysics.cpp
  71. CGfxCrowdFlagRender.cpp
  72. CrowdSortB.cpp
  73. CrowdSortD.cpp
  74. CrowdTextureCreationData.cpp
  75. TCrowdMember.cpp
  76. TGfxCrowdState.cpp
  77. */
  78. class CrowdTextureCreationData;
  79. class CGfxCrowd {
  80. public:
  81. CGfxCrowd(); // 0019691C
  82. ~CGfxCrowd(); // 00196A10
  83. static void Initialise(); // 001968CC
  84. static void Shutdown(); // 001968EC
  85. static CGfxCrowd *Get(); // 0019690C
  86. static void Shut(); // 00196AF8
  87. void Init(); // 00196E72
  88. void AddStand(CFTTModel *, CFTTMatrix32); // 00197140
  89. void GetCapacity(CFTTModel *, CFTTMatrix32); // 00199D4C
  90. void AssessDesirability(TGfxCrowdSeat &); // 00199E08
  91. void AssessDesirability(TGfxCrowdSeat &, bool); // 00199E3C
  92. void Distribute(uint); // 00199ED0
  93. void UpdateCrowdTextures(uint); // 0019CBA0
  94. void Render(); // 0019F7E4
  95. void RenderSteward(); // 0019F85C
  96. void RenderStatic(); // 0019F990
  97. void RenderDynamic(); // 0019FCC8
  98. void Process(); // 001A101C
  99. void GetCrowdState(float &, float &, float &); // 001A12C8
  100. int GetCapacity(); // 001A12E6
  101. CrowdTextureCreationData *GetTextureCreationData(); // 001A12EA
  102. float GetCrowdValue(ECrowdMemberType); // 001A12F0
  103. void SetCrowdValue(ECrowdMemberType, float); // 001A12FC
  104. FTTVector<TGfxCrowdSeat> vec_0;
  105. FTTVector<TGfxCrowdSeat> vec_14;
  106. FTTVector<TGfxCrowdDynamic> vec_28;
  107. FTTVector<TGfxCardSection> vec_3C;
  108. FTTVector<FTTUPtr<CGfxCrowdFlagPhysics>> vec_50;
  109. FTTVector<FTTUPtr<CGfxCrowdFlagRender>> vec_64;
  110. FTTVector<FTTUPtr<CGfxCrowdCardGroup>> vec_78;
  111. FTTUPtr<CFTTRenderHelper> aVec_8C[2];
  112. FTTUPtr<CFTTRenderHelper> tUPtr_94;
  113. FTTUPtr<CFTTRenderHelper> tUPtr_98;
  114. CFTTTexture *ptexture_9C;
  115. CFTTTexture *ptexture_A0;
  116. CFTTTexture *ptexture_A4;
  117. FTTVector<uint> vec_A8;
  118. FTTVector<TDrawCall> vec_BC;
  119. FTTUPtr<CrowdTextureCreationData> tPtrTextureData_D0;
  120. int field_D4;
  121. struct CGfxCrowd_D8
  122. {
  123. float f_0;
  124. float f_4;
  125. float f_8;
  126. float f_C;
  127. float f_10;
  128. float f_14;
  129. float f_18;
  130. float f_1C;
  131. float f_20;
  132. int f_24;
  133. int f_28;
  134. int f_2C;
  135. }data_d8[0x20][0x20];
  136. //int field_D8;
  137. // uchar field_6D8[0xB9FC]; //????????????????????????????????????????????????????? 未知
  138. // int field_C0D4;
  139. FTTVector<TGfxCrowdSection> vec_C0D8;
  140. TGfxCrowdState tCrowd_C0EC[9];
  141. TGfxCrowdState tCrowd_C1A0[32][4];
  142. FTTVector<CStaticAABBTree<ushort, 16u>> vec_CBA0;
  143. bool b_CBB4;
  144. bool b_CBB5;
  145. bool b_CBB6;
  146. bool b_CBB7;
  147. float f_CBB8;
  148. uint dCrowdNewShaderID_CBBC[3]; // 00196A3C 此处可以确定是一个数组
  149. float f_CBC8[3]; // 001A12FC
  150. static CGfxCrowd *ms_pInstance;
  151. };
  152. #endif //_CGFXCROWD_H_