X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fexhibit.h;h=fd1d77b7ef94b7015d4871b64a9531f099502ad2;hb=fc00873a180b1b7272d94a32dcc40d0d44ed2b72;hp=004626c9d51d09d4e0c2469269492e14b2cb76bc;hpb=cddee551d9bc9ec58e15aeb673f7e8fcf3c163ce;p=laserbrain_demo diff --git a/src/exhibit.h b/src/exhibit.h index 004626c..fd1d77b 100644 --- a/src/exhibit.h +++ b/src/exhibit.h @@ -1,12 +1,15 @@ #ifndef EXHIBIT_H_ #define EXHIBIT_H_ +#include #include #include "object.h" #include "geom.h" +#include "audio/stream.h" class Exhibit; -class ExhibitPriv; +class ExhibitSlot; +class Scene; enum { EXSEL_RAY = 1, @@ -15,11 +18,14 @@ enum { class ExSelection { public: + static ExSelection null; // null selection + Exhibit *ex; void *obj; void *data; Ray selray; Sphere selsphere; + float dist; unsigned int validmask; ExSelection(Exhibit *ex = 0); @@ -27,6 +33,24 @@ public: operator bool() const; }; +enum { + EXDATA_INFO, + EXDATA_VIDEO +}; + +class ExData { +public: + int type; + + std::string text; + AudioStream *voice; + // TODO: video stream + + ExData(); + ~ExData(); +}; + + /* TODO - select me aktina kai select me sfaira, epistrefei Selection - hover me aktina kai hover me sfaira @@ -34,23 +58,30 @@ public: */ class Exhibit : public Object { private: - ExhibitPriv *priv; + SceneNode *orig_parent; public: + ExhibitSlot *prev_slot; + std::vector data; + Exhibit(); virtual ~Exhibit(); Exhibit(const Exhibit&) = delete; Exhibit &operator =(const Exhibit &) = delete; + virtual void set_node(SceneNode *node); + virtual ExSelection select(const Ray &ray) const; virtual ExSelection select(const Sphere &sph) const; - virtual void update(float dt = 0.0f); + virtual void update(float dt = 0.0f) override; virtual void pre_draw() const; - virtual void draw() const; + virtual void draw() const override; virtual void post_draw() const; + + virtual const AABox &get_aabox() const override; }; #endif // EXHIBIT_H_