X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fexhibit.cc;h=d76b2912ba5caf727cabe8e125f09d6925f45a21;hp=86533436a3a4cff60a55dc3db966dee0f335ab21;hb=c790c297ef925b7f2257ad41e2123cf86305822c;hpb=004eca3966c8cc7bed607311a90d56eecab1752f diff --git a/src/exhibit.cc b/src/exhibit.cc index 8653343..d76b291 100644 --- a/src/exhibit.cc +++ b/src/exhibit.cc @@ -1,18 +1,58 @@ #include "exhibit.h" #include "snode.h" +#include "scene.h" + +class ExhibitPriv { +public: + Vec3 orig_pos; + Quat orig_rot; + SceneNode *orig_node; + + ExhibitPriv(); +}; + +ExSelection::ExSelection(Exhibit *ex) +{ + this->ex = ex; + obj = data = 0; + validmask = 0; +} + +ExSelection::operator bool() const +{ + return ex != 0; +} + +ExhibitPriv::ExhibitPriv() +{ + orig_node = 0; +} Exhibit::Exhibit() { + priv = new ExhibitPriv; +} + +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(); } -void *Exhibit::select(const Ray &ray) const +ExSelection Exhibit::select(const Ray &ray) const { - return 0; // TODO + return ExSelection(0); } -void *Exhibit::select(const Sphere &sph) const +ExSelection Exhibit::select(const Sphere &sph) const { - return 0; // TODO + return ExSelection(0); } void Exhibit::update(float dt)