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