1
0
Fork 0

Maintenance: namespace

Clean up namespaces.
Don't use broad 'using namespace' context in header files.
Header Guards.
SPDX tags.
This commit is contained in:
scttgs0 2023-05-20 17:10:29 -05:00
parent cd35776536
commit 89043efdaa
19 changed files with 688 additions and 885 deletions

View file

@ -1,22 +1,9 @@
// FGAIAircraft - FGAIBase-derived class creates an AI airplane /*
// * SPDX-FileName: AIAircraft.cxx
// Written by David Culp, started October 2003. * SPDX-FileComment: AIBase derived class creates an AI aircraft
// * SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#include <Main/fg_props.hxx> #include <Main/fg_props.hxx>
#include <Main/globals.hxx> #include <Main/globals.hxx>
@ -1485,7 +1472,7 @@ void FGAIAircraft::updateUserFlightPlan(double dt)
<< "\t" << current->getPos().getLatitudeDeg() << "\t" << current->getPos().getLatitudeDeg()
<< "\t" << current->getPos().getLongitudeDeg()); << "\t" << current->getPos().getLongitudeDeg());
if ( currDist>legDistance ) { if ( currDist>legDistance ) {
// We are definetly beyond the airport // We are definitely beyond the airport
fp->incrementLeg(); 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); const double headingDiff = SGMiscd::normalizePeriodic(-180, 180, hdg-tgt_heading);
(*o) << lineIndex << "\t"; (*o) << lineIndex << "\t";
(*o) << setprecision(12); (*o) << std::setprecision(12);
(*o) << this->getGeodPos().getLatitudeDeg() << "\t"; (*o) << this->getGeodPos().getLatitudeDeg() << "\t";
(*o) << this->getGeodPos().getLongitudeDeg() << "\t"; (*o) << this->getGeodPos().getLongitudeDeg() << "\t";
(*o) << this->getGeodPos().getElevationFt() << "\t"; (*o) << this->getGeodPos().getElevationFt() << "\t";

View file

@ -1,31 +1,19 @@
// FGAIAircraft - AIBase derived class creates an AI aircraft /*
// * SPDX-FileName: AIAircraft.hxx
// Written by David Culp, started October 2003. * SPDX-FileComment: AIBase derived class creates an AI aircraft
// * SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
#include <iostream>
#include <string> #include <string>
#include <string_view> #include <string_view>
#include <iostream>
#include "AIBaseAircraft.hxx" #include "AIBaseAircraft.hxx"
class PerformanceData; class PerformanceData;
class FGAISchedule; class FGAISchedule;
class FGAIFlightPlan; class FGAIFlightPlan;
@ -34,10 +22,8 @@ class FGATCInstruction;
class FGAIWaypoint; class FGAIWaypoint;
class sg_ofstream; class sg_ofstream;
namespace AILeg namespace AILeg {
{ enum Type {
enum Type
{
STARTUP_PUSHBACK = 1, STARTUP_PUSHBACK = 1,
TAXI = 2, TAXI = 2,
TAKEOFF = 3, TAKEOFF = 3,
@ -52,23 +38,21 @@ namespace AILeg
} }
// 1 = joined departure queue; 2 = Passed DepartureHold waypoint; handover control to tower; 0 = any other state. // 1 = joined departure queue; 2 = Passed DepartureHold waypoint; handover control to tower; 0 = any other state.
namespace AITakeOffStatus namespace AITakeOffStatus {
{ enum Type {
enum Type
{
NONE = 0, NONE = 0,
QUEUED = 1, // joined departure queue QUEUED = 1, // joined departure queue
CLEARED_FOR_TAKEOFF = 2 // Passed DepartureHold waypoint; handover control to tower; CLEARED_FOR_TAKEOFF = 2 // Passed DepartureHold waypoint; handover control to tower;
}; };
} }
class FGAIAircraft : public FGAIBaseAircraft { class FGAIAircraft : public FGAIBaseAircraft
{
public: public:
FGAIAircraft(FGAISchedule* ref = 0); FGAIAircraft(FGAISchedule* ref = 0);
virtual ~FGAIAircraft(); 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 readFromScenario(SGPropertyNode* scFileNode) override;
void bind() override; void bind() override;
@ -83,7 +67,10 @@ public:
void initializeFlightPlan(); void initializeFlightPlan();
#endif #endif
FGAIFlightPlan* GetFlightPlan() const { return fp.get(); }; FGAIFlightPlan* GetFlightPlan() const
{
return fp.get();
};
void ProcessFlightPlan(double dt, time_t now); void ProcessFlightPlan(double dt, time_t now);
time_t checkForArrivalTime(const std::string& wptName); time_t checkForArrivalTime(const std::string& wptName);
time_t calcDeparture(); time_t calcDeparture();
@ -150,6 +137,7 @@ public:
bool isBlockedBy(FGAIAircraft* other); bool isBlockedBy(FGAIAircraft* other);
void dumpCSVHeader(std::unique_ptr<sg_ofstream>& o); void dumpCSVHeader(std::unique_ptr<sg_ofstream>& o);
void dumpCSV(std::unique_ptr<sg_ofstream>& o, int lineIndex); void dumpCSV(std::unique_ptr<sg_ofstream>& o, int lineIndex);
protected: protected:
void Run(double dt); void Run(double dt);
@ -205,11 +193,13 @@ private:
int determineNextLeg(int leg); int determineNextLeg(int leg);
void handleATCRequests(double dt); void handleATCRequests(double dt);
inline bool isStationary() { inline bool isStationary()
{
return ((fabs(speed) <= 0.0001) && (fabs(tgt_speed) <= 0.0001)); return ((fabs(speed) <= 0.0001) && (fabs(tgt_speed) <= 0.0001));
} }
inline bool needGroundElevation() { inline bool needGroundElevation()
{
if (!isStationary()) if (!isStationary())
_needsGroundElevation = true; _needsGroundElevation = true;
return _needsGroundElevation; return _needsGroundElevation;

View file

@ -1,23 +1,10 @@
// FGAIBallistic.hxx - AIBase derived class creates an AI ballistic object /*
// * SPDX-FileName: AIBallistic.hxx
// Written by David Culp, started November 2003. * SPDX-FileComment: AIBase derived class creates an AI ballistic object
// - davidculp2@comcast.net * SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
// * SPDX-FileContributor: With major additions by Vivian Meazza, Feb 2008
// With major additions by Vivian Meazza, Feb 2008 * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
@ -25,20 +12,20 @@
#include <string_view> #include <string_view>
#include <vector> #include <vector>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/scene/material/mat.hxx> #include <simgear/scene/material/mat.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include "AIManager.hxx"
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIManager.hxx"
class FGAIBallistic : public FGAIBase {
class FGAIBallistic : public FGAIBase
{
public: public:
FGAIBallistic(object_type ot = object_type::otBallistic); FGAIBallistic(object_type ot = object_type::otBallistic);
virtual ~FGAIBallistic() = default; 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; void readFromScenario(SGPropertyNode* scFileNode) override;
bool init(ModelSearchOrder searchOrder) override; bool init(ModelSearchOrder searchOrder) override;
@ -148,7 +135,6 @@ public:
double hs; double hs;
void setTgtXOffset(double x); void setTgtXOffset(double x);
void setTgtYOffset(double y); void setTgtYOffset(double y);
void setTgtZOffset(double z); void setTgtZOffset(double z);
@ -169,7 +155,6 @@ public:
SGGeod _oldoffsetpos; SGGeod _oldoffsetpos;
private: private:
double _az_random_error; // maximum azimuth error in degrees double _az_random_error; // maximum azimuth error in degrees
double _el_random_error; // maximum elevation error in degrees double _el_random_error; // maximum elevation error in degrees
bool _aero_stabilised; // if true, object will align with trajectory bool _aero_stabilised; // if true, object will align with trajectory
@ -183,7 +168,7 @@ private:
double _mass; // slugs double _mass; // slugs
bool _random; // modifier for Cd, life, az bool _random; // modifier for Cd, life, az
double _life_randomness; // dimension for _random, only applies to life at present 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 double _frictionFactor = 0.0; // dimensionless modifier for Coefficient of Friction
bool _solid; // if true ground is solid for FDMs bool _solid; // if true ground is solid for FDMs
// double _elevation_m = 0.0; // ground elevation in meters // double _elevation_m = 0.0; // ground elevation in meters

View file

@ -1,24 +1,10 @@
// FGAIBase - abstract base class for AI objects /*
// Written by David Culp, started Nov 2003, based on * SPDX-FileName: AIBase.cxx
// David Luff's FGAIEntity class. * SPDX-FileComment: abstract base class for AI objects, based on David Luff's FGAIEntity class.
// - davidculp2@comcast.net * SPDX-FileCopyrightText: Written by David Culp, started Nov 2003 - davidculp2@comcast.net
// * SPDX-FileContributor: With additions by Mathias Froehlich & Vivian Meazza 2004-2007
// With additions by Mathias Froehlich & Vivian Meazza 2004 -2007 * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#include <config.h> #include <config.h>
@ -470,11 +456,11 @@ void FGAIBase::updateLOD()
_model->setRange(modelLowDetailIndex , maxRangeBare, maxRangeDetail); // least detailed _model->setRange(modelLowDetailIndex , maxRangeBare, maxRangeDetail); // least detailed
} else if (_low_res.valid() && !_high_res.valid()) { } 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 // 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); _model->setRange(modelHighDetailIndex, 0,0);
} else if (!_low_res.valid() && _high_res.valid()) { } 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 // 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); _model->setRange(modelLowDetailIndex, 0,0);
} }
} else { } else {
@ -654,7 +640,7 @@ bool FGAIBase::init(ModelSearchOrder searchOrder)
// Load models // Load models
_model = new osg::LOD(); _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()) { if(model_list.size() == 1 && _modeldata && _modeldata->hasInteriorPath()) {
// Only one model and interior available (expecting this to be a high_res model) // 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 _low_res = new osg::PagedLOD(); // Dummy node to keep LOD node happy

View file

@ -1,21 +1,9 @@
// FGAIBase.hxx - abstract base class for AI objects /*
// Written by David Culp, started Nov 2003, based on * SPDX-FileName: AIBase.hxx
// David Luff's FGAIEntity class. * SPDX-FileComment: abstract base class for AI objects, based on David Luff's FGAIEntity class.
// - davidculp2@comcast.net * SPDX-FileCopyrightText: Written by David Culp, started Nov 2003 - davidculp2@comcast.net
// * SPDX-License-Identifier: GPL-2.0-or-later
// 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.
#pragma once #pragma once
@ -33,8 +21,13 @@
#include <simgear/structure/SGReferenced.hxx> #include <simgear/structure/SGReferenced.hxx>
#include <simgear/structure/SGSharedPtr.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 FGAIManager;
class FGAIFlightPlan; class FGAIFlightPlan;
@ -308,7 +301,6 @@ private:
osg::ref_ptr<osg::PagedLOD> _high_res; osg::ref_ptr<osg::PagedLOD> _high_res;
osg::ref_ptr<osg::Group> _group; osg::ref_ptr<osg::Group> _group;
osg::ref_ptr<osg::PagedLOD> _interior; osg::ref_ptr<osg::PagedLOD> _interior;
osg::ref_ptr<FGAIModelData> _modeldata; osg::ref_ptr<FGAIModelData> _modeldata;
SGSharedPtr<FGFX> _fx; SGSharedPtr<FGFX> _fx;
@ -318,7 +310,7 @@ private:
public: public:
object_type getType(); 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);
@ -390,110 +382,136 @@ public:
typedef SGSharedPtr<FGAIBase> FGAIBasePtr; typedef SGSharedPtr<FGAIBase> FGAIBasePtr;
inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) { inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p)
{
manager = mgr; manager = mgr;
props = p; props = p;
} }
inline void FGAIBase::setPath(const char* model ) { inline void FGAIBase::setPath(const char* model)
{
model_path.append(model); model_path.append(model);
} }
inline void FGAIBase::setPathLowres(std::string model ) { inline void FGAIBase::setPathLowres(std::string model)
{
model_path_lowres.append(model); model_path_lowres.append(model);
} }
inline void FGAIBase::setFallbackModelIndex(const int i ) { inline void FGAIBase::setFallbackModelIndex(const int i)
{
_fallback_model_index = i; _fallback_model_index = i;
} }
inline void FGAIBase::setSMPath(const std::string& p) { inline void FGAIBase::setSMPath(const std::string& p)
{
_path = p; _path = p;
} }
inline void FGAIBase::setServiceable(bool s) { inline void FGAIBase::setServiceable(bool s)
{
serviceable = s; serviceable = s;
} }
inline void FGAIBase::setSpeed( double speed_KTAS ) { inline void FGAIBase::setSpeed(double speed_KTAS)
{
speed = tgt_speed = speed_KTAS; speed = tgt_speed = speed_KTAS;
} }
inline void FGAIBase::setRadius( double radius ) { inline void FGAIBase::setRadius(double radius)
{
turn_radius_ft = radius; turn_radius_ft = radius;
} }
inline void FGAIBase::setHeading( double heading ) { inline void FGAIBase::setHeading(double heading)
{
hdg = tgt_heading = 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; altitude_ft = tgt_altitude_ft = alt_ft;
pos.setElevationFt(altitude_ft); pos.setElevationFt(altitude_ft);
} }
inline void FGAIBase::setAltitudeAGL( double alt_ft ) { inline void FGAIBase::setAltitudeAGL(double alt_ft)
{
altitude_agl_ft = alt_ft; altitude_agl_ft = alt_ft;
} }
inline void FGAIBase::setBank( double bank ) { inline void FGAIBase::setBank(double bank)
{
roll = tgt_roll = bank; roll = tgt_roll = bank;
no_roll = false; no_roll = false;
} }
inline void FGAIBase::setPitch( double newpitch ) { inline void FGAIBase::setPitch(double newpitch)
{
pitch = tgt_pitch = newpitch; pitch = tgt_pitch = newpitch;
} }
inline void FGAIBase::setLongitude( double longitude ) { inline void FGAIBase::setLongitude(double longitude)
{
pos.setLongitudeDeg(longitude); pos.setLongitudeDeg(longitude);
} }
inline void FGAIBase::setLatitude ( double latitude ) { inline void FGAIBase::setLatitude(double latitude)
{
pos.setLatitudeDeg(latitude); pos.setLatitudeDeg(latitude);
} }
inline void FGAIBase::setCallSign(const std::string& s) { inline void FGAIBase::setCallSign(const std::string& s)
{
_callsign = s; _callsign = s;
} }
inline void FGAIBase::setXoffset(double x) { inline void FGAIBase::setXoffset(double x)
{
_x_offset = x; _x_offset = x;
} }
inline void FGAIBase::setYoffset(double y) { inline void FGAIBase::setYoffset(double y)
{
_y_offset = y; _y_offset = y;
} }
inline void FGAIBase::setZoffset(double z) { inline void FGAIBase::setZoffset(double z)
{
_z_offset = z; _z_offset = z;
} }
inline void FGAIBase::setPitchoffset(double p) { inline void FGAIBase::setPitchoffset(double p)
{
_pitch_offset = p; _pitch_offset = p;
} }
inline void FGAIBase::setRolloffset(double r) { inline void FGAIBase::setRolloffset(double r)
{
_roll_offset = r; _roll_offset = r;
} }
inline void FGAIBase::setYawoffset(double y) { inline void FGAIBase::setYawoffset(double y)
{
_yaw_offset = y; _yaw_offset = y;
} }
inline void FGAIBase::setParentName(const std::string& p) { inline void FGAIBase::setParentName(const std::string& p)
{
_parent = p; _parent = p;
} }
inline void FGAIBase::setName(const std::string& n) { inline void FGAIBase::setName(const std::string& n)
{
_name = n; _name = n;
} }
inline void FGAIBase::setCollisionLength(int length){ inline void FGAIBase::setCollisionLength(int length)
{
collisionLength = length; collisionLength = length;
} }
inline void FGAIBase::setCollisionHeight(int height){ inline void FGAIBase::setCollisionHeight(int height)
{
collisionHeight = height; collisionHeight = height;
} }
@ -512,25 +530,29 @@ inline void FGAIBase::calcRangeBearing(double lat, double lon, double lat2, doub
range = distance * SG_METER_TO_NM; 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; double angle = bearing - heading;
SG_NORMALIZE_RANGE(angle, -180.0, 180.0); SG_NORMALIZE_RANGE(angle, -180.0, 180.0);
return angle; return angle;
} }
inline double FGAIBase::calcTrueBearingDeg(double bearing, double heading){ inline double FGAIBase::calcTrueBearingDeg(double bearing, double heading)
{
double angle = bearing + heading; double angle = bearing + heading;
SG_NORMALIZE_RANGE(angle, 0.0, 360.0); SG_NORMALIZE_RANGE(angle, 0.0, 360.0);
return angle; return angle;
} }
inline double FGAIBase::calcRecipBearingDeg(double bearing){ inline double FGAIBase::calcRecipBearingDeg(double bearing)
{
double angle = bearing - 180; double angle = bearing - 180;
SG_NORMALIZE_RANGE(angle, 0.0, 360.0); SG_NORMALIZE_RANGE(angle, 0.0, 360.0);
return angle; return angle;
} }
inline void FGAIBase::setMaxSpeed(double m) { inline void FGAIBase::setMaxSpeed(double m)
{
_max_speed = 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 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 * 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 * 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: * Default values:
* +---------------+-------------+------------+ * +---------------+-------------+------------+
@ -577,4 +599,3 @@ inline int FGAIBase::getCollisionLength() const
return collisionLength; return collisionLength;
} }

View file

@ -1,21 +1,9 @@
// FGAICarrier - FGAIShip-derived class creates an AI aircraft carrier /*
// * SPDX-FileName: AICarrier.cxx
// Written by David Culp, started October 2004. * SPDX-FileComment: AIShip-derived class creates an AI aircraft carrier
// - davidculp2@comcast.net * SPDX-FileCopyrightText: Written by David Culp, started October 2004 - davidculp2@comcast.net
// * SPDX-License-Identifier: GPL-2.0-or-later
// 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.
#include <config.h> #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> props = scFileNode->getChildren("parking-pos");
std::vector<SGPropertyNode_ptr>::const_iterator it; std::vector<SGPropertyNode_ptr>::const_iterator it;
for (it = props.begin(); it != props.end(); ++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 // Transform to the right coordinate frame, configuration is done in
// the usual x-back, y-right, z-up coordinates, computations // the usual x-back, y-right, z-up coordinates, computations
// in the simulation usual body x-forward, y-right, z-down coordinates // 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; _deck_altitude_ft = altitude_feet;
} }
void FGAICarrier::setSign(const string& s) { void FGAICarrier::setSign(const std::string& s) {
_sign = s; _sign = s;
} }
void FGAICarrier::setTACANChannelID(const string& id) { void FGAICarrier::setTACANChannelID(const std::string& id) {
_TACAN_channel_id = 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) double& hdng, SGVec3d& uvw)
{ {
@ -724,7 +712,7 @@ void FGAICarrier::UpdateElevator(double dt) {
void FGAICarrier::UpdateJBD(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; double step = 0;
if (launchbar_state == "Engaged"){ if (launchbar_state == "Engaged"){

View file

@ -1,22 +1,9 @@
// FGAICarrier - AIShip-derived class creates an AI aircraft carrier /*
// * SPDX-FileName: AICarrier.hxx
// Written by David Culp, started October 2004. * SPDX-FileComment: AIShip-derived class creates an AI aircraft carrier
// * SPDX-FileCopyrightText: Copyright (C) 2004 David P. Culp - davidculp2@comcast.net
// Copyright (C) 2004 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
@ -28,10 +15,10 @@
#include <simgear/emesary/Emesary.hxx> #include <simgear/emesary/Emesary.hxx>
#include "AIShip.hxx" #include "AIShip.hxx"
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIManager.hxx" #include "AIManager.hxx"
class FGAIManager; class FGAIManager;
class FGAICarrier; class FGAICarrier;
@ -41,7 +28,7 @@ public:
FGAICarrier(); FGAICarrier();
virtual ~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 readFromScenario(SGPropertyNode* scFileNode) override;
void setSign(const std::string&); void setSign(const std::string&);

View file

@ -1,22 +1,8 @@
// FGAIGroundVehicle - FGAIShip-derived class creates an AI Ground Vehicle /*
// by adding a ground following utility * SPDX-FileName: AIEscort.hxx
// * SPDX-FileCopyrightText: Written by Vivian Meazza, started August 2009 - vivian.meazza at lineone.net
// Written by Vivian Meazza, started August 2009. * SPDX-License-Identifier: GPL-2.0-or-later
// - 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.
#pragma once #pragma once
@ -33,13 +19,14 @@
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIManager.hxx" #include "AIManager.hxx"
class FGAIEscort : public FGAIShip class FGAIEscort : public FGAIShip
{ {
public: public:
FGAIEscort(); FGAIEscort();
virtual ~FGAIEscort() = default; 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; void readFromScenario(SGPropertyNode* scFileNode) override;
bool init(ModelSearchOrder searchOrder) override; bool init(ModelSearchOrder searchOrder) override;

View file

@ -1,20 +1,9 @@
// // FGAIFlightPlan - class for loading and storing AI flight plans /*
// Written by David Culp, started May 2004 * SPDX-FileName: AIFlightPlan.cxx
// - davidculp2@comcast.net * SPDX-FileComment: class for loading and storing AI flight plans
// * SPDX-FileCopyrightText: Written by David Culp, started May 2004 - davidculp2@comcast.net
// This program is free software; you can redistribute it and/or * SPDX-License-Identifier: GPL-2.0-or-later
// 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.
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include <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 "); SG_LOG(SG_AI, SG_DEBUG, "Double WP : \t" << wpt->getName() << " not added ");
} else { } else {
waypoints.push_back(wpt); 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 { } else {
waypoints.push_back(wpt); 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 // std::vector::push_back invalidates waypoints
// so we should restore wpt_iterator after push_back // so we should restore wpt_iterator after push_back

View file

@ -1,22 +1,9 @@
// FGAIGroundVehicle - FGAIShip-derived class creates an AI Ground Vehicle /*
// by adding a ground following utility * SPDX-FileName: AIGroundVehicle.hxx
// * SPDX-FileComment: AIShip-derived class creates an AI Ground Vehicle by adding a ground following utility
// Written by Vivian Meazza, started August 2009. * SPDX-FileCopyrightText: Written by Vivian Meazza, started August 2009 - vivian.meazza at lineone.net
// - vivian.meazza at lineone.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
@ -24,20 +11,22 @@
#include <string_view> #include <string_view>
#include <vector> #include <vector>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/scene/material/mat.hxx> #include <simgear/scene/material/mat.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include "AIShip.hxx" #include "AIShip.hxx"
#include "AIManager.hxx"
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIManager.hxx"
class FGAIGroundVehicle : public FGAIShip {
class FGAIGroundVehicle : public FGAIShip
{
public: public:
FGAIGroundVehicle(); FGAIGroundVehicle();
virtual ~FGAIGroundVehicle() = default; 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; void readFromScenario(SGPropertyNode* scFileNode) override;
bool init(ModelSearchOrder searchOrder) override; bool init(ModelSearchOrder searchOrder) override;
@ -77,7 +66,7 @@ private:
SGGeod _selectedpos; SGGeod _selectedpos;
bool _solid = true; // if true ground is solid for FDMs 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 _frictionFactor = 0.0; // dimensionless modifier for Coefficient of Friction
double _elevation = 0.0; double _elevation = 0.0;

View file

@ -1,22 +1,9 @@
// AIManager.cxx Based on David Luff's AIMgr: /*
// - a global management type for AI objects * SPDX-FileName: AIManager.cxx
// * SPDX-FileComment: a global management type for AI objects, based on David Luff's AIMgr
// Written by David Culp, started October 2003. * SPDX-FileCopyrightText: Written by David Culp, started October 2003 - davidculp2@comcast.net
// - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#include <algorithm> #include <algorithm>
#include <cstring> #include <cstring>
@ -263,7 +250,7 @@ SGPropertyNode_ptr FGAIManager::registerScenarioFile(SGPropertyNode_ptr root, co
} catch (sg_exception& e) { } catch (sg_exception& e) {
SG_LOG(SG_AI, SG_WARN, "Skipping malformed scenario file:" << xmlPath); SG_LOG(SG_AI, SG_WARN, "Skipping malformed scenario file:" << xmlPath);
simgear::reportFailure(simgear::LoadFailure::BadData, simgear::ErrorCode::ScenarioLoad, 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()); e.getLocation());
sNode.reset(); sNode.reset();
} }
@ -282,7 +269,7 @@ FGAIManager::postinit()
// process all scenarios // process all scenarios
for (auto n : root->getChildren("scenario")) { for (auto n : root->getChildren("scenario")) {
const string& name = n->getStringValue(); const std::string& name = n->getStringValue();
if (name.empty()) if (name.empty())
continue; continue;
@ -425,7 +412,7 @@ FGAIManager::updateLOD(SGPropertyNode* node)
void void
FGAIManager::attach(const SGSharedPtr<FGAIBase> &model) 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* root = globals->get_props()->getNode("ai/models", true);
SGPropertyNode* p; SGPropertyNode* p;
int i; int i;
@ -619,7 +606,7 @@ FGAIBasePtr FGAIManager::getObjectFromProperty(const SGPropertyNode* aProp) cons
} }
bool bool
FGAIManager::loadScenario( const string &id ) FGAIManager::loadScenario( const std::string &id )
{ {
SGPath path; SGPath path;
SGPropertyNode_ptr file = loadScenarioFile(id, path); SGPropertyNode_ptr file = loadScenarioFile(id, path);
@ -643,7 +630,7 @@ FGAIManager::loadScenario( const string &id )
bool bool
FGAIManager::unloadScenario( const string &filename) FGAIManager::unloadScenario( const std::string &filename)
{ {
auto it = _scenarios.find(filename); auto it = _scenarios.find(filename);
if (it == _scenarios.end()) { if (it == _scenarios.end()) {

View file

@ -1,22 +1,9 @@
// FGAIMultiplayer - AIBase derived class creates an AI multiplayer aircraft /*
// * SPDX-FileName: AIMultiplayer.hxx
// Written by David Culp, started October 2003. * SPDX-FileComment: AIBase derived class creates an AI multiplayer aircraft
// * SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
@ -28,12 +15,14 @@
#include "AIBase.hxx" #include "AIBase.hxx"
class FGAIMultiplayer : public FGAIBase {
class FGAIMultiplayer : public FGAIBase
{
public: public:
FGAIMultiplayer(); FGAIMultiplayer();
virtual ~FGAIMultiplayer() = default; 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; bool init(ModelSearchOrder searchOrder) override;
void bind() override; void bind() override;
void update(double dt) override; void update(double dt) override;
@ -52,7 +41,6 @@ public:
void setAllowExtrapolation(bool allowExtrapolation) void setAllowExtrapolation(bool allowExtrapolation)
{ {
mAllowExtrapolation = allowExtrapolation; mAllowExtrapolation = allowExtrapolation;
} }
bool getAllowExtrapolation(void) const bool getAllowExtrapolation(void) const
{ {
@ -104,12 +92,11 @@ public:
void clearMotionInfo(); void clearMotionInfo();
private: private:
// Automatic sorting of motion data according to its timestamp // Automatic sorting of motion data according to its timestamp
typedef std::map<double, FGExternalMotionData> MotionInfo; typedef std::map<double, FGExternalMotionData> MotionInfo;
MotionInfo mMotionInfo; 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 // and the property nodes
typedef std::map<unsigned, SGSharedPtr<SGPropertyNode>> PropertyMap; typedef std::map<unsigned, SGSharedPtr<SGPropertyNode>> PropertyMap;
PropertyMap mPropertyMap; PropertyMap mPropertyMap;
@ -126,8 +113,7 @@ private:
double tau, double tau,
SGVec3d& ecPos, SGVec3d& ecPos,
SGQuatf& ecOrient, SGQuatf& ecOrient,
SGVec3f& ecLinearVel SGVec3f& ecLinearVel);
);
// Calculates position, orientation and velocity using extrapolation from // Calculates position, orientation and velocity using extrapolation from
// *nextIt. // *nextIt.
@ -138,8 +124,7 @@ private:
bool motion_logging, bool motion_logging,
SGVec3d& ecPos, SGVec3d& ecPos,
SGQuatf& ecOrient, SGQuatf& ecOrient,
SGVec3f& ecLinearVel SGVec3f& ecLinearVel);
);
bool mTimeOffsetSet = false; bool mTimeOffsetSet = false;
bool realTime = false; bool realTime = false;

View file

@ -1,23 +1,10 @@
// FGAIShip - AIBase derived class creates an AI ship /*
// * SPDX-FileName: AIShip.hxx
// Written by David Culp, started November 2003. * SPDX-FileComment: AIBase derived class creates an AI ship
// with major amendments and additions by Vivian Meazza, 2004 - 2007 * SPDX-FileCopyrightText: Copyright (C) 2003 David P. Culp - davidculp2@comcast.net
// * SPDX-FileContributor: with major amendments and additions by Vivian Meazza, 2004 - 2007
// Copyright (C) 2003 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
@ -28,15 +15,16 @@
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIFlightPlan.hxx" #include "AIFlightPlan.hxx"
class FGAIManager; class FGAIManager;
class FGAIShip : public FGAIBase { class FGAIShip : public FGAIBase
{
public: public:
FGAIShip(object_type ot = object_type::otShip); FGAIShip(object_type ot = object_type::otShip);
virtual ~FGAIShip() = default; 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; void readFromScenario(SGPropertyNode* scFileNode) override;
bool init(ModelSearchOrder searchOrder) override; bool init(ModelSearchOrder searchOrder) override;
@ -149,4 +137,3 @@ private:
bool _fp_init; bool _fp_init;
bool _missed; bool _missed;
}; };

View file

@ -1,38 +1,24 @@
// FGAIStatic - AIBase derived class creates AI static object /*
// * SPDX-FileName: AIStatic.hxx
// Written by David Culp, started Jun 2005. * SPDX-FileComment: AIBase derived class creates AI static object
// * SPDX-FileCopyrightText: Copyright (C) 2005 David P. Culp - davidculp2@comcast.net
// Copyright (C) 2005 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
#include <string_view> #include <string_view>
#include "AIManager.hxx"
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIManager.hxx"
class FGAIStatic : public FGAIBase { class FGAIStatic : public FGAIBase
{
public: public:
FGAIStatic(); FGAIStatic();
virtual ~FGAIStatic() = default; 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; void update(double dt) override;
}; };

View file

@ -1,39 +1,26 @@
// FGAIStorm - AIBase derived class creates an AI thunderstorm /*
// * SPDX-FileName: AIStorm.hxx
// Written by David Culp, started Feb 2004. * SPDX-FileComment: AIBase derived class creates an AI thunderstorm
// * SPDX-FileCopyrightText: Copyright (C) 2004 David P. Culp - davidculp2@comcast.net
// Copyright (C) 2004 David P. Culp - davidculp2@comcast.net * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
#include <string> #include <string>
#include <string_view> #include <string_view>
#include "AIManager.hxx"
#include "AIBase.hxx" #include "AIBase.hxx"
#include "AIManager.hxx"
class FGAIStorm : public FGAIBase { class FGAIStorm : public FGAIBase
{
public: public:
FGAIStorm(); FGAIStorm();
virtual ~FGAIStorm() = default; 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 readFromScenario(SGPropertyNode* scFileNode) override;
void update(double dt) override; void update(double dt) override;

View file

@ -1,21 +1,10 @@
// AISwiftAircraft.h - Derived AIBase class for swift aircraft /*
// * SPDX-FileName: AISwiftAircraft.h
// Copyright (C) 2020 - swift Project Community / Contributors (http://swift-project.org/) * SPDX-FileComment: Derived AIBase class for swift aircraft
// Written by Lars Toenning <dev@ltoenning.de> started on April 2020. * 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/)
// This program is free software; you can redistribute it and/or * SPDX-License-Identifier: GPL-2.0-or-later
// 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.
#pragma once #pragma once
@ -25,11 +14,12 @@
#include "AIBaseAircraft.hxx" #include "AIBaseAircraft.hxx"
struct AircraftTransponder
{ struct AircraftTransponder {
AircraftTransponder(std::string callsign, int code, bool modeC, bool ident) AircraftTransponder(std::string callsign, int code, bool modeC, bool ident)
: callsign(std::move(callsign)), code(code), modeC(modeC), ident(ident) : callsign(std::move(callsign)), code(code), modeC(modeC), ident(ident)
{} {
}
std::string callsign; std::string callsign;
int code; int code;
@ -37,8 +27,7 @@ struct AircraftTransponder
bool ident; bool ident;
}; };
struct AircraftSurfaces struct AircraftSurfaces {
{
AircraftSurfaces(std::string callsign, double gear, double flaps, double spoilers, double speedBrake, double slats, double wingSweeps, 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, double thrust, double elevator, double rudder, double aileron, bool landingLight, bool taxiLight, bool beaconLight,
bool strobeLight, bool navLight, int lightPattern) bool strobeLight, bool navLight, int lightPattern)
@ -71,7 +60,7 @@ public:
FGAISwiftAircraft(const std::string& callsign, const std::string& modelString); FGAISwiftAircraft(const std::string& callsign, const std::string& modelString);
virtual ~FGAISwiftAircraft() = default; virtual ~FGAISwiftAircraft() = default;
string_view getTypeString() const override { return "swift"; } std::string_view getTypeString() const override { return "swift"; }
void update(double dt) override; 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);

View file

@ -1,23 +1,10 @@
// AITanker.hxx Based on David Culp's AIModel code /*
// - Tanker specific code isolated from AI Aircraft code * SPDX-FileName: AITanker.hxx
// by Thomas Foerster, started June 2007 * 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
// Original code written by David Culp, started October 2003. * SPDX-License-Identifier: GPL-2.0-or-later
// - 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.
#pragma once #pragma once
@ -25,6 +12,7 @@
#include "AIAircraft.hxx" #include "AIAircraft.hxx"
/** /**
* An AI tanker for air-air refueling. * An AI tanker for air-air refueling.
* *
@ -35,12 +23,13 @@
* @author Thomas F<EFBFBD>ster <t.foerster@biologie.hu-berlin.de> * @author Thomas F<EFBFBD>ster <t.foerster@biologie.hu-berlin.de>
*/ */
class FGAITanker : public FGAIAircraft { class FGAITanker : public FGAIAircraft
{
public: public:
FGAITanker(FGAISchedule* ref = 0); FGAITanker(FGAISchedule* ref = 0);
virtual ~FGAITanker() = default; 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 readFromScenario(SGPropertyNode* scFileNode) override;
void bind() override; void bind() override;

View file

@ -1,24 +1,9 @@
// FGAIThermal - FGAIBase-derived class creates an AI thermal /*
// * SPDX-FileName: AIThermal.hxx
// Original by Written by David Culp * 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 )
// An attempt to refine the thermal shape and behaviour by WooT 2009 * SPDX-License-Identifier: GPL-2.0-or-later
// */
// 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.
#pragma once #pragma once
@ -30,13 +15,13 @@
#include <string> #include <string>
class FGAIThermal : public FGAIBase { class FGAIThermal : public FGAIBase
{
public: public:
FGAIThermal(); FGAIThermal();
virtual ~FGAIThermal() = default; 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; void readFromScenario(SGPropertyNode* scFileNode) override;
bool init(ModelSearchOrder searchOrder) override; bool init(ModelSearchOrder searchOrder) override;

View file

@ -1,21 +1,9 @@
// FGAIWingman - FGAIBllistic-derived class creates an AI Wingman /*
// * SPDX-FileName: AIWingman.hxx
// Written by Vivian Meazza, started February 2008. * SPDX-FileComment: AIBllistic-derived class creates an AI Wingman
// - vivian.meazza at lineone.net * SPDX-FileCopyrightText: Written by Vivian Meazza, started February 2008 - vivian.meazza at lineone.net
// * SPDX-License-Identifier: GPL-2.0-or-later
// 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.
#pragma once #pragma once
@ -28,12 +16,13 @@
#include "AIManager.hxx" #include "AIManager.hxx"
class FGAIWingman : public FGAIBallistic { class FGAIWingman : public FGAIBallistic
{
public: public:
FGAIWingman(); FGAIWingman();
virtual ~FGAIWingman() = default; 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; void readFromScenario(SGPropertyNode* scFileNode) override;
bool init(ModelSearchOrder searchOrder) override; bool init(ModelSearchOrder searchOrder) override;
@ -84,41 +73,50 @@ private:
inline SGVec3d getCartInPos(SGGeod in_pos) const; inline SGVec3d getCartInPos(SGGeod in_pos) const;
}; };
void FGAIWingman::setFormate(bool f) { void FGAIWingman::setFormate(bool f)
{
_formate_to_ac = f; _formate_to_ac = f;
} }
void FGAIWingman::setTgtHdg(double h) { void FGAIWingman::setTgtHdg(double h)
{
tgt_heading = h; tgt_heading = h;
} }
void FGAIWingman::setTgtSpd(double s) { void FGAIWingman::setTgtSpd(double s)
{
tgt_speed = s; tgt_speed = s;
} }
void FGAIWingman::setBrkHdg(double a){ void FGAIWingman::setBrkHdg(double a)
{
tgt_heading = hdg + a; tgt_heading = hdg + a;
SG_NORMALIZE_RANGE(tgt_heading, 0.0, 360.0); SG_NORMALIZE_RANGE(tgt_heading, 0.0, 360.0);
} }
void FGAIWingman::setBrkAng(double a){ void FGAIWingman::setBrkAng(double a)
{
_break_angle = a; _break_angle = a;
SG_NORMALIZE_RANGE(_break_angle, -180.0, 180.0); SG_NORMALIZE_RANGE(_break_angle, -180.0, 180.0);
} }
void FGAIWingman::setCoeffHdg(double h){ void FGAIWingman::setCoeffHdg(double h)
{
_coeff_hdg = h; _coeff_hdg = h;
} }
void FGAIWingman::setCoeffPch(double p){ void FGAIWingman::setCoeffPch(double p)
{
_coeff_pch = p; _coeff_pch = p;
} }
void FGAIWingman::setCoeffBnk(double b){ void FGAIWingman::setCoeffBnk(double b)
{
_coeff_bnk = b; _coeff_bnk = b;
} }
void FGAIWingman::setCoeffSpd(double s){ void FGAIWingman::setCoeffSpd(double s)
{
_coeff_spd = s; _coeff_spd = s;
} }
@ -138,7 +136,8 @@ void FGAIWingman::setCoeffSpd(double s){
// return _break_angle; // return _break_angle;
//} //}
SGVec3d FGAIWingman::getCartInPos(SGGeod in_pos) const { SGVec3d FGAIWingman::getCartInPos(SGGeod in_pos) const
{
SGVec3d cartPos = SGVec3d::fromGeod(in_pos); SGVec3d cartPos = SGVec3d::fromGeod(in_pos);
return cartPos; return cartPos;
} }