Example #1
0
        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;
            }
        }
Example #2
0
        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));
        }
Example #3
0
        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();
        }
Example #4
0
        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);
            }
        }