//CGfxPlayer - [2020-04-13 11:57:46]
#ifndef _CGFXPLAYER_H_
#define _CGFXPLAYER_H_

#include "CFTTMatrix32.h"
#include "CFTTSphere32.h"
#include "CGfxCharacter.h"
#include "CFTTAABB32.h"
#include "CFTTBatchModelBin.h"

/*
00186800 CGfxPlayer::LoadBuildKitTextures()
00186848 CGfxPlayer::FreeBuildKitTextures()
00186868 CGfxPlayer::InitKits(int)
001869E8 CGfxPlayer::InitBatchManager()
00186B68 CGfxPlayer::ShutdownBatchManager()
00186BD4 CGfxPlayer::SetupBatchConstants()
00186D48 CGfxPlayer::InitPlayersGame()
00186F9C CGfxPlayer::ReInitialisePlayer(int,int,int)
00186FA0 CGfxPlayer::RenderProps()
00186FEC CGfxPlayer::RenderPlayerOpaque(int)
00187338 CGfxPlayer::GetFrustumCullingSphere(CFTTSphere32 &,int,bool)
001873C0 CGfxPlayer::RenderPlayerAlphaTested(bool)
001874A8 CGfxPlayer::RenderPlayerTranslucent(bool)
00187598 CGfxPlayer::FlushPlayerSkins()
00187604 CGfxPlayer::FreeKits()
0018763C CGfxPlayer::FreePlayers()
00187684 CGfxPlayer::UpdateProps()
00187790 CGfxPlayer::AnimatePlayer(CPlayer *)
001877D4 CGfxPlayer::AnimatePlayer(CGfxCharacter *,CFTTMatrix32 *)
001877F8 CGfxPlayer::SkinPlayers()
00187D04 CGfxPlayer::SwapTeamKits()
00187EB4 CGfxPlayer::GetKitFileName(int)
00187EC0 CGfxPlayer::AddPlayer(CGfxCharacter *)
00187EE0 CGfxPlayer::RemovePlayer(CGfxCharacter *)
*/

extern int GFXPLAYER_spBatchBinMats[8];
extern int GFXPLAYER_iNumCharacters;
extern CGfxCharacter *GFXPLAYER_pPlayer[33];
extern CFTTAABB32 GFXPLAYER_tPlayerAABBL[33];
extern CFTTAABB32 GFXPLAYER_tPlayerAABBV[33];
extern CFTTAABB32 GFXPLAYER_tShadowMapAABB[4];
extern bool GFXPLAYER_bPlayerVisible[33];
extern bool GFXPLAYER_bPlayerShadowVisible[35];
extern CFTTBatchModelBin *GFXPLAYER_spBatchBins[8];
extern int GFXPLAYER_iKitTextureID[7];
extern uint s_ePerCharacterMat[8];

struct HashNode {
  int field_0;
  int field_4;
  uint dHash_8;
  bool bool_C;
  bool bool_D;
  uchar ePlayerShader_CullMode_E;
  uchar uy_F;
  uint field_10;
};

class CGfxPlayer {
public:
  static void LoadBuildKitTextures();                       //00186800
  static void FreeBuildKitTextures();                       //00186848
  static void InitKits(int);                                //00186868
  static void InitBatchManager();                           //001869E8
  static void ShutdownBatchManager();                       //00186B68
  static void SetupBatchConstants();                        //00186BD4
  static void InitPlayersGame();                            //00186D48
  void ReInitialisePlayer(int, int, int);                   //00186F9C
  static void RenderProps();                                //00186FA0
  static void RenderPlayerOpaque(int);                      //00186FEC
  void GetFrustumCullingSphere(CFTTSphere32 &, int, bool);  //00187338
  static void RenderPlayerAlphaTested(bool);                //001873C0
  static void RenderPlayerTranslucent(bool);                //001874A8
  static void FlushPlayerSkins();                           //00187598
  static void FreeKits();                                   //00187604
  static void FreePlayers();                                //0018763C
  void UpdateProps();                                       //00187684
  void AnimatePlayer(CPlayer *);                            //00187790
  void AnimatePlayer(CGfxCharacter *, CFTTMatrix32 *);      //001877D4
  static void SkinPlayers();                                //001877F8
  void SwapTeamKits();                                      //00187D04
  void GetKitFileName(int);                                 //00187EB4
  void AddPlayer(CGfxCharacter *);                          //00187EC0
  void RemovePlayer(CGfxCharacter *);                       //00187EE0

  static int ms_iHairMatList[33];                           //0045FC64
  static int ms_iNumHairMats;                               //0045FBE0
};

#endif  //_CGFXPLAYER_H_