projects
/
mercenary-reloaded.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
OVR: Add option to reset observer position
[mercenary-reloaded.git]
/
src
/
libovr
/
ovr.c
diff --git
a/src/libovr/ovr.c
b/src/libovr/ovr.c
index
79fd874
..
62c2a03
100755
(executable)
--- 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 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)
{
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;
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);
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);
}
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;
void exit_ovr(void)
{
int eye;