X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIBase.hxx;h=f09a96e00fee8cbe8cf68afec0a40cee8cbc1fad;hb=f89ad9baf0f72d613c755f4fb3704f57ff7ef973;hp=fa68074012da14be211c01c6e64caf0b17414cc6;hpb=808c4c635d9d07f812041169d4b30257fd80742f;p=flightgear.git diff --git a/src/AIModel/AIBase.hxx b/src/AIModel/AIBase.hxx index fa6807401..f09a96e00 100644 --- a/src/AIModel/AIBase.hxx +++ b/src/AIModel/AIBase.hxx @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -33,7 +34,6 @@ #include - #include
@@ -43,6 +43,10 @@ using std::list; class SGMaterial; class FGAIManager; class FGAIFlightPlan; +class FGFX; +class FGNasalModelData; +class FGAIModelData; // defined below + class FGAIBase : public SGReferenced { @@ -52,7 +56,7 @@ public: 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); @@ -64,6 +68,7 @@ public: virtual void unbind(); virtual void reinit() {} + void updateLOD(); void setManager(FGAIManager* mgr, SGPropertyNode* p); void setPath( const char* model ); void setSMPath( const string& p ); @@ -133,7 +138,7 @@ public: string _path; string _callsign; string _submodel; - string _name; + std::string _name; string _parent; SGGeod userpos; @@ -186,7 +191,6 @@ protected: double ht_diff; // value used by radar display instrument string model_path; //Path to the 3D model - osg::ref_ptr model; //The 3D model object SGModelPlacement aip; bool delete_me; @@ -216,12 +220,20 @@ protected: void CalculateMach(); double UpdateRadar(FGAIManager* manager); + void removeModel(); + static int _newAIModelID(); private: int _refID; object_type _otype; bool _initialized; + osg::ref_ptr _model; //The 3D model LOD object + + FGAIModelData* _aimodel; + + string _fxpath; + SGSharedPtr _fx; public: object_type getType(); @@ -300,9 +312,6 @@ public: 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(); @@ -439,4 +448,17 @@ inline void FGAIBase::setMaxSpeed(double m) { _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