1 #pragma once 2 #include "../vdrift/mathvector.h" 3 #include "../vdrift/quaternion.h" 4 //#include <OgreVector3.h> 5 6 const static int ciTrkHdrSize = 32; 7 8 9 // Track's ghost reduced data 10 //---------------------------------------------------------------------------------------- 11 struct TrackFrame // for game 12 { 13 // time since game start 14 float time; 15 // car, no wheels 16 MATHVECTOR<float,3> pos; 17 QUATERNION<float> rot; //<half>? 18 19 // info 20 char brake, steer; 21 //short vel; char gear; 22 23 TrackFrame(); 24 }; 25 26 // Track's ghost header 27 //-------------------------------------------- 28 struct TrackHeader 29 { 30 int ver; 31 int frameSize; 32 33 TrackHeader(); 34 void Default(); 35 }; 36 37 /// Track's ghost 38 //-------------------------------------------- 39 class TrackGhost 40 { 41 public: 42 TrackGhost(); 43 44 bool LoadFile(std::string file, bool bLog=true); 45 bool SaveFile(std::string file); 46 47 void AddFrame(const TrackFrame& frame); 48 bool GetFrame(float time, TrackFrame* fr); 49 50 const float GetTimeLength() const; 51 void Clear(); 52 53 TrackHeader header; 54 //private: 55 std::vector<TrackFrame> frames; 56 int idLast; // last index from GetFrame 57 58 // test only 59 int getNumFrames(); 60 const TrackFrame& getFrame0(int id); 61 }; 62