src/Viewer/view.*: in Tower View etc, use tower nearest to the multiplayer aircraft.
This commit is contained in:
parent
c2f542b085
commit
e3b3f40f0a
1 changed files with 34 additions and 22 deletions
|
@ -829,7 +829,7 @@ void View::handleAGL()
|
||||||
{
|
{
|
||||||
/* Just in case get_elevation_m() fails, we may as well use sea level. */
|
/* Just in case get_elevation_m() fails, we may as well use sea level. */
|
||||||
ground_altitude = 0;
|
ground_altitude = 0;
|
||||||
SG_LOG(SG_FLIGHT, SG_DEBUG, "get_elevation_m() failed. _target=" << _target << "\n");
|
SG_LOG(SG_VIEW, SG_DEBUG, "get_elevation_m() failed. _target=" << _target << "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
double h_distance = SGGeodesy::distanceM(_position, _target);
|
double h_distance = SGGeodesy::distanceM(_position, _target);
|
||||||
|
@ -858,7 +858,7 @@ void View::handleAGL()
|
||||||
|
|
||||||
double chase_distance_m;
|
double chase_distance_m;
|
||||||
const std::string& root = ViewPropertyEvaluator::getStringValue("(/sim/view[(/sim/current-view/view-number-raw)]/config/root)");
|
const std::string& root = ViewPropertyEvaluator::getStringValue("(/sim/view[(/sim/current-view/view-number-raw)]/config/root)");
|
||||||
if (root == "/") {
|
if (root == "/" || root == "") {
|
||||||
chase_distance_m = ViewPropertyEvaluator::getDoubleValue("(/sim/chase-distance-m)", -25);
|
chase_distance_m = ViewPropertyEvaluator::getDoubleValue("(/sim/chase-distance-m)", -25);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -915,7 +915,8 @@ void View::handleAGL()
|
||||||
fov_v_deg *= _fov_user_deg / _configFOV_deg;
|
fov_v_deg *= _fov_user_deg / _configFOV_deg;
|
||||||
set_fov(fov_v_deg);
|
set_fov(fov_v_deg);
|
||||||
|
|
||||||
SG_LOG(SG_FLIGHT, SG_DEBUG, ""
|
SG_LOG(SG_VIEW, SG_DEBUG, ""
|
||||||
|
<< " fov_v_deg=" << fov_v_deg
|
||||||
<< " _position=" << _position
|
<< " _position=" << _position
|
||||||
<< " _target=" << _target
|
<< " _target=" << _target
|
||||||
<< " ground_altitude=" << ground_altitude
|
<< " ground_altitude=" << ground_altitude
|
||||||
|
@ -926,7 +927,7 @@ void View::handleAGL()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Views of an aircraft e.g. Helicopter View. */
|
/* Views of an aircraft e.g. Helicopter View and Tower View. */
|
||||||
void
|
void
|
||||||
View::recalcLookAt ()
|
View::recalcLookAt ()
|
||||||
{
|
{
|
||||||
|
@ -967,24 +968,35 @@ View::recalcLookAt ()
|
||||||
|
|
||||||
_position = _target;
|
_position = _target;
|
||||||
|
|
||||||
_position.setLongitudeDeg(
|
const std::string& tail = ViewPropertyEvaluator::getStringValue("(/sim/view[(/sim/current-view/view-number-raw)]/config/eye-lon-deg-path)");
|
||||||
ViewPropertyEvaluator::getDoubleValue(
|
|
||||||
"((/sim/view[(/sim/current-view/view-number-raw)]/config/eye-lon-deg-path))",
|
if (tail != "") {
|
||||||
_position.getLongitudeDeg()
|
/* <tail> will typically be /sim/tower/longitude-deg, so that this view's
|
||||||
)
|
eye position is from the tower rather than relative to the aircraft.
|
||||||
);
|
|
||||||
_position.setLatitudeDeg(
|
If we are viewing a multiplayer aircraft, the nearest tower
|
||||||
ViewPropertyEvaluator::getDoubleValue(
|
will be in /sim/view[]/config/root/sim/tower/longitude-deg (see
|
||||||
"((/sim/view[(/sim/current-view/view-number-raw)]/config/eye-lat-deg-path))",
|
FGEnvironmentMgr::updateClosestAirport()), so we use a prefix to select
|
||||||
_position.getLatitudeDeg()
|
either /sim/tower/longitude-deg or multiplayer's tower. */
|
||||||
)
|
_position.setLongitudeDeg(
|
||||||
);
|
ViewPropertyEvaluator::getDoubleValue(
|
||||||
_position.setElevationFt(
|
"((/sim/view[(/sim/current-view/view-number-raw)]/config/root)(/sim/view[(/sim/current-view/view-number-raw)]/config/eye-lon-deg-path))",
|
||||||
ViewPropertyEvaluator::getDoubleValue(
|
_position.getLongitudeDeg()
|
||||||
"((/sim/view[(/sim/current-view/view-number-raw)]/config/eye-alt-ft-path))",
|
)
|
||||||
_position.getElevationFt()
|
);
|
||||||
)
|
_position.setLatitudeDeg(
|
||||||
);
|
ViewPropertyEvaluator::getDoubleValue(
|
||||||
|
"((/sim/view[(/sim/current-view/view-number-raw)]/config/root)(/sim/view[(/sim/current-view/view-number-raw)]/config/eye-lat-deg-path))",
|
||||||
|
_position.getLatitudeDeg()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
_position.setElevationFt(
|
||||||
|
ViewPropertyEvaluator::getDoubleValue(
|
||||||
|
"((/sim/view[(/sim/current-view/view-number-raw)]/config/root)(/sim/view[(/sim/current-view/view-number-raw)]/config/eye-alt-ft-path))",
|
||||||
|
_position.getElevationFt()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (_lookat_agl) {
|
if (_lookat_agl) {
|
||||||
handleAGL();
|
handleAGL();
|
||||||
|
|
Loading…
Reference in a new issue