55void QQuick3DXrController::setController(QQuick3DXrController::Controller newController)
57 if (m_controller == newController)
59 m_controller = newController;
60 emit controllerChanged();
62 disconnect(m_isActiveConnection);
64 QQuick3DXrInputManager::instance()->registerController(
this);
65 auto *input = handInput();
67 setVisible(input->isActive());
69 m_isActiveConnection = connect(input, &QQuick3DXrHandInput::isActiveChanged,
this, [
this, input]{
70 setVisible(input->isActive());
73 connect(input, &QQuick3DXrHandInput::pokePositionChanged,
this, &QQuick3DXrController::pokePositionChanged);
74 connect(input, &QQuick3DXrHandInput::jointPositionsChanged,
this, &QQuick3DXrController::jointPositionsChanged);
75 connect(input, &QQuick3DXrHandInput::jointRotationsChanged,
this, &QQuick3DXrController::jointRotationsChanged);
76 connect(input, &QQuick3DXrHandInput::jointDataUpdated,
this, &QQuick3DXrController::jointDataUpdated);
82QQuick3DXrHandInput *QQuick3DXrController::handInput()
const
84 if (m_inputManager && m_inputManager->isValid()) {
85 if (m_controller == ControllerRight)
86 return m_inputManager->rightHandInput();
87 else if (m_controller == ControllerLeft)
88 return m_inputManager->leftHandInput();
186 QSSG_ASSERT(controller != QQuick3DXrController::ControllerNone,
return QQuick3DXrInputManager::Hand::RightHand);
187 switch (controller) {
188 case QQuick3DXrController::ControllerLeft:
189 return QQuick3DXrInputManager::Hand::LeftHand;
190 case QQuick3DXrController::ControllerRight:
191 return QQuick3DXrInputManager::Hand::RightHand;