X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fexman.cc;h=6517b65f1b3dafe30a3e7bfc5f6046c6609558ac;hp=28f3700c80aad471881484467e282ce2a7bdb686;hb=827f01e0ede01a7dd640c8055f1a169cb85e32f9;hpb=b75b6703809abf0dc02f2e557ba73e9efbefa4d1 diff --git a/src/exman.cc b/src/exman.cc index 28f3700..6517b65 100644 --- a/src/exman.cc +++ b/src/exman.cc @@ -73,6 +73,25 @@ bool ExhibitManager::load(MetaScene *mscn, const char *fname) continue; } + const char *desc = ts_get_attr_str(node, "description"); + const char *voice = ts_get_attr_str(node, "voiceover"); + if(desc || voice) { + ExData exd; + + if(desc) { + exd.text = std::string(desc); + } + if(voice) { + exd.voice = new OggVorbisStream; + if(!exd.voice->open(voice)) { + error_log("failed to open voiceover: %s\n", voice); + delete exd.voice; + exd.voice = 0; + } + } + ex->data.push_back(exd); + } + ex->set_node(snode); items.push_back(ex); } @@ -84,18 +103,35 @@ bool ExhibitManager::load(MetaScene *mscn, const char *fname) ExSelection ExhibitManager::select(const Ray &ray) const { - return ExSelection(); // TODO + ExSelection sel; + if(!items.empty()) { + sel.ex = items[0]; + sel.selray = ray; + sel.validmask = EXSEL_RAY; + } + return sel; // TODO } ExSelection ExhibitManager::select(const Sphere &sph) const { - return ExSelection(); // TODO + ExSelection sel; + if(!items.empty()) { + sel.ex = items[0]; + sel.selsphere = sph; + sel.validmask = EXSEL_SPHERE; + } + return sel; // TODO } void ExhibitManager::update(float dt) { int num = items.size(); for(int i=0; inode->get_parent()) { + items[i]->node->update(dt); + } items[i]->update(dt); } }