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/globals.hxx>
|
||||||
#include <Main/fg_props.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() :
|
Ephemeris::Ephemeris() :
|
||||||
_impl(NULL),
|
_impl(NULL),
|
||||||
_latProp(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()
|
Ephemeris::~Ephemeris()
|
||||||
|
@ -45,6 +46,17 @@ Ephemeris::~Ephemeris()
|
||||||
|
|
||||||
void Ephemeris::init()
|
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);
|
_latProp = fgGetNode("/position/latitude-deg", true);
|
||||||
update(0.0);
|
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()
|
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()
|
void Ephemeris::unbind()
|
||||||
|
|
Loading…
Add table
Reference in a new issue