1 /****************************************************************************
2 **
3 ** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the Qt3D module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL3$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPLv3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or later as published by the Free
28 ** Software Foundation and appearing in the file LICENSE.GPL included in
29 ** the packaging of this file. Please review the following information to
30 ** ensure the GNU General Public License version 2.0 requirements will be
31 ** met: http://www.gnu.org/licenses/gpl-2.0.html.
32 **
33 ** $QT_END_LICENSE$
34 **
35 ****************************************************************************/
36 
37 #ifndef QT3DEXTRAS_QABSTRACTCAMERACONTROLLER_P_H
38 #define QT3DEXTRAS_QABSTRACTCAMERACONTROLLER_P_H
39 
40 //
41 //  W A R N I N G
42 //  -------------
43 //
44 // This file is not part of the Qt API.  It exists for the convenience
45 // of other Qt classes.  This header file may change from version to
46 // version without notice, or even be removed.
47 //
48 // We mean it.
49 //
50 
51 #include <Qt3DExtras/qabstractcameracontroller.h>
52 #include <QtGui/QVector3D>
53 
54 #include <Qt3DCore/private/qentity_p.h>
55 
56 QT_BEGIN_NAMESPACE
57 
58 namespace Qt3DRender {
59 class QCamera;
60 }
61 
62 namespace Qt3DLogic {
63 class QFrameAction;
64 }
65 
66 namespace Qt3DInput {
67 class QKeyboardDevice;
68 class QMouseDevice;
69 class QLogicalDevice;
70 class QAction;
71 class QActionInput;
72 class QAxis;
73 class QAnalogAxisInput;
74 class QButtonAxisInput;
75 class QAxisActionHandler;
76 }
77 
78 namespace Qt3DExtras {
79 
80 class QAbstractCameraControllerPrivate : public Qt3DCore::QEntityPrivate
81 {
82 public:
83     QAbstractCameraControllerPrivate();
84 
85     void init();
86     void applyInputAccelerations();
87 
88     Qt3DRender::QCamera *m_camera;
89 
90     Qt3DInput::QAction *m_leftMouseButtonAction;
91     Qt3DInput::QAction *m_middleMouseButtonAction;
92     Qt3DInput::QAction *m_rightMouseButtonAction;
93     Qt3DInput::QAction *m_altButtonAction;
94     Qt3DInput::QAction *m_shiftButtonAction;
95     Qt3DInput::QAction *m_escapeButtonAction;
96 
97     Qt3DInput::QAxis *m_rxAxis;
98     Qt3DInput::QAxis *m_ryAxis;
99     Qt3DInput::QAxis *m_txAxis;
100     Qt3DInput::QAxis *m_tyAxis;
101     Qt3DInput::QAxis *m_tzAxis;
102 
103     Qt3DInput::QActionInput *m_leftMouseButtonInput;
104     Qt3DInput::QActionInput *m_middleMouseButtonInput;
105     Qt3DInput::QActionInput *m_rightMouseButtonInput;
106     Qt3DInput::QActionInput *m_altButtonInput;
107     Qt3DInput::QActionInput *m_shiftButtonInput;
108     Qt3DInput::QActionInput *m_escapeButtonInput;
109 
110     Qt3DInput::QAnalogAxisInput *m_mouseRxInput;
111     Qt3DInput::QAnalogAxisInput *m_mouseRyInput;
112     Qt3DInput::QAnalogAxisInput *m_mouseTzXInput;
113     Qt3DInput::QAnalogAxisInput *m_mouseTzYInput;
114     Qt3DInput::QButtonAxisInput *m_keyboardTxPosInput;
115     Qt3DInput::QButtonAxisInput *m_keyboardTyPosInput;
116     Qt3DInput::QButtonAxisInput *m_keyboardTzPosInput;
117     Qt3DInput::QButtonAxisInput *m_keyboardTxNegInput;
118     Qt3DInput::QButtonAxisInput *m_keyboardTyNegInput;
119     Qt3DInput::QButtonAxisInput *m_keyboardTzNegInput;
120 
121     Qt3DInput::QKeyboardDevice *m_keyboardDevice;
122     Qt3DInput::QMouseDevice *m_mouseDevice;
123 
124     Qt3DInput::QLogicalDevice *m_logicalDevice;
125 
126     Qt3DLogic::QFrameAction *m_frameAction;
127 
128     float m_linearSpeed;
129     float m_lookSpeed;
130 
131     float m_acceleration;
132     float m_deceleration;
133 
134     QVector3D m_sceneUp;
135 
136     Q_DECLARE_PUBLIC(QAbstractCameraController)
137 };
138 
139 } // namespace Qt3DExtras
140 
141 QT_END_NAMESPACE
142 
143 #endif // QT3DEXTRAS_QABSTRACTCAMERACONTROLLER_P_H
144