// CPBRLighting - [2020-04-13 11:57:47]
#ifndef _CPBRLIGHTING_H_
#define _CPBRLIGHTING_H_

#include "common.h"

/*
0018C9D4 CPBRLighting::CPBRLighting()
0018CC78 CPBRLighting::~CPBRLighting()
0018C984 CPBRLighting::Init()
0018C9A4 CPBRLighting::Shutdown()
0018C9C4 CPBRLighting::Get()
0018CA14 CPBRLighting::Initialise(bool)
0018CCB8 CPBRLighting::CreateVersatileLUT()
0018CF08 CPBRLighting::CreateSpecularLUT(EPBRLightingMat,float,float,float,int,int,float,float)
0018D1F0 CPBRLighting::CreateDiffuseLUTSkin()
0018D4BC CPBRLighting::CreateDiffuseLUTKit()
0018D66C CPBRLighting::CreateDiffuseLUTKitAlpha()
0018D7AC CPBRLighting::CreateDiffuseLUTSuit()
0018D95C CPBRLighting::CreateDiffuseLUTTracksuit()
0018DB0C CPBRLighting::CreateDiffuseLUTHair()
0018DC4C CPBRLighting::CreateGrassLUT()
0018E154 CPBRLighting::Reinitialise(bool b)
0018E1AA CPBRLighting::Prepare()
0018E1AC CPBRLighting::floatToFour(float,uchar *,float)
0018E574 CPBRLighting::CreateDiffuseLUTBall()
0018E684 CPBRLighting::GetDiffuse(EPBRLightingMat)
0018E68C CPBRLighting::GetSpecular(EPBRLightingMat)
0018E694 CPBRLighting::GetVersatile()
0018E698 CPBRLighting::GetGrass()
0018E69C CPBRLighting::SpecialFrac(float)

0018D4BC CreateDiffuseLUTKit
0018D66C CreateDiffuseLUTKitAlpha
0018D7AC CreateDiffuseLUTSuit

0018D95C CreateDiffuseLUTTracksuit
0018DB0C CreateDiffuseLUTHair
0018DC4C CreateGrassLUT

0x48
*/

enum EPBRLightingMat {
  EPBRLightingMat_0,
  EPBRLightingMat_1,
  EPBRLightingMat_2,
  EPBRLightingMat_3,
  EPBRLightingMat_4,
  EPBRLightingMat_5,
  EPBRLightingMat_6,
};

enum EPlayerShaderQuality {
  EPlayerShaderQuality_0,
  EPlayerShaderQuality_1,
  EPlayerShaderQuality_2,
  EPlayerShaderQuality_3,
  EPlayerShaderQuality_4,
  EPlayerShaderQuality_5,
};

class CFTTTexture;
class CPBRLighting {
public:
  CPBRLighting();                                                                        // 0018C9D4
  ~CPBRLighting();                                                                       // 0018CC78
  static void Init();                                                                    // 0018C984
  static void Shutdown();                                                                // 0018C9A4
  static CPBRLighting* Get();                                                            // 0018C9C4
  void Initialise(bool);                                                                 // 0018CA14
  void CreateVersatileLUT();                                                             // 0018CCB8
  void CreateSpecularLUT(EPBRLightingMat, float, float, float, int, int, float, float);  // 0018CF08
  void CreateDiffuseLUTSkin();                                                           // 0018D1F0
  void CreateDiffuseLUTKit();                                                            // 0018D4BC
  void CreateDiffuseLUTKitAlpha();                                                       // 0018D66C
  void CreateDiffuseLUTSuit();                                                           // 0018D7AC
  void CreateDiffuseLUTTracksuit();                                                      // 0018D95C
  void CreateDiffuseLUTHair();                                                           // 0018DB0C
  void CreateGrassLUT();                                                                 // 0018DC4C
  void Reinitialise(bool b);                                                             // 0018E154
  void Prepare();                                                                        // 0018E1AA
  void floatToFour(float, uchar*, float);                                                // 0018E1AC
  void CreateDiffuseLUTBall();                                                           // 0018E574
  CFTTTexture* GetDiffuse(EPBRLightingMat);                                              // 0018E684
  CFTTTexture* GetSpecular(EPBRLightingMat);                                             // 0018E68C
  CFTTTexture* GetVersatile();                                                           // 0018E694
  CFTTTexture* GetGrass();                                                               // 0018E698
  void SpecialFrac(float);                                                               // 0018E69C

  CFTTTexture* filed_0;
  CFTTTexture* filed_4;
  CFTTTexture* filed_8[7];
  CFTTTexture* filed_24[7];
  bool filed_40;
  int filed_44;

  static CPBRLighting* ms_pInstance;
};

#endif  //_CPBRLIGHTING_H_