34 lines
861 B
C++
34 lines
861 B
C++
// Copyright (C) 2016 Klaralvdalens Datakonsult AB (KDAB).
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
|
|
|
#pragma once
|
|
#include <QAbstractCameraController>
|
|
#include <QVector2D>
|
|
|
|
class OrbitCameraController : public Qt3DExtras::QAbstractCameraController
|
|
{
|
|
Q_OBJECT
|
|
|
|
float m_zoomInLimit = 10.0;
|
|
float m_zoomFactor = 1.0;
|
|
QVector2D m_orthoSize;
|
|
|
|
void updateProjection();
|
|
|
|
public:
|
|
explicit OrbitCameraController(QVector2D orthoSize, Qt3DCore::QNode *parent = nullptr);
|
|
~OrbitCameraController();
|
|
|
|
float zoomInLimit() const;
|
|
|
|
void setZoomInLimit(float zoomInLimit);
|
|
void setZoomFactor(float factor);
|
|
void setOrthoSize(QVector2D orthoSize);
|
|
|
|
signals:
|
|
void zoomInLimitChanged();
|
|
|
|
private:
|
|
virtual void moveCamera(const Qt3DExtras::QAbstractCameraController::InputState &state, float dt) override;
|
|
};
|