OVR: Observer reset now works with both triggers (any time)
authorAndreas Eversberg <jolly@eversberg.eu>
Sat, 28 Apr 2018 13:15:04 +0000 (15:15 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sat, 28 Apr 2018 13:15:04 +0000 (15:15 +0200)
src/libovr/ovr.c
src/mercenary/main.c

index 204f10b..ff4a25a 100755 (executable)
@@ -107,14 +107,14 @@ static ovrLayerEyeFov layer;
 static int multisampling;
 static long long frameIndex = 0;
 static double observer_x = 0.0;
-static double observer_x_normalize = 0.0;
-static double hand_x_normalize = 0.0;
+static double observer_x_reset = 0.0;
+static double hand_x_reset = 0.0;
 static double observer_y = 0.0;
-static double observer_y_normalize = 0.0;
-static double hand_y_normalize = 0.0;
+static double observer_y_reset = 0.0;
+static double hand_y_reset = 0.0;
 static double observer_z = 0.0;
-static double observer_z_normalize = 0.0;
-static double hand_z_normalize = 0.0;
+static double observer_z_reset = 0.0;
+static double hand_z_reset = 0.0;
 
 int init_ovr(int _multisampling)
 {
@@ -257,9 +257,9 @@ void get_poses_ovr(int *button_a, int *button_b, int *button_x, int *button_y, i
        x = handPoses[ovrHand_Right].Position.x;
        y = handPoses[ovrHand_Right].Position.y;
        z = handPoses[ovrHand_Right].Position.z;
-       x += hand_x_normalize;
-       y += hand_y_normalize;
-       z += hand_z_normalize;
+       x += hand_x_reset;
+       y += hand_y_reset;
+       z += hand_z_reset;
        *hand_right_x = x / 0.0254;
        *hand_right_y = y / 0.0254;
        *hand_right_z = z / 0.0254;
@@ -353,13 +353,13 @@ void begin_render_ovr_eye(int eye, double *camera_x, double *camera_y, double *c
        y = layer.RenderPose[eye].Position.y;
        z = layer.RenderPose[eye].Position.z;
 
-       /* normalize height to game's observer, if requrested by user */
+       /* reset to game's observer, if requrested by user */
        observer_x = x;
-       x += observer_x_normalize;
+       x += observer_x_reset;
        observer_y = y;
-       y += observer_y_normalize;
+       y += observer_y_reset;
        observer_z = z;
-       z += observer_z_normalize;
+       z += observer_z_reset;
 
        glRotatef(-roll / M_PI * 180.0,0,0,1);
        glRotatef(-pitch / M_PI * 180.0,1,0,0);
@@ -438,14 +438,14 @@ void render_mirror_ovr(int view_width, int view_height)
        glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
 }
 
-void normalize_observer_ovr(void)
+void reset_observer_ovr(void)
 {
-       observer_x_normalize = -observer_x;
-       observer_y_normalize = -observer_y;
-       observer_z_normalize = -observer_z;
-       hand_x_normalize = -observer_x;
-       hand_y_normalize = -observer_y;
-       hand_z_normalize = -observer_z;
+       observer_x_reset = -observer_x;
+       observer_y_reset = -observer_y;
+       observer_z_reset = -observer_z;
+       hand_x_reset = -observer_x;
+       hand_y_reset = -observer_y;
+       hand_z_reset = -observer_z;
 }
 
 void exit_ovr(void)
index 6184fa4..0249547 100644 (file)
@@ -379,14 +379,12 @@ static void handle_vr_poses(void)
                else
                        help_view++;
        }
-       if (help_view) {
-               if (button_trigger && !button_trigger_last) {
-                       /* rigger pressed */
-                       normalize_observer_ovr();
-                       osd_info("", "change height");
-               }
-       } else {
-               /* handle input */
+       if (button_left_trigger && button_right_trigger) {
+               /* reset observer */
+               reset_observer_ovr();
+               osd_info("", "reset observer");
+       }
+       if (!help_view) {
                if (button_a && !button_a_last) {
                        /* keyboard A toggle */
                        if (keyboard_on == 1)
@@ -1056,8 +1054,8 @@ static void keyboard_sdl(int down, enum keycode keycode)
                        break;
                case KEYCODE_o:
 #ifdef HAVE_OVR
-                       normalize_observer_ovr();
-                       osd_info("", "change height");
+                       reset_observer_ovr();
+                       osd_info("", "reset observer");
 #else
                        osd_info("", "not applicable");
 #endif