X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fapp.cc;h=17ab2fd80473e2f206a28301c11446d237d449b7;hp=24658ee4f62c1817428a12d2357e68494c8a15ba;hb=05fbfb6f2570953f8e98d99e58c7c763a0279c21;hpb=5b259c6064e9443d84f7a1154f8e02da444fb1c8 diff --git a/src/app.cc b/src/app.cc index 24658ee..17ab2fd 100644 --- a/src/app.cc +++ b/src/app.cc @@ -14,6 +14,7 @@ #include "opt.h" #include "post.h" #include "renderer.h" +#include "vrinput.h" #include "exman.h" #include "blob_exhibit.h" @@ -45,14 +46,7 @@ static float walk_speed = 300.0f; static float mouse_speed = 0.5f; static bool show_walk_mesh, noclip = false; -static bool have_headtracking, should_swap; -static bool have_handtracking; - -static struct { - Vec3 pos; - Quat rot; - bool valid; -} hand[2]; +static bool have_headtracking, have_handtracking, should_swap; static int prev_mx, prev_my; static bool bnstate[8]; @@ -119,6 +113,10 @@ bool app_init(int argc, char **argv) glClearColor(1, 1, 1, 1); + if(!init_vrhands()) { + return false; + } + mscn = new MetaScene; if(!mscn->load(opt.scenefile ? opt.scenefile : "data/museum.scene")) { return false; @@ -176,6 +174,7 @@ void app_cleanup() if(opt.vr) { goatvr_shutdown(); } + destroy_vrhands(); delete rend; @@ -298,16 +297,9 @@ static void update(float dt) mouse_view_matrix.pre_rotate_y(deg_to_rad(cam_theta)); mouse_view_matrix.pre_translate(-cam_pos.x, -cam_pos.y, -cam_pos.z); + // update hand-tracking if(have_handtracking) { - for(int i=0; i<2; i++) { - if(goatvr_hand_active(i)) { - goatvr_hand_position(i, &hand[i].pos.x); - goatvr_hand_orientation(i, &hand[i].rot.x); - hand[i].valid = true; - } else { - hand[i].valid = false; - } - } + update_vrhands(); } } @@ -348,6 +340,9 @@ void app_display() glLoadMatrixf(view_matrix[0]); draw_scene(); + if(have_handtracking) { + draw_vrhands(); + } } goatvr_draw_done(); @@ -395,6 +390,7 @@ static void draw_scene() blobs->draw(); } + /* if(have_handtracking) { Mat4 head_xform = inverse(mouse_view_matrix);//goatvr_head_matrix(); Mat4 head_dir_xform = head_xform.upper3x3(); @@ -424,6 +420,7 @@ static void draw_scene() glEnd(); glPopAttrib(); } + */ if(show_walk_mesh && mscn->walk_mesh) { glPushAttrib(GL_ENABLE_BIT);