qmlfrontend/game_view.cpp
changeset 14298 00b56ec8b7df
parent 14290 92e5682810d4
child 14712 57293f34ce59
equal deleted inserted replaced
14297:a6c5ce147530 14298:00b56ec8b7df
    43 void GameView::setEngineInstance(EngineInstance* engineInstance) {
    43 void GameView::setEngineInstance(EngineInstance* engineInstance) {
    44   if (m_engineInstance == engineInstance) return;
    44   if (m_engineInstance == engineInstance) return;
    45 
    45 
    46   cleanup();
    46   cleanup();
    47   m_engineInstance = engineInstance;
    47   m_engineInstance = engineInstance;
    48   engineInstance->setOpenGLContext(window()->openglContext());
    48 
    49   emit engineInstanceChanged(m_engineInstance);
    49   emit engineInstanceChanged(m_engineInstance);
    50 }
    50 }
    51 
    51 
    52 void GameView::sync() {
    52 void GameView::sync() {
    53   if (!m_renderer) {
    53   if (!m_renderer && m_engineInstance) {
       
    54     m_engineInstance->setOpenGLContext(window()->openglContext());
    54     m_renderer.reset(new GameViewRenderer());
    55     m_renderer.reset(new GameViewRenderer());
       
    56     m_renderer->setEngineInstance(m_engineInstance);
    55     connect(window(), &QQuickWindow::beforeRendering, m_renderer.data(),
    57     connect(window(), &QQuickWindow::beforeRendering, m_renderer.data(),
    56             &GameViewRenderer::paint, Qt::DirectConnection);
    58             &GameViewRenderer::paint, Qt::DirectConnection);
    57   }
    59   }
    58 
    60 
    59   if (m_windowChanged) {
    61   if (m_windowChanged) {
    66   // QPoint mousePos = mapFromGlobal(QCursor::pos()).toPoint();
    68   // QPoint mousePos = mapFromGlobal(QCursor::pos()).toPoint();
    67   // if (flibUpdateMousePosition(m_centerX, m_centerY, mousePos.x(),
    69   // if (flibUpdateMousePosition(m_centerX, m_centerY, mousePos.x(),
    68   // mousePos.y()))
    70   // mousePos.y()))
    69   //  QCursor::setPos(mapToGlobal(QPointF(m_centerX, m_centerY)).toPoint());
    71   //  QCursor::setPos(mapToGlobal(QPointF(m_centerX, m_centerY)).toPoint());
    70 
    72 
    71   m_renderer->tick(m_delta);
    73   if (m_renderer) m_renderer->tick(m_delta);
    72 }
    74 }
    73 
    75 
    74 GameViewRenderer::GameViewRenderer()
    76 GameViewRenderer::GameViewRenderer()
    75     : QObject(), m_delta(0), m_engineInstance(nullptr) {}
    77     : QObject(), m_delta(0), m_engineInstance(nullptr) {}
    76 
    78