Maintenance: namespace
Clean up namespaces. Don't use broad 'using namespace' context in header files. Header Guards. SPDX tags.
This commit is contained in:
parent
cd35776536
commit
89043efdaa
19 changed files with 688 additions and 885 deletions
|
@ -1,22 +1,9 @@
|
|||
// FGAIAircraft - FGAIBase-derived class creates an AI airplane
|
||||
//
|
||||
// Written by David Culp, started October 2003.
|
||||
//
|
||||
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIAircraft.cxx
|
||||
* SPDX-FileComment: AIBase derived class creates an AI aircraft
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include <Main/fg_props.hxx>
|
||||
#include <Main/globals.hxx>
|
||||
|
@ -1485,7 +1472,7 @@ void FGAIAircraft::updateUserFlightPlan(double dt)
|
|||
<< "\t" << current->getPos().getLatitudeDeg()
|
||||
<< "\t" << current->getPos().getLongitudeDeg());
|
||||
if ( currDist>legDistance ) {
|
||||
// We are definetly beyond the airport
|
||||
// We are definitely beyond the airport
|
||||
fp->incrementLeg();
|
||||
}
|
||||
}
|
||||
|
@ -1758,7 +1745,7 @@ void FGAIAircraft::dumpCSV(std::unique_ptr<sg_ofstream> &o, int lineIndex) {
|
|||
const double headingDiff = SGMiscd::normalizePeriodic(-180, 180, hdg-tgt_heading);
|
||||
|
||||
(*o) << lineIndex << "\t";
|
||||
(*o) << setprecision(12);
|
||||
(*o) << std::setprecision(12);
|
||||
(*o) << this->getGeodPos().getLatitudeDeg() << "\t";
|
||||
(*o) << this->getGeodPos().getLongitudeDeg() << "\t";
|
||||
(*o) << this->getGeodPos().getElevationFt() << "\t";
|
||||
|
|
|
@ -1,31 +1,19 @@
|
|||
// FGAIAircraft - AIBase derived class creates an AI aircraft
|
||||
//
|
||||
// Written by David Culp, started October 2003.
|
||||
//
|
||||
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIAircraft.hxx
|
||||
* SPDX-FileComment: AIBase derived class creates an AI aircraft
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <iostream>
|
||||
|
||||
#include "AIBaseAircraft.hxx"
|
||||
|
||||
|
||||
class PerformanceData;
|
||||
class FGAISchedule;
|
||||
class FGAIFlightPlan;
|
||||
|
@ -34,10 +22,8 @@ class FGATCInstruction;
|
|||
class FGAIWaypoint;
|
||||
class sg_ofstream;
|
||||
|
||||
namespace AILeg
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
namespace AILeg {
|
||||
enum Type {
|
||||
STARTUP_PUSHBACK = 1,
|
||||
TAXI = 2,
|
||||
TAKEOFF = 3,
|
||||
|
@ -48,27 +34,25 @@ namespace AILeg
|
|||
LANDING = 8,
|
||||
PARKING_TAXI = 9,
|
||||
PARKING = 10
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
// 1 = joined departure queue; 2 = Passed DepartureHold waypoint; handover control to tower; 0 = any other state.
|
||||
namespace AITakeOffStatus
|
||||
{
|
||||
enum Type
|
||||
{
|
||||
namespace AITakeOffStatus {
|
||||
enum Type {
|
||||
NONE = 0,
|
||||
QUEUED = 1, // joined departure queue
|
||||
CLEARED_FOR_TAKEOFF = 2 // Passed DepartureHold waypoint; handover control to tower;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
class FGAIAircraft : public FGAIBaseAircraft {
|
||||
|
||||
class FGAIAircraft : public FGAIBaseAircraft
|
||||
{
|
||||
public:
|
||||
FGAIAircraft(FGAISchedule *ref=0);
|
||||
FGAIAircraft(FGAISchedule* ref = 0);
|
||||
virtual ~FGAIAircraft();
|
||||
|
||||
string_view getTypeString(void) const override { return "aircraft"; }
|
||||
std::string_view getTypeString(void) const override { return "aircraft"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
void bind() override;
|
||||
|
@ -83,8 +67,11 @@ public:
|
|||
void initializeFlightPlan();
|
||||
#endif
|
||||
|
||||
FGAIFlightPlan* GetFlightPlan() const { return fp.get(); };
|
||||
void ProcessFlightPlan( double dt, time_t now );
|
||||
FGAIFlightPlan* GetFlightPlan() const
|
||||
{
|
||||
return fp.get();
|
||||
};
|
||||
void ProcessFlightPlan(double dt, time_t now);
|
||||
time_t checkForArrivalTime(const std::string& wptName);
|
||||
time_t calcDeparture();
|
||||
|
||||
|
@ -101,7 +88,7 @@ public:
|
|||
|
||||
void getGroundElev(double dt); //TODO these 3 really need to be public?
|
||||
void doGroundAltitude();
|
||||
bool loadNextLeg (double dist=0);
|
||||
bool loadNextLeg(double dist = 0);
|
||||
void resetPositionFromFlightPlan();
|
||||
double getBearing(double crse);
|
||||
|
||||
|
@ -109,24 +96,24 @@ public:
|
|||
const std::string& getAcType() const { return acType; }
|
||||
|
||||
const std::string& getCompany() const { return company; }
|
||||
void setCompany(const std::string& comp) { company = comp;};
|
||||
void setCompany(const std::string& comp) { company = comp; };
|
||||
|
||||
//ATC
|
||||
//ATC
|
||||
void announcePositionToController(); //TODO have to be public?
|
||||
void processATC(const FGATCInstruction& instruction);
|
||||
void setTaxiClearanceRequest(bool arg) { needsTaxiClearance = arg; };
|
||||
bool getTaxiClearanceRequest() { return needsTaxiClearance; };
|
||||
FGAISchedule * getTrafficRef() { return trafficRef; };
|
||||
void setTrafficRef(FGAISchedule *ref) { trafficRef = ref; };
|
||||
void resetTakeOffStatus() { takeOffStatus = AITakeOffStatus::NONE;};
|
||||
FGAISchedule* getTrafficRef() { return trafficRef; };
|
||||
void setTrafficRef(FGAISchedule* ref) { trafficRef = ref; };
|
||||
void resetTakeOffStatus() { takeOffStatus = AITakeOffStatus::NONE; };
|
||||
void setTakeOffStatus(int status) { takeOffStatus = status; };
|
||||
int getTakeOffStatus() { return takeOffStatus; };
|
||||
void setTakeOffSlot(time_t timeSlot) { takeOffTimeSlot = timeSlot;};
|
||||
time_t getTakeOffSlot(){return takeOffTimeSlot;};
|
||||
void setTakeOffSlot(time_t timeSlot) { takeOffTimeSlot = timeSlot; };
|
||||
time_t getTakeOffSlot() { return takeOffTimeSlot; };
|
||||
void scheduleForATCTowerDepartureControl();
|
||||
|
||||
const std::string& GetTransponderCode() { return transponderCode; };
|
||||
void SetTransponderCode(const std::string& tc) { transponderCode = tc;};
|
||||
void SetTransponderCode(const std::string& tc) { transponderCode = tc; };
|
||||
|
||||
// included as performance data needs them, who else?
|
||||
inline PerformanceData* getPerformance() { return _performance; };
|
||||
|
@ -136,25 +123,26 @@ public:
|
|||
inline double getPitch() const { return pitch; };
|
||||
inline double getAltitude() const { return altitude_ft; };
|
||||
inline double getVerticalSpeedFPM() const { return vs_fps * 60; };
|
||||
inline double altitudeAGL() const { return props->getFloatValue("position/altitude-agl-ft");};
|
||||
inline double airspeed() const { return props->getFloatValue("velocities/airspeed-kt");};
|
||||
inline double altitudeAGL() const { return props->getFloatValue("position/altitude-agl-ft"); };
|
||||
inline double airspeed() const { return props->getFloatValue("velocities/airspeed-kt"); };
|
||||
const std::string& atGate();
|
||||
std::string acwakecategory;
|
||||
|
||||
void checkTcas();
|
||||
double calcVerticalSpeed(double vert_ft, double dist_m, double speed, double error);
|
||||
|
||||
FGATCController * getATCController() { return controller; };
|
||||
FGATCController* getATCController() { return controller; };
|
||||
|
||||
void clearATCController();
|
||||
bool isBlockedBy(FGAIAircraft* other);
|
||||
void dumpCSVHeader(std::unique_ptr<sg_ofstream> &o);
|
||||
void dumpCSV(std::unique_ptr<sg_ofstream> &o, int lineIndex);
|
||||
void dumpCSVHeader(std::unique_ptr<sg_ofstream>& o);
|
||||
void dumpCSV(std::unique_ptr<sg_ofstream>& o, int lineIndex);
|
||||
|
||||
protected:
|
||||
void Run(double dt);
|
||||
|
||||
private:
|
||||
FGAISchedule *trafficRef;
|
||||
FGAISchedule* trafficRef;
|
||||
FGATCController *controller,
|
||||
*prevController,
|
||||
*towerController; // Only needed to make a pre-announcement
|
||||
|
@ -205,11 +193,13 @@ private:
|
|||
int determineNextLeg(int leg);
|
||||
void handleATCRequests(double dt);
|
||||
|
||||
inline bool isStationary() {
|
||||
inline bool isStationary()
|
||||
{
|
||||
return ((fabs(speed) <= 0.0001) && (fabs(tgt_speed) <= 0.0001));
|
||||
}
|
||||
|
||||
inline bool needGroundElevation() {
|
||||
inline bool needGroundElevation()
|
||||
{
|
||||
if (!isStationary())
|
||||
_needsGroundElevation = true;
|
||||
return _needsGroundElevation;
|
||||
|
@ -243,7 +233,7 @@ private:
|
|||
|
||||
bool holdPos = false;
|
||||
|
||||
const char * _getTransponderCode() const;
|
||||
const char* _getTransponderCode() const;
|
||||
|
||||
bool needsTaxiClearance = false;
|
||||
bool _needsGroundElevation = true;
|
||||
|
|
|
@ -1,23 +1,10 @@
|
|||
// FGAIBallistic.hxx - AIBase derived class creates an AI ballistic object
|
||||
//
|
||||
// Written by David Culp, started November 2003.
|
||||
// - davidculp2@comcast.net
|
||||
//
|
||||
// With major additions by Vivian Meazza, Feb 2008
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIBallistic.hxx
|
||||
* SPDX-FileComment: AIBase derived class creates an AI ballistic object
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-FileContributor: With major additions by Vivian Meazza, Feb 2008
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -25,20 +12,20 @@
|
|||
#include <string_view>
|
||||
#include <vector>
|
||||
|
||||
#include <simgear/structure/SGSharedPtr.hxx>
|
||||
#include <simgear/scene/material/mat.hxx>
|
||||
#include <simgear/structure/SGSharedPtr.hxx>
|
||||
|
||||
#include "AIManager.hxx"
|
||||
#include "AIBase.hxx"
|
||||
#include "AIManager.hxx"
|
||||
|
||||
class FGAIBallistic : public FGAIBase {
|
||||
|
||||
class FGAIBallistic : public FGAIBase
|
||||
{
|
||||
public:
|
||||
|
||||
FGAIBallistic(object_type ot = object_type::otBallistic);
|
||||
virtual ~FGAIBallistic() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "ballistic"; }
|
||||
std::string_view getTypeString(void) const override { return "ballistic"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
|
@ -48,24 +35,24 @@ public:
|
|||
|
||||
void Run(double dt);
|
||||
|
||||
void setAzimuth( double az );
|
||||
void setElevation( double el );
|
||||
void setAzimuth(double az);
|
||||
void setElevation(double el);
|
||||
void setAzimuthRandomError(double error);
|
||||
void setElevationRandomError(double error);
|
||||
void setRoll( double rl );
|
||||
void setStabilisation( bool val );
|
||||
void setDragArea( double a );
|
||||
void setLife( double seconds );
|
||||
void setBuoyancy( double fpss );
|
||||
void setWind_from_east( double fps );
|
||||
void setWind_from_north( double fps );
|
||||
void setWind( bool val );
|
||||
void setRoll(double rl);
|
||||
void setStabilisation(bool val);
|
||||
void setDragArea(double a);
|
||||
void setLife(double seconds);
|
||||
void setBuoyancy(double fpss);
|
||||
void setWind_from_east(double fps);
|
||||
void setWind_from_north(double fps);
|
||||
void setWind(bool val);
|
||||
void setCd(double cd);
|
||||
void setCdRandomness(double randomness);
|
||||
void setMass( double m );
|
||||
void setWeight( double w );
|
||||
void setNoRoll( bool nr );
|
||||
void setRandom( bool r );
|
||||
void setMass(double m);
|
||||
void setWeight(double w);
|
||||
void setNoRoll(bool nr);
|
||||
void setRandom(bool r);
|
||||
void setLifeRandomness(double randomness);
|
||||
void setCollision(bool c);
|
||||
void setExpiry(bool e);
|
||||
|
@ -76,16 +63,16 @@ public:
|
|||
void setSMPath(const std::string&);
|
||||
void setSubID(int i);
|
||||
void setSubmodel(const std::string&);
|
||||
void setExternalForce( bool f );
|
||||
void setExternalForce(bool f);
|
||||
void setForcePath(const std::string&);
|
||||
void setContentsPath(const std::string&);
|
||||
void setForceStabilisation( bool val );
|
||||
void setForceStabilisation(bool val);
|
||||
void setGroundOffset(double g);
|
||||
void setLoadOffset(double l);
|
||||
void setSlaved(bool s);
|
||||
void setSlavedLoad(bool s);
|
||||
void setPch (double e, double dt, double c);
|
||||
int setHdg (double az, double dt, double c);
|
||||
void setPch(double e, double dt, double c);
|
||||
int setHdg(double az, double dt, double c);
|
||||
void setBnk(double r, double dt, double c);
|
||||
void setHt(double h, double dt, double c);
|
||||
void setSpd(double s, double dt, double c);
|
||||
|
@ -95,7 +82,7 @@ public:
|
|||
void setOffsetVelocity(double dt, SGGeod pos);
|
||||
void setTime(double sec);
|
||||
|
||||
double _getTime()const;
|
||||
double _getTime() const;
|
||||
double getRelBrgHitchToUser() const;
|
||||
double getElevHitchToUser() const;
|
||||
double getLoadOffset() const;
|
||||
|
@ -110,7 +97,7 @@ public:
|
|||
bool getSlaved() const;
|
||||
bool getSlavedLoad() const;
|
||||
|
||||
FGAIBallistic *ballistic = nullptr;
|
||||
FGAIBallistic* ballistic = nullptr;
|
||||
|
||||
static const double slugs_to_kgs; //conversion factor
|
||||
static const double slugs_to_lbs; //conversion factor
|
||||
|
@ -148,7 +135,6 @@ public:
|
|||
|
||||
double hs;
|
||||
|
||||
|
||||
void setTgtXOffset(double x);
|
||||
void setTgtYOffset(double y);
|
||||
void setTgtZOffset(double z);
|
||||
|
@ -169,7 +155,6 @@ public:
|
|||
SGGeod _oldoffsetpos;
|
||||
|
||||
private:
|
||||
|
||||
double _az_random_error; // maximum azimuth error in degrees
|
||||
double _el_random_error; // maximum elevation error in degrees
|
||||
bool _aero_stabilised; // if true, object will align with trajectory
|
||||
|
@ -183,13 +168,13 @@ private:
|
|||
double _mass; // slugs
|
||||
bool _random; // modifier for Cd, life, az
|
||||
double _life_randomness; // dimension for _random, only applies to life at present
|
||||
double _load_resistance; // ground load resistanc N/m^2
|
||||
double _load_resistance; // ground load resistance N/m^2
|
||||
double _frictionFactor = 0.0; // dimensionless modifier for Coefficient of Friction
|
||||
bool _solid; // if true ground is solid for FDMs
|
||||
// double _elevation_m = 0.0; // ground elevation in meters
|
||||
bool _force_stabilised;// if true, object will align to external force
|
||||
// double _elevation_m = 0.0; // ground elevation in meters
|
||||
bool _force_stabilised; // if true, object will align to external force
|
||||
bool _slave_to_ac; // if true, object will be slaved to the parent ac pos and orientation
|
||||
bool _slave_load_to_ac;// if true, object will be slaved to the parent ac pos
|
||||
bool _slave_load_to_ac; // if true, object will be slaved to the parent ac pos
|
||||
double _contents_lb; // contents of the object
|
||||
double _weight_lb = 0.0; // weight of the object (no contents if appropriate) (lbs)
|
||||
std::string _mat_name;
|
||||
|
@ -211,7 +196,7 @@ private:
|
|||
void handle_collision();
|
||||
void handle_expiry();
|
||||
void handle_impact();
|
||||
void report_impact(double elevation, const FGAIBase *target = 0);
|
||||
void report_impact(double elevation, const FGAIBase* target = 0);
|
||||
void slaveToAC(double dt);
|
||||
void setContents(double c);
|
||||
void calcVSHS();
|
||||
|
|
|
@ -1,24 +1,10 @@
|
|||
// FGAIBase - abstract base class for AI objects
|
||||
// Written by David Culp, started Nov 2003, based on
|
||||
// David Luff's FGAIEntity class.
|
||||
// - davidculp2@comcast.net
|
||||
//
|
||||
// With additions by Mathias Froehlich & Vivian Meazza 2004 -2007
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
/*
|
||||
* SPDX-FileName: AIBase.cxx
|
||||
* SPDX-FileComment: abstract base class for AI objects, based on David Luff's FGAIEntity class.
|
||||
* SPDX-FileCopyrightText: Written by David Culp, started Nov 2003 - davidculp2@comcast.net
|
||||
* SPDX-FileContributor: With additions by Mathias Froehlich & Vivian Meazza 2004-2007
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
@ -470,11 +456,11 @@ void FGAIBase::updateLOD()
|
|||
_model->setRange(modelLowDetailIndex , maxRangeBare, maxRangeDetail); // least detailed
|
||||
} else if (_low_res.valid() && !_high_res.valid()) {
|
||||
// we have only low_res_model model it obviously will have to be displayed from the smallest value
|
||||
_model->setRange(modelLowDetailIndex, min(maxRangeBare, maxRangeDetail), FLT_MAX );
|
||||
_model->setRange(modelLowDetailIndex, std::min(maxRangeBare, maxRangeDetail), FLT_MAX );
|
||||
_model->setRange(modelHighDetailIndex, 0,0);
|
||||
} else if (!_low_res.valid() && _high_res.valid()) {
|
||||
// we have only high_res model it obviously will have to be displayed from the smallest value
|
||||
_model->setRange(modelHighDetailIndex, min(maxRangeBare, maxRangeDetail), FLT_MAX );
|
||||
_model->setRange(modelHighDetailIndex, std::min(maxRangeBare, maxRangeDetail), FLT_MAX );
|
||||
_model->setRange(modelLowDetailIndex, 0,0);
|
||||
}
|
||||
} else {
|
||||
|
@ -654,7 +640,7 @@ bool FGAIBase::init(ModelSearchOrder searchOrder)
|
|||
|
||||
// Load models
|
||||
_model = new osg::LOD();
|
||||
vector<string> model_list = resolveModelPath(searchOrder);
|
||||
std::vector<string> model_list = resolveModelPath(searchOrder);
|
||||
if(model_list.size() == 1 && _modeldata && _modeldata->hasInteriorPath()) {
|
||||
// Only one model and interior available (expecting this to be a high_res model)
|
||||
_low_res = new osg::PagedLOD(); // Dummy node to keep LOD node happy
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// FGAIBase.hxx - abstract base class for AI objects
|
||||
// Written by David Culp, started Nov 2003, based on
|
||||
// David Luff's FGAIEntity class.
|
||||
// - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIBase.hxx
|
||||
* SPDX-FileComment: abstract base class for AI objects, based on David Luff's FGAIEntity class.
|
||||
* SPDX-FileCopyrightText: Written by David Culp, started Nov 2003 - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -33,8 +21,13 @@
|
|||
#include <simgear/structure/SGReferenced.hxx>
|
||||
#include <simgear/structure/SGSharedPtr.hxx>
|
||||
|
||||
namespace osg { class PagedLOD; }
|
||||
namespace simgear { class BVHMaterial; }
|
||||
|
||||
namespace osg {
|
||||
class PagedLOD;
|
||||
}
|
||||
namespace simgear {
|
||||
class BVHMaterial;
|
||||
}
|
||||
|
||||
class FGAIManager;
|
||||
class FGAIFlightPlan;
|
||||
|
@ -94,45 +87,45 @@ public:
|
|||
|
||||
void setManager(FGAIManager* mgr, SGPropertyNode* p);
|
||||
|
||||
void setPath( const char* model );
|
||||
void setPathLowres( std::string model );
|
||||
void setPath(const char* model);
|
||||
void setPathLowres(std::string model);
|
||||
|
||||
void setFallbackModelIndex(const int i );
|
||||
void setSMPath( const std::string& p );
|
||||
void setCallSign(const std::string& );
|
||||
void setFallbackModelIndex(const int i);
|
||||
void setSMPath(const std::string& p);
|
||||
void setCallSign(const std::string&);
|
||||
|
||||
void setSpeed( double speed_KTAS );
|
||||
void setSpeed(double speed_KTAS);
|
||||
void setMaxSpeed(double kts);
|
||||
|
||||
void setAltitude( double altitude_ft );
|
||||
void setAltitudeAGL( double altitude_agl_ft );
|
||||
void setHeading( double heading );
|
||||
void setLatitude( double latitude );
|
||||
void setLongitude( double longitude );
|
||||
void setAltitude(double altitude_ft);
|
||||
void setAltitudeAGL(double altitude_agl_ft);
|
||||
void setHeading(double heading);
|
||||
void setLatitude(double latitude);
|
||||
void setLongitude(double longitude);
|
||||
|
||||
void setBank( double bank );
|
||||
void setPitch( double newpitch );
|
||||
void setRadius ( double radius );
|
||||
void setBank(double bank);
|
||||
void setPitch(double newpitch);
|
||||
void setRadius(double radius);
|
||||
|
||||
void setXoffset( double x_offset );
|
||||
void setYoffset( double y_offset );
|
||||
void setZoffset( double z_offset );
|
||||
void setXoffset(double x_offset);
|
||||
void setYoffset(double y_offset);
|
||||
void setZoffset(double z_offset);
|
||||
|
||||
void setPitchoffset( double x_offset );
|
||||
void setRolloffset( double y_offset );
|
||||
void setYawoffset( double z_offset );
|
||||
void setPitchoffset(double x_offset);
|
||||
void setRolloffset(double y_offset);
|
||||
void setYawoffset(double z_offset);
|
||||
|
||||
void setServiceable ( bool serviceable );
|
||||
void setServiceable(bool serviceable);
|
||||
|
||||
bool getDie();
|
||||
void setDie( bool die );
|
||||
void setDie(bool die);
|
||||
bool isValid() const;
|
||||
|
||||
void setCollisionData( bool i, double lat, double lon, double elev );
|
||||
void setImpactData( bool d );
|
||||
void setImpactLat( double lat );
|
||||
void setImpactLon( double lon );
|
||||
void setImpactElev( double e );
|
||||
void setCollisionData(bool i, double lat, double lon, double elev);
|
||||
void setImpactData(bool d);
|
||||
void setImpactLat(double lat);
|
||||
void setImpactLon(double lon);
|
||||
void setImpactElev(double e);
|
||||
|
||||
void setName(const std::string& n);
|
||||
bool setParentNode();
|
||||
|
@ -142,7 +135,7 @@ public:
|
|||
void setCollisionHeight(int height);
|
||||
|
||||
void calcRangeBearing(double lat, double lon, double lat2, double lon2,
|
||||
double &range, double &bearing) const;
|
||||
double& range, double& bearing) const;
|
||||
double calcRelBearingDeg(double bearing, double heading);
|
||||
double calcTrueBearingDeg(double bearing, double heading);
|
||||
double calcRecipBearingDeg(double bearing);
|
||||
|
@ -308,7 +301,6 @@ private:
|
|||
osg::ref_ptr<osg::PagedLOD> _high_res;
|
||||
osg::ref_ptr<osg::Group> _group;
|
||||
osg::ref_ptr<osg::PagedLOD> _interior;
|
||||
|
||||
osg::ref_ptr<FGAIModelData> _modeldata;
|
||||
|
||||
SGSharedPtr<FGFX> _fx;
|
||||
|
@ -318,15 +310,15 @@ private:
|
|||
public:
|
||||
object_type getType();
|
||||
|
||||
virtual string_view getTypeString(void) const { return "null"; }
|
||||
virtual std::string_view getTypeString(void) const { return "null"; }
|
||||
|
||||
bool isa( object_type otype );
|
||||
bool isa(object_type otype);
|
||||
|
||||
void _setVS_fps( double _vs );
|
||||
void _setAltitude( double _alt );
|
||||
void _setLongitude( double longitude );
|
||||
void _setLatitude ( double latitude );
|
||||
void _setSubID( int s );
|
||||
void _setVS_fps(double _vs);
|
||||
void _setAltitude(double _alt);
|
||||
void _setLongitude(double longitude);
|
||||
void _setLatitude(double latitude);
|
||||
void _setSubID(int s);
|
||||
|
||||
double _getAltitudeAGL(SGGeod inpos, double start);
|
||||
|
||||
|
@ -385,126 +377,152 @@ public:
|
|||
static bool _isNight();
|
||||
|
||||
const std::string& getCallSign() const { return _callsign; }
|
||||
ModelSearchOrder getSearchOrder() const {return _searchOrder;}
|
||||
ModelSearchOrder getSearchOrder() const { return _searchOrder; }
|
||||
};
|
||||
|
||||
typedef SGSharedPtr<FGAIBase> FGAIBasePtr;
|
||||
|
||||
inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) {
|
||||
inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p)
|
||||
{
|
||||
manager = mgr;
|
||||
props = p;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setPath(const char* model ) {
|
||||
inline void FGAIBase::setPath(const char* model)
|
||||
{
|
||||
model_path.append(model);
|
||||
}
|
||||
|
||||
inline void FGAIBase::setPathLowres(std::string model ) {
|
||||
inline void FGAIBase::setPathLowres(std::string model)
|
||||
{
|
||||
model_path_lowres.append(model);
|
||||
}
|
||||
|
||||
inline void FGAIBase::setFallbackModelIndex(const int i ) {
|
||||
inline void FGAIBase::setFallbackModelIndex(const int i)
|
||||
{
|
||||
_fallback_model_index = i;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setSMPath(const std::string& p) {
|
||||
inline void FGAIBase::setSMPath(const std::string& p)
|
||||
{
|
||||
_path = p;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setServiceable(bool s) {
|
||||
inline void FGAIBase::setServiceable(bool s)
|
||||
{
|
||||
serviceable = s;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setSpeed( double speed_KTAS ) {
|
||||
inline void FGAIBase::setSpeed(double speed_KTAS)
|
||||
{
|
||||
speed = tgt_speed = speed_KTAS;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setRadius( double radius ) {
|
||||
inline void FGAIBase::setRadius(double radius)
|
||||
{
|
||||
turn_radius_ft = radius;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setHeading( double heading ) {
|
||||
inline void FGAIBase::setHeading(double heading)
|
||||
{
|
||||
hdg = tgt_heading = heading;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setAltitude( double alt_ft ) {
|
||||
inline void FGAIBase::setAltitude(double alt_ft)
|
||||
{
|
||||
altitude_ft = tgt_altitude_ft = alt_ft;
|
||||
pos.setElevationFt(altitude_ft);
|
||||
}
|
||||
|
||||
inline void FGAIBase::setAltitudeAGL( double alt_ft ) {
|
||||
inline void FGAIBase::setAltitudeAGL(double alt_ft)
|
||||
{
|
||||
altitude_agl_ft = alt_ft;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setBank( double bank ) {
|
||||
inline void FGAIBase::setBank(double bank)
|
||||
{
|
||||
roll = tgt_roll = bank;
|
||||
no_roll = false;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setPitch( double newpitch ) {
|
||||
inline void FGAIBase::setPitch(double newpitch)
|
||||
{
|
||||
pitch = tgt_pitch = newpitch;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setLongitude( double longitude ) {
|
||||
pos.setLongitudeDeg( longitude );
|
||||
inline void FGAIBase::setLongitude(double longitude)
|
||||
{
|
||||
pos.setLongitudeDeg(longitude);
|
||||
}
|
||||
|
||||
inline void FGAIBase::setLatitude ( double latitude ) {
|
||||
pos.setLatitudeDeg( latitude );
|
||||
inline void FGAIBase::setLatitude(double latitude)
|
||||
{
|
||||
pos.setLatitudeDeg(latitude);
|
||||
}
|
||||
|
||||
inline void FGAIBase::setCallSign(const std::string& s) {
|
||||
inline void FGAIBase::setCallSign(const std::string& s)
|
||||
{
|
||||
_callsign = s;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setXoffset(double x) {
|
||||
inline void FGAIBase::setXoffset(double x)
|
||||
{
|
||||
_x_offset = x;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setYoffset(double y) {
|
||||
inline void FGAIBase::setYoffset(double y)
|
||||
{
|
||||
_y_offset = y;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setZoffset(double z) {
|
||||
inline void FGAIBase::setZoffset(double z)
|
||||
{
|
||||
_z_offset = z;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setPitchoffset(double p) {
|
||||
inline void FGAIBase::setPitchoffset(double p)
|
||||
{
|
||||
_pitch_offset = p;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setRolloffset(double r) {
|
||||
inline void FGAIBase::setRolloffset(double r)
|
||||
{
|
||||
_roll_offset = r;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setYawoffset(double y) {
|
||||
inline void FGAIBase::setYawoffset(double y)
|
||||
{
|
||||
_yaw_offset = y;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setParentName(const std::string& p) {
|
||||
inline void FGAIBase::setParentName(const std::string& p)
|
||||
{
|
||||
_parent = p;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setName(const std::string& n) {
|
||||
inline void FGAIBase::setName(const std::string& n)
|
||||
{
|
||||
_name = n;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setCollisionLength(int length){
|
||||
inline void FGAIBase::setCollisionLength(int length)
|
||||
{
|
||||
collisionLength = length;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setCollisionHeight(int height){
|
||||
inline void FGAIBase::setCollisionHeight(int height)
|
||||
{
|
||||
collisionHeight = height;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setDie( bool die ) { delete_me = die; }
|
||||
inline void FGAIBase::setDie(bool die) { delete_me = die; }
|
||||
|
||||
inline bool FGAIBase::getDie() { return delete_me; }
|
||||
|
||||
inline FGAIBase::object_type FGAIBase::getType() { return _otype; }
|
||||
|
||||
inline void FGAIBase::calcRangeBearing(double lat, double lon, double lat2, double lon2,
|
||||
double &range, double &bearing) const
|
||||
double& range, double& bearing) const
|
||||
{
|
||||
// calculate the bearing and range of the second pos from the first
|
||||
double az2, distance;
|
||||
|
@ -512,25 +530,29 @@ inline void FGAIBase::calcRangeBearing(double lat, double lon, double lat2, doub
|
|||
range = distance * SG_METER_TO_NM;
|
||||
}
|
||||
|
||||
inline double FGAIBase::calcRelBearingDeg(double bearing, double heading){
|
||||
inline double FGAIBase::calcRelBearingDeg(double bearing, double heading)
|
||||
{
|
||||
double angle = bearing - heading;
|
||||
SG_NORMALIZE_RANGE(angle, -180.0, 180.0);
|
||||
return angle;
|
||||
}
|
||||
|
||||
inline double FGAIBase::calcTrueBearingDeg(double bearing, double heading){
|
||||
inline double FGAIBase::calcTrueBearingDeg(double bearing, double heading)
|
||||
{
|
||||
double angle = bearing + heading;
|
||||
SG_NORMALIZE_RANGE(angle, 0.0, 360.0);
|
||||
return angle;
|
||||
}
|
||||
|
||||
inline double FGAIBase::calcRecipBearingDeg(double bearing){
|
||||
inline double FGAIBase::calcRecipBearingDeg(double bearing)
|
||||
{
|
||||
double angle = bearing - 180;
|
||||
SG_NORMALIZE_RANGE(angle, 0.0, 360.0);
|
||||
return angle;
|
||||
}
|
||||
|
||||
inline void FGAIBase::setMaxSpeed(double m) {
|
||||
inline void FGAIBase::setMaxSpeed(double m)
|
||||
{
|
||||
_max_speed = m;
|
||||
}
|
||||
|
||||
|
@ -539,7 +561,7 @@ inline void FGAIBase::setMaxSpeed(double m) {
|
|||
* The difference in height is used first and then the range must be within
|
||||
* the value specifed in the length field. This effective chops the top and
|
||||
* bottom off the circle - but does not take into account the orientation of the
|
||||
* AI model; so this algorithm is fast but fairly innaccurate.
|
||||
* AI model; so this algorithm is fast but fairly inaccurate.
|
||||
*
|
||||
* Default values:
|
||||
* +---------------+-------------+------------+
|
||||
|
@ -577,4 +599,3 @@ inline int FGAIBase::getCollisionLength() const
|
|||
|
||||
return collisionLength;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// FGAICarrier - FGAIShip-derived class creates an AI aircraft carrier
|
||||
//
|
||||
// Written by David Culp, started October 2004.
|
||||
// - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AICarrier.cxx
|
||||
* SPDX-FileComment: AIShip-derived class creates an AI aircraft carrier
|
||||
* SPDX-FileCopyrightText: Written by David Culp, started October 2004 - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
@ -99,7 +87,7 @@ void FGAICarrier::readFromScenario(SGPropertyNode* scFileNode) {
|
|||
std::vector<SGPropertyNode_ptr> props = scFileNode->getChildren("parking-pos");
|
||||
std::vector<SGPropertyNode_ptr>::const_iterator it;
|
||||
for (it = props.begin(); it != props.end(); ++it) {
|
||||
const string name = (*it)->getStringValue("name", "unnamed");
|
||||
const std::string name = (*it)->getStringValue("name", "unnamed");
|
||||
// Transform to the right coordinate frame, configuration is done in
|
||||
// the usual x-back, y-right, z-up coordinates, computations
|
||||
// in the simulation usual body x-forward, y-right, z-down coordinates
|
||||
|
@ -141,11 +129,11 @@ void FGAICarrier::setDeckAltitudeFt(const double altitude_feet) {
|
|||
_deck_altitude_ft = altitude_feet;
|
||||
}
|
||||
|
||||
void FGAICarrier::setSign(const string& s) {
|
||||
void FGAICarrier::setSign(const std::string& s) {
|
||||
_sign = s;
|
||||
}
|
||||
|
||||
void FGAICarrier::setTACANChannelID(const string& id) {
|
||||
void FGAICarrier::setTACANChannelID(const std::string& id) {
|
||||
_TACAN_channel_id = id;
|
||||
}
|
||||
|
||||
|
@ -474,7 +462,7 @@ void FGAICarrier::bind(){
|
|||
}
|
||||
}
|
||||
|
||||
bool FGAICarrier::getParkPosition(const string& id, SGGeod& geodPos,
|
||||
bool FGAICarrier::getParkPosition(const std::string& id, SGGeod& geodPos,
|
||||
double& hdng, SGVec3d& uvw)
|
||||
{
|
||||
|
||||
|
@ -724,7 +712,7 @@ void FGAICarrier::UpdateElevator(double dt) {
|
|||
|
||||
void FGAICarrier::UpdateJBD(double dt) {
|
||||
|
||||
const string launchbar_state = _launchbar_state_node->getStringValue();
|
||||
const std::string launchbar_state = _launchbar_state_node->getStringValue();
|
||||
double step = 0;
|
||||
|
||||
if (launchbar_state == "Engaged"){
|
||||
|
|
|
@ -1,22 +1,9 @@
|
|||
// FGAICarrier - AIShip-derived class creates an AI aircraft carrier
|
||||
//
|
||||
// Written by David Culp, started October 2004.
|
||||
//
|
||||
// Copyright (C) 2004 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AICarrier.hxx
|
||||
* SPDX-FileComment: AIShip-derived class creates an AI aircraft carrier
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2004 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -28,10 +15,10 @@
|
|||
#include <simgear/emesary/Emesary.hxx>
|
||||
|
||||
#include "AIShip.hxx"
|
||||
|
||||
#include "AIBase.hxx"
|
||||
#include "AIManager.hxx"
|
||||
|
||||
|
||||
class FGAIManager;
|
||||
class FGAICarrier;
|
||||
|
||||
|
@ -41,7 +28,7 @@ public:
|
|||
FGAICarrier();
|
||||
virtual ~FGAICarrier();
|
||||
|
||||
string_view getTypeString(void) const override { return "carrier"; }
|
||||
std::string_view getTypeString(void) const override { return "carrier"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
void setSign(const std::string&);
|
||||
|
|
|
@ -1,22 +1,8 @@
|
|||
// FGAIGroundVehicle - FGAIShip-derived class creates an AI Ground Vehicle
|
||||
// by adding a ground following utility
|
||||
//
|
||||
// Written by Vivian Meazza, started August 2009.
|
||||
// - vivian.meazza at lineone.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIEscort.hxx
|
||||
* SPDX-FileCopyrightText: Written by Vivian Meazza, started August 2009 - vivian.meazza at lineone.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -33,13 +19,14 @@
|
|||
#include "AIBase.hxx"
|
||||
#include "AIManager.hxx"
|
||||
|
||||
|
||||
class FGAIEscort : public FGAIShip
|
||||
{
|
||||
public:
|
||||
FGAIEscort();
|
||||
virtual ~FGAIEscort() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "escort"; }
|
||||
std::string_view getTypeString(void) const override { return "escort"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
|
@ -69,7 +56,7 @@ private:
|
|||
SGVec3d getCartHitchPosAt(const SGVec3d& off) const;
|
||||
|
||||
void calcRangeBearing(double lat, double lon, double lat2, double lon2,
|
||||
double &range, double &bearing) const;
|
||||
double& range, double& bearing) const;
|
||||
double calcTrueBearingDeg(double bearing, double heading);
|
||||
|
||||
SGGeod _selectedpos;
|
||||
|
|
|
@ -1,20 +1,9 @@
|
|||
// // FGAIFlightPlan - class for loading and storing AI flight plans
|
||||
// Written by David Culp, started May 2004
|
||||
// - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIFlightPlan.cxx
|
||||
* SPDX-FileComment: class for loading and storing AI flight plans
|
||||
* SPDX-FileCopyrightText: Written by David Culp, started May 2004 - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
|
@ -575,11 +564,11 @@ void FGAIFlightPlan::pushBackWaypoint(FGAIWaypoint *wpt)
|
|||
SG_LOG(SG_AI, SG_DEBUG, "Double WP : \t" << wpt->getName() << " not added ");
|
||||
} else {
|
||||
waypoints.push_back(wpt);
|
||||
SG_LOG(SG_AI, SG_BULK, "Added WP : \t" << setprecision(12) << wpt->getName() << "\t" << wpt->getPos() << "\t" << wpt->getSpeed());
|
||||
SG_LOG(SG_AI, SG_BULK, "Added WP : \t" << std::setprecision(12) << wpt->getName() << "\t" << wpt->getPos() << "\t" << wpt->getSpeed());
|
||||
}
|
||||
} else {
|
||||
waypoints.push_back(wpt);
|
||||
SG_LOG(SG_AI, SG_BULK, "Added WP : \t" << setprecision(12) << wpt->getName() << "\t" << wpt->getPos() << "\t" << wpt->getSpeed());
|
||||
SG_LOG(SG_AI, SG_BULK, "Added WP : \t" << std::setprecision(12) << wpt->getName() << "\t" << wpt->getPos() << "\t" << wpt->getSpeed());
|
||||
}
|
||||
// std::vector::push_back invalidates waypoints
|
||||
// so we should restore wpt_iterator after push_back
|
||||
|
|
|
@ -1,22 +1,9 @@
|
|||
// FGAIGroundVehicle - FGAIShip-derived class creates an AI Ground Vehicle
|
||||
// by adding a ground following utility
|
||||
//
|
||||
// Written by Vivian Meazza, started August 2009.
|
||||
// - vivian.meazza at lineone.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIGroundVehicle.hxx
|
||||
* SPDX-FileComment: AIShip-derived class creates an AI Ground Vehicle by adding a ground following utility
|
||||
* SPDX-FileCopyrightText: Written by Vivian Meazza, started August 2009 - vivian.meazza at lineone.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -24,20 +11,22 @@
|
|||
#include <string_view>
|
||||
#include <vector>
|
||||
|
||||
#include <simgear/structure/SGSharedPtr.hxx>
|
||||
#include <simgear/scene/material/mat.hxx>
|
||||
#include <simgear/structure/SGSharedPtr.hxx>
|
||||
|
||||
#include "AIShip.hxx"
|
||||
|
||||
#include "AIManager.hxx"
|
||||
#include "AIBase.hxx"
|
||||
#include "AIManager.hxx"
|
||||
|
||||
class FGAIGroundVehicle : public FGAIShip {
|
||||
|
||||
class FGAIGroundVehicle : public FGAIShip
|
||||
{
|
||||
public:
|
||||
FGAIGroundVehicle();
|
||||
virtual ~FGAIGroundVehicle() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "groundvehicle"; }
|
||||
std::string_view getTypeString(void) const override { return "groundvehicle"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
|
@ -72,12 +61,12 @@ private:
|
|||
SGVec3d getCartHitchPosAt(const SGVec3d& off) const;
|
||||
|
||||
void calcRangeBearing(double lat, double lon, double lat2, double lon2,
|
||||
double &range, double &bearing) const;
|
||||
double& range, double& bearing) const;
|
||||
|
||||
SGGeod _selectedpos;
|
||||
|
||||
bool _solid = true; // if true ground is solid for FDMs
|
||||
double _load_resistance = 0.0; // ground load resistanc N/m^2
|
||||
double _load_resistance = 0.0; // ground load resistance N/m^2
|
||||
double _frictionFactor = 0.0; // dimensionless modifier for Coefficient of Friction
|
||||
|
||||
double _elevation = 0.0;
|
||||
|
|
|
@ -1,22 +1,9 @@
|
|||
// AIManager.cxx Based on David Luff's AIMgr:
|
||||
// - a global management type for AI objects
|
||||
//
|
||||
// Written by David Culp, started October 2003.
|
||||
// - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIManager.cxx
|
||||
* SPDX-FileComment: a global management type for AI objects, based on David Luff's AIMgr
|
||||
* SPDX-FileCopyrightText: Written by David Culp, started October 2003 - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
|
@ -263,7 +250,7 @@ SGPropertyNode_ptr FGAIManager::registerScenarioFile(SGPropertyNode_ptr root, co
|
|||
} catch (sg_exception& e) {
|
||||
SG_LOG(SG_AI, SG_WARN, "Skipping malformed scenario file:" << xmlPath);
|
||||
simgear::reportFailure(simgear::LoadFailure::BadData, simgear::ErrorCode::ScenarioLoad,
|
||||
string{"The scenario couldn't be loaded:"} + e.getFormattedMessage(),
|
||||
std::string{"The scenario couldn't be loaded:"} + e.getFormattedMessage(),
|
||||
e.getLocation());
|
||||
sNode.reset();
|
||||
}
|
||||
|
@ -282,7 +269,7 @@ FGAIManager::postinit()
|
|||
|
||||
// process all scenarios
|
||||
for (auto n : root->getChildren("scenario")) {
|
||||
const string& name = n->getStringValue();
|
||||
const std::string& name = n->getStringValue();
|
||||
if (name.empty())
|
||||
continue;
|
||||
|
||||
|
@ -425,7 +412,7 @@ FGAIManager::updateLOD(SGPropertyNode* node)
|
|||
void
|
||||
FGAIManager::attach(const SGSharedPtr<FGAIBase> &model)
|
||||
{
|
||||
string_view typeString = model->getTypeString();
|
||||
std::string_view typeString = model->getTypeString();
|
||||
SGPropertyNode* root = globals->get_props()->getNode("ai/models", true);
|
||||
SGPropertyNode* p;
|
||||
int i;
|
||||
|
@ -619,7 +606,7 @@ FGAIBasePtr FGAIManager::getObjectFromProperty(const SGPropertyNode* aProp) cons
|
|||
}
|
||||
|
||||
bool
|
||||
FGAIManager::loadScenario( const string &id )
|
||||
FGAIManager::loadScenario( const std::string &id )
|
||||
{
|
||||
SGPath path;
|
||||
SGPropertyNode_ptr file = loadScenarioFile(id, path);
|
||||
|
@ -643,7 +630,7 @@ FGAIManager::loadScenario( const string &id )
|
|||
|
||||
|
||||
bool
|
||||
FGAIManager::unloadScenario( const string &filename)
|
||||
FGAIManager::unloadScenario( const std::string &filename)
|
||||
{
|
||||
auto it = _scenarios.find(filename);
|
||||
if (it == _scenarios.end()) {
|
||||
|
|
|
@ -1,22 +1,9 @@
|
|||
// FGAIMultiplayer - AIBase derived class creates an AI multiplayer aircraft
|
||||
//
|
||||
// Written by David Culp, started October 2003.
|
||||
//
|
||||
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIMultiplayer.hxx
|
||||
* SPDX-FileComment: AIBase derived class creates an AI multiplayer aircraft
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -28,12 +15,14 @@
|
|||
|
||||
#include "AIBase.hxx"
|
||||
|
||||
class FGAIMultiplayer : public FGAIBase {
|
||||
|
||||
class FGAIMultiplayer : public FGAIBase
|
||||
{
|
||||
public:
|
||||
FGAIMultiplayer();
|
||||
virtual ~FGAIMultiplayer() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "multiplayer"; }
|
||||
std::string_view getTypeString(void) const override { return "multiplayer"; }
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
void bind() override;
|
||||
void update(double dt) override;
|
||||
|
@ -52,7 +41,6 @@ public:
|
|||
void setAllowExtrapolation(bool allowExtrapolation)
|
||||
{
|
||||
mAllowExtrapolation = allowExtrapolation;
|
||||
|
||||
}
|
||||
bool getAllowExtrapolation(void) const
|
||||
{
|
||||
|
@ -104,14 +92,13 @@ public:
|
|||
void clearMotionInfo();
|
||||
|
||||
private:
|
||||
|
||||
// Automatic sorting of motion data according to its timestamp
|
||||
typedef std::map<double,FGExternalMotionData> MotionInfo;
|
||||
typedef std::map<double, FGExternalMotionData> MotionInfo;
|
||||
MotionInfo mMotionInfo;
|
||||
|
||||
// Map between the property id's from the multiplayers network packets
|
||||
// Map between the property id's from the multiplayer network packets
|
||||
// and the property nodes
|
||||
typedef std::map<unsigned, SGSharedPtr<SGPropertyNode> > PropertyMap;
|
||||
typedef std::map<unsigned, SGSharedPtr<SGPropertyNode>> PropertyMap;
|
||||
PropertyMap mPropertyMap;
|
||||
|
||||
// Calculates position, orientation and velocity using interpolation between
|
||||
|
@ -126,8 +113,7 @@ private:
|
|||
double tau,
|
||||
SGVec3d& ecPos,
|
||||
SGQuatf& ecOrient,
|
||||
SGVec3f& ecLinearVel
|
||||
);
|
||||
SGVec3f& ecLinearVel);
|
||||
|
||||
// Calculates position, orientation and velocity using extrapolation from
|
||||
// *nextIt.
|
||||
|
@ -138,8 +124,7 @@ private:
|
|||
bool motion_logging,
|
||||
SGVec3d& ecPos,
|
||||
SGQuatf& ecOrient,
|
||||
SGVec3f& ecLinearVel
|
||||
);
|
||||
SGVec3f& ecLinearVel);
|
||||
|
||||
bool mTimeOffsetSet = false;
|
||||
bool realTime = false;
|
||||
|
|
|
@ -1,23 +1,10 @@
|
|||
// FGAIShip - AIBase derived class creates an AI ship
|
||||
//
|
||||
// Written by David Culp, started November 2003.
|
||||
// with major amendments and additions by Vivian Meazza, 2004 - 2007
|
||||
//
|
||||
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIShip.hxx
|
||||
* SPDX-FileComment: AIBase derived class creates an AI ship
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-FileContributor: with major amendments and additions by Vivian Meazza, 2004 - 2007
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -28,15 +15,16 @@
|
|||
#include "AIBase.hxx"
|
||||
#include "AIFlightPlan.hxx"
|
||||
|
||||
|
||||
class FGAIManager;
|
||||
|
||||
class FGAIShip : public FGAIBase {
|
||||
|
||||
class FGAIShip : public FGAIBase
|
||||
{
|
||||
public:
|
||||
FGAIShip(object_type ot = object_type::otShip);
|
||||
virtual ~FGAIShip() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "ship"; }
|
||||
std::string_view getTypeString(void) const override { return "ship"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
|
@ -47,7 +35,7 @@ public:
|
|||
|
||||
void setRudder(float r);
|
||||
void setRoll(double rl);
|
||||
void ProcessFlightPlan( double dt);
|
||||
void ProcessFlightPlan(double dt);
|
||||
void AccelTo(double speed);
|
||||
void PitchTo(double angle);
|
||||
void RollTo(double angle);
|
||||
|
@ -91,7 +79,7 @@ public:
|
|||
double _missed_range = 0.0;
|
||||
double _tow_angle;
|
||||
double _wait_count = 0.0;
|
||||
double _missed_count,_wp_range;
|
||||
double _missed_count, _wp_range;
|
||||
double _dt_count, _next_run;
|
||||
|
||||
FGAIWaypoint* prev = nullptr; // the one behind you
|
||||
|
@ -121,7 +109,7 @@ private:
|
|||
double processTimeString(const std::string& time);
|
||||
|
||||
bool initFlightPlan();
|
||||
bool advanceFlightPlan (double elapsed_sec, double day_sec);
|
||||
bool advanceFlightPlan(double elapsed_sec, double day_sec);
|
||||
|
||||
float _rudder = 0.0f;
|
||||
float _tgt_rudder = 0.0f;
|
||||
|
@ -149,4 +137,3 @@ private:
|
|||
bool _fp_init;
|
||||
bool _missed;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,38 +1,24 @@
|
|||
// FGAIStatic - AIBase derived class creates AI static object
|
||||
//
|
||||
// Written by David Culp, started Jun 2005.
|
||||
//
|
||||
// Copyright (C) 2005 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIStatic.hxx
|
||||
* SPDX-FileComment: AIBase derived class creates AI static object
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2005 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
|
||||
#include "AIManager.hxx"
|
||||
#include "AIBase.hxx"
|
||||
#include "AIManager.hxx"
|
||||
|
||||
|
||||
class FGAIStatic : public FGAIBase {
|
||||
|
||||
class FGAIStatic : public FGAIBase
|
||||
{
|
||||
public:
|
||||
|
||||
FGAIStatic();
|
||||
virtual ~FGAIStatic() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "static"; }
|
||||
std::string_view getTypeString(void) const override { return "static"; }
|
||||
void update(double dt) override;
|
||||
};
|
||||
|
|
|
@ -1,45 +1,32 @@
|
|||
// FGAIStorm - AIBase derived class creates an AI thunderstorm
|
||||
//
|
||||
// Written by David Culp, started Feb 2004.
|
||||
//
|
||||
// Copyright (C) 2004 David P. Culp - davidculp2@comcast.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIStorm.hxx
|
||||
* SPDX-FileComment: AIBase derived class creates an AI thunderstorm
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2004 David P. Culp - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include "AIManager.hxx"
|
||||
#include "AIBase.hxx"
|
||||
#include "AIManager.hxx"
|
||||
|
||||
|
||||
class FGAIStorm : public FGAIBase {
|
||||
|
||||
class FGAIStorm : public FGAIBase
|
||||
{
|
||||
public:
|
||||
FGAIStorm();
|
||||
virtual ~FGAIStorm() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "thunderstorm"; }
|
||||
std::string_view getTypeString(void) const override { return "thunderstorm"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
void update(double dt) override;
|
||||
|
||||
inline void setStrengthNorm( double s ) { strength_norm = s; };
|
||||
inline void setDiameter( double d ) { diameter = d; };
|
||||
inline void setHeight( double h ) { height = h; };
|
||||
inline void setStrengthNorm(double s) { strength_norm = s; };
|
||||
inline void setDiameter(double d) { diameter = d; };
|
||||
inline void setHeight(double h) { height = h; };
|
||||
inline double getStrengthNorm() const { return strength_norm; };
|
||||
inline double getDiameter() const { return diameter; };
|
||||
inline double getHeight() const { return height; };
|
||||
|
|
|
@ -1,21 +1,10 @@
|
|||
// AISwiftAircraft.h - Derived AIBase class for swift aircraft
|
||||
//
|
||||
// Copyright (C) 2020 - swift Project Community / Contributors (http://swift-project.org/)
|
||||
// Written by Lars Toenning <dev@ltoenning.de> started on April 2020.
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AISwiftAircraft.h
|
||||
* SPDX-FileComment: Derived AIBase class for swift aircraft
|
||||
* SPDX-FileCopyrightText: Written by Lars Toenning <dev@ltoenning.de> started on April 2020
|
||||
* SPDX-FileContributor: Copyright (C) 2020 - swift Project Community / Contributors (http://swift-project.org/)
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -25,11 +14,12 @@
|
|||
|
||||
#include "AIBaseAircraft.hxx"
|
||||
|
||||
struct AircraftTransponder
|
||||
{
|
||||
|
||||
struct AircraftTransponder {
|
||||
AircraftTransponder(std::string callsign, int code, bool modeC, bool ident)
|
||||
: callsign(std::move(callsign)), code(code), modeC(modeC), ident(ident)
|
||||
{}
|
||||
{
|
||||
}
|
||||
|
||||
std::string callsign;
|
||||
int code;
|
||||
|
@ -37,14 +27,13 @@ struct AircraftTransponder
|
|||
bool ident;
|
||||
};
|
||||
|
||||
struct AircraftSurfaces
|
||||
{
|
||||
struct AircraftSurfaces {
|
||||
AircraftSurfaces(std::string callsign, double gear, double flaps, double spoilers, double speedBrake, double slats, double wingSweeps,
|
||||
double thrust, double elevator, double rudder, double aileron, bool landingLight, bool taxiLight, bool beaconLight,
|
||||
bool strobeLight, bool navLight, int lightPattern)
|
||||
: callsign(std::move(callsign)), gear(gear), flaps(flaps), spoilers(spoilers), speedBrake(speedBrake), slats(slats), wingSweeps(wingSweeps),
|
||||
thrust(thrust), elevator(elevator), rudder(rudder), aileron(aileron), landingLight(landingLight), taxiLight(taxiLight), beaconLight(beaconLight),
|
||||
strobeLight(strobeLight), navLight(navLight), lightPattern(lightPattern){}
|
||||
strobeLight(strobeLight), navLight(navLight), lightPattern(lightPattern) {}
|
||||
|
||||
std::string callsign;
|
||||
double gear;
|
||||
|
@ -71,10 +60,10 @@ public:
|
|||
FGAISwiftAircraft(const std::string& callsign, const std::string& modelString);
|
||||
virtual ~FGAISwiftAircraft() = default;
|
||||
|
||||
string_view getTypeString() const override { return "swift"; }
|
||||
std::string_view getTypeString() const override { return "swift"; }
|
||||
void update(double dt) override;
|
||||
|
||||
void updatePosition(const SGGeod &position, const SGVec3d &orientation, double groundspeed, bool initPos);
|
||||
void updatePosition(const SGGeod& position, const SGVec3d& orientation, double groundspeed, bool initPos);
|
||||
double getGroundElevation(const SGGeod& pos) const;
|
||||
void initProps();
|
||||
void setPlaneSurface(const AircraftSurfaces& surfaces);
|
||||
|
|
|
@ -1,23 +1,10 @@
|
|||
// AITanker.hxx Based on David Culp's AIModel code
|
||||
// - Tanker specific code isolated from AI Aircraft code
|
||||
// by Thomas Foerster, started June 2007
|
||||
//
|
||||
//
|
||||
// Original code written by David Culp, started October 2003.
|
||||
// - davidculp2@comcast.net/
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AITanker.hxx
|
||||
* SPDX-FileComment: Tanker specific code isolated from AI Aircraft code, based on David Culp's AIModel code
|
||||
* SPDX-FileCopyrightText: by Thomas Foerster, started June 2007
|
||||
* SPDX-FileContributor: Original code written by David Culp, started October 2003 - davidculp2@comcast.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -25,6 +12,7 @@
|
|||
|
||||
#include "AIAircraft.hxx"
|
||||
|
||||
|
||||
/**
|
||||
* An AI tanker for air-air refueling.
|
||||
*
|
||||
|
@ -35,12 +23,13 @@
|
|||
* @author Thomas F<EFBFBD>ster <t.foerster@biologie.hu-berlin.de>
|
||||
*/
|
||||
|
||||
class FGAITanker : public FGAIAircraft {
|
||||
class FGAITanker : public FGAIAircraft
|
||||
{
|
||||
public:
|
||||
FGAITanker(FGAISchedule* ref = 0);
|
||||
virtual ~FGAITanker() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "tanker"; }
|
||||
std::string_view getTypeString(void) const override { return "tanker"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
void bind() override;
|
||||
|
||||
|
|
|
@ -1,24 +1,9 @@
|
|||
// FGAIThermal - FGAIBase-derived class creates an AI thermal
|
||||
//
|
||||
// Original by Written by David Culp
|
||||
//
|
||||
// An attempt to refine the thermal shape and behaviour by WooT 2009
|
||||
//
|
||||
// Copyright (C) 2009 Patrice Poly ( WooT )
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIThermal.hxx
|
||||
* SPDX-FileComment: AIBase-derived class creates an AI thermal. An attempt to refine the thermal shape and behaviour by WooT 2009
|
||||
* SPDX-FileCopyrightText: Copyright (C) 2009 Patrice Poly ( WooT )
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -30,25 +15,25 @@
|
|||
#include <string>
|
||||
|
||||
|
||||
class FGAIThermal : public FGAIBase {
|
||||
|
||||
class FGAIThermal : public FGAIBase
|
||||
{
|
||||
public:
|
||||
FGAIThermal();
|
||||
virtual ~FGAIThermal() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "thermal"; }
|
||||
std::string_view getTypeString(void) const override { return "thermal"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
void bind() override;
|
||||
void update(double dt) override;
|
||||
|
||||
inline void setMaxStrength( double s ) { max_strength = s; };
|
||||
inline void setDiameter( double d ) { diameter = d; };
|
||||
inline void setHeight( double h ) { height = h; };
|
||||
inline void setMaxUpdraft( double lift ) { v_up_max = lift; };
|
||||
inline void setMinUpdraft( double sink ) { v_up_min = sink; };
|
||||
inline void setR_up_frac( double r ) { r_up_frac = r; };
|
||||
inline void setMaxStrength(double s) { max_strength = s; };
|
||||
inline void setDiameter(double d) { diameter = d; };
|
||||
inline void setHeight(double h) { height = h; };
|
||||
inline void setMaxUpdraft(double lift) { v_up_max = lift; };
|
||||
inline void setMinUpdraft(double sink) { v_up_min = sink; };
|
||||
inline void setR_up_frac(double r) { r_up_frac = r; };
|
||||
|
||||
inline double getStrength() const { return strength; };
|
||||
inline double getDiameter() const { return diameter; };
|
||||
|
|
|
@ -1,21 +1,9 @@
|
|||
// FGAIWingman - FGAIBllistic-derived class creates an AI Wingman
|
||||
//
|
||||
// Written by Vivian Meazza, started February 2008.
|
||||
// - vivian.meazza at lineone.net
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
/*
|
||||
* SPDX-FileName: AIWingman.hxx
|
||||
* SPDX-FileComment: AIBllistic-derived class creates an AI Wingman
|
||||
* SPDX-FileCopyrightText: Written by Vivian Meazza, started February 2008 - vivian.meazza at lineone.net
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
@ -28,12 +16,13 @@
|
|||
#include "AIManager.hxx"
|
||||
|
||||
|
||||
class FGAIWingman : public FGAIBallistic {
|
||||
class FGAIWingman : public FGAIBallistic
|
||||
{
|
||||
public:
|
||||
FGAIWingman();
|
||||
virtual ~FGAIWingman() = default;
|
||||
|
||||
string_view getTypeString(void) const override { return "wingman"; }
|
||||
std::string_view getTypeString(void) const override { return "wingman"; }
|
||||
void readFromScenario(SGPropertyNode* scFileNode) override;
|
||||
|
||||
bool init(ModelSearchOrder searchOrder) override;
|
||||
|
@ -75,50 +64,59 @@ private:
|
|||
inline void setCoeffBnk(double r);
|
||||
inline void setCoeffSpd(double s);
|
||||
|
||||
inline bool getFormate() const { return _formate_to_ac;}
|
||||
inline bool getFormate() const { return _formate_to_ac; }
|
||||
|
||||
inline double getTgtHdg() const { return tgt_heading;}
|
||||
inline double getTgtSpd() const { return tgt_speed;}
|
||||
inline double getBrkAng() const { return _break_angle;}
|
||||
inline double getTgtHdg() const { return tgt_heading; }
|
||||
inline double getTgtSpd() const { return tgt_speed; }
|
||||
inline double getBrkAng() const { return _break_angle; }
|
||||
|
||||
inline SGVec3d getCartInPos(SGGeod in_pos) const;
|
||||
};
|
||||
|
||||
void FGAIWingman::setFormate(bool f) {
|
||||
void FGAIWingman::setFormate(bool f)
|
||||
{
|
||||
_formate_to_ac = f;
|
||||
}
|
||||
|
||||
void FGAIWingman::setTgtHdg(double h) {
|
||||
void FGAIWingman::setTgtHdg(double h)
|
||||
{
|
||||
tgt_heading = h;
|
||||
}
|
||||
|
||||
void FGAIWingman::setTgtSpd(double s) {
|
||||
void FGAIWingman::setTgtSpd(double s)
|
||||
{
|
||||
tgt_speed = s;
|
||||
}
|
||||
|
||||
void FGAIWingman::setBrkHdg(double a){
|
||||
tgt_heading = hdg + a ;
|
||||
void FGAIWingman::setBrkHdg(double a)
|
||||
{
|
||||
tgt_heading = hdg + a;
|
||||
SG_NORMALIZE_RANGE(tgt_heading, 0.0, 360.0);
|
||||
}
|
||||
|
||||
void FGAIWingman::setBrkAng(double a){
|
||||
_break_angle = a ;
|
||||
void FGAIWingman::setBrkAng(double a)
|
||||
{
|
||||
_break_angle = a;
|
||||
SG_NORMALIZE_RANGE(_break_angle, -180.0, 180.0);
|
||||
}
|
||||
|
||||
void FGAIWingman::setCoeffHdg(double h){
|
||||
void FGAIWingman::setCoeffHdg(double h)
|
||||
{
|
||||
_coeff_hdg = h;
|
||||
}
|
||||
|
||||
void FGAIWingman::setCoeffPch(double p){
|
||||
void FGAIWingman::setCoeffPch(double p)
|
||||
{
|
||||
_coeff_pch = p;
|
||||
}
|
||||
|
||||
void FGAIWingman::setCoeffBnk(double b){
|
||||
void FGAIWingman::setCoeffBnk(double b)
|
||||
{
|
||||
_coeff_bnk = b;
|
||||
}
|
||||
|
||||
void FGAIWingman::setCoeffSpd(double s){
|
||||
void FGAIWingman::setCoeffSpd(double s)
|
||||
{
|
||||
_coeff_spd = s;
|
||||
}
|
||||
|
||||
|
@ -138,7 +136,8 @@ void FGAIWingman::setCoeffSpd(double s){
|
|||
// return _break_angle;
|
||||
//}
|
||||
|
||||
SGVec3d FGAIWingman::getCartInPos(SGGeod in_pos) const {
|
||||
SGVec3d FGAIWingman::getCartInPos(SGGeod in_pos) const
|
||||
{
|
||||
SGVec3d cartPos = SGVec3d::fromGeod(in_pos);
|
||||
return cartPos;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue