//CGfxShadowMapManager - [2020-04-13 11:57:46]
#ifndef _CGFXSHADOWMAPMANAGER_H_
#define _CGFXSHADOWMAPMANAGER_H_

#include "CFTTVector32.h"
#include "CFTTMatrix32.h"
#include "CGfxCharacter.h"
#include "CFE3DPlayer.h"
#include "global_func.h"

/*
001C6FAC CGfxShadowMapManager::CGfxShadowMapManager(CGfxShadowMappingOptions)
001C71DC CGfxShadowMapManager::~CGfxShadowMapManager()
0011E10C CGfxShadowMapManager::PlayerSampling()
0017C592 CGfxShadowMapManager::GetShadowMap(uchar)
001ABC6C CGfxShadowMapManager::StadiumSampling()
001C6D6C CGfxShadowMapManager::GetCurrentShadowMap()
001C7254 CGfxShadowMapManager::Clear(bool)
001C73F4 CGfxShadowMapManager::ClearRTT()
001C74C0 CGfxShadowMapManager::GetCascade(CFTTVector32,float)
001C7558 CGfxShadowMapManager::InitGame(bool)
001C79B0 CGfxShadowMapManager::InitMaterial()
001C79D0 CGfxShadowMapManager::InitMaterial(bool)
001C79F8 CGfxShadowMapManager::IsTurn(uchar)
001C7A40 CGfxShadowMapManager::MapInit()
001C7CB4 CGfxShadowMapManager::RenderDebug()
001C7DC0 CGfxShadowMapManager::ResetStatic()
001C8030 CGfxShadowMapManager::MapPlayer(CGfxCharacter **,CFTTMatrix32,int,float,float,float,bool)
001C8748 CGfxShadowMapManager::MapPlayer(CGfxCharacter **,CFE3DPlayer **,int,CFTTVector32,bool)
001C8AA8 CGfxShadowMapManager::Update()
001C93F4 CGfxShadowMapManager::UpdateMaps()
001C9564 CGfxShadowMapManager::GetTexture()
001CA3AC CGfxShadowMapManager::SetRotationMatrix(CFTTMatrix32)
001CA698 CGfxShadowMapManager::Boundaries()
001CA714 CGfxShadowMapManager::Split(uchar)
001CA754 CGfxShadowMapManager::ViewParams()
001CA788 CGfxShadowMapManager::Uniforms(int,CFTTMatrix32 const&,bool,uchar)

0x130
*/

union U_DATA_INT {
  int Iegt;
  uchar ch[4];
};

class CGfxShadowMappingOptions {
public:
  int field_0;
  int filed_4;
  int filed_8;
  int filed_c;
  int filed_10;
  int filed_14;
  int filed_18;
};
class CGfxShadowMap;
class CFTTRenderToTexture;
class CFTTTexture;
class CGfxShadowMapManager {
public:
  CGfxShadowMapManager(CGfxShadowMappingOptions);                                 //001C6FAC
  ~CGfxShadowMapManager();                                                        //001C71DC
  ESHADOWMAP_SAMPLING PlayerSampling();                                           //0011E10C
  CGfxShadowMap* GetShadowMap(uchar) const;                                             //0017C592
  int StadiumSampling();                                                          //001ABC6C
  CGfxShadowMap* GetCurrentShadowMap() const;                                           //001C6D6C
  void Clear(bool);                                                               //001C7254
  void ClearRTT();                                                                //001C73F4
  uchar GetCascade(CFTTVector32, float);                                          //001C74C0
  void InitGame(bool);                                                            //001C7558
  void InitMaterial();                                                            //001C79B0
  void InitMaterial(bool);                                                        //001C79D0
  bool IsTurn(uchar);                                                             //001C79F8
  static void MapInit();                                                          //001C7A40
  void RenderDebug();                                                             //001C7CB4
  void ResetStatic();                                                             //001C7DC0
  void MapPlayer(CGfxCharacter**, CFTTMatrix32, int, float, float, float, bool);  //001C8030
  void MapPlayer(CGfxCharacter**, CFE3DPlayer**, int, CFTTVector32, bool);        //001C8748
  void Update();                                                                  //001C8AA8
  void UpdateMaps();                                                              //001C93F4
  CFTTTexture* GetTexture();                                                      //001C9564
  void SetRotationMatrix(CFTTMatrix32);                                           //001CA3AC
  static CFTTVector32 Boundaries();                                               //001CA698
  float Split(uchar);                                                             //001CA714
  struct TPointF ViewParams();                                                    //001CA754
  CFTTMatrix32 Uniforms(int, CFTTMatrix32 const&, bool, uchar);                   //001CA788

  CFTTRenderToTexture* field_0;
  CGfxShadowMap** filed_4;
  int filed_8;
  int filed_c;
  int filed_10;
  char filed_14;
  char filed_15;
  char filed_16;
  char filed_17;
  int filed_18;
  int filed_1c;
  U_DATA_INT filed_20;
  int filed_24;
  char filed_28;
  char filed_29;  //没有使用到， 占位
  char filed_2a;  //没有使用到， 占位
  char filed_2b;  //没有使用到， 占位
  int filed_2c;
  char filed_30;
  char filed_31;
  char filed_32;
  bool filed_33;
  char filed_34;
  char filed_35;  //没有使用到， 占位
  char filed_36;  //没有使用到， 占位
  char filed_37;  //没有使用到， 占位
  int filed_38;
  int filed_3c;
  CFTTMatrix32 filed_40;
  CFTTMatrix32 filed_80;
  CFTTVector32 filed_c0[4];
  int filed_f0[16];

  static CGfxShadowMapManager* ms_pManager;
};

#endif  //_CGFXSHADOWMAPMANAGER_H_