X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=mercenary-reloaded.git;a=blobdiff_plain;f=src%2Flibovr%2Fovr.c;h=62c2a03b4572dfdae43832eb00c1e10f77921186;hp=79fd8742a559dc86309ffdb81800fc515f08abe0;hb=b2cc4449430eba1840dde2c85d192b7305f11074;hpb=78d699f1ba5e77c593a451f75f98140a503c9eda diff --git a/src/libovr/ovr.c b/src/libovr/ovr.c index 79fd874..62c2a03 100755 --- a/src/libovr/ovr.c +++ b/src/libovr/ovr.c @@ -99,6 +99,12 @@ static ovrEyeRenderDesc eyeRenderDesc[2]; static ovrPosef hmdToEyeViewPose[2]; static ovrLayerEyeFov layer; static long long frameIndex = 0; +static double observer_x = 0.0; +static double observer_x_normalize = 0.0; +static double observer_y = 0.0; +static double observer_y_normalize = 0.0; +static double observer_z = 0.0; +static double observer_z_normalize = 0.0; int init_ovr(void) { @@ -240,6 +246,14 @@ void begin_render_ovr_eye(int eye) y = layer.RenderPose[eye].Position.y; z = layer.RenderPose[eye].Position.z; + /* normalize height to game's observer, if requrested by user */ + observer_x = x; + x += observer_x_normalize; + observer_y = y; + y += observer_y_normalize; + observer_z = z; + z += observer_z_normalize; + glRotatef(-roll / M_PI * 180.0,0,0,1); glRotatef(-pitch / M_PI * 180.0,1,0,0); glRotatef(-yaw / M_PI * 180.0,0,1,0); @@ -314,6 +328,13 @@ void render_mirror_ovr(int view_width, int view_height) glDisable(GL_TEXTURE_2D); } +void normalize_observer_ovr(void) +{ + observer_x_normalize = -observer_x; + observer_y_normalize = -observer_y; + observer_z_normalize = -observer_z; +} + void exit_ovr(void) { int eye;