equal
deleted
inserted
replaced
1 #include "gameview.h" |
1 #include "gameview.h" |
2 |
2 |
|
3 #include <QCursor> |
|
4 #include <QTimer> |
3 #include <QtGui/QOpenGLContext> |
5 #include <QtGui/QOpenGLContext> |
4 #include <QtGui/QOpenGLShaderProgram> |
6 #include <QtGui/QOpenGLShaderProgram> |
5 #include <QtQuick/qquickwindow.h> |
7 #include <QtQuick/qquickwindow.h> |
6 |
8 |
7 #include "flib.h" |
9 #include "flib.h" |
8 |
10 |
9 extern "C" { |
11 extern "C" { |
10 extern GameTick_t* flibGameTick; |
12 extern GameTick_t* flibGameTick; |
11 extern ResizeWindow_t* flibResizeWindow; |
13 extern ResizeWindow_t* flibResizeWindow; |
|
14 extern updateMousePosition_t* flibUpdateMousePosition; |
12 } |
15 } |
13 |
16 |
14 GameView::GameView() |
17 GameView::GameView() |
15 : m_delta(0) |
18 : m_delta(0) |
16 , m_renderer(0) |
19 , m_renderer(0) |
20 } |
23 } |
21 |
24 |
22 void GameView::tick(quint32 delta) |
25 void GameView::tick(quint32 delta) |
23 { |
26 { |
24 m_delta = delta; |
27 m_delta = delta; |
25 if (window()) |
28 |
26 window()->update(); |
29 if (window()) { |
|
30 QTimer* timer = new QTimer(this); |
|
31 connect(timer, &QTimer::timeout, window(), &QQuickWindow::update); |
|
32 timer->start(100); |
|
33 |
|
34 //window()->update(); |
|
35 } |
27 } |
36 } |
28 |
37 |
29 void GameView::handleWindowChanged(QQuickWindow* win) |
38 void GameView::handleWindowChanged(QQuickWindow* win) |
30 { |
39 { |
31 if (win) { |
40 if (win) { |
51 if (!m_renderer) { |
60 if (!m_renderer) { |
52 m_renderer = new GameViewRenderer(); |
61 m_renderer = new GameViewRenderer(); |
53 connect(window(), &QQuickWindow::beforeRendering, m_renderer, &GameViewRenderer::paint, Qt::DirectConnection); |
62 connect(window(), &QQuickWindow::beforeRendering, m_renderer, &GameViewRenderer::paint, Qt::DirectConnection); |
54 } |
63 } |
55 |
64 |
56 if (m_windowChanged) |
65 if (m_windowChanged) { |
57 m_renderer->setViewportSize(window()->size() * window()->devicePixelRatio()); |
66 QSize windowSize = window()->size(); |
|
67 m_renderer->setViewportSize(windowSize * window()->devicePixelRatio()); |
|
68 m_centerX = windowSize.width() / 2; |
|
69 m_centerY = windowSize.height() / 2; |
|
70 } |
|
71 |
|
72 QPoint mousePos = mapFromGlobal(QCursor::pos()).toPoint(); |
|
73 if (flibUpdateMousePosition(m_centerX, m_centerY, mousePos.x(), mousePos.y())) |
|
74 QCursor::setPos(mapToGlobal(QPointF(m_centerX, m_centerY)).toPoint()); |
58 |
75 |
59 m_renderer->tick(m_delta); |
76 m_renderer->tick(m_delta); |
60 } |
77 } |
61 |
78 |
62 GameViewRenderer::~GameViewRenderer() |
79 GameViewRenderer::~GameViewRenderer() |