@@ -49,6 +49,9 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
49
49
, mKeyboardTyPosInput( new Qt3DInput::QButtonAxisInput() )
50
50
, mKeyboardTxNegInput( new Qt3DInput::QButtonAxisInput() )
51
51
, mKeyboardTyNegInput( new Qt3DInput::QButtonAxisInput() )
52
+ , mTelevAxis( new Qt3DInput::QAxis() )
53
+ , mKeyboardTelevPosInput( new Qt3DInput::QButtonAxisInput() )
54
+ , mKeyboardTelevNegInput( new Qt3DInput::QButtonAxisInput() )
52
55
{
53
56
54
57
// not using QAxis + QAnalogAxisInput for mouse X,Y because
@@ -115,6 +118,18 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
115
118
mKeyboardTyNegInput ->setSourceDevice ( mKeyboardDevice );
116
119
mTyAxis ->addInput ( mKeyboardTyNegInput );
117
120
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
+
118
133
mLogicalDevice ->addAction ( mLeftMouseButtonAction );
119
134
mLogicalDevice ->addAction ( mMiddleMouseButtonAction );
120
135
mLogicalDevice ->addAction ( mRightMouseButtonAction );
@@ -123,6 +138,7 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
123
138
mLogicalDevice ->addAxis ( mWheelAxis );
124
139
mLogicalDevice ->addAxis ( mTxAxis );
125
140
mLogicalDevice ->addAxis ( mTyAxis );
141
+ mLogicalDevice ->addAxis ( mTelevAxis );
126
142
127
143
// Disable the logical device when the entity is disabled
128
144
connect ( this , &Qt3DCore::QEntity::enabledChanged,
@@ -244,6 +260,7 @@ void QgsCameraController::frameTriggered( float dt )
244
260
245
261
float tx = mTxAxis ->value () * dt * mCameraData .dist * 1.5 ;
246
262
float ty = -mTyAxis ->value () * dt * mCameraData .dist * 1.5 ;
263
+ float telev = mTelevAxis ->value () * dt * 300 ;
247
264
248
265
if ( !mShiftAction ->isActive () && ( tx || ty ) )
249
266
{
@@ -282,6 +299,9 @@ void QgsCameraController::frameTriggered( float dt )
282
299
mCameraData .y -= p2.y () - p1.y ();
283
300
}
284
301
302
+ if ( telev != 0 )
303
+ mCameraData .elev += telev;
304
+
285
305
if ( std::isnan ( mCameraData .x ) || std::isnan ( mCameraData .y ) )
286
306
{
287
307
// something went horribly wrong but we need to at least try to fix it somehow
0 commit comments