summaryrefslogtreecommitdiff
path: root/wave-sim/src/glwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'wave-sim/src/glwidget.h')
-rwxr-xr-xwave-sim/src/glwidget.h62
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();
+};