From ac146f565878ed457a2e11763ff00800a289d1f8 Mon Sep 17 00:00:00 2001 From: James Turner Date: Tue, 5 Jan 2016 20:58:47 -0600 Subject: [PATCH] Remove dt member of AIAircraft --- src/AIModel/AIAircraft.cxx | 38 ++++++++++++++++++++------------------ src/AIModel/AIAircraft.hxx | 13 ++++++------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/AIModel/AIAircraft.cxx b/src/AIModel/AIAircraft.cxx index c6276a102..836550afb 100644 --- a/src/AIModel/AIAircraft.cxx +++ b/src/AIModel/AIAircraft.cxx @@ -31,6 +31,7 @@ #include
#include +#include #include #include @@ -101,7 +102,6 @@ FGAIAircraft::FGAIAircraft(FGAISchedule *ref) : SG_LOG(SG_AI, SG_ALERT, "no performance DB found"); } - dt = 0; takeOffStatus = 0; trackCache.remainingLength = 0; @@ -163,12 +163,11 @@ void FGAIAircraft::setPerformance(const std::string& acType, const std::string& } #endif - void FGAIAircraft::Run(double dt) { - FGAIAircraft::dt = dt; - - bool outOfSight = false, + void FGAIAircraft::Run(double dt) +{ + bool outOfSight = false, flightplanActive = true; - updatePrimaryTargetValues(flightplanActive, outOfSight); // target hdg, alt, speed + updatePrimaryTargetValues(dt, flightplanActive, outOfSight); // target hdg, alt, speed if (outOfSight) { return; } @@ -177,9 +176,9 @@ void FGAIAircraft::setPerformance(const std::string& acType, const std::string& groundTargetSpeed = 0; } - handleATCRequests(); // ATC also has a word to say - updateSecondaryTargetValues(); // target roll, vertical speed, pitch - updateActualState(); + handleATCRequests(dt); // ATC also has a word to say + updateSecondaryTargetValues(dt); // target roll, vertical speed, pitch + updateActualState(dt); #if 0 // 25/11/12 - added but disabled, since setting properties isn't // affecting the AI-model as expected. @@ -999,11 +998,12 @@ void FGAIAircraft::controlSpeed(FGAIWaypoint* curr, FGAIWaypoint* next) { /** * Update target values (heading, alt, speed) depending on flight plan or control properties */ -void FGAIAircraft::updatePrimaryTargetValues(bool& flightplanActive, bool& aiOutOfSight) { +void FGAIAircraft::updatePrimaryTargetValues(double dt, bool& flightplanActive, bool& aiOutOfSight) { if (fp) // AI object has a flightplan { //TODO make this a function of AIBase - time_t now = time(NULL) + fgGetLong("/sim/time/warp"); + time_t now = globals->get_time_params()->get_cur_time(); + //cerr << "UpateTArgetValues() " << endl; ProcessFlightPlan(dt, now); @@ -1061,7 +1061,7 @@ void FGAIAircraft::updatePrimaryTargetValues(bool& flightplanActive, bool& aiOut } } -void FGAIAircraft::updateHeading() { +void FGAIAircraft::updateHeading(double dt) { // adjust heading based on current bank angle if (roll == 0.0) roll = 0.01; @@ -1195,7 +1195,7 @@ void FGAIAircraft::updateBankAngleTarget() { } -void FGAIAircraft::updateVerticalSpeedTarget() { +void FGAIAircraft::updateVerticalSpeedTarget(double dt) { // adjust target Altitude, based on ground elevation when on ground if (onGround()) { getGroundElev(dt); @@ -1258,7 +1258,8 @@ const string& FGAIAircraft::atGate() return empty; } -void FGAIAircraft::handleATCRequests() { +void FGAIAircraft::handleATCRequests(double dt) +{ //TODO implement NullController for having no ATC to save the conditionals if (controller) { controller->updateAircraftInformation(getID(), @@ -1279,7 +1280,8 @@ void FGAIAircraft::handleATCRequests() { } } -void FGAIAircraft::updateActualState() { +void FGAIAircraft::updateActualState(double dt) +{ //update current state //TODO have a single tgt_speed and check speed limit on ground on setting tgt_speed double distance = speed * SG_KT_TO_MPS * dt; @@ -1291,7 +1293,7 @@ void FGAIAircraft::updateActualState() { else speed = _performance->actualSpeed(this, (tgt_speed *speedFraction), dt, false); //assertSpeed(speed); - updateHeading(); + updateHeading(dt); roll = _performance->actualBankAngle(this, tgt_roll, dt); // adjust altitude (meters) based on current vertical speed (fpm) @@ -1302,10 +1304,10 @@ void FGAIAircraft::updateActualState() { pitch = _performance->actualPitch(this, tgt_pitch, dt); } -void FGAIAircraft::updateSecondaryTargetValues() { +void FGAIAircraft::updateSecondaryTargetValues(double dt) { // derived target state values updateBankAngleTarget(); - updateVerticalSpeedTarget(); + updateVerticalSpeedTarget(dt); updatePitchAngleTarget(); //TODO calculate wind correction angle (tgt_yaw) diff --git a/src/AIModel/AIAircraft.hxx b/src/AIModel/AIAircraft.hxx index a3bb4d6d2..9b804f90c 100644 --- a/src/AIModel/AIAircraft.hxx +++ b/src/AIModel/AIAircraft.hxx @@ -129,7 +129,6 @@ private: double speedFraction; double groundTargetSpeed; double groundOffset; - double dt; bool use_perf_vs; SGPropertyNode_ptr refuel_node; @@ -147,16 +146,16 @@ private: void controlSpeed(FGAIWaypoint* curr, FGAIWaypoint* next); - void updatePrimaryTargetValues(bool& flightplanActive, bool& aiOutOfSight); + void updatePrimaryTargetValues(double dt, bool& flightplanActive, bool& aiOutOfSight); - void updateSecondaryTargetValues(); - void updateHeading(); + void updateSecondaryTargetValues(double dt); + void updateHeading(double dt); void updateBankAngleTarget(); - void updateVerticalSpeedTarget(); + void updateVerticalSpeedTarget(double dt); void updatePitchAngleTarget(); - void updateActualState(); + void updateActualState(double dt); void updateModelProperties(double dt); - void handleATCRequests(); + void handleATCRequests(double dt); inline bool isStationary() { return ((fabs(speed)<=0.0001)&&(fabs(tgt_speed)<=0.0001));} inline bool needGroundElevation() { if (!isStationary()) _needsGroundElevation=true;return _needsGroundElevation;} -- 2.39.5