#include <simgear/misc/sg_path.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/structure/SGReferenced.hxx>
#include <simgear/misc/sg_path.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/structure/SGReferenced.hxx>
enum object_type { otNull = 0, otAircraft, otShip, otCarrier, otBallistic,
otRocket, otStorm, otThermal, otStatic, otWingman, otGroundVehicle,
otEscort, otMultiplayer,
enum object_type { otNull = 0, otAircraft, otShip, otCarrier, otBallistic,
otRocket, otStorm, otThermal, otStatic, otWingman, otGroundVehicle,
otEscort, otMultiplayer,
SGVec3d getCartPos() const;
bool getGroundElevationM(const SGGeod& pos, double& elev,
SGVec3d getCartPos() const;
bool getGroundElevationM(const SGGeod& pos, double& elev,
+ /**
+ * Tied-properties helper, record nodes which are tied for easy un-tie-ing
+ */
+ template <typename T>
+ void tie(const char* aRelPath, const SGRawValue<T>& aRawValue)
+ {
+ _tiedProperties.Tie(props->getNode(aRelPath, true), aRawValue);
+ }
+
+ simgear::TiedPropertyList _tiedProperties;
SGPropertyNode_ptr _selected_ac;
SGPropertyNode_ptr props;
SGPropertyNode_ptr trigger_node;
SGPropertyNode_ptr _selected_ac;
SGPropertyNode_ptr props;
SGPropertyNode_ptr trigger_node;
- SGGeod pos; // WGS84 lat & lon in degrees, elev above sea-level in meters
- double hdg; // True heading in degrees
- double roll; // degrees, left is negative
- double pitch; // degrees, nose-down is negative
+ SGGeod pos; // WGS84 lat & lon in degrees, elev above sea-level in meters
+ double hdg; // True heading in degrees
+ double roll; // degrees, left is negative
+ double pitch; // degrees, nose-down is negative
double speed; // knots true airspeed
double altitude_ft; // feet above sea level
double vs; // vertical speed, feet per minute
double speed; // knots true airspeed
double altitude_ft; // feet above sea level
double vs; // vertical speed, feet per minute
double x_shift; // value used by radar display instrument
double y_shift; // value used by radar display instrument
double rotation; // value used by radar display instrument
double x_shift; // value used by radar display instrument
double y_shift; // value used by radar display instrument
double rotation; // value used by radar display instrument
- FGAIModelData(SGPropertyNode *root = 0)
- : _nasal( new FGNasalModelData(root) ),
- _path("") {};
- ~FGAIModelData() {
- delete _nasal;
- };
+ FGAIModelData(SGPropertyNode *root = 0);
+ ~FGAIModelData();
+
+ /** osg callback, thread-safe */
- inline string& get_sound_path() { return _path; };
+
+ /** init hook to be called after model is loaded.
+ * Not thread-safe. Call from main thread only. */
+ void init(void) { _initialized = true; }
+
+ bool needInitilization(void) { return _ready && !_initialized;}
+ bool isInitialized(void) { return _initialized;}
+ inline std::string& get_sound_path() { return _fxpath;}