CGfxCharacter.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494
  1. #include "CGfxCharacter.h"
  2. #include "CGFXSpec.h"
  3. #include "CResourceManager.h"
  4. #include "CModelManager.h"
  5. #include "CGraphicsTexLoadOptions.h"
  6. #include "CFTTTextureManager.h"
  7. #include "CFTTColour.h"
  8. #include "Matrix.h"
  9. #include "CFTTGraphicsDevice.h"
  10. #include "CGfxShadow.h"
  11. #include "XSYS.h"
  12. #include "CFTTTexture.h"
  13. #include "CPlayerShader.h"
  14. #include "CGfxShadowMapManager.h"
  15. #include "CGfxShadowMap.h"
  16. #include "CGfxEnvironmentMap.h"
  17. #include "CFTTGraphicsDevice.h"
  18. #include "CPBRLighting.h"
  19. #include "CMatchSetup.h"
  20. #include "TGame.h"
  21. #include "CFTTVector32x4.h"
  22. #include "CGFXSpec.h"
  23. #include "CGfxDynNormMap.h"
  24. #include "CGfxPlayer.h"
  25. #include "CFTTBatchModelManager.h"
  26. #include "TFTTCacheLookup.h"
  27. #include "GFXRENDER.h"
  28. #include "CLinearDepthShader.h"
  29. #include "CFTTMaterialManager.h"
  30. #include "TAnimData.h"
  31. #include "CFTTCamera.h"
  32. #include "FTT2D.h"
  33. #include "FE2D.h"
  34. #include "global_func.h"
  35. #include "CShaderSetup.h"
  36. #include "CLegacyLitShader.h"
  37. #include "memctrl.h"
  38. unsigned int s_uHairColours[8] = {0xFF202020, 0xFF64573E, 0xFF3D3323, 0xFFDDD499, 0xFFB1953F, 0xFFB86732, 0xFFB8B8B8, 0xFFFFFFFF};
  39. bool CGfxCharacter::s_bDefaultModelsLoaded; //003A4ABC
  40. CFTTModel *CGfxCharacter::s_pDefaultShadowModel[2]; //003A4AC0
  41. CFTTModel *CGfxCharacter::s_pDefaultBodyModel[50]; //003A4AC8
  42. //CFTTModel *CGfxCharacter::s_pDefaultHairModel[100]; //003A4B90
  43. CFTTModel *CGfxCharacter::s_pDefaultHeadModel[40]; //003A4D20
  44. CFTTModel *CGfxCharacter::s_pPropModel[12]; //003A4DC0
  45. CAnimLib *CGfxCharacter::s_pAnimLib; //003A4DF0
  46. int CGfxCharacter::s_iAtlasAmbientTextures[10]; //003A4DF4
  47. int CGfxCharacter::s_iSkinTextures[12]; //003A4E1C
  48. int CGfxCharacter::s_iFacialHairTextures[7]; //003A4E4C
  49. int CGfxCharacter::s_iHairMegaTexture; //003A4E68
  50. int CGfxCharacter::s_iHairSpecularTexture; //003A4E6C
  51. int CGfxCharacter::s_iHairNormalTexture; //003A4E70
  52. int CGfxCharacter::s_iGlovesTextures[5]; //003A4E74
  53. int CGfxCharacter::s_iBootsTextures[12]; //003A4E88
  54. float CGfxCharacter::s_fAtlasDiscardAlpha; //003A4EB8
  55. int CGfxCharacter::s_iCount; //003A4EBC
  56. int CGfxCharacter::s_iAtlasCount; //003A4EC0
  57. CFTTRenderToTexture *CGfxCharacter::s_pMegaRTT; //003A4ECC
  58. CFTTTexture *CGfxCharacter::s_pMegaMippedTex; //003A4ED0
  59. int CGfxCharacter::s_iWalkDirectionAnimLookUp[8] = {-1, -1, 0x675, -1, 0x677, -1, 0x676, -1}; //0033EC28
  60. int CGfxCharacter::s_iManagerDiffuseTextures[12] = {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //0033EC48
  61. int CGfxCharacter::s_iManagerSpecularTextures[3] = {-1, 0, 0}; //0033EC78
  62. int CGfxCharacter::s_iManagerNormalTextures[3] = {-1, 0, 0}; //0033EC84
  63. int CGfxCharacter::s_iManagerAmbientTextures[3] = {-1, 0, 0}; //0033EC90
  64. int CGfxCharacter::s_iTorsoSpecularTexture = -1; //0033EC9C
  65. int CGfxCharacter::s_iTorsoNormalTexture = -1; //0033ECA0
  66. int CGfxCharacter::s_iKitSpecularTexture = -1; //0033ECA4
  67. int CGfxCharacter::s_iKitDynamicNormalTexture = -1; //0033ECA8
  68. int CGfxCharacter::s_iKitDynamicAmbientTexture = -1; //0033ECAC
  69. int CGfxCharacter::s_iAtlasSpecularTexture = -1; //0033ECB0
  70. int CGfxCharacter::s_iAtlasNormalTexture = -1; //0033ECB4
  71. int CGfxCharacter::CHAR_ATLAS_W = 256; //0033ECB8
  72. int CGfxCharacter::CHAR_ATLAS_H = 256; //0033ECBC
  73. int CGfxCharacter::CHAR_MEGA_NUM_X = 4; //0033ECC0
  74. int CGfxCharacter::CHAR_MEGA_NUM_Y = 8; //0033ECC4
  75. int CGfxCharacter::CHAR_MEGA_W = CGfxCharacter::CHAR_MEGA_NUM_X * CGfxCharacter::CHAR_ATLAS_W; //003A4EC4
  76. int CGfxCharacter::CHAR_MEGA_H = CGfxCharacter::CHAR_ATLAS_H * CGfxCharacter::CHAR_ATLAS_H; //003A4EC8
  77. CFTTModel *list_model_3A4BA4[95];
  78. CFTTModel *list_model_3A4D20[40];
  79. static OfficialSkinHair_st unk_33EDDC[20] = {
  80. {0, 0, 1, 0xC, 1, 1},
  81. {0, 0, 2, 0xC, 1, 0},
  82. {0, 0, 7, 0xC, 2, 2},
  83. {0, 0, 1, 2, 2, 1},
  84. {0, 0, 2, 2, 1, 0},
  85. {3, 2, 0, 2, 1, 2},
  86. {4, 3, 0, 2, 2, 1},
  87. {0, 0, 2, 0xC, 2, 0},
  88. {1, 1, 2, 0xC, 1, 2},
  89. {3, 2, 0, 6, 1, 1},
  90. {4, 3, 0, 6, 2, 0},
  91. {3, 2, 2, 6, 2, 2},
  92. {4, 3, 2, 6, 1, 1},
  93. {0, 0, 1, 0, 1, 0},
  94. {1, 1, 1, 0, 2, 2},
  95. {3, 2, 1, 0, 2, 1},
  96. {4, 3, 1, 0, 1, 0},
  97. {5, 4, 0, 7, 1, 2},
  98. {5, 4, 0, 7, 2, 1},
  99. {5, 4, 0, 7, 2, 0},
  100. };
  101. const char *s_sShadowModelFile[] = {
  102. "data/models/player/body/shadow_1.ftm",
  103. "data/models/player/body/shadow_2.ftm",
  104. };
  105. const char *s_sBodyModelFile[] = {
  106. "body_skinny_short_1.ftm",
  107. "body_skinny_short_2.ftm",
  108. "body_skinny_short_3.ftm",
  109. "body_skinny_short_4.ftm",
  110. "body_skinny_short_5.ftm",
  111. "body_skinny_long_1.ftm",
  112. "body_skinny_long_2.ftm",
  113. "body_skinny_long_3.ftm",
  114. "body_skinny_long_4.ftm",
  115. "body_skinny_long_5.ftm",
  116. "body_regular_short_1.ftm",
  117. "body_regular_short_2.ftm",
  118. "body_regular_short_3.ftm",
  119. "body_regular_short_4.ftm",
  120. "body_regular_short_5.ftm",
  121. "body_regular_long_1.ftm",
  122. "body_regular_long_2.ftm",
  123. "body_regular_long_3.ftm",
  124. "body_regular_long_4.ftm",
  125. "body_regular_long_5.ftm",
  126. "body_stocky_short_1.ftm",
  127. "body_stocky_short_2.ftm",
  128. "body_stocky_short_3.ftm",
  129. "body_stocky_short_4.ftm",
  130. "body_stocky_short_5.ftm",
  131. "body_stocky_long_1.ftm",
  132. "body_stocky_long_2.ftm",
  133. "body_stocky_long_3.ftm",
  134. "body_stocky_long_4.ftm",
  135. "body_stocky_long_5.ftm",
  136. "mbody_1_1.ftm",
  137. "mbody_1_1.ftm",
  138. "mbody_1_2.ftm",
  139. "mbody_1_2.ftm",
  140. "mbody_1_2.ftm",
  141. "mbody_2_1.ftm",
  142. "mbody_2_1.ftm",
  143. "mbody_2_2.ftm",
  144. "mbody_2_2.ftm",
  145. "mbody_2_2.ftm",
  146. "mbody_3_1.ftm",
  147. "mbody_3_1.ftm",
  148. "mbody_3_2.ftm",
  149. "mbody_3_2.ftm",
  150. "mbody_3_2.ftm",
  151. "torso_0_1.ftm",
  152. "torso_0_1.ftm",
  153. "torso_0_2.ftm",
  154. "torso_0_2.ftm",
  155. "torso_0_2.ftm",
  156. };
  157. const char *s_sPropsModelFile[] = {
  158. "flag_02.ftm",
  159. "flag_01.ftm",
  160. "armband_01.ftm",
  161. "yellowcard_l.ftm",
  162. "redcard_l.ftm",
  163. "yellowcard_r.ftm",
  164. "redcard_r.ftm",
  165. "glove_0_1.ftm",
  166. "glove_0_2.ftm",
  167. "glove_0_3.ftm",
  168. "glove_0_4.ftm",
  169. "glove_0_5.ftm",
  170. };
  171. const char *s_sHairModelFile = "data/models/player/hair/hair_%i_%i.ftm";
  172. const char *s_sHeadModelFile = "data/models/player/head/head_%i_%i.ftm";
  173. const char *color_list_3230BC[] = {
  174. "white",
  175. "white_tan",
  176. "black_med",
  177. "black_med",
  178. "black_dark",
  179. "asian",
  180. };
  181. const char *hair_list_3230D4[7] = {
  182. "facialhair_moustache",
  183. "facialhair_goatee",
  184. "facialhair_chinstrap",
  185. "facialhair_lightbeard",
  186. "facialhair_beard",
  187. "facialhair_chops",
  188. "facialhair_stubble",
  189. };
  190. const char *s_sManagerTexturePrefixes[3] = {
  191. "ManagerFormal",
  192. "StylishCoat",
  193. "Trainningjacket",
  194. };
  195. static int dword_17D658[4] = {0, 1, 1, 0};
  196. const char *aStorsoSPng_0 = "%storso_%s.png";
  197. const char *aDataModelsPlay = "data/models/player/textures/";
  198. static const char *off_3230BC[12] = {0};
  199. static uint32 dword_3A4ED4[4] = {FTTHash("gloves"), 0, 0, 0};
  200. TSATAnim_TSX* GetAnim(uint a1){
  201. return CGfxCharacter::s_pAnimLib->GetAnim(a1,true);
  202. }
  203. TSATAnim_TSX* GetLegAnim(uint a1){
  204. return CGfxCharacter::s_pAnimLib->GetAnim(a1,true);
  205. }
  206. //-------------------------------------------------------------------------------------------------
  207. //0017D450
  208. CGfxCharacter::CGfxCharacter(int i1, int i2, int i3, TPlayerInfo *tPlayerInfo4, CPlayer *cPlayer5, int i6, int i7) {
  209. }
  210. //-------------------------------------------------------------------------------------------------
  211. //0017DC4C
  212. CGfxCharacter::~CGfxCharacter() {
  213. }
  214. //-------------------------------------------------------------------------------------------------
  215. //0017D688 ^_^
  216. void CGfxCharacter::SetAnimation(int i1, float f2, int i3) {
  217. }
  218. //-------------------------------------------------------------------------------------------------
  219. //0017D69C
  220. void CGfxCharacter::SetupPlayer(TPlayerInfo *, bool, int, int) {
  221. }
  222. //-------------------------------------------------------------------------------------------------
  223. //0017DD78 ^_^
  224. void CGfxCharacter::SetTeamID(int a1) {
  225. }
  226. //-------------------------------------------------------------------------------------------------
  227. //0017DD80 //^_^
  228. void CGfxCharacter::Init() {
  229. }
  230. //-------------------------------------------------------------------------------------------------
  231. //0017DDC0 //^_^ 经过单元测试,功能正常
  232. void CGfxCharacter::SetMegaAtlasDims(int a0, int a1, int a2, int a3) {
  233. //LOGI("CGfxCharacter::SetMegaAtlasDims 0017DDC0 entry");
  234. }
  235. //-------------------------------------------------------------------------------------------------
  236. int dword_2FE414[] = {19, 40};
  237. //0017DEF4
  238. void CGfxCharacter::LoadDefaultModels() {
  239. //loc_17E522
  240. }
  241. //-------------------------------------------------------------------------------------------------
  242. //0017E5EC ^_^
  243. void CGfxCharacter::Shutdown() {
  244. }
  245. //-------------------------------------------------------------------------------------------------
  246. //0017E640
  247. void CGfxCharacter::DeleteDefaultModels() {
  248. }
  249. //-------------------------------------------------------------------------------------------------
  250. //0017E8DC ^_^
  251. void CGfxCharacter::SetLOD(int i1, int i2, int i3) {
  252. }
  253. //-------------------------------------------------------------------------------------------------
  254. //0017E8E6 ^_^
  255. void CGfxCharacter::SetKit(int i1) {
  256. }
  257. //-------------------------------------------------------------------------------------------------
  258. //0017E8EC ^_^
  259. void CGfxCharacter::SetBootsColour(EPlayerBoots epBoots1) {
  260. }
  261. //-------------------------------------------------------------------------------------------------
  262. //0017E904
  263. void CGfxCharacter::SetFaceType(int i1) {
  264. //empty
  265. }
  266. //-------------------------------------------------------------------------------------------------
  267. //0017E906 ^_^
  268. void CGfxCharacter::SetSkinColour(EPlayerSkinColour epsColour1, int i2) {
  269. }
  270. //-------------------------------------------------------------------------------------------------
  271. //0017E910 ^_-
  272. void CGfxCharacter::SetFacialHair(EPlayerFacialHair efHair1, EPlayerHairColour ehColour2) {
  273. }
  274. //-------------------------------------------------------------------------------------------------
  275. //0017E960
  276. void CGfxCharacter::SetHairColour(EPlayerHairColour a1) {
  277. }
  278. //-------------------------------------------------------------------------------------------------
  279. //0017E968 ^_^
  280. OfficialSkinHair_st *CGfxCharacter::GetOfficialSkinHair() {
  281. return nullptr;
  282. }
  283. //-------------------------------------------------------------------------------------------------
  284. //0017E984 ^_^
  285. void CGfxCharacter::UpdateUVs() {
  286. }
  287. //-------------------------------------------------------------------------------------------------
  288. //0017E9C0
  289. void CGfxCharacter::CreateAtlasTextures(TPlayerInfo *, int, int, int, int) {
  290. }
  291. //-------------------------------------------------------------------------------------------------
  292. //0017F3D4
  293. void CGfxCharacter::SetBodyXTexture(TPlayerInfo *tPlayerInfo1) {
  294. //loc_17F4CE
  295. }
  296. //-------------------------------------------------------------------------------------------------
  297. //0017F530 ^_^
  298. void CGfxCharacter::SetAnimationBlend(int i1, int i2, float f3, float f4, float f5, float f6, int i7, int i8) {
  299. }
  300. //-------------------------------------------------------------------------------------------------
  301. //0017F564 ^_^
  302. void CGfxCharacter::SetVerts(CFTTModel *cModel1) {
  303. }
  304. //-------------------------------------------------------------------------------------------------
  305. //0017F5B4
  306. void CGfxCharacter::GenerateSamples(TSATFrameSample *, TCharAnimSpec *) {
  307. }
  308. //-------------------------------------------------------------------------------------------------
  309. //0017F7D8
  310. uint32 CGfxCharacter::GetHeadRot() {
  311. return 0;
  312. }
  313. //-------------------------------------------------------------------------------------------------
  314. //0017F864
  315. void CGfxCharacter::UpdateMatrix(CFTTMatrix32 *cMatrix32_1) {
  316. //0017F86E LDR.W R0, [R0,#0x9C]
  317. }
  318. //-------------------------------------------------------------------------------------------------
  319. //0017F91C
  320. void CGfxCharacter::UpdateMatrices(CFTTMatrix32 *cfttMatrix32_1) {
  321. //TFTTHierarchyHeader *var_DE8;
  322. //loc_17FA56
  323. /*.text:0017FA56
  324. .text:0017FA56 loc_17FA56 ; CODE XREF: CGfxCharacter::UpdateMatrices(CFTTMatrix32 *)+B6¡üj
  325. .text:0017FA56 ; CGfxCharacter::UpdateMatrices(CFTTMatrix32 *)+F4¡üj
  326. .text:0017FA56 ADD.W SP, SP, #0xDD0
  327. .text:0017FA5A POP.W {R4-R8,PC}
  328. .text:0017FA5A ; End of function CGfxCharacter::UpdateMatrices(CFTTMatrix32 *)*/
  329. }
  330. //-------------------------------------------------------------------------------------------------
  331. //0017FA70 ^_^
  332. void CGfxCharacter::SkinShadow() {
  333. }
  334. //-------------------------------------------------------------------------------------------------
  335. //0017FA76 ^_^
  336. void CGfxCharacter::SkinModels() {
  337. //locret_17FAB0
  338. }
  339. //-------------------------------------------------------------------------------------------------
  340. //0017FAB8
  341. void CGfxCharacter::RenderBatch(ESHADOWMAP_SAMPLING e_1, int i_2) {
  342. }
  343. //-------------------------------------------------------------------------------------------------
  344. //00180860 ^_^
  345. CFTTTexture *CGfxCharacter::GetMegaTexture() {
  346. return 0;
  347. }
  348. //-------------------------------------------------------------------------------------------------
  349. //001808AC ^_- 经过单元测试,功能正常
  350. void CGfxCharacter::RenderShadowBatch(int i1) {
  351. //loc_1809B6
  352. }
  353. //-------------------------------------------------------------------------------------------------
  354. //001809C8 ^_^
  355. void CGfxCharacter::CreateMippedMegaTexture() {
  356. return;
  357. }
  358. //-------------------------------------------------------------------------------------------------
  359. //00180A30 ^_^
  360. void CGfxCharacter::SkinProp() {
  361. }
  362. //-------------------------------------------------------------------------------------------------
  363. //00180A64 ^_- 经过单元测试,功能正常
  364. void CGfxCharacter::RenderProp(CFTTMatrix32 &cfttMatrix32_1) {
  365. }
  366. //-------------------------------------------------------------------------------------------------
  367. //00180B20
  368. void CGfxCharacter::RenderShadow(CFTTMatrix32 *cMatrix32_1) {
  369. }
  370. //-------------------------------------------------------------------------------------------------
  371. //00180B70 ^_^
  372. void CGfxCharacter::GetInfo(CFTTModel *&cModel_1, CFTTMatrix32 &cMatrix32_2) {
  373. //00180B84 LDR.W R2, [R2,R3,LSL#2]
  374. }
  375. //-------------------------------------------------------------------------------------------------
  376. //00180BD4 ^_^
  377. void CGfxCharacter::ResetShadowMatrix() {
  378. }
  379. //-------------------------------------------------------------------------------------------------
  380. //00180BF0 ^_^
  381. void CGfxCharacter::LockVertexBuffers() {
  382. }
  383. //-------------------------------------------------------------------------------------------------
  384. //00180C00 ^_^
  385. void CGfxCharacter::UnlockVertexBuffers() {
  386. }
  387. //-------------------------------------------------------------------------------------------------
  388. //00180C0C
  389. int CGfxCharacter::UpdateAnimation(bool b1) {
  390. return 1;
  391. }
  392. //-------------------------------------------------------------------------------------------------
  393. //00180E00 ^_- 经过单元测试,功能正常
  394. int CGfxCharacter::GetUVScale(TBinUVScale *uvScale, int i2) {
  395. return 1;
  396. }
  397. //-------------------------------------------------------------------------------------------------
  398. //00180F28
  399. void CGfxCharacter::UpdateUVs(CFTTModel **cModel1, int i2, TUV **tuv3) {
  400. }
  401. //-------------------------------------------------------------------------------------------------
  402. //00181148 ^_^
  403. void CGfxCharacter::SetPlayerIsKeeper(bool a1) {
  404. }
  405. //-------------------------------------------------------------------------------------------------
  406. //0018114E ^_^
  407. void CGfxCharacter::UpdateBlinking() {
  408. }
  409. //-------------------------------------------------------------------------------------------------
  410. //00181188
  411. void CGfxCharacter::Blink(bool b1) {
  412. }
  413. //-------------------------------------------------------------------------------------------------
  414. //00181374 ^_^
  415. void CGfxCharacter::GetHeadInfo(int i1, CFTTModel *&cModel2, CFTTModel *&cModel3, TUV *&tuv4, TUV *&tuv5, int &i6, EPlayerSkinColour &eColor7) {
  416. }
  417. //-------------------------------------------------------------------------------------------------
  418. /*
  419. --------------------------------------------------------------------------
  420. 2021.12.17 这几个函数分配给八哥,做外包
  421. 2021.12.20 八哥完成这几个函数
  422. 0017e910 CGfxCharacter::SetFacialHair 24
  423. 0017f564 CGfxCharacter::SetVerts 26
  424. 00180b20 CGfxCharacter::RenderShadow 28
  425. 0017e5ec CGfxCharacter::Shutdown 30
  426. 00180b70 CGfxCharacter::GetInfo 33
  427. 0017f7d8 CGfxCharacter::GetHeadRot 38
  428. 001809c8 CGfxCharacter::CreateMippedMegaTexture 41
  429. 0017f864 CGfxCharacter::UpdateMatrix 47
  430. 2021.12.20 这几个函数分配给八哥,做外包
  431. 0017e904 CGfxCharacter::SetFaceType 1
  432. 0017e960 CGfxCharacter::SetHairColour 2
  433. 0017e8e6 CGfxCharacter::SetKit 2
  434. 00181148 CGfxCharacter::SetPlayerIsKeeper 2
  435. 0017dd78 CGfxCharacter::SetTeamID 2
  436. 0017fa70 CGfxCharacter::SkinShadow 2
  437. 0017e8dc CGfxCharacter::SetLOD 3
  438. 0017e906 CGfxCharacter::SetSkinColour 3
  439. 00180c00 CGfxCharacter::UnlockVertexBuffers 4
  440. 00180bf0 CGfxCharacter::LockVertexBuffers 5
  441. 0017d688 CGfxCharacter::SetAnimation 5
  442. 0017e8ec CGfxCharacter::SetBootsColour 7
  443. 0017e968 CGfxCharacter::GetOfficialSkinHair 8
  444. 00180bd4 CGfxCharacter::ResetShadowMatrix 9
  445. 00180860 CGfxCharacter::GetMegaTexture 13
  446. 0017f530 CGfxCharacter::SetAnimationBlend 14
  447. 00180a30 CGfxCharacter::SkinProp 19
  448. 0017dd80 CGfxCharacter::Init 20
  449. 0017fa76 CGfxCharacter::SkinModels 21
  450. 0018114e CGfxCharacter::UpdateBlinking 21
  451. 00181374 CGfxCharacter::GetHeadInfo 22
  452. 0017e984 CGfxCharacter::UpdateUVs 22
  453. 00180a64 CGfxCharacter::RenderProp 58
  454. 00180e00 CGfxCharacter::GetUVScale 90
  455. 001808ac CGfxCharacter::RenderShadowBatch 97
  456. --------------------------------------------------------------------------
  457. 未分配
  458. 0017f3d4 CGfxCharacter::SetBodyXTexture 104
  459. 0017f91c CGfxCharacter::UpdateMatrices 106
  460. 0017ddc0 CGfxCharacter::SetMegaAtlasDims 107
  461. 00180f28 CGfxCharacter::UpdateUVs 109
  462. 0017dc4c CGfxCharacter::~CGfxCharacter 114
  463. 00181188 CGfxCharacter::Blink 130
  464. 00180c0c CGfxCharacter::UpdateAnimation 151
  465. 0017f5b4 CGfxCharacter::GenerateSamples 168
  466. 0017d450 CGfxCharacter::CGfxCharacter 177
  467. 0017e640 CGfxCharacter::DeleteDefaultModels 237
  468. 0017d69c CGfxCharacter::SetupPlayer 489
  469. 0017def4 CGfxCharacter::LoadDefaultModels 614
  470. 0017e9c0 CGfxCharacter::CreateAtlasTextures 712
  471. 0017fab8 CGfxCharacter::RenderBatch 1208
  472. */