select and move exhibits
[laserbrain_demo] / src / exhibit.cc
index b8d44cc..266a583 100644 (file)
@@ -2,6 +2,7 @@
 #include "snode.h"
 #include "scene.h"
 #include "geomdraw.h"
+#include "app.h"
 
 class ExhibitPriv {
 public:
@@ -63,12 +64,20 @@ void Exhibit::set_node(SceneNode *node)
 
 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
 {
-       return ExSelection(0);
+       return ExSelection(0);  // TODO
 }
 
 void Exhibit::update(float dt)
@@ -94,8 +103,10 @@ void Exhibit::post_draw() const
                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);
+               }
        }
 }