1 |
- {"ast":null,"code":"import { WebXRAbstractMotionController } from \"./webXRAbstractMotionController.js\";\nimport { WebXRMotionControllerManager } from \"./webXRMotionControllerManager.js\";\nimport { Mesh } from \"../../Meshes/mesh.js\";\nimport { Quaternion } from \"../../Maths/math.vector.js\";\n/**\n * The motion controller class for oculus touch (quest, rift).\n * This class supports legacy mapping as well the standard xr mapping\n */\nexport class WebXROculusTouchMotionController extends WebXRAbstractMotionController {\n constructor(scene, gamepadObject, handedness, _legacyMapping = false, _forceLegacyControllers = false) {\n super(scene, OculusTouchLayouts[handedness], gamepadObject, handedness);\n this._forceLegacyControllers = _forceLegacyControllers;\n this.profileId = \"oculus-touch\";\n }\n _getFilenameAndPath() {\n let filename = \"\";\n if (this.handedness === \"left\") {\n filename = WebXROculusTouchMotionController.MODEL_LEFT_FILENAME;\n } else {\n // Right is the default if no hand is specified\n filename = WebXROculusTouchMotionController.MODEL_RIGHT_FILENAME;\n }\n const path = this._isQuest() ? WebXROculusTouchMotionController.QUEST_MODEL_BASE_URL : WebXROculusTouchMotionController.MODEL_BASE_URL;\n return {\n filename,\n path\n };\n }\n _getModelLoadingConstraints() {\n return true;\n }\n _processLoadedModel(_meshes) {\n const isQuest = this._isQuest();\n const triggerDirection = this.handedness === \"right\" ? -1 : 1;\n this.getComponentIds().forEach(id => {\n const comp = id && this.getComponent(id);\n if (comp) {\n comp.onButtonStateChangedObservable.add(component => {\n if (!this.rootMesh || this.disableAnimation) {\n return;\n }\n switch (id) {\n case \"xr-standard-trigger\":\n // index trigger\n if (!isQuest) {\n this._modelRootNode.getChildren()[3].rotation.x = -component.value * 0.2;\n this._modelRootNode.getChildren()[3].position.y = -component.value * 0.005;\n this._modelRootNode.getChildren()[3].position.z = -component.value * 0.005;\n }\n return;\n case \"xr-standard-squeeze\":\n // secondary trigger\n if (!isQuest) {\n this._modelRootNode.getChildren()[4].position.x = triggerDirection * component.value * 0.0035;\n }\n return;\n case \"xr-standard-thumbstick\":\n // thumbstick\n return;\n case \"a-button\":\n case \"x-button\":\n if (!isQuest) {\n if (component.pressed) {\n this._modelRootNode.getChildren()[1].position.y = -0.001;\n } else {\n this._modelRootNode.getChildren()[1].position.y = 0;\n }\n }\n return;\n case \"b-button\":\n case \"y-button\":\n if (!isQuest) {\n if (component.pressed) {\n this._modelRootNode.getChildren()[2].position.y = -0.001;\n } else {\n this._modelRootNode.getChildren()[2].position.y = 0;\n }\n }\n return;\n }\n }, undefined, true);\n }\n });\n }\n _setRootMesh(meshes) {\n this.rootMesh = new Mesh(this.profileId + \" \" + this.handedness, this.scene);\n if (!this.scene.useRightHandedSystem) {\n this.rootMesh.rotationQuaternion = Quaternion.FromEulerAngles(0, Math.PI, 0);\n }\n meshes.forEach(mesh => {\n mesh.isPickable = false;\n });\n if (this._isQuest()) {\n this._modelRootNode = meshes[0];\n } else {\n this._modelRootNode = meshes[1];\n this.rootMesh.position.y = 0.034;\n this.rootMesh.position.z = 0.052;\n }\n this._modelRootNode.parent = this.rootMesh;\n }\n _updateModel() {\n // no-op. model is updated using observables.\n }\n /**\n * Is this the new type of oculus touch. At the moment both have the same profile and it is impossible to differentiate\n * between the touch and touch 2.\n * @returns true if this is the new type of oculus touch controllers.\n */\n _isQuest() {\n // this is SADLY the only way to currently check. Until proper profiles will be available.\n return !!navigator.userAgent.match(/Quest/gi) && !this._forceLegacyControllers;\n }\n}\n/**\n * The base url used to load the left and right controller models\n */\nWebXROculusTouchMotionController.MODEL_BASE_URL = \"https://controllers.babylonjs.com/oculus/\";\n/**\n * The name of the left controller model file\n */\nWebXROculusTouchMotionController.MODEL_LEFT_FILENAME = \"left.babylon\";\n/**\n * The name of the right controller model file\n */\nWebXROculusTouchMotionController.MODEL_RIGHT_FILENAME = \"right.babylon\";\n/**\n * Base Url for the Quest controller model.\n */\nWebXROculusTouchMotionController.QUEST_MODEL_BASE_URL = \"https://controllers.babylonjs.com/oculusQuest/\";\n// register the profile\nWebXRMotionControllerManager.RegisterController(\"oculus-touch\", (xrInput, scene) => {\n return new WebXROculusTouchMotionController(scene, xrInput.gamepad, xrInput.handedness);\n});\nWebXRMotionControllerManager.RegisterController(\"oculus-touch-legacy\", (xrInput, scene) => {\n return new WebXROculusTouchMotionController(scene, xrInput.gamepad, xrInput.handedness, true);\n});\nconst OculusTouchLayouts = {\n left: {\n selectComponentId: \"xr-standard-trigger\",\n components: {\n \"xr-standard-trigger\": {\n type: \"trigger\",\n gamepadIndices: {\n button: 0\n },\n rootNodeName: \"xr_standard_trigger\",\n visualResponses: {}\n },\n \"xr-standard-squeeze\": {\n type: \"squeeze\",\n gamepadIndices: {\n button: 1\n },\n rootNodeName: \"xr_standard_squeeze\",\n visualResponses: {}\n },\n \"xr-standard-thumbstick\": {\n type: \"thumbstick\",\n gamepadIndices: {\n button: 3,\n xAxis: 2,\n yAxis: 3\n },\n rootNodeName: \"xr_standard_thumbstick\",\n visualResponses: {}\n },\n \"x-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 4\n },\n rootNodeName: \"x_button\",\n visualResponses: {}\n },\n \"y-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 5\n },\n rootNodeName: \"y_button\",\n visualResponses: {}\n },\n thumbrest: {\n type: \"button\",\n gamepadIndices: {\n button: 6\n },\n rootNodeName: \"thumbrest\",\n visualResponses: {}\n }\n },\n gamepadMapping: \"xr-standard\",\n rootNodeName: \"oculus-touch-v2-left\",\n assetPath: \"left.glb\"\n },\n right: {\n selectComponentId: \"xr-standard-trigger\",\n components: {\n \"xr-standard-trigger\": {\n type: \"trigger\",\n gamepadIndices: {\n button: 0\n },\n rootNodeName: \"xr_standard_trigger\",\n visualResponses: {}\n },\n \"xr-standard-squeeze\": {\n type: \"squeeze\",\n gamepadIndices: {\n button: 1\n },\n rootNodeName: \"xr_standard_squeeze\",\n visualResponses: {}\n },\n \"xr-standard-thumbstick\": {\n type: \"thumbstick\",\n gamepadIndices: {\n button: 3,\n xAxis: 2,\n yAxis: 3\n },\n rootNodeName: \"xr_standard_thumbstick\",\n visualResponses: {}\n },\n \"a-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 4\n },\n rootNodeName: \"a_button\",\n visualResponses: {}\n },\n \"b-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 5\n },\n rootNodeName: \"b_button\",\n visualResponses: {}\n },\n thumbrest: {\n type: \"button\",\n gamepadIndices: {\n button: 6\n },\n rootNodeName: \"thumbrest\",\n visualResponses: {}\n }\n },\n gamepadMapping: \"xr-standard\",\n rootNodeName: \"oculus-touch-v2-right\",\n assetPath: \"right.glb\"\n }\n};","map":{"version":3,"names":["WebXRAbstractMotionController","WebXRMotionControllerManager","Mesh","Quaternion","WebXROculusTouchMotionController","constructor","scene","gamepadObject","handedness","_legacyMapping","_forceLegacyControllers","OculusTouchLayouts","profileId","_getFilenameAndPath","filename","MODEL_LEFT_FILENAME","MODEL_RIGHT_FILENAME","path","_isQuest","QUEST_MODEL_BASE_URL","MODEL_BASE_URL","_getModelLoadingConstraints","_processLoadedModel","_meshes","isQuest","triggerDirection","getComponentIds","forEach","id","comp","getComponent","onButtonStateChangedObservable","add","component","rootMesh","disableAnimation","_modelRootNode","getChildren","rotation","x","value","position","y","z","pressed","undefined","_setRootMesh","meshes","useRightHandedSystem","rotationQuaternion","FromEulerAngles","Math","PI","mesh","isPickable","parent","_updateModel","navigator","userAgent","match","RegisterController","xrInput","gamepad","left","selectComponentId","components","type","gamepadIndices","button","rootNodeName","visualResponses","xAxis","yAxis","thumbrest","gamepadMapping","assetPath","right"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/XR/motionController/webXROculusTouchMotionController.js"],"sourcesContent":["import { WebXRAbstractMotionController } from \"./webXRAbstractMotionController.js\";\nimport { WebXRMotionControllerManager } from \"./webXRMotionControllerManager.js\";\nimport { Mesh } from \"../../Meshes/mesh.js\";\nimport { Quaternion } from \"../../Maths/math.vector.js\";\n/**\n * The motion controller class for oculus touch (quest, rift).\n * This class supports legacy mapping as well the standard xr mapping\n */\nexport class WebXROculusTouchMotionController extends WebXRAbstractMotionController {\n constructor(scene, gamepadObject, handedness, _legacyMapping = false, _forceLegacyControllers = false) {\n super(scene, OculusTouchLayouts[handedness], gamepadObject, handedness);\n this._forceLegacyControllers = _forceLegacyControllers;\n this.profileId = \"oculus-touch\";\n }\n _getFilenameAndPath() {\n let filename = \"\";\n if (this.handedness === \"left\") {\n filename = WebXROculusTouchMotionController.MODEL_LEFT_FILENAME;\n }\n else {\n // Right is the default if no hand is specified\n filename = WebXROculusTouchMotionController.MODEL_RIGHT_FILENAME;\n }\n const path = this._isQuest() ? WebXROculusTouchMotionController.QUEST_MODEL_BASE_URL : WebXROculusTouchMotionController.MODEL_BASE_URL;\n return {\n filename,\n path,\n };\n }\n _getModelLoadingConstraints() {\n return true;\n }\n _processLoadedModel(_meshes) {\n const isQuest = this._isQuest();\n const triggerDirection = this.handedness === \"right\" ? -1 : 1;\n this.getComponentIds().forEach((id) => {\n const comp = id && this.getComponent(id);\n if (comp) {\n comp.onButtonStateChangedObservable.add((component) => {\n if (!this.rootMesh || this.disableAnimation) {\n return;\n }\n switch (id) {\n case \"xr-standard-trigger\": // index trigger\n if (!isQuest) {\n this._modelRootNode.getChildren()[3].rotation.x = -component.value * 0.2;\n this._modelRootNode.getChildren()[3].position.y = -component.value * 0.005;\n this._modelRootNode.getChildren()[3].position.z = -component.value * 0.005;\n }\n return;\n case \"xr-standard-squeeze\": // secondary trigger\n if (!isQuest) {\n this._modelRootNode.getChildren()[4].position.x = triggerDirection * component.value * 0.0035;\n }\n return;\n case \"xr-standard-thumbstick\": // thumbstick\n return;\n case \"a-button\":\n case \"x-button\":\n if (!isQuest) {\n if (component.pressed) {\n this._modelRootNode.getChildren()[1].position.y = -0.001;\n }\n else {\n this._modelRootNode.getChildren()[1].position.y = 0;\n }\n }\n return;\n case \"b-button\":\n case \"y-button\":\n if (!isQuest) {\n if (component.pressed) {\n this._modelRootNode.getChildren()[2].position.y = -0.001;\n }\n else {\n this._modelRootNode.getChildren()[2].position.y = 0;\n }\n }\n return;\n }\n }, undefined, true);\n }\n });\n }\n _setRootMesh(meshes) {\n this.rootMesh = new Mesh(this.profileId + \" \" + this.handedness, this.scene);\n if (!this.scene.useRightHandedSystem) {\n this.rootMesh.rotationQuaternion = Quaternion.FromEulerAngles(0, Math.PI, 0);\n }\n meshes.forEach((mesh) => {\n mesh.isPickable = false;\n });\n if (this._isQuest()) {\n this._modelRootNode = meshes[0];\n }\n else {\n this._modelRootNode = meshes[1];\n this.rootMesh.position.y = 0.034;\n this.rootMesh.position.z = 0.052;\n }\n this._modelRootNode.parent = this.rootMesh;\n }\n _updateModel() {\n // no-op. model is updated using observables.\n }\n /**\n * Is this the new type of oculus touch. At the moment both have the same profile and it is impossible to differentiate\n * between the touch and touch 2.\n * @returns true if this is the new type of oculus touch controllers.\n */\n _isQuest() {\n // this is SADLY the only way to currently check. Until proper profiles will be available.\n return !!navigator.userAgent.match(/Quest/gi) && !this._forceLegacyControllers;\n }\n}\n/**\n * The base url used to load the left and right controller models\n */\nWebXROculusTouchMotionController.MODEL_BASE_URL = \"https://controllers.babylonjs.com/oculus/\";\n/**\n * The name of the left controller model file\n */\nWebXROculusTouchMotionController.MODEL_LEFT_FILENAME = \"left.babylon\";\n/**\n * The name of the right controller model file\n */\nWebXROculusTouchMotionController.MODEL_RIGHT_FILENAME = \"right.babylon\";\n/**\n * Base Url for the Quest controller model.\n */\nWebXROculusTouchMotionController.QUEST_MODEL_BASE_URL = \"https://controllers.babylonjs.com/oculusQuest/\";\n// register the profile\nWebXRMotionControllerManager.RegisterController(\"oculus-touch\", (xrInput, scene) => {\n return new WebXROculusTouchMotionController(scene, xrInput.gamepad, xrInput.handedness);\n});\nWebXRMotionControllerManager.RegisterController(\"oculus-touch-legacy\", (xrInput, scene) => {\n return new WebXROculusTouchMotionController(scene, xrInput.gamepad, xrInput.handedness, true);\n});\nconst OculusTouchLayouts = {\n left: {\n selectComponentId: \"xr-standard-trigger\",\n components: {\n \"xr-standard-trigger\": {\n type: \"trigger\",\n gamepadIndices: {\n button: 0,\n },\n rootNodeName: \"xr_standard_trigger\",\n visualResponses: {},\n },\n \"xr-standard-squeeze\": {\n type: \"squeeze\",\n gamepadIndices: {\n button: 1,\n },\n rootNodeName: \"xr_standard_squeeze\",\n visualResponses: {},\n },\n \"xr-standard-thumbstick\": {\n type: \"thumbstick\",\n gamepadIndices: {\n button: 3,\n xAxis: 2,\n yAxis: 3,\n },\n rootNodeName: \"xr_standard_thumbstick\",\n visualResponses: {},\n },\n \"x-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 4,\n },\n rootNodeName: \"x_button\",\n visualResponses: {},\n },\n \"y-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 5,\n },\n rootNodeName: \"y_button\",\n visualResponses: {},\n },\n thumbrest: {\n type: \"button\",\n gamepadIndices: {\n button: 6,\n },\n rootNodeName: \"thumbrest\",\n visualResponses: {},\n },\n },\n gamepadMapping: \"xr-standard\",\n rootNodeName: \"oculus-touch-v2-left\",\n assetPath: \"left.glb\",\n },\n right: {\n selectComponentId: \"xr-standard-trigger\",\n components: {\n \"xr-standard-trigger\": {\n type: \"trigger\",\n gamepadIndices: {\n button: 0,\n },\n rootNodeName: \"xr_standard_trigger\",\n visualResponses: {},\n },\n \"xr-standard-squeeze\": {\n type: \"squeeze\",\n gamepadIndices: {\n button: 1,\n },\n rootNodeName: \"xr_standard_squeeze\",\n visualResponses: {},\n },\n \"xr-standard-thumbstick\": {\n type: \"thumbstick\",\n gamepadIndices: {\n button: 3,\n xAxis: 2,\n yAxis: 3,\n },\n rootNodeName: \"xr_standard_thumbstick\",\n visualResponses: {},\n },\n \"a-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 4,\n },\n rootNodeName: \"a_button\",\n visualResponses: {},\n },\n \"b-button\": {\n type: \"button\",\n gamepadIndices: {\n button: 5,\n },\n rootNodeName: \"b_button\",\n visualResponses: {},\n },\n thumbrest: {\n type: \"button\",\n gamepadIndices: {\n button: 6,\n },\n rootNodeName: \"thumbrest\",\n visualResponses: {},\n },\n },\n gamepadMapping: \"xr-standard\",\n rootNodeName: \"oculus-touch-v2-right\",\n assetPath: \"right.glb\",\n },\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|