// CFTTRenderHelper - [2020-04-13 11:57:46]
#ifndef _CFTTRENDERHELPER_H_
#define _CFTTRENDERHELPER_H_

#include "CFTTGraphicsBuffer.h"
#include "CFTTVector32.h"
#include "CFTTMatrix32.h"

/*
0020123C CFTTRenderHelper(CFTTRenderHelper_InitParams &)
002012AC ~CFTTRenderHelper()
002012E0 LockVertices()
002012EE UnlockVertices(int)
00201304 SetVertices(void const*,int)
00201320 LockIndices()
0020132E UnlockIndices(int)
00201342 SetIndices(ushort const*,int)
0020135C Render(CFTTMatrix32 const*,int,int,int)

FTTGraphicsInitialize -> g_pGraphicsDevice

0x2C
*/

struct CFTTRenderHelper_InitParams {
  FTTPRIMTYPE eFTTPRIMTYPE_0;
  int dVerticeCount_4;
  uint field_8;
  EFTTGraphicsBufferVolatility eBufferVolatility_C;
  int dIndiceCount_10;
  uint eBufferVolatility_14;  // EFTTGraphicsBufferVolatility
  uint dShaderMat_18;
  uchar byte_1C;
  uchar field_1D;
  uchar field_1E;
  uchar field_1F;
};

class CFTTRenderHelper {
public:
  CFTTRenderHelper(CFTTRenderHelper_InitParams &);                   // 0020123C
  ~CFTTRenderHelper();                                               // 002012AC
  void *LockVertices();                                              // 002012E0
  void UnlockVertices(int count);                                    // 002012EE
  void SetVertices(void const *, int);                               // 00201304
  void LockIndices();                                                // 00201320
  void UnlockIndices(int);                                           // 0020132E
  void SetIndices(ushort const *, int);                              // 00201342
  void Render(CFTTMatrix32 const *pMatrix, int a3, int a4, int a5);  // 0020135C

  FTTPRIMTYPE eFTTPRIMTYPE_0;
  int dVerticeCount_4;
  uint field_8;
  int len_indices_C;
  CFTTGraphicsBuffer *pGraphicsBuffer_10;
  CFTTGraphicsBuffer *pGraphicsBuffer_14;
  uchar byte_18;
  int dMaterialID_1C;
  uint vert_size_20;
  int vert_count_24;
  int len_Indices_28;
};

#endif  //_CFTTRENDERHELPER_H_