├── FINAL_SARATHI.png ├── README.md ├── index.html ├── logo.png ├── main.js ├── package-lock.json ├── package.json ├── public ├── draco │ ├── README.md │ ├── draco_decoder.js │ ├── draco_decoder.wasm │ ├── draco_encoder.js │ ├── draco_wasm_wrapper.js │ └── gltf │ │ ├── draco_decoder.js │ │ ├── draco_decoder.wasm │ │ ├── draco_encoder.js │ │ └── draco_wasm_wrapper.js ├── fonts │ ├── helvatica.json │ └── unione.json ├── images │ └── favicon.png └── models │ └── TRY_25.glb ├── style.css └── vite.config.js /FINAL_SARATHI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebRevo/Dream_Room/581ce494c0610519efb669b99a889dd035b7f315/FINAL_SARATHI.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dream_Room 2 | Here is the Documentation : Here 3 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Dream Room 11 | 12 | 13 | 22 | 23 | 24 |
25 | 26 |
27 |
28 |
29 |
30 |
31 | 34 | 43 | 105 | 106 | 112 | 115 | 116 | Play a Game 117 | 118 |
119 |
120 | 132 |
133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebRevo/Dream_Room/581ce494c0610519efb669b99a889dd035b7f315/logo.png -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | import './style.css'; 2 | import * as THREE from 'three'; 3 | import * as dat from 'dat.gui'; 4 | import gsap from 'gsap'; 5 | import Stats from 'three/addons/libs/stats.module.js'; 6 | import { OrbitControls } from 'three/addons/controls/OrbitControls'; 7 | import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'; 8 | import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'; 9 | import { FontLoader } from 'three/addons/loaders/FontLoader.js'; 10 | import { TextGeometry } from 'three/addons/geometries/TextGeometry.js'; 11 | 12 | // VARIABLES 13 | let theme = 'light'; 14 | let bookCover = null; 15 | let lightSwitch = null; 16 | let titleText = null; 17 | let subtitleText = null; 18 | let mixer; 19 | let isMobile = window.matchMedia('(max-width: 992px)').matches; 20 | let canvas = document.querySelector('.experience-canvas'); 21 | const loaderWrapper = document.getElementById('loader-wrapper'); 22 | let clipNames = [ 23 | 'fan_rotation', 24 | 'fan_rotation.001', 25 | 'fan_rotation.002', 26 | 'fan_rotation.003', 27 | 'fan_rotation.004', 28 | ]; 29 | let projects = [ 30 | { 31 | image: 'textures/project-spaze.webp', 32 | url: 'https://www.spaze.social/', 33 | }, 34 | { 35 | image: 'textures/project-myteachers.jpg', 36 | url: 'https://myteachers.com.au/', 37 | }, 38 | { 39 | image: 'textures/project-wholesale.jpg', 40 | url: 'https://wholesale.com.np/', 41 | }, 42 | { 43 | image: 'textures/project-pelotero.jpg', 44 | url: 'https://www.peloterosenlaweb.com/', 45 | }, 46 | ]; 47 | let aboutCameraPos = { 48 | x: 0.12, 49 | y: 0.2, 50 | z: 0.55, 51 | }; 52 | let aboutCameraRot = { 53 | x: -1.54, 54 | y: 0.13, 55 | z: 1.41, 56 | }; 57 | let projectsCameraPos = { 58 | x: 1, 59 | y: 0.45, 60 | z: 0.01, 61 | }; 62 | let projectsCameraRot = { 63 | x: 0.05, 64 | y: 0.05, 65 | z: 0, 66 | }; 67 | 68 | // SCENE & CAMERA 69 | const scene = new THREE.Scene(); 70 | const camera = new THREE.PerspectiveCamera( 71 | 75, 72 | window.innerWidth / window.innerHeight, 73 | 0.01, 74 | 1000 75 | ); 76 | let defaultCameraPos = { 77 | x: 1.109028643133046, 78 | y: 0.5463638814987481, 79 | z: 0.9983449671971262, 80 | }; 81 | let defaultCamerRot = { 82 | x: -0.8313297556598935, 83 | y: 0.9383399492446749, 84 | z: 0.7240714481613063, 85 | }; 86 | camera.position.set(defaultCameraPos.x, defaultCameraPos.y, defaultCameraPos.z); 87 | 88 | // RENDERER 89 | const renderer = new THREE.WebGLRenderer({ 90 | canvas: canvas, 91 | antialias: true, 92 | }); 93 | renderer.setSize(window.innerWidth, window.innerHeight); 94 | renderer.setPixelRatio(window.devicePixelRatio); 95 | renderer.shadowMap.enabled = true; 96 | renderer.shadowMap.type = THREE.PCFSoftShadowMap; 97 | 98 | // STATS 99 | // const stats = new Stats(); 100 | // document.querySelector('.experience').appendChild(stats.dom); 101 | 102 | // CONTROLS 103 | const controls = new OrbitControls(camera, renderer.domElement); 104 | controls.enableDamping = false; // this is used to control the movements in the screen 105 | controls.enablePan = false; 106 | controls.minDistance = 1;//to fix the minimum distance of the camera view 107 | controls.maxDistance = 3;//to fix the maximum distance of the camera view 108 | controls.minAzimuthAngle = 0.2; 109 | controls.maxAzimuthAngle = Math.PI * 0.78; 110 | controls.minPolarAngle = 0.3; 111 | controls.maxPolarAngle = Math.PI / 2; 112 | controls.update(); 113 | 114 | // LOAD MODEL & ASSET 115 | // const loadingManager = new THREE.LoadingManager(); 116 | const dracoLoader = new DRACOLoader(); 117 | dracoLoader.setDecoderPath('draco/'); 118 | const gltfLoader = new GLTFLoader(); 119 | gltfLoader.setDRACOLoader(dracoLoader); 120 | gltfLoader.load( 121 | 'models/TRY_25.glb', 122 | function (room) { 123 | // hide loader on loade 124 | loaderWrapper.style.display = 'none'; 125 | 126 | // load video 127 | const video = document.createElement('video'); 128 | video.src = 'textures/arcane.mp4'; 129 | video.muted = true; 130 | video.playsInline = true; 131 | video.autoplay = true; 132 | video.loop = true; 133 | 134 | // create video texture 135 | const videoTexture = new THREE.VideoTexture(video); 136 | videoTexture.minFilter = THREE.NearestFilter; 137 | videoTexture.magFilter = THREE.NearestFilter; 138 | videoTexture.generateMipmaps = false; 139 | videoTexture.encoding = THREE.sRGBEncoding; 140 | 141 | room.scene.children.forEach((child) => { 142 | // disable shadow by wall 143 | if (child.name !== 'Wall') { 144 | child.castShadow = true; 145 | } 146 | child.receiveShadow = true; 147 | 148 | if (child.children) { 149 | child.children.forEach((innerChild) => { 150 | // disable shadow by book cover & switch btn 151 | if (innerChild.name !== 'Book001' && innerChild.name !== 'Switch') { 152 | innerChild.castShadow = true; 153 | } 154 | innerChild.receiveShadow = true; 155 | }); 156 | } 157 | 158 | if (child.name === 'Stand') { 159 | child.children[0].material = new THREE.MeshBasicMaterial({ 160 | map: videoTexture, 161 | }); 162 | video.play(); 163 | } 164 | 165 | // transparent texture for glass 166 | if (child.name === 'CPU') { 167 | child.children[0].material = new THREE.MeshPhysicalMaterial(); 168 | child.children[0].material.roughness = 0; 169 | child.children[0].material.color.set(0x999999); 170 | child.children[0].material.ior = 3; 171 | child.children[0].material.transmission = 2; 172 | child.children[0].material.opacity = 0.8; 173 | child.children[0].material.depthWrite = false; 174 | child.children[0].material.depthTest = false; 175 | child.children[1].material = new THREE.MeshPhysicalMaterial(); 176 | child.children[1].material.roughness = 0; 177 | child.children[1].material.color.set(0x999999); 178 | child.children[1].material.ior = 3; 179 | child.children[1].material.transmission = 1; 180 | child.children[1].material.opacity = 0.8; 181 | child.children[1].material.depthWrite = false; 182 | child.children[1].material.depthTest = false; 183 | child.children[2].material = new THREE.MeshPhysicalMaterial(); 184 | child.children[2].material.roughness = 0; 185 | child.children[2].material.color.set(0x999999); 186 | child.children[2].material.ior = 3; 187 | child.children[2].material.transmission = 1; 188 | child.children[2].material.opacity = 0.8; 189 | child.children[2].material.depthWrite = false; 190 | child.children[2].material.depthTest = false; 191 | } 192 | 193 | if (child.name === 'Book') { 194 | bookCover = child.children[0]; 195 | 196 | // adding texture to book 197 | const bookTexture = new THREE.TextureLoader().load( 198 | '/FINAL_SARATHI.png' // here we need to add our resume page 199 | ); 200 | bookTexture.flipY = false; 201 | child.material = new THREE.MeshStandardMaterial({ 202 | color: 0xffffff, 203 | map: bookTexture, 204 | }); 205 | } 206 | 207 | if (child.name === 'SwitchBoard') { 208 | lightSwitch = child.children[0]; 209 | } 210 | }); 211 | 212 | scene.add(room.scene); 213 | animate(); 214 | 215 | // add animation 216 | mixer = new THREE.AnimationMixer(room.scene); 217 | const clips = room.animations; 218 | clipNames.forEach((clipName) => { 219 | const clip = THREE.AnimationClip.findByName(clips, clipName); 220 | if (clip) { 221 | const action = mixer.clipAction(clip); 222 | action.play(); 223 | } 224 | }); 225 | 226 | loadIntroText(); 227 | 228 | // add event listeners 229 | logoListener(); 230 | aboutMenuListener(); 231 | projectsMenuListener(); 232 | init3DWorldClickListeners(); 233 | initResponsive(room.scene); 234 | }, 235 | function (error) { 236 | console.error(error); 237 | } 238 | ); 239 | 240 | // ADD LIGHT 241 | const ambientLight = new THREE.AmbientLight(0xffffff, 0.6); 242 | scene.add(ambientLight); 243 | const roomLight = new THREE.PointLight(0xffffff, 2.5, 10); 244 | roomLight.position.set(0.3, 2, 0.5); 245 | roomLight.castShadow = true; 246 | roomLight.shadow.radius = 5; 247 | roomLight.shadow.mapSize.width = 2048; 248 | roomLight.shadow.mapSize.height = 2048; 249 | roomLight.shadow.camera.far = 2.5; 250 | // roomLight.shadow.camera.fov = 100; 251 | roomLight.shadow.bias = -0.002; 252 | scene.add(roomLight); 253 | // add light for pc fans 254 | const fanLight1 = new THREE.PointLight(0xff0000, 30, 0.2); 255 | const fanLight2 = new THREE.PointLight(0x00ff00, 30, 0.12); 256 | const fanLight3 = new THREE.PointLight(0x00ff00, 30, 0.2); 257 | const fanLight4 = new THREE.PointLight(0x00ff00, 30, 0.2); 258 | const fanLight5 = new THREE.PointLight(0x00ff00, 30, 0.05); 259 | fanLight1.position.set(0, 0.29, -0.29); 260 | fanLight2.position.set(-0.15, 0.29, -0.29); 261 | fanLight3.position.set(0.21, 0.29, -0.29); 262 | fanLight4.position.set(0.21, 0.19, -0.29); 263 | fanLight5.position.set(0.21, 0.08, -0.29); 264 | scene.add(fanLight1); 265 | scene.add(fanLight2); 266 | scene.add(fanLight3); 267 | scene.add(fanLight4); 268 | scene.add(fanLight5); 269 | // add point light for text on wall 270 | const pointLight1 = new THREE.PointLight(0xff0000, 0, 1.1); 271 | const pointLight2 = new THREE.PointLight(0xff0000, 0, 1.1); 272 | const pointLight3 = new THREE.PointLight(0xff0000, 0, 1.1); 273 | const pointLight4 = new THREE.PointLight(0xff0000, 0, 1.1); 274 | pointLight1.position.set(-0.2, 0.6, 0.24); 275 | pointLight2.position.set(-0.2, 0.6, 0.42); 276 | pointLight3.position.set(-0.2, 0.6, 0.01); 277 | pointLight4.position.set(-0.2, 0.6, -0.14); 278 | scene.add(pointLight1); 279 | scene.add(pointLight2); 280 | scene.add(pointLight3); 281 | scene.add(pointLight4); 282 | 283 | // // SETUP HELPERS 284 | // const axesHelper = new THREE.AxesHelper(5); 285 | // scene.add(axesHelper); 286 | // const gridHelper = new THREE.GridHelper(30, 30); 287 | // scene.add(gridHelper); 288 | // const shadowCameraHelper = new THREE.CameraHelper(roomLight.shadow.camera); 289 | // scene.add(shadowCameraHelper); 290 | // const pointLightHelper = new THREE.PointLightHelper(fanLight3, 0.03); 291 | // scene.add(pointLightHelper); 292 | 293 | // // ADD GUI 294 | // const gui = new dat.GUI(); 295 | // const options = { 296 | // lightX: 0, 297 | // lightY: 0.08, 298 | // lightZ: 0, 299 | // }; 300 | // gui.add(options, 'lightX').onChange((e) => { 301 | // mobileLight.position.setX(e); 302 | // }); 303 | // gui.add(options, 'lightY').onChange((e) => { 304 | // mobileLight.position.setY(e); 305 | // }); 306 | // gui.add(options, 'lightZ').onChange((e) => { 307 | // mobileLight.position.setZ(e); 308 | // }); 309 | 310 | const clock = new THREE.Clock(); 311 | function animate() { 312 | requestAnimationFrame(animate); 313 | // controls.update(); 314 | if (mixer) { 315 | mixer.update(clock.getDelta()); 316 | } 317 | renderer.render(scene, camera); 318 | // stats.update(); 319 | } 320 | 321 | function loadIntroText() { 322 | const loader = new FontLoader(); 323 | loader.load('fonts/unione.json', function (font) { 324 | const textMaterials = [ 325 | new THREE.MeshPhongMaterial({ color: 0x171f27, flatShading: true }), 326 | new THREE.MeshPhongMaterial({ color: 0xffffff }), 327 | ]; 328 | const titleGeo = new TextGeometry('SARATHI S', { 329 | font: font, 330 | size: 0.08, 331 | height: 0.01, 332 | }); 333 | titleText = new THREE.Mesh(titleGeo, textMaterials); 334 | titleText.rotation.y = Math.PI * 0.5; 335 | titleText.position.set(-0.27, 0.55, 0.5); 336 | scene.add(titleText); 337 | }); 338 | 339 | loader.load('fonts/helvatica.json', function (font) { 340 | const textMaterials = [ 341 | new THREE.MeshPhongMaterial({ color: 0x171f27, flatShading: true }), 342 | new THREE.MeshPhongMaterial({ color: 0xffffff }), 343 | ]; 344 | const subTitleGeo = new TextGeometry( 345 | 'Full Stack 3D Web Developer', 346 | { 347 | font: font, 348 | size: 0.018, 349 | height: 0, 350 | } 351 | ); 352 | subtitleText = new THREE.Mesh(subTitleGeo, textMaterials); 353 | subtitleText.rotation.y = Math.PI * 0.5; 354 | subtitleText.position.set(-0.255, 0.5, 0.5); 355 | scene.add(subtitleText); 356 | }); 357 | } 358 | 359 | function switchTheme(themeType) { 360 | if (themeType === 'dark') { 361 | lightSwitch.rotation.z = Math.PI / 7; 362 | document.body.classList.remove('light-theme'); 363 | document.body.classList.add('dark-theme'); 364 | 365 | // main lights 366 | gsap.to(roomLight.color, { 367 | r: 0.27254901960784313, 368 | g: 0.23137254901960785, 369 | b: 0.6862745098039216, 370 | }); 371 | gsap.to(ambientLight.color, { 372 | r: 0.17254901960784313, 373 | g: 0.23137254901960785, 374 | b: 0.6862745098039216, 375 | }); 376 | gsap.to(roomLight, { 377 | intensity: 2.5, 378 | }); 379 | gsap.to(ambientLight, { 380 | intensity: 1.3, 381 | }); 382 | 383 | // fan lights 384 | gsap.to(fanLight5, { 385 | distance: 0.07, 386 | }); 387 | 388 | // text color 389 | gsap.to(titleText.material[0].color, { 390 | r: 15, 391 | g: 14, 392 | b: 13, 393 | duration: 0, 394 | }); 395 | gsap.to(titleText.material[1].color, { 396 | r: 15, 397 | g: 14, 398 | b: 13, 399 | duration: 0, 400 | }); 401 | gsap.to(subtitleText.material[0].color, { 402 | r: 20, 403 | g: 19, 404 | b: 18, 405 | duration: 0, 406 | }); 407 | gsap.to(subtitleText.material[1].color, { 408 | r: 25, 409 | g: 24, 410 | b: 23, 411 | duration: 0, 412 | }); 413 | 414 | // text light 415 | gsap.to(pointLight1, { 416 | intensity: 0.6, 417 | }); 418 | gsap.to(pointLight2, { 419 | intensity: 0.6, 420 | }); 421 | gsap.to(pointLight3, { 422 | intensity: 0.6, 423 | }); 424 | gsap.to(pointLight4, { 425 | intensity: 0.6, 426 | }); 427 | } else { 428 | lightSwitch.rotation.z = 0; 429 | document.body.classList.remove('dark-theme'); 430 | document.body.classList.add('light-theme'); 431 | 432 | // main light 433 | gsap.to(roomLight.color, { 434 | r: 1, 435 | g: 1, 436 | b: 1, 437 | }); 438 | gsap.to(ambientLight.color, { 439 | r: 1, 440 | g: 1, 441 | b: 1, 442 | }); 443 | gsap.to(roomLight, { 444 | intensity: 2.5, 445 | }); 446 | gsap.to(ambientLight, { 447 | intensity: 0.6, 448 | }); 449 | 450 | // fan light 451 | gsap.to(fanLight5, { 452 | distance: 0.05, 453 | }); 454 | 455 | // text color 456 | gsap.to(titleText.material[0].color, { 457 | r: 0.09019607843137255, 458 | g: 0.12156862745098039, 459 | b: 0.15294117647058825, 460 | duration: 0, 461 | }); 462 | gsap.to(titleText.material[1].color, { 463 | r: 1, 464 | g: 1, 465 | b: 1, 466 | duration: 0, 467 | }); 468 | gsap.to(subtitleText.material[0].color, { 469 | r: 0.09019607843137255, 470 | g: 0.12156862745098039, 471 | b: 0.15294117647058825, 472 | duration: 0, 473 | }); 474 | gsap.to(subtitleText.material[1].color, { 475 | r: 1, 476 | g: 1, 477 | b: 1, 478 | duration: 0, 479 | }); 480 | 481 | // text light 482 | gsap.to(pointLight1, { 483 | intensity: 0, 484 | }); 485 | gsap.to(pointLight2, { 486 | intensity: 0, 487 | }); 488 | gsap.to(pointLight3, { 489 | intensity: 0, 490 | }); 491 | gsap.to(pointLight4, { 492 | intensity: 0, 493 | }); 494 | } 495 | } 496 | 497 | function enableOrbitControls() { 498 | controls.enabled = true; 499 | } 500 | 501 | function disableOrbitControls() { 502 | controls.enabled = false; 503 | } 504 | 505 | function enableCloseBtn() { 506 | document.getElementById('close-btn').style.display = 'block'; 507 | } 508 | 509 | function disableCloseBtn() { 510 | document.getElementById('close-btn').style.display = 'none'; 511 | } 512 | 513 | function resetBookCover() { 514 | if (!bookCover) return; 515 | 516 | gsap.to(bookCover.rotation, { 517 | x: 0, 518 | duration: 1.5, 519 | }); 520 | } 521 | 522 | function resetProjects() { 523 | if (projects.length === 0) return; 524 | 525 | projects.forEach((project, i) => { 526 | gsap.to(project.mesh.material, { 527 | opacity: 0, 528 | duration: 1, 529 | }); 530 | gsap.to(project.mesh.position, { 531 | y: project.y, 532 | duration: 1, 533 | }); 534 | gsap.to(project.mesh.scale, { 535 | x: 0, 536 | y: 0, 537 | z: 0, 538 | duration: 0, 539 | delay: 1, 540 | }); 541 | }); 542 | } 543 | 544 | function resetCamera() { 545 | resetBookCover(); 546 | resetProjects(); 547 | disableCloseBtn(); 548 | gsap.to(camera.position, { 549 | ...defaultCameraPos, 550 | duration: 1.5, 551 | }); 552 | gsap.to(camera.rotation, { 553 | ...defaultCamerRot, 554 | duration: 1.5, 555 | }); 556 | gsap.delayedCall(1.5, enableOrbitControls); 557 | 558 | // reset dimmed light for about display 559 | if (theme !== 'dark') { 560 | gsap.to(roomLight, { 561 | intensity: 2.5, 562 | duration: 1.5, 563 | }); 564 | } 565 | } 566 | 567 | function logoListener() { 568 | document.getElementById('logo').addEventListener('click', function (e) { 569 | e.preventDefault(); 570 | resetCamera(); 571 | }); 572 | } 573 | 574 | function cameraToAbout() { 575 | if (!bookCover) return; 576 | 577 | gsap.to(camera.position, { 578 | ...aboutCameraPos, 579 | duration: 1.5, 580 | }); 581 | gsap.to(camera.rotation, { 582 | ...aboutCameraRot, 583 | duration: 1.5, 584 | }); 585 | gsap.to(bookCover.rotation, { 586 | x: Math.PI, 587 | duration: 1.5, 588 | delay: 1.5, 589 | }); 590 | 591 | // prevent about text clutter due to bright light 592 | if (theme !== 'dark') { 593 | gsap.to(roomLight, { 594 | intensity: 1, 595 | duration: 1.5, 596 | }); 597 | } 598 | } 599 | 600 | function aboutMenuListener() { 601 | document.getElementById('about-menu').addEventListener('click', function (e) { 602 | e.preventDefault(); 603 | disableOrbitControls(); 604 | resetProjects(); 605 | cameraToAbout(); 606 | gsap.delayedCall(1.5, enableCloseBtn); 607 | }); 608 | } 609 | 610 | function projectsMenuListener() { 611 | // create project planes with textures 612 | projects.forEach((project, i) => { 613 | const colIndex = i % 3 === 0 ? 0 : 1; 614 | const rowIndex = Math.floor(i / 3); 615 | const geometry = new THREE.PlaneGeometry(0.71, 0.4); 616 | const material = new THREE.MeshBasicMaterial({ 617 | color: 0xffffff, 618 | map: new THREE.TextureLoader().load(project.image), 619 | transparent: true, 620 | opacity: 0.0, 621 | }); 622 | const projectPlane = new THREE.Mesh(geometry, material); 623 | projectPlane.name = 'project'; 624 | projectPlane.userData = { 625 | url: project.url, 626 | }; 627 | projectPlane.position.set( 628 | 0.3 + i * 0.8 * colIndex, 629 | 1 - rowIndex * 0.5, 630 | -1.15 631 | ); 632 | projectPlane.scale.set(0, 0, 0); 633 | // mesh & y vars needed for animation 634 | projects[i].mesh = projectPlane; 635 | projects[i].y = 1 - rowIndex * 0.5; 636 | scene.add(projectPlane); 637 | }); 638 | 639 | document 640 | .getElementById('projects-menu') 641 | .addEventListener('click', function (e) { 642 | e.preventDefault(); 643 | disableOrbitControls(); 644 | resetBookCover(); 645 | gsap.to(camera.position, { 646 | ...projectsCameraPos, 647 | duration: 1.5, 648 | }); 649 | gsap.to(camera.rotation, { 650 | ...projectsCameraRot, 651 | duration: 1.5, 652 | }); 653 | gsap.delayedCall(1.5, enableCloseBtn); 654 | 655 | // animate & show project items 656 | projects.forEach((project, i) => { 657 | project.mesh.scale.set(1, 1, 1); 658 | gsap.to(project.mesh.material, { 659 | opacity: 1, 660 | duration: 1.5, 661 | delay: 1.5 + i * 0.1, 662 | }); 663 | gsap.to(project.mesh.position, { 664 | y: project.y + 0.05, 665 | duration: 1, 666 | delay: 1.5 + i * 0.1, 667 | }); 668 | }); 669 | }); 670 | } 671 | 672 | function init3DWorldClickListeners() { 673 | const mousePosition = new THREE.Vector2(); 674 | const raycaster = new THREE.Raycaster(); 675 | let intersects; 676 | 677 | window.addEventListener('click', function (e) { 678 | // store value set to prevent multi time update in foreach loop 679 | const newTheme = theme === 'light' ? 'dark' : 'light'; 680 | 681 | // prevent about focus on button click which are positioned above book in mobile view 682 | const closeBtn = document.getElementById('close-btn'); 683 | const projectsBtn = document.getElementById('projects-menu'); 684 | if ( 685 | e.target === closeBtn || 686 | closeBtn.contains(e.target) || 687 | e.target === projectsBtn || 688 | projectsBtn.contains(e.target) 689 | ) { 690 | return false; 691 | } 692 | 693 | mousePosition.x = (e.clientX / window.innerWidth) * 2 - 1; 694 | mousePosition.y = -(e.clientY / window.innerHeight) * 2 + 1; 695 | raycaster.setFromCamera(mousePosition, camera); 696 | intersects = raycaster.intersectObjects(scene.children); 697 | intersects.forEach((intersect) => { 698 | if (intersect.object.name === 'project') { 699 | intersect.object.userData.url && 700 | window.open(intersect.object.userData.url); 701 | } 702 | 703 | if ( 704 | intersect.object.name === 'Book' || 705 | intersect.object.name === 'Book001' 706 | ) { 707 | disableOrbitControls(); 708 | cameraToAbout(); 709 | gsap.delayedCall(1.5, enableCloseBtn); 710 | } 711 | 712 | if ( 713 | intersect.object.name === 'SwitchBoard' || 714 | intersect.object.name === 'Switch' 715 | ) { 716 | theme = newTheme; 717 | switchTheme(theme); 718 | } 719 | }); 720 | }); 721 | } 722 | 723 | // RESPONSIVE 724 | function initResponsive(roomScene) { 725 | if (isMobile) { 726 | roomScene.scale.set(0.95, 0.95, 0.95); 727 | aboutCameraPos = { 728 | x: 0.09, 729 | y: 0.23, 730 | z: 0.51, 731 | }; 732 | aboutCameraRot = { 733 | x: -1.57, 734 | y: 0, 735 | z: 1.57, 736 | }; 737 | 738 | // rect light 739 | // rectLight.width = 0.406; 740 | // rectLight.height = 0.3; 741 | // rectLight.position.z = -0.34; 742 | 743 | // project 744 | projectsCameraPos = { 745 | x: 1.1, 746 | y: 0.82, 747 | z: 0.5, 748 | }; 749 | projectsCameraRot = { 750 | x: 0, 751 | y: 0, 752 | z: 1.55, 753 | }; 754 | projects.forEach((project, i) => { 755 | project.mesh.position.z = -1.13; 756 | }); 757 | 758 | controls.maxDistance = 1.5; 759 | controls.maxAzimuthAngle = Math.PI * 0.75; 760 | } 761 | } 762 | 763 | // close button 764 | document.getElementById('close-btn').addEventListener('click', (e) => { 765 | e.preventDefault(); 766 | resetCamera(); 767 | }); 768 | 769 | // contact menu 770 | document.getElementById('contact-btn').addEventListener('click', (e) => { 771 | e.preventDefault(); 772 | document 773 | .querySelector('.contact-menu__dropdown') 774 | .classList.toggle('contact-menu__dropdown--open'); 775 | }); 776 | 777 | document.addEventListener('mouseup', (e) => { 778 | const container = document.querySelector('.contact-menu'); 779 | if (!container.contains(e.target)) { 780 | container 781 | .querySelector('.contact-menu__dropdown') 782 | .classList.remove('contact-menu__dropdown--open'); 783 | } 784 | }); 785 | 786 | // update camera, renderer on resize 787 | window.addEventListener('resize', () => { 788 | camera.aspect = window.innerWidth / window.innerHeight; 789 | camera.updateProjectionMatrix(); 790 | renderer.setSize(window.innerWidth, window.innerHeight); 791 | }); 792 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DreamRoom", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "DreamRoom", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "dat.gui": "^0.7.9", 12 | "gsap": "^3.11.4", 13 | "three": "^0.149.0" 14 | }, 15 | "devDependencies": { 16 | "vite": "^4.0.0" 17 | } 18 | }, 19 | "node_modules/@esbuild/android-arm": { 20 | "version": "0.17.19", 21 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", 22 | "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", 23 | "cpu": [ 24 | "arm" 25 | ], 26 | "dev": true, 27 | "optional": true, 28 | "os": [ 29 | "android" 30 | ], 31 | "engines": { 32 | "node": ">=12" 33 | } 34 | }, 35 | "node_modules/@esbuild/android-arm64": { 36 | "version": "0.17.19", 37 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", 38 | "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", 39 | "cpu": [ 40 | "arm64" 41 | ], 42 | "dev": true, 43 | "optional": true, 44 | "os": [ 45 | "android" 46 | ], 47 | "engines": { 48 | "node": ">=12" 49 | } 50 | }, 51 | "node_modules/@esbuild/android-x64": { 52 | "version": "0.17.19", 53 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", 54 | "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", 55 | "cpu": [ 56 | "x64" 57 | ], 58 | "dev": true, 59 | "optional": true, 60 | "os": [ 61 | "android" 62 | ], 63 | "engines": { 64 | "node": ">=12" 65 | } 66 | }, 67 | "node_modules/@esbuild/darwin-arm64": { 68 | "version": "0.17.19", 69 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", 70 | "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", 71 | "cpu": [ 72 | "arm64" 73 | ], 74 | "dev": true, 75 | "optional": true, 76 | "os": [ 77 | "darwin" 78 | ], 79 | "engines": { 80 | "node": ">=12" 81 | } 82 | }, 83 | "node_modules/@esbuild/darwin-x64": { 84 | "version": "0.17.19", 85 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", 86 | "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", 87 | "cpu": [ 88 | "x64" 89 | ], 90 | "dev": true, 91 | "optional": true, 92 | "os": [ 93 | "darwin" 94 | ], 95 | "engines": { 96 | "node": ">=12" 97 | } 98 | }, 99 | "node_modules/@esbuild/freebsd-arm64": { 100 | "version": "0.17.19", 101 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", 102 | "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", 103 | "cpu": [ 104 | "arm64" 105 | ], 106 | "dev": true, 107 | "optional": true, 108 | "os": [ 109 | "freebsd" 110 | ], 111 | "engines": { 112 | "node": ">=12" 113 | } 114 | }, 115 | "node_modules/@esbuild/freebsd-x64": { 116 | "version": "0.17.19", 117 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", 118 | "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", 119 | "cpu": [ 120 | "x64" 121 | ], 122 | "dev": true, 123 | "optional": true, 124 | "os": [ 125 | "freebsd" 126 | ], 127 | "engines": { 128 | "node": ">=12" 129 | } 130 | }, 131 | "node_modules/@esbuild/linux-arm": { 132 | "version": "0.17.19", 133 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", 134 | "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", 135 | "cpu": [ 136 | "arm" 137 | ], 138 | "dev": true, 139 | "optional": true, 140 | "os": [ 141 | "linux" 142 | ], 143 | "engines": { 144 | "node": ">=12" 145 | } 146 | }, 147 | "node_modules/@esbuild/linux-arm64": { 148 | "version": "0.17.19", 149 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", 150 | "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", 151 | "cpu": [ 152 | "arm64" 153 | ], 154 | "dev": true, 155 | "optional": true, 156 | "os": [ 157 | "linux" 158 | ], 159 | "engines": { 160 | "node": ">=12" 161 | } 162 | }, 163 | "node_modules/@esbuild/linux-ia32": { 164 | "version": "0.17.19", 165 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", 166 | "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", 167 | "cpu": [ 168 | "ia32" 169 | ], 170 | "dev": true, 171 | "optional": true, 172 | "os": [ 173 | "linux" 174 | ], 175 | "engines": { 176 | "node": ">=12" 177 | } 178 | }, 179 | "node_modules/@esbuild/linux-loong64": { 180 | "version": "0.17.19", 181 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", 182 | "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", 183 | "cpu": [ 184 | "loong64" 185 | ], 186 | "dev": true, 187 | "optional": true, 188 | "os": [ 189 | "linux" 190 | ], 191 | "engines": { 192 | "node": ">=12" 193 | } 194 | }, 195 | "node_modules/@esbuild/linux-mips64el": { 196 | "version": "0.17.19", 197 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", 198 | "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", 199 | "cpu": [ 200 | "mips64el" 201 | ], 202 | "dev": true, 203 | "optional": true, 204 | "os": [ 205 | "linux" 206 | ], 207 | "engines": { 208 | "node": ">=12" 209 | } 210 | }, 211 | "node_modules/@esbuild/linux-ppc64": { 212 | "version": "0.17.19", 213 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", 214 | "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", 215 | "cpu": [ 216 | "ppc64" 217 | ], 218 | "dev": true, 219 | "optional": true, 220 | "os": [ 221 | "linux" 222 | ], 223 | "engines": { 224 | "node": ">=12" 225 | } 226 | }, 227 | "node_modules/@esbuild/linux-riscv64": { 228 | "version": "0.17.19", 229 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", 230 | "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", 231 | "cpu": [ 232 | "riscv64" 233 | ], 234 | "dev": true, 235 | "optional": true, 236 | "os": [ 237 | "linux" 238 | ], 239 | "engines": { 240 | "node": ">=12" 241 | } 242 | }, 243 | "node_modules/@esbuild/linux-s390x": { 244 | "version": "0.17.19", 245 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", 246 | "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", 247 | "cpu": [ 248 | "s390x" 249 | ], 250 | "dev": true, 251 | "optional": true, 252 | "os": [ 253 | "linux" 254 | ], 255 | "engines": { 256 | "node": ">=12" 257 | } 258 | }, 259 | "node_modules/@esbuild/linux-x64": { 260 | "version": "0.17.19", 261 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", 262 | "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", 263 | "cpu": [ 264 | "x64" 265 | ], 266 | "dev": true, 267 | "optional": true, 268 | "os": [ 269 | "linux" 270 | ], 271 | "engines": { 272 | "node": ">=12" 273 | } 274 | }, 275 | "node_modules/@esbuild/netbsd-x64": { 276 | "version": "0.17.19", 277 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", 278 | "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", 279 | "cpu": [ 280 | "x64" 281 | ], 282 | "dev": true, 283 | "optional": true, 284 | "os": [ 285 | "netbsd" 286 | ], 287 | "engines": { 288 | "node": ">=12" 289 | } 290 | }, 291 | "node_modules/@esbuild/openbsd-x64": { 292 | "version": "0.17.19", 293 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", 294 | "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", 295 | "cpu": [ 296 | "x64" 297 | ], 298 | "dev": true, 299 | "optional": true, 300 | "os": [ 301 | "openbsd" 302 | ], 303 | "engines": { 304 | "node": ">=12" 305 | } 306 | }, 307 | "node_modules/@esbuild/sunos-x64": { 308 | "version": "0.17.19", 309 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", 310 | "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", 311 | "cpu": [ 312 | "x64" 313 | ], 314 | "dev": true, 315 | "optional": true, 316 | "os": [ 317 | "sunos" 318 | ], 319 | "engines": { 320 | "node": ">=12" 321 | } 322 | }, 323 | "node_modules/@esbuild/win32-arm64": { 324 | "version": "0.17.19", 325 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", 326 | "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", 327 | "cpu": [ 328 | "arm64" 329 | ], 330 | "dev": true, 331 | "optional": true, 332 | "os": [ 333 | "win32" 334 | ], 335 | "engines": { 336 | "node": ">=12" 337 | } 338 | }, 339 | "node_modules/@esbuild/win32-ia32": { 340 | "version": "0.17.19", 341 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", 342 | "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", 343 | "cpu": [ 344 | "ia32" 345 | ], 346 | "dev": true, 347 | "optional": true, 348 | "os": [ 349 | "win32" 350 | ], 351 | "engines": { 352 | "node": ">=12" 353 | } 354 | }, 355 | "node_modules/@esbuild/win32-x64": { 356 | "version": "0.17.19", 357 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", 358 | "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", 359 | "cpu": [ 360 | "x64" 361 | ], 362 | "dev": true, 363 | "optional": true, 364 | "os": [ 365 | "win32" 366 | ], 367 | "engines": { 368 | "node": ">=12" 369 | } 370 | }, 371 | "node_modules/dat.gui": { 372 | "version": "0.7.9", 373 | "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.9.tgz", 374 | "integrity": "sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==" 375 | }, 376 | "node_modules/esbuild": { 377 | "version": "0.17.19", 378 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", 379 | "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", 380 | "dev": true, 381 | "hasInstallScript": true, 382 | "bin": { 383 | "esbuild": "bin/esbuild" 384 | }, 385 | "engines": { 386 | "node": ">=12" 387 | }, 388 | "optionalDependencies": { 389 | "@esbuild/android-arm": "0.17.19", 390 | "@esbuild/android-arm64": "0.17.19", 391 | "@esbuild/android-x64": "0.17.19", 392 | "@esbuild/darwin-arm64": "0.17.19", 393 | "@esbuild/darwin-x64": "0.17.19", 394 | "@esbuild/freebsd-arm64": "0.17.19", 395 | "@esbuild/freebsd-x64": "0.17.19", 396 | "@esbuild/linux-arm": "0.17.19", 397 | "@esbuild/linux-arm64": "0.17.19", 398 | "@esbuild/linux-ia32": "0.17.19", 399 | "@esbuild/linux-loong64": "0.17.19", 400 | "@esbuild/linux-mips64el": "0.17.19", 401 | "@esbuild/linux-ppc64": "0.17.19", 402 | "@esbuild/linux-riscv64": "0.17.19", 403 | "@esbuild/linux-s390x": "0.17.19", 404 | "@esbuild/linux-x64": "0.17.19", 405 | "@esbuild/netbsd-x64": "0.17.19", 406 | "@esbuild/openbsd-x64": "0.17.19", 407 | "@esbuild/sunos-x64": "0.17.19", 408 | "@esbuild/win32-arm64": "0.17.19", 409 | "@esbuild/win32-ia32": "0.17.19", 410 | "@esbuild/win32-x64": "0.17.19" 411 | } 412 | }, 413 | "node_modules/fsevents": { 414 | "version": "2.3.2", 415 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 416 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 417 | "dev": true, 418 | "hasInstallScript": true, 419 | "optional": true, 420 | "os": [ 421 | "darwin" 422 | ], 423 | "engines": { 424 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 425 | } 426 | }, 427 | "node_modules/gsap": { 428 | "version": "3.11.4", 429 | "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.11.4.tgz", 430 | "integrity": "sha512-McHhEguHyExMMnjqKA8G+7TvxmlKQGMbjgwAilnFe1e4id7V/tFveRQ2YMZhTYu0oxHGWvbPltdVYQOu3z1SCA==" 431 | }, 432 | "node_modules/nanoid": { 433 | "version": "3.3.6", 434 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 435 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 436 | "dev": true, 437 | "funding": [ 438 | { 439 | "type": "github", 440 | "url": "https://github.com/sponsors/ai" 441 | } 442 | ], 443 | "bin": { 444 | "nanoid": "bin/nanoid.cjs" 445 | }, 446 | "engines": { 447 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 448 | } 449 | }, 450 | "node_modules/picocolors": { 451 | "version": "1.0.0", 452 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 453 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 454 | "dev": true 455 | }, 456 | "node_modules/postcss": { 457 | "version": "8.4.24", 458 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", 459 | "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", 460 | "dev": true, 461 | "funding": [ 462 | { 463 | "type": "opencollective", 464 | "url": "https://opencollective.com/postcss/" 465 | }, 466 | { 467 | "type": "tidelift", 468 | "url": "https://tidelift.com/funding/github/npm/postcss" 469 | }, 470 | { 471 | "type": "github", 472 | "url": "https://github.com/sponsors/ai" 473 | } 474 | ], 475 | "dependencies": { 476 | "nanoid": "^3.3.6", 477 | "picocolors": "^1.0.0", 478 | "source-map-js": "^1.0.2" 479 | }, 480 | "engines": { 481 | "node": "^10 || ^12 || >=14" 482 | } 483 | }, 484 | "node_modules/rollup": { 485 | "version": "3.25.1", 486 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", 487 | "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", 488 | "dev": true, 489 | "bin": { 490 | "rollup": "dist/bin/rollup" 491 | }, 492 | "engines": { 493 | "node": ">=14.18.0", 494 | "npm": ">=8.0.0" 495 | }, 496 | "optionalDependencies": { 497 | "fsevents": "~2.3.2" 498 | } 499 | }, 500 | "node_modules/source-map-js": { 501 | "version": "1.0.2", 502 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 503 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 504 | "dev": true, 505 | "engines": { 506 | "node": ">=0.10.0" 507 | } 508 | }, 509 | "node_modules/three": { 510 | "version": "0.149.0", 511 | "resolved": "https://registry.npmjs.org/three/-/three-0.149.0.tgz", 512 | "integrity": "sha512-tohpUxPDht0qExRLDTM8sjRLc5d9STURNrdnK3w9A+V4pxaTBfKWWT/IqtiLfg23Vfc3Z+ImNfvRw1/0CtxrkQ==" 513 | }, 514 | "node_modules/vite": { 515 | "version": "4.3.9", 516 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", 517 | "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", 518 | "dev": true, 519 | "dependencies": { 520 | "esbuild": "^0.17.5", 521 | "postcss": "^8.4.23", 522 | "rollup": "^3.21.0" 523 | }, 524 | "bin": { 525 | "vite": "bin/vite.js" 526 | }, 527 | "engines": { 528 | "node": "^14.18.0 || >=16.0.0" 529 | }, 530 | "optionalDependencies": { 531 | "fsevents": "~2.3.2" 532 | }, 533 | "peerDependencies": { 534 | "@types/node": ">= 14", 535 | "less": "*", 536 | "sass": "*", 537 | "stylus": "*", 538 | "sugarss": "*", 539 | "terser": "^5.4.0" 540 | }, 541 | "peerDependenciesMeta": { 542 | "@types/node": { 543 | "optional": true 544 | }, 545 | "less": { 546 | "optional": true 547 | }, 548 | "sass": { 549 | "optional": true 550 | }, 551 | "stylus": { 552 | "optional": true 553 | }, 554 | "sugarss": { 555 | "optional": true 556 | }, 557 | "terser": { 558 | "optional": true 559 | } 560 | } 561 | } 562 | }, 563 | "dependencies": { 564 | "@esbuild/android-arm": { 565 | "version": "0.17.19", 566 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", 567 | "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", 568 | "dev": true, 569 | "optional": true 570 | }, 571 | "@esbuild/android-arm64": { 572 | "version": "0.17.19", 573 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", 574 | "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", 575 | "dev": true, 576 | "optional": true 577 | }, 578 | "@esbuild/android-x64": { 579 | "version": "0.17.19", 580 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", 581 | "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", 582 | "dev": true, 583 | "optional": true 584 | }, 585 | "@esbuild/darwin-arm64": { 586 | "version": "0.17.19", 587 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", 588 | "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", 589 | "dev": true, 590 | "optional": true 591 | }, 592 | "@esbuild/darwin-x64": { 593 | "version": "0.17.19", 594 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", 595 | "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", 596 | "dev": true, 597 | "optional": true 598 | }, 599 | "@esbuild/freebsd-arm64": { 600 | "version": "0.17.19", 601 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", 602 | "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", 603 | "dev": true, 604 | "optional": true 605 | }, 606 | "@esbuild/freebsd-x64": { 607 | "version": "0.17.19", 608 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", 609 | "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", 610 | "dev": true, 611 | "optional": true 612 | }, 613 | "@esbuild/linux-arm": { 614 | "version": "0.17.19", 615 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", 616 | "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", 617 | "dev": true, 618 | "optional": true 619 | }, 620 | "@esbuild/linux-arm64": { 621 | "version": "0.17.19", 622 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", 623 | "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", 624 | "dev": true, 625 | "optional": true 626 | }, 627 | "@esbuild/linux-ia32": { 628 | "version": "0.17.19", 629 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", 630 | "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", 631 | "dev": true, 632 | "optional": true 633 | }, 634 | "@esbuild/linux-loong64": { 635 | "version": "0.17.19", 636 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", 637 | "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", 638 | "dev": true, 639 | "optional": true 640 | }, 641 | "@esbuild/linux-mips64el": { 642 | "version": "0.17.19", 643 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", 644 | "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", 645 | "dev": true, 646 | "optional": true 647 | }, 648 | "@esbuild/linux-ppc64": { 649 | "version": "0.17.19", 650 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", 651 | "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", 652 | "dev": true, 653 | "optional": true 654 | }, 655 | "@esbuild/linux-riscv64": { 656 | "version": "0.17.19", 657 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", 658 | "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", 659 | "dev": true, 660 | "optional": true 661 | }, 662 | "@esbuild/linux-s390x": { 663 | "version": "0.17.19", 664 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", 665 | "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", 666 | "dev": true, 667 | "optional": true 668 | }, 669 | "@esbuild/linux-x64": { 670 | "version": "0.17.19", 671 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", 672 | "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", 673 | "dev": true, 674 | "optional": true 675 | }, 676 | "@esbuild/netbsd-x64": { 677 | "version": "0.17.19", 678 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", 679 | "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", 680 | "dev": true, 681 | "optional": true 682 | }, 683 | "@esbuild/openbsd-x64": { 684 | "version": "0.17.19", 685 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", 686 | "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", 687 | "dev": true, 688 | "optional": true 689 | }, 690 | "@esbuild/sunos-x64": { 691 | "version": "0.17.19", 692 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", 693 | "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", 694 | "dev": true, 695 | "optional": true 696 | }, 697 | "@esbuild/win32-arm64": { 698 | "version": "0.17.19", 699 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", 700 | "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", 701 | "dev": true, 702 | "optional": true 703 | }, 704 | "@esbuild/win32-ia32": { 705 | "version": "0.17.19", 706 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", 707 | "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", 708 | "dev": true, 709 | "optional": true 710 | }, 711 | "@esbuild/win32-x64": { 712 | "version": "0.17.19", 713 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", 714 | "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", 715 | "dev": true, 716 | "optional": true 717 | }, 718 | "dat.gui": { 719 | "version": "0.7.9", 720 | "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.9.tgz", 721 | "integrity": "sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==" 722 | }, 723 | "esbuild": { 724 | "version": "0.17.19", 725 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", 726 | "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", 727 | "dev": true, 728 | "requires": { 729 | "@esbuild/android-arm": "0.17.19", 730 | "@esbuild/android-arm64": "0.17.19", 731 | "@esbuild/android-x64": "0.17.19", 732 | "@esbuild/darwin-arm64": "0.17.19", 733 | "@esbuild/darwin-x64": "0.17.19", 734 | "@esbuild/freebsd-arm64": "0.17.19", 735 | "@esbuild/freebsd-x64": "0.17.19", 736 | "@esbuild/linux-arm": "0.17.19", 737 | "@esbuild/linux-arm64": "0.17.19", 738 | "@esbuild/linux-ia32": "0.17.19", 739 | "@esbuild/linux-loong64": "0.17.19", 740 | "@esbuild/linux-mips64el": "0.17.19", 741 | "@esbuild/linux-ppc64": "0.17.19", 742 | "@esbuild/linux-riscv64": "0.17.19", 743 | "@esbuild/linux-s390x": "0.17.19", 744 | "@esbuild/linux-x64": "0.17.19", 745 | "@esbuild/netbsd-x64": "0.17.19", 746 | "@esbuild/openbsd-x64": "0.17.19", 747 | "@esbuild/sunos-x64": "0.17.19", 748 | "@esbuild/win32-arm64": "0.17.19", 749 | "@esbuild/win32-ia32": "0.17.19", 750 | "@esbuild/win32-x64": "0.17.19" 751 | } 752 | }, 753 | "fsevents": { 754 | "version": "2.3.2", 755 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 756 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 757 | "dev": true, 758 | "optional": true 759 | }, 760 | "gsap": { 761 | "version": "3.11.4", 762 | "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.11.4.tgz", 763 | "integrity": "sha512-McHhEguHyExMMnjqKA8G+7TvxmlKQGMbjgwAilnFe1e4id7V/tFveRQ2YMZhTYu0oxHGWvbPltdVYQOu3z1SCA==" 764 | }, 765 | "nanoid": { 766 | "version": "3.3.6", 767 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 768 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 769 | "dev": true 770 | }, 771 | "picocolors": { 772 | "version": "1.0.0", 773 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 774 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 775 | "dev": true 776 | }, 777 | "postcss": { 778 | "version": "8.4.24", 779 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", 780 | "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", 781 | "dev": true, 782 | "requires": { 783 | "nanoid": "^3.3.6", 784 | "picocolors": "^1.0.0", 785 | "source-map-js": "^1.0.2" 786 | } 787 | }, 788 | "rollup": { 789 | "version": "3.25.1", 790 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", 791 | "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", 792 | "dev": true, 793 | "requires": { 794 | "fsevents": "~2.3.2" 795 | } 796 | }, 797 | "source-map-js": { 798 | "version": "1.0.2", 799 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 800 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 801 | "dev": true 802 | }, 803 | "three": { 804 | "version": "0.149.0", 805 | "resolved": "https://registry.npmjs.org/three/-/three-0.149.0.tgz", 806 | "integrity": "sha512-tohpUxPDht0qExRLDTM8sjRLc5d9STURNrdnK3w9A+V4pxaTBfKWWT/IqtiLfg23Vfc3Z+ImNfvRw1/0CtxrkQ==" 807 | }, 808 | "vite": { 809 | "version": "4.3.9", 810 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", 811 | "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", 812 | "dev": true, 813 | "requires": { 814 | "esbuild": "^0.17.5", 815 | "fsevents": "~2.3.2", 816 | "postcss": "^8.4.23", 817 | "rollup": "^3.21.0" 818 | } 819 | } 820 | } 821 | } 822 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DreamRoom", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "host": "vite --host" 11 | }, 12 | "devDependencies": { 13 | "vite": "^4.0.0" 14 | }, 15 | "dependencies": { 16 | "dat.gui": "^0.7.9", 17 | "gsap": "^3.11.4", 18 | "three": "^0.149.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /public/draco/README.md: -------------------------------------------------------------------------------- 1 | # Draco 3D Data Compression 2 | 3 | Draco is an open-source library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics. 4 | 5 | [Website](https://google.github.io/draco/) | [GitHub](https://github.com/google/draco) 6 | 7 | ## Contents 8 | 9 | This folder contains three utilities: 10 | 11 | * `draco_decoder.js` — Emscripten-compiled decoder, compatible with any modern browser. 12 | * `draco_decoder.wasm` — WebAssembly decoder, compatible with newer browsers and devices. 13 | * `draco_wasm_wrapper.js` — JavaScript wrapper for the WASM decoder. 14 | 15 | Each file is provided in two variations: 16 | 17 | * **Default:** Latest stable builds, tracking the project's [master branch](https://github.com/google/draco). 18 | * **glTF:** Builds targeted by the [glTF mesh compression extension](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression), tracking the [corresponding Draco branch](https://github.com/google/draco/tree/gltf_2.0_draco_extension). 19 | 20 | Either variation may be used with `THREE.DRACOLoader`: 21 | 22 | ```js 23 | var dracoLoader = new THREE.DRACOLoader(); 24 | dracoLoader.setDecoderPath('path/to/decoders/'); 25 | dracoLoader.setDecoderConfig({type: 'js'}); // (Optional) Override detection of WASM support. 26 | ``` 27 | 28 | Further [documentation on GitHub](https://github.com/google/draco/tree/master/javascript/example#static-loading-javascript-decoder). 29 | 30 | ## License 31 | 32 | [Apache License 2.0](https://github.com/google/draco/blob/master/LICENSE) 33 | -------------------------------------------------------------------------------- /public/draco/draco_decoder.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WebRevo/Dream_Room/581ce494c0610519efb669b99a889dd035b7f315/public/draco/draco_decoder.wasm -------------------------------------------------------------------------------- /public/draco/draco_wasm_wrapper.js: -------------------------------------------------------------------------------- 1 | var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(f){var m=0;return function(){return m=d);)++b;if(16k?d+=String.fromCharCode(k):(k-=65536,d+=String.fromCharCode(55296|k>>10,56320|k&1023))}}else d+=String.fromCharCode(k)}return d}function X(a,c){return a?h(ca,a,c):""}function e(a,c){0=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++b)&1023);127>=d?++c:c=2047>=d?c+2:65535>=d?c+3:c+4}c=Array(c+1);b=0;d=c.length;if(0=e){var f=a.charCodeAt(++k);e=65536+((e&1023)<<10)|f&1023}if(127>=e){if(b>=d)break;c[b++]=e}else{if(2047>=e){if(b+1>=d)break;c[b++]=192|e>>6}else{if(65535>=e){if(b+2>=d)break;c[b++]=224|e>>12}else{if(b+3>=d)break;c[b++]=240|e>>18;c[b++]=128|e>>12&63}c[b++]=128|e>>6&63}c[b++]=128| 18 | e&63}}c[b]=0}a=n.alloc(c,T);n.copy(c,T,a)}return a}function x(){throw"cannot construct a Status, no constructor in IDL";}function A(){this.ptr=Oa();u(A)[this.ptr]=this}function B(){this.ptr=Pa();u(B)[this.ptr]=this}function C(){this.ptr=Qa();u(C)[this.ptr]=this}function D(){this.ptr=Ra();u(D)[this.ptr]=this}function E(){this.ptr=Sa();u(E)[this.ptr]=this}function q(){this.ptr=Ta();u(q)[this.ptr]=this}function J(){this.ptr=Ua();u(J)[this.ptr]=this}function w(){this.ptr=Va();u(w)[this.ptr]=this}function F(){this.ptr= 19 | Wa();u(F)[this.ptr]=this}function r(){this.ptr=Xa();u(r)[this.ptr]=this}function G(){this.ptr=Ya();u(G)[this.ptr]=this}function H(){this.ptr=Za();u(H)[this.ptr]=this}function O(){this.ptr=$a();u(O)[this.ptr]=this}function K(){this.ptr=ab();u(K)[this.ptr]=this}function g(){this.ptr=bb();u(g)[this.ptr]=this}function y(){this.ptr=cb();u(y)[this.ptr]=this}function Q(){throw"cannot construct a VoidPtr, no constructor in IDL";}function I(){this.ptr=db();u(I)[this.ptr]=this}function L(){this.ptr=eb();u(L)[this.ptr]= 20 | this}m=m||{};var a="undefined"!==typeof m?m:{},Ga=!1,Ha=!1;a.onRuntimeInitialized=function(){Ga=!0;if(Ha&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Ha=!0;if(Ga&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3=a[1]?!0:0!=a[0]||10>2]},getStr:function(){return X(R.get())}, 26 | get64:function(){var a=R.get();R.get();return a},getZero:function(){R.get()}},Ka={__cxa_allocate_exception:function(a){return ib(a)},__cxa_throw:function(a,c,b){"uncaught_exception"in ta?ta.uncaught_exceptions++:ta.uncaught_exceptions=1;throw a;},abort:function(){z()},emscripten_get_sbrk_ptr:function(){return 18416},emscripten_memcpy_big:function(a,c,b){ca.set(ca.subarray(c,c+b),a)},emscripten_resize_heap:function(a){if(2147418112= 27 | c?e(2*c,65536):Math.min(e((3*c+2147483648)/4,65536),2147418112);a:{try{ia.grow(c-ka.byteLength+65535>>16);l(ia.buffer);var b=1;break a}catch(d){}b=void 0}return b?!0:!1},environ_get:function(a,c){var b=0;ba().forEach(function(d,e){var f=c+b;e=P[a+4*e>>2]=f;for(f=0;f>0]=d.charCodeAt(f);T[e>>0]=0;b+=d.length+1});return 0},environ_sizes_get:function(a,c){var b=ba();P[a>>2]=b.length;var d=0;b.forEach(function(a){d+=a.length+1});P[c>>2]=d;return 0},fd_close:function(a){return 0},fd_seek:function(a, 28 | c,b,d,e){return 0},fd_write:function(a,c,b,d){try{for(var e=0,f=0;f>2],k=P[c+(8*f+4)>>2],h=0;h>2]=e;return 0}catch(ua){return"undefined"!==typeof FS&&ua instanceof FS.ErrnoError||z(ua),ua.errno}},memory:ia,setTempRet0:function(a){},table:gb},La=function(){function e(c,b){a.asm=c.exports;aa--;a.monitorRunDependencies&&a.monitorRunDependencies(aa);0==aa&&(null!==sa&&(clearInterval(sa),sa=null),ja&&(c=ja,ja=null,c()))}function c(a){e(a.instance)} 29 | function b(a){return Ma().then(function(a){return WebAssembly.instantiate(a,d)}).then(a,function(a){Y("failed to asynchronously prepare wasm: "+a);z(a)})}var d={env:Ka,wasi_unstable:Ka};aa++;a.monitorRunDependencies&&a.monitorRunDependencies(aa);if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(Na){return Y("Module.instantiateWasm callback failed with error: "+Na),!1}(function(){if(da||"function"!==typeof WebAssembly.instantiateStreaming||va(U)||"function"!==typeof fetch)return b(c);fetch(U, 30 | {credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,d).then(c,function(a){Y("wasm streaming compile failed: "+a);Y("falling back to ArrayBuffer instantiation");b(c)})})})();return{}}();a.asm=La;var hb=a.___wasm_call_ctors=function(){return a.asm.__wasm_call_ctors.apply(null,arguments)},jb=a._emscripten_bind_Status_code_0=function(){return a.asm.emscripten_bind_Status_code_0.apply(null,arguments)},kb=a._emscripten_bind_Status_ok_0=function(){return a.asm.emscripten_bind_Status_ok_0.apply(null, 31 | arguments)},lb=a._emscripten_bind_Status_error_msg_0=function(){return a.asm.emscripten_bind_Status_error_msg_0.apply(null,arguments)},mb=a._emscripten_bind_Status___destroy___0=function(){return a.asm.emscripten_bind_Status___destroy___0.apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm.emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,arguments)},nb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt16Array_GetValue_1.apply(null, 32 | arguments)},ob=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},pb=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},Pa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm.emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},qb=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm.emscripten_bind_PointCloud_num_attributes_0.apply(null, 33 | arguments)},rb=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm.emscripten_bind_PointCloud_num_points_0.apply(null,arguments)},sb=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm.emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},Qa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm.emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,arguments)},tb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt8Array_GetValue_1.apply(null, 34 | arguments)},ub=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},vb=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},Ra=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm.emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,arguments)},wb=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt32Array_GetValue_1.apply(null, 35 | arguments)},xb=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},yb=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},Sa=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,arguments)},zb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1= 36 | function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},Ab=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,arguments)},Bb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},Ta=a._emscripten_bind_PointAttribute_PointAttribute_0= 37 | function(){return a.asm.emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Cb=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm.emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm.emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},Eb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return a.asm.emscripten_bind_PointAttribute_attribute_type_0.apply(null, 38 | arguments)},Fb=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm.emscripten_bind_PointAttribute_data_type_0.apply(null,arguments)},Gb=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm.emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},Hb=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm.emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Ib=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm.emscripten_bind_PointAttribute_byte_stride_0.apply(null, 39 | arguments)},Jb=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm.emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},Kb=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm.emscripten_bind_PointAttribute_unique_id_0.apply(null,arguments)},Lb=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm.emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},Ua=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0= 40 | function(){return a.asm.emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,arguments)},Mb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm.emscripten_bind_AttributeTransformData_transform_type_0.apply(null,arguments)},Nb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm.emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Va=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0= 41 | function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,arguments)},Ob=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},Pb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)}, 42 | Qb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,arguments)},Rb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,arguments)},Sb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,arguments)}, 43 | Wa=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm.emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,arguments)},Tb=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoInt8Array_GetValue_1.apply(null,arguments)},Ub=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm.emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},Vb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt8Array___destroy___0.apply(null, 44 | arguments)},Xa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm.emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,arguments)},Wb=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Xb=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Yb=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3= 45 | function(){return a.asm.emscripten_bind_MetadataQuerier_GetIntEntryArray_3.apply(null,arguments)},Zb=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},$b=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},ac=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm.emscripten_bind_MetadataQuerier_NumEntries_1.apply(null, 46 | arguments)},bc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,arguments)},cc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm.emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},Ya=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm.emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,arguments)},dc=a._emscripten_bind_DracoInt16Array_GetValue_1= 47 | function(){return a.asm.emscripten_bind_DracoInt16Array_GetValue_1.apply(null,arguments)},ec=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm.emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},fc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},Za=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm.emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null, 48 | arguments)},gc=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},hc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm.emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},ic=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},$a=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm.emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null, 49 | arguments)},jc=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm.emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},ab=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm.emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},kc=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm.emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},lc=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm.emscripten_bind_DecoderBuffer___destroy___0.apply(null, 50 | arguments)},bb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm.emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},mc=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=function(){return a.asm.emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,arguments)},nc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm.emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,arguments)},oc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm.emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null, 51 | arguments)},pc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeId_2.apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetAttribute_2= 52 | function(){return a.asm.emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},uc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm.emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null, 53 | arguments)},wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm.emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm.emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return a.asm.emscripten_bind_Decoder_GetTrianglesUInt16Array_3.apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3= 54 | function(){return a.asm.emscripten_bind_Decoder_GetTrianglesUInt32Array_3.apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null, 55 | arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)}, 56 | Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,arguments)},Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},Jc= 57 | a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return a.asm.emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5.apply(null,arguments)},Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm.emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,arguments)},Lc=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm.emscripten_bind_Decoder___destroy___0.apply(null,arguments)},cb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm.emscripten_bind_Mesh_Mesh_0.apply(null, 58 | arguments)},Mc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm.emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},Nc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm.emscripten_bind_Mesh_num_attributes_0.apply(null,arguments)},Oc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm.emscripten_bind_Mesh_num_points_0.apply(null,arguments)},Pc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm.emscripten_bind_Mesh___destroy___0.apply(null,arguments)}, 59 | Qc=a._emscripten_bind_VoidPtr___destroy___0=function(){return a.asm.emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},db=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm.emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,arguments)},Rc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},Sc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm.emscripten_bind_DracoInt32Array_size_0.apply(null, 60 | arguments)},Tc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},eb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm.emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Uc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm.emscripten_bind_Metadata___destroy___0.apply(null,arguments)},Vc=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm.emscripten_enum_draco_StatusCode_OK.apply(null, 61 | arguments)},Wc=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return a.asm.emscripten_enum_draco_StatusCode_DRACO_ERROR.apply(null,arguments)},Xc=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm.emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},Yc=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm.emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,arguments)},Zc=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION= 62 | function(){return a.asm.emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,arguments)},$c=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm.emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},ad=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return a.asm.emscripten_enum_draco_DataType_DT_INVALID.apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INT8=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT8.apply(null, 63 | arguments)},cd=a._emscripten_enum_draco_DataType_DT_UINT8=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT8.apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_INT16=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT16.apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT16.apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT32.apply(null, 64 | arguments)},gd=a._emscripten_enum_draco_DataType_DT_UINT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT32.apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_INT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT64.apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT64.apply(null,arguments)},jd=a._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_FLOAT32.apply(null, 65 | arguments)},kd=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_FLOAT64.apply(null,arguments)},ld=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return a.asm.emscripten_enum_draco_DataType_DT_BOOL.apply(null,arguments)},md=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return a.asm.emscripten_enum_draco_DataType_DT_TYPES_COUNT.apply(null,arguments)},nd=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null, 66 | arguments)},od=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},pd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},qd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null, 67 | arguments)},rd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},sd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},td=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null, 68 | arguments)},ud=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},vd=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},wd=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},xd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR= 69 | function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},yd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},zd=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)};a._setThrew=function(){return a.asm.setThrew.apply(null,arguments)};var ta=a.__ZSt18uncaught_exceptionv= 70 | function(){return a.asm._ZSt18uncaught_exceptionv.apply(null,arguments)};a._free=function(){return a.asm.free.apply(null,arguments)};var ib=a._malloc=function(){return a.asm.malloc.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.__growWasmMemory=function(){return a.asm.__growWasmMemory.apply(null,arguments)}; 71 | a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)}; 72 | a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_iidiiii=function(){return a.asm.dynCall_iidiiii.apply(null,arguments)};a.dynCall_jiji=function(){return a.asm.dynCall_jiji.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.asm=La;var fa;a.then=function(e){if(fa)e(a); 73 | else{var c=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){c&&c();e(a)}}return a};ja=function c(){fa||ma();fa||(ja=c)};a.run=ma;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0=n.size?(t(0>=1;break;case 4:d>>=2;break;case 8:d>>=3}for(var c=0;c=d);)++b;if(16k?d+=String.fromCharCode(k):(k-=65536,d+=String.fromCharCode(55296|k>>10,56320|k&1023))}}else d+=String.fromCharCode(k)}return d}function X(a,c){return a?h(ca,a,c):""}function e(a,c){0=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++b)&1023);127>=d?++c:c=2047>=d?c+2:65535>=d?c+3:c+4}c=Array(c+1);b=0;d=c.length;if(0=e){var f=a.charCodeAt(++k);e=65536+((e&1023)<<10)|f&1023}if(127>=e){if(b>=d)break;c[b++]=e}else{if(2047>=e){if(b+1>=d)break;c[b++]=192|e>>6}else{if(65535>=e){if(b+2>=d)break;c[b++]=224|e>>12}else{if(b+3>=d)break;c[b++]=240|e>>18;c[b++]=128|e>>12&63}c[b++]=128|e>>6&63}c[b++]=128| 18 | e&63}}c[b]=0}a=n.alloc(c,T);n.copy(c,T,a)}return a}function x(){throw"cannot construct a Status, no constructor in IDL";}function A(){this.ptr=Oa();u(A)[this.ptr]=this}function B(){this.ptr=Pa();u(B)[this.ptr]=this}function C(){this.ptr=Qa();u(C)[this.ptr]=this}function D(){this.ptr=Ra();u(D)[this.ptr]=this}function E(){this.ptr=Sa();u(E)[this.ptr]=this}function q(){this.ptr=Ta();u(q)[this.ptr]=this}function J(){this.ptr=Ua();u(J)[this.ptr]=this}function w(){this.ptr=Va();u(w)[this.ptr]=this}function F(){this.ptr= 19 | Wa();u(F)[this.ptr]=this}function r(){this.ptr=Xa();u(r)[this.ptr]=this}function G(){this.ptr=Ya();u(G)[this.ptr]=this}function H(){this.ptr=Za();u(H)[this.ptr]=this}function O(){this.ptr=$a();u(O)[this.ptr]=this}function K(){this.ptr=ab();u(K)[this.ptr]=this}function g(){this.ptr=bb();u(g)[this.ptr]=this}function y(){this.ptr=cb();u(y)[this.ptr]=this}function Q(){throw"cannot construct a VoidPtr, no constructor in IDL";}function I(){this.ptr=db();u(I)[this.ptr]=this}function L(){this.ptr=eb();u(L)[this.ptr]= 20 | this}m=m||{};var a="undefined"!==typeof m?m:{},Ga=!1,Ha=!1;a.onRuntimeInitialized=function(){Ga=!0;if(Ha&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Ha=!0;if(Ga&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(a){if("string"!==typeof a)return!1;a=a.split(".");return 2>a.length||3=a[1]?!0:0!=a[0]||10>2]},getStr:function(){return X(R.get())}, 26 | get64:function(){var a=R.get();R.get();return a},getZero:function(){R.get()}},Ka={__cxa_allocate_exception:function(a){return ib(a)},__cxa_throw:function(a,c,b){"uncaught_exception"in ta?ta.uncaught_exceptions++:ta.uncaught_exceptions=1;throw a;},abort:function(){z()},emscripten_get_sbrk_ptr:function(){return 13664},emscripten_memcpy_big:function(a,c,b){ca.set(ca.subarray(c,c+b),a)},emscripten_resize_heap:function(a){if(2147418112= 27 | c?e(2*c,65536):Math.min(e((3*c+2147483648)/4,65536),2147418112);a:{try{ia.grow(c-ka.byteLength+65535>>16);l(ia.buffer);var b=1;break a}catch(d){}b=void 0}return b?!0:!1},environ_get:function(a,c){var b=0;ba().forEach(function(d,e){var f=c+b;e=P[a+4*e>>2]=f;for(f=0;f>0]=d.charCodeAt(f);T[e>>0]=0;b+=d.length+1});return 0},environ_sizes_get:function(a,c){var b=ba();P[a>>2]=b.length;var d=0;b.forEach(function(a){d+=a.length+1});P[c>>2]=d;return 0},fd_close:function(a){return 0},fd_seek:function(a, 28 | c,b,d,e){return 0},fd_write:function(a,c,b,d){try{for(var e=0,f=0;f>2],k=P[c+(8*f+4)>>2],h=0;h>2]=e;return 0}catch(ua){return"undefined"!==typeof FS&&ua instanceof FS.ErrnoError||z(ua),ua.errno}},memory:ia,setTempRet0:function(a){},table:gb},La=function(){function e(c,b){a.asm=c.exports;aa--;a.monitorRunDependencies&&a.monitorRunDependencies(aa);0==aa&&(null!==sa&&(clearInterval(sa),sa=null),ja&&(c=ja,ja=null,c()))}function c(a){e(a.instance)} 29 | function b(a){return Ma().then(function(a){return WebAssembly.instantiate(a,d)}).then(a,function(a){Y("failed to asynchronously prepare wasm: "+a);z(a)})}var d={env:Ka,wasi_unstable:Ka};aa++;a.monitorRunDependencies&&a.monitorRunDependencies(aa);if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(Na){return Y("Module.instantiateWasm callback failed with error: "+Na),!1}(function(){if(da||"function"!==typeof WebAssembly.instantiateStreaming||va(U)||"function"!==typeof fetch)return b(c);fetch(U, 30 | {credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,d).then(c,function(a){Y("wasm streaming compile failed: "+a);Y("falling back to ArrayBuffer instantiation");b(c)})})})();return{}}();a.asm=La;var hb=a.___wasm_call_ctors=function(){return a.asm.__wasm_call_ctors.apply(null,arguments)},jb=a._emscripten_bind_Status_code_0=function(){return a.asm.emscripten_bind_Status_code_0.apply(null,arguments)},kb=a._emscripten_bind_Status_ok_0=function(){return a.asm.emscripten_bind_Status_ok_0.apply(null, 31 | arguments)},lb=a._emscripten_bind_Status_error_msg_0=function(){return a.asm.emscripten_bind_Status_error_msg_0.apply(null,arguments)},mb=a._emscripten_bind_Status___destroy___0=function(){return a.asm.emscripten_bind_Status___destroy___0.apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return a.asm.emscripten_bind_DracoUInt16Array_DracoUInt16Array_0.apply(null,arguments)},nb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt16Array_GetValue_1.apply(null, 32 | arguments)},ob=a._emscripten_bind_DracoUInt16Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt16Array_size_0.apply(null,arguments)},pb=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt16Array___destroy___0.apply(null,arguments)},Pa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm.emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},qb=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm.emscripten_bind_PointCloud_num_attributes_0.apply(null, 33 | arguments)},rb=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm.emscripten_bind_PointCloud_num_points_0.apply(null,arguments)},sb=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm.emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},Qa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return a.asm.emscripten_bind_DracoUInt8Array_DracoUInt8Array_0.apply(null,arguments)},tb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt8Array_GetValue_1.apply(null, 34 | arguments)},ub=a._emscripten_bind_DracoUInt8Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt8Array_size_0.apply(null,arguments)},vb=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt8Array___destroy___0.apply(null,arguments)},Ra=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return a.asm.emscripten_bind_DracoUInt32Array_DracoUInt32Array_0.apply(null,arguments)},wb=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoUInt32Array_GetValue_1.apply(null, 35 | arguments)},xb=a._emscripten_bind_DracoUInt32Array_size_0=function(){return a.asm.emscripten_bind_DracoUInt32Array_size_0.apply(null,arguments)},yb=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoUInt32Array___destroy___0.apply(null,arguments)},Sa=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,arguments)},zb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1= 36 | function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},Ab=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,arguments)},Bb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm.emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null,arguments)},Ta=a._emscripten_bind_PointAttribute_PointAttribute_0= 37 | function(){return a.asm.emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},Cb=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm.emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm.emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},Eb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return a.asm.emscripten_bind_PointAttribute_attribute_type_0.apply(null, 38 | arguments)},Fb=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm.emscripten_bind_PointAttribute_data_type_0.apply(null,arguments)},Gb=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm.emscripten_bind_PointAttribute_num_components_0.apply(null,arguments)},Hb=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm.emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Ib=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm.emscripten_bind_PointAttribute_byte_stride_0.apply(null, 39 | arguments)},Jb=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm.emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},Kb=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm.emscripten_bind_PointAttribute_unique_id_0.apply(null,arguments)},Lb=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm.emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},Ua=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0= 40 | function(){return a.asm.emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,arguments)},Mb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm.emscripten_bind_AttributeTransformData_transform_type_0.apply(null,arguments)},Nb=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm.emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},Va=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0= 41 | function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,arguments)},Ob=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},Pb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)}, 42 | Qb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,arguments)},Rb=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,arguments)},Sb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm.emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,arguments)}, 43 | Wa=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return a.asm.emscripten_bind_DracoInt8Array_DracoInt8Array_0.apply(null,arguments)},Tb=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoInt8Array_GetValue_1.apply(null,arguments)},Ub=a._emscripten_bind_DracoInt8Array_size_0=function(){return a.asm.emscripten_bind_DracoInt8Array_size_0.apply(null,arguments)},Vb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt8Array___destroy___0.apply(null, 44 | arguments)},Xa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm.emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,arguments)},Wb=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_HasEntry_2.apply(null,arguments)},Xb=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},Yb=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3= 45 | function(){return a.asm.emscripten_bind_MetadataQuerier_GetIntEntryArray_3.apply(null,arguments)},Zb=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},$b=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},ac=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return a.asm.emscripten_bind_MetadataQuerier_NumEntries_1.apply(null, 46 | arguments)},bc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return a.asm.emscripten_bind_MetadataQuerier_GetEntryName_2.apply(null,arguments)},cc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm.emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},Ya=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return a.asm.emscripten_bind_DracoInt16Array_DracoInt16Array_0.apply(null,arguments)},dc=a._emscripten_bind_DracoInt16Array_GetValue_1= 47 | function(){return a.asm.emscripten_bind_DracoInt16Array_GetValue_1.apply(null,arguments)},ec=a._emscripten_bind_DracoInt16Array_size_0=function(){return a.asm.emscripten_bind_DracoInt16Array_size_0.apply(null,arguments)},fc=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt16Array___destroy___0.apply(null,arguments)},Za=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm.emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null, 48 | arguments)},gc=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},hc=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm.emscripten_bind_DracoFloat32Array_size_0.apply(null,arguments)},ic=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},$a=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm.emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null, 49 | arguments)},jc=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm.emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},ab=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm.emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},kc=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm.emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},lc=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm.emscripten_bind_DecoderBuffer___destroy___0.apply(null, 50 | arguments)},bb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm.emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},mc=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=function(){return a.asm.emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,arguments)},nc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm.emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,arguments)},oc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm.emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null, 51 | arguments)},pc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeId_2.apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetAttribute_2= 52 | function(){return a.asm.emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeByUniqueId_2.apply(null,arguments)},uc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm.emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm.emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null, 53 | arguments)},wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm.emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm.emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return a.asm.emscripten_bind_Decoder_GetTrianglesUInt16Array_3.apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3= 54 | function(){return a.asm.emscripten_bind_Decoder_GetTrianglesUInt32Array_3.apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeIntForAllPoints_3.apply(null, 55 | arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3.apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3.apply(null,arguments)},Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3.apply(null,arguments)}, 56 | Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3.apply(null,arguments)},Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3.apply(null,arguments)},Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return a.asm.emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3.apply(null,arguments)},Jc= 57 | a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return a.asm.emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5.apply(null,arguments)},Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm.emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,arguments)},Lc=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm.emscripten_bind_Decoder___destroy___0.apply(null,arguments)},cb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm.emscripten_bind_Mesh_Mesh_0.apply(null, 58 | arguments)},Mc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm.emscripten_bind_Mesh_num_faces_0.apply(null,arguments)},Nc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm.emscripten_bind_Mesh_num_attributes_0.apply(null,arguments)},Oc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm.emscripten_bind_Mesh_num_points_0.apply(null,arguments)},Pc=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm.emscripten_bind_Mesh___destroy___0.apply(null,arguments)}, 59 | Qc=a._emscripten_bind_VoidPtr___destroy___0=function(){return a.asm.emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},db=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm.emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,arguments)},Rc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm.emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},Sc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm.emscripten_bind_DracoInt32Array_size_0.apply(null, 60 | arguments)},Tc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm.emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},eb=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm.emscripten_bind_Metadata_Metadata_0.apply(null,arguments)},Uc=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm.emscripten_bind_Metadata___destroy___0.apply(null,arguments)},Vc=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm.emscripten_enum_draco_StatusCode_OK.apply(null, 61 | arguments)},Wc=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return a.asm.emscripten_enum_draco_StatusCode_DRACO_ERROR.apply(null,arguments)},Xc=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return a.asm.emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},Yc=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return a.asm.emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,arguments)},Zc=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION= 62 | function(){return a.asm.emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null,arguments)},$c=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm.emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},ad=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return a.asm.emscripten_enum_draco_DataType_DT_INVALID.apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INT8=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT8.apply(null, 63 | arguments)},cd=a._emscripten_enum_draco_DataType_DT_UINT8=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT8.apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_INT16=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT16.apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT16.apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT32.apply(null, 64 | arguments)},gd=a._emscripten_enum_draco_DataType_DT_UINT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT32.apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_INT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_INT64.apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_UINT64.apply(null,arguments)},jd=a._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return a.asm.emscripten_enum_draco_DataType_DT_FLOAT32.apply(null, 65 | arguments)},kd=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return a.asm.emscripten_enum_draco_DataType_DT_FLOAT64.apply(null,arguments)},ld=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return a.asm.emscripten_enum_draco_DataType_DT_BOOL.apply(null,arguments)},md=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return a.asm.emscripten_enum_draco_DataType_DT_TYPES_COUNT.apply(null,arguments)},nd=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null, 66 | arguments)},od=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},pd=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm.emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},qd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null, 67 | arguments)},rd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)},sd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},td=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return a.asm.emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null, 68 | arguments)},ud=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},vd=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},wd=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},xd=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR= 69 | function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},yd=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},zd=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm.emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)};a._setThrew=function(){return a.asm.setThrew.apply(null,arguments)};var ta=a.__ZSt18uncaught_exceptionv= 70 | function(){return a.asm._ZSt18uncaught_exceptionv.apply(null,arguments)};a._free=function(){return a.asm.free.apply(null,arguments)};var ib=a._malloc=function(){return a.asm.malloc.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};a.__growWasmMemory=function(){return a.asm.__growWasmMemory.apply(null,arguments)}; 71 | a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)}; 72 | a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_iidiiii=function(){return a.asm.dynCall_iidiiii.apply(null,arguments)};a.dynCall_jiji=function(){return a.asm.dynCall_jiji.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.asm=La;var fa;a.then=function(e){if(fa)e(a); 73 | else{var c=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){c&&c();e(a)}}return a};ja=function c(){fa||ma();fa||(ja=c)};a.run=ma;if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0=n.size?(t(0>=1;break;case 4:d>>=2;break;case 8:d>>=3}for(var c=0;c a::after, 126 | .play-game-link ::after { 127 | content: ''; 128 | position: absolute; 129 | top: -3px; 130 | left: -3px; 131 | width: calc(100% + 6px); 132 | height: calc(100% + 6px); 133 | border: 1px solid var(--color-background); 134 | } 135 | 136 | .side-nav li a svg { 137 | fill: var(--color-text); 138 | } 139 | 140 | .play-game-link { 141 | position: fixed; 142 | bottom: 50px; 143 | left: 30px; 144 | writing-mode: vertical-rl; 145 | transform: rotate(180deg); 146 | } 147 | 148 | .play-game-link svg { 149 | transform: rotate(90deg); 150 | fill: var(--color-text); 151 | } 152 | 153 | .side-nav li:hover > a, 154 | .side-nav li a:focus, 155 | .play-game-link:hover, 156 | .play-game-link:focus { 157 | opacity: 0.75; 158 | } 159 | 160 | .contact-menu { 161 | position: relative; 162 | margin-top: 24px; 163 | } 164 | 165 | .contact-menu__dropdown { 166 | position: absolute; 167 | bottom: 0; 168 | right: 56px; 169 | background-color: var(--color-background); 170 | border-radius: 8px; 171 | writing-mode: lr-tb; 172 | color: var(--color-text); 173 | padding: 20px; 174 | width: 300px; 175 | text-align: center; 176 | display: none; 177 | box-shadow: -2px 0 40px rgba(0, 0, 0, 0.1); 178 | } 179 | 180 | .contact-menu__dropdown--open { 181 | display: block; 182 | } 183 | 184 | .contact-menu__dropdown::before { 185 | content: ''; 186 | position: absolute; 187 | bottom: 24px; 188 | left: 100%; 189 | border: 10px solid transparent; 190 | border-left-color: var(--color-background); 191 | } 192 | 193 | .contact-menu__dropdown > svg { 194 | fill: var(--color-text); 195 | } 196 | 197 | .side-nav .contact-menu__dropdown a { 198 | padding: 0; 199 | transition: all ease 0.2s; 200 | } 201 | 202 | .side-nav .contact-menu__dropdown a:hover { 203 | opacity: 0.8; 204 | } 205 | 206 | .contact-menu__dropdown .seperator { 207 | display: flex; 208 | align-items: center; 209 | padding: 16px 0; 210 | } 211 | 212 | #contact-email { 213 | display: flex; 214 | justify-content: center; 215 | align-items: center; 216 | } 217 | 218 | #contact-email span { 219 | margin-right: 4px; 220 | } 221 | 222 | .seperator .line { 223 | flex-grow: 1; 224 | border-bottom: 1px solid #eee; 225 | } 226 | 227 | .seperator .text { 228 | padding: 0 8px; 229 | } 230 | 231 | .social-icons li + li { 232 | margin-left: 8px; 233 | } 234 | 235 | .social-icons li a { 236 | background-color: var(--color-background-icon); 237 | border-radius: 50%; 238 | width: 35px; 239 | height: 35px; 240 | display: flex; 241 | justify-content: center; 242 | align-items: center; 243 | } 244 | 245 | .social-icons li a svg { 246 | fill: var(--color-text); 247 | } 248 | 249 | .section--about { 250 | display: none; 251 | } 252 | 253 | #close-btn { 254 | position: fixed; 255 | bottom: 5%; 256 | left: calc(50% - 24px); 257 | fill: var(--color-text); 258 | } 259 | 260 | footer { 261 | position: fixed; 262 | bottom: 5px; 263 | left: 0; 264 | width: 100%; 265 | text-align: center; 266 | color: var(--color-text); 267 | font-size: 12px; 268 | } 269 | 270 | .cursor { 271 | width: 30px; 272 | height: 30px; 273 | margin-left: -15px; 274 | margin-top: -15px; 275 | border: 1px solid #fff; 276 | border-radius: 50%; 277 | z-index: 300; 278 | display: flex; 279 | justify-content: center; 280 | align-items: center; 281 | } 282 | 283 | .cursor-circle { 284 | width: 18px; 285 | height: 18px; 286 | background-color: #000; 287 | border-radius: 50%; 288 | } 289 | 290 | @media (max-width: 992px) { 291 | header { 292 | padding: 6px 12px; 293 | } 294 | 295 | #logo img { 296 | width: 50px; 297 | height: 50px; 298 | } 299 | 300 | .main-nav li a { 301 | padding: 6px 10px; 302 | } 303 | 304 | .side-nav { 305 | right: 22px; 306 | } 307 | 308 | footer { 309 | font-size: 10px; 310 | } 311 | } 312 | 313 | /* @media (prefers-color-scheme: light) { 314 | :root { 315 | color: #213547; 316 | background-color: #ffffff; 317 | } 318 | a:hover { 319 | color: #747bff; 320 | } 321 | button { 322 | background-color: #f9f9f9; 323 | } 324 | } */ 325 | 326 | .dg.ac { 327 | z-index: 100 !important; 328 | } 329 | 330 | /* Loader */ 331 | #loader-wrapper { 332 | position: fixed; 333 | top: 0; 334 | left: 0; 335 | width: 100%; 336 | height: 100%; 337 | z-index: 200; 338 | background-color: #fff; 339 | display: flex; 340 | align-items: center; 341 | justify-content: center; 342 | } 343 | 344 | .loader { 345 | width: 48px; 346 | height: 48px; 347 | margin: auto; 348 | position: relative; 349 | } 350 | 351 | .loader:before { 352 | content: ''; 353 | width: 48px; 354 | height: 5px; 355 | background: #f0808050; 356 | position: absolute; 357 | top: 60px; 358 | left: 0; 359 | border-radius: 50%; 360 | animation: shadow324 0.5s linear infinite; 361 | } 362 | 363 | .loader:after { 364 | content: ''; 365 | width: 100%; 366 | height: 100%; 367 | background: #f08080; 368 | position: absolute; 369 | top: 0; 370 | left: 0; 371 | border-radius: 4px; 372 | animation: jump7456 0.5s linear infinite; 373 | } 374 | 375 | @keyframes jump7456 { 376 | 15% { 377 | border-bottom-right-radius: 3px; 378 | } 379 | 380 | 25% { 381 | transform: translateY(9px) rotate(22.5deg); 382 | } 383 | 384 | 50% { 385 | transform: translateY(18px) scale(1, 0.9) rotate(45deg); 386 | border-bottom-right-radius: 40px; 387 | } 388 | 389 | 75% { 390 | transform: translateY(9px) rotate(67.5deg); 391 | } 392 | 393 | 100% { 394 | transform: translateY(0) rotate(90deg); 395 | } 396 | } 397 | 398 | @keyframes shadow324 { 399 | 0%, 400 | 100% { 401 | transform: scale(1, 1); 402 | } 403 | 404 | 50% { 405 | transform: scale(1.2, 1); 406 | } 407 | } 408 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | base: '/3d-portfolio/', 3 | }; 4 | --------------------------------------------------------------------------------