]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/ephemeris.cxx
Pull Sound-manager out of FGGlobals
[flightgear.git] / src / Environment / ephemeris.cxx
index 68c0bedf8bac29607b13970b281f3f6bcb1008f9..e11827b30dc282dbdc2fd457934e2172b9329220 100644 (file)
 #include <Main/globals.hxx>
 #include <Main/fg_props.hxx>
 
+static void tieStar(const char* prop, Star* s, double (Star::*getter)() const)
+{
+  fgGetNode(prop, true)->tie(SGRawValueMethods<Star, double>(*s, getter, NULL));
+}
+
 Ephemeris::Ephemeris() :
   _impl(NULL),
   _latProp(NULL)
@@ -36,49 +41,51 @@ Ephemeris::Ephemeris() :
 
 Ephemeris::~Ephemeris()
 {
-  delete _impl;
+}
+
+SGEphemeris* Ephemeris::data()
+{
+    return _impl;
 }
 
 void Ephemeris::init()
 {
-  if (_impl) {
-    return;
-  }
-  
   SGPath ephem_data_path(globals->get_fg_root());
   ephem_data_path.append("Astro");
   _impl = new SGEphemeris(ephem_data_path.c_str());
-  globals->set_ephem(_impl);
+
+  tieStar("/ephemeris/sun/xs", _impl->get_sun(), &Star::getxs);
+  tieStar("/ephemeris/sun/ys", _impl->get_sun(), &Star::getys);
+  tieStar("/ephemeris/sun/ze", _impl->get_sun(), &Star::getze);
+  tieStar("/ephemeris/sun/ye", _impl->get_sun(), &Star::getye);
+  tieStar("/ephemeris/sun/lat-deg", _impl->get_sun(), &Star::getLat);
+
+    _latProp = fgGetNode("/position/latitude-deg", true);
+
+    update(0.0);
 }
 
-void Ephemeris::postinit()
+void Ephemeris::shutdown()
 {
-  update(0.0);
+    delete _impl;
+    _impl = NULL;
 }
 
-static void tieStar(const char* prop, Star* s, double (Star::*getter)() const)
+void Ephemeris::postinit()
 {
-  fgGetNode(prop, true)->tie(SGRawValueMethods<Star, double>(*s, getter, NULL));
-} 
+}
 
 void Ephemeris::bind()
 {
-  _latProp = fgGetNode("/position/latitude-deg", true);
-  
-  tieStar("/ephemeris/sun/xs", _impl->get_sun(), &Star::getxs);
-  tieStar("/ephemeris/sun/ys", _impl->get_sun(), &Star::getys);
-  tieStar("/ephemeris/sun/ze", _impl->get_sun(), &Star::getze);
-  tieStar("/ephemeris/sun/ye", _impl->get_sun(), &Star::getye);
-  
-  tieStar("/ephemeris/sun/lat-deg", _impl->get_sun(), &Star::getLat);
 }
 
 void Ephemeris::unbind()
 {
+    _latProp = 0;
 }
 
 void Ephemeris::update(double)
 {
-  SGTime* st = globals->get_time_params();
-  _impl->update(st->getMjd(), st->getLst(), _latProp->getDoubleValue());
+    SGTime* st = globals->get_time_params();
+    _impl->update(st->getMjd(), st->getLst(), _latProp->getDoubleValue());
 }