X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fexhibit.cc;h=c525f77f144bf9d44f3c5f1cc730717fccb41b62;hp=444fc400bbac8bc674cc66d897a7cff381800fb3;hb=03085a16aa2fef785083fa3921be83015e08b290;hpb=cddee551d9bc9ec58e15aeb673f7e8fcf3c163ce diff --git a/src/exhibit.cc b/src/exhibit.cc index 444fc40..c525f77 100644 --- a/src/exhibit.cc +++ b/src/exhibit.cc @@ -1,12 +1,19 @@ #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(); }; + +// selection ExSelection::ExSelection(Exhibit *ex) { this->ex = ex; @@ -19,10 +26,27 @@ ExSelection::operator bool() const 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; - priv->orig_node = 0; } Exhibit::~Exhibit() @@ -30,6 +54,13 @@ 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(); +} + ExSelection Exhibit::select(const Ray &ray) const { return ExSelection(0); @@ -62,5 +93,17 @@ 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(); + return aabb; +}