1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-26 01:50:36 +00:00

fixed a bug causing spinning in VR

This commit is contained in:
Zeno Rogue 2023-02-21 18:53:42 +01:00
parent 16e1e0d516
commit cf90d4e3c4

View File

@ -401,6 +401,7 @@ EX void full_rotate_camera(int dir, ld val) {
val *= camera_rot_speed; val *= camera_rot_speed;
if(third_person_rotation) shift_view(ctangent(2, -third_person_rotation)), didsomething = true, playermoved = false; if(third_person_rotation) shift_view(ctangent(2, -third_person_rotation)), didsomething = true, playermoved = false;
ld max_angle = 90._deg - 1e-4; ld max_angle = 90._deg - 1e-4;
ld max_angle1 = 90._deg - 0.5e-4;
if(walking::on && dir == 1) { if(walking::on && dir == 1) {
max_angle /= degree; max_angle /= degree;
walking::eye_angle += val * walking::eye_angle_scale / degree; walking::eye_angle += val * walking::eye_angle_scale / degree;
@ -411,9 +412,9 @@ EX void full_rotate_camera(int dir, ld val) {
hyperpoint vv = vertical_vector(); hyperpoint vv = vertical_vector();
ld alpha = -atan2(vv[2], vv[1]); ld alpha = -atan2(vv[2], vv[1]);
rotate_view(cspin(2, 1, alpha)); rotate_view(cspin(2, 1, alpha));
if(dir == 1 && alpha + val > max_angle) if(dir == 1 && alpha <= max_angle1 && alpha + val > max_angle)
val = max_angle - alpha; val = max_angle - alpha;
if(dir == 1 && alpha + val < -max_angle) if(dir == 1 && alpha >= -max_angle1 && alpha + val < -max_angle)
val = -max_angle - alpha; val = -max_angle - alpha;
rotate_view(cspin(dir, 2, val)); rotate_view(cspin(dir, 2, val));
rotate_view(cspin(1, 2, alpha)); rotate_view(cspin(1, 2, alpha));