cursor schmovement
This commit is contained in:
parent
c75291a757
commit
d6c332f1e7
5
.clangd
5
.clangd
|
@ -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"
|
|
@ -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[])
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue