]> git.mxchange.org Git - simgear.git/commitdiff
1. Patched simgear/magvar/magvar.[ch]xx to allow retrieval of the
authorcurt <curt>
Fri, 5 Jan 2001 16:04:21 +0000 (16:04 +0000)
committercurt <curt>
Fri, 5 Jan 2001 16:04:21 +0000 (16:04 +0000)
magnetic variation for a specific location and date without running an
update cycle (I use this for setting up VOR default offsets in some
FlightGear patches).

2. [CRITICAL] Fixed some null-pointer bugs in simgear/misc/props.cxx.

simgear/magvar/magvar.cxx
simgear/magvar/magvar.hxx
simgear/misc/props.cxx

index 01e44e796982c94c3ef707c5b2a2a44cf80a321f..f078aae5005ea54ae2d656039ebeccc6e438928a 100644 (file)
@@ -49,3 +49,8 @@ void SGMagVar::update( double lon, double lat, double alt_m, double jd ) {
     magdip = atan(field[5]/sqrt(field[3]*field[3]+field[4]*field[4]));
 }
 
+
+double sgGetMagVar( double lon, double lat, double alt_m, double jd ) {
+    double field[6];
+    return calc_magvar( lat, lon, alt_m / 1000.0, (long)jd, field );
+}
index a08ea98ca2a2cb49d22940e19ceded8c30850cb2..a270f5a299a4062afa21165bbf96f076d99439d2 100644 (file)
@@ -55,4 +55,9 @@ public:
 };
 
 
-#endif // _LIGHT_HXX
+// lookup the magvar for any arbitrary location (doesn't save state
+// and note that this is a fair amount of cpu work)
+double sgGetMagVar( double lon, double lat, double alt_m, double jd );
+
+
+#endif // _MAGVAR_HXX
index 0e88887160f1a69e1d1d0b0b96a48f2abcd018fb..d1d69678107e6270509ff4f2f5ee30b0140400c3 100644 (file)
@@ -1,4 +1,4 @@
-// props.hxx - interface definition for a property list.
+// props.cxx - implementation of a property list.
 // Started Fall 2000 by David Megginson, david@megginson.com
 // This code is released into the Public Domain.
 //
@@ -1050,31 +1050,41 @@ SGPropertyNode::isTied () const
 bool
 SGPropertyNode::tie (const SGRawValue<bool> &rawValue, bool useDefault)
 {
-  return (_value == 0 ? false : _value->tie(rawValue, useDefault));
+  if (_value == 0)
+    _value = new SGValue();
+  return _value->tie(rawValue, useDefault);
 }
 
 bool
 SGPropertyNode::tie (const SGRawValue<int> &rawValue, bool useDefault)
 {
-  return (_value == 0 ? false : _value->tie(rawValue, useDefault));
+  if (_value == 0)
+    _value = new SGValue();
+  return _value->tie(rawValue, useDefault);
 }
 
 bool
 SGPropertyNode::tie (const SGRawValue<float> &rawValue, bool useDefault)
 {
-  return (_value == 0 ? false : _value->tie(rawValue, useDefault));
+  if (_value == 0)
+    _value = new SGValue();
+  return _value->tie(rawValue, useDefault);
 }
 
 bool
 SGPropertyNode::tie (const SGRawValue<double> &rawValue, bool useDefault)
 {
-  return (_value == 0 ? false : _value->tie(rawValue, useDefault));
+  if (_value == 0)
+    _value = new SGValue();
+  return _value->tie(rawValue, useDefault);
 }
 
 bool
 SGPropertyNode::tie (const SGRawValue<string> &rawValue, bool useDefault)
 {
-  return (_value == 0 ? false : _value->tie(rawValue, useDefault));
+  if (_value == 0)
+    _value = new SGValue();
+  return _value->tie(rawValue, useDefault);
 }
 
 bool
@@ -1308,7 +1318,7 @@ SGPropertyNode::isTied (const string &relative_path) const
 bool
 SGPropertyNode::tie (const string &relative_path,
                     const SGRawValue<bool> &rawValue,
-                    bool useDefault = true)
+                    bool useDefault)
 {
   return getNode(relative_path, true)->tie(rawValue, useDefault);
 }
@@ -1320,7 +1330,7 @@ SGPropertyNode::tie (const string &relative_path,
 bool
 SGPropertyNode::tie (const string &relative_path,
                     const SGRawValue<int> &rawValue,
-                    bool useDefault = true)
+                    bool useDefault)
 {
   return getNode(relative_path, true)->tie(rawValue, useDefault);
 }
@@ -1332,7 +1342,7 @@ SGPropertyNode::tie (const string &relative_path,
 bool
 SGPropertyNode::tie (const string &relative_path,
                     const SGRawValue<float> &rawValue,
-                    bool useDefault = true)
+                    bool useDefault)
 {
   return getNode(relative_path, true)->tie(rawValue, useDefault);
 }
@@ -1344,7 +1354,7 @@ SGPropertyNode::tie (const string &relative_path,
 bool
 SGPropertyNode::tie (const string &relative_path,
                     const SGRawValue<double> &rawValue,
-                    bool useDefault = true)
+                    bool useDefault)
 {
   return getNode(relative_path, true)->tie(rawValue, useDefault);
 }
@@ -1356,7 +1366,7 @@ SGPropertyNode::tie (const string &relative_path,
 bool
 SGPropertyNode::tie (const string &relative_path,
                     const SGRawValue<string> &rawValue,
-                    bool useDefault = true)
+                    bool useDefault)
 {
   return getNode(relative_path, true)->tie(rawValue, useDefault);
 }