X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fapp.cc;h=7fc5c13a581151b9acc7f0cc764724378e133f08;hp=620ec52a0db290a78a83f7d5c1969ffdc9d46c53;hb=92e1b315a32da123b2f8d7bb633375033a10c66d;hpb=7ffa5c50d9254af9bd746fc5e6bc8e5db8eda675 diff --git a/src/app.cc b/src/app.cc index 620ec52..7fc5c13 100644 --- a/src/app.cc +++ b/src/app.cc @@ -21,6 +21,7 @@ #include "blob_exhibit.h" #include "dbg_gui.h" #include "geomdraw.h" +#include "ui_exhibit.h" #define NEAR_CLIP 5.0 #define FAR_CLIP 10000.0 @@ -170,6 +171,11 @@ bool app_init(int argc, char **argv) //return false; } */ + if(!exui_init()) { + error_log("failed to initialize exhibit ui system\n"); + return false; + } + exui_setnode(&exslot_left.node); if(!(sdr_ltmap_notex = create_program_load("sdr/lightmap.v.glsl", "sdr/lightmap-notex.p.glsl"))) { return false; @@ -217,6 +223,8 @@ void app_cleanup() delete rend; + exui_shutdown(); + /* this must be destroyed before the scene graph to detach exhibit nodes * before the scene tries to delete them recursively */ @@ -253,6 +261,7 @@ static void update(float dt) mscn->update(dt); exman->update(dt); + exui_update(dt); float speed = walk_speed * dt; Vec3 dir; @@ -351,13 +360,18 @@ static void update(float dt) exsel_hover = exman->select(ray); } - if(!exslot_left.empty()) exslot_left.node.update(dt); - if(!exslot_right.empty()) exslot_right.node.update(dt); - // update hand-tracking if(have_handtracking) { update_vrhands(&avatar); + } else { + // set the position of the left hand at a suitable position for the exhibit UI + Vec3 dir = transpose(mouse_view_matrix.upper3x3()) * Vec3(0, 0, -1); + exslot_left.node.set_position(avatar.pos + dir * 30); // magic: distance in front } + + if(!exslot_right.empty()) exslot_right.node.update(dt); + // always update the left slot, because it's the anchor point of the exhibit ui + exslot_left.node.update(dt); } void app_display() @@ -498,6 +512,8 @@ static void draw_scene() glPopAttrib(); } + exui_draw(); + print_text(Vec2(9 * win_width / 10, 20), Vec3(1, 1, 0), "fps: %.1f", framerate); draw_ui(); }