refs #332 Add slew mode position packet to FS9 SDK

This commit is contained in:
Roland Winklmeier
2014-09-27 23:37:32 +02:00
parent c94295e473
commit 5ad9c9c30b
2 changed files with 51 additions and 1 deletions

View File

@@ -46,6 +46,7 @@ namespace BlackSimPlugin
MULTIPLAYER_PACKET_ID_BASE = 0x1000,
MULTIPLAYER_PACKET_ID_PARAMS = MULTIPLAYER_PACKET_ID_BASE,
MULTIPLAYER_PACKET_ID_CHANGE_PLAYER_PLANE = 0x1003,
MULTIPLAYER_PACKET_ID_POSITION_SLEWMODE = 0x100C,
MULTIPLAYER_PACKET_ID_POSITION_VELOCITY = 0x100D,
MPCHAT_PACKET_ID_CHAT_TEXT_SEND = 0x1017,
};
@@ -147,7 +148,25 @@ namespace BlackSimPlugin
quint16 alt_f = 0; //!< Altitude value - decimal part
};
//! Full pultiplayer position and velocity packet
//! Multiplayer position packet in slew mode
struct MULTIPLAYER_PACKET_POSITION_SLEWMODE
{
MULTIPLAYER_PACKET_POSITION_SLEWMODE() {}
quint32 application_time = 0; //!< Application time - ignored
quint32 packet_index = 0; //!< Packet index
std::array<quint8, 4> reserved = std::array<quint8, 4>{{0, 0, 0, 0}}; //!< Reserved
qint32 pbh = 0; //!< Pitch/Bank/Heading
qint32 lat_i = 0; //!< Latitude - integer
qint32 lon_hi = 0; //!< Longitude - integer
qint32 alt_i = 0; //!< Altitude - integer
quint16 lat_f = 0; //!< Latitude - fraction
quint16 lon_lo = 0; //!< Longitude - fraction
quint16 alt_f = 0; //!< Altitude - fraction
std::array<quint8, 2> unknown = std::array<quint8, 2>{{0, 0}}; //!< Unknown packet
};
//! Full multiplayer position and velocity packet
struct MULTIPLAYER_PACKET_POSITION_VELOCITY
{
MULTIPLAYER_PACKET_POSITION_VELOCITY() {}

View File

@@ -95,6 +95,37 @@ namespace BlackSimPlugin
qint32 size() { return chat_data.size() + 1; }
};
//! Multiplayer packet in slew mode
struct MPPositionSlewMode : public MULTIPLAYER_PACKET_POSITION_SLEWMODE
{
//! Return tuple of member variables
std::tuple<quint32 &, quint32 &,
quint8 &, quint8 &, quint8 &, quint8 &,
qint32 &, qint32 &, qint32 &, qint32 &,
quint16 &, quint16 &, quint16 &> getTuple()
{
return std::tie(application_time, packet_index,
reserved[0], reserved[1], reserved[2], reserved[3],
pbh, lat_i, lon_hi, alt_i,
lat_f, lon_lo, alt_f);
}
//! Return const tuple of member variables
std::tuple<const quint32 &, const quint32 &,
const quint8 &, const quint8 &, const quint8 &, const quint8 &,
const qint32 &, const qint32 &, const qint32 &, const qint32 &,
const quint16 &, const quint16 &, const quint16 &> getTuple() const
{
return std::tie(application_time, packet_index,
reserved[0], reserved[1], reserved[2], reserved[3],
pbh, lat_i, lon_hi, alt_i,
lat_f, lon_lo, alt_f);
}
//! Struct size
qint32 size() { return 36; }
};
//! Multiplayer packet - position and velocity
struct MPPositionVelocity : public MULTIPLAYER_PACKET_POSITION_VELOCITY
{