X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fexhibit.cc;h=2e818540258c98c52774c0f0ff6cd007f2037a96;hp=c525f77f144bf9d44f3c5f1cc730717fccb41b62;hb=37b68f014b46922b885c6344d6b069cba3c9c3c5;hpb=03085a16aa2fef785083fa3921be83015e08b290 diff --git a/src/exhibit.cc b/src/exhibit.cc index c525f77..2e81854 100644 --- a/src/exhibit.cc +++ b/src/exhibit.cc @@ -1,16 +1,8 @@ #include "exhibit.h" #include "snode.h" #include "scene.h" -#include "geomdraw.h" -class ExhibitPriv { -public: - Vec3 orig_pos; - Quat orig_rot; - SceneNode *orig_node; - - ExhibitPriv(); -}; +ExSelection ExSelection::null; // selection @@ -37,71 +29,45 @@ ExData::~ExData() delete voice; } -// private data for each exhibit type -ExhibitPriv::ExhibitPriv() -{ - orig_node = 0; -} - // exhibit class Exhibit::Exhibit() { - priv = new ExhibitPriv; + orig_parent = 0; + prev_slot = 0; } Exhibit::~Exhibit() { - delete priv; } void Exhibit::set_node(SceneNode *node) { - this->node = priv->orig_node = node; - priv->orig_pos = node->get_position(); - priv->orig_rot = node->get_rotation(); + this->node = node; + orig_parent = node->get_parent(); } 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) { } -void Exhibit::pre_draw() const -{ - if(node) { - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glMultMatrixf(node->get_matrix()[0]); - } -} - -void Exhibit::draw() const -{ -} - -void Exhibit::post_draw() const -{ - if(node) { - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - const AABox &bvol = get_aabox(); - debug_log("bvol (%g %g %g) -> (%g %g %g)\n", bvol.min.x, bvol.min.y, bvol.min.z, - bvol.max.x, bvol.max.y, bvol.max.z); - draw_geom_object(&bvol); - } -} - - const AABox &Exhibit::get_aabox() const { aabb = node->get_bounds();