//CGfxPrecipitation - [2020-04-13 11:57:46]
#ifndef _CGFXPRECIPITATION_H_
#define _CGFXPRECIPITATION_H_

#include "CFTTConvex.h"
#include "CGfxPitch.h"
#include "CFTTFrustum32.h"

/*
001BE9C0 CGfxPrecipitation::CGfxPrecipitation(int,EWeather)
001BEB38 CGfxPrecipitation::~CGfxPrecipitation()
001BEAE4 CGfxPrecipitation::Init()
001E24F0 CGfxPrecipitation::Init(EWeather)
0012A5C0 CGfxPrecipitation::Shutdown()
001BEC00 CGfxPrecipitation::UpdateWeather(int)
001BEEA8 CGfxPrecipitation::InitConvexes()
001BF21C CGfxPrecipitation::Render()
001BF804 CGfxPrecipitation::SetOld()
001BF86C CGfxPrecipitation::Update(bool)
001BFD7C CGfxPrecipitation::UpdateParticles()
001BFF04 CGfxPrecipitation::CullParticles()
001C00A0 CGfxPrecipitation::GenerateToEmpty()
001C04AC CGfxPrecipitation::GenerateTop(CFTTConvex *)

*/

class CGfxPrecipitation {
public:
  CGfxPrecipitation(int, EWeather);  //001BE9C0
  ~CGfxPrecipitation();              //001BEB38
  void Init();                       //001BEAE4
  static void Init(EWeather);        //001E24F0
  static void Shutdown();            //0012A5C0
  void UpdateWeather(int);           //001BEC00
  void InitConvexes();               //001BEEA8
  void Render();                     //001BF21C
  void SetOld();                     //001BF804
  void Update(bool);                 //001BF86C
  void UpdateParticles();            //001BFD7C
  void CullParticles();              //001BFF04
  void GenerateToEmpty();            //001C00A0
  void GenerateTop(CFTTConvex*);     //001C04AC

  CFTTVector32* pvec32_0;
  CFTTVector32* pvec32_4;
  CFTTVector32* pvec32_8;
  CFTTConvex* pconvex_C;
  CFTTConvex* pconvex_10;
  CFTTMatrix32 matrix_14;
  CFTTFrustum32 frustum_54;
  CFTTPlane32 plane_B4[6];
  CFTTMatrix32 matrix_114;
  float f_154;
  bool b_158;
  TFTTVertex* pvertex_15C;
  TFTTEdge* pedge_160;
  TFTTFace* pface_164;
  TFTTTetrahedron* ptetrahedron_168;
  TFTTTriangle* ptriangle_16C;
  int i_170;
  int i_174;
  char padding_178[4];  //
  CFTTRenderHelper* phelper_17C;

  // CFTTVector32* field_180;
  // float field_184;
  // int field_188;

  CFTTVector32 vec32_180;

  // int field_18C;
  // int field_190;
  // int field_194;
  // int field_198;

  // float field_18C[4];

  CFTTVector32 vec32_18C;
  float f_198;

  // int field_19C;
  // int field_1A0;
  // int field_1A4;
  // float field_1A8;
  float f_19C[4];
  float f_1AC;
  int i_1B0;
  ushort us_1B4;  // ushort？

  static CGfxPrecipitation* ms_pcInstance;
};

#endif  //_CGFXPRECIPITATION_H_