fixed FOV menu to automatically change its upper bound on high-fov modes

This commit is contained in:
Zeno Rogue 2024-01-07 09:08:44 +01:00
parent 7ad955dcff
commit fc808d448b
1 changed files with 24 additions and 20 deletions

View File

@ -2521,14 +2521,7 @@ EX ld max_fov_angle() {
return acos(-p) * 2 / degree;
}
EX void add_edit_fov(char key IS('f')) {
string sfov = fts(vid.fov) + "°";
if(get_stereo_param()) {
sfov += " / " + fts(max_fov_angle()) + "°";
}
dialog::addSelItem(XLAT("field of view"), sfov, key);
dialog::add_action([=] {
EX void edit_fov_screen() {
dialog::editNumber(vid.fov, 1, max_fov_angle(), 1, 90, "field of view",
XLAT(
"Horizontal field of view, in angles. "
@ -2542,12 +2535,23 @@ EX void add_edit_fov(char key IS('f')) {
dialog::bound_low(1e-8);
dialog::bound_up(max_fov_angle() - 0.01);
dialog::get_di().extra_options = [] {
auto ptr = dynamic_cast<dialog::number_dialog*> (screens.back().target_base());
if(ptr && ptr->vmax != max_fov_angle()) { popScreen(); edit_fov_screen(); return; }
add_edit(vid.stereo_mode, 'M');
if(among(vid.stereo_mode, sPanini, sStereographic)) {
add_edit(vid.stereo_param, 'P');
}
};
});
}
EX void add_edit_fov(char key IS('f')) {
string sfov = fts(vid.fov) + "°";
if(get_stereo_param()) {
sfov += " / " + fts(max_fov_angle()) + "°";
}
dialog::addSelItem(XLAT("field of view"), sfov, key);
dialog::add_action(edit_fov_screen);
}
bool supported_ods() {