aboutsummaryrefslogtreecommitdiff
path: root/libs/preview_nif/src/Camera.h
blob: 3d685eab67d79ff2c5c05fbf7c898a9f88c5a402 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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();
};