]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/ephemeris.cxx
Fix stray back-button in Qt launcher
[flightgear.git] / src / Environment / ephemeris.cxx
index 21ff38b4d308335ae89d29cfadd40a0ad93099ad..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)
 {
-    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);
 }
 
 Ephemeris::~Ephemeris()
 {
-  delete _impl;
+}
+
+SGEphemeris* Ephemeris::data()
+{
+    return _impl;
 }
 
 void Ephemeris::init()
 {
-  _latProp = fgGetNode("/position/latitude-deg", true);
-  update(0.0);
+  SGPath ephem_data_path(globals->get_fg_root());
+  ephem_data_path.append("Astro");
+  _impl = new SGEphemeris(ephem_data_path.c_str());
+
+  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()
 {
-  
+    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()
 {
-  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());
 }