* trigger other operations directly when data have been read (do not wait for "all data read")
* avoid retriggering for no reason
* new entity flag for all data req. for model matching
After two consecutive calls to CSimulatorFsx::reset(), the timer was
killed again in the second call. This caused an internal Qt warning,
since the id is unknown after it got killed in the first call.
* more asserts to find issues
* limit number of exceptions displayed
* reset() function (there was an issue with not cleaned up values)
* using CSimConnectObjects and adjustments for the previous changes
* added new utility funtion is model list / aircraft list
* added setters/getters for CSimConnectObject
* added setters/getters for InterpolationStatus / PartsStatus
* added CSimConnectObjects (better encapsulation)
FS9 plugin did not detect own aircraft model under all circumstances.
FS9 does not initially send it when connecting - only
during initial selection and if it is changed later. In order
to get the initial model if swift is started while FS9 was already
running, read it regularly from FSUIPC.
The produced QByteArray was missing the null terminating character,
since QByteArray::append() only added up to and not including '\0'.
This was also the reason why sometimes planes did not change their
aircraft models properly.
A signed 10 bit integer has a range of [-512, +511]. After applying
the multiplicator, neither pitch nor bank will every be outside of
those ranges.
refs #790
* utility function if web data are already available
* moved setOwnAircraftModel as reverseLookupAndUpdateOwnAircraftModel to CSimulatorCommon
* reverseLookupAndUpdateOwnAircraftModel also handles async lookup when data are not yet available
* removed context ps_allSwiftWebDataRead reverse lookup, done in CSimulatorCommon now
Pitch and bank angle in CAircraftSituation are according to the
common aeronautical convention:
* Bank in degrees, positive = roll right
* Pitch in degrees, positive = pitch up
Microsoft Flight Simulator is using inverted angles, which was incorrectly
adjusted in the interpolator. This caused wrong values for X-Plane.
This angle correction is now moved into the MSFS specific plugins.
Additionally, so far the pitch and bank angles from own aircraft were
not yet corrected for MSFS. So we did send wrong values to the network.
refs #790
* only emit aircraft as rendered when object id is received, not before
* added CSimualtedAircraft to CSimConnectObject (so it can be used as signal argument)
* some utility functions to get callsign/simobject by id
* changed signature of ownAircraftModelChanged to model
* added function for a reverse lookup of a model (string->model) and use it when model changed
* renamed function to updateByLocalFileNames
All model matching will be done simulator independent in
CContextSimulator. The simulator specific part is kept in the model
set.
This also caused the signal modelMatchingCompleted to be renamed to
aircraftRenderingChanged, since the name wasn't accurate anymore.
Both getInstalledModels(), getInstalledModelsCount() and iconForModel()
were removed from the ISimulator interface.
refs #765
Physically removing an aircraft which was not yet rendered or known is
undefined behavior.
In this particular case, adding an aircraft the first time caused
its model to be updated, which called slot
ISimulator::changeRemoteAircraftModel, trying to remove an aircraft
which was not yet added and adding it again. This ends up
in an endless loop.
Up to know, the initial weather injection was done in the constructor
of ISimulator implementation. This was to early, since in the best case
the injection was not doing anything and in the worst case, crashed
the application because the plugin wasn't ready yet.
This change also replaces ps_reloadSettings with a specific non-slot
version to avoid code duplication.