示例#1
0
        private void sc_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
        {
            switch ((EventIDs)data.uEventID)
            {
            case EventIDs.AddObject:
                if (data.dwData != 0 && !Objects.Contains(data.dwData))
                {
                    VehiclePosition pos = new VehiclePosition(data.dwData);
                    Objects.Add(pos);
                    sender.RequestDataOnSimObject(
                        (RequestIDs)((int)RequestIDs.AIDataBase + (int)pos.ObjectID),
                        pos.ObjectID,
                        SIMCONNECT_PERIOD.VISUAL_FRAME,
                        SIMCONNECT_DATA_REQUEST_FLAG.CHANGED,
                        pos);
                }
                break;

            case EventIDs.RemoveObject:
                if (data.dwData != 0 && Objects.Contains(data.dwData))
                {
                    Objects.Remove(data.dwData);
                }
                break;
            }
        }
示例#2
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;
            }
        }
示例#3
0
 void sc_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
 {
     if ((Events)data.uEventID == Events.ObjectAdded &&
         (data.eObjType == SIMCONNECT_SIMOBJECT_TYPE.AIRCRAFT || data.eObjType == SIMCONNECT_SIMOBJECT_TYPE.HELICOPTER) &&
         (data.dwData != SimConnect.USER_SIMOBJECT))
     {
         sc.RequestDataOnSimObject(
             (Requests)((uint)Requests.TrafficInfoBase + (uint)data.dwData),
             data.dwData, SIMCONNECT_PERIOD.SECOND, SIMCONNECT_DATA_REQUEST_FLAG.DEFAULT, typeof(TrafficInfo));
     }
 }
示例#4
0
 private void SimConnect_OnRecvEventObjectAddremove(SimConnectImpl sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
 {
     if (data.uEventID == (uint)EVENT.ObjectAdded &&
         (data.eObjType == SIMCONNECT_SIMOBJECT_TYPE.AIRCRAFT ||
          data.eObjType == SIMCONNECT_SIMOBJECT_TYPE.HELICOPTER) &&
         data.dwData != SimConnectImpl.SIMCONNECT_OBJECT_ID_USER)
     {
         _simConnect?.RequestDataOnSimObject(
             REQUEST.TrafficObjectBase + data.dwData,
             DEFINITION.Traffic, data.dwData,
             SIMCONNECT_PERIOD.SECOND,
             SIMCONNECT_DATA_REQUEST_FLAG.DEFAULT,
             0, 0, 0);
     }
 }
示例#5
0
        void sc_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
        {
            switch ((Events)data.uEventID)
            {
#if DEBUG
            case Events.AddObject:
                log.Info(string.Format("AddObject: {0} SIMCONNECT_SIMOBJECT_TYPE: {1}", data.dwData, Enum.GetName(typeof(SIMCONNECT_SIMOBJECT_TYPE), data.eObjType)));
                break;
#endif
            case Events.RemoveObject:
                if (ObjectsInSimulation.Values.Any(x => x.ObjectID == data.dwData))
                {
                    log.Info(string.Format("RemoveObject: {0} (created by client)", data.dwData));
                    ObjectsInSimulation.Remove(ObjectsInSimulation.Single(x => x.Value.ObjectID == data.dwData).Key);
                    OnPropertyChanged("CreatedSimObjectsCount");
                }
                break;
            }
        }
示例#6
0
        void SimConnect_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
        {
            // Handle the case where the AI system adds or removes objects
            switch ((DATA_REQUESTS)data.uEventID)
            {
            case DATA_REQUESTS.REQUEST_AI_REMOVED:
                // Look through all the AIObjects in the list
                foreach (System.Collections.Generic.KeyValuePair <string, AIObjectData> kvp in AIObjects)
                {
                    // Attempt to find a match to the ObjectID that is getting deleted
                    if (kvp.Value.dwObjectID == data.dwData)
                    {
                        // If a match is found, delete the object from the AIObjects list
                        AIObjects.Remove(kvp.Key);
                        // Also delete the line item from the ListView control
                        ListViewItem[] lvis = AIObjectListView.Items.Find(data.dwData.ToString(), false);
                        if (lvis.Length == 1)
                        {
                            // If the item is found in the ListView, remove it
                            AIObjectListView.Items.Remove(lvis[0]);
                        }
                        break;
                    }
                }
                break;

            case DATA_REQUESTS.REQUEST_AI_ADDED:
                // Refresh the list of monitored objects for this specific request
                // first, Clear any current objects and stop all data requests for those objects
                ResetDataAndShutDownRequests();

                // Now, Initiate a request for the list of objects we are interested
                // in monitoring in the given radius
                simconnect.RequestDataOnSimObjectType(DATA_REQUESTS.REQUEST_AI_OBJECT_ID_BYTYPE,
                                                      DEFINITIONS.AI_Entity_Definition, MONITOR_RADIUS, monitoredObjectType);

                break;
            }
        }
示例#7
0
        void sc_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
        {
            switch ((EventIDs)data.uEventID)
            {
            case EventIDs.ObjectAdded:
                if (data.dwData != 0 && !Objects.Contains(data.dwData))
                {
                    AddObject(data.dwData);
                }
                break;

            case EventIDs.ObjectRemoved:
                if (data.dwData != 0 && Objects.Contains(data.dwData))
                {
                    this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new MyDelegate(delegate()
                    {
                        Objects.Remove(data.dwData);
                    }));
                }
                break;
            }
        }
示例#8
0
 private void OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
 {
     //Console.WriteLine($"OnRecvEventObjectAddremove: {JsonConvert.SerializeObject(data, Formatting.Indented)}");
 }
示例#9
0
 void sc_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
 {
     Console.WriteLine("sc_OnRecvEventObjectAddremove");
 }
示例#10
0
 private void simconnect_OnRecvEventObjectAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
 {
     throw new NotImplementedException();
 }