#include "exhibit.h"
#include "snode.h"
#include "scene.h"
+#include "geomdraw.h"
+#include "app.h"
class ExhibitPriv {
public:
ExhibitPriv();
};
+
+// selection
ExSelection::ExSelection(Exhibit *ex)
{
this->ex = ex;
return ex != 0;
}
+// Exhibit data
+ExData::ExData()
+{
+ voice = 0;
+}
+
+ExData::~ExData()
+{
+ delete voice;
+}
+
+// private data for each exhibit type
ExhibitPriv::ExhibitPriv()
{
orig_node = 0;
}
+// exhibit class
Exhibit::Exhibit()
{
priv = new ExhibitPriv;
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)
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;
+}