{"ast":null,"code":"import { WebXRAbstractMotionController } from \"./webXRAbstractMotionController.js\";\nimport { SceneLoader } from \"../../Loading/sceneLoader.js\";\nimport { Mesh } from \"../../Meshes/mesh.js\";\nimport { Axis } from \"../../Maths/math.axis.js\";\nimport { Color3 } from \"../../Maths/math.color.js\";\nimport { WebXRControllerComponent } from \"./webXRControllerComponent.js\";\nimport { CreateSphere } from \"../../Meshes/Builders/sphereBuilder.js\";\nimport { StandardMaterial } from \"../../Materials/standardMaterial.js\";\nimport { Logger } from \"../../Misc/logger.js\";\n/**\n * A profiled motion controller has its profile loaded from an online repository.\n * The class is responsible of loading the model, mapping the keys and enabling model-animations\n */\nexport class WebXRProfiledMotionController extends WebXRAbstractMotionController {\n constructor(scene, xrInput, _profile, _repositoryUrl,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n controllerCache) {\n super(scene, _profile.layouts[xrInput.handedness || \"none\"], xrInput.gamepad, xrInput.handedness, undefined, controllerCache);\n this._repositoryUrl = _repositoryUrl;\n this.controllerCache = controllerCache;\n this._buttonMeshMapping = {};\n this._touchDots = {};\n this.profileId = _profile.profileId;\n }\n dispose() {\n super.dispose();\n if (!this.controllerCache) {\n Object.keys(this._touchDots).forEach(visResKey => {\n this._touchDots[visResKey].dispose();\n });\n }\n }\n _getFilenameAndPath() {\n return {\n filename: this.layout.assetPath,\n path: `${this._repositoryUrl}/profiles/${this.profileId}/`\n };\n }\n _getModelLoadingConstraints() {\n const glbLoaded = SceneLoader.IsPluginForExtensionAvailable(\".glb\");\n if (!glbLoaded) {\n Logger.Warn(\"glTF / glb loader was not registered, using generic controller instead\");\n }\n return glbLoaded;\n }\n _processLoadedModel(_meshes) {\n this.getComponentIds().forEach(type => {\n const componentInLayout = this.layout.components[type];\n this._buttonMeshMapping[type] = {\n mainMesh: this._getChildByName(this.rootMesh, componentInLayout.rootNodeName),\n states: {}\n };\n Object.keys(componentInLayout.visualResponses).forEach(visualResponseKey => {\n const visResponse = componentInLayout.visualResponses[visualResponseKey];\n if (visResponse.valueNodeProperty === \"transform\") {\n this._buttonMeshMapping[type].states[visualResponseKey] = {\n valueMesh: this._getChildByName(this.rootMesh, visResponse.valueNodeName),\n minMesh: this._getChildByName(this.rootMesh, visResponse.minNodeName),\n maxMesh: this._getChildByName(this.rootMesh, visResponse.maxNodeName)\n };\n } else {\n // visibility, usually for touchpads\n const nameOfMesh = componentInLayout.type === WebXRControllerComponent.TOUCHPAD_TYPE && componentInLayout.touchPointNodeName ? componentInLayout.touchPointNodeName : visResponse.valueNodeName;\n this._buttonMeshMapping[type].states[visualResponseKey] = {\n valueMesh: this._getChildByName(this.rootMesh, nameOfMesh)\n };\n if (componentInLayout.type === WebXRControllerComponent.TOUCHPAD_TYPE && !this._touchDots[visualResponseKey]) {\n const dot = CreateSphere(visualResponseKey + \"dot\", {\n diameter: 0.0015,\n segments: 8\n }, this.scene);\n dot.material = new StandardMaterial(visualResponseKey + \"mat\", this.scene);\n dot.material.diffuseColor = Color3.Red();\n dot.parent = this._buttonMeshMapping[type].states[visualResponseKey].valueMesh || null;\n dot.isVisible = false;\n this._touchDots[visualResponseKey] = dot;\n }\n }\n });\n });\n }\n _setRootMesh(meshes) {\n this.rootMesh = new Mesh(this.profileId + \"-\" + this.handedness, this.scene);\n this.rootMesh.isPickable = false;\n let rootMesh;\n // Find the root node in the loaded glTF scene, and attach it as a child of 'parentMesh'\n for (let i = 0; i < meshes.length; i++) {\n const mesh = meshes[i];\n mesh.isPickable = false;\n if (!mesh.parent) {\n // Handle root node, attach to the new parentMesh\n rootMesh = mesh;\n }\n }\n if (rootMesh) {\n rootMesh.setParent(this.rootMesh);\n }\n if (!this.scene.useRightHandedSystem) {\n this.rootMesh.rotate(Axis.Y, Math.PI, 1 /* Space.WORLD */);\n }\n }\n _updateModel(_xrFrame) {\n if (this.disableAnimation) {\n return;\n }\n this.getComponentIds().forEach(id => {\n const component = this.getComponent(id);\n if (!component.hasChanges) {\n return;\n }\n const meshes = this._buttonMeshMapping[id];\n const componentInLayout = this.layout.components[id];\n Object.keys(componentInLayout.visualResponses).forEach(visualResponseKey => {\n const visResponse = componentInLayout.visualResponses[visualResponseKey];\n let value = component.value;\n if (visResponse.componentProperty === \"xAxis\") {\n value = component.axes.x;\n } else if (visResponse.componentProperty === \"yAxis\") {\n value = component.axes.y;\n }\n if (visResponse.valueNodeProperty === \"transform\") {\n this._lerpTransform(meshes.states[visualResponseKey], value, visResponse.componentProperty !== \"button\");\n } else {\n // visibility\n const valueMesh = meshes.states[visualResponseKey].valueMesh;\n if (valueMesh) {\n valueMesh.isVisible = component.touched || component.pressed;\n }\n if (this._touchDots[visualResponseKey]) {\n this._touchDots[visualResponseKey].isVisible = component.touched || component.pressed;\n }\n }\n });\n });\n }\n}","map":{"version":3,"names":["WebXRAbstractMotionController","SceneLoader","Mesh","Axis","Color3","WebXRControllerComponent","CreateSphere","StandardMaterial","Logger","WebXRProfiledMotionController","constructor","scene","xrInput","_profile","_repositoryUrl","controllerCache","layouts","handedness","gamepad","undefined","_buttonMeshMapping","_touchDots","profileId","dispose","Object","keys","forEach","visResKey","_getFilenameAndPath","filename","layout","assetPath","path","_getModelLoadingConstraints","glbLoaded","IsPluginForExtensionAvailable","Warn","_processLoadedModel","_meshes","getComponentIds","type","componentInLayout","components","mainMesh","_getChildByName","rootMesh","rootNodeName","states","visualResponses","visualResponseKey","visResponse","valueNodeProperty","valueMesh","valueNodeName","minMesh","minNodeName","maxMesh","maxNodeName","nameOfMesh","TOUCHPAD_TYPE","touchPointNodeName","dot","diameter","segments","material","diffuseColor","Red","parent","isVisible","_setRootMesh","meshes","isPickable","i","length","mesh","setParent","useRightHandedSystem","rotate","Y","Math","PI","_updateModel","_xrFrame","disableAnimation","id","component","getComponent","hasChanges","value","componentProperty","axes","x","y","_lerpTransform","touched","pressed"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/XR/motionController/webXRProfiledMotionController.js"],"sourcesContent":["import { WebXRAbstractMotionController } from \"./webXRAbstractMotionController.js\";\nimport { SceneLoader } from \"../../Loading/sceneLoader.js\";\nimport { Mesh } from \"../../Meshes/mesh.js\";\nimport { Axis } from \"../../Maths/math.axis.js\";\nimport { Color3 } from \"../../Maths/math.color.js\";\nimport { WebXRControllerComponent } from \"./webXRControllerComponent.js\";\nimport { CreateSphere } from \"../../Meshes/Builders/sphereBuilder.js\";\nimport { StandardMaterial } from \"../../Materials/standardMaterial.js\";\nimport { Logger } from \"../../Misc/logger.js\";\n/**\n * A profiled motion controller has its profile loaded from an online repository.\n * The class is responsible of loading the model, mapping the keys and enabling model-animations\n */\nexport class WebXRProfiledMotionController extends WebXRAbstractMotionController {\n constructor(scene, xrInput, _profile, _repositoryUrl, \n // eslint-disable-next-line @typescript-eslint/naming-convention\n controllerCache) {\n super(scene, _profile.layouts[xrInput.handedness || \"none\"], xrInput.gamepad, xrInput.handedness, undefined, controllerCache);\n this._repositoryUrl = _repositoryUrl;\n this.controllerCache = controllerCache;\n this._buttonMeshMapping = {};\n this._touchDots = {};\n this.profileId = _profile.profileId;\n }\n dispose() {\n super.dispose();\n if (!this.controllerCache) {\n Object.keys(this._touchDots).forEach((visResKey) => {\n this._touchDots[visResKey].dispose();\n });\n }\n }\n _getFilenameAndPath() {\n return {\n filename: this.layout.assetPath,\n path: `${this._repositoryUrl}/profiles/${this.profileId}/`,\n };\n }\n _getModelLoadingConstraints() {\n const glbLoaded = SceneLoader.IsPluginForExtensionAvailable(\".glb\");\n if (!glbLoaded) {\n Logger.Warn(\"glTF / glb loader was not registered, using generic controller instead\");\n }\n return glbLoaded;\n }\n _processLoadedModel(_meshes) {\n this.getComponentIds().forEach((type) => {\n const componentInLayout = this.layout.components[type];\n this._buttonMeshMapping[type] = {\n mainMesh: this._getChildByName(this.rootMesh, componentInLayout.rootNodeName),\n states: {},\n };\n Object.keys(componentInLayout.visualResponses).forEach((visualResponseKey) => {\n const visResponse = componentInLayout.visualResponses[visualResponseKey];\n if (visResponse.valueNodeProperty === \"transform\") {\n this._buttonMeshMapping[type].states[visualResponseKey] = {\n valueMesh: this._getChildByName(this.rootMesh, visResponse.valueNodeName),\n minMesh: this._getChildByName(this.rootMesh, visResponse.minNodeName),\n maxMesh: this._getChildByName(this.rootMesh, visResponse.maxNodeName),\n };\n }\n else {\n // visibility, usually for touchpads\n const nameOfMesh = componentInLayout.type === WebXRControllerComponent.TOUCHPAD_TYPE && componentInLayout.touchPointNodeName\n ? componentInLayout.touchPointNodeName\n : visResponse.valueNodeName;\n this._buttonMeshMapping[type].states[visualResponseKey] = {\n valueMesh: this._getChildByName(this.rootMesh, nameOfMesh),\n };\n if (componentInLayout.type === WebXRControllerComponent.TOUCHPAD_TYPE && !this._touchDots[visualResponseKey]) {\n const dot = CreateSphere(visualResponseKey + \"dot\", {\n diameter: 0.0015,\n segments: 8,\n }, this.scene);\n dot.material = new StandardMaterial(visualResponseKey + \"mat\", this.scene);\n dot.material.diffuseColor = Color3.Red();\n dot.parent = this._buttonMeshMapping[type].states[visualResponseKey].valueMesh || null;\n dot.isVisible = false;\n this._touchDots[visualResponseKey] = dot;\n }\n }\n });\n });\n }\n _setRootMesh(meshes) {\n this.rootMesh = new Mesh(this.profileId + \"-\" + this.handedness, this.scene);\n this.rootMesh.isPickable = false;\n let rootMesh;\n // Find the root node in the loaded glTF scene, and attach it as a child of 'parentMesh'\n for (let i = 0; i < meshes.length; i++) {\n const mesh = meshes[i];\n mesh.isPickable = false;\n if (!mesh.parent) {\n // Handle root node, attach to the new parentMesh\n rootMesh = mesh;\n }\n }\n if (rootMesh) {\n rootMesh.setParent(this.rootMesh);\n }\n if (!this.scene.useRightHandedSystem) {\n this.rootMesh.rotate(Axis.Y, Math.PI, 1 /* Space.WORLD */);\n }\n }\n _updateModel(_xrFrame) {\n if (this.disableAnimation) {\n return;\n }\n this.getComponentIds().forEach((id) => {\n const component = this.getComponent(id);\n if (!component.hasChanges) {\n return;\n }\n const meshes = this._buttonMeshMapping[id];\n const componentInLayout = this.layout.components[id];\n Object.keys(componentInLayout.visualResponses).forEach((visualResponseKey) => {\n const visResponse = componentInLayout.visualResponses[visualResponseKey];\n let value = component.value;\n if (visResponse.componentProperty === \"xAxis\") {\n value = component.axes.x;\n }\n else if (visResponse.componentProperty === \"yAxis\") {\n value = component.axes.y;\n }\n if (visResponse.valueNodeProperty === \"transform\") {\n this._lerpTransform(meshes.states[visualResponseKey], value, visResponse.componentProperty !== \"button\");\n }\n else {\n // visibility\n const valueMesh = meshes.states[visualResponseKey].valueMesh;\n if (valueMesh) {\n valueMesh.isVisible = component.touched || component.pressed;\n }\n if (this._touchDots[visualResponseKey]) {\n this._touchDots[visualResponseKey].isVisible = component.touched || component.pressed;\n }\n }\n });\n });\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}