#include <assert.h>
+#ifdef BUILD_VR
#include <goatvr.h>
+#endif
#include <cgmath/cgmath.h>
#include "opengl.h"
#include "game.h"
static void calc_framerate(void);
static void print_framerate(void);
-static float view_matrix[16], proj_matrix[16];
+#ifdef BUILD_VR
static int should_swap;
+#endif
static unsigned long framerate;
+
int game_init(int argc, char **argv)
{
if(init_opengl() == -1) {
return -1;
}
+#ifdef BUILD_VR
if(opt.flags & OPT_VR) {
if(goatvr_init() == -1) {
return -1;
}
goatvr_set_origin_mode(GOATVR_HEAD);
+ goatvr_set_units_scale(10.0f);
goatvr_startvr();
should_swap = goatvr_should_swap();
}
+#endif /* BUILD_VR */
+
+ glEnable(GL_DEPTH_TEST);
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHT0);
return 0;
}
void game_cleanup()
{
+#ifdef BUILD_VR
if(opt.flags & OPT_VR) {
goatvr_shutdown();
}
+#endif
cleanup_screens();
}
static void update(float dt)
{
- int num_vr_sticks;
-
- if((num_vr_sticks = goatvr_num_sticks()) > 0) {
- float p[2];
- goatvr_stick_pos(0, p);
- /* TODO */
- }
-
screen->update(dt);
}
void game_display(void)
{
static long prev_msec;
- int i;
float dt = (float)(time_msec - prev_msec) / 1000.0f;
prev_msec = time_msec;
update(dt);
+#ifdef BUILD_VR
if(opt.flags & OPT_VR) {
+ int i;
goatvr_draw_start();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
game_swap_buffers();
}
- } else {
+ } else
+#endif /* BUILD_VR */
+ {
/* non-VR mode */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- cgm_mperspective(proj_matrix, cgm_deg_to_rad(50.0), win_aspect, 0.5, 500.0);
+ cgm_mperspective(proj_matrix, cgm_deg_to_rad(40.0), win_aspect, 0.5, 500.0);
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(proj_matrix);
void game_reshape(int x, int y)
{
glViewport(0, 0, x, y);
+#ifdef BUILD_VR
goatvr_set_fb_size(x, y, 1.0f);
+#endif
reshape_screens(x, y);
}
}
break;
+ case KEY_HOME:
+#ifdef BUILD_VR
+ if(opt.flags & OPT_VR) {
+ goatvr_recenter();
+ }
+#endif
+ break;
+
default:
break;
}
void game_gamepad_axis(int axis, float val)
{
+ joy_axis[axis] = val;
}
void game_gamepad_button(int bn, int pressed)
{
+ if(pressed) {
+ joy_bnstate |= (1 << bn);
+ } else {
+ joy_bnstate &= ~(1 << bn);
+ }
}
static void calc_framerate(void)