#include <simgear/constants.h>
#include <simgear/math/SGMath.hxx>
#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 <simgear/math/sg_geodesy.hxx>
-
#include <Main/fg_props.hxx>
class SGMaterial;
class FGAIManager;
class FGAIFlightPlan;
+class FGFX;
+class FGNasalModelData;
+class FGAIModelData; // defined below
+
class FGAIBase : public SGReferenced {
otEscort, otMultiplayer,
MAX_OBJECTS }; // Needs to be last!!!
- FGAIBase(object_type ot);
+ FGAIBase(object_type ot, bool enableHot);
virtual ~FGAIBase();
virtual void readFromScenario(SGPropertyNode* scFileNode);
virtual void unbind();
virtual void reinit() {}
+ void updateLOD();
void setManager(FGAIManager* mgr, SGPropertyNode* p);
void setPath( const char* model );
void setSMPath( const string& p );
string _path;
string _callsign;
string _submodel;
- string _name;
+ std::string _name;
string _parent;
SGGeod userpos;
double ht_diff; // value used by radar display instrument
string model_path; //Path to the 3D model
- osg::ref_ptr<osg::Node> model; //The 3D model object
SGModelPlacement aip;
bool delete_me;
void CalculateMach();
double UpdateRadar(FGAIManager* manager);
+ void removeModel();
+
static int _newAIModelID();
private:
int _refID;
object_type _otype;
bool _initialized;
+ osg::ref_ptr<osg::LOD> _model; //The 3D model LOD object
+
+ osg::ref_ptr<FGAIModelData> _aimodel;
+
+ string _fxpath;
+ SGSharedPtr<FGFX> _fx;
public:
object_type getType();
inline double _getRange() { return range; };
inline double _getBearing() { return bearing; };
- virtual osg::Node* load3DModel(const string &path,
- SGPropertyNode *prop_root);
-
static bool _isNight();
+
+ string & getCallSign();
};
inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) {
inline void FGAIBase::setCallSign(const string& s) {
_callsign = s;
}
+inline string& FGAIBase::getCallSign() {
+ return _callsign;
+}
+
inline void FGAIBase::setXoffset(double x) {
_x_offset = x;
}
_max_speed = m;
}
+
+class FGAIModelData : public simgear::SGModelData {
+public:
+ FGAIModelData(SGPropertyNode *root = 0);
+ ~FGAIModelData();
+ void modelLoaded(const string& path, SGPropertyNode *prop, osg::Node *n);
+ inline string& get_sound_path() { return _path; };
+
+private:
+ FGNasalModelData *_nasal;
+ string _path;
+};
+
#endif // _FG_AIBASE_HXX