refactor: Extract camera logic to Camera class
Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
64
src/Camera.h
Normal file
64
src/Camera.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#ifndef CAMERA_H
|
||||
#define CAMERA_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QMatrix4x4>
|
||||
#include <QPoint>
|
||||
#include <QMouseEvent>
|
||||
#include <QWheelEvent>
|
||||
|
||||
class Camera : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(float xRotation READ xRotation WRITE setXRotation)
|
||||
Q_PROPERTY(float yRotation READ yRotation WRITE setYRotation)
|
||||
Q_PROPERTY(float zoom READ zoom WRITE setZoom)
|
||||
Q_PROPERTY(float panX READ panX WRITE setPanX)
|
||||
Q_PROPERTY(float panY READ panY WRITE setPanY)
|
||||
|
||||
public:
|
||||
explicit Camera(QObject *parent = nullptr);
|
||||
|
||||
void processMouseMovement(QMouseEvent* event, const QPoint& lastPos);
|
||||
void processWheel(QWheelEvent* event);
|
||||
|
||||
QMatrix4x4 modelViewMatrix() const;
|
||||
|
||||
float xRotation() const;
|
||||
void setXRotation(float angle);
|
||||
float yRotation() const;
|
||||
void setYRotation(float angle);
|
||||
float zoom() const;
|
||||
void setZoom(float value);
|
||||
float panX() const;
|
||||
void setPanX(float value);
|
||||
float panY() const;
|
||||
void setPanY(float value);
|
||||
|
||||
void saveState();
|
||||
void restoreState();
|
||||
|
||||
float savedXRot() const { return m_savedXRot; }
|
||||
float savedYRot() const { return m_savedYRot; }
|
||||
float savedZoom() const { return m_savedZoom; }
|
||||
float savedPanX() const { return m_savedPanX; }
|
||||
float savedPanY() const { return m_savedPanY; }
|
||||
|
||||
signals:
|
||||
void cameraChanged();
|
||||
|
||||
private:
|
||||
float m_xRot;
|
||||
float m_yRot;
|
||||
float m_zoom;
|
||||
float m_panX;
|
||||
float m_panY;
|
||||
|
||||
float m_savedXRot = 0;
|
||||
float m_savedYRot = 0;
|
||||
float m_savedZoom = -5.0f;
|
||||
float m_savedPanX = 0;
|
||||
float m_savedPanY = 0;
|
||||
};
|
||||
|
||||
#endif // CAMERA_H
|
||||
Reference in New Issue
Block a user