public void FlightSimulatorX_MoveAircraft_Passes_Aircraft_Information_To_SimConnect() { _Fsx.Connect(new IntPtr(10)); _Fsx.MoveAircraft(_WriteAircraftInformation); _SimConnect.Verify(m => m.SetDataOnSimObject(_WriteAircraftInformationDefinitionId, 0U, 0, _WriteAircraftInformation), Times.Once()); }
/// <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); } } }