]> git.mxchange.org Git - simgear.git/commitdiff
Add a method to set particle wind using from heading (deg) and speed (kt)
authorCutis L. Olson <curt@stinson.flightgear.org>
Fri, 23 Jul 2010 14:01:49 +0000 (09:01 -0500)
committerCutis L. Olson <curt@stinson.flightgear.org>
Fri, 23 Jul 2010 14:01:49 +0000 (09:01 -0500)
simgear/scene/model/particles.cxx
simgear/scene/model/particles.hxx

index 08037900a4c51dddc335efd0512b010bd3004ebd..acac7dfc6b8696724f42b4c6125df048ce97fab8 100644 (file)
@@ -62,11 +62,13 @@ void GlobalParticleCallback::operator()(osg::Node* node, osg::NodeVisitor* nv)
     osg::Matrix om(toOsg(q));
     osg::Vec3 v(0,0,9.81);
     gravity = om.preMult(v);
+    // NOTE: THIS WIND COMPUTATION DOESN'T SEEM TO AFFECT PARTICLES
     const osg::Vec3& zUpWind = Particles::getWindVector();
-    osg::Vec3 w(zUpWind.y(), zUpWind.x(), - zUpWind.z());
+    osg::Vec3 w(zUpWind.y(), zUpWind.x(), -zUpWind.z());
     wind = om.preMult(w);
 
-    //SG_LOG(SG_GENERAL, SG_ALERT, "wind vector:"<<w[0]<<","<<w[1]<<","<<w[2]<<"\n");
+    // SG_LOG(SG_GENERAL, SG_ALERT,
+    //        "wind vector:" << w[0] << "," <<w[1] << "," << w[2]);
 }
 
 
index 6dda343db2628b77b7ed2c6c114e41ab598475b8..78c10821407b9577a2b23940e06131afd7f5b404 100644 (file)
@@ -257,6 +257,13 @@ public:
      * magnitude is the velocity in meters per second.
      */
     static void setWindVector(const osg::Vec3& wind) { _wind = wind; }
+    static void setWindFrom(const double from_deg, const double speed_kt) {
+       double map_rad = -from_deg * SG_DEGREES_TO_RADIANS;
+       double speed_mps = speed_kt * SG_KT_TO_MPS;
+       _wind[0] = cos(map_rad) * speed_mps;
+       _wind[1] = sin(map_rad) * speed_mps;
+       _wind[2] = 0.0;
+    }
     static const osg::Vec3& getWindVector() { return _wind; }
 protected:
     float shooterExtraRange;