]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIStorm.hxx
Optimise NavCache airport query
[flightgear.git] / src / AIModel / AIStorm.hxx
index 6e72393f55e6ccf633210e50d7e7d6238dad402f..f6a7e9018da12337d48ba94b5d90eef3691cac9e 100644 (file)
@@ -16,7 +16,7 @@
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 #ifndef _FG_AIStorm_HXX
 #define _FG_AIStorm_HXX
 #include "AIBase.hxx"
 
 #include <string>
-SG_USING_STD(string);
+using std::string;
 
 
 class FGAIStorm : public FGAIBase {
 
 public:
 
-       FGAIStorm(FGAIManager* mgr);
+       FGAIStorm();
        ~FGAIStorm();
        
-       bool init();
+        void readFromScenario(SGPropertyNode* scFileNode);
+
+       virtual bool init(bool search_in_AI_path=false);
         virtual void bind();
         virtual void unbind();
-       void update(double dt);
+       virtual void update(double dt);
+        inline void setStrengthNorm( double s ) { strength_norm = s; };
+        inline void setDiameter( double d ) { diameter = d; };
+        inline void setHeight( double h ) { height = h; };
+        inline double getStrengthNorm() const { return strength_norm; };
+        inline double getDiameter() const { return diameter; };
+        inline double getHeight() const { return height; };
+
+        virtual const char* getTypeString(void) const { return "thunderstorm"; }
 
 private:
 
-        double dt; 
+        double diameter;      // diameter of turbulence zone, in nm
+        double height;        // top of turbulence zone, in feet MSL
+        double strength_norm; // strength of turbulence
        void Run(double dt);
+
+        // lightning stuff
+        double delay;   // average time (sec) between lightning flashes
+        int subflashes; // number of subflashes per flash
+        double random_delay;  // delay +/- random number
+        double timer;
+        SGPropertyNode_ptr flash_node;
+        int flashed;    // number of subflashes already done this flash
+        bool flashing;  // true if currently flashing;
+        int subflash_array[8];
+        int subflash_index;
+
+        // turbulence stuff
+        SGPropertyNode_ptr turb_mag_node;
+        SGPropertyNode_ptr turb_rate_node;
+
 };