Skip to content

Commit 2b5f469

Browse files
committed
[feature] Allow moving camera up/down using page up/down keys
1 parent 98bce5b commit 2b5f469

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/3d/qgscameracontroller.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
4949
, mKeyboardTyPosInput( new Qt3DInput::QButtonAxisInput() )
5050
, mKeyboardTxNegInput( new Qt3DInput::QButtonAxisInput() )
5151
, mKeyboardTyNegInput( new Qt3DInput::QButtonAxisInput() )
52+
, mTelevAxis( new Qt3DInput::QAxis() )
53+
, mKeyboardTelevPosInput( new Qt3DInput::QButtonAxisInput() )
54+
, mKeyboardTelevNegInput( new Qt3DInput::QButtonAxisInput() )
5255
{
5356

5457
// not using QAxis + QAnalogAxisInput for mouse X,Y because
@@ -115,6 +118,18 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
115118
mKeyboardTyNegInput->setSourceDevice( mKeyboardDevice );
116119
mTyAxis->addInput( mKeyboardTyNegInput );
117120

121+
// Keyboard Neg Telev
122+
mKeyboardTelevNegInput->setButtons( QVector<int>() << Qt::Key_PageDown );
123+
mKeyboardTelevNegInput->setScale( -1.0f );
124+
mKeyboardTelevNegInput->setSourceDevice( mKeyboardDevice );
125+
mTelevAxis->addInput( mKeyboardTelevNegInput );
126+
127+
// Keyboard Pos Telev
128+
mKeyboardTelevPosInput->setButtons( QVector<int>() << Qt::Key_PageUp );
129+
mKeyboardTelevPosInput->setScale( 1.0f );
130+
mKeyboardTelevPosInput->setSourceDevice( mKeyboardDevice );
131+
mTelevAxis->addInput( mKeyboardTelevPosInput );
132+
118133
mLogicalDevice->addAction( mLeftMouseButtonAction );
119134
mLogicalDevice->addAction( mMiddleMouseButtonAction );
120135
mLogicalDevice->addAction( mRightMouseButtonAction );
@@ -123,6 +138,7 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
123138
mLogicalDevice->addAxis( mWheelAxis );
124139
mLogicalDevice->addAxis( mTxAxis );
125140
mLogicalDevice->addAxis( mTyAxis );
141+
mLogicalDevice->addAxis( mTelevAxis );
126142

127143
// Disable the logical device when the entity is disabled
128144
connect( this, &Qt3DCore::QEntity::enabledChanged,
@@ -244,6 +260,7 @@ void QgsCameraController::frameTriggered( float dt )
244260

245261
float tx = mTxAxis->value() * dt * mCameraData.dist * 1.5;
246262
float ty = -mTyAxis->value() * dt * mCameraData.dist * 1.5;
263+
float telev = mTelevAxis->value() * dt * 300;
247264

248265
if ( !mShiftAction->isActive() && ( tx || ty ) )
249266
{
@@ -282,6 +299,9 @@ void QgsCameraController::frameTriggered( float dt )
282299
mCameraData.y -= p2.y() - p1.y();
283300
}
284301

302+
if ( telev != 0 )
303+
mCameraData.elev += telev;
304+
285305
if ( std::isnan( mCameraData.x ) || std::isnan( mCameraData.y ) )
286306
{
287307
// something went horribly wrong but we need to at least try to fix it somehow

src/3d/qgscameracontroller.h

+4
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,10 @@ class _3D_EXPORT QgsCameraController : public Qt3DCore::QEntity
175175
Qt3DInput::QButtonAxisInput *mKeyboardTyPosInput = nullptr;
176176
Qt3DInput::QButtonAxisInput *mKeyboardTxNegInput = nullptr;
177177
Qt3DInput::QButtonAxisInput *mKeyboardTyNegInput = nullptr;
178+
179+
Qt3DInput::QAxis *mTelevAxis = nullptr;
180+
Qt3DInput::QButtonAxisInput *mKeyboardTelevPosInput = nullptr;
181+
Qt3DInput::QButtonAxisInput *mKeyboardTelevNegInput = nullptr;
178182
};
179183

180184
#endif // QGSCAMERACONTROLLER_H

0 commit comments

Comments
 (0)