00001 #ifndef FLOCKANIMATORTORNADO_H
00002 #define FLOCKANIMATORTORNADO_H
00003
00004 #include "irrlicht.h"
00005
00006 class Boid;
00007
00009
00014 class FlockAnimatorTornado : public irr::scene::ISceneNodeAnimator
00015 {
00016 public:
00017
00021 FlockAnimatorTornado(irr::IrrlichtDevice* d);
00022
00024 ~FlockAnimatorTornado();
00025
00035 void animateNode(irr::scene::ISceneNode* node, irr::u32 timeMs);
00036
00037 protected:
00038
00039 private:
00040
00041 irr::f32 getWindStrength(irr::f32 altitude);
00042 irr::core::vector3df getWindVelocity(irr::core::vector3df location, irr::u32 timeMs);
00043 irr::core::vector3df getForce(Boid* b, irr::u32 timeMs);
00044
00045 irr::IrrlichtDevice* device;
00046 irr::f32 mass;
00047 irr::f32 halfRhoSref;
00048 irr::f32 pi;
00049 irr::f32 oneOverTwoPi;
00050 irr::f32 fluidDensity;
00051 irr::f32 gravitationalAccel;
00052 irr::f32 strength_0;
00053 irr::f32 strength_500;
00054 irr::core::vector3df stormCenter;
00055 };
00056
00057 #endif // FLOCKANIMATORTORNADO_H