Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
prediction.h
Go to the documentation of this file.
1 #ifndef __PREDICTION_H
2 #define __PREDICTION_H
3 
4 #include "clientptr.h"
5 #include "gfx/quaternion.h"
6 #include "cubicsplines.h"
7 
9 
11 {
12 protected:
13 //A2 is the predicted position after InitInterpolation()
14  QVector A0, B, A1, A2, A3;
17 
18  double deltatime;
19 
20 public: Prediction();
21  virtual ~Prediction();
22  virtual void InitInterpolation( Unit *un,
23  const ClientState &last_packet_state,
24  double elapsed_since_last_packet,
25  double deltatime );
26 
27 //Interpolate between current received position and predicted position at time 0+deltatime
28 //On the first call, deltatime is the lag value between client and server
29 //for the following calls deltatime = lag+elapsed time since we received last packet
30  virtual QVector InterpolatePosition( Unit *un, double deltatime ) const = 0;
31  virtual Quaternion InterpolateOrientation( Unit *un, double deltatime ) const = 0;
32  virtual Transformation Interpolate( Unit *un, double deltatime ) const;
33 };
34 
35 class NullPrediction : public Prediction
36 {
37 public:
38  virtual void InitInterpolation( Unit *un,
39  const ClientState &last_packet_state,
40  double elapsed_since_last_packet,
41  double deltatime );
42  virtual QVector InterpolatePosition( Unit *un, double deltatime ) const;
43  virtual Quaternion InterpolateOrientation( Unit *un, double deltatime ) const;
44 };
45 
46 class LinearPrediction : virtual public Prediction
47 {
48 public:
49  virtual QVector InterpolatePosition( Unit *un, double deltatime ) const;
50  virtual Quaternion InterpolateOrientation( Unit *un, double deltatime ) const;
51  virtual Transformation Interpolate( Unit *un, double deltatime ) const;
52 };
53 
54 class CubicSplinePrediction : virtual public Prediction
55 {
56 private:
57  CubicSpline interpolation_spline;
58 public:
59  virtual void InitInterpolation( Unit *un,
60  const ClientState &last_packet_state,
61  double elapsed_since_last_packet,
62  double deltatime );
63  virtual QVector InterpolatePosition( Unit *un, double deltatime ) const;
64  virtual Quaternion InterpolateOrientation( Unit *un, double deltatime ) const;
65 };
66 
68  , public LinearPrediction
69 {
70 public:
71  virtual QVector InterpolatePosition( Unit *un, double deltatime ) const;
72  virtual Quaternion InterpolateOrientation( Unit *un, double deltatime ) const;
73  virtual Transformation Interpolate( Unit *un, double deltatime ) const;
74 };
75 
76 #endif
77