Ejemplo n.º 1
0
        /// <summary>
        /// Repositions the FSX aircraft to match the location, speed and attitude of a real aircraft.
        /// </summary>
        private void MoveAircraft()
        {
            var selectedAircraft = _View.SelectedRealAircraft;

            if (_View.RidingAircraft && selectedAircraft != null)
            {
                long trash1, trash2;
                var  aircraft = _Feed == null ? null : _Feed.AircraftList.TakeSnapshot(out trash1, out trash2).Where(a => a.UniqueId == selectedAircraft.UniqueId).FirstOrDefault();
                if (aircraft != null)
                {
                    var speedLimit = (float)_MaximumAirspeed - 30f;

                    var writeAircraftInformation = new WriteAircraftInformation();
                    writeAircraftInformation.AirspeedIndicated = aircraft.GroundSpeed > speedLimit ? speedLimit : aircraft.GroundSpeed.GetValueOrDefault();
                    aircraft.GroundSpeed.GetValueOrDefault();
                    writeAircraftInformation.Altitude      = aircraft.Altitude.GetValueOrDefault();
                    writeAircraftInformation.Operator      = aircraft.Operator;
                    writeAircraftInformation.Registration  = aircraft.Registration;
                    writeAircraftInformation.Latitude      = aircraft.Latitude.GetValueOrDefault();
                    writeAircraftInformation.Longitude     = aircraft.Longitude.GetValueOrDefault();
                    writeAircraftInformation.TrueHeading   = aircraft.Track.GetValueOrDefault();
                    writeAircraftInformation.VerticalSpeed = aircraft.VerticalRate.GetValueOrDefault();
                    writeAircraftInformation.Bank          = ApproximateBank(_MovedAircraft, aircraft);

                    _MovedAircraft = aircraft;

                    _FlightSimulatorX.MoveAircraft(writeAircraftInformation);
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// See interface docs.
 /// </summary>
 /// <param name="aircraftInformation"></param>
 public void MoveAircraft(WriteAircraftInformation aircraftInformation)
 {
     if (Connected && _SimConnect.IsInstalled)
     {
         _SimConnect.SetDataOnSimObject(DefinitionId.WriteAircraftInformation, (uint)SIMCONNECT_SIMOBJECT_TYPE.USER, (int)SIMCONNECT_DATA_SET_FLAG.DEFAULT, aircraftInformation);
     }
 }
Ejemplo n.º 3
0
        public void TestInitialise()
        {
            _OriginalClassFactory = Factory.CreateChildFactory();

            _SimConnect = TestUtilities.CreateMockImplementation <ISimConnectWrapper>();
            _SimConnect.Setup(m => m.IsInstalled).Returns(true);

            _Fsx = Factory.Resolve <IFlightSimulatorX>();

            _ClientEventIdMap = new Dictionary <string, Enum>();
            _SimConnect.Setup(m => m.MapClientEventToSimEvent(It.IsAny <Enum>(), It.IsAny <string>())).Callback((Enum id, string name) => { _ClientEventIdMap.Add(name, id); });

            _SystemEventIdMap = new Dictionary <string, Enum>();
            _SimConnect.Setup(m => m.SubscribeToSystemEvent(It.IsAny <Enum>(), It.IsAny <string>())).Callback((Enum id, string name) => { _SystemEventIdMap.Add(name, id); });

            _NotificationGroupMap = new Dictionary <Enum, Enum>();
            _SimConnect.Setup(m => m.AddClientEventToNotificationGroup(It.IsAny <Enum>(), It.IsAny <Enum>(), false)).Callback((Enum groupId, Enum eventId, bool maskable) => { _NotificationGroupMap.Add(eventId, groupId); });

            _ReadAircraftInformationDefinitionId = default(Enum);
            _SimConnect.Setup(m => m.RegisterDataDefineStruct <ReadAircraftInformation>(It.IsAny <Enum>())).Callback((Enum definitionId) => { _ReadAircraftInformationDefinitionId = definitionId; });

            _AircraftInformationRequestId = default(Enum);
            _SimConnect.Setup(m => m.RequestDataOnSimObjectType(It.IsAny <Enum>(), It.IsAny <Enum>(), It.IsAny <uint>(), It.IsAny <int>())).Callback((Enum requestId, Enum definitionId, uint radius, int objectType) => {
                if (definitionId == _ReadAircraftInformationDefinitionId)
                {
                    _AircraftInformationRequestId = requestId;
                }
            });

            _WriteAircraftInformationDefinitionId = default(Enum);
            _SimConnect.Setup(m => m.RegisterDataDefineStruct <WriteAircraftInformation>(It.IsAny <Enum>())).Callback((Enum definitionId) => { _WriteAircraftInformationDefinitionId = definitionId; });

            _ConnectionStatusChangedEvent         = new EventRecorder <EventArgs>();
            _FreezeStatusChangedEvent             = new EventRecorder <EventArgs>();
            _SlewStatusChangedEvent               = new EventRecorder <EventArgs>();
            _FlightSimulatorXExceptionRaisedEvent = new EventRecorder <EventArgs <FlightSimulatorXException> >();
            _AircraftInformationReceivedEvent     = new EventRecorder <EventArgs <ReadAircraftInformation> >();
            _SlewToggledEvent = new EventRecorder <EventArgs>();

            _ReadAircraftInformation  = new ReadAircraftInformation();
            _WriteAircraftInformation = new WriteAircraftInformation();
            _Message = new Message();
        }