refs #369, adjusted simulator drivers to changed interpolator and

removed addAircraftSituation
This commit is contained in:
Klaus Basan
2015-02-07 14:47:40 +01:00
parent 58b56ba2f3
commit 5146b7357d
11 changed files with 115 additions and 159 deletions

View File

@@ -16,8 +16,6 @@ namespace BlackSimPlugin
{
namespace Fsx
{
CSimConnectObject::CSimConnectObject() :
m_interpolator(new CInterpolatorLinear())
{ }
CSimConnectObject::CSimConnectObject() { }
} // namespace
} // namespace

View File

@@ -49,13 +49,9 @@ namespace BlackSimPlugin
//! Set Simconnect object id
int getObjectId() const { return m_objectId; }
//! Get interpolator
QSharedPointer<BlackCore::IInterpolator> getInterpolator() const { return m_interpolator; }
private:
BlackMisc::Aviation::CCallsign m_callsign;
QSharedPointer<BlackCore::IInterpolator> m_interpolator;
int m_requestId = -1;
int m_objectId = -1;
};

View File

@@ -18,6 +18,7 @@
#include "blackmisc/avairportlist.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/nwaircraftmappinglist.h"
#include "blackcore/interpolator_linear.h"
#include <QTimer>
#include <QtConcurrent>
@@ -156,8 +157,6 @@ namespace BlackSimPlugin
simObj.setObjectId(0);
++m_nextObjID;
addAircraftSituation(callsign, remoteAircraft.getSituation());
// matched models
CAircraftModel aircraftModel = modelMatching(remoteAircraft);
Q_ASSERT(remoteAircraft.getCallsign() == aircraftModel.getCallsign());
@@ -185,16 +184,6 @@ namespace BlackSimPlugin
}
}
void CSimulatorFsx::addAircraftSituation(const CCallsign &callsign, const CAircraftSituation &initialSituation)
{
// Q_ASSERT(m_simConnectObjects.contains(callsign));
if (!m_simConnectObjects.contains(callsign)) { return; }
CSimConnectObject simObj = m_simConnectObjects.value(callsign);
simObj.getInterpolator()->addAircraftSituation(initialSituation);
m_simConnectObjects.insert(callsign, simObj);
}
bool CSimulatorFsx::removeRenderedAircraft(const CCallsign &callsign)
{
// only remove from sim
@@ -580,24 +569,24 @@ namespace BlackSimPlugin
void CSimulatorFsx::updateOtherAircraft()
{
BlackCore::CInterpolatorLinear interpolator(this->m_renderedAircraftProvider);
for (const CSimConnectObject &simObj : m_simConnectObjects)
{
if (simObj.getInterpolator()->hasEnoughAircraftSituations())
if (!interpolator.hasEnoughAircraftSituations(simObj.getCallsign())) { continue; }
SIMCONNECT_DATA_INITPOSITION position = aircraftSituationToFsxInitPosition(interpolator.getCurrentInterpolatedSituation(simObj.getCallsign()));
DataDefinitionRemoteAircraftSituation ddAircraftSituation;
ddAircraftSituation.position = position;
DataDefinitionGearHandlePosition gearHandle;
gearHandle.gearHandlePosition = position.Altitude < 1000 ? 1 : 0;
if (simObj.getObjectId() != 0)
{
SIMCONNECT_DATA_INITPOSITION position = aircraftSituationToFsxInitPosition(simObj.getInterpolator()->getCurrentSituation());
DataDefinitionRemoteAircraftSituation ddAircraftSituation;
ddAircraftSituation.position = position;
SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSituation, simObj.getObjectId(), SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(ddAircraftSituation), &ddAircraftSituation);
DataDefinitionGearHandlePosition gearHandle;
gearHandle.gearHandlePosition = position.Altitude < 1000 ? 1 : 0;
if (simObj.getObjectId() != 0)
{
SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDefinitions::DataRemoteAircraftSituation, simObj.getObjectId(), SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(ddAircraftSituation), &ddAircraftSituation);
// With the following SimConnect call all aircrafts loose their red tag. No idea why though.
SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDefinitions::DataGearHandlePosition, simObj.getObjectId(), SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(DataDefinitionGearHandlePosition), &gearHandle);
}
// With the following SimConnect call all aircrafts loose their red tag. No idea why though.
SimConnect_SetDataOnSimObject(m_hSimConnect, CSimConnectDefinitions::DataGearHandlePosition, simObj.getObjectId(), SIMCONNECT_DATA_SET_FLAG_DEFAULT, 0, sizeof(DataDefinitionGearHandlePosition), &gearHandle);
}
}
}

View File

@@ -106,9 +106,6 @@ namespace BlackSimPlugin
//! \copydoc ISimulator::addRemoteAircraft()
virtual bool addRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft) override;
//! \copydoc ISimulator::addAircraftSituation()
virtual void addAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &initialSituation) override;
//! \copydoc ISimulator::removeRenderedAircraft()
virtual bool removeRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;