X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fexhibit.cc;h=eaa2251ae17d673c57fc9f93993fd07e95cf7f1c;hp=444fc400bbac8bc674cc66d897a7cff381800fb3;hb=827f01e0ede01a7dd640c8055f1a169cb85e32f9;hpb=cddee551d9bc9ec58e15aeb673f7e8fcf3c163ce diff --git a/src/exhibit.cc b/src/exhibit.cc index 444fc40..eaa2251 100644 --- a/src/exhibit.cc +++ b/src/exhibit.cc @@ -1,12 +1,18 @@ #include "exhibit.h" #include "snode.h" +#include "scene.h" class ExhibitPriv { +public: Vec3 orig_pos; Quat orig_rot; SceneNode *orig_node; + + ExhibitPriv(); }; + +// selection ExSelection::ExSelection(Exhibit *ex) { this->ex = ex; @@ -19,10 +25,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 +53,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);