//
// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#ifdef HAVE_CONFIG_H
# include <config.h>
#include "AIBallistic.hxx"
-FGAIBallistic::FGAIBallistic(FGAIManager* mgr) {
- manager = mgr;
- _type_str = "ballistic";
- _otype = otBallistic;
+FGAIBallistic::FGAIBallistic() : FGAIBase(otBallistic) {
drag_area = 0.007;
life_timer = 0.0;
gravity = 32;
// buoyancy = 64;
no_roll = false;
+ aero_stabilised = false;
}
FGAIBallistic::~FGAIBallistic() {
}
+void FGAIBallistic::readFromScenario(SGPropertyNode* scFileNode) {
+ if (!scFileNode)
+ return;
+
+ FGAIBase::readFromScenario(scFileNode);
+
+ setAzimuth(scFileNode->getDoubleValue("azimuth", 0.0));
+ setElevation(scFileNode->getDoubleValue("elevation", 0.0));
+ setDragArea(scFileNode->getDoubleValue("eda", 0.007));
+ setLife(scFileNode->getDoubleValue("life", 900.0));
+ setBuoyancy(scFileNode->getDoubleValue("buoyancy", 0));
+ setWind_from_east(scFileNode->getDoubleValue("wind_from_east", 0));
+ setWind_from_north(scFileNode->getDoubleValue("wind_from_north", 0));
+ setWind(scFileNode->getBoolValue("wind", false));
+ setRoll(scFileNode->getDoubleValue("roll", 0.0));
+ setCd(scFileNode->getDoubleValue("cd", 0.029));
+ setMass(scFileNode->getDoubleValue("mass", 0.007));
+ setStabilisation(scFileNode->getBoolValue("aero_stabilized", false));
+}
bool FGAIBallistic::init() {
FGAIBase::init();
- aero_stabilized = true;
hdg = azimuth;
pitch = elevation;
roll = rotation;
rotation = rl;
}
-void FGAIBallistic::setStabilization(bool val) {
- aero_stabilized = val;
+void FGAIBallistic::setStabilisation(bool val) {
+ aero_stabilised = val;
}
void FGAIBallistic::setDragArea(double a) {
pos.setelev(altitude * SG_FEET_TO_METER);
// recalculate pitch (velocity vector) if aerostabilized
- if (aero_stabilized) pitch = atan2( vs, hs ) * SG_RADIANS_TO_DEGREES;
+ // cout << "aero_stabilised " << aero_stabilised << endl ;
+ if (aero_stabilised) pitch = atan2( vs, hs ) * SG_RADIANS_TO_DEGREES;
// recalculate total speed
speed = sqrt( vs * vs + hs * hs);