Reporting of own position, speed and alt
Inheritance: AVSPCMessage
Exemplo n.º 1
0
 void simconnect_OnRecvSimobjectData(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA data)
 {
     if(data.dwRequestID >= (uint)SIMCONNECT_EVENTS.EVENTID_POSITIONREPORT_FOR_AIUPDATE)
         HandleAIPositionReport(data.dwObjectID, (AIPositionReportStruct)data.dwData[0]);
     else
     {
         switch ((SIMCONNECT_EVENTS)data.dwRequestID)
         {
             case SIMCONNECT_EVENTS.EVENTID_POSITIONREPORT:
                 var posreport = (PositionReportStruct)data.dwData[0];
                 var positionReportMsg = new PositionReportMessage()
                 {
                     TrueAltitude = posreport.truealtitude,
                     PressureAltitude = posreport.pressurealtitude,
                     Longitude = posreport.longitude,
                     Latitude = posreport.latitude,
                     Groundspeed = posreport.groundspeed,
                     Pitch = -posreport.pitch,
                     Bank = -posreport.bank,
                     Heading = posreport.heading,
                 };
                 broker.Publish(positionReportMsg);
                 break;
         }
     }
 }
Exemplo n.º 2
0
 private void SendPositionReportToFSDServer(PositionReportMessage positionReportMessage, VSPCContext context)
 {
     if (context.FSDIsConnected && fsdSession.Connected)
         // TODO: TrueAlt + PressureAlt
         fsdSession.SendPDU(new PDUPilotPosition(context.Callsign, positionReportMessage.Transponder, positionReportMessage.SquawkingCharlie, positionReportMessage.Identing, NetworkRating.OBS, positionReportMessage.Latitude, positionReportMessage.Longitude, (int)Math.Round(positionReportMessage.TrueAltitude), (int)Math.Round(positionReportMessage.PressureAltitude), (int)Math.Round(positionReportMessage.Groundspeed), (int)Math.Round(positionReportMessage.Pitch), (int)Math.Round(positionReportMessage.Bank), (int)Math.Round(positionReportMessage.Heading)));
 }