X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIBase.hxx;h=726ce303bef95d5d008609686c5d2757b84b7cd5;hb=04395fa9a5e2e1fe82652666252f597f51de3ebd;hp=80a93c206b11d74a23510e1c53c29ffa9b9ab5c5;hpb=29afc299fd1a38ec2e1943307a560e11afe7a533;p=flightgear.git diff --git a/src/AIModel/AIBase.hxx b/src/AIModel/AIBase.hxx index 80a93c206..726ce303b 100644 --- a/src/AIModel/AIBase.hxx +++ b/src/AIModel/AIBase.hxx @@ -43,6 +43,7 @@ using std::list; class SGMaterial; class FGAIManager; class FGAIFlightPlan; +class FGFX; class FGAIBase : public SGReferenced { @@ -52,7 +53,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 +65,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 +135,7 @@ public: string _path; string _callsign; string _submodel; - string _name; + std::string _name; string _parent; SGGeod userpos; @@ -186,13 +188,13 @@ 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; bool invisible; bool no_roll; bool serviceable; + bool _installed; int _subID; double life; @@ -215,12 +217,16 @@ 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 + SGSharedPtr _fx; public: object_type getType(); @@ -299,10 +305,9 @@ 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(); }; inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) { @@ -363,6 +368,10 @@ inline void FGAIBase::setLatitude ( double latitude ) { inline void FGAIBase::setCallSign(const string& s) { _callsign = s; } +inline string& FGAIBase::getCallSign() { + return _callsign; +} + inline void FGAIBase::setXoffset(double x) { _x_offset = x; }