#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
float ambient[] = {0.0, 0.0, 0.0, 0.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
- glClearColor(1, 1, 1, 1);
-
init_audio();
if(!init_vrhands()) {
//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;
delete rend;
+ exui_shutdown();
+
/* this must be destroyed before the scene graph to detach exhibit nodes
* before the scene tries to delete them recursively
*/
mscn->update(dt);
exman->update(dt);
+ exui_update(dt);
float speed = walk_speed * dt;
Vec3 dir;
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 {
+ // TODO do this properly
+ // set the position of the left hand at a suitable position for the exhibit UI
+ dir = rotate(Vec3(-0.46, -0.1, -1), Vec3(0, 1, 0), deg_to_rad(-avatar.body_rot));
+ 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()
ImGui::ShowTestWindow();
}
+ glClearColor(1, 1, 1, 1);
+
if(opt.vr) {
// VR mode
goatvr_draw_start();
glPopAttrib();
}
+ exui_draw();
+
print_text(Vec2(9 * win_width / 10, 20), Vec3(1, 1, 0), "fps: %.1f", framerate);
draw_ui();
}