]> git.mxchange.org Git - flightgear.git/commitdiff
Fix bug #253, at least partially
authorTorsten Dreyer <Torsten@t3r.de>
Wed, 19 Jan 2011 18:36:04 +0000 (19:36 +0100)
committerTorsten Dreyer <Torsten@t3r.de>
Fri, 21 Jan 2011 18:01:27 +0000 (19:01 +0100)
make options
--wind=nnn@mm
--visibility
--visibility-miles
--ceiling
--turbulence
work again. These options now write properties in the
/environment/config/presets
branch. The values will be applied in the property-rules
in FGDATA/Environment/interpolator.xml

projects/VC90/FlightGear/FlightGear.vcproj
src/Environment/CMakeLists.txt
src/Environment/Makefile.am
src/Environment/metarproperties.cxx
src/Environment/metarproperties.hxx
src/Environment/presets.cxx [new file with mode: 0755]
src/Environment/presets.hxx [new file with mode: 0755]
src/Main/fg_commands.cxx
src/Main/options.cxx
src/Main/util.cxx
src/Main/util.hxx

index fc364e8513ab0d00817f5b5dd496b30b715d85dc..a5df20be77ff33ed8c11f85a88b9c07e7e802930 100644 (file)
                                RelativePath="..\..\..\src\Environment\terrainsampler.hxx"\r
                                >\r
                        </File>\r
+                       <File\r
+                               RelativePath="..\..\..\src\Environment\presets.cxx"\r
+                               >\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\..\src\Environment\presets.hxx"\r
+                               >\r
+                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Lib_Model"\r
index 8d9c64d4418d4547bec30b2bde00c3559f02118a..69fa003ed25611e2d5a233b17eee4b574187d460 100644 (file)
@@ -15,6 +15,7 @@ set(SOURCES
        realwx_ctrl.cxx
        ridge_lift.cxx
        terrainsampler.cxx
+       presets.cxx
        )
        
-flightgear_component(Environment "${SOURCES}")
\ No newline at end of file
+flightgear_component(Environment "${SOURCES}")
index 5e9bcc463140eee21c9848f8a1ac33ea38da05fd..90b732315ae4aaaac15df4d9a46f5a0be723a52e 100644 (file)
@@ -16,6 +16,7 @@ libEnvironment_a_SOURCES = \
        precipitation_mgr.cxx precipitation_mgr.hxx \
        ridge_lift.cxx ridge_lift.hxx \
        ephemeris.cxx ephemeris.hxx \
-       terrainsampler.cxx terrainsampler.cxx
+       terrainsampler.cxx terrainsampler.cxx \
+       presets.cxx presets.cxx
 
 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src
index 63071d02cb199b1a334f31cbc470647bacfd376e..6d8c1c51a70625c8410910d7632dfd6f5e1e703c 100644 (file)
@@ -158,10 +158,10 @@ MetarProperties::MetarProperties( SGPropertyNode_ptr rootNode ) :
   _tiedProperties.Tie("max-visibility-m", &_max_visibility );
   _tiedProperties.Tie("base-wind-range-from", &_base_wind_range_from );
   _tiedProperties.Tie("base-wind-range-to", &_base_wind_range_to );
-  _tiedProperties.Tie("base-wind-speed-kt", &_wind_speed );
-  _tiedProperties.Tie("base-wind-dir-deg", &_base_wind_dir );
-  _tiedProperties.Tie("base-wind-from-north-fps", &_wind_from_north_fps );
-  _tiedProperties.Tie("base-wind-from-east-fps", &_wind_from_east_fps );
+  _tiedProperties.Tie("base-wind-speed-kt", this, &MetarProperties::get_wind_speed, &MetarProperties::set_wind_speed );
+  _tiedProperties.Tie("base-wind-dir-deg", this, &MetarProperties::get_base_wind_dir, &MetarProperties::set_base_wind_dir );
+  _tiedProperties.Tie("base-wind-from-north-fps", this, &MetarProperties::get_wind_from_north_fps, &MetarProperties::set_wind_from_north_fps );
+  _tiedProperties.Tie("base-wind-from-east-fps",this, &MetarProperties::get_wind_from_east_fps, &MetarProperties::set_wind_from_east_fps );
   _tiedProperties.Tie("gust-wind-speed-kt", &_gusts );
   _tiedProperties.Tie("temperature-degc", &_temperature );
   _tiedProperties.Tie("dewpoint-degc", &_dewpoint );
@@ -218,14 +218,11 @@ void MetarProperties::set_metar( const char * metar )
         vis->setDoubleValue("max-m", v);
     }
 
-    _base_wind_dir = m->getWindDir();
+    set_base_wind_dir(m->getWindDir());
     _base_wind_range_from = m->getWindRangeFrom();
     _base_wind_range_to = m->getWindRangeTo();
-    _wind_speed = m->getWindSpeed_kt();
+    set_wind_speed(m->getWindSpeed_kt());
 
-    double speed_fps = _wind_speed * SG_NM_TO_METER * SG_METER_TO_FEET / 3600.0;
-    _wind_from_north_fps = speed_fps * cos((double)_base_wind_dir * SGD_DEGREES_TO_RADIANS);
-    _wind_from_east_fps = speed_fps * sin((double)_base_wind_dir * SGD_DEGREES_TO_RADIANS);
     _gusts = m->getGustSpeed_kt();
     _temperature = m->getTemperature_C();
     _dewpoint = m->getDewpoint_C();
@@ -408,4 +405,43 @@ double MetarProperties::get_magnetic_dip_deg() const
   return _magneticVariation->get_dip_deg( _station_longitude, _station_latitude, _station_elevation );
 }
 
+static inline void calc_wind_hs( double north_fps, double east_fps, int & heading_deg, double & speed_kt )
+{
+    speed_kt = sqrt((north_fps)*(north_fps)+(east_fps)*(east_fps)) * 3600.0 / (SG_NM_TO_METER * SG_METER_TO_FEET);
+    heading_deg = SGMiscd::roundToInt( 
+        SGMiscd::normalizeAngle2( atan2( east_fps, north_fps ) ) * SGD_RADIANS_TO_DEGREES );
+}
+
+void MetarProperties::set_wind_from_north_fps( double value )
+{
+    _wind_from_north_fps = value;
+    calc_wind_hs( _wind_from_north_fps, _wind_from_east_fps, _base_wind_dir, _wind_speed );
+}
+
+void MetarProperties::set_wind_from_east_fps( double value )
+{
+    _wind_from_east_fps = value;
+    calc_wind_hs( _wind_from_north_fps, _wind_from_east_fps, _base_wind_dir, _wind_speed );
+}
+
+static inline void calc_wind_ne( double heading_deg, double speed_kt, double & north_fps, double & east_fps )
+{
+    double speed_fps = speed_kt * SG_NM_TO_METER * SG_METER_TO_FEET / 3600.0;
+    north_fps = speed_fps * cos(heading_deg * SGD_DEGREES_TO_RADIANS);
+    east_fps = speed_fps * sin(heading_deg * SGD_DEGREES_TO_RADIANS);
+}
+
+void MetarProperties::set_base_wind_dir( double value )
+{
+    _base_wind_dir = value;
+    calc_wind_ne( (double)_base_wind_dir, _wind_speed, _wind_from_north_fps, _wind_from_east_fps );
+}
+
+void MetarProperties::set_wind_speed( double value )
+{
+    _wind_speed = value;
+    calc_wind_ne( (double)_base_wind_dir, _wind_speed, _wind_from_north_fps, _wind_from_east_fps );
+}
+
+
 } // namespace Environment
index bec445b157d0da937cb6c6b5484fd78f969d3df1..0e157169eb9f23036228c2f6642b04f42b459d70 100644 (file)
@@ -51,6 +51,14 @@ private:
     const char * get_decoded() const { return _decoded.c_str(); }
     double get_magnetic_variation_deg() const;
     double get_magnetic_dip_deg() const;
+    double get_wind_from_north_fps() const { return _wind_from_north_fps; }
+    double get_wind_from_east_fps() const { return _wind_from_east_fps; }
+    double get_base_wind_dir() const { return _base_wind_dir; }
+    double get_wind_speed() const { return _wind_speed; }
+    void set_wind_from_north_fps( double value );
+    void set_wind_from_east_fps( double value );
+    void set_base_wind_dir( double value );
+    void set_wind_speed( double value );
 
     SGPropertyNode_ptr _rootNode;
     SGPropertyNode_ptr _metarValidNode;
diff --git a/src/Environment/presets.cxx b/src/Environment/presets.cxx
new file mode 100755 (executable)
index 0000000..55da646
--- /dev/null
@@ -0,0 +1,132 @@
+// presets.cxx -- Wrap environment presets
+//
+// Written by Torsten Dreyer, January 2011
+//
+// Copyright (C) 2010  Torsten Dreyer Torsten(at)t3r(dot)de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+//
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include "presets.hxx"
+
+#include <simgear/math/SGMisc.hxx>
+#include <Main/fg_props.hxx>
+
+namespace Environment {
+namespace Presets {
+
+PresetBase::PresetBase( const char * overrideNodePath )
+    : _overrideNodePath( overrideNodePath ) 
+{
+}
+
+void PresetBase::setOverride( bool value ) 
+{ 
+    /*
+    Don't initialize node in constructor because the class is used as a singleton
+    and created as a static variable in the initialization sequence when globals()
+    is not yet initialized and returns null.
+    */
+    if( _overrideNode == NULL ) 
+        _overrideNode = fgGetNode( _overrideNodePath.c_str(), true );
+    _overrideNode->setBoolValue( value ); 
+}
+
+
+Wind::Wind() : 
+    PresetBase("/environment/config/presets/wind-override")
+{
+}
+
+
+void Wind::preset( double min_hdg, double max_hdg, double speed_kt, double gust_kt )
+{
+    // see: PresetBase::setOverride()
+
+    //TODO: handle variable wind and gusts
+    if( _fromNorthNode == NULL )
+        _fromNorthNode = fgGetNode("/environment/config/presets/wind-from-north-fps", true );
+    
+    if( _fromEastNode == NULL )
+        _fromEastNode = fgGetNode("/environment/config/presets/wind-from-east-fps", true );
+
+    double avgHeading_rad = 
+      SGMiscd::normalizeAngle2(
+        (SGMiscd::normalizeAngle(min_hdg*SG_DEGREES_TO_RADIANS) + 
+         SGMiscd::normalizeAngle(max_hdg*SG_DEGREES_TO_RADIANS))/2);
+
+    double speed_fps = speed_kt * SG_NM_TO_METER * SG_METER_TO_FEET / 3600.0;
+    _fromNorthNode->setDoubleValue( speed_fps * cos(avgHeading_rad) );
+    _fromEastNode->setDoubleValue( speed_fps * sin(avgHeading_rad) );
+    setOverride( true );
+}
+
+Visibility::Visibility() : 
+    PresetBase("/environment/config/presets/visibility-m-override")
+{
+}
+
+void Visibility::preset( double visibility_m )
+{
+    // see: PresetBase::setOverride()
+    if( _visibilityNode == NULL )
+        _visibilityNode = fgGetNode("/environment/config/presets/visibility-m", true );
+
+    _visibilityNode->setDoubleValue(visibility_m );
+    setOverride( true );
+}
+
+Turbulence::Turbulence() : 
+    PresetBase("/environment/config/presets/turbulence-magnitude-norm-override")
+{
+}
+
+
+void Turbulence::preset(double magnitude_norm)
+{
+    // see: PresetBase::setOverride()
+    if( _magnitudeNode == NULL )
+        _magnitudeNode = fgGetNode("/environment/config/presets/turbulence-magnitude-norm", true );
+
+    _magnitudeNode->setDoubleValue( magnitude_norm );
+    setOverride( true );
+}
+
+Ceiling::Ceiling() : 
+    PresetBase("/environment/config/presets/ceiling-override")
+{
+}
+
+
+void Ceiling::preset( double elevation, double thickness )
+{
+    // see: PresetBase::setOverride()
+    if( _elevationNode == NULL )
+        _elevationNode = fgGetNode("/environment/config/presets/ceiling-elevation-ft", true);
+
+    if( _thicknessNode == NULL )
+        _thicknessNode = fgGetNode("/environment/config/presets/ceiling-elevation-ft", true);
+
+    _elevationNode->setDoubleValue( elevation );
+    _thicknessNode->setDoubleValue( thickness );
+    setOverride( true );
+}
+
+} // namespace Presets
+} // namespace Environment
+
diff --git a/src/Environment/presets.hxx b/src/Environment/presets.hxx
new file mode 100755 (executable)
index 0000000..2f5b1ba
--- /dev/null
@@ -0,0 +1,94 @@
+// presets.hxx -- Wrap environment presets
+//
+// Written by Torsten Dreyer, January 2011
+//
+// Copyright (C) 2010  Torsten Dreyer Torsten(at)t3r(dot)de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+//
+
+#ifndef __ENVIRONMENT_PRESETS_HXX
+#define __ENVIRONMENT_PRESETS_HXX
+
+#include <simgear/structure/Singleton.hxx>
+#include <simgear/props/props.hxx>
+
+namespace Environment {
+
+/**
+ * @brief A wrapper for presets of environment properties
+ * mainly set from the command line with --wind=270@10, 
+ * visibility=1600 etc.
+ */
+namespace Presets {
+
+class PresetBase {
+public:
+    PresetBase( const char * overrideNodePath );
+    virtual void disablePreset() { setOverride(false); }
+protected:
+    void setOverride( bool value );
+private:
+    std::string _overrideNodePath;
+    SGPropertyNode_ptr _overrideNode;
+};
+
+class Ceiling : public PresetBase {
+public:
+    Ceiling();
+    void preset( double elevation, double thickness );
+private:
+    SGPropertyNode_ptr _elevationNode;
+    SGPropertyNode_ptr _thicknessNode;
+};
+
+typedef simgear::Singleton<Ceiling> CeilingSingleton;
+
+class Turbulence : public PresetBase {
+public:
+    Turbulence();
+    void preset( double magnitude_norm );
+private:
+    SGPropertyNode_ptr _magnitudeNode;
+};
+
+typedef simgear::Singleton<Turbulence> TurbulenceSingleton;
+
+class Wind : public PresetBase {
+public:
+    Wind();
+    void preset( double min_hdg, double max_hdg, double speed, double gust );
+private:
+    SGPropertyNode_ptr _fromNorthNode;
+    SGPropertyNode_ptr _fromEastNode;
+};
+
+typedef simgear::Singleton<Wind> WindSingleton;
+
+class Visibility : public PresetBase {
+public:
+    Visibility();
+    void preset( double visibility_m );
+private:
+    SGPropertyNode_ptr _visibilityNode;
+};
+
+typedef simgear::Singleton<Visibility> VisibilitySingleton;
+
+} // namespace Presets
+
+} // namespace Environment
+
+#endif //__ENVIRONMENT_PRESETS_HXX
index a8c45e99962748cfddf5a22677f499b5641c13c7..2c7a24e70317d85174001866358f5b0c617fd9a6 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <Cockpit/panel.hxx>
 #include <Cockpit/panel_io.hxx>
-#include <Environment/environment.hxx>
 #include <FDM/flight.hxx>
 #include <GUI/gui.h>
 #include <GUI/new_gui.hxx>
@@ -47,6 +46,7 @@
 #include "viewmgr.hxx"
 #include "main.hxx"
 #include <Main/viewer.hxx>
+#include <Environment/presets.hxx>
 
 using std::string;
 using std::ifstream;
@@ -558,6 +558,9 @@ do_tile_cache_reload (const SGPropertyNode * arg)
 }
 
 
+#if 0
+These do_set_(some-environment-parameters) are deprecated and no longer 
+useful/functional - Torsten Dreyer, January 2011
 /**
  * Set the sea level outside air temperature and assigning that to all
  * boundary and aloft environment layers.
@@ -684,7 +687,7 @@ do_set_dewpoint_degc (const SGPropertyNode * arg)
     dummy.set_dewpoint_degc( dewpoint_degc );
     return do_set_dewpoint_sea_level_degc(dummy.get_dewpoint_sea_level_degc());
 }
-
+#endif
 /**
  * Update the lighting manually.
  */
@@ -1260,29 +1263,21 @@ do_replay (const SGPropertyNode * arg)
     return true;
 }
 
-
+/*
 static bool
 do_decrease_visibility (const SGPropertyNode * arg)
 {
-    double new_value = fgGetDouble("/environment/visibility-m") * 0.9;
-    fgSetDouble("/environment/visibility-m", new_value);
-    fgDefaultWeatherValue("visibility-m", new_value);
-    globals->get_subsystem("environment")->reinit();
-
+    Environment::Presets::VisibilitySingleton::instance()->adjust( 0.9 );
     return true;
 }
  
 static bool
 do_increase_visibility (const SGPropertyNode * arg)
 {
-    double new_value = fgGetDouble("/environment/visibility-m") * 1.1;
-    fgSetDouble("/environment/visibility-m", new_value);
-    fgDefaultWeatherValue("visibility-m", new_value);
-    globals->get_subsystem("environment")->reinit();
-
+    Environment::Presets::VisibilitySingleton::instance()->adjust( 1.1 );
     return true;
 }
-
+*/
 /**
  * An fgcommand to allow loading of xml files via nasal,
  * the xml file's structure will be made available within
@@ -1454,10 +1449,12 @@ static struct {
     { "screen-capture", do_screen_capture },
     { "hires-screen-capture", do_hires_screen_capture },
     { "tile-cache-reload", do_tile_cache_reload },
+    /*
     { "set-sea-level-air-temp-degc", do_set_sea_level_degc },
     { "set-outside-air-temp-degc", do_set_oat_degc },
     { "set-dewpoint-sea-level-air-temp-degc", do_set_dewpoint_sea_level_degc },
     { "set-dewpoint-temp-degc", do_set_dewpoint_degc },
+    */
     { "timeofday", do_timeofday },
     { "property-toggle", do_property_toggle },
     { "property-assign", do_property_assign },
@@ -1480,8 +1477,10 @@ static struct {
     { "presets-commit", do_presets_commit },
     { "log-level", do_log_level },
     { "replay", do_replay },
+    /*
     { "decrease-visibility", do_decrease_visibility },
     { "increase-visibility", do_increase_visibility },
+    */
     { "loadxml", do_load_xml_to_proptree},
     { "savexml", do_save_xml_from_proptree },
     { "press-cockpit-button", do_press_cockpit_button },
index 1931bb341ee1f1cc4adb5fbb472988398ae82e24..8af748298347bbbf3772cde22ece221ee3f6a7cd 100644 (file)
@@ -56,6 +56,7 @@
 #include "util.hxx"
 #include "viewmgr.hxx"
 #include <Main/viewer.hxx>
+#include <Environment/presets.hxx>
 
 #include <simgear/version.h>
 #include <osg/Version>
@@ -994,18 +995,14 @@ fgOptViewOffset( const char *arg )
 static int
 fgOptVisibilityMeters( const char *arg )
 {
-    double visibility = atof( arg );
-    fgDefaultWeatherValue("visibility-m", visibility);
-    fgSetDouble("/environment/visibility-m", visibility);
+    Environment::Presets::VisibilitySingleton::instance()->preset( atof( arg ) );
     return FG_OPTIONS_OK;
 }
 
 static int
 fgOptVisibilityMiles( const char *arg )
 {
-    double visibility = atof( arg ) * 5280.0 * SG_FEET_TO_METER;
-    fgDefaultWeatherValue("visibility-m", visibility);
-    fgSetDouble("/environment/visibility-m", visibility);
+    Environment::Presets::VisibilitySingleton::instance()->preset( atof( arg ) * 5280.0 * SG_FEET_TO_METER );
     return FG_OPTIONS_OK;
 }
 
@@ -1016,7 +1013,7 @@ fgOptRandomWind( const char *arg )
     double max_hdg = min_hdg + (20 - sqrt(sg_random() * 400));
     double speed = sg_random() * sg_random() * 40;
     double gust = speed + (10 - sqrt(sg_random() * 100));
-    fgSetupWind(min_hdg, max_hdg, speed, gust);
+    Environment::Presets::WindSingleton::instance()->preset(min_hdg, max_hdg, speed, gust);
     return FG_OPTIONS_OK;
 }
 
@@ -1028,14 +1025,14 @@ fgOptWind( const char *arg )
        SG_LOG( SG_GENERAL, SG_ALERT, "bad wind value " << arg );
        return FG_OPTIONS_ERROR;
     }
-    fgSetupWind(min_hdg, max_hdg, speed, gust);
+    Environment::Presets::WindSingleton::instance()->preset(min_hdg, max_hdg, speed, gust);
     return FG_OPTIONS_OK;
 }
 
 static int
 fgOptTurbulence( const char *arg )
 {
-    fgDefaultWeatherValue("turbulence/magnitude-norm", atof(arg));
+    Environment::Presets::TurbulenceSingleton::instance()->preset( atof(arg) );
     return FG_OPTIONS_OK;
 }
 
@@ -1052,9 +1049,7 @@ fgOptCeiling( const char *arg )
         elevation = atof(spec.substr(0, pos).c_str());
         thickness = atof(spec.substr(pos + 1).c_str());
     }
-    fgSetDouble("/environment/clouds/layer[0]/elevation-ft", elevation);
-    fgSetDouble("/environment/clouds/layer[0]/thickness-ft", thickness);
-    fgSetString("/environment/clouds/layer[0]/coverage", "overcast");
+    Environment::Presets::CeilingSingleton::instance()->preset( elevation, thickness );
     return FG_OPTIONS_OK;
 }
 
index 7c20530a36e5b59e6e92c0611ac00c2b5ed439cf..2cd15b5b008a7fa9e10d339a7c17f7eafb4acecf 100644 (file)
 //
 // $Id$
 
-
+#ifdef HAVE_CONFIG_H\r
+#  include <config.h>\r
+#endif\r
+\r
 #include <simgear/compiler.h>
 
 #include <math.h>
@@ -28,6 +31,8 @@
 using std::vector;
 
 #include <simgear/debug/logstream.hxx>
+#include <simgear/math/SGLimits.hxx>
+#include <simgear/math/SGMisc.hxx>
 
 #include "fg_io.hxx"
 #include "fg_props.hxx"
@@ -38,73 +43,6 @@ using std::vector;
 #include "osgDB/Registry"
 #endif
 
-void
-fgDefaultWeatherValue (const char * propname, double value)
-{
-    unsigned int i;
-
-    SGPropertyNode * branch = fgGetNode("/environment/config/boundary", true);
-    vector<SGPropertyNode_ptr> entries = branch->getChildren("entry");
-    for (i = 0; i < entries.size(); i++) {
-        entries[i]->setDoubleValue(propname, value);
-    }
-
-    branch = fgGetNode("/environment/config/aloft", true);
-    entries = branch->getChildren("entry");
-    for (i = 0; i < entries.size(); i++) {
-        entries[i]->setDoubleValue(propname, value);
-    }
-}
-
-
-void
-fgSetupWind (double min_hdg, double max_hdg, double speed, double gust)
-{
-                                // Initialize to a reasonable state
-  fgDefaultWeatherValue("wind-from-heading-deg", min_hdg);
-  fgDefaultWeatherValue("wind-speed-kt", speed);
-
-  SG_LOG(SG_GENERAL, SG_INFO, "WIND: " << min_hdg << '@' <<
-         speed << " knots" << endl);
-
-                                // Now, add some variety to the layers
-  min_hdg += 10;
-  if (min_hdg > 360)
-      min_hdg -= 360;
-  speed *= 1.1;
-  fgSetDouble("/environment/config/boundary/entry[1]/wind-from-heading-deg",
-              min_hdg);
-  fgSetDouble("/environment/config/boundary/entry[1]/wind-speed-kt",
-              speed);
-
-  min_hdg += 20;
-  if (min_hdg > 360)
-      min_hdg -= 360;
-  speed *= 1.1;
-  fgSetDouble("/environment/config/aloft/entry[0]/wind-from-heading-deg",
-              min_hdg);
-  fgSetDouble("/environment/config/aloft/entry[0]/wind-speed-kt",
-              speed);
-
-  min_hdg += 10;
-  if (min_hdg > 360)
-      min_hdg -= 360;
-  speed *= 1.1;
-  fgSetDouble("/environment/config/aloft/entry[1]/wind-from-heading-deg",
-              min_hdg);
-  fgSetDouble("/environment/config/aloft/entry[1]/wind-speed-kt",
-              speed);
-
-  min_hdg += 10;
-  if (min_hdg > 360)
-      min_hdg -= 360;
-  speed *= 1.1;
-  fgSetDouble("/environment/config/aloft/entry[2]/wind-from-heading-deg",
-              min_hdg);
-  fgSetDouble("/environment/config/aloft/entry[2]/wind-speed-kt",
-              speed);
-}
-
 // Originally written by Alex Perry.
 double
 fgGetLowPass (double current, double target, double timeratio)
index dcd75b1306605e9f5daf4db6b930302b74f36d58..acb25ac0d070c7d47c895ea1e9f00e529c79a56f 100644 (file)
 #endif
 
 
-/**
- * Initialize a single value through all existing weather levels.
- *
- * This function is useful mainly from the command-line.
- *
- * @param propname The name of the subproperty to initialized.
- * @param value The initial value.
- */
-extern void fgDefaultWeatherValue (const char * propname, double value);
-
-
-/**
- * Set up a plausible wind layout, boundary and aloft,
- * based on just a few parameters.
- *
- * @param min_hdg Minimal wind heading
- * @param max_hdg Maximal wind heading
- * @param speed Windspeed in knots
- * @param gust Wind gust variation in knots
- */
-extern void fgSetupWind (double min_hdg, double max_hdg,
-                         double speed, double gust);
-
 /**
  * Move a value towards a target.
  *