qmlfrontend/game_view.h
changeset 14290 92e5682810d4
parent 14154 8354b390f1a2
child 14712 57293f34ce59
equal deleted inserted replaced
14289:12618cd83af8 14290:92e5682810d4
     1 #ifndef GAMEVIEW_H
     1 #ifndef GAMEVIEW_H
     2 #define GAMEVIEW_H
     2 #define GAMEVIEW_H
     3 
     3 
     4 #include <QQuickItem>
     4 #include <QQuickItem>
     5 
     5 
       
     6 #include <QPointer>
       
     7 #include <QScopedPointer>
     6 #include <QtGui/QOpenGLFunctions>
     8 #include <QtGui/QOpenGLFunctions>
     7 #include <QtGui/QOpenGLShaderProgram>
     9 #include <QtGui/QOpenGLShaderProgram>
       
    10 
       
    11 #include "engine_instance.h"
     8 
    12 
     9 class GameViewRenderer : public QObject, protected QOpenGLFunctions {
    13 class GameViewRenderer : public QObject, protected QOpenGLFunctions {
    10   Q_OBJECT
    14   Q_OBJECT
    11  public:
    15  public:
    12   GameViewRenderer() : m_delta(0) {}
    16   GameViewRenderer();
    13   ~GameViewRenderer();
    17   ~GameViewRenderer();
    14 
    18 
    15   void tick(quint32 delta) { m_delta = delta; }
    19   void tick(quint32 delta);
    16   void setViewportSize(const QSize& size);
    20   void setViewportSize(const QSize& size);
       
    21   void setEngineInstance(EngineInstance* engineInstance);
    17 
    22 
    18  public slots:
    23  public slots:
    19   void paint();
    24   void paint();
    20 
    25 
    21  private:
    26  private:
    22   quint32 m_delta;
    27   quint32 m_delta;
       
    28   QPointer<EngineInstance> m_engineInstance;
    23 };
    29 };
    24 
    30 
    25 class GameView : public QQuickItem {
    31 class GameView : public QQuickItem {
    26   Q_OBJECT
    32   Q_OBJECT
       
    33 
       
    34   Q_PROPERTY(EngineInstance* engineInstance READ engineInstance WRITE
       
    35                  setEngineInstance NOTIFY engineInstanceChanged)
    27 
    36 
    28  public:
    37  public:
    29   GameView();
    38   GameView();
    30 
    39 
    31   Q_INVOKABLE void tick(quint32 delta);
    40   Q_INVOKABLE void tick(quint32 delta);
    32 
    41 
       
    42   EngineInstance* engineInstance() const;
       
    43 
    33  signals:
    44  signals:
    34   void tChanged();
    45   void engineInstanceChanged(EngineInstance* engineInstance);
    35 
    46 
    36  public slots:
    47  public slots:
    37   void sync();
    48   void sync();
    38   void cleanup();
    49   void cleanup();
       
    50   void setEngineInstance(EngineInstance* engineInstance);
    39 
    51 
    40  private slots:
    52  private slots:
    41   void handleWindowChanged(QQuickWindow* win);
    53   void handleWindowChanged(QQuickWindow* win);
    42 
    54 
    43  private:
    55  private:
    44   quint32 m_delta;
    56   quint32 m_delta;
    45   GameViewRenderer* m_renderer;
    57   QScopedPointer<GameViewRenderer> m_renderer;
    46   bool m_windowChanged;
    58   bool m_windowChanged;
    47   qint32 m_centerX;
    59   qint32 m_centerX;
    48   qint32 m_centerY;
    60   qint32 m_centerY;
       
    61   QPointer<EngineInstance> m_engineInstance;
    49 };
    62 };
    50 
    63 
    51 #endif  // GAMEVIEW_H
    64 #endif  // GAMEVIEW_H