#include "mainwindow.h" #include "./ui_mainwindow.h" #include #include #include #include #include #include #include #include "common.h" #include "physics/simulation.h" #include "objects/part.h" #include "wayland-pointer-constraints-unstable-v1-client-protocol.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); timer.start(33, this); setMouseTracking(true); simulationInit(); // Baseplate workspace->AddChild(ui->mainWidget->lastPart = Part::New({ .position = glm::vec3(0, -5, 0), .rotation = glm::vec3(0), .scale = glm::vec3(512, 1.2, 512), .material = Material { .diffuse = glm::vec3(0.388235, 0.372549, 0.384314), .specular = glm::vec3(0.5f, 0.5f, 0.5f), .shininess = 32.0f, }, .anchored = true, })); syncPartPhysics(ui->mainWidget->lastPart); workspace->AddChild(ui->mainWidget->lastPart = Part::New({ .position = glm::vec3(0), .rotation = glm::vec3(0), .scale = glm::vec3(4, 1.2, 2), .material = Material { .diffuse = glm::vec3(0.639216f, 0.635294f, 0.647059f), .specular = glm::vec3(0.5f, 0.5f, 0.5f), .shininess = 32.0f, } })); syncPartPhysics(ui->mainWidget->lastPart); } static 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::steady_clock::now() - lastTime).count(); lastTime = std::chrono::steady_clock::now(); physicsStep(deltaTime); ui->mainWidget->update(); ui->mainWidget->updateCycle(); } MainWindow::~MainWindow() { delete ui; }