]> git.mxchange.org Git - flightgear.git/blobdiff - src/MultiPlayer/mpmessages.hxx
Remove unused files.
[flightgear.git] / src / MultiPlayer / mpmessages.hxx
index c4a13eb6ca7be90d8fe7d6eb35d7cb01040cafd8..523c555c69304c587522a458f1201382450d91d6 100644 (file)
 *
 ******************************************************************/
 
-#include <simgear/compiler.h>
-#include "tiny_xdr.hpp"
+#include <vector>
+
 #include <plib/sg.h>
+#include <simgear/compiler.h>
+#include <simgear/math/SGMath.hxx>
+#include "tiny_xdr.hxx"
 
 // magic value for messages
 const uint32_t MSG_MAGIC = 0x46474653;  // "FGFS"
@@ -47,45 +50,106 @@ const uint32_t PROTO_VER = 0x00010001;  // 1.1
 // Message identifiers
 #define CHAT_MSG_ID             1
 #define UNUSABLE_POS_DATA_ID    2
-#define POS_DATA_ID             3
+#define OLD_OLD_POS_DATA_ID     3
+#define OLD_POS_DATA_ID         4
+#define OLD_PROP_MSG_ID         5
+#define RESET_DATA_ID           6
+#define POS_DATA_ID             7
 
 // XDR demands 4 byte alignment, but some compilers use8 byte alignment
-// so it's safe to let the overall size of a netmork message be a 
+// so it's safe to let the overall size of a network message be a 
 // multiple of 8!
 #define MAX_CALLSIGN_LEN        8
-#define MAX_CHAT_MSG_LEN        48
-#define MAX_MODEL_NAME_LEN      48
-
-/** Aircraft position message */
-typedef xdr_data2_t xdrPosition[3];
-typedef xdr_data_t  xdrOrientation[4];
+#define MAX_CHAT_MSG_LEN        256
+#define MAX_MODEL_NAME_LEN      96
+#define MAX_PROPERTY_LEN        52
 
 // Header for use with all messages sent 
-class T_MsgHdr {
-public:  
+struct T_MsgHdr {
     xdr_data_t  Magic;                  // Magic Value
     xdr_data_t  Version;                // Protocoll version
     xdr_data_t  MsgId;                  // Message identifier 
-    xdr_data_t  MsgLen;                 // absolue length of message
+    xdr_data_t  MsgLen;                 // absolute length of message
     xdr_data_t  ReplyAddress;           // (player's receiver address
     xdr_data_t  ReplyPort;              // player's receiver port
     char Callsign[MAX_CALLSIGN_LEN];    // Callsign used by the player
 };
 
 // Chat message 
-class T_ChatMsg {
-public:    
+struct T_ChatMsg {
     char Text[MAX_CHAT_MSG_LEN];       // Text of chat message
 };
 
 // Position message
-class T_PositionMsg {
-public:
+struct T_PositionMsg {
     char Model[MAX_MODEL_NAME_LEN];    // Name of the aircraft model
-    xdrPosition     PlayerPosition;     // players position
-    xdrOrientation  PlayerOrientation;  // players orientation
+
+    // Time when this packet was generated
+    xdr_data2_t time;
+    xdr_data2_t lag;
+
+    // position wrt the earth centered frame
+    xdr_data2_t position[3];
+    // orientation wrt the earth centered frame, stored in the angle axis
+    // representation where the angle is coded into the axis length
+    xdr_data_t orientation[3];
+
+    // linear velocity wrt the earth centered frame measured in
+    // the earth centered frame
+    xdr_data_t linearVel[3];
+    // angular velocity wrt the earth centered frame measured in
+    // the earth centered frame
+    xdr_data_t angularVel[3];
+
+    // linear acceleration wrt the earth centered frame measured in
+    // the earth centered frame
+    xdr_data_t linearAccel[3];
+    // angular acceleration wrt the earth centered frame measured in
+    // the earth centered frame
+    xdr_data_t angularAccel[3];
 };
 
-#endif
+// Property message
+struct T_PropertyMsg {
+    xdr_data_t id;
+    xdr_data_t value;
+};
 
+struct FGFloatPropertyData {
+  unsigned id;
+  float value;
+};
 
+// Position message
+struct FGExternalMotionData {
+  // simulation time when this packet was generated
+  double time;
+  // the artificial lag the client should stay behind the average
+  // simulation time to arrival time diference
+  // FIXME: should be some 'per model' instead of 'per packet' property
+  double lag;
+  
+  // position wrt the earth centered frame
+  SGVec3d position;
+  // orientation wrt the earth centered frame
+  SGQuatf orientation;
+  
+  // linear velocity wrt the earth centered frame measured in
+  // the earth centered frame
+  SGVec3f linearVel;
+  // angular velocity wrt the earth centered frame measured in
+  // the earth centered frame
+  SGVec3f angularVel;
+  
+  // linear acceleration wrt the earth centered frame measured in
+  // the earth centered frame
+  SGVec3f linearAccel;
+  // angular acceleration wrt the earth centered frame measured in
+  // the earth centered frame
+  SGVec3f angularAccel;
+  
+  // The set of properties recieved for this timeslot
+  std::vector<FGFloatPropertyData> properties;
+};
+
+#endif