#define _FGFDM_HPP
#include <simgear/xml/easyxml.hxx>
+#include <simgear/props/props.hxx>
#include "Airplane.hpp"
#include "Vector.hpp"
~FGFDM();
void init();
void iterate(float dt);
+ void getExternalInput(float dt=1e6);
Airplane* getAirplane();
// XML parsing callback from XMLVisitor
virtual void startElement(const char* name, const XMLAttributes &atts);
+ float getVehicleRadius(void) const { return _vehicle_radius; }
+
private:
struct AxisRec { char* name; int handle; };
- struct EngRec { char* prefix; void* eng; };
+ struct EngRec { char* prefix; Thruster* eng; };
struct WeightRec { char* prop; float size; int handle; };
+ struct PropOut { SGPropertyNode* prop; int handle, type; bool left;
+ float min, max; };
- void getExternalInput(float dt);
- void setOutputProperties();
+ void setOutputProperties(float dt);
+ Rotor* parseRotor(XMLAttributes* a, const char* name);
Wing* parseWing(XMLAttributes* a, const char* name);
int parseAxis(const char* name);
int parseOutput(const char* name);
void parseWeight(XMLAttributes* a);
+ void parseTurbineEngine(XMLAttributes* a);
+ void parsePistonEngine(XMLAttributes* a);
void parsePropeller(XMLAttributes* a);
bool eq(const char* a, const char* b);
+ bool caseeq(const char* a, const char* b);
char* dup(const char* s);
int attri(XMLAttributes* atts, char* attr);
int attri(XMLAttributes* atts, char* attr, int def);
float attrf(XMLAttributes* atts, char* attr);
float attrf(XMLAttributes* atts, char* attr, float def);
+ bool attrb(XMLAttributes* atts, char* attr);
// The core Airplane object we manage.
Airplane _airplane;
+ // Aerodynamic turbulence model
+ Turbulence* _turb;
+
// The list of "axes" that we expect to find as input. These are
// typically property names.
Vector _axes;
Vector _weights;
// Engine types. Contains an EngRec structure.
- Vector _jets;
- Vector _pistons;
+ Vector _thrusters;
+
+ // Output properties for the ControlMap
+ Vector _controlProps;
+
+ // Radius of the vehicle, for intersection testing.
+ float _vehicle_radius;
// Parsing temporaries
void* _currObj;