//CFTTPPrimitive - [2020-04-13 11:57:46]
#ifndef _CFTTPPRIMITIVE_H_
#define _CFTTPPRIMITIVE_H_

#include "common.h"
#include "fpoint.h"
#include "CFTTPCapsule.h"
#include "CFTTPObject.h"
/*
0016D9D4 CFTTPPrimitive::CFTTPPrimitive(fpoint3<PointType_18>,fpointQ<PointType_18>)
0016D96A CFTTPPrimitive::~CFTTPPrimitive()
0016DA30 CFTTPPrimitive::~CFTTPPrimitive()
0016BE78 CFTTPPrimitive::Diff(CFTTPPrimitive const*,CFTTPPrimitive const*)
0016C240 CFTTPPrimitive::Support(fpoint3<PointType_26>)
0016C378 CFTTPPrimitive::Cache(fpoint<PointType_18>)
0016C55E CFTTPPrimitive::GenerateSweptSphere()

base class
         CFTTPPrimitive
         /
CFTTPPBox
*/
// struct CFTTPPrimitive_4{
//   int field_0[0x22];
//   uchar b_88;
// }

class CFTTPPrimitive {
public:
  CFTTPPrimitive(fpoint3<PointType_18>, fpointQ<PointType_18>);                         //0016D9D4
  virtual ~CFTTPPrimitive();                                                            //0016D96A 0016DA30
  static fpoint3<PointType_26> Diff(CFTTPPrimitive const*, CFTTPPrimitive const*);      //0016BE78
  void Support(fpoint3<PointType_26>);                                                  //0016C240
  void Cache(fpoint<PointType_18>);                                    //0016C378
  CFTTPCapsule GenerateSweptSphere();                                                           //0016C55E
  virtual void DSupport(fpoint3<PointType_26> a1)=0;

//数据结构是一个初步的分析结果，应该还有错误
  CFTTPObject* filed_4;
  fpoint3<PointType_26> fpoint3_8;
  fpointQ<PointType_18> fpointQ_14;
 // int filed_20;
  //int filed_24[3];
  fpoint3<PointType_26> fpoint3_24;
  fpointQQ<PointType_18> fpointQQ_30;

  // int filed_3C;
  // int field_40;   // 44
  // int field_44;   // 48
  // int field_48;   // 4C
  // int field_4C;   // 50
  
  // int field_50; // 54
  // int field_54; // 58
  // int field_58; // 5C
  
  // int field_5C; // 60
  // int field_60; // 64
    int field_64;
};

#endif  //_CFTTPPRIMITIVE_H_