From 9ccec44eb0ed161ed5269208a39919a4ea2a08de Mon Sep 17 00:00:00 2001 From: Benjamin Kraft Date: Tue, 19 Sep 2023 22:03:18 +0200 Subject: [PATCH] minor fixes --- src/GLWidget.cpp | 4 +--- src/GLWidget.h | 2 +- src/MainWindow.cpp | 5 ++++- src/MainWindow.h | 2 +- src/Overlay.cpp | 3 ++- src/Overlay.h | 2 +- src/Simulation.h | 3 ++- src/main.cpp | 1 + 8 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/GLWidget.cpp b/src/GLWidget.cpp index d54161e..b7a0e54 100644 --- a/src/GLWidget.cpp +++ b/src/GLWidget.cpp @@ -14,7 +14,7 @@ GLWidget::GLWidget(Simulation * simulation) : simulation(simulation) { startTimer(1000 / 144); overlay = new Overlay(simulation); connect(simulation, &Simulation::layoutChanged, this, &GLWidget::uploadStaticDataToGPU); - connect(simulation, &Simulation::layoutChanged, overlay, &Overlay::fetchEnergyLimit); + connect(simulation, &Simulation::layoutChanged, overlay, &Overlay::resetEnergyLimit); connect(simulation, &Simulation::positionChanged, this, &GLWidget::changePosition); } @@ -44,8 +44,6 @@ void GLWidget::initializeGL() { uploadStaticDataToGPU(); overlay->init(); - - std::cout << format().swapInterval() << std::endl; } void GLWidget::paintGL() { diff --git a/src/GLWidget.h b/src/GLWidget.h index 7b5da54..ff52e0c 100644 --- a/src/GLWidget.h +++ b/src/GLWidget.h @@ -12,6 +12,7 @@ class Overlay; class GLWidget : public QOpenGLWidget, protected QOpenGLExtraFunctions { public: explicit GLWidget(Simulation *); + Overlay * overlay; protected: void timerEvent(QTimerEvent* e) override; void initializeGL() override; @@ -37,6 +38,5 @@ private: bool showMasses; Simulation * simulation; - Overlay * overlay; static bool AnyDialogOpen(); }; \ No newline at end of file diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 5db725b..a77431a 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -16,6 +16,7 @@ #include #include #include +#include "Overlay.h" MainWindow::MainWindow() { simulationThread = new QThread(this); @@ -328,6 +329,8 @@ QWidget * MainWindow::buildSimulationUI() { }); substepsSlider = new Slider<>(substepsLabel, "Substeps: %d", &simulation->substeps); + connect(gravitySlider, &QSlider::valueChanged, glWidget->overlay, &Overlay::resetEnergyLimit); + gravitySlider->setMaximum(3000); timescaleSlider->setMinimum(1); timescaleSlider->setMaximum(500); @@ -441,7 +444,7 @@ void MainWindow::add() { void MainWindow::resetSimulationControl() { gravitySlider->setValue(981); timescaleSlider->setValue(100); - substepsSlider->setValue(5); + substepsSlider->setValue(20); } void MainWindow::toggleSimulation() { diff --git a/src/MainWindow.h b/src/MainWindow.h index 103b6d8..b61bc53 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -27,7 +27,7 @@ private: std::vector masses, lengths; int segments = 0; - int startingAngle = 90; + int startingAngle = 135; QColor color = Qt::white; bool multiple = false; bool rainbow = false; diff --git a/src/Overlay.cpp b/src/Overlay.cpp index 5db2bb6..6021c0d 100644 --- a/src/Overlay.cpp +++ b/src/Overlay.cpp @@ -172,6 +172,7 @@ void Overlay::drawTexture(QImage *image) { glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, nullptr); } -void Overlay::fetchEnergyLimit() { +void Overlay::resetEnergyLimit() { + simulation->updateEnergy(); energyLimit = simulation->kineticEnergy + simulation->potentialEnergy; } diff --git a/src/Overlay.h b/src/Overlay.h index 0e4af91..64b16c8 100644 --- a/src/Overlay.h +++ b/src/Overlay.h @@ -20,7 +20,7 @@ class Overlay : public QObject, protected QOpenGLExtraFunctions { Simulation * simulation; double energyLimit = 0; public slots: - void fetchEnergyLimit(); + void resetEnergyLimit(); public: explicit Overlay(Simulation *); void init(); diff --git a/src/Simulation.h b/src/Simulation.h index bea0365..c3a204f 100644 --- a/src/Simulation.h +++ b/src/Simulation.h @@ -29,6 +29,8 @@ public: std::mutex pendulaMutex; FPS * ups; + + void updateEnergy(); signals: void layoutChanged(); void positionChanged(); @@ -38,7 +40,6 @@ public slots: private slots: void update(); private: - void updateEnergy(); QTimer * timer; int updateInterval = 16; }; \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 2f7af61..d1499f9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,6 +10,7 @@ using namespace std::chrono; int main(int argc, char* argv[]) { QSurfaceFormat fmt = QSurfaceFormat::defaultFormat(); fmt.setDepthBufferSize(24); + fmt.setSamples(8); fmt.setSwapInterval(1); fmt.setVersion(3, 3); fmt.setProfile(QSurfaceFormat::CoreProfile);