#include "exhibit.h"
#include "snode.h"
+class ExhibitPriv {
+ Vec3 orig_pos;
+ Quat orig_rot;
+ SceneNode *orig_node;
+};
+
+ExSelection::ExSelection(Exhibit *ex)
+{
+ this->ex = ex;
+ obj = data = 0;
+ validmask = 0;
+}
+
+ExSelection::operator bool() const
+{
+ return ex != 0;
+}
+
Exhibit::Exhibit()
{
+ priv = new ExhibitPriv;
+ priv->orig_node = 0;
+}
+
+Exhibit::~Exhibit()
+{
+ delete priv;
}
-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)
#include "object.h"
#include "geom.h"
-/*
+class Exhibit;
+class ExhibitPriv;
+
+enum {
+ EXSEL_RAY = 1,
+ EXSEL_SPHERE = 2
+};
+
+class ExSelection {
+public:
+ Exhibit *ex;
+ void *obj;
+ void *data;
+ Ray selray;
+ Sphere selsphere;
+ unsigned int validmask;
+
+ ExSelection(Exhibit *ex = 0);
+
+ operator bool() const;
+};
+
+/* TODO
- select me aktina kai select me sfaira, epistrefei Selection
- hover me aktina kai hover me sfaira
- move me selection, origin, direction kai rotation (?)
*/
-
class Exhibit : public Object {
+private:
+ ExhibitPriv *priv;
+
public:
Exhibit();
- virtual ~Exhibit() = default;
+ virtual ~Exhibit();
Exhibit(const Exhibit&) = delete;
Exhibit &operator =(const Exhibit &) = delete;
- virtual void *select(const Ray &ray) const;
- virtual void *select(const Sphere &sph) const;
+ virtual ExSelection select(const Ray &ray) const;
+ virtual ExSelection select(const Sphere &sph) const;
virtual void update(float dt = 0.0f);