Minor code fixes
This commit is contained in:
parent
aca625eda2
commit
e2135369ce
8 changed files with 69 additions and 65 deletions
|
@ -42,7 +42,7 @@
|
||||||
#include <Scripting/NasalSys.hxx>
|
#include <Scripting/NasalSys.hxx>
|
||||||
#include <Sound/fg_fx.hxx>
|
#include <Sound/fg_fx.hxx>
|
||||||
|
|
||||||
FGSwiftAircraft::FGSwiftAircraft(const std::string& callsign, const std::string& modelpath, SGPropertyNode* p)
|
FGSwiftAircraft::FGSwiftAircraft(const std::string& callsign, const std::string& modelpath, SGPropertyNode_ptr p)
|
||||||
{
|
{
|
||||||
using namespace simgear;
|
using namespace simgear;
|
||||||
_model = SGModelLib::loadModel(modelpath);
|
_model = SGModelLib::loadModel(modelpath);
|
||||||
|
@ -57,7 +57,6 @@ FGSwiftAircraft::FGSwiftAircraft(const std::string& callsign, const std::string&
|
||||||
props->setStringValue("callsign", callsign);
|
props->setStringValue("callsign", callsign);
|
||||||
props->setBoolValue("valid",true);
|
props->setBoolValue("valid",true);
|
||||||
}
|
}
|
||||||
initPos = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FGSwiftAircraft::updatePosition(SGGeod newPosition, SGVec3d orientation, double groundspeed, bool initPos)
|
bool FGSwiftAircraft::updatePosition(SGGeod newPosition, SGVec3d orientation, double groundspeed, bool initPos)
|
||||||
|
@ -120,15 +119,15 @@ inline bool FGSwiftAircraft::operator<(const std::string& extCallsign)
|
||||||
return _model->getName().compare(extCallsign);
|
return _model->getName().compare(extCallsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
double FGSwiftAircraft::getGroundElevation(double latitudeDeg, double longitudeDeg) const
|
double FGSwiftAircraft::getGroundElevation(const SGGeod& pos) const
|
||||||
{
|
{
|
||||||
if(!initPos) { return std::numeric_limits<double>::quiet_NaN(); }
|
if(!initPos) { return std::numeric_limits<double>::quiet_NaN(); }
|
||||||
double alt = 0;
|
double alt = 0;
|
||||||
SGGeod pos;
|
SGGeod posReq;
|
||||||
pos.setElevationFt(30000);
|
posReq.setElevationFt(30000);
|
||||||
pos.setLatitudeDeg(latitudeDeg);
|
posReq.setLatitudeDeg(pos.getLatitudeDeg());
|
||||||
pos.setLongitudeDeg(longitudeDeg);
|
posReq.setLongitudeDeg(pos.getLongitudeDeg());
|
||||||
globals->get_scenery()->get_elevation_m(pos,alt,0,_model.get());
|
globals->get_scenery()->get_elevation_m(posReq,alt,0,_model.get());
|
||||||
return alt;
|
return alt;
|
||||||
|
|
||||||
}
|
}
|
|
@ -41,19 +41,19 @@ class PagedLOD;
|
||||||
class FGSwiftAircraft
|
class FGSwiftAircraft
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FGSwiftAircraft(const std::string& callsign, const std::string& modelpath, SGPropertyNode* p);
|
FGSwiftAircraft(const std::string& callsign, const std::string& modelpath, SGPropertyNode_ptr p);
|
||||||
bool updatePosition(SGGeod newPosition, SGVec3d orientation, double groundspeed, bool initPos);
|
bool updatePosition(SGGeod newPosition, SGVec3d orientation, double groundspeed, bool initPos);
|
||||||
~FGSwiftAircraft();
|
~FGSwiftAircraft();
|
||||||
std::string getName() { return _model->getName(); };
|
std::string getName() { return _model->getName(); };
|
||||||
double getLatDeg() const;
|
double getLatDeg() const;
|
||||||
double getLongDeg() const;
|
double getLongDeg() const;
|
||||||
double getGroundElevation(double, double) const;
|
double getGroundElevation(const SGGeod& pos) const;
|
||||||
double getFudgeFactor() const;
|
double getFudgeFactor() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool initPos;
|
bool initPos = false;
|
||||||
SGGeod position;
|
SGGeod position;
|
||||||
SGPropertyNode* props;
|
SGPropertyNode_ptr props;
|
||||||
osg::ref_ptr<osg::Node> _model;
|
osg::ref_ptr<osg::Node> _model;
|
||||||
SGModelPlacement aip;
|
SGModelPlacement aip;
|
||||||
inline bool operator<(const std::string& extCallsign);
|
inline bool operator<(const std::string& extCallsign);
|
||||||
|
|
|
@ -34,8 +34,8 @@ bool FGSwiftAircraftManager::addPlane(const std::string& callsign, std::string m
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const char* typeString = "swift";
|
const char* typeString = "swift";
|
||||||
SGPropertyNode* root = globals->get_props()->getNode("ai/models",true);
|
SGPropertyNode_ptr root = globals->get_props()->getNode("ai/models",true);
|
||||||
SGPropertyNode* p;
|
SGPropertyNode_ptr p;
|
||||||
int i;
|
int i;
|
||||||
for(i = 0; i < 10000; i++){
|
for(i = 0; i < 10000; i++){
|
||||||
p = root->getNode(typeString,i,false);
|
p = root->getNode(typeString,i,false);
|
||||||
|
@ -45,7 +45,7 @@ bool FGSwiftAircraftManager::addPlane(const std::string& callsign, std::string m
|
||||||
}
|
}
|
||||||
p = root->getNode(typeString,i,true);
|
p = root->getNode(typeString,i,true);
|
||||||
p->setIntValue("id",i);
|
p->setIntValue("id",i);
|
||||||
auto* curAircraft = new FGSwiftAircraft(callsign, std::move(modelString), p);
|
auto curAircraft = new FGSwiftAircraft(callsign, std::move(modelString), p);
|
||||||
aircraftByCallsign.insert(std::pair<std::string, FGSwiftAircraft*>(callsign, curAircraft));
|
aircraftByCallsign.insert(std::pair<std::string, FGSwiftAircraft*>(callsign, curAircraft));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -79,9 +79,13 @@ void FGSwiftAircraftManager::getRemoteAircraftData(std::vector<std::string>& cal
|
||||||
const FGSwiftAircraft *aircraft = it->second;
|
const FGSwiftAircraft *aircraft = it->second;
|
||||||
assert(aircraft);
|
assert(aircraft);
|
||||||
|
|
||||||
const double latDeg = aircraft->getLatDeg();
|
|
||||||
const double lonDeg = aircraft->getLongDeg();
|
SGGeod pos;
|
||||||
double groundElevation = aircraft->getGroundElevation(latDeg, lonDeg);
|
pos.setLatitudeDeg(aircraft->getLatDeg());
|
||||||
|
pos.setLongitudeDeg(aircraft->getLongDeg());
|
||||||
|
const double latDeg = pos.getLatitudeDeg();
|
||||||
|
const double lonDeg = pos.getLongitudeDeg();
|
||||||
|
double groundElevation = aircraft->getGroundElevation(pos);
|
||||||
|
|
||||||
double fudgeFactor = aircraft->getFudgeFactor();
|
double fudgeFactor = aircraft->getFudgeFactor();
|
||||||
(void)fudgeFactor;
|
(void)fudgeFactor;
|
||||||
|
@ -110,12 +114,11 @@ void FGSwiftAircraftManager::removeAllPlanes()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double FGSwiftAircraftManager::getElevationAtPosition(const std::string &callsign, double latitudeDeg,
|
double FGSwiftAircraftManager::getElevationAtPosition(const std::string &callsign, const SGGeod& pos) const
|
||||||
double longitudeDeg, double altitudeMeters) const
|
|
||||||
{
|
{
|
||||||
auto it = aircraftByCallsign.find(callsign);
|
auto it = aircraftByCallsign.find(callsign);
|
||||||
if(it != aircraftByCallsign.end()){
|
if(it != aircraftByCallsign.end()){
|
||||||
return it->second->getGroundElevation(latitudeDeg, longitudeDeg);
|
return it->second->getGroundElevation(pos);
|
||||||
}
|
}
|
||||||
return std::numeric_limits<double>::quiet_NaN();
|
return std::numeric_limits<double>::quiet_NaN();
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,6 @@ public:
|
||||||
std::vector<double>& elevationsM, std::vector<double>& verticalOffsets) const;
|
std::vector<double>& elevationsM, std::vector<double>& verticalOffsets) const;
|
||||||
void removePlane(const std::string& callsign);
|
void removePlane(const std::string& callsign);
|
||||||
void removeAllPlanes();
|
void removeAllPlanes();
|
||||||
double getElevationAtPosition(const std::string &callsign, double latitudeDeg, double longitudeDeg, double altitudeMeters) const;
|
double getElevationAtPosition(const std::string &callsign, const SGGeod& pos) const;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -82,7 +82,7 @@ void CPlugin::startServer()
|
||||||
|
|
||||||
float CPlugin::startServerDeferred(float, float, int, void* refcon)
|
float CPlugin::startServerDeferred(float, float, int, void* refcon)
|
||||||
{
|
{
|
||||||
auto* plugin = static_cast<CPlugin*>(refcon);
|
auto plugin = static_cast<CPlugin*>(refcon);
|
||||||
if (!plugin->m_isRunning) {
|
if (!plugin->m_isRunning) {
|
||||||
plugin->startServer();
|
plugin->startServer();
|
||||||
plugin->m_isRunning = true;
|
plugin->m_isRunning = true;
|
||||||
|
|
|
@ -203,42 +203,42 @@ protected:
|
||||||
DBusHandlerResult dbusMessageHandler(const CDBusMessage& message) override;
|
DBusHandlerResult dbusMessageHandler(const CDBusMessage& message) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SGPropertyNode* textMessageNode;
|
SGPropertyNode_ptr textMessageNode;
|
||||||
SGPropertyNode* aircraftModelPathNode;
|
SGPropertyNode_ptr aircraftModelPathNode;
|
||||||
//SGPropertyNode* aircraftLiveryNode;
|
//SGPropertyNode_ptr aircraftLiveryNode;
|
||||||
//SGPropertyNode* aircraftIcaoCodeNode;
|
//SGPropertyNode_ptr aircraftIcaoCodeNode;
|
||||||
SGPropertyNode* aircraftDescriptionNode;
|
SGPropertyNode_ptr aircraftDescriptionNode;
|
||||||
SGPropertyNode* isPausedNode;
|
SGPropertyNode_ptr isPausedNode;
|
||||||
SGPropertyNode* latitudeNode;
|
SGPropertyNode_ptr latitudeNode;
|
||||||
SGPropertyNode* longitudeNode;
|
SGPropertyNode_ptr longitudeNode;
|
||||||
SGPropertyNode* altitudeMSLNode;
|
SGPropertyNode_ptr altitudeMSLNode;
|
||||||
SGPropertyNode* heightAGLNode;
|
SGPropertyNode_ptr heightAGLNode;
|
||||||
SGPropertyNode* groundSpeedNode;
|
SGPropertyNode_ptr groundSpeedNode;
|
||||||
SGPropertyNode* pitchNode;
|
SGPropertyNode_ptr pitchNode;
|
||||||
SGPropertyNode* rollNode;
|
SGPropertyNode_ptr rollNode;
|
||||||
SGPropertyNode* trueHeadingNode;
|
SGPropertyNode_ptr trueHeadingNode;
|
||||||
SGPropertyNode* wheelsOnGroundNode;
|
SGPropertyNode_ptr wheelsOnGroundNode;
|
||||||
SGPropertyNode* com1ActiveNode;
|
SGPropertyNode_ptr com1ActiveNode;
|
||||||
SGPropertyNode* com1StandbyNode;
|
SGPropertyNode_ptr com1StandbyNode;
|
||||||
SGPropertyNode* com2ActiveNode;
|
SGPropertyNode_ptr com2ActiveNode;
|
||||||
SGPropertyNode* com2StandbyNode;
|
SGPropertyNode_ptr com2StandbyNode;
|
||||||
SGPropertyNode* transponderCodeNode;
|
SGPropertyNode_ptr transponderCodeNode;
|
||||||
SGPropertyNode* transponderModeNode;
|
SGPropertyNode_ptr transponderModeNode;
|
||||||
SGPropertyNode* transponderIdentNode;
|
SGPropertyNode_ptr transponderIdentNode;
|
||||||
SGPropertyNode* beaconLightsNode;
|
SGPropertyNode_ptr beaconLightsNode;
|
||||||
SGPropertyNode* landingLightsNode;
|
SGPropertyNode_ptr landingLightsNode;
|
||||||
SGPropertyNode* navLightsNode;
|
SGPropertyNode_ptr navLightsNode;
|
||||||
SGPropertyNode* strobeLightsNode;
|
SGPropertyNode_ptr strobeLightsNode;
|
||||||
SGPropertyNode* taxiLightsNode;
|
SGPropertyNode_ptr taxiLightsNode;
|
||||||
SGPropertyNode* altimeterServiceableNode;
|
SGPropertyNode_ptr altimeterServiceableNode;
|
||||||
SGPropertyNode* pressAltitudeFtNode;
|
SGPropertyNode_ptr pressAltitudeFtNode;
|
||||||
SGPropertyNode* flapsDeployRatioNode;
|
SGPropertyNode_ptr flapsDeployRatioNode;
|
||||||
SGPropertyNode* gearDeployRatioNode;
|
SGPropertyNode_ptr gearDeployRatioNode;
|
||||||
SGPropertyNode* speedBrakeDeployRatioNode;
|
SGPropertyNode_ptr speedBrakeDeployRatioNode;
|
||||||
SGPropertyNode* groundElevation;
|
SGPropertyNode_ptr groundElevation;
|
||||||
//SGPropertyNode* numberEnginesNode;
|
//SGPropertyNode_ptr numberEnginesNode;
|
||||||
//SGPropertyNode* engineN1PercentageNode;
|
//SGPropertyNode_ptr engineN1PercentageNode;
|
||||||
SGPropertyNode* aircraftNameNode;
|
SGPropertyNode_ptr aircraftNameNode;
|
||||||
|
|
||||||
};
|
};
|
||||||
} // namespace FGSwiftBus
|
} // namespace FGSwiftBus
|
||||||
|
|
|
@ -38,15 +38,13 @@ namespace FGSwiftBus {
|
||||||
|
|
||||||
CTraffic::CTraffic()
|
CTraffic::CTraffic()
|
||||||
{
|
{
|
||||||
acm = new FGSwiftAircraftManager();
|
acm.reset(new FGSwiftAircraftManager());
|
||||||
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Traffic started");
|
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Traffic started");
|
||||||
}
|
}
|
||||||
|
|
||||||
CTraffic::~CTraffic()
|
CTraffic::~CTraffic()
|
||||||
{
|
{
|
||||||
cleanup();
|
cleanup();
|
||||||
delete acm;
|
|
||||||
acm = nullptr;
|
|
||||||
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Traffic stopped");
|
SG_LOG(SG_NETWORK, SG_INFO, "FGSwiftBus Traffic stopped");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +62,7 @@ const std::string& CTraffic::ObjectPath()
|
||||||
|
|
||||||
void CTraffic::planeLoaded(void* id, bool succeeded, void* self)
|
void CTraffic::planeLoaded(void* id, bool succeeded, void* self)
|
||||||
{
|
{
|
||||||
auto* traffic = static_cast<CTraffic*>(self);
|
auto traffic = static_cast<CTraffic*>(self);
|
||||||
auto planeIt = traffic->m_planesById.find(id);
|
auto planeIt = traffic->m_planesById.find(id);
|
||||||
if (planeIt == traffic->m_planesById.end()) { return; }
|
if (planeIt == traffic->m_planesById.end()) { return; }
|
||||||
|
|
||||||
|
@ -255,7 +253,11 @@ DBusHandlerResult CTraffic::dbusMessageHandler(const CDBusMessage& message_)
|
||||||
message.getArgument(altitudeMeters);
|
message.getArgument(altitudeMeters);
|
||||||
queueDBusCall([ = ]()
|
queueDBusCall([ = ]()
|
||||||
{
|
{
|
||||||
double elevation = acm->getElevationAtPosition(callsign, latitudeDeg, longitudeDeg, altitudeMeters);
|
SGGeod pos;
|
||||||
|
pos.setLatitudeDeg(latitudeDeg);
|
||||||
|
pos.setLongitudeDeg(longitudeDeg);
|
||||||
|
pos.setElevationM(altitudeMeters);
|
||||||
|
double elevation = acm->getElevationAtPosition(callsign, pos);
|
||||||
CDBusMessage reply = CDBusMessage::createReply(sender, serial);
|
CDBusMessage reply = CDBusMessage::createReply(sender, serial);
|
||||||
reply.beginArgumentWrite();
|
reply.beginArgumentWrite();
|
||||||
reply.appendArgument(callsign);
|
reply.appendArgument(callsign);
|
||||||
|
|
|
@ -99,7 +99,7 @@ private:
|
||||||
bool m_emitSimFrame = true;
|
bool m_emitSimFrame = true;
|
||||||
|
|
||||||
|
|
||||||
FGSwiftAircraftManager* acm;
|
std::unique_ptr<FGSwiftAircraftManager> acm;
|
||||||
|
|
||||||
static void planeLoaded(void* id, bool succeeded, void* self);
|
static void planeLoaded(void* id, bool succeeded, void* self);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue