#ifndef _SCENE_H_ #define _SCENE_H_ #include "types.h" class QKeyEvent; class QMouseEvent; class QWheelEvent; class Scene : public QObject { Q_OBJECT public: static unsigned int sceneCount; Scene(const QString& name, Window* window); ~Scene(); const QString& getName() { return m_name; } void setName(const QString& name) { m_name = name; } Window* getWindow() { return m_window; } void setWindow(Window* w) { m_window = w; } Context* getContext() { return m_context; } void setContext(Context* c) { m_context = c; } void initGL(); void updateGL(); void draw(View *v); void keyPressEvent(QKeyEvent* event); void keyReleaseEvent(QKeyEvent *e); void mousePressEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* event); void mouseMoveEvent(QMouseEvent* event); void wheelEvent(QWheelEvent* event); /********************************************************* * MANAGE VIEWS *********************************************************/ void linkView(View* view); void unlinkView(View* view); View* getLinkedView(int num); QList getLinkedViews() { return l_views; } int getNbLinkedViews() { return l_views.size(); } /********************************************************* * MANAGE PLUGINS *********************************************************/ void linkPlugin(Plugin* plugin, bool callInitGL = true); void unlinkPlugin(Plugin* plugin); QList getLinkedPlugins() { return l_plugins; } bool isLinkedToPlugins() { return !l_plugins.isEmpty(); } bool isLinkedToPlugin(Plugin* plugin) { return l_plugins.contains(plugin); } // void linkWithPlugin(); // void unlinkPlugin(); // VBOHandler* addNewVBO(QString name); // void addVBO(VBOHandler* vbo); // VBOHandler* findVBO(QString name); // VBOHandler* findFirstVBOMatching(QRegExp regexp); // QList findVBOsMatching(QRegExp regexp); // VBOHandler* takeVBO(VBOHandler* vbo); void firstViewFitSphere(float x, float y, float z, float radius); protected: QString m_name; Window* m_window; Context* m_context; QList l_views; QList l_plugins; // QList l_vbo; // QList l_viewButtons; }; #endif