#include <simgear/math/polar3d.hxx>
#include <simgear/math/sg_geodesy.hxx>
#include <simgear/math/vector.hxx>
-#include <simgear/misc/exception.hxx>
+#include <simgear/structure/exception.hxx>
#include <simgear/scene/model/modellib.hxx>
#include <Main/globals.hxx>
#endif
e->add_ssg_nodes( globals->get_scenery()->get_terrain_branch(),
globals->get_scenery()->get_gnd_lights_root(),
+ globals->get_scenery()->get_taxi_lights_root(),
globals->get_scenery()->get_rwy_lights_root(),
globals->get_scenery()->get_taxi_lights_root() );
// cout << "Adding ssg nodes for "
{
longitude = location->getLongitude_deg();
latitude = location->getLatitude_deg();
+ // add 1.0m to the max altitude to give a little leeway to the
+ // ground reaction code.
+ altitude_m = location->getAltitudeASL_ft() * SG_FEET_TO_METER + 1.0;
+
+ // if current altitude is apparently not initialized, set max
+ // altitude to something big.
+ if ( altitude_m < -1000 ) {
+ altitude_m = 10000;
+ }
// SG_LOG( SG_TERRAIN, SG_DEBUG, "FGTileMgr::update() for "
// << longitude << " " << latatitude );
// no reason to update this if we haven't moved...
if ( longitude != last_longitude || latitude != last_latitude ) {
// update current elevation...
- if ( updateCurrentElevAtPos( abs_pos_vector,
+ if ( updateCurrentElevAtPos( abs_pos_vector, altitude_m,
location->get_tile_center() ) )
{
last_longitude = longitude;
}
-int FGTileMgr::updateCurrentElevAtPos(sgdVec3 abs_pos_vector, Point3D center) {
-
+int FGTileMgr::updateCurrentElevAtPos( sgdVec3 abs_pos_vector,
+ double max_alt_m,
+ Point3D center)
+{
sgdVec3 sc;
sgdSetVec3( sc, center[0], center[1], center[2]);
// scenery center has been properly defined so any hit should
// be valid (and not just luck)
hit = fgCurrentElev(abs_pos_vector,
+ max_alt_m,
sc,
// uncomment next paramater to fly under
// bridges and a slightly faster algorithm