qmlfrontend/gameview.h
author unc0rr
Tue, 02 Jan 2018 23:45:18 +0100
branchqmlfrontend
changeset 12876 b544bbbd0696
child 12883 adb1fccc706a
permissions -rw-r--r--
Break engine completely and make it render in frontend window (no actual rendering yet, just white screen)

#ifndef GAMEVIEW_H
#define GAMEVIEW_H

#include <QQuickItem>

#include <QtGui/QOpenGLFunctions>
#include <QtGui/QOpenGLShaderProgram>

class GameViewRenderer : public QObject, protected QOpenGLFunctions {
    Q_OBJECT
public:
    GameViewRenderer()
        : m_delta(0)
    {
    }
    ~GameViewRenderer();

    void tick(quint32 delta) { m_delta = delta; }
    void setViewportSize(const QSize& size) { m_viewportSize = size; }
    void setWindow(QQuickWindow* window) { m_window = window; }

public slots:
    void paint();

private:
    QSize m_viewportSize;
    quint32 m_delta;
    QQuickWindow* m_window;
};

class GameView : public QQuickItem {
    Q_OBJECT

public:
    GameView();

    Q_INVOKABLE void tick(quint32 delta);

signals:
    void tChanged();

public slots:
    void sync();
    void cleanup();

private slots:
    void handleWindowChanged(QQuickWindow* win);

private:
    quint32 m_delta;
    GameViewRenderer* m_renderer;
};

#endif // GAMEVIEW_H