Oops, fixing the ghosts of bugs past. :-) Good thing I remembered how I
fixed this when I made the mistake the first time. The view code wasn't properly handling the transition across tile boundaries so we'd get a 'flash' of the scene wrongly transformed for one frame at every tile boundary crossing. This is what scenery.get_next_center() is for.
This commit is contained in:
parent
2c4eb0c56b
commit
56d6ecbf83
1 changed files with 4 additions and 4 deletions
|
@ -107,7 +107,7 @@ FGViewPoint::recalc () const
|
||||||
Point3D p = Point3D(_lon_deg * SG_DEGREES_TO_RADIANS,
|
Point3D p = Point3D(_lon_deg * SG_DEGREES_TO_RADIANS,
|
||||||
lat_geoc_rad,
|
lat_geoc_rad,
|
||||||
sea_level_radius_m);
|
sea_level_radius_m);
|
||||||
Point3D tmp = sgPolarToCart3d(p) - scenery.get_center();
|
Point3D tmp = sgPolarToCart3d(p) - scenery.get_next_center();
|
||||||
sgSetVec3(_zero_elev_view_pos, tmp[0], tmp[1], tmp[2]);
|
sgSetVec3(_zero_elev_view_pos, tmp[0], tmp[1], tmp[2]);
|
||||||
|
|
||||||
// Calculate the absolute view position
|
// Calculate the absolute view position
|
||||||
|
@ -120,9 +120,9 @@ FGViewPoint::recalc () const
|
||||||
// from the scenery center.
|
// from the scenery center.
|
||||||
sgdVec3 scenery_center;
|
sgdVec3 scenery_center;
|
||||||
sgdSetVec3(scenery_center,
|
sgdSetVec3(scenery_center,
|
||||||
scenery.get_center().x(),
|
scenery.get_next_center().x(),
|
||||||
scenery.get_center().y(),
|
scenery.get_next_center().y(),
|
||||||
scenery.get_center().z());
|
scenery.get_next_center().z());
|
||||||
sgdVec3 view_pos;
|
sgdVec3 view_pos;
|
||||||
sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
|
sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
|
||||||
sgSetVec3(_relative_view_pos, view_pos);
|
sgSetVec3(_relative_view_pos, view_pos);
|
||||||
|
|
Loading…
Reference in a new issue