{"version":3,"file":"js/index.86434c36.js","mappings":"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","sources":["webpack://vertiv_thermal_lab/./src/App.vue","webpack://vertiv_thermal_lab/./src/components/RouterComponent.vue","webpack://vertiv_thermal_lab/./src/views/LabView.vue","webpack://vertiv_thermal_lab/./src/components/AvatarSelectionComponent.vue","webpack://vertiv_thermal_lab/./src/scenes/MyFirstScene.js","webpack://vertiv_thermal_lab/src/components/AvatarSelectionComponent.vue","webpack://vertiv_thermal_lab/./src/components/AvatarSelectionComponent.vue?17ec","webpack://vertiv_thermal_lab/./src/components/AvatarSelectionComponent.vue?2055","webpack://vertiv_thermal_lab/./src/components/LandingComponent.vue","webpack://vertiv_thermal_lab/src/components/LandingComponent.vue","webpack://vertiv_thermal_lab/./src/components/LandingComponent.vue?ba1a","webpack://vertiv_thermal_lab/./src/components/LandingComponent.vue?9145","webpack://vertiv_thermal_lab/./src/components/dialogs/welcomeComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/baseComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/baseComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/baseComponent.vue?d4cb","webpack://vertiv_thermal_lab/./src/components/dialogs/baseComponent.vue?7cbd","webpack://vertiv_thermal_lab/src/components/dialogs/welcomeComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/welcomeComponent.vue?013c","webpack://vertiv_thermal_lab/./src/components/dialogs/welcomeComponent.vue?2b48","webpack://vertiv_thermal_lab/./src/components/dialogs/afterWelcomeComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/afterWelcomeComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/afterWelcomeComponent.vue?da23","webpack://vertiv_thermal_lab/./src/components/dialogs/afterWelcomeComponent.vue?10cf","webpack://vertiv_thermal_lab/./src/components/dialogs/productSelectionComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/productSelectionComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/productSelectionComponent.vue?a797","webpack://vertiv_thermal_lab/./src/components/dialogs/productSelectionComponent.vue?be43","webpack://vertiv_thermal_lab/./src/components/dialogs/testSelectionComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/testSelectionComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/testSelectionComponent.vue?8ca0","webpack://vertiv_thermal_lab/./src/components/dialogs/testSelectionComponent.vue?ba35","webpack://vertiv_thermal_lab/./src/components/dialogs/preTestComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/preTestComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/preTestComponent.vue?3d52","webpack://vertiv_thermal_lab/./src/components/dialogs/preTestComponent.vue?2d46","webpack://vertiv_thermal_lab/./src/components/dialogs/testComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/testComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/testComponent.vue?f870","webpack://vertiv_thermal_lab/./src/components/dialogs/testComponent.vue?4e81","webpack://vertiv_thermal_lab/./src/components/dialogs/dialogCTAComponent.vue","webpack://vertiv_thermal_lab/src/components/dialogs/dialogCTAComponent.vue","webpack://vertiv_thermal_lab/./src/components/dialogs/dialogCTAComponent.vue?376a","webpack://vertiv_thermal_lab/./src/components/dialogs/dialogCTAComponent.vue?98d4","webpack://vertiv_thermal_lab/./src/components/BabylonComponent.vue","webpack://vertiv_thermal_lab/src/components/BabylonComponent.vue","webpack://vertiv_thermal_lab/./src/components/BabylonComponent.vue?baa9","webpack://vertiv_thermal_lab/./src/components/BabylonComponent.vue?b2d7","webpack://vertiv_thermal_lab/src/views/LabView.vue","webpack://vertiv_thermal_lab/./src/views/LabView.vue?1cf0","webpack://vertiv_thermal_lab/./src/views/LabView.vue?c240","webpack://vertiv_thermal_lab/src/components/RouterComponent.vue","webpack://vertiv_thermal_lab/./src/components/RouterComponent.vue?1e62","webpack://vertiv_thermal_lab/./src/components/RouterComponent.vue?3e21","webpack://vertiv_thermal_lab/./src/components/SpinnerComponent.vue","webpack://vertiv_thermal_lab/src/components/SpinnerComponent.vue","webpack://vertiv_thermal_lab/./src/components/SpinnerComponent.vue?d2bf","webpack://vertiv_thermal_lab/./src/components/SpinnerComponent.vue?66b1","webpack://vertiv_thermal_lab/src/App.vue","webpack://vertiv_thermal_lab/./src/App.vue?51dd","webpack://vertiv_thermal_lab/./src/App.vue?0e40","webpack://vertiv_thermal_lab/./src/store/index.js","webpack://vertiv_thermal_lab/./src/main.js","webpack://vertiv_thermal_lab/./src/App.vue?ed71","webpack://vertiv_thermal_lab/./src/components/AvatarSelectionComponent.vue?4533","webpack://vertiv_thermal_lab/./src/components/BabylonComponent.vue?f4a6","webpack://vertiv_thermal_lab/./src/components/LandingComponent.vue?097d","webpack://vertiv_thermal_lab/./src/components/SpinnerComponent.vue?84bd","webpack://vertiv_thermal_lab/./src/components/dialogs/baseComponent.vue?d968","webpack://vertiv_thermal_lab/./src/components/dialogs/testComponent.vue?c348","webpack://vertiv_thermal_lab/./src/App.vue?db2d","webpack://vertiv_thermal_lab/./src/components/AvatarSelectionComponent.vue?0005","webpack://vertiv_thermal_lab/./src/components/BabylonComponent.vue?569b","webpack://vertiv_thermal_lab/./src/components/LandingComponent.vue?4f29","webpack://vertiv_thermal_lab/./src/components/SpinnerComponent.vue?ee84","webpack://vertiv_thermal_lab/./src/components/dialogs/baseComponent.vue?5d5a","webpack://vertiv_thermal_lab/./src/components/dialogs/testComponent.vue?d80e","webpack://vertiv_thermal_lab/./src/assets/images/loader/ sync ^\\.\\/background_.*\\.jpg$","webpack://vertiv_thermal_lab/./src/assets/videos/test/ sync ^\\.\\/.*\\/.*\\.mp4$","webpack://vertiv_thermal_lab/webpack/bootstrap","webpack://vertiv_thermal_lab/webpack/runtime/chunk loaded","webpack://vertiv_thermal_lab/webpack/runtime/compat get default export","webpack://vertiv_thermal_lab/webpack/runtime/define property getters","webpack://vertiv_thermal_lab/webpack/runtime/global","webpack://vertiv_thermal_lab/webpack/runtime/hasOwnProperty shorthand","webpack://vertiv_thermal_lab/webpack/runtime/make namespace object","webpack://vertiv_thermal_lab/webpack/runtime/publicPath","webpack://vertiv_thermal_lab/webpack/runtime/jsonp chunk loading","webpack://vertiv_thermal_lab/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.open)?_c('div',[_c('spinner-component'),_c('div',[(_vm.open)?_c('router-component'):_vm._e()],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.route === 'lab')?_c('lab-view'):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('avatar-selection-component'),_c('landing-component'),_c('welcome-dialog-component'),_c('after-welcome-dialog-component'),_c('product-selection-dialog-component'),_c('test-selection-dialog-component'),_c('pre-test-dialog-component'),_c('test-dialog-component'),_c('dialog-CTA-component'),_c('babylon-component')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.open)?_c('div',{staticClass:\"selection\"},[_c('div',{staticClass:\"selection__upper_part\"},[_c('div',{staticClass:\"selection__upper_part__title\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"avatarSelectionTitle\"))+\" \")]),_c('div',{staticClass:\"selection__upper_part__subtitle\"},[_vm._v(\" \"+_vm._s(_vm.$t(`avatarSelectionSubtitle${_vm.lab}`))+\" \")])]),_c('div',{staticClass:\"selection__lower_part\"},[_c('div',{staticClass:\"selection__lower_part__avatars\"},_vm._l((_vm.avatars),function(avatar){return _c('div',{key:avatar.name,staticClass:\"selection__lower_part__avatars__avatar\"},[_c('img',{staticClass:\"selection__lower_part__avatars__avatar__image\",attrs:{\"src\":avatar.image}}),_c('div',{staticClass:\"selection__lower_part__avatars__avatar__button\",on:{\"click\":function($event){return _vm.selectAvatar(avatar)}}},[_vm._v(\" \"+_vm._s(_vm.$t(`avatarSelection${avatar.name}`))+\" \")])])}),0)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import * as BABYLON from \"babylonjs\";\n// import \"babylonjs-inspector\";\nimport \"babylonjs-loaders\";\nimport { CharacterController } from \"babylonjs-charactercontroller\";\n\nlet engine;\nlet cc;\nlet gl;\nlet pipeline;\nlet resizeTimeout;\nlet callbackDisplayHotspot;\nlet callbackChangePerspective;\n\nlet pendingOperations = [];\nlet canvasBJS;\nconst BASE_URL = process.env.BASE_URL;\n\nlet lookingAt = null;\n\nconst playerPositions = {\n Chill_Lab: [4.78, 0, -3.15],\n Indoor_Lab: [1.4, 0, -3.27],\n};\n\nconst hostPositions = {\n Chill_Lab: [2, 0, -4.274],\n Indoor_Lab: [-0.9, 0, -4.4],\n};\n\nconst helperCameraTargets = {\n Chill_Lab: [8, 1.5, -3.5],\n Indoor_Lab: [4.325, 1.5, -3.3],\n};\n\nconst welcomeCameraTargets = {\n Chill_Lab: [3.7, 1.5, -4],\n Indoor_Lab: [0.37, 1.5, -3.79],\n};\n\nconst securePlayerPointss = {\n Chill_Lab: {\n starting1: [8, -2],\n starting2: [-6.5, -4],\n starting3: [-6.5, 4],\n starting4: [6.5, 4],\n },\n Indoor_Lab: {\n starting1: [7, 6],\n starting2: [-6.5, -4],\n starting3: [-6.5, 4],\n starting4: [6.5, 4],\n },\n};\n\nconst rotationPlayerTest = {\n Chill_Lab: {\n rotation: -75,\n alphaD: -15,\n betaD: 82,\n },\n Indoor_Lab: {\n rotation: 225,\n alphaD: 45,\n betaD: 90,\n },\n};\n\nconst playerRotation = new BABYLON.Vector3(0, (100 * Math.PI) / 180, 0); // (90 * Math.PI) / 180\n\nlet playerNameGlobal;\nlet player;\nlet host;\nlet lab;\nlet product;\n\nlet initialPositions = {};\n\nconst createScene = async ({\n displayHotspot,\n changePerspectiveCk,\n canvas,\n model,\n}) => {\n const uniqueID = generateUniqueID();\n pendingOperations.push(uniqueID);\n\n if (displayHotspot) {\n callbackDisplayHotspot = displayHotspot;\n }\n\n if (changePerspectiveCk) {\n callbackChangePerspective = changePerspectiveCk;\n }\n\n canvasBJS = canvas;\n lab = model;\n\n engine = new BABYLON.Engine(canvasBJS, false);\n\n window.scene = new BABYLON.Scene(engine);\n window.scene.clearColor = BABYLON.Color3.Black();\n\n gl = new BABYLON.GlowLayer(\"glow\", window.scene);\n\n loadEnvironment();\n\n const meshPath = `${BASE_URL}models/${lab}/`;\n\n const assetsManager = new BABYLON.AssetsManager(window.scene);\n assetsManager.useDefaultLoadingScreen = false;\n const mainTask = assetsManager.addMeshTask(\n \"mainTask\",\n \"\",\n meshPath,\n `${lab}.gltf`\n );\n\n await new Promise((resolve, reject) => {\n mainTask.onError = (task, message, exception) => {\n console.error(\"Scene\", message, exception, task);\n reject({ message, exception, task });\n };\n\n assetsManager.onFinish = async () => {\n processMeshes();\n window.scene.cleanCachedTextureBuffer();\n window.scene.blockMaterialDirtyMechanism = false;\n resolve();\n };\n\n assetsManager.load();\n });\n\n createColliders();\n\n createMainCamera();\n createFlyCamera();\n createHelperCamera();\n createWelcomeCamera();\n\n setCamera(\"Welcome\");\n\n createRenderingPipeline();\n\n await loadHelper();\n\n pendingOperations = pendingOperations.filter((id) => id !== uniqueID);\n};\n\nfunction createColliders() {\n if (lab === \"Chill_Lab\") {\n const boxProduct_AFC_NA = BABYLON.MeshBuilder.CreateBox(\n \"boxProduct_AFC_NA\",\n {\n height: 6,\n width: 9, // 7.5\n depth: 4.25, // 2.5\n }\n );\n\n boxProduct_AFC_NA.renderingGroupId = 1;\n boxProduct_AFC_NA.position = new BABYLON.Vector3(0.5, 0, 0);\n boxProduct_AFC_NA.checkCollisions = true;\n boxProduct_AFC_NA.isPickable = true;\n boxProduct_AFC_NA.isVisible = false;\n\n boxProduct_AFC_NA.setEnabled(false);\n\n const boxProduct_AFC_AD = BABYLON.MeshBuilder.CreateBox(\n \"boxProduct_AFC_AD\",\n {\n height: 6,\n width: 10, // 8.5 10.2\n depth: 4.86, // 2.7\n }\n );\n\n boxProduct_AFC_AD.renderingGroupId = 1;\n boxProduct_AFC_AD.position = new BABYLON.Vector3(-0.2, 0, 0);\n boxProduct_AFC_AD.checkCollisions = true;\n boxProduct_AFC_AD.isPickable = true;\n boxProduct_AFC_AD.isVisible = false;\n\n boxProduct_AFC_AD.setEnabled(false);\n\n const boxRails = BABYLON.MeshBuilder.CreateBox(\"boxRails\", {\n height: 6,\n width: 7.5,\n depth: 2.5,\n });\n\n boxRails.renderingGroupId = 1;\n boxRails.position = new BABYLON.Vector3(7, 0, 0);\n boxRails.checkCollisions = true;\n boxRails.isPickable = true;\n boxRails.isVisible = false;\n\n boxRails.setEnabled(false);\n\n const boxPipes_AFC_NA = BABYLON.MeshBuilder.CreateBox(\"boxPipes_AFC_NA\", {\n height: 6,\n width: 3,\n depth: 1.5,\n });\n\n boxPipes_AFC_NA.renderingGroupId = 1;\n boxPipes_AFC_NA.position = new BABYLON.Vector3(-0.215, 0, -1.6);\n boxPipes_AFC_NA.checkCollisions = true;\n boxPipes_AFC_NA.isPickable = true;\n boxPipes_AFC_NA.isVisible = false;\n\n boxPipes_AFC_NA.setEnabled(false);\n\n const boxPipes_AFC_AD = BABYLON.MeshBuilder.CreateBox(\"boxPipes_AFC_AD\", {\n height: 6,\n width: 1.7,\n depth: 0.5,\n });\n\n boxPipes_AFC_AD.renderingGroupId = 1;\n boxPipes_AFC_AD.position = new BABYLON.Vector3(-4.5, 0, -1);\n boxPipes_AFC_AD.checkCollisions = true;\n boxPipes_AFC_AD.isPickable = true;\n boxPipes_AFC_AD.isVisible = false;\n\n boxPipes_AFC_AD.setEnabled(false);\n } else {\n const boxRails = BABYLON.MeshBuilder.CreateBox(\"boxRails\", {\n height: 3,\n width: 3,\n depth: 7.5,\n });\n\n boxRails.renderingGroupId = 1;\n boxRails.position = new BABYLON.Vector3(0, 1.5, 5.5);\n boxRails.checkCollisions = true;\n boxRails.isPickable = true;\n boxRails.isVisible = false;\n\n boxRails.setEnabled(false);\n\n const boxProduct_CWA = BABYLON.MeshBuilder.CreateBox(\"boxProduct_CWA\", {\n height: 2.5,\n width: 10.2, // 8.5\n depth: 5.22, // 3.5\n });\n\n boxProduct_CWA.renderingGroupId = 1;\n boxProduct_CWA.position = new BABYLON.Vector3(-3, 1.25, 0.3);\n boxProduct_CWA.checkCollisions = true;\n boxProduct_CWA.isPickable = true;\n boxProduct_CWA.isVisible = false;\n\n boxProduct_CWA.setEnabled(false);\n\n const boxProduct_PDX = BABYLON.MeshBuilder.CreateBox(\"boxProduct_PDX\", {\n height: 2.5,\n width: 10.2, // 8.5\n depth: 5.22, // 3.5\n });\n\n boxProduct_PDX.renderingGroupId = 1;\n boxProduct_PDX.position = new BABYLON.Vector3(-3, 1.25, 0.3);\n boxProduct_PDX.checkCollisions = true;\n boxProduct_PDX.isPickable = true;\n boxProduct_PDX.isVisible = false;\n\n boxProduct_PDX.setEnabled(false);\n\n const boxHeatExchanger = BABYLON.MeshBuilder.CreateBox(\n \"boxHeatExchanger_PDX\",\n {\n height: 3,\n width: 1,\n depth: 1,\n }\n );\n\n boxHeatExchanger.renderingGroupId = 1;\n boxHeatExchanger.position = new BABYLON.Vector3(3.1, 1.5, 2);\n boxHeatExchanger.checkCollisions = true;\n boxHeatExchanger.isPickable = true;\n boxHeatExchanger.isVisible = false;\n\n boxHeatExchanger.setEnabled(false);\n }\n}\n\nfunction createHotspot(\n name,\n size = 1,\n [x, y, z] = [0, 0, 0],\n callbackIn,\n callbackOut,\n callbackClick\n) {\n const hotspotIcon = `${BASE_URL}hotspots/${name}.png`;\n\n const matHotspot = new BABYLON.StandardMaterial(\n `M_hotspot_${name}`,\n window.scene\n );\n\n matHotspot.transparencyMode = BABYLON.Material.MATERIAL_ALPHATEST;\n matHotspot.diffuseTexture = new BABYLON.Texture(hotspotIcon, window.scene);\n matHotspot.useAlphaFromDiffuseTexture = true;\n matHotspot.diffuseTexture.hasAlpha = true;\n matHotspot.disableLighting = true;\n matHotspot.lightmapTexture = new BABYLON.Texture(hotspotIcon, window.scene);\n\n const position = new BABYLON.Vector3(x, y, z);\n const scaling = new BABYLON.Vector3(0.025 * size, 0.025 * size, 0.025 * size);\n\n const hotspotPlane = BABYLON.MeshBuilder.CreatePlane(\n `hotspot_${name}`,\n {\n size: 10,\n },\n window.scene\n );\n\n hotspotPlane.renderingGroupId = 1;\n hotspotPlane.visibility = 0;\n hotspotPlane.setAbsolutePosition(position);\n hotspotPlane.scaling = scaling;\n hotspotPlane.billboardMode = BABYLON.Mesh.BILLBOARDMODE_ALL;\n\n hotspotPlane.material = matHotspot;\n\n hotspotPlane.actionManager = new BABYLON.ActionManager(window.scene);\n\n if (callbackIn) {\n hotspotPlane.actionManager.registerAction(\n new BABYLON.ExecuteCodeAction(\n BABYLON.ActionManager.OnPointerOverTrigger,\n (event) => {\n const { right, bottom, width } = getPosition(hotspotPlane);\n callbackIn(name, right, bottom, width, event);\n }\n )\n );\n }\n\n if (callbackOut) {\n hotspotPlane.actionManager.registerAction(\n new BABYLON.ExecuteCodeAction(\n BABYLON.ActionManager.OnPointerOutTrigger,\n (event) => {\n callbackOut(name, event);\n }\n )\n );\n }\n\n if (callbackClick) {\n hotspotPlane.actionManager.registerAction(\n new BABYLON.ExecuteCodeAction(\n BABYLON.ActionManager.OnPickTrigger,\n (event) => {\n callbackClick(name, event);\n }\n )\n );\n }\n}\n\nfunction updateHotspotPosition(key, [x, y, z] = [0, 0, 0]) {\n const position = new BABYLON.Vector3(x, y, z);\n\n const hotspotPlane = window.scene.getMeshByName(`hotspot_${key}`);\n\n hotspotPlane.position = position;\n}\n\nfunction getPosition(hotspot) {\n let hotspotPlane = hotspot;\n if (typeof hotspot === \"string\") {\n hotspotPlane = window.scene.getMeshByName(`hotspot_${hotspot}`);\n }\n\n let renderWidth = engine.getRenderWidth();\n let renderHeight = engine.getRenderHeight();\n\n renderWidth *= engine.getHardwareScalingLevel();\n renderHeight *= engine.getHardwareScalingLevel();\n\n const sceneTransformMatrix = window.scene.getTransformMatrix();\n\n const viewport = window.scene.activeCamera.viewport.toGlobal(\n renderWidth,\n renderHeight\n );\n\n const coordinates = BABYLON.Vector3.Project(\n hotspotPlane.getAbsolutePosition(),\n BABYLON.Matrix.IdentityReadOnly,\n sceneTransformMatrix,\n viewport\n );\n\n const right = Math.round(renderWidth - coordinates.x).toString() + \"px\";\n const bottom = Math.round(renderHeight - coordinates.y).toString() + \"px\";\n\n const { width, height } = calculatePixel(\n hotspotPlane,\n sceneTransformMatrix,\n viewport\n );\n\n return { right, bottom, width, height };\n}\n\nfunction getPositionMesh(meshName) {\n let mesh = meshName;\n if (typeof meshName === \"string\") {\n mesh = window.scene.getMeshByName(meshName);\n }\n\n let renderWidth = engine.getRenderWidth();\n let renderHeight = engine.getRenderHeight();\n\n renderWidth *= engine.getHardwareScalingLevel();\n renderHeight *= engine.getHardwareScalingLevel();\n\n const sceneTransformMatrix = window.scene.getTransformMatrix();\n\n const viewport = window.scene.activeCamera.viewport.toGlobal(\n renderWidth,\n renderHeight\n );\n\n const coordinates = BABYLON.Vector3.Project(\n mesh.getAbsolutePosition(),\n BABYLON.Matrix.IdentityReadOnly,\n sceneTransformMatrix,\n viewport\n );\n\n const right = Math.round(renderWidth - coordinates.x).toString() + \"px\";\n const bottom = Math.round(renderHeight - coordinates.y).toString() + \"px\";\n\n const { width } = calculatePixel(mesh, sceneTransformMatrix, viewport);\n\n return { right, bottom, width };\n}\n\nfunction calculatePixel(meshName) {\n let mesh = meshName;\n if (typeof meshName === \"string\") {\n mesh = window.scene.getMeshByName(meshName);\n }\n\n //note: \"engine\" is your babylonjs engine variable\n //note: \"camera\" is the camera variable, optionally you can pass the camera as function parameter (change this function to accept second parameter)\n const temp = new BABYLON.Vector3();\n const vertices = mesh.getBoundingInfo().boundingBox.vectorsWorld;\n\n let renderWidth = engine.getRenderWidth();\n let renderHeight = engine.getRenderHeight();\n\n renderWidth *= engine.getHardwareScalingLevel();\n renderHeight *= engine.getHardwareScalingLevel();\n\n const sceneTransformMatrix = window.scene.getTransformMatrix();\n\n const viewport = window.scene.activeCamera.viewport.toGlobal(\n renderWidth,\n renderHeight\n );\n\n let minX = 1e10,\n minY = 1e10,\n maxX = -1e10,\n maxY = -1e10;\n\n for (const vertex of vertices) {\n BABYLON.Vector3.ProjectToRef(\n vertex,\n BABYLON.Matrix.IdentityReadOnly,\n sceneTransformMatrix,\n viewport,\n temp\n );\n if (minX > temp.x) minX = temp.x;\n if (maxX < temp.x) maxX = temp.x;\n if (minY > temp.y) minY = temp.y;\n if (maxY < temp.y) maxY = temp.y;\n }\n\n const height = maxX - minX;\n const width = maxY - minY;\n\n return { height, width, minX, minY, maxX, maxY };\n}\n\nfunction loadHelper() {\n const uniqueID = generateUniqueID();\n pendingOperations.push(uniqueID);\n\n return new Promise((resolve) => {\n BABYLON.SceneLoader.ImportMesh(\n \"\",\n `${BASE_URL}avatars/Host/`,\n \"Host.gltf\",\n window.scene,\n (meshes) => {\n meshes.forEach((mesh) => (mesh.renderingGroupId = 1));\n\n host = meshes[0];\n host.name = \"__root__host\";\n host.id = \"__root__host\";\n\n const hostPosition = hostPositions[lab];\n\n host.position = new BABYLON.Vector3(\n hostPosition[0],\n hostPosition[1],\n hostPosition[2]\n );\n\n const idleAnimation = window.scene.getAnimationGroupByName(\"Host_Idle\");\n\n idleAnimation.play(true);\n\n const boxHost = BABYLON.MeshBuilder.CreateBox(\"boxHost\", {\n height: 2,\n width: 1,\n depth: 1.2,\n });\n\n boxHost.renderingGroupId = 1;\n boxHost.position = new BABYLON.Vector3(\n hostPosition[0],\n 1,\n hostPosition[2]\n );\n // boxHost.position = new BABYLON.Vector3(4, 0, 1.7);\n boxHost.rotation = new BABYLON.Vector3(0, -Math.PI / 2, 0);\n boxHost.checkCollisions = true;\n boxHost.isPickable = true;\n boxHost.isVisible = false;\n\n host.setEnabled(false);\n\n pendingOperations = pendingOperations.filter((id) => id !== uniqueID);\n\n resolve();\n }\n );\n });\n}\n\nfunction displayHost(display) {\n host.setEnabled(display);\n}\n\nfunction displayPlayer(thirdPerson) {\n callbackChangePerspective(thirdPerson);\n}\n\nfunction changePerspective(thirdPerson) {\n player.setEnabled(thirdPerson);\n}\n\nfunction loadAvatar(playerName) {\n const uniqueID = generateUniqueID();\n pendingOperations.push(uniqueID);\n\n playerNameGlobal = playerName;\n\n displayHost(true);\n\n return new Promise((resolve) => {\n BABYLON.SceneLoader.ImportMesh(\n \"\",\n `${BASE_URL}avatars/${playerName}/`,\n `${playerName}.gltf`,\n window.scene,\n (meshes, particleSystems, skeletons) => {\n meshes.forEach((mesh) => (mesh.renderingGroupId = 1));\n\n player = meshes[0];\n player.name = \"__root__player\";\n player.id = \"__root__player\";\n let skeleton = skeletons[0];\n player.skeleton = skeleton;\n\n const playerPosition = playerPositions[lab];\n\n if (playerPosition) {\n player.position = new BABYLON.Vector3(\n playerPosition[0],\n playerPosition[1],\n playerPosition[2]\n );\n } else {\n console.error(\"Add position for player on this lab\");\n }\n\n player.checkCollisions = true;\n player.ellipsoid = new BABYLON.Vector3(0.5, 1, 0.5);\n player.ellipsoidOffset = new BABYLON.Vector3(0, 1, 0);\n player.rotation = playerRotation;\n\n const walkingAnimation = window.scene.getAnimationGroupByName(\n `${playerName}_Walking`\n );\n\n const idleAnimation = window.scene.getAnimationGroupByName(\n `${playerName}_Idle`\n );\n\n const agMap = {\n idle: idleAnimation,\n walk: walkingAnimation,\n run: walkingAnimation,\n walkBack: walkingAnimation,\n walkBackFast: walkingAnimation,\n turnRight: idleAnimation,\n turnRightFast: idleAnimation,\n turnLeft: idleAnimation,\n turnLeftFast: idleAnimation,\n strafeRight: walkingAnimation,\n strafeRightFast: walkingAnimation,\n strafeLeft: walkingAnimation,\n strafeLeftFast: walkingAnimation,\n };\n\n cc = new CharacterController(\n player,\n window.scene.getCameraByName(\"Main\"),\n window.scene,\n agMap\n ); // , agMap\n //below makes the controller point the camera at the player head which is approx\n //1.5m above the player origin\n cc.setCameraTarget(new BABYLON.Vector3(0, 1.5, 0));\n\n //if the camera comes close to the player we want to enter first person mode.\n cc.setNoFirstPerson(false);\n\n //the height of steps which the player can climb\n cc.setStepOffset(1);\n //the minimum and maximum slope the player can go up\n //between the two the player will start sliding down if it stops\n cc.setSlopeLimit(30, 60);\n\n //tell controller\n // - which animation range should be used for which player animation\n // - rate at which to play that animation range\n // - wether the animation range should be looped\n\n cc.setIdleAnim(idleAnimation, 1, true);\n\n cc.setWalkAnim(walkingAnimation, 1, true);\n cc.setRunAnim(walkingAnimation, 1, true);\n\n cc.setWalkBackAnim(walkingAnimation, 1, true);\n cc.setWalkBackFastAnim(walkingAnimation, 1, true);\n\n cc.setTurnRightAnim(idleAnimation, 1, false);\n cc.setTurnRightFastAnim(idleAnimation, 1, false);\n\n cc.setTurnLeftAnim(idleAnimation, 1, false);\n cc.setTurnLeftFastAnim(idleAnimation, 1, false);\n\n cc.setStrafeRightAnim(walkingAnimation, 1, true);\n cc.setStrafeRightFastAnim(walkingAnimation, 1, true);\n\n cc.setStrafeLeftAnim(walkingAnimation, 1, true);\n cc.setStrafeLeftFastAnim(walkingAnimation, 1, true);\n\n // Disable jump key to avoid the usage of this interaction\n cc.setJumpKey(\"\");\n // Set run and walk speed with the same value to fake not running\n cc.setRunSpeed(3.5);\n cc.setWalkSpeed(3.5);\n // Set run and walk back speed with the same value to fake not running back\n cc.setBackFastSpeed(2.5);\n cc.setBackSpeed(2.5);\n // Increase turn speed for a better 3rd person performance\n cc.setTurnFastSpeed(50);\n cc.setTurnSpeed(50);\n\n cc.start();\n\n pendingOperations = pendingOperations.filter((id) => id !== uniqueID);\n\n lookingAt = \"host\";\n\n resolve();\n }\n );\n });\n}\n\nlet skipLoad = false;\n\nfunction setSkipLoad(value) {\n skipLoad = value;\n for (let index = 0; index < slideInAnimations.length; index++) {\n slideInAnimations[index].animation.stop();\n }\n for (let index = 0; index < doorAnimations.length; index++) {\n doorAnimations[index].animation.stop();\n }\n slideInAnimations = [];\n doorAnimations = [];\n}\n\nasync function loadProduct(productObj, force = false, replace = false) {\n cc.enableKeyBoard(false);\n setCamera(\"Helper\");\n\n product = window.scene.getTransformNodeByName(`${productObj.model}_Group`);\n\n lookingAt = \"rails\";\n\n const boxProduct = window.scene.getMeshByName(\n `boxProduct_${productObj.model}`\n );\n\n const boxPipes = window.scene.getMeshByName(`boxPipes_${productObj.model}`);\n const boxHeatExchanger = window.scene.getMeshByName(\n `boxHeatExchanger_${productObj.model}`\n );\n\n boxProduct.setEnabled(true);\n\n if (boxPipes) {\n boxPipes.setEnabled(true);\n }\n\n if (boxHeatExchanger) {\n boxHeatExchanger.setEnabled(true);\n }\n\n product.setEnabled(true);\n\n if (!force) {\n const rails = window.scene.getMeshByName(\"P_Rails\");\n const boxRails = window.scene.getMeshByName(\"boxRails\");\n\n const finalRails = initialPositions[\"RAILS\"];\n const finalProduct = initialPositions[productObj.model];\n\n boxRails.setEnabled(true);\n if (!replace) {\n // If we are replacing product this was already sounding\n if (!skipLoad) {\n playLoopSound(\"rails\", \"rail.mp3\");\n } else {\n return await finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n );\n }\n\n // If we were replacing product the doors and rails are already set\n if (!skipLoad) {\n openDoors(true, 0.5);\n } else {\n return await finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n );\n }\n\n if (lab === \"Chill_Lab\") {\n if (!skipLoad) {\n await slideInAnimation(rails, \"RAILS\", false, true);\n } else {\n return await finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n );\n }\n }\n }\n\n if (lab === \"Chill_Lab\") {\n if (!skipLoad) {\n slideInAnimation(rails, \"RAILS\", true, true);\n } else {\n return await finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n );\n }\n }\n\n if (!skipLoad) {\n await slideInAnimation(product, productObj.model, true, true);\n } else {\n return await finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n );\n }\n\n return await finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n );\n } else {\n if (lab === \"Chill_Lab\") {\n product.position.x += 15;\n await loadCables(true, productObj, force);\n } else {\n product.position.z -= 15;\n await loadDuct(true, productObj, force);\n }\n }\n}\n\nasync function finishLoadProduct(\n rails,\n product,\n finalRails,\n finalProduct,\n boxRails,\n productObj\n) {\n stopSound();\n boxRails.setEnabled(false);\n\n if (lab === \"Chill_Lab\") {\n rails.position.x = finalRails;\n product.position.x = finalProduct;\n openDoors(false);\n await loadCables(true, productObj, skipLoad);\n } else {\n product.position.z = finalProduct;\n openDoors(false);\n await loadDuct(true, productObj, skipLoad);\n }\n}\n\nasync function hideProduct(productObj, force = false, replace = false) {\n const boxPipes = window.scene.getMeshByName(`boxPipes_${productObj.model}`);\n const boxHeatExchanger = window.scene.getMeshByName(\n `boxHeatExchanger_${productObj.model}`\n );\n\n if (boxPipes) {\n boxPipes.setEnabled(false);\n }\n\n if (boxHeatExchanger) {\n boxHeatExchanger.setEnabled(false);\n }\n\n const product = window.scene.getTransformNodeByName(\n `${productObj.model}_Group`\n );\n\n if (!force) {\n cc.enableKeyBoard(false);\n setCamera(\"Helper\");\n lookingAt = \"rails\";\n }\n\n if (lab === \"Chill_Lab\") {\n await loadCables(false, productObj, force);\n } else {\n await loadDuct(false, productObj, force);\n }\n\n const boxProduct = window.scene.getMeshByName(\n `boxProduct_${productObj.model}`\n );\n\n if (!force) {\n const boxRails = window.scene.getMeshByName(\"boxRails\");\n\n boxRails.setEnabled(true);\n const rails = window.scene.getMeshByName(\"P_Rails\");\n\n const finalRails = !replace\n ? initialPositions[\"RAILS\"]\n : initialPositions[\"RAILS\"] - (lab === \"Chill_Lab\" ? 1 : -1) * 15;\n const finalProduct =\n initialPositions[productObj.model] - (lab === \"Chill_Lab\" ? 1 : -1) * 15;\n\n if (!skipLoad) {\n playLoopSound(\"rails\", \"rail.mp3\");\n } else {\n return await finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n );\n }\n\n if (!skipLoad) {\n openDoors(true, 0.5);\n } else {\n return await finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n );\n }\n\n if (lab === \"Chill_Lab\") {\n if (!skipLoad) {\n slideInAnimation(rails, \"RAILS\", false, true);\n } else {\n return await finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n );\n }\n }\n\n if (!skipLoad) {\n await slideInAnimation(product, productObj.model, false, true);\n } else {\n return await finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n );\n }\n\n if (!replace) {\n // If we are not going to insert now the other product\n // Return rails to their position\n if (lab === \"Chill_Lab\") {\n if (!skipLoad) {\n await slideInAnimation(rails, \"RAILS\", true, true);\n } else {\n return await finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n );\n }\n }\n }\n\n return await finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n );\n } else {\n if (lab === \"Chill_Lab\") {\n product.position.x -= 15;\n } else {\n product.position.x += 15;\n }\n\n if (!replace) {\n boxProduct.setEnabled(false);\n\n cc.enableKeyBoard(true);\n setCamera(\"Main\");\n lookingAt = \"host\";\n }\n product.setEnabled(false);\n }\n}\n\nasync function finishHideProduct(\n rails,\n finalRails,\n finalProduct,\n boxRails,\n boxProduct,\n product,\n replace\n) {\n stopSound();\n boxRails.setEnabled(false);\n boxProduct.setEnabled(false);\n\n if (!replace) {\n cc.enableKeyBoard(true);\n setCamera(\"Main\");\n lookingAt = \"host\";\n\n openDoors(false);\n }\n product.setEnabled(false);\n\n if (lab === \"Chill_Lab\") {\n rails.position.x = finalRails;\n product.position.x = finalProduct;\n } else {\n product.position.z = finalProduct;\n }\n}\n\nasync function setLegsOnGround({ load, productObj, force = false }) {\n const legs = window.scene.getMeshByName(`P_${productObj.model}_Legs`);\n\n let to;\n switch (productObj.model) {\n case \"CWA\":\n to = load ? 0.75 : 0.88;\n break;\n case \"PDX\":\n to = load ? 0.455 : 0.563;\n break;\n }\n\n if (!force) {\n await dropDownAnimation({ mesh: legs, to, speed: 0.4 });\n if (load) {\n await highlight(\n `P_${productObj.model}_Platform`,\n \"electric\",\n true,\n false\n );\n }\n } else {\n legs.position.y = to;\n }\n}\n\nasync function loadDuct(load, productObj, force = false) {\n await setLegsOnGround({ load, productObj, force });\n\n const duct = window.scene.getMeshByName(`P_${productObj.model}_Duct`);\n\n if (load) {\n duct.setEnabled(true);\n }\n\n if (!force) {\n await showAnimation(duct, load, 0.4);\n } else {\n duct.visibility = load ? 1 : 0;\n }\n\n if (!load) {\n duct.setEnabled(false);\n }\n\n await loadCables(load, productObj, force || skipLoad);\n}\n\nasync function loadCables(load, productObj, force = false) {\n let int;\n let ext;\n let cover;\n\n if (lab === \"Chill_Lab\") {\n int = window.scene.getMeshByName(\"P_Cables_PowerFlow_Interior\");\n ext = window.scene.getMeshByName(\"P_Cables_PowerFlow_Exterior\");\n } else {\n int = window.scene.getMeshByName(\n `P_${productObj.model}_Cables_PowerFlow_Interior`\n );\n ext = window.scene.getMeshByName(\n `P_${productObj.model}_Cables_PowerFlow_Exterior`\n );\n cover = window.scene.getMeshByName(`P_${productObj.model}_Cables_Cover`);\n }\n\n if (load) {\n createPowerAnimation(int);\n ext.setEnabled(true);\n if (lab === \"Indoor_Lab\") {\n cover.setEnabled(true);\n }\n }\n\n if (!force) {\n if (!load) {\n if (lab === \"Indoor_Lab\") {\n await showAnimation(cover, false, 0.4);\n }\n }\n await showAnimation(ext, load, 0.4);\n if (load) {\n if (lab === \"Indoor_Lab\") {\n await showAnimation(cover, true, 0.4);\n }\n }\n } else {\n ext.visibility = load ? 1 : 0;\n if (lab === \"Indoor_Lab\") {\n cover.visibility = load ? 1 : 0;\n }\n }\n\n if (!load) {\n ext.setEnabled(false);\n if (lab === \"Indoor_Lab\") {\n cover.setEnabled(false);\n }\n }\n\n await loadHoses(load, productObj, force || skipLoad);\n}\n\nasync function loadHoses(load, productObj, force = false) {\n const extSup = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_ExteriorSuperior`\n );\n const extInf = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_ExteriorInferior`\n );\n let heatExchanger;\n\n let outlet;\n let inlet;\n\n if (lab === \"Chill_Lab\") {\n outlet = window.scene.getMeshByName(\n `P_${productObj.model}_Outlet_Connection`\n );\n inlet = window.scene.getMeshByName(\n `P_${productObj.model}_Inlet_Connection`\n );\n } else if (productObj.model === \"PDX\") {\n heatExchanger = window.scene.getMeshByName(`P_PDX_Heat_Exchanger`);\n }\n\n if (load) {\n createWaterAnimation(productObj);\n extSup.setEnabled(true);\n extInf.setEnabled(true);\n\n if (lab === \"Chill_Lab\") {\n outlet.setEnabled(true);\n inlet.setEnabled(true);\n } else if (productObj.model === \"PDX\") {\n heatExchanger.setEnabled(true);\n }\n }\n\n if (!force) {\n const promises = [\n showAnimation(extSup, load, 1),\n showAnimation(extInf, load, 1),\n ];\n\n if (lab === \"Chill_Lab\") {\n promises.push(\n showAnimation(outlet, load, 1),\n showAnimation(inlet, load, 1)\n );\n } else if (productObj.model === \"PDX\") {\n promises.push(showAnimation(heatExchanger, load, 1));\n }\n\n await Promise.all(promises);\n } else {\n extSup.visibility = load ? 1 : 0;\n extInf.visibility = load ? 1 : 0;\n if (lab === \"Chill_Lab\") {\n outlet.visibility = load ? 1 : 0;\n inlet.visibility = load ? 1 : 0;\n } else if (productObj.model === \"PDX\") {\n heatExchanger.visibility = load ? 1 : 0;\n }\n }\n\n if (!load) {\n extSup.setEnabled(false);\n extInf.setEnabled(false);\n if (lab === \"Chill_Lab\") {\n outlet.setEnabled(false);\n inlet.setEnabled(false);\n } else if (productObj.model === \"PDX\") {\n heatExchanger.setEnabled(false);\n }\n }\n}\n\nasync function loadWaterDrop(load, force) {\n const mesh = window.scene.getMeshByName(\"P_AFC_AD_Drop_Water\");\n\n if (load) {\n mesh.setEnabled(true);\n }\n\n if (!force) {\n await Promise.all([showAnimation(mesh, load, 1)]);\n } else {\n mesh.visibility = load ? 1 : 0;\n }\n\n if (!load) {\n mesh.setEnabled(false);\n }\n}\n\nasync function loadAirFlow(load, force = false, productObj) {\n let meshHot;\n let meshCold;\n let meshExterior;\n let meshPlatform;\n let meshDuctHorizontal;\n // let meshDuctVertical;\n\n if (lab === \"Chill_Lab\") {\n meshHot = window.scene.getMeshByName(\"P_AirFlow_Hot\");\n meshCold = window.scene.getMeshByName(\"P_AirFlow_Cold\");\n } else if (lab === \"Indoor_Lab\") {\n meshHot = window.scene.getMeshByName(`P_${productObj.model}_AirFlow_Hot`);\n meshCold = window.scene.getMeshByName(`P_${productObj.model}_AirFlow_Cold`);\n meshExterior = window.scene.getMeshByName(`P_${productObj.model}_Exterior`);\n if (productObj.model === \"PDX\") {\n meshPlatform = window.scene.getMeshByName(`P_PDX_Platform`);\n }\n meshDuctHorizontal = window.scene.getMeshByName(\n `P_${productObj.model}_Duct`\n );\n // meshDuctVertical = window.scene.getMeshByName(`P_AirFlow_Connection`);\n }\n\n if (load) {\n meshCold.setEnabled(true);\n meshHot.setEnabled(true);\n }\n\n if (!force) {\n const promises = [\n showAnimation(meshCold, load, 0.4),\n showAnimation(meshHot, load, 0.4),\n ];\n\n if (lab === \"Indoor_Lab\") {\n promises.push(\n showAnimation(meshExterior, !load, 1, 0.33),\n showAnimation(meshDuctHorizontal, !load, 1, 0.33)\n // showAnimation(meshDuctVertical, !load, 0.4, 0.33)\n );\n if (productObj.model === \"PDX\") {\n promises.push(showAnimation(meshPlatform, !load, 1, 0.33));\n }\n }\n\n await Promise.all(promises);\n } else {\n meshCold.visibility = load ? 1 : 0;\n meshHot.visibility = load ? 1 : 0;\n\n if (lab === \"Indoor_Lab\") {\n if (meshExterior) {\n meshExterior.visibility = load ? 0.33 : 1;\n }\n\n if (meshPlatform) {\n meshPlatform.visibility = load ? 0.33 : 1;\n }\n\n if (meshDuctHorizontal) {\n meshDuctHorizontal.visibility = load ? 0.33 : 1;\n }\n\n // if (meshDuctVertical) {\n // meshDuctVertical.visibility = load ? 0.33 : 1;\n // }\n }\n }\n\n if (!load) {\n meshCold.setEnabled(false);\n meshHot.setEnabled(false);\n }\n}\n\nasync function loadControlRoom(load) {\n const meshGlassClear = window.scene.getMeshByName(\n \"P_Control_Room_Window_Clear\"\n );\n const meshGlassDark = window.scene.getMeshByName(\n \"P_Control_Room_Window_Dark\"\n );\n\n if (load) {\n meshGlassClear.setEnabled(true);\n } else {\n meshGlassDark.setEnabled(true);\n }\n\n await Promise.all([\n showAnimation(meshGlassClear, load, 0.4),\n showAnimation(meshGlassDark, !load, 0.4),\n ]);\n\n if (load) {\n meshGlassDark.setEnabled(false);\n } else {\n meshGlassClear.setEnabled(false);\n }\n}\n\nasync function loadCompressor({ load, productObj, force = false }) {\n // P_AFC_NA_Compressor\n const ext = window.scene.getMeshByName(`P_${productObj.model}`);\n\n if (!force) {\n await showAnimation(ext, !load, 0.4, 0.33);\n } else {\n ext.visibility = load ? 0.33 : 1;\n }\n}\n\nfunction showAnimation(mesh, show, speed = 0.1, visibility = 0) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n if (!mesh) {\n console.error(\"Mesh non existing\");\n return;\n } else if (typeof mesh === \"string\") {\n mesh = window.scene.getMeshByName(mesh);\n }\n\n const keysFade = [\n {\n frame: 0,\n value: mesh.visibility,\n },\n {\n frame: 1,\n value: show ? 1 : visibility,\n },\n ];\n\n const fadeAnimation = new BABYLON.Animation(\n \"fade\",\n \"visibility\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT,\n true\n );\n\n fadeAnimation.setKeys(keysFade);\n\n return new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n mesh,\n [fadeAnimation],\n 0,\n 1,\n false,\n speed,\n () => {\n mesh.visibility = show ? 1 : visibility;\n resolve();\n },\n null,\n true\n );\n });\n}\n\nfunction colorAnimation({ mesh, color, speed = 0.1 }) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n if (typeof mesh === \"string\") {\n mesh = window.scene.getMeshByName(mesh);\n }\n\n const keys = [\n {\n frame: 0,\n value: mesh.material.albedoColor,\n },\n {\n frame: 1,\n value: BABYLON.Color3.FromHexString(color).toLinearSpace(),\n },\n ];\n\n const animation = new BABYLON.Animation(\n \"color\",\n \"material.albedoColor\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_COLOR3,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n animation.setKeys(keys);\n\n return new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n mesh,\n [animation],\n 0,\n 1,\n false,\n speed,\n resolve\n );\n });\n}\n\nfunction dropDownAnimation({ mesh, to, speed = 0.1 }) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n if (typeof mesh === \"string\") {\n mesh = window.scene.getMeshByName(mesh);\n }\n\n const keysdropDown = [\n {\n frame: 0,\n value: mesh.position.y,\n },\n {\n frame: 1,\n value: to,\n },\n ];\n\n const ddAnimation = new BABYLON.Animation(\n \"dropDown\",\n \"position.y\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n ddAnimation.setKeys(keysdropDown);\n\n return new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n mesh,\n [ddAnimation],\n 0,\n 1,\n false,\n speed,\n resolve\n );\n });\n}\n\nlet slideInAnimations = [];\nasync function slideInAnimation(\n mesh,\n meshName,\n show,\n useSkip = false,\n speed = 0.1\n) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n if (typeof mesh === \"string\") {\n mesh = window.scene.getMeshByName(mesh);\n }\n\n const initial = lab === \"Chill_Lab\" ? mesh.position.x : mesh.position.z;\n\n // initialPositions[meshName]\n\n const final = show\n ? initialPositions[meshName]\n : initialPositions[meshName] - (lab === \"Chill_Lab\" ? 1 : -1) * 15;\n\n const keysdropDown = [\n {\n frame: 0,\n value: initial,\n },\n {\n frame: 1,\n value: final,\n },\n ];\n\n const ddAnimation = new BABYLON.Animation(\n \"dropDown\",\n lab === \"Chill_Lab\" ? \"position.x\" : \"position.z\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n ddAnimation.setKeys(keysdropDown);\n\n await new Promise((resolve) => {\n const uniqueID = generateUniqueID();\n const animation = window.scene.beginDirectAnimation(\n mesh,\n [ddAnimation],\n 0,\n 1,\n false,\n speed,\n () => {\n if (!skipLoad && useSkip) {\n slideInAnimations = slideInAnimations.filter(\n (el) => el.uniqueID !== uniqueID\n );\n }\n\n resolve();\n }\n );\n\n if (useSkip) {\n slideInAnimations.push({ uniqueID, animation });\n }\n });\n}\n\nlet initialPanelPosition;\nlet finalPanelPosition;\n\nfunction soundPanelAnimation(show, speed = 0.1) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n const AFC_SoundPanel = window.scene.getTransformNodeByName(\"AFC_SoundPanel\");\n\n const initialY = AFC_SoundPanel.position.y;\n const keysdropDown = [\n {\n frame: 0,\n value: initialY,\n },\n {\n frame: 1,\n value: show ? finalPanelPosition : initialPanelPosition,\n },\n ];\n\n const ddAnimation = new BABYLON.Animation(\n \"dropDown\",\n \"position.y\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n ddAnimation.setKeys(keysdropDown);\n\n return new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n AFC_SoundPanel,\n [ddAnimation],\n 0,\n 1,\n false,\n speed,\n () => {\n resolve();\n }\n );\n });\n}\n\nfunction lightAnimation(show, speed = 1) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n const easingFunction = new BABYLON.BezierCurveEase(0.32, 0, 0.67, 0);\n\n const light1 = window.scene.getLightByName(\"light1\");\n const light2 = window.scene.getLightByName(\"light2\");\n\n const keysLight = [\n {\n frame: 0,\n value: 0,\n },\n {\n frame: 1,\n value: 0.7,\n },\n ];\n\n const lightAnimation = new BABYLON.Animation(\n \"light\",\n \"intensity\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n lightAnimation.setKeys(keysLight);\n\n lightAnimation.setEasingFunction(easingFunction);\n\n const promises = [];\n if (light1) {\n const prAnimationLight1 = new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n light1,\n [lightAnimation],\n show ? 0 : 1,\n show ? 1 : 0,\n false,\n speed,\n resolve\n );\n });\n\n promises.push(prAnimationLight1);\n }\n\n if (light2) {\n const prAnimationLight2 = new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n light2,\n [lightAnimation],\n show ? 0 : 1,\n show ? 1 : 0,\n false,\n speed,\n resolve\n );\n });\n\n promises.push(prAnimationLight2);\n }\n\n const keysNormal = [\n {\n frame: 0,\n value: 0,\n },\n {\n frame: 1,\n value: 1,\n },\n ];\n\n const envAnimation = new BABYLON.Animation(\n \"env\",\n \"environmentIntensity\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n envAnimation.setKeys(keysNormal);\n envAnimation.setEasingFunction(easingFunction);\n\n const prEnvAnimation = new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n window.scene,\n [envAnimation],\n show ? 0 : 1,\n show ? 1 : 0,\n false,\n speed,\n resolve\n );\n });\n\n promises.push(prEnvAnimation);\n\n const lightCeiling = window.scene.getMaterialByName(\"M_Ceiling\");\n\n if (lightCeiling) {\n try {\n // TODO\n const lightCeilingAnimation = new BABYLON.Animation(\n \"lightCeilingAnimation\",\n \"emissiveIntensity\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n lightCeilingAnimation.setKeys(keysNormal);\n lightCeilingAnimation.setEasingFunction(easingFunction);\n\n const prLightCeilingAnimation = new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n lightCeiling,\n [lightCeilingAnimation],\n show ? 0 : 1,\n show ? 1 : 0,\n false,\n speed,\n resolve\n );\n });\n\n promises.push(prLightCeilingAnimation);\n // lightCeiling.emissiveIntensity = show ? 1 : 0;\n } catch (error) {\n console.log(error);\n }\n }\n\n const lightCeilingCRAC = window.scene.getMaterialByName(\"M_Structure\");\n\n if (lightCeilingCRAC) {\n try {\n // TODO\n const lightCeilingCRACAnimation = new BABYLON.Animation(\n \"lightCeilingCRACAnimation\",\n \"emissiveIntensity\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n lightCeilingCRACAnimation.setKeys(keysNormal);\n lightCeilingCRACAnimation.setEasingFunction(easingFunction);\n\n const prLightCeilingCRACAnimation = new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n lightCeilingCRAC,\n [lightCeilingCRACAnimation],\n show ? 0 : 1,\n show ? 1 : 0,\n false,\n speed,\n resolve\n );\n });\n\n promises.push(prLightCeilingCRACAnimation);\n // lightCeilingCRAC.emissiveIntensity = show ? 1 : 0;\n } catch (error) {\n console.log(error);\n }\n }\n\n const lightProps = window.scene.getMaterialByName(\"M_Props\");\n\n if (lightProps) {\n try {\n const lightPropsAnimation = new BABYLON.Animation(\n \"lightPropsAnimation\",\n \"emissiveIntensity\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n lightPropsAnimation.setKeys(keysNormal);\n lightPropsAnimation.setEasingFunction(easingFunction);\n\n const prLightPropsAnimation = new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n lightProps,\n [lightPropsAnimation],\n show ? 0 : 1,\n show ? 1 : 0,\n false,\n speed,\n resolve\n );\n });\n\n promises.push(prLightPropsAnimation);\n // lightProps.emissiveIntensity = show ? 1 : 0;\n } catch (error) {\n console.log(error);\n }\n }\n\n return Promise.all(promises);\n}\n\nwindow.lightAnimation = lightAnimation;\n\nfunction movePlayer(final, speed = 1) {\n player.lookAt(final);\n\n const initial = new BABYLON.Vector3(\n player.position.x,\n player.position.y,\n player.position.z\n );\n\n const keys = [\n {\n frame: 0,\n value: initial,\n },\n {\n frame: 1,\n value: final,\n },\n ];\n\n const animation = new BABYLON.Animation(\n \"movePlayer\",\n \"position\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_VECTOR3,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n animation.setKeys(keys);\n\n return new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n player,\n [animation],\n 0,\n 1,\n false,\n speed,\n () => {\n resolve();\n }\n );\n });\n}\n\nasync function securePlayer(force = false, mode = \"product\", speed = 4) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n const securePlayerPoints = securePlayerPointss[lab];\n\n if (!force) {\n cc.enableKeyBoard(false);\n\n setCamera(\"Helper\");\n\n cc.pauseAnim();\n const walkingAnimation = window.scene.getAnimationGroupByName(\n `${playerNameGlobal}_Walking`\n );\n\n walkingAnimation.play(true);\n\n const initial = new BABYLON.Vector3(\n player.position.x,\n player.position.y,\n player.position.z\n );\n\n // bottom left\n const starting1 = new BABYLON.Vector3(\n securePlayerPoints.starting1[0],\n player.position.y,\n securePlayerPoints.starting1[1]\n );\n const distance1 = BABYLON.Vector3.Distance(starting1, initial);\n\n // top left\n const starting2 = new BABYLON.Vector3(\n securePlayerPoints.starting2[0],\n player.position.y,\n securePlayerPoints.starting2[1]\n );\n const distance2 = BABYLON.Vector3.Distance(starting2, initial);\n\n // top right\n const starting3 = new BABYLON.Vector3(\n securePlayerPoints.starting3[0],\n player.position.y,\n securePlayerPoints.starting3[1]\n );\n const distance3 = BABYLON.Vector3.Distance(starting3, initial);\n\n // bottom right\n const starting4 = new BABYLON.Vector3(\n securePlayerPoints.starting4[0],\n player.position.y,\n securePlayerPoints.starting4[1]\n );\n const distance4 = BABYLON.Vector3.Distance(starting4, initial);\n\n const distance = Math.min(distance1, distance2, distance3, distance4);\n\n if (distance === distance2) {\n // Or go directly to point 1 or go point 2 then point 1\n if (distance1 > distance3) {\n // Go point 2 then point 1\n if (distance2) {\n await movePlayer(starting2, speed / distance2);\n }\n\n const distance21 = BABYLON.Vector3.Distance(starting2, starting1);\n await movePlayer(starting1, speed / distance21);\n } else {\n // Do nothing directly point 1\n if (distance1) {\n await movePlayer(starting1, speed / distance1);\n }\n }\n } else if (distance === distance3) {\n // Go directly to point 2/4 then point 1\n if (distance2 > distance4) {\n // Go point 4 then point 1\n if (distance4) {\n await movePlayer(starting4, speed / distance4);\n }\n\n const distance41 = BABYLON.Vector3.Distance(starting4, starting1);\n await movePlayer(starting1, speed / distance41);\n } else {\n // Go point 2 then point 1\n if (distance2) {\n await movePlayer(starting2, speed / distance2);\n }\n\n const distance21 = BABYLON.Vector3.Distance(starting2, starting1);\n await movePlayer(starting1, speed / distance21);\n }\n } else if (distance === distance4) {\n // Or go directly to point 1 or go point 4 then 1\n if (distance1 > distance3) {\n // Go point 4 then point 1\n if (distance4) {\n await movePlayer(starting4, speed / distance4);\n }\n\n const distance41 = BABYLON.Vector3.Distance(starting4, starting1);\n await movePlayer(starting1, speed / distance41);\n } else {\n // Do nothing directly point 1\n if (distance1 !== 0) {\n await movePlayer(starting1, speed / distance1);\n }\n }\n } else if (distance1 !== 0) {\n // if none meet nothing, normal path, closer to point 1\n await movePlayer(starting1, speed / distance1);\n }\n\n walkingAnimation.stop();\n cc.resumeAnim();\n\n setCamera(\"Main\");\n\n cc.enableKeyBoard(true);\n } else {\n let position;\n switch (mode) {\n case \"welcome\":\n // position = new BABYLON.Vector3(4.8, player.position.y, -4.25);\n if (playerPositions[lab]) {\n position = new BABYLON.Vector3(\n playerPositions[lab][0],\n playerPositions[lab][1],\n playerPositions[lab][2]\n );\n }\n break;\n case \"product\":\n position = new BABYLON.Vector3(\n securePlayerPoints.starting1[0],\n player.position.y,\n securePlayerPoints.starting1[1]\n );\n break;\n case \"power\":\n position = new BABYLON.Vector3(7, player.position.y, 2);\n break;\n case \"hydraulic\":\n position = new BABYLON.Vector3(4, player.position.y, -3);\n break;\n case \"thermoregulation\":\n case \"airDuct\":\n position = new BABYLON.Vector3(6, player.position.y, -2);\n break;\n }\n player.position = position;\n }\n\n let rotation;\n let alphaD;\n let betaD;\n let radiusD;\n switch (mode) {\n case \"welcome\":\n rotation = 270;\n alphaD = 63;\n betaD = 75;\n radiusD = 3;\n break;\n case \"product\":\n rotation = rotationPlayerTest[lab].rotation;\n alphaD = rotationPlayerTest[lab].alphaD;\n betaD = rotationPlayerTest[lab].betaD;\n break;\n case \"power\":\n rotation = 270;\n alphaD = 0;\n break;\n case \"hydraulic\":\n rotation = 270;\n alphaD = 0;\n break;\n case \"thermoregulation\":\n case \"airDuct\":\n rotation = -65;\n alphaD = -35;\n betaD = 90;\n break;\n }\n player.rotation.y = (rotation * Math.PI) / 180;\n\n const alpha = (alphaD * Math.PI) / 180;\n const beta = betaD ? (betaD * Math.PI) / 180 : 1.37;\n const radius = radiusD ? radiusD : 1.5;\n\n window.scene.activeCamera.alpha = alpha;\n window.scene.activeCamera.beta = beta;\n window.scene.activeCamera.radius = radius;\n}\n\nlet doorAnimations = [];\n\nfunction openDoors(open, speed = 1, angle = 45) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n const meshRight = window.scene.getNodeByName(\"Ani_Door_Right\");\n const meshLeft = window.scene.getNodeByName(\"Ani_Door_Left\");\n\n const initialR = meshRight.rotationQuaternion.y;\n const initialL = meshLeft.rotationQuaternion.y;\n\n const finalR = open ? (-angle * Math.PI) / 180 : 0;\n const finalL = open ? (angle * Math.PI) / 180 : 0;\n\n const keysR = [\n {\n frame: 0,\n value: initialR,\n },\n {\n frame: 1,\n value: finalR,\n },\n ];\n\n const keysL = [\n {\n frame: 0,\n value: initialL,\n },\n {\n frame: 1,\n value: finalL,\n },\n ];\n\n const animationR = new BABYLON.Animation(\n \"openDoorsR\",\n \"rotationQuaternion.y\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n animationR.setKeys(keysR);\n\n const animationL = new BABYLON.Animation(\n \"openDoorsL\",\n \"rotationQuaternion.y\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n animationL.setKeys(keysL);\n\n const promises = [];\n\n promises.push(\n new Promise((resolve) => {\n const uniqueIDR = generateUniqueID();\n\n const animation = window.scene.beginDirectAnimation(\n meshRight,\n [animationR],\n 0,\n 1,\n false,\n speed,\n () => {\n if (!skipLoad) {\n doorAnimations = doorAnimations.filter(\n (el) => el.uniqueID !== uniqueIDR\n );\n }\n\n resolve();\n }\n );\n\n if (!skipLoad) {\n doorAnimations.push({ uniqueID: uniqueIDR, animation });\n }\n })\n );\n\n promises.push(\n new Promise((resolve) => {\n const uniqueIDL = generateUniqueID();\n\n const animation = window.scene.beginDirectAnimation(\n meshLeft,\n [animationL],\n 0,\n 1,\n false,\n speed,\n () => {\n if (!skipLoad) {\n doorAnimations = doorAnimations.filter(\n (el) => el.uniqueID !== uniqueIDL\n );\n }\n\n resolve();\n }\n );\n\n if (!skipLoad) {\n doorAnimations.push({ uniqueID: uniqueIDL, animation });\n }\n })\n );\n\n return promises;\n}\n\nwindow.openDoors = openDoors;\n\nlet powerAnimation;\n\nfunction createPowerAnimation(int) {\n powerAnimation = BABYLON.Animation.CreateAndStartAnimation(\n \"vb\",\n int.material.albedoTexture,\n \"vOffset\",\n 10,\n 30,\n 0,\n 1,\n 1\n );\n\n powerAnimation.speedRatio = 0;\n}\n\nasync function displayPowerAnimation({\n display,\n productObj,\n force = false,\n speed = 1,\n}) {\n let int;\n let ext;\n let cover;\n\n if (lab === \"Chill_Lab\") {\n int = window.scene.getMeshByName(\"P_Cables_PowerFlow_Interior\");\n ext = window.scene.getMeshByName(\"P_Cables_PowerFlow_Exterior\");\n } else {\n int = window.scene.getMeshByName(\n `P_${productObj.model}_Cables_PowerFlow_Interior`\n );\n ext = window.scene.getMeshByName(\n `P_${productObj.model}_Cables_PowerFlow_Exterior`\n );\n cover = window.scene.getMeshByName(`P_${productObj.model}_Cables_Cover`);\n }\n\n if (display) {\n // Mostrar la partse con animación\n int.setEnabled(true);\n } else {\n // Mostrar la parte exterior\n ext.setEnabled(true);\n }\n\n if (!force) {\n if (lab === \"Indoor_Lab\") {\n showAnimation(cover, !display, speed, 0.33);\n }\n await Promise.all([\n showAnimation(int, display, speed),\n showAnimation(ext, !display, speed),\n ]);\n } else {\n int.visibility = display ? 1 : 0;\n ext.visibility = display ? 0 : 1;\n if (lab === \"Indoor_Lab\") {\n cover.visibility = display ? 0 : 1;\n }\n }\n\n if (!display) {\n int.setEnabled(false);\n } else {\n ext.setEnabled(false);\n }\n}\n\nlet waterAnimationHot;\nlet waterAnimationCold;\n\nfunction createWaterAnimation(productObj) {\n const intHot = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_Interior_Hot`\n );\n\n const intCold = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_Interior_Cold`\n );\n waterAnimationHot = BABYLON.Animation.CreateAndStartAnimation(\n \"vb\",\n intHot.material.albedoTexture,\n \"vOffset\",\n 120,\n 30,\n 1,\n 0,\n 1\n );\n\n waterAnimationHot.speedRatio = 0;\n\n waterAnimationCold = BABYLON.Animation.CreateAndStartAnimation(\n \"vb\",\n intCold.material.albedoTexture,\n \"vOffset\",\n 120,\n 30,\n 0,\n 1,\n 1\n );\n\n waterAnimationCold.speedRatio = 0;\n}\n\nasync function displayWaterAnimation({\n productObj,\n display,\n force = false,\n speed = 1,\n}) {\n const intHot = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_Interior_Hot`\n );\n const intCold = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_Interior_Cold`\n );\n const extSup = window.scene.getMeshByName(\n `P_${productObj.model}_WaterFlow_ExteriorSuperior`\n );\n\n if (display) {\n // Mostrar la parte con animación\n intHot.setEnabled(true);\n intCold.setEnabled(true);\n } else {\n // Mostrar la parte exterior\n extSup.setEnabled(true);\n }\n\n if (!force) {\n if (display) {\n await showAnimation(extSup, false, speed);\n }\n\n await Promise.all([\n showAnimation(intHot, display, speed),\n showAnimation(intCold, display, speed),\n ]);\n\n if (!display) {\n await showAnimation(extSup, true, speed);\n }\n } else {\n intHot.visibility = display ? 1 : 0;\n intCold.visibility = display ? 1 : 0;\n\n extSup.visibility = display ? 0 : 1;\n }\n\n if (display) {\n extSup.setEnabled(false);\n } else {\n intHot.setEnabled(false);\n intCold.setEnabled(false);\n }\n}\n\nlet airAnimationHot;\nlet airAnimationCold;\n\nfunction airAnimationFn(on, productObj) {\n let intHot;\n let intCold;\n\n if (lab === \"Chill_Lab\") {\n intHot = window.scene.getMeshByName(\"P_AirFlow_Hot\");\n intCold = window.scene.getMeshByName(\"P_AirFlow_Cold\");\n } else {\n intHot = window.scene.getMeshByName(`P_${productObj.model}_AirFlow_Hot`);\n intCold = window.scene.getMeshByName(`P_${productObj.model}_AirFlow_Cold`);\n }\n\n if (!on) {\n if (airAnimationHot) {\n airAnimationHot.stop();\n }\n\n if (airAnimationCold) {\n airAnimationCold.stop();\n }\n\n intHot.setEnabled(false);\n intCold.setEnabled(false);\n } else {\n airAnimationHot = BABYLON.Animation.CreateAndStartAnimation(\n \"ub\",\n intHot.material.albedoTexture,\n \"uOffset\",\n 60,\n 30,\n 1,\n 0,\n 1\n );\n\n airAnimationHot.speedRatio = 0;\n\n airAnimationCold = BABYLON.Animation.CreateAndStartAnimation(\n \"ub\",\n intCold.material.albedoTexture,\n \"uOffset\",\n 60,\n 30,\n 0,\n 1,\n 1\n );\n\n airAnimationCold.speedRatio = 0;\n\n intHot.setEnabled(true);\n intCold.setEnabled(true);\n }\n}\n\nlet waterDropAnimation;\n\nfunction waterDropAnimationFn(on) {\n const mesh = window.scene.getMeshByName(\"P_AFC_AD_Drop_Water\");\n\n if (!on) {\n if (waterDropAnimation) {\n waterDropAnimation.stop();\n }\n\n mesh.setEnabled(false);\n } else {\n waterDropAnimation = BABYLON.Animation.CreateAndStartAnimation(\n \"ub\",\n mesh.material.albedoTexture,\n \"uOffset\",\n 60,\n 30,\n 1,\n 0,\n 1\n );\n\n waterDropAnimation.speedRatio = 0;\n\n mesh.setEnabled(true);\n }\n}\n\nlet fansAnimation = [];\n\nasync function changeSpeedAnimation({\n speed,\n msTransition,\n force = false,\n water = false,\n air = false,\n drops = false,\n fans = false,\n cables = false,\n}) {\n if (!force) {\n let numberOfTransitions = msTransition / 100;\n\n let speedWaterHot = 0;\n let speedWaterCold = 0;\n let speedAirHot = 0;\n let speedAirCold = 0;\n let speedDrops = 0;\n let speedFans = 0;\n let speedCables = 0;\n\n if (water) {\n if (waterAnimationHot) {\n speedWaterHot = waterAnimationHot.speedRatio;\n }\n if (waterAnimationCold) {\n speedWaterCold = waterAnimationCold.speedRatio;\n }\n }\n\n if (air) {\n if (airAnimationHot) {\n speedAirHot = airAnimationHot.speedRatio;\n }\n if (airAnimationCold) {\n speedAirCold = airAnimationCold.speedRatio;\n }\n }\n\n if (drops && waterDropAnimation) {\n speedDrops = waterDropAnimation.speedRatio;\n }\n\n if (fans && fansAnimation[0]) {\n speedFans = fansAnimation[0].speedRatio;\n }\n\n if (cables && powerAnimation) {\n speedCables = powerAnimation.speedRatio;\n }\n\n const differenceWaterHot = speed - speedWaterHot;\n const differenceWaterCold = speed - speedWaterCold;\n const differenceAirHot = speed - speedAirHot;\n const differenceAirCold = speed - speedAirCold;\n const differenceDrops = speed - speedDrops;\n const differenceFans = speed - speedFans;\n const differenceCables = speed - speedCables;\n\n const stepWaterHot = differenceWaterHot / numberOfTransitions;\n const stepWaterCold = differenceWaterCold / numberOfTransitions;\n const stepAirHot = differenceAirHot / numberOfTransitions;\n const stepAirCold = differenceAirCold / numberOfTransitions;\n const stepDrops = differenceDrops / numberOfTransitions;\n const stepFans = differenceFans / numberOfTransitions;\n const stepCables = differenceCables / numberOfTransitions;\n\n const controlMult = 10000000000;\n\n while (numberOfTransitions > 0) {\n if (water) {\n if (waterAnimationHot) {\n speedWaterHot =\n (speedWaterHot * controlMult + stepWaterHot * controlMult) /\n controlMult;\n waterAnimationHot.speedRatio = speedWaterHot;\n }\n\n if (waterAnimationCold) {\n speedWaterCold =\n (speedWaterCold * controlMult + stepWaterCold * controlMult) /\n controlMult;\n waterAnimationCold.speedRatio = speedWaterCold;\n }\n }\n\n if (air) {\n if (airAnimationHot) {\n speedAirHot =\n (speedAirHot * controlMult + stepAirHot * controlMult) /\n controlMult;\n airAnimationHot.speedRatio = speedAirHot;\n }\n\n if (airAnimationCold) {\n speedAirCold =\n (speedAirCold * controlMult + stepAirCold * controlMult) /\n controlMult;\n airAnimationCold.speedRatio = speedAirCold;\n }\n }\n\n if (drops && waterDropAnimation) {\n speedDrops =\n (speedDrops * controlMult + stepDrops * controlMult) / controlMult;\n\n waterDropAnimation.speedRatio = speedDrops;\n }\n\n if (fans && fansAnimation[0]) {\n speedFans =\n (speedFans * controlMult + stepFans * controlMult) / controlMult;\n\n for (let index = 0; index < fansAnimation.length; index++) {\n const el = fansAnimation[index];\n el.speedRatio = speedFans;\n }\n }\n\n if (cables && powerAnimation) {\n speedCables =\n (speedCables * controlMult + stepCables * controlMult) / controlMult;\n\n powerAnimation.speedRatio = speedCables;\n }\n\n numberOfTransitions--;\n await sleep(100);\n }\n } else {\n if (water) {\n if (waterAnimationHot) {\n waterAnimationHot.speedRatio = speed;\n }\n if (waterAnimationCold) {\n waterAnimationCold.speedRatio = speed;\n }\n }\n\n if (air) {\n if (airAnimationHot) {\n airAnimationHot.speedRatio = speed;\n }\n if (airAnimationCold) {\n airAnimationCold.speedRatio = speed;\n }\n }\n\n if (drops && waterDropAnimation) {\n waterDropAnimation.speedRatio = speed;\n }\n\n if (fans && fansAnimation[0]) {\n for (let index = 0; index < fansAnimation.length; index++) {\n const el = fansAnimation[index];\n el.speedRatio = speed;\n }\n }\n\n if (cables && powerAnimation) {\n powerAnimation.speedRatio = speed;\n }\n }\n}\n\nfunction fanAnimationFn(on, speed = 0) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || speed;\n }\n\n if (on) {\n fansAnimation = [\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_1Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_2Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_3Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_4Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_5Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_6Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_7Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_8Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_9Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCAD_Fan_Blades_10Action\"),\n\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_1Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_2Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_3Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_4Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_5Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_6Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_7Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_8Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_9Action\"),\n window.scene.getAnimationGroupByName(\"P_AFCNA_Fan_Blades_10Action\"),\n\n // TODO check\n window.scene.getAnimationGroupByName(\"P_CWA_Fan1Action\"),\n window.scene.getAnimationGroupByName(\"P_CWA_Fan2Action\"),\n\n // TODO check\n window.scene.getAnimationGroupByName(\"P_PDX_Fan_1Action.002\"),\n window.scene.getAnimationGroupByName(\"P_PDX_Fan_2Action.002\"),\n window.scene.getAnimationGroupByName(\"P_PDX_Fan_3Action.002\"),\n ];\n\n fansAnimation = fansAnimation.filter((el) => el);\n\n for (let index = 0; index < fansAnimation.length; index++) {\n const el = fansAnimation[index];\n el.speedRatio = speed;\n el.play(true);\n }\n } else {\n for (let index = 0; index < fansAnimation.length; index++) {\n const el = fansAnimation[index];\n el.pause();\n }\n }\n}\n\nlet cancelCTA = false;\n\nasync function actionCTA(on, productObj, cta) {\n if (on) {\n cancelCTA = false;\n switch (cta) {\n case \"power\":\n // TODO check naming P_Power_Connection Indoor_Lab\n if (!cancelCTA) {\n highlight(\"P_Power_Connection\", \"orange\", true, false, 1);\n }\n\n if (lab === \"Chill_Lab\") {\n if (!cancelCTA) {\n highlight(\"P_Cables_PowerFlow_Exterior\", \"orange\", true, false, 1);\n }\n\n if (!cancelCTA) {\n await highlight(\n \"P_Power_Connection_Leds\",\n \"orange\",\n true,\n false,\n 1\n );\n }\n\n if (!cancelCTA) {\n highlight(\"P_Power_Connection_Leds\", \"green\", true, true, 2);\n }\n } else if (lab === \"Indoor_Lab\") {\n if (!cancelCTA) {\n await highlight(\n `P_${productObj.model}_Cables_PowerFlow_Exterior`,\n \"orange\",\n true,\n false,\n 1\n );\n }\n }\n\n if (!cancelCTA) {\n displayPowerAnimation({ display: true, productObj });\n }\n\n if (!cancelCTA) {\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 3000,\n cables: true,\n });\n }\n break;\n case \"hydraulic\":\n if (productObj.model === \"PDX\") {\n if (!cancelCTA) {\n highlight(\"P_PDX_Heat_Exchanger\", \"orange\", true, false, 1);\n }\n }\n\n if (!cancelCTA) {\n await highlight(\"P_Water_Tottem\", \"orange\", true, false, 1);\n }\n\n if (!cancelCTA) {\n highlight(\n `P_${productObj.model}_WaterFlow_ExteriorSuperior`,\n \"orange\",\n true,\n false,\n 1\n );\n }\n\n if (!cancelCTA) {\n await displayWaterAnimation({\n display: true,\n force: true,\n productObj,\n });\n }\n\n if (!cancelCTA) {\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 3000,\n force: true,\n water: true,\n });\n }\n break;\n case \"thermoregulation\":\n case \"airDuct\":\n if (lab === \"Chill_Lab\") {\n if (!cancelCTA) {\n highlight(\"P_Windows\", \"orange\", true, true, 1);\n }\n } else if (lab === \"Indoor_Lab\") {\n if (cta === \"thermoregulation\") {\n if (!cancelCTA) {\n highlight(\"P_Thermo_Regulation\", \"orange\", true, true, 1); // TODO Ask if this needs to be orange as well\n }\n } else if (cta === \"airDuct\") {\n if (!cancelCTA) {\n highlight(\"P_AirFlow_Connection\", \"orange\", true, true, 1); // TODO Ask if this needs to be orange as well\n }\n }\n }\n\n if (lab === \"Chill_Lab\") {\n if (!cancelCTA) {\n await highlight(\n `P_${productObj.model}_Fans`,\n \"orange\",\n true,\n false,\n 1\n );\n }\n } else if (lab === \"Indoor_Lab\") {\n if (!cancelCTA) {\n await highlight(\n `P_${productObj.model}_Fan_1`,\n \"orange\",\n true,\n false,\n 1\n );\n }\n\n if (!cancelCTA) {\n fanAnimationFn(true);\n }\n }\n\n if (!cancelCTA) {\n await loadAirFlow(true, true, productObj);\n }\n\n if (!cancelCTA) {\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 3000,\n force: true,\n water: true,\n air: true,\n fans: true,\n });\n }\n break;\n }\n } else {\n cancelCTA = true;\n switch (cta) {\n case \"power\":\n if (lab === \"Chill_Lab\") {\n highlight(\"P_Power_Connection_Leds\", \"green\", false, true, 2);\n }\n displayPowerAnimation({ display: false, productObj });\n break;\n case \"hydraulic\":\n displayWaterAnimation({ display: false, force: true, productObj });\n break;\n case \"thermoregulation\":\n case \"airDuct\":\n if (lab === \"Chill_Lab\") {\n highlight(\"P_Windows\", \"orange\", false, true, 1);\n } else if (lab === \"Indoor_Lab\") {\n if (cta === \"thermoregulation\") {\n highlight(\"P_Thermo_Regulation\", \"orange\", false, true, 1);\n } else if (cta === \"airDuct\") {\n highlight(\"P_AirFlow_Connection\", \"orange\", false, true, 1);\n }\n\n fanAnimationFn(false);\n }\n loadAirFlow(false, true, productObj);\n }\n }\n}\n\nasync function powerOnProduct(productObj, force = false, mode = \"product\") {\n if (!force) {\n if (lab === \"Chill_Lab\") {\n await highlight(\"P_Cables_PowerFlow_Exterior\", \"orange\", true, false, 1);\n } else {\n await highlight(\n `P_${productObj.model}_Cables_PowerFlow_Exterior`,\n \"orange\",\n true,\n false,\n 1\n );\n }\n\n airAnimationFn(true, productObj);\n\n await highlight(\n `P_${productObj.model}_WaterFlow_ExteriorSuperior`,\n \"orange\",\n true,\n false,\n 1\n );\n } else {\n switch (mode) {\n case \"product\":\n airAnimationFn(true, productObj);\n break;\n case \"power\":\n // TODO\n if (lab === \"Chill_Lab\") {\n highlight(\"P_Power_Connection\", \"orange\", true, false, 1);\n await highlight(\"P_Power_Connection_Leds\", \"orange\", true, false, 1);\n highlight(\"P_Power_Connection_Leds\", \"green\", true, true, 2);\n } else {\n highlight(\n `P_${productObj.model}_Power_Connection`,\n \"orange\",\n true,\n false,\n 1\n );\n }\n\n displayPowerAnimation({ display: true, productObj });\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 3000,\n cables: true,\n });\n break;\n case \"hydraulic\":\n await highlight(\"P_Water_Tottem\", \"orange\", true, false, 1);\n await displayWaterAnimation({ display: true, force: true, productObj });\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 3000,\n force: true,\n water: true,\n });\n break;\n case \"thermoregulation\":\n case \"airDuct\":\n if (lab === \"Chill_Lab\") {\n highlight(\"P_Windows\", \"orange\", true, true, 1);\n }\n await highlight(`P_${productObj.model}_Fans`, \"orange\", true, false, 1);\n\n // fanAnimationFn(true, 0);\n await loadAirFlow(true, force, productObj);\n airAnimationFn(true, productObj);\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 3000,\n force: true,\n water: true,\n air: true,\n fans: true,\n });\n break;\n }\n }\n\n setCamera(\"Welcome\");\n lookingAt = \"host\";\n player.lookAt(host.absolutePosition);\n cc.enableKeyBoard(true);\n}\n\nasync function powerOffProduct(productObj, force = false) {\n // await changeSpeedAnimation({\n // speed: 0,\n // msTransition: 3000,\n // force: force,\n // water: true,\n // air: true,\n // fans: true,\n // cables: true,\n // });\n\n await Promise.all([\n await loadAirFlow(false, force, productObj),\n await displayWaterAnimation({ display: false, force, productObj }),\n ]);\n\n airAnimationFn(false, productObj);\n fanAnimationFn(false);\n\n highlight(\"P_Power_Connection_Leds\", \"green\", false, true, 2);\n highlight(\"P_Windows\", \"green\", false, true, 1);\n\n displayPowerAnimation({ display: false, force, productObj });\n}\n\nlet cancelAnimation = false;\n\nfunction setCancelAnimation() {\n cancelAnimation = true;\n}\n\nasync function startTest(test, productObj, callbackScene) {\n cancelAnimation = false;\n\n callbackScene({ key: \"showSpinner\", value: true });\n\n await securePlayer(true, \"product\");\n\n displayHost(false);\n displayPlayer(false);\n\n callbackScene({ key: \"showSpinner\", value: false });\n\n switch (test) {\n case \"performance\":\n await performanceTest(callbackScene, productObj);\n break;\n case \"noise\":\n await noiseTest(callbackScene, productObj);\n break;\n case \"adiabatic\":\n await adiabaticTest(callbackScene, productObj);\n break;\n case \"fast\":\n await fastTest(callbackScene, productObj);\n break;\n case \"transient\":\n await transientTest(callbackScene, productObj);\n break;\n }\n\n displayHost(true);\n displayPlayer(true);\n}\n\nasync function performanceTest(callbackScene, productObj) {\n await prePerformanceTest(productObj);\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"displayVideo\", value: true, resolve });\n });\n } else {\n return await performanceTestEnd({ productObj, fast: true, callbackScene });\n }\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"playVideo\", resolve });\n });\n } else {\n return await performanceTestEnd({ productObj, fast: true, callbackScene });\n }\n\n console.log(\"Start test animations\");\n\n const dateStart = Date.now();\n let currentDate;\n let currentTiming = 0;\n\n while (!cancelAnimation && currentTiming < 2000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n displayPowerAnimation({ display: true, productObj });\n\n while (!cancelAnimation && currentTiming < 40000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n await performanceTestEnd({\n productObj,\n fast: cancelAnimation,\n callbackScene,\n });\n}\n\nasync function prePerformanceTest(productObj) {\n await changeSpeedAnimation({\n speed: 1,\n force: true,\n water: true,\n air: true,\n drops: false,\n cables: true,\n fans: true,\n });\n\n displayWaterAnimation({ display: true, productObj });\n loadAirFlow(true, false, productObj);\n}\n\nasync function performanceTestEnd({ productObj, fast = false, callbackScene }) {\n // await changeSpeedAnimation({\n // speed: 0,\n // force: fast,\n // msTransition: 1000,\n // water: true,\n // air: true,\n // fans: true,\n // });\n\n await Promise.all([\n loadAirFlow(false, fast, productObj),\n displayWaterAnimation({ display: false, productObj, force: fast }),\n displayPowerAnimation({ display: false, productObj, force: fast }),\n ]);\n\n callbackScene({ key: \"close\", value: fast });\n}\n\nasync function noiseTest(callbackScene, productObj) {\n const meshC = window.scene.getMeshByName(\"P_AirFlow_Cold\");\n const meshCollider = window.scene.getMeshByName(\"P_AFC_SoundPanel_Colliders\");\n const AFC_SoundPanel = window.scene.getTransformNodeByName(\"AFC_SoundPanel\");\n\n await preNoiseTest({ productObj, meshC, meshCollider, AFC_SoundPanel });\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"displayVideo\", value: true, resolve });\n });\n } else {\n return await noiseTestEnd({\n productObj,\n meshC,\n meshCollider,\n AFC_SoundPanel,\n fast: true,\n dateStart: null,\n callbackScene,\n });\n }\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"playVideo\", resolve });\n });\n } else {\n return await noiseTestEnd({\n productObj,\n meshC,\n meshCollider,\n AFC_SoundPanel,\n fast: true,\n dateStart: null,\n callbackScene,\n });\n }\n\n console.log(\"Start test animations\");\n\n const dateStart = Date.now();\n let currentDate;\n let currentTiming = 0;\n\n if (!cancelAnimation) {\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 2500,\n air: true,\n fans: true,\n });\n } else {\n return await noiseTestEnd({\n productObj,\n meshC,\n meshCollider,\n AFC_SoundPanel,\n fast: true,\n dateStart,\n callbackScene,\n });\n }\n\n while (!cancelAnimation && currentTiming < 45000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n await noiseTestEnd({\n productObj,\n meshC,\n meshCollider,\n AFC_SoundPanel,\n fast: cancelAnimation,\n dateStart,\n callbackScene,\n });\n}\n\nasync function preNoiseTest({\n productObj,\n meshC,\n meshCollider,\n AFC_SoundPanel,\n}) {\n meshCollider.setEnabled(true);\n await loadAirFlow(true, true, productObj);\n showAnimation(meshC, false, 0.4); // Hide cold Air\n\n if (!cancelAnimation) {\n AFC_SoundPanel.setEnabled(true);\n\n const promises = [];\n\n for (let index = 1; index <= 10; index++) {\n promises.push(showAnimation(`P_AFC_SoundPanel_${index}`, true, 0.4));\n }\n\n await Promise.all(promises);\n // soundPanelAnimation(true);\n } else {\n return await noiseTestEnd({\n productObj,\n meshC,\n meshCollider,\n AFC_SoundPanel,\n fast: true,\n dateStart: null,\n });\n }\n}\n\nasync function noiseTestEnd({\n meshCollider,\n AFC_SoundPanel,\n fast,\n callbackScene,\n productObj,\n}) {\n // await changeSpeedAnimation({\n // speed: 0,\n // msTransition: 1000,\n // force: fast,\n // air: true,\n // fans: true,\n // });\n\n // await soundPanelAnimation(false);\n const promises = [loadAirFlow(false, fast, productObj)];\n\n for (let index = 1; index <= 10; index++) {\n promises.push(showAnimation(`P_AFC_SoundPanel_${index}`, false, 0.4));\n }\n\n if (!fast) {\n await Promise.all(promises);\n }\n\n AFC_SoundPanel.setEnabled(false);\n\n meshCollider.setEnabled(false);\n\n callbackScene({ key: \"close\", value: fast });\n}\n\nasync function adiabaticTest(callbackScene, productObj) {\n await preAdiabaticTest(productObj);\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"displayVideo\", value: true, resolve });\n });\n } else {\n return await adiabaticTestEnd({\n fast: true,\n callbackScene,\n productObj,\n });\n }\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"playVideo\", resolve });\n });\n } else {\n return await adiabaticTestEnd({\n fast: true,\n callbackScene,\n productObj,\n });\n }\n\n console.log(\"Start test animations\");\n\n const dateStart = Date.now();\n let currentDate;\n let currentTiming = 0;\n\n while (!cancelAnimation && currentTiming < 9000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n if (!cancelAnimation) {\n await Promise.all([\n highlight(\"P_AFC_AD_Pads\", \"orange\", true, false, 1.5),\n loadWaterDrop(true, false),\n ]);\n } else {\n return await adiabaticTestEnd({ fast: true, callbackScene, productObj });\n }\n\n if (!cancelAnimation) {\n waterDropAnimationFn(true);\n } else {\n return await adiabaticTestEnd({ fast: true, callbackScene, productObj });\n }\n\n if (!cancelAnimation) {\n await changeSpeedAnimation({\n speed: 1,\n msTransition: 1000,\n drops: true,\n });\n } else {\n return await adiabaticTestEnd({ fast: true, callbackScene, productObj });\n }\n\n while (!cancelAnimation && currentTiming < 40000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n await adiabaticTestEnd({ fast: cancelAnimation, callbackScene, productObj });\n}\n\nasync function preAdiabaticTest(productObj) {\n await changeSpeedAnimation({\n speed: 1,\n force: true,\n water: true,\n air: true,\n drops: false,\n fans: true,\n });\n displayWaterAnimation({ display: true, productObj });\n loadAirFlow(true, false, productObj);\n}\n\nasync function adiabaticTestEnd({ fast, productObj, callbackScene }) {\n // await changeSpeedAnimation({\n // speed: 0,\n // force: fast,\n // msTransition: 1000,\n // water: true,\n // air: true,\n // drops: true,\n // fans: true,\n // });\n\n await loadAirFlow(false, fast, productObj);\n await loadWaterDrop(false, fast);\n await displayWaterAnimation({ display: false, productObj, force: fast });\n\n callbackScene({ key: \"close\", value: fast });\n}\n\nasync function fastTest(callbackScene, productObj) {\n await preFastTest(productObj);\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"displayVideo\", value: true, resolve });\n });\n } else {\n return await adiabaticTestEnd({\n fast: true,\n callbackScene,\n productObj,\n });\n }\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"playVideo\", resolve });\n });\n } else {\n return await adiabaticTestEnd({\n fast: true,\n callbackScene,\n productObj,\n });\n }\n\n console.log(\"Start test animations\");\n\n const dateStart = Date.now();\n let currentDate;\n let currentTiming = 0;\n\n displayPowerAnimation({ display: true, productObj });\n\n changeSpeedAnimation({\n speed: 1,\n msTransition: 2000,\n cables: true,\n });\n\n let msStartPowerFailure;\n let msEndPowerFailure;\n\n if (productObj.model === \"PDX\") {\n msStartPowerFailure = 5000;\n msEndPowerFailure = 10000;\n } else if (productObj.model === \"CWA\") {\n msStartPowerFailure = 1500;\n msEndPowerFailure = 5500;\n } else {\n msStartPowerFailure = 5500;\n msEndPowerFailure = 8000;\n }\n\n while (!cancelAnimation && currentTiming < msStartPowerFailure) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n if (!cancelAnimation) {\n displayPowerAnimation({ display: false, productObj });\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n highlight(\"P_Red_Light_Machine\", \"red\", true, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n // await changeSpeedAnimation({\n // speed: 0,\n // msTransition: 500,\n // force: false,\n // water: true,\n // air: true,\n // fans: true,\n // });\n loadAirFlow(false, false, productObj);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n await displayWaterAnimation({ display: false, productObj }); // check\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n while (!cancelAnimation && currentTiming < msEndPowerFailure) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n if (!cancelAnimation) {\n highlight(\"P_Red_Light_Machine\", \"red\", false, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (lab === \"Chill_Lab\") {\n if (!cancelAnimation) {\n highlight(\"P_Orange_Light_Machine\", \"orange\", true, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n } else if (lab === \"Indoor_Lab\") {\n if (!cancelAnimation) {\n highlight(\"P_Red_Light_Machine\", \"orange\", true, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n }\n\n while (!cancelAnimation && currentTiming < 10000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n if (lab === \"Chill_Lab\") {\n if (!cancelAnimation) {\n await highlight(\"P_Orange_Light_Machine\", \"orange\", false, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n } else if (lab === \"Indoor_Lab\") {\n if (!cancelAnimation) {\n await highlight(\"P_Red_Light_Machine\", \"orange\", false, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n }\n\n if (lab === \"Chill_Lab\") {\n if (!cancelAnimation) {\n highlight(\"P_Orange_Light_Machine\", \"green\", true, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n } else if (lab === \"Indoor_Lab\") {\n if (!cancelAnimation) {\n highlight(\"P_Red_Light_Machine\", \"green\", true, true, 4);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n }\n\n if (!cancelAnimation) {\n await displayPowerAnimation({ display: true, force: true, productObj });\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n await changeSpeedAnimation({\n speed: 1,\n force: true,\n msTransition: 1000,\n cables: true,\n });\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n // changeSpeedAnimation({\n // speed: 1,\n // force: false,\n // msTransition: 1000,\n // water: true,\n // air: true,\n // fans: true,\n // });\n loadAirFlow(true, false, productObj);\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n displayWaterAnimation({ display: true, productObj });\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n // if (!cancelAnimation) {\n // await loadCompressor({ load: true, productObj });\n // } else {\n // return await fastTestEnd(callbackScene, true, productObj);\n // }\n\n if (!cancelAnimation) {\n await highlight(\n `P_${productObj.model}_Compressor`,\n \"orange\",\n true,\n false,\n 1\n );\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n if (!cancelAnimation) {\n await highlight(\n `P_${productObj.model}_Compressor`,\n \"orange\",\n true,\n false,\n 1\n );\n } else {\n return await fastTestEnd(callbackScene, true, productObj);\n }\n\n while (!cancelAnimation && currentTiming < 41000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n await fastTestEnd(callbackScene, cancelAnimation, productObj);\n}\n\nasync function preFastTest(productObj) {\n await changeSpeedAnimation({\n speed: 1,\n force: true,\n water: true,\n air: true,\n drops: false,\n fans: true,\n });\n displayWaterAnimation({ display: true, productObj });\n loadAirFlow(true, false, productObj);\n}\n\nasync function fastTestEnd(callbackScene, fast, productObj) {\n highlight(\"P_Red_Light_Machine\", \"red\", false, true, 3);\n highlight(\"P_Red_Light_Machine\", \"orange\", false, true, 3);\n highlight(\"P_Red_Light_Machine\", \"green\", false, true, 3);\n highlight(\"P_Orange_Light_Machine\", \"orange\", false, true, 3);\n highlight(\"P_Orange_Light_Machine\", \"green\", false, true, 3);\n\n // await changeSpeedAnimation({\n // speed: 0,\n // force: fast,\n // msTransition: 1000,\n // water: true,\n // air: true,\n // fans: true,\n // });\n\n await Promise.all([\n loadAirFlow(false, fast, productObj),\n displayWaterAnimation({ display: false, productObj, force: fast }),\n // loadCompressor({ load: false, productObj, force: fast }),\n displayPowerAnimation({ display: false, force: fast, productObj }),\n ]);\n\n callbackScene({ key: \"close\", value: fast });\n}\n\nasync function transientTest(callbackScene, productObj) {\n await preTransientTest({ callbackScene, productObj });\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"displayVideo\", value: true, resolve });\n });\n } else {\n return await transientTestEnd({ productObj, fast: true, callbackScene });\n }\n\n if (!cancelAnimation) {\n await new Promise((resolve) => {\n callbackScene({ key: \"playVideo\", resolve });\n });\n } else {\n return await transientTestEnd({ productObj, fast: true, callbackScene });\n }\n\n console.log(\"Start test animations\");\n\n const dateStart = Date.now();\n let currentDate;\n let currentTiming = 0;\n\n const airHot = window.scene.getMeshByName(\"P_AirFlow_Cold\");\n const compressor = window.scene.getMeshByName(\n `P_${productObj.model}_Compressor`\n );\n const coils = window.scene.getMeshByName(`P_${productObj.model}_VCoils`);\n\n while (!cancelAnimation && currentTiming < 15500) {\n // 11500\n // TODO CHECK a little later in sync with the spike\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n if (!cancelAnimation) {\n // Naranja\n colorAnimation({\n mesh: airHot,\n color: \"#E98334\",\n });\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n if (!cancelAnimation) {\n await highlight(compressor, \"yellow\", true, true, 1);\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n // if (!cancelAnimation) {\n // showAnimation(compressor, true, 0.4);\n // } else {\n // return await transientTestEnd({ fast: true, productObj, callbackScene });\n // }\n\n while (!cancelAnimation && currentTiming < 30000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n if (!cancelAnimation) {\n // Rojo\n colorAnimation({\n mesh: airHot,\n color: \"#E93440\",\n });\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n if (!cancelAnimation) {\n await highlight(compressor, \"yellow\", false, true, 1); // TODO ask if this needs to be orange\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n if (!cancelAnimation) {\n await highlight(coils, \"orange\", false, true, 1);\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n if (!cancelAnimation) {\n await highlight(compressor, \"orange\", true, true, 1);\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n while (!cancelAnimation && currentTiming < 40000) {\n currentDate = Date.now();\n currentTiming = currentDate - dateStart;\n await sleep(100);\n }\n\n await transientTestEnd({ fast: cancelAnimation, productObj, callbackScene });\n}\n\nasync function preTransientTest({ callbackScene, productObj }) {\n const product = window.scene.getMeshByName(`P_${productObj.model}`);\n const coils = window.scene.getMeshByName(`P_${productObj.model}_VCoils`);\n const pads = window.scene.getMeshByName(`P_${productObj.model}_Pads`);\n // const compressor = window.scene.getMeshByName(\n // `P_${productObj.model}_Compressor`\n // );\n\n await changeSpeedAnimation({\n speed: 1,\n force: true,\n water: true,\n air: true,\n drops: false,\n fans: true,\n });\n displayWaterAnimation({ display: true, productObj });\n loadAirFlow(true, false, productObj);\n\n if (!cancelAnimation) {\n await Promise.all([\n showAnimation(product, false, 1, 0.33),\n showAnimation(pads, false, 1, 0.33),\n // showAnimation(compressor, false, 0.4, 0.33),\n ]);\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n\n if (!cancelAnimation) {\n await highlight(coils, \"orange\", true, true, 1);\n } else {\n return await transientTestEnd({ fast: true, productObj, callbackScene });\n }\n}\n\nasync function transientTestEnd({ fast, productObj, callbackScene }) {\n const airHot = window.scene.getMeshByName(\"P_AirFlow_Cold\");\n const product = window.scene.getMeshByName(`P_${productObj.model}`);\n const pads = window.scene.getMeshByName(`P_${productObj.model}_Pads`);\n const compressor = window.scene.getMeshByName(\n `P_${productObj.model}_Compressor`\n );\n const coils = window.scene.getMeshByName(`P_${productObj.model}_VCoils`);\n\n await highlight(coils, \"orange\", false, true, 1);\n await highlight(compressor, \"yellow\", false, true, 1);\n await highlight(compressor, \"orange\", false, true, 1);\n\n showAnimation(product, true, 1);\n showAnimation(pads, true, 1);\n // showAnimation(compressor, true, 0.4);\n colorAnimation({\n mesh: airHot,\n color: \"#33BBFF\",\n });\n // await changeSpeedAnimation({\n // speed: 0,\n // force: fast,\n // msTransition: 1000,\n // water: true,\n // air: true,\n // fans: true,\n // });\n\n await loadAirFlow(false, fast, productObj);\n await displayWaterAnimation({ display: false, productObj, force: fast });\n\n callbackScene({ key: \"close\", value: fast });\n}\n\nlet soundPlayer;\n\nfunction playSound(name, sound) {\n let playbackRate = 1;\n if (process.env.NODE_ENV === \"development\") {\n playbackRate = window.speedFactor || 1;\n }\n\n soundPlayer = new BABYLON.Sound(\n name,\n BASE_URL + \"sounds/\" + sound,\n window.scene,\n null,\n {\n autoplay: true,\n playbackRate,\n }\n );\n}\n\nfunction stopSound() {\n if (soundPlayer) {\n soundPlayer.dispose();\n }\n}\n\nfunction playLoopSound(loopName, sound) {\n let playbackRate = 1;\n if (process.env.NODE_ENV === \"development\") {\n playbackRate = window.speedFactor || 1;\n }\n\n soundPlayer = new BABYLON.Sound(\n loopName,\n BASE_URL + \"sounds/\" + sound,\n window.scene,\n null,\n {\n loop: true,\n autoplay: true,\n playbackRate,\n }\n );\n}\n\nlet animationsHighlight = [];\n\nconst colors = {\n electric: [\"#53699b\", \"#787748\"],\n blue: [\"#0c283d\", \"#2986cc\"],\n green: [\"#002200\", \"#00F500\"],\n orange: [\"#663D00\", \"#D88000\"],\n yellow: [\"#3b3b00\", \"#ffff00\"],\n red: [\"#020000\", \"#CE2029\"],\n};\n\nfunction highlight(mesh, color, on, loop, speed = 1.5) {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n if (typeof mesh === \"string\") {\n mesh = window.scene.getMeshByName(mesh);\n }\n\n if (!mesh) {\n console.error(`not existing`);\n return;\n }\n\n const oldAnimation = animationsHighlight.find((el) => el.mesh === mesh.name);\n if (oldAnimation) {\n if (!on) {\n mesh.material.emissiveColor = BABYLON.Color3.Black();\n oldAnimation.animation.stop();\n }\n\n return;\n } else if (!on) {\n console.error(\"animation non existing\");\n return;\n }\n\n const keys = [\n {\n frame: 0,\n value: BABYLON.Color3.Black(),\n },\n ];\n\n keys.push(\n ...colors[color].map((el, index) => {\n return {\n frame: index + 1,\n value: BABYLON.Color3.FromHexString(el).toLinearSpace(),\n };\n })\n );\n\n keys.push({\n frame: keys.length,\n value: BABYLON.Color3.Black(),\n });\n\n const animation = new BABYLON.Animation(\n \"animation\",\n \"material.emissiveColor\",\n speed,\n BABYLON.Animation.ANIMATIONTYPE_COLOR3,\n loop\n ? BABYLON.Animation.ANIMATIONLOOPMODE_CYCLE\n : BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n animation.setKeys(keys);\n\n let promise;\n let animatable;\n\n if (loop) {\n animatable = window.scene.beginDirectAnimation(\n mesh,\n [animation],\n 0,\n keys.length - 1,\n true,\n speed,\n () => {\n animationsHighlight = animationsHighlight.filter(\n (el) => el.mesh !== mesh.name\n );\n }\n );\n } else {\n promise = new Promise((resolve) => {\n animatable = window.scene.beginDirectAnimation(\n mesh,\n [animation],\n 0,\n keys.length - 1,\n false,\n speed,\n () => {\n animationsHighlight = animationsHighlight.filter(\n (el) => el.mesh !== mesh.name\n );\n resolve();\n }\n );\n });\n }\n\n animationsHighlight.push({\n animation: animatable,\n mesh: mesh.name,\n });\n\n return promise;\n}\n\nconst runScene = () => {\n const rails = window.scene.getMeshByName(\"P_Rails\");\n\n engine.runRenderLoop(() => {\n if (!pendingOperations.length) {\n if (lookingAt === \"host\") {\n host.lookAt(player.absolutePosition);\n } else if (lookingAt === \"rails\") {\n if (lab === \"Chill_Lab\") {\n player.lookAt(rails.absolutePosition);\n const positionRails = rails.absolutePosition.clone();\n positionRails.y = 1.5;\n window.scene.activeCamera.setTarget(positionRails);\n window.scene.activeCamera.position = new BABYLON.Vector3(\n 6.96,\n 2.22,\n -4.25\n );\n } else {\n const positionProduct = product.absolutePosition.clone();\n positionProduct.y = 0;\n player.lookAt(positionProduct);\n positionProduct.y = 1.5;\n window.scene.activeCamera.setTarget(positionProduct);\n window.scene.activeCamera.position = new BABYLON.Vector3(\n 6.96,\n 2.22,\n -4.25\n );\n }\n } else {\n const newPosition = window.scene.activeCamera.position.clone();\n newPosition.y -= 1.5;\n host.lookAt(newPosition);\n }\n\n window.scene.render();\n }\n });\n\n window.addEventListener(\"resize\", resizeCanvasThrottled);\n resizeCanvas();\n};\n\nconst stopScene = () => {\n engine.stopRenderLoop();\n window.removeEventListener(\"resize\", resizeCanvasThrottled);\n resizeTimeout = null;\n pendingOperations = [];\n canvasBJS = null;\n};\n\nconst resizeCanvasThrottled = () => {\n if (resizeTimeout) {\n clearTimeout(resizeTimeout);\n }\n\n resizeTimeout = setTimeout(() => {\n resizeCanvas();\n }, 50);\n};\n\nconst resizeCanvas = () => {\n const uniqueID = generateUniqueID();\n pendingOperations.push(uniqueID);\n\n engine.resize();\n\n pendingOperations = pendingOperations.filter((id) => id !== uniqueID);\n};\n\nconst createMainCamera = () => {\n //rotate the camera behind the player\n const alpha = (0 * Math.PI) / 180;\n const beta = 1.25; // (75 * Math.PI) / 180\n const radius = 2.28;\n\n const playerPosition = playerPositions[lab];\n\n let target;\n\n if (playerPosition) {\n target = new BABYLON.Vector3(\n playerPosition[0],\n playerPosition[1] + 1.5,\n playerPosition[2]\n );\n }\n\n const camera = new BABYLON.ArcRotateCamera(\n \"Main\",\n alpha,\n beta,\n radius,\n target,\n window.scene,\n false\n );\n\n //standard camera setting\n camera.fov = 0.8;\n camera.wheelPrecision = 15;\n camera.pinchPrecision = 30;\n\n camera.checkCollisions = false;\n //make sure the keyboard keys controlling camera are different from those controlling player\n //here we will not use any keyboard keys to control camera\n camera.keysLeft = [];\n camera.keysRight = [];\n camera.keysUp = [];\n camera.keysDown = [];\n //how close can the camera come to player\n camera.lowerRadiusLimit = 2.28; // 1.5\n //how far can the camera go from the player\n camera.upperRadiusLimit = 2.28;\n //how top can the camera come to player\n camera.lowerBetaLimit = 1.25;\n //how down can the camera go from the player\n camera.upperBetaLimit = 2; // 1.55\n\n // camera.minZ = 1.7;\n // mainCam.lockedTarget = center.clone();\n};\n\nconst loadEnvironment = () => {\n /*let light = new BABYLON.HemisphericLight(\n \"light1\",\n new BABYLON.Vector3(0, 1, 0),\n window.scene\n );\n light.intensity = 0.7;\n\n let light2 = new BABYLON.DirectionalLight(\n \"light2\",\n new BABYLON.Vector3(-1, -1, -1),\n window.scene\n );\n light2.position = new BABYLON.Vector3(0, 128, 0);\n light2.intensity = 0.7;\n */\n\n const url = `${BASE_URL}environment/env_${lab}.env`;\n const hdrTexture = BABYLON.CubeTexture.CreateFromPrefilteredData(\n url,\n window.scene\n );\n\n hdrTexture.rotationY = 0;\n window.scene.environmentTexture = hdrTexture;\n window.scene.environmentIntensity = 1;\n};\n\nconst createRenderingPipeline = () => {\n pipeline = new BABYLON.DefaultRenderingPipeline(\n \"defaultPipeline\", // The name of the pipeline\n false, // Do you want the pipeline to use HDR texture?\n window.scene, // The scene instance\n window.scene.cameras // The list of cameras to be attached to\n );\n\n pipeline.samples = 8;\n pipeline.fxaaEnabled = true;\n\n pipeline.bloomEnabled = false; // false by default\n if (pipeline.bloomEnabled) {\n pipeline.bloomKernel = 62; // 64 by default\n pipeline.bloomScale = 1; // 0.5 by default\n pipeline.bloomThreshold = 1; // 0.9 by default\n pipeline.bloomWeight = 1; // 0.15 by default\n }\n};\n\nconst processMeshes = () => {\n if (lab === \"Chill_Lab\") {\n window.scene.meshes.forEach((mesh) => {\n mesh.renderingGroupId = 1;\n\n if (mesh.name === \"__root__\") {\n mesh.name = \"__root__Lab\";\n mesh.id = \"__root__Lab\";\n mesh.checkCollisions = false;\n mesh.isPickable = false;\n mesh.alwaysSelectAsActiveMesh = false;\n mesh.doNotSyncBoundingInfo = true;\n } else if (\n [\"P_Collider\", \"P_Floor\", \"P_AFC_SoundPanel_Colliders\"].includes(\n mesh.name\n )\n ) {\n mesh.isVisible = mesh.name === \"P_Floor\" ? true : false;\n mesh.checkCollisions = true;\n mesh.isPickable = true;\n mesh.alwaysSelectAsActiveMesh = true;\n mesh.doNotSyncBoundingInfo = false;\n if (mesh.name === \"P_Floor\") {\n mesh.material.metallicF0Factor = 0;\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#DDDDDD\").toLinearSpace();\n } else if (mesh.name === \"P_AFC_SoundPanel_Colliders\") {\n mesh.setEnabled(false);\n }\n } else if (\"P_Cables_PowerFlow_Interior\" === mesh.name) {\n mesh.material.albedoColor = BABYLON.Color3.Yellow();\n mesh.visibility = 0;\n mesh.setEnabled(false);\n } else if (\"P_Cables_PowerFlow_Exterior\" === mesh.name) {\n mesh.visibility = 0;\n mesh.setEnabled(false);\n } else if (\n [\n \"P_AFC_NA_WaterFlow_Interior_Hot\",\n \"P_AFC_AD_WaterFlow_Interior_Hot\",\n ].includes(mesh.name)\n ) {\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#E93440\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\n [\n \"P_AFC_NA_WaterFlow_Interior_Cold\",\n \"P_AFC_AD_WaterFlow_Interior_Cold\",\n ].includes(mesh.name)\n ) {\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#33BBFF\").toLinearSpace();\n mesh.setEnabled(false);\n } else if ([\"P_AFC_AD_Drop_Water\"].includes(mesh.name)) {\n mesh.visibility = 0;\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#0099E6\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\n [\n \"P_AFC_NA_WaterFlow_ExteriorInferior\",\n \"P_AFC_NA_WaterFlow_ExteriorSuperior\",\n \"P_AFC_NA_Outlet_Connection\",\n \"P_AFC_NA_Inlet_Connection\",\n \"P_AFC_AD_WaterFlow_ExteriorInferior\",\n \"P_AFC_AD_WaterFlow_ExteriorSuperior\",\n \"P_AFC_AD_Outlet_Connection\",\n \"P_AFC_AD_Inlet_Connection\",\n \"P_Inside_Box\",\n ].includes(mesh.name)\n ) {\n mesh.visibility = 0;\n mesh.setEnabled(false);\n } else if (\"P_AirFlow_Hot\" === mesh.name) {\n mesh.visibility = 0;\n mesh.isPickable = false;\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#E93440\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\"P_AirFlow_Cold\" === mesh.name) {\n mesh.visibility = 0;\n mesh.isPickable = false;\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#33BBFF\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\"P_Rails\" === mesh.name) {\n mesh.checkCollisions = true;\n mesh.isPickable = true;\n mesh.alwaysSelectAsActiveMesh = true;\n mesh.doNotSyncBoundingInfo = false;\n initialPositions.RAILS = mesh.position.x;\n } else if (\n [\n \"P_AFC_NA\",\n \"P_AFC_AD\",\n \"P_AFC_AD_VCoils\",\n \"P_AFC_NA_VCoils\",\n \"P_AFC_AD_Pads\",\n ].includes(mesh.name)\n ) {\n mesh.isPickable = true;\n } else if (\n [\n \"P_Control_Room_Window_Clear\",\n \"P_Control_Room_Window_Dark\",\n \"P_Beauty_Collider\",\n ].includes(mesh.name)\n ) {\n mesh.material.metallicF0Factor = 0;\n if (mesh.name === \"P_Control_Room_Window_Clear\") {\n mesh.setEnabled(false);\n }\n } else if (\"P_AFCPortal\" === mesh.name) {\n // mesh.renderingGroupId = 0;\n mesh.material.backFaceCulling = true;\n } else {\n mesh.isPickable = false;\n }\n\n // if (mesh.material) {\n // mesh.material.backFaceCulling = true;\n // }\n });\n\n const product_AFC_NA = window.scene.getTransformNodeByName(\"AFC_NA_Group\");\n const product_AFC_AD = window.scene.getTransformNodeByName(\"AFC_AD_Group\");\n\n initialPositions.AFC_NA = product_AFC_NA.position.x;\n initialPositions.AFC_AD = product_AFC_AD.position.x;\n\n product_AFC_NA.position.x -= 15;\n product_AFC_AD.position.x -= 15;\n\n product_AFC_NA.setEnabled(false);\n product_AFC_AD.setEnabled(false);\n\n const AFC_SoundPanel =\n window.scene.getTransformNodeByName(\"AFC_SoundPanel\");\n // finalPanelPosition = AFC_SoundPanel.position.y;\n // AFC_SoundPanel.position.y += 2.54;\n // initialPanelPosition = AFC_SoundPanel.position.y;\n\n for (let index = 1; index <= 10; index++) {\n window.scene.getMeshByName(`P_AFC_SoundPanel_${index}`).visibility = 0;\n }\n\n AFC_SoundPanel.setEnabled(false);\n\n // const P_AFCPortal = window.scene.getMeshByName(\"P_AFCPortal\");\n\n // const P_AFCPortal_clone = P_AFCPortal.clone(\"P_AFCPortal_clone\");\n // P_AFCPortal_clone.renderingGroupId = 1;\n // P_AFCPortal_clone.position.z = 14;\n\n window.scene.imageProcessingConfiguration.exposure = 1.2;\n } else {\n window.scene.meshes.forEach((mesh) => {\n mesh.renderingGroupId = 1;\n\n if (mesh.name === \"__root__\") {\n mesh.name = \"__root__Lab\";\n mesh.id = \"__root__Lab\";\n mesh.checkCollisions = false;\n mesh.isPickable = false;\n mesh.alwaysSelectAsActiveMesh = false;\n mesh.doNotSyncBoundingInfo = true;\n } else if ([\"P_Collider\", \"P_Floor\"].includes(mesh.name)) {\n mesh.isVisible = mesh.name === \"P_Floor\";\n mesh.checkCollisions = true;\n mesh.isPickable = true;\n mesh.alwaysSelectAsActiveMesh = true;\n mesh.doNotSyncBoundingInfo = false;\n if (mesh.name === \"P_Floor\") {\n mesh.material.metallicF0Factor = 0.4;\n // TODO check\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#DDDDDD\").toLinearSpace();\n }\n } else if (\n [\n \"P_CWA_Cables_PowerFlow_Interior\",\n \"P_PDX_Cables_PowerFlow_Interior\",\n ].includes(mesh.name)\n ) {\n mesh.material.albedoColor = BABYLON.Color3.Yellow();\n mesh.visibility = 0;\n mesh.setEnabled(false);\n } else if (\n [\n \"P_CWA_Cables_PowerFlow_Exterior\",\n \"P_PDX_Cables_PowerFlow_Exterior\",\n \"P_CWA_Cables_Cover\",\n \"P_PDX_Cables_Cover\",\n \"P_CWA_Duct\",\n \"P_PDX_Duct\",\n \"P_PDX_Heat_Exchanger\",\n ].includes(mesh.name)\n ) {\n mesh.visibility = 0;\n mesh.setEnabled(false);\n\n if (mesh.name === \"P_PDX_Duct\") {\n mesh.material.metallicF0Factor = 0.3;\n } else if (mesh.name === \"P_CWA_Duct\") {\n mesh.material.metallicF0Factor = 0;\n }\n } else if (\n [\n \"P_CWA_WaterFlow_Interior_Hot\",\n \"P_PDX_WaterFlow_Interior_Hot\",\n ].includes(mesh.name)\n ) {\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#E93440\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\n [\n \"P_CWA_WaterFlow_Interior_Cold\",\n \"P_PDX_WaterFlow_Interior_Cold\",\n ].includes(mesh.name)\n ) {\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#33BBFF\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\n [\n \"P_CWA_WaterFlow_ExteriorInferior\",\n \"P_CWA_WaterFlow_ExteriorSuperior\",\n \"P_PDX_WaterFlow_ExteriorInferior\",\n \"P_PDX_WaterFlow_ExteriorSuperior\",\n ].includes(mesh.name)\n ) {\n mesh.visibility = 0;\n mesh.setEnabled(false);\n } else if (\n [\"P_CWA_AirFlow_Hot\", \"P_PDX_AirFlow_Hot\"].includes(mesh.name)\n ) {\n mesh.visibility = 0;\n mesh.isPickable = false;\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#E93440\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\n [\"P_CWA_AirFlow_Cold\", \"P_PDX_AirFlow_Cold\"].includes(mesh.name)\n ) {\n mesh.visibility = 0;\n mesh.isPickable = false;\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#33BBFF\").toLinearSpace();\n mesh.setEnabled(false);\n } else if (\"P_Portal\" === mesh.name) {\n mesh.renderingGroupId = 0;\n mesh.material.backFaceCulling = true;\n } else if ([\"P_CWA_Exterior\", \"P_PDX_Exterior\"].includes(mesh.name)) {\n mesh.material.metallicF0Factor = 0;\n mesh.isPickable = true;\n } else if (\n [\n \"P_Control_Room_Window_Clear\",\n \"P_Control_Room_Window_Dark\",\n \"P_Beauty_Collider\",\n ].includes(mesh.name)\n ) {\n mesh.material.metallicF0Factor = 0;\n if (mesh.name === \"P_Control_Room_Window_Clear\") {\n mesh.setEnabled(false);\n }\n } else if (\"P_ControlRoom\" === mesh.name) {\n mesh.material.metallicF0Factor = 0;\n gl.addExcludedMesh(mesh);\n } else if (\n [\n \"P_Thermo_Regulation\",\n \"P_AirFlow_Connection\",\n \"P_Structure\",\n \"P_PDX_Platform\",\n \"P_CWA_Platform\",\n ].includes(mesh.name)\n ) {\n mesh.material.metallicF0Factor = 0;\n\n if (mesh.name === \"P_Structure\") {\n mesh.material.metallic = 0.5;\n } else if (mesh.name === \"P_AirFlow_Connection\") {\n mesh.material.albedoColor =\n BABYLON.Color3.FromHexString(\"#BFBFBF\").toLinearSpace();\n }\n } else if (\"P_Props\" === mesh.name) {\n mesh.material.metallicF0Factor = 0.4;\n gl.addExcludedMesh(mesh);\n } else if (\"P_Water_Tottem\" === mesh.name) {\n mesh.material.metallicF0Factor = 0.5;\n } else if (\"P_Power_Connection\" === mesh.name) {\n mesh.material.metallicF0Factor = 0.7;\n } else if (\"P_Pipelines\" === mesh.name) {\n mesh.material.metallic = 0;\n } else {\n // TODO check\n mesh.isPickable = false;\n }\n\n // if (mesh.material) {\n // mesh.material.backFaceCulling = true;\n // }\n });\n\n const product_CWA = window.scene.getTransformNodeByName(\"CWA_Group\");\n initialPositions.CWA = product_CWA.position.z;\n product_CWA.position.z += 15;\n product_CWA.setEnabled(false);\n\n const product_PDX = window.scene.getTransformNodeByName(\"PDX_Group\");\n initialPositions.PDX = product_PDX.position.z;\n product_PDX.position.z += 15;\n product_PDX.setEnabled(false);\n\n const P_Portal = window.scene.getMeshByName(\"P_Portal\");\n\n const P_Portal_clone = P_Portal.clone(\"P_Portal_clone\");\n P_Portal_clone.renderingGroupId = 1;\n P_Portal_clone.position.z = 14;\n\n window.scene.imageProcessingConfiguration.contrast = 1.5;\n }\n};\n\nconst pathFlyCamera = [\n {\n // Start\n frame: 0,\n target: new BABYLON.Vector3(3.5, 1.5, -3),\n alpha: (-90 * Math.PI) / 180, // Look front\n },\n {\n // Door\n frame: 1,\n target: new BABYLON.Vector3(7.5, 1.5, 0),\n alpha: (-180 * Math.PI) / 180, // Look front\n },\n {\n // Initial\n frame: 2,\n target: new BABYLON.Vector3(7.5, 1.5, 0),\n alpha: 0, // Look front\n },\n {\n // CTA product start\n frame: 3,\n showHotspot: \"product\",\n target: new BABYLON.Vector3(4, 1.5, 0), // -2.5\n alpha: 0, // Look front (-90 * Math.PI) / 180\n },\n {\n // CTA product end\n frame: 5,\n hideHotspot: \"product\",\n target: new BABYLON.Vector3(4, 1.5, 0), // -2.5\n alpha: 0, // Look right (-90 * Math.PI) / 180\n },\n {\n // Left bottom\n frame: 6,\n target: new BABYLON.Vector3(4, 1.5, -2.5),\n alpha: (45 * Math.PI) / 180, // (-45 * Math.PI) / 180\n },\n {\n // CTA control room start\n frame: 8,\n showHotspot: \"control\",\n target: new BABYLON.Vector3(0, 1.5, -2.5),\n alpha: (90 * Math.PI) / 180, // Look left\n },\n {\n // CTA control room end\n frame: 10,\n hideHotspot: \"control\",\n target: new BABYLON.Vector3(0, 1.5, -2.5),\n alpha: (90 * Math.PI) / 180, // Look left\n },\n {\n // Going\n frame: 12,\n target: new BABYLON.Vector3(-2, 1.5, -2.5),\n alpha: 0, // Look left\n },\n {\n // CTA water flow start\n frame: 13,\n showHotspot: \"hydraulic\",\n target: new BABYLON.Vector3(-4, 1.5, -2.5),\n alpha: (90 * Math.PI) / 180, // Look left\n },\n {\n // CTA water flow end\n frame: 15,\n hideHotspot: \"hydraulic\",\n target: new BABYLON.Vector3(-4, 1.5, -2.5),\n alpha: (90 * Math.PI) / 180, // Look left\n },\n {\n // Left top\n frame: 17,\n target: new BABYLON.Vector3(-7.5, 1.5, -2.5),\n alpha: (-90 * Math.PI) / 180, // Look front\n },\n {\n // Middle top down\n frame: 18,\n target: new BABYLON.Vector3(-7.5, 1.5, -1),\n alpha: (-90 * Math.PI) / 180, // Look front (-180 * Math.PI) / 180\n },\n {\n // Middle top up\n frame: 19,\n showHotspot: \"thermoregulation\",\n target: new BABYLON.Vector3(-7.5, 4.5, 0),\n alpha: (-180 * Math.PI) / 180, // Look front\n },\n {\n // Middle top up\n frame: 21,\n hideHotspot: \"thermoregulation\",\n target: new BABYLON.Vector3(-7.5, 4.5, 0),\n alpha: (-180 * Math.PI) / 180, // Look front\n },\n {\n // Middle top down\n frame: 22,\n target: new BABYLON.Vector3(-7.5, 1.5, 1),\n alpha: (-90 * Math.PI) / 180, // Look front (-180 * Math.PI) / 180\n },\n {\n // Right top\n frame: 23,\n target: new BABYLON.Vector3(-7.5, 1.5, 2.5),\n alpha: (-180 * Math.PI) / 180, // Look back\n },\n {\n // CTA power\n frame: 25,\n showHotspot: \"power\",\n target: new BABYLON.Vector3(0.5, 1.5, 2.5),\n alpha: (-90 * Math.PI) / 180, // Look right\n },\n {\n // CTA power\n frame: 27,\n hideHotspot: \"power\",\n target: new BABYLON.Vector3(0.5, 1.5, 2.5),\n alpha: (-90 * Math.PI) / 180, // Look right\n },\n {\n // Right bottom\n frame: 29,\n target: new BABYLON.Vector3(7.5, 1.5, 2.5),\n alpha: (0 * Math.PI) / 180, // Look back\n },\n {\n // Final\n frame: 30,\n showLabels: true,\n target: new BABYLON.Vector3(7.5, 1.5, 0),\n alpha: 0, // Look front\n },\n {\n // Final\n frame: 32,\n hideLabels: true,\n target: new BABYLON.Vector3(7.5, 1.5, 0),\n alpha: 0, // Look front\n },\n {\n // Final\n frame: 33,\n target: new BABYLON.Vector3(7.5, 1.5, 0),\n alpha: 0, // Look front\n },\n];\n\nlet animatingCamera = false;\n\nconst aerialView = async (speed = 0.5) => {\n if (process.env.NODE_ENV === \"development\") {\n speed *= window.speedFactor || 1;\n }\n\n const camera = window.scene.getCameraByName(\"Fly\");\n\n if (animatingCamera) {\n // We are currently in one animation, so we end the first one to proceed to the next one\n window.scene.stopAnimation(camera);\n }\n\n window.scene.activeCamera = camera;\n camera.attachControl(canvasBJS, false);\n\n displayHost(false);\n displayPlayer(false);\n\n // About to animate. Set animating to true.\n animatingCamera = true;\n\n let indexPaths = 0;\n\n const {\n keysTargets,\n keysAlphas,\n keysShow,\n keysHide,\n keysShowLabels,\n keysHideLabels,\n } = pathFlyCamera.reduce(\n (keys, frame) => {\n keys.keysTargets[indexPaths].push({\n frame: frame.frame,\n value: frame.target,\n });\n\n keys.keysAlphas[indexPaths].push({\n frame: frame.frame,\n value: frame.alpha,\n });\n\n if (frame.showHotspot) {\n indexPaths++;\n\n keys.keysTargets.push([\n {\n frame: frame.frame,\n value: frame.target,\n },\n ]);\n\n keys.keysAlphas.push([\n {\n frame: frame.frame,\n value: frame.alpha,\n },\n ]);\n\n keys.keysShowLabels.push(null);\n keys.keysHideLabels.push(null);\n\n keys.keysShow.push(frame.showHotspot);\n\n if (frame.hideHotspot) {\n keys.keysHide.push(frame.hideHotspot);\n } else {\n keys.keysHide.push(null);\n }\n } else if (frame.hideHotspot) {\n indexPaths++;\n\n keys.keysTargets.push([\n {\n frame: frame.frame,\n value: frame.target,\n },\n ]);\n\n keys.keysAlphas.push([\n {\n frame: frame.frame,\n value: frame.alpha,\n },\n ]);\n\n keys.keysShow.push(null);\n keys.keysShowLabels.push(null);\n keys.keysHideLabels.push(null);\n\n keys.keysHide.push(frame.hideHotspot);\n } else if (frame.showLabels || frame.hideLabels) {\n indexPaths++;\n\n keys.keysTargets.push([\n {\n frame: frame.frame,\n value: frame.target,\n },\n ]);\n\n keys.keysAlphas.push([\n {\n frame: frame.frame,\n value: frame.alpha,\n },\n ]);\n\n keys.keysShow.push(null);\n keys.keysHide.push(null);\n\n keys.keysShowLabels.push(frame.showLabels);\n keys.keysHideLabels.push(frame.hideLabels);\n }\n\n return keys;\n },\n {\n keysTargets: [[]],\n keysAlphas: [[]],\n keysShow: [null],\n keysHide: [null],\n keysShowLabels: [null],\n keysHideLabels: [null],\n }\n );\n\n const acTarget = new BABYLON.Animation(\n \"acTarget\",\n \"target\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_VECTOR3,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n const acAlpha = new BABYLON.Animation(\n \"acAlpha\",\n \"alpha\",\n 1,\n BABYLON.Animation.ANIMATIONTYPE_FLOAT,\n BABYLON.Animation.ANIMATIONLOOPMODE_CONSTANT\n );\n\n for (let index = 0; index < keysTargets.length; index++) {\n const keysTarget = keysTargets[index];\n const keysAlpha = keysAlphas[index];\n const show = keysShow[index];\n const hide = keysHide[index];\n const showLabel = keysShowLabels[index];\n const hideLabel = keysHideLabels[index];\n\n if (show) {\n callbackDisplayHotspot(show, true);\n showAnimation(`hotspot_${show}`, true, 0.5);\n }\n\n if (hide) {\n callbackDisplayHotspot(hide, false);\n }\n\n if (showLabel) {\n callbackDisplayHotspot(\"product\", true);\n callbackDisplayHotspot(\"control\", true);\n callbackDisplayHotspot(\"hydraulic\", true);\n callbackDisplayHotspot(\"thermoregulation\", true);\n callbackDisplayHotspot(\"power\", true);\n }\n\n if (hideLabel) {\n callbackDisplayHotspot(\"product\", false);\n callbackDisplayHotspot(\"control\", false);\n callbackDisplayHotspot(\"hydraulic\", false);\n callbackDisplayHotspot(\"thermoregulation\", false);\n callbackDisplayHotspot(\"power\", false);\n }\n\n acTarget.setKeys(keysTarget);\n\n acAlpha.setKeys(keysAlpha);\n\n await new Promise((resolve) => {\n window.scene.beginDirectAnimation(\n camera,\n [acTarget, acAlpha],\n keysAlpha[0].frame,\n keysAlpha[keysAlpha.length - 1].frame,\n false,\n speed,\n () => {\n resolve();\n }\n );\n });\n }\n\n animatingCamera = false;\n\n displayHost(true);\n displayPlayer(true);\n\n setCamera(\"Welcome\");\n};\n\nconst createFlyCamera = () => {\n //rotate the camera behind the player\n const alpha = (-90 * Math.PI) / 180;\n const beta = (90 * Math.PI) / 180; // (75 * Math.PI) / 180\n const radius = 2.28;\n\n let target;\n\n const playerPosition = playerPositions[lab];\n\n if (playerPosition) {\n target = new BABYLON.Vector3(\n playerPosition[0],\n playerPosition[1] + 1.5,\n playerPosition[2]\n );\n }\n\n const camera = new BABYLON.ArcRotateCamera(\n \"Fly\",\n alpha,\n beta,\n radius,\n target,\n window.scene,\n false\n );\n\n //standard camera setting\n camera.fov = 0.8;\n camera.wheelPrecision = 0;\n camera.pinchPrecision = 0;\n\n camera.checkCollisions = false;\n //make sure the keyboard keys controlling camera are different from those controlling player\n //here we will not use any keyboard keys to control camera\n camera.inputs.clear();\n //how close can the camera come to player\n camera.lowerRadiusLimit = 2.28;\n //how far can the camera go from the player\n camera.upperRadiusLimit = 2.28;\n //how close can the camera come to player\n camera.lowerBetaLimit = (90 * Math.PI) / 180;\n //how far can the camera go from the player\n camera.upperBetaLimit = (90 * Math.PI) / 180;\n // This attaches the camera to the canvas\n // camera.attachControl(canvasBJS, false);\n};\n\nconst createHelperCamera = () => {\n //rotate the camera behind the player\n\n const alpha = (-35 * Math.PI) / 180;\n const beta = 1.37; // (75 * Math.PI) / 180\n const radius = 2.28;\n\n let target;\n\n const helperCameraTarget = helperCameraTargets[lab];\n\n if (helperCameraTarget) {\n target = new BABYLON.Vector3(\n helperCameraTarget[0],\n helperCameraTarget[1],\n helperCameraTarget[2]\n );\n } else {\n console.error(\"Add position for helper camera on this lab\");\n }\n\n const camera = new BABYLON.ArcRotateCamera(\n \"Helper\",\n alpha,\n beta,\n radius,\n target,\n window.scene,\n false\n );\n\n //standard camera setting\n camera.fov = 0.8;\n\n camera.checkCollisions = false;\n //make sure the keyboard keys controlling camera are different from those controlling player\n //here we will not use any keyboard keys to control camera\n camera.inputs.clear();\n //how close can the camera come to player\n camera.lowerRadiusLimit = null;\n //how far can the camera go from the player\n camera.upperRadiusLimit = null;\n //how close can the camera come to player\n camera.lowerBetaLimit = null;\n //how far can the camera go from the player\n camera.upperBetaLimit = null;\n // This attaches the camera to the canvas\n // camera.attachControl(canvasBJS, false);\n camera.minZ = 0.4;\n};\n\nconst createWelcomeCamera = () => {\n //rotate the camera behind the player\n\n const alpha = 1.1;\n const beta = 1.3;\n const radius = 3;\n\n let target;\n\n const welcomeCameraTarget = welcomeCameraTargets[lab];\n\n if (welcomeCameraTarget) {\n target = new BABYLON.Vector3(\n welcomeCameraTarget[0],\n welcomeCameraTarget[1],\n welcomeCameraTarget[2]\n );\n } else {\n console.error(\"Add position for helper camera on this lab\");\n }\n\n const camera = new BABYLON.ArcRotateCamera(\n \"Welcome\",\n alpha,\n beta,\n radius,\n target,\n window.scene,\n false\n );\n\n camera.fov = 0.8;\n\n camera.checkCollisions = false;\n\n camera.inputs.clear();\n\n camera.lowerRadiusLimit = null;\n camera.upperRadiusLimit = null;\n\n camera.lowerAlphaLimit = null;\n camera.upperAlphaLimit = null;\n\n camera.lowerBetaLimit = null;\n camera.upperBetaLimit = null;\n};\n\nconst setCamera = (name) => {\n const camera = window.scene.getCameraByName(name);\n\n window.scene.activeCamera = camera;\n camera.attachControl(canvasBJS, false);\n};\n\nconst generateUniqueID = () => {\n return Math.floor(Math.random() * Math.floor(Math.random() * Date.now()));\n};\n\nconst createDot = ([x, y, z], name = \"test\") => {\n const dot = BABYLON.MeshBuilder.CreateSphere(name, { diameter: 0.02 });\n dot.setAbsolutePosition(new BABYLON.Vector3(x, y, z));\n dot.renderingGroupId = 1;\n dot.isPickable = false;\n return dot;\n};\n\nconst cameraHelper = (cameraName, [x, y, z], [x2, y2, z2], newRadius, newY) => {\n const camera = window.scene.getCameraByName(cameraName);\n window.scene.activeCamera = camera;\n\n camera.attachControl(canvasBJS, false);\n camera.wheelPrecision = 80;\n camera.pinchPrecision = 100;\n\n if (x !== undefined && y !== undefined && z !== undefined) {\n camera.setPosition(new BABYLON.Vector3(x, y, z));\n }\n\n if (x2 !== undefined && y2 !== undefined && z2 !== undefined) {\n camera.setTarget(new BABYLON.Vector3(x2, y2, z2));\n }\n\n if (newRadius) {\n camera.radius = newRadius;\n }\n\n if (newY) {\n camera.targetScreenOffset.y = newY;\n }\n\n console.warn(\"3D-Configurator\", \"Values\");\n console.warn(\"3D-Configurator\", \"alpha:\", camera.alpha);\n console.warn(\"3D-Configurator\", \"beta:\", camera.beta);\n console.warn(\"3D-Configurator\", \"radius:\", camera.radius);\n\n console.warn(\"3D-Configurator\", \"Position\");\n console.warn(\"3D-Configurator\", \"x:\", camera.position.x);\n console.warn(\"3D-Configurator\", \"y:\", camera.position.y);\n console.warn(\"3D-Configurator\", \"z:\", camera.position.z);\n\n console.warn(\"3D-Configurator\", \"Target\");\n console.warn(\"3D-Configurator\", \"x:\", camera.target.x);\n console.warn(\"3D-Configurator\", \"y:\", camera.target.y);\n console.warn(\"3D-Configurator\", \"z:\", camera.target.z);\n\n return camera;\n};\n\nfunction sleep(ms) {\n if (process.env.NODE_ENV === \"development\") {\n ms /= window.speedFactor || 1;\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, ms);\n });\n}\n\nfunction debugMode() {\n window.scene.debugLayer.show({\n embedMode: true,\n });\n}\n\nwindow.debugMode = debugMode;\n\nexport {\n createScene,\n runScene,\n stopScene,\n resizeCanvas,\n createDot,\n cameraHelper,\n createMainCamera,\n loadProduct,\n hideProduct,\n powerOnProduct,\n powerOffProduct,\n startTest,\n sleep,\n showAnimation,\n loadAvatar,\n aerialView,\n createHotspot,\n getPosition,\n getPositionMesh,\n calculatePixel,\n updateHotspotPosition,\n lightAnimation,\n setCancelAnimation,\n loadControlRoom,\n setCamera,\n securePlayer,\n dropDownAnimation, // Not used\n soundPanelAnimation, // Not used\n changePerspective,\n actionCTA,\n setSkipLoad,\n playSound, // Not used\n loadCompressor, // Not used\n};\n","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AvatarSelectionComponent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AvatarSelectionComponent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AvatarSelectionComponent.vue?vue&type=template&id=16d22c30&scoped=true&\"\nimport script from \"./AvatarSelectionComponent.vue?vue&type=script&lang=js&\"\nexport * from \"./AvatarSelectionComponent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AvatarSelectionComponent.vue?vue&type=style&index=0&id=16d22c30&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16d22c30\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.open)?_c('div',{staticClass:\"landing\"},[_c('div',{staticClass:\"landing__upper_part\"},[_c('img',{staticClass:\"landing__upper_part__logo\",attrs:{\"src\":_vm.logoWhite}}),_c('div',{staticClass:\"landing__upper_part__header\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"landingTitle\"))+\" \")])]),_c('div',{staticClass:\"landing__lower_part\"},[_c('div',{staticClass:\"landing__lower_part__tutorial\"},[_c('div',{staticClass:\"landing__lower_part__tutorial__column\"},[_c('img',{staticClass:\"landing__lower_part__tutorial__column__img\",attrs:{\"src\":_vm.landingIcon_01}}),_c('p',{staticClass:\"textBottom\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing_turorial_keyboard\"))+\" \")])]),_c('div',{staticClass:\"landing__lower_part__tutorial__column\"},[_c('img',{staticClass:\"landing__lower_part__tutorial__column__img\",attrs:{\"src\":_vm.landingIcon_02}}),_c('p',{staticClass:\"textBottom\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"landing_turorial_mouse\"))+\" \")])])]),_c('div',{staticClass:\"landing__lower_part__button\",on:{\"click\":_vm.closeOnClick}},[_vm._v(\" \"+_vm._s(_vm.$t(\"letsGoButton\"))+\" \")])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LandingComponent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LandingComponent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LandingComponent.vue?vue&type=template&id=8c423df0&scoped=true&\"\nimport script from \"./LandingComponent.vue?vue&type=script&lang=js&\"\nexport * from \"./LandingComponent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LandingComponent.vue?vue&type=style&index=0&id=8c423df0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c423df0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('base-dialog-component',{attrs:{\"showClose\":false,\"open\":_vm.open,\"body\":_vm.$t(`welcomeBody${_vm.lab}`),\"optionType\":\"vertical\",\"options\":_vm.options,\"height\":\"auto\",\"width\":\"50vw\",\"maxWidth\":\"485px\",\"paddingText\":\"0px 34px 10px\",\"top\":_vm.top,\"bottom\":_vm.bottom,\"right\":_vm.right,\"overlay\":true,\"overlayColor\":\"transparent\",\"centerVertical\":true,\"center\":false,\"showBubble\":true},on:{\"selectOption\":_vm.closeWelcome}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.open)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.realOpen),expression:\"realOpen\"}],class:{ overlay: _vm.overlay },style:({ backgroundColor: _vm.overlayColor })},[_c('div',{staticClass:\"popup\",class:{ center: _vm.center, centerHorizontal: _vm.centerHorizontal, centerVertical: _vm.centerVertical, showBubble: _vm.showBubble },style:({ width: _vm.width, top: _vm.top, bottom: _vm.bottom, right: _vm.right, left: _vm.left, maxWidth: _vm.maxWidth, minWidth: _vm.minWidth, opacity: _vm.opacity })},[(_vm.title)?_c('div',{staticClass:\"row popupHeader\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"popupHeaderLogo\"},[(_vm.showInfoIcon)?_c('img',{staticClass:\"popupInfoIcon\",attrs:{\"src\":_vm.infoIcon},on:{\"load\":_vm.onImgLoad}}):_vm._e(),(_vm.showClose)?_c('img',{staticClass:\"popupClose\",attrs:{\"src\":_vm.crossIcon},on:{\"click\":_vm.closePopup,\"load\":_vm.onImgLoad}}):_vm._e(),(_vm.showMinimize)?_c('img',{staticClass:\"popupMinimize\",attrs:{\"src\":_vm.minimizeIcon},on:{\"click\":_vm.togglePopup,\"load\":_vm.onImgLoad}}):_vm._e(),_c('div',{staticClass:\"popupHeaderTitle\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])])])]):_vm._e(),(_vm.title)?_c('div',{staticClass:\"middleLine\"}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.minimized),expression:\"!minimized\"}],staticClass:\"row popupTextSection\",style:({ height: `calc(${_vm.height} - 115px)` })},[_c('div',{staticClass:\"textSection\",class:{\n row: _vm.bodyType === 'text',\n },style:({ padding: _vm.paddingText })},[(_vm.body)?_c('div',{staticClass:\"popupText scroll\",style:({\n height: _vm.buttonR ? 'calc(100% - 45px)' : '100%',\n fontSize: _vm.fontSizeBody,\n })},[(_vm.bodyType === 'text')?_c('span',[_vm._v(_vm._s(_vm.body))]):(_vm.bodyType === 'carousel')?_c('div',[_c('div',{staticClass:\"carousel slide carousel-dark\",staticStyle:{\"display\":\"flex\"},attrs:{\"id\":\"carouselBody\"}},[_vm._m(0),_c('div',{staticClass:\"carousel-inner\"},_vm._l((_vm.body.split('\\n\\n')),function(bodyPart,index){return _c('div',{key:'item_' + index,staticClass:\"carousel-item\",class:{ active: index === _vm.slideBody },staticStyle:{\"min-height\":\"120px\"}},[_c('div',[_vm._v(_vm._s(bodyPart))])])}),0),_vm._m(1)]),_c('div',{staticClass:\"carousel-indicators\",staticStyle:{\"position\":\"static\"}},_vm._l((_vm.body.split('\\n\\n')),function(bodyPart,index){return _c('button',{key:'button_' + index,class:{ active: index === _vm.slideBody },staticStyle:{\"background-color\":\"#000\"},attrs:{\"type\":\"button\",\"data-bs-target\":\"#carouselBody\",\"data-bs-slide-to\":index}})}),0)]):_vm._e()]):_vm._e(),(_vm.buttonR)?_c('div',{staticClass:\"popupButtons\"},[(_vm.buttonR)?_c('div',{staticClass:\"popupButton\",on:{\"click\":_vm.callBackButtonR}},[_vm._v(\" \"+_vm._s(_vm.buttonR)+\" \")]):_vm._e()]):_vm._e(),(_vm.options && _vm.options.length)?_c('div',{staticClass:\"popupOptions\",class:_vm.optionType},[(_vm.optionType === 'product')?_vm._l((_vm.options),function(option){return _c('div',{key:option.key,staticClass:\"option\"},[_c('div',{staticClass:\"optionTitle\"},[_vm._v(_vm._s(_vm.$t(option.title)))]),_c('img',{ref:\"optionImages\",refInFor:true,staticClass:\"optionImage\",attrs:{\"src\":option.image},on:{\"load\":_vm.onImgLoad}}),_c('div',{staticClass:\"optionBody scroll\",style:({ height: _vm.heightBody })},[_vm._v(\" \"+_vm._s(_vm.$t(option.body))+\" \")]),_c('div',{staticClass:\"popupButton optionConfirm\",class:{ disabled: option.disabled },on:{\"click\":function($event){!option.disabled ? _vm.selectOption(option) : null}}},[_vm._v(\" \"+_vm._s(_vm.$t(option.confirm))+\" \")])])}):(_vm.optionType === 'test')?_vm._l((_vm.options),function(option){return _c('div',{key:option.key,staticClass:\"option optionTest\",class:{ disabled: option.disabled },attrs:{\"id\":option.key},on:{\"click\":function($event){!option.disabled ? _vm.selectOption(option) : null}}},[_c('div',{staticClass:\"optionTitle optionTitleTest\"},[_c('img',{staticClass:\"optionPlayTest\",attrs:{\"src\":require(\"../../assets/images/play-octagon.png\")},on:{\"load\":_vm.onImgLoad}}),_c('span',{staticClass:\"optionTitleTestText\"},[_vm._v(\" \"+_vm._s(_vm.$t(option.title))+\" \")])]),_c('div',{staticClass:\"optionBody optionBodyTest\",style:({ height: _vm.heightBody })},[_vm._v(\" \"+_vm._s(_vm.$t(option.body))+\" \")])])}):(_vm.optionType === 'vertical')?_vm._l((_vm.options),function(option){return _c('div',{key:option.key,staticClass:\"optionVertical\",on:{\"click\":function($event){!option.disabled ? _vm.selectOption(option) : null}}},[_c('div',{staticClass:\"optionVerticalTitle\",class:{ disabled: option.disabled }},[_c('img',{staticClass:\"optionVerticalTitleIcon\",style:(option.style),attrs:{\"src\":require(\"../../assets/images/play-octagon.png\")},on:{\"load\":_vm.onImgLoad}}),_c('span',{staticClass:\"optionVerticalTitleText\",style:(option.style)},[_vm._v(\" \"+_vm._s(_vm.$t(option.title))+\" \")])])])}):_vm._e()],2):_vm._e()])])])]):_vm._e()\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"carousel-control-prev\",staticStyle:{\"position\":\"static\"},attrs:{\"type\":\"button\",\"data-bs-target\":\"#carouselBody\",\"data-bs-slide\":\"prev\"}},[_c('span',{staticClass:\"carousel-control-prev-icon\",attrs:{\"aria-hidden\":\"true\"}})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"carousel-control-next\",staticStyle:{\"position\":\"static\"},attrs:{\"type\":\"button\",\"data-bs-target\":\"#carouselBody\",\"data-bs-slide\":\"next\"}},[_c('span',{staticClass:\"carousel-control-next-icon\",attrs:{\"aria-hidden\":\"true\"}})])\n}]\n\nexport { render, staticRenderFns }","