#define _FG_AIBASE_HXX
#include <string>
+#include <osg/ref_ptr>
#include <simgear/constants.h>
#include <simgear/scene/model/placement.hxx>
-#include <simgear/scene/model/modellib.hxx>
#include <simgear/misc/sg_path.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/structure/SGReferenced.hxx>
#include <Main/fg_props.hxx>
-
-using std::string;
+namespace osg { class PagedLOD; }
namespace simgear {
class BVHMaterial;
class FGAIManager;
class FGAIFlightPlan;
class FGFX;
-class FGNasalModelDataProxy;
class FGAIModelData; // defined below
virtual void readFromScenario(SGPropertyNode* scFileNode);
virtual bool init(bool search_in_AI_path=false);
- virtual void initModel(osg::Node *node);
+ virtual void initModel();
virtual void update(double dt);
virtual void bind();
virtual void unbind();
void updateLOD();
void setManager(FGAIManager* mgr, SGPropertyNode* p);
void setPath( const char* model );
- void setSMPath( const string& p );
- void setCallSign(const string& );
+ void setSMPath( const std::string& p );
+ void setCallSign(const std::string& );
void setSpeed( double speed_KTAS );
void setAltitude( double altitude_ft );
void setAltitudeAGL( double altitude_agl_ft );
void setImpactLat( double lat );
void setImpactLon( double lon );
void setImpactElev( double e );
- void setParentName(const string& p);
- void setName(const string& n);
+ void setParentName(const std::string& p);
+ void setName(const std::string& n);
void setMaxSpeed(double kts);
void calcRangeBearing(double lat, double lon, double lat2, double lon2,
bool getGroundElevationM(const SGGeod& pos, double& elev,
const simgear::BVHMaterial** material) const;
- double _elevation_m;
double _getCartPosX() const;
double _getCartPosY() const;
double _getCartPosZ() const;
+
+protected:
+ double _elevation_m;
+
double _x_offset;
double _y_offset;
double _z_offset;
-
+
double _pitch_offset;
double _roll_offset;
double _yaw_offset;
-
+
double _max_speed;
-
- string _path;
- string _callsign;
- string _submodel;
+
+ std::string _path;
+ std::string _callsign;
+ std::string _submodel;
std::string _name;
- string _parent;
-
- SGGeod userpos;
-
-
-protected:
+ std::string _parent;
+
/**
* Tied-properties helper, record nodes which are tied for easy un-tie-ing
*/
double rotation; // value used by radar display instrument
double ht_diff; // value used by radar display instrument
- string model_path; //Path to the 3D model
+ std::string model_path; //Path to the 3D model
SGModelPlacement aip;
bool delete_me;
int _refID;
object_type _otype;
bool _initialized;
- osg::ref_ptr<osg::LOD> _model; //The 3D model LOD object
+ osg::ref_ptr<osg::PagedLOD> _model;
osg::ref_ptr<FGAIModelData> _modeldata;
void _setLongitude( double longitude );
void _setLatitude ( double latitude );
void _setSubID( int s );
- void _setUserPos();
double _getAltitudeAGL(SGGeod inpos, double start);
static bool _isNight();
- string & getCallSign();
+ std::string & getCallSign();
};
inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) {
model_path.append(model);
}
-inline void FGAIBase::setSMPath(const string& p) {
+inline void FGAIBase::setSMPath(const std::string& p) {
_path = p;
}
pos.setLatitudeDeg( latitude );
}
-inline void FGAIBase::setCallSign(const string& s) {
+inline void FGAIBase::setCallSign(const std::string& s) {
_callsign = s;
}
-inline string& FGAIBase::getCallSign() {
+inline std::string& FGAIBase::getCallSign() {
return _callsign;
}
_yaw_offset = y;
}
-inline void FGAIBase::setParentName(const string& p) {
+inline void FGAIBase::setParentName(const std::string& p) {
_parent = p;
}
-inline void FGAIBase::setName(const string& n) {
+inline void FGAIBase::setName(const std::string& n) {
_name = n;
}
}
-class FGAIModelData : public simgear::SGModelData {
-public:
- FGAIModelData(SGPropertyNode *root = 0);
- ~FGAIModelData();
-
- /** osg callback, thread-safe */
- void modelLoaded(const string& path, SGPropertyNode *prop, osg::Node *n);
-
- /** 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;}
-
-private:
- FGNasalModelDataProxy *_nasal;
- std::string _fxpath;
- bool _ready;
- bool _initialized;
-};
-
#endif // _FG_AIBASE_HXX