4#ifndef QQUICK3DXRCONTROLLER_H
5#define QQUICK3DXRCONTROLLER_H
18#include <QtQuick3DXr/qtquick3dxrglobal.h>
21#include <QtQuick3D/private/qquick3dnode_p.h>
22#include <QtQml/QQmlEngine>
32 Q_PROPERTY(Controller controller READ controller WRITE setController NOTIFY controllerChanged FINAL)
33 Q_PROPERTY(
bool isActive READ isActive NOTIFY isActiveChanged FINAL)
34 Q_PROPERTY(HandPoseSpace poseSpace READ poseSpace WRITE setPoseSpace NOTIFY poseSpaceChanged FINAL)
36 Q_PROPERTY(QVector3D pokePosition READ pokePosition NOTIFY pokePositionChanged FINAL)
37 Q_PROPERTY(QList<QVector3D> jointPositions READ jointPositions NOTIFY jointPositionsChanged FINAL)
38 Q_PROPERTY(QList<QQuaternion> jointRotations READ jointRotations NOTIFY jointRotationsChanged FINAL)
40 QML_NAMED_ELEMENT(XrController)
41 QML_ADDED_IN_VERSION(6, 8)
47 LeftController = ControllerLeft,
48 RightController = ControllerRight,
49 LeftHand = ControllerLeft,
50 RightHand = ControllerRight,
51 UnknownController = ControllerNone,
55 enum class HandPoseSpace {
61 QQuick3DXrController();
63 QQuick3DXrController::Controller controller()
const;
64 void setController(QQuick3DXrController::Controller newController);
66 QQuick3DXrHandInput *handInput()
const;
68 HandPoseSpace poseSpace()
const;
69 void setPoseSpace(HandPoseSpace newPoseSpace);
71 QVector3D pokePosition()
const;
73 QList<QVector3D> jointPositions()
const;
74 QList<QQuaternion> jointRotations()
const;
76 bool isActive()
const;
79 void controllerChanged();
80 void actionMapperChanged();
82 void poseSpaceChanged();
84 void pokePositionChanged();
86 void jointPositionsChanged();
87 void jointRotationsChanged();
88 void jointDataUpdated();
90 void isActiveChanged();
93 QPointer<QQuick3DXrInputManager> m_inputManager;
94 Controller m_controller = ControllerNone;
95 QMetaObject::Connection m_isActiveConnection;
96 HandPoseSpace m_poseSpace = HandPoseSpace::AimPose;
97 QVector3D m_pokePosition;
static void registerAction(QQuick3DXrInputAction *action)
static void handleInput(QQuick3DXrInputAction::Action id, QQuick3DXrInputAction::Controller hand, const char *shortName, float value)
static QList< QPointer< QQuick3DXrHapticFeedback > > getHapticEffects(QQuick3DXrInputAction::Controller hand)
static void registerHapticEffect(QPointer< QQuick3DXrHapticFeedback >)
static void removeHapticEffect(QQuick3DXrHapticFeedback *action)
static void removeAction(QQuick3DXrInputAction *action)
Hand hand() const
\qmlproperty enumeration XrHandModel::hand
void setHand(Hand newHand)
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
void handTrackerChanged()
void classBegin() override
Invoked after class creation, but before any properties have been set.
void hapticEffectChanged()
void setCondition(enum Condition newCondition)
~QQuick3DXrHapticFeedback() override
void setController(Controller newController)
void setTrigger(bool newTrigger)
enum Condition condition() const
\qmlproperty enumeration QtQuick3D.Xr::XrHapticFeedback::condition
void stop()
\qmlmethod void XrHapticFeedback::stop
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
void setHapticEffect(QQuick3DXrAbstractHapticEffect *newHapticEffect)
QQuick3DXrAbstractHapticEffect * hapticEffect() const
\qmlproperty XrHapticEffect XrHapticFeedback::hapticEffect
Controller controller() const
\qmlproperty enumeration QtQuick3D.Xr::XrHapticFeedback::controller
void setAmplitude(float newAmplitude)
void setFrequency(float newFrequency)
void setDuration(float newDuration)
QtQuick3DXr::Hand handForController(QQuick3DXrController::Controller controller)
QtQuick3DXr::HandPoseSpace pose_cast(QQuick3DXrController::HandPoseSpace poseSpace)