Files
o3de/Code/Editor/GotoPositionDlg.h
T
Tom Hulton-Harrop b54215552c Prevent the camera from easily being set to an invalid orientation (#6203)
* add temporary debug logging

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* improvement for box select sometimes getting stuck on

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* add temporary debug logging

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* improvement for box select sometimes getting stuck on

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* remove temporary logging

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* fixes for camera pitch issues

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* missed file with camera pitch fixes

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* remove debug logs

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>

* add some tests for new pitch constraint updates

Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
2021-12-08 09:42:40 +00:00

57 lines
1.4 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#pragma once
#if !defined(Q_MOC_RUN)
#include <QDialog>
#endif
#include <SandboxAPI.h>
#include <AzCore/std/functional.h>
namespace Ui
{
class GotoPositionDialog;
}
//! Utility to deal with ensuring camera pitch values are in the expected range.
struct GotoPositionPitchConstraints
{
using AngleRangeConfigureFn = AZStd::function<void(float, float)>;
//! Notify a callback with the min and max camera pitch constraints (no tolerance included).
SANDBOX_API void DeterminePitchRange(const AngleRangeConfigureFn& configurePitchRangeFn) const;
//! Returns the clamped pitch value (including tolerance with range extents).
SANDBOX_API float PitchClampedRadians(float pitchDegrees) const;
};
//! GotoPositionDialog for setting camera position and rotation.
class GotoPositionDialog : public QDialog
{
Q_OBJECT
public:
explicit GotoPositionDialog(QWidget* parent = nullptr);
~GotoPositionDialog();
protected:
void OnInitDialog();
void accept() override;
void OnUpdateNumbers();
void OnChangeEdit();
public:
QString m_transform;
private:
GotoPositionPitchConstraints m_gotoPositionPitchConstraints;
QScopedPointer<Ui::GotoPositionDialog> m_ui;
};