X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fexhibit.cc;h=266a5835da32100a90b95028c14842cfbc8e06ff;hp=eaa2251ae17d673c57fc9f93993fd07e95cf7f1c;hb=b5ed5107e21ff834d5a4510b9047f976abb03dff;hpb=827f01e0ede01a7dd640c8055f1a169cb85e32f9 diff --git a/src/exhibit.cc b/src/exhibit.cc index eaa2251..266a583 100644 --- a/src/exhibit.cc +++ b/src/exhibit.cc @@ -1,6 +1,8 @@ #include "exhibit.h" #include "snode.h" #include "scene.h" +#include "geomdraw.h" +#include "app.h" class ExhibitPriv { public: @@ -62,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) @@ -92,5 +102,17 @@ void Exhibit::post_draw() const if(node) { glMatrixMode(GL_MODELVIEW); glPopMatrix(); + + if(exsel_hover.ex == this) { + const AABox &bvol = get_aabox(); + draw_geom_object(&bvol); + } } } + + +const AABox &Exhibit::get_aabox() const +{ + aabb = node->get_bounds(); + return aabb; +}