diff options
author | Sebastian Park <SebPark03@gmail.com> | 2024-04-10 02:45:04 -0400 |
---|---|---|
committer | Sebastian Park <SebPark03@gmail.com> | 2024-04-10 02:45:04 -0400 |
commit | 47cd8a592ecad52c1b01f27d23476c0a5afeb7f1 (patch) | |
tree | 36b9abaff4e92a4a6df0d5ecb0e43e05c3aefd48 /wave-sim/src/glwidget.h | |
parent | fd19124693bb32835ad97802ba1950cd5202dbd2 (diff) |
initial
Diffstat (limited to 'wave-sim/src/glwidget.h')
-rwxr-xr-x | wave-sim/src/glwidget.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/wave-sim/src/glwidget.h b/wave-sim/src/glwidget.h new file mode 100755 index 0000000..d108ccc --- /dev/null +++ b/wave-sim/src/glwidget.h @@ -0,0 +1,62 @@ +#pragma once + +#ifdef __APPLE__ +#define GL_SILENCE_DEPRECATION +#endif + +#include "simulation.h" +#include "graphics/camera.h" +#include "graphics/shader.h" + +#include <QOpenGLWidget> +#include <QElapsedTimer> +#include <QTimer> +#include <memory> + +class GLWidget : public QOpenGLWidget +{ + Q_OBJECT + +public: + GLWidget(QWidget *parent = nullptr); + ~GLWidget(); + +private: + static const int FRAMES_TO_AVERAGE = 30; + +private: + // Basic OpenGL Overrides + void initializeGL() override; + void paintGL() override; + void resizeGL(int w, int h) override; + + // Event Listeners + void mousePressEvent (QMouseEvent *event) override; + void mouseMoveEvent (QMouseEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; + void wheelEvent (QWheelEvent *event) override; + void keyPressEvent (QKeyEvent *event) override; + void keyReleaseEvent (QKeyEvent *event) override; + +private: + QElapsedTimer m_deltaTimeProvider; // For measuring elapsed time + QTimer m_intervalTimer; // For triggering timed events + + Simulation m_sim; + Camera m_camera; + Shader *m_shader; + + int m_forward; + int m_sideways; + int m_vertical; + + int m_lastX; + int m_lastY; + + bool m_capture; + +private slots: + + // Physics Tick + void tick(); +}; |