void sc_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data) { switch ((EventIDs)data.uEventID) { case EventIDs.AddObject: if (data.dwData != 0 && !Objects.ContainsKey(data.dwData)) { UserPosition pos = new UserPosition(); sc.RequestDataOnSimObject( (RequestID)((int)RequestID.AIDataBase + data.dwData), data.dwData, SIMCONNECT_PERIOD.VISUAL_FRAME, SIMCONNECT_DATA_REQUEST_FLAG.CHANGED, pos); } break; case EventIDs.RemoveObject: if (data.dwData != 0 && Objects.ContainsKey(data.dwData)) { lstViewer.Items.Remove(Objects[data.dwData].ListItem); Objects.Remove(data.dwData); } break; } }
void sc_OnRecvOpen(SimConnect sender, SIMCONNECT_RECV_OPEN data) { lstViewer.Items.Clear(); UserPosition pos = new UserPosition(); sc.RequestDataOnUserSimObject( RequestID.UserPosition, SIMCONNECT_PERIOD.VISUAL_FRAME, pos); sc.SubscribeToSystemEvent(EventIDs.AddObject, "ObjectAdded"); sc.SubscribeToSystemEvent(EventIDs.RemoveObject, "ObjectRemoved"); sc.RequestDataOnSimObjectType(RequestID.AIEnumerate, 200000, SIMCONNECT_SIMOBJECT_TYPE.AIRCRAFT, typeof(UserPosition)); }
void sc_OnRecvSimobjectData(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA data) { UserPosition pos = (UserPosition)data.dwData; if (!Objects.ContainsKey(data.dwObjectID)) { Objects.Add(data.dwObjectID, pos); lstViewer.Items.Add(pos.ListItem); } pos.ListItem.SubItems[colheaderLatitude.Index].Text = pos.LatitudeDegrees.ToString(); pos.ListItem.SubItems[colheaderLongitude.Index].Text = pos.LongitudeDegrees.ToString(); pos.ListItem.SubItems[colheaderAltitude.Index].Text = pos.AltitudeFeet.ToString(); pos.ListItem.SubItems[colheaderPitch.Index].Text = pos.PitchDegrees.ToString(); pos.ListItem.SubItems[colheaderBank.Index].Text = pos.BankDegrees.ToString(); pos.ListItem.SubItems[colheaderHeading.Index].Text = pos.HeadingDegrees.ToString(); }
void sc_OnRecvSimobjectDataBytype(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE data) { UserPosition pos = (UserPosition)data.dwData; if (!pos.IsUser && !Objects.ContainsKey(data.dwObjectID)) { pos.ListItem.SubItems[colheaderLatitude.Index].Text = pos.LatitudeDegrees.ToString(); pos.ListItem.SubItems[colheaderLongitude.Index].Text = pos.LongitudeDegrees.ToString(); pos.ListItem.SubItems[colheaderAltitude.Index].Text = pos.AltitudeFeet.ToString(); pos.ListItem.SubItems[colheaderPitch.Index].Text = pos.PitchDegrees.ToString(); pos.ListItem.SubItems[colheaderBank.Index].Text = pos.BankDegrees.ToString(); pos.ListItem.SubItems[colheaderHeading.Index].Text = pos.HeadingDegrees.ToString(); Objects.Add(data.dwObjectID, pos); lstViewer.Items.Add(pos.ListItem); sc.RequestDataOnSimObject( (RequestID)((int)RequestID.AIDataBase + data.dwObjectID), data.dwObjectID, SIMCONNECT_PERIOD.VISUAL_FRAME, SIMCONNECT_DATA_REQUEST_FLAG.CHANGED, pos); } }