mirror of https://github.com/qt/qtdoc.git
54 lines
1.6 KiB
QML
54 lines
1.6 KiB
QML
// Copyright (C) 2024 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
import QtQuick
|
|
import QtQuick3D
|
|
import QtQuick3D.Physics
|
|
import QtQuick3D.Xr
|
|
|
|
Node {
|
|
id: gripper
|
|
property alias hand: action.hand
|
|
property Node torchBody: null
|
|
|
|
XrInputAction {
|
|
id: action
|
|
actionId: [XrInputAction.SqueezeValue]
|
|
onValueChanged: {
|
|
if (gripper.torchBody) {
|
|
if (value > 0.5) {
|
|
gripper.torchBody.attachedTo = gripper
|
|
}else if (gripper.torchBody.attachedTo) {
|
|
gripper.torchBody.attachedTo = null
|
|
gripper.torchBody = null
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
TriggerBody {
|
|
scale: Qt.vector3d(0.03, 0.03, 0.03)
|
|
collisionShapes: [SphereShape{}]
|
|
|
|
onBodyEntered: (body)=>{
|
|
if (body.objectName === "Torch" &&
|
|
!gripper.torchBody) {
|
|
gripper.torchBody = body
|
|
}
|
|
}
|
|
onBodyExited: (body)=>{
|
|
if (body.objectName === "Torch" &&
|
|
gripper.torchBody &&
|
|
!gripper.torchBody.attachedTo) {
|
|
gripper.torchBody = null
|
|
}
|
|
}
|
|
Model {
|
|
source: "#Sphere"
|
|
materials: PrincipledMaterial {
|
|
baseColor: gripper.torchBody ? "green" : "white"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|