projects
/
laserbrain_demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new render target class while working on the exhibit UI
[laserbrain_demo]
/
src
/
app.cc
diff --git
a/src/app.cc
b/src/app.cc
index
620ec52
..
7fc5c13
100644
(file)
--- a/
src/app.cc
+++ b/
src/app.cc
@@
-21,6
+21,7
@@
#include "blob_exhibit.h"
#include "dbg_gui.h"
#include "geomdraw.h"
#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
#define NEAR_CLIP 5.0
#define FAR_CLIP 10000.0
@@
-170,6
+171,11
@@
bool app_init(int argc, char **argv)
//return false;
}
*/
//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;
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;
delete rend;
+ exui_shutdown();
+
/* this must be destroyed before the scene graph to detach exhibit nodes
* before the scene tries to delete them recursively
*/
/* 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);
mscn->update(dt);
exman->update(dt);
+ exui_update(dt);
float speed = walk_speed * dt;
Vec3 dir;
float speed = walk_speed * dt;
Vec3 dir;
@@
-351,13
+360,18
@@
static void update(float dt)
exsel_hover = exman->select(ray);
}
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);
// 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()
}
void app_display()
@@
-498,6
+512,8
@@
static void draw_scene()
glPopAttrib();
}
glPopAttrib();
}
+ exui_draw();
+
print_text(Vec2(9 * win_width / 10, 20), Vec3(1, 1, 0), "fps: %.1f", framerate);
draw_ui();
}
print_text(Vec2(9 * win_width / 10, 20), Vec3(1, 1, 0), "fps: %.1f", framerate);
draw_ui();
}