]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/fg_props.cxx
Merge branch 'curt/make' into next
[flightgear.git] / src / Main / fg_props.cxx
index 066f0262b0e56d85f14bc3df5ed308221a9f7d9d..a5726b79b00b7e7ad44d76565dc0acf9e971b9ca 100644 (file)
@@ -85,20 +85,26 @@ LogClassMapping log_class_mappings [] = {
 /**
  * Get the logging classes.
  */
+// XXX Making the result buffer be global is a band-aid that hopefully
+// delays its destruction 'til after its last use.
+namespace
+{
+string loggingResult;
+}
+
 static const char *
 getLoggingClasses ()
 {
   sgDebugClass classes = logbuf::get_log_classes();
-  static string result;
-  result = "";
+  loggingResult.clear();
   for (int i = 0; log_class_mappings[i].c != SG_UNDEFD; i++) {
     if ((classes&log_class_mappings[i].c) > 0) {
-      if (!result.empty())
-       result += '|';
-      result += log_class_mappings[i].name;
+      if (!loggingResult.empty())
+       loggingResult += '|';
+      loggingResult += log_class_mappings[i].name;
     }
   }
-  return result.c_str();
+  return loggingResult.c_str();
 }
 
 
@@ -349,6 +355,18 @@ getHeadingMag ()
   return magheading;
 }
 
+/**
+ * Return the current track in degrees.
+ */
+static double
+getTrackMag ()
+{
+  double magtrack;
+  magtrack = current_aircraft.fdm_state->get_Track() - getMagVar();
+  if (magtrack < 0) magtrack += 360;
+  return magtrack;
+}
+
 static long
 getWarp ()
 {
@@ -508,6 +526,7 @@ FGProperties::bind ()
 
                                // Orientation
   fgTie("/orientation/heading-magnetic-deg", getHeadingMag);
+  fgTie("/orientation/track-magnetic-deg", getTrackMag);
 
   fgTie("/environment/magnetic-variation-deg", getMagVar);
   fgTie("/environment/magnetic-dip-deg", getMagDip);
@@ -537,6 +556,7 @@ FGProperties::unbind ()
 
                                // Orientation
   fgUntie("/orientation/heading-magnetic-deg");
+  fgUntie("/orientation/track-magnetic-deg");
 
                                // Environment
   fgUntie("/environment/magnetic-variation-deg");