summaryrefslogtreecommitdiff
path: root/src/glwidget.h
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2024-04-09 03:14:17 -0400
committersotech117 <michael_foiani@brown.edu>2024-04-09 03:14:17 -0400
commit7a8d0d8bc2572707c9d35006f30ea835c86954b0 (patch)
treededb9a65c1698202ad485378b4186b667008abe5 /src/glwidget.h
parent818324678bd5dca790c57048e5012d2937a4b5e5 (diff)
first draft to generate waves
Diffstat (limited to 'src/glwidget.h')
-rwxr-xr-xsrc/glwidget.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/glwidget.h b/src/glwidget.h
new file mode 100755
index 0000000..b319756
--- /dev/null
+++ b/src/glwidget.h
@@ -0,0 +1,72 @@
+#pragma once
+
+#ifdef __APPLE__
+#define GL_SILENCE_DEPRECATION
+#endif
+
+#include "arap.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;
+
+ Eigen::Vector3f transformToWorldRay(int x, int y);
+
+ // 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 slots:
+ // Physics Tick
+ void tick();
+
+private:
+ ARAP m_arap;
+ Camera m_camera;
+ Shader *m_defaultShader;
+ Shader *m_pointShader;
+
+ float m_movementScaling;
+ float m_vertexSelectionThreshold;
+ float m_vSize;
+
+ // Timing
+ QElapsedTimer m_deltaTimeProvider; // For measuring elapsed time
+ QTimer m_intervalTimer; // For triggering timed events
+
+ // Movement
+ int m_forward;
+ int m_sideways;
+ int m_vertical;
+
+ // Mouse handler stuff
+ int m_lastX;
+ int m_lastY;
+ bool m_leftCapture;
+ bool m_rightCapture;
+ SelectMode m_rightClickSelectMode;
+ int m_lastSelectedVertex = -1;
+};