aboutsummaryrefslogtreecommitdiff
path: root/libs/preview_nif/src/Camera.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/preview_nif/src/Camera.h')
-rw-r--r--libs/preview_nif/src/Camera.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/libs/preview_nif/src/Camera.h b/libs/preview_nif/src/Camera.h
new file mode 100644
index 0000000..3d685ea
--- /dev/null
+++ b/libs/preview_nif/src/Camera.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <QObject>
+#include <QVector3D>
+
+class Camera : public QObject
+{
+ Q_OBJECT
+
+public:
+ QVector3D lookAt() { return m_LookAt; }
+ float pitch() { return m_Pitch; }
+ float yaw() { return m_Yaw; }
+ float distance() { return m_Distance; }
+
+ void setDistance(float distance);
+ void setLookAt(QVector3D lookAt);
+
+ void pan(QVector3D delta);
+ void rotate(float yaw, float pitch);
+ void zoomDistance(float distance);
+ void zoomFactor(float factor);
+
+private:
+ inline static constexpr float MinDistance = 1.0f;
+ inline static constexpr float MaxDistance = 5000.0f;
+
+ static float repeat(float value, float min, float max);
+
+ QVector3D m_LookAt;
+ float m_Pitch = 0.0f;
+ float m_Yaw = 0.0f;
+ float m_Distance = 100.0f;
+
+signals:
+ void cameraMoved();
+};