cursor schmovement

This commit is contained in:
maelstrom 2024-12-01 13:08:45 +01:00
parent c75291a757
commit d6c332f1e7
7 changed files with 73 additions and 10 deletions

View file

@ -2,7 +2,10 @@ CompileFlags: # Tweak the parse settings, example directory given to show format
Add: Add:
- "--include-directory=../../src" - "--include-directory=../../src"
- "--include-directory=../src" - "--include-directory=../src"
- "--include-directory=./editor_autogen/include"
- "--include-directory=../.."
- "--include-directory=/usr/include/qt6/QtWidgets" - "--include-directory=/usr/include/qt6/QtWidgets"
- "--include-directory=/usr/include/qt6/QtOpenGLWidgets" - "--include-directory=/usr/include/qt6/QtOpenGLWidgets"
- "--include-directory=/usr/include/qt6" - "--include-directory=/usr/include/qt6"
- "--include-directory=/usr/include/qt6/QtGui" - "--include-directory=/usr/include/qt6/QtGui"
- "--include-directory=/usr/include/qt6/QtCore"

View file

@ -4,6 +4,11 @@
#include <QLocale> #include <QLocale>
#include <QTranslator> #include <QTranslator>
#include <QStyleFactory> #include <QStyleFactory>
#include <QBasicTimer>
#include "physics/simulation.h"
#include "qcoreevent.h"
#include "qobject.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {

View file

@ -1,6 +1,11 @@
#include "GL/glew.h" #include <GL/glew.h>
#include <chrono>
#include <QMouseEvent>
#include "part.h" #include "part.h"
#include "qevent.h"
#include "qnamespace.h"
#include "rendering/renderer.h" #include "rendering/renderer.h"
#include "physics/simulation.h" #include "physics/simulation.h"
#include "camera.h" #include "camera.h"
@ -55,12 +60,27 @@ void MainGLWidget::resizeGL(int w, int h) {
// ... // ...
} }
float lastTime = glfwGetTime();
void MainGLWidget::paintGL() { void MainGLWidget::paintGL() {
float deltaTime = glfwGetTime() - lastTime;
lastTime = glfwGetTime();
// processInput(NULL);
physicsStep(deltaTime);
::render(NULL); ::render(NULL);
} }
bool isMouseDragging = false;
QPoint lastMousePos;
void MainGLWidget::mouseMoveEvent(QMouseEvent* evt) {
// if (!(evt->buttons() & Qt::RightButton)) return;
if (!isMouseDragging) return;
camera.processRotation(evt->pos().x() - lastMousePos.x(), evt->pos().y() - lastMousePos.y());
lastMousePos = evt->pos();
}
void MainGLWidget::mousePressEvent(QMouseEvent* evt) {
if (evt->button() != Qt::RightButton) return;
lastMousePos = evt->pos();
isMouseDragging = true;
}
void MainGLWidget::mouseReleaseEvent(QMouseEvent* evt) {
isMouseDragging = false;
}

View file

@ -12,6 +12,10 @@ protected:
void initializeGL() override; void initializeGL() override;
void resizeGL(int w, int h) override; void resizeGL(int w, int h) override;
void paintGL() override; void paintGL() override;
void mouseMoveEvent(QMouseEvent* evt) override;
void mousePressEvent(QMouseEvent* evt) override;
void mouseReleaseEvent(QMouseEvent* evt) override;
}; };
#endif // MAINGLWIDGET_H #endif // MAINGLWIDGET_H

View file

@ -5,13 +5,38 @@
#include <QMessageBox> #include <QMessageBox>
#include <QProcess> #include <QProcess>
#include <QThread> #include <QThread>
#include "mainglwidget.h" #include <QTimerEvent>
#include <QMouseEvent>
#include <QWidget>
#include "common.h"
#include "physics/simulation.h"
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
, ui(new Ui::MainWindow) , ui(new Ui::MainWindow)
{ {
ui->setupUi(this); ui->setupUi(this);
timer.start(33, this);
setMouseTracking(true);
}
std::chrono::time_point lastTime = std::chrono::steady_clock::now();
void MainWindow::timerEvent(QTimerEvent* evt) {
if (evt->timerId() != timer.timerId()) {
QWidget::timerEvent(evt);
return;
}
float deltaTime = std::chrono::duration_cast<std::chrono::duration<float>>(std::chrono::steady_clock::now() - lastTime).count();
lastTime = std::chrono::steady_clock::now();
physicsStep(deltaTime);
ui->mainWidget->update();
}
void MainWindow::updateMainWidget() {
ui->mainWidget->update();
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()

View file

@ -1,6 +1,8 @@
#ifndef MAINWINDOW_H #ifndef MAINWINDOW_H
#define MAINWINDOW_H #define MAINWINDOW_H
#include "qbasictimer.h"
#include "qcoreevent.h"
#include <QMainWindow> #include <QMainWindow>
#include <QLineEdit> #include <QLineEdit>
@ -17,8 +19,12 @@ class MainWindow : public QMainWindow
public: public:
MainWindow(QWidget *parent = nullptr); MainWindow(QWidget *parent = nullptr);
~MainWindow(); ~MainWindow();
void updateMainWidget();
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
QBasicTimer timer;
void timerEvent(QTimerEvent*) override;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

View file

@ -16,7 +16,7 @@
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="MainGLWidget" name="openGLWidget"/> <widget class="MainGLWidget" name="mainWidget"/>
</item> </item>
</layout> </layout>
</widget> </widget>