projects
/
laserbrain_demo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
select and move exhibits
[laserbrain_demo]
/
src
/
exhibit.cc
diff --git
a/src/exhibit.cc
b/src/exhibit.cc
index
b8d44cc
..
266a583
100644
(file)
--- a/
src/exhibit.cc
+++ b/
src/exhibit.cc
@@
-2,6
+2,7
@@
#include "snode.h"
#include "scene.h"
#include "geomdraw.h"
#include "snode.h"
#include "scene.h"
#include "geomdraw.h"
+#include "app.h"
class ExhibitPriv {
public:
class ExhibitPriv {
public:
@@
-63,12
+64,20
@@
void Exhibit::set_node(SceneNode *node)
ExSelection Exhibit::select(const Ray &ray) const
{
ExSelection Exhibit::select(const Ray &ray) const
{
- return ExSelection(0);
+ ExSelection sel;
+ HitPoint hit;
+ if(get_aabox().intersect(ray, &hit)) {
+ sel.ex = (Exhibit*)this;
+ sel.selray = ray;
+ sel.dist = hit.dist;
+ sel.validmask = EXSEL_RAY;
+ }
+ return sel;
}
ExSelection Exhibit::select(const Sphere &sph) const
{
}
ExSelection Exhibit::select(const Sphere &sph) const
{
- return ExSelection(0);
+ return ExSelection(0); // TODO
}
void Exhibit::update(float dt)
}
void Exhibit::update(float dt)
@@
-94,8
+103,10
@@
void Exhibit::post_draw() const
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
- const AABox &bvol = get_aabox();
- draw_geom_object(&bvol);
+ if(exsel_hover.ex == this) {
+ const AABox &bvol = get_aabox();
+ draw_geom_object(&bvol);
+ }
}
}
}
}