Defer SGEphemeris creation until ::init()
Trying to make subsystem *creation* cheap - major work such as IO should be deferred until init() where possible.
This commit is contained in:
parent
fb266722ba
commit
59f6f330c2
1 changed files with 16 additions and 15 deletions
|
@ -28,14 +28,15 @@
|
|||
#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()
|
||||
|
@ -45,6 +46,17 @@ Ephemeris::~Ephemeris()
|
|||
|
||||
void Ephemeris::init()
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
@ -54,19 +66,8 @@ void Ephemeris::postinit()
|
|||
|
||||
}
|
||||
|
||||
static void tieStar(const char* prop, Star* s, double (Star::*getter)() const)
|
||||
{
|
||||
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()
|
||||
|
|
Loading…
Add table
Reference in a new issue