X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIStorm.hxx;h=f6a7e9018da12337d48ba94b5d90eef3691cac9e;hb=d035fdf3a949e62f0c8e772e100d14087b6d4ba9;hp=2f8d45feb7cf8eb4bb15fc7836b38b04c259a6fd;hpb=ed4509d8b5ad725a19b91bcfb841c56c2aa9de61;p=flightgear.git diff --git a/src/AIModel/AIStorm.hxx b/src/AIModel/AIStorm.hxx index 2f8d45feb..f6a7e9018 100644 --- a/src/AIModel/AIStorm.hxx +++ b/src/AIModel/AIStorm.hxx @@ -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 @@ -25,28 +25,53 @@ #include "AIBase.hxx" #include -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"; } -protected: - static FGAIStorm *_self; - 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; + };