57void QQuick3DXrController::setController(QQuick3DXrController::Controller newController)
59 if (m_controller == newController)
61 m_controller = newController;
62 emit controllerChanged();
64 disconnect(m_isActiveConnection);
66 QQuick3DXrInputManager::instance()->registerController(
this);
67 auto *input = handInput();
69 setVisible(input->isActive());
71 m_isActiveConnection = connect(input, &QQuick3DXrHandInput::isActiveChanged,
this, [
this, input]{
72 setVisible(input->isActive());
75 connect(input, &QQuick3DXrHandInput::pokePositionChanged,
this, &QQuick3DXrController::pokePositionChanged);
76 connect(input, &QQuick3DXrHandInput::jointPositionsChanged,
this, &QQuick3DXrController::jointPositionsChanged);
77 connect(input, &QQuick3DXrHandInput::jointRotationsChanged,
this, &QQuick3DXrController::jointRotationsChanged);
78 connect(input, &QQuick3DXrHandInput::jointDataUpdated,
this, &QQuick3DXrController::jointDataUpdated);
84QQuick3DXrHandInput *QQuick3DXrController::handInput()
const
86 if (m_inputManager && m_inputManager->isValid()) {
87 if (m_controller == ControllerRight)
88 return m_inputManager->rightHandInput();
89 else if (m_controller == ControllerLeft)
90 return m_inputManager->leftHandInput();
188 QSSG_ASSERT(controller != QQuick3DXrController::ControllerNone,
return QQuick3DXrInputManager::Hand::RightHand);
189 switch (controller) {
190 case QQuick3DXrController::ControllerLeft:
191 return QQuick3DXrInputManager::Hand::LeftHand;
192 case QQuick3DXrController::ControllerRight:
193 return QQuick3DXrInputManager::Hand::RightHand;