author | Wuzzy <Wuzzy2@mail.ru> |
Tue, 12 May 2020 22:21:19 +0200 | |
changeset 15582 | 6d0682485ed5 |
parent 14863 | ef9630519491 |
child 16039 | a73b9770467a |
permissions | -rw-r--r-- |
#ifndef GAMEVIEW_H #define GAMEVIEW_H #include <QQuickItem> #include <QPointer> #include <QScopedPointer> #include <QtGui/QOpenGLFunctions> #include <QtGui/QOpenGLShaderProgram> #include "engine_instance.h" class GameViewRenderer : public QObject, protected QOpenGLFunctions { Q_OBJECT public: explicit GameViewRenderer(); ~GameViewRenderer() override; void tick(quint32 delta); void setEngineInstance(EngineInstance* engineInstance); public slots: void paint(); void onViewportSizeChanged(QQuickWindow* window); private: quint32 m_delta; QPointer<EngineInstance> m_engineInstance; }; class GameView : public QQuickItem { Q_OBJECT Q_PROPERTY(EngineInstance* engineInstance READ engineInstance WRITE setEngineInstance NOTIFY engineInstanceChanged) public: explicit GameView(QQuickItem* parent = nullptr); Q_INVOKABLE void tick(quint32 delta); EngineInstance* engineInstance() const; signals: void engineInstanceChanged(EngineInstance* engineInstance); public slots: void sync(); void cleanup(); void setEngineInstance(EngineInstance* engineInstance); private slots: void handleWindowChanged(QQuickWindow* win); private: quint32 m_delta; QScopedPointer<GameViewRenderer> m_renderer; bool m_windowChanged; QPointer<EngineInstance> m_engineInstance; QSize m_viewportSize; QPoint m_centerPoint; }; #endif // GAMEVIEW_H