From 551faf2bb9d484f51a9b007b7c312dc8d0fe08ee Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 26 May 2025 06:52:22 -0300 Subject: [PATCH 01/10] .. --- .../MouseDefense/2025-05-26_06-12-32.wlp | 7935 ++++++++++++++++ .../MouseDefense/2025-05-26_06-23-12.wlp | 7936 +++++++++++++++++ .../MouseDefense/2025-05-26_06-33-52.wlp | 6604 ++++++++++++++ MouseDefense.wlp | 2469 ++--- js/bg-music.js | 60 +- js/game.js | 20 +- js/index.js | 19 +- js/joystick-movement.js | 302 +- js/mouse-mover.js | 188 +- js/mouse-spawner.js | 22 +- js/player-location.js | 16 +- models/Zombie.glb | Bin 0 -> 981672 bytes package-lock.json | 228 +- package.json | 33 +- 14 files changed, 23724 insertions(+), 2108 deletions(-) create mode 100644 .autosave/MouseDefense/2025-05-26_06-12-32.wlp create mode 100644 .autosave/MouseDefense/2025-05-26_06-23-12.wlp create mode 100644 .autosave/MouseDefense/2025-05-26_06-33-52.wlp create mode 100644 models/Zombie.glb diff --git a/.autosave/MouseDefense/2025-05-26_06-12-32.wlp b/.autosave/MouseDefense/2025-05-26_06-12-32.wlp new file mode 100644 index 0000000..9894818 --- /dev/null +++ b/.autosave/MouseDefense/2025-05-26_06-12-32.wlp @@ -0,0 +1,7935 @@ +{ + "objects": { + "14": { + "name": "Player", + "components": [ + { + "type": "bg-music" + }, + { + "type": "player-location" + }, + { + "type": "fixed-foveation", + "fixed-foveation": { + "fixedFoveation": 1.0 + } + } + ], + "translation": [ + 0.0, + 0.0, + 4.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 0.9999998, + 1.0, + 0.9999998 + ] + }, + "15": { + "name": "FloorPlane", + "components": [ + { + "type": "mesh", + "mesh": { + "mesh": "12", + "material": "540" + }, + "active": true + }, + { + "type": "collision", + "collision": { + "collider": "aabb", + "aabb": { + "extents": [ + 16.0, + -0.1, + 16.0 + ] + }, + "groups": 4 + }, + "active": true + } + ], + "translation": [ + 2.9769601, + 2.384185791015625e-7, + 2.0148322 + ], + "rotation": [ + -0.707264, + 0.0, + 0.0, + 0.7069494 + ], + "scaling": [ + 60.0, + 60.0000267, + 60.0000038 + ] + }, + "17": { + "name": "NonVrCamera", + "parent": "205", + "components": [ + { + "type": "view" + }, + { + "type": "wasd-controls-custom", + "wasd-controls-custom": { + "speed": 0.1, + "headObject": "14" + }, + "active": true + }, + { + "type": "mouse-look-custom", + "mouse-look-custom": { + "pointerLockOnClick": true, + "requireMouseDown": false, + "bulletMesh": "9", + "bulletMaterial": "20", + "bulletSpeed": 5.0 + } + } + ], + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] + }, + "18": { + "name": "EyeLeft", + "parent": "205", + "components": [ + { + "type": "view" + }, + { + "type": "input", + "input": { + "type": "eye left" + } + }, + { + "type": "howler-audio-listener" + } + ], + "translation": [ + 0.0, + 0.0, + -2.384185791015625e-7 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] + }, + "19": { + "name": "EyeRight", + "parent": "205", + "components": [ + { + "type": "view" + }, + { + "type": "input", + "input": { + "type": "eye right" + } + } + ], + "translation": [ + 0.0, + 0.0, + -2.384185791015625e-7 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] + }, + "21": { + "name": "Sunlight", + "components": [ + { + "type": "light", + "light": { + "type": "sun", + "color": [ + 1.0, + 0.8839215, + 0.4196078 + ], + "shadows": true, + "cascadeCount": 3, + "shadowRange": 50.0, + "intensity": 1.0 + } + } + ], + "parent": "501", + "translation": [ + -0.0000013, + 3.0000147, + 8.8421812 + ], + "rotation": [ + 0.2330272, + -0.2990215, + 0.1749209, + 0.9086732 + ], + "scaling": [ + 0.9999998, + 0.9999994, + 0.9999992 + ] + }, + "53": { + "link": { + "name": "root", + "file": "models\\oculus-touch-v2-left.glb" + }, + "parent": "130", + "name": "ControllerModelLeft", + "translation": [ + -0.0117514, + 0.0008869, + 0.0161192 + ], + "rotation": [ + -0.0, + 0.7316615, + 0.6816681, + 3.196286257889369e-8 + ], + "scaling": [ + 0.9999998, + 0.9999998, + 0.9999997 + ] + }, + "54": { + "link": { + "name": "controller 0.1) dir[2] = 1; +// if (x > 0.1) angle = -this.turnAngle; +// else if (x < -0.1) angle = this.turnAngle; + +// if (Math.abs(y) > Math.abs(x)) { +// vec3.normalize(dir, dir); +// vec3.scale(dir, dir, this.moveSpeed * dt); +// vec3.transformQuat(dir, dir, this.headObject.transformWorld); +// this.headObject.translate(dir); +// } else if (Math.abs(x) > 0.1) { +// this.headObject.rotateAxisAngleDegObject([0, 1, 0], angle * dt); +// } +// } + +// // Gravity +// const pos = this.headObject.getTranslationWorld(); +// if (pos[1] > 0) this.velocity[1] -= this.gravity * dt; + +// // Apply velocity +// const deltaV = vec3.clone(this.velocity); +// vec3.scale(deltaV, deltaV, dt); +// this.headObject.translate(deltaV); + +// // Ground clamp +// const newPos = this.headObject.getTranslationWorld(); +// if (newPos[1] < 0) { +// newPos[1] = 0; +// this.headObject.setTranslationWorld(newPos); +// this.velocity[1] = 0; +// } + +// // Friction horizontal +// this.velocity[0] *= this.friction; +// this.velocity[2] *= this.friction; +// } + +// setupVREvents(session) { +// this.session = session; +// session.addEventListener('end', () => { this.gamepadLeft = null; this.session = null; }); +// for (const src of session.inputSources || []) if (src.handedness === 'left') this.gamepadLeft = src.gamepad; +// session.addEventListener('inputsourceschange', e => { +// for (const src of e.added || []) if (src.handedness === 'left') this.gamepadLeft = src.gamepad; +// }); +// session.addEventListener('selectstart', this.onTriggerDown.bind(this)); +// } + +// onTriggerDown(event) { +// const src = event.inputSource; +// if (src.handedness !== 'left' || !this.gamepadLeft) return; +// const now = Date.now(); +// if (now - this.lastBlowTime < 300) return; + +// // Retrieve original cursor-based forward +// if (!this.cursorObject) return; +// const cursor = this.cursorObject.getComponent('cursor'); +// if (!cursor) return; +// const rayObj = cursor.cursorRayObject || cursor.object; +// const dir = vec3.create(); +// rayObj.getForward(dir); + +// // Add impulse opposite direction +// vec3.normalize(dir, dir); +// vec3.scale(dir, dir, -this.blowForce); +// vec3.add(this.velocity, this.velocity, dir); +// this.lastBlowTime = now; +// } +// } + import { Component, Type } from "@wonderlandengine/api"; import { vec3 } from "gl-matrix"; + /** - * Basic movement with W/A/S/D keys. + * Basic movement with W/A/S/D keys and VR 'leafblower' push on trigger (left hand). + * Fluid push with acceleration/deceleration, ground and gravity constraints. + * Directional impulse follows cursor forward vector in any direction (including up/down). */ export class JoystickMovement extends Component { static TypeName = "joystick-movement"; static Properties = { - /** Movement speed in m/s. */ - moveSpeed: { type: Type.Float, default: 0.1 }, - turnAngle: { type: Type.Float, default: 30.0 }, - /** Object of which the orientation is used to determine forward direction */ - headObject: { type: Type.Object } + moveSpeed: { type: Type.Float, default: 0.1 }, // speed for joystick movement + turnAngle: { type: Type.Float, default: 30.0 }, // turning speed deg/s + headObject: { type: Type.Object }, // object to move/rotate + blowForce: { type: Type.Float, default: 5.0 }, // impulse magnitude (m/s) + friction: { type: Type.Float, default: 0.8 }, // horizontal damping [0-1] + gravity: { type: Type.Float, default: 9.81 }, // gravity m/s² + cursorObject: { type: Type.Object } // object containing `cursor` component } init() { - this.lastTurnTime = 0; - this.anglePerTurn = 30; - this.turnIntervalTime = 100; - - this.up = false; - this.right = false; - this.down = false; - this.left = false; + this.lastTime = Date.now(); + this.velocity = vec3.fromValues(0, 0, 0); // current velocity in m/s + this.gamepadLeft = null; + this.session = null; + this.lastBlowTime = 0; } start() { @@ -42,82 +145,91 @@ export class JoystickMovement extends Component { } update() { - if (this.gamepad && this.gamepad.axes) { - // x-axis (right is positive) - let currentTime = Date.now(); - let lastTurnTimeGap = Math.abs(currentTime - this.lastTurnTime); - - this.left = false; - this.right = false; - if (this.gamepad.axes[2] > 0) { - this.left = true; - } else if (this.gamepad.axes[2] < 0) { - this.right = true; - } + const now = Date.now(); + const dt = (now - this.lastTime) / 1000; // convert ms to seconds + this.lastTime = now; + // Joystick: forward/back movement and rotation + if (this.gamepadLeft?.axes) { + const x = this.gamepadLeft.axes[2]; + const y = this.gamepadLeft.axes[3]; + let dir = vec3.fromValues(0, 0, 0); + let angle = 0; + + // determine desired direction + if (y < -0.1) dir[2] = -1; + else if (y > 0.1) dir[2] = 1; + if (x > 0.1) angle = -this.turnAngle; + else if (x < -0.1) angle = this.turnAngle; - // y-axis (up is negative) - this.up = false; - this.down = false; - if (this.gamepad.axes[3] > 0) { - this.down = true; - } else if (this.gamepad.axes[3] < 0) { - this.up = true; + // move or turn + if (Math.abs(y) > Math.abs(x)) { + vec3.normalize(dir, dir); + vec3.scale(dir, dir, this.moveSpeed * dt); + vec3.transformQuat(dir, dir, this.headObject.transformWorld); + this.headObject.translate(dir); + } else if (Math.abs(x) > 0.1) { + this.headObject.rotateAxisAngleDegObject([0,1,0], angle * dt); } + } - let direction = [0, 0, 0]; - let angle = 0; + // apply gravity to vertical velocity + const worldPos = this.headObject.getTranslationWorld(); + if (worldPos[1] > 0) { + this.velocity[1] -= this.gravity * dt; + } - if (this.up) direction[2] -= 1.0; - if (this.down) direction[2] += 1.0; - if (this.left) angle = -this.anglePerTurn; - if (this.right) angle = this.anglePerTurn; - - let xStrength = Math.abs(this.gamepad.axes[2]); - let yStrength = Math.abs(this.gamepad.axes[3]); - - if (yStrength > xStrength) { - vec3.normalize(direction, direction); - direction[2] *= this.moveSpeed; - vec3.transformQuat(direction, direction, this.headObject.transformWorld); - this.headObject.translate(direction); - } else if (lastTurnTimeGap > this.turnIntervalTime) { - this.headObject.rotateAxisAngleDegObject([0, 1, 0], angle); - this.lastTurnTime = currentTime; - } + // apply velocity movement + const delta = vec3.clone(this.velocity); + vec3.scale(delta, delta, dt); + this.headObject.translate(delta); + + // ground clamp + const newPos = this.headObject.getTranslationWorld(); + if (newPos[1] < 0) { + newPos[1] = 0; + this.headObject.setTranslationWorld(newPos); + this.velocity[1] = 0; } + + // horizontal friction + this.velocity[0] *= this.friction; + this.velocity[2] *= this.friction; } - setupVREvents(s) { - /* If in VR, one-time bind the listener */ - this.session = s; - - s.addEventListener('end', function () { - /* Reset cache once the session ends to rebind select etc, in case - * it starts again */ - this.gamepad = null; - this.session = null; - }.bind(this)); - - if (s.inputSources && s.inputSources.length) { - for (let i = 0; i < s.inputSources.length; i++) { - let inputSource = s.inputSources[i]; - - if (inputSource.handedness == "left") { - this.gamepad = inputSource.gamepad; - } - } - } - s.addEventListener('inputsourceschange', function (e) { - if (e.added && e.added.length) { - for (let i = 0; i < e.added.length; i++) { - let inputSource = e.added[i]; - if (inputSource.handedness == "left") { - this.gamepad = inputSource.gamepad; - console.log("left gamepad added"); - } - } + setupVREvents(session) { + this.session = session; + session.addEventListener('end', () => { this.gamepadLeft = null; this.session = null; }); + for (const src of session.inputSources || []) { + if (src.handedness === 'left') this.gamepadLeft = src.gamepad; + } + session.addEventListener('inputsourceschange', e => { + for (const src of e.added || []) { + if (src.handedness === 'left') this.gamepadLeft = src.gamepad; } - }.bind(this)); + }); + session.addEventListener('selectstart', this.onTriggerDown.bind(this)); + } + + onTriggerDown(event) { + const src = event.inputSource; + if (src.handedness !== 'left' || !this.gamepadLeft) return; + const now = Date.now(); + if (now - this.lastBlowTime < 300) return; + + // get cursor forward (including y) for fluid directional impulse + if (!this.cursorObject) return; + const cursor = this.cursorObject.getComponent('cursor'); + if (!cursor) return; + const rayObj = cursor.cursorRayObject || cursor.object; + const dir = vec3.create(); + rayObj.getForward(dir); + + vec3.normalize(dir, dir); + // add impulse opposite to pointing direction + vec3.scale(dir, dir, -this.blowForce); + vec3.add(this.velocity, this.velocity, dir); + + this.lastBlowTime = now; } -}; \ No newline at end of file +} diff --git a/js/mouse-mover.js b/js/mouse-mover.js index 467e1d0..85c148f 100644 --- a/js/mouse-mover.js +++ b/js/mouse-mover.js @@ -15,165 +15,63 @@ import { vec3 } from "gl-matrix"; import { state } from "./game"; /** -@brief Moves and rotates the mice in random directions at set intervals. +@brief Moves the mouse directly towards the player each frame. */ - - export class MouseMover extends Component { - static TypeName = "mouse-mover"; static Properties = { - speed: { type: Type.Float, default: 1.0 }, + speed: { type: Type.Float, default: 1.5 }, }; - time = 0; - currentPos = [0, 0, 0]; - pointA = [0, 0, 0]; - pointB = [0, 0, 0]; - moveDuration = 2; - - savedAngle = 0; - previousAngle = 0; - newAngle = 0 - init() { - this.object.getPositionLocal(this.currentPos); - - this.rotateMoveRatio = 2; - this.moveDuration = (Math.random() * 0.7) + 1.3; - this.time = this.moveDuration / this.rotateMoveRatio; - this.speed = 1.5; - this.travelDistance = this.moveDuration * this.speed; - - vec3.add(this.pointA, this.pointA, this.currentPos); - vec3.add(this.pointB, this.currentPos, [0, 0, 1.5]); - - this.speedLevel1 = true; - this.speedLevel2 = true; - this.speedLevel3 = true; - - - this.minDistanceFromPlayer = 7; - - state.updateMoveDuration = function (firstShot = false) { - let targetsLeft = state.score / state.maxTargets; - if (firstShot) { - this.moveDuration *= 0.3; - this.rotateMoveRatio++; - } else if (targetsLeft > 0.2 && this.speedLevel1) { - this.moveDuration *= 0.5; - this.rotateMoveRatio++; - this.speedLevel1 = false; - } else if (targetsLeft > 0.5 && this.speedLevel2) { - this.moveDuration *= 0.7; - this.rotateMoveRatio++; - this.speedLevel2 = false; - } else if (targetsLeft > 0.8 && this.speedLevel3) { - this.moveDuration *= 0.7; - this.rotateMoveRatio++; - this.speedLevel3 = false; - } - }.bind(this); + // nothing needed here for direct follow } + update(dt) { if (isNaN(dt)) return; + if(state.gameOver || state.paused) return; // skip if game is over or paused - // increment time on movement cycle - this.time += dt; - - // get new angle and move location only when movement cycle is complete - if (this.time >= this.moveDuration) { - this.time = 0; - - this.pointA = this.currentPos; + // get current and player positions + const currentPos = vec3.create(); + this.object.getPositionLocal(currentPos); + const playerPos = state.getPlayerLocation(); - // new position will always be the hypotenuse of x and z triangle - let x = Math.random() * this.travelDistance; - let z = Math.abs(Math.sqrt(Math.pow(this.travelDistance, 2) - Math.pow(x, 2))); - let playerLocation = [0, 0, 0] - playerLocation = state.getPlayerLocation(); - let xNegBoundary = this.pointA[0] < -8; - let xPosBoundary = this.pointA[0] > 13; - let yNegBoundary = this.pointA[2] < -8; - let yPosBoundary = this.pointA[2] > 12; - - // keep mice within farm fence - if (xNegBoundary || xPosBoundary || yNegBoundary || yPosBoundary) { - if (xPosBoundary) { - x *= -1; - } - if (yPosBoundary) { - z *= -1; - } - // move away from player if too close - } else if (this.isPlayerClose()) { - if (this.pointA[0] < playerLocation[0]) { - x *= -1; - } - if (this.pointA[2] < playerLocation[2]) { - z *= -1; - } - // otherwise move in random direction - } else { - const randomNegative1 = Math.round(Math.random()) * 2 - 1; - const randomNegative2 = Math.round(Math.random()) * 2 - 1; - x *= randomNegative1 - z *= randomNegative2; - } - - vec3.add(this.pointB, this.pointA, [x, 0, z]); - - this.newAngle = Math.floor(Math.random() * 180); - this.previousAngle = this.savedAngle; + // Se a current position is close enough to the player position, set state.gameOver to true + if (vec3.dist(currentPos, playerPos) < 0.1 && !this.gameOver) { + console.log("Mouse reached player, game over"); + state.loseGame(); + return; // stop moving if close enough } - this.object.resetPosition(); - let rotateTime = this.moveDuration / this.rotateMoveRatio; - let moveTime = this.time - this.moveDuration / this.rotateMoveRatio; - // rotation phase - if (this.time < rotateTime) { - this.object.resetRotation(); - this.savedAngle = (this.time * this.newAngle) + this.previousAngle; - this.object.rotateAxisAngleDegLocal([0, 0, 1], this.savedAngle); - this.object.rotateAxisAngleDegLocal([1, 0, 0], 90); - } - // linear interpolation between old and new position - else { - vec3.lerp(this.currentPos, this.pointA, this.pointB, moveTime); - } - // movement phase - this.object.translateLocal(this.currentPos); - } - // check if player is too close - isPlayerClose() { - let distanceFromPlayer = vec3.dist(this.pointA, state.getPlayerLocation()); - if (distanceFromPlayer < this.minDistanceFromPlayer) { - return true; - } else { - return false; - } - } - // Check if player is too close and run away. Puts update() into "runAwayNow" mode. - runFromPlayer(playerLocation) { - if (this.isPlayerClose()) { - - this.pointA = this.currentPos; - - let x = Math.random() * this.travelDistance; - let z = Math.abs(Math.sqrt(Math.pow(this.travelDistance, 2) - Math.pow(x, 2))); - - if (this.pointA[0] < playerLocation[0]) { - x *= -1; - } - if (this.pointA[2] < playerLocation[2]) { - z *= -1; - } - - vec3.add(this.pointB, this.pointA, [x, 0, z]); - // increment time to bypass rotate phase - this.time = this.moveDuration / this.rotateMoveRatio; - } + // compute direction vector in XZ plane + const dir = vec3.fromValues( + playerPos[0] - currentPos[0], + 0, + playerPos[2] - currentPos[2] + ); + if (vec3.len(dir) < 0.01) return; // already at player + vec3.normalize(dir, dir); + + // move towards player + const moveVec = vec3.scale(vec3.create(), dir, this.speed * dt); + // update position + vec3.add(currentPos, currentPos, moveVec); + this.object.setPositionLocal(currentPos); + // ensure Y position is at floor height + currentPos[1] = state.floorHeight; + this.object.setPositionLocal(currentPos); + // update the object position again to ensure Y is set + this.object.setPositionLocal(currentPos); + // update the collider position + this.object.getComponent("collision").setPositionLocal(currentPos); + // ensure the collider is at the correct height + this.object.getComponent("collision").setHeight(state.floorHeight); + + // rotate to face the player (Y-axis rotation) + const angleDeg = Math.atan2(dir[0], dir[2]) * (180 / Math.PI); + this.object.resetRotation(); + this.object.rotateAxisAngleDegLocal([0, 1, 0], angleDeg); } -}; +} diff --git a/js/mouse-spawner.js b/js/mouse-spawner.js index be74485..c208d2e 100644 --- a/js/mouse-spawner.js +++ b/js/mouse-spawner.js @@ -59,11 +59,11 @@ export class MouseSpawner extends Component { start() { state.mouseSpawner = this; - state.mouseSound = this.object.addComponent(HowlerAudioSource, { - src: "sfx/critter-40645.mp3", - loop: true, - volume: 1.0, - }); + // state.mouseSound = this.object.addComponent(HowlerAudioSource, { + // src: "sfx/critter-40645.mp3", + // loop: true, + // volume: 1.0, + // }); state.maxTargets = this.maxTargets; state.updateScore(`Eliminate all ${state.maxTargets} rats.`); @@ -97,13 +97,17 @@ export class MouseSpawner extends Component { const obj = this.engine.scene.addObject(); obj.setTransformLocal(this.object.getTransformWorld(tempQuat2)); - obj.scaleLocal([0.1, 0.1, 0.1]); + // Adjust scale to be more reasonable for collision detection + obj.scaleLocal([1, 1, 1]); const mesh = obj.addComponent('mesh'); mesh.mesh = this.targetMesh; mesh.material = this.targetMaterial; mesh.active = true; obj.addComponent(MouseMover); + // Rotate the model to be right side up + obj.rotateAxisAngleDegLocal([1, 0, 0], 180); + if (this.spawnAnimation) { const anim = obj.addComponent("animation"); anim.playCount = 1; @@ -116,12 +120,12 @@ export class MouseSpawner extends Component { const trigger = this.engine.scene.addObject(obj); trigger.addComponent("collision", { collider: WL.Collider.Sphere, - extents: [0.6, 0, 0], + extents: [1.5, 1.5, 1.5], // Increased collision extents to match new scale group: 1 << 0, active: true, }); - trigger.translateLocal([0, 0.7, 0]); + trigger.translateLocal([0, 1, 0]); // Adjusted height for new scale trigger.addComponent(ScoreTrigger, { particles: this.particles }); @@ -130,6 +134,6 @@ export class MouseSpawner extends Component { state.targetsSpawned++; this.targets.push(obj); - state.mouseSound.play(); + // state.mouseSound.play(); } }; diff --git a/js/player-location.js b/js/player-location.js index 74a5c68..6b40dd7 100644 --- a/js/player-location.js +++ b/js/player-location.js @@ -41,14 +41,14 @@ export class PlayerLocation extends Component { let locationDistance = vec3.dist(currentLocation, this.playerLocation); if (locationDistance != 0) { this.playerLocation = currentLocation; - try { - for (let i = 0; i < state.mouseSpawner.targets.length; i++) { - let mouseMoverComponent = state.mouseSpawner.targets[i].getComponent(MouseMover); - mouseMoverComponent.runFromPlayer(currentLocation);; - } - } catch (e) { - console.log("player-location >> get mouse >> ", e); - } + // try { + // for (let i = 0; i < state.mouseSpawner.targets.length; i++) { + // let mouseMoverComponent = state.mouseSpawner.targets[i].getComponent(MouseMover); + // // mouseMoverComponent.runFromPlayer(currentLocation);; + // } + // } catch (e) { + // console.log("player-location >> get mouse >> ", e); + // } } } }; diff --git a/models/Zombie.glb b/models/Zombie.glb new file mode 100644 index 0000000000000000000000000000000000000000..573a7109aec1e5e05f8a2aac7d3e3460d1eb6f62 GIT binary patch literal 981672 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�<3eOx=Y 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 z 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çgF)}G%y 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ð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�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ֺ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 +var failedPermissionOverlay = ` + + +
+
Failed to grant permissions. Reset the the permissions and refresh the page.
+ + +
`; +var runtimeErrorOverlay = ` + + +
+
Error has occurred. Please reload the page
+ + +
`; + +// node_modules/@wonderlandengine/components/dist/utils/webxr.js +var tempVec = new Float32Array(3); +var tempQuat = new Float32Array(4); +function setXRRigidTransformLocal(o, transform) { + const r = transform.orientation; + tempQuat[0] = r.x; + tempQuat[1] = r.y; + tempQuat[2] = r.z; + tempQuat[3] = r.w; + const t = transform.position; + tempVec[0] = t.x; + tempVec[1] = t.y; + tempVec[2] = t.z; + o.resetTranslationRotation(); + o.transformLocal.set(tempQuat); + o.translate(tempVec); +} + +// node_modules/@wonderlandengine/components/dist/anchor.js +var __decorate = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var tempVec3 = new Float32Array(3); +var tempQuat2 = new Float32Array(4); +var _anchors, _addAnchor, addAnchor_fn, _removeAnchor, removeAnchor_fn, _getFrame, getFrame_fn, _createAnchor, createAnchor_fn, _onAddAnchor, onAddAnchor_fn, _onRestoreAnchor, onRestoreAnchor_fn, _onCreate, onCreate_fn; +var _Anchor = class extends Component3 { + constructor() { + super(...arguments); + __privateAdd(this, _getFrame); + __privateAdd(this, _createAnchor); + __privateAdd(this, _onAddAnchor); + __privateAdd(this, _onRestoreAnchor); + __privateAdd(this, _onCreate); + __publicField(this, "persist", false); + /** Unique identifier to load a persistent anchor from, or empty/null if unknown */ + __publicField(this, "uuid", null); + /** The xrAnchor, if created */ + __publicField(this, "xrAnchor", null); + /** Emits events when the anchor is created either by being restored or newly created */ + __publicField(this, "onCreate", new Emitter()); + /** Whether the anchor is currently being tracked */ + __publicField(this, "visible", false); + /** Emits an event when this anchor starts tracking */ + __publicField(this, "onTrackingFound", new Emitter()); + /** Emits an event when this anchor stops tracking */ + __publicField(this, "onTrackingLost", new Emitter()); + /** XRFrame to use for creating the anchor */ + __publicField(this, "xrFrame", null); + /** XRHitTestResult to use for creating the anchor */ + __publicField(this, "xrHitResult", null); + } + /** Retrieve all anchors of the current scene */ + static getAllAnchors() { + return __privateGet(_Anchor, _anchors); + } + /** + * Create a new anchor + * + * @param o Object to attach the component to + * @param params Parameters for the anchor component + * @param frame XRFrame to use for anchor cration, if null, will use the current frame if available + * @param hitResult Optional hit-test result to create the anchor with + * @returns Promise for the newly created anchor component + */ + static create(o, params, frame, hitResult) { + const a = o.addComponent(_Anchor, { ...params, active: false }); + if (a === null) + return null; + a.xrHitResult = hitResult ?? null; + a.xrFrame = frame ?? null; + a.onCreate.once(() => (a.xrFrame = null, a.xrHitResult = null)); + a.active = true; + return a.onCreate.promise(); + } + start() { + if (this.uuid && this.engine.xr) { + this.persist = true; + if (this.engine.xr.session.restorePersistentAnchor === void 0) { + console.warn("anchor: Persistent anchors are not supported by your client. Ignoring persist property."); + } + this.engine.xr.session.restorePersistentAnchor(this.uuid).then(__privateMethod(this, _onRestoreAnchor, onRestoreAnchor_fn).bind(this)); + } else if (__privateMethod(this, _getFrame, getFrame_fn).call(this)) { + __privateMethod(this, _createAnchor, createAnchor_fn).call(this).then(__privateMethod(this, _onAddAnchor, onAddAnchor_fn).bind(this)); + } else { + throw new Error("Anchors can only be created during the XR frame in an active XR session"); + } + } + update() { + if (!this.xrAnchor || !this.engine.xr) + return; + const pose = this.engine.xr.frame.getPose(this.xrAnchor.anchorSpace, this.engine.xr.currentReferenceSpace); + const visible = !!pose; + if (visible != this.visible) { + this.visible = visible; + (visible ? this.onTrackingFound : this.onTrackingLost).notify(this); + } + if (pose) { + setXRRigidTransformLocal(this.object, pose.transform); + } + } + onDestroy() { + var _a12; + __privateMethod(_a12 = _Anchor, _removeAnchor, removeAnchor_fn).call(_a12, this); + } +}; +var Anchor = _Anchor; +_anchors = new WeakMap(); +_addAnchor = new WeakSet(); +addAnchor_fn = function(anchor) { + __privateGet(_Anchor, _anchors).push(anchor); +}; +_removeAnchor = new WeakSet(); +removeAnchor_fn = function(anchor) { + const index = __privateGet(_Anchor, _anchors).indexOf(anchor); + if (index < 0) + return; + __privateGet(_Anchor, _anchors).splice(index, 1); +}; +_getFrame = new WeakSet(); +getFrame_fn = function() { + return this.xrFrame || this.engine.xr.frame; +}; +_createAnchor = new WeakSet(); +createAnchor_fn = async function() { + if (!__privateMethod(this, _getFrame, getFrame_fn).call(this).createAnchor) { + throw new Error("Cannot create anchor - anchors not supported, did you enable the 'anchors' WebXR feature?"); + } + if (this.xrHitResult) { + if (this.xrHitResult.createAnchor === void 0) { + throw new Error("Requested anchor on XRHitTestResult, but WebXR hit-test feature is not available."); + } + return this.xrHitResult.createAnchor(); + } else { + this.object.getTranslationWorld(tempVec3); + tempQuat2.set(this.object.rotationWorld); + const rotation = tempQuat2; + const anchorPose = new XRRigidTransform({ x: tempVec3[0], y: tempVec3[1], z: tempVec3[2] }, { x: rotation[0], y: rotation[1], z: rotation[2], w: rotation[3] }); + return __privateMethod(this, _getFrame, getFrame_fn).call(this)?.createAnchor(anchorPose, this.engine.xr.currentReferenceSpace); + } +}; +_onAddAnchor = new WeakSet(); +onAddAnchor_fn = function(anchor) { + if (!anchor) + return; + if (this.persist) { + if (anchor.requestPersistentHandle !== void 0) { + anchor.requestPersistentHandle().then((uuid) => { + var _a12; + this.uuid = uuid; + __privateMethod(this, _onCreate, onCreate_fn).call(this, anchor); + __privateMethod(_a12 = _Anchor, _addAnchor, addAnchor_fn).call(_a12, this); + }); + return; + } else { + console.warn("anchor: Persistent anchors are not supported by your client. Ignoring persist property."); + } + } + __privateMethod(this, _onCreate, onCreate_fn).call(this, anchor); +}; +_onRestoreAnchor = new WeakSet(); +onRestoreAnchor_fn = function(anchor) { + __privateMethod(this, _onCreate, onCreate_fn).call(this, anchor); +}; +_onCreate = new WeakSet(); +onCreate_fn = function(anchor) { + this.xrAnchor = anchor; + this.onCreate.notify(this); +}; +__privateAdd(Anchor, _addAnchor); +__privateAdd(Anchor, _removeAnchor); +__publicField(Anchor, "TypeName", "anchor"); +/* Static management of all anchors */ +__privateAdd(Anchor, _anchors, []); +__decorate([ + property.bool(false) +], Anchor.prototype, "persist", void 0); +__decorate([ + property.string() +], Anchor.prototype, "uuid", void 0); + +// node_modules/@wonderlandengine/components/dist/cursor-target.js +var CursorTarget = class extends Component3 { + /** Emitter for events when the target is hovered */ + onHover = new Emitter(); + /** Emitter for events when the target is unhovered */ + onUnhover = new Emitter(); + /** Emitter for events when the target is clicked */ + onClick = new Emitter(); + /** Emitter for events when the cursor moves on the target */ + onMove = new Emitter(); + /** Emitter for events when the user pressed the select button on the target */ + onDown = new Emitter(); + /** Emitter for events when the user unpressed the select button on the target */ + onUp = new Emitter(); + /** + * @deprecated Use the emitter instead. + * + * @example + * this.onHover.add(f); + */ + addHoverFunction(f) { + this.onHover.add(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * this.onHover.remove(f); + */ + removeHoverFunction(f) { + this.onHover.remove(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * this.onUnhover.add(f); + */ + addUnHoverFunction(f) { + this.onUnhover.add(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * this.onUnhover.remove(f); + */ + removeUnHoverFunction(f) { + this.onUnhover.remove(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * this.onClick.add(f); + */ + addClickFunction(f) { + this.onClick.add(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onClick.remove(f); + */ + removeClickFunction(f) { + this.onClick.remove(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onMove.add(f); + */ + addMoveFunction(f) { + this.onMove.add(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onMove.remove(f); + */ + removeMoveFunction(f) { + this.onMove.remove(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onDown.add(f); + */ + addDownFunction(f) { + this.onDown.add(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onDown.remove(f); + */ + removeDownFunction(f) { + this.onDown.remove(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onUp.add(f); + */ + addUpFunction(f) { + this.onUp.add(f); + } + /** + * @deprecated Use the emitter instead. + * + * @example + * component.onUp.remove(f); + */ + removeUpFunction(f) { + this.onUp.remove(f); + } +}; +__publicField(CursorTarget, "TypeName", "cursor-target"); +__publicField(CursorTarget, "Properties", {}); + +// node_modules/gl-matrix/esm/common.js +var EPSILON = 1e-6; +var ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array; +var RANDOM = Math.random; +var degree = Math.PI / 180; +if (!Math.hypot) + Math.hypot = function() { + var y = 0, i = arguments.length; + while (i--) { + y += arguments[i] * arguments[i]; + } + return Math.sqrt(y); + }; + +// node_modules/gl-matrix/esm/mat3.js +function create() { + var out = new ARRAY_TYPE(9); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[5] = 0; + out[6] = 0; + out[7] = 0; + } + out[0] = 1; + out[4] = 1; + out[8] = 1; + return out; +} + +// node_modules/gl-matrix/esm/mat4.js +var mat4_exports = {}; +__export(mat4_exports, { + add: () => add, + adjoint: () => adjoint, + clone: () => clone, + copy: () => copy, + create: () => create2, + determinant: () => determinant, + equals: () => equals, + exactEquals: () => exactEquals, + frob: () => frob, + fromQuat: () => fromQuat, + fromQuat2: () => fromQuat2, + fromRotation: () => fromRotation, + fromRotationTranslation: () => fromRotationTranslation, + fromRotationTranslationScale: () => fromRotationTranslationScale, + fromRotationTranslationScaleOrigin: () => fromRotationTranslationScaleOrigin, + fromScaling: () => fromScaling, + fromTranslation: () => fromTranslation, + fromValues: () => fromValues, + fromXRotation: () => fromXRotation, + fromYRotation: () => fromYRotation, + fromZRotation: () => fromZRotation, + frustum: () => frustum, + getRotation: () => getRotation, + getScaling: () => getScaling, + getTranslation: () => getTranslation, + identity: () => identity, + invert: () => invert, + lookAt: () => lookAt, + mul: () => mul, + multiply: () => multiply, + multiplyScalar: () => multiplyScalar, + multiplyScalarAndAdd: () => multiplyScalarAndAdd, + ortho: () => ortho, + orthoNO: () => orthoNO, + orthoZO: () => orthoZO, + perspective: () => perspective, + perspectiveFromFieldOfView: () => perspectiveFromFieldOfView, + perspectiveNO: () => perspectiveNO, + perspectiveZO: () => perspectiveZO, + rotate: () => rotate, + rotateX: () => rotateX, + rotateY: () => rotateY, + rotateZ: () => rotateZ, + scale: () => scale, + set: () => set, + str: () => str, + sub: () => sub, + subtract: () => subtract, + targetTo: () => targetTo, + translate: () => translate, + transpose: () => transpose +}); +function create2() { + var out = new ARRAY_TYPE(16); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + } + out[0] = 1; + out[5] = 1; + out[10] = 1; + out[15] = 1; + return out; +} +function clone(a) { + var out = new ARRAY_TYPE(16); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +} +function copy(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +} +function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + var out = new ARRAY_TYPE(16); + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m03; + out[4] = m10; + out[5] = m11; + out[6] = m12; + out[7] = m13; + out[8] = m20; + out[9] = m21; + out[10] = m22; + out[11] = m23; + out[12] = m30; + out[13] = m31; + out[14] = m32; + out[15] = m33; + return out; +} +function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m03; + out[4] = m10; + out[5] = m11; + out[6] = m12; + out[7] = m13; + out[8] = m20; + out[9] = m21; + out[10] = m22; + out[11] = m23; + out[12] = m30; + out[13] = m31; + out[14] = m32; + out[15] = m33; + return out; +} +function identity(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function transpose(out, a) { + if (out === a) { + var a01 = a[1], a02 = a[2], a03 = a[3]; + var a12 = a[6], a13 = a[7]; + var a23 = a[11]; + out[1] = a[4]; + out[2] = a[8]; + out[3] = a[12]; + out[4] = a01; + out[6] = a[9]; + out[7] = a[13]; + out[8] = a02; + out[9] = a12; + out[11] = a[14]; + out[12] = a03; + out[13] = a13; + out[14] = a23; + } else { + out[0] = a[0]; + out[1] = a[4]; + out[2] = a[8]; + out[3] = a[12]; + out[4] = a[1]; + out[5] = a[5]; + out[6] = a[9]; + out[7] = a[13]; + out[8] = a[2]; + out[9] = a[6]; + out[10] = a[10]; + out[11] = a[14]; + out[12] = a[3]; + out[13] = a[7]; + out[14] = a[11]; + out[15] = a[15]; + } + return out; +} +function invert(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1 / det; + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return out; +} +function adjoint(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22); + out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); + out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12); + out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); + out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); + out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22); + out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); + out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12); + out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21); + out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); + out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11); + out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); + out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); + out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21); + out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); + out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11); + return out; +} +function determinant(a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; +} +function multiply(out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + return out; +} +function translate(out, a, v) { + var x = v[0], y = v[1], z = v[2]; + var a00, a01, a02, a03; + var a10, a11, a12, a13; + var a20, a21, a22, a23; + if (a === out) { + out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; + out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; + out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; + out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; + } else { + a00 = a[0]; + a01 = a[1]; + a02 = a[2]; + a03 = a[3]; + a10 = a[4]; + a11 = a[5]; + a12 = a[6]; + a13 = a[7]; + a20 = a[8]; + a21 = a[9]; + a22 = a[10]; + a23 = a[11]; + out[0] = a00; + out[1] = a01; + out[2] = a02; + out[3] = a03; + out[4] = a10; + out[5] = a11; + out[6] = a12; + out[7] = a13; + out[8] = a20; + out[9] = a21; + out[10] = a22; + out[11] = a23; + out[12] = a00 * x + a10 * y + a20 * z + a[12]; + out[13] = a01 * x + a11 * y + a21 * z + a[13]; + out[14] = a02 * x + a12 * y + a22 * z + a[14]; + out[15] = a03 * x + a13 * y + a23 * z + a[15]; + } + return out; +} +function scale(out, a, v) { + var x = v[0], y = v[1], z = v[2]; + out[0] = a[0] * x; + out[1] = a[1] * x; + out[2] = a[2] * x; + out[3] = a[3] * x; + out[4] = a[4] * y; + out[5] = a[5] * y; + out[6] = a[6] * y; + out[7] = a[7] * y; + out[8] = a[8] * z; + out[9] = a[9] * z; + out[10] = a[10] * z; + out[11] = a[11] * z; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +} +function rotate(out, a, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2]; + var len4 = Math.hypot(x, y, z); + var s, c, t; + var a00, a01, a02, a03; + var a10, a11, a12, a13; + var a20, a21, a22, a23; + var b00, b01, b02; + var b10, b11, b12; + var b20, b21, b22; + if (len4 < EPSILON) { + return null; + } + len4 = 1 / len4; + x *= len4; + y *= len4; + z *= len4; + s = Math.sin(rad); + c = Math.cos(rad); + t = 1 - c; + a00 = a[0]; + a01 = a[1]; + a02 = a[2]; + a03 = a[3]; + a10 = a[4]; + a11 = a[5]; + a12 = a[6]; + a13 = a[7]; + a20 = a[8]; + a21 = a[9]; + a22 = a[10]; + a23 = a[11]; + b00 = x * x * t + c; + b01 = y * x * t + z * s; + b02 = z * x * t - y * s; + b10 = x * y * t - z * s; + b11 = y * y * t + c; + b12 = z * y * t + x * s; + b20 = x * z * t + y * s; + b21 = y * z * t - x * s; + b22 = z * z * t + c; + out[0] = a00 * b00 + a10 * b01 + a20 * b02; + out[1] = a01 * b00 + a11 * b01 + a21 * b02; + out[2] = a02 * b00 + a12 * b01 + a22 * b02; + out[3] = a03 * b00 + a13 * b01 + a23 * b02; + out[4] = a00 * b10 + a10 * b11 + a20 * b12; + out[5] = a01 * b10 + a11 * b11 + a21 * b12; + out[6] = a02 * b10 + a12 * b11 + a22 * b12; + out[7] = a03 * b10 + a13 * b11 + a23 * b12; + out[8] = a00 * b20 + a10 * b21 + a20 * b22; + out[9] = a01 * b20 + a11 * b21 + a21 * b22; + out[10] = a02 * b20 + a12 * b21 + a22 * b22; + out[11] = a03 * b20 + a13 * b21 + a23 * b22; + if (a !== out) { + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + return out; +} +function rotateX(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a10 = a[4]; + var a11 = a[5]; + var a12 = a[6]; + var a13 = a[7]; + var a20 = a[8]; + var a21 = a[9]; + var a22 = a[10]; + var a23 = a[11]; + if (a !== out) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + out[4] = a10 * c + a20 * s; + out[5] = a11 * c + a21 * s; + out[6] = a12 * c + a22 * s; + out[7] = a13 * c + a23 * s; + out[8] = a20 * c - a10 * s; + out[9] = a21 * c - a11 * s; + out[10] = a22 * c - a12 * s; + out[11] = a23 * c - a13 * s; + return out; +} +function rotateY(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a00 = a[0]; + var a01 = a[1]; + var a02 = a[2]; + var a03 = a[3]; + var a20 = a[8]; + var a21 = a[9]; + var a22 = a[10]; + var a23 = a[11]; + if (a !== out) { + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + out[0] = a00 * c - a20 * s; + out[1] = a01 * c - a21 * s; + out[2] = a02 * c - a22 * s; + out[3] = a03 * c - a23 * s; + out[8] = a00 * s + a20 * c; + out[9] = a01 * s + a21 * c; + out[10] = a02 * s + a22 * c; + out[11] = a03 * s + a23 * c; + return out; +} +function rotateZ(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a00 = a[0]; + var a01 = a[1]; + var a02 = a[2]; + var a03 = a[3]; + var a10 = a[4]; + var a11 = a[5]; + var a12 = a[6]; + var a13 = a[7]; + if (a !== out) { + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + out[0] = a00 * c + a10 * s; + out[1] = a01 * c + a11 * s; + out[2] = a02 * c + a12 * s; + out[3] = a03 * c + a13 * s; + out[4] = a10 * c - a00 * s; + out[5] = a11 * c - a01 * s; + out[6] = a12 * c - a02 * s; + out[7] = a13 * c - a03 * s; + return out; +} +function fromTranslation(out, v) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + return out; +} +function fromScaling(out, v) { + out[0] = v[0]; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = v[1]; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = v[2]; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromRotation(out, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2]; + var len4 = Math.hypot(x, y, z); + var s, c, t; + if (len4 < EPSILON) { + return null; + } + len4 = 1 / len4; + x *= len4; + y *= len4; + z *= len4; + s = Math.sin(rad); + c = Math.cos(rad); + t = 1 - c; + out[0] = x * x * t + c; + out[1] = y * x * t + z * s; + out[2] = z * x * t - y * s; + out[3] = 0; + out[4] = x * y * t - z * s; + out[5] = y * y * t + c; + out[6] = z * y * t + x * s; + out[7] = 0; + out[8] = x * z * t + y * s; + out[9] = y * z * t - x * s; + out[10] = z * z * t + c; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromXRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = c; + out[6] = s; + out[7] = 0; + out[8] = 0; + out[9] = -s; + out[10] = c; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromYRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out[0] = c; + out[1] = 0; + out[2] = -s; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = s; + out[9] = 0; + out[10] = c; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromZRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out[0] = c; + out[1] = s; + out[2] = 0; + out[3] = 0; + out[4] = -s; + out[5] = c; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromRotationTranslation(out, q, v) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - (yy + zz); + out[1] = xy + wz; + out[2] = xz - wy; + out[3] = 0; + out[4] = xy - wz; + out[5] = 1 - (xx + zz); + out[6] = yz + wx; + out[7] = 0; + out[8] = xz + wy; + out[9] = yz - wx; + out[10] = 1 - (xx + yy); + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + return out; +} +function fromQuat2(out, a) { + var translation = new ARRAY_TYPE(3); + var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7]; + var magnitude = bx * bx + by * by + bz * bz + bw * bw; + if (magnitude > 0) { + translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude; + translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude; + translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude; + } else { + translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2; + translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2; + translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2; + } + fromRotationTranslation(out, a, translation); + return out; +} +function getTranslation(out, mat) { + out[0] = mat[12]; + out[1] = mat[13]; + out[2] = mat[14]; + return out; +} +function getScaling(out, mat) { + var m11 = mat[0]; + var m12 = mat[1]; + var m13 = mat[2]; + var m21 = mat[4]; + var m22 = mat[5]; + var m23 = mat[6]; + var m31 = mat[8]; + var m32 = mat[9]; + var m33 = mat[10]; + out[0] = Math.hypot(m11, m12, m13); + out[1] = Math.hypot(m21, m22, m23); + out[2] = Math.hypot(m31, m32, m33); + return out; +} +function getRotation(out, mat) { + var scaling = new ARRAY_TYPE(3); + getScaling(scaling, mat); + var is1 = 1 / scaling[0]; + var is2 = 1 / scaling[1]; + var is3 = 1 / scaling[2]; + var sm11 = mat[0] * is1; + var sm12 = mat[1] * is2; + var sm13 = mat[2] * is3; + var sm21 = mat[4] * is1; + var sm22 = mat[5] * is2; + var sm23 = mat[6] * is3; + var sm31 = mat[8] * is1; + var sm32 = mat[9] * is2; + var sm33 = mat[10] * is3; + var trace = sm11 + sm22 + sm33; + var S = 0; + if (trace > 0) { + S = Math.sqrt(trace + 1) * 2; + out[3] = 0.25 * S; + out[0] = (sm23 - sm32) / S; + out[1] = (sm31 - sm13) / S; + out[2] = (sm12 - sm21) / S; + } else if (sm11 > sm22 && sm11 > sm33) { + S = Math.sqrt(1 + sm11 - sm22 - sm33) * 2; + out[3] = (sm23 - sm32) / S; + out[0] = 0.25 * S; + out[1] = (sm12 + sm21) / S; + out[2] = (sm31 + sm13) / S; + } else if (sm22 > sm33) { + S = Math.sqrt(1 + sm22 - sm11 - sm33) * 2; + out[3] = (sm31 - sm13) / S; + out[0] = (sm12 + sm21) / S; + out[1] = 0.25 * S; + out[2] = (sm23 + sm32) / S; + } else { + S = Math.sqrt(1 + sm33 - sm11 - sm22) * 2; + out[3] = (sm12 - sm21) / S; + out[0] = (sm31 + sm13) / S; + out[1] = (sm23 + sm32) / S; + out[2] = 0.25 * S; + } + return out; +} +function fromRotationTranslationScale(out, q, v, s) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s[0]; + var sy = s[1]; + var sz = s[2]; + out[0] = (1 - (yy + zz)) * sx; + out[1] = (xy + wz) * sx; + out[2] = (xz - wy) * sx; + out[3] = 0; + out[4] = (xy - wz) * sy; + out[5] = (1 - (xx + zz)) * sy; + out[6] = (yz + wx) * sy; + out[7] = 0; + out[8] = (xz + wy) * sz; + out[9] = (yz - wx) * sz; + out[10] = (1 - (xx + yy)) * sz; + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + return out; +} +function fromRotationTranslationScaleOrigin(out, q, v, s, o) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s[0]; + var sy = s[1]; + var sz = s[2]; + var ox = o[0]; + var oy = o[1]; + var oz = o[2]; + var out0 = (1 - (yy + zz)) * sx; + var out1 = (xy + wz) * sx; + var out2 = (xz - wy) * sx; + var out4 = (xy - wz) * sy; + var out5 = (1 - (xx + zz)) * sy; + var out6 = (yz + wx) * sy; + var out8 = (xz + wy) * sz; + var out9 = (yz - wx) * sz; + var out10 = (1 - (xx + yy)) * sz; + out[0] = out0; + out[1] = out1; + out[2] = out2; + out[3] = 0; + out[4] = out4; + out[5] = out5; + out[6] = out6; + out[7] = 0; + out[8] = out8; + out[9] = out9; + out[10] = out10; + out[11] = 0; + out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz); + out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz); + out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz); + out[15] = 1; + return out; +} +function fromQuat(out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - yy - zz; + out[1] = yx + wz; + out[2] = zx - wy; + out[3] = 0; + out[4] = yx - wz; + out[5] = 1 - xx - zz; + out[6] = zy + wx; + out[7] = 0; + out[8] = zx + wy; + out[9] = zy - wx; + out[10] = 1 - xx - yy; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function frustum(out, left, right, bottom, top, near, far) { + var rl = 1 / (right - left); + var tb = 1 / (top - bottom); + var nf = 1 / (near - far); + out[0] = near * 2 * rl; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = near * 2 * tb; + out[6] = 0; + out[7] = 0; + out[8] = (right + left) * rl; + out[9] = (top + bottom) * tb; + out[10] = (far + near) * nf; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = far * near * 2 * nf; + out[15] = 0; + return out; +} +function perspectiveNO(out, fovy, aspect, near, far) { + var f = 1 / Math.tan(fovy / 2), nf; + out[0] = f / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[15] = 0; + if (far != null && far !== Infinity) { + nf = 1 / (near - far); + out[10] = (far + near) * nf; + out[14] = 2 * far * near * nf; + } else { + out[10] = -1; + out[14] = -2 * near; + } + return out; +} +var perspective = perspectiveNO; +function perspectiveZO(out, fovy, aspect, near, far) { + var f = 1 / Math.tan(fovy / 2), nf; + out[0] = f / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[15] = 0; + if (far != null && far !== Infinity) { + nf = 1 / (near - far); + out[10] = far * nf; + out[14] = far * near * nf; + } else { + out[10] = -1; + out[14] = -near; + } + return out; +} +function perspectiveFromFieldOfView(out, fov, near, far) { + var upTan = Math.tan(fov.upDegrees * Math.PI / 180); + var downTan = Math.tan(fov.downDegrees * Math.PI / 180); + var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180); + var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180); + var xScale = 2 / (leftTan + rightTan); + var yScale = 2 / (upTan + downTan); + out[0] = xScale; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = yScale; + out[6] = 0; + out[7] = 0; + out[8] = -((leftTan - rightTan) * xScale * 0.5); + out[9] = (upTan - downTan) * yScale * 0.5; + out[10] = far / (near - far); + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = far * near / (near - far); + out[15] = 0; + return out; +} +function orthoNO(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 2 * nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = (far + near) * nf; + out[15] = 1; + return out; +} +var ortho = orthoNO; +function orthoZO(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = near * nf; + out[15] = 1; + return out; +} +function lookAt(out, eye, center, up) { + var x0, x1, x2, y0, y1, y2, z0, z1, z2, len4; + var eyex = eye[0]; + var eyey = eye[1]; + var eyez = eye[2]; + var upx = up[0]; + var upy = up[1]; + var upz = up[2]; + var centerx = center[0]; + var centery = center[1]; + var centerz = center[2]; + if (Math.abs(eyex - centerx) < EPSILON && Math.abs(eyey - centery) < EPSILON && Math.abs(eyez - centerz) < EPSILON) { + return identity(out); + } + z0 = eyex - centerx; + z1 = eyey - centery; + z2 = eyez - centerz; + len4 = 1 / Math.hypot(z0, z1, z2); + z0 *= len4; + z1 *= len4; + z2 *= len4; + x0 = upy * z2 - upz * z1; + x1 = upz * z0 - upx * z2; + x2 = upx * z1 - upy * z0; + len4 = Math.hypot(x0, x1, x2); + if (!len4) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len4 = 1 / len4; + x0 *= len4; + x1 *= len4; + x2 *= len4; + } + y0 = z1 * x2 - z2 * x1; + y1 = z2 * x0 - z0 * x2; + y2 = z0 * x1 - z1 * x0; + len4 = Math.hypot(y0, y1, y2); + if (!len4) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len4 = 1 / len4; + y0 *= len4; + y1 *= len4; + y2 *= len4; + } + out[0] = x0; + out[1] = y0; + out[2] = z0; + out[3] = 0; + out[4] = x1; + out[5] = y1; + out[6] = z1; + out[7] = 0; + out[8] = x2; + out[9] = y2; + out[10] = z2; + out[11] = 0; + out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + out[15] = 1; + return out; +} +function targetTo(out, eye, target, up) { + var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2]; + var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2]; + var len4 = z0 * z0 + z1 * z1 + z2 * z2; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + z0 *= len4; + z1 *= len4; + z2 *= len4; + } + var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0; + len4 = x0 * x0 + x1 * x1 + x2 * x2; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + x0 *= len4; + x1 *= len4; + x2 *= len4; + } + out[0] = x0; + out[1] = x1; + out[2] = x2; + out[3] = 0; + out[4] = z1 * x2 - z2 * x1; + out[5] = z2 * x0 - z0 * x2; + out[6] = z0 * x1 - z1 * x0; + out[7] = 0; + out[8] = z0; + out[9] = z1; + out[10] = z2; + out[11] = 0; + out[12] = eyex; + out[13] = eyey; + out[14] = eyez; + out[15] = 1; + return out; +} +function str(a) { + return "mat4(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + ", " + a[6] + ", " + a[7] + ", " + a[8] + ", " + a[9] + ", " + a[10] + ", " + a[11] + ", " + a[12] + ", " + a[13] + ", " + a[14] + ", " + a[15] + ")"; +} +function frob(a) { + return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]); +} +function add(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + out[4] = a[4] + b[4]; + out[5] = a[5] + b[5]; + out[6] = a[6] + b[6]; + out[7] = a[7] + b[7]; + out[8] = a[8] + b[8]; + out[9] = a[9] + b[9]; + out[10] = a[10] + b[10]; + out[11] = a[11] + b[11]; + out[12] = a[12] + b[12]; + out[13] = a[13] + b[13]; + out[14] = a[14] + b[14]; + out[15] = a[15] + b[15]; + return out; +} +function subtract(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + out[3] = a[3] - b[3]; + out[4] = a[4] - b[4]; + out[5] = a[5] - b[5]; + out[6] = a[6] - b[6]; + out[7] = a[7] - b[7]; + out[8] = a[8] - b[8]; + out[9] = a[9] - b[9]; + out[10] = a[10] - b[10]; + out[11] = a[11] - b[11]; + out[12] = a[12] - b[12]; + out[13] = a[13] - b[13]; + out[14] = a[14] - b[14]; + out[15] = a[15] - b[15]; + return out; +} +function multiplyScalar(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + out[4] = a[4] * b; + out[5] = a[5] * b; + out[6] = a[6] * b; + out[7] = a[7] * b; + out[8] = a[8] * b; + out[9] = a[9] * b; + out[10] = a[10] * b; + out[11] = a[11] * b; + out[12] = a[12] * b; + out[13] = a[13] * b; + out[14] = a[14] * b; + out[15] = a[15] * b; + return out; +} +function multiplyScalarAndAdd(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + out[2] = a[2] + b[2] * scale6; + out[3] = a[3] + b[3] * scale6; + out[4] = a[4] + b[4] * scale6; + out[5] = a[5] + b[5] * scale6; + out[6] = a[6] + b[6] * scale6; + out[7] = a[7] + b[7] * scale6; + out[8] = a[8] + b[8] * scale6; + out[9] = a[9] + b[9] * scale6; + out[10] = a[10] + b[10] * scale6; + out[11] = a[11] + b[11] * scale6; + out[12] = a[12] + b[12] * scale6; + out[13] = a[13] + b[13] * scale6; + out[14] = a[14] + b[14] * scale6; + out[15] = a[15] + b[15] * scale6; + return out; +} +function exactEquals(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]; +} +function equals(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7]; + var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11]; + var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7]; + var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11]; + var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= EPSILON * Math.max(1, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= EPSILON * Math.max(1, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= EPSILON * Math.max(1, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= EPSILON * Math.max(1, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= EPSILON * Math.max(1, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= EPSILON * Math.max(1, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= EPSILON * Math.max(1, Math.abs(a15), Math.abs(b15)); +} +var mul = multiply; +var sub = subtract; + +// node_modules/gl-matrix/esm/quat.js +var quat_exports = {}; +__export(quat_exports, { + add: () => add4, + calculateW: () => calculateW, + clone: () => clone4, + conjugate: () => conjugate, + copy: () => copy4, + create: () => create5, + dot: () => dot3, + equals: () => equals4, + exactEquals: () => exactEquals4, + exp: () => exp, + fromEuler: () => fromEuler, + fromMat3: () => fromMat3, + fromValues: () => fromValues4, + getAngle: () => getAngle, + getAxisAngle: () => getAxisAngle, + identity: () => identity2, + invert: () => invert2, + len: () => len2, + length: () => length3, + lerp: () => lerp3, + ln: () => ln, + mul: () => mul3, + multiply: () => multiply3, + normalize: () => normalize3, + pow: () => pow, + random: () => random2, + rotateX: () => rotateX3, + rotateY: () => rotateY3, + rotateZ: () => rotateZ3, + rotationTo: () => rotationTo, + scale: () => scale4, + set: () => set4, + setAxes: () => setAxes, + setAxisAngle: () => setAxisAngle, + slerp: () => slerp, + sqlerp: () => sqlerp, + sqrLen: () => sqrLen2, + squaredLength: () => squaredLength3, + str: () => str3 +}); + +// node_modules/gl-matrix/esm/vec3.js +var vec3_exports = {}; +__export(vec3_exports, { + add: () => add2, + angle: () => angle, + bezier: () => bezier, + ceil: () => ceil, + clone: () => clone2, + copy: () => copy2, + create: () => create3, + cross: () => cross, + dist: () => dist, + distance: () => distance, + div: () => div, + divide: () => divide, + dot: () => dot, + equals: () => equals2, + exactEquals: () => exactEquals2, + floor: () => floor, + forEach: () => forEach, + fromValues: () => fromValues2, + hermite: () => hermite, + inverse: () => inverse, + len: () => len, + length: () => length, + lerp: () => lerp, + max: () => max, + min: () => min, + mul: () => mul2, + multiply: () => multiply2, + negate: () => negate, + normalize: () => normalize, + random: () => random, + rotateX: () => rotateX2, + rotateY: () => rotateY2, + rotateZ: () => rotateZ2, + round: () => round, + scale: () => scale2, + scaleAndAdd: () => scaleAndAdd, + set: () => set2, + sqrDist: () => sqrDist, + sqrLen: () => sqrLen, + squaredDistance: () => squaredDistance, + squaredLength: () => squaredLength, + str: () => str2, + sub: () => sub2, + subtract: () => subtract2, + transformMat3: () => transformMat3, + transformMat4: () => transformMat4, + transformQuat: () => transformQuat, + zero: () => zero +}); +function create3() { + var out = new ARRAY_TYPE(3); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + } + return out; +} +function clone2(a) { + var out = new ARRAY_TYPE(3); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; +} +function length(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + return Math.hypot(x, y, z); +} +function fromValues2(x, y, z) { + var out = new ARRAY_TYPE(3); + out[0] = x; + out[1] = y; + out[2] = z; + return out; +} +function copy2(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; +} +function set2(out, x, y, z) { + out[0] = x; + out[1] = y; + out[2] = z; + return out; +} +function add2(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + return out; +} +function subtract2(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + return out; +} +function multiply2(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + out[2] = a[2] * b[2]; + return out; +} +function divide(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + out[2] = a[2] / b[2]; + return out; +} +function ceil(out, a) { + out[0] = Math.ceil(a[0]); + out[1] = Math.ceil(a[1]); + out[2] = Math.ceil(a[2]); + return out; +} +function floor(out, a) { + out[0] = Math.floor(a[0]); + out[1] = Math.floor(a[1]); + out[2] = Math.floor(a[2]); + return out; +} +function min(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + out[2] = Math.min(a[2], b[2]); + return out; +} +function max(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + out[2] = Math.max(a[2], b[2]); + return out; +} +function round(out, a) { + out[0] = Math.round(a[0]); + out[1] = Math.round(a[1]); + out[2] = Math.round(a[2]); + return out; +} +function scale2(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + return out; +} +function scaleAndAdd(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + out[2] = a[2] + b[2] * scale6; + return out; +} +function distance(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + return Math.hypot(x, y, z); +} +function squaredDistance(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + return x * x + y * y + z * z; +} +function squaredLength(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + return x * x + y * y + z * z; +} +function negate(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + return out; +} +function inverse(out, a) { + out[0] = 1 / a[0]; + out[1] = 1 / a[1]; + out[2] = 1 / a[2]; + return out; +} +function normalize(out, a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var len4 = x * x + y * y + z * z; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + } + out[0] = a[0] * len4; + out[1] = a[1] * len4; + out[2] = a[2] * len4; + return out; +} +function dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} +function cross(out, a, b) { + var ax = a[0], ay = a[1], az = a[2]; + var bx = b[0], by = b[1], bz = b[2]; + out[0] = ay * bz - az * by; + out[1] = az * bx - ax * bz; + out[2] = ax * by - ay * bx; + return out; +} +function lerp(out, a, b, t) { + var ax = a[0]; + var ay = a[1]; + var az = a[2]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + return out; +} +function hermite(out, a, b, c, d, t) { + var factorTimes2 = t * t; + var factor1 = factorTimes2 * (2 * t - 3) + 1; + var factor2 = factorTimes2 * (t - 2) + t; + var factor3 = factorTimes2 * (t - 1); + var factor4 = factorTimes2 * (3 - 2 * t); + out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; + out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; + out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; + return out; +} +function bezier(out, a, b, c, d, t) { + var inverseFactor = 1 - t; + var inverseFactorTimesTwo = inverseFactor * inverseFactor; + var factorTimes2 = t * t; + var factor1 = inverseFactorTimesTwo * inverseFactor; + var factor2 = 3 * t * inverseFactorTimesTwo; + var factor3 = 3 * factorTimes2 * inverseFactor; + var factor4 = factorTimes2 * t; + out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; + out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; + out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; + return out; +} +function random(out, scale6) { + scale6 = scale6 || 1; + var r = RANDOM() * 2 * Math.PI; + var z = RANDOM() * 2 - 1; + var zScale = Math.sqrt(1 - z * z) * scale6; + out[0] = Math.cos(r) * zScale; + out[1] = Math.sin(r) * zScale; + out[2] = z * scale6; + return out; +} +function transformMat4(out, a, m) { + var x = a[0], y = a[1], z = a[2]; + var w = m[3] * x + m[7] * y + m[11] * z + m[15]; + w = w || 1; + out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; + out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; + out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; + return out; +} +function transformMat3(out, a, m) { + var x = a[0], y = a[1], z = a[2]; + out[0] = x * m[0] + y * m[3] + z * m[6]; + out[1] = x * m[1] + y * m[4] + z * m[7]; + out[2] = x * m[2] + y * m[5] + z * m[8]; + return out; +} +function transformQuat(out, a, q) { + var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; + var x = a[0], y = a[1], z = a[2]; + var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; + var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; + var w2 = qw * 2; + uvx *= w2; + uvy *= w2; + uvz *= w2; + uuvx *= 2; + uuvy *= 2; + uuvz *= 2; + out[0] = x + uvx + uuvx; + out[1] = y + uvy + uuvy; + out[2] = z + uvz + uuvz; + return out; +} +function rotateX2(out, a, b, rad) { + var p = [], r = []; + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + r[0] = p[0]; + r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad); + r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; +} +function rotateY2(out, a, b, rad) { + var p = [], r = []; + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad); + r[1] = p[1]; + r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; +} +function rotateZ2(out, a, b, rad) { + var p = [], r = []; + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad); + r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad); + r[2] = p[2]; + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; +} +function angle(a, b) { + var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a, b) / mag; + return Math.acos(Math.min(Math.max(cosine, -1), 1)); +} +function zero(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + return out; +} +function str2(a) { + return "vec3(" + a[0] + ", " + a[1] + ", " + a[2] + ")"; +} +function exactEquals2(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]; +} +function equals2(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2]; + var b0 = b[0], b1 = b[1], b2 = b[2]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)); +} +var sub2 = subtract2; +var mul2 = multiply2; +var div = divide; +var dist = distance; +var sqrDist = squaredDistance; +var len = length; +var sqrLen = squaredLength; +var forEach = function() { + var vec = create3(); + return function(a, stride, offset2, count, fn, arg) { + var i, l; + if (!stride) { + stride = 3; + } + if (!offset2) { + offset2 = 0; + } + if (count) { + l = Math.min(count * stride + offset2, a.length); + } else { + l = a.length; + } + for (i = offset2; i < l; i += stride) { + vec[0] = a[i]; + vec[1] = a[i + 1]; + vec[2] = a[i + 2]; + fn(vec, vec, arg); + a[i] = vec[0]; + a[i + 1] = vec[1]; + a[i + 2] = vec[2]; + } + return a; + }; +}(); + +// node_modules/gl-matrix/esm/vec4.js +function create4() { + var out = new ARRAY_TYPE(4); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 0; + } + return out; +} +function clone3(a) { + var out = new ARRAY_TYPE(4); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +} +function fromValues3(x, y, z, w) { + var out = new ARRAY_TYPE(4); + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +} +function copy3(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +} +function set3(out, x, y, z, w) { + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +} +function add3(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + return out; +} +function scale3(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + return out; +} +function length2(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var w = a[3]; + return Math.hypot(x, y, z, w); +} +function squaredLength2(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var w = a[3]; + return x * x + y * y + z * z + w * w; +} +function normalize2(out, a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var w = a[3]; + var len4 = x * x + y * y + z * z + w * w; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + } + out[0] = x * len4; + out[1] = y * len4; + out[2] = z * len4; + out[3] = w * len4; + return out; +} +function dot2(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; +} +function lerp2(out, a, b, t) { + var ax = a[0]; + var ay = a[1]; + var az = a[2]; + var aw = a[3]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + out[3] = aw + t * (b[3] - aw); + return out; +} +function exactEquals3(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]; +} +function equals3(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)); +} +var forEach2 = function() { + var vec = create4(); + return function(a, stride, offset2, count, fn, arg) { + var i, l; + if (!stride) { + stride = 4; + } + if (!offset2) { + offset2 = 0; + } + if (count) { + l = Math.min(count * stride + offset2, a.length); + } else { + l = a.length; + } + for (i = offset2; i < l; i += stride) { + vec[0] = a[i]; + vec[1] = a[i + 1]; + vec[2] = a[i + 2]; + vec[3] = a[i + 3]; + fn(vec, vec, arg); + a[i] = vec[0]; + a[i + 1] = vec[1]; + a[i + 2] = vec[2]; + a[i + 3] = vec[3]; + } + return a; + }; +}(); + +// node_modules/gl-matrix/esm/quat.js +function create5() { + var out = new ARRAY_TYPE(4); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + } + out[3] = 1; + return out; +} +function identity2(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; +} +function setAxisAngle(out, axis, rad) { + rad = rad * 0.5; + var s = Math.sin(rad); + out[0] = s * axis[0]; + out[1] = s * axis[1]; + out[2] = s * axis[2]; + out[3] = Math.cos(rad); + return out; +} +function getAxisAngle(out_axis, q) { + var rad = Math.acos(q[3]) * 2; + var s = Math.sin(rad / 2); + if (s > EPSILON) { + out_axis[0] = q[0] / s; + out_axis[1] = q[1] / s; + out_axis[2] = q[2] / s; + } else { + out_axis[0] = 1; + out_axis[1] = 0; + out_axis[2] = 0; + } + return rad; +} +function getAngle(a, b) { + var dotproduct = dot3(a, b); + return Math.acos(2 * dotproduct * dotproduct - 1); +} +function multiply3(out, a, b) { + var ax = a[0], ay = a[1], az = a[2], aw = a[3]; + var bx = b[0], by = b[1], bz = b[2], bw = b[3]; + out[0] = ax * bw + aw * bx + ay * bz - az * by; + out[1] = ay * bw + aw * by + az * bx - ax * bz; + out[2] = az * bw + aw * bz + ax * by - ay * bx; + out[3] = aw * bw - ax * bx - ay * by - az * bz; + return out; +} +function rotateX3(out, a, rad) { + rad *= 0.5; + var ax = a[0], ay = a[1], az = a[2], aw = a[3]; + var bx = Math.sin(rad), bw = Math.cos(rad); + out[0] = ax * bw + aw * bx; + out[1] = ay * bw + az * bx; + out[2] = az * bw - ay * bx; + out[3] = aw * bw - ax * bx; + return out; +} +function rotateY3(out, a, rad) { + rad *= 0.5; + var ax = a[0], ay = a[1], az = a[2], aw = a[3]; + var by = Math.sin(rad), bw = Math.cos(rad); + out[0] = ax * bw - az * by; + out[1] = ay * bw + aw * by; + out[2] = az * bw + ax * by; + out[3] = aw * bw - ay * by; + return out; +} +function rotateZ3(out, a, rad) { + rad *= 0.5; + var ax = a[0], ay = a[1], az = a[2], aw = a[3]; + var bz = Math.sin(rad), bw = Math.cos(rad); + out[0] = ax * bw + ay * bz; + out[1] = ay * bw - ax * bz; + out[2] = az * bw + aw * bz; + out[3] = aw * bw - az * bz; + return out; +} +function calculateW(out, a) { + var x = a[0], y = a[1], z = a[2]; + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = Math.sqrt(Math.abs(1 - x * x - y * y - z * z)); + return out; +} +function exp(out, a) { + var x = a[0], y = a[1], z = a[2], w = a[3]; + var r = Math.sqrt(x * x + y * y + z * z); + var et = Math.exp(w); + var s = r > 0 ? et * Math.sin(r) / r : 0; + out[0] = x * s; + out[1] = y * s; + out[2] = z * s; + out[3] = et * Math.cos(r); + return out; +} +function ln(out, a) { + var x = a[0], y = a[1], z = a[2], w = a[3]; + var r = Math.sqrt(x * x + y * y + z * z); + var t = r > 0 ? Math.atan2(r, w) / r : 0; + out[0] = x * t; + out[1] = y * t; + out[2] = z * t; + out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w); + return out; +} +function pow(out, a, b) { + ln(out, a); + scale4(out, out, b); + exp(out, out); + return out; +} +function slerp(out, a, b, t) { + var ax = a[0], ay = a[1], az = a[2], aw = a[3]; + var bx = b[0], by = b[1], bz = b[2], bw = b[3]; + var omega, cosom, sinom, scale0, scale1; + cosom = ax * bx + ay * by + az * bz + aw * bw; + if (cosom < 0) { + cosom = -cosom; + bx = -bx; + by = -by; + bz = -bz; + bw = -bw; + } + if (1 - cosom > EPSILON) { + omega = Math.acos(cosom); + sinom = Math.sin(omega); + scale0 = Math.sin((1 - t) * omega) / sinom; + scale1 = Math.sin(t * omega) / sinom; + } else { + scale0 = 1 - t; + scale1 = t; + } + out[0] = scale0 * ax + scale1 * bx; + out[1] = scale0 * ay + scale1 * by; + out[2] = scale0 * az + scale1 * bz; + out[3] = scale0 * aw + scale1 * bw; + return out; +} +function random2(out) { + var u1 = RANDOM(); + var u2 = RANDOM(); + var u3 = RANDOM(); + var sqrt1MinusU1 = Math.sqrt(1 - u1); + var sqrtU1 = Math.sqrt(u1); + out[0] = sqrt1MinusU1 * Math.sin(2 * Math.PI * u2); + out[1] = sqrt1MinusU1 * Math.cos(2 * Math.PI * u2); + out[2] = sqrtU1 * Math.sin(2 * Math.PI * u3); + out[3] = sqrtU1 * Math.cos(2 * Math.PI * u3); + return out; +} +function invert2(out, a) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + var dot5 = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3; + var invDot = dot5 ? 1 / dot5 : 0; + out[0] = -a0 * invDot; + out[1] = -a1 * invDot; + out[2] = -a2 * invDot; + out[3] = a3 * invDot; + return out; +} +function conjugate(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + out[3] = a[3]; + return out; +} +function fromMat3(out, m) { + var fTrace = m[0] + m[4] + m[8]; + var fRoot; + if (fTrace > 0) { + fRoot = Math.sqrt(fTrace + 1); + out[3] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + out[0] = (m[5] - m[7]) * fRoot; + out[1] = (m[6] - m[2]) * fRoot; + out[2] = (m[1] - m[3]) * fRoot; + } else { + var i = 0; + if (m[4] > m[0]) + i = 1; + if (m[8] > m[i * 3 + i]) + i = 2; + var j = (i + 1) % 3; + var k = (i + 2) % 3; + fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1); + out[i] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot; + out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot; + out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot; + } + return out; +} +function fromEuler(out, x, y, z) { + var halfToRad = 0.5 * Math.PI / 180; + x *= halfToRad; + y *= halfToRad; + z *= halfToRad; + var sx = Math.sin(x); + var cx = Math.cos(x); + var sy = Math.sin(y); + var cy = Math.cos(y); + var sz = Math.sin(z); + var cz = Math.cos(z); + out[0] = sx * cy * cz - cx * sy * sz; + out[1] = cx * sy * cz + sx * cy * sz; + out[2] = cx * cy * sz - sx * sy * cz; + out[3] = cx * cy * cz + sx * sy * sz; + return out; +} +function str3(a) { + return "quat(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ")"; +} +var clone4 = clone3; +var fromValues4 = fromValues3; +var copy4 = copy3; +var set4 = set3; +var add4 = add3; +var mul3 = multiply3; +var scale4 = scale3; +var dot3 = dot2; +var lerp3 = lerp2; +var length3 = length2; +var len2 = length3; +var squaredLength3 = squaredLength2; +var sqrLen2 = squaredLength3; +var normalize3 = normalize2; +var exactEquals4 = exactEquals3; +var equals4 = equals3; +var rotationTo = function() { + var tmpvec3 = create3(); + var xUnitVec3 = fromValues2(1, 0, 0); + var yUnitVec3 = fromValues2(0, 1, 0); + return function(out, a, b) { + var dot5 = dot(a, b); + if (dot5 < -0.999999) { + cross(tmpvec3, xUnitVec3, a); + if (len(tmpvec3) < 1e-6) + cross(tmpvec3, yUnitVec3, a); + normalize(tmpvec3, tmpvec3); + setAxisAngle(out, tmpvec3, Math.PI); + return out; + } else if (dot5 > 0.999999) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; + } else { + cross(tmpvec3, a, b); + out[0] = tmpvec3[0]; + out[1] = tmpvec3[1]; + out[2] = tmpvec3[2]; + out[3] = 1 + dot5; + return normalize3(out, out); + } + }; +}(); +var sqlerp = function() { + var temp1 = create5(); + var temp2 = create5(); + return function(out, a, b, c, d, t) { + slerp(temp1, a, d, t); + slerp(temp2, b, c, t); + slerp(out, temp1, temp2, 2 * t * (1 - t)); + return out; + }; +}(); +var setAxes = function() { + var matr = create(); + return function(out, view, right, up) { + matr[0] = right[0]; + matr[3] = right[1]; + matr[6] = right[2]; + matr[1] = up[0]; + matr[4] = up[1]; + matr[7] = up[2]; + matr[2] = -view[0]; + matr[5] = -view[1]; + matr[8] = -view[2]; + return normalize3(out, fromMat3(out, matr)); + }; +}(); + +// node_modules/gl-matrix/esm/quat2.js +var quat2_exports = {}; +__export(quat2_exports, { + add: () => add5, + clone: () => clone5, + conjugate: () => conjugate2, + copy: () => copy5, + create: () => create6, + dot: () => dot4, + equals: () => equals5, + exactEquals: () => exactEquals5, + fromMat4: () => fromMat4, + fromRotation: () => fromRotation2, + fromRotationTranslation: () => fromRotationTranslation2, + fromRotationTranslationValues: () => fromRotationTranslationValues, + fromTranslation: () => fromTranslation2, + fromValues: () => fromValues5, + getDual: () => getDual, + getReal: () => getReal, + getTranslation: () => getTranslation2, + identity: () => identity3, + invert: () => invert3, + len: () => len3, + length: () => length4, + lerp: () => lerp4, + mul: () => mul4, + multiply: () => multiply4, + normalize: () => normalize4, + rotateAroundAxis: () => rotateAroundAxis, + rotateByQuatAppend: () => rotateByQuatAppend, + rotateByQuatPrepend: () => rotateByQuatPrepend, + rotateX: () => rotateX4, + rotateY: () => rotateY4, + rotateZ: () => rotateZ4, + scale: () => scale5, + set: () => set5, + setDual: () => setDual, + setReal: () => setReal, + sqrLen: () => sqrLen3, + squaredLength: () => squaredLength4, + str: () => str4, + translate: () => translate2 +}); +function create6() { + var dq = new ARRAY_TYPE(8); + if (ARRAY_TYPE != Float32Array) { + dq[0] = 0; + dq[1] = 0; + dq[2] = 0; + dq[4] = 0; + dq[5] = 0; + dq[6] = 0; + dq[7] = 0; + } + dq[3] = 1; + return dq; +} +function clone5(a) { + var dq = new ARRAY_TYPE(8); + dq[0] = a[0]; + dq[1] = a[1]; + dq[2] = a[2]; + dq[3] = a[3]; + dq[4] = a[4]; + dq[5] = a[5]; + dq[6] = a[6]; + dq[7] = a[7]; + return dq; +} +function fromValues5(x1, y1, z1, w1, x2, y2, z2, w2) { + var dq = new ARRAY_TYPE(8); + dq[0] = x1; + dq[1] = y1; + dq[2] = z1; + dq[3] = w1; + dq[4] = x2; + dq[5] = y2; + dq[6] = z2; + dq[7] = w2; + return dq; +} +function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) { + var dq = new ARRAY_TYPE(8); + dq[0] = x1; + dq[1] = y1; + dq[2] = z1; + dq[3] = w1; + var ax = x2 * 0.5, ay = y2 * 0.5, az = z2 * 0.5; + dq[4] = ax * w1 + ay * z1 - az * y1; + dq[5] = ay * w1 + az * x1 - ax * z1; + dq[6] = az * w1 + ax * y1 - ay * x1; + dq[7] = -ax * x1 - ay * y1 - az * z1; + return dq; +} +function fromRotationTranslation2(out, q, t) { + var ax = t[0] * 0.5, ay = t[1] * 0.5, az = t[2] * 0.5, bx = q[0], by = q[1], bz = q[2], bw = q[3]; + out[0] = bx; + out[1] = by; + out[2] = bz; + out[3] = bw; + out[4] = ax * bw + ay * bz - az * by; + out[5] = ay * bw + az * bx - ax * bz; + out[6] = az * bw + ax * by - ay * bx; + out[7] = -ax * bx - ay * by - az * bz; + return out; +} +function fromTranslation2(out, t) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + out[4] = t[0] * 0.5; + out[5] = t[1] * 0.5; + out[6] = t[2] * 0.5; + out[7] = 0; + return out; +} +function fromRotation2(out, q) { + out[0] = q[0]; + out[1] = q[1]; + out[2] = q[2]; + out[3] = q[3]; + out[4] = 0; + out[5] = 0; + out[6] = 0; + out[7] = 0; + return out; +} +function fromMat4(out, a) { + var outer = create5(); + getRotation(outer, a); + var t = new ARRAY_TYPE(3); + getTranslation(t, a); + fromRotationTranslation2(out, outer, t); + return out; +} +function copy5(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + return out; +} +function identity3(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + out[4] = 0; + out[5] = 0; + out[6] = 0; + out[7] = 0; + return out; +} +function set5(out, x1, y1, z1, w1, x2, y2, z2, w2) { + out[0] = x1; + out[1] = y1; + out[2] = z1; + out[3] = w1; + out[4] = x2; + out[5] = y2; + out[6] = z2; + out[7] = w2; + return out; +} +var getReal = copy4; +function getDual(out, a) { + out[0] = a[4]; + out[1] = a[5]; + out[2] = a[6]; + out[3] = a[7]; + return out; +} +var setReal = copy4; +function setDual(out, q) { + out[4] = q[0]; + out[5] = q[1]; + out[6] = q[2]; + out[7] = q[3]; + return out; +} +function getTranslation2(out, a) { + var ax = a[4], ay = a[5], az = a[6], aw = a[7], bx = -a[0], by = -a[1], bz = -a[2], bw = a[3]; + out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2; + out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2; + out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2; + return out; +} +function translate2(out, a, v) { + var ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3], bx1 = v[0] * 0.5, by1 = v[1] * 0.5, bz1 = v[2] * 0.5, ax2 = a[4], ay2 = a[5], az2 = a[6], aw2 = a[7]; + out[0] = ax1; + out[1] = ay1; + out[2] = az1; + out[3] = aw1; + out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2; + out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2; + out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2; + out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2; + return out; +} +function rotateX4(out, a, rad) { + var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz; + rotateX3(out, a, rad); + bx = out[0]; + by = out[1]; + bz = out[2]; + bw = out[3]; + out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by; + out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz; + out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx; + out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz; + return out; +} +function rotateY4(out, a, rad) { + var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz; + rotateY3(out, a, rad); + bx = out[0]; + by = out[1]; + bz = out[2]; + bw = out[3]; + out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by; + out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz; + out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx; + out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz; + return out; +} +function rotateZ4(out, a, rad) { + var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz; + rotateZ3(out, a, rad); + bx = out[0]; + by = out[1]; + bz = out[2]; + bw = out[3]; + out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by; + out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz; + out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx; + out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz; + return out; +} +function rotateByQuatAppend(out, a, q) { + var qx = q[0], qy = q[1], qz = q[2], qw = q[3], ax = a[0], ay = a[1], az = a[2], aw = a[3]; + out[0] = ax * qw + aw * qx + ay * qz - az * qy; + out[1] = ay * qw + aw * qy + az * qx - ax * qz; + out[2] = az * qw + aw * qz + ax * qy - ay * qx; + out[3] = aw * qw - ax * qx - ay * qy - az * qz; + ax = a[4]; + ay = a[5]; + az = a[6]; + aw = a[7]; + out[4] = ax * qw + aw * qx + ay * qz - az * qy; + out[5] = ay * qw + aw * qy + az * qx - ax * qz; + out[6] = az * qw + aw * qz + ax * qy - ay * qx; + out[7] = aw * qw - ax * qx - ay * qy - az * qz; + return out; +} +function rotateByQuatPrepend(out, q, a) { + var qx = q[0], qy = q[1], qz = q[2], qw = q[3], bx = a[0], by = a[1], bz = a[2], bw = a[3]; + out[0] = qx * bw + qw * bx + qy * bz - qz * by; + out[1] = qy * bw + qw * by + qz * bx - qx * bz; + out[2] = qz * bw + qw * bz + qx * by - qy * bx; + out[3] = qw * bw - qx * bx - qy * by - qz * bz; + bx = a[4]; + by = a[5]; + bz = a[6]; + bw = a[7]; + out[4] = qx * bw + qw * bx + qy * bz - qz * by; + out[5] = qy * bw + qw * by + qz * bx - qx * bz; + out[6] = qz * bw + qw * bz + qx * by - qy * bx; + out[7] = qw * bw - qx * bx - qy * by - qz * bz; + return out; +} +function rotateAroundAxis(out, a, axis, rad) { + if (Math.abs(rad) < EPSILON) { + return copy5(out, a); + } + var axisLength = Math.hypot(axis[0], axis[1], axis[2]); + rad = rad * 0.5; + var s = Math.sin(rad); + var bx = s * axis[0] / axisLength; + var by = s * axis[1] / axisLength; + var bz = s * axis[2] / axisLength; + var bw = Math.cos(rad); + var ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3]; + out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by; + out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz; + out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx; + out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz; + var ax = a[4], ay = a[5], az = a[6], aw = a[7]; + out[4] = ax * bw + aw * bx + ay * bz - az * by; + out[5] = ay * bw + aw * by + az * bx - ax * bz; + out[6] = az * bw + aw * bz + ax * by - ay * bx; + out[7] = aw * bw - ax * bx - ay * by - az * bz; + return out; +} +function add5(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + out[4] = a[4] + b[4]; + out[5] = a[5] + b[5]; + out[6] = a[6] + b[6]; + out[7] = a[7] + b[7]; + return out; +} +function multiply4(out, a, b) { + var ax0 = a[0], ay0 = a[1], az0 = a[2], aw0 = a[3], bx1 = b[4], by1 = b[5], bz1 = b[6], bw1 = b[7], ax1 = a[4], ay1 = a[5], az1 = a[6], aw1 = a[7], bx0 = b[0], by0 = b[1], bz0 = b[2], bw0 = b[3]; + out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0; + out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0; + out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0; + out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0; + out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0; + out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0; + out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0; + out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0; + return out; +} +var mul4 = multiply4; +function scale5(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + out[4] = a[4] * b; + out[5] = a[5] * b; + out[6] = a[6] * b; + out[7] = a[7] * b; + return out; +} +var dot4 = dot3; +function lerp4(out, a, b, t) { + var mt = 1 - t; + if (dot4(a, b) < 0) + t = -t; + out[0] = a[0] * mt + b[0] * t; + out[1] = a[1] * mt + b[1] * t; + out[2] = a[2] * mt + b[2] * t; + out[3] = a[3] * mt + b[3] * t; + out[4] = a[4] * mt + b[4] * t; + out[5] = a[5] * mt + b[5] * t; + out[6] = a[6] * mt + b[6] * t; + out[7] = a[7] * mt + b[7] * t; + return out; +} +function invert3(out, a) { + var sqlen = squaredLength4(a); + out[0] = -a[0] / sqlen; + out[1] = -a[1] / sqlen; + out[2] = -a[2] / sqlen; + out[3] = a[3] / sqlen; + out[4] = -a[4] / sqlen; + out[5] = -a[5] / sqlen; + out[6] = -a[6] / sqlen; + out[7] = a[7] / sqlen; + return out; +} +function conjugate2(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + out[3] = a[3]; + out[4] = -a[4]; + out[5] = -a[5]; + out[6] = -a[6]; + out[7] = a[7]; + return out; +} +var length4 = length3; +var len3 = length4; +var squaredLength4 = squaredLength3; +var sqrLen3 = squaredLength4; +function normalize4(out, a) { + var magnitude = squaredLength4(a); + if (magnitude > 0) { + magnitude = Math.sqrt(magnitude); + var a0 = a[0] / magnitude; + var a1 = a[1] / magnitude; + var a2 = a[2] / magnitude; + var a3 = a[3] / magnitude; + var b0 = a[4]; + var b1 = a[5]; + var b2 = a[6]; + var b3 = a[7]; + var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3; + out[0] = a0; + out[1] = a1; + out[2] = a2; + out[3] = a3; + out[4] = (b0 - a0 * a_dot_b) / magnitude; + out[5] = (b1 - a1 * a_dot_b) / magnitude; + out[6] = (b2 - a2 * a_dot_b) / magnitude; + out[7] = (b3 - a3 * a_dot_b) / magnitude; + } + return out; +} +function str4(a) { + return "quat2(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + ", " + a[6] + ", " + a[7] + ")"; +} +function exactEquals5(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7]; +} +function equals5(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)); +} + +// node_modules/@wonderlandengine/components/dist/hit-test-location.js +var __decorate2 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var HitTestLocation = class extends Component3 { + tempScaling = new Float32Array(3); + visible = false; + xrHitTestSource = null; + /** Reference space for creating the hit test when the session starts */ + xrReferenceSpace = null; + /** + * For maintaining backwards compatibility: Whether to scale the object to 0 and back. + * @deprecated Use onHitLost and onHitFound instead. + */ + scaleObject = true; + /** Emits an event when the hit test switches from visible to invisible */ + onHitLost = new Emitter(); + /** Emits an event when the hit test switches from invisible to visible */ + onHitFound = new Emitter(); + onSessionStartCallback = null; + onSessionEndCallback = null; + start() { + this.onSessionStartCallback = this.onXRSessionStart.bind(this); + this.onSessionEndCallback = this.onXRSessionEnd.bind(this); + if (this.scaleObject) { + this.tempScaling.set(this.object.scalingLocal); + this.object.scale([0, 0, 0]); + this.onHitLost.add(() => { + this.tempScaling.set(this.object.scalingLocal); + this.object.scale([0, 0, 0]); + }); + this.onHitFound.add(() => { + this.object.scalingLocal.set(this.tempScaling); + this.object.setDirty(); + }); + } + } + onActivate() { + this.engine.onXRSessionStart.add(this.onSessionStartCallback); + this.engine.onXRSessionEnd.add(this.onSessionEndCallback); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this.onSessionStartCallback); + this.engine.onXRSessionEnd.remove(this.onSessionEndCallback); + } + update() { + const wasVisible = this.visible; + if (this.xrHitTestSource) { + const frame = this.engine.xrFrame; + if (!frame) + return; + let hitTestResults = frame.getHitTestResults(this.xrHitTestSource); + if (hitTestResults.length > 0) { + let pose = hitTestResults[0].getPose(this.engine.xr.currentReferenceSpace); + this.visible = !!pose; + if (pose) { + setXRRigidTransformLocal(this.object, pose.transform); + } + } else { + this.visible = false; + } + } + if (this.visible != wasVisible) { + (this.visible ? this.onHitFound : this.onHitLost).notify(this); + } + } + getHitTestResults(frame = this.engine.xr?.frame ?? null) { + if (!frame) + return []; + if (!this.xrHitTestSource) + return []; + return frame.getHitTestResults(this.xrHitTestSource); + } + onXRSessionStart(session) { + if (session.requestHitTestSource === void 0) { + console.error("hit-test-location: hit test feature not available. Deactivating component."); + this.active = false; + return; + } + session.requestHitTestSource({ + space: this.xrReferenceSpace ?? this.engine.xr.referenceSpaceForType("viewer") + }).then((hitTestSource) => { + this.xrHitTestSource = hitTestSource; + }).catch(console.error); + } + onXRSessionEnd() { + if (!this.xrHitTestSource) + return; + this.xrHitTestSource.cancel(); + this.xrHitTestSource = null; + } +}; +__publicField(HitTestLocation, "TypeName", "hit-test-location"); +__decorate2([ + property.bool(true) +], HitTestLocation.prototype, "scaleObject", void 0); + +// node_modules/@wonderlandengine/components/dist/cursor.js +var __decorate3 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var tempVec2 = new Float32Array(3); +var CursorTargetEmitters = class { + /** Emitter for events when the target is hovered */ + onHover = new Emitter(); + /** Emitter for events when the target is unhovered */ + onUnhover = new Emitter(); + /** Emitter for events when the target is clicked */ + onClick = new Emitter(); + /** Emitter for events when the cursor moves on the target */ + onMove = new Emitter(); + /** Emitter for events when the user pressed the select button on the target */ + onDown = new Emitter(); + /** Emitter for events when the user unpressed the select button on the target */ + onUp = new Emitter(); +}; +var Cursor = class extends Component3 { + static onRegister(engine2) { + engine2.registerComponent(HitTestLocation); + } + _collisionMask = 0; + _onDeactivateCallbacks = []; + _input = null; + _origin = new Float32Array(3); + _cursorObjScale = new Float32Array(3); + _direction = new Float32Array(3); + _projectionMatrix = new Float32Array(16); + _viewComponent = null; + _isDown = false; + _lastIsDown = false; + _arTouchDown = false; + _lastPointerPos = new Float32Array(2); + _lastCursorPosOnTarget = new Float32Array(3); + _cursorRayScale = new Float32Array(3); + _hitTestLocation = null; + _hitTestObject = null; + _onSessionStartCallback = null; + /** + * Whether the cursor (and cursorObject) is visible, i.e. pointing at an object + * that matches the collision group + */ + visible = true; + /** Maximum distance for the cursor's ray cast */ + maxDistance = 100; + /** Currently hovered object */ + hoveringObject = null; + /** CursorTarget component of the currently hovered object */ + hoveringObjectTarget = null; + /** Whether the cursor is hovering reality via hit-test */ + hoveringReality = false; + /** + * Global target lets you receive global cursor events on any object. + */ + globalTarget = new CursorTargetEmitters(); + /** + * Hit test target lets you receive cursor events for "reality", if + * `useWebXRHitTest` is set to `true`. + * + * @example + * ```js + * cursor.hitTestTarget.onClick.add((hit, cursor) => { + * // User clicked on reality + * }); + * ``` + */ + hitTestTarget = new CursorTargetEmitters(); + /** World position of the cursor */ + cursorPos = new Float32Array(3); + /** Collision group for the ray cast. Only objects in this group will be affected by this cursor. */ + collisionGroup = 1; + /** (optional) Object that visualizes the cursor's ray. */ + cursorRayObject = null; + /** Axis along which to scale the `cursorRayObject`. */ + cursorRayScalingAxis = 2; + /** (optional) Object that visualizes the cursor's hit location. */ + cursorObject = null; + /** Handedness for VR cursors to accept trigger events only from respective controller. */ + handedness = 0; + /** Mode for raycasting, whether to use PhysX or simple collision components */ + rayCastMode = 0; + /** Whether to set the CSS style of the mouse cursor on desktop */ + styleCursor = true; + /** + * Use WebXR hit-test if available. + * + * Attaches a hit-test-location component to the cursorObject, which will be used + * by the cursor to send events to the hitTestTarget with HitTestResult. + */ + useWebXRHitTest = false; + _onViewportResize = () => { + if (!this._viewComponent) + return; + mat4_exports.invert(this._projectionMatrix, this._viewComponent.projectionMatrix); + }; + start() { + this._collisionMask = 1 << this.collisionGroup; + if (this.handedness == 0) { + const inputComp = this.object.getComponent("input"); + if (!inputComp) { + console.warn("cursor component on object", this.object.name, 'was configured with handedness "input component", but object has no input component.'); + } else { + this.handedness = inputComp.handedness || "none"; + this._input = inputComp; + } + } else { + this.handedness = ["left", "right", "none"][this.handedness - 1]; + } + this._viewComponent = this.object.getComponent(ViewComponent); + if (this.useWebXRHitTest) { + this._hitTestObject = this.engine.scene.addObject(this.object); + this._hitTestLocation = this._hitTestObject.addComponent(HitTestLocation, { + scaleObject: false + }) ?? null; + } + this._onSessionStartCallback = this.setupVREvents.bind(this); + } + onActivate() { + this.engine.onXRSessionStart.add(this._onSessionStartCallback); + this.engine.onResize.add(this._onViewportResize); + this._setCursorVisibility(true); + if (this._viewComponent != null) { + const canvas2 = this.engine.canvas; + const onClick = this.onClick.bind(this); + const onPointerMove = this.onPointerMove.bind(this); + const onPointerDown = this.onPointerDown.bind(this); + const onPointerUp = this.onPointerUp.bind(this); + canvas2.addEventListener("click", onClick); + canvas2.addEventListener("pointermove", onPointerMove); + canvas2.addEventListener("pointerdown", onPointerDown); + canvas2.addEventListener("pointerup", onPointerUp); + this._onDeactivateCallbacks.push(() => { + canvas2.removeEventListener("click", onClick); + canvas2.removeEventListener("pointermove", onPointerMove); + canvas2.removeEventListener("pointerdown", onPointerDown); + canvas2.removeEventListener("pointerup", onPointerUp); + }); + } + this._onViewportResize(); + } + _setCursorRayTransform(hitPosition) { + if (!this.cursorRayObject) + return; + const dist2 = vec3_exports.dist(this._origin, hitPosition); + this.cursorRayObject.setTranslationLocal([0, 0, -dist2 / 2]); + if (this.cursorRayScalingAxis != 4) { + this.cursorRayObject.resetScaling(); + this._cursorRayScale[this.cursorRayScalingAxis] = dist2 / 2; + this.cursorRayObject.scale(this._cursorRayScale); + } + } + _setCursorVisibility(visible) { + if (this.visible == visible) + return; + this.visible = visible; + if (!this.cursorObject) + return; + if (visible) { + this.cursorObject.setScalingWorld(this._cursorObjScale); + } else { + this.cursorObject.getScalingLocal(this._cursorObjScale); + this.cursorObject.scale([0, 0, 0]); + } + } + update() { + if (this.engine.xr && this._arTouchDown && this._input && this.engine.xr.session.inputSources[0].handedness === "none" && this.engine.xr.session.inputSources[0].gamepad) { + const p = this.engine.xr.session.inputSources[0].gamepad.axes; + this._direction[0] = p[0]; + this._direction[1] = -p[1]; + this._direction[2] = -1; + this.applyTransformAndProjectDirection(); + } else if (this.engine.xr && this._input && this._input.xrInputSource) { + this._direction[0] = 0; + this._direction[1] = 0; + this._direction[2] = -1; + this.applyTransformToDirection(); + } else if (this._viewComponent) { + this.updateDirection(); + } + this.rayCast(null, this.engine.xr?.frame); + if (this.cursorObject) { + if (this.hoveringObject && (this.cursorPos[0] != 0 || this.cursorPos[1] != 0 || this.cursorPos[2] != 0)) { + this._setCursorVisibility(true); + this.cursorObject.setTranslationWorld(this.cursorPos); + this._setCursorRayTransform(this.cursorPos); + } else { + this._setCursorVisibility(false); + } + } + } + /* Returns the hovered cursor target, if available */ + notify(event, originalEvent) { + const target = this.hoveringObject; + if (target) { + const cursorTarget = this.hoveringObjectTarget; + if (cursorTarget) + cursorTarget[event].notify(target, this, originalEvent ?? void 0); + this.globalTarget[event].notify(target, this, originalEvent ?? void 0); + } + } + hoverBehaviour(rayHit, hitTestResult, doClick, originalEvent) { + const hit = !this.hoveringReality && rayHit.hitCount > 0 ? rayHit.objects[0] : null; + if (hit) { + if (!this.hoveringObject || !this.hoveringObject.equals(hit)) { + if (this.hoveringObject) { + this.notify("onUnhover", originalEvent); + } + this.hoveringObject = hit; + this.hoveringObjectTarget = this.hoveringObject.getComponent(CursorTarget); + if (this.styleCursor) + this.engine.canvas.style.cursor = "pointer"; + this.notify("onHover", originalEvent); + } + } else if (this.hoveringObject) { + this.notify("onUnhover", originalEvent); + this.hoveringObject = null; + this.hoveringObjectTarget = null; + if (this.styleCursor) + this.engine.canvas.style.cursor = "default"; + } + if (this.hoveringObject) { + if (this._isDown !== this._lastIsDown) { + this.notify(this._isDown ? "onDown" : "onUp", originalEvent); + } + if (doClick) + this.notify("onClick", originalEvent); + } else if (this.hoveringReality) { + if (this._isDown !== this._lastIsDown) { + (this._isDown ? this.hitTestTarget.onDown : this.hitTestTarget.onUp).notify(hitTestResult, this, originalEvent ?? void 0); + } + if (doClick) + this.hitTestTarget.onClick.notify(hitTestResult, this, originalEvent ?? void 0); + } + if (hit) { + if (this.hoveringObject) { + this.hoveringObject.transformPointInverseWorld(tempVec2, this.cursorPos); + } else { + tempVec2.set(this.cursorPos); + } + if (!vec3_exports.equals(this._lastCursorPosOnTarget, tempVec2)) { + this.notify("onMove", originalEvent); + this._lastCursorPosOnTarget.set(tempVec2); + } + } else if (this.hoveringReality) { + if (!vec3_exports.equals(this._lastCursorPosOnTarget, this.cursorPos)) { + this.hitTestTarget.onMove.notify(hitTestResult, this, originalEvent ?? void 0); + this._lastCursorPosOnTarget.set(this.cursorPos); + } + } else { + this._lastCursorPosOnTarget.set(this.cursorPos); + } + this._lastIsDown = this._isDown; + } + /** + * Setup event listeners on session object + * @param s WebXR session + * + * Sets up 'select' and 'end' events. + */ + setupVREvents(s) { + if (!s) + console.error("setupVREvents called without a valid session"); + const onSelect = this.onSelect.bind(this); + s.addEventListener("select", onSelect); + const onSelectStart = this.onSelectStart.bind(this); + s.addEventListener("selectstart", onSelectStart); + const onSelectEnd = this.onSelectEnd.bind(this); + s.addEventListener("selectend", onSelectEnd); + this._onDeactivateCallbacks.push(() => { + if (!this.engine.xrSession) + return; + s.removeEventListener("select", onSelect); + s.removeEventListener("selectstart", onSelectStart); + s.removeEventListener("selectend", onSelectEnd); + }); + this._onViewportResize(); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this._onSessionStartCallback); + this.engine.onResize.remove(this._onViewportResize); + this._setCursorVisibility(false); + if (this.hoveringObject) + this.notify("onUnhover", null); + if (this.cursorRayObject) + this.cursorRayObject.scale([0, 0, 0]); + for (const f of this._onDeactivateCallbacks) + f(); + this._onDeactivateCallbacks.length = 0; + } + onDestroy() { + this._hitTestObject?.destroy(); + } + /** 'select' event listener */ + onSelect(e) { + if (e.inputSource.handedness != this.handedness) + return; + this.rayCast(e, e.frame, true); + } + /** 'selectstart' event listener */ + onSelectStart(e) { + this._arTouchDown = true; + if (e.inputSource.handedness == this.handedness) { + this._isDown = true; + this.rayCast(e, e.frame); + } + } + /** 'selectend' event listener */ + onSelectEnd(e) { + this._arTouchDown = false; + if (e.inputSource.handedness == this.handedness) { + this._isDown = false; + this.rayCast(e, e.frame); + } + } + /** 'pointermove' event listener */ + onPointerMove(e) { + if (!e.isPrimary) + return; + this.updateMousePos(e); + this.rayCast(e, null); + } + /** 'click' event listener */ + onClick(e) { + this.updateMousePos(e); + this.rayCast(e, null, true); + } + /** 'pointerdown' event listener */ + onPointerDown(e) { + if (!e.isPrimary || e.button !== 0) + return; + this.updateMousePos(e); + this._isDown = true; + this.rayCast(e); + } + /** 'pointerup' event listener */ + onPointerUp(e) { + if (!e.isPrimary || e.button !== 0) + return; + this.updateMousePos(e); + this._isDown = false; + this.rayCast(e); + } + /** + * Update mouse position in non-VR mode and raycast for new position + * @returns @ref WL.RayHit for new position. + */ + updateMousePos(e) { + this._lastPointerPos[0] = e.clientX; + this._lastPointerPos[1] = e.clientY; + this.updateDirection(); + } + updateDirection() { + const bounds = this.engine.canvas.getBoundingClientRect(); + const left = this._lastPointerPos[0] / bounds.width; + const top = this._lastPointerPos[1] / bounds.height; + this._direction[0] = left * 2 - 1; + this._direction[1] = -top * 2 + 1; + this._direction[2] = -1; + this.applyTransformAndProjectDirection(); + } + applyTransformAndProjectDirection() { + vec3_exports.transformMat4(this._direction, this._direction, this._projectionMatrix); + vec3_exports.normalize(this._direction, this._direction); + this.applyTransformToDirection(); + } + applyTransformToDirection() { + vec3_exports.transformQuat(this._direction, this._direction, this.object.transformWorld); + this.object.getTranslationWorld(this._origin); + } + rayCast(originalEvent, frame = null, doClick = false) { + const rayHit = this.rayCastMode == 0 ? this.engine.scene.rayCast(this._origin, this._direction, this._collisionMask) : this.engine.physics.rayCast(this._origin, this._direction, this._collisionMask, this.maxDistance); + let hitResultDistance = Infinity; + let hitTestResult = null; + if (this._hitTestLocation?.visible) { + this._hitTestObject.getTranslationWorld(this.cursorPos); + hitResultDistance = vec3_exports.distance(this.object.getTranslationWorld(tempVec2), this.cursorPos); + hitTestResult = this._hitTestLocation?.getHitTestResults(frame)[0]; + } + let hoveringReality = false; + if (rayHit.hitCount > 0) { + const d = rayHit.distances[0]; + if (hitResultDistance >= d) { + this.cursorPos.set(rayHit.locations[0]); + } else { + hoveringReality = true; + } + } else if (hitResultDistance < Infinity) { + } else { + this.cursorPos.fill(0); + } + if (hoveringReality && !this.hoveringReality) { + this.hitTestTarget.onHover.notify(hitTestResult, this); + } else if (!hoveringReality && this.hoveringReality) { + this.hitTestTarget.onUnhover.notify(hitTestResult, this); + } + this.hoveringReality = hoveringReality; + this.hoverBehaviour(rayHit, hitTestResult, doClick, originalEvent); + return rayHit; + } +}; +__publicField(Cursor, "TypeName", "cursor"); +/* Dependencies is deprecated, but we keep it here for compatibility + * with 1.0.0-rc2 until 1.0.0 is released */ +__publicField(Cursor, "Dependencies", [HitTestLocation]); +__decorate3([ + property.int(1) +], Cursor.prototype, "collisionGroup", void 0); +__decorate3([ + property.object() +], Cursor.prototype, "cursorRayObject", void 0); +__decorate3([ + property.enum(["x", "y", "z", "none"], "z") +], Cursor.prototype, "cursorRayScalingAxis", void 0); +__decorate3([ + property.object() +], Cursor.prototype, "cursorObject", void 0); +__decorate3([ + property.enum(["input component", "left", "right", "none"], "input component") +], Cursor.prototype, "handedness", void 0); +__decorate3([ + property.enum(["collision", "physx"], "collision") +], Cursor.prototype, "rayCastMode", void 0); +__decorate3([ + property.bool(true) +], Cursor.prototype, "styleCursor", void 0); +__decorate3([ + property.bool(false) +], Cursor.prototype, "useWebXRHitTest", void 0); + +// node_modules/@wonderlandengine/components/dist/debug-object.js +var __decorate4 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var DebugObject = class extends Component3 { + /** A second object to print the name of */ + obj = null; + start() { + let origin = new Float32Array(3); + quat2_exports.getTranslation(origin, this.object.transformWorld); + console.log("Debug object:", this.object.name); + console.log("Other object:", this.obj?.name); + console.log(" translation", origin); + console.log(" transformWorld", this.object.transformWorld); + console.log(" transformLocal", this.object.transformLocal); + } +}; +__publicField(DebugObject, "TypeName", "debug-object"); +__decorate4([ + property.object() +], DebugObject.prototype, "obj", void 0); + +// node_modules/@wonderlandengine/components/dist/finger-cursor.js +var FingerCursor = class extends Component3 { + init() { + this.lastTarget = null; + } + start() { + this.tip = this.object.getComponent("collision"); + } + update() { + const overlaps = this.tip.queryOverlaps(); + let overlapFound = null; + for (let i = 0; i < overlaps.length; ++i) { + const o = overlaps[i].object; + const target = o.getComponent("cursor-target"); + if (target) { + if (!target.equals(this.lastTarget)) { + target.onHover(o, this); + target.onClick(o, this); + } + overlapFound = target; + break; + } + } + if (!overlapFound) { + if (this.lastTarget) + this.lastTarget.onUnhover(this.lastTarget.object, this); + this.lastTarget = null; + return; + } else { + this.lastTarget = overlapFound; + } + } +}; +__publicField(FingerCursor, "TypeName", "finger-cursor"); +__publicField(FingerCursor, "Properties", {}); + +// node_modules/@wonderlandengine/components/dist/fixed-foveation.js +var FixedFoveation = class extends Component3 { + start() { + this.onSessionStartCallback = this.setFixedFoveation.bind(this); + } + onActivate() { + this.engine.onXRSessionStart.add(this.onSessionStartCallback); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this.onSessionStartCallback); + } + setFixedFoveation() { + this.engine.xr.baseLayer.fixedFoveation = this.fixedFoveation; + } +}; +__publicField(FixedFoveation, "TypeName", "fixed-foveation"); +__publicField(FixedFoveation, "Properties", { + /** Amount to apply from 0 (none) to 1 (full) */ + fixedFoveation: { type: Type.Float, default: 0.5 } +}); + +// node_modules/@wonderlandengine/components/dist/hand-tracking.js +var ORDERED_JOINTS = [ + "wrist", + "thumb-metacarpal", + "thumb-phalanx-proximal", + "thumb-phalanx-distal", + "thumb-tip", + "index-finger-metacarpal", + "index-finger-phalanx-proximal", + "index-finger-phalanx-intermediate", + "index-finger-phalanx-distal", + "index-finger-tip", + "middle-finger-metacarpal", + "middle-finger-phalanx-proximal", + "middle-finger-phalanx-intermediate", + "middle-finger-phalanx-distal", + "middle-finger-tip", + "ring-finger-metacarpal", + "ring-finger-phalanx-proximal", + "ring-finger-phalanx-intermediate", + "ring-finger-phalanx-distal", + "ring-finger-tip", + "pinky-finger-metacarpal", + "pinky-finger-phalanx-proximal", + "pinky-finger-phalanx-intermediate", + "pinky-finger-phalanx-distal", + "pinky-finger-tip" +]; +var invTranslation = new Float32Array(3); +var invRotation = new Float32Array(4); +var HandTracking = class extends Component3 { + init() { + this.handedness = ["left", "right"][this.handedness]; + } + joints = {}; + session = null; + /* Whether last update had a hand pose */ + hasPose = false; + _childrenActive = true; + start() { + if (!("XRHand" in window)) { + console.warn("WebXR Hand Tracking not supported by this browser."); + this.active = false; + return; + } + if (this.handSkin) { + let skin = this.handSkin; + let jointIds = skin.jointIds; + this.joints[ORDERED_JOINTS[0]] = this.engine.wrapObject(jointIds[0]); + for (let j = 0; j < jointIds.length; ++j) { + let joint = this.engine.wrapObject(jointIds[j]); + this.joints[joint.name] = joint; + } + return; + } + const jointObjects = this.engine.scene.addObjects(ORDERED_JOINTS.length, this.object.parent, ORDERED_JOINTS.length); + for (let j = 0; j < ORDERED_JOINTS.length; ++j) { + let joint = jointObjects[j]; + joint.addComponent(MeshComponent, { + mesh: this.jointMesh, + material: this.jointMaterial + }); + this.joints[ORDERED_JOINTS[j]] = joint; + } + } + update(dt) { + if (!this.session) { + if (this.engine.xr) + this.setupVREvents(this.engine.xr.session); + } + if (!this.session) + return; + this.hasPose = false; + if (this.session && this.session.inputSources) { + for (let i = 0; i < this.session.inputSources.length; ++i) { + const inputSource = this.session.inputSources[i]; + if (!inputSource || !inputSource.hand || inputSource.handedness != this.handedness) + continue; + this.hasPose = true; + const wristSpace = inputSource.hand.get("wrist"); + if (wristSpace !== null) { + const p = this.engine.xr.frame.getJointPose(wristSpace, this.engine.xr.currentReferenceSpace); + if (p) { + setXRRigidTransformLocal(this.object, p.transform); + } + } + this.object.getRotationLocal(invRotation); + quat_exports.conjugate(invRotation, invRotation); + this.object.getTranslationLocal(invTranslation); + for (let j = 0; j < ORDERED_JOINTS.length; ++j) { + const jointName = ORDERED_JOINTS[j]; + const joint = this.joints[jointName]; + if (joint === null) + continue; + let jointPose = null; + const jointSpace = inputSource.hand.get(jointName); + if (jointSpace !== null) { + jointPose = this.engine.xr.frame.getJointPose(jointSpace, this.engine.xr.currentReferenceSpace); + } + if (jointPose !== null) { + if (this.handSkin) { + joint.resetTranslationRotation(); + joint.translate([ + jointPose.transform.position.x - invTranslation[0], + jointPose.transform.position.y - invTranslation[1], + jointPose.transform.position.z - invTranslation[2] + ]); + joint.rotate(invRotation); + joint.rotateObject([ + jointPose.transform.orientation.x, + jointPose.transform.orientation.y, + jointPose.transform.orientation.z, + jointPose.transform.orientation.w + ]); + } else { + setXRRigidTransformLocal(joint, jointPose.transform); + const r = jointPose.radius || 7e-3; + joint.setScalingLocal([r, r, r]); + } + } + } + } + } + if (!this.hasPose && this._childrenActive) { + this._childrenActive = false; + if (this.deactivateChildrenWithoutPose) { + this.setChildrenActive(false); + } + if (this.controllerToDeactivate) { + this.controllerToDeactivate.active = true; + this.setChildrenActive(true, this.controllerToDeactivate); + } + } else if (this.hasPose && !this._childrenActive) { + this._childrenActive = true; + if (this.deactivateChildrenWithoutPose) { + this.setChildrenActive(true); + } + if (this.controllerToDeactivate) { + this.controllerToDeactivate.active = false; + this.setChildrenActive(false, this.controllerToDeactivate); + } + } + } + setChildrenActive(active, object) { + object = object || this.object; + const children = object.children; + for (const o of children) { + o.active = active; + this.setChildrenActive(active, o); + } + } + isGrabbing() { + const indexTipPos = [0, 0, 0]; + quat2_exports.getTranslation(indexTipPos, this.joints["index-finger-tip"].transformLocal); + const thumbTipPos = [0, 0, 0]; + quat2_exports.getTranslation(thumbTipPos, this.joints["thumb-tip"].transformLocal); + return vec3_exports.sqrDist(thumbTipPos, indexTipPos) < 1e-3; + } + setupVREvents(s) { + this.session = s; + } +}; +__publicField(HandTracking, "TypeName", "hand-tracking"); +__publicField(HandTracking, "Properties", { + /** Handedness determining whether to receive tracking input from right or left hand */ + handedness: { type: Type.Enum, default: "left", values: ["left", "right"] }, + /** (optional) Mesh to use to visualize joints */ + jointMesh: { type: Type.Mesh, default: null }, + /** Material to use for display. Applied to either the spawned skinned mesh or the joint spheres. */ + jointMaterial: { type: Type.Material, default: null }, + /** (optional) Skin to apply tracked joint poses to. If not present, joint spheres will be used for display instead. */ + handSkin: { type: Type.Skin, default: null }, + /** Deactivate children if no pose was tracked */ + deactivateChildrenWithoutPose: { type: Type.Bool, default: true }, + /** Controller objects to activate including children if no pose is available */ + controllerToDeactivate: { type: Type.Object } +}); + +// node_modules/@wonderlandengine/components/dist/howler-audio-listener.js +var import_howler = __toESM(require_howler(), 1); +var HowlerAudioListener = class extends Component3 { + init() { + this.origin = new Float32Array(3); + this.fwd = new Float32Array(3); + this.up = new Float32Array(3); + } + update() { + if (!this.spatial) + return; + this.object.getTranslationWorld(this.origin); + this.object.getForward(this.fwd); + this.object.getUp(this.up); + Howler.pos(this.origin[0], this.origin[1], this.origin[2]); + Howler.orientation(this.fwd[0], this.fwd[1], this.fwd[2], this.up[0], this.up[1], this.up[2]); + } +}; +__publicField(HowlerAudioListener, "TypeName", "howler-audio-listener"); +__publicField(HowlerAudioListener, "Properties", { + /** Whether audio should be spatialized/positional. */ + spatial: { type: Type.Bool, default: true } +}); + +// node_modules/@wonderlandengine/components/dist/howler-audio-source.js +var import_howler2 = __toESM(require_howler(), 1); +var HowlerAudioSource = class extends Component3 { + start() { + this.audio = new Howl({ + src: [this.src], + loop: this.loop, + volume: this.volume, + autoplay: this.autoplay + }); + this.lastPlayedAudioId = null; + this.origin = new Float32Array(3); + this.lastOrigin = new Float32Array(3); + if (this.spatial && this.autoplay) { + this.updatePosition(); + this.play(); + } + } + update() { + if (!this.spatial || !this.lastPlayedAudioId) + return; + this.object.getTranslationWorld(this.origin); + if (Math.abs(this.lastOrigin[0] - this.origin[0]) > 5e-3 || Math.abs(this.lastOrigin[1] - this.origin[1]) > 5e-3 || Math.abs(this.lastOrigin[2] - this.origin[2]) > 5e-3) { + this.updatePosition(); + } + } + updatePosition() { + this.audio.pos(this.origin[0], this.origin[1], this.origin[2], this.lastPlayedAudioId); + this.lastOrigin.set(this.origin); + } + play() { + if (this.lastPlayedAudioId) + this.audio.stop(this.lastPlayedAudioId); + this.lastPlayedAudioId = this.audio.play(); + if (this.spatial) + this.updatePosition(); + } + stop() { + if (!this.lastPlayedAudioId) + return; + this.audio.stop(this.lastPlayedAudioId); + this.lastPlayedAudioId = null; + } + onDeactivate() { + this.stop(); + } +}; +__publicField(HowlerAudioSource, "TypeName", "howler-audio-source"); +__publicField(HowlerAudioSource, "Properties", { + /** Volume */ + volume: { type: Type.Float, default: 1 }, + /** Whether audio should be spatialized/positional */ + spatial: { type: Type.Bool, default: true }, + /** Whether to loop the sound */ + loop: { type: Type.Bool, default: false }, + /** Whether to start playing automatically */ + autoplay: { type: Type.Bool, default: false }, + /** URL to a sound file to play */ + src: { type: Type.String, default: "" } +}); + +// node_modules/@wonderlandengine/components/dist/utils/utils.js +function setFirstMaterialTexture(mat, texture, customTextureProperty) { + if (customTextureProperty !== "auto") { + mat[customTextureProperty] = texture; + return true; + } + const shader = mat.shader; + if (shader === "Flat Opaque Textured") { + mat.flatTexture = texture; + return true; + } else if (shader === "Phong Opaque Textured" || shader === "Foliage" || shader === "Phong Normalmapped" || shader === "Phong Lightmapped") { + mat.diffuseTexture = texture; + return true; + } else if (shader === "Particle") { + mat.mainTexture = texture; + return true; + } else if (shader === "DistanceFieldVector") { + mat.vectorTexture = texture; + return true; + } else if (shader === "Background" || shader === "Sky") { + mat.texture = texture; + return true; + } else if (shader === "Physical Opaque Textured") { + mat.albedoTexture = texture; + return true; + } + return false; +} + +// node_modules/@wonderlandengine/components/dist/image-texture.js +var ImageTexture = class extends Component3 { + start() { + if (!this.material) { + throw Error("image-texture: material property not set"); + } + this.engine.textures.load(this.url, "anonymous").then((texture) => { + const mat = this.material; + if (!setFirstMaterialTexture(mat, texture, this.textureProperty)) { + console.error("Shader", mat.shader, "not supported by image-texture"); + } + }).catch(console.err); + } +}; +__publicField(ImageTexture, "TypeName", "image-texture"); +__publicField(ImageTexture, "Properties", { + /** URL to download the image from */ + url: Property.string(), + /** Material to apply the video texture to */ + material: Property.material(), + /** Name of the texture property to set */ + textureProperty: Property.string("auto") +}); + +// node_modules/@wonderlandengine/components/dist/mouse-look.js +var MouseLookComponent = class extends Component3 { + init() { + this.currentRotationY = 0; + this.currentRotationX = 0; + this.origin = new Float32Array(3); + this.parentOrigin = new Float32Array(3); + this.rotationX = 0; + this.rotationY = 0; + } + start() { + document.addEventListener("mousemove", (e) => { + if (this.active && (this.mouseDown || !this.requireMouseDown)) { + this.rotationY = -this.sensitity * e.movementX / 100; + this.rotationX = -this.sensitity * e.movementY / 100; + this.currentRotationX += this.rotationX; + this.currentRotationY += this.rotationY; + this.currentRotationX = Math.min(1.507, this.currentRotationX); + this.currentRotationX = Math.max(-1.507, this.currentRotationX); + this.object.getTranslationWorld(this.origin); + const parent = this.object.parent; + if (parent !== null) { + parent.getTranslationWorld(this.parentOrigin); + vec3_exports.sub(this.origin, this.origin, this.parentOrigin); + } + this.object.resetTranslationRotation(); + this.object.rotateAxisAngleRad([1, 0, 0], this.currentRotationX); + this.object.rotateAxisAngleRad([0, 1, 0], this.currentRotationY); + this.object.translate(this.origin); + } + }); + const canvas2 = this.engine.canvas; + if (this.pointerLockOnClick) { + canvas2.addEventListener("mousedown", () => { + canvas2.requestPointerLock = canvas2.requestPointerLock || canvas2.mozRequestPointerLock || canvas2.webkitRequestPointerLock; + canvas2.requestPointerLock(); + }); + } + if (this.requireMouseDown) { + if (this.mouseButtonIndex == 2) { + canvas2.addEventListener("contextmenu", (e) => { + e.preventDefault(); + }, false); + } + canvas2.addEventListener("mousedown", (e) => { + if (e.button == this.mouseButtonIndex) { + this.mouseDown = true; + document.body.style.cursor = "grabbing"; + if (e.button == 1) { + e.preventDefault(); + return false; + } + } + }); + canvas2.addEventListener("mouseup", (e) => { + if (e.button == this.mouseButtonIndex) { + this.mouseDown = false; + document.body.style.cursor = "initial"; + } + }); + } + } +}; +__publicField(MouseLookComponent, "TypeName", "mouse-look"); +__publicField(MouseLookComponent, "Properties", { + /** Mouse look sensitivity */ + sensitity: { type: Type.Float, default: 0.25 }, + /** Require a mouse button to be pressed to control view. + * Otherwise view will allways follow mouse movement */ + requireMouseDown: { type: Type.Bool, default: true }, + /** If "moveOnClick" is enabled, mouse button which should + * be held down to control view */ + mouseButtonIndex: { type: Type.Int }, + /** Enables pointer lock on "mousedown" event on canvas */ + pointerLockOnClick: { type: Type.Bool, default: false } +}); + +// node_modules/@wonderlandengine/components/dist/player-height.js +var PlayerHeight = class extends Component3 { + start() { + this.object.resetTranslationRotation(); + this.object.translate([0, this.height, 0]); + this.onSessionStartCallback = this.onXRSessionStart.bind(this); + this.onSessionEndCallback = this.onXRSessionEnd.bind(this); + } + onActivate() { + this.engine.onXRSessionStart.add(this.onSessionStartCallback); + this.engine.onXRSessionEnd.add(this.onSessionEndCallback); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this.onSessionStartCallback); + this.engine.onXRSessionEnd.remove(this.onSessionEndCallback); + } + onXRSessionStart() { + if (!["local", "viewer"].includes(this.engine.xr.currentReferenceSpace)) { + this.object.resetTranslationRotation(); + } + } + onXRSessionEnd() { + if (!["local", "viewer"].includes(this.engine.xr.currentReferenceSpace)) { + this.object.resetTranslationRotation(); + this.object.translate([0, this.height, 0]); + } + } +}; +__publicField(PlayerHeight, "TypeName", "player-height"); +__publicField(PlayerHeight, "Properties", { + height: { type: Type.Float, default: 1.75 } +}); + +// node_modules/@wonderlandengine/components/dist/target-framerate.js +var TargetFramerate = class extends Component3 { + start() { + this.onSessionStartCallback = this.setTargetFramerate.bind(this); + } + onActivate() { + this.engine.onXRSessionStart.add(this.onSessionStartCallback); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this.onSessionStartCallback); + } + setTargetFramerate(s) { + if (s.supportedFrameRates && s.updateTargetFrameRate) { + const a = this.engine.xr.session.supportedFrameRates; + a.sort((a2, b) => Math.abs(a2 - this.framerate) - Math.abs(b - this.framerate)); + this.engine.xr.session.updateTargetFrameRate(a[0]); + } + } +}; +__publicField(TargetFramerate, "TypeName", "target-framerate"); +__publicField(TargetFramerate, "Properties", { + framerate: { type: Type.Float, default: 90 } +}); + +// node_modules/@wonderlandengine/components/dist/teleport.js +var TeleportComponent = class extends Component3 { + init() { + this._prevThumbstickAxis = new Float32Array(2); + this._tempVec = new Float32Array(3); + this._tempVec0 = new Float32Array(3); + this._currentIndicatorRotation = 0; + this.input = this.object.getComponent("input"); + if (!this.input) { + console.error(this.object.name, "generic-teleport-component.js: input component is required on the object"); + return; + } + if (!this.teleportIndicatorMeshObject) { + console.error(this.object.name, "generic-teleport-component.js: Teleport indicator mesh is missing"); + return; + } + if (!this.camRoot) { + console.error(this.object.name, "generic-teleport-component.js: camRoot not set"); + return; + } + this.isIndicating = false; + this.indicatorHidden = true; + this.hitSpot = new Float32Array(3); + this._hasHit = false; + this._extraRotation = 0; + this._currentStickAxes = new Float32Array(2); + } + start() { + if (this.cam) { + this.isMouseIndicating = false; + canvas.addEventListener("mousedown", this.onMouseDown.bind(this)); + canvas.addEventListener("mouseup", this.onMouseUp.bind(this)); + } + if (this.handedness == 0) { + const inputComp = this.object.getComponent("input"); + if (!inputComp) { + console.warn("teleport component on object", this.object.name, 'was configured with handedness "input component", but object has no input component.'); + } else { + this.handedness = inputComp.handedness; + this.input = inputComp; + } + } else { + this.handedness = ["left", "right"][this.handedness - 1]; + } + this.onSessionStartCallback = this.setupVREvents.bind(this); + this.teleportIndicatorMeshObject.active = false; + } + onActivate() { + this.engine.onXRSessionStart.add(this.onSessionStartCallback); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this.onSessionStartCallback); + } + /* Get current camera Y rotation */ + _getCamRotation() { + this.eyeLeft.getForward(this._tempVec); + this._tempVec[1] = 0; + vec3_exports.normalize(this._tempVec, this._tempVec); + return Math.atan2(this._tempVec[0], this._tempVec[2]); + } + update() { + let inputLength = 0; + if (this.gamepad && this.gamepad.axes) { + this._currentStickAxes[0] = this.gamepad.axes[2]; + this._currentStickAxes[1] = this.gamepad.axes[3]; + inputLength = Math.abs(this._currentStickAxes[0]) + Math.abs(this._currentStickAxes[1]); + } + if (!this.isIndicating && this._prevThumbstickAxis[1] >= this.thumbstickActivationThreshhold && this._currentStickAxes[1] < this.thumbstickActivationThreshhold) { + this.isIndicating = true; + } else if (this.isIndicating && inputLength < this.thumbstickDeactivationThreshhold) { + this.isIndicating = false; + this.teleportIndicatorMeshObject.active = false; + if (this._hasHit) { + this._teleportPlayer(this.hitSpot, this._extraRotation); + } + } + if (this.isIndicating && this.teleportIndicatorMeshObject && this.input) { + const origin = this._tempVec0; + this.object.getPositionWorld(origin); + const direction2 = this.object.getForwardWorld(this._tempVec); + let rayHit = this.rayHit = this.rayCastMode == 0 ? this.engine.scene.rayCast(origin, direction2, 1 << this.floorGroup) : this.engine.physics.rayCast(origin, direction2, 1 << this.floorGroup, this.maxDistance); + if (rayHit.hitCount > 0) { + this.indicatorHidden = false; + this._extraRotation = Math.PI + Math.atan2(this._currentStickAxes[0], this._currentStickAxes[1]); + this._currentIndicatorRotation = this._getCamRotation() + (this._extraRotation - Math.PI); + this.teleportIndicatorMeshObject.resetPositionRotation(); + this.teleportIndicatorMeshObject.rotateAxisAngleRad([0, 1, 0], this._currentIndicatorRotation); + this.teleportIndicatorMeshObject.translate(rayHit.locations[0]); + this.teleportIndicatorMeshObject.translate([ + 0, + this.indicatorYOffset, + 0 + ]); + this.teleportIndicatorMeshObject.active = true; + this.hitSpot.set(rayHit.locations[0]); + this._hasHit = true; + } else { + if (!this.indicatorHidden) { + this.teleportIndicatorMeshObject.active = false; + this.indicatorHidden = true; + } + this._hasHit = false; + } + } else if (this.teleportIndicatorMeshObject && this.isMouseIndicating) { + this.onMousePressed(); + } + this._prevThumbstickAxis.set(this._currentStickAxes); + } + setupVREvents(s) { + this.session = s; + s.addEventListener("end", function() { + this.gamepad = null; + this.session = null; + }.bind(this)); + if (s.inputSources && s.inputSources.length) { + for (let i = 0; i < s.inputSources.length; i++) { + let inputSource = s.inputSources[i]; + if (inputSource.handedness == this.handedness) { + this.gamepad = inputSource.gamepad; + } + } + } + s.addEventListener("inputsourceschange", function(e) { + if (e.added && e.added.length) { + for (let i = 0; i < e.added.length; i++) { + let inputSource = e.added[i]; + if (inputSource.handedness == this.handedness) { + this.gamepad = inputSource.gamepad; + } + } + } + }.bind(this)); + } + onMouseDown() { + this.isMouseIndicating = true; + } + onMouseUp() { + this.isMouseIndicating = false; + this.teleportIndicatorMeshObject.active = false; + if (this._hasHit) { + this._teleportPlayer(this.hitSpot, 0); + } + } + onMousePressed() { + let origin = [0, 0, 0]; + this.cam.getPositionWorld(origin); + const direction2 = this.cam.getForward(this._tempVec); + let rayHit = this.rayHit = this.rayCastMode == 0 ? this.engine.scene.rayCast(origin, direction2, 1 << this.floorGroup) : this.engine.physics.rayCast(origin, direction2, 1 << this.floorGroup, this.maxDistance); + if (rayHit.hitCount > 0) { + this.indicatorHidden = false; + direction2[1] = 0; + vec3_exports.normalize(direction2, direction2); + this._currentIndicatorRotation = -Math.sign(direction2[2]) * Math.acos(direction2[0]) - Math.PI * 0.5; + this.teleportIndicatorMeshObject.resetPositionRotation(); + this.teleportIndicatorMeshObject.rotateAxisAngleRad([0, 1, 0], this._currentIndicatorRotation); + this.teleportIndicatorMeshObject.translate(rayHit.locations[0]); + this.teleportIndicatorMeshObject.active = true; + this.hitSpot = rayHit.locations[0]; + this._hasHit = true; + } else { + if (!this.indicatorHidden) { + this.teleportIndicatorMeshObject.active = false; + this.indicatorHidden = true; + } + this._hasHit = false; + } + } + _teleportPlayer(newPosition, rotationToAdd) { + this.camRoot.rotateAxisAngleRad([0, 1, 0], rotationToAdd); + const p = this._tempVec; + const p1 = this._tempVec0; + if (this.session) { + this.eyeLeft.getPositionWorld(p); + this.eyeRight.getPositionWorld(p1); + vec3_exports.add(p, p, p1); + vec3_exports.scale(p, p, 0.5); + } else { + this.cam.getPositionWorld(p); + } + this.camRoot.getPositionWorld(p1); + vec3_exports.sub(p, p1, p); + p[0] += newPosition[0]; + p[1] = newPosition[1]; + p[2] += newPosition[2]; + this.camRoot.setPositionWorld(p); + } +}; +__publicField(TeleportComponent, "TypeName", "teleport"); +__publicField(TeleportComponent, "Properties", { + /** Object that will be placed as indiciation forwhere the player will teleport to. */ + teleportIndicatorMeshObject: { type: Type.Object }, + /** Root of the player, the object that will be positioned on teleportation. */ + camRoot: { type: Type.Object }, + /** Non-vr camera for use outside of VR */ + cam: { type: Type.Object }, + /** Left eye for use in VR*/ + eyeLeft: { type: Type.Object }, + /** Right eye for use in VR*/ + eyeRight: { type: Type.Object }, + /** Handedness for VR cursors to accept trigger events only from respective controller. */ + handedness: { + type: Type.Enum, + values: ["input component", "left", "right", "none"], + default: "input component" + }, + /** Collision group of valid "floor" objects that can be teleported on */ + floorGroup: { type: Type.Int, default: 1 }, + /** How far the thumbstick needs to be pushed to have the teleport target indicator show up */ + thumbstickActivationThreshhold: { type: Type.Float, default: -0.7 }, + /** How far the thumbstick needs to be released to execute the teleport */ + thumbstickDeactivationThreshhold: { type: Type.Float, default: 0.3 }, + /** Offset to apply to the indicator object, e.g. to avoid it from Z-fighting with the floor */ + indicatorYOffset: { type: Type.Float, default: 0.01 }, + /** Mode for raycasting, whether to use PhysX or simple collision components */ + rayCastMode: { + type: Type.Enum, + values: ["collision", "physx"], + default: "collision" + }, + /** Max distance for PhysX raycast */ + maxDistance: { type: Type.Float, default: 100 } +}); + +// node_modules/@wonderlandengine/components/dist/trail.js +var direction = vec3_exports.create(); +var offset = vec3_exports.create(); +var normal = vec3_exports.create(); +var Trail = class extends Component3 { + init() { + this.points = new Array(this.segments + 1); + for (let i = 0; i < this.points.length; ++i) { + this.points[i] = vec3_exports.create(); + } + this.currentPointOffset = 0; + this.up = [0, 1, 0]; + this.timeTillNext = this.interval; + } + start() { + this.trailContainer = this.engine.scene.addObject(); + this.meshComp = this.trailContainer.addComponent("mesh"); + this.meshComp.material = this.material; + const vertexCount = 2 * this.points.length; + this.indexData = new Uint32Array(6 * this.segments); + for (let i = 0, v = 0; i < vertexCount - 2; i += 2, v += 6) { + this.indexData.subarray(v, v + 6).set([i + 1, i + 0, i + 2, i + 2, i + 3, i + 1]); + } + this.mesh = new Mesh(this.engine, { + vertexCount, + indexData: this.indexData, + indexType: MeshIndexType.UnsignedInt + }); + this.meshComp.mesh = this.mesh; + } + updateVertices() { + const positions = this.mesh.attribute(MeshAttribute.Position); + const texCoords = this.mesh.attribute(MeshAttribute.TextureCoordinate); + const normals = this.mesh.attribute(MeshAttribute.Normal); + vec3_exports.set(direction, 0, 0, 0); + for (let i = 0; i < this.points.length; ++i) { + const curr = this.points[(this.currentPointIndex + i + 1) % this.points.length]; + const next = this.points[(this.currentPointIndex + i + 2) % this.points.length]; + if (i !== this.points.length - 1) { + vec3_exports.sub(direction, next, curr); + } + vec3_exports.cross(offset, this.up, direction); + vec3_exports.normalize(offset, offset); + const timeFraction = 1 - this.timeTillNext / this.interval; + const fraction = (i - timeFraction) / this.segments; + vec3_exports.scale(offset, offset, (this.taper ? fraction : 1) * this.width / 2); + positions.set(i * 2, [ + curr[0] - offset[0], + curr[1] - offset[1], + curr[2] - offset[2] + ]); + positions.set(i * 2 + 1, [ + curr[0] + offset[0], + curr[1] + offset[1], + curr[2] + offset[2] + ]); + if (normals) { + vec3_exports.cross(normal, direction, offset); + vec3_exports.normalize(normal, normal); + normals.set(i * 2, normal); + normals.set(i * 2 + 1, normal); + } + if (texCoords) { + texCoords.set(i * 2, [0, fraction]); + texCoords.set(i * 2 + 1, [1, fraction]); + } + } + this.mesh.update(); + } + resetTrail() { + this.object.getTranslationWorld(this.points[0]); + for (let i = 1; i < this.points.length; ++i) { + vec3_exports.copy(this.points[i], this.points[0]); + } + this.currentPointIndex = 0; + this.timeTillNext = this.interval; + } + update(dt) { + this.timeTillNext -= dt; + if (dt > this.resetThreshold) { + this.resetTrail(); + } + if (this.timeTillNext < 0) { + this.currentPointIndex = (this.currentPointIndex + 1) % this.points.length; + this.timeTillNext = this.timeTillNext % this.interval + this.interval; + } + this.object.getTranslationWorld(this.points[this.currentPointIndex]); + this.updateVertices(); + } + onActivate() { + this.resetTrail(); + } + onDestroy() { + this.trailContainer.destroy(); + this.mesh.destroy(); + } +}; +__publicField(Trail, "TypeName", "trail"); +__publicField(Trail, "Properties", { + /** The material to apply to the trail mesh */ + material: { type: Type.Material }, + /** The number of segments in the trail mesh */ + segments: { type: Type.Int, default: 50 }, + /** The time interval before recording a new point */ + interval: { type: Type.Float, default: 0.1 }, + /** The width of the trail (in world space) */ + width: { type: Type.Float, default: 1 }, + /** Whether or not the trail should taper off */ + taper: { type: Type.Bool, default: true }, + /** + * The maximum delta time in seconds, above which the trail resets. + * This prevents the trail from jumping around when updates happen + * infrequently (e.g. when the tab doesn't have focus). + */ + resetThreshold: { type: Type.Float, default: 0.5 } +}); + +// node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js +Math.clamp = function(v, a, b) { + return Math.max(a, Math.min(v, b)); +}; +var twoJointIK = function() { + let ta = new Float32Array(3); + let ca = new Float32Array(3); + let ba = new Float32Array(3); + let ab = new Float32Array(3); + let cb = new Float32Array(3); + let axis0 = new Float32Array(3); + let axis1 = new Float32Array(3); + let temp = new Float32Array(4); + let r0 = new Float32Array(4); + let r1 = new Float32Array(4); + let r2 = new Float32Array(4); + return function(a_lr, b_lr, a, b, c, t, eps, a_gr, b_gr, helper) { + vec3_exports.sub(ba, b, a); + const lab = vec3_exports.length(ba); + vec3_exports.sub(ta, b, c); + const lcb = vec3_exports.length(ta); + vec3_exports.sub(ta, t, a); + const lat = Math.clamp(vec3_exports.length(ta), eps, lab + lcb - eps); + vec3_exports.sub(ca, c, a); + vec3_exports.sub(ab, a, b); + vec3_exports.sub(cb, c, b); + vec3_exports.normalize(ca, ca); + vec3_exports.normalize(ba, ba); + vec3_exports.normalize(ab, ab); + vec3_exports.normalize(cb, cb); + vec3_exports.normalize(ta, ta); + const ac_ab_0 = Math.acos(Math.clamp(vec3_exports.dot(ca, ba), -1, 1)); + const ba_bc_0 = Math.acos(Math.clamp(vec3_exports.dot(ab, cb), -1, 1)); + const ac_at_0 = Math.acos(Math.clamp(vec3_exports.dot(ca, ta), -1, 1)); + const ac_ab_1 = Math.acos(Math.clamp((lcb * lcb - lab * lab - lat * lat) / (-2 * lab * lat), -1, 1)); + const ba_bc_1 = Math.acos(Math.clamp((lat * lat - lab * lab - lcb * lcb) / (-2 * lab * lcb), -1, 1)); + vec3_exports.sub(ca, c, a); + vec3_exports.sub(ba, b, a); + vec3_exports.sub(ta, t, a); + vec3_exports.cross(axis0, ca, ba); + vec3_exports.cross(axis1, ca, ta); + if (helper) { + vec3_exports.sub(ba, helper, b); + vec3_exports.transformQuat(ba, [0, 0, -1], b_gr); + } else { + vec3_exports.sub(ba, b, a); + } + const l = vec3_exports.length(axis0); + if (l == 0) { + axis0.set([1, 0, 0]); + } else { + vec3_exports.scale(axis0, axis0, 1 / l); + } + vec3_exports.normalize(axis1, axis1); + quat_exports.conjugate(a_gr, a_gr); + quat_exports.setAxisAngle(r0, vec3_exports.transformQuat(temp, axis0, a_gr), ac_ab_1 - ac_ab_0); + quat_exports.setAxisAngle(r2, vec3_exports.transformQuat(temp, axis1, a_gr), ac_at_0); + quat_exports.mul(a_lr, a_lr, quat_exports.mul(temp, r0, r2)); + quat_exports.normalize(a_lr, a_lr); + quat_exports.conjugate(b_gr, b_gr); + quat_exports.setAxisAngle(r1, vec3_exports.transformQuat(temp, axis0, b_gr), ba_bc_1 - ba_bc_0); + quat_exports.mul(b_lr, b_lr, r1); + quat_exports.normalize(b_lr, b_lr); + }; +}(); +var TwoJointIkSolver = class extends Component3 { + init() { + this.pos = new Float32Array(3 * 7); + this.p = [ + this.pos.subarray(0, 3), + this.pos.subarray(3, 6), + this.pos.subarray(6, 9), + this.pos.subarray(9, 12), + this.pos.subarray(12, 15), + this.pos.subarray(15, 18), + this.pos.subarray(18, 21) + ]; + } + update() { + const p = this.p; + this.root.getTranslationWorld(p[0]); + this.middle.getTranslationWorld(p[1]); + this.end.getTranslationWorld(p[2]); + this.target.getTranslationWorld(p[3]); + const tla = p[4]; + const tlb = p[5]; + this.root.getTranslationLocal(tla); + this.middle.getTranslationLocal(tlb); + if (this.helper) + this.helper.getTranslationWorld(p[6]); + twoJointIK(this.root.transformLocal, this.middle.transformLocal, p[0], p[1], p[2], p[3], 0.01, this.root.transformWorld.subarray(0, 4), this.middle.transformWorld.subarray(0, 4), this.helper ? p[6] : null); + this.root.setTranslationLocal(tla); + this.middle.setTranslationLocal(tlb); + this.root.setDirty(); + this.middle.setDirty(); + } +}; +__publicField(TwoJointIkSolver, "TypeName", "two-joint-ik-solver"); +__publicField(TwoJointIkSolver, "Properties", { + /** Root bone, never moves */ + root: { type: Type.Object }, + /** Bone attached to the root */ + middle: { type: Type.Object }, + /** Bone attached to the middle */ + end: { type: Type.Object }, + /** Target the joins should reach for */ + target: { type: Type.Object }, + /** Helper object to use to determine joint rotation axis */ + helper: { type: Type.Object } +}); + +// node_modules/@wonderlandengine/components/dist/video-texture.js +var VideoTexture = class extends Component3 { + init() { + if (!this.material) { + throw Error("video-texture: material property not set"); + } + this.loaded = false; + this.frameUpdateRequested = true; + } + start() { + this.video = document.createElement("video"); + this.video.src = this.url; + this.video.crossOrigin = "anonymous"; + this.video.playsInline = true; + this.video.loop = this.loop; + this.video.muted = this.muted; + this.video.addEventListener("playing", () => { + this.loaded = true; + }); + if (this.autoplay) { + const playAfterUserGesture = () => { + this.video.play(); + window.removeEventListener("click", playAfterUserGesture); + window.removeEventListener("touchstart", playAfterUserGesture); + }; + window.addEventListener("click", playAfterUserGesture); + window.addEventListener("touchstart", playAfterUserGesture); + } + } + applyTexture() { + const mat = this.material; + const shader = mat.shader; + const texture = this.texture = new Texture(this.engine, this.video); + if (!setFirstMaterialTexture(mat, texture, this.textureProperty)) { + console.error("Shader", shader, "not supported by video-texture"); + } + if ("requestVideoFrameCallback" in this.video) { + this.video.requestVideoFrameCallback(this.updateVideo.bind(this)); + } else { + this.video.addEventListener("timeupdate", () => { + this.frameUpdateRequested = true; + }); + } + } + update(dt) { + if (this.loaded && this.frameUpdateRequested) { + if (this.texture) { + this.texture.update(); + } else { + this.applyTexture(); + } + this.frameUpdateRequested = false; + } + } + updateVideo() { + this.frameUpdateRequested = true; + this.video.requestVideoFrameCallback(this.updateVideo.bind(this)); + } +}; +__publicField(VideoTexture, "TypeName", "video-texture"); +__publicField(VideoTexture, "Properties", { + /** URL to download video from */ + url: Property.string(), + /** Material to apply the video texture to */ + material: Property.material(), + /** Whether to loop the video */ + loop: Property.bool(true), + /** Whether to automatically start playing the video */ + autoplay: Property.bool(true), + /** Whether to mute sound */ + muted: Property.bool(true), + /** Name of the texture property to set */ + textureProperty: Property.string("auto") +}); + +// node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js +var VrModeActiveSwitch = class extends Component3 { + start() { + this.components = []; + this.getComponents(this.object); + this.onXRSessionEnd(); + this.onSessionStartCallback = this.onXRSessionStart.bind(this); + this.onSessionEndCallback = this.onXRSessionEnd.bind(this); + } + onActivate() { + this.engine.onXRSessionStart.add(this.onSessionStartCallback); + this.engine.onXRSessionEnd.add(this.onSessionEndCallback); + } + onDeactivate() { + this.engine.onXRSessionStart.remove(this.onSessionStartCallback); + this.engine.onXRSessionEnd.remove(this.onSessionEndCallback); + } + getComponents(obj) { + const comps = obj.getComponents().filter((c) => c.type !== "vr-mode-active-switch"); + this.components = this.components.concat(comps); + if (this.affectChildren) { + let children = obj.children; + for (let i = 0; i < children.length; ++i) { + this.getComponents(children[i]); + } + } + } + setComponentsActive(active) { + const comps = this.components; + for (let i = 0; i < comps.length; ++i) { + comps[i].active = active; + } + } + onXRSessionStart() { + this.setComponentsActive(this.activateComponents == 0); + } + onXRSessionEnd() { + this.setComponentsActive(this.activateComponents != 0); + } +}; +__publicField(VrModeActiveSwitch, "TypeName", "vr-mode-active-switch"); +__publicField(VrModeActiveSwitch, "Properties", { + /** When components should be active: In VR or when not in VR */ + activateComponents: { + type: Type.Enum, + values: ["in VR", "in non-VR"], + default: "in VR" + }, + /** Whether child object's components should be affected */ + affectChildren: { type: Type.Bool, default: true } +}); + +// node_modules/@wonderlandengine/components/dist/plane-detection.js +var import_earcut = __toESM(require_earcut(), 1); +var __decorate5 = function(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") + r = Reflect.decorate(decorators, target, key, desc); + else + for (var i = decorators.length - 1; i >= 0; i--) + if (d = decorators[i]) + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var tempVec32 = new Float32Array(3); +function extentsFromContour(out, points) { + if (points.length == 0) + return out; + let absMaxX = Math.abs(points[0].x); + let absMaxZ = Math.abs(points[0].z); + for (let i = 1; i < points.length; ++i) { + absMaxX = Math.max(absMaxX, Math.abs(points[i].x)); + absMaxZ = Math.max(absMaxZ, Math.abs(points[i].z)); + } + out[0] = absMaxX; + out[1] = 0; + out[2] = absMaxZ; +} +function planeMeshFromContour(engine2, points, meshToUpdate = null) { + const vertexCount = points.length; + const vertices = new Float32Array(vertexCount * 2); + for (let i = 0, d = 0; i < vertexCount; ++i, d += 2) { + vertices[d] = points[i].x; + vertices[d + 1] = points[i].z; + } + const triangles = (0, import_earcut.default)(vertices); + const mesh = meshToUpdate || new Mesh(engine2, { + vertexCount, + /* Assumption here that we will never have more than 256 points + * in the detected plane meshes! */ + indexType: MeshIndexType.UnsignedByte, + indexData: triangles + }); + if (mesh.vertexCount !== vertexCount) { + console.warn("vertexCount of meshToUpdate did not match required vertexCount"); + return mesh; + } + const positions = mesh.attribute(MeshAttribute.Position); + const textureCoords = mesh.attribute(MeshAttribute.TextureCoordinate); + const normals = mesh.attribute(MeshAttribute.Normal); + tempVec32[1] = 0; + for (let i = 0, s = 0; i < vertexCount; ++i, s += 2) { + tempVec32[0] = vertices[s]; + tempVec32[2] = vertices[s + 1]; + positions.set(i, tempVec32); + } + textureCoords?.set(0, vertices); + if (normals) { + tempVec32[0] = 0; + tempVec32[1] = 1; + tempVec32[2] = 0; + for (let i = 0; i < vertexCount; ++i) { + normals.set(i, tempVec32); + } + } + if (meshToUpdate) + mesh.update(); + return mesh; +} +var _planeLost, planeLost_fn, _planeFound, planeFound_fn, _planeUpdate, planeUpdate_fn, _planeUpdatePose, planeUpdatePose_fn; +var PlaneDetection = class extends Component3 { + constructor() { + super(...arguments); + __privateAdd(this, _planeLost); + __privateAdd(this, _planeFound); + __privateAdd(this, _planeUpdate); + __privateAdd(this, _planeUpdatePose); + /** + * Material to assign to created plane meshes or `null` if meshes should not be created. + */ + __publicField(this, "planeMaterial", null); + /** + * Collision mask to assign to newly created collision components or a negative value if + * collision components should not be created. + */ + __publicField(this, "collisionMask", -1); + /** Map of all planes and their last updated timestamps */ + __publicField(this, "planes", /* @__PURE__ */ new Map()); + /** Objects generated for each XRPlane */ + __publicField(this, "planeObjects", /* @__PURE__ */ new Map()); + /** Called when a plane starts tracking */ + __publicField(this, "onPlaneFound", new Emitter()); + /** Called when a plane stops tracking */ + __publicField(this, "onPlaneLost", new Emitter()); + } + update() { + if (!this.engine.xr?.frame) + return; + if (this.engine.xr.frame.detectedPlanes === void 0) { + console.error("plane-detection: WebXR feature not available."); + this.active = false; + return; + } + const detectedPlanes = this.engine.xr.frame.detectedPlanes; + for (const [plane, _] of this.planes) { + if (!detectedPlanes.has(plane)) { + __privateMethod(this, _planeLost, planeLost_fn).call(this, plane); + } + } + detectedPlanes.forEach((plane) => { + if (this.planes.has(plane)) { + if (plane.lastChangedTime > this.planes.get(plane)) { + __privateMethod(this, _planeUpdate, planeUpdate_fn).call(this, plane); + } + } else { + __privateMethod(this, _planeFound, planeFound_fn).call(this, plane); + } + __privateMethod(this, _planeUpdatePose, planeUpdatePose_fn).call(this, plane); + }); + } +}; +_planeLost = new WeakSet(); +planeLost_fn = function(plane) { + this.planes.delete(plane); + const o = this.planeObjects.get(plane); + this.onPlaneLost.notify(plane, o); + if (o.objectId > 0) + o.destroy(); +}; +_planeFound = new WeakSet(); +planeFound_fn = function(plane) { + this.planes.set(plane, plane.lastChangedTime); + const o = this.engine.scene.addObject(this.object); + this.planeObjects.set(plane, o); + if (this.planeMaterial) { + o.addComponent(MeshComponent, { + mesh: planeMeshFromContour(this.engine, plane.polygon), + material: this.planeMaterial + }); + } + if (this.collisionMask >= 0) { + extentsFromContour(tempVec32, plane.polygon); + tempVec32[1] = 0.025; + o.addComponent(CollisionComponent, { + group: this.collisionMask, + collider: Collider.Box, + extents: tempVec32 + }); + } + this.onPlaneFound.notify(plane, o); +}; +_planeUpdate = new WeakSet(); +planeUpdate_fn = function(plane) { + this.planes.set(plane, plane.lastChangedTime); + const planeMesh = this.planeObjects.get(plane).getComponent(MeshComponent); + if (!planeMesh) + return; + planeMeshFromContour(this.engine, plane.polygon, planeMesh.mesh); +}; +_planeUpdatePose = new WeakSet(); +planeUpdatePose_fn = function(plane) { + const o = this.planeObjects.get(plane); + const pose = this.engine.xr.frame.getPose(plane.planeSpace, this.engine.xr.currentReferenceSpace); + if (!pose) { + o.active = false; + return; + } + setXRRigidTransformLocal(o, pose.transform); +}; +__publicField(PlaneDetection, "TypeName", "plane-detection"); +__decorate5([ + property.material() +], PlaneDetection.prototype, "planeMaterial", void 0); +__decorate5([ + property.int() +], PlaneDetection.prototype, "collisionMask", void 0); + +// node_modules/@wonderlandengine/components/dist/vrm.js +var VRM_ROLL_AXES = { + X: [1, 0, 0], + Y: [0, 1, 0], + Z: [0, 0, 1] +}; +var VRM_AIM_AXES = { + PositiveX: [1, 0, 0], + NegativeX: [-1, 0, 0], + PositiveY: [0, 1, 0], + NegativeY: [0, -1, 0], + PositiveZ: [0, 0, 1], + NegativeZ: [0, 0, -1] +}; +var Vrm = class extends Component3 { + /** Meta information about the VRM model */ + meta = null; + /** The humanoid bones of the VRM model */ + bones = { + /* Torso */ + hips: null, + spine: null, + chest: null, + upperChest: null, + neck: null, + /* Head */ + head: null, + leftEye: null, + rightEye: null, + jaw: null, + /* Legs */ + leftUpperLeg: null, + leftLowerLeg: null, + leftFoot: null, + leftToes: null, + rightUpperLeg: null, + rightLowerLeg: null, + rightFoot: null, + rightToes: null, + /* Arms */ + leftShoulder: null, + leftUpperArm: null, + leftLowerArm: null, + leftHand: null, + rightShoulder: null, + rightUpperArm: null, + rightLowerArm: null, + rightHand: null, + /* Fingers */ + leftThumbMetacarpal: null, + leftThumbProximal: null, + leftThumbDistal: null, + leftIndexProximal: null, + leftIndexIntermediate: null, + leftIndexDistal: null, + leftMiddleProximal: null, + leftMiddleIntermediate: null, + leftMiddleDistal: null, + leftRingProximal: null, + leftRingIntermediate: null, + leftRingDistal: null, + leftLittleProximal: null, + leftLittleIntermediate: null, + leftLittleDistal: null, + rightThumbMetacarpal: null, + rightThumbProximal: null, + rightThumbDistal: null, + rightIndexProximal: null, + rightIndexIntermediate: null, + rightIndexDistal: null, + rightMiddleProximal: null, + rightMiddleIntermediate: null, + rightMiddleDistal: null, + rightRingProximal: null, + rightRingIntermediate: null, + rightRingDistal: null, + rightLittleProximal: null, + rightLittleIntermediate: null, + rightLittleDistal: null + }; + /** Rotations of the bones in the rest pose (T-pose) */ + restPose = {}; + /* All node constraints, ordered to deal with dependencies */ + _nodeConstraints = []; + /* VRMC_springBone chains */ + _springChains = []; + /* Spherical colliders for spring bones */ + _sphereColliders = []; + /* Capsule shaped colliders for spring bones */ + _capsuleColliders = []; + /* Indicates which meshes are rendered in first/third person views */ + _firstPersonAnnotations = []; + /* Contains details for (bone type) lookAt behaviour */ + _lookAt = null; + /* Whether or not the VRM component has been initialized with `initializeVrm` */ + _initialized = false; + init() { + this._tempV3 = vec3_exports.create(); + this._tempV3A = vec3_exports.create(); + this._tempV3B = vec3_exports.create(); + this._tempQuat = quat_exports.create(); + this._tempQuatA = quat_exports.create(); + this._tempQuatB = quat_exports.create(); + this._tempMat4A = mat4_exports.create(); + this._tempQuat2 = quat2_exports.create(); + this._tailToShape = vec3_exports.create(); + this._headToTail = vec3_exports.create(); + this._inertia = vec3_exports.create(); + this._stiffness = vec3_exports.create(); + this._external = vec3_exports.create(); + this._rightVector = vec3_exports.set(vec3_exports.create(), 1, 0, 0); + this._upVector = vec3_exports.set(vec3_exports.create(), 0, 1, 0); + this._forwardVector = vec3_exports.set(vec3_exports.create(), 0, 0, 1); + this._identityQuat = quat_exports.identity(quat_exports.create()); + this._rad2deg = 180 / Math.PI; + } + start() { + if (!this.src) { + console.error("vrm: src property not set"); + return; + } + this.engine.scene.append(this.src, { loadGltfExtensions: true }).then(({ root, extensions }) => { + root.children.forEach((child) => child.parent = this.object); + this._initializeVrm(extensions); + root.destroy(); + }); + } + /** + * Parses the VRM glTF extensions and initializes the vrm component. + * @param {GLTFExtensions} extensions The glTF extensions for the VRM model + */ + _initializeVrm(extensions) { + if (this._initialized) { + throw Error("VRM component has already been initialized"); + } + const VRMC_vrm = extensions.root["VRMC_vrm"]; + if (!VRMC_vrm) { + throw Error("Missing VRM extensions"); + } + if (VRMC_vrm.specVersion !== "1.0") { + throw Error(`Unsupported VRM version, only 1.0 is supported, but encountered '${VRMC_vrm.specVersion}'`); + } + this.meta = VRMC_vrm.meta; + this._parseHumanoid(VRMC_vrm.humanoid, extensions); + if (VRMC_vrm.firstPerson) { + this._parseFirstPerson(VRMC_vrm.firstPerson, extensions); + } + if (VRMC_vrm.lookAt) { + this._parseLookAt(VRMC_vrm.lookAt); + } + this._findAndParseNodeConstraints(extensions); + const springBone = extensions.root["VRMC_springBone"]; + if (springBone) { + this._parseAndInitializeSpringBones(springBone, extensions); + } + this._initialized = true; + } + _parseHumanoid(humanoid, extensions) { + for (const boneName in humanoid.humanBones) { + if (!(boneName in this.bones)) { + console.warn(`Unrecognized bone '${boneName}'`); + continue; + } + const node = humanoid.humanBones[boneName].node; + const objectId = extensions.idMapping[node]; + this.bones[boneName] = this.engine.wrapObject(objectId); + this.restPose[boneName] = quat_exports.copy(quat_exports.create(), this.bones[boneName].rotationLocal); + } + } + _parseFirstPerson(firstPerson, extensions) { + for (const meshAnnotation of firstPerson.meshAnnotations) { + const annotation = { + node: this.engine.wrapObject(extensions.idMapping[meshAnnotation.node]), + firstPerson: true, + thirdPerson: true + }; + switch (meshAnnotation.type) { + case "firstPersonOnly": + annotation.thirdPerson = false; + break; + case "thirdPersonOnly": + annotation.firstPerson = false; + break; + case "both": + break; + case "auto": + console.warn("First person mesh annotation type 'auto' is not supported, treating as 'both'!"); + break; + default: + console.error(`Invalid mesh annotation type '${meshAnnotation.type}'`); + break; + } + this._firstPersonAnnotations.push(annotation); + } + } + _parseLookAt(lookAt2) { + if (lookAt2.type !== "bone") { + console.warn(`Unsupported lookAt type '${lookAt2.type}', only 'bone' is supported`); + return; + } + const parseRangeMap = (rangeMap) => { + return { + inputMaxValue: rangeMap.inputMaxValue, + outputScale: rangeMap.outputScale + }; + }; + this._lookAt = { + offsetFromHeadBone: lookAt2.offsetFromHeadBone || [0, 0, 0], + horizontalInner: parseRangeMap(lookAt2.rangeMapHorizontalInner), + horizontalOuter: parseRangeMap(lookAt2.rangeMapHorizontalOuter), + verticalDown: parseRangeMap(lookAt2.rangeMapVerticalDown), + verticalUp: parseRangeMap(lookAt2.rangeMapVerticalUp) + }; + } + _findAndParseNodeConstraints(extensions) { + const traverse = (object) => { + const nodeExtensions = extensions.node[object.objectId]; + if (nodeExtensions && "VRMC_node_constraint" in nodeExtensions) { + const nodeConstraintExtension = nodeExtensions["VRMC_node_constraint"]; + const constraint = nodeConstraintExtension.constraint; + let type, axis; + if ("roll" in constraint) { + type = "roll"; + axis = VRM_ROLL_AXES[constraint.roll.rollAxis]; + } else if ("aim" in constraint) { + type = "aim"; + axis = VRM_AIM_AXES[constraint.aim.aimAxis]; + } else if ("rotation" in constraint) { + type = "rotation"; + } + if (type) { + const source = this.engine.wrapObject(extensions.idMapping[constraint[type].source]); + this._nodeConstraints.push({ + type, + source, + destination: object, + axis, + weight: constraint[type].weight, + /* Rest pose */ + destinationRestLocalRotation: quat_exports.copy(quat_exports.create(), object.rotationLocal), + sourceRestLocalRotation: quat_exports.copy(quat_exports.create(), source.rotationLocal), + sourceRestLocalRotationInv: quat_exports.invert(quat_exports.create(), source.rotationLocal) + }); + } else { + console.warn("Unrecognized or invalid VRMC_node_constraint, ignoring it"); + } + } + for (const child of object.children) { + traverse(child); + } + }; + traverse(this.object); + } + _parseAndInitializeSpringBones(springBone, extensions) { + const colliders = (springBone.colliders || []).map((collider, i) => { + const shapeType = "capsule" in collider.shape ? "capsule" : "sphere"; + return { + id: i, + object: this.engine.wrapObject(extensions.idMapping[collider.node]), + shape: { + isCapsule: shapeType === "capsule", + radius: collider.shape[shapeType].radius, + offset: collider.shape[shapeType].offset, + tail: collider.shape[shapeType].tail + }, + cache: { + head: vec3_exports.create(), + tail: vec3_exports.create() + } + }; + }); + this._sphereColliders = colliders.filter((c) => !c.shape.isCapsule); + this._capsuleColliders = colliders.filter((c) => c.shape.isCapsule); + const colliderGroups = (springBone.colliderGroups || []).map((group) => ({ + name: group.name, + colliders: group.colliders.map((c) => colliders[c]) + })); + for (const spring of springBone.springs) { + const joints = []; + for (const joint of spring.joints) { + const springJoint = { + hitRadius: 0, + stiffness: 1, + gravityPower: 0, + gravityDir: [0, -1, 0], + dragForce: 0.5, + node: null, + state: null + }; + Object.assign(springJoint, joint); + springJoint.node = this.engine.wrapObject(extensions.idMapping[springJoint.node]); + joints.push(springJoint); + } + const springChainColliders = (spring.colliderGroups || []).flatMap((cg) => colliderGroups[cg].colliders); + this._springChains.push({ + name: spring.name, + center: spring.center ? this.engine.wrapObject(extensions.idMapping[spring.center]) : null, + joints, + sphereColliders: springChainColliders.filter((c) => !c.shape.isCapsule), + capsuleColliders: springChainColliders.filter((c) => c.shape.isCapsule) + }); + } + for (const springChain of this._springChains) { + for (let i = 0; i < springChain.joints.length - 1; ++i) { + const springBoneJoint = springChain.joints[i]; + const childSpringBoneJoint = springChain.joints[i + 1]; + const springBonePosition = springBoneJoint.node.getTranslationWorld(vec3_exports.create()); + const childSpringBonePosition = childSpringBoneJoint.node.getTranslationWorld(vec3_exports.create()); + const boneDirection = vec3_exports.subtract(this._tempV3A, springBonePosition, childSpringBonePosition); + const state2 = { + prevTail: childSpringBonePosition, + currentTail: vec3_exports.copy(vec3_exports.create(), childSpringBonePosition), + initialLocalRotation: quat_exports.copy(quat_exports.create(), springBoneJoint.node.rotationLocal), + initialLocalTransformInvert: quat2_exports.invert(quat2_exports.create(), springBoneJoint.node.transformLocal), + boneAxis: vec3_exports.normalize(vec3_exports.create(), childSpringBoneJoint.node.getTranslationLocal(this._tempV3)), + /* Ensure bone length is at least 1cm to avoid jittery behaviour from zero-length bones */ + boneLength: Math.max(0.01, vec3_exports.length(boneDirection)), + /* Tail positions in center space, if needed */ + prevTailCenter: null, + currentTailCenter: null + }; + if (springChain.center) { + state2.prevTailCenter = springChain.center.transformPointInverseWorld(vec3_exports.create(), childSpringBonePosition); + state2.currentTailCenter = vec3_exports.copy(vec3_exports.create(), childSpringBonePosition); + } + springBoneJoint.state = state2; + } + } + } + update(dt) { + if (!this._initialized) { + return; + } + this._resolveLookAt(); + this._resolveConstraints(); + this._updateSpringBones(dt); + } + _rangeMap(rangeMap, input) { + const maxValue = rangeMap.inputMaxValue; + const outputScale = rangeMap.outputScale; + return Math.min(input, maxValue) / maxValue * outputScale; + } + _resolveLookAt() { + if (!this._lookAt || !this.lookAtTarget) { + return; + } + const lookAtSource = this.bones.head.transformPointWorld(this._tempV3A, this._lookAt.offsetFromHeadBone); + const lookAtTarget = this.lookAtTarget.getTranslationWorld(this._tempV3B); + const lookAtDirection = vec3_exports.sub(this._tempV3A, lookAtTarget, lookAtSource); + vec3_exports.normalize(lookAtDirection, lookAtDirection); + this.bones.head.parent.transformVectorInverseWorld(lookAtDirection); + const z = vec3_exports.dot(lookAtDirection, this._forwardVector); + const x = vec3_exports.dot(lookAtDirection, this._rightVector); + const yaw = Math.atan2(x, z) * this._rad2deg; + const xz = Math.sqrt(x * x + z * z); + const y = vec3_exports.dot(lookAtDirection, this._upVector); + let pitch = Math.atan2(-y, xz) * this._rad2deg; + if (pitch > 0) { + pitch = this._rangeMap(this._lookAt.verticalDown, pitch); + } else { + pitch = -this._rangeMap(this._lookAt.verticalUp, -pitch); + } + if (this.bones.leftEye) { + let yawLeft = yaw; + if (yawLeft > 0) { + yawLeft = this._rangeMap(this._lookAt.horizontalInner, yawLeft); + } else { + yawLeft = -this._rangeMap(this._lookAt.horizontalOuter, -yawLeft); + } + const eyeRotation = quat_exports.fromEuler(this._tempQuatA, pitch, yawLeft, 0); + this.bones.leftEye.rotationLocal = quat_exports.multiply(eyeRotation, this.restPose.leftEye, eyeRotation); + } + if (this.bones.rightEye) { + let yawRight = yaw; + if (yawRight > 0) { + yawRight = this._rangeMap(this._lookAt.horizontalOuter, yawRight); + } else { + yawRight = -this._rangeMap(this._lookAt.horizontalInner, -yawRight); + } + const eyeRotation = quat_exports.fromEuler(this._tempQuatA, pitch, yawRight, 0); + this.bones.rightEye.rotationLocal = quat_exports.multiply(eyeRotation, this.restPose.rightEye, eyeRotation); + } + } + _resolveConstraints() { + for (const nodeConstraint of this._nodeConstraints) { + this._resolveConstraint(nodeConstraint); + } + } + _resolveConstraint(nodeConstraint) { + const dstRestQuat = nodeConstraint.destinationRestLocalRotation; + const srcRestQuatInv = nodeConstraint.sourceRestLocalRotationInv; + const targetQuat = quat_exports.identity(this._tempQuatA); + switch (nodeConstraint.type) { + case "roll": + { + const deltaSrcQuat = quat_exports.multiply(this._tempQuatA, srcRestQuatInv, nodeConstraint.source.rotationLocal); + const deltaSrcQuatInParent = quat_exports.multiply(this._tempQuatA, nodeConstraint.sourceRestLocalRotation, deltaSrcQuat); + quat_exports.mul(deltaSrcQuatInParent, deltaSrcQuatInParent, srcRestQuatInv); + const dstRestQuatInv = quat_exports.invert(this._tempQuatB, dstRestQuat); + const deltaSrcQuatInDst = quat_exports.multiply(this._tempQuatB, dstRestQuatInv, deltaSrcQuatInParent); + quat_exports.multiply(deltaSrcQuatInDst, deltaSrcQuatInDst, dstRestQuat); + const toVec = vec3_exports.transformQuat(this._tempV3A, nodeConstraint.axis, deltaSrcQuatInDst); + const fromToQuat = quat_exports.rotationTo(this._tempQuatA, nodeConstraint.axis, toVec); + quat_exports.mul(targetQuat, dstRestQuat, quat_exports.invert(this._tempQuat, fromToQuat)); + quat_exports.mul(targetQuat, targetQuat, deltaSrcQuatInDst); + } + break; + case "aim": + { + const dstParentWorldQuat = nodeConstraint.destination.parent.rotationWorld; + const fromVec = vec3_exports.transformQuat(this._tempV3A, nodeConstraint.axis, dstRestQuat); + vec3_exports.transformQuat(fromVec, fromVec, dstParentWorldQuat); + const toVec = nodeConstraint.source.getTranslationWorld(this._tempV3B); + vec3_exports.sub(toVec, toVec, nodeConstraint.destination.getTranslationWorld(this._tempV3)); + vec3_exports.normalize(toVec, toVec); + const fromToQuat = quat_exports.rotationTo(this._tempQuatA, fromVec, toVec); + quat_exports.mul(targetQuat, quat_exports.invert(this._tempQuat, dstParentWorldQuat), fromToQuat); + quat_exports.mul(targetQuat, targetQuat, dstParentWorldQuat); + quat_exports.mul(targetQuat, targetQuat, dstRestQuat); + } + break; + case "rotation": + { + const srcDeltaQuat = quat_exports.mul(targetQuat, srcRestQuatInv, nodeConstraint.source.rotationLocal); + quat_exports.mul(targetQuat, dstRestQuat, srcDeltaQuat); + } + break; + } + quat_exports.slerp(targetQuat, dstRestQuat, targetQuat, nodeConstraint.weight); + nodeConstraint.destination.rotationLocal = targetQuat; + } + _updateSpringBones(dt) { + this._sphereColliders.forEach(({ object, shape, cache }) => { + const offset2 = vec3_exports.copy(cache.head, shape.offset); + object.transformVectorWorld(offset2); + vec3_exports.add(cache.head, object.getTranslationWorld(this._tempV3), offset2); + }); + this._capsuleColliders.forEach(({ object, shape, cache }) => { + const shapeCenter = object.getTranslationWorld(this._tempV3A); + const headOffset = vec3_exports.copy(cache.head, shape.offset); + object.transformVectorWorld(headOffset); + vec3_exports.add(cache.head, shapeCenter, headOffset); + const tailOffset = vec3_exports.copy(cache.tail, shape.tail); + object.transformVectorWorld(tailOffset); + vec3_exports.add(cache.tail, shapeCenter, tailOffset); + }); + this._springChains.forEach((springChain) => { + for (let i = 0; i < springChain.joints.length - 1; ++i) { + const joint = springChain.joints[i]; + const parentWorldRotation = joint.node.parent ? joint.node.parent.rotationWorld : this._identityQuat; + const inertia = this._inertia; + if (springChain.center) { + vec3_exports.sub(inertia, joint.state.currentTailCenter, joint.state.prevTailCenter); + springChain.center.transformVectorWorld(inertia); + } else { + vec3_exports.sub(inertia, joint.state.currentTail, joint.state.prevTail); + } + vec3_exports.scale(inertia, inertia, 1 - joint.dragForce); + const stiffness = vec3_exports.copy(this._stiffness, joint.state.boneAxis); + vec3_exports.transformQuat(stiffness, stiffness, joint.state.initialLocalRotation); + vec3_exports.transformQuat(stiffness, stiffness, parentWorldRotation); + vec3_exports.scale(stiffness, stiffness, dt * joint.stiffness); + const external = vec3_exports.scale(this._external, joint.gravityDir, dt * joint.gravityPower); + const nextTail = vec3_exports.copy(this._tempV3A, joint.state.currentTail); + vec3_exports.add(nextTail, nextTail, inertia); + vec3_exports.add(nextTail, nextTail, stiffness); + vec3_exports.add(nextTail, nextTail, external); + const worldPosition = joint.node.getTranslationWorld(this._tempV3B); + vec3_exports.sub(nextTail, nextTail, worldPosition); + vec3_exports.normalize(nextTail, nextTail); + vec3_exports.scaleAndAdd(nextTail, worldPosition, nextTail, joint.state.boneLength); + for (const { shape, cache } of springChain.sphereColliders) { + let tailToShape = this._tailToShape; + const sphereCenter = cache.head; + tailToShape = vec3_exports.sub(tailToShape, nextTail, sphereCenter); + const radius = shape.radius + joint.hitRadius; + const dist2 = vec3_exports.length(tailToShape) - radius; + if (dist2 < 0) { + vec3_exports.normalize(tailToShape, tailToShape); + vec3_exports.scaleAndAdd(nextTail, nextTail, tailToShape, -dist2); + vec3_exports.sub(nextTail, nextTail, worldPosition); + vec3_exports.normalize(nextTail, nextTail); + vec3_exports.scaleAndAdd(nextTail, worldPosition, nextTail, joint.state.boneLength); + } + } + for (const { shape, cache } of springChain.capsuleColliders) { + let tailToShape = this._tailToShape; + const head = cache.head; + const tail = cache.tail; + tailToShape = vec3_exports.sub(tailToShape, nextTail, head); + const headToTail = vec3_exports.sub(this._headToTail, tail, head); + const dot5 = vec3_exports.dot(headToTail, tailToShape); + if (vec3_exports.squaredLength(headToTail) <= dot5) { + vec3_exports.sub(tailToShape, nextTail, tail); + } else if (dot5 > 0) { + vec3_exports.scale(headToTail, headToTail, dot5 / vec3_exports.squaredLength(headToTail)); + vec3_exports.sub(tailToShape, tailToShape, headToTail); + } + const radius = shape.radius + joint.hitRadius; + const dist2 = vec3_exports.length(tailToShape) - radius; + if (dist2 < 0) { + vec3_exports.normalize(tailToShape, tailToShape); + vec3_exports.scaleAndAdd(nextTail, nextTail, tailToShape, -dist2); + vec3_exports.sub(nextTail, nextTail, worldPosition); + vec3_exports.normalize(nextTail, nextTail); + vec3_exports.scaleAndAdd(nextTail, worldPosition, nextTail, joint.state.boneLength); + } + } + vec3_exports.copy(joint.state.prevTail, joint.state.currentTail); + vec3_exports.copy(joint.state.currentTail, nextTail); + if (springChain.center) { + vec3_exports.copy(joint.state.prevTailCenter, joint.state.currentTailCenter); + vec3_exports.copy(joint.state.currentTailCenter, nextTail); + springChain.center.transformPointInverseWorld(joint.state.currentTailCenter); + } + joint.node.parent.transformPointInverseWorld(nextTail); + const nextTailDualQuat = quat2_exports.fromTranslation(this._tempQuat2, nextTail); + quat2_exports.multiply(nextTailDualQuat, joint.state.initialLocalTransformInvert, nextTailDualQuat); + quat2_exports.getTranslation(nextTail, nextTailDualQuat); + vec3_exports.normalize(nextTail, nextTail); + const jointRotation = quat_exports.rotationTo(this._tempQuatA, joint.state.boneAxis, nextTail); + joint.node.rotationLocal = quat_exports.mul(this._tempQuatA, joint.state.initialLocalRotation, jointRotation); + } + }); + } + /** + * @param {boolean} firstPerson Whether the model should render for first person or third person views + */ + set firstPerson(firstPerson) { + this._firstPersonAnnotations.forEach((annotation) => { + const visible = firstPerson == annotation.firstPerson || firstPerson != annotation.thirdPerson; + annotation.node.getComponents("mesh").forEach((mesh) => { + mesh.active = visible; + }); + }); + } +}; +__publicField(Vrm, "TypeName", "vrm"); +__publicField(Vrm, "Properties", { + /** URL to a VRM file to load */ + src: { type: Type.String }, + /** Object the VRM is looking at */ + lookAtTarget: { type: Type.Object } +}); + +// node_modules/@wonderlandengine/components/dist/wasd-controls.js +var WasdControlsComponent = class extends Component3 { + init() { + this.up = false; + this.right = false; + this.down = false; + this.left = false; + window.addEventListener("keydown", this.press.bind(this)); + window.addEventListener("keyup", this.release.bind(this)); + } + start() { + this.headObject = this.headObject || this.object; + } + update() { + let direction2 = [0, 0, 0]; + if (this.up) + direction2[2] -= 1; + if (this.down) + direction2[2] += 1; + if (this.left) + direction2[0] -= 1; + if (this.right) + direction2[0] += 1; + vec3_exports.normalize(direction2, direction2); + direction2[0] *= this.speed; + direction2[2] *= this.speed; + vec3_exports.transformQuat(direction2, direction2, this.headObject.transformWorld); + this.object.translate(direction2); + } + press(e) { + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + this.up = true; + } else if (e.keyCode === 39 || e.keyCode === 68) { + this.right = true; + } else if (e.keyCode === 40 || e.keyCode === 83) { + this.down = true; + } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + this.left = true; + } + } + release(e) { + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + this.up = false; + } else if (e.keyCode === 39 || e.keyCode === 68) { + this.right = false; + } else if (e.keyCode === 40 || e.keyCode === 83) { + this.down = false; + } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + this.left = false; + } + } +}; +__publicField(WasdControlsComponent, "TypeName", "wasd-controls"); +__publicField(WasdControlsComponent, "Properties", { + /** Movement speed in m/s. */ + speed: { type: Type.Float, default: 0.1 }, + /** Object of which the orientation is used to determine forward direction */ + headObject: { type: Type.Object } +}); + +// js/game.js +var state = { + shotCount: 0, + /* Global function used to update the score display */ + updateCounter: null, + updateScore: null, + gameOver: true, + score: 0, + resetButton: null, + bgMusic: null, + victoryMusic: null, + mouseSound: null, + mouseSpawner: null, + targetsSpawned: 0, + maxTargets: 20, + /* Overwritten by mouse-spawner */ + floorHeight: 0, + getPlayerLocation: null, + updateMoveDuration: null, + bulletSpawner: null, + hideLogo: null, + despawnTarget: null, + firstShot: false, + launch: null, + paused: false, + // Wave system properties + currentWave: 1, + zombiesKilledInWave: 0, + waveProperties: { + baseZombies: 10, + // Starting number of zombies in wave 1 + zombiesIncrease: 10, + // How many more zombies per wave + baseSpeed: 2.5, + // Starting speed in wave 1 (increased from 1.5) + speedIncreasePercent: 50 + // Speed increase percentage per wave (increased to 50%) + }, + getCurrentWave() { + return this.currentWave; + }, + getWaveZombieCount() { + return this.waveProperties.baseZombies + (this.currentWave - 1) * this.waveProperties.zombiesIncrease; + }, + getWaveSpeed() { + const speedMultiplier = 1 + (this.currentWave - 1) * this.waveProperties.speedIncreasePercent / 100; + const speed = this.waveProperties.baseSpeed * speedMultiplier; + console.log(`Wave ${this.currentWave} speed: ${speed.toFixed(2)} (multiplier: ${speedMultiplier.toFixed(2)})`); + return speed; + }, + getRemainingZombies() { + const total = this.getWaveZombieCount(); + const killed = this.zombiesKilledInWave; + console.log(`Wave ${this.currentWave}: ${killed}/${total} zombies killed`); + return total - killed; + }, + updateWaveDisplay() { + const remaining = this.getRemainingZombies(); + const nextWaveZombies = this.waveProperties.baseZombies + this.currentWave * this.waveProperties.zombiesIncrease; + const speed = this.getWaveSpeed(); + this.updateScore( + `Wave ${this.currentWave} - Remaining: ${remaining} zombies - Speed: ${speed.toFixed(1)} - Next Wave: ${nextWaveZombies} zombies` + ); + }, + zombieKilled() { + this.zombiesKilledInWave++; + this.score++; + const remaining = this.getRemainingZombies(); + if (remaining <= 0) { + console.log(`Wave ${this.currentWave} complete! Starting next wave...`); + this.nextWave(); + } else { + this.updateWaveDisplay(); + } + }, + nextWave() { + this.currentWave++; + this.zombiesKilledInWave = 0; + const newZombieCount = this.getWaveZombieCount(); + if (this.mouseSpawner) { + console.log(`Setting new wave ${this.currentWave} with ${newZombieCount} zombies`); + this.mouseSpawner.maxTargets = newZombieCount; + this.mouseSpawner.reset(); + } + this.updateWaveDisplay(); + }, + loseGame() { + console.log("Game Over triggered"); + this.gameOver = true; + if (this.mouseSound) { + this.mouseSound.stop(); + } + if (this.mouseSpawner) { + this.mouseSpawner.reset(); + } + if (this.resetButton) { + console.log("Showing reset button"); + this.resetButton.unhide(); + this.resetButton.object.children[0].getComponent("mesh").active = true; + this.resetButton.object.children[1].getComponent("text").active = true; + this.resetButton.active = true; + } else { + console.log("Reset button not found!"); + } + this.updateScore(`Game Over! You survived ${this.currentWave} waves and eliminated ${this.score} zombies!`); + }, + restart() { + if (this.mouseSpawner) { + this.mouseSpawner.reset(); + } + this.victoryMusic.stop(); + this.gameOver = false; + this.shotCount = 0; + this.score = 0; + this.currentWave = 1; + this.zombiesKilledInWave = 0; + if (this.mouseSpawner) { + const initialZombies = this.getWaveZombieCount(); + console.log(`Restarting game with ${initialZombies} zombies in wave 1`); + this.mouseSpawner.maxTargets = initialZombies; + } + this.updateCounter(); + this.updateWaveDisplay(); + } +}; + +// js/bg-music.js +var BgMusic = class extends Component3 { + init() { + } +}; +__publicField(BgMusic, "TypeName", "bg-music"); +__publicField(BgMusic, "Properties", {}); + +// js/bullet-physics.js +var newDir = new Float32Array(3); +var BulletPhysics = class extends Component3 { + init() { + this.dir = new Float32Array(3); + this.position = [0, 0, 0]; + this.object.getPositionWorld(this.position); + this.correctedSpeed = this.speed / 6; + this.collision = this.object.getComponent("collision", 0); + if (!this.collision) { + console.warn( + "'bullet-physics' component on object", + this.object.name, + "requires a collision component" + ); + } + } + update(dt) { + if (isNaN(dt)) { + console.log("dt is NaN"); + return; + } + this.object.getPositionWorld(this.position); + if (this.position[1] <= state.floorHeight + this.collision.extents[0]) { + this.destroyBullet(0); + return; + } + if (vec3_exports.length(this.position) > 175) { + this.destroyBullet(0); + return; + } + newDir.set(this.dir); + vec3_exports.scale(newDir, newDir, this.correctedSpeed); + vec3_exports.add(this.position, this.position, newDir); + this.object.setPositionLocal(this.position); + let overlaps = this.collision.queryOverlaps(); + for (let i = 0; i < overlaps.length; ++i) { + let t = overlaps[i].object.getComponent("score-trigger"); + if (t && !this.scored) { + t.onHit(); + this.destroyBullet(0); + return; + } + } + } + destroyBullet(time) { + if (time == 0) { + this.object.destroy(); + } else { + setTimeout(() => { + this.object.destroy(); + }, time); + } + } +}; +__publicField(BulletPhysics, "TypeName", "bullet-physics"); +__publicField(BulletPhysics, "Properties", { + speed: { type: Type.Float, default: 1 } +}); + +// js/bullet-spawner.js +var tempQuat22 = new Float32Array(8); +var BulletSpawner = class extends Component3 { + static onRegister(engine2) { + engine2.registerComponent(HowlerAudioSource); + engine2.registerComponent(BulletPhysics); + } + init() { + state.launch = function(dir) { + let bullet = this.spawnBullet(); + bullet.object.setTransformLocal(this.object.getTransformWorld(tempQuat22)); + bullet.object.setDirty(); + bullet.physics.dir.set(dir); + bullet.physics.scored = false; + bullet.physics.active = true; + state.shotCount++; + state.updateCounter(); + if (!state.firstShot) { + state.hideLogo(); + state.updateMoveDuration(true); + state.firstShot = true; + } + }.bind(this); + } + start() { + this.engine.onXRSessionStart.add(this.xrSessionStart.bind(this)); + this.start = new Float32Array(2); + this.bullets = []; + this.nextIndex = 0; + this.lastShotTime = 0; + state.bulletSpawner = this.object; + this.soundClick = this.object.addComponent(HowlerAudioSource, { + src: "sfx/9mm-pistol-shoot-short-reverb-7152.mp3", + volume: 0.5 + }); + } + onTouchDown(e) { + if (e.inputSource.handedness == "right") { + let currentTime = Date.now(); + let lastShotTimeGap = Math.abs(currentTime - this.lastShotTime); + if (lastShotTimeGap > 500) { + const dir = [0, 0, 0]; + this.object.getComponent("cursor").cursorRayObject.getForward(dir); + this.pulse(e.inputSource.gamepad); + state.launch(dir); + this.lastShotTime = currentTime; + this.soundClick.play(); + } + } + } + spawnBullet() { + const obj = this.engine.scene.addObject(); + obj.scaleLocal([0.05, 0.05, 0.05]); + obj.addComponent("mesh", { + mesh: this.bulletMesh, + material: this.bulletMaterial + }); + obj.addComponent("collision", { + shape: WL.Collider.Sphere, + extents: [0.05, 0, 0], + group: 1 << 0 + }); + const physics = obj.addComponent(BulletPhysics, { + speed: this.bulletSpeed + }); + physics.active = true; + return { + object: obj, + physics + }; + } + //vibrates controller for haptic feedback + pulse(gamepad) { + let actuator; + if (!gamepad || !gamepad.hapticActuators) { + return; + } + actuator = gamepad.hapticActuators[0]; + if (!actuator) + return; + actuator.pulse(1, 100); + } + onActivate() { + if (!this.engine.xr) + return; + this.engine.xr.session.addEventListener( + "selectstart", + this.onTouchDown.bind(this) + ); + } + xrSessionStart(session) { + if (!this.active) + return; + session.addEventListener("selectstart", this.onTouchDown.bind(this)); + } +}; +__publicField(BulletSpawner, "TypeName", "bullet-spawner"); +__publicField(BulletSpawner, "Properties", { + bulletMesh: { type: Type.Mesh }, + bulletMaterial: { type: Type.Material }, + bulletSpeed: { type: Type.Float, default: 1 } +}); + +// js/confetti-particles.js +var ConfettiParticles = class extends Component3 { + init() { + this.time = 0; + this.count = 0; + } + start() { + this.objects = []; + this.velocities = []; + this.spins = []; + this.time = 2; + this.origin = new Float32Array(3); + this.activeCount = 0; + for (let i = 0; i < this.maxParticles; ++i) { + this.velocities[i] = [0, 0, 0]; + this.spins[i] = [0, 0, 0, 0]; + let particle = this.objects[i] = { + object: this.engine.scene.addObject(), + mesh: null + }; + particle.object.name = "particle" + this.count.toString(); + particle.mesh = particle.object.addComponent("mesh"); + particle.mesh.mesh = this.mesh; + particle.mesh.active = true; + } + } + burst() { + for (let i = 0; i < this.particlesPerBurst; ++i) + this.spawn(); + } + update(dt) { + this.time = (this.time || 0) + dt; + if (this.debug && this.time > 3) { + this.burst(); + this.time = 0; + } + let distance2 = [0, 0, 0]; + const tmp = [0, 0, 0, 0]; + for (let i = 0; i < this.activeCount; ++i) { + let o = this.objects[i]; + let obj = o.object; + obj.getTranslationWorld(this.origin); + const vel = this.velocities[i]; + const spins = this.spins[i]; + if (vel[0] != 0 || vel[1] != 0 || vel[2] != 0) { + vel[1] = Math.max(vel[1] - 9.81 * dt, -0.75); + } + if (this.origin[1] + vel[1] * dt <= state.floorHeight + this.particleScale && vel[1] <= 0) { + const frict = 1 / (1 - vel[1]); + vel[0] = frict * vel[0]; + vel[2] = frict * vel[2]; + vel[1] = -0.3 * vel[1]; + if (vel[1] > 0 && vel[1] < 0.1) { + vel[0] = vel[1] = vel[2] = 0; + spins[0] = spins[1] = spins[2] = 0; + spins[3] = 1; + obj.getUp(tmp); + quat_exports.rotationTo(tmp, tmp, [0, 0, 1]); + obj.rotateObject(tmp); + --this.activeCount; + this.swap(i, this.activeCount); + --i; + } + } + } + for (let i = 0; i < this.activeCount; ++i) { + let obj = this.objects[i].object; + vec3_exports.scale(distance2, this.velocities[i], dt); + obj.translate(distance2); + const spins = this.spins[i]; + if (spins[3] != 1) + obj.rotateObject(spins); + } + } + swap(a, b) { + if (b >= this.maxParticles) + return; + if (a >= this.maxParticles) + return; + const o = this.objects[a]; + const vel = this.velocities[a]; + const spins = this.spins[a]; + this.objects[a] = this.objects[b]; + this.velocities[a] = this.velocities[b]; + this.spins[a] = this.spins[b]; + this.objects[b] = o; + this.velocities[b] = vel; + this.spins[b] = spins; + } + /** Spawn a particle */ + spawn() { + let index = this.count % this.maxParticles; + let particle = this.objects[index]; + particle.object.resetTransform(); + particle.object.scale([0.25 * this.particleScale, this.particleScale, 0.02 * this.particleScale]); + quat2_exports.getTranslation(this.origin, this.object.transformWorld); + particle.object.translate(this.origin); + particle.mesh.material = [this.material0, this.material1, this.material2][Math.floor(Math.random() * 3)]; + this.velocities[index][0] = Math.random() - 0.5; + this.velocities[index][1] = Math.random(); + this.velocities[index][2] = Math.random() - 0.5; + vec3_exports.normalize(this.velocities[index], this.velocities[index]); + this.velocities[index][0] *= 0.2 * this.initialSpeed; + this.velocities[index][1] *= Math.random(0.2 * this.initialSpeed) + 0.8 * this.initialSpeed; + this.velocities[index][2] *= 0.2 * this.initialSpeed; + quat_exports.fromEuler( + this.spins[index], + Math.floor(Math.random() * 20), + Math.floor(Math.random() * 20), + Math.floor(Math.random() * 20) + ); + this.count += 1; + this.swap(index, this.activeCount); + this.activeCount = Math.min(this.activeCount + 1, this.maxParticles); + } +}; +__publicField(ConfettiParticles, "TypeName", "confetti-particles"); +__publicField(ConfettiParticles, "Properties", { + /* Mesh for spawned particles */ + mesh: { type: Type.Mesh, default: null }, + material0: { type: Type.Material, default: null }, + material1: { type: Type.Material, default: null }, + material2: { type: Type.Material, default: null }, + /* Maximum number of particles, once limit is reached, particles are recycled first-in-first-out. */ + maxParticles: { type: Type.Int, default: 64 }, + /* Initial speed of emitted particles. */ + initialSpeed: { type: Type.Float, default: 30 }, + /* Size of a particle */ + particleScale: { type: Type.Float, default: 0.1 }, + particlesPerBurst: { type: Type.Int, default: 32 }, + debug: { type: Type.Bool, default: false } +}); + +// js/hud-control.js +var HudControl = class extends Component3 { + init() { + this.currentPos = [0, 0, 0]; + this.object.getTranslationWorld(this.currentPos); + } + update() { + let newPos = []; + const dir = [0, 0, 0]; + this.object.getForward(dir); + let trans = []; + this.headObject.getTranslationWorld(trans); + this.object.resetTranslation(); + vec3_exports.add(newPos, trans, this.currentPos); + this.object.translate(trans); + this.currentPos = trans; + } + trim(num) { + let result = num.toFixed(2); + return result; + } +}; +__publicField(HudControl, "TypeName", "hud-control"); +__publicField(HudControl, "Properties", { + headObject: { type: Type.Object } +}); + +// js/joystick-movement.js +var JoystickMovement = class extends Component3 { + init() { + this.lastTime = Date.now(); + this.velocity = vec3_exports.fromValues(0, 0, 0); + this.gamepadLeft = null; + this.session = null; + this.lastBlowTime = 0; + this.continuousBlow = false; + this.isGrounded = true; + this.remainingAirJumps = this.maxAirJumps; + this.blowStartTime = 0; + this.currentBlowDuration = 0; + } + start() { + this.headObject = this.headObject || this.object; + this.engine.onXRSessionStart.push(this.setupVREvents.bind(this)); + } + update() { + const now = Date.now(); + const dt = (now - this.lastTime) / 1e3; + this.lastTime = now; + const worldPos = this.headObject.getTranslationWorld(); + const wasGrounded = this.isGrounded; + this.isGrounded = worldPos[1] <= 0.01; + if (!wasGrounded && this.isGrounded) { + this.remainingAirJumps = this.maxAirJumps; + } + if (this.gamepadLeft?.axes) { + const x = this.gamepadLeft.axes[2]; + const y = this.gamepadLeft.axes[3]; + let dir = vec3_exports.fromValues(0, 0, 0); + let angle2 = 0; + if (y < -0.1) + dir[2] = -1; + else if (y > 0.1) + dir[2] = 1; + if (x > 0.1) + angle2 = -this.turnAngle * this.turnSpeedMultiplier; + else if (x < -0.1) + angle2 = this.turnAngle * this.turnSpeedMultiplier; + if (Math.abs(y) > Math.abs(x)) { + vec3_exports.normalize(dir, dir); + vec3_exports.scale(dir, dir, this.moveSpeed * dt); + vec3_exports.transformQuat(dir, dir, this.headObject.transformWorld); + this.headObject.translate(dir); + } else if (Math.abs(x) > 0.1) { + this.headObject.rotateAxisAngleDegObject([0, 1, 0], angle2 * dt); + } + } + if (this.continuousBlow && this.gamepadLeft?.buttons[0].pressed) { + if (this.blowStartTime === 0) { + this.blowStartTime = now; + this.currentBlowDuration = 0; + } + this.currentBlowDuration = (now - this.blowStartTime) / 1e3; + if (this.currentBlowDuration <= this.maxBlowDuration && (this.isGrounded || this.remainingAirJumps > 0)) { + this.applyBlowForce(); + if (this.gamepadLeft.hapticActuators) { + this.gamepadLeft.hapticActuators[0].pulse(0.3, 50); + } + } + } else { + this.blowStartTime = 0; + this.currentBlowDuration = 0; + } + if (!this.isGrounded) { + this.velocity[1] -= this.gravity * dt; + } + const delta = vec3_exports.clone(this.velocity); + vec3_exports.scale(delta, delta, dt); + this.headObject.translate(delta); + const newPos = this.headObject.getTranslationWorld(); + if (newPos[1] < 0) { + newPos[1] = 0; + this.headObject.setTranslationWorld(newPos); + this.velocity[1] = 0; + this.isGrounded = true; + this.remainingAirJumps = this.maxAirJumps; + } + const friction = Math.pow(this.friction, dt * 60); + this.velocity[0] *= friction; + this.velocity[2] *= friction; + } + setupVREvents(session) { + this.session = session; + session.addEventListener("end", () => { + this.gamepadLeft = null; + this.session = null; + }); + for (const src of session.inputSources || []) { + if (src.handedness === "left") + this.gamepadLeft = src.gamepad; + } + session.addEventListener("inputsourceschange", (e) => { + for (const src of e.added || []) { + if (src.handedness === "left") + this.gamepadLeft = src.gamepad; + } + }); + session.addEventListener("selectstart", this.onTriggerDown.bind(this)); + session.addEventListener("selectend", this.onTriggerUp.bind(this)); + } + onTriggerDown(event) { + const src = event.inputSource; + if (src.handedness !== "left" || !this.gamepadLeft) + return; + this.continuousBlow = true; + this.blowStartTime = Date.now(); + this.currentBlowDuration = 0; + if (this.isGrounded || this.remainingAirJumps > 0) { + this.applyBlowForce(); + if (!this.isGrounded) { + this.remainingAirJumps--; + } + } + } + onTriggerUp(event) { + const src = event.inputSource; + if (src.handedness !== "left") + return; + this.continuousBlow = false; + this.blowStartTime = 0; + this.currentBlowDuration = 0; + } + applyBlowForce() { + if (!this.cursorObject) + return; + const cursor = this.cursorObject.getComponent("cursor"); + if (!cursor) + return; + const rayObj = cursor.cursorRayObject || cursor.object; + const dir = vec3_exports.create(); + rayObj.getForward(dir); + vec3_exports.normalize(dir, dir); + const horizontalDir = vec3_exports.fromValues(dir[0], 0, dir[2]); + vec3_exports.normalize(horizontalDir, horizontalDir); + const verticalDir = vec3_exports.fromValues(0, dir[1], 0); + const finalDir = vec3_exports.create(); + vec3_exports.scale(horizontalDir, horizontalDir, this.horizontalForceMultiplier); + vec3_exports.scale(verticalDir, verticalDir, 1); + vec3_exports.add(finalDir, horizontalDir, verticalDir); + vec3_exports.normalize(finalDir, finalDir); + vec3_exports.scale(finalDir, finalDir, -this.blowForce); + vec3_exports.add(this.velocity, this.velocity, finalDir); + } +}; +__publicField(JoystickMovement, "TypeName", "joystick-movement"); +__publicField(JoystickMovement, "Properties", { + moveSpeed: { type: Type.Float, default: 0.1 }, + // speed for joystick movement + turnAngle: { type: Type.Float, default: 30 }, + // turning speed deg/s + headObject: { type: Type.Object }, + // object to move/rotate + blowForce: { type: Type.Float, default: 1 }, + // impulse magnitude (m/s) + friction: { type: Type.Float, default: 0.95 }, + // horizontal damping [0-1] + gravity: { type: Type.Float, default: 9.81 }, + // gravity m/s² + cursorObject: { type: Type.Object }, + // object containing `cursor` component + blowDelay: { type: Type.Float, default: 0.5 }, + // delay between blows in seconds + turnSpeedMultiplier: { type: Type.Float, default: 1 }, + // multiplier for turn speed + maxAirJumps: { type: Type.Int, default: 3 }, + // maximum number of air jumps + horizontalForceMultiplier: { type: Type.Float, default: 10 }, + // multiplier for horizontal force + maxBlowDuration: { type: Type.Float, default: 3 } + // maximum continuous blow duration in seconds +}); + +// js/mouse-look-custom.js +var MouseLookCustom = class extends Component3 { + init() { + this.currentRotationY = 0; + this.currentRotationX = 0; + this.origin = new Float32Array(3); + this.parentOrigin = new Float32Array(3); + this.rotationX = 0; + this.rotationY = 0; + } + start() { + this.lastShotTime = 0; + state.bulletSpawner = this.object; + this.soundClick = this.object.addComponent("howler-audio-source", { + src: "sfx/9mm-pistol-shoot-short-reverb-7152.mp3", + volume: 0.5 + }); + document.addEventListener("mousemove", (e) => { + if (this.active && (this.mouseDown || !this.requireMouseDown)) { + this.rotationY = -this.sensitity * e.movementX / 100; + this.rotationX = -this.sensitity * e.movementY / 100; + this.currentRotationX += this.rotationX; + this.currentRotationY += this.rotationY; + this.currentRotationX = Math.min(1.507, this.currentRotationX); + this.currentRotationX = Math.max(-1.507, this.currentRotationX); + this.object.getTranslationWorld(this.origin); + const parent = this.object.parent; + if (parent !== null) { + parent.getTranslationWorld(this.parentOrigin); + vec3_exports.sub(this.origin, this.origin, this.parentOrigin); + } + this.object.resetTranslationRotation(); + this.object.rotateAxisAngleRad([1, 0, 0], this.currentRotationX); + this.object.rotateAxisAngleRad([0, 1, 0], this.currentRotationY); + this.object.translate(this.origin); + } + }); + const canvas2 = this.engine.canvas; + if (this.pointerLockOnClick) { + canvas2.addEventListener("mousedown", () => { + canvas2.requestPointerLock = canvas2.requestPointerLock || canvas2.mozRequestPointerLock || canvas2.webkitRequestPointerLock; + canvas2.requestPointerLock(); + }); + } + if (this.requireMouseDown) { + if (this.mouseButtonIndex == 2) { + canvas2.addEventListener("contextmenu", function(e) { + e.preventDefault(); + }, false); + } + canvas2.addEventListener("mousedown", function(e) { + if (e.button == this.mouseButtonIndex) { + this.mouseDown = true; + document.body.style.cursor = "grabbing"; + if (e.button == 1) { + e.preventDefault(); + return false; + } + } + }.bind(this)); + canvas2.addEventListener("mouseup", function(e) { + if (e.button == this.mouseButtonIndex) { + this.mouseDown = false; + document.body.style.cursor = "initial"; + } + }.bind(this)); + } else { + canvas2.addEventListener("mousedown", function(e) { + if (e.button == this.mouseButtonIndex) { + if (e.button == 0) { + let currentTime = Date.now(); + let lastShotTimeGap = Math.abs(currentTime - this.lastShotTime); + if (lastShotTimeGap > 500) { + try { + const dir = [0, 0, 0]; + this.object.getForward(dir); + state.launch(dir); + this.lastShotTime = currentTime; + this.soundClick.play(); + } catch (e2) { + console.log("mouse shoot >> ", e2); + } + } + } + } + }.bind(this)); + } + } +}; +__publicField(MouseLookCustom, "TypeName", "mouse-look-custom"); +__publicField(MouseLookCustom, "Properties", { + /** Mouse look sensitivity */ + sensitity: { type: Type.Float, default: 0.25 }, + /** Require a mouse button to be pressed to control view. + * Otherwise view will allways follow mouse movement */ + requireMouseDown: { type: Type.Bool, default: true }, + /** If "moveOnClick" is enabled, mouse button which should + * be held down to control view */ + mouseButtonIndex: { type: Type.Int, default: 0 }, + /** Enables pointer lock on "mousedown" event on this.enginecanvas */ + pointerLockOnClick: { type: Type.Bool, default: false }, + bulletMesh: { type: Type.Mesh }, + bulletMaterial: { type: Type.Material }, + bulletSpeed: { type: Type.Float, default: 1 } +}); + +// js/mouse-mover.js +var MouseMover = class extends Component3 { + init() { + } + update(dt) { + if (isNaN(dt)) + return; + if (state.gameOver || state.paused) + return; + const currentSpeed = state.getWaveSpeed(); + const currentPos = vec3_exports.create(); + this.object.getPositionLocal(currentPos); + const playerPos = state.getPlayerLocation(); + if (vec3_exports.dist(currentPos, playerPos) < 0.5) { + console.log("Zombie reached player, game over"); + state.loseGame(); + return; + } + const dir = vec3_exports.fromValues( + playerPos[0] - currentPos[0], + 0, + playerPos[2] - currentPos[2] + ); + if (vec3_exports.len(dir) < 0.01) + return; + vec3_exports.normalize(dir, dir); + const moveVec = vec3_exports.scale(vec3_exports.create(), dir, currentSpeed * dt); + vec3_exports.add(currentPos, currentPos, moveVec); + this.object.setPositionLocal(currentPos); + currentPos[1] = state.floorHeight; + this.object.setPositionLocal(currentPos); + this.object.setPositionLocal(currentPos); + this.object.getComponent("collision").setPositionLocal(currentPos); + this.object.getComponent("collision").setHeight(state.floorHeight); + const angleDeg = Math.atan2(dir[0], dir[2]) * (180 / Math.PI); + this.object.resetRotation(); + this.object.rotateAxisAngleDegLocal([0, 1, 0], angleDeg); + } +}; +__publicField(MouseMover, "TypeName", "mouse-mover"); +__publicField(MouseMover, "Properties", {}); + +// js/score-trigger.js +var tempQuat23 = new Float32Array(8); +var ScoreTrigger = class extends Component3 { + init() { + this.collision = this.object.getComponent("collision"); + this.soundHit = this.object.addComponent("howler-audio-source", { + src: "sfx/high-pitched-aha-103125.mp3", + volume: 1.9 + }); + this.soundPop = this.object.addComponent("howler-audio-source", { + src: "sfx/pop-94319.mp3", + volume: 1.9 + }); + state.victoryMusic = this.object.addComponent("howler-audio-source", { + src: "music/level-win-6416.mp3", + volume: 1.9 + }); + } + onHit() { + this.particles.setTransformWorld(this.object.getTransformWorld(tempQuat23)); + this.particles.getComponent("confetti-particles").burst(); + state.despawnTarget(this.object.parent); + state.incrementScore(); + this.soundHit.play(); + this.soundPop.play(); + } +}; +__publicField(ScoreTrigger, "TypeName", "score-trigger"); +__publicField(ScoreTrigger, "Properties", { + particles: { type: Type.Object } +}); + +// js/mouse-spawner.js +var tempQuat24 = new Float32Array(8); +var MouseSpawner = class extends Component3 { + static onRegister(engine2) { + engine2.registerComponent(ScoreTrigger); + engine2.registerComponent(HowlerAudioSource); + engine2.registerComponent(MouseMover); + } + time = 0; + spawnInterval = 2; + targets = []; + waveNumber = 1; + init() { + state.despawnTarget = function(obj) { + for (let i = 0; i < this.targets.length; i++) { + if (obj.objectId == this.targets[i].objectId) { + this.targets.splice(i, 1); + break; + } + } + obj.destroy(); + }.bind(this); + } + start() { + state.mouseSpawner = this; + this.spawnInterval = this.initialSpawnInterval; + this.spawnTarget(); + } + update(dt) { + if (state.gameOver || state.paused) + return; + this.time += dt; + if (this.time >= this.spawnInterval) { + this.time = 0; + this.spawnTarget(); + if (this.spawnInterval > this.minSpawnInterval) { + this.spawnInterval *= this.spawnIntervalDecreaseRate; + } + if (this.targets.length % 10 === 0) { + this.waveNumber++; + state.updateScore(`Wave ${this.waveNumber} - Zombies: ${this.targets.length}`); + } + } + } + reset() { + for (let i = 0; i < this.targets.length; i++) { + this.targets[i].destroy(); + } + this.targets = []; + this.waveNumber = 1; + this.spawnInterval = this.initialSpawnInterval; + this.time = 0; + this.object.resetPosition(); + } + spawnTarget() { + const obj = this.engine.scene.addObject(); + obj.setTransformLocal(this.object.getTransformWorld(tempQuat24)); + obj.scaleLocal([1, 1, 1]); + const mesh = obj.addComponent("mesh"); + mesh.mesh = this.targetMesh; + mesh.material = this.targetMaterial; + mesh.active = true; + obj.addComponent(MouseMover); + obj.rotateAxisAngleDegLocal([1, 0, 0], 180); + if (this.spawnAnimation) { + const anim = obj.addComponent("animation"); + anim.playCount = 1; + anim.animation = this.spawnAnimation; + anim.active = true; + anim.play(); + } + const trigger = this.engine.scene.addObject(obj); + trigger.addComponent("collision", { + collider: WL.Collider.Sphere, + extents: [1.5, 1.5, 1.5], + group: 1 << 0, + active: true + }); + trigger.translateLocal([0, 1, 0]); + trigger.addComponent(ScoreTrigger, { + particles: this.particles + }); + obj.setDirty(); + this.targets.push(obj); + } +}; +__publicField(MouseSpawner, "TypeName", "mouse-spawner"); +__publicField(MouseSpawner, "Properties", { + targetMesh: { type: Type.Mesh }, + targetMaterial: { type: Type.Material }, + spawnAnimation: { type: Type.Animation }, + particles: { type: Type.Object }, + initialSpawnInterval: { type: Type.Float, default: 2 }, + minSpawnInterval: { type: Type.Float, default: 0.5 }, + spawnIntervalDecreaseRate: { type: Type.Float, default: 0.95 }, + bulletMesh: { type: Type.Mesh }, + bulletMaterial: { type: Type.Material } +}); + +// js/play-again-button.js +var PlayAgainButton = class extends Component3 { + start() { + this.collision = this.object.getComponent("collision"); + this.soundPop = this.object.addComponent("howler-audio-source", { + src: "sfx/pop-94319.mp3", + volume: 1.9 + }); + state.resetButton = this; + this.unhide(); + } + restart() { + console.log("Restarting game"); + state.restart(); + this.hide(); + } + hide() { + console.log("Hiding button"); + if (this.object.children[0]) { + const mesh = this.object.children[0].getComponent("mesh"); + if (mesh) + mesh.active = false; + } + if (this.object.children[1]) { + const text = this.object.children[1].getComponent("text"); + if (text) + text.active = false; + } + this.active = false; + } + unhide() { + console.log("Unhiding button"); + if (this.object.children[0]) { + const mesh = this.object.children[0].getComponent("mesh"); + if (mesh) + mesh.active = true; + } + if (this.object.children[1]) { + const text = this.object.children[1].getComponent("text"); + if (text) + text.active = true; + } + this.active = true; + } + update(dt) { + if (!this.active) + return; + let overlaps = this.collision.queryOverlaps(); + for (let i = 0; i < overlaps.length; ++i) { + let p = overlaps[i].object.getComponent("bullet-physics"); + if (p) { + this.restart(); + this.soundPop.play(); + break; + } + } + } +}; +__publicField(PlayAgainButton, "TypeName", "play-again-button"); +__publicField(PlayAgainButton, "Properties", {}); + +// js/player-location.js +var PlayerLocation = class extends Component3 { + static onRegister(engine2) { + engine2.registerComponent(MouseMover); + } + init() { + this.playerLocation = [0, 0, 0]; + this.object.getPositionWorld(this.playerLocation); + state.getPlayerLocation = function() { + return this.playerLocation; + }.bind(this); + } + update() { + let currentLocation = [0, 0, 0]; + this.object.getPositionWorld(currentLocation); + let locationDistance = vec3_exports.dist(currentLocation, this.playerLocation); + if (locationDistance != 0) { + this.playerLocation = currentLocation; + } + } +}; +__publicField(PlayerLocation, "TypeName", "player-location"); +__publicField(PlayerLocation, "Properties", {}); + +// js/score-display.js +var ScoreDisplay = class extends Component3 { + init() { + this.text = this.object.getComponent("text"); + state.updateScore = function(text) { + this.text.text = text; + }.bind(this); + this.engine.onXRSessionStart.push(function() { + state.updateScore(`Eliminate all ${state.maxTargets} rats.`); + }); + } +}; +__publicField(ScoreDisplay, "TypeName", "score-display"); +__publicField(ScoreDisplay, "Properties", {}); + +// js/shot-counter.js +var ShotCounter = class extends Component3 { + init() { + this.text = this.object.getComponent("text"); + state.updateCounter = function() { + if (!state.gameOver) { + this.text.text = "Shots Fired: " + state.shotCount; + } + }.bind(this); + } +}; +__publicField(ShotCounter, "TypeName", "shot-counter"); +__publicField(ShotCounter, "Properties", {}); + +// js/spawn-mover.js +var SpawnMover = class extends Component3 { + init() { + this.time = 0; + this.currentPos = [0, 0, 0]; + this.pointA = [0, 0, 0]; + this.pointB = [0, 0, 0]; + this.moveDuration = 1; + this.speed = 3; + this.travelDistance = this.moveDuration * this.speed; + quat2_exports.getTranslation(this.currentPos, this.object.transformLocal); + vec3_exports.add(this.pointA, this.pointA, this.currentPos); + vec3_exports.add(this.pointB, this.currentPos, [0, 0, 1.5]); + } + update(dt) { + if (isNaN(dt)) + return; + this.time += dt; + if (this.time >= this.moveDuration) { + this.time -= this.moveDuration; + this.pointA = this.currentPos; + let x = Math.random() * this.travelDistance; + let z = Math.sqrt(Math.pow(this.travelDistance, 2) - Math.pow(x, 2)); + let distanceFromOrigin = vec3_exports.length(this.pointA); + if (distanceFromOrigin > 20) { + if (this.pointA[0] >= 14) { + x *= -1; + } + if (this.pointA[2] >= 14) { + z *= -1; + } + } else { + const randomNegative1 = Math.round(Math.random()) * 2 - 1; + const randomNegative2 = Math.round(Math.random()) * 2 - 1; + x *= randomNegative1; + z *= randomNegative2; + } + vec3_exports.add(this.pointB, this.pointA, [x, 0, z]); + } + this.object.resetPosition(); + vec3_exports.lerp(this.currentPos, this.pointA, this.pointB, this.time); + this.object.translateLocal(this.currentPos); + } +}; +__publicField(SpawnMover, "TypeName", "spawn-mover"); +__publicField(SpawnMover, "Properties", { + speed: { type: Type.Float, default: 1 } + // targetObject: {type: Type.Object}, +}); + +// js/teleport-custom.js +var TeleportCustom = class extends Component3 { + init() { + this._prevThumbstickAxis = new Float32Array(2); + this._tempVec = new Float32Array(3); + this._tempVec0 = new Float32Array(3); + this._currentIndicatorRotation = 0; + this.input = this.object.getComponent("input"); + if (!this.input) { + console.error(this.object.name, "generic-teleport-component.js: input component is required on the object"); + return; + } + if (!this.teleportIndicatorMeshObject) { + console.error(this.object.name, "generic-teleport-component.js: Teleport indicator mesh is missing"); + return; + } + if (!this.camRoot) { + console.error(this.object.name, "generic-teleport-component.js: camRoot not set"); + return; + } + this.isIndicating = false; + this.indicatorHidden = true; + this.hitSpot = new Float32Array(3); + this._hasHit = false; + this._extraRotation = 0; + this._currentStickAxes = new Float32Array(2); + } + start() { + if (this.handedness == 0) { + const inputComp = this.object.getComponent("input"); + if (!inputComp) { + console.warn( + "teleport component on object", + this.object.name, + 'was configured with handedness "input component", but object has no input component.' + ); + } else { + this.handedness = inputComp.handedness; + this.input = inputComp; + } + } else { + this.handedness = ["left", "right"][this.handedness - 1]; + } + this.engine.onXRSessionStart.push(this.setupVREvents.bind(this)); + this.teleportIndicatorMeshObject.active = false; + } + /* Get current camera Y rotation */ + _getCamRotation() { + this.eyeLeft.getForward(this._tempVec); + this._tempVec[1] = 0; + vec3_exports.normalize(this._tempVec, this._tempVec); + return Math.atan2(this._tempVec[0], this._tempVec[2]); + } + update() { + let inputLength = 0; + if (this.gamepad && this.gamepad.axes) { + this._currentStickAxes[0] = this.gamepad.axes[2]; + this._currentStickAxes[1] = this.gamepad.axes[3]; + inputLength = Math.abs(this._currentStickAxes[0]) + Math.abs(this._currentStickAxes[1]); + } + if (!this.isIndicating && this._prevThumbstickAxis[1] >= this.thumbstickActivationThreshhold && this._currentStickAxes[1] < this.thumbstickActivationThreshhold) { + this.isIndicating = true; + } else if (this.isIndicating && inputLength < this.thumbstickDeactivationThreshhold) { + this.isIndicating = false; + this.teleportIndicatorMeshObject.active = false; + if (this._hasHit) { + this._teleportPlayer(this.hitSpot, this._extraRotation); + } + } + if (this.isIndicating && this.teleportIndicatorMeshObject && this.input) { + const origin = this._tempVec0; + quat2_exports.getTranslation(origin, this.object.transformWorld); + const direction2 = this.object.getForward(this._tempVec); + let rayHit = this.rayHit = this.rayCastMode == 0 ? this.engine.scene.rayCast(origin, direction2, 1 << this.floorGroup) : this.engine.physics.rayCast(origin, direction2, 1 << this.floorGroup, this.maxDistance); + if (rayHit.hitCount > 0) { + this.indicatorHidden = false; + this._extraRotation = Math.PI + Math.atan2(this._currentStickAxes[0], this._currentStickAxes[1]); + this._currentIndicatorRotation = this._getCamRotation() + (this._extraRotation - Math.PI); + this.teleportIndicatorMeshObject.resetTranslationRotation(); + this.teleportIndicatorMeshObject.rotateAxisAngleRad([0, 1, 0], this._currentIndicatorRotation); + this.teleportIndicatorMeshObject.translate(rayHit.locations[0]); + this.teleportIndicatorMeshObject.translate([0, this.indicatorYOffset, 0]); + this.teleportIndicatorMeshObject.active = true; + this.hitSpot.set(rayHit.locations[0]); + this._hasHit = true; + } else { + if (!this.indicatorHidden) { + this.teleportIndicatorMeshObject.active = false; + this.indicatorHidden = true; + } + this._hasHit = false; + } + } + this._prevThumbstickAxis.set(this._currentStickAxes); + } + setupVREvents(s) { + this.session = s; + s.addEventListener("end", function() { + this.gamepad = null; + this.session = null; + }.bind(this)); + if (s.inputSources && s.inputSources.length) { + for (let i = 0; i < s.inputSources.length; i++) { + let inputSource = s.inputSources[i]; + if (inputSource.handedness == this.handedness) { + this.gamepad = inputSource.gamepad; + } + } + } + s.addEventListener("inputsourceschange", function(e) { + if (e.added && e.added.length) { + for (let i = 0; i < e.added.length; i++) { + let inputSource = e.added[i]; + if (inputSource.handedness == this.handedness) { + this.gamepad = inputSource.gamepad; + } + } + } + }.bind(this)); + } + _teleportPlayer(newPosition, rotationToAdd) { + this.camRoot.rotateAxisAngleRad([0, 1, 0], rotationToAdd); + const p = this._tempVec; + const p1 = this._tempVec0; + if (this.session) { + this.eyeLeft.getTranslationWorld(p); + this.eyeRight.getTranslationWorld(p1); + vec3_exports.add(p, p, p1); + vec3_exports.scale(p, p, 0.5); + } else { + this.cam.getTranslationWorld(p); + } + this.camRoot.getTranslationWorld(p1); + vec3_exports.sub(p, p1, p); + p[0] += newPosition[0]; + p[1] = newPosition[1]; + p[2] += newPosition[2]; + this.camRoot.setTranslationWorld(p); + } +}; +__publicField(TeleportCustom, "TypeName", "teleport-custom"); +__publicField(TeleportCustom, "Properties", { + /** Object that will be placed as indiciation forwhere the player will teleport to. */ + teleportIndicatorMeshObject: { type: Type.Object }, + /** Root of the player, the object that will be positioned on teleportation. */ + camRoot: { type: Type.Object }, + /** Left eye for use in VR*/ + eyeLeft: { type: Type.Object }, + /** Right eye for use in VR*/ + eyeRight: { type: Type.Object }, + /** Handedness for VR cursors to accept trigger events only from respective controller. */ + handedness: { type: Type.Enum, values: ["input component", "left", "right", "none"], default: "input component" }, + /** Collision group of valid "floor" objects that can be teleported on */ + floorGroup: { type: Type.Int, default: 1 }, + /** How far the thumbstick needs to be pushed to have the teleport target indicator show up */ + thumbstickActivationThreshhold: { type: Type.Float, default: -0.7 }, + /** How far the thumbstick needs to be released to execute the teleport */ + thumbstickDeactivationThreshhold: { type: Type.Float, default: 0.3 }, + /** Offset to apply to the indicator object, e.g. to avoid it from Z-fighting with the floor */ + indicatorYOffset: { type: Type.Float, default: 0.01 }, + /** Mode for raycasting, whether to use PhysX or simple collision components */ + rayCastMode: { type: Type.Enum, values: ["collision", "physx"], default: "collision" }, + /** Max distance for PhysX raycast */ + maxDistance: { type: Type.Float, default: 100 } +}); + +// js/wasd-controls-custom.js +var WasdControlsCustom = class extends Component3 { + init() { + this.up = false; + this.right = false; + this.down = false; + this.left = false; + window.addEventListener("keydown", this.press.bind(this)); + window.addEventListener("keyup", this.release.bind(this)); + } + update() { + if (this.up || this.right || this.down || this.left) { + let direction2 = [0, 0, 0]; + let forwardVec = []; + this.object.getForward(forwardVec); + forwardVec[1] = 0; + let backVec = [0, 0, 0]; + if (forwardVec[2] == 1) { + forwardVec[2] = this.speed; + backVec = [0, 0, -this.speed]; + } else if (forwardVec[2] == -1) { + forwardVec[2] = -this.speed; + backVec = [0, 0, this.speed]; + } else { + let angle2 = vec3_exports.angle([0, 0, -1], forwardVec); + let xPolarity = -1; + let zPolarity = -1; + if (forwardVec[0] > 0) + xPolarity = 1; + if (forwardVec[2] > 0) + zPolarity = 1; + forwardVec[0] = xPolarity * Math.abs(Math.sin(angle2)) * this.speed; + backVec[0] = -forwardVec[0]; + forwardVec[2] = zPolarity * Math.abs(Math.cos(angle2)) * this.speed; + backVec[2] = -forwardVec[2]; + } + let rightVec = []; + this.object.getRight(rightVec); + rightVec[1] = 0; + let leftVec = [0, 0, 0]; + if (rightVec[0] == 1) { + rightVec[0] = this.speed; + leftVec = [-this.speed, 0, 0]; + } else if (rightVec[0] == -1) { + rightVec[0] = -this.speed; + leftVec = [this.speed, 0, 0]; + } else { + let angle2 = vec3_exports.angle([-1, 0, 0], rightVec); + let xPolarity = -1; + let zPolarity = -1; + if (rightVec[0] > 0) + xPolarity = 1; + rightVec[0] = xPolarity * Math.abs(Math.cos(angle2)) * this.speed; + leftVec[0] = -rightVec[0]; + if (rightVec[2] > 0) + zPolarity = 1; + rightVec[2] = zPolarity * Math.abs(Math.sin(angle2)) * this.speed; + leftVec[2] = -rightVec[2]; + } + if (this.up) + vec3_exports.add(direction2, direction2, forwardVec); + if (this.down) + vec3_exports.add(direction2, direction2, backVec); + if (this.left) + vec3_exports.add(direction2, direction2, leftVec); + if (this.right) + vec3_exports.add(direction2, direction2, rightVec); + this.headObject.translate(direction2); + } + } + press(e) { + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + this.up = true; + } else if (e.keyCode === 39 || e.keyCode === 68) { + this.right = true; + } else if (e.keyCode === 40 || e.keyCode === 83) { + this.down = true; + } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + this.left = true; + } + } + release(e) { + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + this.up = false; + } else if (e.keyCode === 39 || e.keyCode === 68) { + this.right = false; + } else if (e.keyCode === 40 || e.keyCode === 83) { + this.down = false; + } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + this.left = false; + } + } +}; +__publicField(WasdControlsCustom, "TypeName", "wasd-controls-custom"); +__publicField(WasdControlsCustom, "Properties", { + /** Movement speed in m/s. */ + speed: { type: Type.Float, default: 0.1 }, + /** Object of which the orientation is used to determine forward direction */ + headObject: { type: Type.Object } +}); + +// js/index.js +var Constants = { + ProjectName: "MyWonderland", + RuntimeBaseName: "WonderlandRuntime", + WebXRRequiredFeatures: ["local"], + WebXROptionalFeatures: ["local", "local-floor", "hand-tracking", "hit-test"] +}; +var RuntimeOptions = { + physx: false, + loader: false, + xrFramebufferScaleFactor: 1, + xrOfferSession: { + mode: "auto", + features: Constants.WebXRRequiredFeatures, + optionalFeatures: Constants.WebXROptionalFeatures + }, + canvas: "canvas" +}; +var engine = await loadRuntime(Constants.RuntimeBaseName, RuntimeOptions); +Object.assign(engine, dist_exports); +window.WL = engine; +engine.onSceneLoaded.once(() => { + const el = document.getElementById("version"); + if (el) + setTimeout(() => el.remove(), 2e3); +}); +function requestSession(mode) { + engine.requestXRSession( + mode, + Constants.WebXRRequiredFeatures, + Constants.WebXROptionalFeatures + ).catch((e) => console.error(e)); +} +function setupButtonsXR() { + const arButton = document.getElementById("ar-button"); + if (arButton) { + arButton.dataset.supported = engine.arSupported; + arButton.addEventListener("click", () => requestSession("immersive-ar")); + } + const vrButton = document.getElementById("vr-button"); + if (vrButton) { + vrButton.dataset.supported = engine.vrSupported; + vrButton.addEventListener("click", () => requestSession("immersive-vr")); + } +} +if (document.readyState === "loading") { + window.addEventListener("load", setupButtonsXR); +} else { + setupButtonsXR(); +} +engine.registerComponent(Cursor); +engine.registerComponent(CursorTarget); +engine.registerComponent(FingerCursor); +engine.registerComponent(FixedFoveation); +engine.registerComponent(HandTracking); +engine.registerComponent(HowlerAudioListener); +engine.registerComponent(PlayerHeight); +engine.registerComponent(VrModeActiveSwitch); +engine.registerComponent(BgMusic); +engine.registerComponent(BulletSpawner); +engine.registerComponent(ConfettiParticles); +engine.registerComponent(HudControl); +engine.registerComponent(JoystickMovement); +engine.registerComponent(MouseLookCustom); +engine.registerComponent(MouseSpawner); +engine.registerComponent(PlayAgainButton); +engine.registerComponent(PlayerLocation); +engine.registerComponent(ScoreDisplay); +engine.registerComponent(ShotCounter); +engine.registerComponent(SpawnMover); +engine.registerComponent(TeleportCustom); +engine.registerComponent(WasdControlsCustom); +engine.scene.load(`${Constants.ProjectName}.bin`); +/*! Bundled license information: + +howler/dist/howler.js: + (*! + * howler.js v2.2.3 + * howlerjs.com + * + * (c) 2013-2020, James Simpson of GoldFire Studios + * goldfirestudios.com + * + * MIT License + *) + (*! + * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported. + * + * howler.js v2.2.3 + * howlerjs.com + * + * (c) 2013-2020, James Simpson of GoldFire Studios + * goldfirestudios.com + * + * MIT License + *) +*/ +//# sourceMappingURL=MyWonderland-bundle.js.map diff --git a/deploy/MyWonderland-bundle.js.map b/deploy/MyWonderland-bundle.js.map new file mode 100644 index 0000000..f4dfb36 --- /dev/null +++ b/deploy/MyWonderland-bundle.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../node_modules/howler/dist/howler.js", "../node_modules/earcut/src/earcut.js", "../node_modules/node_modules/wasm-feature-detect/dist/esm/index.js", "../node_modules/@wonderlandengine/api/src/property.ts", "../node_modules/@wonderlandengine/api/src/decorators.ts", "../node_modules/@wonderlandengine/api/src/utils/object.ts", "../node_modules/@wonderlandengine/api/src/utils/event.ts", "../node_modules/@wonderlandengine/api/src/resources/resource.ts", "../node_modules/@wonderlandengine/api/src/utils/cbor.ts", "../node_modules/@wonderlandengine/api/src/component.ts", "../node_modules/@wonderlandengine/api/src/utils/fetch.ts", "../node_modules/@wonderlandengine/api/src/prefab.ts", "../node_modules/@wonderlandengine/api/src/utils/misc.ts", "../node_modules/@wonderlandengine/api/src/wonderland.ts", "../node_modules/@wonderlandengine/api/src/version.ts", "../node_modules/@wonderlandengine/api/src/resources/material-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/mesh-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/texture-manager.ts", "../node_modules/@wonderlandengine/api/src/webxr.ts", "../node_modules/@wonderlandengine/api/src/scene-gltf.ts", "../node_modules/@wonderlandengine/api/src/scene.ts", "../node_modules/@wonderlandengine/api/src/engine.ts", "../node_modules/@wonderlandengine/api/src/utils/bitset.ts", "../node_modules/@wonderlandengine/api/src/utils/logger.ts", "../node_modules/@wonderlandengine/api/src/wasm.ts", "../node_modules/@wonderlandengine/api/src/index.ts", "../node_modules/@wonderlandengine/components/dist/8thwall-camera.js", "../node_modules/@wonderlandengine/components/dist/utils/webxr.js", "../node_modules/@wonderlandengine/components/dist/anchor.js", "../node_modules/@wonderlandengine/components/dist/cursor-target.js", "../node_modules/gl-matrix/esm/common.js", "../node_modules/gl-matrix/esm/mat3.js", "../node_modules/gl-matrix/esm/mat4.js", "../node_modules/gl-matrix/esm/quat.js", "../node_modules/gl-matrix/esm/vec3.js", "../node_modules/gl-matrix/esm/vec4.js", "../node_modules/gl-matrix/esm/quat2.js", "../node_modules/@wonderlandengine/components/dist/hit-test-location.js", "../node_modules/@wonderlandengine/components/dist/cursor.js", "../node_modules/@wonderlandengine/components/dist/debug-object.js", "../node_modules/@wonderlandengine/components/dist/finger-cursor.js", "../node_modules/@wonderlandengine/components/dist/fixed-foveation.js", "../node_modules/@wonderlandengine/components/dist/hand-tracking.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-listener.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-source.js", "../node_modules/@wonderlandengine/components/dist/utils/utils.js", "../node_modules/@wonderlandengine/components/dist/image-texture.js", "../node_modules/@wonderlandengine/components/dist/mouse-look.js", "../node_modules/@wonderlandengine/components/dist/player-height.js", "../node_modules/@wonderlandengine/components/dist/target-framerate.js", "../node_modules/@wonderlandengine/components/dist/teleport.js", "../node_modules/@wonderlandengine/components/dist/trail.js", "../node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js", "../node_modules/@wonderlandengine/components/dist/video-texture.js", "../node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js", "../node_modules/@wonderlandengine/components/dist/plane-detection.js", "../node_modules/@wonderlandengine/components/dist/vrm.js", "../node_modules/@wonderlandengine/components/dist/wasd-controls.js", "../js/game.js", "../js/bg-music.js", "../js/bullet-physics.js", "../js/bullet-spawner.js", "../js/confetti-particles.js", "../js/hud-control.js", "../js/joystick-movement.js", "../js/mouse-look-custom.js", "../js/mouse-mover.js", "../js/score-trigger.js", "../js/mouse-spawner.js", "../js/play-again-button.js", "../js/player-location.js", "../js/score-display.js", "../js/shot-counter.js", "../js/spawn-mover.js", "../js/teleport-custom.js", "../js/wasd-controls-custom.js", "../js/index.js"], + "sourcesContent": ["/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, \u221E]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspending\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "/**\n * Component property type.\n */\nexport enum Type {\n /**\n * **Native**\n *\n * Property of a native component. Must not be used in custom components.\n *\n * @hidden\n */\n Native = 0,\n\n /**\n * **Bool**:\n *\n * Appears in the editor as a checkbox.\n *\n * Initial value is `false`, unless overridden by the `default` property.\n */\n Bool = 1,\n\n /**\n * **Int**:\n *\n * Appears in the editor as an integer input field.\n *\n * Initial value is `0`, unless overridden by the `default` property.\n */\n Int = 2,\n\n /**\n * **Float**:\n *\n * Appears in the editor as a floating point input field.\n *\n * Initial value is `0.0`, unless overridden by the `default` property.\n */\n Float = 3,\n\n /**\n * **String / Text**:\n *\n * Appears in the editor as a single-line text input field.\n *\n * Initial value is an empty string, unless overridden by the `default`\n * property.\n */\n String = 4,\n\n /**\n * **Enumeration**:\n *\n * Appears in the editor as a dropdown with given values. The additional\n * `values` parameter with selection options is mandatory.\n *\n * The property value is resolved to an **index** into the `values` array.\n *\n * Initial value is the first element in `values`, unless overridden by\n * the `default` property. The `default` value can be a string or an index\n * into `values`.\n *\n * @example\n *\n * ```js\n * camera: {type: Type.Enum, values: ['auto', 'back', 'front'], default: 'auto'},\n * ```\n */\n Enum = 5,\n\n /**\n * **Object reference**:\n *\n * Appears in the editor as an object resource selection dropdown\n * with object picker.\n *\n * Initial value is `null`.\n */\n Object = 6,\n\n /**\n * **Mesh reference**:\n *\n * Appears in the editor as a mesh resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Mesh = 7,\n\n /**\n * **Texture reference**:\n *\n * Appears in the editor as a texture resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Texture = 8,\n\n /**\n * **Material reference**:\n *\n * Appears in the editor as a material resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Material = 9,\n\n /**\n * **Animation reference**:\n *\n * Appears in the editor as an animation resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Animation = 10,\n\n /**\n * **Skin reference**:\n *\n * Appears in the editor as a skin resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Skin = 11,\n\n /**\n * **Color**:\n *\n * Appears in the editor as a color widget.\n *\n * Initial value is `[0.0, 0.0, 0.0, 1.0]`, unless overridden by the\n * `default` property.\n */\n Color = 12,\n\n /**\n * **Vector of two floats**:\n *\n * Appears in the editor as a two-element floating point input field.\n *\n * Initial value is `[0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector2 = 13,\n\n /**\n * **Vector of three floats**:\n *\n * Appears in the editor as a three-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector3 = 14,\n\n /**\n * **Vector of four floats**:\n *\n * Appears in the editor as a four-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector4 = 15,\n\n /**\n * **Array of property**:\n *\n * Appears in the editor as a list of **N** elements.\n *\n * Initial value is `[]`, unless overridden by the `default` property.\n */\n Array = 16,\n\n /**\n * **Class with sub-properties**:\n *\n * Appears in the editor as a nested properties structure.\n *\n * Initial value is `{}`, unless overridden by the `default` property.\n */\n Record = 17,\n\n /**\n * **Particle effect reference**:\n *\n * Appears in the editor as a particle effect resource selection dropdown.\n *\n * Initial value is `null`.\n */\n ParticleEffect = 18,\n\n /** @hidden */\n Count = 19,\n}\n\n/**\n * Cloning interface for component properties.\n *\n * Used for component initialization and cloning.\n */\nexport interface PropertyCloner {\n /**\n * Clone a property value.\n * @param type Type of the property.\n * @param value Value of the property.\n * @returns The cloned value.\n */\n clone(type: Type, value: any): any;\n}\n\n/**\n * Interface describing a record class used in properties.\n *\n * ```ts\n * import {property, PropertyRecord} from '@wonderlandengine/api';\n * class Record implements PropertyRecord {\n * @property.string()\n * string: string;\n * @property.record(SubRecord)\n * subrecord: SubRecord;\n * }\n * ```\n *\n * @note Implementing `PropertyRecord` isn't required.\n */\nexport interface PropertyRecord {\n new (): unknown;\n /** Static properties definition, similar to {@link Component.Properties}. */\n Properties?: Record;\n /** @hidden */\n _propertyOrder?: string[];\n}\n\n/**\n * Default cloner implementation.\n *\n * Clones array-like properties and leaves all other types unchanged.\n */\nexport class DefaultPropertyCloner implements PropertyCloner {\n clone(type: Type, value: any): any {\n switch (type) {\n case Type.Color:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n case Type.Array:\n /** @todo: Array should be deep cloned. */\n return value.slice();\n case Type.Record: {\n if (!value || !value.constructor) return value;\n\n const RecordClass = value.constructor as PropertyRecord;\n const result = new RecordClass() as Record;\n for (const key in RecordClass.Properties) {\n const prop = RecordClass.Properties[key];\n result[key] = this.clone(prop.type, value[key]);\n }\n return result;\n }\n default:\n return value;\n }\n }\n}\n\n/** Default cloner for property values. */\nexport const defaultPropertyCloner = new DefaultPropertyCloner();\n\n/**\n * Custom component property.\n *\n * For more information about component properties, have a look\n * at the {@link Component.Properties} attribute.\n */\nexport interface ComponentProperty {\n /** Property type. */\n type: Type;\n /** Default value, depending on type. */\n default?: any;\n /** Values for {@link Type.Enum} */\n values?: string[];\n /** Record definition, used if the property type is {@link Type.Record}. */\n record?: PropertyRecord;\n element?: ComponentProperty;\n required?: boolean;\n /**\n * Cloner for the property.\n *\n * If not defined, falls back to {@link defaultPropertyCloner}. To prevent\n * any cloning, set a custom cloner that passes the original value back\n * from {@link PropertyCloner.clone}. */\n cloner?: PropertyCloner;\n}\n\n/**\n * Component property namespace.\n *\n * Usage:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myBool: Property.bool(true),\n * myInt: Property.int(42),\n * myString: Property.string('Hello World!'),\n * myMesh: Property.mesh()\n * }\n * }\n * ```\n *\n * It's possible to nest properties using record, and array:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Weapon {\n * static Properties = {\n * damage: Property.float(100.0),\n * fireRate: Property.int(10)\n * }\n * }\n * class Zombie {\n * static Properties = {\n * names: Property.string('Mad Zombie'),\n * animation: Property.animation()\n * }\n * }\n *\n * class Player extends Component {\n * static Properties = {\n * weapon: Property.record(Weapon),\n * zombieTargets: Property.array(Zombie),\n * }\n * }\n * ```\n *\n * For TypeScript users, you can use the decorators instead.\n */\nexport const Property = {\n /**\n * Create an boolean property.\n *\n * @param defaultValue The default value. If not provided, defaults to `false`.\n */\n bool(defaultValue: boolean = false): ComponentProperty {\n return {type: Type.Bool, default: defaultValue};\n },\n\n /**\n * Create an integer property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0`.\n */\n int(defaultValue: number = 0): ComponentProperty {\n return {type: Type.Int, default: defaultValue};\n },\n\n /**\n * Create an float property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0.0`.\n */\n float(defaultValue: number = 0.0): ComponentProperty {\n return {type: Type.Float, default: defaultValue};\n },\n\n /**\n * Create an string property.\n *\n * @param defaultValue The default value. If not provided, defaults to `''`.\n */\n string(defaultValue = ''): ComponentProperty {\n return {type: Type.String, default: defaultValue};\n },\n\n /**\n * Create an enumeration property.\n *\n * @param values The list of values.\n * @param defaultValue The default value. Can be a string or an index into\n * `values`. If not provided, defaults to the first element.\n */\n enum(values: string[], defaultValue?: string | number): ComponentProperty {\n return {type: Type.Enum, values, default: defaultValue};\n },\n\n /** Create an {@link Object3D} reference property. */\n object(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Object, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Mesh} reference property. */\n mesh(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Mesh, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Texture} reference property. */\n texture(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Texture, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Material} reference property. */\n material(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Material, default: null, required: opts?.required ?? false};\n },\n\n /** Create an {@link Animation} reference property. */\n animation(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Animation, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Skin} reference property. */\n skin(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Skin, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link ParticleEffect} reference property. */\n particleEffect(opts?: PropertyReferenceOptions): ComponentProperty {\n return {\n type: Type.ParticleEffect,\n default: null,\n required: opts?.required ?? false,\n };\n },\n\n /**\n * Create a color property.\n *\n * @param r The red component, in the range [0; 1].\n * @param g The green component, in the range [0; 1].\n * @param b The blue component, in the range [0; 1].\n * @param a The alpha component, in the range [0; 1].\n */\n color(r = 0.0, g = 0.0, b = 0.0, a = 1.0): ComponentProperty {\n return {type: Type.Color, default: [r, g, b, a]};\n },\n\n /**\n * Create a two-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n */\n vector2(x = 0.0, y = 0.0): ComponentProperty {\n return {type: Type.Vector2, default: [x, y]};\n },\n\n /**\n * Create a three-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n */\n vector3(x = 0.0, y = 0.0, z = 0.0): ComponentProperty {\n return {type: Type.Vector3, default: [x, y, z]};\n },\n\n /**\n * Create a four-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n * @param w The w component.\n */\n vector4(x = 0.0, y = 0.0, z = 0.0, w = 0.0): ComponentProperty {\n return {type: Type.Vector4, default: [x, y, z, w]};\n },\n\n /**\n * Create a class property.\n *\n * @param definition The template class, containing sub properties.\n */\n record(definition: PropertyRecord): ComponentProperty {\n return {type: Type.Record, record: definition, default: new definition()};\n },\n\n /**\n * Create an unsized array of properties.\n *\n * @note Array properties can only contain a single element type.\n *\n * @param element The element property.\n */\n array(element: ComponentProperty): ComponentProperty {\n /** @todo: Implement ArrayBuffer, which are much faster to decode */\n return {type: Type.Array, element, default: undefined};\n },\n};\n\n/**\n * Options to create a reference property, i.e.,\n * object, mesh, animation, skin, etc...\n */\nexport interface PropertyReferenceOptions {\n /** If `true`, the component will throw if the property isn't initialized. */\n required?: boolean;\n}\n\n/** All the keys that exists on the {@link Property} object. */\nexport type PropertyKeys = keyof typeof Property;\n\n/** Retrieve all the argument types of a {@link Property} function. */\nexport type PropertyArgs = Parameters<(typeof Property)[key]>;\n", "import {Component, ComponentConstructor} from './wonderland.js';\nimport {Property, PropertyArgs, PropertyKeys, ComponentProperty, Type} from './property.js';\n\n/**\n * Decorator for JS component properties.\n *\n * @param data The property description as an object literal\n * @returns A decorator function modifying the `Properties` static\n * attribute\n */\nfunction propertyDecorator(data: ComponentProperty) {\n return function (target: any, propertyKey: string): void {\n const ctor = target.constructor as ComponentConstructor;\n ctor.Properties = ctor.hasOwnProperty('Properties') ? ctor.Properties : {};\n ctor.Properties[propertyKey] = data;\n };\n}\n\n/**\n * Decorator for making a getter enumerable.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @enumerable()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function enumerable() {\n return function (_: any, __: string, descriptor: PropertyDescriptor) {\n descriptor.enumerable = true;\n };\n}\n\n/**\n * Decorator for native properties.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @nativeProperty()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function nativeProperty() {\n return function (\n target: Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n enumerable()(target, propertyKey, descriptor);\n propertyDecorator({type: Type.Native})(target, propertyKey);\n };\n}\n\n/**\n * Property decorators namespace.\n *\n * You can use the decorators to mark a class attribute as\n * a Wonderland Engine property.\n *\n * Usage:\n *\n * ```ts\n * import {Mesh} from '@wonderlandengine/api';\n * import {property} from '@wonderlandengine/api/decorators.js';\n *\n * class MyComponent extends Component {\n * @property.bool(true)\n * myBool!: boolean;\n *\n * @property.int(42)\n * myInt!: number;\n *\n * @property.string('Hello World!')\n * myString!: string;\n *\n * @property.mesh()\n * myMesh!: Mesh;\n * }\n * ```\n *\n * For JavaScript users, please declare the properties statically.\n */\nexport const property = {} as {\n [key in PropertyKeys]: (\n ...args: PropertyArgs\n ) => ReturnType;\n};\n\nfor (const name in Property) {\n /* Assign each property functor to a TypeScript decorator.\n * This code extracts parameters and return type to provide proper\n * typings to the user. */\n property[name as PropertyKeys] = (...args: PropertyArgs) => {\n const functor = Property[name as PropertyKeys] as (\n ...args: unknown[]\n ) => ComponentProperty;\n return propertyDecorator(functor(...args));\n };\n}\n", "import {ImageLike} from '../types.js';\n\n/**\n * Check if a given value is a native string or a `String` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type string literal or `String`, `false` otherwise.\n */\nexport function isString(value: any): value is string {\n if (value === '') return true;\n return value && (typeof value === 'string' || value.constructor === String);\n}\n\n/**\n * Check if a given value is a native number or a `Number` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type number literal or `Number`, `false` otherwise.\n */\nexport function isNumber(value: any): value is number {\n if (value === null || value === undefined) return false;\n return typeof value === 'number' || value.constructor === Number;\n}\n\n/**\n * Check whether a given value is a visual media.\n *\n * @param value The value to check\n * @returns `true` if the `value` is an image, video, or canvas.\n */\nexport function isImageLike(value: any): value is ImageLike {\n return (\n value instanceof HTMLImageElement ||\n value instanceof HTMLVideoElement ||\n value instanceof HTMLCanvasElement\n );\n}\n", "/**\n * Listener callback type, used in {@link Emitter.add}.\n */\nexport type ListenerCallback = (...data: T) => void;\n\n/**\n * Registration options for a listener in an {@link Emitter}.\n */\nexport interface ListenerOptions {\n /**\n * Listener identifier. This is used to find and remove the listener\n * without needing the callback reference.\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * For more information, please look at the {@link Emitter.remove} method.\n */\n id: any | undefined;\n /**\n * If `true`, the listener is automatically removed after it's invoked.\n * Defaults to `false`.\n */\n once: boolean;\n}\n\n/** Internal listener type. */\ntype Listener = ListenerOptions & {\n callback: ListenerCallback;\n};\n\n/** Internal type for transaction. */\nenum TransactionType {\n Addition = 1,\n Removal = 2,\n}\n\n/**\n * Event emitter.\n *\n * This class allows to register listeners that will get notified by the emitter.\n *\n * Usage example:\n *\n * ```js\n * // `onPreRender` is an `Emitter` instance.\n * scene.onPreRender.add(() => console.log('before rendering'));\n * // `onPostRender` is an `Emitter` instance.\n * scene.onPostRender.add(() => console.log('after rendering'));\n * ```\n *\n * You can create your own emitters:\n *\n * ```js\n * import {Emitter} from '@wonderlandengine/api';\n *\n * const emitter = new Emitter();\n * ```\n *\n * You can notify listeners in to your emitter using {@link Emitter.notify}:\n *\n * ```js\n * // Notifies all the listeners.\n * emitter.notify();\n * // Notifies all the listeners with some data.\n * emitter.notify({ myInt: 42, myStr: 'Hello World!' });\n * ```\n *\n * @category event\n */\nexport class Emitter {\n /**\n * List of listeners to trigger when `notify` is called.\n *\n * @hidden\n */\n protected readonly _listeners: Listener[] = [];\n\n /**\n * `true` if the emitter is currently notifying listeners. This\n * is used to defer addition and removal.\n *\n * @hidden\n */\n private _notifying = false;\n\n /**\n * Pending additions / removals, performed during a notification.\n *\n * @hidden\n */\n private readonly _transactions: {\n type: TransactionType;\n data: Listener | ListenerCallback;\n }[] = [];\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Basic usage:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * });\n * ```\n *\n * Automatically remove the listener when an event is received:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * }, {once: true});\n * ```\n *\n * @param listener The callback to register.\n * @param opts The listener options. For more information, please have a look\n * at the {@link ListenerOptions} interface.\n *\n * @returns Reference to self (for method chaining)\n */\n add(listener: ListenerCallback, opts: Partial = {}): this {\n const {once = false, id = undefined} = opts;\n const data = {id, once, callback: listener};\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Addition, data});\n return this;\n }\n this._listeners.push(data);\n return this;\n }\n\n /**\n * Equivalent to {@link Emitter.add}.\n *\n * @param listeners The callback(s) to register.\n * @returns Reference to self (for method chaining).\n *\n * @deprecated Please use {@link Emitter.add} instead.\n */\n push(...listeners: ListenerCallback[]): this {\n for (const cb of listeners) this.add(cb);\n return this;\n }\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Once notified, the listener will be automatically removed.\n *\n * The method is equivalent to calling {@link Emitter.add} with:\n *\n * ```js\n * emitter.add(listener, {once: true});\n * ```\n *\n * @param listener The callback to register.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback) {\n return this.add(listener, {once: true});\n }\n\n /**\n * Remove a registered listener.\n *\n * Usage with a callback:\n *\n * ```js\n * const listener = (data) => console.log(data);\n * emitter.add(listener);\n *\n * // Remove using the callback reference:\n * emitter.remove(listener);\n * ```\n *\n * Usage with an id:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'my-callback'});\n *\n * // Remove using the id:\n * emitter.remove('my-callback');\n * ```\n *\n * Using identifiers, you will need to ensure your value is unique to avoid\n * removing listeners from other libraries, e.g.,:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'non-unique'});\n * // This second listener could be added by a third-party library.\n * emitter.add((data) => console.log('Hello From Library!'), {id: 'non-unique'});\n *\n * // Ho Snap! This also removed the library listener!\n * emitter.remove('non-unique');\n * ```\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * Example:\n *\n * ```js\n * emitter.add(() => console.log('Hello'), {id: {value: 42}});\n * emitter.add(() => console.log('World!'), {id: {value: 42}});\n * emitter.remove({value: 42}); // None of the above listeners match!\n * emitter.notify(); // Prints 'Hello' and 'World!'.\n * ```\n *\n * Here, both emitters have id `{value: 42}`, but the comparison is made by reference. Thus,\n * the `remove()` call has no effect. We can make it work by doing:\n *\n * ```js\n * const id = {value: 42};\n * emitter.add(() => console.log('Hello'), {id});\n * emitter.add(() => console.log('World!'), {id});\n * emitter.remove(id); // Same reference, it works!\n * emitter.notify(); // Doesn't print.\n * ```\n *\n * @param listener The registered callback or a value representing the `id`.\n *\n * @returns Reference to self (for method chaining)\n */\n remove(listener: ListenerCallback | any): this {\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Removal, data: listener});\n return this;\n }\n\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) {\n listeners.splice(i--, 1);\n }\n }\n return this;\n }\n\n /**\n * Check whether the listener is registered.\n *\n * @note This method performs a linear search.\n *\n * * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n *\n * @param listener The registered callback or a value representing the `id`.\n * @returns `true` if the handle is found, `false` otherwise.\n */\n has(listener: ListenerCallback | any): boolean {\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) return true;\n }\n return false;\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note This method ensures all listeners are called even if\n * an exception is thrown. For (possibly) faster notification,\n * please use {@link Emitter.notifyUnsafe}.\n *\n * @param data The data to pass to listener when invoked.\n */\n notify(...data: T): void {\n const listeners = this._listeners;\n\n this._notifying = true;\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n try {\n listener.callback(...data);\n } catch (e) {\n console.error(e);\n }\n }\n this._notifying = false;\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note Because this method doesn't catch exceptions, some listeners\n * will be skipped on a throw. Please use {@link Emitter.notify} for safe\n * notification.\n *\n * @param data The data to pass to listener when invoked.\n */\n notifyUnsafe(...data: T): void {\n const listeners = this._listeners;\n\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n listener.callback(...data);\n }\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Return a promise that will resolve on the next event.\n *\n * @note The promise might never resolve if no event is sent.\n *\n * @returns A promise that resolves with the data passed to\n * {@link Emitter.notify}.\n */\n promise(): Promise {\n return new Promise((res, _) => {\n this.once((...args) => {\n if (args.length > 1) {\n res(args);\n } else {\n res(args[0] as T);\n }\n });\n });\n }\n\n /**\n * Number of listeners.\n *\n * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n */\n get listenerCount() {\n return this._listeners.length;\n }\n\n /** `true` if it has no listeners, `false` otherwise. */\n get isEmpty() {\n return this.listenerCount === 0;\n }\n\n /**\n * Flush all pending transactions.\n *\n * @hidden\n */\n private _flushTransactions() {\n const listeners = this._listeners;\n for (const transaction of this._transactions) {\n if (transaction.type === TransactionType.Addition) {\n listeners.push(transaction.data as Listener);\n } else {\n this.remove(transaction.data as ListenerCallback);\n }\n }\n this._transactions.length = 0;\n }\n}\n\n/**\n * Registration options for a listener in an {@link RetainEmitter}.\n *\n * Those options extend {@link ListenerOptions}.\n */\nexport interface RetainListenerOptions extends ListenerOptions {\n /**\n * If `true`, directly resolves if the emitter retains a value. If `false`,\n * the listener isn't invoked until the next {@link Emitter.notify}.\n *\n * Defaults to `true`.\n */\n immediate: boolean;\n}\n\n/* Dummy value used with RetainEmitter. */\nconst RetainEmitterUndefined: Record = {};\n\n/**\n * Event emitter that retains event data when notified.\n *\n * After a notification happens, subsequent calls to {@link RetainEmitter.add} will get\n * automatically notified.\n *\n * You can use another emitter in order to cancel the last retained event:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n *\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n * ```\n *\n * You can reset the state of the emitter, i.e., making it forget about the\n * last event using:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n *\n * // Reset the state of the emitter.\n * onStart.reset();\n * onStart.add((data) => console.log(data)) // Doesn't print anything.\n * ```\n *\n * For more information about emitters, please have a look at the base {@link Emitter} class.\n *\n * @category event\n */\nexport class RetainEmitter extends Emitter {\n /** Pre-resolved data. @hidden */\n protected _event: T | typeof RetainEmitterUndefined = RetainEmitterUndefined;\n\n /**\n * Emitter target used to reset the state of this emitter.\n *\n * @hidden\n */\n protected readonly _reset: Emitter | undefined;\n\n /** @override */\n add(listener: ListenerCallback, opts?: Partial): this {\n const immediate = opts?.immediate ?? true;\n if (this._event !== RetainEmitterUndefined && immediate) {\n listener(...(this._event as T));\n }\n super.add(listener, opts);\n return this;\n }\n\n /**\n * @override\n *\n * @param listener The callback to register.\n * @param immediate If `true`, directly resolves if the emitter retains a value.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback, immediate?: boolean) {\n return this.add(listener, {once: true, immediate});\n }\n\n /** @override */\n notify(...data: T): void {\n this._event = data;\n super.notify(...data);\n }\n\n /** @override */\n notifyUnsafe(...data: T): void {\n this._event = data;\n super.notifyUnsafe(...data);\n }\n\n /**\n * Reset the state of the emitter.\n *\n * Further call to {@link Emitter.add} will not automatically resolve,\n * until a new call to {@link Emitter.notify} is performed.\n *\n * @returns Reference to self (for method chaining)\n */\n reset(): this {\n this._event = RetainEmitterUndefined;\n return this;\n }\n\n /** Returns the retained data, or `undefined` if no data was retained. */\n get data(): T | undefined {\n return this.isDataRetained ? this._event : undefined;\n }\n\n /** `true` if data is retained from the last event, `false` otherwise. */\n get isDataRetained(): boolean {\n return this._event !== RetainEmitterUndefined;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Prefab} from '../prefab.js';\nimport {Scene} from '../scene.js';\nimport {FirstConstructorParam} from '../types.js';\n\n/** Interface for a resource class */\ntype ResourceConstructor = {\n new (host: FirstConstructorParam, index: number): T;\n};\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nfunction createDestroyedProxy(\n host: FirstConstructorParam,\n type: ResourceConstructor\n) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(\n `Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n set(_, param: string) {\n throw new Error(\n `Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n }\n );\n}\n\n/**\n * Base class for engine resources, such as:\n * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n *\n * @since 1.2.0\n */\nexport abstract class Resource {\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n private readonly _engine: WonderlandEngine;\n\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n this._id = index;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._index === other._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._index <= 0;\n }\n}\n\n/**\n * Base class for scene resources, such as:\n * * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n * - {@link Skin}\n * - {@link Animation}\n *\n * @since 1.2.0\n */\nexport abstract class SceneResource {\n /** @hidden */\n static _pack(scene: number, index: number) {\n return (scene << 22) | index;\n }\n\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n protected readonly _scene: Prefab;\n\n constructor(scene: Prefab, index: number) {\n this._scene = scene;\n this._index = index;\n this._id = SceneResource._pack(scene._index, index);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._id === other._id;\n }\n\n /** Hosting instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._id <= 0;\n }\n}\n\n/**\n * Manager for resources.\n *\n * Resources are accessed via the engine they belong to.\n *\n * @see {@link WonderlandEngine.textures}, {@link WonderlandEngine.meshes},\n * and {@link WonderlandEngine.materials}.\n *\n * @since 1.2.0\n */\nexport class ResourceManager {\n /** @hidden */\n protected readonly _host: FirstConstructorParam;\n /** Cache. @hidden */\n protected readonly _cache: (T | null)[] = [];\n\n /** Resource class. @hidden */\n private readonly _template: ResourceConstructor;\n\n /** Destructor proxy, used if {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`. @hidden */\n private _destructor: {} | null = null;\n\n private readonly _engine: WonderlandEngine;\n\n /**\n * Create a new manager\n *\n * @param host The host containing the managed resources.\n * @param Class The class to instantiate when wrapping an index.\n *\n * @hidden\n */\n constructor(host: FirstConstructorParam, Class: ResourceConstructor) {\n this._host = host;\n this._template = Class;\n this._engine = (host as Prefab).engine ?? host;\n }\n\n /**\n * Wrap the index into a resource instance.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index (if any).\n *\n * @param index The resource index.\n * @returns\n */\n wrap(index: number) {\n if (index <= 0) return null;\n const texture =\n this._cache[index] ??\n (this._cache[index] = new this._template(this._host, index));\n return texture;\n }\n\n /**\n * Retrieve the resource at the given index.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index.\n */\n get(index: number): T | null {\n return this._cache[index] ?? null;\n }\n\n /** Number of textures allocated in the manager. */\n get allocatedCount() {\n return this._cache.length;\n }\n\n /**\n * Number of textures in the manager.\n *\n * @note For performance reasons, avoid calling this method when possible.\n */\n get count() {\n let count = 0;\n for (const res of this._cache) {\n if (res && res.index >= 0) ++count;\n }\n return count;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Destroy the instance.\n *\n * @note This method takes care of the prototype destruction.\n *\n * @hidden\n */\n _destroy(instance: T) {\n const index = instance.index;\n (instance._index as number) = -1;\n (instance._id as number) = -1;\n this._cache[index] = null;\n\n if (!this.engine.erasePrototypeOnDestroy) return;\n\n if (!this._destructor)\n this._destructor = createDestroyedProxy(this._host, this._template);\n Object.setPrototypeOf(instance, this._destructor);\n }\n\n /**\n * Mark all instances as destroyed.\n *\n * @hidden\n */\n _clear() {\n if (!this.engine.erasePrototypeOnDestroy) return;\n for (let i = 0; i < this._cache.length; ++i) {\n const instance = this._cache[i];\n if (instance) this._destroy(instance);\n }\n this._cache.length = 0;\n }\n}\n", "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2016 Patrick Gansterer \n * Copyright (c) 2020-2023 Aaron Huggins \n * Copyright (c) 2024 Wonderland GmbH \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst kCborTagBignum = 2;\nconst kCborTagNegativeBignum = 3;\n/* RFC 8746 Tag values for typed little-endian arrays */\nconst kCborTagUint8 = 64;\nconst kCborTagUint16 = 69;\nconst kCborTagUint32 = 70;\nconst kCborTagUint64 = 71;\nconst kCborTagInt8 = 72;\nconst kCborTagInt16 = 77;\nconst kCborTagInt32 = 78;\nconst kCborTagInt64 = 79;\nconst kCborTagFloat32 = 85;\nconst kCborTagFloat64 = 86;\n\n/**\n * Whether key/value dictionaries should be decoded as objects or as\n * `Map`. The latter is useful if non-string keys or iterating in\n * insertion order are required.\n */\nexport type DictionaryOption = 'object' | 'map';\n\n/** Options for the decoder. */\nexport interface Options {\n /** The dictionary type to use. Defaults to `object`. */\n dictionary?: DictionaryOption;\n}\n\n/** A function to modify tagged values which are encountered during decoding. */\nexport type Tagger = (tag: number | bigint, value: any) => any;\n\n/**\n * Converts a Concise Binary Object Representation (CBOR) buffer into an object.\n *\n * ```js\n * const buffer = new Uint8Array([0xa2, 0x01, 0x02, 0x03, 0x04]).buffer;\n * const decoded = decode(buffer);\n * console.log(decoded); // { \"1\": 2, \"3\": 4 }\n * ```\n *\n * CBOR values can be wrapped in a numeric tag. To handle and possibly\n * transform tagged values, pass a tagger function:\n *\n * ```js\n * const buffer = new Uint8Array([\n * 0xa1, 0x63, 0x75, 0x72, 0x6c, 0xd8, 0x20, 0x70,\n * 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,\n * 0x69, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f\n * ]);\n * const decoded = decode(buffer, (tag, value) => {\n * if (tag === 32) return new URL(value);\n * return value;\n * });\n * console.log(decoded); // { url: URL { href: \"http://site.com/\" } }\n * ```\n *\n * Decoded basic types generally match the equivalent JavaScript types. Byte\n * strings are decoded to Uint8Array.\n *\n * Tagged values are left as-is, with the following exceptions:\n * - Bignum values (byte strings with tag 2 or 3) are decoded to BigInt\n * - Little-endian versions of typed arrays as defined in RFC 8746 are decoded\n * to JavaScript typed arrays\n *\n * @param data A valid CBOR buffer.\n * @param tagger Optional callback for transformation of tagged values.\n * @param options Options for decoding behavior.\n * @returns The CBOR buffer converted to a JavaScript value.\n */\nexport function decode(\n data: Uint8Array,\n tagger: Tagger = (_, value) => value,\n options: Options = {}\n): T {\n const reader = new CBORReader(data);\n reader.tagger = tagger;\n if (options.dictionary) {\n reader.dictionary = options.dictionary;\n }\n\n const ret = reader.decodeItem();\n if (reader.offset !== data.byteLength) {\n throw new Error('CBORError: Remaining bytes');\n }\n return ret;\n}\n\nexport enum CBORType {\n Array = 0,\n Record = 1,\n Constant = 2,\n Native = 3,\n}\n\n/**\n * Check whether the type is an array, a record,\n * or a native type (decodable without recursion).\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The type category.\n */\nexport function getType(typeInfo: number): CBORType {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n switch (majorType) {\n case 4:\n return CBORType.Array;\n case 5:\n return CBORType.Record;\n case 7:\n return CBORType.Constant;\n }\n return CBORType.Native;\n}\n\nexport function isUndefined(type: CBORType, length: number) {\n return type === CBORType.Constant && length === 23;\n}\n\n/**\n * CBOR reader.\n */\nexport class CBORReader {\n dataView: DataView;\n data: Uint8Array;\n offset: number;\n tagger: Tagger = (_, value) => value;\n dictionary: 'object' | 'map' = 'object';\n\n constructor(data: Uint8Array) {\n this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.data = data;\n this.offset = 0;\n }\n\n /* Wonderland extra methods. */\n\n /**\n * Read type information and move the cursor.\n *\n * @note Must be called before reading the value.\n */\n readTypeInfo() {\n return this.readUint8();\n }\n\n /**\n * Read the array length.\n *\n * @note Must not be called if the type is a constant.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The array length.\n */\n readArrayLength(typeInfo: number) {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n const length = this.readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n return length;\n }\n\n /* CBOR original decoding methods. */\n\n /**\n * Recursively read the item.\n *\n * @note This method will recursively allocate arrays and records\n * based the item type.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The decoded value.\n */\n readItem(typeInfo: number, inputLen: number | null = null): any {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n let i;\n\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return this.readFloat16();\n case 26:\n return this.readFloat32();\n case 27:\n return this.readFloat64();\n }\n }\n\n let length = inputLen === null ? this.readLength(additionalInformation) : inputLen;\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n\n switch (majorType) {\n case 0:\n return length;\n case 1:\n if (typeof length === 'number') {\n return -1 - length;\n }\n return -1n - length;\n case 2: {\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n fullArrayLength += length;\n elements.push(this.readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return this.readArrayBuffer(length as number).slice();\n }\n case 3: {\n /* Can't use TextDecoder.decode() because not all browsers\n * support calling it with an underlying SharedArrayBuffer yet.\n * See https://github.com/whatwg/encoding/issues/172 */\n /** @todo Re-evaluate browser support */\n const utf16data: number[] = [];\n if (length < 0) {\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n this.appendUtf16Data(utf16data, length);\n }\n } else {\n this.appendUtf16Data(utf16data, length as number);\n }\n let string = '';\n const DECODE_CHUNK_SIZE = 8192;\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n string += String.fromCharCode.apply(\n null,\n utf16data.slice(i, i + DECODE_CHUNK_SIZE)\n );\n }\n return string;\n }\n case 4: {\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!this.readBreak()) {\n retArray.push(this.decodeItem());\n }\n } else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = this.decodeItem();\n }\n }\n return retArray;\n }\n case 5: {\n if (this.dictionary === 'map') {\n const retMap = new Map();\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (retMap.has(key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retMap.set(key, this.decodeItem());\n }\n return retMap;\n }\n const retObject: any = {};\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (Object.prototype.hasOwnProperty.call(retObject, key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retObject[key] = this.decodeItem();\n }\n return retObject;\n }\n case 6: {\n const value = this.decodeItem();\n const tag = length;\n if (value instanceof Uint8Array) {\n switch (tag) {\n case kCborTagBignum:\n case kCborTagNegativeBignum:\n let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n);\n if (tag == kCborTagNegativeBignum) {\n num = -1n - num;\n }\n return num;\n /* Little-endian typed arrays (RFC 8746) */\n case kCborTagUint8:\n return value;\n case kCborTagInt8:\n return new Int8Array(value.buffer);\n case kCborTagUint16:\n return new Uint16Array(value.buffer);\n case kCborTagInt16:\n return new Int16Array(value.buffer);\n case kCborTagUint32:\n return new Uint32Array(value.buffer);\n case kCborTagInt32:\n return new Int32Array(value.buffer);\n case kCborTagUint64:\n return new BigUint64Array(value.buffer);\n case kCborTagInt64:\n return new BigInt64Array(value.buffer);\n case kCborTagFloat32:\n return new Float32Array(value.buffer);\n case kCborTagFloat64:\n return new Float64Array(value.buffer);\n }\n }\n return this.tagger(tag, value);\n }\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return length as number;\n }\n }\n }\n\n decodeItem(): any {\n const initialByte = this.readUint8();\n return this.readItem(initialByte);\n }\n\n readArrayBuffer(length: number) {\n return this.commitRead(\n length,\n this.data.subarray(this.offset, this.offset + length)\n );\n }\n readFloat16() {\n const POW_2_24 = 5.960464477539063e-8;\n\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = this.readUint16();\n\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n\n if (exponent === 0x7c00) exponent = 0xff << 10;\n else if (exponent !== 0) exponent += (127 - 15) << 10;\n else if (fraction !== 0) return (sign ? -1 : 1) * fraction * POW_2_24;\n\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n readFloat32(): number {\n return this.commitRead(4, this.dataView.getFloat32(this.offset));\n }\n readFloat64(): number {\n return this.commitRead(8, this.dataView.getFloat64(this.offset));\n }\n readUint8(): number {\n return this.commitRead(1, this.data[this.offset]);\n }\n readUint16(): number {\n return this.commitRead(2, this.dataView.getUint16(this.offset));\n }\n readUint32(): number {\n return this.commitRead(4, this.dataView.getUint32(this.offset));\n }\n readUint64(): bigint {\n return this.commitRead(8, this.dataView.getBigUint64(this.offset));\n }\n readBreak(): boolean {\n if (this.data[this.offset] !== 0xff) return false;\n this.offset += 1;\n return true;\n }\n readLength(additionalInformation: number): number | bigint {\n if (additionalInformation < 24) return additionalInformation;\n if (additionalInformation === 24) return this.readUint8();\n if (additionalInformation === 25) return this.readUint16();\n if (additionalInformation === 26) return this.readUint32();\n if (additionalInformation === 27) {\n const integer = this.readUint64();\n if (integer <= Number.MAX_SAFE_INTEGER) return Number(integer);\n return integer;\n }\n if (additionalInformation === 31) return -1;\n throw new Error('CBORError: Invalid length encoding');\n }\n\n readIndefiniteStringLength(majorType: number): number {\n const initialByte = this.readUint8();\n if (initialByte === 0xff) return -1;\n const length = this.readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error('CBORError: Invalid indefinite length element');\n }\n return Number(length);\n }\n appendUtf16Data(utf16data: number[], length: number) {\n for (let i = 0; i < length; ++i) {\n let value = this.readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (this.readUint8() & 0x3f);\n length -= 1;\n } else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 2;\n } else {\n value =\n ((value & 0x07) << 18) |\n ((this.readUint8() & 0x3f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 3;\n }\n }\n\n if (value < 0x10000) {\n utf16data.push(value);\n } else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n\n private commitRead(length: number, value: T): T {\n this.offset += length;\n return value;\n }\n}\n", "import {Prefab} from './prefab.js';\nimport {\n defaultPropertyCloner,\n ComponentProperty,\n Type,\n PropertyRecord,\n} from './property.js';\nimport {\n AnimationComponent,\n BrokenComponent,\n CollisionComponent,\n Component,\n ComponentConstructor,\n DestroyedComponentInstance,\n InputComponent,\n LightComponent,\n MeshComponent,\n Object3D,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n LogTag,\n inheritProperties,\n} from './wonderland.js';\n\nimport {CBORReader, CBORType, getType, isUndefined} from './utils/cbor.js';\n\n/** Native components list */\nexport interface NativeComponents {\n 'collision': CollisionComponent;\n 'text': TextComponent;\n 'view': ViewComponent;\n 'mesh': MeshComponent;\n 'input': InputComponent;\n 'light': LightComponent;\n 'animation': AnimationComponent;\n 'physx': PhysXComponent;\n 'particle-effect': ParticleEffectComponent;\n}\n\n/**\n * Manage all component managers in a scene.\n *\n * @hidden\n */\nexport class ComponentManagers {\n /** Animation manager index. */\n readonly animation: number = -1;\n /** Collision manager index. */\n readonly collision: number = -1;\n /** JavaScript manager index. */\n readonly js: number = -1;\n /** Physx manager index. */\n readonly physx: number = -1;\n /** View manager index. */\n readonly view: number = -1;\n\n /**\n * Component class instances per type to avoid GC.\n *\n * @note Maps the manager index to the list of components.\n *\n * @todo: Refactor ResourceManager and re-use for components.\n */\n private readonly _cache: (Component | null)[][] = [];\n /** Manager index to component class. */\n private readonly _constructors: ComponentConstructor[];\n /* Manager name to the manager index. */\n private readonly _nativeManagers: Map = new Map();\n\n /** Host instance. */\n private readonly _scene: Prefab;\n\n constructor(scene: Prefab) {\n this._scene = scene;\n const wasm = this._scene.engine.wasm;\n\n const native = [\n AnimationComponent,\n CollisionComponent,\n InputComponent,\n LightComponent,\n MeshComponent,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n ];\n this._cache = new Array(native.length);\n this._constructors = new Array(native.length);\n\n for (const Class of native) {\n const ptr = wasm.tempUTF8(Class.TypeName);\n const manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._constructors[manager] = Class;\n this._cache[manager] = [] as Component[];\n this._nativeManagers.set(Class.TypeName, manager);\n }\n\n this.animation = this._nativeManagers.get(AnimationComponent.TypeName)!;\n this.collision = this._nativeManagers.get(CollisionComponent.TypeName)!;\n this.physx = this._nativeManagers.get(PhysXComponent.TypeName)!;\n this.view = this._nativeManagers.get(ViewComponent.TypeName)!;\n\n const ptr = wasm.tempUTF8('js');\n this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._cache[this.js] = [] as Component[];\n }\n\n createJs(index: number, id: number, type: number, object: number) {\n const wasm = this._scene.engine.wasm;\n const ctor = wasm._componentTypes[type];\n if (!ctor) {\n throw new Error(`Type index ${type} isn't registered`);\n }\n\n const log = this._scene.engine.log;\n\n let component = null;\n try {\n component = new ctor(this._scene, this.js, id);\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during instantiation of component ${ctor.TypeName}`\n );\n log.error(LogTag.Component, e);\n component = new BrokenComponent(this._scene);\n }\n component._object = this._scene.wrap(object);\n\n try {\n component.resetProperties();\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during ${component.type} resetProperties() on object ${component.object.name}`\n );\n log.error(LogTag.Component, e);\n }\n\n this._scene._jsComponents[index] = component;\n\n /* Add to cache. This is required because destruction is\n * ID-based and not index-based. */\n this._cache[this.js][id] = component;\n\n return component;\n }\n\n /**\n * Get components of type T.\n *\n * @param type Component class.\n * @returns An array containing all components in this scene.\n */\n components(type: ComponentConstructor, active: boolean): T[] {\n return this.componentsFromTypename(type.TypeName, active) as T[];\n }\n\n /**\n * Similar to {@link getComponents}, but directly from string.\n *\n * @param typename The component `TypeName` attribute.\n */\n componentsFromTypename(typename: string, active: boolean): Component[] {\n const wasm = this._scene.engine.wasm;\n\n const manager = this.getNativeManager(typename) ?? this.js;\n const subTypeIndex =\n manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0;\n\n const maxRead = wasm._tempMemSize / 4;\n const components: Component[] = [];\n let read = 0;\n let offset = 0;\n while (\n (read = wasm._wl_scene_get_components(\n this._scene._index,\n manager,\n subTypeIndex,\n active,\n offset,\n maxRead,\n wasm._tempMem\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n const id = wasm._tempMemUint32[i];\n components.push(this.wrapAny(manager, id) as Component);\n }\n /* Offset by `maxRead` because js components of different types are contiguous.\n * `read` could be less than `maxRead`, and we want to skip all\n * the components already processed. */\n offset += maxRead;\n }\n\n return components;\n }\n\n /**\n * Get component of type T.\n *\n * @note Currently only works for native components, but we will extend this later (and expose it in the API)\n */\n componentAt(type: ComponentConstructor, index: number): T {\n const wasm = this._scene.engine.wasm;\n const manager = this.getNativeManager(type.TypeName)!;\n const id = wasm._wl_scene_get_component(this._scene._index, manager, index);\n return this.wrapAny(manager, id) as T;\n }\n\n /**\n * Retrieve a cached component.\n *\n * @param manager The manager index.\n * @param id The component id.\n * @returns The component if cached, `null` otherwise.\n */\n get(manager: number, id: number) {\n return this._cache[manager][id] ?? null;\n }\n\n /**\n * Wrap the animation.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAnimation(id: number): AnimationComponent {\n return this.wrapNative(this.animation, id) as AnimationComponent;\n }\n\n /**\n * Wrap the collision.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapCollision(id: number): CollisionComponent {\n return this.wrapNative(this.collision, id) as CollisionComponent;\n }\n\n /**\n * Wrap the view.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapView(id: number): ViewComponent {\n return this.wrapNative(this.view, id) as ViewComponent;\n }\n\n /**\n * Wrap the physx.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapPhysx(id: number): PhysXComponent {\n return this.wrapNative(this.physx, id) as PhysXComponent;\n }\n\n /**\n * Retrieves a component instance if it exists, or create and cache\n * a new one.\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link Object3D.addComponent} instead.\n *\n * @param componentType Component manager index\n * @param componentId Component id in the manager\n *\n * @returns JavaScript instance wrapping the native component\n */\n wrapNative(manager: number, id: number) {\n if (id < 0) return null;\n\n const cache = this._cache[manager];\n if (cache[id]) return cache[id];\n\n const scene = this._scene;\n const Class = this._constructors[manager];\n const component = new Class(scene, manager, id);\n cache[id] = component;\n return component;\n }\n\n /**\n * Wrap a native or js component.\n *\n * @throws For JavaScript components that weren't previously cached,\n * since that would be a bug in the runtime / api.\n *\n * @param manager The manager index.\n * @param id The id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAny(manager: number, id: number) {\n if (id < 0) return null;\n\n if (manager === this.js) {\n const found = this._cache[this.js][id];\n if (!found) {\n throw new Error('JS components must always be cached');\n }\n return found.constructor !== BrokenComponent ? found : null;\n }\n\n return this.wrapNative(manager, id);\n }\n\n getNativeManager(name: string): number | null {\n const manager = this._nativeManagers.get(name);\n return manager !== undefined ? manager : null;\n }\n\n /**\n * Perform cleanup upon component destruction.\n *\n * @param instance The instance to destroy.\n *\n * @hidden\n */\n destroy(instance: Component) {\n const localId = instance._localId;\n const manager = instance._manager;\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n (instance._manager as number) = -1;\n\n const erasePrototypeOnDestroy = this._scene.engine.erasePrototypeOnDestroy;\n /* Destroy the prototype of this instance to avoid using a dangling component */\n if (erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedComponentInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating a component with the same id. */\n this._cache[manager][localId] = null;\n }\n\n /** Number of managers **registered** in the scene, i.e., `js`, `names`, etc... */\n get managersCount() {\n return this._scene.engine.wasm._wl_scene_get_component_manager_count(\n this._scene._index\n );\n }\n}\n\nexport function resetComponentProperties(record: Component) {\n const ctor = record.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return;\n for (const name in properties) {\n const property = properties[name];\n const cloner = property.cloner ?? defaultPropertyCloner;\n (record as Record)[name] = cloner.clone(\n property.type,\n property.default\n );\n }\n}\n\nexport function setupComponentClass(ctor: ComponentConstructor | PropertyRecord) {\n inheritProperties(ctor);\n /** @todo: Merge the _setupDefaults and _setPropertyOrder calls with this function. */\n for (const name in ctor.Properties) {\n const prop = ctor.Properties[name];\n let record = null;\n switch (prop.type) {\n case Type.Record:\n record = prop.record;\n break;\n case Type.Array:\n record = prop.element?.record;\n break;\n default:\n break;\n }\n if (record && !record._propertyOrder) setupComponentClass(record);\n }\n _setupDefaults(ctor);\n _setPropertyOrder(ctor);\n}\n\n/**\n * Decode component properties from CBOR encoded data.\n *\n * ## Failure\n *\n * When decoding properties, failures will not be treated as errors. Failures include:\n * - Invalid parameters count\n * - Wrongly defined property\n *\n * When a failure occurs, the cbor reader will be consumed to prevent\n * errors to cascade in the following components.\n */\nexport class ComponentPropertyDecoder {\n scene: Prefab;\n offsets: Uint32Array;\n\n constructor(scene: Prefab, offsets: Uint32Array) {\n this.scene = scene;\n this.offsets = offsets;\n }\n\n decode(cbor: CBORReader, component: Component) {\n const ctor = component.constructor as ComponentConstructor;\n if (!ctor._propertyOrder) setupComponentClass(ctor);\n\n const typeInfo = cbor.readTypeInfo();\n if (ctor === BrokenComponent) {\n return cbor.readItem(typeInfo); /* Consumme the cbor state */\n }\n\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array) {\n this._error(`${component} parameters not encoded as an array.`);\n return cbor.readItem(typeInfo);\n }\n\n const paramNames = ctor._propertyOrder;\n const count = cbor.readArrayLength(typeInfo) as number;\n if (count !== paramNames.length) {\n this._error(\n `${component} has ${count} parameters encoded, but expected ${paramNames.length}`\n );\n return cbor.readItem(typeInfo, count);\n }\n\n for (let j = 0; j < count; ++j) {\n const name = paramNames[j];\n const property = ctor.Properties[name];\n (component as any)[name] = this.decodeProperty(cbor, name, property);\n }\n }\n\n decodeProperty(cbor: CBORReader, name: string, property: ComponentProperty) {\n const typeInfo = cbor.readTypeInfo();\n\n if (property.type === Type.Record) {\n return this.decodeRecordProperty(cbor, name, property, typeInfo);\n } else if (property.type === Type.Array) {\n return this.decodeArrayProperty(cbor, name, property, typeInfo);\n }\n\n let value = cbor.readItem(typeInfo);\n\n /* Default values are sent as undefined to avoid wasting space */\n if (value === undefined) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n value = cloner.clone(property.type, property.default);\n return value;\n }\n /* This skips unset resource parameters as those are sent\n * directly with type null. Offsets for Int and Float types\n * should always be 0. */\n /** @todo CBOR tag to mark resources? Wastes a byte though. */\n if (typeof value === 'number') {\n value += this.offsets[property.type];\n }\n\n const engine = this.scene.engine;\n switch (property.type) {\n case Type.Bool:\n case Type.Int:\n case Type.Float:\n case Type.String:\n case Type.Enum:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n /* Nothing to do */\n return value;\n case Type.Object: {\n const wasm = engine.wasm;\n return value\n ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value))\n : null;\n }\n case Type.Mesh:\n return engine.meshes.wrap(value);\n case Type.Texture:\n return engine.textures.wrap(value);\n case Type.Material:\n return engine.materials.wrap(value);\n case Type.ParticleEffect:\n return engine.particleEffects.wrap(value);\n case Type.Animation:\n return this.scene.animations.wrap(value);\n case Type.Skin:\n return this.scene.skins.wrap(value);\n case Type.Color: {\n /* Colors are sent as Uint8Array. Normalize positive\n * integer values to 0-1. Don't assume any bit size\n * here, could become Uint16Array as well. */\n const max = (1 << (value.BYTES_PER_ELEMENT * 8)) - 1;\n return Float32Array.from(value, (f: number, _) => f / max);\n }\n }\n }\n\n decodeRecordProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Record parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return null;\n }\n const record = property.record;\n if (!record) {\n this._error(`Record parameter '${name}' .record is undefined`);\n cbor.readItem(typeInfo);\n return null;\n }\n\n if (!record._propertyOrder) setupComponentClass(record);\n const propertyOrder = record._propertyOrder as string[];\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n return cloner.clone(property.type, property.default);\n }\n\n const result = new (record as any)();\n if (count !== propertyOrder.length) {\n const propsCount = propertyOrder.length;\n this._error(\n `Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`\n );\n cbor.readItem(typeInfo, count);\n return result;\n }\n const order = record._propertyOrder!;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n const prop = record.Properties![key];\n (result as any)[key] = this.decodeProperty(cbor, key, prop);\n }\n return result;\n }\n\n decodeArrayProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const log = this.scene.engine.log;\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Array parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n if (!property.element) {\n this._error(`Array parameter '${name}' .element property is undefined`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) return [];\n\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n result[i] = this.decodeProperty(cbor, name, property.element);\n }\n return result;\n }\n\n private _error(msg: string) {\n const log = this.scene.engine.log;\n log.error(LogTag.Engine, msg);\n }\n}\n\n/**\n * Default component parameter value per type.\n */\nconst _componentDefaults = new Map([\n [Type.Bool, false],\n [Type.Int, 0],\n [Type.Float, 0.0],\n [Type.String, ''],\n [Type.Enum, undefined],\n [Type.Object, null],\n [Type.Mesh, null],\n [Type.Texture, null],\n [Type.Material, null],\n [Type.Animation, null],\n [Type.Skin, null],\n [Type.ParticleEffect, null],\n [Type.Color, Float32Array.from([0.0, 0.0, 0.0, 1.0])],\n [Type.Vector2, Float32Array.from([0.0, 0.0])],\n [Type.Vector3, Float32Array.from([0.0, 0.0, 0.0])],\n [Type.Vector4, Float32Array.from([0.0, 0.0, 0.0, 0.0])],\n [Type.Record, undefined],\n [Type.Array, []],\n]);\n\n/**\n * Setup the defaults value of the properties on a given\n * component class.\n *\n * @param ctor The component class\n */\nfunction _setupDefaults(ctor: ComponentConstructor | PropertyRecord) {\n for (const name in ctor.Properties) {\n const p = ctor.Properties[name];\n\n if (p.type === Type.Enum) {\n /* Enum default can be a string or an index. Convert to and/or\n * sanity-check the index. */\n if (p.values?.length) {\n /* Don't try to look up the default if the user specified a\n * number or we already converted to one. */\n if (typeof p.default !== 'number') {\n /* If undefined, missing element or wrong type this returns\n * -1 which becomes 0 below. This matches editor behavior. */\n p.default = p.values.indexOf(p.default);\n }\n if (p.default < 0 || p.default >= p.values.length) {\n p.default = 0;\n }\n } else {\n /* There's no index value that makes sense */\n p.default = undefined;\n }\n } else if (\n (p.type === Type.Color ||\n p.type === Type.Vector2 ||\n p.type === Type.Vector3 ||\n p.type === Type.Vector4) &&\n Array.isArray(p.default)\n ) {\n /* Defaults provided by user code are currently always a standard\n * array, but become a typed array on the property */\n p.default = Float32Array.from(p.default);\n } else if (p.type === Type.Record && p.record) {\n p.default = new p.record();\n resetComponentProperties(p.default);\n } else if (p.default === undefined) {\n const cloner = p.cloner ?? defaultPropertyCloner;\n p.default = cloner.clone(p.type, _componentDefaults.get(p.type));\n }\n ctor.prototype[name] = p.default;\n }\n}\n\n/**\n * Determines a fixed order for property attributes used for deserialization.\n *\n * @param ctor The component class\n */\nfunction _setPropertyOrder(ctor: ComponentConstructor | PropertyRecord) {\n ctor._propertyOrder = ctor.hasOwnProperty('Properties')\n ? Object.keys(ctor.Properties!).sort()\n : [];\n}\n", "import {ImageLike, ProgressCallback} from '../types.js';\n\n/**\n * Transformer for {@link TransformStream} that passes read progress to a\n * callback.\n *\n * Invokes the callback for each streamed chunk, and one final time when the\n * stream closes.\n *\n * @hidden\n */\nclass FetchProgressTransformer implements Transformer {\n #progress = 0;\n #callback: ProgressCallback;\n #totalSize: number;\n\n /**\n * Constructor.\n * @param callback Callback that receives the progress.\n * @param totalSize Total size of the data. Pass 0 to indicate that the\n * size is unknown, then the callback will only be called once after\n * all data was transferred.\n */\n constructor(callback: ProgressCallback, totalSize = 0) {\n this.#callback = callback;\n this.#totalSize = totalSize;\n }\n\n transform(chunk: Uint8Array, controller: TransformStreamDefaultController) {\n controller.enqueue(chunk);\n this.#progress += chunk.length;\n if (this.#totalSize > 0) {\n this.#callback(this.#progress, this.#totalSize);\n }\n }\n\n flush() {\n this.#callback(this.#progress, this.#progress);\n }\n}\n\n/**\n * Sink for `WritableStream` that writes data to an `ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSink implements UnderlyingSink {\n #buffer: Uint8Array;\n #offset = 0;\n\n /**\n * Constructor.\n * @param size Initial size of the buffer. If less than the received data,\n * the buffer is dynamically reallocated.\n */\n constructor(size = 0) {\n this.#buffer = new Uint8Array(size);\n }\n\n /** Get the received data as an `ArrayBuffer`. */\n get arrayBuffer() {\n const arrayBuffer = this.#buffer.buffer;\n if (this.#offset < arrayBuffer.byteLength) {\n return arrayBuffer.slice(0, this.#offset);\n }\n return arrayBuffer;\n }\n\n write(chunk: Uint8Array) {\n const newLength = this.#offset + chunk.length;\n if (newLength > this.#buffer.length) {\n const newBuffer = new Uint8Array(\n Math.max(this.#buffer.length * 1.5, newLength)\n );\n newBuffer.set(this.#buffer);\n this.#buffer = newBuffer;\n }\n this.#buffer.set(chunk, this.#offset);\n this.#offset = newLength;\n }\n}\n\n/**\n * Source for `ReadableStream` that reads data from an`ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSource implements UnderlyingSource {\n #buffer: ArrayBuffer;\n\n /**\n * Constructor.\n * @param buffer Buffer to read from.\n */\n constructor(buffer: ArrayBuffer) {\n this.#buffer = buffer;\n }\n\n start(controller: ReadableStreamController) {\n if (this.#buffer.byteLength > 0) {\n controller.enqueue(new Uint8Array(this.#buffer));\n }\n controller.close();\n }\n}\n\n/**\n * Fetch a file as an `ArrayBuffer`, with fetch progress passed to a callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n if (!onProgress || !res.body) return res.arrayBuffer();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n const sink = new ArrayBufferSink(size);\n await res.body\n .pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size)))\n .pipeTo(new WritableStream(sink));\n return sink.arrayBuffer;\n}\n\n/**\n * Fetch a file as a `ReadableStream`, with fetch progress passed to a\n * callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchStreamWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise> {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n const body = res.body ?? new ReadableStream();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n if (!onProgress) return body;\n const stream = body.pipeThrough(\n new TransformStream(new FetchProgressTransformer(onProgress, size))\n );\n return stream;\n}\n\n/**\n * Get parent path from a URL.\n *\n * @param url URL to get the parent from.\n * @returns Parent URL without trailing slash.\n */\nexport function getBaseUrl(url: string): string {\n return url.substring(0, url.lastIndexOf('/'));\n}\n\n/**\n * Get the filename of a url.\n *\n * @param url The url to extract the name from.\n * @returns A string containing the filename. If no filename is found,\n * returns the input string.\n */\nexport function getFilename(url: string): string {\n if (url.endsWith('/')) {\n /* Remove trailing slash. */\n url = url.substring(0, url.lastIndexOf('/'));\n }\n const lastSlash = url.lastIndexOf('/');\n if (lastSlash < 0) return url;\n return url.substring(lastSlash + 1);\n}\n\n/**\n * Promise resolved once the image is ready to be used\n *\n * @param image The image, video, or canvas to wait for.\n * @returns A promise with the image, once it's ready to be used.\n */\nexport function onImageReady(image: T): Promise {\n return new Promise((res, rej) => {\n if (image instanceof HTMLVideoElement) {\n if (image.readyState >= 2) {\n res(image as T);\n return;\n }\n image.addEventListener(\n 'loadeddata',\n () => {\n if (image.readyState >= 2) res(image);\n },\n {once: true}\n );\n return;\n } else if (\n !(image instanceof HTMLImageElement) ||\n (image as HTMLImageElement).complete\n ) {\n res(image);\n return;\n }\n image.addEventListener('load', () => res(image), {once: true});\n image.addEventListener('error', rej, {once: true});\n });\n}\n", "import {ComponentManagers, NativeComponents} from './component.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ResourceManager, SceneResource} from './resources/resource.js';\nimport {ProgressCallback} from './types.js';\nimport {\n fetchStreamWithProgress,\n fetchWithProgress,\n getBaseUrl,\n getFilename,\n onImageReady,\n} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Animation,\n CollisionCallback,\n Component,\n ComponentConstructor,\n DestroyedObjectInstance,\n Object3D,\n Skin,\n} from './wonderland.js';\n\n/** Scene loading options. */\nexport interface SceneLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n}\n\n/** Loading options for in-memory data. */\nexport interface InMemoryLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/**\n * Loading options for streamed data.\n *\n * @hidden\n */\nexport interface StreamLoadOptions {\n /** Stream that transfers the bytes of a `.bin` file. */\n stream: ReadableStream;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n}\n\n/** Options for loading files from a URL. */\nexport interface UrlLoadOptions {\n /** URL to load. */\n url: string;\n /** Signal to abort the file fetch request. */\n signal?: AbortSignal;\n /**\n * Whether to load the file as parts of it are fetched. If `false`,\n * fetches the entire file first before loading. Streamed loading reduces\n * memory usage. If not set, defaults to `true`.\n */\n streamed?: boolean;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/** Options used during loading. */\nexport type LoadOptions = string | (UrlLoadOptions & Partial);\n\n/**\n * Base class for prefabs, scenes, and glTF.\n *\n * For more information have a look at the derived types:\n * - {@link Scene} for Wonderland Engine activatable scenes (.bin)\n * - {@link PrefabGLTF} for glTF scenes\n *\n * #### Resources\n *\n * While **meshes**, **textures**, and **materials** are shared\n * on the {@link WonderlandEngine} instance, a scene comes with:\n * - Animations: Managed using {@link Prefab.animations}\n * - Skins: Managed using {@link Prefab.skins}\n *\n * Those resources are bound to the object hierarchy and are thus required to be\n * per-scene.\n *\n * #### Destruction\n *\n * For now, destroying a scene doesn't automatically remove the resources it\n * references in the engine. For more information, have a look at the\n * {@link Scene.destroy} method.\n *\n * #### Isolation\n *\n * It's forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addChild();\n * const objB = sceneB.addChild();\n * objA.parent = objB; // Throws\n * ```\n *\n * @category scene\n *\n * @since 1.2.0\n */\nexport class Prefab {\n /**\n * Create an object with shape `{url: string}`.\n *\n * - If the parameter is a string, a new object is returned\n * - If the parameter is an object, the same reference is returned\n *\n * @param options The url or options object.\n * @returns An object of the form `{url: string, ...}`.\n *\n * @hidden\n */\n static makeUrlLoadOptions(options: LoadOptions): UrlLoadOptions & Partial {\n return isString(options)\n ? ({url: options} as UrlLoadOptions & Partial)\n : options;\n }\n\n /**\n * Load an `ArrayBuffer` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns An {@link InMemoryLoadOptions} object.\n *\n * @hidden\n */\n static async loadBuffer(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const buffer = await fetchWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, buffer, baseURL, filename};\n }\n\n /**\n * Load a `ReadableStream` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns A {@link StreamLoadOptions} object.\n *\n * @hidden\n */\n static async loadStream(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const stream = await fetchStreamWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, stream, baseURL, filename};\n }\n\n /**\n * Validate the in-memory load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateBufferOptions(options: InMemoryLoadOptions): {\n buffer: ArrayBuffer;\n baseURL: string;\n url: string;\n } {\n const {buffer, baseURL, filename = 'scene.bin'} = options;\n if (!buffer) {\n throw new Error(\"missing 'buffer' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {buffer, baseURL, url};\n }\n\n /**\n * Validate the stream load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateStreamOptions(options: StreamLoadOptions): {\n stream: ReadableStream;\n baseURL: string;\n url: string;\n } {\n const {stream, baseURL, filename = 'scene.bin'} = options;\n if (!stream) {\n throw new Error(\"missing 'stream' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {stream, baseURL, url};\n }\n\n /** Index in the scene manager. @hidden */\n readonly _index;\n /** @hidden */\n protected _engine: WonderlandEngine;\n\n /**\n * Component manager caching to avoid GC.\n *\n * @hidden\n */\n readonly _components: ComponentManagers;\n /**\n * JavaScript components for this scene.\n *\n * This array is moved into the WASM instance upon activation.\n *\n * @hidden\n */\n readonly _jsComponents: Component[] = [];\n\n /**\n * The map is indexed using the physx component id.\n *\n * @hidden\n */\n readonly _pxCallbacks: Map = new Map();\n\n /** @hidden */\n private readonly _animations;\n /** @hidden */\n private readonly _skins;\n\n /**\n * Object class instances to avoid GC.\n *\n * @hidden\n */\n private readonly _objectCache: (Object3D | null)[] = [];\n\n /**\n * `onDestroy()` depth.\n *\n * Multiple components can stack `onDestroy()` calls.\n */\n private _pendingDestroy: number = 0;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n\n this._components = new ComponentManagers(this);\n this._animations = new ResourceManager(this as Prefab, Animation);\n this._skins = new ResourceManager(this as Prefab, Skin);\n }\n\n /**\n * Add a new {@link Object3D} to the root object.\n *\n * See {@link Object3D.addChild} for more information.\n *\n * @returns A new {@link Object3D}.\n */\n addChild() {\n return this.wrap(0).addChild();\n }\n\n /**\n * Add an object to the scene.\n *\n * Alternatively, you can use {@link Prefab.addChild} to add the object\n * to the root, or {@link Object3D.addChild} to add the object to a given parent:\n *\n * ```js\n * const parent = scene.addChild();\n * const child = parent.addChild();\n * // Equivalent using scene.addObject\n * const sibling = scene.addObject(parent);\n * ```\n *\n * @param parent Parent object or `null`.\n * @returns A newly created object.\n */\n addObject(parent: Object3D | null = null): Object3D {\n if (parent?.markedDestroyed) {\n throw new Error(`Failed to add object. ${parent} is marked as destroyed.`);\n }\n this.assertOrigin(parent);\n return (parent ?? this.wrap(0)).addChild();\n }\n\n /**\n * Batch-add objects to the scene.\n *\n * Will provide better performance for adding multiple objects (e.g. > 16)\n * than calling {@link Scene#addObject} repeatedly in a loop.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * convervatively grow the memory in small steps.\n *\n * @experimental This API might change in upcoming versions.\n *\n * @param count Number of objects to add.\n * @param parent Parent object or `null`, default `null`.\n * @param componentCountHint Hint for how many components in total will\n * be added to the created objects afterwards, default `0`.\n * @returns Newly created objects\n */\n addObjects(\n count: number,\n parent: Object3D | null = null,\n componentCountHint: number = 0\n ): Object3D[] {\n const parentId = parent ? parent._id : 0;\n this.engine.wasm.requireTempMem(count * 2);\n const actualCount = this.engine.wasm._wl_scene_add_objects(\n this._index,\n parentId,\n count,\n componentCountHint || 0,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount);\n const wrapper = this.wrap.bind(this);\n const objects = Array.from(ids, wrapper);\n return objects;\n }\n\n /**\n * Pre-allocate memory for a given amount of objects and components.\n *\n * Will provide better performance for adding objects later with {@link Scene#addObject}\n * and {@link Scene#addObjects}.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * conservatively grow the memory in small steps.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * @param objectCount Number of objects to add.\n * @param componentCountPerType Amount of components to\n * allocate for {@link Object3D.addComponent}, e.g. `{mesh: 100, collision: 200, \"my-comp\": 100}`.\n * @since 0.8.10\n */\n reserveObjects(objectCount: number, componentCountPerType: Record) {\n const wasm = this.engine.wasm;\n if (!componentCountPerType) return;\n\n const countsPerTypeIndex = wasm._tempMemInt;\n const managerCount = this._components.managersCount;\n for (let i = 0; i < managerCount; ++i) countsPerTypeIndex[i] = 0;\n\n const names = Object.keys(componentCountPerType);\n for (const name of names) {\n const count = componentCountPerType[name];\n const nativeIndex = this._components.getNativeManager(name);\n countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] +=\n count;\n }\n wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem);\n }\n\n /**\n * Root object's children.\n *\n * See {@link Object3D.getChildren} for more information.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const root = this.wrap(0);\n return root.getChildren(out);\n }\n\n /** @overload */\n getComponents(typeOrClass: K): NativeComponents[K][];\n /** @overload */\n getComponents(typeOrClass: string): Component[];\n /**\n * Get all the components of a given type.\n *\n * #### Usage\n *\n * ```js\n * const meshes = scene.getComponents('mesh');\n * const zombies = scene.getComponents(ZombieComponent);\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, false);\n }\n\n /** @overload */\n getActiveComponents(\n typeOrClass: K\n ): NativeComponents[K][];\n /** @overload */\n getActiveComponents(typeOrClass: string): Component[];\n /**\n * Get all the **active** components of a given type.\n *\n * ```js\n * const zombies = scene.getActiveComponents(ZombieComponent);\n * for(const zombie of zombies) zombie.active = false;\n *\n * const list = scene.getActiveComponents(ZombieComponent);\n * console.log(list.length); // Prints `0`\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getActiveComponents(typeOrClass: ComponentConstructor): T[];\n getActiveComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, true);\n }\n\n /**\n * Top-level objects of this scene.\n *\n * See {@link Object3D.children} for more information.\n *\n * @since 1.2.0\n */\n get children(): Object3D[] {\n const root = this.wrap(0);\n return root.children;\n }\n\n /** The number of children of the root object. */\n get childrenCount(): number {\n const root = this.wrap(0);\n return this.engine.wasm._wl_object_get_children_count(root._id);\n }\n\n /**\n * Search for objects matching the name.\n *\n * See {@link Object3D.findByName} for more information.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the objects of\n * this scene. If `false`, this method will only perform the search in\n * root objects.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n const root = this.wrap(0);\n return root.findByName(name, recursive);\n }\n\n /**\n * Search for all **top-level** objects matching the name.\n *\n * See {@link Object3D.findByNameDirect} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameDirect(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameDirect(name);\n }\n\n /**\n * Search for **all objects** matching the name.\n *\n * See {@link Object3D.findByNameRecursive} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameRecursive(name);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n *\n * @returns The object\n */\n wrap(objectId: number): Object3D {\n const cache = this._objectCache;\n const o = cache[objectId] || (cache[objectId] = new Object3D(this, objectId));\n return o;\n }\n\n /**\n * Destroy the scene.\n *\n * For now, destroying a scene doesn't remove the resources it references. Thus,\n * you will need to reload a main scene to free the memory.\n *\n * For more information about destruction, have a look at the {@link Scene.destroy} method.\n */\n destroy() {\n if (this._pendingDestroy > 0) {\n throw new Error(\"It's forbidden to destroy a scene from onDestroy().\");\n }\n this._pxCallbacks.clear();\n this.engine._destroyScene(this);\n }\n\n /* Public Getters & Setters */\n\n /**\n * `true` if the scene is active, `false` otherwise.\n *\n * Always false for {@link Prefab} and {@link PrefabGLTF}.\n */\n get isActive() {\n return !!this.engine.wasm._wl_scene_active(this._index);\n }\n\n /**\n * Relative directory of the scene that was loaded.\n *\n * This is used for loading any files relative to the scene.\n */\n get baseURL(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_baseURL(this._index);\n if (!ptr) return '';\n\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Filename used when loading the file.\n *\n * If the scenes was loaded from memory and no filename was provided,\n * this accessor will return an empty string.\n */\n get filename(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_filename(this._index);\n if (!ptr) return '';\n return wasm.UTF8ToString(ptr);\n }\n\n /** Animation resources */\n get animations() {\n return this._animations;\n }\n\n /** Skin resources */\n get skins() {\n return this._skins;\n }\n\n /** Hosting engine instance. */\n get engine(): WonderlandEngine {\n return this._engine;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed(): boolean {\n return this._index < 0;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Scene(destroyed)';\n }\n return `Scene('${this.filename}', ${this._index})`;\n }\n\n /**\n * Checks that the input's scene is the same as this instance.\n *\n * It is forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addObject();\n * const objB = sceneA.addObject();\n * objA.parent = objB; // Throws\n * ```\n *\n * @param other Object / component to check.\n *\n * @throws If other's scene isn't the same reference as this.\n */\n assertOrigin(other: Object3D | Component | SceneResource | undefined | null) {\n if (other && (other.scene as Prefab) !== this) {\n throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`);\n }\n }\n\n /**\n * Download components and initialize the scene.\n *\n * @hidden\n */\n _initialize() {\n const wasm = this.engine.wasm;\n /* Initialize component parameters */\n wasm._wl_scene_initialize(this._index);\n }\n\n /**\n * Perform cleanup upon object destruction.\n *\n * @param localId The id to destroy.\n *\n * @hidden\n */\n _destroyObject(localId: number) {\n const instance = this._objectCache[localId];\n if (!instance) return;\n\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n\n /* Destroy the prototype of this instance to avoid using a dangling object */\n if (this.engine.erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedObjectInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating an object with the same id. */\n this._objectCache[localId] = null;\n }\n\n /**\n * Performs JavaScript only destrution of a component.\n *\n * @note Prefer to use this method to manually calling the destruction code,\n * to protect the user from illegal method calls in {@link Component.onDestroy}.\n *\n * @param manager The component manager index.\n * @param id The component id.\n *\n * @hidden\n */\n _destroyComponent(manager: number, id: number) {\n const component = this._components.get(manager, id);\n ++this._pendingDestroy;\n component?._triggerOnDestroy();\n --this._pendingDestroy;\n }\n}\n", "/**\n * Schedule a timeout, resolving in `time` milliseconds.\n *\n * @note `setTimeout` being a macro-task, this method can\n * be use as a debounce call.\n *\n * @param time The time until it resolves, in milliseconds.\n * @returns A promise resolving in `time` ms.\n */\nexport function timeout(time: number): Promise {\n return new Promise((res) => setTimeout(res, time));\n}\n\n/**\n * Clamp the value in the range [min; max].\n *\n * @param val The value to clamp.\n * @param min The minimum value (inclusive).\n * @param max The maximum value (inclusive).\n * @returns The clamped value.\n */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.max(Math.min(max, val), min);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @note The string must be UTF-8.\n *\n * @param str The string to format.\n * @returns The string with the first letter capitalized.\n */\nexport function capitalizeFirstUTF8(str: string) {\n return `${str[0].toUpperCase()}${str.substring(1)}`;\n}\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nexport function createDestroyedProxy(type: string) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(`Cannot read '${param}' of destroyed ${type}`);\n },\n set(_, param: string) {\n throw new Error(`Cannot write '${param}' of destroyed ${type}`);\n },\n }\n );\n}\n", "/**\n * Types\n */\n\nimport {nativeProperty, enumerable} from './decorators.js';\nimport {WonderlandEngine} from './engine.js';\nimport {isImageLike, isNumber, isString} from './utils/object.js';\nimport {Emitter} from './utils/event.js';\nimport {Material} from './resources/material-manager.js';\nimport {\n ComponentProperty,\n PropertyRecord,\n Type,\n defaultPropertyCloner,\n} from './property.js';\nimport {Constructor, ImageLike, NumberArray, TypedArray, TypedArrayCtor} from './types.js';\nimport {Resource, SceneResource} from './resources/resource.js';\nimport {Prefab} from './prefab.js';\nimport {Scene} from './scene.js';\nimport {createDestroyedProxy} from './utils/misc.js';\nimport {NativeComponents, resetComponentProperties} from './component.js';\n\n/**\n * Component constructor type.\n *\n * For more information, please have a look at the {@link Component} class.\n */\nexport type ComponentConstructor = {\n new (scene: Prefab, manager: number, id: number): T;\n} & {\n _isBaseComponent: boolean;\n _propertyOrder: string[];\n TypeName: string;\n Properties: Record;\n InheritProperties?: boolean;\n onRegister?: (engine: WonderlandEngine) => void;\n};\n\n/**\n * Component prototype interface.\n *\n * User component's should have the same structure.\n */\nexport interface ComponentProto {\n /**\n * Triggered after the component instantiation.\n * For more information, please have a look at {@link Component.init}.\n */\n init?: () => void;\n /**\n * Triggered after the component is activated for the first time.\n * For more information, please have a look at {@link Component.start}.\n */\n start?: () => void;\n /**\n * Triggered once per frame.\n * For more information, please have a look at {@link Component.update}.\n *\n * @param dt Delta time, time since last update.\n */\n update?: (dt: number) => void;\n /**\n * Triggered when the component goes from deactivated to activated.\n * For more information, please have a look at {@link Component.onActivate}.\n */\n onActivate?: () => void;\n /**\n * Triggered when the component goes from activated to deactivated.\n * For more information, please have a look at {@link Component.onDeactivate}.\n */\n onDeactivate?: () => void;\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @since 0.9.0\n */\n onDestroy?: () => void;\n}\n\n/**\n * Callback triggered on collision event.\n *\n * @param type Type of the event.\n * @param other Other component that was (un)collided with\n */\nexport type CollisionCallback = (type: CollisionEventType, other: PhysXComponent) => void;\n\n/** @todo Remove at 1.0.0 */\ndeclare const WL: WonderlandEngine;\n\n/**\n * Wonderland Engine API\n * @namespace WL\n */\n\n/**\n * Default set of logging tags used by the API.\n */\nexport enum LogTag {\n /** Initialization, component registration, etc... */\n Engine = 0,\n /** Scene loading */\n Scene = 1,\n /** Component init, update, etc... */\n Component = 2,\n}\n\n/**\n * Collider type enum for {@link CollisionComponent}.\n */\nexport enum Collider {\n /**\n * **Sphere Collider**:\n *\n * Simplest and most performant collision shape. If this type is set on a\n * {@link CollisionComponent}, only the first component of\n * {@link CollisionComponent#extents} will be used to determine the radius.\n */\n Sphere = 0,\n\n /**\n * **Axis Aligned Bounding Box Collider**:\n *\n * Box that is always aligned to XYZ axis. It cannot be rotated but is more\n * efficient than {@link Collider.Box}.\n */\n AxisAlignedBox = 1,\n\n /**\n * **Aligned Bounding Box Collider**:\n *\n * Box that matches the object's rotation and translation correctly. This\n * is the least efficient collider and should only be chosen over\n * {@link Collider.Sphere} and {@link Collider.AxisAlignedBox} if really\n * necessary.\n */\n Box = 2,\n}\n\n/**\n * Alignment type enum for {@link TextComponent}.\n */\nexport enum Alignment {\n /** Text start is at object origin */\n Left = 0,\n\n /** Text center is at object origin */\n Center = 1,\n\n /** Text end is at object origin */\n Right = 2,\n}\n\n/**\n * Vertical alignment type enum for {@link TextComponent}.\n */\nexport enum VerticalAlignment {\n /** Text line is at object origin */\n Line = 0,\n\n /** Text middle is at object origin */\n Middle = 1,\n\n /** Text top is at object origin */\n Top = 2,\n\n /** Text bottom is at object origin */\n Bottom = 3,\n}\n\n/**\n * Justification type enum for {@link TextComponent}.\n *\n * @deprecated Please use {@link VerticalAlignment} instead.\n */\nexport const Justification = VerticalAlignment;\n\n/**\n * Effect type enum for {@link TextComponent}.\n */\nexport enum TextEffect {\n /** Text is rendered normally */\n None = 0,\n\n /** Text is rendered with an outline */\n Outline = 1,\n\n /** Text is rendered with a drop shadow */\n Shadow = 2,\n}\n\n/**\n * Wrap mode enum for {@link TextComponent}.\n *\n * @since 1.2.1\n */\nexport enum TextWrapMode {\n /** Text doesn't wrap automatically, only with explicit newline */\n None = 0,\n\n /** Text wraps at word boundaries */\n Soft = 1,\n\n /** Text wraps anywhere */\n Hard = 2,\n\n /** Text is cut off */\n Clip = 3,\n}\n\n/**\n * Input type enum for {@link InputComponent}.\n */\nexport enum InputType {\n /** Head input */\n Head = 0,\n\n /** Left eye input */\n EyeLeft = 1,\n\n /** Right eye input */\n EyeRight = 2,\n\n /** Left controller input */\n ControllerLeft = 3,\n\n /** Right controller input */\n ControllerRight = 4,\n\n /** Left ray input */\n RayLeft = 5,\n\n /** Right ray input */\n RayRight = 6,\n}\n\n/**\n * Projection type enum for {@link ViewComponent}.\n */\nexport enum ProjectionType {\n /** Perspective projection */\n Perspective = 0,\n\n /** Orthographic projection */\n Orthographic = 1,\n}\n\n/**\n * Light type enum for {@link LightComponent}.\n */\nexport enum LightType {\n /** Point light */\n Point = 0,\n\n /** Spot light */\n Spot = 1,\n\n /** Sun light / Directional light */\n Sun = 2,\n}\n\n/**\n * Animation state of {@link AnimationComponent}.\n */\nexport enum AnimationState {\n /** Animation is currently playing */\n Playing = 0,\n\n /** Animation is paused and will continue at current playback\n * time on {@link AnimationComponent#play} */\n Paused = 1,\n\n /** Animation is stopped */\n Stopped = 2,\n}\n\n/**\n * Root motion mode of {@link AnimationComponent}.\n */\nexport enum RootMotionMode {\n /** Do nothing */\n None = 0,\n /** Move and rotate root with the delta of its motion */\n ApplyToOwner = 1,\n /** Store the motion to be retrieved by a JS script */\n Script = 2,\n}\n\n/**\n * Rigid body force mode for {@link PhysXComponent#addForce} and {@link PhysXComponent#addTorque}.\n *\n * [PhysX API Reference](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxapi/files/structPxForceMode.html)\n */\nexport enum ForceMode {\n /** Apply as force */\n Force = 0,\n\n /** Apply as impulse */\n Impulse = 1,\n\n /** Apply as velocity change, mass dependent */\n VelocityChange = 2,\n\n /** Apply as mass dependent force */\n Acceleration = 3,\n}\n\n/**\n * Collision callback event type.\n */\nexport enum CollisionEventType {\n /** Touch/contact detected, collision */\n Touch = 0,\n\n /** Touch/contact lost, uncollide */\n TouchLost = 1,\n\n /** Touch/contact with trigger detected */\n TriggerTouch = 2,\n\n /** Touch/contact with trigger lost */\n TriggerTouchLost = 3,\n}\n\n/**\n * Rigid body {@link PhysXComponent#shape}.\n *\n * [PhysX SDK Guide](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/Geometry.html#geometry-types).\n */\nexport enum Shape {\n /** No shape. */\n None = 0,\n\n /** Sphere shape. */\n Sphere = 1,\n\n /** Capsule shape. */\n Capsule = 2,\n\n /** Box shape. */\n Box = 3,\n\n /** Plane shape. */\n Plane = 4,\n\n /** Convex mesh shape. */\n ConvexMesh = 5,\n\n /** Triangle mesh shape. */\n TriangleMesh = 6,\n}\n\n/**\n * Mesh attribute enum.\n * @since 0.9.0\n */\nexport enum MeshAttribute {\n /** Position attribute, 3 floats */\n Position = 0,\n\n /** Tangent attribute, 4 floats */\n Tangent = 1,\n\n /** Normal attribute, 3 floats */\n Normal = 2,\n\n /** Texture coordinate attribute, 2 floats */\n TextureCoordinate = 3,\n\n /** Color attribute, 4 floats, RGBA, range `0` to `1` */\n Color = 4,\n\n /** Joint id attribute, 8 unsigned ints */\n JointId = 5,\n\n /** Joint weights attribute, 8 floats */\n JointWeight = 6,\n\n /** Secondary texture coordinate attribute, 2 floats */\n SecondaryTextureCoordinate = 7,\n}\n\n/** Proxy used to override prototypes of destroyed objects. */\nexport const DestroyedObjectInstance = createDestroyedProxy('object');\n/** Proxy used to override prototypes of destroyed components. */\nexport const DestroyedComponentInstance = createDestroyedProxy('component');\n/** Proxy used to override prototypes of destroyed prefabs. */\nexport const DestroyedPrefabInstance = createDestroyedProxy('prefab/scene');\n\n/**\n * Check whether a given shape is a mesh or not.\n *\n * @param shape The shape to check.\n * @returns `true` if the shape is a mesh, `false` if it's a primitive.\n */\nfunction isMeshShape(shape: Shape): boolean {\n return shape === Shape.ConvexMesh || shape === Shape.TriangleMesh;\n}\n\n/**\n * Check whether an object is the {@link Component} class or not,\n *\n * @note This method if foolproof to developers inadvertently using\n * multiple Wonderland Engine API in a bundle.\n *\n * @param value The object to check.\n * @returns `true` if the object is a {@link Component} class, `false` otherwise.\n */\nfunction isBaseComponentClass(\n value: Constructor | null\n): value is ComponentConstructor {\n return (\n !!value &&\n value.hasOwnProperty('_isBaseComponent') &&\n (value as ComponentConstructor)._isBaseComponent\n );\n}\n\n/**\n * Constants.\n */\n\n/**\n * Default world up vector.\n */\nconst UP_VECTOR = [0, 1, 0];\n\nconst SQRT_3 = Math.sqrt(3);\n\n/**\n * Provides access to a component instance of a specified component type.\n *\n * @example\n *\n * This is how you extend this class to create your own custom\n * component:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * };\n * start() {}\n * onActivate() {}\n * onDeactivate() {}\n * update(dt) {}\n * }\n * ```\n *\n * In a component, the scene can be accessed using `this.scene`:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * start() {\n * const obj = this.scene.addObject();\n * }\n * }\n * ```\n */\nexport class Component {\n /**\n * Pack scene index and component id.\n *\n * @param scene Scene index.\n * @param id Component id.\n * @returns The packed id.\n *\n * @hidden\n */\n static _pack(scene: number, id: number) {\n return (scene << 22) | id;\n }\n\n /**\n * `true` for every class inheriting from this class.\n *\n * @note This is a workaround for `instanceof` to prevent issues\n * that could arise when an application ends up using multiple API versions.\n *\n * @hidden\n */\n static readonly _isBaseComponent = true;\n\n /**\n * Fixed order of attributes in the `Properties` array.\n *\n * @note This is used for parameter deserialization and is filled during\n * component registration.\n *\n * @hidden\n */\n static _propertyOrder: string[] = [];\n\n /**\n * Unique identifier for this component class.\n *\n * This is used to register, add, and retrieve components of a given type.\n */\n static TypeName: string;\n\n /**\n * Properties of this component class.\n *\n * Properties are public attributes that can be configured via the\n * Wonderland Editor.\n *\n * Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * myFloat: { type: Type.Float, default: false },\n * myTexture: { type: Type.Texture, default: null },\n * };\n * }\n * ```\n *\n * Properties are automatically added to each component instance, and are\n * accessible like any JS attribute:\n *\n * ```js\n * // Creates a new component and set each properties value:\n * const myComponent = object.addComponent(MyComponent, {\n * myBoolean: true,\n * myFloat: 42.0,\n * myTexture: null\n * });\n *\n * // You can also override the properties on the instance:\n * myComponent.myBoolean = false;\n * myComponent.myFloat = -42.0;\n * ```\n *\n * #### References\n *\n * Reference types (i.e., mesh, object, etc...) can also be listed as **required**:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myObject: Property.object({required: true}),\n * myAnimation: Property.animation({required: true}),\n * myTexture: Property.texture({required: true}),\n * myMesh: Property.mesh({required: true}),\n * }\n * }\n * ```\n *\n * Please note that references are validated **once** before the call to {@link Component.start} only,\n * via the {@link Component.validateProperties} method.\n */\n static Properties: Record;\n\n /**\n * When set to `true`, the child class inherits from the parent\n * properties, as shown in the following example:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Parent extends Component {\n * static TypeName = 'parent';\n * static Properties = {parentName: Property.string('parent')}\n * }\n *\n * class Child extends Parent {\n * static TypeName = 'child';\n * static Properties = {name: Property.string('child')}\n * static InheritProperties = true;\n *\n * start() {\n * // Works because `InheritProperties` is `true`.\n * console.log(`${this.name} inherits from ${this.parentName}`);\n * }\n * }\n * ```\n *\n * @note Properties defined in descendant classes will override properties\n * with the same name defined in ancestor classes.\n *\n * Defaults to `true`.\n */\n static InheritProperties?: boolean;\n\n /**\n * Called when this component class is registered.\n *\n * @example\n *\n * This callback can be used to register dependencies of a component,\n * e.g., component classes that need to be registered in order to add\n * them at runtime with {@link Object3D.addComponent}, independent of whether\n * they are used in the editor.\n *\n * ```js\n * class Spawner extends Component {\n * static TypeName = 'spawner';\n *\n * static onRegister(engine) {\n * engine.registerComponent(SpawnedComponent);\n * }\n *\n * // You can now use addComponent with SpawnedComponent\n * }\n * ```\n *\n * @example\n *\n * This callback can be used to register different implementations of a\n * component depending on client features or API versions.\n *\n * ```js\n * // Properties need to be the same for all implementations!\n * const SharedProperties = {};\n *\n * class Anchor extends Component {\n * static TypeName = 'spawner';\n * static Properties = SharedProperties;\n *\n * static onRegister(engine) {\n * if(navigator.xr === undefined) {\n * /* WebXR unsupported, keep this dummy component *\\/\n * return;\n * }\n * /* WebXR supported! Override already registered dummy implementation\n * * with one depending on hit-test API support *\\/\n * engine.registerComponent(window.HitTestSource === undefined ?\n * AnchorWithoutHitTest : AnchorWithHitTest);\n * }\n *\n * // This one implements no functions\n * }\n * ```\n */\n static onRegister?: (engine: WonderlandEngine) => void;\n\n /**\n * Allows to inherit properties directly inside the editor.\n *\n * @note Do not use directly, prefer using {@link inheritProperties}.\n *\n * @hidden\n */\n static _inheritProperties() {\n inheritProperties(this);\n }\n\n /**\n * Triggered when the component is initialized by the runtime. This method\n * will only be triggered **once** after instantiation.\n *\n * @note During the initialization phase, `this.scene` will not match\n * `engine.scene`, since `engine.scene` references the **active** scene:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * init() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `false`\n * }\n * start() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `true`\n * }\n * }\n * ```\n */\n init?(): void;\n\n /**\n * Triggered when the component is started by the runtime, or activated.\n *\n * You can use that to re-initialize the state of the component.\n */\n start?(): void;\n\n /**\n * Triggered **every frame** by the runtime.\n *\n * You should perform your business logic in this method. Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * class TranslateForwardComponent extends Component {\n * static TypeName = 'translate-forward-component';\n * static Properties = {\n * speed: { type: Type.Float, default: 1.0 }\n * };\n * constructor() {\n * this._forward = new Float32Array([0, 0, 0]);\n * }\n * update(dt) {\n * this.object.getForward(this._forward);\n * this._forward[0] *= this.speed;\n * this._forward[1] *= this.speed;\n * this._forward[2] *= this.speed;\n * this.object.translate(this._forward);\n * }\n * }\n * ```\n *\n * @param delta Elapsed time between this frame and the previous one, in **seconds**.\n */\n update?(delta: number): void;\n\n /**\n * Triggered when the component goes from an inactive state to an active state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), all the components\n * that were previously active will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onActivate?(): void;\n\n /**\n * Triggered when the component goes from an activated state to an inactive state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), the components of\n * the scene getting deactivated will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onDeactivate?(): void;\n\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @note This method will not be triggered for inactive scene being destroyed.\n *\n * @since 0.9.0\n */\n onDestroy?(): void;\n\n /** Manager index. @hidden */\n readonly _manager: number;\n /** Packed id, containing the scene and the local id. @hidden */\n readonly _id: number;\n /** Id relative to the scene component's manager. @hidden */\n readonly _localId: number;\n\n /**\n * Object containing this object.\n *\n * **Note**: This is cached for faster retrieval.\n *\n * @hidden\n */\n _object: Object3D | null;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n\n /**\n * Create a new instance\n *\n * @param engine The engine instance.\n * @param manager Index of the manager.\n * @param id WASM component instance index.\n *\n * @hidden\n */\n constructor(scene: Prefab, manager: number = -1, id: number = -1) {\n this._scene = scene;\n this._manager = manager;\n this._localId = id;\n this._id = Component._pack(scene._index, id);\n this._object = null;\n }\n\n /** Scene this component is part of. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** The name of this component's type */\n get type(): string {\n const ctor = this.constructor as ComponentConstructor;\n return ctor.TypeName;\n }\n\n /** The object this component is attached to. */\n get object(): Object3D {\n if (!this._object) {\n const objectId = this.engine.wasm._wl_component_get_object(\n this._manager,\n this._id\n );\n this._object = this._scene.wrap(objectId);\n }\n return this._object;\n }\n\n /**\n * Set whether this component is active.\n *\n * Activating/deactivating a component comes at a small cost of reordering\n * components in the respective component manager. This function therefore\n * is not a trivial assignment.\n *\n * Does nothing if the component is already activated/deactivated.\n *\n * @param active New active state.\n */\n set active(active: boolean) {\n this.engine.wasm._wl_component_setActive(this._manager, this._id, active);\n }\n\n /** `true` if the component is marked as active and its scene is active. */\n get active(): boolean {\n return this.markedActive && this._scene.isActive;\n }\n\n /**\n * `true` if the component is marked as active in the scene, `false` otherwise.\n *\n * @note At the opposite of {@link Component.active}, this accessor doesn't\n * take into account whether the scene is active or not.\n */\n get markedActive(): boolean {\n return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0;\n }\n\n /**\n * Copy all the properties from `src` into this instance.\n *\n * @note Only properties are copied. If a component needs to\n * copy extra data, it needs to override this method.\n *\n * #### Example\n *\n * ```js\n * class MyComponent extends Component {\n * nonPropertyData = 'Hello World';\n *\n * copy(src) {\n * super.copy(src);\n * this.nonPropertyData = src.nonPropertyData;\n * return this;\n * }\n * }\n * ```\n *\n * @note This method is called by {@link Object3D.clone}. Do not attempt to:\n * - Create new component\n * - Read references to other objects\n *\n * When cloning via {@link Object3D.clone}, this method will be called before\n * {@link Component.start}.\n *\n * @note JavaScript component properties aren't retargeted. Thus, references\n * inside the source object will not be retargeted to the destination object,\n * at the exception of the skin data on {@link MeshComponent} and {@link AnimationComponent}.\n *\n * @param src The source component to copy from.\n *\n * @returns Reference to self (for method chaining).\n */\n copy(src: Record): this {\n const ctor = this.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return this;\n for (const name in properties) {\n const property = properties[name];\n const value = src[name];\n if (value === undefined) continue;\n const cloner = property.cloner ?? defaultPropertyCloner;\n (this as Record)[name] = cloner.clone(property.type, value);\n }\n return this;\n }\n\n /**\n * Remove this component from its objects and destroy it.\n *\n * It is best practice to set the component to `null` after,\n * to ensure it does not get used later.\n *\n * ```js\n * c.destroy();\n * c = null;\n * ```\n * @since 0.9.0\n */\n destroy(): void {\n const manager = this._manager;\n if (manager < 0 || this._id < 0) return;\n\n /* This call will mark the component destroyed,\n * automatically calling `_triggerOnDestroy`. */\n this.engine.wasm._wl_component_remove(manager, this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const componentA = obj.addComponent('mesh');\n * const componentB = obj.addComponent('mesh');\n * const componentC = componentB;\n * console.log(componentA === componentB); // false\n * console.log(componentA === componentA); // true\n * console.log(componentB === componentC); // true\n * ```\n */\n equals(otherComponent: Component | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherComponent) return false;\n return this._manager === otherComponent._manager && this._id === otherComponent._id;\n }\n\n /**\n * Reset the component properties to default.\n *\n * @note This is automatically called during the component instantiation.\n *\n * @returns Reference to self (for method chaining).\n */\n resetProperties(): this {\n resetComponentProperties(this);\n return this;\n }\n\n /** @deprecated Use {@link Component.resetProperties} instead. */\n reset(): this {\n return this.resetProperties();\n }\n\n /**\n * Validate the properties on this instance.\n *\n * @throws If any of the required properties isn't initialized\n * on this instance.\n */\n validateProperties(): void {\n const ctor = this.constructor as ComponentConstructor;\n if (!ctor.Properties) return;\n\n for (const name in ctor.Properties) {\n if (!ctor.Properties[name].required) continue;\n if (!(this as Record)[name]) {\n throw new Error(`Property '${name}' is required but was not initialized`);\n }\n }\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Component(destroyed)';\n }\n return `Component('${this.type}', ${this._localId})`;\n }\n\n /**\n * `true` if the component is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const comp = obj.addComponent('mesh');\n * comp.customParam = 'Hello World!';\n *\n * console.log(comp.isDestroyed); // Prints `false`\n * comp.destroy();\n * console.log(comp.isDestroyed); // Prints `true`\n * console.log(comp.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /** @hidden */\n _copy(src: this, offsetsPtr: number, copyInfoPtr: number) {\n const wasm = this.engine.wasm;\n\n /** @todo: Support retargeting for `Object3D.clone` as well. */\n const offsets = wasm.HEAPU32;\n const offsetsStart = offsetsPtr >>> 2;\n\n const copyInfoStart = copyInfoPtr >>> 1;\n const srcRootIndex = wasm.HEAPU16[copyInfoStart]; /* Defaults to max ushort */\n const srcRootSize = wasm.HEAPU16[copyInfoStart + 1]; /* Defaults to 0 */\n const dstRootIndex = wasm.HEAPU16[copyInfoStart + 2]; /* Defaults to 0 */\n\n const destScene = this._scene;\n\n const ctor = this.constructor as ComponentConstructor;\n for (const name in ctor.Properties) {\n const value = (src as Record)[name];\n if (value === null) {\n (this as Record)[name] = null;\n continue;\n }\n\n const prop = ctor.Properties[name];\n const offset = offsets[offsetsStart + prop.type];\n\n let retargeted = null;\n switch (prop.type) {\n case Type.Object: {\n let index = wasm._wl_object_index((value as Object3D)._id) + offset;\n const dist = index - srcRootIndex;\n if (dist >= 0 && dist <= srcRootSize) {\n /* Only retarget if a reference points into the source hierarchy. */\n index = dstRootIndex + dist;\n }\n const id = wasm._wl_object_id(destScene._index, index);\n retargeted = destScene.wrap(id);\n break;\n }\n case Type.Animation:\n retargeted = destScene.animations.wrap(\n offset + (value as Animation)._index\n );\n break;\n case Type.Skin:\n retargeted = destScene.skins.wrap(offset + (value as Skin)._index);\n break;\n default:\n const cloner = prop.cloner ?? defaultPropertyCloner;\n retargeted = cloner.clone(prop.type, value);\n break;\n }\n (this as Record)[name] = retargeted;\n }\n return this;\n }\n\n /**\n * Trigger the component {@link Component.init} method.\n *\n * @note Use this method instead of directly calling {@link Component.init},\n * because this method creates an handler for the {@link Component.start}.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerInit() {\n if (this.init) {\n try {\n this.init();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} init() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /* Arm onActivate() with the initial start() call */\n const oldActivate = this.onActivate;\n this.onActivate = function () {\n this.onActivate = oldActivate;\n let failed = false;\n try {\n this.validateProperties();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} validateProperties() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n try {\n this.start?.();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} start() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n if (failed) {\n this.active = false;\n return;\n }\n\n if (!this.onActivate) return;\n\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n };\n }\n\n /**\n * Trigger the component {@link Component.update} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerUpdate(dt: number) {\n if (!this.update) return;\n try {\n this.update(dt);\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} update() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n if (this.engine.wasm._deactivate_component_on_error) {\n this.active = false;\n }\n }\n }\n\n /**\n * Trigger the component {@link Component.onActivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnActivate() {\n if (!this.onActivate) return;\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDeactivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDeactivate() {\n if (!this.onDeactivate) return;\n try {\n this.onDeactivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDeactivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDestroy} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDestroy() {\n try {\n if (this.onDestroy) this.onDestroy();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDestroy() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n this._scene._components.destroy(this);\n }\n}\n\n/**\n * Components must be registered before loading / appending a scene.\n *\n * It's possible to end up with a broken component in the following cases:\n *\n * - Component wasn't registered when the scene was loaded\n * - Component instantiation failed\n *\n * This dummy component is thus used as a placeholder by the engine.\n */\nexport class BrokenComponent extends Component {\n static TypeName = '__broken-component__';\n}\n\n/**\n * Merge the ascendant properties of class\n *\n * This method walks the prototype chain, and merges\n * all the properties found in parent components.\n *\n * Example:\n *\n * ```js\n * import {Property, inheritProperties} from '@wonderlandengine/api';\n *\n * class Parent {\n * static Properties = { parentProp: Property.string('parent') };\n * }\n *\n * class Child extends Parent {\n * static Properties = { childProp: Property.string('child') };\n * }\n * inheritProperties(Child);\n * ```\n *\n * @param target The class in which properties should be merged\n *\n * @hidden\n */\nexport function inheritProperties(target: ComponentConstructor | PropertyRecord) {\n const chain: ComponentConstructor[] = [];\n let curr: Constructor | null = target;\n while (curr && !isBaseComponentClass(curr)) {\n const comp = curr as ComponentConstructor;\n\n /* Stop at the first class that doesn't require properties merging */\n const needsMerge = comp.hasOwnProperty('InheritProperties')\n ? comp.InheritProperties\n : true;\n if (!needsMerge) break;\n\n if (comp.hasOwnProperty('Properties')) {\n /* We push properties even if the object isn't deriving from a Component class.\n * This could theoretically lead to issue, when inheriting from another type\n * of component (lit-like elements) but extremely unlikely. */\n chain.push(comp);\n }\n curr = Object.getPrototypeOf(curr);\n }\n\n /* No prototype merge is needed. */\n if (!chain.length || (chain.length === 1 && chain[0] === target)) {\n return;\n }\n\n const merged: Record = {};\n for (let i = chain.length - 1; i >= 0; --i) {\n Object.assign(merged, chain[i].Properties);\n }\n target.Properties = merged;\n}\n\n/**\n * Native collision component.\n *\n * Provides access to a native collision component instance.\n */\nexport class CollisionComponent extends Component {\n /** @override */\n static TypeName = 'collision';\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * Collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the returned vector is used.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** Collision component collider */\n @nativeProperty()\n get collider(): Collider {\n return this.engine.wasm._wl_collision_component_get_collider(this._id);\n }\n\n /**\n * Set collision component collider.\n *\n * @param collider Collider of the collision component.\n */\n set collider(collider: Collider) {\n this.engine.wasm._wl_collision_component_set_collider(this._id, collider);\n }\n\n /**\n * Equivalent to {@link CollisionComponent.getExtents}.\n *\n * @note Prefer to use {@link CollisionComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n }\n\n /**\n * Set collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the passed vector is used.\n *\n * Example:\n *\n * ```js\n * // Spans 1 unit on the x-axis, 2 on the y-axis, 3 on the z-axis.\n * collision.extent = [1, 2, 3];\n * ```\n *\n * @param extents Extents of the collision component, expects a\n * 3 component array.\n */\n set extents(extents: Readonly) {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = extents[0];\n wasm.HEAPF32[ptr + 1] = extents[1];\n wasm.HEAPF32[ptr + 2] = extents[2];\n }\n\n /**\n * Get collision component radius.\n *\n * @note If {@link collider} is not {@link Collider.Sphere}, the returned value\n * corresponds to the radius of a sphere enclosing the shape.\n *\n * Example:\n *\n * ```js\n * sphere.radius = 3.0;\n * console.log(sphere.radius); // 3.0\n *\n * box.extents = [2.0, 2.0, 2.0];\n * console.log(box.radius); // 1.732...\n * ```\n *\n */\n get radius(): number {\n const wasm = this.engine.wasm;\n if (this.collider === Collider.Sphere)\n return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2];\n const extents = new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n const x2 = extents[0] * extents[0];\n const y2 = extents[1] * extents[1];\n const z2 = extents[2] * extents[2];\n return Math.sqrt(x2 + y2 + z2) / 2;\n }\n\n /**\n * Set collision component radius.\n *\n * @param radius Radius of the collision component\n *\n * @note If {@link collider} is not {@link Collider.Sphere},\n * the extents are set to form a square that fits a sphere with the provided radius.\n *\n * Example:\n *\n * ```js\n * aabbCollision.radius = 2.0; // AABB fits a sphere of radius 2.0\n * boxCollision.radius = 3.0; // Box now fits a sphere of radius 3.0, keeping orientation\n * ```\n *\n */\n set radius(radius: number) {\n const length = this.collider === Collider.Sphere ? radius : (2 * radius) / SQRT_3;\n this.extents.set([length, length, length]);\n }\n\n /**\n * Collision component group.\n *\n * The groups is a bitmask that is compared to other components in {@link CollisionComponent#queryOverlaps}\n * or the group in {@link Scene#rayCast}.\n *\n * Colliders that have no common groups will not overlap with each other. If a collider\n * has none of the groups set for {@link Scene#rayCast}, the ray will not hit it.\n *\n * Each bit represents belonging to a group, see example.\n *\n * ```js\n * // c belongs to group 2\n * c.group = (1 << 2);\n *\n * // c belongs to group 0\n * c.group = (1 << 0);\n *\n * // c belongs to group 0 *and* 2\n * c.group = (1 << 0) | (1 << 2);\n *\n * (c.group & (1 << 2)) != 0; // true\n * (c.group & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get group(): number {\n return this.engine.wasm._wl_collision_component_get_group(this._id);\n }\n\n /**\n * Set collision component group.\n *\n * @param group Group mask of the collision component.\n */\n set group(group: number) {\n this.engine.wasm._wl_collision_component_set_group(this._id, group);\n }\n\n /**\n * Query overlapping objects.\n *\n * Usage:\n *\n * ```js\n * const collision = object.getComponent('collision');\n * const overlaps = collision.queryOverlaps();\n * for(const otherCollision of overlaps) {\n * const otherObject = otherCollision.object;\n * console.log(`Collision with object ${otherObject.objectId}`);\n * }\n * ```\n *\n * @returns Collision components overlapping this collider.\n */\n queryOverlaps(): CollisionComponent[] {\n const count = this.engine.wasm._wl_collision_component_query_overlaps(\n this._id,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const overlaps: CollisionComponent[] = new Array(count);\n for (let i = 0; i < count; ++i) {\n const id = this.engine.wasm._tempMemUint16[i];\n overlaps[i] = this._scene._components.wrapCollision(id);\n }\n return overlaps;\n }\n}\n\n/**\n * Native text component\n *\n * Provides access to a native text component instance\n */\nexport class TextComponent extends Component {\n /** @override */\n static TypeName = 'text';\n\n /** Text component alignment. */\n @nativeProperty()\n get alignment(): Alignment {\n return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id);\n }\n\n /**\n * Set text component alignment.\n *\n * @param alignment Alignment for the text component.\n */\n set alignment(alignment: Alignment) {\n this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment);\n }\n\n /**\n * Text component vertical alignment.\n * @since 1.2.0\n */\n @nativeProperty()\n get verticalAlignment(): VerticalAlignment {\n return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id);\n }\n\n /**\n * Set text component vertical alignment.\n *\n * @param verticalAlignment Vertical for the text component.\n * @since 1.2.0\n */\n set verticalAlignment(verticalAlignment: VerticalAlignment) {\n this.engine.wasm._wl_text_component_set_vertical_alignment(\n this._id,\n verticalAlignment\n );\n }\n\n /**\n * Text component justification.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n @nativeProperty()\n get justification() {\n return this.verticalAlignment;\n }\n\n /**\n * Set text component justification.\n *\n * @param justification Justification for the text component.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n set justification(justification: VerticalAlignment) {\n this.verticalAlignment = justification;\n }\n\n /**\n * Whether text is justified horizontally.\n *\n * Aligns text horizontally to both margins by adding space between words.\n *\n * Requires {@link wrapMode} to be {@link TextWrapMode.Soft} or\n * {@link TextWrapMode.Hard} and non-0 {@link wrapWidth}.\n *\n * The last line in a paragraph is never justified and respects\n * {@link alignment}.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get justified(): boolean {\n return !!this.engine.wasm._wl_text_component_get_justified(this._id);\n }\n\n /**\n * Set whether text is justified horizontally.\n *\n * @param justified New justified state for the text component.\n * @since 1.3.0\n */\n set justified(justified: boolean) {\n this.engine.wasm._wl_text_component_set_justified(this._id, justified);\n }\n\n /** Text component character spacing. */\n @nativeProperty()\n get characterSpacing(): number {\n return this.engine.wasm._wl_text_component_get_character_spacing(this._id);\n }\n\n /**\n * Set text component character spacing.\n *\n * @param spacing Character spacing for the text component.\n */\n set characterSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing);\n }\n\n /** Text component line spacing. */\n @nativeProperty()\n get lineSpacing(): number {\n return this.engine.wasm._wl_text_component_get_line_spacing(this._id);\n }\n\n /**\n * Set text component line spacing.\n *\n * @param spacing Line spacing for the text component\n */\n set lineSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing);\n }\n\n /** Text component effect. */\n @nativeProperty()\n get effect(): TextEffect {\n return this.engine.wasm._wl_text_component_get_effect(this._id);\n }\n\n /**\n * Set text component effect.\n *\n * @param effect Effect for the text component\n */\n set effect(effect: TextEffect) {\n this.engine.wasm._wl_text_component_set_effect(this._id, effect);\n }\n\n /**\n * Equivalent to {@link getEffectOffset}.\n *\n * @note Prefer to use {@link getEffectOffset} for performance.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get effectOffset(): Float32Array {\n return this.getEffectOffset();\n }\n\n /**\n * Equivalent to {@link setEffectOffset}.\n *\n * @since 1.3.0\n */\n set effectOffset(offset: Readonly) {\n this.setEffectOffset(offset);\n }\n\n /** @overload */\n getEffectOffset(): Float32Array;\n /**\n * Get text component effect offset.\n *\n * @param out Destination array, expected to have at least 2 elements.\n * @returns The `out` parameter.\n *\n * @since 1.3.0\n */\n getEffectOffset(out: T): T;\n getEffectOffset(out: NumberArray = new Float32Array(2)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n return out;\n }\n\n /**\n * Set text component effect offset.\n *\n * The offset is given as X and Y factors for {@link Font.emHeight}. E.g. a\n * value of 2 in one axis offsets the effect by two font line heights. A\n * positive Y value moves the effect **upwards**.\n *\n * @param offset Array with new offset, expected to have at least 2 elements.\n *\n * @since 1.3.0\n */\n setEffectOffset(offset: Readonly) {\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(offset);\n wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem);\n }\n\n /**\n * Text component line wrap mode.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapMode(): TextWrapMode {\n return this.engine.wasm._wl_text_component_get_wrapMode(this._id);\n }\n\n /**\n * Set text component line wrap mode.\n *\n * @param wrapMode Line wrap mode for the text component.\n * @since 1.2.1\n */\n set wrapMode(wrapMode: TextWrapMode) {\n this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode);\n }\n\n /**\n * Text component line wrap width, in object space.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapWidth(): number {\n return this.engine.wasm._wl_text_component_get_wrapWidth(this._id);\n }\n\n /**\n * Set text component line wrap width.\n *\n * Only takes effect when {@link wrapMode} is something other than\n * {@link TextWrapMode.None}.\n *\n * @param width Line wrap width for the text component, in object space.\n * @since 1.2.1\n */\n set wrapWidth(width: number) {\n this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width);\n }\n\n /** Text component text. */\n @nativeProperty()\n get text(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_text_component_get_text(this._id);\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Set text component text.\n *\n * @param text Text of the text component.\n */\n set text(text: any) {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString()));\n }\n\n /**\n * Set material to render the text with.\n *\n * @param material New material.\n */\n set material(material: Material | null | undefined) {\n const matIndex = material ? material._id : 0;\n this.engine.wasm._wl_text_component_set_material(this._id, matIndex);\n }\n\n /** Material used to render the text. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_text_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** @overload */\n getBoundingBoxForText(text: string): Float32Array;\n /**\n * Axis-aligned bounding box for a given text, in object space.\n *\n * To calculate the size for the currently set text, use\n * {@link getBoundingBox}.\n *\n * Useful for calculating the text size before an update and potentially\n * adjusting the text:\n *\n * ```js\n * let updatedName = 'some very long name';\n * const box = new Float32Array(4);\n * text.getBoundingBoxForText(updatedName, box);\n * const width = box[2] - box[0];\n * if(width > 2.0) {\n * updatedName = updatedName.slice(0, 5) + '...';\n * }\n * text.text = updatedName;\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBoxForText(text: string, out: T): T;\n /** @overload */\n getBoundingBoxForText(\n text: string,\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n /* Offset by 4 floats, output is written to _tempMem */\n const textPtr = wasm.tempUTF8(text, 4 * 4);\n this.engine.wasm._wl_text_component_get_boundingBox(\n this._id,\n textPtr,\n wasm._tempMem\n );\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n getBoundingBox(): Float32Array;\n /**\n * Axis-aligned bounding box, in object space.\n *\n * The bounding box is computed using the current component properties\n * that influence the position and size of the text. The bounding box is\n * affected by alignment, spacing, effect type and the font set in the\n * material.\n *\n * To calculate the size for a different text, use\n * {@link getBoundingBoxForText}.\n *\n * Useful for adjusting text position or scaling:\n *\n * ```js\n * const box = new Float32Array(4);\n * text.getBoundingBox(box);\n * const width = box[2] - box[0];\n * // Make text 1m wide\n * text.object.setScalingLocal([1/width, 1, 1]);\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBox(out: T): T;\n /** @overload */\n getBoundingBox(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n}\n\n/**\n * Native view component.\n *\n * Provides access to a native view component instance.\n */\nexport class ViewComponent extends Component {\n /** @override */\n static TypeName = 'view';\n\n /**\n * Projection type of the view.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get projectionType(): ProjectionType {\n return this.engine.wasm._wl_view_component_get_projectionType(this._id);\n }\n\n /**\n * Set the projection type of the view.\n *\n * @param type New projection type.\n * @since 1.2.2\n */\n set projectionType(type) {\n this.engine.wasm._wl_view_component_set_projectionType(this._id, type);\n }\n\n /** @overload */\n getProjectionMatrix(): Float32Array;\n /**\n * Projection matrix.\n *\n * A 4x4 matrix that transforms from view space to a WebGL-compatible clip\n * space (-1 to 1 on all axes, near plane at -1, far plane at 1).\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the projection matrix reported by the device.\n *\n * @note This is not necessarily the final projection matrix used for\n * rendering. You can use it for unprojecting from screen space coordinates\n * to view space.\n *\n * @param out Destination array/vector, expected to have at least 16 elements.\n * @returns The `out` parameter.\n */\n getProjectionMatrix(out: T): T;\n getProjectionMatrix(out: NumberArray = new Float32Array(16)): NumberArray {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem);\n for (let i = 0; i < 16; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Equivalent to {@link ViewComponent.getProjectionMatrix}.\n *\n * @note Prefer to use {@link ViewComponent.getProjectionMatrix} for performance.\n */\n @enumerable()\n get projectionMatrix(): Float32Array {\n return this.getProjectionMatrix();\n }\n\n /**\n * Override projection matrix for this view.\n *\n * Bypasses the generation of the projection matrix from viewport, fov, near, far.\n *\n * @hidden\n */\n _setProjectionMatrix(v: Readonly) {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._tempMemFloat.set(v);\n wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem);\n }\n\n /**\n * Generate projection matrix from viewport, fov, near, far.\n *\n * Overwrites any projection matrix set manually.\n *\n * @hidden\n */\n _generateProjectionMatrix() {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_generate_projectionMatrix(this._id);\n }\n\n /** ViewComponent near clipping plane value. */\n @nativeProperty()\n get near(): number {\n return this.engine.wasm._wl_view_component_get_near(this._id);\n }\n\n /**\n * Set near clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param near Near depth value.\n */\n set near(near: number) {\n this.engine.wasm._wl_view_component_set_near(this._id, near);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(near, this.far);\n }\n }\n\n /** Far clipping plane value. */\n @nativeProperty()\n get far(): number {\n return this.engine.wasm._wl_view_component_get_far(this._id);\n }\n\n /**\n * Set far clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param far Near depth value.\n */\n set far(far: number) {\n this.engine.wasm._wl_view_component_set_far(this._id, far);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(this.near, far);\n }\n }\n\n /**\n * Get the horizontal field of view for the view, **in degrees**.\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the field of view reported by the device, regardless of the fov\n * that was set.\n */\n @nativeProperty()\n get fov(): number {\n return this.engine.wasm._wl_view_component_get_fov(this._id);\n }\n\n /**\n * Set the horizontal field of view for the view, **in degrees**.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Perspective}.\n *\n * If an XR session is active and this is the left or right eye view, the\n * field of view reported by the device is used and this value is ignored.\n * After the XR session ends, the new value is applied.\n *\n * @param fov Horizontal field of view, **in degrees**.\n */\n set fov(fov) {\n this.engine.wasm._wl_view_component_set_fov(this._id, fov);\n }\n\n /** @overload */\n getViewport(): Int32Array;\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n */\n getViewport(out: T): T;\n getViewport(out: NumberArray = new Int32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_view_component_get_viewport(this._id);\n for (let i = 0; i < 4; ++i) {\n out[i] = wasm.HEAPF32[ptr + i];\n }\n return out;\n }\n\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n */\n @enumerable()\n get viewport(): Int32Array {\n return this.getViewport();\n }\n\n /**\n * Set viewport.\n *\n * @hidden\n */\n _setViewport(x: number, y: number, width: number, height: number) {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_set_viewport(this._id, x, y, width, height);\n }\n\n /**\n * Get the width of the orthographic viewing volume.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get extent(): number {\n return this.engine.wasm._wl_view_component_get_extent(this._id);\n }\n\n /**\n * Set the width of the orthographic viewing volume.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Orthographic}.\n *\n * @param extent New extent.\n * @since 1.2.2\n */\n set extent(extent) {\n this.engine.wasm._wl_view_component_set_extent(this._id, extent);\n }\n}\n\n/**\n * Native input component.\n *\n * Provides access to a native input component instance.\n */\nexport class InputComponent extends Component {\n /** @override */\n static TypeName = 'input';\n\n /** Input component type */\n @nativeProperty()\n get inputType(): InputType {\n return this.engine.wasm._wl_input_component_get_type(this._id);\n }\n\n /**\n * Set input component type.\n *\n * @params New input component type.\n */\n set inputType(type: InputType) {\n this.engine.wasm._wl_input_component_set_type(this._id, type);\n }\n\n /**\n * WebXR Device API input source associated with this input component,\n * if type {@link InputType.ControllerLeft} or {@link InputType.ControllerRight}.\n */\n @enumerable()\n get xrInputSource(): XRInputSource | null {\n const xr = this.engine.xr;\n if (!xr) return null;\n\n for (let inputSource of xr.session.inputSources) {\n if (inputSource.handedness == this.handedness) {\n return inputSource;\n }\n }\n\n return null;\n }\n\n /**\n * 'left', 'right' or `null` depending on the {@link InputComponent#inputType}.\n */\n @enumerable()\n get handedness(): 'left' | 'right' | null {\n const inputType = this.inputType;\n if (\n inputType == InputType.ControllerRight ||\n inputType == InputType.RayRight ||\n inputType == InputType.EyeRight\n )\n return 'right';\n if (\n inputType == InputType.ControllerLeft ||\n inputType == InputType.RayLeft ||\n inputType == InputType.EyeLeft\n )\n return 'left';\n\n return null;\n }\n}\n\n/**\n * Native light component.\n *\n * Provides access to a native light component instance.\n */\nexport class LightComponent extends Component {\n /** @override */\n static TypeName = 'light';\n\n /** @overload */\n getColor(): Float32Array;\n /**\n * Get light color.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n * @since 1.0.0\n */\n getColor(out: T): T;\n getColor(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set light color.\n *\n * @param c New color array/vector, expected to have at least 3 elements.\n * @since 1.0.0\n */\n setColor(c: Readonly): void {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = c[0];\n wasm.HEAPF32[ptr + 1] = c[1];\n wasm.HEAPF32[ptr + 2] = c[2];\n }\n\n /**\n * View on the light color.\n *\n * @note Prefer to use {@link getColor} in performance-critical code.\n */\n @nativeProperty()\n get color(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_light_component_get_color(this._id),\n 3\n );\n }\n\n /**\n * Set light color.\n *\n * @param c Color of the light component.\n *\n * @note Prefer to use {@link setColor} in performance-critical code.\n */\n set color(c: Readonly) {\n this.color.set(c);\n }\n\n /** Light type. */\n @nativeProperty()\n get lightType(): LightType {\n return this.engine.wasm._wl_light_component_get_type(this._id);\n }\n\n /**\n * Set light type.\n *\n * @param lightType Type of the light component.\n */\n set lightType(t: LightType) {\n this.engine.wasm._wl_light_component_set_type(this._id, t);\n }\n\n /**\n * Light intensity.\n * @since 1.0.0\n */\n @nativeProperty()\n get intensity(): number {\n return this.engine.wasm._wl_light_component_get_intensity(this._id);\n }\n\n /**\n * Set light intensity.\n *\n * @param intensity Intensity of the light component.\n * @since 1.0.0\n */\n set intensity(intensity: number) {\n this.engine.wasm._wl_light_component_set_intensity(this._id, intensity);\n }\n\n /**\n * Outer angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get outerAngle(): number {\n return this.engine.wasm._wl_light_component_get_outerAngle(this._id);\n }\n\n /**\n * Set outer angle for spot lights.\n *\n * @param angle Outer angle, in degrees.\n * @since 1.0.0\n */\n set outerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle);\n }\n\n /**\n * Inner angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get innerAngle(): number {\n return this.engine.wasm._wl_light_component_get_innerAngle(this._id);\n }\n\n /**\n * Set inner angle for spot lights.\n *\n * @param angle Inner angle, in degrees.\n * @since 1.0.0\n */\n set innerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle);\n }\n\n /**\n * Whether the light casts shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadows(): boolean {\n return !!this.engine.wasm._wl_light_component_get_shadows(this._id);\n }\n\n /**\n * Set whether the light casts shadows.\n *\n * @param b Whether the light casts shadows.\n * @since 1.0.0\n */\n set shadows(b: boolean) {\n this.engine.wasm._wl_light_component_set_shadows(this._id, b);\n }\n\n /**\n * Range for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowRange(): number {\n return this.engine.wasm._wl_light_component_get_shadowRange(this._id);\n }\n\n /**\n * Set range for shadows.\n *\n * @param range Range for shadows.\n * @since 1.0.0\n */\n set shadowRange(range: number) {\n this.engine.wasm._wl_light_component_set_shadowRange(this._id, range);\n }\n\n /**\n * Bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowBias(this._id);\n }\n\n /**\n * Set bias value for shadows.\n *\n * @param bias Bias for shadows.\n * @since 1.0.0\n */\n set shadowBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias);\n }\n\n /**\n * Normal bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowNormalBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id);\n }\n\n /**\n * Set normal bias value for shadows.\n *\n * @param bias Normal bias for shadows.\n * @since 1.0.0\n */\n set shadowNormalBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias);\n }\n\n /**\n * Texel size for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowTexelSize(): number {\n return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id);\n }\n\n /**\n * Set texel size for shadows.\n *\n * @param size Texel size for shadows.\n * @since 1.0.0\n */\n set shadowTexelSize(size: number) {\n this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size);\n }\n\n /**\n * Cascade count for {@link LightType.Sun} shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get cascadeCount(): number {\n return this.engine.wasm._wl_light_component_get_cascadeCount(this._id);\n }\n\n /**\n * Set cascade count for {@link LightType.Sun} shadows.\n *\n * @param count Cascade count.\n * @since 1.0.0\n */\n set cascadeCount(count: number) {\n this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count);\n }\n}\n\n/**\n * Native animation component.\n *\n * Provides access to a native animation component instance.\n */\nexport class AnimationComponent extends Component {\n /** @override */\n static TypeName = 'animation';\n\n /**\n * Emitter for animation events triggered on this component.\n *\n * The first argument is the name of the event.\n */\n readonly onEvent = new Emitter<[string]>();\n\n /**\n * Set animation to play.\n *\n * Make sure to {@link Animation#retarget} the animation to affect the\n * right objects.\n *\n * @param anim Animation to play.\n */\n set animation(anim: Animation | null | undefined) {\n this.scene.assertOrigin(anim);\n this.engine.wasm._wl_animation_component_set_animation(\n this._id,\n anim ? anim._id : 0\n );\n }\n\n /** Animation set for this component */\n @nativeProperty()\n get animation(): Animation | null {\n const index = this.engine.wasm._wl_animation_component_get_animation(this._id);\n return this._scene.animations.wrap(index);\n }\n\n /**\n * Set play count. Set to `0` to loop indefinitely.\n *\n * @param playCount Number of times to repeat the animation.\n */\n set playCount(playCount: number) {\n this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount);\n }\n\n /** Number of times the animation is played. */\n @nativeProperty()\n get playCount(): number {\n return this.engine.wasm._wl_animation_component_get_playCount(this._id);\n }\n\n /**\n * Set speed. Set to negative values to run the animation backwards.\n *\n * Setting speed has an immediate effect for the current frame's update\n * and will continue with the speed from the current point in the animation.\n *\n * @param speed New speed at which to play the animation.\n * @since 0.8.10\n */\n set speed(speed: number) {\n this.engine.wasm._wl_animation_component_set_speed(this._id, speed);\n }\n\n /**\n * Speed factor at which the animation is played.\n *\n * @since 0.8.10\n */\n @nativeProperty()\n get speed(): number {\n return this.engine.wasm._wl_animation_component_get_speed(this._id);\n }\n\n /** Current playing state of the animation */\n @enumerable()\n get state(): AnimationState {\n return this.engine.wasm._wl_animation_component_state(this._id);\n }\n\n /**\n * How to handle root motion on this component.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n @enumerable()\n get rootMotionMode(): RootMotionMode {\n return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id);\n }\n\n /**\n * Set how to handle root motion.\n *\n * @param mode Mode to handle root motion, see {@link RootMotionMode}.\n * @since 1.2.2\n */\n set rootMotionMode(mode: RootMotionMode) {\n this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode);\n }\n\n /**\n * Current iteration of the animation.\n *\n * If {@link playCount} is not unlimited, the value is in the range from\n * `0` to `playCount`.\n *\n * @since 1.2.3\n */\n get iteration(): number {\n return this.engine.wasm._wl_animation_component_get_iteration(this._id);\n }\n\n /**\n * Current playing position of the animation within the current iteration,\n * in seconds.\n *\n * The value is in the range from `0.0` to {@link AnimationComponent#duration},\n * if playing in reverse, this range is reversed as well.\n *\n * @since 1.2.3\n */\n get position(): number {\n return this.engine.wasm._wl_animation_component_get_position(this._id);\n }\n\n /**\n * Current duration to loop one iteration in seconds, offers a more accurate duration\n * than {@link Animation#duration} when blending multiple animations.\n *\n * @since 1.2.3\n */\n get duration(): number {\n return this.engine.wasm._wl_animation_component_get_duration(this._id);\n }\n\n /**\n * Play animation.\n *\n * If the animation is currently paused, resumes from that position. If the\n * animation is already playing, does nothing.\n *\n * To restart the animation, {@link AnimationComponent#stop} it first.\n */\n play(): void {\n this.engine.wasm._wl_animation_component_play(this._id);\n }\n\n /** Stop animation. */\n stop(): void {\n this.engine.wasm._wl_animation_component_stop(this._id);\n }\n\n /** Pause animation. */\n pause(): void {\n this.engine.wasm._wl_animation_component_pause(this._id);\n }\n\n /**\n * Get the value of a float parameter in the attached graph.\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @since 1.2.0\n */\n getFloatParameter(name: string): number | null {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n }\n\n /**\n * Set the value of a float parameter in the attached graph\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @param value Float value to set.\n * @returns 1 if the parameter was successfully set, 0 on fail.\n * @since 1.2.0\n */\n setFloatParameter(name: string, value: number): void {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._tempMemFloat[0] = value;\n wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem);\n }\n\n /** @overload */\n getRootMotionTranslation(): Float32Array;\n /**\n * Get the root motion translation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity translation.\n *\n * @since 1.2.2\n */\n getRootMotionTranslation(out: T): T;\n getRootMotionTranslation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRootMotionRotation(): Float32Array;\n /**\n * Get the root motion rotation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity rotation.\n *\n * @since 1.2.2\n */\n getRootMotionRotation(out: T): T;\n getRootMotionRotation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n}\n\n/**\n * Native mesh component.\n *\n * Provides access to a native mesh component instance.\n */\nexport class MeshComponent extends Component {\n /** @override */\n static TypeName = 'mesh';\n\n /**\n * Set material to render the mesh with.\n *\n * @param material Material to render the mesh with.\n */\n set material(material: Material | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_material(\n this._id,\n material ? material._id : 0\n );\n }\n\n /** Material used to render the mesh. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_mesh_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** Mesh rendered by this component. */\n @nativeProperty()\n get mesh(): Mesh | null {\n const index = this.engine.wasm._wl_mesh_component_get_mesh(this._id);\n return this.engine.meshes.wrap(index);\n }\n\n /**\n * Set mesh to rendered with this component.\n *\n * @param mesh Mesh rendered by this component.\n */\n set mesh(mesh: Mesh | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0);\n }\n\n /** Skin for this mesh component. */\n @nativeProperty()\n get skin(): Skin | null {\n const index = this.engine.wasm._wl_mesh_component_get_skin(this._id);\n return this._scene.skins.wrap(index);\n }\n\n /**\n * Set skin to transform this mesh component.\n *\n * @param skin Skin to use for rendering skinned meshes.\n */\n set skin(skin: Skin | null | undefined) {\n this.scene.assertOrigin(skin);\n this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0);\n }\n\n /**\n * Morph targets for this mesh component.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargets(): MorphTargets | null {\n const index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id);\n return this.engine.morphTargets.wrap(index);\n }\n\n /**\n * Set morph targets to transform this mesh component.\n *\n * @param morphTargets Morph targets to use for rendering.\n *\n * @since 1.2.0\n */\n set morphTargets(morphTargets: MorphTargets | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_morph_targets(\n this._id,\n morphTargets?._id ?? 0\n );\n }\n\n /**\n * Equivalent to {@link getMorphTargetWeights}.\n *\n * @note Prefer to use {@link getMorphTargetWeights} for performance.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargetWeights(): Float32Array {\n return this.getMorphTargetWeights();\n }\n\n /**\n * Set the morph target weights to transform this mesh component.\n *\n * @param weights New weights.\n *\n * @since 1.2.0\n */\n set morphTargetWeights(weights: Readonly) {\n this.setMorphTargetWeights(weights);\n }\n\n /** @overload */\n getMorphTargetWeights(): Float32Array;\n /**\n * Get morph target weights for this mesh component.\n *\n * @param out Destination array, expected to have at least as many elements\n * as {@link MorphTargets.count}.\n * @returns The `out` parameter.\n *\n * @since 1.2.0\n */\n getMorphTargetWeights(out: T): T;\n getMorphTargetWeights(out?: NumberArray): NumberArray {\n const wasm = this.engine.wasm;\n const count = wasm._wl_mesh_component_get_morph_target_weights(\n this._id,\n wasm._tempMem\n );\n if (!out) {\n out = new Float32Array(count);\n }\n for (let i = 0; i < count; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Get the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @returns The weight.\n *\n * @since 1.2.0\n */\n getMorphTargetWeight(target: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n return this.engine.wasm._wl_mesh_component_get_morph_target_weight(\n this._id,\n target\n );\n }\n\n /**\n * Set morph target weights for this mesh component.\n *\n * @param weights Array of new weights, expected to have at least as many\n * elements as {@link MorphTargets.count}.\n *\n * @since 1.2.0\n */\n setMorphTargetWeights(weights: Readonly) {\n const count = this.morphTargets?.count ?? 0;\n if (weights.length !== count) {\n throw new Error(`Expected ${count} weights but got ${weights.length}`);\n }\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(weights);\n wasm._wl_mesh_component_set_morph_target_weights(\n this._id,\n wasm._tempMem,\n weights.length\n );\n }\n\n /**\n * Set the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @param weight The new weight.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\n setMorphTargetWeight(target: number, weight: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n this.engine.wasm._wl_mesh_component_set_morph_target_weight(\n this._id,\n target,\n weight\n );\n }\n}\n\n/**\n * Native particle effect component.\n *\n * @since 1.4.0\n */\nexport class ParticleEffectComponent extends Component {\n /** @override */\n static TypeName = 'particle-effect';\n\n /** Particle effect used by this component. */\n @nativeProperty()\n get particleEffect(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(\n this._id\n );\n return this.engine.particleEffects.wrap(index);\n }\n\n /**\n * Set particle effect to use with this component.\n *\n * @param particleEffect Particle effect used by this component.\n */\n set particleEffect(particleEffect: ParticleEffect | null | undefined) {\n this.engine.wasm._wl_particleEffect_component_set_particleEffect(\n this._id,\n particleEffect?._id ?? 0\n );\n }\n}\n\n/**\n * Enum for Physics axes locking\n *\n * See {@link PhysXComponent.angularLockAxis} and {@link PhysXComponent.linearLockAxis}.\n */\nexport enum LockAxis {\n /**\n * No axis selected.\n */\n None = 0,\n\n /**\n * **X axis**:\n */\n X = 1 << 0,\n\n /**\n * **Y axis**:\n */\n Y = 1 << 1,\n\n /**\n * **Z axis**:\n */\n Z = 1 << 2,\n}\n\n/**\n * Native physx rigid body component.\n *\n * Provides access to a native mesh component instance.\n * Only available when using physx enabled runtime, see \"Project Settings > Runtime\".\n */\nexport class PhysXComponent extends Component {\n /** @override */\n static TypeName = 'physx';\n\n /** @overload */\n getTranslationOffset(): Float32Array;\n /**\n * Local translation offset.\n *\n * Allows to move a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getTranslationOffset(out: T): T;\n getTranslationOffset(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRotationOffset(): Float32Array;\n /**\n * Local rotation offset represented as a quaternion.\n *\n * Allows to rotate a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getRotationOffset(out: T): T;\n getRotationOffset(out: NumberArray = new Float32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr =\n wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * The shape extents for collision detection.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_physx_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** @overload */\n getLinearVelocity(): Float32Array;\n /**\n * Linear velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLinearVelocity(out: T): T;\n getLinearVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_linearVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getAngularVelocity(): Float32Array;\n /**\n * Angular velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getAngularVelocity(out: T): T;\n getAngularVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_angularVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /**\n * Set whether this rigid body is static.\n *\n * Setting this property only takes effect once the component\n * switches from inactive to active.\n *\n * @param b Whether the rigid body should be static.\n */\n set static(b: boolean) {\n this.engine.wasm._wl_physx_component_set_static(this._id, b);\n }\n\n /**\n * Whether this rigid body is static.\n *\n * This property returns whether the rigid body is *effectively*\n * static. If static property was set while the rigid body was\n * active, it will not take effect until the rigid body is set\n * inactive and active again. Until the component is set inactive,\n * this getter will return whether the rigid body is actually\n * static.\n */\n @nativeProperty()\n get static(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_static(this._id);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getTranslationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getTranslationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get translationOffset(): Float32Array {\n return this.getTranslationOffset();\n }\n\n /**\n * Set the offset translation.\n *\n * The array must be a vector of at least **3** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set translationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetTranslation(\n this._id,\n offset[0],\n offset[1],\n offset[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getRotationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getRotationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get rotationOffset(): Float32Array {\n return this.getRotationOffset();\n }\n\n /**\n * Set the offset rotation.\n *\n * The array must be a quaternion of at least **4** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set rotationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetRotation(\n this._id,\n offset[0],\n offset[1],\n offset[2],\n offset[3]\n );\n }\n\n /**\n * Set whether this rigid body is kinematic.\n *\n * @param b Whether the rigid body should be kinematic.\n */\n set kinematic(b: boolean) {\n this.engine.wasm._wl_physx_component_set_kinematic(this._id, b);\n }\n\n /**\n * Whether this rigid body is kinematic.\n */\n @nativeProperty()\n get kinematic(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id);\n }\n\n /**\n * Set whether this rigid body's gravity is enabled.\n *\n * @param b Whether the rigid body's gravity should be enabled.\n */\n set gravity(b: boolean) {\n this.engine.wasm._wl_physx_component_set_gravity(this._id, b);\n }\n\n /**\n * Whether this rigid body's gravity flag is enabled.\n */\n @nativeProperty()\n get gravity(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_gravity(this._id);\n }\n\n /**\n * Set whether this rigid body's simulate flag is enabled.\n *\n * @param b Whether the rigid body's simulate flag should be enabled.\n */\n set simulate(b: boolean) {\n this.engine.wasm._wl_physx_component_set_simulate(this._id, b);\n }\n\n /**\n * Whether this rigid body's simulate flag is enabled.\n */\n @nativeProperty()\n get simulate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_simulate(this._id);\n }\n\n /**\n * Set whether to allow simulation of this rigid body.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling {@link allowSimulation} while {@link trigger} is enabled\n * will disable {@link trigger}.\n *\n * @param b Whether to allow simulation of this rigid body.\n */\n set allowSimulation(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b);\n }\n\n /**\n * Whether to allow simulation of this rigid body.\n */\n @nativeProperty()\n get allowSimulation(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id);\n }\n\n /**\n * Set whether this rigid body may be queried in ray casts.\n *\n * @param b Whether this rigid body may be queried in ray casts.\n */\n set allowQuery(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b);\n }\n\n /**\n * Whether this rigid body may be queried in ray casts.\n */\n @nativeProperty()\n get allowQuery(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id);\n }\n\n /**\n * Set whether this physics body is a trigger.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling trigger while {@link allowSimulation} is enabled,\n * will disable {@link allowSimulation}.\n *\n * @param b Whether this physics body is a trigger.\n */\n set trigger(b: boolean) {\n this.engine.wasm._wl_physx_component_set_trigger(this._id, b);\n }\n\n /**\n * Whether this physics body is a trigger.\n */\n @nativeProperty()\n get trigger(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_trigger(this._id);\n }\n\n /**\n * Set the shape for collision detection.\n *\n * @param s New shape.\n * @since 0.8.5\n */\n set shape(s: Shape) {\n this.engine.wasm._wl_physx_component_set_shape(this._id, s);\n }\n\n /** The shape for collision detection. */\n @nativeProperty()\n get shape(): Shape {\n return this.engine.wasm._wl_physx_component_get_shape(this._id);\n }\n\n /**\n * Set additional data for the shape.\n *\n * Retrieved only from {@link PhysXComponent#shapeData}.\n * @since 0.8.10\n */\n set shapeData(d) {\n if (d == null || !isMeshShape(this.shape)) return;\n this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index);\n }\n\n /**\n * Additional data for the shape.\n *\n * `null` for {@link Shape} values: `None`, `Sphere`, `Capsule`, `Box`, `Plane`.\n * `{index: n}` for `TriangleMesh` and `ConvexHull`.\n *\n * This data is currently only for passing onto or creating other {@link PhysXComponent}.\n * @since 0.8.10\n */\n @nativeProperty()\n get shapeData(): {\n index: number;\n } | null {\n if (!isMeshShape(this.shape)) return null;\n return {\n index: this.engine.wasm._wl_physx_component_get_shape_data(this._id),\n };\n }\n\n /**\n * Set the shape extents for collision detection.\n *\n * @param e New extents for the shape.\n * @since 0.8.5\n */\n set extents(e: Readonly) {\n this.extents.set(e);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getExtents}.\n *\n * @note Prefer to use {@link PhysXComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n const wasm = this.engine.wasm;\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const ptr = wasm._wl_physx_component_get_extents(this._id);\n return new Float32Array(wasm.HEAPF32.buffer, ptr, 3);\n }\n\n /**\n * Get staticFriction.\n */\n @nativeProperty()\n get staticFriction(): number {\n return this.engine.wasm._wl_physx_component_get_staticFriction(this._id);\n }\n\n /**\n * Set staticFriction.\n * @param v New staticFriction.\n */\n set staticFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v);\n }\n\n /**\n * Get dynamicFriction.\n */\n @nativeProperty()\n get dynamicFriction(): number {\n return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id);\n }\n\n /**\n * Set dynamicFriction\n * @param v New dynamicDamping.\n */\n set dynamicFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v);\n }\n\n /**\n * Get bounciness.\n * @since 0.9.0\n */\n @nativeProperty()\n get bounciness(): number {\n return this.engine.wasm._wl_physx_component_get_bounciness(this._id);\n }\n\n /**\n * Set bounciness.\n * @param v New bounciness.\n * @since 0.9.0\n */\n set bounciness(v: number) {\n this.engine.wasm._wl_physx_component_set_bounciness(this._id, v);\n }\n\n /**\n * Get linearDamping/\n */\n @nativeProperty()\n get linearDamping(): number {\n return this.engine.wasm._wl_physx_component_get_linearDamping(this._id);\n }\n\n /**\n * Set linearDamping.\n * @param v New linearDamping.\n */\n set linearDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v);\n }\n\n /** Get angularDamping. */\n @nativeProperty()\n get angularDamping(): number {\n return this.engine.wasm._wl_physx_component_get_angularDamping(this._id);\n }\n\n /**\n * Set angularDamping.\n * @param v New angularDamping.\n */\n set angularDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v);\n }\n\n /**\n * Set linear velocity.\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New linear velocity.\n */\n set linearVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getLinearVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getLinearVelocity} for performance.\n */\n @nativeProperty()\n get linearVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set angular velocity\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New angular velocity\n */\n set angularVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_angularVelocity(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getAngularVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getAngularVelocity} for performance.\n */\n @nativeProperty()\n get angularVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set the components groups mask.\n *\n * @param flags New flags that need to be set.\n */\n set groupsMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags);\n }\n\n /**\n * Get the components groups mask flags.\n *\n * Each bit represents membership to group, see example.\n *\n * ```js\n * // Assign c to group 2\n * c.groupsMask = (1 << 2);\n *\n * // Assign c to group 0\n * c.groupsMask = (1 << 0);\n *\n * // Assign c to group 0 and 2\n * c.groupsMask = (1 << 0) | (1 << 2);\n *\n * (c.groupsMask & (1 << 2)) != 0; // true\n * (c.groupsMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get groupsMask(): number {\n return this.engine.wasm._wl_physx_component_get_groupsMask(this._id);\n }\n\n /**\n * Set the components blocks mask.\n *\n * @param flags New flags that need to be set.\n */\n set blocksMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags);\n }\n\n /**\n * Get the components blocks mask flags.\n *\n * Each bit represents membership to the block, see example.\n *\n * ```js\n * // Block overlap with any objects in group 2\n * c.blocksMask = (1 << 2);\n *\n * // Block overlap with any objects in group 0\n * c.blocksMask = (1 << 0)\n *\n * // Block overlap with any objects in group 0 and 2\n * c.blocksMask = (1 << 0) | (1 << 2);\n *\n * (c.blocksMask & (1 << 2)) != 0; // true\n * (c.blocksMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get blocksMask(): number {\n return this.engine.wasm._wl_physx_component_get_blocksMask(this._id);\n }\n\n /**\n * Set axes to lock for linear velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * Combine flags with Bitwise OR:\n *\n * ```js\n * body.linearLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.linearLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set linearLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock);\n }\n\n /**\n * Get the linear lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed.\n *\n * ```js\n * if(body.linearLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for linear movement.\n */\n @nativeProperty()\n get linearLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id);\n }\n\n /**\n * Set axes to lock for angular velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * ```js\n * body.angularLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.angularLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set angularLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock);\n }\n\n /**\n * Get the angular lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed:\n *\n * ```js\n * if(body.angularLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for angular movement.\n */\n @nativeProperty()\n get angularLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id);\n }\n\n /**\n * Set mass.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * @param m New mass.\n */\n set mass(m: number) {\n this.engine.wasm._wl_physx_component_set_mass(this._id, m);\n }\n\n /** Mass */\n @nativeProperty()\n get mass(): number {\n return this.engine.wasm._wl_physx_component_get_mass(this._id);\n }\n\n /**\n * Set mass space interia tensor.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New mass space interatia tensor.\n */\n set massSpaceInteriaTensor(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Set the rigid body to sleep upon activation.\n *\n * When asleep, the rigid body will not be simulated until the next contact.\n *\n * @param flag `true` to sleep upon activation.\n *\n * @since 1.1.5\n */\n set sleepOnActivate(flag: boolean) {\n this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag);\n }\n\n /**\n * `true` if the rigid body is set to sleep upon activation, `false` otherwise.\n *\n * @since 1.1.5\n */\n @nativeProperty()\n get sleepOnActivate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id);\n }\n\n /**\n * Apply a force.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n * @param localForce Whether the force vector is in local space, default `false`.\n * @param p Position to apply force at, default is center of mass.\n * @param local Whether position is in local space, default `false`.\n */\n addForce(\n f: Readonly,\n m: ForceMode = ForceMode.Force,\n localForce: boolean = false,\n p?: Readonly,\n local: boolean = false\n ) {\n const wasm = this.engine.wasm;\n if (!p) {\n wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce);\n return;\n }\n wasm._wl_physx_component_addForceAt(\n this._id,\n f[0],\n f[1],\n f[2],\n m,\n localForce,\n p[0],\n p[1],\n p[2],\n local\n );\n }\n\n /**\n * Apply torque.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n */\n addTorque(f: Readonly, m: ForceMode = ForceMode.Force) {\n this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m);\n }\n\n /**\n * Add on collision callback.\n *\n * @param callback Function to call when this rigid body (un)collides with any other.\n *\n * ```js\n * let rigidBody = this.object.getComponent('physx');\n * rigidBody.onCollision(function(type, other) {\n * // Ignore uncollides\n * if(type == CollisionEventType.TouchLost) return;\n *\n * // Take damage on collision with enemies\n * if(other.object.name.startsWith(\"enemy-\")) {\n * this.applyDamage(10);\n * }\n * }.bind(this));\n * ```\n *\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollision(callback: CollisionCallback): number {\n return this.onCollisionWith(this, callback);\n }\n\n /**\n * Add filtered on collision callback.\n *\n * @param otherComp Component for which callbacks will\n * be triggered. If you pass this component, the method is equivalent to.\n * {@link PhysXComponent#onCollision}.\n * @param callback Function to call when this rigid body\n * (un)collides with `otherComp`.\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollisionWith(otherComp: this, callback: CollisionCallback): number {\n const callbacks = this.scene._pxCallbacks;\n if (!callbacks.has(this._id)) {\n callbacks.set(this._id, []);\n }\n callbacks.get(this._id)!.push(callback);\n return this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id);\n }\n\n /**\n * Remove a collision callback added with {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n *\n * @param callbackId Callback id as returned by {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n * @throws When the callback does not belong to the component.\n * @throws When the callback does not exist.\n */\n removeCollisionCallback(callbackId: number): void {\n const r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId);\n const callbacks = this.scene._pxCallbacks;\n /* r is the amount of object to remove from the end of the\n * callbacks array for this object */\n if (r) callbacks.get(this._id)!.splice(-r);\n }\n}\n\n/**\n * Access to the physics scene\n */\nexport class Physics {\n /**\n * Hit.\n * @hidden\n */\n _hit: RayHit;\n\n /**\n * Wonderland Engine instance\n * @hidden\n */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * Ray Hit\n * @hidden\n */\n private _rayHit: number;\n\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n const wasm = engine.wasm;\n this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(engine.scene, this._rayHit);\n\n /* Setup the physics callback. */\n wasm._wl_physx_set_collision_callback(\n wasm.addFunction((a: number, index: number, type: number, b: number) => {\n const physxA = this._engine.scene._components.wrapPhysx(a)!;\n const physxB = this._engine.scene._components.wrapPhysx(b)!;\n /* We assume that the map returns an array. If not,\n * this is an internal engine error. */\n const callbacks = this._engine.scene._pxCallbacks.get(physxA._id)!;\n const callback = callbacks[index];\n callback(type, physxB as PhysXComponent);\n }, 'viiii')\n );\n }\n\n /**\n * Cast a ray through the scene and find intersecting physics components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.physics.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against physics components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of physics groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Physics}\n * instance and will be reused with the next {@link Physics#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance: number = 100.0\n ): RayHit {\n const scene = this._engine.scene._index;\n this._engine.wasm._wl_physx_ray_cast(\n scene,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n maxDistance,\n this._rayHit\n );\n return this._hit;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Mesh index type.\n */\nexport enum MeshIndexType {\n /** Single byte mesh index, range 0-255 */\n UnsignedByte = 1,\n\n /** Two byte mesh index, range 0-65535 */\n UnsignedShort = 2,\n\n /** Four byte mesh index, range 0-4294967295 */\n UnsignedInt = 4,\n}\n\n/**\n * Mesh skinning type.\n */\nexport enum MeshSkinningType {\n /** Not skinned */\n None = 0,\n\n /** Skinned, 4 joints/weight per vertex */\n FourJoints = 1,\n\n /** Skinned, 8 joints/weight per vertex */\n EightJoints = 2,\n}\n\n/**\n * Mesh constructor parameters object.\n *\n * Usage:\n *\n * ```js\n * const mesh = Mesh({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n */\nexport interface MeshParameters {\n /** Number of vertices to allocate. */\n vertexCount: number;\n /** Index data values. */\n indexData: Readonly;\n /** Index type, `null` if not indexed. */\n indexType: MeshIndexType;\n /** Whether the mesh should be skinned. Defaults to not skinned. */\n skinningType: MeshSkinningType;\n}\n\n/**\n * Wrapper around a native mesh data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link MeshManager} class.\n *\n * #### Update\n *\n * To modify a mesh, you get access to a {@link MeshAttributeAccessor} that\n * allows you to modify the content of the buffers:\n *\n * Usage:\n *\n * ```js\n * const mesh = engine.es.create({vertexCount: 3, indexData: [0, 1, 2]});\n * const positions = mesh.attribute(MeshAttribute.Position);\n * ...\n * ```\n *\n * @note Meshes are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Mesh extends Resource {\n /**\n * @deprecated Use {@link MeshManager.create} instead, accessible via {@link WonderlandEngine.meshes}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ...\n * mesh.update();\n * ```\n */\n constructor(engine: WonderlandEngine, params: Partial | number) {\n if (!isNumber(params)) {\n const mesh = engine.meshes.create(params);\n /* `super()` must be called as stated in the specification */\n super(engine, mesh._index);\n return mesh;\n }\n super(engine, params);\n }\n\n /** Number of vertices in this mesh. */\n get vertexCount(): number {\n return this.engine.wasm._wl_mesh_get_vertexCount(this._id);\n }\n\n /** Index data (read-only) or `null` if the mesh is not indexed. */\n get indexData(): Uint8Array | Uint16Array | Uint32Array | null {\n const wasm = this.engine.wasm;\n const tempMem = wasm._tempMem;\n const ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4);\n if (ptr === null) return null;\n\n const indexCount = wasm.HEAPU32[tempMem / 4];\n const indexSize = wasm.HEAPU32[tempMem / 4 + 1];\n switch (indexSize) {\n case MeshIndexType.UnsignedByte:\n return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedShort:\n return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedInt:\n return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount);\n }\n return null;\n }\n\n /**\n * Apply changes to {@link attribute | vertex attributes}.\n *\n * Uploads the updated vertex attributes to the GPU and updates the bounding\n * sphere to match the new vertex positions.\n *\n * Since this is an expensive operation, call it only once you have performed\n * all modifications on a mesh and avoid calling if you did not perform any\n * modifications at all.\n */\n update() {\n this.engine.wasm._wl_mesh_update(this._id);\n }\n\n /** @overload */\n getBoundingSphere(): Float32Array;\n /** @overload */\n getBoundingSphere(out: T): T;\n /**\n * Mesh bounding sphere.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * ```js\n * const sphere = new Float32Array(4);\n * for(...) {\n * mesh.getBoundingSphere(sphere);\n * ...\n * }\n * ```\n *\n * If the position data is changed, call {@link Mesh#update} to update the\n * bounding sphere.\n *\n * @returns Bounding sphere, 0-2 sphere origin, 3 radius.\n */\n getBoundingSphere(out: T | Float32Array): T | Float32Array;\n getBoundingSphere(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n attribute(\n attr: MeshAttribute.Position\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Tangent\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Normal\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.TextureCoordinate\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Color\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointId\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointWeight\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.SecondaryTextureCoordinate\n ): MeshAttributeAccessor | null;\n /**\n * Get an attribute accessor to retrieve or modify data of give attribute.\n *\n * @param attr Attribute to get access to\n * @returns Attribute to get access to or `null`, if mesh does not have this attribute.\n *\n * Call {@link update} for changes to vertex attributes to take effect.\n *\n * If there are no shaders in the scene that use `TextureCoordinate` for example,\n * no meshes will have the `TextureCoordinate` attribute.\n *\n * For flexible reusable components, take this into account that only `Position`\n * is guaranteed to be present at all time.\n */\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null;\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null {\n if (typeof attr != 'number')\n throw new TypeError('Expected number, but got ' + typeof attr);\n\n const wasm = this.engine.wasm;\n const tempMemUint32 = wasm._tempMemUint32;\n wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem);\n if (tempMemUint32[0] == 255) return null;\n\n const arraySize = tempMemUint32[5];\n return new MeshAttributeAccessor(this.engine, {\n attribute: tempMemUint32[0],\n offset: tempMemUint32[1],\n stride: tempMemUint32[2],\n formatSize: tempMemUint32[3],\n componentCount: tempMemUint32[4],\n /* The WASM API returns `0` for a scalar value. We clamp it to 1 as we strictly use it as a multiplier for get/set operations */\n arraySize: arraySize ? arraySize : 1,\n length: this.vertexCount,\n bufferType: (attr !== MeshAttribute.JointId\n ? Float32Array\n : Uint16Array) as TypedArrayCtor,\n });\n }\n\n /**\n * Destroy and free the meshes memory.\n *\n * It is best practice to set the mesh variable to `null` after calling\n * destroy to prevent accidental use:\n *\n * ```js\n * mesh.destroy();\n * mesh = null;\n * ```\n *\n * Accessing the mesh after destruction behaves like accessing an empty\n * mesh.\n *\n * @since 0.9.0\n */\n destroy(): void {\n this.engine.wasm._wl_mesh_destroy(this._id);\n this.engine.meshes._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Mesh(destroyed)';\n }\n return `Mesh(${this._index})`;\n }\n}\n\n/**\n * Options to create a new {@link MeshAttributeAccessor} instance.\n */\ninterface MeshAttributeAccessorOptions {\n attribute: number;\n offset: number;\n stride: number;\n formatSize: number;\n componentCount: number;\n arraySize: number;\n length: number;\n bufferType: T;\n}\n\n/**\n * An iterator over a mesh vertex attribute.\n *\n * Usage:\n *\n * ```js\n * const mesh = this.object.getComponent('mesh').mesh;\n * const positions = mesh.attribute(MeshAttribute.Position);\n *\n * // Equivalent to `new Float32Array(3)`.\n * const temp = positions.createArray();\n *\n * for(let i = 0; i < positions.length; ++i) {\n * // `pos` will reference `temp` and thereby not allocate additional\n * // memory, which would cause a perf spike when collected.\n * const pos = positions.get(i, temp);\n * // Scale position by 2 on x-axis only.\n * pos[0] *= 2.0;\n * positions.set(i, pos);\n * }\n * // We're done modifying, tell the engine to move vertex data to the GPU.\n * mesh.update();\n * ```\n */\nexport class MeshAttributeAccessor {\n /** Max number of elements. */\n readonly length: number = 0;\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Attribute index. @hidden */\n private _attribute: number = -1;\n /** Attribute offset. @hidden */\n private _offset: number = 0;\n /** Attribute stride. @hidden */\n private _stride: number = 0;\n /** Format size native enum. @hidden */\n private _formatSize: number = 0;\n /** Number of components per vertex. @hidden */\n private _componentCount: number = 0;\n /** Number of values per vertex. @hidden */\n private _arraySize: number = 1;\n\n /**\n * Class to instantiate an ArrayBuffer to get/set values.\n */\n private _bufferType: T;\n /**\n * Function to allocate temporary WASM memory. It is cached in the accessor to avoid\n * conditionals during get/set.\n */\n private _tempBufferGetter: (bytes: number) => TypedArray;\n\n /**\n * Create a new instance.\n *\n * @note Please use {@link Mesh.attribute} to create a new instance.\n *\n * @param options Contains information about how to read the data.\n * @note Do not use this constructor. Instead, please use the {@link Mesh.attribute} method.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, options: MeshAttributeAccessorOptions) {\n this._engine = engine;\n\n this._attribute = options.attribute;\n this._offset = options.offset;\n this._stride = options.stride;\n this._formatSize = options.formatSize;\n this._componentCount = options.componentCount;\n this._arraySize = options.arraySize;\n this._bufferType = options.bufferType;\n this.length = options.length;\n\n const wasm = this._engine.wasm;\n this._tempBufferGetter = (\n this._bufferType === Float32Array\n ? wasm.getTempBufferF32.bind(wasm)\n : wasm.getTempBufferU16.bind(wasm)\n ) as () => TypedArray;\n }\n\n /**\n * Create a new TypedArray to hold this attribute's values.\n *\n * This method is useful to create a view to hold the data to\n * pass to {@link get} and {@link set}\n *\n * Example:\n *\n * ```js\n * const vertexCount = 4;\n * const positionAttribute = mesh.attribute(MeshAttribute.Position);\n *\n * // A position has 3 floats per vertex. Thus, positions has length 3 * 4.\n * const positions = positionAttribute.createArray(vertexCount);\n * ```\n *\n * @param count The number of **vertices** expected.\n * @returns A TypedArray with the appropriate format to access the data\n */\n createArray(count = 1): TypedArray {\n count = count > this.length ? this.length : count;\n return new this._bufferType(\n count * this._componentCount * this._arraySize\n ) as TypedArray;\n }\n\n /** @overload */\n get(index: number): TypedArray;\n /**\n * Get attribute element.\n *\n * @param index Index\n * @param out Preallocated array to write into,\n * to avoid garbage, otherwise will allocate a new TypedArray.\n *\n * `out.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `out.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns The `out` parameter\n */\n get(index: number, out: T): T;\n get(index: number, out: NumberArray = this.createArray()): NumberArray {\n if (out.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(out.length, componentCount * this.length);\n\n const dest = this._tempBufferGetter(len);\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const destSize = elementSize * len;\n const srcFormatSize = this._formatSize * this._arraySize;\n const destFormatSize = this._componentCount * elementSize * this._arraySize;\n\n this.engine.wasm._wl_mesh_get_attribute_values(\n this._attribute,\n srcFormatSize,\n this._offset + index * this._stride,\n this._stride,\n destFormatSize,\n dest.byteOffset,\n destSize\n );\n\n for (let i = 0; i < len; ++i) out[i] = dest[i];\n return out;\n }\n\n /**\n * Set attribute element.\n *\n * @param i Index\n * @param v Value to set the element to\n *\n * `v.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `v.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns Reference to self (for method chaining)\n */\n set(i: number, v: Readonly) {\n if (v.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(v.length, componentCount * this.length);\n\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const srcSize = elementSize * len;\n const srcFormatSize = componentCount * elementSize;\n const destFormatSize = this._formatSize * this._arraySize;\n\n const wasm = this.engine.wasm;\n\n /* Unless we are already working with data from WASM heap, we\n * need to copy into temporary memory. */\n if ((v as Float32Array).buffer != wasm.HEAPU8.buffer) {\n const dest = this._tempBufferGetter(len);\n dest.set(v);\n v = dest;\n }\n\n wasm._wl_mesh_set_attribute_values(\n this._attribute,\n srcFormatSize,\n (v as Float32Array).byteOffset,\n srcSize,\n destFormatSize,\n this._offset + i * this._stride,\n this._stride\n );\n\n return this;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Wrapper around a native font resource.\n *\n * @note Fonts are **per-engine**, they can thus be shared by multiple scenes.\n *\n * @since 1.2.0\n */\nexport class Font extends Resource {\n /** Em height in object space. Equivalent to line height. */\n get emHeight(): number {\n return this.engine.wasm._wl_font_get_emHeight(this._id);\n }\n\n /**\n * Cap height in object space. This is the typical height of capital\n * letters. Can be 0 if not defined by the font.\n */\n get capHeight(): number {\n return this.engine.wasm._wl_font_get_capHeight(this._id);\n }\n\n /**\n * X height in object space. This is the typical height of lowercase\n * letters. Can be 0 if not defined by the font.\n */\n get xHeight(): number {\n return this.engine.wasm._wl_font_get_xHeight(this._id);\n }\n\n /**\n * Outline size. This is the factor by which characters are expanded to\n * create the outline effect. Returns 0 if the font was compiled without\n * an outline.\n *\n * @since 1.2.1\n */\n get outlineSize(): number {\n return this.engine.wasm._wl_font_get_outlineSize(this._id);\n }\n}\n\n/**\n * Wrapper around a native particle effect resource.\n *\n * @note Particle effects are **per-engine**, they can thus be shared by\n * multiple scenes.\n *\n * @since 1.4.0\n */\nexport class ParticleEffect extends Resource {\n /**\n * Create a copy of the underlying native particle effect.\n *\n * @returns Particle effect clone.\n */\n clone(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_clone(this._id);\n return this.engine.particleEffects.wrap(index);\n }\n}\n\n/** Temporary canvas */\nlet temp2d: {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} | null = null;\n\n/**\n * Wrapper around a native texture data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link TextureManager} class.\n *\n * @note Textures are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Texture extends Resource {\n /**\n * @deprecated Use {@link TextureManager.create} instead, accessible via\n * {@link WonderlandEngine.textures}:\n *\n * ```js\n * const image = new Image();\n * image.onload = () => {\n * const texture = engine.textures.create(image);\n * };\n * ```\n */\n constructor(engine: WonderlandEngine, param: ImageLike | number) {\n if (isImageLike(param)) {\n const texture = engine.textures.create(param);\n /* `super()` must be called as stated in the specification */\n super(engine, texture._index);\n return texture;\n }\n super(engine, param);\n }\n\n /** Whether this texture is valid. */\n get valid(): boolean {\n return !this.isDestroyed && this.width !== 0 && this.height !== 0;\n }\n\n /**\n * Index in this manager.\n *\n * @deprecated Use {@link Texture.index} instead.\n */\n get id(): number {\n return this.index;\n }\n\n /** Update the texture to match the HTML element (e.g. reflect the current frame of a video). */\n update() {\n const image = this._imageIndex;\n if (!this.valid || !image) return;\n\n this.engine.wasm._wl_image_markDirty(image);\n }\n\n /**\n * Width of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the width used at creation.\n * If the actual element's width changed, it must be read from the element itself.\n */\n get width(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoWidth ?? element.width;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[0];\n }\n\n /**\n * Height of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the height used at creation.\n * If the actual element's height changed, it must be read from the element itself.\n */\n get height(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoHeight ?? element.height;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[1];\n }\n\n /**\n * Returns the html element associated to this texture.\n *\n * @note This accessor will return `null` if the image is compressed.\n */\n get htmlElement(): ImageLike | null {\n const image = this._imageIndex;\n if (!image) return null;\n\n const wasm = this.engine.wasm;\n const jsImageIndex = wasm._wl_image_get_jsImage_index(image);\n\n /* Since the first element is `null`, no need to check for `jsImageIndex` */\n return wasm._images[jsImageIndex];\n }\n\n /**\n * Upload content to the texture to the GPU.\n *\n * Usage:\n *\n * ```js\n * // Size 128x64\n * const image = new Image();\n * texture.updateSubImage(28, 4, 100, 60, 0, 0, image);\n * ```\n *\n * @note The source is cropped if the destination offset and source dimensions\n * are out-of-bounds regarding the texture size.\n *\n * @note Uploading a texture without a source offset is significantly faster.\n *\n * #### ImageBitmap\n *\n * If you need to upload a subregion, it's recommended to use:\n *\n * ```js\n * createImageBitmap(image, sourceX, sourceY, sourceWidth, sourceHeight).then(bitmap => {\n * const destinationX = sourceX;\n * const destinationY = sourceY;\n * texture.updateSubImage(0, 0, sourceWidth, sourceHeight, destinationX, destinationY, bitmap);\n * });\n * ```\n *\n * You could use this method with a `src` offset, but the synchronous implementation\n * uses a temporary 2d canvas, negatively affecting performance for large content.\n *\n * @param srcX Horizontal pixel offset, in the source image.\n * @param srcY Vertical pixel offset, in the source image.\n * @param srcWidth Width of the sub image, in the source image.\n * @param srcHeight Height of the sub image, in the source image\n * @param dstX Horizontal pixel offset, in the destination image.\n * Defaults to `srcX` for backward compatibility with older API versions.\n * @param dstY Vertical pixel offset, in the destination image.\n * Defaults to `srcY` for backward compatibility with older API versions.\n * @param content `Image`, `HTMLCanvasElement`, `HTMLVideoElement`, or `ImageBitmap` to upload.\n * @returns `true` if the update went through, `false` otherwise.\n */\n updateSubImage(\n srcX: number,\n srcY: number,\n srcWidth: number,\n srcHeight: number,\n dstX: number = srcX,\n dstY: number = srcY,\n content?: ImageLike\n ): boolean {\n if (this.isDestroyed) return false;\n\n const image = this._imageIndex;\n if (!image) return false;\n\n let img = content ?? this.htmlElement;\n if (!img) return false;\n\n const isImageBitmap = img instanceof ImageBitmap;\n /* ImageBitmap can't be flipped upon upload to the GPU.\n * Thus, we need to skip flipping the temporary canvas to keep the same behavior\n * when uploading an ImageBitmap and uploading a blitted ImageBitmap. */\n const flipY = !isImageBitmap;\n\n if (srcX || srcY) {\n /* Lazy initialize temp canvas */\n if (!temp2d) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n 'Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D.'\n );\n }\n temp2d = {canvas, ctx};\n }\n temp2d.canvas.width = srcWidth;\n temp2d.canvas.height = srcHeight;\n\n temp2d.ctx.drawImage(\n img,\n srcX,\n isImageBitmap ? img.height - srcY - srcHeight : srcY,\n srcWidth,\n srcHeight,\n 0,\n 0,\n srcWidth,\n srcHeight\n );\n img = temp2d.canvas;\n }\n\n const wasm = this.engine.wasm;\n wasm._images[0] = img;\n\n /* Clamp the width/height to avoid a GL upload error */\n const width = srcWidth - Math.max(srcWidth + dstX - this.width, 0);\n const height = srcHeight - Math.max(srcHeight + dstY - this.height, 0);\n const dstReversedY = this.height - dstY - height;\n\n const ret = wasm._wl_renderer_updateImage(\n image,\n 0,\n width,\n height,\n dstX,\n dstReversedY,\n flipY\n );\n wasm._images[0] = null;\n\n return !!ret;\n }\n\n /**\n * Destroy and free the texture's texture altas space and memory.\n *\n * It is best practice to set the texture variable to `null` after calling\n * destroy to prevent accidental use of the invalid texture:\n *\n * ```js\n * texture.destroy();\n * texture = null;\n * ```\n *\n * @since 0.9.0\n */\n destroy(): void {\n const wasm = this.engine.wasm;\n\n const img = wasm._images[this._imageIndex];\n if (img instanceof ImageBitmap) img.close();\n\n wasm._wl_texture_destroy(this._id);\n this.engine.textures._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Texture(destroyed)';\n }\n return `Texture(${this._index})`;\n }\n\n private get _imageIndex() {\n return this.engine.wasm._wl_texture_get_image_index(this._id);\n }\n}\n\n/**\n * Wrapper around a native animation.\n */\nexport class Animation extends SceneResource {\n /**\n * @param index Index in the manager\n */\n constructor(host: WonderlandEngine | Prefab = WL, index: number) {\n const scene = host instanceof Prefab ? host : host.scene;\n super(scene as Prefab, index);\n }\n\n /** Duration of this animation. */\n get duration(): number {\n return this.engine.wasm._wl_animation_get_duration(this._id);\n }\n\n /** Number of tracks in this animation. */\n get trackCount(): number {\n return this.engine.wasm._wl_animation_get_trackCount(this._id);\n }\n\n /**\n * Clone this animation retargeted to a new set of objects.\n *\n * The clone shares most of the data with the original and is therefore\n * light-weight.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * If retargeting to {@link Skin}, the join names will be used to determine a mapping\n * from the previous skin to the new skin. The source skin will be retrieved from\n * the first track in the animation that targets a joint.\n *\n * @param newTargets New targets per track. Expected to have\n * {@link Animation#trackCount} elements or to be a {@link Skin}.\n * @returns The retargeted clone of this animation.\n */\n retarget(newTargets: Object3D[] | Skin): Animation {\n const wasm = this.engine.wasm;\n if (newTargets instanceof Skin) {\n const index = wasm._wl_animation_retargetToSkin(this._id, newTargets._id);\n return this._scene.animations.wrap(index)!;\n }\n\n if (newTargets.length != this.trackCount) {\n throw Error(\n 'Expected ' +\n this.trackCount.toString() +\n ' targets, but got ' +\n newTargets.length.toString()\n );\n }\n const ptr = wasm._malloc(2 * newTargets.length);\n for (let i = 0; i < newTargets.length; ++i) {\n const object3d = newTargets[i];\n this.scene.assertOrigin(object3d);\n /* Use local id here and **not** packed id, because the WASM\n * takes ownership and reinterprets the ids. */\n wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId;\n }\n const index = wasm._wl_animation_retarget(this._id, ptr);\n wasm._free(ptr);\n\n return this._scene.animations.wrap(index)!;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Animation(destroyed)';\n }\n return `Animation(${this._index})`;\n }\n}\n\n/**\n * Scene graph object.\n *\n * Node in the scene graph or \"entity\". Consists of transformation and a reference\n * to its parent object. Usually holds components and is accessible by components\n * through {@link Component#object}.\n *\n * Objects are stored in a data oriented manner inside WebAssembly memory. This class\n * is a JavaScript API wrapper around this memory for more convenient use in\n * components.\n *\n * Objects can be created and added to a scene through {@link Prefab.addObject}:\n *\n * ```js\n * const parent = scene.addObject();\n * parent.name = 'parent`';\n * const child = scene.addObject(parent);\n * child.name = 'child`';\n * ```\n */\nexport class Object3D {\n /**\n * Packed object id, containing scene index and local id.\n *\n * @hidden\n */\n readonly _id: number = -1;\n /** Object id, relative to the scene manager. @hidden */\n readonly _localId: number = -1;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * @param o Object id to wrap.\n *\n * @deprecated Objects must be obtained via {@link Scene.addObject} or {@link Scene.wrap}:\n *\n * ```js\n * // Create a new object.\n * const obj = scene.addObject();\n *\n * // Wrap an object using its id. The id must be valid.\n * const obj = scene.wrap(0);\n * ```\n *\n * @hidden\n */\n constructor(scene: WonderlandEngine | Prefab, id: number) {\n scene = scene instanceof Prefab ? scene : scene.scene;\n this._localId = id;\n this._id = (scene._index << 22) | id;\n this._scene = scene;\n /** @todo: Remove and only keep getter. */\n this._engine = scene.engine;\n }\n\n /**\n * Name of the object.\n *\n * Useful for identifying objects during debugging.\n */\n get name(): string {\n const wasm = this._engine.wasm;\n return wasm.UTF8ToString(wasm._wl_object_name(this._id));\n }\n\n /**\n * Set the object's name.\n *\n * @param newName The new name to set.\n */\n set name(newName: string) {\n const wasm = this._engine.wasm;\n wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName));\n }\n\n /**\n * Parent of this object or `null` if parented to root.\n */\n get parent(): Object3D | null {\n const p = this._engine.wasm._wl_object_parent(this._id);\n return p === 0 ? null : this._scene.wrap(p);\n }\n\n /**\n * Equivalent to {@link Object3D.getChildren}.\n *\n * @note Prefer to use {@link Object3D.getChildren} for performance.\n */\n get children(): Object3D[] {\n return this.getChildren();\n }\n\n /** The number of children of this object. */\n get childrenCount(): number {\n return this._engine.wasm._wl_object_get_children_count(this._id);\n }\n\n /**\n * Reparent object to given object.\n *\n * @note Reparenting is not trivial and might have a noticeable performance impact.\n *\n * @param newParent New parent or `null` to parent to root\n */\n set parent(newParent: Object3D | undefined | null) {\n if (this.markedDestroyed) {\n const strThis = this.toString();\n const strParent = newParent ? newParent : 'root';\n throw new Error(\n `Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`\n );\n } else if (newParent?.markedDestroyed) {\n const strParent = newParent.toString();\n throw new Error(\n `Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`\n );\n }\n this.scene.assertOrigin(newParent);\n this._engine.wasm._wl_object_set_parent(\n this._id,\n newParent == null ? 0 : newParent._id\n );\n }\n\n /** Local object id in the scene manager. */\n get objectId() {\n return this._localId;\n }\n\n /** Scene instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Add an object as a child of this instance.\n *\n * @returns A newly created object.\n */\n addChild(): Object3D {\n const objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id);\n const obj = this.scene.wrap(objectId);\n return obj;\n }\n\n /**\n * Clone this hierarchy into a new one.\n *\n * Cloning copies the hierarchy structure, object names,\n * as well as components.\n *\n * JavaScript components are cloned using {@link Component.copy}. You can\n * override this method in your components.\n *\n * @param parent The parent for the cloned hierarchy or `null` to clone\n * into the scene root. Defaults to `null`.\n *\n * @returns The clone of this object.\n */\n clone(parent: Object3D | null = null): Object3D {\n this.scene.assertOrigin(parent);\n const engine = this._engine;\n const id = engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0);\n return this._scene.wrap(id);\n }\n\n /**\n * Children of this object.\n *\n * @note Child order is **undefined**. No assumptions should be made\n * about the index of a specific object.\n *\n * If you need to access a specific child of this object, you can\n * use {@link Object3D.findByName}.\n *\n * When the object exists in the scene at editor time, prefer passing it as\n * a component property.\n *\n * @note When providing an output array, only `this.childrenCount` elements will be written.\n * The rest of the array will not be modified by this method.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const childrenCount = this.childrenCount;\n if (childrenCount === 0) return out;\n\n const wasm = this._engine.wasm;\n wasm.requireTempMem(childrenCount * 2);\n\n this._engine.wasm._wl_object_get_children(\n this._id,\n wasm._tempMem,\n wasm._tempMemSize >> 1\n );\n\n for (let i = 0; i < childrenCount; ++i) {\n out[i] = this._scene.wrap(wasm._tempMemUint16[i]);\n }\n return out;\n }\n\n /**\n * Reset local transformation (translation, rotation and scaling) to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetTransform(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /**\n * Reset local position and rotation to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPositionRotation(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPositionRotation} instead. */\n resetTranslationRotation(): this {\n return this.resetPositionRotation();\n }\n\n /**\n * Reset local rotation, keep translation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetRotation(): this {\n this._engine.wasm._wl_object_reset_rotation(this._id);\n return this;\n }\n\n /**\n * Reset local translation, keep rotation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPosition(): this {\n this._engine.wasm._wl_object_reset_translation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPosition} instead. */\n resetTranslation(): this {\n return this.resetPosition();\n }\n\n /**\n * Reset local scaling to identity (``[1.0, 1.0, 1.0]``).\n *\n * @returns Reference to self (for method chaining).\n */\n resetScaling(): this {\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.translateLocal} instead. */\n translate(v: Readonly): this {\n return this.translateLocal(v);\n }\n\n /**\n * Translate object by a vector in the parent's space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateLocal(v: Readonly): this {\n this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in object space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateObject(v: Readonly): this {\n this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in world space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateWorld(v: Readonly): this {\n this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleDegLocal} instead. */\n rotateAxisAngleDeg(a: Readonly, d: number): this {\n this.rotateAxisAngleDegLocal(a, d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleRad}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleRadLocal} instead. */\n rotateAxisAngleRad(a: Readonly, d: number): this {\n return this.rotateAxisAngleRadLocal(a, d);\n }\n\n /**\n * Rotate around given axis by given angle (radians) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in radians.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleDeg}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in object space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @see {@link rotateAxisAngleRadObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (radians) in object space\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param a Vector representing the rotation axis\n * @param d Angle in degrees\n *\n * @see {@link rotateAxisAngleDegObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(\n this._id,\n a[0],\n a[1],\n a[2],\n d\n );\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateLocal} instead. */\n rotate(q: Readonly): this {\n this.rotateLocal(q);\n return this;\n }\n\n /**\n * Rotate by a quaternion.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateLocal(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /**\n * Rotate by a quaternion in object space.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateObject(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.scaleLocal} instead. */\n scale(v: Readonly): this {\n this.scaleLocal(v);\n return this;\n }\n\n /**\n * Scale object by a vector in object space.\n *\n * @param v Vector to scale by.\n *\n * @returns Reference to self (for method chaining).\n */\n scaleLocal(v: Readonly): this {\n this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getPositionLocal(): Float32Array;\n /**\n * Compute local / object space position from transformation.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getPositionLocal(out: T): T;\n getPositionLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_local(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationLocal(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionLocal} instead. */\n getTranslationLocal(out: T): T;\n getTranslationLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionLocal(out);\n }\n\n /** @overload */\n getPositionWorld(): Float32Array;\n /**\n * Compute world space position from transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getPositionWorld(out: T): T;\n getPositionWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_world(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationWorld(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionWorld} instead. */\n getTranslationWorld(out: T): T;\n getTranslationWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionWorld(out);\n }\n\n /**\n * Set local / object space position.\n *\n * Concatenates a new translation dual quaternion onto the existing rotation.\n *\n * @param v New local position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionLocal} instead. */\n setTranslationLocal(v: Readonly): this {\n return this.setPositionLocal(v);\n }\n\n /**\n * Set world space position.\n *\n * Applies the inverse parent transform with a new translation dual quaternion\n * which is concatenated onto the existing rotation.\n *\n * @param v New world position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionWorld} instead. */\n setTranslationWorld(v: Readonly): this {\n return this.setPositionWorld(v);\n }\n\n /** @overload */\n getScalingLocal(): Float32Array;\n /**\n * Local / object space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingLocal(out: T): T;\n getScalingLocal(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set local / object space scaling.\n *\n * @param v New local scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getScalingWorld(): Float32Array;\n /**\n * World space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingWorld(out: T): T;\n getScalingWorld(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set World space scaling.\n *\n * @param v New world scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getRotationLocal(): Float32Array;\n /**\n * Local space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationLocal(out: T): T;\n getRotationLocal(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getRotationWorld(): Float32Array;\n /**\n * World space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationWorld(out: T): T;\n getRotationWorld(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getTransformLocal(): Float32Array;\n /**\n * Local space transformation.\n *\n * @param out Destination array/vector, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformLocal(out: T): T;\n getTransformLocal(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New local transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformLocal(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this.setDirty();\n return this;\n }\n\n /** @overload */\n getTransformWorld(): Float32Array;\n /**\n * World space transformation.\n *\n * @param out Destination array, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformWorld(out: T): T;\n getTransformWorld(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set world space rotation.\n *\n * @param v New world transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformWorld(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n return this;\n }\n\n /**\n * Local space transformation.\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n get transformLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_local(this._id),\n 8\n );\n }\n\n /**\n * Set local transform.\n *\n * @param t Local space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n set transformLocal(t: Readonly) {\n this.transformLocal.set(t);\n this.setDirty();\n }\n\n /**\n * Global / world space transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n get transformWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_world(this._id),\n 8\n );\n }\n\n /**\n * Set world transform.\n *\n * @param t Global / world space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n set transformWorld(t: Readonly) {\n this.transformWorld.set(t);\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n }\n\n /**\n * Local / object space scaling.\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n get scalingLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_local(this._id),\n 3\n );\n }\n\n /**\n * Set local space scaling.\n *\n * @param s Local space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n set scalingLocal(s: Readonly) {\n this.scalingLocal.set(s);\n this.setDirty();\n }\n\n /**\n * Global / world space scaling.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n get scalingWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_world(this._id),\n 3\n );\n }\n\n /**\n * Set world space scaling.\n *\n * @param t World space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n set scalingWorld(s: Readonly) {\n this.scalingWorld.set(s);\n this._engine.wasm._wl_object_scaling_world_to_local(this._id);\n }\n\n /**\n * Local space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n get rotationLocal(): Float32Array {\n return this.transformLocal.subarray(0, 4);\n }\n\n /**\n * Global / world space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n get rotationWorld(): Float32Array {\n return this.transformWorld.subarray(0, 4);\n }\n\n /**\n * Set local space rotation.\n *\n * @param r Local space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n set rotationLocal(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /**\n * Set world space rotation.\n *\n * @param r Global / world space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n set rotationWorld(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /** @deprecated Please use {@link Object3D.getForwardWorld} instead. */\n getForward(out: T): T {\n return this.getForwardWorld(out);\n }\n\n /**\n * Compute the object's forward facing world space vector.\n *\n * The forward vector in object space is along the negative z-axis, i.e.,\n * `[0, 0, -1]`.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getForwardWorld(out: T): T {\n out[0] = 0;\n out[1] = 0;\n out[2] = -1;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getUpWorld} instead. */\n getUp(out: T): T {\n return this.getUpWorld(out);\n }\n\n /**\n * Compute the object's up facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getUpWorld(out: T): T {\n out[0] = 0;\n out[1] = 1;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getRightWorld} instead. */\n getRight(out: T): T {\n return this.getRightWorld(out);\n }\n\n /**\n * Compute the object's right facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getRightWorld(out: T): T {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /**\n * Transform a vector by this object's world transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a vector by this object's local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a point by this object's world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse world transform.\n *\n * @param out Out vector.\n * @param v Vector to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(p);\n wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform an object space dual quaternion into world space.\n *\n * @param out Out transformation.\n * @param q Local space transformation, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toWorldSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into local space.\n *\n * @param out Out transformation\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toLocalSpaceTransform(out: T, q: NumberArray = out): T {\n const p = this.parent;\n if (p) {\n p.toObjectSpaceTransform(out, q);\n return out;\n }\n if (out !== q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = q[4];\n out[5] = q[5];\n out[6] = q[6];\n out[7] = q[7];\n }\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into object space.\n *\n * @param out Out transformation.\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toObjectSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Turn towards / look at target.\n *\n * Rotates the object so that its forward vector faces towards the target\n * position. The `up` vector acts as a hint to uniquely orient the object's\n * up direction. When orienting a view component, the projected `up` vector\n * faces upwards on the viewing plane.\n *\n * @param p Target position to turn towards, in world space.\n * @param up Up vector to align object with, in world space. Default is `[0, 1, 0]`.\n *\n * @returns Reference to self (for method chaining).\n */\n lookAt(p: NumberArray, up: NumberArray = UP_VECTOR): this {\n this._engine.wasm._wl_object_lookAt(\n this._id,\n p[0],\n p[1],\n p[2],\n up[0],\n up[1],\n up[2]\n );\n return this;\n }\n\n /** Destroy the object with all of its components and remove it from the scene */\n destroy(): void {\n if (this._id < 0) return;\n /* This will automatically call `scene._destroyObject` */\n this.engine.wasm._wl_object_remove(this._id);\n }\n\n /**\n * Mark transformation dirty.\n *\n * Causes an eventual recalculation of {@link transformWorld}, either\n * on next {@link getTranslationWorld}, {@link transformWorld} or\n * {@link scalingWorld} or the beginning of next frame, whichever\n * happens first.\n */\n setDirty(): void {\n this._engine.wasm._wl_object_set_dirty(this._id);\n }\n\n /**\n * Disable/enable all components of this object.\n *\n * @param b New state for the components.\n *\n * @since 0.8.5\n */\n set active(b: boolean) {\n const comps = this.getComponents();\n for (let c of comps) {\n c.active = b;\n }\n }\n\n /* `getComponent` overloads for native components. */\n\n /** @overload */\n getComponent(\n type: K,\n index?: number\n ): NativeComponents[K] | null;\n /** @overload */\n getComponent(typeOrClass: string, index?: number): Component | null;\n /**\n * Get a component attached to this object.\n *\n * @param typeOrClass Type name. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field to find the component.\n * @param index=0 Index for component of given type. This can be used to access specific\n * components if the object has multiple components of the same type.\n * @returns The component or `null` if there is no such component on this object\n */\n getComponent(\n typeOrClass: ComponentConstructor,\n index?: number\n ): T | null;\n getComponent(\n typeOrClass: string | ComponentConstructor,\n index: number = 0\n ): Component | null {\n const wasm = this._engine.wasm;\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n\n const scene = this._scene;\n const componentType = wasm._wl_scene_get_component_manager_index(\n scene._index,\n wasm.tempUTF8(type)\n );\n\n if (componentType < 0) {\n /* Not a native component, try js: */\n const typeIndex = wasm._componentTypeIndices[type];\n if (typeIndex === undefined) return null;\n const jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index);\n if (jsIndex < 0) return null;\n\n const component = this._scene._jsComponents[jsIndex];\n return component.constructor !== BrokenComponent ? component : null;\n }\n\n const componentId = wasm._wl_get_component_id(this._id, componentType, index);\n return scene._components.wrapNative(componentType, componentId);\n }\n\n /* `getComponents` overloads for native components. */\n\n /** @overload */\n getComponents(): Component[];\n /** @overload */\n getComponents(type: K): NativeComponents[K][];\n /**\n * @param typeOrClass Type name, pass a falsey value (`undefined` or `null`) to retrieve all.\n * It's also possible to give a class definition. In this case, the method will use the `class.TypeName` field to\n * find the components.\n * @returns All components of given type attached to this object.\n *\n * @note As this function is non-trivial, avoid using it in `update()` repeatedly,\n * but rather store its result in `init()` or `start()`\n * @warning This method will currently return at most 341 components.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(\n typeOrClass?: string | ComponentConstructor | null\n ): T[] {\n const wasm = this._engine.wasm;\n const scene = this._scene;\n\n let manager = null;\n let type = null;\n if (typeOrClass) {\n type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = scene._components.getNativeManager(type);\n manager = nativeManager !== null ? nativeManager : scene._components.js;\n }\n\n const components: Component[] = [];\n const maxComps = Math.floor((wasm._tempMemSize / 3) * 2);\n const componentsCount = wasm._wl_object_get_components(\n this._id,\n wasm._tempMem,\n maxComps\n );\n const offset = 2 * componentsCount;\n wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset, maxComps);\n\n for (let i = 0; i < componentsCount; ++i) {\n const t = wasm._tempMemUint8[i + offset];\n const componentId = wasm._tempMemUint16[i];\n if (manager !== null && t !== manager) continue;\n\n const comp = this._scene._components.wrapAny(t, componentId);\n if (!comp) continue;\n if (type && type !== (comp.constructor as ComponentConstructor).TypeName)\n continue;\n components.push(comp);\n }\n return components as T[];\n }\n\n /* `addComponent` overloads for native components. */\n\n /** @overload */\n addComponent(type: 'collision', params?: Record): CollisionComponent;\n /** @overload */\n addComponent(type: 'text', params?: Record): TextComponent;\n /** @overload */\n addComponent(type: 'view', params?: Record): ViewComponent;\n /** @overload */\n addComponent(type: 'mesh', params?: Record): MeshComponent;\n /** @overload */\n addComponent(type: 'input', params?: Record): InputComponent;\n /** @overload */\n addComponent(type: 'light', params?: Record): LightComponent;\n /** @overload */\n addComponent(type: 'animation', params?: Record): AnimationComponent;\n /** @overload */\n addComponent(type: 'physx', params?: Record): PhysXComponent;\n /** @overload */\n addComponent(\n type: 'particle-effect',\n params?: Record\n ): ParticleEffectComponent;\n /** @overload */\n addComponent(type: string, params?: Record): Component;\n /**\n * Add component of given type to the object.\n *\n * You can use this function to clone components, see the example below.\n *\n * ```js\n * // Clone existing component (since 0.8.10)\n * let original = this.object.getComponent('mesh');\n * otherObject.addComponent('mesh', original);\n * // Create component from parameters\n * this.object.addComponent('mesh', {\n * mesh: someMesh,\n * material: someMaterial,\n * });\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @param params Parameters to initialize properties of the new component,\n * can be another component to copy properties from.\n *\n * @returns The component or `null` if the type was not found\n */\n addComponent(\n typeClass: ComponentConstructor,\n params?: Record\n ): T;\n addComponent(\n typeOrClass: ComponentConstructor | string,\n params?: Record\n ): Component {\n if (this.markedDestroyed) {\n throw new Error(`Failed to add component. ${this} is marked as destroyed.`);\n }\n\n const wasm = this._engine.wasm;\n\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = this._scene._components.getNativeManager(type);\n const isNative = nativeManager !== null;\n const manager = isNative ? nativeManager : this._scene._components.js;\n\n let componentId = -1;\n if (!isNative) {\n /* JavaScript component */\n if (!(type in wasm._componentTypeIndices)) {\n throw new TypeError(\"Unknown component type '\" + type + \"'\");\n }\n componentId = wasm._wl_object_add_js_component(\n this._id,\n wasm._componentTypeIndices[type]\n );\n } else {\n /* native component */\n componentId = wasm._wl_object_add_component(this._id, manager);\n }\n\n const component = this._scene._components.wrapAny(manager, componentId)!;\n\n if (params !== undefined) component.copy(params as Component);\n\n /* Explicitly initialize js components */\n if (!isNative) {\n component._triggerInit();\n /* start() is called through onActivate() */\n }\n\n /* If it was not explicitly requested by the user to leave the component inactive,\n * we activate it as a final step. This invalidates componentIndex! */\n if (!params || !('active' in params && !params.active)) {\n component.active = true;\n }\n\n return component;\n }\n\n /**\n * Search for descendants matching the name.\n *\n * This method is a wrapper around {@link Object3D.findByNameDirect} and\n * {@link Object3D.findByNameRecursive}.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the descendants of this object.\n * If `false`, this method will only perform the search in direct children.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name);\n }\n\n /**\n * Search for all **direct** children matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameDirect(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 2; /* Reserve two ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n buffer[maxCount + 1] = 0; /* child count */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const childCountPtr = bufferPtr + maxCount * 2 + 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2);\n\n const result: Object3D[] = [];\n let read = 0;\n while (\n (read = wasm._wl_object_findByName(\n id,\n namePtr,\n indexPtr,\n childCountPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Search for **all descendants** matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 1; /* Reserve one ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2);\n\n let read = 0;\n const result: Object3D[] = [];\n while (\n (read = wasm._wl_object_findByNameRecursive(\n id,\n namePtr,\n indexPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Whether given object's transformation has changed.\n */\n get changed(): boolean {\n return !!this._engine.wasm._wl_object_is_changed(this._id);\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = scene.addObject();\n * obj.customParam = 'Hello World!';\n *\n * console.log(obj.isDestroyed); // Prints `false`\n * obj.destroy();\n * console.log(obj.isDestroyed); // Prints `true`\n * console.log(obj.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /**\n * `true` if the object is marked as destroyed.\n *\n * This boolean will only ever be `true` when reading objects state\n * from the {@link Component.onDestroy} callback, i.e.,\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n * class CleanupComponent extends Component {\n * onDestroy() {\n * if (this.object.markedDestroyed) {\n * // this object is getting removed\n * } else {\n * // The component is getting destroyed, the object will\n * // still exist after the destruction call\n * }\n * }\n * }\n * ```\n *\n * Certain operations are forbidden when an object is pending destruction:\n * - Reparenting the object via {@link parent}\n * - {@link addComponent}\n * - {@link Scene.addObject}\n * - {@link Scene.destroy}\n */\n get markedDestroyed(): boolean {\n const wasm = this.engine.wasm;\n return !!wasm._wl_object_markedDestroyed(this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const objectA = scene.addObject();\n * const objectB = scene.addObject();\n * const objectC = objectB;\n * console.log(objectA === objectB); // false\n * console.log(objectA === objectA); // true\n * console.log(objectB === objectC); // true\n * ```\n */\n equals(otherObject: Object3D | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherObject) return false;\n return this._id == otherObject._id;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Object3D(destroyed)';\n }\n return `Object3D('${this.name}', ${this._localId})`;\n }\n}\n\n/**\n * Wrapper around a native skin data.\n */\nexport class Skin extends SceneResource {\n /** Amount of joints in this skin. */\n get jointCount() {\n return this.engine.wasm._wl_skin_get_joint_count(this._id);\n }\n\n /** Joints object ids for this skin */\n get jointIds(): Uint16Array {\n const wasm = this.engine.wasm;\n return new Uint16Array(\n wasm.HEAPU16.buffer,\n wasm._wl_skin_joint_ids(this._id),\n this.jointCount\n );\n }\n\n /**\n * Dual quaternions in a flat array of size 8 times {@link jointCount}.\n *\n * Inverse bind transforms of the skin.\n */\n get inverseBindTransforms(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_transforms(this._id),\n 8 * this.jointCount\n );\n }\n\n /**\n * Vectors in a flat array of size 3 times {@link jointCount}.\n *\n * Inverse bind scalings of the skin.\n */\n get inverseBindScalings(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_scalings(this._id),\n 3 * this.jointCount\n );\n }\n}\n\n/**\n * Wrapper around a native set of morph targets.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\nexport class MorphTargets extends Resource {\n /** Amount of targets in this morph target set. */\n get count() {\n return this.engine.wasm._wl_morph_targets_get_target_count(this._id);\n }\n\n /** Returns the name of a given target */\n getTargetName(target: number): string {\n if (target >= this.count) {\n throw new Error(`Index ${target} is out of bounds for ${this.count} targets`);\n }\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target));\n }\n\n /**\n * Get the index for a given target name.\n *\n * Throws if no target with that name exists.\n *\n * @param name Name of the target.\n */\n getTargetIndex(name: string): number {\n const wasm = this.engine.wasm;\n const index = wasm._wl_morph_targets_get_target_index(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing target '${name}'`);\n }\n return index;\n }\n}\n\n/* For backward compatibility with < 1.0.0. */\nexport {Object3D as Object};\n\n/**\n * Ray hit.\n *\n * Result of a {@link Scene.rayCast} or {@link Physics.rayCast}.\n *\n * @note this class wraps internal engine data and should only be created internally.\n */\nexport class RayHit {\n /** Scene instance. @hidden */\n readonly _scene: Scene;\n\n /** Pointer to the memory heap. */\n private _ptr: number;\n\n /**\n * @param ptr Pointer to the ray hits memory.\n */\n constructor(scene: Scene, ptr: number) {\n if ((ptr & 3) !== 0) {\n throw new Error('Misaligned pointer: please report a bug');\n }\n this._scene = scene;\n this._ptr = ptr;\n }\n\n /** @overload */\n getLocations(): Float32Array[];\n /**\n * Array of ray hit locations.\n *\n * #### Usage\n *\n * ```js\n * const hit = engine.physics.rayCast();\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLocations(out: T): T;\n getLocations(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = this._ptr / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const locationPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[locationPtr];\n out[i][1] = wasm.HEAPF32[locationPtr + 1];\n out[i][2] = wasm.HEAPF32[locationPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getNormals(): Float32Array[];\n /**\n * Array of ray hit normals (only when using {@link Physics#rayCast}.\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getNormals(out: T): T;\n getNormals(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const normalPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[normalPtr];\n out[i][1] = wasm.HEAPF32[normalPtr + 1];\n out[i][2] = wasm.HEAPF32[normalPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getDistances(): Float32Array;\n /**\n * Prefer these to recalculating the distance from locations.\n *\n * Distances of array hits to ray origin.\n *\n * @param out Destination array/vector, expected to have at least this.hitCount elements.\n * @returns The `out` parameter.\n */\n getDistances(out: T): T;\n getDistances(out: NumberArray = new Float32Array(this.hitCount)): NumberArray {\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48 * 2) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const distancePtr = alignedPtr + i;\n out[i] = wasm.HEAPF32[distancePtr];\n }\n return out;\n }\n\n /**\n * Array of hit objects.\n *\n * @param out Destination array/vector, expected to have at least `this.hitCount` elements.\n * @returns The `out` parameter.\n */\n getObjects(out: Object3D[] = new Array(this.hitCount)): Object3D[] {\n const HEAPU16 = this.engine.wasm.HEAPU16;\n const alignedPtr = (this._ptr + (48 * 2 + 16)) >> 1;\n for (let i = 0; i < this.hitCount; ++i) {\n out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]);\n }\n return out;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /**\n * Equivalent to {@link RayHit.getLocations}.\n *\n * @note Prefer to use {@link RayHit.getLocations} for performance.\n */\n get locations(): Float32Array[] {\n return this.getLocations();\n }\n\n /**\n * Equivalent to {@link RayHit.getNormals}.\n *\n * @note Prefer to use {@link RayHit.getNormals} for performance.\n */\n get normals(): Float32Array[] {\n return this.getNormals();\n }\n\n /**\n * Equivalent to {@link RayHit.getDistances}.\n *\n * @note Prefer to use {@link RayHit.getDistances} for performance.\n */\n get distances(): Float32Array {\n return this.getDistances();\n }\n\n /**\n * Equivalent to {@link RayHit.getObjects}.\n *\n * @note Prefer to use {@link RayHit.getObjects} for performance.\n */\n get objects(): (Object3D | null)[] {\n /** @todo: Remove at 2.0.0, this is kept for backward compatibility. */\n const objects: (Object3D | null)[] = [null, null, null, null];\n return this.getObjects(objects as Object3D[]);\n }\n\n /** Number of hits (max 4) */\n get hitCount(): number {\n return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4);\n }\n}\n\nclass math {\n /** (Experimental!) Cubic Hermite spline interpolation for vector3 and quaternions.\n *\n * With `f == 0`, `out` will be `b`, if `f == 1`, `out` will be c.\n *\n * Whether a quaternion or vector3 interpolation is intended is determined by\n * length of `a`.\n *\n * @param out Array to write result to.\n * @param a First tangent/handle.\n * @param b First point or quaternion.\n * @param c Second point or quaternion.\n * @param d Second handle.\n * @param f Interpolation factor in [0; 1].\n * @returns The `out` parameter.\n *\n * @since 0.8.6\n */\n static cubicHermite(\n out: T,\n a: Readonly,\n b: Readonly,\n c: Readonly,\n d: Readonly,\n f: number,\n engine: WonderlandEngine = WL\n ) {\n const wasm = engine.wasm;\n wasm._tempMemFloat.subarray(0).set(a);\n wasm._tempMemFloat.subarray(4).set(b);\n wasm._tempMemFloat.subarray(8).set(c);\n wasm._tempMemFloat.subarray(12).set(d);\n\n const isQuat = a.length == 4;\n\n wasm._wl_math_cubicHermite(\n wasm._tempMem + 4 * 16,\n wasm._tempMem + 4 * 0,\n wasm._tempMem + 4 * 4,\n wasm._tempMem + 4 * 8,\n wasm._tempMem + 4 * 12,\n f,\n isQuat\n );\n out[0] = wasm._tempMemFloat[16];\n out[1] = wasm._tempMemFloat[17];\n out[2] = wasm._tempMemFloat[18];\n if (isQuat) out[3] = wasm._tempMemFloat[19];\n return out;\n }\n}\n\nexport {math};\n\n/**\n * Class for accessing internationalization (i18n) features.\n *\n * Allows {@link I18N.onLanguageChanged \"detecting language change\"},\n * {@link I18N.language \"setting the current language\"} or translating\n * {@link I18N.translate \"individual terms\"}.\n *\n * Internationalization works with terms,\n * a string type keyword that is linked to a different text for each language.\n *\n * Internally, string parameters for text and js components are\n * automatically swapped during language change, given they are linked to a term.\n * If manual text swapping is desired, {@link I18N.translate}\n * can be used to retrieve the current translation for any term.\n *\n * You can also use the {@link I18N.onLanguageChanged} to manually update text\n * when a language is changed to for example update a number in a string.\n *\n * @since 1.0.0\n */\nexport class I18N {\n /**\n * {@link Emitter} for language change events.\n *\n * First parameter to a listener is the old language index,\n * second parameter is the new language index.\n *\n * Usage from a within a component:\n *\n * ```js\n * this.engine.i18n.onLanguageChanged.add((oldLanguageIndex, newLanguageIndex) => {\n * const oldLanguage = this.engine.i18n.languageName(oldLanguageIndex);\n * const newLanguage = this.engine.i18n.languageName(newLanguageIndex);\n * console.log(\"Switched from\", oldLanguage, \"to\", newLanguage);\n * });\n * ```\n */\n readonly onLanguageChanged = new Emitter<[number, number]>();\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Previously set language index. @hidden */\n private _prevLanguageIndex: number = -1;\n\n /**\n * Constructor\n */\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @note This is equivalent to {@link I18N.setLanguage}.\n *\n * @param code Language code to switch to\n */\n set language(code: string | null) {\n this.setLanguage(code);\n }\n\n /** Get current language code. */\n get language(): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_currentLanguage();\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get the current language index.\n *\n * This method is more efficient than its equivalent:\n *\n * ```js\n * const index = i18n.languageIndex(i18n.language);\n * ```\n */\n get currentIndex(): number {\n return this._engine.wasm._wl_i18n_currentLanguageIndex();\n }\n\n /** Previous language index. */\n get previousIndex(): number {\n return this._prevLanguageIndex;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @param code The language code.\n * @returns A promise that resolves with the current index code when the\n * language is loaded.\n */\n async setLanguage(code: string | null): Promise {\n if (code == null) return Promise.resolve(this.currentIndex);\n const wasm = this._engine.wasm;\n this._prevLanguageIndex = this.currentIndex;\n wasm._wl_i18n_setLanguage(wasm.tempUTF8(code));\n\n const scene = this.engine.scene;\n\n const filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex));\n const url = `${scene.baseURL}/locale/${filename}`;\n\n await scene._downloadDependency(url);\n\n this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex);\n\n return this.currentIndex;\n }\n\n /**\n * Get translated string for a term for the currently loaded language.\n *\n * @param term Term to translate\n */\n translate(term: string): string | null {\n const wasm = this._engine.wasm;\n const translation = wasm._wl_i18n_translate(wasm.tempUTF8(term));\n if (translation === 0) return null;\n return wasm.UTF8ToString(translation);\n }\n\n /**\n * Get the number of languages in the project.\n *\n */\n languageCount(): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageCount();\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageIndex(code: string): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code));\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageCode(index: number): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_languageCode(index);\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get a language name.\n *\n * @param index Index of the language to get the name from\n */\n languageName(index: number): string | null {\n const wasm = this._engine.wasm;\n const name = wasm._wl_i18n_languageName(index);\n if (name === 0) return null;\n return wasm.UTF8ToString(name);\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Environment lighting properties\n *\n * @since 1.2.3\n */\nexport class Environment {\n /** Scene instance. @hidden */\n private readonly _scene: Scene;\n\n /** Constructor */\n constructor(scene: Scene) {\n this._scene = scene;\n }\n\n /**\n * Get intensity of environment lighting.\n *\n * Incoming environment lighting is multiplied by this factor.\n */\n get intensity() {\n return this._scene.engine.wasm._wl_scene_environment_get_intensity(\n this._scene._index\n );\n }\n\n /**\n * Set intensity of environment lighting.\n *\n * @param intensity New intensity.\n */\n set intensity(intensity: number) {\n this._scene.engine.wasm._wl_scene_environment_set_intensity(\n this._scene._index,\n intensity\n );\n }\n\n /** @overload */\n getTint(): Float32Array;\n /**\n * Get tint for environment lighting.\n *\n * Incoming environment lighting color channels are multiplied by these\n * values.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Tint values - red, green, blue.\n */\n getTint(out: T): T;\n /** @overload */\n getTint(\n out: T | Float32Array = new Float32Array(3)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out as T;\n }\n\n /**\n * Equivalent to {@link getTint}.\n *\n * @note Prefer to use {@link getTint} for performance.\n */\n get tint(): Float32Array {\n return this.getTint();\n }\n\n /**\n * Set tint for environment lighting.\n *\n * @param v New tint value. Expects a 3 component array.\n */\n setTint(v: Readonly) {\n this._scene.engine.wasm._wl_scene_environment_set_tint(\n this._scene._index,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /** Equivalent to {@link setTint}. */\n set tint(v: Readonly) {\n this.setTint(v);\n }\n\n /** @overload */\n getCoefficients(): Float32Array;\n /**\n * Get spherical harmonics coefficients for indirect lighting.\n *\n * These are 9 spherical harmonics coefficients for indirect diffuse\n * lighting.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Spherical harmonics coefficients. Always 27 elements, every\n * consecutive 3 values representing the red, green, blue components of\n * a single coefficient. Unused/empty coefficients at the end can be 0.\n */\n getCoefficients(out: T): T;\n /** @overload */\n getCoefficients(\n out: T | Float32Array = new Float32Array(3 * 9)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(3 * 9 * 4);\n wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem);\n for (let i = 0; i < 3 * 9; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out as T;\n }\n\n /**\n * Equivalent to {@link getCoefficients}.\n *\n * @note Prefer to use {@link getCoefficients} for performance.\n */\n get coefficients(): Float32Array {\n return this.getCoefficients();\n }\n\n /**\n * Set spherical harmonics coefficients for indirect lighting.\n *\n * @note The scene must have been packaged with environment lighting on for\n * this to take effect.\n *\n * @example\n *\n * Coefficients from [WebXR Lighting Estimation](https://www.w3.org/TR/webxr-lighting-estimation-1)\n * can be passed as follows:\n *\n * ```js\n * const probe = await engine.xr.session.requestLightProbe();\n * const estimate = engine.xr.frame.getLightEstimate(probe);\n * scene.environment.coefficients = estimate.sphericalHarmonicsCoefficients;\n * ```\n *\n * @param v A set of spherical harmonics coefficients, every 3 elements\n * constituting the red/green/blue components of a single coefficient.\n * Should be 0, 3, 12 or 27 **array elements**. Passing an empty array\n * disables indirect lighting.\n */\n setCoefficients(v: Readonly) {\n let count = v.length / 3;\n if (count > 9) count = 9;\n else if (count > 4 && count < 9) count = 4;\n else if (count > 1 && count < 4) count = 1;\n const wasm = this._scene.engine.wasm;\n wasm._tempMemFloat.set(v);\n wasm._wl_scene_environment_set_coefficients(\n this._scene._index,\n wasm._tempMem,\n count\n );\n }\n\n /** Equivalent to {@link setCoefficients}. */\n set coefficients(v: Readonly) {\n this.setCoefficients(v);\n }\n}\n", "/**\n * This file is automatically generated.\n *\n * **Do not** modify this file directly, but instead update\n * the 'write-version.mjs' script.\n */\n\n/**\n * Version type following a subset of the Semantic Versioning specification.\n */\nexport type Version = {major: number, minor: number, patch: number, rc: number};\n\n/** Version of this API. */\nexport const APIVersion: Version = {\n major: 1,\n minor: 4,\n patch: 2,\n rc: 0\n};\n", "import {WonderlandEngine} from '../engine.js';\nimport {NumberArray} from '../types.js';\nimport {capitalizeFirstUTF8} from '../utils/misc.js';\nimport {Texture} from '../wonderland.js';\n\nimport {Resource, ResourceManager} from './resource.js';\n\n/**\n * Material parameter type.\n */\nexport enum MaterialParamType {\n /** Unsigned integer parameter type. */\n UnsignedInt = 0,\n /** Integer parameter type. */\n Int = 1,\n /** 16-bit float parameter type. */\n HalfFloat = 2,\n /** Float parameter type. */\n Float = 3,\n /** Sampler resource parameter type, i.e., a {@link Texture}. */\n Sampler = 4,\n /**\n * Font resource parameter type.\n *\n * **Note**: Changing font isn't exposed yet and will raise an error.\n */\n Font = 5,\n}\n\n/**\n * Constructor parameters object for a {@link Material} instance.\n *\n * @deprecated Use {@link MaterialManager#getTemplate} instead:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\nexport interface MaterialParameters {\n /** The name of the pipeline. */\n pipeline: string;\n}\n\n/**\n * Material constructor.\n *\n * Material classes are automatically generated by the runtime based on the\n * loaded scene shaders.\n */\nexport interface MaterialConstructor {\n /**\n * Set of the dynamic parameters that exist on the definition.\n *\n * For instance, the set would contain elements such as `ambientColor`, `diffuseColor`\n * for a Phong material.\n */\n readonly Parameters: Set;\n /**\n * Create a new Material.\n *\n * The material is created from the pipeline associated to the material class.\n *\n * @note Creating material is expensive. Please use {@link Material#clone} to clone a material.\n * @note Do not use this constructor directly with an index, this is reserved for internal purposes.\n */\n new (index?: number): T;\n}\n\n/**\n * Wrapper around a native material.\n *\n * For more information about how to create materials, have a look at the\n * {@link MaterialManager} class.\n *\n * #### Properties\n *\n * The material properties are automatically converted into getters/setters:\n *\n * ```js\n * const material = new PhongMaterial();\n *\n * // Set the `diffuseColor` property\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * console.log(material.getDiffuseColor());\n * ```\n *\n * Getters for non-scalar types have an optional argument to skip an array\n * allocation:\n *\n * ```js\n * const material = new PhongMaterial();\n * const diffuse = [0, 0, 0, 0];\n * material.getDiffuseColor(diffuse);\n * console.log(diffuse) // Prints '[1.0, 1.0, 1.0, 1.0]'\n * ```\n *\n * @note Materials are **per-engine**, they can thus be shared by multiple scenes.\n *\n * #### TypeScript\n *\n * The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * It's then possible to cast the material type using:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const mesh = object.getComponent('mesh');\n * const material = mesh.material as PhongOpaque;\n * material.setDiffuseColor([1, 0, 0, 1]); // Set a red diffuse\n * ```\n *\n * @since 1.2.0\n */\nexport class Material extends Resource {\n /**\n * @deprecated Use {@link MaterialManager#getTemplate} via {@link WonderlandEngine.materials}\n * to create a new material with a given pipeline:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\n constructor(engine: WonderlandEngine, params: number | MaterialParameters) {\n if (typeof params !== 'number') {\n if (!params?.pipeline) throw new Error(\"Missing parameter 'pipeline'\");\n const template = engine.materials.getTemplate(params.pipeline);\n const material = new template();\n super(engine, material._index);\n return material;\n }\n super(engine, params);\n }\n\n /**\n * Check whether a parameter exists on this material.\n *\n * @param name The name to check.\n * @returns `true` if the parameter with name `name` exists on this material,\n * `false` otherwise.\n */\n hasParameter(name: string) {\n const parameters = (this.constructor as MaterialConstructor).Parameters;\n return parameters && parameters.has(name);\n }\n\n /** @deprecated Use {@link pipeline} instead. */\n get shader(): string {\n return this.pipeline;\n }\n\n /** Name of the pipeline used by this material. */\n get pipeline(): string {\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id));\n }\n\n /**\n * Create a copy of the underlying native material.\n *\n * @returns Material clone.\n */\n clone(): Material | null {\n const index = this.engine.wasm._wl_material_clone(this._id);\n return this.engine.materials.wrap(index);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Material(destroyed)';\n }\n return `Material('${this.pipeline}', ${this._index})`;\n }\n\n /**\n * Wrap a native material index.\n *\n * @param engine Engine instance.\n * @param index The index.\n * @returns Material instance or `null` if index <= 0.\n *\n * @deprecated Use the {@link WonderlandEngine.materials} instead.\n */\n static wrap(engine: WonderlandEngine, index: number): Material | null {\n return engine.materials.wrap(index);\n }\n}\n\n/**\n * Manage materials.\n *\n * #### Creation\n *\n * To create a material, first retrieve the class associated to\n * the pipeline using {@link MaterialManager.getTemplate}:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * ```\n *\n * Creating a material is then done using the constructor:\n *\n * ```js\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n */\nexport class MaterialManager extends ResourceManager {\n /** Material classes. @hidden. */\n private readonly _materialTemplates: MaterialConstructor[] = [];\n\n /** @hidden */\n constructor(engine: WonderlandEngine) {\n super(engine, Material);\n this._cacheDefinitions();\n }\n\n /** @override */\n wrap(index: number) {\n if (index <= 0) return null;\n\n const cached = this._cache[index];\n if (cached) return cached;\n\n const wasm = this.engine.wasm;\n const definition = wasm._wl_material_get_definition(index);\n\n const Template = this._materialTemplates[definition];\n const material = new Template(index);\n return this._wrapInstance(material);\n }\n\n /**\n * Get the material class with the given pipeline name.\n *\n * #### Usage\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n *\n * #### TypeScript\n *\n * This method provide a simple way to cast the constructor returned by `getTemplate`:\n *\n * ```ts\n * interface Phong {\n * getAmbientColor(out?: Float32Array): Float32Array;\n * setAmbientColor(value: NumberArray): void;\n * }\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `Phong`\n * ```\n *\n * However, this means manually writing types for each pipeline.\n *\n * Fortunately, The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * Material constructors will then be typed automatically when using a string literal pipeline name:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `PhongOpaque`\n * ```\n *\n * @param pipeline The pipeline name to search for.\n * @returns The material class.\n *\n * @throws `Error` if the material class doesn't exist.\n */\n getTemplate(pipeline: string): MaterialConstructor {\n const wasm = this.engine.wasm;\n const index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline));\n if (!index) {\n throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`);\n }\n return this._materialTemplates[index] as MaterialConstructor;\n }\n\n /**\n * Wrap a material instance.\n *\n * @todo: Remove at 2.0.0.\n *\n * @note Wrapping should only be called once per instance.\n *\n * @param instance The material instance.\n * @returns The new material, wrapped in a proxy.\n */\n _wrapInstance(instance: Material): Material {\n this._cache[instance.index] = instance;\n if (!this.engine.legacyMaterialSupport) return instance;\n\n /** @todo: Remove at 2.0.0. This is kept for backward compatibility. */\n const proxy = new Proxy(instance, {\n get(target: Material, prop: string) {\n if (!target.hasParameter(prop)) {\n return (target as Record)[prop];\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `get${capitalizeFirstUTF8(prop)}`;\n return (target as Record)[name]();\n },\n set(target, prop: string, value) {\n if (!target.hasParameter(prop)) {\n (target as Record)[prop] = value;\n return true;\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `set${capitalizeFirstUTF8(prop)}`;\n (target as Record)[name](value);\n return true;\n },\n });\n this._cache[instance.index] = proxy;\n return proxy;\n }\n\n /**\n * Cache all pipeline definitions.\n *\n * @hidden\n */\n private _cacheDefinitions() {\n const wasm = this.engine.wasm;\n const count = wasm._wl_get_material_definition_count();\n for (let i = 1; i < count; ++i) {\n this._materialTemplates[i] = this._createMaterialTemplate(i);\n }\n }\n\n /**\n * Create a material class from a definition index.\n *\n * @param wasm The WASM instance.\n * @param definitionIndex The definition index to wrap.\n * @returns The material class.\n */\n private _createMaterialTemplate(definitionIndex: number) {\n const engine = this.engine;\n const template = class CustomMaterial extends Material {\n static Parameters: Set = new Set();\n\n constructor(index?: number) {\n index = index ?? engine.wasm._wl_material_create(definitionIndex);\n super(engine, index);\n /** @todo(2.0.0): Unify with Material. We need to wrap in both since materials\n * can be created via the parent class, or via child classes.\n * In addition, wrapping returns a proxy, we want to support Proxy\n * as well as Proxy. */\n return engine.materials._wrapInstance(this);\n }\n };\n\n const wasm = this.engine.wasm;\n const nbParams = wasm._wl_material_definition_get_param_count(definitionIndex);\n for (let index = 0; index < nbParams; ++index) {\n const name = wasm.UTF8ToString(\n wasm._wl_material_definition_get_param_name(definitionIndex, index)\n );\n template.Parameters.add(name);\n\n const t = wasm._wl_material_definition_get_param_type(definitionIndex, index);\n const type = t & 0xff;\n const componentCount = (t >> 8) & 0xff;\n /* metaType could also be extracted using: (t >> 16) & 0xff */\n\n const capitalized = capitalizeFirstUTF8(name);\n const getterId = `get${capitalized}`;\n const setterId = `set${capitalized}`;\n\n const templateProto = template.prototype as Record;\n switch (type) {\n case MaterialParamType.UnsignedInt:\n templateProto[getterId] = uint32Getter(index, componentCount);\n /* For now, it's only possible to set scalar uint values */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.Int:\n templateProto[getterId] = int32Getter(index, componentCount);\n /* For now, it's only possible to set scalar int values. Integer values setter\n * is purposely shared with uint. */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.HalfFloat:\n case MaterialParamType.Float:\n templateProto[getterId] = float32Getter(index, componentCount);\n templateProto[setterId] = float32Setter(index, componentCount);\n break;\n case MaterialParamType.Sampler:\n templateProto[getterId] = samplerGetter(index);\n templateProto[setterId] = samplerSetter(index);\n break;\n case MaterialParamType.Font:\n templateProto[getterId] = fontGetter(index);\n /* For now, setting fonts is not supported */\n break;\n }\n }\n\n return template as MaterialConstructor;\n }\n}\n\n/** @todo: With this implementation, `_wl_material_get_param_value`\n * do not need to check for the parameter type anymore, we could use\n * explicit calls. */\n\nfunction uint32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemUint32[0];\n };\n }\n return function (this: Material, out: NumberArray = new Uint32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemUint32[i];\n }\n return out;\n };\n}\n\nfunction uint32Setter(index: number) {\n return function (this: Material, value: number) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value);\n };\n}\n\nfunction int32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemInt[0];\n };\n }\n return function (this: Material, out: NumberArray = new Int32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemInt[i];\n }\n return out;\n };\n}\n\nfunction float32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n };\n }\n return function (this: Material, out: NumberArray = new Float32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n };\n}\n\nfunction float32Setter(index: number, count: number) {\n return function (this: Material, value: number | NumberArray) {\n const wasm = this.engine.wasm;\n\n let actualCount = 1;\n if (typeof value === 'number') {\n wasm._tempMemFloat[0] = value;\n } else {\n actualCount = value.length;\n for (let i = 0; i < actualCount; ++i) wasm._tempMemFloat[i] = value[i];\n }\n\n if (actualCount < count) {\n throw new Error(`Expected an array ${count} values, got ${actualCount}`);\n }\n\n wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count);\n };\n}\n\nfunction samplerGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.textures.wrap(wasm._tempMemInt[0]);\n };\n}\n\nfunction samplerSetter(index: number) {\n return function (this: Material, value: Texture | null | undefined) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0);\n };\n}\n\nfunction fontGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.fonts.wrap(wasm._tempMemInt[0]);\n };\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Mesh, MeshIndexType, MeshParameters, MeshSkinningType} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\n/**\n * Manage meshes.\n *\n * #### Creation\n *\n * Creating a mesh is done using {@link MeshManager.create}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n *\n * @since 1.2.0\n */\nexport class MeshManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Mesh);\n }\n\n /**\n * Create a new mesh.\n *\n * @param params Vertex and index data. For more information, have a look\n * at the {@link MeshParameters} object.\n */\n create(params: Partial) {\n if (!params.vertexCount) throw new Error(\"Missing parameter 'vertexCount'\");\n\n const wasm = this.engine.wasm;\n\n let indexData = 0;\n let indexType = 0;\n let indexDataSize = 0;\n if (params.indexData) {\n indexType = params.indexType || MeshIndexType.UnsignedShort;\n indexDataSize = params.indexData.length * indexType;\n indexData = wasm._malloc(indexDataSize);\n /* Copy the index data into wasm memory */\n switch (indexType) {\n case MeshIndexType.UnsignedByte:\n wasm.HEAPU8.set(params.indexData, indexData);\n break;\n case MeshIndexType.UnsignedShort:\n wasm.HEAPU16.set(params.indexData, indexData >> 1);\n break;\n case MeshIndexType.UnsignedInt:\n wasm.HEAPU32.set(params.indexData, indexData >> 2);\n break;\n }\n }\n\n const {skinningType = MeshSkinningType.None} = params;\n\n const index = wasm._wl_mesh_create(\n indexData,\n indexDataSize,\n indexType,\n params.vertexCount,\n skinningType\n );\n const instance = new Mesh(this._host, index);\n this._cache[instance.index] = instance;\n return instance;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {ImageLike} from '../types.js';\nimport {Texture} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\nexport function needsFlipY(image: ImageLike) {\n /* WebGL can't flip ImageBitmap on upload.\n * For consistency with WebGPU, disable ImageBitmap flipping entirely and let the user use:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap#options */\n return image instanceof ImageBitmap ? 0 : 1;\n}\n\n/**\n * Manage textures.\n *\n * #### Creation\n *\n * Creating a texture is done using {@link TextureManager.load}:\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * Alternatively, textures can be created directly via a loaded image using\n * {@link TextureManager.create}.\n *\n * @since 1.2.0\n */\nexport class TextureManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Texture);\n }\n\n /**\n * Create a new texture from an image or video.\n *\n * #### Usage\n *\n * ```js\n * const img = new Image();\n * img.load = function(img) {\n * const texture = engine.textures.create(img);\n * };\n * img.src = 'my-image.png';\n * ```\n *\n * @note The media must already be loaded. To automatically\n * load the media and create a texture, use {@link TextureManager.load} instead.\n *\n * @param image Media element to create the texture from.\n * @ret\\urns The new texture with the media content.\n */\n create(image: ImageLike): Texture {\n const wasm = this.engine.wasm;\n\n const jsImageIndex = wasm._images.length;\n wasm._images.push(image);\n\n if (image instanceof HTMLImageElement && !image.complete) {\n throw new Error('image must be ready to create a texture');\n }\n\n const width = (image as HTMLVideoElement).videoWidth ?? image.width;\n const height = (image as HTMLVideoElement).videoHeight ?? image.height;\n\n const imageIndex = wasm._wl_image_create(jsImageIndex);\n wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image));\n\n /* Required because the image isn't a resource by itself, but will eventually be one. */\n const index = wasm._wl_texture_create(imageIndex);\n\n const instance = new Texture(this.engine, index);\n this._cache[instance.index] = instance;\n\n return instance;\n }\n\n /**\n * Load an image from URL as {@link Texture}.\n *\n * #### Usage\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * @param filename URL to load from.\n * @param crossOrigin Cross origin flag for the image object.\n * @returns Loaded texture.\n */\n load(filename: string, crossOrigin?: string): Promise {\n let image = new Image();\n image.crossOrigin = crossOrigin ?? image.crossOrigin;\n image.src = filename;\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(this.create(image));\n };\n image.onerror = function () {\n reject('Failed to load image. Not found or no read access');\n };\n });\n }\n}\n", "import {WASM} from './wasm.js';\nimport {Scene} from './scene.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {WonderlandEngine} from './engine.js';\nimport {InputType, ViewComponent} from './wonderland.js';\n\ntype WebXRFramebuffer = WebGLFramebuffer & {name: number};\ntype WebXRTexture = WebGLTexture & {name: number};\n\n/**\n * Options for {@link LoadRuntimeOptions.xrOfferSession}\n *\n * @since 1.1.5\n */\nexport interface XROfferSessionOptions {\n /**\n * Mode to offer XR session with. If set to `'auto'`, offers a session\n * with the first supported mode in the following order:\n * - VR\n * - AR\n * - inline\n */\n mode: XRSessionMode | 'auto';\n /** Required features for the offered XR session */\n features: string[];\n /** Optional features for the offered XR session */\n optionalFeatures: string[];\n}\n\n/** Properties of a WebXR session */\nexport class XRSessionState {\n /** Wonderland WASM bridge. @hidden */\n readonly #webxr: WebXR;\n\n /** Current WebXR session mode */\n sessionMode: XRSessionMode;\n\n /** Current WebXR session */\n session: XRSession;\n\n /** Current WebXR frame */\n frame: XRFrame | null = null;\n\n /**\n * Constructor.\n *\n * @param wasm Wasm bridge instance\n * @param mode Current XR session mode\n *\n * @hidden\n */\n constructor(webxr: WebXR, mode: XRSessionMode, session: XRSession) {\n this.#webxr = webxr;\n this.sessionMode = mode;\n this.session = session;\n }\n\n /** @overload */\n referenceSpaceForType(type: 'viewer'): XRReferenceSpace;\n /**\n * Get a WebXR reference space of a given reference space type.\n *\n * @param type Type of reference space to get\n * @returns Reference space, or `null` if there's no reference space\n * of the requested type available\n */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null;\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this.#webxr.referenceSpaceForType(type);\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this.#webxr.currentReferenceSpace = refSpace;\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this.#webxr.currentReferenceSpace;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this.#webxr.currentReferenceSpaceType;\n }\n\n /** Current WebXR base layer */\n get baseLayer(): XRProjectionLayer | XRWebGLLayer {\n return this.#webxr.baseLayer!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n return this.#webxr.framebuffers;\n }\n}\n\n/**\n * WebXR API (internal)\n *\n * @hidden\n */\nexport class WebXR {\n /** Wonderland WASM bridge. @hidden */\n readonly #wasm: WASM;\n\n readonly engine: WonderlandEngine;\n\n sessionState: XRSessionState | null = null;\n\n colorFormat: number = 0x8058 /* RGBA8 */;\n depthFormat: number = 0x88f0 /* DEPTH24_STENCIL8 */;\n textureType: XRTextureType = 'texture';\n\n /**\n * {@link Emitter} for WebXR session end events.\n */\n readonly onSessionEnd = new Emitter();\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n */\n readonly onSessionStart: Emitter<[XRSession, XRSessionMode]> = new RetainEmitter<\n [XRSession, XRSessionMode]\n >();\n\n /**\n * {@link Emitter} notified before the first update and rendering on the first frame of a new XR session.\n */\n readonly onSessionFirstFrame: Emitter<[XRSession, XRSessionMode]> = new Emitter<\n [XRSession, XRSessionMode]\n >();\n\n /** Whether AR is supported by the browser. */\n arSupported: boolean = false;\n\n /** Whether VR is supported by the browser. */\n vrSupported: boolean = false;\n\n /**\n * Current WebXR base layer or `null` if no session active.\n */\n baseLayer: XRProjectionLayer | XRWebGLLayer | null = null;\n\n /** WebXR framebuffer scale factor. */\n framebufferScaleFactor: number = 1.0;\n\n private _webglBinding: XRWebGLBinding | null = null;\n\n private _initXR: boolean = false;\n private _inXR: boolean = false;\n\n /** WebXR reference spaces. */\n private _refSpaces: Record = {\n 'viewer': undefined,\n 'local': undefined,\n 'local-floor': undefined,\n 'bounded-floor': undefined,\n 'unbounded': undefined,\n };\n\n /** Current WebXR reference space. */\n private _refSpace: XRReferenceSpace | null = null;\n\n /** Current WebXR reference space type. */\n private _refSpaceType: XRReferenceSpaceType | null = null;\n\n /**\n * Emscripten WebXR framebuffer(s).\n *\n * @note fbo will not get overwritten if we are rendering to the\n * default framebuffer, e.g., when using WebXR emulator.\n */\n private _fbo: number | number[] = 0;\n\n private _allowLayers: boolean = false;\n private _requestAnimationFrameId: any = null;\n\n /**\n * Initial WebXR reference space type. See {@link init} for\n * more information.\n */\n private _initialReferenceSpaceType: XRReferenceSpaceType | null = null;\n\n private _tempPosition: Float32Array = new Float32Array(3);\n private _tempRotation: Float32Array = new Float32Array(4);\n\n private _tempPose(transform: XRRigidTransform) {\n const p = transform.position;\n this._tempPosition[0] = p.x;\n this._tempPosition[1] = p.y;\n this._tempPosition[2] = p.z;\n const o = transform.orientation;\n this._tempRotation[0] = o.x;\n this._tempRotation[1] = o.y;\n this._tempRotation[2] = o.z;\n this._tempRotation[3] = o.w;\n }\n\n /**\n * Constructor.\n *\n * @param engine Engine\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine) {\n this.engine = engine;\n this.#wasm = engine.wasm;\n }\n\n /**\n * Check whether XR is supported and store the result in {@link arSupported} and {@link vrSupported}\n */\n checkXRSupport(): Promise {\n if (typeof navigator === 'undefined') {\n return Promise.resolve(false);\n }\n if (!navigator.xr) {\n const isLocalhost =\n location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n const missingHTTPS = location.protocol !== 'https:' && !isLocalhost;\n console.warn(\n missingHTTPS\n ? 'WebXR is only supported with HTTPS or on localhost!'\n : 'WebXR unsupported in this browser.'\n );\n return Promise.resolve(false);\n }\n /* Those can throw if the application is embedded in an iframe without\n * xr-spatial-tracking permission. navigator.xr will be available, but\n * any access of it will throw. */\n const vrPromise = navigator.xr\n .isSessionSupported('immersive-vr')\n .then((supported) => (this.vrSupported = supported))\n .catch(() => (this.vrSupported = false));\n const arPromise = navigator.xr\n .isSessionSupported('immersive-ar')\n .then((supported) => (this.arSupported = supported))\n .catch(() => (this.arSupported = false));\n\n return Promise.all([vrPromise, arPromise]).then(\n () => this.vrSupported || this.arSupported\n );\n }\n\n /**\n * Initialize WebXR.\n *\n * @hidden\n */\n async init(\n framebufferScaleFactor: number,\n offerSessionOptions: XROfferSessionOptions | null\n ) {\n const supported = await this.checkXRSupport();\n if (!supported) return;\n\n this.framebufferScaleFactor = framebufferScaleFactor;\n\n /* Force the reference space to 'local'/'viewer' for the loading screen\n * to make sure the head input is at the origin. Doing it this way to\n * avoid adding JS components to the loading screen. */\n const onXRStart = () => {\n this._initialReferenceSpaceType = this.currentReferenceSpaceType;\n const newSpace = this._refSpaces['local'] ?? this._refSpaces['viewer']!;\n this.currentReferenceSpace = newSpace;\n };\n\n /* Not once() because the user can enter and exit XR several times\n * during a long loading screen */\n this.onSessionStart.add(onXRStart);\n\n /* This is called before all init()/start()/onActivate() so we avoid\n * overwriting a user-set reference space */\n this.engine.onLoadingScreenEnd.once(() => {\n this.onSessionStart.remove(onXRStart);\n\n if (!this._initialReferenceSpaceType) return;\n\n this.currentReferenceSpace =\n this._refSpaces[this._initialReferenceSpaceType] ??\n this._refSpaces['viewer']!;\n this._initialReferenceSpaceType = null;\n });\n\n if (offerSessionOptions !== null) {\n let mode = offerSessionOptions.mode;\n if (mode == 'auto') {\n if (this.vrSupported) {\n mode = 'immersive-vr';\n } else if (this.arSupported) {\n mode = 'immersive-ar';\n } else {\n mode = 'inline';\n }\n }\n\n const offerSession = () => {\n this.offerSession(\n mode as XRSessionMode,\n offerSessionOptions.features,\n offerSessionOptions.optionalFeatures\n )\n .then(\n /* When the session ends, offer to start a new one again */\n (s) => s.addEventListener('end', offerSession)\n )\n /* The browser may not suppoer offer session, or a previous request\n * was replaced by a new one. Not crucial, but inform the user. */\n .catch(console.warn);\n };\n\n offerSession();\n }\n }\n\n /** Get a WebXR reference space of a given reference space type. */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this._refSpaces[type] ?? null;\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this._refSpace! = refSpace;\n\n this._refSpaceType = null;\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n if (this._refSpaces[type] === refSpace) {\n /* Keep track of reference space type */\n this._refSpaceType = type;\n }\n }\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this._refSpace!;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this._refSpaceType!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n if (!Array.isArray(this._fbo)) {\n return [this.#wasm.GL.framebuffers[this._fbo]];\n }\n return this._fbo.map((id) => this.#wasm.GL.framebuffers[id]);\n }\n\n /**\n * Set main/left/right eye view active according to XR mode.\n *\n * If @param inXR is `true`, disables the main view and enables the left and\n * right view. Otherwise, enables the main view and disables the left and\n * right view.\n *\n * @param inXR Whether an XR session is currently active\n */\n updateViewState(inXR: boolean | undefined) {\n const scene: Scene = this.engine.scene;\n\n inXR = inXR ?? this._inXR;\n\n if (scene.mainView) {\n scene.mainView.active = !inXR;\n }\n\n if (scene.leftEyeView && scene.rightEyeView) {\n /** We always have either no left/right eye views or both. Always enable\n * both since we can't know if this is single-view AR until we get the\n * view count in {@link nextFrame}. There the right eye view is\n * disabled if necessary. */\n scene.leftEyeView.active = inXR;\n scene.rightEyeView.active = inXR;\n }\n }\n\n /**\n * Set projection matrix parameters for the webxr session.\n *\n * @param near Distance of near clipping plane\n * @param far Distance of far clipping plane\n */\n updateProjectionParams(near: number | undefined, far: number | undefined) {\n if (!this.sessionState) return;\n\n const scene = this.engine.scene;\n near ??= scene.leftEyeView!.near;\n far ??= scene.leftEyeView!.far;\n\n /* If reverse-Z is enabled, we need to give WebXR swapped near and far\n * planes so it generates the correct projection matrices. This is\n * explicitly supported by the spec. */\n const reverseZ = !!this.engine.isReverseZEnabled;\n\n this.sessionState!.session.updateRenderState({\n depthNear: reverseZ ? far : near,\n depthFar: reverseZ ? near : far,\n });\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n const options = this.sessionOptions(features, optionalFeatures);\n return navigator.xr!.requestSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n /* @ts-ignore */\n if (!navigator.xr!.offerSession) {\n return Promise.reject('WebXR offerSession() unsupported in this browser.');\n }\n const options = this.sessionOptions(features, optionalFeatures);\n /* @ts-ignore */\n return navigator.xr!.offerSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n async startSession(session: XRSession, mode: XRSessionMode) {\n /* Multiple calls to requestSession will result in the existing\n * session being passed to the callback */\n if (session == this.sessionState?.session) return;\n this.sessionState = new XRSessionState(this, mode, session);\n\n /* React to session ending */\n session.addEventListener('end', () => {\n this.endSession();\n });\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n\n /* Create the base layer */\n let binding = null;\n const isEmulator = 'CustomWebXRPolyfill' in window;\n /* The WebXR emulator doesn't support layers, and will\n * simply throw an exception. Only way of checking seems\n * to be whether the custom polyfill is available */\n if (!isEmulator && 'XRWebGLBinding' in window) {\n binding = this._webglBinding = new XRWebGLBinding(session, gl);\n }\n const useLayers = this._allowLayers && binding;\n if (useLayers) {\n /* Use WebXR Layers */\n const layer = (this.baseLayer = binding!.createProjectionLayer({\n scaleFactor: this.framebufferScaleFactor,\n colorFormat: this.colorFormat,\n depthFormat: this.depthFormat,\n /* Always use 'texture-array' with multiview, otherwise default to it\n * if not set otherwise */\n textureType: !this.textureType ? 'texture-array' : this.textureType,\n }));\n session.updateRenderState({layers: [layer]});\n } else {\n const layer = (this.baseLayer = new XRWebGLLayer(session, gl, {\n framebufferScaleFactor: this.framebufferScaleFactor,\n }));\n session.updateRenderState({baseLayer: layer});\n }\n\n /* Request and cache available spaces. 'viewer' is always available. */\n const promises = [];\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n promises.push(\n session.requestReferenceSpace(type).then((refSpace) => {\n this._refSpaces[type] = refSpace;\n return refSpace;\n })\n );\n }\n\n await Promise.allSettled(promises).then((results) => {\n /* We prefer the reference space automatically in above order */\n for (let i = results.length - 1; i >= 0; --i) {\n const result = results[i];\n if (result.status === 'rejected') continue;\n /* Type is kept track of for the user to test against */\n this._refSpaceType = Object.keys(this._refSpaces)[\n i\n ] as XRReferenceSpaceType;\n this._refSpace = result.value;\n break;\n }\n });\n\n const isVR = mode == 'immersive-vr';\n\n const scene: Scene = this.engine.scene;\n\n if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) {\n console.error(\n `sessionStart(): VR sessions require 1 classic view, a left and a right view`\n );\n return;\n }\n\n this.updateViewState(true);\n\n this.updateProjectionParams(undefined, undefined);\n\n this.onSessionStart.notify(session, this.sessionState!.sessionMode);\n\n this.#wasm._wl_reset_context();\n\n console.log(`WebXR ${isVR ? 'VR' : 'AR'} session started`);\n\n this.sessionState.session.addEventListener('visibilitychange', (event) => {\n switch (event.session.visibilityState) {\n case 'visible':\n this.#wasm._wl_xr_focus();\n case 'visible-blurred':\n this.#wasm._wl_xr_blur();\n case 'hidden':\n this.#wasm._wl_xr_hide();\n }\n });\n\n /* Wait until first frame to call _wl_xr_init() */\n this._initXR = true;\n\n this._requestAnimationFrameId = session.requestAnimationFrame(\n useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)\n );\n }\n\n sessionOptions(\n requiredFeatures: string[],\n optionalFeatures: string[] = []\n ): XRSessionInit {\n if (this._allowLayers && !optionalFeatures.includes('layers')) {\n optionalFeatures.push('layers');\n }\n\n const params: XRSessionInit = {\n requiredFeatures,\n optionalFeatures,\n };\n\n const hasDepthSensing =\n requiredFeatures.includes('depth-sensing') ||\n optionalFeatures.includes('depth-sensing');\n if (hasDepthSensing) {\n params.depthSensing = {\n usagePreference: ['gpu-optimized', 'cpu-optimized'],\n dataFormatPreference: ['float32', 'luminance-alpha'],\n };\n }\n return params;\n }\n\n endSession() {\n this.sessionState!.session.cancelAnimationFrame(this._requestAnimationFrameId);\n this._requestAnimationFrameId = null;\n this.sessionState = null;\n\n this.#wasm._wl_reset_context();\n\n if (this.onSessionStart instanceof RetainEmitter) this.onSessionStart.reset();\n this.onSessionEnd.notify();\n\n console.log('WebXR session ended');\n\n this._inXR = false;\n\n this.updateViewState(false);\n\n const scene: Scene = this.engine.scene;\n\n this.#wasm._wl_xr_exit();\n\n /* Restore projection matrices. They are temporarily overridden in XR and\n * view changes are applied when the session ends. */\n scene.leftEyeView!._generateProjectionMatrix();\n scene.rightEyeView!._generateProjectionMatrix();\n\n /* Meta WebXR emulator doesn't request animation frame. Quest does. */\n this.#wasm._wl_application_redraw();\n }\n\n nextFrame(time: number, frame: XRFrame) {\n this.sessionState!.frame = frame;\n\n const session = frame.session;\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const scene: Scene = this.engine.scene;\n\n if (this._initXR) {\n /* There's no way to tell how many views we have before rendering the first frame,\n * and AR is not a sufficient criteria for one eye (mobile AR, AR headsets) */\n scene.rightEyeView!.active = pose.views.length > 1;\n\n this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer);\n this._initXR = false;\n this._inXR = true;\n\n this.onSessionFirstFrame.notify(session, this.sessionState!.sessionMode);\n }\n\n /* Head transformation */\n this._tempPose(pose.transform);\n scene._setInputTransformation(\n InputType.Head,\n this._tempPosition,\n this._tempRotation\n );\n\n /* Eyes transformations */\n for (let i = 0; i < pose.views.length && i < 2; ++i) {\n const view = pose.views[i];\n const viewIndex = view.eye == 'right' ? 1 : 0;\n this._tempPose(view.transform);\n scene._setInputTransformation(\n InputType.EyeLeft + viewIndex,\n this._tempPosition,\n this._tempRotation\n );\n }\n\n /* Controller transformations */\n for (const inputSource of session.inputSources) {\n let handedness = -1;\n if (inputSource.handedness == 'left') handedness = 0;\n else if (inputSource.handedness == 'right') handedness = 1;\n this._updateInputComponent(\n frame,\n inputSource.gripSpace,\n InputType.ControllerLeft + handedness\n );\n this._updateInputComponent(\n frame,\n inputSource.targetRaySpace,\n InputType.RayLeft + handedness\n );\n }\n\n this.#wasm._wl_nextFrame(0);\n }\n\n nextFrameSingle(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameSingle.bind(this)\n );\n }\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n /* If framebuffer is non-null, compositor is enabled and we bind it.\n * If it's null, we need to avoid this call otherwise the canvas FBO is bound */\n const glLayer = session.renderState.baseLayer!;\n if (glLayer.framebuffer) {\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const id = this._fbo || GL.getNewId(GL.framebuffers);\n (glLayer.framebuffer as WebXRFramebuffer).name = id;\n GL.framebuffers[id] = glLayer.framebuffer;\n this._fbo = id;\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]);\n }\n\n for (let i = 0; i < pose.views.length; ++i) {\n const view = pose.views[i];\n const viewport = glLayer.getViewport(view)!;\n\n let destView: ViewComponent;\n if (view.eye == 'left') {\n destView = this.engine.scene.leftEyeView!;\n } else if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene._components.componentAt(ViewComponent, i);\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n /* Patch projection matrix, currently only needed for reverse-Z.\n * If reverse-Z is enabled, we pass swapped near and far values to\n * updateRenderState(), giving us a matrix with inverted depth. But\n * we still need to map from NDC 1,-1 to 1,0. On WebGPU this won't\n * be necessary. */\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n this._fbo as number\n );\n }\n\n this.nextFrame(time, frame);\n }\n\n nextFrameLayers(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameLayers.bind(this)\n );\n }\n\n const scene: Scene = this.engine.scene;\n\n const pose = frame.getViewerPose(this._refSpace!)!;\n\n const layer = this.baseLayer!;\n const binding = this._webglBinding;\n\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n const createFramebuffer = !this._fbo;\n const textureArray = layer.textureArrayLength == 2;\n\n if (createFramebuffer) {\n if (textureArray) {\n this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)];\n } else {\n /* Both eyes use the same FBO */\n const id = GL.getNewId(GL.framebuffers);\n this._fbo = [id, id];\n }\n this._fbo.forEach((id) => {\n const framebuffer = gl.createFramebuffer() as WebXRFramebuffer;\n GL.framebuffers[id] = framebuffer;\n framebuffer.name = id;\n });\n }\n\n const ids = this._fbo as number[];\n pose.views.forEach((view) => {\n const viewIndex = view.eye == 'right' ? 1 : 0;\n\n const subImage = binding!.getViewSubImage(layer, view);\n const viewport = subImage.viewport;\n\n let destView: ViewComponent;\n if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene.leftEyeView!;\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n ids[viewIndex]\n );\n\n if (!createFramebuffer) return;\n /* Only needs to be done for the first view on when using side-by-side\n * target texture */\n if (!textureArray && viewIndex != 0) return;\n\n /* Make WebXR API created textures known to emscripten */\n const colorTexture = subImage.colorTexture as WebXRTexture;\n const colorImageId = (colorTexture.name =\n colorTexture.name || GL.getNewId(GL.textures));\n GL.textures[colorImageId] = colorTexture;\n\n const depthStencilTexture = subImage.depthStencilTexture as WebXRTexture;\n const depthStencilImageId = (depthStencilTexture.name =\n depthStencilTexture.name || GL.getNewId(GL.textures));\n GL.textures[depthStencilImageId] = depthStencilTexture;\n\n /* Attach textures to framebuffer */\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]);\n\n if (textureArray) {\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n subImage.colorTexture,\n 0,\n subImage.imageIndex\n );\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n subImage.depthStencilTexture,\n 0,\n subImage.imageIndex\n );\n } else {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n subImage.colorTexture,\n 0\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.TEXTURE_2D,\n subImage.depthStencilTexture,\n 0\n );\n }\n\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER)) {\n console.error('Target framebuffer for', view.eye, 'eye is incomplete.');\n }\n });\n\n this.nextFrame(time, frame);\n }\n\n private _updateInputComponent(\n frame: XRFrame,\n space: XRSpace | undefined,\n inputType: InputType\n ) {\n if (!space) return;\n const pose = frame.getPose(space, this._refSpace!);\n if (!pose || Number.isNaN(pose.transform.matrix[0])) return;\n this._tempPose(pose.transform);\n this.engine.scene._setInputTransformation(\n inputType,\n this._tempPosition,\n this._tempRotation\n );\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {InstantiateGltfResult, Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {Object3D} from './wonderland.js';\n\n/** GLTF-specific loading options. */\nexport type GLTFOptions = {\n /** If `true`, extensions will be parsed. */\n extensions?: boolean;\n};\n\n/**\n * Extension data obtained from glTF files.\n */\nexport interface GLTFExtensionsInstance {\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\nexport class GLTFExtensions {\n objectCount: number;\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record = {};\n /**\n * Mesh extension objects. Key is the gltf index, value is JSON\n * data indexed by extension name.\n */\n mesh: Record> = {};\n /**\n * Node extension objects. Key is a glTF index, value is JSON\n * data indexed by extension name.\n */\n node: Record> = {};\n\n constructor(count: number) {\n this.objectCount = count;\n }\n}\n\n/**\n * glTF scene.\n *\n * At the opposite of {@link Scene}, glTF scenes can be instantiated\n * in other scenes but can't:\n * - Be activated\n * - Be the destination of an instantiation\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n *\n * const scene = engine.scene;\n * for (let i = 0; i < 100; ++i) {\n * scene.instantiate(prefab);\n * }\n * ```\n *\n * Since this class inherits from {@link Prefab}, you can use the shared\n * API to modify the glTF before an instantiation:\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n * const zombie = prefab.findByName('Zombie')[0];\n *\n * // The mesh is too small, we scale the root\n * zombie.setScalingWorld([2, 2, 2]);\n * // Add a custom js 'health' component to the root\n * zombie.addComponent('health', {value: 100});\n *\n * // 'Zombie' is wrapped in a new root added during instantiation\n * const {root} = engine.scene.instantiate(prefab);\n * const instanceZombie = root.children[0];\n * console.log(instanceZombie.getScalingWorld()); // Prints '[2, 2, 2]'\n * ```\n *\n * @category scene\n * @since 1.2.0\n */\nexport class PrefabGLTF extends Prefab {\n /**\n * Raw extensions read from the glTF file.\n *\n * The extensions will be mapped to the hierarchy upon instantiation.\n * For more information, have a look at the {@link InstantiateGltfResult} type.\n *\n * @note The glTF must be loaded with `extensions` enabled. If not, this\n * field will be set to `null`. For more information, have a look at the\n * {@link GLTFOptions} type.\n */\n extensions: GLTFExtensions | null = null;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n this.extensions = this._readExtensions();\n }\n\n /**\n * Instantiate the glTF extensions on an active sub scene graph.\n *\n * @param id The root object id.\n * @param result The instantiation object result.\n *\n * @hidden\n */\n _processInstantiaton(dest: Prefab, root: Object3D, result: InstantiateGltfResult) {\n if (!this.extensions) return null;\n\n const wasm = this.engine.wasm;\n\n const count = this.extensions.objectCount;\n const idMapping: number[] = new Array(count);\n\n /** @todo: We need some check to ensure that the gltf layout didn't change to retarget extensions.\n * At least a simple scene graph size check should be required to avoid a segfault. */\n\n const activeRootIndex = wasm._wl_object_index(root._id);\n for (let i = 0; i < count; ++i) {\n const mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(\n this._index,\n dest._index,\n activeRootIndex,\n i\n );\n idMapping[i] = mappedId;\n }\n\n const remapped: GLTFExtensionsInstance = {\n mesh: {},\n node: {},\n idMapping,\n };\n\n for (const gltfIndex in this.extensions.mesh) {\n const id = idMapping[gltfIndex];\n remapped.mesh[id] = this.extensions.mesh[gltfIndex];\n }\n for (const gltfIndex in this.extensions.node) {\n const id = idMapping[gltfIndex];\n remapped.node[id] = this.extensions.node[gltfIndex];\n }\n\n result.extensions = remapped;\n }\n\n /**\n * Unmarshalls gltf extensions.\n *\n * @hidden\n */\n private _readExtensions() {\n const wasm = this.engine.wasm;\n\n const ptr = wasm._wl_glTF_scene_get_extensions(this._index);\n if (!ptr) return null;\n\n let index = ptr / 4;\n const data = wasm.HEAPU32;\n const readString = () => {\n const strPtr = data[index++];\n const strLen = data[index++];\n return wasm.UTF8ViewToString(strPtr, strPtr + strLen);\n };\n\n const objectCount = data[index++];\n const extensions = new GLTFExtensions(objectCount);\n\n const meshExtensionsSize = data[index++];\n for (let i = 0; i < meshExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.mesh[objectId] = JSON.parse(readString());\n }\n const nodeExtensionsSize = data[index++];\n for (let i = 0; i < nodeExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.node[objectId] = JSON.parse(readString());\n }\n const rootExtensionsStr = readString();\n if (rootExtensionsStr) {\n extensions.root = JSON.parse(rootExtensionsStr);\n }\n\n return extensions;\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {WASM} from './wasm.js';\nimport {Emitter} from './utils/event.js';\nimport {fetchStreamWithProgress, fetchWithProgress, getBaseUrl} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Object3D,\n RayHit,\n Environment,\n ViewComponent,\n InputType,\n LogTag,\n} from './wonderland.js';\nimport {NumberArray} from './types.js';\nimport {Material} from './resources/material-manager.js';\nimport {InMemoryLoadOptions, Prefab, SceneLoadOptions} from './prefab.js';\nimport {GLTFExtensionsInstance, PrefabGLTF} from './scene-gltf.js';\n\nexport interface InstantiateResult {\n root: Object3D;\n}\n\nexport interface InstantiateGltfResult extends InstantiateResult {\n extensions: GLTFExtensionsInstance | null;\n}\n\n/** Options for scene activation. */\nexport interface ActivateOptions {\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n /**\n * If `true`, the promise will resolve only once all dependencies are downloaded.\n *\n * If `false`, resolves as soon as possible, e.g., when the lowest\n * resolution textures are available.\n */\n waitForDependencies?: boolean;\n /** @hidden */\n legacyLoaded?: boolean;\n}\n\n/**\n * Legacy gltf extension type.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadGLTF} API.\n */\nexport interface GLTFExtensionsLegacy {\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record>;\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\n/** Options for {@link Scene.append}. */\nexport interface SceneAppendParameters {\n /** Whether to load glTF extension data */\n loadGltfExtensions: boolean;\n baseURL: string | undefined;\n}\n\n/**\n * Result obtained when appending a scene with {@link Scene.append} with gltf extensions.\n */\nexport type SceneAppendResultWithExtensions = {\n root: Object3D | null;\n extensions: GLTFExtensionsLegacy;\n};\n\n/**\n * Result obtained when appending a scene with {@link Scene.append}.\n */\nexport type SceneAppendResult = (Object3D | null) | SceneAppendResultWithExtensions;\n\n/**\n * Constants\n */\n\n/** Magic number for .bin */\nconst MAGIC_BIN = 'WLEV';\n\n/**\n * Scene type to load with {@link ChunkedSceneLoadSink}.\n *\n * @since 1.2.1\n * @hidden\n */\nexport enum SceneType {\n Prefab,\n Main,\n Dependency,\n}\n\n/**\n * Sink for `WritableStream` that loads the data as a .bin file.\n *\n * Data is loaded chunk by chunk to minimize the total WASM allocation size.\n *\n * @since 1.2.1\n * @hidden\n */\nexport class ChunkedSceneLoadSink implements UnderlyingSink {\n readonly #wasm: WASM;\n readonly #type: SceneType;\n readonly #closeParameters: any[];\n #offset = 0;\n #requested = 0;\n #firstChunk = true;\n\n _loadIndex = -1;\n sceneIndex = -1;\n\n /** Pointer to the staging buffer. */\n #ptr: number = 0;\n /** Staging buffer size, in **bytes**. */\n #bufferSize: number = 0;\n\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Prefab, url: string);\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Main, url: string);\n /** @overload */\n constructor(\n engine: WonderlandEngine,\n type: SceneType.Dependency,\n url: string,\n dependentSceneIndex: number\n );\n /**\n * Constructor\n * @param engine Engine instance\n * @param type Type of scene to load\n * @param url URL for the scene creation. Can be empty.\n * @param closeParameters Parameters for the final function to be called\n * during a successful {@link ChunkedSceneLoadSink.close}.\n */\n constructor(\n engine: WonderlandEngine,\n type: SceneType,\n url: string,\n ...closeParameters: any[]\n ) {\n this.#wasm = engine.wasm;\n this.#type = type;\n this.#closeParameters = closeParameters;\n this._loadIndex = this.#wasm._wl_scene_create_chunked_start(\n this.#wasm.tempUTF8(url)\n );\n /* Initial buffer for the header chunk */\n this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex);\n this._resizeBuffer(this.#requested);\n }\n\n private _resizeBuffer(size: number) {\n if (this.#bufferSize > 0) {\n this.#wasm._free(this.#ptr);\n }\n this.#bufferSize = size;\n this.#ptr = size ? this.#wasm._malloc(size) : 0;\n }\n\n private _throwError(reason: string) {\n this.abort();\n throw new Error(reason);\n }\n\n /**\n * Write a single blob of data.\n *\n * @param blob Data to parse\n */\n write(blob: Uint8Array) {\n let read = 0;\n while (read < blob.length) {\n /* Fill the staging buffer */\n const toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset);\n /* **Do not** attempt to create a HEAP8 view here, since the next wasm call might\n * re-allocate the heap, making this view dangling. */\n this.#wasm.HEAPU8.set(\n blob.subarray(read, read + toRead),\n this.#ptr + this.#offset\n );\n this.#offset += toRead;\n read += toRead;\n\n /* Not enough data, wait for more */\n if (this.#requested > this.#offset) continue;\n\n /* Send data. This loads as many chunks as possible and then tells\n * us how much data it's missing, and how much it has read. The\n * read count allows us to move incomplete chunk data to the start\n * of the buffer. This is necessary because the buffer is allocated\n * with just enough data to hold the largest chunk. */\n const readSizePtr = this.#wasm._tempMem;\n const requestedPtr = this.#wasm._tempMem + 4;\n let success: boolean;\n try {\n success = this.#wasm._wl_scene_create_chunked_next(\n this._loadIndex,\n this.#ptr,\n this.#offset,\n readSizePtr,\n requestedPtr\n );\n } catch {\n /* Catch calls to abort(), e.g. via asserts */\n success = false;\n }\n\n if (!success) {\n this._throwError('Chunk parsing failed');\n }\n\n const sentSize = this.#offset;\n const readSize = this.#wasm._tempMemUint32[0];\n this.#requested = this.#wasm._tempMemUint32[1];\n const extraSize = sentSize - readSize;\n\n /* #requested == 0 signals end of .bin file */\n if (extraSize > this.#requested) {\n this._throwError('Unexpected extra data');\n }\n\n /* Not enough data for a chunk, wait for more */\n if (!readSize) continue;\n\n if (extraSize > 0) {\n /* We passed one or more complete chunks plus incomplete extra\n * data for the next chunk. Move it to the buffer start. */\n this.#wasm.HEAPU8.copyWithin(\n this.#ptr,\n this.#ptr + readSize,\n this.#ptr + sentSize\n );\n }\n\n this.#offset = extraSize;\n\n if (this.#firstChunk) {\n /* First chunk is the header. At this point we can query for\n * the required buffer size for parsing the rest of the .bin.\n * The initial buffer is exactly the size of the header chunk\n * so #offset should be 0 here since we sent a complete chunk. */\n this._resizeBuffer(\n this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)\n );\n this.#firstChunk = false;\n }\n }\n }\n\n /** Called when all blobs of data have been written */\n close() {\n if (this.#requested > 0) {\n this._throwError('Unexpected end of data');\n }\n\n this._resizeBuffer(0);\n switch (this.#type) {\n case SceneType.Prefab:\n this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(\n this._loadIndex\n );\n break;\n case SceneType.Main:\n this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex);\n this.sceneIndex = 0;\n break;\n case SceneType.Dependency:\n [this.sceneIndex] = this.#closeParameters;\n this.#wasm._wl_scene_create_chunked_end_queued(\n this._loadIndex,\n this.sceneIndex\n );\n break;\n default:\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n break;\n }\n this._loadIndex = -1;\n }\n\n /** Called when the stream is aborted */\n abort() {\n if (this._loadIndex === -1) return;\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n this._loadIndex = -1;\n this._resizeBuffer(0);\n }\n\n /** Staging buffer size */\n get size() {\n return this.#bufferSize;\n }\n}\n\n/**\n * Wonderland Engine (.bin) scene.\n *\n * Wonderland Engine packages two types of scene:\n * - Activatable scene: Contains objects, components, views, resources, and rendering data\n * - Streamable scene: Contains objects, components, and resources\n *\n * #### Activation\n *\n * Some scenes are **activatable**, they can thus be attached to the renderer\n * to be updated and rendered on the canvas.\n *\n * For more information, have a look at the {@link WonderlandEngine.switchTo} method.\n *\n * #### Instantiation\n *\n * Besides activation, a scene can instantiate the content of another scene.\n *\n * For more information, have a look at the {@link Scene#instantiate} method.\n *\n * @category scene\n */\nexport class Scene extends Prefab {\n /** Called before rendering the scene */\n readonly onPreRender = new Emitter();\n /** Called after the scene has been rendered */\n readonly onPostRender = new Emitter();\n\n /** Ray hit pointer in WASM heap. @hidden */\n private _rayHit: number;\n /** Ray hit. @hidden */\n private _hit: RayHit;\n\n /** @hidden */\n private _environment: Environment;\n\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n /** `this.engine?` is used for testing. */\n this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(this, this._rayHit);\n this._environment = new Environment(this);\n }\n\n /** @overload */\n instantiate(scene: PrefabGLTF): InstantiateGltfResult;\n /**\n * Instantiate `scene` into this instance.\n *\n * Any scene can be instantiated into one another. It's thus possible\n * to instantiate a {@link PrefabGLTF} into this instance, or another\n * {@link Scene} instance.\n *\n * #### Usage\n *\n * ```js\n * const prefabScene = await engine.loadScene('Prefab.bin');\n * // Instantiate `prefabScene` into `scene`\n * engine.scene.instantiate(prefabScene);\n * ```\n *\n * #### Shared Resources\n *\n * Instantiating **does not** duplicate resources. Each instance will\n * reference the same assets stored in the {@link Scene}, e.g.,\n *\n * ```js\n * // `zombie` has one mesh and one material\n * const zombie = await engine.loadScene('Zombie.bin');\n *\n * for (let i = 0; i < 100; ++i) {\n * engine.scene.instantiate(zombie);\n * }\n *\n * console.log(engine.meshes.count) // Prints '1'\n * console.log(engine.materials.count) // Prints '1'\n * ```\n *\n * #### glTF extensions\n *\n * Instantiating a prefab loaded from a .glb automatically retargets the extensions\n * to the created hierarchy:\n *\n * ```js\n * const gltf = await engine.loadGLTF({url: 'Model.glb', extensions: true});\n * const {root, extensions} = engine.scene.instantiate(gltf);\n *\n * // Retrieve Object3D instance from extension nodes list\n * for (const key in extensions.node) {\n * const object3d = engine.scene.wrap(extensions.node[key]);\n * }\n * ```\n *\n * @param scene The scene to instantiate.\n * @returns An object containing the instantiated root {@link Object3D}.\n * When a glTF is instantiated, the result can contain extra metadata.\n * For more information, have a look at the {@link InstantiateResult} type.\n *\n * @since 1.2.0\n */\n instantiate(prefab: Prefab): InstantiateResult;\n instantiate(prefab: Prefab): InstantiateResult {\n if (prefab._index === this._index) {\n throw new Error(\"Can't instantiate scene into itself\");\n }\n\n const wasm = this.engine.wasm;\n const id = wasm._wl_scene_instantiate(prefab._index, this._index);\n\n const result: InstantiateResult = {root: this.wrap(id)};\n if (prefab instanceof PrefabGLTF) {\n const obj = this.wrap(id);\n prefab._processInstantiaton(this, obj, result as InstantiateGltfResult);\n }\n return result;\n }\n\n /** @todo: Add `instantiateBatch` to instantiate multiple chunks in a row. */\n\n /**\n * @todo Provide an API to delete all resources linked to a scene.\n *\n * Example:\n *\n * ```ts\n * const scene = await engine.loadScene('Scene.bin');\n * ...\n * scene.destroy({removeResources: true});\n * ```\n */\n\n /**\n * Destroy this scene and remove it from the engine.\n *\n * @note Destroying a scene **doesn't** remove the materials, meshes,\n * and textures it references in the engine. Those should be cleaned up either by loading\n * another main scene via {@link WonderlandEngine.loadMainScene}, or manually using {@link Mesh.destroy}.\n *\n * @throws If the scene is currently active.\n * */\n destroy() {\n if (this.isActive) {\n throw new Error(\n `Attempt to destroy ${this}, but destroying the active scene is not supported`\n );\n }\n\n /* Store before calling `super.destroy()` since the call\n * might destroy entirely the prototype. */\n const wasm = this.engine.wasm;\n const rayPtr = this._rayHit;\n\n super.destroy();\n\n wasm._free(rayPtr);\n }\n\n /**\n * View components.\n */\n get views(): ViewComponent[] {\n return this._components.components(ViewComponent, false);\n }\n\n /**\n * Active view components.\n */\n get activeViews(): ViewComponent[] {\n return this._components.components(ViewComponent, true);\n }\n\n /**\n * Main view.\n */\n get mainView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_mainView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Left eye view.\n */\n get leftEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_leftView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Right eye view.\n */\n get rightEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_rightView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Set input transformation.\n *\n * @hidden\n */\n _setInputTransformation(\n type: InputType,\n position: Readonly,\n orientation: Readonly\n ) {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(4 * 2 * 4);\n wasm._tempMemFloat.set(position);\n wasm._tempMemFloat.set(orientation, 4);\n wasm._wl_input_set_transformation(this._index, type, wasm._tempMem);\n }\n\n /**\n * Cast a ray through the scene and find intersecting collision components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.scene.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of collision groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Scene}\n * instance and will be reused with the next {@link Scene#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance = 100.0\n ): RayHit {\n this.engine.wasm._wl_scene_ray_cast(\n this._index,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n this._rayHit,\n maxDistance\n );\n return this._hit;\n }\n\n /**\n * Set the background clear color.\n *\n * @param color new clear color (RGBA).\n * @since 0.8.5\n */\n set clearColor(color: number[]) {\n this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]);\n }\n\n /**\n * Set whether to clear the color framebuffer before drawing.\n *\n * This function is useful if an external framework (e.g. an AR tracking\n * framework) is responsible for drawing a camera frame before Wonderland\n * Engine draws the scene on top of it.\n *\n * @param b Whether to enable color clear.\n * @since 0.9.4\n */\n set colorClearEnabled(b: boolean) {\n this.engine.wasm._wl_scene_enableColorClear(b);\n }\n\n /**\n * Load a scene file (.bin).\n *\n * Will replace the currently active scene with the one loaded\n * from given file. It is assumed that JavaScript components required by\n * the new scene were registered in advance.\n *\n * Once the scene is loaded successfully and initialized,\n * {@link WonderlandEngine.onSceneLoaded} is notified.\n *\n * #### ArrayBuffer\n *\n * The `load()` method accepts an in-memory buffer:\n *\n * ```js\n * scene.load({\n * buffer: new ArrayBuffer(...),\n * baseURL: 'https://my-website/assets'\n * })\n * ```\n *\n * @note The `baseURL` is mandatory. It's used to fetch images and languages.\n *\n * Use {@link Scene.setLoadingProgress} to update the loading progress bar\n * when using an ArrayBuffer.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadMainScene} API.\n *\n * @param options Path to the file to load, or an option object.\n * For more information about the options, see the {@link SceneLoadOptions} documentation.\n * @returns Promise that resolves when the scene was loaded.\n */\n async load(options: string | SceneLoadOptions): Promise {\n const engine = this.engine;\n\n /** @todo(2.0.0): Remove this method. */\n let dispatchReadyEvent = false;\n let opts: InMemoryLoadOptions;\n if (isString(options)) {\n opts = await Scene.loadBuffer(options, (bytes: number, size: number) => {\n this.engine.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.engine.setLoadingProgress(bytes / size);\n });\n } else {\n opts = options;\n dispatchReadyEvent = options.dispatchReadyEvent ?? false;\n }\n\n const scene = await engine.loadMainSceneFromBuffer({\n ...opts,\n dispatchReadyEvent,\n });\n /* Do not use `this`, since `loadMainScene` will destroy it.\n * `erasePrototypeOnDestroy` would make this instance unusable. */\n engine.onSceneLoaded.notify();\n return scene;\n }\n\n /**\n * Append a scene file.\n *\n * Loads and parses the file and its images and appends the result\n * to the currently active scene.\n *\n * Supported formats are streamable Wonderland scene files (.bin) and glTF\n * 3D scenes (.gltf, .glb).\n *\n * ```js\n * WL.scene.append(filename).then(root => {\n * // root contains the loaded scene\n * });\n * ```\n *\n * In case the `loadGltfExtensions` option is set to true, the response\n * will be an object containing both the root of the loaded scene and\n * any glTF extensions found on nodes, meshes and the root of the file.\n *\n * ```js\n * WL.scene.append(filename, { loadGltfExtensions: true }).then(({root, extensions}) => {\n * // root contains the loaded scene\n * // extensions.root contains any extensions at the root of glTF document\n * const rootExtensions = extensions.root;\n * // extensions.mesh and extensions.node contain extensions indexed by Object id\n * const childObject = root.children[0];\n * const meshExtensions = root.meshExtensions[childObject.objectId];\n * const nodeExtensions = root.nodeExtensions[childObject.objectId];\n * // extensions.idMapping contains a mapping from glTF node index to Object id\n * });\n * ```\n *\n * If the file to be loaded is located in a subfolder, it might be useful\n * to define the `baseURL` option. This will ensure any bin files\n * referenced by the loaded bin file are loaded at the correct path.\n *\n * ```js\n * WL.scene.append(filename, { baseURL: 'scenes' }).then(({root, extensions}) => {\n * // do stuff\n * });\n * ```\n *\n * @deprecated Use the new {@link Prefab} and {@link Scene} API.\n *\n * @param file The .bin, .gltf or .glb file to append. Should be a URL or\n * an `ArrayBuffer` with the file content.\n * @param options Additional options for loading.\n * @returns Promise that resolves when the scene was appended.\n */\n async append(\n file: string | ArrayBuffer,\n options: Partial = {}\n ): Promise {\n /** @todo(2.0.0): Remove this method. */\n\n const {baseURL = isString(file) ? getBaseUrl(file) : this.baseURL} = options;\n\n const buffer = isString(file) ? await fetchWithProgress(file) : file;\n const data = new Uint8Array(buffer);\n const isBinFile =\n data.byteLength > MAGIC_BIN.length &&\n data\n .subarray(0, MAGIC_BIN.length)\n .every((value, i) => value === MAGIC_BIN.charCodeAt(i));\n\n const scene = isBinFile\n ? this.engine.loadPrefabFromBuffer({buffer, baseURL})\n : this.engine.loadGLTFFromBuffer({\n buffer,\n baseURL,\n extensions: options.loadGltfExtensions,\n });\n\n const result = this.instantiate(scene)!;\n if (scene instanceof PrefabGLTF) {\n if (!scene.extensions) return result.root;\n return {\n root: result.root,\n extensions: {\n ...(result as InstantiateGltfResult).extensions,\n root: scene.extensions.root,\n },\n } as SceneAppendResultWithExtensions;\n }\n\n scene.destroy();\n return result.root;\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @deprecated Use {@link WonderlandEngine.setLoadingProgress}.\n */\n setLoadingProgress(percentage: number) {\n this.engine.setLoadingProgress(percentage);\n }\n\n /**\n * Dispatch an event 'wle-scene-ready' in the document.\n *\n * @note This is used for automatic testing.\n */\n dispatchReadyEvent() {\n document.dispatchEvent(\n new CustomEvent('wle-scene-ready', {\n detail: {filename: this.filename},\n })\n );\n }\n\n /**\n * Set the current material to render the sky.\n *\n * @note The sky needs to be enabled in the editor when creating the scene.\n * For more information, please refer to the background [tutorial](https://wonderlandengine.com/tutorials/background-effect/).\n */\n set skyMaterial(material: Material | null) {\n this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0);\n }\n\n /** Current sky material, or `null` if no sky is set. */\n get skyMaterial(): Material | null {\n const index = this.engine.wasm._wl_scene_get_sky_material(this._index);\n return this.engine.materials.wrap(index);\n }\n\n /**\n * Environment lighting properties.\n *\n * @since 1.2.3\n */\n get environment(): Environment {\n return this._environment;\n }\n\n /**\n * Relative url to the js components bundle\n *\n * Returns `null` if the scene was built without a components bundle.\n */\n get componentsBundle(): string | null {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_componentsBundle(this._index);\n return ptr ? wasm.UTF8ToString(ptr) : null;\n }\n\n /**\n * Reset the scene.\n *\n * This method deletes all used and allocated objects, and components.\n *\n * @deprecated Load a new scene and activate it instead.\n */\n reset() {\n /** @todo(2.0.0): Remove this method. */\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependency(url: string) {\n const sink = new ChunkedSceneLoadSink(\n this.engine,\n SceneType.Dependency,\n url,\n this._index\n );\n const stream = await fetchStreamWithProgress(url);\n return stream.pipeTo(new WritableStream(sink));\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependencies() {\n const wasm = this.engine.wasm;\n\n const count = wasm._wl_scene_queued_bin_count(this._index);\n if (!count) return Promise.resolve();\n\n const urls = new Array(count).fill(0).map((_, i: number) => {\n const ptr = wasm._wl_scene_queued_bin_path(this._index, i);\n const url = wasm.UTF8ToString(ptr);\n return url;\n });\n\n wasm._wl_scene_clear_queued_bin_list(this._index);\n\n return Promise.all(urls.map((url: string) => this._downloadDependency(url)));\n }\n}\n", "import {\n Component,\n ComponentConstructor,\n Object as Object3D,\n Physics,\n I18N,\n MorphTargets,\n Texture,\n Font,\n DestroyedPrefabInstance,\n ParticleEffect,\n} from './wonderland.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {isString} from './utils/object.js';\nimport {APIVersion, Version} from './version.js';\nimport {WASM} from './wasm.js';\nimport {Logger} from './utils/logger.js';\nimport {clamp} from './utils/misc.js';\nimport {MaterialManager} from './resources/material-manager.js';\nimport {MeshManager} from './resources/mesh-manager.js';\nimport {ResourceManager} from './resources/resource.js';\nimport {needsFlipY, TextureManager} from './resources/texture-manager.js';\nimport {LogTag} from './wonderland.js';\nimport {Constructor, ImageLike, ProgressCallback} from './types.js';\nimport {XRSessionState, WebXR} from './webxr.js';\nimport {Prefab, InMemoryLoadOptions, LoadOptions, StreamLoadOptions} from './prefab.js';\nimport {Scene, ActivateOptions, ChunkedSceneLoadSink, SceneType} from './scene.js';\nimport {PrefabGLTF, GLTFOptions} from './scene-gltf.js';\nimport {ArrayBufferSource, onImageReady} from './utils/fetch.js';\n\n/**\n * Ensures that this API is compatible with the given\n * runtime version.\n *\n * We only enforce compatibility for major and minor components, i.e.,\n * the runtime and the API must both be of the form `x.y.*`.\n *\n * @throws If the major or the minor components are different.\n *\n * @param version The target version\n */\nexport function checkRuntimeCompatibility(version: Version) {\n const {major, minor} = version;\n\n let majorDiff = major - APIVersion.major;\n let minorDiff = minor - APIVersion.minor;\n /* Same version, so perfectly compatible. */\n if (!majorDiff && !minorDiff) return;\n\n const error =\n 'checkRuntimeCompatibility(): Version compatibility mismatch:\\n' +\n '\\t\u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*)\\n';\n\n const isRuntimeOlder = majorDiff < 0 || (!majorDiff && minorDiff < 0);\n if (isRuntimeOlder) {\n /* Runtime is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`\n );\n }\n /* API is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a new API version >= ${version.major}.${version.minor}.*`\n );\n}\n\n/**\n * Reload the browser tab.\n *\n * @note This method first ensures the XR session is terminated,\n * to avoid blocking the Oculus Quest page.\n *\n * @param engine The engine instance\n */\nfunction reloadPage(engine: WonderlandEngine) {\n /* End XR session for Oculus Quest blocking reload otherwise */\n const session = engine.xr?.session ?? null;\n if (!session) {\n location.reload();\n return;\n }\n session.end().then(() => location.reload());\n}\n\n/**\n * Main Wonderland Engine instance.\n *\n * Controls the canvas, rendering, and JS <-> WASM communication.\n */\nexport class WonderlandEngine {\n /**\n * {@link Emitter} for WebXR session end events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionEnd.add(() => console.log(\"XR session ended.\"));\n * ```\n */\n get onXRSessionEnd(): Emitter {\n return this.#webxr.onSessionEnd;\n }\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionStart.add((session, mode) => console.log(session, mode));\n * ```\n *\n * By default, this emitter is retained and will automatically call any callback added\n * while a session is already started:\n *\n * ```js\n * // XR session is already active.\n * this.engine.onXRSessionStart.add((session, mode) => {\n * console.log(session, mode); // Triggered immediately.\n * });\n * ```\n */\n get onXRSessionStart(): Emitter<[XRSession, XRSessionMode]> {\n return this.#webxr.onSessionStart;\n }\n\n /**\n * {@link Emitter} for canvas / main framebuffer resize events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onResize.add(() => {\n * const canvas = this.engine.canvas;\n * console.log(`New Size: ${canvas.width}, ${canvas.height}`);\n * });\n * ```\n *\n * @note The size of the canvas is in physical pixels, and is set via {@link WonderlandEngine.resize}.\n */\n readonly onResize: Emitter = new Emitter();\n\n /** Whether AR is supported by the browser. */\n get arSupported(): boolean {\n return this.#webxr.arSupported;\n }\n\n /** Whether VR is supported by the browser. */\n get vrSupported(): boolean {\n return this.#webxr.vrSupported;\n }\n\n /**\n * {@link RetainEmitter} signalling the end of the loading screen.\n *\n * Listeners get notified when the first call to {@link Scene#load()} is\n * invoked. At this point the new scene has not become active, and none of\n * its resources or components are initialized.\n *\n * Compared to {@link onSceneLoaded}, this does not wait for all components\n * to be fully initialized and activated. Any handler added inside\n * {@link Component#init()}, {@link Component#start()} or\n * {@link Component#onActivate()} will be called immediately.\n *\n * Usage:\n *\n * ```js\n * this.engine.onLoadingScreenEnd.add(() => console.log(\"Wait is over!\"));\n * ```\n */\n readonly onLoadingScreenEnd = new RetainEmitter();\n\n /**\n * {@link Emitter} for scene loaded events.\n *\n * Listeners get notified when a call to {@link Scene#load()} finishes. At\n * this point all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneLoaded.add(() => console.log(\"Scene switched!\"));\n * ```\n *\n * @deprecated Use {@link onSceneActivated} instead.\n */\n readonly onSceneLoaded = new Emitter();\n\n /**\n * {@link Emitter} for scene activated events.\n *\n * This listener is notified with the old scene as first parameter, and\n * the new scene as second.\n *\n * This listener is notified after all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneActivated.add((oldScene, newScene) => {\n * console.log(`Scene switch from ${oldScene.filename} to ${newScene.filename}`);\n * });\n * ```\n */\n readonly onSceneActivated = new Emitter<[Scene, Scene]>();\n\n /**\n * Triggered when a hot reload is requested.\n *\n * When using the Wonderland Editor, this will be triggered when packaging\n * the project.\n *\n * @note When {@link autoHotReload} is `true`, the emitter is notified after the\n * scene is reloaded.\n *\n * To customize the hot reload behavior, set the {@link autoHotReload} to `false`,\n * and use this emitter:\n *\n * ```js\n * this.engine.onHotReloadRequest.add(async (filename: string) => {\n * // This handler can be used to re-download a scene, download components,\n * // fetch an API, anything!\n * await this.loadMainScene(filename);\n * });\n * ```\n */\n readonly onHotReloadRequest: Emitter<[string]> = new Emitter();\n\n /**\n * Access to internationalization.\n */\n readonly i18n: I18N = new I18N(this);\n\n /**\n * WebXR related state, `null` if no XR session is active.\n */\n get xr(): XRSessionState | null {\n return this.#webxr.sessionState;\n }\n\n /**\n * If `true`, {@link Texture}, {@link Object3D}, and {@link Component}\n * instances have their prototype erased upon destruction.\n *\n * #### Object\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = engine.scene.addObject();\n * obj.name = 'iamalive';\n * console.log(obj.name); // Prints 'iamalive'\n *\n * obj.destroy();\n * console.log(obj.name); // Throws an error\n * ```\n *\n * #### Component\n *\n * Components will also be affected:\n *\n * ```js\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * alive: Property.bool(true)\n * };\n *\n * start() {\n * this.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * A component is also destroyed if its ancestor gets destroyed:\n *\n * ```js\n * class MyComponent extends Component {\n * ...\n * start() {\n * this.object.parent.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * @note Native components will not be erased if destroyed via object destruction:\n *\n * ```js\n * const mesh = obj.addComponent('mesh');\n * obj.destroy();\n * console.log(mesh.active) // Doesn't throw even if the mesh is destroyed\n * ```\n *\n * @since 1.1.1\n */\n erasePrototypeOnDestroy = false;\n\n /**\n * If `true`, the materials will be wrapped in a proxy to support pre-1.2.0\n * material access, i.e.,\n *\n * ```js\n * const material = new Material(engine, 'Phong Opaque');\n * material.diffuseColor = [1.0, 0.0, 0.0, 1.0];\n * ```\n *\n * If `false`, property accessors will not be available and material\n * properties should be accessed via methods, i.e.,\n *\n * ```js\n * const PhongOpaque = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongOpaque();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ...\n * const diffuse = material.getDiffuseColor();\n * ```\n *\n * When disabled, reading/writing to materials is slightly more efficient on the CPU.\n */\n legacyMaterialSupport = true;\n\n /**\n * If `true`, automatically reloads the scene sent by the editor socket.\n *\n * @note The {@link onHotReloadRequest} emitter is notified **after** the scene is re-loaded.\n *\n * To use custom hot-reload code, set this boolean to `false` and add the reloading code\n *\n */\n autoHotReload = true;\n\n /**\n * If `true`, uncompressed images will be automatically converted\n * to `ImageBitmap` before upload to the GPU.\n *\n * For more information, have a look at the\n * [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) documentation.\n */\n loadUncompressedImagesAsBitmap = false;\n\n /**\n * Scene cache in scene manager.\n *\n * @hidden\n */\n _scenes: (Prefab | null)[] = [];\n\n /**\n * Currently active scene.\n *\n * @hidden\n */\n _scene: Scene;\n\n /** Incremented every time a new main scene is loaded. */\n _mainSceneVersion: number = 0;\n\n /** @hidden */\n private _textures!: TextureManager;\n /** @hidden */\n private _materials!: MaterialManager;\n /** @hidden */\n private _meshes!: MeshManager;\n /** @hidden */\n private _morphTargets!: ResourceManager;\n /** @hidden */\n private _fonts!: ResourceManager;\n /** @hidden */\n private _particleEffects!: ResourceManager;\n /**\n * Current loading uncompressed images.\n *\n * @note Indexed by js image index.\n *\n * @hidden\n */\n private _uncompressedPromises: Promise[] = [];\n\n /**\n * WebAssembly bridge.\n *\n * @hidden\n */\n #wasm: WASM;\n\n /**\n * Physics manager, only available when physx is enabled in the runtime.\n *\n * @hidden\n */\n #physics: Physics | null = null;\n\n /**\n * WebXR library.\n *\n * @hidden\n */\n #webxr: WebXR;\n\n /**\n * Resize observer to track for canvas size changes.\n *\n * @hidden\n */\n #resizeObserver: ResizeObserver | null = null;\n\n /**\n * Whether a components bundle has already been loaded or not.\n *\n * @hidden\n */\n #bundleCache: Set = new Set();\n\n /**\n * Create a new engine instance.\n *\n * @param wasm Wasm bridge instance\n * @param loadingScreen Loading screen .bin file data\n *\n * @hidden\n */\n constructor(wasm: WASM, loadingScreen: ArrayBuffer | null, withRenderer: boolean) {\n this.#wasm = wasm;\n this.#wasm['_setEngine'](this); /* String lookup to bypass private. */\n this.#wasm._loadingScreen = loadingScreen;\n\n const version = this.runtimeVersion;\n let versionString = `${version.major}.${version.minor}.${version.patch}`;\n if (version.rc > 0) {\n versionString += `-rc${version.rc}`;\n }\n this.log.info(LogTag.Engine, 'Wonderland Engine runtime version:', versionString);\n\n this.#webxr = new WebXR(this);\n\n checkRuntimeCompatibility(this.#wasm.runtimeVersion);\n\n /* Setup the error handler. This is used to to manage native errors. */\n this.#wasm._wl_set_error_callback(\n this.#wasm.addFunction((messagePtr: number) => {\n throw new Error(this.#wasm.UTF8ToString(messagePtr));\n }, 'vi')\n );\n\n this.#wasm._wl_application_create();\n\n this.#physics = null;\n\n if (this.#wasm.withPhysX) {\n this.#physics = new Physics(this);\n }\n\n this._init(withRenderer);\n\n this._scene = this._reload(0);\n\n this.canvas.addEventListener(\n 'webglcontextlost',\n (e) => this.log.error(LogTag.Engine, 'Context lost:', e),\n false\n );\n }\n\n /**\n * Start the engine if it's not already running.\n *\n * When using the {@link loadRuntime} function, this method is called\n * automatically.\n */\n start(): void {\n this.wasm._wl_application_start();\n }\n\n /**\n * Register a custom JavaScript component type.\n *\n * You can register a component directly using a class inheriting from {@link Component}:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myParam: {type: Type.Float, default: 42.0},\n * };\n * init() {}\n * start() {}\n * update(dt) {}\n * onActivate() {}\n * onDeactivate() {}\n * onDestroy() {}\n * });\n *\n * // Here, we assume we have an engine already instantiated.\n * // In general, the registration occurs in the `index.js` file in your\n * // final application.\n * engine.registerComponent(MyComponent);\n * ```\n *\n * {@label CLASSES}\n * @param classes Custom component(s) extending {@link Component}.\n *\n * @since 1.0.0\n */\n registerComponent(...classes: ComponentConstructor[]) {\n for (const arg of classes) {\n this.wasm._registerComponent(arg);\n }\n }\n\n /**\n * Register a component bundle\n *\n * The module must be of the form:\n *\n * ```js\n * export default function(engine) {\n * engine.registerComponent(MyComponent);\n * ...\n * }\n * ```\n *\n * Alternatively, you can manually register a component bundle:\n *\n * ```js\n * const registerBundle = (await import(url)).default;\n * registerBundle(engine);\n * ```\n *\n * @param url The URL of the module to register.\n * @param nocache If `true`, force browser to re-download the file.\n */\n async registerBundle(url: string, nocache = false) {\n if (!nocache && this.#bundleCache.has(url)) return;\n this.#bundleCache.add(url);\n\n if (nocache) url += `?t=${Date.now()}`;\n const register = (await import(url)).default;\n if (typeof register !== 'function') {\n throw new Error(\n `The bundle '${url}' doesn't have a default exported registration function`\n );\n }\n register(this);\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @since 1.2.1\n */\n setLoadingProgress(percentage: number) {\n this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1));\n }\n\n /**\n * Switch the current active scene.\n *\n * Once active, the scene will be updated and rendered on the canvas.\n *\n * The currently active scene is accessed via {@link WonderlandEngine.scene}:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * start() {\n * console.log(this.scene === this.engine.scene); // Prints `true`\n * }\n * }\n * ```\n *\n * @note This method will throw if the scene isn't activatable.\n *\n * #### Component Lifecycle\n *\n * Marking a scene as active will:\n * * Call {@link Component#onDeactivate} for all active components of the previous scene\n * * Call {@link Component#onActivate} for all active components of the new scene\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * engine.switchTo(scene);\n * ```\n *\n * @returns A promise that resolves once the scene is ready.\n *\n * @since 1.2.0\n */\n async switchTo(scene: Scene, opts: ActivateOptions = {}) {\n this.wasm._wl_deactivate_activeScene();\n\n /* Switch reference on engine **just** before activating, to allow\n * component to use `this.engine.scene` in `onActivate()`/`start()`. */\n const previous = this.scene;\n this._preactivate(scene);\n\n this.wasm._wl_scene_activate(scene._index);\n\n /* Enable/disable required views */\n this.#webxr.updateViewState(undefined);\n\n /* We loaded new views, update WebXR projection parameters */\n this.#webxr.updateProjectionParams(undefined, undefined);\n\n if (!this.onLoadingScreenEnd.isDataRetained) {\n this.onLoadingScreenEnd.notify();\n }\n\n /* For now, we always automatically download dependencies for\n * the user, i.e., separate textures.bin and languages.bin.\n *\n * In the future, we can eventually expose this in the chunk API\n * to give more control to the user if needed.\n *\n * We do not make the user wait until the textures download is complete. */\n const promise = scene._downloadDependencies();\n\n await this.i18n.setLanguage(this.i18n.languageCode(0));\n\n const {dispatchReadyEvent = false, waitForDependencies = false} = opts;\n\n if (waitForDependencies) await promise;\n\n this.onSceneActivated.notify(previous, scene);\n\n if (dispatchReadyEvent) scene.dispatchReadyEvent();\n }\n\n /**\n * Load the scene from a URL, as the main scene of a new {@link Scene}.\n *\n * #### Usage\n *\n * ```js\n * // The method returns the main scene\n * const scene = await engine.loadMainScene();\n * ```\n *\n * #### Destruction\n *\n * Loading a new main scene entirely resets the state of the engine, and destroys:\n * - All loaded scenes, prefabs, and gltf files\n * - Meshes\n * - Textures\n * - Materials\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback. When setting a custom\n * callback, you need to manually call {@link setLoadingProgress} to\n * get progress updates in the loading screen.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainScene(\n options: LoadOptions & ActivateOptions,\n progress?: ProgressCallback\n ) {\n /**\n * @todo: It's currently possible to put the runtime in a limbo\n * state using hot-reload: Multiple reload requests are sent, and scene loading\n * ends up being interleaved.\n *\n * Add a system to cancel the last loading, if any.\n */\n\n progress ??= (bytes: number, size: number) => {\n this.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.setLoadingProgress(bytes / size);\n };\n\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true, nocache = false} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const {stream, url} = Prefab.validateStreamOptions(options);\n return this._loadMainScene(stream, url, nocache, options as ActivateOptions);\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadMainSceneFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadMainScene}, but loading is done\n * from an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainSceneFromBuffer(options: InMemoryLoadOptions & ActivateOptions) {\n const {nocache = false} = options;\n const {buffer, url} = Prefab.validateBufferOptions(options);\n return this._loadMainScene(buffer, url, nocache, options);\n }\n\n /**\n * Load a {@link Prefab} from a URL.\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadPrefab('Prefab.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n * @note This method is a wrapper around {@link WonderlandEngine.loadPrefabFromBuffer}.\n *\n * @param url The URL pointing to the prefab to load.\n * @param progress Optional progress callback.\n * @returns The loaded {@link Prefab}.\n */\n async loadPrefab(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadPrefabFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadPrefab}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Prefab}.\n */\n loadPrefabFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Load a scene from a URL.\n *\n * At the opposite of {@link WonderlandEngine.loadMainScene}, the scene loaded\n * will be added to the list of existing scenes, and its resources will be made\n * available for other scenes/prefabs/gltf to use.\n *\n * #### Resources Sharing\n *\n * Upon loading, the scene resources are added in the engine, and references\n * to those resources are updated.\n *\n * It's impossible for a scene loaded with this method to import pipelines.\n * Thus, the loaded scene will reference existing pipelines in the main scene,\n * based on their names.\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link Scene}.\n */\n async loadScene(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadSceneFromBuffer(options);\n }\n }\n\n /**\n * Create a glTF scene from a URL.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @note This method is a wrapper around {@link WonderlandEngine.loadGLTFFromBuffer}.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options, optionally including\n * {@link GLTFOptions}. {@link LoadOptions.streamed} is ignored as\n * streamed glTF parsing isn't supported.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n async loadGLTF(opts: LoadOptions & GLTFOptions, progress?: ProgressCallback) {\n const memOptions = await Scene.loadBuffer(opts, progress);\n const options = isString(opts) ? memOptions : {...opts, ...memOptions};\n return this.loadGLTFFromBuffer(options);\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadScene}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @throws If the scene is streamable.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Scene}.\n */\n loadSceneFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadGLTF}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @param options An object containing the buffer and extra glTF metadata.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n loadGLTFFromBuffer(options: InMemoryLoadOptions & GLTFOptions) {\n Scene.validateBufferOptions(options);\n const {buffer, extensions = false} = options;\n\n const wasm = this.wasm;\n\n if (!wasm._wl_glTF_scene_create) {\n throw new Error(\n 'Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings.'\n );\n }\n\n const ptr = wasm.copyBufferToHeap(buffer);\n\n try {\n const index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength);\n const scene = new PrefabGLTF(this, index);\n this._scenes[scene._index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n if (this.runtimeVersion.patch) {\n this._loadUncompressedImages(scene._index);\n }\n return scene;\n } finally {\n /* Catch calls to abort(), e.g. via asserts */\n wasm._free(ptr);\n }\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param typeOrClass A string representing the component typename (e.g., `'cursor-component'`),\n * or a component class (e.g., `CursorComponent`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(typeOrClass: string | ComponentConstructor) {\n return this.#wasm.isRegistered(\n isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName\n );\n }\n\n /**\n * Retrieve the registered component from its type name.\n *\n * @param typename The component {@link Component.TypeName} property\n * @returns The class if a component was registered with given name, `null` otherwise.\n */\n getComponentClass(\n typename: string\n ): ComponentConstructor | null {\n const index = this.wasm._componentTypeIndices[typename];\n if (index === undefined) return null;\n return this.wasm._componentTypes[index] as ComponentConstructor;\n }\n\n /**\n * Resize the canvas and the rendering context.\n *\n * @note The `width` and `height` parameters will be scaled by the\n * `devicePixelRatio` value. By default, the pixel ratio used is\n * [window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n *\n * @param width The width, in CSS pixels.\n * @param height The height, in CSS pixels.\n * @param devicePixelRatio The pixel ratio factor.\n */\n resize(width: number, height: number, devicePixelRatio = window.devicePixelRatio) {\n width = width * devicePixelRatio;\n height = height * devicePixelRatio;\n this.canvas.width = width;\n this.canvas.height = height;\n this.wasm._wl_application_resize(width, height);\n this.onResize.notify();\n }\n\n /**\n * Run the next frame.\n *\n * @param fixedDelta The elapsed time between this frame and the previous one.\n *\n * @note The engine automatically schedules next frames. You should only\n * use this method for testing.\n */\n nextFrame(fixedDelta: number = 0) {\n this.#wasm._wl_nextFrame(fixedDelta);\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.requestSession(mode, features, optionalFeatures);\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.offerSession(mode, features, optionalFeatures);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n * @returns The object\n *\n * @deprecated Use {@link Scene#wrap} instead.\n *\n */\n wrapObject(objectId: number): Object3D {\n return this.scene.wrap(objectId);\n }\n\n toString() {\n return 'engine';\n }\n\n /* Public Getters & Setter */\n\n /** Currently active scene. */\n get scene(): Scene {\n return this._scene;\n }\n\n /**\n * WebAssembly bridge.\n *\n * @note Use with care. This object is used to communicate\n * with the WebAssembly code throughout the api.\n *\n * @hidden\n */\n get wasm(): WASM {\n return this.#wasm;\n }\n\n /**\n * WebXR api.\n *\n * @hidden\n */\n get webxr(): WebXR {\n return this.#webxr;\n }\n\n /** Canvas element that Wonderland Engine renders to. */\n get canvas(): HTMLCanvasElement {\n return this.#wasm.canvas;\n }\n\n /**\n * Current WebXR session or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.session} on the {@link xr}\n * object instead.\n */\n get xrSession(): XRSession | null {\n return this.xr?.session ?? null;\n }\n\n /**\n * Current WebXR frame or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.frame} on the {@link xr}\n * object instead.\n */\n get xrFrame(): XRFrame | null {\n return this.xr?.frame ?? null;\n }\n\n /**\n * Current WebXR base layer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.baseLayer} on the {@link xr}\n * object instead.\n */\n get xrBaseLayer(): XRProjectionLayer | XRWebGLLayer | null {\n return this.xr?.baseLayer ?? null;\n }\n\n /**\n * Current WebXR framebuffer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.framebuffers} on the {@link xr}\n * object instead.\n */\n get xrFramebuffer(): WebGLFramebuffer | null {\n return this.xr?.framebuffers[0] ?? null;\n }\n\n /**\n * WebXR framebuffer scale factor.\n */\n get xrFramebufferScaleFactor() {\n return this.#webxr.framebufferScaleFactor;\n }\n\n set xrFramebufferScaleFactor(value: number) {\n this.#webxr.framebufferScaleFactor = value;\n }\n\n /** Physics manager, only available when physx is enabled in the runtime. */\n get physics() {\n return this.#physics;\n }\n\n /** Texture resources */\n get textures() {\n return this._textures;\n }\n\n /** Material resources */\n get materials() {\n return this._materials;\n }\n\n /** Mesh resources */\n get meshes() {\n return this._meshes;\n }\n\n /** Morph target set resources */\n get morphTargets() {\n return this._morphTargets;\n }\n\n /** Font resources */\n get fonts() {\n return this._fonts;\n }\n\n /** Particle effect resources */\n get particleEffects() {\n return this._particleEffects;\n }\n\n /** Get all uncompressed images. */\n get images(): ImageLike[] {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n result[i] = wasm._images[index];\n }\n return result;\n }\n\n /**\n * Promise that resolve once all uncompressed images are loaded.\n *\n * This is equivalent to calling {@link WonderlandEngine.images}, and wrapping each\n * `load` listener into a promise.\n */\n get imagesPromise(): Promise {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n const loading = this._uncompressedPromises[index];\n result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]);\n }\n return Promise.all(result);\n }\n\n /**\n * `true` if the texture streaming is currently idle, i.e.,\n * not attempting to upload any textures.\n *\n * @hidden\n */\n get isTextureStreamingIdle() {\n return !!this.wasm._wl_renderer_streaming_idle();\n }\n\n /**\n * `true` if reverse-Z rendering is supported and enabled.\n *\n * @hidden\n */\n get isReverseZEnabled() {\n return !!this.wasm._wl_renderer_isReverseZEnabled();\n }\n\n /*\n * Enable or disable the mechanism to automatically resize the canvas.\n *\n * Internally, the engine uses a [ResizeObserver](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * Changing the canvas css will thus automatically be tracked by the engine.\n */\n set autoResizeCanvas(flag: boolean) {\n const state = !!this.#resizeObserver;\n if (state === flag) return;\n\n if (!flag) {\n this.#resizeObserver?.unobserve(this.canvas);\n this.#resizeObserver = null;\n return;\n }\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.canvas) {\n this.resize(entry.contentRect.width, entry.contentRect.height);\n }\n }\n });\n this.#resizeObserver.observe(this.canvas);\n }\n\n /** `true` if the canvas is automatically resized by the engine. */\n get autoResizeCanvas() {\n return this.#resizeObserver !== null;\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n return this.#wasm.runtimeVersion;\n }\n\n /** Engine {@link Logger}. Use it to turn on / off logging. */\n get log(): Logger {\n return this.#wasm._log;\n }\n\n /* Internal-Only Methods */\n\n /**\n * Initialize the engine.\n *\n * @note Should be called after the WebAssembly is fully loaded.\n *\n * @hidden\n */\n _init(withRenderer: boolean): boolean {\n const success = this.#wasm._wl_application_init(withRenderer);\n if (!success) {\n throw new Error(`Failed to initializing Wonderland runtime`);\n }\n\n this.resize(this.canvas.clientWidth, this.canvas.clientHeight);\n return true;\n }\n\n /**\n * Reset the runtime state, including:\n * - Component cache\n * - Images\n * - Callbacks\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _reset() {\n this.wasm.reset();\n this._scenes.length = 0;\n this._scene = this._reload(0);\n this.#bundleCache.clear();\n return this.switchTo(this._scene);\n }\n\n /**\n * Attempt to hot reload the engine.\n *\n * @param filename URL of the file to use for the reload.\n * If `null`, forces a full page reload.\n *\n * @hidden\n */\n async _reloadRequest(filename: string | null) {\n if (filename === null) {\n reloadPage(this);\n return;\n }\n\n try {\n if (this.autoHotReload)\n await this.loadMainScene({url: filename, nocache: true});\n } catch (e) {\n console.error('Hot reload request failed to load main scene, reason:', e);\n setTimeout(() => reloadPage(this), 1000);\n return;\n }\n\n this.onHotReloadRequest.notify(filename);\n }\n\n /**\n * Add an empty scene.\n *\n * @returns The newly created scene\n *\n * @hidden\n */\n _createEmpty(): Scene {\n const wasm = this.wasm;\n const index = wasm._wl_scene_create_empty();\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n return scene;\n }\n\n /** @hidden */\n _destroyScene(instance: Prefab) {\n const wasm = this.wasm;\n wasm._wl_scene_destroy(instance._index);\n\n const index = instance._index;\n (instance._index as number) = -1;\n if (this.erasePrototypeOnDestroy) {\n Object.setPrototypeOf(instance, DestroyedPrefabInstance);\n }\n\n this._scenes[index] = null;\n }\n\n /**\n * Reload the state of the engine with a new main scene.\n *\n * @param index Scene index.\n *\n * @hidden\n */\n private _reload(index: number) {\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n\n this._textures = new TextureManager(this);\n this._materials = new MaterialManager(this);\n this._meshes = new MeshManager(this);\n this._morphTargets = new ResourceManager(this, MorphTargets);\n this._fonts = new ResourceManager(this, Font);\n this._particleEffects = new ResourceManager(this, ParticleEffect);\n this._uncompressedPromises.length = 0;\n\n return scene;\n }\n\n /**\n * Helper to load a main scene from an `ArrayBuffer` or `ReadableStream`.\n *\n * @param data Buffer or stream.\n * @param url Base URL.\n * @param nocache If `true`, force a browser reload of files to download.\n * Only affects components loading for now.\n * @param options Activation options.\n * @returns The loaded main scene.\n *\n * @hidden\n */\n private async _loadMainScene(\n data: ArrayBuffer | ReadableStream,\n url: string,\n nocache: boolean,\n options: ActivateOptions\n ) {\n if (nocache) url += `?t=${Date.now()}`;\n\n const wasm = this.#wasm;\n\n /*\n * - Deactivate currently active scene\n * - Destroy all scenes\n * - Mark all resources as destroyed\n * - Activation of main scene to prevent the runtime to be in limbo\n */\n\n wasm._wl_deactivate_activeScene();\n\n ++this._mainSceneVersion;\n\n /* Only destroy all scene once the current active one is disabled */\n for (let i = this._scenes.length - 1; i >= 0; --i) {\n const scene = this._scenes[i];\n if (scene) scene.destroy();\n }\n\n /* Mark all resources as destroyed */\n this._textures._clear();\n this._materials._clear();\n this._meshes._clear();\n this._morphTargets._clear();\n this._uncompressedPromises.length = 0;\n\n const stream =\n data instanceof ReadableStream\n ? data\n : new ReadableStream(new ArrayBufferSource(data));\n const sink = new ChunkedSceneLoadSink(this, SceneType.Main, url);\n await stream.pipeTo(new WritableStream(sink));\n\n const mainScene = this._reload(sink.sceneIndex);\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(mainScene._index);\n\n /**\n * @todo(2.0.0)\n *\n * Backward compatibility: We need to set this instance reference on the\n * engine **before** component creation occurs, since users have been accessing\n * the scene with `this.engine.scene` in `init()`.\n */\n this._preactivate(mainScene);\n\n const componentsBundle = mainScene.componentsBundle;\n if (componentsBundle) {\n /* Relative URL are resolved from the script that imports, and **not** from\n * the document. We assume that the components bundle is located alongside\n * other resources, relative to the .bin.\n *\n * @note: `componentsBundle` already contains the same baseURL as the .bin. */\n const bundleURL = new URL(componentsBundle, document.baseURI);\n const url = nocache ? bundleURL.href.split('?')[0] : bundleURL.href;\n await this.registerBundle(url, nocache);\n }\n mainScene._initialize();\n\n await this.switchTo(mainScene, options);\n\n return mainScene;\n }\n\n /**\n * Helper to load prefab and activatable scene from an `ArrayBuffer`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private _loadSceneFromBuffer(\n PrefabClass: Constructor,\n options: InMemoryLoadOptions\n ) {\n const {buffer, url} = Scene.validateBufferOptions(options);\n\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n sink.write(new Uint8Array(buffer));\n sink.close();\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Helper to load prefab and activatable scene from a `ReadableStream`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private async _loadSceneFromStream(\n PrefabClass: Constructor,\n options: StreamLoadOptions\n ) {\n const {stream, url} = Scene.validateStreamOptions(options);\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n await stream.pipeTo(new WritableStream(sink));\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Checks if the loaded scene is a prefab and throws an error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedPrefab(scene: Prefab) {\n if (this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a prefab. To load a scene, use loadScene() instead'\n );\n }\n }\n\n /**\n * Checks if the loaded scene is a scene (and not a prefab) and throws an\n * error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedScene(scene: Scene) {\n if (!this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a scene. To load a prefab, use loadPrefab() instead'\n );\n }\n }\n\n /**\n * Set the scene data on the engine, before the activation occurs.\n *\n * @hidden\n */\n private _preactivate(scene: Scene) {\n this._scene = scene;\n /* Update the current active scene in the physx manager */\n if (this.physics) (this.physics._hit._scene as Scene) = scene;\n }\n\n /**\n * Notify the runtime when images are ready to be uploaded.\n *\n * @param sceneIndex Index of the scene where the image originated\n * @hidden\n */\n private _loadUncompressedImages(sceneIndex: number) {\n const mainSceneVersion = this._mainSceneVersion;\n const wasm = this.wasm;\n\n const bitmapOptions: ImageBitmapOptions = {\n colorSpaceConversion: 'none',\n };\n\n const imageCount = wasm._wl_image_count();\n for (let i = 0; i < imageCount; ++i) {\n if (wasm._wl_image_originalScene(i) !== sceneIndex) continue;\n\n const jsImageIndex = wasm._wl_image_get_jsImage_index(i);\n\n const image = wasm._images[jsImageIndex];\n if (!image) continue;\n\n let promise: Promise = onImageReady(image);\n if (this.loadUncompressedImagesAsBitmap) {\n promise = promise.then((img) => createImageBitmap(img, bitmapOptions));\n }\n this._uncompressedPromises[jsImageIndex] = promise\n .then((img) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img));\n }\n })\n .catch((e) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n this.log.error(\n LogTag.Scene,\n 'Failed to load uncompressed image',\n e\n );\n }\n });\n }\n }\n}\n", "/**\n * Assert that the given bit index is less than 32.\n *\n * @param bit The bit to test.\n */\nfunction assert(bit: number): void {\n if (bit >= 32) {\n throw new Error(`BitSet.enable(): Value ${bit} is over 31`);\n }\n}\n\n/**\n * Stores a bit pattern to quickly test if an index is enabled / disabled.\n *\n * This class can store up to **32** different values in the range [0; 31].\n *\n * #### Usage\n *\n * ```js\n * const bitset = new BitSet();\n * bitset.enable(10); // Enable bit at index `10`.\n * console.log(bitset.enabled(10)); // Prints 'true'.\n * ```\n *\n * #### TypeScript\n *\n * The set can be typed over an enum:\n *\n * ```ts\n * enum Tag {\n * First = 0,\n * Second = 1,\n * }\n *\n * const bitset = new BitSet();\n * bitset.enable(Tag.First);\n * ```\n */\nexport class BitSet {\n /** Enabled bits. @hidden */\n private _bits: number = 0;\n\n /**\n * Enable the bit at the given index.\n *\n * @param bits A spread of all the bits to enable.\n * @returns Reference to self (for method chaining).\n */\n enable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits |= (1 << bit) >>> 0;\n }\n return this;\n }\n\n /**\n * Enable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n enableAll() {\n this._bits = ~0;\n return this;\n }\n\n /**\n * Disable the bit at the given index.\n *\n * @param bits A spread of all the bits to disable.\n * @returns Reference to self (for method chaining).\n */\n disable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits &= ~((1 << bit) >>> 0);\n }\n return this;\n }\n\n /**\n * Disable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n disableAll() {\n this._bits = 0;\n return this;\n }\n\n /**\n * Checker whether the bit is set or not.\n *\n * @param bit The bit to check.\n * @returns `true` if it's enabled, `false` otherwise.\n */\n enabled(bit: T) {\n return !!(this._bits & ((1 << bit) >>> 0));\n }\n}\n", "import {BitSet} from './bitset.js';\nimport {Emitter} from './event.js';\n\n/**\n * Logging levels supported by {@link Logger}.\n */\nexport enum LogLevel {\n Info = 0,\n Warn = 1,\n Error = 2,\n}\n\n/**\n * Logging wrapper.\n *\n * This is used to allow turning on/off:\n * - `console.log`\n * - `console.warn`\n * - `console.error`\n *\n * #### Usage\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * // Create a logger with only the \"error\" and \"warn\" levels activated\n * const logger = new Logger(LogLevel.Warn, LogLevel.Error);\n *\n * // Only the \"error\" and \"warn\" levels are activated,\n * // this message isn't logged.\n * logger.info(LogTag.Component, 'This message is shushed')\n *\n * // Prints 'Hello Error!'\n * logger.error(LogTag.Component, 'Hello Error!');\n *\n * // Prints 'Hello Warning!'\n * logger.warn(LogTag.Component, 'Hello Warning!');\n * ```\n *\n * The log levels can be changed at anytime using the {@link BitSet} api:\n *\n * ```js\n * // Enable the \"info\" level\n * logger.levels.enable(LogLevel.Info);\n * * // Disable the \"warn\" level\n * logger.levels.disable(LogLevel.Warn);\n * ```\n *\n * #### Tags\n *\n * In addition, the logger supports tagging messages:\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * const logger = new Logger(LogLevel.Info);\n *\n * logger.tags.disableAll();\n *\n * // All tags are off, this message isn't logged\n * logger.info(LogTag.Component, 'This message is shushed');\n *\n * logger.tags.enable(LogTag.Component);\n * logger.info(LogTag.Component, 'Hello World!') // Prints 'Hello World!'\n * ```\n *\n * The tagging system gives another layer of control to enable / disable\n * some specific logs.\n */\nexport class Logger {\n /**\n * Bitset of enabled levels.\n *\n * @hidden\n */\n levels: BitSet = new BitSet();\n\n /**\n * Bitset of enabled tags.\n *\n * @hidden\n */\n tags: BitSet = new BitSet().enableAll();\n\n /**\n * Notified when an `info`, `warn`, or `error` message is logged.\n *\n * @note The emitter is always notified, even if the logger levels\n * and tags are disabled.\n *\n * @note The message is passed as an array, similar to `console.log`.\n *\n * #### Usage\n *\n * ```js\n * import {LogLevel} from '@wonderlandengine/api';\n *\n * engine.logger.onLog.add((level, messages, tag) => {\n * // Only process error messages\n * if (level !== LogLevel.Error) return;\n *\n * // Only process engine logs\n * if (tag !== LogTag.Engine) return;\n *\n * const str = messages.join(' ');\n * sendAnalytics(str);\n * });\n * ```\n */\n onLog: Emitter<[LogLevel, unknown[], number]> = new Emitter();\n\n /**\n * Create a new logger instance.\n *\n * @param levels Default set of levels to enable.\n */\n constructor(...levels: LogLevel[]) {\n this.levels.enable(...levels);\n }\n\n /**\n * Log the message(s) using `console.log`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n info(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Info) && this.tags.enabled(tag)) {\n console.log(...msg);\n }\n this.onLog.notify(LogLevel.Info, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.warn`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n warn(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Warn) && this.tags.enabled(tag)) {\n console.warn(...msg);\n }\n this.onLog.notify(LogLevel.Warn, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.error`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n error(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Error) && this.tags.enabled(tag)) {\n console.error(...msg);\n }\n this.onLog.notify(LogLevel.Error, msg, tag);\n return this;\n }\n}\n", "import {Version} from './version.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ComponentProperty, Type, defaultPropertyCloner} from './property.js';\nimport {CBORReader, CBORType, getType} from './utils/cbor.js';\nimport {Logger} from './utils/logger.js';\nimport {\n inheritProperties,\n Component,\n ComponentConstructor,\n ComponentProto,\n BrokenComponent,\n AnimationComponent,\n LogTag,\n} from './wonderland.js';\nimport {ImageLike} from './types.js';\nimport {Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {ComponentPropertyDecoder, setupComponentClass} from './component.js';\n\n/**\n * Low-level wrapper to interact with the WebAssembly code.\n *\n * @hidden\n */\nexport class WASM {\n /**\n * Emscripten wasm field.\n *\n * @note This api is meant to be used internally.\n */\n readonly wasm: ArrayBuffer = null!;\n\n /**\n * Emscripten canvas.\n *\n * @note This api is meant to be used internally.\n */\n readonly canvas: HTMLCanvasElement = null!;\n\n /**\n * WebGPU device.\n *\n * @note This api is meant to be used internally.\n */\n readonly preinitializedWebGPUDevice: any = null;\n\n /**\n * Convert a WASM memory view to a JavaScript string.\n *\n * @param ptr Pointer start\n * @param ptrEnd Pointer end\n * @returns JavaScript string\n */\n UTF8ViewToString: (ptr: number, ptrEnd: number) => string;\n\n /** Logger instance. */\n readonly _log: Logger = new Logger();\n\n /** If `true`, logs will not spam the console on error. */\n _deactivate_component_on_error: boolean = false;\n\n /** Temporary memory pointer. */\n _tempMem: number = null!;\n /** Temporary memory size. */\n _tempMemSize: number = 0;\n /** Temporary float memory view. */\n _tempMemFloat: Float32Array = null!;\n /** Temporary int memory view. */\n _tempMemInt: Int32Array = null!;\n /** Temporary uint8 memory view. */\n _tempMemUint8: Uint8Array = null!;\n /** Temporary uint32 memory view. */\n _tempMemUint32: Uint32Array = null!;\n /** Temporary uint16 memory view. */\n _tempMemUint16: Uint16Array = null!;\n\n /** Loading screen .bin file data */\n _loadingScreen: ArrayBuffer | null = null;\n\n /** List of callbacks triggered when the scene is loaded. */\n readonly _sceneLoadedCallback: any[] = [];\n\n /** Image cache. */\n _images: (ImageLike | null)[] = [null];\n\n /** Component instances. */\n private _components: Component[] = null!;\n\n /** Component Type info. */\n _componentTypes: ComponentConstructor[] = [];\n\n /** Index per component type name. */\n _componentTypeIndices: Record = {};\n\n /** Wonderland engine instance. */\n private _engine: WonderlandEngine = null!;\n\n /**\n * `true` if this runtime is using physx.\n *\n * @note This api is meant to be used internally.\n */\n private _withPhysX: boolean = false;\n\n /** Decoder for UTF8 `ArrayBuffer` to JavaScript string. */\n private readonly _utf8Decoder = new TextDecoder('utf8');\n\n /**\n * Registration index of {@link BrokenComponent}.\n *\n * This is used to return dummy instances when a component\n * isn't registered.\n *\n * @hidden\n */\n private readonly _brokenComponentIndex = 0;\n\n /**\n * Create a new instance of the WebAssembly <> API bridge.\n *\n * @param threads `true` if the runtime used has threads support\n */\n constructor(threads: boolean) {\n if (threads) {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.slice(s, e));\n };\n } else {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.subarray(s, e));\n };\n }\n\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n /** We cannot use _tempMem because we are meant to be called before it's initialized */\n const tempBuf = this._malloc(4 * 2);\n const tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4);\n this._wl_runtime_version(tempBuf);\n const version = {\n major: tempVersion[0],\n minor: tempVersion[1],\n patch: tempVersion[2],\n rc: tempVersion[3],\n };\n this._free(tempBuf);\n return version;\n }\n\n /**\n * Reset the cache of the library.\n *\n * @note Should only be called when tearing down the runtime.\n */\n reset() {\n /* Called first to perform cleanup. */\n this._wl_reset();\n\n this._components = null!;\n this._images.length = 1;\n this.allocateTempMemory(1024);\n\n this._componentTypes = [];\n this._componentTypeIndices = {};\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param ctor A string representing the component typename (e.g., `'cursor-component'`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(type: string) {\n return type in this._componentTypeIndices;\n }\n\n /**\n * Register a legacy component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param typeName The name of the component.\n * @param params An object containing the parameters (properties).\n * @param object The object's prototype.\n * @returns The registration index\n */\n _registerComponentLegacy(\n typeName: string,\n params: Record,\n object: ComponentProto\n ) {\n const ctor = class CustomComponent extends Component {};\n ctor.TypeName = typeName;\n ctor.Properties = params;\n Object.assign(ctor.prototype, object);\n return this._registerComponent(ctor);\n }\n\n /**\n * Register a class component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param ctor The class to register.\n * @returns The registration index.\n */\n _registerComponent(ctor: ComponentConstructor) {\n if (!ctor.TypeName) throw new Error('no name provided for component.');\n if (!ctor.prototype._triggerInit) {\n throw new Error(\n `registerComponent(): Component ${ctor.TypeName} must extend Component`\n );\n }\n\n setupComponentClass(ctor);\n\n const typeIndex =\n ctor.TypeName in this._componentTypeIndices\n ? this._componentTypeIndices[ctor.TypeName]\n : this._componentTypes.length;\n this._componentTypes[typeIndex] = ctor;\n this._componentTypeIndices[ctor.TypeName] = typeIndex;\n\n if (ctor === BrokenComponent) return typeIndex;\n\n this._log.info(\n LogTag.Engine,\n 'Registered component',\n ctor.TypeName,\n `(class ${ctor.name})`,\n 'with index',\n typeIndex\n );\n\n if (ctor.onRegister) ctor.onRegister(this._engine);\n\n return typeIndex;\n }\n\n /**\n * Allocate the requested amount of temporary memory\n * in this WASM instance.\n *\n * @param size The number of bytes to allocate\n */\n allocateTempMemory(size: number) {\n this._log.info(LogTag.Engine, 'Allocating temp mem:', size);\n this._tempMemSize = size;\n if (this._tempMem) this._free(this._tempMem);\n this._tempMem = this._malloc(this._tempMemSize);\n this.updateTempMemory();\n }\n\n /**\n * @todo: Delete this and only keep `allocateTempMemory`\n *\n * @param size Number of bytes to allocate\n */\n requireTempMem(size: number) {\n if (this._tempMemSize >= size) return;\n /* Grow in 1kb increments */\n this.allocateTempMemory(Math.ceil(size / 1024) * 1024);\n }\n\n /**\n * Update the temporary memory views. This must be called whenever the\n * temporary memory address changes.\n *\n * @note This api is meant to be used internally.\n */\n updateTempMemory() {\n this._tempMemFloat = new Float32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemInt = new Int32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint32 = new Uint32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint16 = new Uint16Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 1\n );\n this._tempMemUint8 = new Uint8Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize\n );\n }\n\n /**\n * Returns a uint8 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU8(count: number): Uint8Array {\n this.requireTempMem(count);\n return this._tempMemUint8;\n }\n\n /**\n * Returns a uint16 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU16(count: number): Uint16Array {\n this.requireTempMem(count * 2);\n return this._tempMemUint16;\n }\n\n /**\n * Returns a uint32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferU32(count: number): Uint32Array {\n this.requireTempMem(count * 4);\n return this._tempMemUint32;\n }\n\n /**\n * Returns a int32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferI32(count: number): Int32Array {\n this.requireTempMem(count * 4);\n return this._tempMemInt;\n }\n\n /**\n * Returns a float32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferF32(count: number): Float32Array {\n this.requireTempMem(count * 4);\n return this._tempMemFloat;\n }\n\n /**\n * Copy the string into temporary WASM memory and retrieve the pointer.\n *\n * @note This method will compute the strlen and append a `\\0`.\n *\n * @note The result should be used **directly** otherwise it might get\n * overridden by any next call modifying the temporary memory.\n *\n * @param str The string to write to temporary memory\n * @param byteOffset The starting byte offset in the temporary memory at which\n * the string should be written. This is useful when using multiple temporaries.\n * @return The temporary pointer onto the WASM memory\n */\n tempUTF8(str: string, byteOffset = 0): number {\n const strLen = this.lengthBytesUTF8(str) + 1;\n this.requireTempMem(strLen + byteOffset);\n const ptr = this._tempMem + byteOffset;\n this.stringToUTF8(str, ptr, strLen);\n return ptr;\n }\n\n /**\n * Copy the buffer into the WASM heap.\n *\n * @note The returned pointer must be freed.\n *\n * @param buffer The buffer to copy into the heap.\n * @returns An allocated pointer, that must be free after use.\n */\n copyBufferToHeap(buffer: ArrayBuffer): number {\n const size = buffer.byteLength;\n const ptr = this._malloc(size);\n this.HEAPU8.set(new Uint8Array(buffer), ptr);\n return ptr;\n }\n\n /**\n * Returns `true` if the runtime supports physx or not.\n */\n get withPhysX(): boolean {\n return this._withPhysX;\n }\n\n /**\n * Set the engine instance holding this bridge.\n *\n * @note This api is meant to be used internally.\n *\n * @param engine The engine instance.\n */\n protected _setEngine(engine: WonderlandEngine): void {\n this._engine = engine;\n }\n\n /* WebAssembly to JS call bridge. */\n\n protected _wljs_reload(filenamePtr: number) {\n const filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null;\n this._engine._reloadRequest(filename);\n }\n protected _wljs_init(withPhysX: boolean) {\n this._withPhysX = withPhysX;\n\n /* Target memory for JS API functions that return arrays */\n this.allocateTempMemory(1024);\n }\n protected _wljs_scene_switch(index: number) {\n const scene = this._engine._scenes[index] as Scene | null;\n /* Scene can be null during testing with `engine.reset()` */\n this._components = scene?._jsComponents ?? null!;\n }\n protected _wljs_destroy_image(index: number) {\n const img = this._images[index];\n if (!img) return;\n\n this._images[index] = null;\n\n if ((img as HTMLImageElement).src !== undefined) {\n (img as HTMLImageElement).src = '';\n }\n if ((img as HTMLImageElement).onload !== undefined) {\n (img as HTMLImageElement).onload = null;\n }\n if ((img as HTMLImageElement).onerror !== undefined) {\n (img as HTMLImageElement).onerror = null;\n }\n }\n protected _wljs_objects_markDestroyed(\n sceneIndex: number,\n idsPtr: number,\n count: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n const start = idsPtr >>> 1;\n for (let i = 0; i < count; ++i) {\n const id = this.HEAPU16[start + i];\n scene._destroyObject(id);\n }\n }\n protected _wljs_scene_initialize(\n sceneIndex: number,\n idsPtr: number,\n idsEnd: number,\n paramDataPtr: number,\n paramDataEndPtr: number,\n offsetsPtr: number,\n offsetsEndPtr: number\n ) {\n const cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr);\n const offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2);\n const ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1);\n\n const engine = this._engine;\n const scene = engine._scenes[sceneIndex] as Scene;\n const components = scene._jsComponents;\n\n const cbor = new CBORReader(cborEncoded);\n\n let componentsCount = 0;\n {\n const typeInfo = cbor.readTypeInfo();\n if (getType(typeInfo) !== CBORType.Array) {\n this._log.error(LogTag.Engine, 'Parameters data must be an array');\n return;\n }\n componentsCount = cbor.readArrayLength(typeInfo) as number;\n }\n if (componentsCount !== ids.length) {\n this._log.error(\n LogTag.Engine,\n `Parameters set for ${componentsCount} components, but expected ${ids.length}`\n );\n return;\n }\n\n const decoder = new ComponentPropertyDecoder(scene, offsets);\n for (let i = 0; i < componentsCount; ++i) {\n const id = Component._pack(sceneIndex, ids[i]);\n const index = this._wl_get_js_component_index_for_id(id);\n const component = components[index];\n decoder.decode(cbor, component);\n }\n }\n\n protected _wljs_set_component_param_translation(\n scene: number,\n component: number,\n param: number,\n valuePtr: number,\n valueEndPtr: number\n ) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const comp = components[component];\n\n const value = this.UTF8ViewToString(valuePtr, valueEndPtr);\n const ctor = comp.constructor as ComponentConstructor;\n const paramName = ctor._propertyOrder[param];\n (comp as Record)[paramName] = value;\n }\n\n protected _wljs_get_component_type_index(namePtr: number, nameEndPtr: number) {\n const typename = this.UTF8ViewToString(namePtr, nameEndPtr);\n const index = this._componentTypeIndices[typename];\n if (index === undefined) {\n return this._brokenComponentIndex;\n }\n return index;\n }\n protected _wljs_component_create(\n sceneIndex: number,\n index: number,\n id: number,\n type: number,\n object: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n scene._components.createJs(index, id, type, object);\n }\n protected _wljs_component_init(scene: number, component: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const c = components[component];\n c._triggerInit();\n }\n protected _wljs_component_update(component: number, dt: number) {\n const c = this._components[component];\n c._triggerUpdate(dt);\n }\n protected _wljs_component_onActivate(component: number) {\n const c = this._components[component];\n c._triggerOnActivate();\n }\n protected _wljs_component_onDeactivate(component: number) {\n const c = this._components[component];\n c._triggerOnDeactivate();\n }\n protected _wljs_component_markDestroyed(\n sceneIndex: number,\n manager: number,\n componentId: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Prefab;\n scene._destroyComponent(manager, componentId);\n }\n protected _wljs_swap(scene: number, a: number, b: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const componentA = components[a];\n components[a] = components[b];\n components[b] = componentA;\n }\n protected _wljs_copy(\n srcSceneIndex: number,\n srcIndex: number,\n dstSceneIndex: number,\n dstIndex: number,\n offsetsPtr: number,\n copyInfoPtr: number\n ) {\n const srcScene = this._engine._scenes[srcSceneIndex] as Scene;\n const dstScene = this._engine._scenes[dstSceneIndex] as Scene;\n const destComp = dstScene._jsComponents[dstIndex];\n const srcComp = srcScene._jsComponents[srcIndex];\n destComp._copy(srcComp, offsetsPtr, copyInfoPtr);\n }\n /**\n * Forward an animation event to a corresponding\n * {@link AnimationComponent}\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link AnimationComponent.onEvent} instead.\n *\n * @param componentId Component id in the manager\n * @param namePtr Pointer to UTF8 event name\n * @param nameEndPtr Pointer to end of UTF8 event name\n */\n protected _wljs_trigger_animationEvent(\n componentId: number,\n namePtr: number,\n nameEndPtr: number\n ) {\n const scene = this._engine.scene;\n const comp = scene._components.wrapAnimation(componentId);\n const nameStr = this.UTF8ViewToString(namePtr, nameEndPtr);\n comp.onEvent.notify(nameStr);\n }\n}\n\n/* Extends the WASM class with the WebAssembly typings */\n\nexport interface WASM {\n HEAP8: Int8Array;\n HEAPU8: Uint8Array;\n HEAPU16: Uint16Array;\n HEAP16: Int16Array;\n HEAPU32: Uint32Array;\n HEAP32: Int32Array;\n HEAPF32: Float32Array;\n HEAPF64: Float64Array;\n\n GL: {\n framebuffers: WebGLFramebuffer[];\n };\n\n assert: (condition: boolean, msg?: string) => void;\n _free: (ptr: number) => void;\n _malloc: (size: number) => number;\n lengthBytesUTF8: (str: string) => number;\n stringToUTF8: (str: string, outPtr: number, len: number) => void;\n UTF8ToString: (ptr: number) => string;\n addFunction: (func: Function, sig: string) => number;\n removeFunction: (ptr: number) => void;\n\n _wl_runtime_version: (out: number) => void;\n _wl_set_error_callback: (cbPtr: number) => void;\n _wl_application_create: () => void;\n _wl_application_init: (withRenderer: boolean) => boolean;\n _wl_application_start: () => void;\n _wl_application_redraw: () => void;\n _wl_application_resize: (width: number, height: number) => void;\n\n _wl_nextUpdate: (delta: number) => void;\n _wl_nextFrame: (delta: number) => void;\n _wl_reset: () => void;\n _wl_reset_context: () => void;\n _wl_xr_init: (viewCount: number, useLayers: boolean) => void;\n _wl_xr_focus: () => void;\n _wl_xr_blur: () => void;\n _wl_xr_hide: () => void;\n _wl_xr_exit: () => void;\n\n _wl_deactivate_activeScene: () => void;\n\n _wl_renderer_set_mesh_layout: (layout: number) => void;\n _wl_renderer_streaming_idle: () => number;\n _wl_renderer_isReverseZEnabled: () => number;\n\n _wl_load_main_scene: (ptr: number, size: number, url: number) => number;\n _wl_get_images: (out: number, max: number) => number;\n _wl_get_material_definition_count: () => number;\n _wl_get_material_definition_index: (ptr: number) => number;\n\n _wl_scene_get_active: (root: number) => number;\n _wl_scene_create: (ptr: number, size: number, url: number) => number;\n _wl_scene_create_chunked_start: (url: number) => number;\n _wl_scene_create_chunked_buffer_size: (index: number) => number;\n _wl_scene_create_chunked_next: (\n index: number,\n ptr: number,\n size: number,\n readSizePtr: number,\n requiredSizePtr: number\n ) => boolean;\n _wl_scene_create_chunked_abort: (index: number) => void;\n _wl_scene_create_chunked_end_prefab: (index: number) => number;\n _wl_scene_create_chunked_end_main: (index: number) => void;\n _wl_scene_create_chunked_end_queued: (\n index: number,\n dependentSceneIndex: number\n ) => void;\n _wl_scene_create_empty: () => number;\n _wl_scene_initialize: (index: number) => number;\n _wl_scene_destroy: (index: number) => void;\n _wl_scene_instantiate: (src: number, dst: number) => number;\n _wl_scene_activate: (index: number) => void;\n _wl_scene_queued_bin_count: (index: number) => number;\n _wl_scene_queued_bin_path: (sceneIndex: number, index: number) => number;\n _wl_scene_clear_queued_bin_list: (sceneIndex: number) => void;\n _wl_scene_load_queued_bin: (index: number, ptr: number, size: number) => boolean;\n _wl_scene_activatable: (index: number) => boolean;\n _wl_scene_active: (index: number) => boolean;\n _wl_scene_get_baseURL: (index: number) => number;\n _wl_scene_get_filename: (index: number) => number;\n _wl_scene_get_componentsBundle: (index: number) => number;\n\n _wl_scene_get_component_manager_count: (scene: number) => number;\n _wl_scene_get_component_manager_index: (scene: number, ptr: number) => number;\n\n _wl_scene_get_mainView: (scene: number) => number;\n _wl_scene_get_leftView: (scene: number) => number;\n _wl_scene_get_rightView: (scene: number) => number;\n _wl_scene_get_components: (\n scene: number,\n typeIndex: number,\n subTypeIndex: number,\n active: boolean,\n offset: number,\n count: number,\n ptr: number\n ) => number;\n _wl_scene_get_component: (scene: number, typeIndex: number, index: number) => number;\n\n _wl_scene_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n maxDistance: number,\n outPtr: number\n ) => void;\n _wl_scene_add_object: (scene: number, parentId: number) => number;\n _wl_scene_add_objects: (\n scene: number,\n parentId: number,\n count: number,\n componentCountHint: number,\n ptr: number,\n size: number\n ) => number;\n _wl_scene_reserve_objects: (\n scene: number,\n objectCount: number,\n _tempMem: number\n ) => void;\n _wl_scene_set_sky_material: (index: number, id: number) => void;\n _wl_scene_get_sky_material: (index: number) => number;\n _wl_scene_environment_set_intensity: (index: number, intensity: number) => void;\n _wl_scene_environment_get_intensity: (index: number) => number;\n _wl_scene_environment_set_tint: (\n index: number,\n r: number,\n g: number,\n b: number\n ) => void;\n _wl_scene_environment_get_tint: (index: number, ptr: number) => void;\n _wl_scene_environment_set_coefficients: (\n index: number,\n ptr: number,\n count: number\n ) => void;\n _wl_scene_environment_get_coefficients: (index: number, ptr: number) => void;\n _wl_scene_set_clearColor: (r: number, g: number, b: number, a: number) => void;\n _wl_scene_enableColorClear: (b: boolean) => void;\n\n _wl_set_loading_screen_progress: (ratio: number) => void;\n\n _wl_glTF_scene_create: (extensions: boolean, ptr: number, ptrEnd: number) => number;\n _wl_glTF_scene_get_extensions: (index: number) => number;\n _wl_glTF_scene_extensions_gltfIndex_to_id: (\n gltfScene: number,\n destScene: number,\n objectIndex: number,\n gltfIndex: number\n ) => number;\n\n _wl_component_get_object: (manager: number, id: number) => number;\n _wl_component_setActive: (manager: number, id: number, active: boolean) => void;\n _wl_component_isActive: (manager: number, id: number) => number;\n _wl_component_remove: (manager: number, id: number) => void;\n\n _wl_collision_component_get_collider: (id: number) => number;\n _wl_collision_component_set_collider: (id: number, collider: number) => void;\n _wl_collision_component_get_extents: (id: number) => number;\n _wl_collision_component_get_group: (id: number) => number;\n _wl_collision_component_set_group: (id: number, group: number) => void;\n _wl_collision_component_query_overlaps: (\n id: number,\n outPtr: number,\n outCount: number\n ) => number;\n _wl_text_component_get_horizontal_alignment: (id: number) => number;\n _wl_text_component_set_horizontal_alignment: (id: number, alignment: number) => void;\n _wl_text_component_get_vertical_alignment: (id: number) => number;\n _wl_text_component_set_vertical_alignment: (\n id: number,\n verticalAlignment: number\n ) => void;\n _wl_text_component_get_justified: (id: number) => number;\n _wl_text_component_set_justified: (id: number, justified: boolean) => void;\n _wl_text_component_get_character_spacing: (id: number) => number;\n _wl_text_component_set_character_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_line_spacing: (id: number) => number;\n _wl_text_component_set_line_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_effect: (id: number) => number;\n _wl_text_component_get_effectOffset: (id: number, outPtr: number) => void;\n _wl_text_component_set_effect: (id: number, effect: number) => void;\n _wl_text_component_set_effectOffset: (id: number, offsetPtr: number) => void;\n _wl_text_component_get_wrapMode: (id: number) => number;\n _wl_text_component_set_wrapMode: (id: number, mode: number) => void;\n _wl_text_component_get_wrapWidth: (id: number) => number;\n _wl_text_component_set_wrapWidth: (id: number, width: number) => void;\n _wl_text_component_get_text: (id: number) => number;\n _wl_text_component_set_text: (id: number, ptr: number) => void;\n _wl_text_component_set_material: (id: number, materialId: number) => void;\n _wl_text_component_get_material: (id: number) => number;\n _wl_text_component_get_boundingBox: (\n id: number,\n textPtr: number,\n resultPtr: number\n ) => number;\n _wl_view_component_get_projectionType: (id: number) => number;\n _wl_view_component_set_projectionType: (id: number, type: number) => void;\n _wl_view_component_get_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_set_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_remapProjectionMatrix: (\n id: number,\n inverseDepth: boolean,\n depthZeroToOne: boolean\n ) => void;\n _wl_view_component_generate_projectionMatrix: (id: number) => void;\n _wl_view_component_get_near: (id: number) => number;\n _wl_view_component_set_near: (id: number, near: number) => void;\n _wl_view_component_get_far: (id: number) => number;\n _wl_view_component_set_far: (id: number, far: number) => void;\n _wl_view_component_get_fov: (id: number) => number;\n _wl_view_component_set_fov: (id: number, fov: number) => void;\n _wl_view_component_get_viewport: (id: number) => number;\n _wl_view_component_set_viewport: (\n id: number,\n x: number,\n y: number,\n width: number,\n height: number\n ) => void;\n _wl_view_component_get_extent: (id: number) => number;\n _wl_view_component_set_extent: (id: number, fov: number) => void;\n _wl_view_component_set_externalFramebuffer: (id: number, fb: number) => void;\n _wl_input_component_get_type: (id: number) => number;\n _wl_input_component_set_type: (id: number, type: number) => void;\n _wl_input_set_transformation: (sceneIndex: number, type: number, ptr: number) => void;\n _wl_light_component_get_color: (id: number) => number;\n _wl_light_component_get_type: (id: number) => number;\n _wl_light_component_set_type: (id: number, type: number) => void;\n _wl_light_component_get_intensity: (id: number) => number;\n _wl_light_component_set_intensity: (id: number, intensity: number) => void;\n _wl_light_component_get_outerAngle: (id: number) => number;\n _wl_light_component_set_outerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_innerAngle: (id: number) => number;\n _wl_light_component_set_innerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_shadows: (id: number) => number;\n _wl_light_component_set_shadows: (id: number, shadows: boolean) => void;\n _wl_light_component_get_shadowRange: (id: number) => number;\n _wl_light_component_set_shadowRange: (id: number, range: number) => void;\n _wl_light_component_get_shadowBias: (id: number) => number;\n _wl_light_component_set_shadowBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowNormalBias: (id: number) => number;\n _wl_light_component_set_shadowNormalBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowTexelSize: (id: number) => number;\n _wl_light_component_set_shadowTexelSize: (id: number, size: number) => void;\n _wl_light_component_get_cascadeCount: (id: number) => number;\n _wl_light_component_set_cascadeCount: (id: number, count: number) => void;\n _wl_animation_component_get_animation: (id: number) => number;\n _wl_animation_component_set_animation: (id: number, animId: number) => void;\n _wl_animation_component_get_playCount: (id: number) => number;\n _wl_animation_component_set_playCount: (id: number, count: number) => void;\n _wl_animation_component_get_speed: (id: number) => number;\n _wl_animation_component_set_speed: (id: number, speed: number) => void;\n _wl_animation_component_play: (id: number) => void;\n _wl_animation_component_stop: (id: number) => void;\n _wl_animation_component_pause: (id: number) => void;\n _wl_animation_component_state: (id: number) => number;\n _wl_animation_component_getGraphParamValue: (\n id: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_animation_component_setGraphParamValue: (\n id: number,\n paramIndex: number,\n valuePtr: number\n ) => void;\n _wl_animation_component_get_rootMotionMode: (id: number) => number;\n _wl_animation_component_set_rootMotionMode: (id: number, value: number) => void;\n _wl_animation_component_get_rootMotion_translation: (\n id: number,\n outPtr: number\n ) => number;\n _wl_animation_component_get_rootMotion_rotation: (id: number, outPtr: number) => number;\n _wl_animation_component_getGraphParamIndex: (id: number, paramName: number) => number;\n _wl_animation_component_get_iteration: (id: number) => number;\n _wl_animation_component_get_position: (id: number) => number;\n _wl_animation_component_get_duration: (id: number) => number;\n _wl_mesh_component_get_material: (id: number) => number;\n _wl_mesh_component_set_material: (id: number, materialId: number) => void;\n _wl_mesh_component_get_mesh: (id: number) => number;\n _wl_mesh_component_set_mesh: (id: number, meshId: number) => void;\n _wl_mesh_component_get_skin: (id: number) => number;\n _wl_mesh_component_set_skin: (id: number, skinId: number) => void;\n _wl_mesh_component_get_morph_targets: (id: number) => number;\n _wl_mesh_component_set_morph_targets: (id: number, morphTargetSetId: number) => void;\n _wl_mesh_component_get_morph_target_weight: (id: number, index: number) => number;\n _wl_mesh_component_get_morph_target_weights: (id: number, ptr: number) => number;\n _wl_mesh_component_set_morph_target_weight: (\n id: number,\n index: number,\n weight: number\n ) => void;\n _wl_mesh_component_set_morph_target_weights: (\n id: number,\n ptr: number,\n count: number\n ) => void;\n _wl_particleEffect_component_get_particleEffect: (id: number) => number;\n _wl_particleEffect_component_set_particleEffect: (\n id: number,\n particleEffectId: number\n ) => void;\n _wl_physx_component_get_static: (id: number) => number;\n _wl_physx_component_set_static: (id: number, flag: boolean) => void;\n _wl_physx_component_get_kinematic: (id: number) => number;\n _wl_physx_component_set_kinematic: (id: number, kinematic: boolean) => void;\n _wl_physx_component_get_gravity: (id: number) => number;\n _wl_physx_component_set_gravity: (id: number, gravity: boolean) => void;\n _wl_physx_component_get_simulate: (id: number) => number;\n _wl_physx_component_set_simulate: (id: number, simulation: boolean) => void;\n _wl_physx_component_get_allowSimulation: (id: number) => number;\n _wl_physx_component_set_allowSimulation: (id: number, allowSimulation: boolean) => void;\n _wl_physx_component_get_allowQuery: (id: number) => number;\n _wl_physx_component_set_allowQuery: (id: number, allowQuery: boolean) => void;\n _wl_physx_component_get_trigger: (id: number) => number;\n _wl_physx_component_set_trigger: (id: number, trigger: boolean) => void;\n _wl_physx_component_get_shape: (id: number) => number;\n _wl_physx_component_set_shape: (id: number, shape: number) => void;\n _wl_physx_component_get_shape_data: (id: number) => number;\n _wl_physx_component_set_shape_data: (id: number, shapeIndex: number) => void;\n _wl_physx_component_get_extents: (id: number) => number;\n _wl_physx_component_get_staticFriction: (id: number) => number;\n _wl_physx_component_set_staticFriction: (id: number, value: number) => void;\n _wl_physx_component_get_dynamicFriction: (id: number) => number;\n _wl_physx_component_set_dynamicFriction: (id: number, value: number) => void;\n _wl_physx_component_get_bounciness: (id: number) => number;\n _wl_physx_component_set_bounciness: (id: number, value: number) => void;\n _wl_physx_component_get_linearDamping: (id: number) => number;\n _wl_physx_component_set_linearDamping: (id: number, value: number) => void;\n _wl_physx_component_get_angularDamping: (id: number) => number;\n _wl_physx_component_set_angularDamping: (id: number, value: number) => void;\n _wl_physx_component_get_linearVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_linearVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_angularVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_angularVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_groupsMask: (id: number) => number;\n _wl_physx_component_set_groupsMask: (id: number, flags: number) => void;\n _wl_physx_component_get_blocksMask: (id: number) => number;\n _wl_physx_component_set_blocksMask: (id: number, flags: number) => void;\n _wl_physx_component_get_linearLockAxis: (id: number) => number;\n _wl_physx_component_set_linearLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_angularLockAxis: (id: number) => number;\n _wl_physx_component_set_angularLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_mass: (id: number) => number;\n _wl_physx_component_set_mass: (id: number, value: number) => void;\n _wl_physx_component_get_offsetTranslation: (id: number, out: number) => void;\n _wl_physx_component_get_offsetTransform: (id: number) => number;\n _wl_physx_component_set_offsetTranslation: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_set_offsetRotation: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_physx_component_set_sleepOnActivate: (id: number, flag: boolean) => void;\n _wl_physx_component_get_sleepOnActivate: (id: number) => number;\n _wl_physx_component_set_massSpaceInertiaTensor: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_addForce: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean\n ) => void;\n _wl_physx_component_addForceAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean,\n posX: number,\n posY: number,\n posZ: number,\n local: boolean\n ) => void;\n _wl_physx_component_addTorque: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number\n ) => void;\n _wl_physx_component_addCallback: (id: number, otherId: number) => number;\n _wl_physx_component_removeCallback: (id: number, callbackId: number) => number;\n _wl_physx_update_global_pose: (object: number, component: number) => void;\n _wl_physx_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n outPtr: number,\n maxDistance: number\n ) => void;\n _wl_physx_set_collision_callback: (callback: number) => void;\n _wl_mesh_create: (\n indicesPtr: number,\n indicesSize: number,\n indexType: number,\n vertexCount: number,\n skinningType: number\n ) => number;\n _wl_mesh_get_vertexCount: (index: number) => number;\n _wl_mesh_get_indexData: (index: number, outPtr: number, count: number) => number;\n _wl_mesh_update: (index: number) => void;\n _wl_mesh_get_boundingSphere: (index: number, outPtr: number) => void;\n _wl_mesh_get_attribute: (index: number, attribute: number, outPtr: number) => void;\n _wl_mesh_destroy: (index: number) => void;\n _wl_mesh_get_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcStride: number,\n dstFormatSize: number,\n destPtr: number,\n dstSize: number\n ) => void;\n _wl_mesh_set_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcSize: number,\n dstFormatSize: number,\n destPtr: number,\n destStride: number\n ) => void;\n _wl_font_get_emHeight: (index: number) => number;\n _wl_font_get_capHeight: (index: number) => number;\n _wl_font_get_xHeight: (index: number) => number;\n _wl_font_get_outlineSize: (index: number) => number;\n _wl_material_create: (definitionIndex: number) => number;\n _wl_material_get_definition: (index: number) => number;\n _wl_material_definition_get_param_count: (index: number) => number;\n _wl_material_definition_get_param_name: (index: number, paramIndex: number) => number;\n _wl_material_definition_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_pipeline: (index: number) => number;\n _wl_material_clone: (index: number) => number;\n _wl_material_get_param_index: (index: number, namePtr: number) => number;\n _wl_material_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_param_value: (\n index: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_material_set_param_value_uint: (\n index: number,\n paramId: number,\n valueId: number\n ) => void;\n _wl_material_set_param_value_float: (\n index: number,\n paramId: number,\n ptr: number,\n count: number\n ) => void;\n _wl_image_create: (jsImage: number) => number;\n _wl_image_size: (index: number, out: number) => number;\n _wl_image_get_jsImage_index: (index: number) => number;\n _wl_image_compressed: (index: number) => number;\n _wl_image_originalScene: (index: number) => number;\n _wl_image_markDirty: (index: number) => void;\n _wl_image_markReady: (\n index: number,\n width: number,\n height: number,\n flipY: number\n ) => void;\n _wl_image_count: () => number;\n\n _wl_texture_create: (image: number) => number;\n _wl_texture_get_image_index: (index: number) => number;\n _wl_texture_destroy: (id: number) => void;\n\n _wl_renderer_updateImage: (\n imageIndex: number,\n jsImageIndex: number,\n srcWidth: number,\n srcHeight: number,\n xOffset: number,\n yOffset: number,\n flipY: boolean\n ) => number;\n\n _wl_animation_get_duration: (id: number) => number;\n _wl_animation_get_trackCount: (id: number) => number;\n _wl_animation_retargetToSkin: (id: number, targetId: number) => number;\n _wl_animation_retarget: (id: number, ptr: number) => number;\n _wl_particleEffect_clone: (index: number) => number;\n _wl_object_id: (scene: number, index: number) => number;\n _wl_object_index: (id: number) => number;\n _wl_object_name: (id: number) => number;\n _wl_object_set_name: (id: number, ptr: number) => void;\n _wl_object_remove: (id: number) => void;\n _wl_object_markedDestroyed: (id: number) => boolean;\n _wl_object_parent: (id: number) => number;\n _wl_object_get_children_count: (id: number) => number;\n _wl_object_get_children: (id: number, outPtr: number, count: number) => number;\n _wl_object_set_parent: (id: number, parentId: number) => void;\n _wl_object_clone: (id: number, parentId: number) => number;\n _wl_object_reset_scaling: (id: number) => void;\n _wl_object_reset_translation_rotation: (id: number) => void;\n _wl_object_reset_rotation: (id: number) => void;\n _wl_object_reset_translation: (id: number) => void;\n _wl_object_translate: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_obj: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_rotate_axis_angle: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_axis_angle_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_quat: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_rotate_quat_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_scale: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_local: (id: number) => number;\n _wl_object_get_translation_local: (id: number, outPtr: number) => void;\n _wl_object_set_translation_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_get_translation_world: (id: number, outPtr: number) => void;\n _wl_object_set_translation_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_world: (id: number) => number;\n _wl_object_trans_world_to_local: (id: number) => number;\n _wl_object_scaling_local: (id: number) => number;\n _wl_object_scaling_world: (id: number) => number;\n _wl_object_set_scaling_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_set_scaling_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_scaling_world_to_local: (id: number) => number;\n _wl_object_set_rotation_local: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_set_rotation_world: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_transformVectorWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointLocal: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseLocal: (id: number, ptr: number) => number;\n _wl_object_toWorldSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_toObjectSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_lookAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n upX: number,\n upY: number,\n upZ: number\n ) => void;\n _wl_object_set_dirty: (id: number) => void;\n _wl_get_js_component_index: (id: number, outPtr: number, count: number) => number;\n _wl_get_js_component_index_for_id: (id: number) => number;\n _wl_get_component_id: (id: number, managerId: number, index: number) => number;\n _wl_object_get_components: (id: number, outPtr: number, count: number) => number;\n _wl_object_get_component_types: (id: number, outPtr: number, count: number) => void;\n _wl_object_add_js_component: (id: number, typeId: number) => number;\n _wl_object_add_component: (id: number, typeId: number) => number;\n _wl_object_is_changed: (id: number) => number;\n _wl_object_findByName: (\n obj: number,\n name: number,\n indexPtr: number,\n childPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_object_findByNameRecursive: (\n obj: number,\n name: number,\n indexPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_component_manager_name: (scene: number, id: number) => number;\n _wl_skin_get_joint_count: (id: number) => number;\n _wl_skin_joint_ids: (id: number) => number;\n _wl_skin_inverse_bind_transforms: (id: number) => number;\n _wl_skin_inverse_bind_scalings: (id: number) => number;\n _wl_morph_targets_get_target_count: (id: number) => number;\n _wl_morph_targets_get_target_name: (id: number, target: number) => number;\n _wl_morph_targets_get_target_index: (id: number, namePtr: number) => number;\n _wl_morph_target_weights_get_weight: (id: number, target: number) => number;\n _wl_morph_target_weights_set_weight: (\n id: number,\n target: number,\n weight: number\n ) => void;\n _wl_math_cubicHermite: (\n a: number,\n b: number,\n c: number,\n d: number,\n f: number,\n e: number,\n isQuat: boolean\n ) => void;\n _wl_i18n_setLanguage: (ptr: number) => void;\n _wl_i18n_currentLanguage: () => number;\n _wl_i18n_currentLanguageIndex: () => number;\n _wl_i18n_translate: (ptr: number) => number;\n _wl_i18n_languageCount: () => number;\n _wl_i18n_languageIndex: (ptr: number) => number;\n _wl_i18n_languageCode: (index: number) => number;\n _wl_i18n_languageName: (index: number) => number;\n _wl_i18n_languageFile: (index: number) => number;\n}\n\n/*\n * Api <> Runtime compatibility.\n *\n * Some features exposed in the API are only available from a specific\n * runtime version.\n *\n * Every added feature must throw by default. If the runtime loaded\n * has the specific feature, the method will be overwritten by Emscripten\n * upon loading.\n */\n\n/**\n * Throwing function used for features added in a patch version.\n *\n * #### Usage\n *\n * ```ts\n * const requireRuntime1_1_1 = throwInvalidRuntime('1.1.1');\n * WASM.prototype._wl_new_function = requireRuntime1_1_1;\n * ```\n *\n * @param version The version in which the feature was added.\n * @returns A function that will throw when called.\n */\nfunction throwInvalidRuntime(version: string) {\n return function () {\n throw new Error(\n `Feature added in version ${version}.` +\n `\\n\\t\u2192 Please use a Wonderland Engine editor version >= ${version}`\n );\n };\n}\n", "import {threads} from 'wasm-feature-detect';\nimport {WonderlandEngine} from './engine.js';\nimport {XROfferSessionOptions} from './webxr.js';\nimport {LogLevel} from './utils/logger.js';\nimport {WASM} from './wasm.js';\n\nimport {getBaseUrl} from './utils/fetch.js';\n\nexport * from './utils/index.js';\nexport * from './decorators.js';\nexport {NativeComponents} from './component.js';\nexport * from './wonderland.js';\nexport * from './engine.js';\nexport * from './webxr.js';\nexport * from './property.js';\nexport * from './prefab.js';\nexport * from './scene.js';\nexport * from './scene-gltf.js';\nexport * from './resources/resource.js';\nexport * from './resources/material-manager.js';\nexport * from './resources/mesh-manager.js';\nexport {TextureManager} from './resources/texture-manager.js';\nexport * from './types.js';\nexport * from './version.js';\nexport * from './wasm.js';\n\n/** Relative default path for the loading screen. */\nconst LOADING_SCREEN_PATH = 'WonderlandRuntime-LoadingScreen.bin';\n\nfunction loadScript(scriptURL: string): Promise {\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n const node = document.body.appendChild(s);\n s.onload = () => {\n document.body.removeChild(node);\n resolve();\n };\n s.onerror = (e) => {\n document.body.removeChild(node);\n reject(e);\n };\n s.src = scriptURL;\n });\n}\n\n/**\n * Checks for support of WebAssembly features.\n *\n * @returns An object containing booleans for supported features.\n */\nasync function detectFeatures(): Promise<{\n threadsSupported: boolean;\n}> {\n let threadsSupported = await threads();\n if (threadsSupported) {\n if (self.crossOriginIsolated) {\n console.log('WASM Threads is supported');\n } else {\n console.warn(\n 'WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.'\n );\n }\n } else {\n console.warn('WASM Threads is not supported');\n }\n\n threadsSupported = threadsSupported && self.crossOriginIsolated;\n return {\n threadsSupported,\n };\n}\n\n/**\n * Options to forward to {@link loadRuntime}\n */\nexport interface LoadRuntimeOptions {\n /**\n * @deprecated Ignored, SIMD in the runtime is always enabled as it's supported on\n * all modern browsers.\n */\n simd: boolean;\n /**\n * If `true`, forces the runtime to load the threads-compatible version.\n * If `undefined`, performs browser feature detection to check whether threads are supported or not.\n */\n threads: boolean;\n /**\n * If `true`, forces the runtime to load the webgpu-compatible version.\n */\n webgpu: boolean;\n /**\n * If `true`, forces the runtime to load a physx-compatible version.\n *\n * **Note**: If your scene uses physx, you **must** enable this option.\n */\n physx: boolean;\n /**\n * If `true`, forces the runtime to load a loader-compatible version.\n *\n * This option allows to load gltf data at runtime.\n */\n loader: boolean;\n\n /**\n * Whether to instantiate the runtime with a renderer.\n *\n * Disabling this is mostly meant for testing purposes (increased speed).\n *\n * @hidden\n */\n renderer: boolean;\n\n /**\n * Path to the loading screen. If `undefined`, defaults to 'WonderlandRuntime-LoadingScreen.bin'.\n * Beware that these are special .bin files signed by Wonderland. Customizing\n * requires an enterprise license, please reach out for more information.\n */\n loadingScreen: string;\n\n /**\n * Default framebuffer scale factor. This can later be changed using\n * {@link WonderlandEngine.xrFramebufferScaleFactor}\n */\n xrFramebufferScaleFactor: number;\n\n /**\n * Whether to advertise AR/VR session support to the browser.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * If `undefined`, no XR session is automatically offered to the browser.\n *\n * @since 1.1.5\n */\n xrOfferSession: XROfferSessionOptions;\n\n /**\n * Canvas id or element. If this is `undefined`, looks for a canvas with id 'canvas'.\n */\n canvas: string;\n\n /**\n * Logging level(s) to enable.\n *\n * By default, all levels are enabled.\n */\n logs: LogLevel[];\n}\n\n/**\n * Load the runtime using the WASM and JS files.\n *\n * @param runtime The runtime base string, e.g,: `WonderlandRuntime-loader-physx`.\n * @param options Options to modify the loading behaviour.\n *\n * @returns A promise that resolves when the engine is ready to be used.\n */\nexport async function loadRuntime(\n runtime: string,\n options: Partial = {}\n): Promise {\n const baseURL = getBaseUrl(runtime);\n\n const {threadsSupported} = await detectFeatures();\n const {\n threads = threadsSupported,\n webgpu = false,\n physx = false,\n loader = false,\n renderer = true,\n xrFramebufferScaleFactor = 1.0,\n xrOfferSession = null,\n loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH,\n canvas = 'canvas',\n logs = [LogLevel.Info, LogLevel.Warn, LogLevel.Error],\n } = options;\n\n const variant = [];\n if (loader) variant.push('loader');\n if (physx) variant.push('physx');\n if (threads) variant.push('threads');\n if (webgpu) variant.push('webgpu');\n\n const variantStr = variant.join('-');\n\n let filename = runtime;\n if (variantStr) filename = `${filename}-${variantStr}`;\n\n const download = function (\n filename: string,\n errorMessage: string\n ): Promise {\n return fetch(filename)\n .then((r) => {\n if (!r.ok) return Promise.reject(errorMessage);\n return r.arrayBuffer();\n })\n .catch((_) => Promise.reject(errorMessage));\n };\n\n const [wasmData, loadingScreenData] = await Promise.all([\n download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`),\n download(loadingScreen, 'Failed to fetch loading screen file'),\n ]);\n\n const canvasElement = document.getElementById(canvas) as HTMLCanvasElement;\n if (!canvasElement) {\n throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas}'`);\n }\n if (!(canvasElement instanceof HTMLCanvasElement)) {\n throw new Error(`loadRuntime(): HTML element '${canvas}' must be a canvas`);\n }\n\n const wasm = new WASM(threads);\n (wasm.wasm as ArrayBuffer) = wasmData;\n (wasm.canvas as HTMLCanvasElement) = canvasElement;\n wasm._log.levels.enable(...logs);\n\n if (!window._WL) {\n window._WL = {runtimes: {}};\n }\n const runtimes = window._WL.runtimes;\n\n /* Global identifier of this runtime in `window`. */\n const runtimeGlobalId = variantStr ? variantStr : 'default';\n /* Only load the runtime if not previously loaded in the page */\n if (!runtimes[runtimeGlobalId]) {\n await loadScript(`${filename}.js`);\n runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime!;\n window.instantiateWonderlandRuntime = undefined;\n }\n await runtimes[runtimeGlobalId](wasm);\n\n if (webgpu) {\n const WebGPU = (wasm as any).WebGPU;\n const adapter = await (navigator as any).gpu.requestAdapter();\n const adapterId = WebGPU.mgrAdapter.create(adapter);\n const desc = {\n requiredFeatures: ['texture-compression-bc', 'depth32float-stencil8'],\n };\n const device = await adapter.requestDevice(desc);\n const deviceId = WebGPU.mgrDevice.create(adapter);\n (wasm.preinitializedWebGPUDevice as any) = device;\n\n const context = canvasElement.getContext('webgpu')! as any;\n\n context.configure({\n device: device,\n format: (navigator as any).gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n }\n\n const engine = new WonderlandEngine(wasm, loadingScreenData, renderer);\n\n await engine.webxr.init(xrFramebufferScaleFactor, xrOfferSession);\n\n engine.autoResizeCanvas = true;\n engine.start();\n\n return engine;\n}\n", "import { Component, Type } from '@wonderlandengine/api';\n/**\n * 8thwall camera component.\n *\n * Sets up the 8thwall pipeline and retrieves tracking events to place an\n * object at the location of the tracked AR camera / mobile device.\n *\n * Use this for SLAM tracking based on 8thwall.\n *\n * Make sure to enable 8thwall in \"Project Settings\" > \"AR\". See also the\n * [AR Getting Started Guide](/getting-started/quick-start-ar)\n *\n *\n * Currently only supports world-tracking (SLAM) using BACK camera.\n *\n * - remove any occurrences of the old 8thwall-camera component in the editor\n * - Add this component to NonVrCamera\n *\n * IMPORTANT!\n * - until it get's fixed, select 'customIndexHtml' in the project settings\n * - open a generated index.html and crossorigin=\"anonymous\" attribute to the + + + + + + MyWonderland + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + diff --git a/deploy/music/happy-funny-kids-111912.mp3 b/deploy/music/happy-funny-kids-111912.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..eac23766e2e0edcc387d4013edf73273f0272473 GIT binary patch literal 2497724 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�C^M3&R`$XgtGIFm`orJa&S``yw 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°s$}E1#gFcg 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

lSgXKTL>Qt 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%0Av;yl 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

&GL@3D#v*8943Yhs40Ruz$ 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 LV{t%f-BjGy^Q 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 z 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

IkJ5tLAN0D+-(#O=%TDv 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�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

-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

VL+LWPHGsp|a$=Z}!Kk55- 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

6{sF@|{`DSUp~qS{)8MPu2a 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%0Aj$>8k_%hS6bv#UPS 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

xF~#g2?|h!k6P+-p-ahAPhI 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≪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𝔯AW0mmv38t<>13ibc{ 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�?EFVe56uB~MD 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 yV6bs4K4S>%{oDTo{(nK4M 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

v_5n?7P>5 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

IdI;2Gb0>NIkLb#rI7g~S4NyC+IyG%*@F$p5ti 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�g`r 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

B?(Vp>IFse9`ONvQHw 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 SD+kG!d26r1| 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

b^T|O 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 z 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 I|G>Jepw@UIP9qi~CX)DNL9p$J_A@fag(SU( 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

~j4X>RP2K=OWp#^nqgnMYqKSs2@CvgVYZ7(r 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


hH?=f{*(-3$nO9D{r>NylNC}-fQGt6AdELL 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�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�&iq@M|8 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%0D2tPW<%$?AB2|!{kAWq%4rO5LM`EK>D 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 Q%<(Hoj49q-S#0pPTl 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%0D52E>7*O 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

tU^-AW_PzYH&Jq{d8+(s2;%#ICi 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 T9{?C44*+1@0eb)d%xL}(u?b{( literal 0 HcmV?d00001 diff --git a/deploy/sfx/9mm-pistol-shoot-short-reverb-7152.mp3 b/deploy/sfx/9mm-pistol-shoot-short-reverb-7152.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..98931298ee02492366328400da26609724316d44 GIT binary patch literal 47647 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 C7MOMb literal 0 HcmV?d00001 diff --git a/deploy/sfx/click.wav b/deploy/sfx/click.wav new file mode 100644 index 0000000000000000000000000000000000000000..e21139d93cd54ce26d0e7d4e1f99c70d96b22ddd GIT binary patch literal 11254 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

r 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∨= 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%0DW{g}F;{QG#7^ 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 @THL-g$vy_j1 ze@Q4Ng}T`)_b&>P`_wN+KveWkV^B5l9q%4Slq?_Z|hrUaWO29)Rqf6RcWB2 zaqjQlu`fryJN{dJB0THSCpDB^^;<;)8cq$-q?-pd->K+iKR#^UGCB>aAS|>G61G72 zmXlIk+wvn-Vov;+7SAMH)qrr#g^u%mtAt{WbbeK~HTh*<*lk+tmlXBPA>quzd3#Rj9F3kFs!jW51mF#oAXHNg4%Ise>k z2_Ur=0Qpxv=loC3Pjyr`xrEEK>v{#TWL&8#JH92-03!w`h%uO=NJbiw>pO{wSW_SE z7q%yaxCl9@(xHZyUMiMjC!-0RspJF#SKyfmgpM45L%!cc5{vevO7Y^V=*A`h3m3i? zYS@$3&O>ITyT9~S^{-4DleXJ}Sjnp`*X-jGjsJA7ij@Gx-{>Q{4AC3fsBiW@VX0I4 z9jf&UMILj_PsTg_?FEjPcKHJ@k|RY)gRv<&rDaiL;7$4bCLbBRdh;h ziQ`K$l5t3cX|Z4e^jCf2`+}#uUlk-{z7cWO$5Xa1 zOKZGj&s$#;i577z2`b{pC4=e-^pE9FtEpR{I80~`YQ!!Jt7XrN5r=OI^aa#kyZK(b z*ehRCB=biM!K;W`1A$NfWA9@8OH_4?53|nWI3*Z!4aswgH9AcIWQQNAocQV~f)e7Q zoiZpdHo+7|StyixS3F?cg^NA+KmCnZpEZ;=1tr-3E@euB{Q39y-NmYTN-)}?HlfiG z0M`Qn`GcKn{*TpujoNIYdiM{ns}F^7R^>XS=Erb;XeaiqhZ?iwOhQkFsQr9)whXHw1W8U^g)dbdbIO z`12rtV1?z}fA)O;1rP$~N8{IxBI@kx)WG?j9jKq+%w&2)dOy`9x+C$ILt5p&6D?s%r#JQ>m^Ve)i}R(N^vUlbqL{~TK`Rn)|4eD zq9sv>=bOi`0)jgNZEZT%H8prr4$8v}cyLazq1CSc-ml$XY#%`VLv18pS_IsGA^GPH z&aYhoqfidq0oV^ZB|!>1BlFc!6f_N6P4eGH90qy^ZSOISm%Eav92hW(x~qEefD&Za z=Bx#Y8A*5$#>++hTW9eefmLgVdX^n)@2tbf+|;m^DF@nhuqUJzkQN)37sgU1{ka5Z z=09UC@)yAU1T9*9AQpOFCraO^7z%&S0RKCR|scu z6c!FxO45nRYagr6;|KRQXF>hmb*6C|JGCW85Wls~kcomBU~YyzeUQLIj74(MzGu0a z+Vg&e1$~wMS_(2$l!U>_B&|yn_on;DE*YBYHA6z2xA*iw)KxO#^x$M(*Vn&4bP#Mp z2pvBj5{@;5itVvVc%(2pJJm<>1@X?_n@k=Go9B>?&0ku|8s<)Oyn{LAv8Qs! z4XwOl^vsizT=uM}r^m4>bA{&d>4=IN_!RduSzg0)e&NB_pyzcCRlgY>UijaUL46Jc zhAX~`FVW#L(VkBr>Zmd?63Ul2b;xJ@ZUm;&!N=!GC?o}zbMX1o!B~Q63O`@KM6C1P z*zK3Q`ggqTkdl_p6tDgkLq7gIK#iXh&@*lU8;=1j027@eKYH^1lA`n-8785tY;@VT z%kK>AFuo-=;Mh&lGnO9?hhcu$1E{K9rRT}<{zuoQVk`6Oxw%~Vx_AA9jo|^Je$Qb7 zA%S%S!aF^)L&66E07A;(BRFRhQDnbb;PJow*C~y%d%Dd)EVmDYORJ=BwM(SU;8Go0JCk@Ae zJ#v8Se0p2q&(Ur|pg`GKrN*5~yDBKzE$K`AJdKXqSFS@_g;|9^lIO&9;l2si+J(48 z{Iq`%%eEY`Sz3rLRf?K(K4=UgH(Vafk}Cg6@kw6TY+c=dae;6`Fl7A88Q03bG5v6V zqxs_eLH&(ol#akxEj!x$|L|LMpkgt|zdD~^gZp=!uU@N{*F#}qoKM-690&ajUugVr zXyC@ij6vKA4rJb5fjKiB%)i!YtQ=I{@Rf)XHtr65Q_I+7`|}sW>AT~OqjIEmqy~Z# z4MA|-WCg(oNDq(O?6q{!sQW9iTURH?xSy}^?^9Y=N8QerUiYy|bslj&dD!MUGw3Nz zmPCtg(egGKJaYIrdi?L@*qIWA6-dGY`8e6;9?8T1y}!FNJxUJDBS=@0Ju$%Mh>5>=39AIGTq zv>C@$qCmK5b86B2?pD`}oe6K4UdLV+#ewr9@GTAdvA|7*Mp?obfX10f z)ZQ0(lDX*3r!nfOiejbAacD6bID4>=x2FDUf$vWor;@vyOo|8-CEmI(1%g#32!z>V zLx={t2xmruNB;_NdBnvlgUw;{zy4_Z<>m&%yPC}6k=jW<4?1A|ocd)-nP6FVMft9uM-bFj>STN+~iTn(36Iv4#C9g_km_QT;8YJ|TZWi5kdQ|K(Tw+mBl-joOtgh=O8Y7v ztfhg2S|2pBGX_U@56ROAKuY5_aoS|uwt#&m`uNqB&705h&H}-R1wd2i| zqle}@u9c8iyqQ>=(7AM4+5g4g$Evp+%9c!z`p^Fw?JdKfFa~G=`R8UF0`hWP#XPw+ ze7ugc)lYIu6`9ujWRLt}b-3+#H=vZcZ@Rrdea&cMoIVhh=z9}Sc8}CIE8s<�sOd z&RXegPzPa(N_&t9!K9h8GvpDfGTDaf8m;Q(7WHI`p}9gZDKpFBQUE>Smu4jl@&_2J zfvpV=u`59dgvTxWKu_Tk;)9bL=(~)qOZl>$R6Bv7=Ydh+6D5nFtHqH2^518TGW)}sj%sD`Q{8SAd&3&<4B7WsMn;Qr$p_lOoH;w~Mo)Xh%=qE0DkQOYC)=Fb;k z00yMdV=U}m+z*NHdUz%I6_Lv5Uy_H2sK8^3dmaaESd6LYTK^pePj~EZ^6eWe5gWiS zu>V5;S^G&hJ8TS48{FsiGOym7znvtZ57{iKr8VM}VIhu2_z3*c)ck7v(U3TumCaaN z#hCr$gnbc3wJ$D(+NE9Kgt5(1&d`>)tA%ZBU{itcxrlH!_IJz>P&LpQF2XGlCvy-h z#wlLJkJ~+F8Tm@dbeHssPQ+?>h&4!I z132sFnO8@1Yh7M0>gEQ^5!&S?shgN!WROGa1k`{0J>2flxqgl)irUWHj?50^Upb0W z-mu3RKtTOQ93Vcz?O@l%2~;Pa2Hr>z!ZJ|fE>r2Gd61UBrm!^8ZJuc!Y}6v*weSrk$#yP#-IO$i6 zNnLmpjgm_>!7MkHvz4idupWPz>PtXoGt}LG4%qd}J6nGLJiBAIv2|+vGRb0hgg zrI|wn9!rrYyBZTNB!PQme5y*S)o@qmAH2@b^|d0&PDWd+2K1o*8ho2hbP$*C2nskIvMc8_5RF zA5lDxp#Qaw2&Krme{=x`7XyS)i-=9ek!ggJB{WCusvt#Kb5xqRR_y(wk|?NY;WTLD zXVwqYN`y%F9Tm>r=_BZ$Xva>4=rI_zYZIn6%GG!NjU7PmyU_7?k~w^6f|Bi7J1uSD zQ^${Adw#y8+CTa0N0`-cDx=A^&?;$d1_MWM)|z>vmm9EmkN(nBCxA((9%AfYSac=? z)DqyT8x#ALI`VQx1dtPdpg^g?~Ewzxzi6!ilqw0F-xAoWmCd zo~1y^*HzPB#5fVh#dWXTSFtnC$NJ4VL%EYaFTmOJNh(LjKvPUUq5@9NVTzfDoI^mjjQBB_LJ?TT<`}-F71Az z8Ya3VqECxK+nwugNIW<{e~dPWKiHE2Ey@)+E9nyuG8k*ZV@rquvwi&&o>|IpmC&l0 zKb5Ablr3Q{pTf`#Hx1PE*13}Emlb<7GClRbZ_mHZl~@PKQ&^_vXA+E5N?eL43gYmu zXyRMet*v2pS*U(fJ+IWliam~$_U4#cC{r_y8DG3;+3maJQx*IhK}Rw`z9>loT7r0# z@YVO_%r@wT`Bzd4adWoeRa4WO;O8P2{4212*rXi_2bW{$@UDRKUx1`Z@nZkc5NZQS zpd=IFP;;o;^p6G^Yr2T59HJhGlQv1PpDZ@MFdFB*mr_46KBQKGpe2ph-sydi@ zg2M-9y<>V69;HAKA_f&82nV5!S3siJzdk)~6(}9Kialzsz<2G1yGx)-i$5bbn_94T zuU$;R(QoQ2^^dqRDqf7*CknKcNWecEbV?|#apvtk5H))RuF?}?r)dLzZdem_-T!_M zncjKveueICFzXJ4vWd_GSxcg!Fp?NgaDTxSFd#!=lHp8H-y)jwgUPRMruNN`mF(Cd z;`#%rPY*E;5ZWiQ#L~sme~X*6k3CIZ+O8FM#|l+K@i*0_VZOs1153oYf#4zl;a}eB z?$39Hk!UJ$|5(dv^;Ub7B*o>s8fw(Bb5A4vGi7XJtq63TRy`C9NCe+$-toIn#=J(z zy0xp9+Myq#gHK;TBtaQ~Cj_f^1{her5Ih+Iu(KC;)_wc${o0+O1Myo>{{gs<;0*)y zD}=%MT~EJ3s4Wf@lr%0~pl+2VOW_wvX@?rw63xpCWH&?m64I5#_

&nbsbpqu$Wz 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 literal 0 HcmV?d00001 diff --git a/deploy/sfx/critter-40645.mp3 b/deploy/sfx/critter-40645.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a642ef7ee0553cac212d19635053d051e7f61e17 GIT binary patch literal 112320 zcmd4330zaj)-RfwKmsHTApyh~W(kl0G6+h5fT%&4#DEG(n3a}6RIuqL2>}8G1Q`s7 z8bA?f)QEJeEou@55rU$qjol7G1<}?PLA$|5@^(B&&;9Pb-~HY9d*{CU?Ojx@s#?2J zwf}q7UaR&h)N{`hK+9V(OCa{^RxSt{3<8dQguaF`>8T{crUP6`?jnJZ^=p>Dot5?7 z?SGuxixR#%`SF(jL&@%y9i-agK-ve>8>ced91`y=tIb`cD2jr;t5v?N)*>6?7UtxaU+wfC<- z{XHeNa8JsA^EVxwgm4Ef3g`9aF^b0^jjD_n(>2u zlO)J*b6t%Zz&GE16M6}>OaCJ1pZID8Q7yrdb{94rs%jo;j!rBi#ZMz6yW8YCzNsI0w3F+;nPHaG1w9g{uD)~4ZgoTJgLe_@9oVfkZlQs< zQUwaOTWaJT#`vh4;c`Uzp?y0#42;Q03#Oe;A4JAY{&;n_Sy6%oCN#?o3}sc?h~Zb;NC(=o2;M))vONJ37`x z^uT>1WPue+{cZ~xHQfe;Og z@*^Pp>X5!bpEyWvB8U&fObo*hvk{^#glN^lmXnbPqLB@;#)gPo8$}fJiDE9%SZG5O z!g;VxnwpFRDtsq7U>1#xgmd)80^))YqRAOq^FW<`a~Qh8IanVRy4d-dK})T{SMAk+ zd<8o59*|sUFqj4c0qrgbNm{i+i>S}nGx<@#ulO!;kN^RcGBJ5lBA!pgYku6C1J=~z zAiXHa9ci}|R|mNxi(#U46i*ybJ_^}+bs?M0WJclg)pd|t4yX-^F-)H?(39m37!(BP zff^W>14gIMcUD%g#KhzeYYJ-%uT8R3S>#z+w0e@;-RU?hy|5_7)fOI~!WCXyVxoM9 z6hLG7Ly9MAH5r;e$xZ7t(-3Naeb=H?SM089T#yfBzR}3zmMvQ%Ws0qi5cJ@WLEDMu z5Dt8jWfMzcfox)9@1eP%S7ilgC2bM5d}k2^Oz8eT5#z<u1?VMoN<>&}i3i7!Y z22CSUggr9S9KNte*VWa2@d^hN0RF!Et^y84BWNp3tYDUuOJp4r2UOjWUhdhRZ|bj} z6X3H@q2_U{HcUv(_#9poO73K9<>9+WiFmX>M5HOfCGhxdz`qJ)KMpKqE8%z?TaG#Y-|-7E$`tQBSGv+o`j2Fujy zPaUf^e`fjf3=@O|>9j()=tpau`mBEcSsMrIQd0LASgo`gCxJ~p-&MF$j_@1>HKItj z47|~qs7R!{OOxetL+bmn5CgJ}xazzo@+a3-Ehr1m6>~whE(gYfY~1;K{0x%=C+PIqFXMoO&Gb3qV@vQ^rFW$JJ9+IOm;u~^?kyy?d!5hiJC{Phnhjrp{)TRVktBxq) z`2d5lmB~7n$SUN9%j{VgDKd(|k`(FaB=k*HQ~>pxDwr-h`Z$O(Cr4^j`fAToX%P-r zTAIP@LB0*3N2h30E1IP1K_p}a7y?dINZI`zbhVQ>yi;J zjZ@FT;S~RPIE)e+VGFyKRrh9CgXCY%i${Ca>OZp=*5+&SuP3ZfbvJ!K&HdH;L|;?i zKbx#gns+T#ynRx0$M5Z{Ki)@0a9alKPI;c9w4F)BVJ@-G+cnFBA}0CDQ>9OIYSM8` z8@H@1nSHgPcm=iE5V&jA-HqG)s;e8k*H;_XdwJb&spSJzEtaNkVcpeufHDN``L^{e zBYBv}s8PQDrk(h9Rk^91T)Pa`pE3a4k#|Wt$b>i6nMoB4rmagtJTOjLxZJB6Lh$lx zsjlVMR^z}vH+X1_$&ehl(G_O{0ak}=vY#eM|IPs}vE*TMU8wc3jXKbv5faG~^aHpCz-(Mt03I5K6-?VYu#VhU zJq#*jwdz!`xUI+vmT&;cUPcnFmm8&R`6?{6QhIfrVxQ@_1*NllbgcAj6ZG4 z2Xg;9o|yDoK5^f7bGfa&@hbVvTpmEo{=d?l;?;k@|Ldy5%Pz$Bb|nZ4f-~BCn}{)R zVlJQN`}k>8(nYfc~P46SidGJ4L}Q>dAoJLYoUgIOLyw{p8~ zO$?2C01jR*+Aixa9I0WV1`(g2I9}OMzlh0HqS4!B55h|ygse>HSE6H;(xE68f*ew9 zLM7vI@UmcD;)&Vr=JSv-UKveko9MDH$!3Vmxsi03l2&B1v;;Ttn8=dz%EUN=-Uu1p zmjqFz@y{E`OEmcQQD324LU&~!`=Vc+L=m``*p=Pf^gD8%_$04ODeLRpt~a&KALJM}^1Tzq^Xwj{pG@KaY>jh%(A{Co zY1{I&Gm0a1SnFGo5qHLEu;t3w{AjJrE%3Ws5SRaSntUfWmMOi1bL`_r&TI_)*rC?Ap-n#Rwu zJlxS9)Gp#}+zHJ%Fz9XroP~7;O?$^ zc-yhptU2VOhl5#zRa$(u--T^OCBHZJ?cSr!YhL|AKwrKClfpY!UNq%FHzn>)DSFv_ zVDg(gKTVY1ws}a`T*AIqhnR9VTVU;uXJ1%grK=}-KuLdmI`!gj!_YlIXLf5k)47{z zCLZ4%pLvOuJ{b>mOzNSYJ$I?RXu#dfxLiF9P1nfetZck9Ez13K`i&YnXg(O^SE)sv z4}!R$xgs_Jc^!FOtro0P5YZqCNGLB5(9sAq60iGJVgVKFe{o3Er*^+T6N$$_@E|?B z6eQjUY9+D&(W#A0F?B#PjNpuQ%arTjx@!YAg0%(2i;)nD8_^V;uiR}WN?&`^*i89x z?a<&M4NUmmz@Xh7NIJ@AuD^BlGrsw4UsSSj{S)<4)CJQg-`C;huBG>GJKMYMzN#c0 zft#jW5NymaU5w-I`jZYGJoFgtsOE_#8nFab((7cf=p8`G;ypFgQHAwI(ly%iO~%kF z)O+3U>tA@FUi7!r%$AZkmt|5D&FT zCMtlEFAqXoL*)?C<0Ohl2;4m7LPkkCG}%=(u%CCnezeS!a9IryKvp&~HRGCj5x*Pi zaYXiHv(z=ShxAbpqDq>}7lh1|{EYR;p+81@C~VYFGZMs-Mg5tCHOrp?9tw1tdjVpU z^+c_nr`sWnbp-wrSsQ&NR);0)MB5n&{JAm-P+_F=ALaMoVbK1w4fSG+;py5glLw$F zjG@G+%dzHa|Gcx}jRR6l??`cJY8WbVHo<{ykg!}PQM#FIs64i5)!oL<#$C;s)g@D# zY}Iwz1DkB?*KW#wFK;!3r&gb8^*K$Qs%JDLx<}1Y6u1%D#5N|AuBn$&IvmtX>6U}(4#VoHS)an<&-&FV zrzm|AXixW7d>0?DJ3R6{cf;d=sw)5P&~uiicBKn!BeyM@;1Iasc6j&JVPw0e1ZcOl zlyp)MdD?jPLe1$(GSKMZp~vADYNWGA24@$xeO7_gGol%L6f&D^%)&Hja{x3xP|8rG< zTD@j8Y_m+%el`C@d3cg*P`Qj)85#+@e0WcC+Ue@W)55{=(m`OBQi_D*!V!_MQ#dGI zl+u}`*>d zD*N1qcxX^An5Q>lKkHX{c2n9;p}V{9ewm+n)rZ*z+2~`N5l-A2eKRhZKKM<%>Kige z4q@#ktSz|uhALq;hti0)%^~<4M^^I$8Xk1xW`rT%Y6;6IFvOH5;Kd4iZn-zImDnc> zq%NXql`O6hI9ZiK?kWYX4~Z;63K2l8Akq3t7V$P%3>Jg)w*c(88lQ<5C=zOgJ|!BI z%O5Nlw8)s%fTjV=Gnf4wz|k|>1Vt*W(h@_F+*JME8^tv~qjOq^^{sr4t3{jDCjO{* z@T!yO}2?9|sKa2WQ_Y6r{NE>f4JsVjSpOF}uFA@nvXJ>JT-i)qb6Sw<+NQCOGs#8y|U zJ&F1b`V`fybWX2wZM|Wlo@;A(cRVarWAngVGW?~0?a{@N2I%Yk1K%r`oIvT>6<_dG zQ=YZx=}}Z_vR3U;aZct@m)dFq6)+i`R_%)7oo1qAuuQ~{ z=@Z74LKXFyNrcqIGI7L=F%kD^|E*jK&@9Fido85^2i9f-Rr27-V|8M;j)3yGNW)^j=%g zl9=c!ot5RXUiVg%fgiJ91ep(JX=(5cx9mVs0QtTD1>c~3``GfOBOpJ{SlvDdRr;Opb9UhMROjIp|}MmfcV%cMqq zQYSdhapg$|(4S{t9sd;35y)T>bt3?yu%EpYwQQ2Do@4_QTdrPW#;Jj0RJ$Q$k%*LrKYD!=VH3=PqIG1ADFWH4t7vKN|dcS%CD~rFb zummtR7Isejkhi6@i3wKaZDF~A|EuAvRyW;4Nv7f87LX;FTdH`KM>ZiFqYv0nJ;l;x z6wvg2aIao5nr`WU6^rN``xVimp_2h7dc}bJ_fR4s$Y`^A6fJ(0eQJHhDGk2qwwrXxpgnHFFZgcAyH221W2uoJ;}0CQ zA#vK@zQ6v#=hWTTKBKd}gBHwae6Dm>>zGBT-nt2c$`TrzN$}??cm@(hWyyAYBq>za zz%CGPY6a-TP^>EDHm^Ad8z{)+Jsm)leAb8kjA$uUyyie?kWkmu2VaU^r?BG#r|h<+ zN>dSp4&*h{0p*!$P7;zr^?X>O43|RMP%W?44(*^)TtgU77#yFO(`xi-dZ8{pqEE^7 z%!S^x(3r~0uTNwJGZ&q5mi)_Vwhw*9_urxr{ks|oSknD--;wmc&WwSvE-K>3> z_=#UgbAgKYwAX%c5C;{#_8h1gh9;Y~?hI>ncaM)>N5Jol59FOUGh4Mn;?|xzY7ZGp zbpH-AyondcnLI%|>qzDE^XtHQorc4pR-_Iu7_k+=LG|od{>L<8c-jH@LTaAWW0KcmYD(5s*C9#=L@8;V z>B^Lp&Xj?Hp3by^q8?3}B3(5Z9~&PKxW@k#D( zOtS(Hp2i0k=oWYnYqTm#wkxUXt25vo) zMYCsmFLs)nABRNv z5sx0|*$DwxA`vv=(OlY21Ms!GHciAj8SYdz2C>Te>=lSER7v+bG<4Me?F0tQ*!1 zy-Hrh9Whh&vU=HuOgv4JIwtThfC&862p9s6fJ2dna$Y_#LsvLZnZ{LH-bEYpwi@sK zitm4}<*4+3xt{qZ1>s(+``797@B%muRH+3sDEP+e~ ztb^(5+|)KCY?qo}ax-YVy~5STKtzUmJg4}3`)mw38nF{3Z_#P9i{-jOv>cF0VADwR zHZB(yP{PL(!5KtMflOFb?BrspOSd%Nkte)f4aGv8o6^D-FK#?RF%3NB>JYX!o!;Cg z2qJBTePaz{NgYGgFv^8$T7 z^7WTl0d!&w9t-X*lCXKTMLhUZHn^adWvOxt=E$0`)7P8#h-PkLc2LEl zk>??#cXxBbn@ZADA|d(`}R2&Lm2r0Vz1C!VY|K-i%8OGk*y3-DemLrZW8b-4r&RN zAus6){|&~J#u&SMva;R;Wtnq?GR)Yw*)EZmhL~jSKFHjOA!7$l1%cuNUZq4=uW_YH{rO{H zKhs^Ha-l*OWG5?@5s6`j?zY%wffr<>5{Vqrstv(bw=W+Lwu3Pp`^hl8q=W(zn5P8e z5m)a}_x{XPX|-y#UURGns1LONLxyE)J3KwKs_2S)#k(5^cDHYI%V|6C>AL02doz6x z<1{5ij@2D3cyvM&eirvE~XI@h=P=X^sRLeIvCRj6b@1t z*;^%OQFf=@zH_sR+>kdov5l`U-r8(!=P_4KY$v+x~&-x-SjvU>+B77ClB6Dcrc*X z5n>ue{^og+5>EpcR#kC2oV*wRbpUf`! z|Jq9)DLs=EI(5mVKA}{3>G7WEY`3wkvq9Dg_4VyNhjwi_nR(eQ?w~L5?)|W9|2Ltu znnP`^Zl|;2qRfV(bsyG+g+03W72p4Me)ey8A48l7aJV7ELJS3!2!A^&E7CJIWpo>5-&oEHRHBuP0PmI8obF zGBQ-JL1}7EX$0HS_$A?{*$Hw{upx+GU(0|52XC+h2HKPpW3HY?IG9+>3MaYK~ z{p+t^KpdzUYX~ogL0aL^DJ}41yuGMp1#2~BTA#AUkV4yp(RvfvEA<(c*YrwXcfO=n zCOSYxS5`Ate~Ydnps(mD6RbjZ-O)9mixQwBJu9@HGuoTL@YWmZ?K)Q@Q%%cerUybj zrCN2Mr?PCO-jM96)JLj?J2L9<2{O$1Y@OVZuV%Z4 zlDm&D9kDpFd?{)#WxRsRFWizxd%f)7&MHaagSTOknPYz5@ zG6$L{CJycIY~44+zGKav$~I^JQhZ=Ad0o;z^E6TG;J&DR$&6NW^CTl-Pc1CR(pY-RaQEzrYu19^j*)NU!4Ffmf@g)JS>Li9G?>*pHcd4tfA*{(R5`9xY8oj+P@r6PM79dNOa&Bv11( zSNZ)i75~TdrtcbgByw;d7@m(i~T<=>5$ z^Wh85*ACy_|5K9k!Ikq)A0A%@oFu?-Hp0Mwy~3JXpshVC^J7^l{5OK(T)wng8%e1= zBwH`&5YyHl?x^i(kgV^3HFUIJS!wnllj$cgS!R-X#pI~j0}Z~aRXeq9KzlO2;`_YA z>`r@!Kz z6=*9f1xjQ^>;#h1;gOf23S&l(?MT@4G@oG|Ijz{B(0$#bKn?2@85rz5n1sQwt*6@l zOq3&H4R&@EZQmXR6by7=qJSa6+16}pZncv(8D=b~6{yv~I0Tv`cr&1Nv22IID==sx zyFd@?3k{_rFch_Val=JUPYBc)VQ0{@q1PC(5*=#IF8xo}pAX%LQ zOK+D27LjqaWq^~QO!|vL(Nz^4JQV06eGm;Bw9;RNT72^1X&0EqWddf0?xNZSwRl&@ z@Uic~1L`%e1kxrT|Kz#h_eEvk7W4{wB|ct z1c=Q^lZ0aG5L8^vz=}Qi!bQbIJRUA$nNXz6?#UBSln)R)lG5-@R!qKnR<5-u1$-wl zXf9xSY=jxefgV9a0pkZSVHyhkqX4T&mnK;S;ojAMDu>;L84`WVX-gg-@&=8cY4CmF z9;6L?AN-en6k4gfi;(`F6VgO)lCXDQzwkXoa>4B6#u~8rrtuE?^Wj6fW(A z0CpGfbHr;EJv0X*0mfw#2_PWKudVbMgh7cwH?(2_D-B@Jy(Wb3G$d9sxHO=}yMQ++ z2Bk5$*fhXqvO@vPm^_k??zpO~2k(jABVo-5rz!b@b-?PBd;0>qX#;n3tgHi@OCd#O ze&MWatt6;q9}5C4(p5cVBAy{sA1Uej&2k;QhscYyTh!j`)9d4^bR9aPyaw;-+*VG) zNA~w@Qywo_>^v?yUNV0=2z|VUbvH2xg%qZg3Jd9hZh@uo^x#%EI*>%ty_^oX;wE;x zECyExSM7Ea1{VN1>TcXK+`Du#BDdBv8J~>EEXw(uuv`~=ecFe5eWV_N>_+x6!eo3l z`&i_ZhhJm-K93~A3oCXb0mvQuT(vKXFhF>=cZx942o(2oZ#tmWlv`*ukf_Oqf7MpM zi}qcJ_Qh#y@cq+sHA)9`;KS^f`T6ff>E@};&zBOGHuoniB`j`!%%sPW1AXhTMrZ8H zfWed*O$pnCTY*?8%-kew6}FWvMG1?9ZKXh!ibFz{VoApl$Pxsy42s3jgYm*<;3FU% zYa#<8BNB;7p>Lko6c)hf3K9t{EY%dzs8~8(CCBmdjk zWdnWy3Y&TQW5jL`Rc}6kr66cV_?yC#B^)QYBXkv(8C2=7Xfs$CC_eKdWjB@%MT`m` zY3AoGvoh^TmaSM@W{WqW+2X*qlt4dYGEBtTg1X4wQMiwFir>hFKpI)4h*`E}Nfc*` zpd$XygTID;|Da${e?@t)sXa5L)zt2;=I<)gT6trSwX*ZDrS%BKpliG6FlqZR>{6X} zmYd8FWVf;A)}OxPDjiwg%yQp{xBl{dsM6s&7Z!XHsrP)k$n+iWRDYMhz>0Q}btRE2 zyJDHR;QneHLrSh^b|rFdC`dQh*aRT$aNRm7A=v|H%y9DE9|d67h} zq(oDMT{~u|35AEWQPxmga5S+g;nA^H=&m2n$XYL_@P7RD7god$4Za^ee?~5XzW?** zFZgzgbi^yqrrb~WUb=aZr0dZ*%U1^UYEwHg6*lgly?1tMWx7v0fTbhRTiq%t& ziic5gt&UG0avnQQ0SOZ~E4xrzmdn(LZGLT0zE~r~8OZ=uTLhHm0s<{gF4_+i=a!Eq z8y9IR@ySJ*#iQSeJ)oHd86L(3xlE5ba8KvjVbBxcUIISfymSZLTeX^+j(aM*fP-sP z&Y?&8>LCrj?>vq{^+4a=|GIwl2(|b~cXVX*sQ%DulVN1(XVEN~6ae!NJzPODZeBsB z1F|d?77FMN^f)z{WD8`U9-T3MC7Ia_Ab5q~kNfn=1KH1bU|A@;p6xMtBQ&6O&vo(vx%Ww+Jfvv481TP^gv| z54yxh62(NgHp^}!Ou-3aAgq%8Iaf=kkXD{-+VZJvy`Fdh%f`w-C}pK@E8A`*`{A-l z&i9<}ZKrG}-J)!#0tL*dz}CPMF$pmhQx$#8n$t0g2<%-JP@b% zx{oi*%6g#t&&;CtSC(BtF3^%|1v{pxkHMFJIRF#^T&&%5L%hqs3YMt?9|MtD&wk1E9Q1yk$pOUM9Y7iH^7S0-tTbNJ^n21<;`MJQjF{-a zCZlL*V4IXw1{O;3W&U_X|#KGr`X%8r|@Hx0Djxuf>E)Q8? zwU(++3`)z;Wx>*Wk*%W5x1Qg6zFAqe4fGqVj8PW$uyc>-9I!;nG7;@5_E8MhY=lDC z2^1R~JBf*h+BY8|8{ICMIgZm;4W(^XZWb)|Ew+|#*^tr+WcubiTh${;=T{vXJe?5L zwW?uw=ziiZ(vS5qN@?;I+l-$zwCSZx%=30F`eHw`?P%7l&dn z9bMa`Qb#KLZhy1lTq-Lj%8|-CKMXJcn+wS5c~i$gDaR4Gqkn0z=s{lA;QPwG1B{k@ zTX*;izM}w)mt`IY-hwOs)PO;KEPM3q3Uq(PUuwaQ=cKowN5A(Vyq^Hg03co-G`q5& zd;MEzps-udn>5NHYw*FBV zBz=qMMBUE=aRFsOO7bD@fI)txB2iZCgXQ98iol~<6p zp~7)qIrl2sj410tqh#znXDDO|jZy&w%zvJerWpld%Rk05a}|r4!1Q2IqrzAyN}dO} zGRlA<$}vETiW!PCO)(QI@CR-MkC%gXhO3dyN?lyDtW<;V3wMqd0(6%7kNpcY5Qr=Y zOQGVx%_DrRWw%qz_XkP_Ut{-6c7J#bURak4-G3}nBb)J83YNVP?074?@y=I+*CKwi zM3INJ9j6?Z3p6;X0K@<{FZ^cNjRio=X4sz*!*2$BaA51_DF9#^#~c7TsL>O_dH^Y) zS28zd8L^Lvt&khVAj-lLNM$s|`~yMIAb#A82n@Uc@)^!=5paNgMyNMKv4C=AIeIGD zayi!%4{gF&V8Jq$r`F=y>pTx{>GBwwjy~2>-NC}t^3FZ?dSTh z8_;cONnT?^68XzPL&PIP^U0r++Cov010iVg=q(sS{N6Mt!@fvwALq^n_rpXqPxkbnu*=o?up|MXy9N2z>*zV1EU)~kgZ7kJETdqes#i%CMHI5 zw$mw7qxvuAJ}w&L(*~4V*suRHW)^R)T2;dGkdiC!EF60bli#xvCG=|+=2Ue(V2&2f!>rzFhHhlXjC^9i9RQHt&;P*9$ z#k$@}fEWu8oT&Cal&^Uj)PK!xv{nB_(#v{y_H%yTTlH4GC2&g?kbJIpe)vDiFV_YF zE=MR~I5LERaiaJ|-spQ~Yp6V~CMS$!Zz3BG!{(|r&a4jAxz)cUUA857WixGa+4LkY zdvRxxWtds*P+C=X`n&A3%EnYztHjY`>F@96uDSWm$_??rDlEP)(KI+79|RDbj_gEC zMApPalX6&536o;3g8Nkv5c>vo1Y+YUsC=o-M9cPOije z7on5e^q?#850BsbRc7^{K`Ne*|8|w+L9%v;bP||2jHsN zbDo`>0N3*4lRVGP%~a2y$=dxq@1edqLrsHkfgC5dr2j#QB46BSi$7)y#6atYg3qDv zt(vSo$;o6MowC)QvMm7uaItc;Q%~n+O*@`a+k9ZjViVN|_^n|`er<^wZ~`&BrXG?V z|BR9*nw1$&a;-X%WUviP6RcV57QQ>2{!`+^%SXHu(%u~TbY89gJMk<37vjU(ukwom zKLbg1C@4^~6xawu_6U3KI7iHZu>}}E@dS)efvH+3!B-g{1vB^KmoD8F)0Xgl zFhU7|E3U$83kY0-pq(IT+fNYazZ7rK5ib>I9(?l?e#z^>!Rh@+jvjnD1{R2yh)t3+ zz2;V8zk|&s%j6uWG;!9^j{Wd0L>qqD9+hmTbx;(v!ux!oL;II z5KjRG;$ThfOLp+k^_kv_-lBYHPj62?!&^xl-4ZOyXINeT07rX2e0_Z;pP|s2>AeJJ zcwe7UTElgEuPMEIFG`mIi+~P#Z^>G@#TtD7@{B^EK?l0O`d?-2&t-Yb8!2w4NIV}} z6|73}!cgH*KZ#sODMee7WTPq06Gk|+UjZhRgVaS7K>dPcqrsF?faW8J6DAqd$JqT# z*!>D8Rs1#Cqnk7FJ-QFyLYKVd6{>^4JNplWx58;A{<2_)YWIsA>O<^)uzJU6d=Kf5 zf@Mz--WMqk@jJ2Z=u-$Ygz1E#pJ6Cl>YCJKNbAigk(68{wB*nqq91gU8u12bZQuiN z0R;F4te$@~|D;^GyL{rJ2V(w_8L$Q7Hf`Y3SA73l{pw$|c4~F<7)uJQ->W!GjiU8{ z8VP@fBAzFswMC$4v8=FOgp9_^tl!p_ygM!r5g*rH0Q9FieU&sKspBGjEBGWQ?;Fm2 zM8`=trhN;r4VCI^IA{25!CmTGZ8&?x_r<*1f-exrwo}J#m$DzZZC$KAbv;B47c8Fk zb^Ek-R`GrIJ@=^N#;5vI7f!u=2Lw)o+tLw$KUxas4~`oQN~0IpJa<@^%Lv!^YN*R# z7eG6ZhlVX#Oi0(QVR(IA;PE-JWP@&B~~RdO@{jCObXwUQ5t+ztCDnez~6S4 ze$lTcIq%Az0%3s_N7ig!p5*0q#;RvZM>(U(Oe)~|Bwh6b1aNHx-FE~W8#|fkR~mvkujf$qIS}0t4)~oD(Z=G= zQrQnr&-W+mZd+RUY>$!A?x6XHMkWJq%jK7i(4i#0*|UuF&+C&N9S&#^kH<2h;%z8K zHdOpN>Rqz?H(H+3Y|kIVe29)@c+p5;>*~W(IO2;qlPO$JQd>n)fyq>yPtxiRcv0H$ zbMu9(DGK@MgP+pwfuy6Eql!`KJuTtzqSb@0`O)vwet$!M(ANEU1yJ7o;77W&0MA@~ zWT3zlT_9!x0f%Se8uV6+U&R4&13IowD_r&}Uh*n&1_&{U@A4A=c8kJ^nX4Q0;(#l0 zS^+4{cIw`o;s{je9_LC9u&)}pD8O%c&hL7-v>W)9>!IBWS@*E28|W24Tn|03B%}O_ zR7oS?h7;Hmh?KkNM`ZNp_2&i8W_<)`U;VFN@NJ_!v}B-fx0&`|3`_}3m)$2L$WW$K zmm^zS1_sX0POH2RF&alzG!qLTlVW;LvMZ_p2kwlP-FN&4Z|NZ53I}X}LYQjK8I1_a zMvfrNkVlY5pzdk-6jBO)*CO7Bgl)?jz*+3a$ zG;uSp5H%yDQFy*fH+`SjUVqT*rOpfYxo$qjF!q!TRLk1o5vzY+(}ANHcvX1X{Uy7E zpeP2c;yu60?|=NR(9u!wu&{Zu{SGWFvcJh(sxMA*G%gF$=LLC`vBS&XbC;j4e0(J6#o z7*q0t+g9>&*B7Fh7NeZb*+v-PT`fDYRi~877!jYxksp+Wo%b2+w{U0hEeZq0EdvLr z1EQ!LDfz*5&v(F1l)^g^gIF*+W+LNdIl^mG#9=MJvM60fpm#xKl75zCoVr>5WNBgT z+J*DifY)W-a;@Pf%hi9~XuO(!{Hk;D)%5D8^H<3e?~Ve(|8Ld8 zx2lDIykBoDe^R~vle*fsEBVuT_q~ta96jOo^y3YylGw`|Us z^d&p=UJHRRjL80U{!_>t z0!Ddf2-3APBtR%*P#s;TVC?e^%3*L}E3?se?Hbx@VcNQ>6T)O6LR{x{AoW4(M+5}w z)LvF3W}$>MeQPWaQt1B-k%EKJ&{o=zq-qeeE=PG5=Hde0fCCjbg9}!!X3F4*3MU=Z z4?0IcAd$-|#K^_-pYfe`Ptvvm?LY7p-&IFW#~X-XCr0a6A<+bCi^Q*;6O5En(08jc zD^`b?Ux(OP*_hK|>(~FamgdG$S3{RQAj`l4r4;|}jyiRes*=vdKYu(P> z>uQJ8F^0)m#AiX=%o0+hQH+g*On_rUNT?+431aa2pT7%CdJ^363+s=ksV&V>C#%7c z!J++8msgGDYe%#~x~-LuL5H)}%%=J-X00O@O%pxe-_Lgi`F78B*)1EdQ_?8kn=eg# zQK|q<>-F&uHn+UinpNNXitoSPx&H==|0t!<`+8-@vJGf183kJJXFZ5ODfLh;+?m0N z7VOCzpl7{vIuHh>l8PK1OtdUVhJc<}G}XHiv*PDH`SH(k#bZJC5kf_hnYB3E4!*3J zJDQiE!eS01RdJpU;Xmz^x%dcm5K#59rCdQw;^V7N& z>XXj1Vb?-7XodDGEg?SeGY;`FC{*0ptXlCQK~pHBy#2F(UAt3*HYIdV@Yyf(^EH}G zzEPOKE5x7MEm?)HQL!T+#-=)2KR^f3xa0^S4+C*+E~mAxr~uV-h<*xLKZK{`C>~=V zP;;jRzG)@WwH^FYJ*_Jab z+E%i%IMFZ6IhecWXNf4*17ATq^x`p!*OG~Ul{h9fO4?~8#%G)y8ZDTcQC08n@|0+Ltw8@KJ zRPK4VQYj(CLN@5M-KG(p?o|5yl50@?9cs%*hD{9C)|2QwvPE(_vm-_1y>aO7{R_qqnon!~rl)av%+-TY?0y&vo8SA75b_wWD3 zJn!iFx=cbC8)+4_thPAm_~BM9QPDC{E8s%HSpYQKj@BE%Kj+E!Bb(VccUxyy~ zUrnp;awc?j)WM&g%R7Cy^TIIvM&i6<7xBUgE{ZL_PqF(XJjA)a2!%qdvT3seVpE=vQ0p~Z0ppu zxcXn*_Zqfy^rH4sQ@XFyo-M0q?DL*;ftJcgLS-O`6uLF?^p5bqx9l7edm`?A>X1Lt zYJVcv;G1HzTbBsQD!=gs-->|BA0;mw9=3VyI&d%Rez&P<_mO`-OXvh_>6z*8Z|BWk@O4n`E3B8>v$B94F7L_!W~5&++W z4qMKdf_7bY|AH@2Jgd--(UuTR0oQgQS*EMK11upP)n6D@FM|M714J9}kC!y)0JNzN zc$8=?0df#6AS{d$ahMRe*3jsN(Tzy!6l(!Qp*yV^BZ|k}!!%B|)H8Q9%&{4(uQxSX7*$T1iMi zMhh|+6a`UHD79g*b)b@jK_(T&0kvvSp>}#jv=uCpyEazebI-l+x#!&9`M&dou=DKa zdG?U3{Y-29*MAv3WHf;HAVa14rg!Y&+9f?IRfKq=ci1p-vmZCbq|WAU9~_<3HhC97 z%=*lazMvl0c8Y;?prqv6!)B?|hIGGVzODj}uv>PPwhZ)~W-JTjp;Uz$PlTtPqx zpfp*>k2FqI&n+g7X~$f1tmK#`X?wSoW^ac-ue;E%UA2h1h!7jb4*YU(eyq=zZMBs? z@n5WOmBdP-+3T=I+vyS&u6r5k1C!TN%FsIZx9->7zj8m|e#zPUn$MkH)z#6LR zj!d3P_GW)Gemmmp(2c)`EU#X+5tncF%qPZdWRK^^`E!<1O{uO9JbSw|?GvhKX#K%w zd-9%XE;pp;N#WqLIiFewTx{6q)0LA+M231FD_qWAgGSO0NxKG~`!`Y}UCE34&4&CN zCmaCP;2?OJ%mZ>za7SFY(*?xQwQ>-();V8&d>+xx<*MIy%lQ=YYe;m`CrsVaL@w}Lh-s+ zJ9fC;Y~BIS|INB)7oPJDXBQYK>uzc!Sbb;LVoLgRv3Lhw_!yV(1%3s21lhBz_(S`3 z=Dl*^&Hi-R#HTZl$1agburZpG!q)#7CVumOXRw}36jEAHiHPqh$Jv+d8@@B+%A3ZbI! zH^zY>j|i|JMKA)&6d@CBcf`L8j7=%pnV*wZM87py`5A6e{7Wy#bP1@H*w!HJ4*gr2 z47=FB^Z0&-_gYBor=PW2&G6ylIsgCV`wAB&L4uidTMKLG7N|^_0ygOTnTh;KBm5~k=t&I7A{gZp{ipOZll&*i^8HuiuQRdty&%P|;CrXp z>$SIKq%vpRDB(t5wvQ^Ha`)+^4N1E%?>o4=a(I8zzP#bIEl#^04WHih=-|GBO+Rfs z;uH7#)D7>vs^eZv{dDTW-!?_1I8;}FKvx6;;$y?mL<^01d;C>(dY`MUL>1P@v&yEt zQrBFKtpl5WHl3@z-bHtJJ(Nv(;q00mzE`!*t7}8Ic!wbF`?1zku<9G{YZAow+`Y1Z zO*d*)@?9}C*n#zWu(*PCS=uq`D>sA&Kr$S$o)6~McS~di!+Q-@PEiLeAx+@x9(g*D zLB7T5ALKiPThuqkl@XvK15%roOxV^HxY1T_ID}hnM{JHb>Y_)N5DK1v$yeR#MXk() z0y1uchsu2X*nMzp^hlXVF~(h{(|$=Sc+M}AnC)e)5aMRy9=JK&bWE#KWzHw9SQH25 zW3UCws?K>a;M8MqB{;4L9|lwE#P)0F@>03&jBq;O%xKxZ z;|zjcA>6Hz`pS_+z5xl@#Uk|a4OV`X@4py-oe^_{iSQ5tMln(c*H8ez7$dvn%pR`Y z!lQ4^PWoQ?{h|Kst@}!R&0iJ_=UDp|yp#m`bc~hd2CnPrco%3o_tC9e8~U&QZh=8& zchln6s{HA)EdY}Qn3eMT?5%mni_vBhj-Eni@4qKcnq7pWrz}q#_CB6vgjURv*tJsV z#Pl4eIBoiYnPD@dD$-;NEGz}0NI}Q~i$D*FpSmh5OIcop*A|?(b@-FdE@c(7a{Bse z`f7f>dbRUvPTzyEn#W@`4`68P+V+m>s?NzIgui( zsF?}Xf!JvTKu|b$6W|}wYZED)*@?P2J(0hGL`~v9BpLUi*Jn#urBwIyM5x?@U8Cjb zGOke>FZ!7?8N@P>E>WtUNu>yDxD=5zlwl+b&iIr{2+r6HbZ3oRTWNFB7D$~(ZJRW* zCejp9BWf$X(z8XDKJ<`E{o`NAmxqLpixF=?#rvpD5T6?Jr{ode0;4!{ph?UoEK#O# z%Fq?UGSm@FMvm$-^bYLbLCTbl{bOwU7H5;!%|DpDzEWs1)Z92Z^h%-2`K~RKgPVT{ zQgm(pJoNfP$iL*$Sd+Y9a%l2$&8ERg&v&1a)i8YX#up=HY{Gp0xX72kOf#RqOncZl zp(I(g>2TF|i?4*bCLcNi^B3!+MzO2qA$=F+h1<&%Xy|&+gWaln&%@n!lAx;t9FN{P zTz~j#%wT=EWsM$SK56+icOu6byPK%<+HD($0SZNZ;d4gt2$%13uYCpxl2ZI}`~_rH z5{}n+33!cVPJqw>v=teL=@2em0gzR@;1PBu86Z12NQa7pthBRUqk!l7^#{e;K{)UV zK&&RgF@6*1EhwJ=13}FRbQWN{=Jnx)Z(tyO2FQ;Ny$+f=$?%OHItRRu(L%4$$1j6^ zW*>u%0St#k$wTYdB33LkVdLK@pJWAFc?1oWzVeD&1GF*GTKNoO%+ayk4gk zvnWz^#7Fsl?4O;H-_)ic)@bnyA{b&NgR@&Q@op%I!ww zvDo9{uFLCZ<(wB=@3>MpITRj=A=M->2LoM6ledSR?$=jyv*`v4BC~^jaq)b4tLB#| zO}rS;R6wz+a&cxSiyKrf?iFLI9k6NL58d-(`qRjxbc5x9yb?#XPH@dWc4q5~Dfl8e z;Br*+xA^R3J`1KZ=U|evLAM!~@9(oM2mWvJ{o@g7((_L{38Sl$6>EPpel)rehggBQ zwX*=X)dwX2rUT5J0DyBZsPoi-r{e=!ivs{25Gnd%suesvIEGGQ1&;&RbwQv3k2D8f z>7kGIhd%mC5bRr)qsA;{C=*A@L05g;Y%fR}hHL1XNAOVquvYj`00ThE1Q07co9~YB zq}?>=jh)bXwontz0wKphSKW>BbQ98k{}2E)OS3^vDbs^t`2WlP`=Qt72O=vFVI1F) zxSfm$c|^kgp8c{0#f{#Np%Z~CO>w_%%NH!WB;=+Sm}Kz3U2Zpw9@!B%WuR&&#s z24OBH_=(9x6uw}0{)qR(3oGhtp4oJ^7X4~>S z!tP1xzRP;x9H+V`src^dca7gve5aR{=V2{O8)FKsT$aK2u*)$C(2_(PDK6hWkK|WG zSRbAIF#bOLhi>-v%Z%ORwIczKX_qtyo(DXl{$sb?S7rsqcnGphh`Gr{ht}*LO9X-i;Ue8t3=x$z=*F{`y=`fy{^R$mD9>q9yUfS zk)IPM%2dw8;-;ZC##CymND++1c`)sAsZ_a$P@X4*0s$G)ieMq+2N(d#Ak~SJ#o(sW z0B*p^qW4?aap83Mx3a3TUS5!>{k{qhL$7@a{E)^|^W_Nt;Y7Pe$u zVW^id%@tb4!fsBc;tFkHH)Pgux(wA(fh`WxVu`UxhJ*KdMYMJYby~DKmgpVG^b1_C zP&s4};bU5C5Ls(rpHCQihHdjeZH)X`aLebhxEV~l1O7Pr0l#G%Ln=c=UdYiR0b^8A zFv)^1LAWA0MXE^v$fKMhVY+x^flLWwd3FRlTZ6F%_0Q}rS z{29W<0mu#yGlnr4q@eCu4nMsKLquXqtS62l2Pggw_0Y9g=_l6BFGl zuwYU<>b0DS`4yll(g{fU@&wMRlDw$(q#0@Vq#+sBBheM%@|@G=nKbha{_~aUsO@gy zkLs*%+*{i(8M|2$q!tf`Gr|j7Z*~VHsS%s{P=r(hdO0D9dJHF&^;h}vxmHv^&uTg4 zYZI!_iOjH}9y^IF%-NS(!)pI}AC!1yoIDE)}I2N)e?YsF9^gsi9O_jQAr&Ci97#iiM<} z8q(PVYX?HU2lTRRl9lrO1@Q%JO+$Ie&a(~Xlj1bjRuryjJtITidw4atd`G=;xr3{6?ckT)$&FJ(WOK)4+hlb{Ys+55s&DXN7 z;c6&v)g*j=jC((VCJK@tUj1q+M;J{sDpV1praAZ#qYA@s7bu}C#j6KWdwDLyns}hqx(Ik-)wvJtmp{=H`ydF-5OX7>t!(HS zcD=AGZ?BR0WD8U3XF11Z>+Pr+S(QsD)`gej;_m+<$Tv5e>_M!^9$KC`_}S5gtaNu} zT)vR26(Ib#Ga6=(v=%q#7G#>?@2L3P=dsy;Ki4JCNCmI?4Xkt zu9~T-%C*m3c{|(fkagh91v_#Cs;)^9J->NB#O`fa|G2Qa@i(Ji&TaxQ1I8zpd(Sf5 z7y;(``IP}33^VsacG!j68A%=%ldSMs<2-x3s!yh}8@#M8ngLc3Bk)OAMU`eMSsildD+d6ZWFSxbj z%W)T(aD;Cy&{m}N#vRBpHJQ6aFq%*sd!YM@=>E%Xy@xmPSNL3*Ds65PVriF6sEf#r zy9*f2sU^RjjgkitayKn<)9(*GPqZ+mkVtNB%%W2!E5AIbBvOy%D3O_lw3x(cldf;} zLo6pn{=9AfZVNTC#_}(>MdTlkXM9;!+x}(V^6Cw$(4DQEEkxFkWDlU&&u39q-6QNQMNx63hakV%eEvTJN@XMox z9jHw(%Tq>#E28`lb{=o_GLNnwTjYVI9HfznKb}H^e?yFOD1|D-dSN+&1lr7cj;Wh9 zg!RnCw|;Im1fx%hnSD9a`%kBYxU8mMj!=9SVi6HS)-SSj-M6vwNoG~}E~ejQ_M{N2 z-I*`hD~au=+*U-dgNfWK>jd+!eB5*T3p;sN_DcnaBUb01xqZ$t#b!go@6(E$6ihzi z>ueqL+&||B>mVC@Bh3l>pcV1gdn;BfNYk9~m8_31exlOyMUHch&%)lE zR{jHv&V{{EO-s;sUYs~^YOO0tFRQePDylV}z_o26ey;12}>E zyTJT#%fd}deQyl}-UtuO|9@E@eOxG2OA#7oDCL+diO3A8Q-Gx`UWUz8&Lvf)t6kCR z16vQ%s+F$P4za89CzGwmYs-}hNBhMIXo68yF~7RxQC0jwaW(3CFy!Fc?`>=khNNqz zmz1Y>q_?}W=}Z-qu1AgjwUG3hn|#sCs* z8&w84vy)Ga>H8lAw4KAXdsVK=#sshyPt32LdfqW)bnH2I;KTg65zNUy*&UjWHiA=k zLQ!^G!i6@7|00iW{Uf+0@|Blmqg5sm zNg87{b+PKpQKPEZ4pr31N!C;$+q}|41hTqT* z$edq@4-cQSD@jj$h(0vFmwT_n zdPVL%-1~2~JXxODY;7dpy1x$`|IXLgc2h)X4XaZftPW-6uyDm0gMx%=ZeB+H!bm?Y zJF4fAN6gel%>z<4A|XUBy54^vXu&7o0+8cKv-BWo(>*q2y$gOn= zgNcG;tPSMwe)bOTby|HY@44U@^%`Uht@k!Qb{#0ZQ+c{m}#;2@J^6u$n+jv?H?g=Wy3= zXA_R(s+$x2A5v{o9e@wKk-M2>TOnbcNBa^O{<7RQwdTD47C2(uH?MZw&-A86%9FwN z<;*oB%&xX*#f(cDlBmxH%Of*AA;a21yubWbS zvC4BAIaS!6pzX1U2w(`O4|wlA+`RVlWk-td*q(UQ*WZ^sex}x%)Iam!GGTt<8yh1R zeEiLs`HL~yw%z6IhxSYI{YPL)^Z7${Tl9~$dBTirc-BR z&$w~;$;^uCuLe)t*L+I6WhL3{NwkZI(nX{_ekX|656ExDI)eq-G^)dCrL*&7dEXvW z$@5RL_E&{u2JJDYPvD>b`=XKk^U>JU$G!1Yc~nPapgpnVsu#AkKU>~rXmfzZ@LK6! z@qCcc>?OF$^_rceymG>wb`fcp+pkVPXJA!PTKFe6Bs5oQPj!iZUZjg)3YMz9Ax`vXQhAh=TyeC zdmb-ZyzR}V7de5aD~2v?cbetr?S1{1!dZdBx3fFv*S4mesyI?5%`sx2NSkbG*35*| z?9~e`=hzSvB!}Hkn~cmGt(sgy(?t|~O1{0HCFL(b0<904+5EiqS^h0|5^1wA&w;m* zK8srT{JWhCTg*`l;-u`}K*?M7F+($N;Z@qQ{igsr_}6&efs<^#I!Ly|t!Va&fE%%G z)(f_rcbLX58GV+CUK-C^;`RH!+?^$sSuMr6c7UuKYJG6zq%0?u@dx?AFqwRa_@8ON z^tqeQZtM$Pz==CE3zK5rw#qj9Hio}(I`!2Q()wxS^~SAFZJ9&Jd`SsE$}lH-&Y#9^ zImV=%Dn5hAVkA}M$|vWL$pK4OI9`1^_W+54Y&Q`N3B0CxXHf!)NF|$2wM0}e^N=-p zx?`(0OE^ zi~psk0y|A#9=S}4X0gor)9W&A9!3doJQC^?;}6b{<7h`lSVu5xh-EF9cAXHv7SmOaP_?DCuh%c zr!GdRqS}99phw~Q zmh^>7uStIL?=+~6a0tk`)>3wV;qCE#l|LR7B2UCvAl09>?@&qDRD%XF-NAI4AwO>$ zrj^;{@EXg-H5`@s0C6%VT=H4%rQh-y_b-hOhtJlJpBUb9P(N1i?AzbIa=IQ}mjd0h z{)@lH2UEU_)NlW!{=0R5&5fcdGLCzGl<&VDa{tFmaytiJT>4E7elp^&7%wwv4$_s| z_q5aJimB&O({C62qH68m+xl{^DgkCK#T30DsSn}`ph z;a|^KV0N>(h}fxFPmyiw#pSzt+8w$B@_EC$5B)Qnu%k~{(OapdR6Qsd+Fn2vRb?A^ zZV9bET1^vD7FAighYt59$A3c10|3wx9ac;1T6DzDc;j`F_uIW!cb%hlyR4;-^jvfcyUD?g-=CVO*zNxQs( zUL^_eTG{1-r!u+LUMAOVz9Ki!+H39mS@=Lp^-1LKR(uNZ4uf&*^EcXr4=7qFU$d%C@E6`w1wuV;4-7-=yZdDWAj9JW{uvDL>H% zk5VUppH!I=DNSRze50m+XY7P*cYpRlzAE->qc^?JoyOg5D{}X&+?Z7axI7aC5Ia@C z^!?6j@n?Eq_cp8r+J|^7d^}1c5kqi5Fi6*fnIn>CC-zn)W3RkldF$P;!QX*bK2Lpy zuLLGP3fo$mGJ0=IQQs=b+RI|q*_)S^J}`M;^!uy2o0p7!o0s5R-^EUj?+Q9H{|K^D zdbhIOGWwp&TuL#7VhZTI1BABp;hW`=xD)}Q5n;7v)@7I`YtpG24Maq;Lw;lM*QVg5 z`CEpsce&llW<}lpDBu6_R{F1RKutqjJ|P;}4cHI+(hx#xGt+)i8`TOeR;um|Ymy!q z%U!K<8Y6it7j+FrCRpBHG&&gRn*5!uLnJIo7|(aQmp5FixIV0HP0Mp?sHz`0X=1$m z?WxckP?2(m~Xle#P;5C7V8SCxKzL#f!O=Bdw<`tGM=HLrZ@y@xM~~yb4>lC@ zoWJj4TizSkRqQg{dOGHGOxi9s4~)$E^d-)U z1QbbBlW}Lk%8`waTd}Z!;2I;#r+Qo|QQk zeD?Tp%9NkRmua0YvjV90z|)Q97~9NZ9b+709i?5PE>mpKx|et8;BP2LH>X#Yp~+C+ z;F1Ef7=bK*gIv_cLu7%q2wSigEbaz51VZB&WHSR$JQz-56hDfe#qo$sbt;d`$66#7 z!T6pmVhb~ox%}*29;&%lq~rPZ^8QU6z?4` zdw(kWugODyg2iwf`2B)s?N;#govpR4@21VEYf)zT)SPy`phad1PyFHD(hTHJnBj zGX@CDh=v$5h$%AYcJfoyFc%|I32L+s^D>ITX6pyA**Z!2BbG6Ffl%FJ9aPCMmZj%Q zwS|nOjwEveqE5wtS(-tk$YjEDHOHUEBI+=q>xjSrx2??w^Uo!`{oZgt%wmRoaq04h z{`si-%3ko-)m=#vJYwwj!<~4wvwq{g08d^WIO)EiT}qubl-)Emdp8(+X_ut>vm>?_ zegu1BFt%+DDxl(Kvb;nOGaA^kNFp#G#qqPi`~+se7AR$i@J2>uO3Vysc@i@kU&`Q! z6sR>h75LaR3OiH;#T(NwqdYL$oKcX~LWU4glNsd37U6=tAb+Gw!4L|&?sktU)QfXp zs@f68MgC(NdHUen``9$I8qQ$X|trd8OQCy1ujhZAawMV3mNs~aZ9-zT0IO_|6S7eC6^9?(o>0E^2Rv7Rq? z90^RJE|V4Laz-YQaX;G6CzV~7{?rS0c>DQUXMR?@acn(JN66*?F^q9^otzDqvAG&c ztylX&X_q1_MW^1u1&R#7y^W!!3Q-^GW5+O%$**8I7S0YpuZ(g`mxMmwNm^(keL&H< zjY1%fi69+g=sHar$XhS0yZIIfZ8whz7?qTcBTH7T@`+ej&-;fx*=ev*bHC`pJ z^ZP#U?7mlJr}eyLz_QeMcHf-0`{s;8&QHS^MrwUiMz6nmdA;}L^;e^7#>8a@Qpy^C z8XbZ6*?qiakG7A!8`wU&MnACq<(jcozIJ;2U37h5`v`xSWXka$RxER}e&%!Byp!Qm z-rPm<*i~Mp5bSaXs2=U(-hDB9m#%4e8)s=8I?TZ?+CmuhHCY{;lKJ9)8-XYsil!LT;^@B zG*6u)buup|;S2|{<^!^3eyW-K6wNyx-VcwLoHG_g96Ef+Hau5wPT6ZbC)c|d?KKt@ z-`iBw76M!AO~rRh&Q)#w{_r8|bGZU>FJ1|@qD<>drl^?6XvtX!ES)N5;4}$2jCBe- z8Ab{u2|ch%QmhenYLF!K5>wnM99zCEp#s$NgnEL?hKJl$8Y7Qoc{F||!jK*Z5=UV> z*$x$g8JzD%pfWi9W;AOgl`0G#n!V?ee3Hg$AN9pJ;nG8mRg&$6_wtemvDeoXwBIs z>ojn(JB~8W;Rt5Bk-7ob_iF$(KC@}?z}3{~3U=Tkdt^P49gxc7c^Q63oLAyRDM>4F zLe)70=!Zw)e}V@oYTjYsND61OX$?S&WpcRk0}6QbbjQoyc%0=xd^u{U5vN3WQkw+J z)GMJVz>jgCdLaOp@fhadjKNk$u+a#%W!hytvbk0*mc&6wbI7zz1FOS?$pHr>Ltt_r z6?+r_%4x?pjDk5^s)D1nH+ozb<4(j(iaGIp6 z`S5)p=)5z2YFK#l8+Py;c>jE>T=*&%Fo8j|_8=bqUQB@dj>m(w7p0}M;hSv%W)&A_ ztERD2}0RNf+ggY)m6Dy0Nl-3>njW{g^-0lK$i8UR zqYZsNmJBU*d8!Y`!u@Caxzpu*aZ+<@`Ej)CG_%TXCjFCa^>d9}4X?M!g2WN0MV zVm&`RRVE_rvGs|BMcUJwxyq)Js*K+ zb^tJ8@}*>4zJJY)WxhtP{cZo1;-z9{hMxlg+0V?ADq0@B97yfb@_ydG+@gk=HyKF-fGvj-qSW7cQ z`_5fDOzQtt6o*`mY~G1#{O0dsIGX^KANWGH;oy4)FRp}1y#)|r~q zw6kJLk}%vdbjyv^?*bv9^QOQb0&o4Kzp+aH&XN^*>vKH9b70{n%h33xpICmfH1sK0 z32&^m%wMCT(~PP*OP%h%b>?22`9eGt?{iHtNs$K2k@%rLct0QOo%hHJd*} zx{2?jX7R~>mw3n;><&qcy_5ebDK^NEtfd9T1T=^x=NWm?UqzfxxODPjOhCrcFmlHU zKS9S=w}J)fS;XW6YF;mBcei>BRD+bn3#GboP*A zpiz=AovdCJOI9CAchIehrNvorg`PkWO+YXrqE>s5d;Cda8a1sij1=t6DX^Ff9%04o&vE$< z&$ax+2)RCn;PYn!$oH2sc8EJS^ygCj)DjGFQzK^vbDy8NWS9E5F1u(TkjRtes8to**~w{ zd%%5RhKLuE069rqk3=IU9Ws%bmr|hRb|ZPjAS92TLlI8SQqy=yHD-k{;ol4+Be;_5 z|M?on$WpT~#P8#jtJ;}xOT7aivO58CcbSZ;UC4GC1LBCfkvOEaCXcC~6AIOJFbNJJ zwyWz5h3a}ke~rv+NFy~p-!< zVt3}sTSK8nO6+c)OeOc3p6?^#Y&b9fM7rGCySUwbX5D>MxOmA1rzwxZ*(iyZZI7YE zI^fH(MZ&G4!!3(b1|&CR>STEDheQitxwal8+&EOebw4M$08yb`#8jQgsZEsEjEEUl zGU#1o7>5@TO6L)uv#E4M3bcpMqMvwvXGlg~ynZiVHG(97!lTto%Pz5Su&S3D&NNJPg`hVExl=S@32EGWw)|) zX;hRz=0EtUJ!%nzh0KvH9HiK@ji<{$!;HiMN*3@FZ|%NH{fBvJS7JiH;PAphGSM2P zVZk#nd?Q1SiHS-jEh6eB{5Iy%+GZxdQQK01%lA9JAKk)a%b5R%^>1%+o{_-aX$@o6 zk^*{K*HWsWxX{Q-SkAvd%w8Ii0z(?Rh}bLf`ot^P1()UGrLuKZ5f@KwtS-2JX;moj z#p|mhL5TOip0{C3w)fsh_SP5jpI+>*KYg|Iva5XV-pJWqKb~ZHN;BT_F5> z8#@rZkxGPPc?vUETI;IW$Ug*>fM57e)2jHj!Z^WQ18dK3itq4Oiro3Ve!hG|^*5fu zS%Q;s{8F;}`FMV*1D_elX987|0}rVrO4H5Bt=LqlY)&pRBjd@Oq6$HVdTLQkZN|?f z6`nIL#h2u7Jl>qwe^wDvbShr)EF@nzBR_C!hGtGKXGU92d}>jex5h}T6sAcpi)mpN zDy!x^lx%eL>uOxSJ?=5@EQl!=cYTmAc!qvi{nyHoxhC?1pOch&EI z!E+(tFHR*J-JO+MHsaYX$KJT=+GmfO;?lyN{B$9B8;rDXORKKDudc6Xs<`M}b^ZMw zH2w0Bc;uA23j(Zl*OM?coj1UD=0z;;eVf28Z5Xd2$@Y^%E6KD(ud`xKoRz@>=F-`{ zxjXvluhxt_p1(02G0fvcBPi2>Z2I%Vn^mQy>CzS(40oGivSzTHL?9>GX`O6od_(Z?YYSf0i7jYJLd_(5-q6T_?JlXCxiG=gS&?BUI^ZQ9PX&Q~ue z?|)}!vNOdkDoQ=|MC*}7a|#NI2|*SXH5Mwv@i0UEcvhCjiH#83*2t8?&}Ii(pvZ=}UPNC+_FXf9~4)>i))>_9QVY|SMstnr4Vrf!choaWgDuGe;xLFea z=s1fdCyQ82G$Rl%oX=uCm>0eFo3aP4hi)}tEbk197;SQ9QH59SS-C^IAIiHJW`ty_ zImbEGFA};`O~ysLy>|9R`n@Yk?Phxr9LXmK9cCRhj@T9}`uejgXNPT`FO4=7+_Dlf z!;cnHFU?X$vnBawXtN@P%;35hT)wwG*btxni^eZLwBG`rEK^QD59~@?&s>c?F}X5m zX{vxPY-wFE^Q)kxjskCgEpfd$*+POmH~7O`IG6Aak@iSEI47vgnew7Q)?~R+*-s9R ze>bC|0-)@4Ea)y>>Xz)?adUgY*|D0^=wYC!FO7b(d!o{4LFPbe3M7jSTccmNZS}4> z3Of*_zNp~pu4V2aE0MIA1+>h@D;f4Q!|pFwJaSO=N(1vehJ+xT@uc=#ZJ^l%(Kh~A92u3%Hrlup!*=b;oNdH5{6_55uIW6 ze#BQlAoW)3ylYJOK6Cl19YD3mrZf$L8?Y2s*RSuv)C2em0G79;Z1`revO$fh7;JU{ zSowV6C!FACIK&Gdor&ye_-H@Ucfm9!$cll;M>8d|cy+U3{NhD0#R9FpEaf>nB9R|~ zo#$amyCi*+HwZh|&zy!ObGB!6#=qT*CAG&Xcdd8Y0i|Jh;2+hzF+2c}o<|tKb}J`O z!s!ensP$(V;nba^Um8rm4UX!We-vlMlUSDNY2Rp_iSS1N<8g`>?8iiB;hi0%UvF_6 zj5l6;&-c;V1dc_n`k|PiD4=Wsjzl2Wi@?eCfVu@||4^X~*0<0G@DQ#A4v_y{^8I(u z$+jQApJjS{pT*CDH8SX5?q9%=&AK4^-;GRvK&(?uArz z)KLpx_f3csbO`Um3`qv$b*iTm@w+o-ZhZsxqh0$xv|m&A3#4d>{|y$9VfF4&F`#?d zq;7AYW;swUN7B-Cf;umxO?{6vGc6RgQg>Fj;VDK!+7K{mYh?Ra^dWwum0CLlbw~VN z{ig1jpq`d$M}V8UKM4-ejzp4dXE+&`H!vmFXlZa(yZ~shhp=^eh2Nhnx*E8!z5IsI zNVYf^*R4rO9DUf?_mJ(a7f<9?c7qle_n21Y3LBV zd*#RexjjF`6AdXc8}&K#Y&hKYufH4){`JnWpkvxsKc`wb9&9QDeQ&CS>F=YnaX_9V zQOTsM`^$#vXvxhT{boD3V2pUC{=6>H`jcJMOVCS?SbHC1ttC9ut3N;2=eCsLNdBz< z{mA4v!av4xlofR7qK6axOId4WXAcRXlFe_&7>+>st(~SHlK60!QO#4G%iWTF7^N3U zYt3Z}U8XPGLV>#DnNH%3E+aXbt0cYvn_WgLkaj$K4%eeDbCeqbefa;d{dd%rZjbbE z*?}zL)MuvNRAOQs!Z#!O0V_CJs`O|1adNm0!WMN2$()OsrWB6u>rP!mU}XOmjxd8! zM>xk6h+BDrT$Jjg;S`XetOy?{eS2sXiv;5p z>o}@QXevGJD_p*^8JT(;WOZ@UhxVH?=A#!qWD)pqUp`zSk>jWk zE<_Cpb_^Dg&kv+YH7J(~DSw)}m3e~15N0q~hl4#9(PYvbE=}FcpIhbrFRld(Lep)xy%U)kLjML>=ux?djBlZ@{+s^cf4_Ve z=yh*qna10nXu5vH+XAhf(>){0$xq`~sB0~)S)uf+_3d7mO1pz_I<+))l2HypjWUtn z`n|e}nXs^O9zU`0+vnB5{(9OdQH-2i6%d?3k)%K{=`%#ZiSPTVGG`VbDh})yWkCXVn4KB@hrPp zXnbe&?(oA%s0hV5xTq6 zJLP^-QLy*C+h6H4Gsn?0i=Ko|7iB4W7$iah*I3>5+>1&|!sUC8Kj|IB$JzCf|H|JM z=22e#%*Qyd1=setxrxEi+X(u03a0s!YTKO1pRJt=d>24>p;(aUKU?2#8Duaew+|RL z`dOt6h&oitg49u34g@Dsw}zR zJvM8npGQ{@;S3)-w;zES@5SDyNe?2X{-fEzZ zGYQG!oA{q_B8Q~Gtf%0?ycj`X@buq{4!U_R8&0+#bx4_V{ZG)Y`;LC8$lepZwyR11 z{xznu?`%P{DmkAPWeB)NEu-SHVRdTlbeY4nPe;W{K1)tuqV{B=+Mi03Po$!9SmY2V z>liW?l_8L&bJ|!85fe%^li?rbvoI`&rNHHT-=pfC8L}tr8g+s@8V z7p-(89883Q)*f`Jl~CdXHu$}$xm25opC4OFGSv7m9J9;$$IN9ipZ5hM!+syeTDl7I z)Y@c6TK+<7OK$nLZ|q65a(uE1 z&^htGW&9ZG3X{Biem?00G6bV1sX}GS17$x-UwVWhtxj0!+0LiEeW(ynW04OOB zMyE4*42u5e`X>ki5Jm8VTk+SyhSG1hm7al4M=!U_@b*lqZe3?{DNA)bwa%IQHBCCi zwnbu2B8NtAraINA4Vqi=91noB4F__g07=OoE)l`nb@X{u9GAs$a3?VV4jl# zD-v1J@-q|ht?qkVCYT_f-+=%s@8h$>y2NI&SPjvHWVtdG)hcxa?W4oW1y(z7!uRWv z5k5rg83G;*3C>!SwpqPrlihi@TcO1Vt-&nDdqB{txA0T0>nn@ ziBuHuW(;N2)09j>G*700SV%e`Ws(*AQq4%2YKC*HOmKBj&4E`b1t^(-dIf?cRceaD z@aReXW+@s4H0gb?13VqFf&nk;xZ#M+;T71Pw&J>QM z3_(eVrD9W(_~Cf_)z9^#FrfYBe2_0pY)1IuSX6tsoB|9rxHM?MZbHNeshw0_n$lXv zCs>qIue2(G&?FHgl+DLCvw+dOqK;ru z%3<0mCv2IB_@te>cOphsqnGen@-gM z8Gw#Jhs$?l&V7iVvM220_zQ8Q{H7-1XUKpytIL#WxgggG*-2Q@kSgTjydRA4QwRpU zL_jds&)Oi%wuhi%@KfsGx$xt*bFoBsB2Ri#3T-wJF@B>&pp~X_J15#RJTmpN?5QA5 zA=D;O4k-fgCj)~W=m%m*d_#X@CvlJ0e4e@+sh<#^BA^t-8O>0h3V)b56B}Hi@%|~o zAkP~fJS3K^CY*w&@2?yLo*PVq-!D84e%x#LP+YAa`Q-C&mI=0QQ`a6ns!ZCtzpf;= zM44@=1U83rJzaF;n_~~@bV}OhbX(33gSPgio93UJE?wt_@!iLwNmF#eYZ&a&`0S;) zy^>0Ag6694acbyLMMU2do?y^9{1!miy0|59LZlp0Sm-ZBUxQSQm(K*HY{3@(>ugXfPjg5iA6eFb>i}UF?*>Y6WQ_* z`_O({A+XAzE4@{g0w^EcS=ciB@jw*NEWPqtl3EK886F*W0a~*T60$u2{b>Z`4DM6x zT9iHLdV~^-^Hc8yW;^EVdd`C7}4uE2{>QSHRN= zRL=`IC69hv|A+0;g&u*FVxd2y7)ez##q>NAh<)Q=*d0adB3LUVEX4wrLSmgGvBvCi zxHurRTTZ`z-4>D)YxPykhOKF8k!)&8F_M?4lm;gTO1J1k6hxFmBZ(;JYm!svi?!+h z7jthO*TmWGjZaoW5+IQ+EJ6r^Kq5{60f9%tsv;^1(qLUCVbxLvwF<43Y+!)k4h^oj zp;+1mu-00iIthyksJOMzqJkD`TdN4#f~DlW23w!!yytU%@A>@xIPa@u_POtS=9+uE zmhYFZ={P&jF}L{D%EQ%DwoJ@__M|fTQsbJCtE<0RFkCo&{P6tgdy;RhQvOu8#((vf z@4x)zi*+!!<1$o;k*`Ik&@HJ2v2hHoQH5eUcD#Uc>nE}|U(6}TTcT%bVkJfgE_bUy zK;beJomqUDmK_TY@bUO=xfC%&Cuek~Gsf!$B5Ec)O*-*RnBaB$JO$$S zH~;fZdd6vxkO5)06bm>JYSsHRIa{-TZjozonRPm zN$14EpOhdBzWC+r`eG+djFTqHNf*V%JcW#QxGio#p{C*$W;M@=Qm6;-mo4w4xwUbHmt2{?ip)${p=cqb0rpjB%6RVx1 zV%`#xqdt*(L%&j0sLGpOS$tDfuon(o#gaRfR$9p$^k$sih4N(_6=@e+K>O&) zr3IgF`KYJSv1jwAZ8v^B@~v#!w}so@_RL!OaYNI&xZa)v0Z(&}{CeQq53+O14PTdk zz6HJmzyaF9rOG(*Z0c5l_cl-f;VyZa{wW8!wtQm%+cp#wJZ5}S3r5aj+eQeyW!ykz zsWO1>O~`jFES1Fo{l?b6>u)U1)BD2hY~N8dQIk->)7t_d58IY6&qySdDpB@2M2;nz z1lfePDY*rYO(c{|Cczusl0vIzlq#@lHM79=p5!Q`WQ%I`gbr>p>(@o`3Ke)mQKI3t zQUhTh&yPc_@d$=i#w7Y@R}k>v)|E zlMdJNI(bU1fgL|h87pgNXHg|>sjeliHEom5(2LQ<)M0$OetL0_wx*0%rmfpEYbmcR zw2;_aLgMc9S)$*gbSma>^46TrceDLQBbh{x!zRyF& zX6nE9znC5daG>BjDDW=oGX_#@y+V239$eTUM7VD#;Bc~{y^u&P!-`y!1Zu!26~+TS zDxpc#qlvHqq9KI5uTQI2Q{e+pQ?JA(D)$W^X4`ULQllWanZHm35ADWp%_jJolVRRt zA|^CgMp7AgIdcgzXNsWC)yne(7T|Xu`Q8*y>HoD4rb3bcpSUQ^TYVzEstz}B5Z0WLh`4FD@UBqbVTjzS?IKI-_5jzz!LZR7We||7negu$~nUg zkwSfuOlyz- z+UCIEp80~&uWi&nfDhs9t+u&#^9Zu1LtncIcH47hcE!!0Y?L{2qwKls!EVCuGtwB^ zP(sZohp3`G5z%zLB@c}vX#v}BUdyCjkEV%rHyc$pW>DdAIjiXW7LJpEL)72V&(=&5PYl+T#I=K`9CvMH-=a1T~@&RE(f5goNw_^Y9j) zdQy{^r?~EBq=d%m*t@6j17h>=t6WdU9u!l-Sxhw=8`aOHa;FhmOKL16Gg)9FFVAU` zb!v{X780CS%5%o1N!DokNqfYQD<)^`9s(WZ1X1Q#&^+?~x(~FN@CaBoldo)XyGVa5 zMVy*LCE4u$C=~npckr8Cb27-W0c$j`Q<)|VrfEPgV z)o3jWF;*grbf@0&qH(KZdvk^X0M;LF+i?5)tTQU88*L6zSyGmuL5Vi80$FII8MQ_p zA$?&Yq)<^{!J7(Ttw;nO>Xc}$cvA1ghS@UA#5xdH%$3x}R`O+C?2|ADcY~SudjksV zVcfz`(ubr>)ZGnFB@``)U*#D+0?JMXG6p|AqA10XSU&l#GoZ%->j*nE*m@itYKBJE zfsA7!95nfKa_{7Hlb9DeDboA7#N5P~MaXw3B>#6Z^8Wqr{_cOd4tZE3)I^vBM-j8o z*OL*L27z|}Z#+c}XiC=9ngv-h#{fn-T*2$T%COdY6DfuYs-0cf^6Yj^g2hcE5~M0J2mUqrD_X&GJI zLEb90ef4+!9mXkEBt4a$2rt_-L@7tyu;tbz{Jx(d;EUWPLTA`hERxh1lQ>pO&_;YIsCbs866uEs7ee;oH|Za99jlnQcwfi1&0fC7nt|lVYe;p|_A4 zv}vQ-O+>3KwlDU%RdMXIR|ly~D$CbY;cGhR)1Bf|KO?@F)N^}KUH`ZOnW=?i_(8)5~Qk4@@h9`rs7B{1|a$AImHsuk4O$N>? zDI?N6Y)}KPk~{I_7>8*@jMT~Yc`US&z>nSbM*kcM?&BPi1<>!+a}tbH0I~&}4Ps!- z!4wQ{h+>5mO(79lKXS*PiT{jR+GGhKuFoLkb;P<4SZDL4TZ&+oPPqhqWb?)F@p_=J zW%D~dXjXvJS|46^c?gaGPc3lUn%kS@8XsBEuy5_e29C0u?%P~R3& zF2T#bG;Wysfas?opP^@v*HZ}mnvBY=bNYVUKkW7MfmgR$1F^Y4ue)V?A>nuO{(l}? zy&hwkU#2?K56-%6ir2aEW*L9&>5yPyoYN&I%<7azK8%>N>U7lLK$ zLvkYYDaK@dh$Nfm)R(Qc=te^%04@$T7T#R40{3B)YXFFxi=RfB8c7XLN~r-?dkTWY zT5BX=Ba)bK06Fz`$RkUTHl4mEHp9omkCbQatxEBVe#>@AP_un$y;#CVZu;3q`LUOJ z$y2;{&l=K_%naZbAtPiy1;Ea&aJ-ibNa+#T$}{gRVyEC)kMC*XH*=jp>m@rMLZNH{ z@Z7K2R^veI*{7YvfBrEz!HSNo|Lu)_gJNa8$j+Y47ay*}uXWv^`(fh4fhx}kUZA3_ z0PxjEV*z}<$mAI+2*le8Zcv;aMex?)ZG~S^Le?I%{(Lrn)}lI-XM|OwpkNj1nBJ8b&6BFo;Vva?FYr(@V$)7Lm}RQ__doC7zb*^2jSwd*N;%7i7x<9 zcd$y)>nggOF2K|LbX9qvX%oG!cb9w2Cz9sP^mW&|&}@>f|1coHZ!r@#tH}bfvvosI z>Yv}p*ZhJxX$4^7PYf3E?4tr~(-dzK-Y%syfyNj(QPeeReVF>FHZ+XqQ2ZPdl~YKA z4zV?|tdD9t^z5uT4y#ffGRp%S8^gl`z7n+VUb(yRkOSpCEEa&fHyo=@m^`4k&er%hyBbYt8Bj z-ZtO_nZwJ=b)g#{0EdkJwUQ2Wcfk>t6|H+fqiZSQVF&hvK_zF5^P!W0~JTM9DY6R6`EYb3^303oCbBrRn zg*!6dRQpy8E3`w!QnX);2e9L3FMl+S^Nb{~;awUTj?6C61c z8B2DjB#^<(pww*zjWmZy^$1~;_)F!iZB(ALg%n%$E^Z&4YyHs!zAbcU8Oh!L!hLLlSohvCV@9VbRvWqV^bRUH~RdLgVj{pe>;oQKC&UBzr48WxWesO_fxsJ8zxGp9asC%RZUhk}yf6)IJb zm;swXu|C=*n2EOzi5RK}uyYF#;xU5*g;FnIlYc4xR>60qlk%FWlJgWYK1saR$7ZR3 zac$^A*9E+Lj+Hu^kNX4v4c*O39c9Rq84Z{WJR;1Klo3kBkSmwehecQv#DeVxy3ld< zOj_Sxo@{hlpLR8v5CZC~6yI51pLBSeX|+q1LSY#}H%$YdILFBzchcdFI07alyp52r zdG^)?e^| z#p8J-P-p;w%{XtdYT7sqhWg|Ol)pF*fpuq;0A-(~)Bv|B&HM>^?bV^FDMiTIH4Bw> zCxh8Vq$%6j(~b7ChyfbFxjzG+3?6WAjKTI0abPH*XjxQQ4v~Anwpx{64&kv;3LYEa zzX3L+A!1ZV_-jlWlaAn!T|bc`4kR6~G;wn*Q z2XDjRlb;l1%-U&b$e5`s>wRQ-0dksR zKoOR%cePHnNVR|KrEJL;d_H@?`1I|Mo+dgyO*nJ&!q=mL+fCxAxTqM(L2;SQrsLL! z?AFbKZio(kFTf!%l)x=ttCJ?f4AUOc8)4ES&EqCzGLx3*%NEht zKCkO<0BZ{JPVbxc*&aQeWIDRkaI~0QYsYjTpH$RgPi2x*`V`+mduCo<3V zxx4e(`T#V=FjquNd`jGAunP!HsrQ|bGRGj-P9J-;Cb`pRu8_I^#M8X%yPM|?s2dKc zYPW>*QhZYFhXHsIR_N)JdcRb=5oR&lCmwc8C*+2syRWp_GkGab*H(|6yGzSR_uSn< zT8d9*kTm%O38oTzPy6D?af2ON^H#g5cCu(!TGC4n>HOk_o@3ItI!ON`{&irpc)7uO zN3HV1^TP*hApTG+H2nQV_o!%h$i? znIT@YH-kNc!b;90@69-?bx>y3ifDT=wmVBQdp9s7}nu!&kb3;TW7_3{Dbu`I=uQlx&b2$W6zm zlEgQg!>5XykI%FW7#>+RGia@*@NvSY z6m6(0jxNqfXVRFs7e+yVL<^j05FByOZQV8V=(Yoa*)zX=)i8Teg5lT+cYqzrb$S}J z+al`eim4Etv2jR#(5Kg}e${~S(?oZW%&&X@Y&;i#rRS|Jgq*-wbW*l@*l-jYiH%>L zSu}V$T%Y78lYFL6@smPTDk3VTkU56=$&#QLP~CVbI@mn4qgA`+3{*c)UXl=8;Oj8o ziBzHrzb-P=1N*=)drf;^x6j)wt&#Qrs=tp?c0&z7Yf?-~qQ($)(A>FW?y#Xw`qp?o zkrU>Vv0=6}CEDYdf}iQ)5&!QQ7~v)SfpfT@d8-T7Em{aAL^i{d!D=Qym|IW z?)P)kp{ek(gSu_76LCBJ?9Blv)Xo@Y@m3;LTA~ke_~{n3&h@U}Ugp$J9W)ul+o|_6 z{}z4q!9X|*2|L6?0PMccT5qlRNg?smgV&8hLe*Oi#yuYb;=#d{`nU-Fp~^vj>@wI#FMi?4cEJiGjSL+iCs z6x=c-2+lysTo`ZjF@(X})JWeWqDuHO95gj6*wi8Ibft%CHBYuko8Y zrA|Yw{K%=WP(v-$XbQ1urf8-q0dA$q=&M%AJiIw8WFB-52NIHbPvK-f%ii-M^^Ej= zR5fC0IpWVickM(~!v+-&Ic_yYvq;`kYzL=sWFB5J@0IaumENmXtxw60pCTj8NreTS zGbNQfAaft&aHN(2eS0luqI*VCECYtrGe4NM=+SZiSxX;TT84qSDGHm`0Z-)3u^o_k zDUP6uokGiD!ye<7D*J_RO*5Qcd(^8q*%I>KgU>aOX*6IaOdSn1c_4WjS3dFKo`UMg zj!h4A+4VzJOosi!`~Kn$+U9*eoq*2(28VKLXa2oa-YH<~ilt^MjtR+;Vy@007jv{N z(SclT=jL#6_on(#8BW@c&=I6kv9*2*rkF3~x8iClxv1mW#8(`TU(Q})H8eT?y5$@M zG`obn`gLW;`L8?9UvmHT$oIl5aKrk3=DEc$?@ja^n0apfZ|z@QA}X|byd~aK?6YIu z@j%GYQ^>W~c90>kf(!bO}o@s{1 ztdGs|bkcUlDV?+}Spu$J8!r`C>sr>%g6rgBuD%lrX|L}f2jIX*DCX=W$~B;L)NAJs zdW!WG@oPgow3>Lqk}7t*C)^G9I7zj{<5W>Wc^%N;gtfdrlnzf4?5@4oRm zsuem9-v3@InMH?7TjY_meYAJh3O?tKCB`2UAE=C7D|R~l z-VPJnD_Z29+|!y>au2Rnm#O4pAlZJ5EVXt(XfW&n_q&Y@YD%IrN9b4Mcqem9aNL7m z42_w8tUNioWamrX%PC7DUyyw|vS(iSb!GXNAn(o|m+9tLN6hAzVdmtMb55<@bgBqs zJ0Oo7o_t{-+8<_dq4*$KU99IYUT%grm?;M(Mgv!>t8d8)XmkKgXEJ#_>1fD>&yV)^=X@3h~o+u8R>fI>??}c&na5u|0f8 z#M^|dW{TjG0nv_uoIJV2N8rKLgUDcW?f`N2QhUoP;!A=Bd>3&02z>al$7XS~omrk6 zv=y;}Syw} zM|lpIWL2sokMj@v;z26OOEK+gacI3hK(=UB7*+Ubr{0@wsYvd$+~v(e67{yzcJ43a zC-Q9huuc4s#6s!eHRxe^-jRXKo6>_)H=RFA_W^kUDPKvhQ}Uyf$b1#)anN+hY|Rh6 z&@&RT3Q=O*DYS2Mb_stmP?`RN?P+$c$tNzG6EoV9`!QFPo!q`zuT;n|dh*YkPN|Vw z2B$?TJmAnD8RnJO4mAbGUz=E+1rC^=S@1c)KM{3RHa|XTwf4^5;_F9OBaVzc-k(}NCq zkJxI!)H5M3AWqnqLW*TA&xE$^Ee{(2uqmRYKeVMkqGfR2gC7poFCOvN5P(j$EhDzK z)(kwOh1I)iPhd)>-8hv^Y=8Sw_iPC7J5e* z63ymnG|>q?b5@(itaAE<@Fs?^S(?&xsPWZcL=oX;!BQVw+N zcPqnA`fo^wNN6j^xU0(-ENNfP*>K3%mErcoj4d z@%!`%YxOp3HTI(iz^kkWfR%s5Um9=AY&5)8*DkCxRe;`IDx$=RUe}7 zo@&2C=W0D{*aEs(I|CJlF=QnZuk|MD?U-3A@y7@u-;t2JFTp>j_f7mhabC~BBp#(L zZ8UgQOxTp#w&N!ih0<^$@u7URu`LXuAqIDC;{Ai4ZphzZY)x;PYTfB(LuB8oC^G9K zrcR{V2rcvx5I4blOe}uo=TD!1Vs5-m005jxE%cA44k!xM$_cEmNFVB!3egvEG1j+5 zAG%2jzH3>#16+=Ir(P6yJ%K2Wg3!y@L%=O{!})_|ZY0+%@$SHAZ~zJFKVe_wMD%UI?@4U^(PDrdId#u##%<1CNkF3#eU0{o^d zvF$jEoP(X1(Z)Nz2yg@Axr$)y#AViV>?( zoT(5r0u;>WaS3;q3Ez6opnW`R*`m9Z0Vh(fElW0^DO&qr;;!@Yw^DvSVD4B5=HLTv zvb-<%l+dfaAR6>`_PBwH@*O*n)gn?NgC?@`8q7hqH{oGDrVSzHp^oiz(eR z{F-z+Y#Ja$J))iky@LYSGCt$a*`y|G8*fumC|(; zo(sTk>@wVt@|t}YABr$o6zMlv6rBMKnq&(kngiMhh6Hrcc1)N_jx$(Q`xq>H)qUj} z!|}BtKj%+iNp>7ooyqTgutk^w(*&k{Wat|QR0-UeZO zF<$R7LRTIq{*0H!s4Pkf;X!m{cLmKnPpo?Vvs2 zQtKrmJ6fhCCJ`}ca#;PleE+@b{-~*Qo z#UB^J*hSFbSgC~}hG;VQZ?S&bD*4ddDiYGA($zRZEN2E_(zyym$O6R1JUOwRVjy9J z&PstWy^pO8G($X~B8BX;ztsGy)O`Ag`IXLRKMCf3lM`PlF^h%yvv5Fhv^e?*sKm@7 ztFktjE4k=QbrhRdOsaSC= z5o$jlSDeRp@eR`}PqeC@v^;#=apGXd(TKL+Tz{rK=`KjZUs0a4#4$Cd8b%7fo{?zW z?kj4EE#S1h$F=MCI1ktLFS*pYu6W^g7u_qD&UG%Gf6S>UnNxP-`20N^@IwRg!qSIZ z#uGA(K` znq-fr!1Q0p?X=_Sw$RvifBh{$>ZHO6DUF2?sS>F%CQ?Bu2r|V^RYAm4GU1m~C?$Xn zKp2tc_O^!&=i5de8$$HGA6Ea?e0X`Y3p<36@5Jn=q2G`#|Ej+S{hE3AL-g?18)9EE z7*f%izNLx|vEIF@&<(e9H*!PzMs{|0uT%!7D;^bM z>x3?y>s_G8`2F;}2LtI_#wwa2iDCR6kzj}we4OoV&n62oxfsURrMdu*k{n-e9&{-g zbfLE@dJQgxSn!+r`^NQZa)XbUD>Ye6#$dR%jk#lxsVXViF_@w%S!oHZ)A`jxDk)+n2$I4qlm9K_6ugV{ezRRdEstZuyvmsTK z^cl~`9;Ppvj(@u$Z+7rJn~4jQy`L(sw)_=-JsNui%nf;9KNv+1vLQ^nbf`2`Km=an zS6ljI5SYCPqPV+CLwSq(r{qCU_e#>b7_qdpZRImBvDyA43K!m3vG3GG2B& zg&u;Ni3|erBZ#*#YE|(0@@>5lGR?)R@z9%u6yAj zF*iJqyM|ugDSo8Od-z3M`o;SEuiT`r>GxbtWu}*1<~?tV$d{T$)+4SF_jXKPgpas| z5^=+C14>2;bNH6GaZQ9FEtuVa`C`8E+oYl?X)PKmig|jCVF|Nc#oedaRcR!4F*+F$ph^QsLUO zg7+v6EPi&(r(jWpeZwRxYL^&mk8_@)rJqwHBdf`yv3y?A`B=U)RwGM}_J~rFloAt_ zq3JXBbNkXS8`Va&LELOq_oZ)-_B5&qwu~BMmli~&?JG5e#n&`rS=W>YPMW;&Yc7=F zT)}#^)lguTvSbwf*5qwe*Q8(809yYjx=9eu*hz5>6#(_dW8QNkx1T$N^=Y5smv;aG zM{%>YmAaX21uS6{tnb2u;%`mAlsNOST-X1ieg5y%+}GCtGRzvOuii@0BlYElF~r5A ztM#juYt%K@^lHk{$-OdVnO4nHtLtFp6b>!|Vt@lD$m0yX=wOWgp;bm6<$0i4U*yJw*kZ;&&jC#6gG!ApVy9+Mp z0>^_!`sY~OI(pM-@jC9?jF)hJ2BUt0{kA4`T+m3*y~E38-#m}r;k`rTo5Q{rA;{sa zDeolCx%p>|MyvYef!hTEyBKug2;1k(9LN^i(ct^QEm>r_FQd?2rr&&mWwPvC6RuDIY?m~Bl z|1PfuPK8s-{j-cEL-Jn1IX2|Vs3#<*cIa!Zc_(!gWC*eVY2$Ld5egO}WbDD$IZz(A zE9SHt&l}GdCl<%^jOXWc&bg9guxfLc+?TyT2ePEH-!g06Goy2#KL4@Bu`he$&XSL} zZ^$Wg&$8;fkKMN#ko}h72Rki(vfn1}!g{Ulr@F^m_4UG5n^oVvK`R^%WMcPItp>2( z3?H;r_8Zpg9w&PNw-4%s1DcKYc0zj*lXqrz*>UH9*|JOR-WQV_$?6$}WC?pd8BH zn|f~o7DTqcJ!~$NUFvY(2K)E959sTS2b2d4S)+kll+PY$w#cR$rw(Ne?HCQro0~Ux zlhZ|~uSNqmv+uKexxMTMjA!(9^mUA<@Ow72V*(C8P=_d=-cyHAxAaea(D%U?eINX; z*`nEE3RnETj=qS#m~tfC6sY*|I^#NhktSO`y&#~d-|6L>`um?Iynh`ae3zdIkw+9m zCYnh(PBB;m;0gFe??x{oBdo5ALQ7j@C=A_=Jfcg&(J;88CKDWDk6Wt_1TBiV9Y#4S zoasyIkP%Bx7~u--zVBXGNIGy-xkX$K6WN5slv8vcG~y5OhYf?XZ(i8EZoB^X z%tH3Y&&16gB&La%RAT3$S+wT%e(a>SRZ*MYRydIDbh*k}nN?J?(5^nZAp#!xq%xxZKN}bRC1*aF5vL?ZG&zqs z5nY_EcS?4?Ol*73Ue7V7w6}HU`9~n`Q)j8*P-;Rq(ocu$;C>>~|B}?sTq0KY`WG=ZW>XZEfw(6LWGtnOFZ# zdz&sd2Lc{yQ-e~2)ALWJX9WeXjfqRoES_l=E)`knyKdH1*jMO#Wms-oNoQ`(r$KFZ z%G$=;pg1}8IZk*{S7cwd<^y^`;83>YkD)*qz(}&{qM*})wv@4-?hF*7CH+Jbuej!7 zEHM%C1^h|IP~*CkuD|QAx8fRHskWjnEO2Uq@egT#EgL$z?x}$iNbMT5)6i#79Pn>u z4E@!ao}+&b-E7w^0HIT~>Y=m1V!vTSGv7UVe_wkMV?Sg**`zb}n>7ogy-h**wf!)l zV)tAWz~Xf5eaOJ6DXH{4+6@#n-LXXfkYin4Q(7aN{9kI2osR{CI_K7-_BBMKPko>0 zd5F$SlR8O@#`uJ?{4BuNonxmN%lU8#l<_~zkCvQGO;!Opv3ix%%Ei7c)7y97&03du z{kx-?vyV0~vvj`uUu?#n_v}y(D8H?)d_VnY59rm^zUs^I)&cutH_19nu58YZ8rWtTR#kQ&x15|i#}{yGgMy`h&Js7dIE$=!-96Htx;h8CE+^MOFgAxc zr^m$4;-$xIOAV5OG>i1z@Nw1W7(xbvPNaqmq{p8i#18V#3J#Jw4;y>7AL13f2AH!4 zf8WCG7S%UzVxi5~brGTUkBOmmhee#M&DAZ{P1X;7!=kAUl#BI|9i#yT;MhUQiU|3R zgnVZ`gnXKd5b`BS5M->PVhj{RW7zr*W+r^$5A@wV*gG8*;yV*GK-q=PLKmS66mV?$ z5kh&DTfct1etkQ9XC>uuRa~(Ep4_*xqKZyvmok-~nT5_!zZ;s8;WpU7Z%W})H^4Ix zsZ`NBD66FKLLBH9AtA%8f%H|xLuSGYya`3As31<{!g~l#4NeUKr4E`DZCE`*rHa7# zVP{}sio>av0}8N3QHKrD_;kPmt5i9V5{z5x9f?t2Jd7z z$R7@hL=ev|G4KsM1Jj>AQ!LwnH|9DizDz6a>{MQ|#Tfnv=pujl6UCDBqD=Bh{RPmg zFQoy3aCw5V2-OVi}&C`84wJTYds z8ZYru=6NXBaD2{A96(~6r_7(`KCp|c%#v&4-)H1s;3q9ADJd#HMc)@>qtLLdX`K&+ z3$M<9Y`X(ZWh(j>p%LWtw?6j}@AYYRklfS#>8^J}w%2gu*%{lZ?N5}65%>!p^ODo6 znE*6<$?DK%0B=~L&`;F^EES)pR(?}FRCDxL&C2qNm*f)vuNHW-X-PThyi@f4(kl$T z?e^-DP=@)>sZ(uUJsTePH?J%a9%afHtP)nuVeA6Ko30=twQBeddoF$Uq;jI@1VG<| z%6Y%;RcX!C_(Xf~6uL-GWZ``LJgd`QG7a|F-0c@E{ z*Xep7p`!r57{IoVxp+Crr!zppH$DkSjH5mSPqMgszkJ^4{|uZ_zFq(7*~;QSa<3iv zv(XG?FpEE723pjli0!yBG|30(Ra!Dlk|HEOG+3hk2zcnu6e4>JjL8McfKAJ>h{N-T z)23fNacljg;KvB7k=c9|7}d0YNO6ep<%zdYL&1SW@&iFu9=;llou^s z^iDfGr=G5(!_rx3*QxVd81!AmEIVDRosLFIqyfLBucprzqX|ig-p=fLfsRT_oK9Lm znvGFW4i(iCOA4)oSDKYr;>`oML5aafM5W<14cnt`?m_bRc>Q$hr{}tpKS{61x;M$X zT~jUeZh#WnL?Wk?B*`R63<-I?jK&!lp9Q7^(voHN3y{@j0M&kttF32{A#_zr0{2)0 zna8lLLKcgVBj!o|qu;_z7Cy+cO|RvPBZ%TG5WHMYI(s?l4$!=qjFZc*vjztOEZ-t| z>fGe0jz{H!+fx^eOl3X%Tyi<7$=o@EwE(93#bd=vAS(p})_|g^gCyIbKKfDf(c#w@#-*DaaC~rPV5xRuf49KuJr8n`{%JpH_F}( zJi99!@Z*bq*pqqBdvC2#%F?rt2F3XzeIz+;jYP2zyJDF|N5J{FnVtlG>kM96qIY87 zcanD{iV1AOW{{3xbjujJgz$CU#3Iwz?41AJeyVk$29H##N7>$9wJ1v3NI@LQN~N05 z;uYC0(c+PM7CB8N_2LB}4UnT3)u=Fd@e*mf)kD{uX2EJSfXAZv*s9XwkMUZmxO59|uS-UpXE*}{F@fDCM&A;>+g{$b4gwfn^N zBO%5^P5X3PiwIZ{GttTs?ej0Qv+M;h|Gn_{_zGNUL6;f*Qv<;@(@5j-a5;@twVSM~ zN&wt=Q!^P~(dM0;$hJCgAmW?ckp(CpZ}W~}P0>{?fb;cL=_F-sT5U#_9+%6o^Bj4q zSVSwQC;5un{FA+!*rE(_G5$>qkERoe1ATqiSb$X8d1}aam#IJ9t5_$`K)-~>)k+;> zWh};Bcw`5Pzm(mON1MU;2wB>dJJo2|UEQ@2P$%adn}~wiAx2&TN0AgY2c~ z_=p|ke?FM4Sx~}5jo{E4%qEmureElwz%>2hxAF>S<^>Yid?h@%dM3!l%ck|i3W6qs0C-;g52I|%90BMI|NO(TooF^P{Ujqy~j}7 za$3)lQ zNnD*Dsn>LZ+Zo)PQ@>dEw(3Mj>~Mue8>5XQVB+1TX;vLbF1C(7pa>RH3Y_`tfXiOe zc4e2?@POiCHH6MP&pzW%p{k-(eb_WM#}b?@BY2i=B01~mW^uY*6d~WAgU^wik@pQ3 z|CVpQ*1zVSm=^C7%QX{TnXw!;d~-TMFvX?9AU5>!LKqc_wnqiL-gVq{q|W#8cYCyP z7wEluOZlUv)5B*8mIhw_B22h6kTva} zVkOJdYf91x^vRQ)k{WxVd$W5NK{NTty8ln~>EsFm@QB#N=8KnK6tPV+F81?_5@2U2 z{2DFh{N)!AdZ)e!L3L~s^maoKTgRRTs|BQ9*?n+#c{Xf#HY8_w3Mjj;9JS-b0h8oK zwyO=rf`VU`3}K*%y3(yD)$^f*eDBZlx1=NQH@=ZC+s%efG4UZ3hP~OEp$2_E z79k+gQ1PFz-NL~-AkI0*cGyOr;h-#!J4)CNq-=*G%}QV;+e*+-5(H=Gt?vCv4=2dZ z($5ntl%p@5^vRx1z#&6&v`*eV~WX$rY9 z2bDq|6k3h^CKj7U2Y$r|fW%}T_Z-SLGk#Y`4rTYd8ISb4YYLo(cFNosqwZTh`>stg*&|m#G6`nMCZ9w*&Pn=P>#O4v-ux7Oc}#X~;Ld)@y^5M;ArehGU;(1B&5 zm#VW9%z)!=$C;ZhORuc3ygTRAKNpQG9Zdaf;K_$kRlWHezaNhrD!4z?PZ|C$a@f?R zQfdcx$GcbtZ1z{sv;N>(99zdbz3Sr9)S#JL+LbkiJQKg45o(gDWL62s`Hz#Os9}XE zDs;nq>jY2cmABtpk@g$!w@-wX@5WF2?7KSQq9XGrF}974{t;)+MMj!mJ|O)6&EIC9 zOTA|P^~j$@9O}8E+)oZbaOCgaHfHmNnrFZVa%GP7hDr7mEA`qp_4nVzwhQ6C|DAue zQhDW=#>gN2sU>s|)^|mlgi$Ot30d4|?Up=Vsn$u;?ay06ey&%n*zdJt zcV$EF3(>dr`fFxrSBx8d{fM2th_ekw>H?F6xdnktIlsLV?(Sxw9_a8t7>^BD-j) zAL(eH6%2)g)_9Ww5!4IyK$18dzddwucDT>S(F49Yz06&&9vr zzyR2Q1m}o|@uTl|&g4%6kAF!h#@0DSN8oJBB~LhrN+QxI5h@)KJcJ?-VNAWP(nF2e z^A@TK6*W`~sCe}9yS!zg_6rVbKHYYL{o|##-OUr3=Fe`d=om7aKf1jD zJ<&ik+ke1McPh~O>Ss&-gMILx|J40ck-Abz$6v(9qyx1_y?qYylY{2bJUF9R2f)+A<3jR`&vQ#GCtyXZC zbmgm~vQSFBSb@BolQAX8X+yjugI~RdlVU{j`JVo6tS`OklwGQ|w{}pn6BPR0>Zp=r zGLJohp@0e+M>0`ur&kV+Mjuoo*(B(K@{$l5{|ioj!u zkVG27X&r|QTgbTpSELFXflB?Yd69*$k}@g^GuQ`u4C%Hh4BrcvCG#Kx&8!X~?;qfc-? zpEKSZO>x`Kmb^_OSypAu;phvtrRV>&y@l%8gjnmS?kIzLIlT$lu4{zNt(RrPiYY)T z=Y`oK2(yM_vt1JNLIyE)^(6DPbE6YUDJf;{tAa;Cx(Bbg_bA^&In^S|_!|HE6j zh4J7V&ijYeOWwZuR(ppDcazdD8f$Xv0jw_Zy_uaeqOL7rS<&w-+|No(COr6d*W4__ zK6LhAA_ zReU7RVsvHB%5}W0DBc}`_H{=HWFW0kn*Aq*aBBGhEry8E|&- z@%C53$o3niNgg8%l1rIGE|LH8tF8O&l;Rg-Z&_!U+i zBIDoM*Hc?;IL_d|&`twr&qmt*UuxTPAzsdWX4$;DWiT85>)+@9U;5|&VR`-+*?qY< z_K)}@Da?htd_*)Sc7ju)0}XsIBtA0+9jt4^tV?nM%kRu~ud8#tzHC$P0JOqlr3@pO zJJASh5$V3H`%1dc6|BJ3l{+i-lbJAIOhWCMg znV6xWE9pk%cEATP)^rEC(EGZ>`@ySrDBxuZubVQ{(d3EW3#VH%c7T)5(ee$)_{R#U+t=V9UnLG*G>PsDfgApvH zml=;4a*T#tqanv&HI_zAjjEe`wQe2A620<~;AJ(1``?k)_Ym_)PVEU4X50$f)qzHrAs~yMdSD^-iUAP{qGOSsPKo1PA`cTit zFsRpU7Rpu(ta>2dm0kj_GqU-sH}bVHTO<3=oFs?@&!m1bqzxs=)wh7_T$-ANzgu-h z+{m3-G`cd^|D2=L-yl<4J1*zt$js(`ZmvKC6B{Fj{!AA^OaL*l$pw6aa+vJg%!z#) zg4Ye3{0+g@%~nJIi@7fWXyRV?oykrTNWzi?1PqIa5MaV4B9(xEsHh-F167%@C@QUS zEw-ML5I{B+H;h{iXb~y35%E+#9+?CX5L8@?tv!MY)z(%7dkPlG`-ZmObMC$8-t*pl z_r04;CX>nJpGm&?Z{PR*e!mO7P`Q~}9J~@@9A03gBO=&Rt1RN266Z~reb|bJ4T3^X zCAI5^ihB#o-`d-JkNXVbCXkTSe9v-k$UVPBReP^Jwu;#MS;aL7s)QMwlO0#CXIyby zZ|!kqqk`xCFZzT3iADVyeppth=J?%Ex6^f0bgm}WLrhhlFD#xZE}(1FthqW5#IV$c zYehUW_R!;kO~+dT-|2GFW_Rd<%LVrXALcl9Ss8m;`9iLu=n0{6?_x&A8GC?I7f~6k zS6KCK#0?y}dM1jTtKgh!Ml0+QB;g~q+*2KGEf244tG!OTnL%>2-1EBm6>6JtTN#ry zHzu594T%4Iw2)G$J~4`W0{#|dEJ-+!wEVq?C;xOkZNQhdB|l;c4xl-1Eer5-0As9( zP$a^~0Ai0%;P<}_T+Af>S0Ddgf0Jz|fb~ieu@5L?aXcJ5v1JDUdjR#ud6CF_Kt2wiLxd^0&Vhk>oN}<7afSMwaUpqoYo`_Z4J_59i5gfs$ z%CBiAE(6xyF>xZ*E6Fw9HD0_};KlW1#2@F@tNcGvmCSq7KG)R|lnzk@tA`q}y)L;H zM-b0CB?ASO(Y z?P+3BOq39!UDzcwEp53kH0gztUwwkfy`v1Aw^x6*G?IPd1wNb+U*^aNp(o&dj;A-79A$r+T?orL0z+@H|yoI=zoW%PrM7PwJ<6Wz8xrt~(Z6 zmnGz%#`T4QWig#Rar0-HErD}nMe+j20#Ht_{Cb3RuX=OrxdSI%1x zg`Hpr^L_cArB(3_hO;x+g=GDG8G@Sq^&ieG|J}ZY3FXrqJ!jdm*>s?9>Q3^p+ZAtW zyJnGnYH4qI85$F2%lG*%_{6LgvBrdl#EU|@>xtS2AfyaRE89J9C3&MV%4B{;B}hY{ zi_d1w{UN2!D{GztwVEwMCMT61u16Dtl26^4kGK#EQa%k@Q9F8k%X<5-XU1Otxx@Xa z$NF7e{X;aW`=No+TJ5(_9i{VlhY^jEb z#u*X{?n=i|Vg&_pL6bgP8bYrVm#jbWH}?HcYViN%w+k$9Cf@%uqp7RVoPgm`Eq$W7 zM`~VtG~YEXUR4qkcl!X-W&vXjgBH=!oqgEgA*Ib{R1;BR?aZgOCe+3wn0ro$g(xs* zF*mWXZL4)y!MgPk6r1e}AB2SN+v|U*zUtkG_MY}7VY}lF#lB}2qB|L@yGoGKso%M) zmsp$436k|Rif{sdROA)P3Ds{{@TUIm+r@NYcz8>Wv9an{hCKXL$*U5H-IXPq-qyxM zd}_1T-?Dv)Qm>6*phCuZU%7mpzBMDF-F5*|>QOzIlVWLKdF5YKVz+fxrF888pD}0n7YnwoU?RJ{tf!^IW0T;Y6Dfb9gqWP zK#}@}W&9mVChdwtRo#EZzLDR4^U0<0rdqsx{!3RzoIT%h^T9OAnCKY|T1guVjWrRc zpv4WT*jI*WvzskUDtsYc>}th|Fs;h>km(+tteBmWkGWJu*@KfeWD#~)z_j=dQ>)fl zq{wiHnSNOMu{xdbKl;-woe|Fp(^YMLp`YWkkfM+M{Kv(IKV@&%osJK)i{Z1aB;+3x zWG`h2X?&{>kN5tt*yxXPb-L>o#^bH&64UzAJox*b!@t|kNN_!EXTubHfJWp`enQsY zX4y?UEdKqCM}M!sbh#^9!9M2YevIvrPV4>ltT+K%M=AHbf&$GOgUQ#f={gc$AJqci zWhqE-r|89wA6I9kdwj|`#$qyxD`{voJzdh=?6HLDL5;HftlpWej$bFh55(BcMQS7q z)l2MU6nxX7N}BD0nDD^{tbsqw+{-OhDOoAV7HtR5bBlqyka4(pOY;?BjI(^W@3E=9 z>f3F528Z$nhn0`}GQ+|yrkBUIFs_KJa_Ku+-lB9i=Uo0HeuQFr?6UIMR#D`0ep1BJ zW!%4QpZ`$>HOa))`aie@o}#u5Ac#xb_2b#KNeUX9fN3^`VB?-Fg+&+LVZjf6+)yhB zYh59Rsp?@WxqfH}Yd*cVxmr&2KIw4Gy&V7Sa{NT_%Ld%KPsBnmDL zQ5Mk3PL)fRHWKpFDIaW%sj}r(1NrT3EG_CpS&OV ziYkqN|6lswgd2*m`pJ-ZHIu1(ws}STmJ8M%q5k`JkYZUo$~Oa!6Y!h>slYj&8)6z5rt89f1>FkgDngKg$Iv39a{np@Mx9lo$k^=ieJz!IIg zgxwy6SW?m6*~!cwEq@HJ&<>uTGsKr$u)~{e%l78+dJ4Hok!45A{-5cG{>{Z>9zFNy z1j%NEP}Ilh+f3TP%i2ATo}B2+x8)5)3tJRmK7PGz=#0y%GBll73OXz2_&}SXnHwXT za$wiNHLmgeN(RuXx7z~gKQPK@GC0;(u{?;fT}Id6tlSsOiPg+CFqR)eQt}*h$(h1)I`@T*nJax38SlkD~Bk&mGK&cy#GKUdagp^#QKKTB1VgWe|}YB zCY0gVpWm8Ad{W`bJy(ArXTe?yNE523v#umXu7kxAc%C@-G^Eal5F$hUx=4C0P^*Zr)mHCchglShG2Q z1MP7#?TJm*^3X^6E;q$?Zu94Yqc86MSK8;lvDrVdY0krYWOijh`-)g7D0ppoR^)wL z?|JghjP>QV^m)d`geMNuI;ndyYx?@x}Z63PM zlk3Ix9`yeNAs})=69eZ9m)eUXMm6l{ zO?~8xU*ZgSX%8z6oXd%G2D5_ePWVh6T7Tp7fzv1ck}QnYsDXag)zC210P|X@a0M}s zkz!y73jyL=6k7O++VE>y1x#(9%>*wM7E*zQ@IYY~*oJvnh!rHTT}mIhm<%&rQj-Fb zPo?Dz(jD>AE1mv-L^?gFrYR%XB}SSbx}UV~pRk9Ppl@{+0t~MJAcbk1ld<4lUC{%(XL*K);~f@Gy# zMf6H)N`0T*VeuJII2z+#TF%<9DTMktvTW-lhMA1gYk5V^;FL)?WVk5)czi&!A&1SSzcU zn-C;Rb7^MVZ3y`5q??3|E|5C6KoJdkx|*)3K|Tw=0a|l zzB_Fqpn7d^`ui`%KaNDxsS)~oPpMd25FhW4f&)rVjjuop_(7BcSGktu2!)dN{Q_I| znvbl!BmUjK;IArSj#<*QEWNrr8_t9+0IyTGJbRkhKMEXDw0L>jM~olGX%O%=KbiDr zh~8@cWY)KB6+izy;_C_#U(JrejB~C(GG-cgJaMpKFtod1D&(n3>9va3nz+NY}a7Q{u5MHjr&qKLj2ZEjiYS}lEJ-+!Wo{U;8QALsZ?gBV^V zLJMJaS*gQ_Cm^AOgqgaeUARTmU2HGX{L27CvKQ#T4QI%JKhS^6)SPgcX8x^;j{&m06~n&TiXlaE`S-U71ez>5UwC>jn;rR``|+o0CK8*Ik(0zh*v%!`m!S5pu=npP?Q-5W-Q0M>UHq>x^tjD^&)4!|!jM=~IjJLG3(@k3DCheg#Q?mBz z71HuE&@_bmcQu%$!n}c$%IN&gv3j3jPGmDDlFZoRM4AlX?}mLtM5+=`O%{q%g?aD| z`nM~|5XP?Hco3$Z-+z3;UJm3)n&qF%8+(Rs0gv65RkyMz6`%>`_nPuLIB{jSw6XBS zf}Qdv@Q1?IET?u-kl~EYF25og*qX+N?RMM3#Gp(5l84EtOO)#u^w4x(9J$D30hu&o`R3am5cr_2La;jHwlUR`L zjOXHxmtzS@bBtTW_X#q|-P$|*TyPp8U*ZPj`}^S1^K7i~O=s+-iZt}HML>FyGN4c- zr;KM6ev*Gny2*RfkYUJpqkXxfdfkzReMd+hZ4w*$B*fsX1m>FOW^XIVUEk(pcf`JD zoni~5yOZq1j(`;%=JEVZ%|6m$AE`9-fN~XX=p^g!li&|{zWB;N#r$qx4%g7wxoqKx zp>sZHdVRy$THk0$8BbPZ6&5KJ3ZH<7k5JU#_EC6vh>8Ey$SPK$6~&X%RRv@1iNFor zLZeAs2$Wz@DEO3tkCwae`4wj)SezxR3CYVg=ok_0I8TdTPhGQY;U2-lyVbYWA1)5& zrcP$;kF**I>NKx+fV%$Xb~gFcNr#5xt4(~ng?H|_ElC|r|1#C0gi$kd@7ZJ>>#ao* zz5LvOyL-ifk!QQr=ReskrRs`9GeluD`Psw!UEkE-f1>fNGrfK*=$Gp+of{pSFc}rW zL>~S(*Yl?Z&!5|`=3##p9<$(Q0!WEMgo6acV!B4IATF}FJmMmOc$Ei7x8IDN6z8jX zX&&c-l8|^ky50phY6;KFI(wu)lP}SP%vcj~Wn(`={cNMX_U^I$-yNw7+AupTk`@VL zQ!C2JCO`vp0Lo%Yy#-{;lPw^L+e9>{a%w0KePV1evmq z$suh#Su^}yoz(3;fCO*jc}vL=*YGAEf74CUzBdC*mVxmfzVpUEXbIMc7TuZjJ##F5r}@!jMmX=-lgHsnyj$q@ZcAztyQ1EL@m3-dnVli+IOz6W z$))G_l~;ULhn<=J_^h4?e5Fl$yFYqK0As!6Zu-vhuVnW6|1JCeGuObsIp(Z$@wfYI zUVSpX1<$U)Zs9-8YOL@HhUuZmN4AGKB34o;guI0<*5sQAU;5;(tM+kc;;tV0V39r` zuFJaojCB{rMOyS?9Hg}U2urbYr}qHMu#bn(XC^xHiPjsgk$OY+G~7!W7K z3P+y^VOXv}tPrM}IwEwft@mzSmuR=uM!zs(Mr*`!?>leo`ycebOHyNFPIR-5TKrhr zC-=wLY<;c0&OZO1I^IpkQfoAWA|^$ELx#IL+Z5;)C&}lUxH>K|hgB~r7quoevAMh}~O$L%mOl|Rn*jEQ14 z?}9ih-XWgYrz+)9BP7ORiT}YsOYvf=Wsyd64kJgUWc>yGU$ZmhPrk8l!EBu9nRwf% zF<{;A!Et>P1PcsK7|DuWO~|qvxe6(RlQ%I!$7Wdbi0;@BvNz7}(+r-&$=(%4#t;IY z%-XO1+DEP2>bjgE8gor!h}7g%Ycy93o0kNB5rshD00BgUEZZQ491nTxw)g;jqZraY zBJ!^ZAjlY9QQRn&nn!>qNYJ~I_yz7}wK;zl7c>xNF<)zEGPX`)M*arZ7cHH{=z|EO zNHK{?_S*YM`^u|t>J!ve;X1aB5Iy6D9<#kQJ82WuuOj{Q?XJG#?Nwp}1(NPVcN7U> z+21DIKTx~>a;RuPNUsT{*VJ0o!2VErQLX6PnO|PMy8m+8YG&I00ime1FscpYM$^QK zG`k&eP>nFU=xSk2+L;)b$ZF|DLRjEv=vc>0ccQw1*L#!y*hWabkkTjeFjno*tlCjK zs*xkjU+Gt_mSO}!s0*Dgc&x;x|_V6xJ?k{z2prUJDfNvhwH=Ppesk=&>hFB zfDKFEd{Xg5LB5lB#RTKo>q9V<9WyX1snvwj1b*R{kgK5YeCp+|`B!oTQ3J{osF*?^ zT<=XS=TS=uAQ?I{W)KP~P(U+>@&H20}5ej9tLcz%!GXT@p3QOt=OKr^GEX$Jt z0QW2P7SMUEfdM#lIZy1&Pfz!MvS25WPW$In9)fXl93YiQiLcecrA=n@ck54hO*enH zVfJJouprDbWNoy7j9>c_fRc}8!91iSXAcb(dkbs5FO z_yQ9VyHrcjI|r~Z?PTNmfYTuT>81;$rQqP`U5GcL5pp)hL5C4NC&)I=n52{#i!Iz@jyISP~%bc3J>(C34F9r`ASfO^g{T404V3L zSw{!oBizv|gj3W!!YTMDv%NV)P>v#piNk1|h1$mad^uTv&7mG5*T2o5JW;dGytnmjd8xBkB<^G*@p86nm8QZ??1omr8T!x@W0!5Oj7>Y~J^!zj_a+Z?nL9)u zj@^53x&2;d!}~8FpIboX_GV+Bv2U@vuVbIlHqZc(L#J(^sOa9vY>H|sHkGmgk<)Xo z4`=0#&!3w2czfsq_uX^9TDt3#U*_jMcp5NrFZ1T+L-5AVvBQKTdUL^W?9W{as`>Ts z%A9W>1aEpX3j4c_@sVG8NAk{mZZ@y9kcxv{=BsJX~>mjlI_^M;-DfgVpO zOl>>X7Pj93>&`q+$i6ylM7JNmQ2?|XrgfTc=WdI*w=Gk%ElQ*5yRloc?kI77Cx{^X zQ0X;Cn>{+M=^$h^7}DW%ySYJ53_gLN0~W=lCYNl)2Onyy7UhksC2 z^7YvaNSEZT4~L`g=HE%Rns;rMX)@qNaN3!hyG zx%nCbsvJ$%LJx0NE+$dOXGgW+Hdfm>^gVAyTUK=V>m^szd%WzzZofDD)}O9z3Jq|7 zKJ&xY(8qrM<;Mc!J1_}=;NpBaS4_YPw}(QXO_Apl*7%bUoCU%OaR|aikT8RlIMhi@ zand1HVhU1;K9C~L3WSRy9CS;mIs&)wri2-2Vm=KtYYp!8zSubnDa!Do4|t)o6qKz7 z+7=DErI47baXq;+^5kATLIb(f$Xt-{8=%o!mFsX8P*RW8!+M@+h~O)8trZkDvD@HI zsHcvRTyC^|8V_3G1Jb@Pr~lQ`U;pF3;LCt17rrEnP`lT&Fn9Ph^N4&Pfvb?zlP5td zY*kALwWKv3&dVE0)lwp#OX>aUi*0&IYodGo2U65SR5&2gOd(Gz0{6qtK{2rYKuZ4$ zE(dPjdBjn&Ao2_@duizS9P(FA?XsY7$X^kGFM*#6XPrzN#aUp$e|=ka>E8VB$M1!| zZV1lH`QhlBw_hU<#?@;fVEL-V^I&;i?ZFby);IS3_s3UB5BZ2UOa=5D2w}?ETfliC z4rP~=s==dCJOemy#0Lvj`vU68eS=rUFG@?aCku4iJ?HVH zI48@fs}Y>If$dTCpLZSUl9)zvyG)E6W4BYBpXN5vNbrF8i#7?(x<>mGn#L#VK7MH3p(K+F*GanD@>uRC-w&5>(CrxeNURSZ&Pni zh_7MUN1`vzl&{hz-V^YL&7sxO2RJ{fUr~~!!YN;FbANTln0++u9`4*!9DNWs)eAGOe`Ums33xGiO){1XAE zF}>Qt7RmeLj^F(o5a-%TYIJMh-~G7~IQ&UxWSJlQr$a^`N2m4|jNE#aeR@Hq&7(ypkJUUqwrI~_*$B0+GpYOz`G`?-yC>=>)#7LB)Rteg7C)2fKN@wfGlQyDMS&a209%9#V;a>VVrmlud2TNJ z5|VF=IG<^8Fz^_Rko7&GmY{P!(+qDJ4XR)(5+&%{NZuzg3%~q(`~F^u2^NxdoT9#v zQ;0|jPYR4_h-?z)n?q!Wa{=gUV8>AL8eDBVMO}qe@rE7No$z+p5Pa6pd#&5r;Guvu z!DoW2YWyut)45uIme$|W)ms7yt4F?F*R*X*%KepFzUkM{3=*AMqRW>EX;hMB6=+oD z=`3JHoloJJM>T!-pflI>0_YW(YBZ4U2n;&=w9)D{WAzR|1gp-e2R_*4$?~>k)BrL~am|<)%tnH*6Pz0t|)TCETAIG}`$*frep3MzToQMxT z4L&GvuKDond%xS)vWRGoFkts$xxo&sqQPQvf`k@b!Ik<4FtutL=ibshZS1`|yN?46ej(&+ z6XY%pSsGHtI=6I|$O<9@8da5w!1eK%5MG+iTx?mkvKOxDdNGa}6q6VvF`ZhXKnpcR z)G1uVWK`iW5z>^$NHX;XC1JWO4|q}GDxz|%)uzkwLAn-{V%(&*^%X7q_wD<;o&P^Q zs}26|9#)N9gRvp_mMf?aj9BCafzVw)5dw{UzBQX2=(;&~cw2c@xZ( zWVbJQJHFFR{@SUEmJAN-`l1sSjf7(f=du`|D+;2AGx*Vke);euRXG=I`KfN?5yjh96nl;JVc-{Gh348xX`y^^i`Sy;T^xLBpc zn~`aFjk7r1{#?I0AXG;aq|(8mUpKdoZ$n&YUt};r`-OJoHV!@~cc@ zP;sJ}es{1rH<-&X0^o#f>9{~023P`c=Nkb!pk->A@I;%V?#AvIKP}7@BSE>Ah-Iq7 z#U&5VSf<$`szUUUDn2rQ`~9`sjZKq|nhPQ|1#GSbm1Qf2JJ(f(X`dOWOK2r1w7>84KSzWMgiRw3%G}ZN;${7B10U;k<|6 zie|7QcfJ_Qn|y5CcWa*6?BX_J9{MTK+6|*hM1}WV62vN+&aE>>PJJq2}OGC8@ z1uaH}tEEGE7%xr$i=@26xoZihJc(1@VHam%$7ONK7;~>yR~>M>SNbWsGviCpBskR&^H2WwH`8%T!cKG|6d2e|!4U;DgQ^N1W>tLS{VM^$9CS8KwHdQTXH)TSq!uL_ z!}sFp47{?`nCQNFoE;5rLyUHjDUP;Z$_ASEn`x? z$6yJlgB~)JTmlR}l+v4_Y#N`k&YPQPv(V$?De2%`dYCM(m&J0aeWfk6^YSGsT+Bdw zr9!H0A<-5^V8DZc64*wThUh5j6;U;X9qLR1v(H2rp;oAxswR5HG|2VQsO2tv1Vb1o zf^I|jfFKm31#)u48%1G2axEd5JkDk30hq#@$_64}O+3C>z{ZIaq=Cm7!IQL%?qY!b z8?_&CC*j71H|_Jki3|Ks*|BEPeJ92Y&H~C6qsr4aLvjVrb;ffyCr|O{DA#`hVf%e$ z{aL$S_aC@I-(?72x3pRT@pu1*c0-C?VPS!|Z810&wkyKIUTM~b|^vFP{y7fCe~AS45Am|=3iay*%&p&hPnX!g0}fAf}))Y}Il{t(G8 zP@wyP@1k$hV2;z!Jv+zDrKO#Dl~H5wh-4Pyz7gwrqa5=Hkc_?uOp*#N@LuB4(BB5= z=hRX}BwL2qQmZkjmf9*0Cgz@vS4fs`=3&O|C1JC zk*;%hzfT5g+-+zy-M9@)^NGgJ?l6NBs5tD?^sB?W8t{ejdlx3)?0%azoefOqf-U!m z3Wv^QbS)RDUu^=iIfj(=8LNUyfmjQwcWn^JsTD<}eN)^&X1XG$x__;|as=_>_4s)D zc*-SFf#Is03RyES@RAI_RHkOfuYf+l4xyZa`BV};gmlh^tSH1@6>Nz__OcY*^LVqS z(pR(`#zfuCFUEayAvtRO&KA$}>qeFypT_bkOdF}+x`f?i?z1zL66xKgL{ORh?k1|j zV7Z#`?^oOBD#7klUxu-26L|rs$nS{!KEm)mD3pUsaxD2H=(B@V_3Z0*>1Rrb)lWXP zOGtq^u(&>NY{@!BYg*r@(Rk2iZ`V&PQzMac!8H<^P@}fS-Km#F&B58JlFRn_7~?HB zs(gt?^71m%1Av6#ky4=Weq-2W`BpE zdm4_EIwN~cmJ_zyIt;;Yr54aMiW>85?==GaXSXVKXvP@K&Eaf zpNV8CNAo4@8cZ(0)O<|t0^}bimMTWV`RaT=LOGsP%}1mxQ7q+r%T#XOSiNqwp&M35J9Y^wLzs5~rACm{jrV+J(B9azkY97Yhkg-Qe*kl=uu zk5E2Y{rx=4)P?gt7PIcx26MHJC)~+gZ^-!8KY^v*%0Frsng92UC#%TxmsiLtLj7Ov zO6^{=hv5@FtFiLaJ&ey-vNh)yMmhIK7*^j+{QjN0dz~2Pt!D3MjEOUguVi>SD<+Z` zek%_$2VwCh!yW(NwqP$fMEg(pghTo+PztH#Kno(S6zkGq;r!E8c|Tm}6dJ+`SrIv9 zH$y94rDoOFZ}q&d8+Z~ETEpYWUH}2EtZz8~9qRmpX`_d0jg_;frCeF*p~@Y~#Lr3B zguS<=GnkP=xX43RVIeG^g#1U-%BxBgzNs6_vHM=Jk9T7d7J_ymXSsB*FV{cM`Rs74 z!{Po{rD7VTT*&3j!_R>md|tEdJ;+#=q~?H>i)J?8Q>vhM z3F$<$y~5{dgCv8klfV2F$JTv@)t=6)` zdFEe2x0>(WdN^|CsCku-_wAt9IoF>ZoIhnx$K$`ifN<36=C1if!T48={Q+PG$l$&z(c8_EiSjl?K}T{yS7Djt7Dojm&) z_YV{8^V8s65FdQr^K1J|APDHTk3>z!i5)NutBqo7k$P7;MG`NjhcnPc<6Ih!mkVeS zd`!^Ck0CeaFa)5j>?Mdb+U^jz>NDd@3u2FpqY+^6DTvi$rP?X+_O`D2jF6RR-MYh! zfXgZnT_=o38Qk9DYvk%WsoH*h5Qi6lAO!jL=9#c%?lm6OGIFt%Cbtk$;T`1Q2aDIT zipIo~&SBI0`1cu;v?}p?ph*7>)w1uRcoNapvsP0yc%N$tJ{hu#vx@$efAa5){GYzi zUII`+*22!%Ly~wICgVKBR^i}^$W&$uv)0)6D_0~7V|Yw4soqtIlG0vnS@vHp5TGC` zQ@332OK&T$f7-9DDvK_X3dN_lu3R$u`Tl`RR}b9Tx-w!_S#-_D-yOO0TAK#4oWuYo z>AR;jKIjJkI1z5Xzs>Ew&Yzpwy>SxRJ_G*9LV|pF;EjKhxz(Xj((_hl(xp3ps5_fx zPU^>bs~`NZWU*JCR7C!7W1T-}{q~o30=vo3i$vu>gKNtgpLtLPVFi@CF>P=uHR-EHDp87*qh(fQ?%<_`k(d67}!XP+@; z*U@vI+ie@oMyxv}2ceoNwgFkd&xgX@iCqr88ka6qR^oOlUU;Ait{>Z(QHXK^Upsn?yZG_x6LN~@#N@5@QvodS-rCcccNy~EarVdZ}^h{&BublozyTl;7DFc`;av_ z=c0Z0%74ed@!v2n@6pi8X1`LnhF55rn7i>I!dH_p1iq$laVv9_Nu;7Smn26|s$31Kbx&$6c*j`Ek zCT*T9%b-q{QV~2wizL%`m6;&ou=->}`U}H*xtBgbF0SZkP%Ij|_41di;WeeV9xWp6 zdr)e8EkyFp7XLm!x;4}q`1Z~NnJN3oOlET@{V4EVZozq27>SMmoCFSD@w`f8$S@N! zqdE+lj}C?R*DNULk?Sw?6*cp~!w>nb7hsZd7d*(S<|480#YqhM-7(*DAai2+K5ty$ zXDl2n!z~+@YdIt05J+T2wMGJe(Jg*PQm<*z2L%!10;Z}Mc-0tI`H~SO!S@xtLyoAc zia;+#+0<+arJjTQS<=?M#8$4e6_u$a2iz-RYUJqqM={>4Eb1$I)BpZAnDxI@q~E!6 z+cbl!z~CXn4tI1Oo4V)Pg56Q{V<4L|T|h}$A+oQM3&`Jj6w0EMDHYn6S-$K0tzD^XGGDxhgmlpiN% zvGP?HDQ%`9juYT9RXK)>h4+`Sd_?Ou`xbUDPk&x!xcGu@YC|==ZHL2pwrH;p4w=mb z5fWS-OX@PQM1A~NOi=8@U%HG_MZYZdWBrN$Hea!+0r=D(n_-LqK8=(%I@2>9?wGN7ro9+TVVn)Zg1%nw5Xx2)#xcsyn-NW%OuDck8y< zX-6zq-@H_~X1){e^T;n^p5EK(oE%~ZY1=V$CR!W4qWl}T>2XgJy`Ml9bE@LWA3kts zCGDFz~`DeCc#?4a@U7G#kEU4%OH?&2~a96@3f|sUJTmoRo&oK_37;7hxI|(^=tz~9>Ayl zncb#0_We&sQ~%EoF#ja>yO30db~rEHQ)IQr9svbJg+(U{>@pD$y{)S|S$5fY{>Lq4 zHOBMT)}y}I}{pI{!Kt|cKw&52ZIK3 zz68;#uq`{Cf3@!`jy3ZB;;p~iH#zJZp7-Sbj53QdG|m&`G(ZijitD+=A>k8;=uOZe zLO&Uul+5x0nNrQ%(-S_t~@((nnKAti z>z1eHJy}rj8HW5ZmSr`YW&mkf+A$PwklFKwIan9gK((P64q$n}M9dcrJ1mw}k?@s} zTde?OIp#o$+n)Y>crmc-4_lG;{b*Vw(-HY_!<+H5Rq*U%Ry--tG9Bn%mvV30Hr=`# zjnQ_E;%PJTZR};!56EOG(<@Of-{y*OYrV~wfkSqJ|MoUcvg}7|06;SglDbvLCM5<1 z`2&;&NE#0wUbTI@gAQ2w>(>|yH5D3bEr%iM&6Gsxuygh-fjjp&b(;K2yfUJI>Vg&+ z3w|rTPt>=GuqLdC9A_~;Q-OjrQ~q29^gFXeOWjl#`Zkf54c51f8-^J-nZEx=@%{hi zx(eiQ(^hd1-_+Su!%Qi9V_U4hZX&etH)$8&xH*uh5hBmfX7hCe8xZLly%#FGy&I*x7R!(4s#YT zHCjz?Miq>iHZyqe!boHsFBU(QFsz)=9bc+faTE@b?u^jo=;tE!np>XOMu8JrP9eCy zoO;C6P2B_1s9`o`ZhK53cn<)Jvc0bd5BV_)DwU~G6Edu*V{;xg+_zuak*y{ zhk+{jk|-9J(o6hpe%*g*IP`z(!*Q2S9Y`C1M7pW_SHQC8>!};M1`^6w>@HXlw}%mD z<8eY>b3%TCV&efXPuMWxe%tmqF>L^rIGb6?ahivh1yS4>^6~3h5Ciup#&*8Unc<onu@mv%wNsaKod4GUERUMQDyCYy3aq*O-wqY;LX1dy6k0-la=9y;{#ZE6 z7f_wm&z2Q?^ApSC(xZD?%j%bDHx@~@7>1OOVFFYB%q>)Km^n-3ztw8vU}kT5?~Gy1 zp5Dw@WIa~G_oqb^xMae8U|XdyQW!B7HaOJR&vDtdXDsY+n3)$Cc9iGWH_+TMIE;(s zVO5VgF1#?QT3Q}fl^HQmSg|!sm%`f8e9c+j5R$@&O&8eBk#O9$?RLh8nTNx=8$z~F zul|SaGs>2;_(-t}AyIh(!x}&pgrmKETM8CUd+laluy)$(DfU3zmA~R-vFpjw!UNmW z^)ndgnwIU6E+Amqk8PRK8M$WN-Mr{S&%<=Pl)RP1S+-Y?jPdL)T- z=lJ6ut5=+zGwOpze(ACAecx_=>zNOp&(8G!>!PVIAEcc+Q~xA%;lbBi?|t=plfCF{ zo;foXccd?`K3zwwKz5oC;Jo0A_A-Sa2T;JvrE z6rr&KYmQE5o9<#?T#%LSO6(kKi42$V%Ufb#z4LL?)V$+I%|mmgyXQXt4vn``BKakH zM@LBlrYdhSQiv!=H~F-JsNOyY*gf$X_@qAwNxDf{P*Q+E4C2Q!hn?hFyz}*V=K7QX z$?gvGb@?w8emWa|UR_kkUZ* zTN<(+zSv*(U_9#~eBCJi=W&JKD1J%dw*|kHHT3gn%7^AFov<&j62u{r;gqDJu8V2I zexgpx{Dx5+93$R-m7M;pp@|o1(1pNvLl@!)%}@UHFzzW_0O75;{>wtTI(GyzT*auG^F;e0AG&GbqfpHN5_ z${QGQ*_1dbcT&8f;xsPC{wynBdi)lf>eQuod~(aivDMfGFyV~`1eY)nM1jf(k{K8@ z++B~pY)u5X#>Nv(X7lYV%}H6cJDGUp)$X$nns>zu`@OEV^Td zn8nE&YmJgr^&YVq*}>1((N)>Yoz z#p2opu1n13mYW_;@S@J+A{@c+vQg|Sn)arB{`WdiwS`oKf>5N~NV5ih^4 zICh)Im5`YXZ7VleRdP2f{5x<0y@eoFW1+I1XV+$WBP-?m)B&f;kT{E5n{WeSpw&Mt zudSHDM*o25A48f;Ce_naVji2!oDrXAJhccmKHS5Y_T|an+UGxVB=H{}Ec|_bBxU^c z)^{J?{z10)2U*h3P$w#_bO;>}BLH=yB9P%3nb$(6%Pqe?)}Xp}1Ordpz9UknfFoB3 zJ59j0I0Q%q33SNdLFrITmO{`d&f+FPA*>B_d_fOy$l#1Gob*Ku?WtyFznZSC0kRpO z4lxf?ka`Q8+(x{qpg|rE6_HI;BBL5aK>-4JFAtz)llzx^P*U3lXY}S~9Di&qT{rl_ z_GzZm=T#7UJiomEm&(Uu4v)v29~%e%+4--!2<@g%!8t`}AWl^;hHEw+9#UKcVdJ;p zk%`8nH>#K832Ht(>hMf>Bv3q+OKEZ?pQ^wO1wH9MS~+GL%bzHN^G*0&^-Fm6%)$Qp zUVTsY$-m$cyEDGpyz&p1a{N8lv1)O7UGn?lrC#>C6U2X|?JI0uKVxsi7Q?_?4HBVY zMC^X1=LxK2hT(083Ze$_j~Onx;=CI9Y2 z>QWCbpK(zxF4b?MX=w#fkZ4vSV6dpx67GWd^xmL{E&|EKz>RAyux7Z&I?dCk!$%9E z@N|);Sb*Fl<1fm7-gJ%|Z#pkfTGsb1Pa0M=ux-D28;l?N`hf#YETyb z5rt;2EpkH1*Cm97eHlfH=0}B(?h3OK?6}x@{+I8F!;38J|Hziut6eQh1em>g54wXN zq1#npe}tkUp9;i%l}uI}OHwW=C~hf_Ej4i=lz*j-)uE0pf5HTasiYjZ9NJj1<*GIo zyxPv6Tkzo3qN^cuSUrV&uFAwU@MA)hwDc(VEG0u>?Mg&cQn)R}5-6z|gy(}%Ab#kF zUXVUySnf?Xo3Z8eL8ZRL5U^4ItEzG!<2`bG^?drWUl>T>9>ZfgrQ&k-80>!K@vOnOaDmjC9i!fq)?-X6cm>MS*n_>yXLg9O%=oz9s+}U$ht&T-8qm3s{VD-3W>q&RGmzB$4so|Jta!E!N@ z?AZw4dJeRmX9=9NOcdClLsaDcZu}YOzZO4dSeZwnRM=*L(>Tcp&DzmRX!shw4wH&) z7&HcbTww9WzW?{9yxJ=SpEzuBkxYh{AIDRzNU>mUz#Oz{EdA1C&_Ewo@P=tf1g572 zun{vB$s6XQe-8NBrI|OV$7a)PXux(4VI)?!gEtvWnuH~?x~IQVTSm$O`kRZXNg8Ge z2%{qa3NDD1tfs)Gno*U9)}|4ebe4lUpBry-G2l632dbqlnX_IDN$r!UmH+|J!>rYn zt|9Gv+~==!>-f)q%de9o2+Si13C0qDNE1@U_r%x&ik93E^A|E`6e^;NVsj}4ay=eD zG0V&)r<#K}UraBMSKxdun+^%=__=u87yM7AzJkQ!+OnvnzUP$9mRkJDvWc8q%_h=k zrP&7A(ILTB@UVpG?J3B*f=MnoC`ObJr{F?p0#^8i`{1I?ElroY-mojym%gxjVJFBf zV?mO3(+D^!fp!@7vOWidpIvEva{6h@G`o*UU+9w3wo(%a5aqK_OH`EvNfQvbiL>1s zpKL=&0we-qSd&si8MHape&L}RCQ>raP$vfQcn z(ju|y=d3fIk)znZw%>Q2nUYm{r4bQ{;+~533?7bc%{ehIM^locIko-79s7lQeor?4 zemHjQ#H)pO$IrvCawYa@Ik5qlgNyRbzbBviCDy2(7IfjaPs@hs)ir6&<8lH()T zwTncfRS4tUg}Ezuh8%Ugt;kHRYdCyel`C5W{C(rSy8cgDo4?uI2aS<;bnPDp~H6W*lz;+ zvc%^<4yEV!pFAJD`sNr6qE{hHk4_NXE+C_sZHFWn_$DiNs0j|mO>5G5xMOl7Un(!NTXd6%4MqYj$%+*Ckn5;*E&LwHtc5S0;mJB zhD3Zpf6|J#57r*u((uh-qf?nY)61gKw;^17SkFv=(_^moPYmm;rq`V$k7wQ z#R{syNSa(zQ;=~j^1ZTbSG1m7CKod!EycX_?F#9TrK|tQhTR`ycWgchu8N%-;h(b` zahmKYQY+qZ`?$((y<^?Zy%mmmu{Na;8NEBt!^bn;_jaxJWQlJv>1*1K5|y}h$=A+b zZ?BUY`(o^VTb6aU?k&;Qx8w=#o0}hg%@J(2AJ@;>=2gVxk=Fi=_viS^cR&-yt?h+>4r?{-Q(83lsUZ>?d+ar&OCG~;oOhsXSF~4_C%TQvL7Sps)WHc)3J$d zHFc!RJ=CAi*nZq#J^8++c<#GPX7XnSQ7QIFL|L}!&IH9G6c;G&SdtKRfy3wPFK+cD zzf+I<{k|~pr>P6DGYRqDXOn;EP4ZrKcN4F{XZ}RB>CteY*_=qkZSCkjYj6$!QuBS$ ztnsY#tAX@TcmNn{S9Zn3#57)c8J83K;xxmOI&1cnBO~9*S)Ko@|IvSPh($)0=yFLT z2x(b^mR;eO%wAO;3b`!v(W_mhXzs zJoB;bF5g=Gq}S!Z2{0~s|Ix=$$rpwOyU4vE?Z@vgtT$^;oRDZNx82w-X>ZzZE!EgO z(?m?@Xrf17`$;~!>&xP_bB_w9p4gW|57TsHsCK6Xb;PVX$miMx=Me1|@RPPe<_6iD z`q9HS+A@Z<|AKNvbr*Zmj8}i~wgfX4L@1Tf@33S1s8f8!Bd4E#_ui=kuGCZN=yKm8&t9)1?YkS+Pm?Gc57n)F zu;$LlJ87??lD3WRx{}@a_*DP52_N&32}+3dx4=lVXqQ1J1h0By2nV|$dueaTKY$@WPkZ3CJ?X`oMN zul(gr`~7!(I>9%ir$AnNoIF&s@N~dWuCQz`b>Gj-2?c2s|B}~KblZB z7Co5uP9%81N9ZX+%UrQzv84u6ZnMGI%q8;qm}IhUdoDffZ(&E=z7g;Q2DKs#599gr z@Qo$a$K}IMVnSj>zgIF;8liH3nX1A$x$(Ufec5AcQmeN;i9UBxHNi+$r8ZyWen*Y} zEcj-7cw}S3k*{WWuGnn9?@*EE5NAC%-tQO@-yZ*OZM#`>`u9ZS z`zI)z^!+nE867+=YnNsBTeEr>hr|;}pT`T`symaQu3_r?w+7i*xqx6|myxoMp zDkIA_$7{urc`YG7me_HbQ$)1Z5!RkPUYRQas1v>yk_wzPWLInLP$W~-=99-oBH{?Utf}0U62F@M+Yjy>>_iDOFrX$_~Z2J|51GZosj<* zHvRD%|L!@*Rr43h@y`_DWHw1A2}18BoKzt9+R4a}6?y}U_1!tYwdpv)z?Xm2mlM3V z<5?2O-RQn~+!)Mcl7YN`aN*X+!F%uaukKz|6e=h?)gYEb7@>m|`jC^;kW;z8+fgTH(Q)6p zqp`8xM0}6?Fo2)3AxHCPe9OF@2lbB#b9J-PgP7$u2p@9%iCJqFwg%1Uiqr@@9M9)U zIwT#AM`N~~lsv#PIRR+K1DMawOdFr#qBew7cZk&;o#>_s3WL|it&Fm<@8uj=QCmkYsx+`^%Am?#aU(F=fO%0GlcfzK0*(XLV{3z*7628WKaJtaKJp@WY|3hG{hnop2lCCTO{z_%gN(=8vn7vDPUSaD4cAWP9Vpo;v(=nxX|&?EsIAP+ z&Vz0)rS2_<&BM1QO0v=?T7)@Gl%zyn3)}nupZNauBS_it#Rsb8ufDSJdbZfz+D3i< z%&u1-zx|-*^gSxm$Y$&BI{B!q6zcZpAUz3IL3OvKIkMU2p~RJMmG8PZXnb*Q#w6p2 z{6na%q#c6t0>}l`7BvK!2&MeU~D;z$XYq{-wyZ9rVvpYt)7?D4T5tAF^)F01g>2+zeT* zvk5@!2G&`YRZ@#nlVUYj{Ch3EmXdG*yTpkfNLJ0Dd}#EcY*22eY%tEyKQsjfvo>`* z7rbg@eROK2Dtcv{D0i}f+;jMJw5OeKP|VFI>p=ycd|V!`s|9iN>T&(& zG!HK;0g}E42uQEbzrKZGg}6~`R8G*92>mkjok!?BD4%kzm|w;(<`-Kz2~)BNVRfG1 zVbKwsJyT2O0bD~*Vu!-{gt+W511p@VDRe#3>o%U*nCT-D3jb;z|MI2D`@hZFTXQ`w zgE#87r?=DSPNp%beP#3%Q_aE-TwAj}Iyp1#7@Sl^7eoE1uE7l3u&_{bPqo&&+Rx6` zEcO<|0+npE)M_g`oM@JE#9XnkklN2)K%;iBLpowY+bEF%C;I#X`-uK|wMQ$HPg=9J z|Ihda5QnZiC*W0i&g+;@pOWJ`CI!(oZzqA3eR);rd`d)NC_HW!SaH#^-0P7$m)aX? zolEWGvUGMwGqaCwIht{5G(z(3K!e;40FM=*@F3Re74mR`zaNcqgp(??tL{+4Ndbv?r!~S)duR@)VEQWafJs!yBUAT zl{c)&um%wZ*%|x8C3RA-rsXg$>Rf8-3Whuhh8$NGf;%E4oK-(iK>gX76>6V-Z)bc7 zXlg7SUAlQ`lQf);gtkO4f86UJ1fzxZJp-fRJ9>T%k7x~#xYcySZBBUpAUD+J(P-Vy zCGA`I^*-_Z0$FKWJpSqQD&I~yPvJRXu_^G>-{RP+c8nDerI@giCTJIDVklO837^T? zjp9d@vKZs;9t&J2yh&4&23&n@X=-c3FW!!gB=Jda?hr4wQ8dRQNzbTMRI7Ci=QU)} zp6g`I?4tWcT^;)wd-D!C&cxm$&nk?1>M>2xz(mQr4tj`W?`Z5uVe0Ha6v@C*Y@)JL zL7%9Zt^N#0q7gA7uvk^1sm`7zoQAB|GYK0zN)5t8@Suq`6SX;bFr|iU+K00&(#ZN4 zIpT~mwHka0naD1;Zak6yEC=7nMcqh~rIaFsw-Mh+xzcCdeM#yZX{|4lF?Lh4?afQ0 z-Xh{_4qorzG4OZ(&aG-wmw(%Dd>gf?DQHlSYEVVy0gb)-$YDq%$6lPx1XKb}!6=Au zIjvG@|KPZEz4n^7+1&1_z;sA6qPNCqV<$>Mx{cI_=)w1gY*57aO*MJp+v$B|t(QE; zx)(2#kwDlnPjQlgF;t|_vN~+5#MYE)&jUP%p^Kw0J&Qa&uSSCwlNRSv088X#VH~R^pebXe?Le( z`1`>RlBWIFiAeu<-MDgem+vyYg0#7mR99rE+er;mDXQaRz%xZ=5lymgpN+8AI+rx} z%(-=b&HnmJKaA?qEBE%k*ZJwvS$9V(oOe6wGY_Pz?SrseaV8+-Da*PKaU4NKAsv`@ z*iA=$TK{*-{nZC4sQz2jN_l~ArN1iPMnO&Aq8$B6A;W~nFqFy|Pn3peB@AT&5#Jr& z2~gkv=`a3Z_Oww}V37&`14Re$wQ9;1f~Y46R8z7Yi>yq^{ejfExxzqFk?8?Cr!f}` zKu!1qXQd{Ljaprmu$jrM{5AB#T%eLNs4xUd3KC8mmOMn)1S!c;B{9rY!c~7Pr8yh70w>lu>&hK2d3`bc-?X1RF`}HE?-YQSm*D^Hfq*5JK<}vEQx(l zvoptIjdRfhXU%=K%z5ABHOcZi*@NcBq`HP6i8cF!G9D+=Zh>S^bgj3!&z_Mdi>ZY^ z?nD*&xN1}7?#sG`LsM;mk>owKa(DTr-2$KTO;bZh4-Cfh4I$r1hE`l}qdu(2Cuy*LziYyFZRxIMsf4*`d$-Al_KtR3yt+g4%oDo(Ki_8f|b6}*6A#9utkU|B(u>jx0 zdfG8_D@j4-;W!e`BPn=#9`IVBZczz7p{!G2uq1A+ESLu!MG_S_(Hx$EK!H$6#cb3q z+o@N-x`0^xEL#}xtrkqY4~+7wM#M_~#L* zRV07l-JI@oU|rR_k%32Z<(aJHlTZT$;Ydvaw+h^1KqdR_C3Sa=w}(Mp(g;$XwF2NX zfIN;cL75NV&zO{(Us-ruaiLaV_6E5^OI+()AQsR)c*W@Wjh197QzX$<=_8|=FUDk{ zZ8XxS6;Jn&EoCYxud;ZGk}`UgV*$jp`D7CQX&bEu=w#Eq1>m<}kmDD031HQcdZkxo ztRL5}`z=Un1^kpR-o)3CzIRnRypIvBHh&-4Qp@8KGb^1+riJNOSas;{Ho;DmFtMML zZFQKR-GnBRHowYqKHWp1?o+6H3tYX!291^p7H|akMSU|O>y$4tw`XMN{GuM=MN&LfCmyV~te{U(k>U|un1Ibv!QH%Ob9+{X zE`az>M{xMMlasd)?e~wMRvX}#{ndVxlUEXvkorOY4VT`62}Xl|B;>3` zYlpRZv_G`9V*y!V?q~GF#*P?92a`Tktdc6ty&101{e%%u7g&sJwa{eeYjTOa7wE>f z2ZhuILAL_xOJh>VmlJ#7A&_bdncdn*#OkpDI8VecD}j_eZ0=xm)vb;H&-2eO?~f}s%(X^rDJD0ez#^8c z&k^nSw_R6#)7w5AkZQm5zV9=2eI`(E?)&c;W;-uMK))eWQZ-a{8ac9b_cI!8}BlBfk~_>F2>a`N~q}g5G1( z`B~tTAqS@@P#>sWLD)%!=!iB=#P{&@NDJ^k`ioyCFq_Aldc3@UV zg{oU{GL{n^!g19tZ{dQ&gre3h5J<@XoyOf85Hmf%mT-KWAEnH27)waHJ+i88K|dFe z{IE33Yxn!kQ{qQ>XsQQ86g%PkU;}0+)9;b2V zu2=(nZM}QzfV`s+Q#Eg?s&SuoA7zj(v`L}y{hSwTH?Vhh7%$fQ=sKasu4lqJ58>z3 z9*^oVU#j;JokqaOtKH)_QR~rN^TU??`TMu+7M*vz<18xWE#^}9H13Iyj#c5c9`i}Q zQrjsCjkl$$&SQu=um}z^s9Wew9io~R`90}b2zP^DoL{tX@WRjD?t}F+eEIx(_oO7V zFMo!4h|l-s&vYL@{~n#*Y6bpff7OqC1Kiz{eSLimj(D+7k|K$Wl%%Aj!JTA_j6c3T zp0l%aq9f;BhsvG#Bk_*-j@A})ds%TyvHt2gda*$zz6$3nH5Fj8n=$t>*5P5_T;E)m zr}_;isOk81eUe03yd334^FdJpbMNLL2A+WggQOs#1an6%DQuo2F@NoLG+j4cjY;x! z^20OgC?e`&>f*3sMdwla5sIV~O8$det0raSQChffcRykBfQyuoM{aR@ViOdP?8LXe1dJYH~Zb4)CxTnx%@) za4=2{vhV-oH6gpZWzME!8joBF;+<|B0gOPjqEDFfmN5LncPJ{vF)o|IhOd5#}>+1IgR zQnGg4UQ!coCXp4l4pY)yu+7v`ik)YKWO)P-ycgR6rTfT?7Y@TjI?QZzhsvVCzo|blwSZ;HisWXI0u_VJ%BiZ>y?7H$2hL=c8UN(1j#d{F3ac3H}Ueaee~}&r|aAr zx=!z%QgmH4d>YFyf4X%5LJY$wUKM53fWWxeS1tymElDh+l67J9BBNUamQ{l;nWlDC zr1H8bm{#9FVUm=1mJ?u80ra{6B_Vo6G@nXWy0LSGu0(uydhfGziuvHeoA??O1W?Om zHhpiHS}UsXfvEGd4s0)^vlA4Ac@5)%g%2F=+Q3d@1 zDu`qKA;h%}cms}Cb4MetCNc|{MI5=E+9FrfCESGCbaO_r*#>nt=MkYFe10=OljFzn zr|%zw!nEW8e=U9gsEtTrZX2j&TW66Iq%vM zP$ATVbo2LEJPE*hAY9TA0KhfF``z#B8i(Nl07Mha-x&r)OtAw> z$_E~<2^Y@*N2AO99DvM``5kyYDgcWkYi*-en1Birl?Sc0>9JbjyYx~X9Gw7Klayiw zP_WV$Q} zNw{Jd*s$w_sms?o96gC6pi-!(QlX!~S5j&C0sJe=K7@A|7-c^L^Ne7SE3$z|j^v-E zIuY^xHOPbGsk=Fh5c6LG|C~TlOakw|DVej@%&m~2;X0wWrP{J$uh4-))?=iwQDe%4 zc2<~xL2f$kO-e>gJB70;N09+*Z#0&oO%>Wuj-oNa!Y?gtkpUn_^`K&FZ{!)>*B{$r z`tAGv!wuirPh_Pjgp@YzlWE^}Bs{V(l;pLAU7$~onC-JyNk_IKST^UwWdP&@{VnMy zJeV=lxd^qEnsIVV$<{GdQRx^=vET%pvbz7I=i%H(&7PtCJ^3(PA6S1l;jl&6PZCE9 z1MGl~*N>JiU1q6&cFL%OM0&bLq~s_uk>)8Aa^LP6hH92V%cw$P^f8?FXr#-?d%xXE z(RGJoapT7YrW;R6${sG&wd|pn#fKN`SP}9_xrCMWcE{m)n0$$-kX*CL9g6{vZTrIc zq$TyD(^H$|a~ZVg;9ze7h9L5eZahee2uZjev7;BOX}@LNIA9Rhw8Ovycj(1k&E80* zf{BppI&o630=|0>g5(BO&!;$9es||qN(~9&A|A7mJOwgE?)nS%%LMb{Q1jwSN8;mq z0~;1H84{VOvbdBCjN96^y~-;iB^D@iW(pdw|4MCnC#K04&*U`K8M?Q1HExXhSXBPw9%|V;2#MmOTos(Y}Vu; zGHd&-tYBEPhYwCc6pY3i1il0o;v#^u3nGL%3kfD&2onK1FZ{;gXjKSJVN*qXH}H8c zEqye0|J_hng5{0vZ`!Xnvg%b_Q^krRB!=2YVpAg&p6%A+cUTEJtlc`svz;OIY$ppn zTlL98Oz$q7B~BK48jcJ1s?tRJIxdO4#813w75bw{nf?f=SbvmUR%;!u!^%(|Rz~Js zZ}-CAi6-+r%g91H9ENTt?n?B0A*P%xe20`Oq$~K|q_Wn+xn9in({y1J&%oPFg#!Ij zp?Gp_q>Ph4f=4Ea95n}uk~of7nLK<}VR)h9+(^93J$56b5X$%7j4EnGk~^okU6L%q zih(#S!rCS7-kd5bWVPs?`+#|O@?$gHwU(W19jD=G%3inMV3HG(|5tu80=}9t83!wq z$T%bMrEO$5Xvx(GHRrRq$YkQTg8J4u%8F|v)7&`4Pqy~1cPwvB^XJ5u)iz7{GaXA? zuco<+G{wzHB2MwuNOw-&_&t}Js&v$prSUmjYUELoJsdKB3^?Pm()LIYPvKG%yE!Dd zx&o&t3ar^9i?h9^V7x1VCHhwX(ou2{yH< z>ne80r)YB0x=jw7S0qn(6W_lE%tETd)hAvthZGY->Oop4?x5K^lN3$!)uHV)(fegH z-E3JT-KuuF-aXnW+a3Ht(e{a^1<`cKMoKyg+qpfn%5x-E(E_Buj1}eDfdTt~@>zsx6qq_=yb@z)JQx%;>t&y?Q9G4bLU-_+OcU2!TMC;0ktcLTD z)t-{pRK+7rR)EaPeovX7lfZpJ$&vu?myH|dmY0V_%ye@0ULvYHV%#gc|9G0_f&B3) z?DpP+7Mi@ygIn`n+rze5L~e8$S8*Qr84_iiFC0=v*(vkE>M@^)@AH5`(gY-bf5xBr z$?1VGPOdD^*K|B0T7g;9)k&m7GLs{cQw!Z=mv{p_Z{`vwf6)4*i)~2tj{}WQMok_5*9>eBb3NLsNtBSx=GTB@H5&^t06OC zBo2gS!>TXIrSn0eFd+p@vR8c+@Dce-GV%JYhEU=O%rO~NC|;s>QvsmRu9jVE+s-~v zYo}w#JP7)n8Pt7Z4}(7GqS(q=i_g7W3Y%j0{at*86g~7ELHY{hxn4{e)>*tzC~P~G zV#bTDLKlPjgDKTIWbM5`Bp;Pl`;s7sMTSIERGOIQNL8eeA)Q52 zLE_0Hj0dbS*sUVULmN|B!6Z^$xJs%8oAnl|EsxDAOnj@Gdh^U6cpp8J3cysOAH0n) zFiDC%QCTW}dYho?RomieH>eAgcWO9+V2Z&H!GeHxCu)R>yr@Uz4%K^SY|{6FmbFhFAgFR+?pGQdO#W;+0) zgo%$Nhu{SE10OJlA4;GvXHzCU$AXA=%?Im;Y{{nAFfJG);-gq7#U-@hH3DQZpUtw^i%tXM^iR?)WP*mq_BFvWf^aY?j+aVj=eZ?Pq#h1 zO(uEgVtdXC`_4r3-PL#Bi`>(5ckQc%cHe_y=9RX0`WE`g~0cD2j%bl7Qg(Zsg~S_q^xk7`f$YaLP-1q#dG4y6oDwDDz25@S?~K_VaSe zbJG?niZVXgfNtr%kon}@v_&Z|Gd>9{vU3wB=LXhzH-3f^cKJ*W_utv^h zy&gY{5u_79)2+=V&1G3@0hE!I(F{wgM|J*0Ci;SndC+K4#b&~r3GL08li^9rKvfFj zBPf!SBMN=%&Jj@S@p=+Kv>@lv3B7mMH&C!@Z6-=q^HS4S$^e@!u(01+MJZ_<)w!B` z<4!*HHD#mtgV7yuqRx0!&g??D)v@5!wZ8;~Rm20`T z(X>m@A7e2t48Ig${y)Zr!}!x{PY{Kzm;#R4vHp># zPknpt;>Oxu2hqaPLl>8yd~5Zz-=ap`IQ{9n(F-GigS zxiq#iXz{sUf*|y&W>Ah&^h1*u&kROmCsU5zUFn{7&z4EtkR|uq2xD|A!vdH&# zrE*Ma!KKvef*Q3UwS)xi5Jms<%c!@1t$o$ppV5D%zsD}o`6G(TjgFk!cXVmyBWTK} zh!`65mNMjCK1BA_>5CgbIle6cUfeqLK%ME6IpH%95^76w@gr z(lWZrQ^HZIgpnv+X~z;x5Q`*qtzH6aAeT-JV`F@(7%%3KRKBg~s<{~E4%;LgmRMf4 zSgGPkIOC7P5$Bw9^v=GY=hDbe|c!q8EWnKu<{fVhvC#E^pO z1rb+uJ4ls9fFK7QBsu1`Ps$$LstIYx3vW@isBbi0XY$pESVE;B5{#TJWRt~uF`cfc zD7Hk&1MvB2`UaMlYC!nXo}{?Uw}(eRq>$WVFs6z(nGZWh!B+&j`bY&%S0j-e5-BBn zuyCive)w{%sbUwpIB2R;i2&R~LV>S~ZgH6D-q^wohmV>)^xp%@Ciu*|2mL;x*HI!A zv2e;hYORV8rcfZMQz5iLW6>BJVKC*Wl`>AWbnr*h(Ir43v;4gVY6nn4 z$iqY1J;?>2ox%E<{h%qvq09lqxt*urmy@6>mmr-EexBbL8&4htYjod=ES(d~pjxAh z^*i^dBg-QX+&z{myf4dY%m8WR_5h~%6AJF4TUKhOZ_G?rjKUNtyqUhb`k@&gx6uX-xqqV# zeLqxcrOx`eOh$;F>!yq3cW;&s1j7tB0$w-)5YKxho4#P;T1mL>+=h-vE`lIgxa z>tDJcsWCyP(|tXC&cOw1=O*ZWuk~$TxR{8qUi6-si+s4R;LrGGPfO_{S5bV#I^Wy3 zYpxMzu~P}B;gm*nngFQ@y-H>1&EQc2w-LZn+)26cP#NVwBt_l@IKb-sHs*r#xzBXE z3vfN(`gQ(D5_GZVk%wPxI(P7orqbR`SIjqm8TxYb&ku*b%-0u!6#tUjF#WwF56JJB z(E&)?S7f-splKD%g&Ba?D2+~t6)eAS1?I+UL8tb%xoU5~{Q0lF+RbCiL>Mfuh0TuZ zuS2c*P99A0AHfJ3X4m#_=D&Y`vi+wmE5^-7 z++;+E3Q1{l9kb7wd|JwEQVD#g^BdpZs1MLhJ8%1VzwbWV!MZsh3tKN>kqR~OxgZv2 zu@ngLdLX?6|D82Mc`!oB$pAN9^!-F--%Ul*9W7ClnE`Zp15o4%`aFqP1SUP~9X`e6 zJCcj7L>-J%2DarA@vWX-L}LHFz6zE|u}~|n&DDvzpp0Zgv7qR$;U+>$oiY(5Jx#)F zVl!Q>a@XRa@aO=*#f(1~l=&>bafNo;Hz=4E3dfgCL`_~gj#wNr{yJ(Us1VFHfeGy>cnA+PDtOC53wB(O9ZEv1IRpdg{b6|nbR$sk zfRfmiVfmHrt*lUU(OIiRD;Wy`FT@jIJ|j zKY086)*C}U;crjg6?v?}bF&nEXKG6jda7;QA7>3$dEezHzDv(iSbz2?@Mpi6PJn2xh& z(QPMYPV4>Tgz2|w8HSF{PAA@jF?oJwdHfmwMZcaJ1B0C}q-JyG!+YO;3Ip(aZ=L?& zSmsyvV4$4&<1+K@1(R*x8+ym0X)x;A^#PyosLA{LZaV%gc(H}CK!G6P2wRV1#+}Ef z6q7pGEW|Q8Aff#i*XT(LZ^T-ad03X6bz+@$j5u_ZT7ZZrCy~N4M}t$0fvAt#M}COj zl`m6VhE!OK6m%9V(lK|$O&MgXkruAnrisvyNwXB5 z?ixQ*Pz+h6NWtf@BNS&Cs!l-iX+Q^B(UpXO9k`+^5}Q^a$L-4O8V7V(4MmROtxymX z&ykW>O?k${x7!!d_1p37NDbAr5MM~`L$nMTgJM4rCNu+TbR0imvu^M0-rU4%zw^hM z9Dng!d8m8iuI$;qgqR7hpqLB#M6S)wOv$cUSaoTuQCkI!E?<2LsaF-A6zc*c>93Olw% z>pEf;=EF!06d0uRUVNbxIXu4YZHvhM{*ygx@BDzR@6YfwkEsC20hdRi;E3nyvGL~k z+SvRlyF$zT>o1JBr|rIA-nI09@21Vef9rdSO`zHg-}qM6ynzLSfE4+7xkZPnVC?@b)7jT*MU z=4t!`JnC0@?n{~dd?c(;9|n4MI9=Ehs}){t_Jf2)-sc zTO#Ga`ba?-r!0&kYnJP>q|PI4Ng$D@l3&%g|=Gs63+N3Bm3d?HU1=I*RM;0mNV3C{=8NAd8?k+5Y&1oFs z5!~IIex;2BdnB`)WuUx6zg!DKhfw|zll2Hr-e2|b#r_$;=HOs@r1I~Cp7^2d!CtlU~0 z+>??{JI|56_S&Hhk#wWNCIQ8!gQ73#z9KhDv(oYftl6u$ zmPC9(|Ji0T^5Od+sQH>7+O9dETPUOX;&W+l3lr|tW(dd{x6n#e6)D<|eO<|7Yrb1M z+BQF0_i1Yz>%#f=x{kKB+ea^)rFO*3>j*iEoTc2LA^rI!fP7?hfT#~jf%7UJ401jB z0IIUDh)7|@Q@GhlE&TJq=WszLSs)h5_yXxlPCQjAx36%zk-~x1?2>kVJta)5^5pqB z!Pr@i@)R8z!X!GTqJ;6Tn9bk_E|%-=V$N@V4n`h0ykj;7g_&ZpU8xurPJ9#Jf7+Pp zpM4e228LlYWpXU=5{n|c)?`hg(*KuE2%@OiLzu&o`{uQMsZL?#uN8Ho6!vh|i}$?Z$;5a|Cz}g&{)%OKMsL%=7pH3ilx1^l`WS z0f=FIt-wh99;4)p{4|n z;^+U2?U>VL|NIi|J>{7>UX1|VFf4_!R)qY2etiG&_k!Dev2lB$VwQD62crD?%+7T^ zIr$*v46`F$j(6~gTKNcIZ6n8)ov>YbDB6P|Tl#6&m%rhsObX@zyEInEYhB{G_zNEvyl>C~BWhKj2(3 zs0pB)K6$IrN97KpG1s=6Kv>H}n3QUhx0Y^#^Y*+^RD&)h?#hS~N_i(_mn7K-UFWJ?kE$GWM!g9wKdY)_h9 za{5ht|E0b1KfbtmIDn?CXt%QtS(tXLH>LNN)EnRVbTE69Jene<5}CUI>h7GKI~_Tk z!S(h#xmf$QvN}mtN@_~v;f<@F_8mH~Y@_thrd1E6ktxK+=C^xQGmp4?yZh1w6J+kA zb$L7UzRP>CXk-@=-&G#fW*=m&-;qDtZy2sJ&{XrT`}+9KfM+Zpm-dgavzovQiPCqv z(~qh-*@M8X(bWrwEcQ)WYaRudD<9=8wAF;-&HY zqVzA^(WHNS+-ic5*i2mgqAp`Q=toh$q1Zh9`Bg4LA>AYf|~l&8L7GZlnnLDzOUi1!x=3ScvnZxa$?a+=F@W4is%jPF0j z`^~z7>~8b7xZnPGz3Sq?DcIbU++D;9L=Bn%Ya~?(nAcp&4D_{)PJj(7XhpvHF<1bfv0CZXD5W6X zXCCXkj67OQZPB@s>UewQzcXD@>mzI8e-(mfaE6!G2N&Mkr{iTQp%E^|O62&D{*eX`1 zXWghg|39vOHXl1$?)Hb2P4Y$<*sdA7zV<1W`QD3OHnp7>OSdx?3YGIoAx5geL)25Y z;fiR4l?&DPt!e#vvY|=+wR!kD`TZKGs&mPe1w#zBjt#rgyy^0AD7ITd{r38K0{+qk zbs;eAe3%eR#CPq~6|V$HW<2-_zaBp`Y+H@{Qu^$s6)@!Cl?B3m^X_0VMeG@h{iJ08 zMh>$t{&dVc)P6f5!n@2$=A^4l6wswJDoc_WGKV&D9-cS^O?p1r{$>(GI<3S_R^(Y! z50;;CT?=+KPbvH|AQnHH()E%-ogKM87*5ycDzYjVgtPwONX;dzct8BbOZUyP`;(NEZ-V{ud zv76X^2Xxbl-Adf>MYD+brh1?jJUIWp;SXLFxJdKjA4>BMt&4v&2GUAx+`Rj1%?GP0 z@AsCHkMD2dpNzQ>$KaM6Ix*+Oq!V+FCJuZ)&^QcckKHgD0|1Z-cn95_VF22M0K6s` z2tpxSI4&Gl%0^%un2JHY8%At~4pEQ(n$56qlewF%)gPwN?f7;Wo9{p`9K~!4!i{e7 ztwos7P{az78+029x3eP583nymYBCfNSkOxsnYv~UfIPG_C`{*;}UmDou=d8cIQE%9z!t#=`+w_S$ABynUe2>M0WCEXde zYjDh9*Hu;Rr*oC!tSQIIJ_(89V~puM&iZD$9d$Y5Q^?GVzv0qm6`E(A5HN`NN+$<^ zzvODs8~%cft($gp>LDgCv8v*14r6*C81Hgv-gY{-<-JNq)2ypz5vY?DCgmk19|*78 zeAP}j17NsBi>;yx7)LW|Pk3b$4&C$Cmpn3$9o59k#~dt>pi-2edC{7y2>20>z}UjnbO%6 zVzSXNn6vQN@yoKkuMA!N{VR8y%81&kR@}C`S9`GU^8JJD**w47ZOgW$9lAN&{QvJ% zP(hq?f7jc-iDf&tyf2qK5ufPKA}rS#fByTt`MTfx!Vlj2`i=966exZ_C9)k66+0p$ zmw0^H0Vk1ABa_E|{DMcOik%I(bDZIvLctFA291Q|1a)R{6Yh?g28NC8k_%oN8VGy} zIBd>fxRBw1v7i#8k|alAYafRPn`4O1Aqm#*t20h_a51(dq)ph6+R7H1Add32IA@K4a74;TGg- zXPUub+0@I6tL;<15F#MLG~IP}Icv{Bre#7p zw>DgOpgM((#cM;u#siB2lAN3l3KpJX=HU@N>MZne>5GJ!ja*s=8xpiY@%!82p11(R z**B2*ZD3$X*~6l6l#ypG@PM+lrY0=P4oVGPT^chII2JgUPTA)0KuyKP=uFch#?ECi z4kra%CWMGzmeZOIobE7Uo4NY#))eI<4;ym~gt#uvC{i&#`ocwqMNlJ&i%CgZFEmt( zg}IMaT-GAW`kDia4@WDLK%vCqNLda!EH` z?G=U{hZR^qXZNkvTz4i}tp01**Zfl#HDs-v4Nb!{CyLoE4=k0v|Nr&;|NEA#K6i6+ z;9va^%}M$@k5#*qoqroL6xb4*juomoIH)u*{kJw>WB7EDb1|c%|L63e&xf~63{cTw zsh`mmGV{-5N%KQ9c(^7oI5?dDf7UReXTMa-#LcF`&5Vtk-f=N+`~Uw~A zg_tL+3wx*w8$77m}nfSY`COO zlH-h`29Fk#k0l3>6z>@Y(M;(c0e2YpgLM7>%+Js)dzM+G)8H`6;fooE znOIITPC3xf$>eaM=BQ$b49AQj0|`CL8BMDE441BZNiBZ1X<6;c$9J|Ii1G;rn*eOB zA1DZt^$uoaEDfdS=g@;C46HNQv?R`nF*Q79XcSp+=D>j~hZAgMm=G*HAoLbG0*26g2)$_np%>{*Py&SBJBSi`l_p(Ox-=E(O#$gm>4=pk zO%bpoLT-3{zwdv)d%ttWIpf|l#=ZA{_n_>u)-2DO^I3DPY|zEXkO0I(9&K);X-YhS z5WkTKqzqt=L7V@1EviIA~tdl1$2L=VPx(U;pwF03_pL4N;OP5%-hc!7leg{ zd3*T;Du=1TvCh7ZIA!Ab>1`=E?2jfvo@#LP=>r&18BD`B00&c$l$LNpAP_JGB}qqw zi=rb=NgPJBTv|#RDTPp!kXBNbmR3e0VSgU*b5tPY z(9lrHP#Hp23v>!__X~3O^?{wr z#5(#02dTl~#OJVoxZ>?+X!uX@K7o>dI40@j>n#2x9Yp5kMS{|J;JVY9ltr{6{W& z|8@}*?t}GqcQV8|yAucVFYq`!{Zo%$aDdkzz&krh;kog@@p9I?chA|A3zf9ZN5z?~S> zSg*f|IJLr=XoaGzi<69_yo&@9;o>BrBrhv3;i!momQWg;@|T z0O$LcCd5Gt2r_r~#+f-`y@(=YPNDs`&;PK(%st{%4+8Pq4reE27vBJHEHNnzjb;AG zKA7t7!PIdN4Dt;KKTXI#Q_>9Q|NH89hI+aG@dyU{Bde6LPN%u51`ouB;GF+3fY|T% zBlo|A77mMbbdixkN+57pSqVouEP^;bSZN7GMR~V_kV{m)18pQ-|V zU4lZf0XVcPF%JL1XvS{7LB4@*zJ4&Ij3g2!Oq7L0NJ}dcQ^MUi>5jAQhF7(tioL|Br$250a6Wb#!u(mUEF%a#m83kaLkG=C~t*NEb>j zE?6QmSJ!QcYiiOiuD;OqSduLK4WXHMn6QpbNiYkv22{>yaaD6J@sb(EEpkd>7~N;o^Z z5T_3Xgo}itlH8xPBk%G%<9_!&WrqJ~K9WT!xhTjuBP8VHuuc*PXIWVZtUS(Hf~Z4Y z5vL@B#Nlv%x_{~$k;nf@(oVk4xId@p)B8b0-q!k)f00T`3YY+2zf&$hZT8!m-~CV9 zSz^6{iPViis1U!T-1 z;8gbCO8#32{|(pQaQ(Ls_-{4-JG%ac>%WD-f2;A|(e?irTvY#Sy9?(-Ty}*LH?xR) zV}BoiBk(r@eN*@LE6OVzQ6Hp>y0{}pH_AtT(KthNjEYs}+i2eP8 zWuj{o{m%%YCjfS3Wv!QZ$(Wd!m_ht?lpb}|001QP^z=N$+d!HskcUMANw-2n8R8ce z0TOD#+kI5gB=KBAS3uvF3(nEUe*VQp3Ic|Iz}U(A_9M?mCeVKYX#glPhB*d+^mRTh zyLFOre3G6{p4OD4mJrK8t^#f!h8Wu)BwKz3^|NZYwJuLLLCP|>dolW6@AX!<@cZJE zm){>8--C#AMcG}9nhhMRr@t3v)k*k%kV|-;P|E0oMprTTzW|Hof(MKz(a|wr^#)Si zFK)aG9d9@-IMz9J+4~b%*D*7UZ*wbeDi7MHe<%*Qpao0_O(FE zhi@fLY(6X7g%SuqaD=x9GfN5b#m#L@+9?qny1>RDO%K|yWF*P$pH#uG`33nS7Y&`>~MWCZAJdbVh~1c+Ll2=IaN@)?MnhL;Covk>~O2HcxqIgw6aJ2Nz; z3=s9~LjnrN7tQ!4RGWpcoCh%IneA~(#XK-=3znOGbal-7=*3$^ycQef)uLxGMIIS` zWNP}D<;`>PMq@gRIhnDC9+*b}n&eB-gChb#>}f@sfWI4!jLq3!Zq=oILwu2X@^FWG zeyRe=c+)B__AZ~mC;e*-Pg413-A*u?H&5}WOIY1S7?OzF!;C9!da(i(dUpMa6OYLI z%wScMaVfTR)A^$7Eg8aP($bpbnG6GsnbM@mo70a*n;W0AGMEaTo4*kB?Dl+6(fG5a zxiqaTR6(a_)Q=d&(AF2t?{{4zQ*Nq4@%LjP~AOiz{E)Kagow{RuEQ4yB4#XAM`_QIqEH$}+mx&7Wr zp&uxm$Uh=4x_DL{P*pi|`H@)B`D3deQe(_nOo;%BhINRmtc1~U*$gLQ^=zTSM};n5 zg-%_y{6?@f?^^p}9;p@h2JfJzFsT`KIO_@>ql~8d!d`Fsv6MKnk8UukWS$uzcX%8{ zI5CEmyxGA*7%2dtMSG|5dN@VOmg&G_*HJ6`F3Ih{_KzY?QuMvny~Uc4Q~Vhd!NsDJ zVl)~9&J;>79L8Ex9J-J+-Q#Fip1Z=|sEk7?d#fkz^Dr-|inC-_7%xUL-6chYz8Y^N z2p(FR2wtbk5m&K?ljkJr7R1jk1zJWiwAD;ksHCniU4Hr!Q)bLc%M@_2 zwzfM3vWeVUyUvl`<=+wcQKg6VNnBC%0`fk$iOa8RsYl0E#jo;*YUNd2zfCR@2%iZn zD3awcS~5P8Wj2IxD%rFzp%jc#i`A}{_AhNoRUTqwd1qjL&-jr>%69rEBay^d;eoST zy54?45;YjLfB+#z%{a*mVQi|>5=;VBIcIO=AGx0VkSw9mHCggDN9S%5mh?`nn+q9r zh|>~u-17q?lk=JqTX2@j&doewvlD~4O@N!ZZ^V!mL&xHcy zdo;v!9!YDZOHDkt9U-goKlW-}3gRVccI1yb>F zAn2@iAW4DwZS{bqsp5_ewP%Yw+RSVLb2HYpUwm$*Ye{H16#x#G_SC5W5Wr2wXg5h) zAtS;xS1i&wmMzKcC7WhE4R4y z98TUU=HPwc8D|v=2r%56DU)^F>zfnvTsi z3)uQ)C4Rig6--Azx?X1S!Y<+N33{PY}EtrhRiJafR-E8yO-WBTzBZ*`A8ih)>Wg&nkts3Mt>MQ*Wk5n|7ZYy@ZZV zdG&NLvFSNi(Ve+X?ur|sWY%*tcmN=+Mp4|b=H_Cf>DKQgvrZ3^R!*A)t>wvVxmT!t znWRl=F*9d&D0N{%s>b>dNNSDw5n z%kx>v#adv-saAt`ZAhtm<9=^0S)G;eUCb^*YO$V;Lpj@MJW##UWyI7 zL>BqZbR_(tfKkOcXn$m<9(g9Jk0eo70G88p+l!jlJ?MjR~X%^uzv7YKB zt$&T;Y5kTn?Qhh~`stM#&O^dwkKuFXcQSscKfTe6)MLXN?eJ{i3#+>R%Xz^s#`j)z zb#=NmBMffKa&fBG*FTmSEK>I%>_+_npt?rJ?W@%^>`+nJNtuADEsA_jrpaRSQjuw^ z{r!fJ>(=Y$a#9c6R+m#AtE)_=aA*$p1v;`dJYS<=b76D5{a~Sx*WU$9Ic1zkSkK_| z3p#r24}f?bNaV;9O%9|BM8#Ah^CCNj>|_ia{elD?sbfbguq2vI5n?|X6wV*XRK=Nq zd0nXZZzy6u$!>l>aOCz8W2`k*U<3fPq_Ln*`LDT=m%Z)Ooz2JF0EO~RXyj$d?Z7y6j!9toSMLgB*R(y~dB>FKad z$7gQMrl@e=qB6UC%%Xtke;!Z??WP=kf0BNob>SuI37Ce)g#DwAdJmC9G8LOyHH6(q zYxTNph%s!NJb1}nud_0GJNIRQvhfWGW%jCpq_1P< zMy|xD(L0|1RHw?;zDkj6O$kl_w9cRGk7-Fwt)JpA45){~=GJI9C$#%^9wGSrlIw3; zr12X*a=bou1AqBtLbN96A@0Qjw{4^442%WRmt!y!TSNXeyylS6V<{)M zL(Ln0%Q@}?ZE-06on7w0nfFo=*LKW}&R$#iIHR9G@uniky6Rb!u~EyGVzf)Vok4cb zNzx+pP8~pc_dJPG2|A6mNzcrQH=qwOG9V~d-dgaXxU*7&)hh7nhceBbx`@$+Nq1r2p%$c5EQUg{7h?6IwUr|T=IMHTN3?%ZAhqV)(G{WK zT>ILQpHzC&v~7A>grAkQUo*)-F*L=ap=XZ-NZh)pi!vifr$3g)#(O``R?zfjHYPD0 z%m|hpnL?I6J)^wj+_rJ)rpd3lC9anX8Rc&ti%`_n%4tRs1T3g@k^pKE5}r1G4i#xL zMv|C*m(-9Z8$3L?*jVxDHP%Z4w1uRfFPe5=WXYp<)wV|UBGsvTyITsK5M9<_@HYq_h@(Bb_aNTbH>IP@7$pi_0gjx(I~hx95pJw|w9JI{wM>ou3pih8P8qGk~tY zQI;&sq1F-wCB;B!zy)@w?o?pi6oGeUW+f*hMIlb{_XEi8>*z@a!hn{ML(``Y0CjWC zxsE&l6w2lrE4vT$=`v#WH523+a+5Ff=;8;#^>=WS4E5%Mm7J*8bMwy-+1zRTg%M@7 zwa0BO;tLu2?vDEf9HYfmG0Q179ZMFjjQ2*~>hMsc^)bvjHkV!dI{Krz_M&jf&0B4h z^ET(IgjK*7Z{1U~9NdYpc~v|1?q=CLTd`2d?>C?I5D34T9uPfy>#H)YZE;C&8bEnOt2$8Bzr-OZ%J>Xbl!NK7ZCw3ORhV)8@r!z^ zi{A;KoCbzyGqNNr=((@Rs0ajHc`&iMS%5>W#EVn{*>;X~LcWjkmgeR9V5()uhFr7Ku6&k7fC;I1`1UF)uU+w*mEtu0-T+cvileR1$Gqg|!dv!f!JW0Sch(F7!12mm&EG(c?k`uPk2(aq46{LWMS zsqkP2MiXC$UcjhAIefDOlw$l@Q@cSs+Ubsa#b?UL@<(Rp<^%Do1H;txO`QpEU&KK; zpy>#4`n2{i!7xtQFgqk0BKAxn|Bz{IKJx-UJ0tmJ0%7-TOQyLN;H7k(WM2+)NY5|W zg)aNK$CTu$oCZXr*y#Bi-6!sG`ErlHw&i~|AAIpR>N}>rC7WEpe4iaAptH(>5S+5csyrSOTdtUt|;AYm1k4^l2MkoPDu>^rINE)w4_X%7};>rk36;BYg z%V+xZt;>LEBsJ+i%wLjgUBApB&aIt)>!?Bq%@DLF{G<3g2&p$p=t@}i^J5?-A)`$!(}}S_OYk}e=~ZL= z*MxT5mEDcy!=O~q6lN;6^UPTTKkXr2mMQv=E*N`A7FHMCINsL`&~OpP+`e%)NcrUQ z_k#>xje*C#d>{aiKTF+17^5Ho1*{wd1c3m426+;l7;ceO>sMRb7F_fx!@Lgk3Xvpn zR8DsHuJjXlEW&)hcW{+kE#yfknrq%x0078NV<(EM#co zOf$kK9U*1OcsU9%70A)ckbGH?LgcAePr+w@hW_j(xOu&`*no_K#OW-M1vV z_YJY4uAU-@Bd#bF!EwqusbJBqaYg&Op-U?xal%g=Ne6x)lYR)n`AvkKsFS7`^v>BWB|fv^Y{nalnYEesL052wwVEI$NSVj zT9ZF17Cg`5V$6MzKKl{l{?oF5QNIwpW?cknrcvl?-l@eX`(`?n? zyH=uY0n#F_aP|kYgz0bRiRP|Mmsq!m=8^&c%HIiN^YZaaxdha&uKhW~sZgxMDgMOu z@2qQ{v=fyZqUeyk$Qcac5QG zc)rY2%{!54<=~O8xY2+&+>%#DFA+BNm=WO}P*e(@XQ{xMv^m?aR&#w!Tp{Wk~QpkSEuQr<- z6Yd&-D-(z9b`k2?XN{+m=I=#AT@fjRZ~qyB3B@ z8%fA^gk+FxruC5k#v27CBO@CvNxM9b@n;+oyrD0vqSQC-mejmeHzdS!?Npm)hwPe_dDikNiB;h80#!BiGe||jJMaB3C!i+M|PC2jo#EWuQ zQ==ZCpDe^CES*59NH`J4Kxi}LC;$#cmu8m%%3RaQ47BaYwA8Hpu&6bem z-g770W=f6qru#W2WzJ7*aE>MYkr_hJ-uU`1VcgjCvpNY;E$a^57>HP4gRcde3d?@i zy{SO9NbQ(eJ=Rs--Jk}Y5#7+K&OaEx_w5?){Y|F)+~ON{0Vo|_O>($ zA>5lsw2?17eZF=(St9w|l$)_0rP5-}jW%6M8XzR9VGn8nvUcDF07~E-h_TVKgVM!Y z_bhZ8yTINKd%}xVN(!$p1s50^&I>j#7GJn-b}xr%i=e4oI}seX@g=03Xc^&E1#P@1 zr3_&eC4#aEVutgAWVx3mlt+!J@k=}p_3hc%5=G8SQs&nz%4;5Kf#DOU_$vWmXSJy# z5vYTHdC>*#4LV9yf~IzX(X^1T`g_5K@SELR5#_Q(X zheT7UW3G9N>Od7SDN{LO(h~>_>T><)YI%LaJG5pVvK0!;&ep>g8lepEDs+xRX|$jt zEk4~#V?FI@jGLgytaz0(ty<|{yGp`_jlSwVt!XWg~(t_KG_M4A3+ zS&}sXSkDO0+eZg}<49qHP|l}4ltvw(E#0*EJXw9M2l7T{y9LXyP}fb+-|Et7v;QW4 zJp^9Ws;zQyY|bq5+1JZ!dQb`I0yp8r+5jb7paW2OsQiGqm-;DYRjpp7J*PitwyE!< z8xOFiIL@~<98tVC>0}EqS+xqxUSiz5NAY2zrYI=*<#_3xcgN?4;-+Hbv-6_}@b|D3 zg1eWu(iyK){x<=@KB(#GZP9gu%_23`K^Mxnai=PFpALEY&F#4BZot=7b_mb#)UOl+ zk}zwF0O?h*vn~vB;o}{K6xQk9X)MILv@QF&js?wiPG8p!Oov%zWY4?X%ab|k5TNkR zF`W+lmKUD*fidZQy5x{M+GSaNNlJ#^dFK?g7w8j<{id$2X$f9sxl5`1nL+XOFi&dW zW#Y#9?F)UhLbtL0B7$Xkq&z}A%Rke@qeD_F&l27{T1bolEMY9Bl*Y?3qN&1O_XGF) zC3UQvExyNW>}m=-L2L5^qlX!!*lhAl$3^4O&p(+)ecaefNP2H@Q;D#9rz?in?=`|! zK04rp$6mG}0qMWCE_z@d@PQcjOV;@36TGX!1)CQzdqGlG zmyKOVA%p762-R8TYnj3rio3!P^gH?Lhigx2fg}@RW`hV9jlwT7#f^87R+B={;VFLd z%@w1R?3^90?s02S=PIGKMiE@2OElCK9q{t9vd~>X%!D&5}pHtjwl=%4ro}qlOIfTUD_FNJa&!z4`CdVty zAd8QqEEQwJI4*AqvO-0x1}P~a46?Y^9^u#D^8JQ^+dT9T!B#+AH9wdxTm*Jw6BiF7 zjVS?9rGEf{1Z@RyQ?JdF8$kTJzSK`vB~e_IYaAF}PTFdkGxobb(M5Sr8*R2NH+l(= zPO2`B-o1C_jqsZFW$hDqKr3=~t zq#c9Yso_x{Ol_}plhRLaALH*ocDt}k=>Pz_4d6PQ|N4y9ywhC+)|4LoS8;8)oc#DL z+<5z_Q|zp0f(Xab%s8@6__M-plT3~#;icJ!Z@GlpkvKEu2LtaHKmW=sSXgF0U6CJU>cZA0jS*JBq_HX*&*tKlOlHU3`>@5eMZvrPFokEsNWVcj)FHetoe=DGOqVvEc$2EET>j>#YPM|ZG{J>&JYgLKuHx1tePlL4 z+0U+j`J&!EW2gj)%&KEwxFe&QbXaFcd^+Z#$_jdwZ%Q>L6#&KgKQA)>VV2lRSl|Ik z=QYp0&A+yI8vi+fslD2a8Ku~O9?tz8HaznryINYUn0QiiXN#>*b zFNTrV*DpS$W=e1D+UvH_E@3&MAAWZg%vqKskoa=e*%=zM>qwYvgNxXG;QDZXIhJZp zlEv)Jr%jO=86qP$Y~WX5z-hve4rZdj$lB}~e#g8zp*Xiq{qtJs{C-Wef$fj)(*?b( zXlyQmTEfxND8q`cU}uWzhxhrN{5xN_qCi~Hf$wNv&C)c4eq#~GQ(>w^g%zFv__V6s zXnU0m=J@Scc4qPh_JTUfGH>ld_n;NGF^q%EJo`+%L*;vdci+R?sWMf&mt}{FGQ^qs zJbt(l4LdQnz!rTNx4E5YtA71;pyiDh+mD~-p7}~o0fA8o*9DpKcr_bEFsk$W(WuL> zYF5()`kCALK%fdczFD!&#Xlg+!}2$IB1ax9e~vjR;RG#$h;Q0}K9*ppJH}i*S$VX+ zE06&EiJ9t`M+4s%mua54^HL_0G=;Xl;S~S-fTNwzoEZtTtYLZhF?L%rIcW5P0l&et zRNmd_Sh|rPRi8X~EkfC@sr7fg#(n!dr>Id#mK1!4;@lu({8YnPKPwo3PZobc>w9+4 z@@g``uo)z3Gv;!aaTPRLa6+F{x%L&b#Q!TmOHT>TyS>Vu-91>;{gZ?#-3sP6XNd{! z^Vv`@x$`{i`v@1E5)&y{PjA`5J7~e(qYoN&l^O)PLukQI8&rovh~wRs;SO3WAw$Xl8PWrxxjOZ4Qn~fNU@l+C!e@3 z6SQLxIc&$?-eqOFy+a}#aI4%LvIX_q^~qb8bzgMdaa}=hf#lIg9w&%aF zCc<2z=UljjjrE{J#T(YM8%@h{x;{*x^aEY7d3A+pR#ZAi$I{@FIYv+mGXCz-;8V0^ z_)TZkT{bHzDvqP~+?OI__<7=S@5p@th*Vl&F-LXljbm0yy!}pCQoEr}5Li}5uT$}SLfcV?jByM~WV7N|rYf5!|nQ$CT0f!Q+c>ts` z(OZP2TV-DK$geE_DjEPiV3?=wLJrrfknX>xSg$vdY31*HS*&UlZW|X;d~Q@rQM-mG z;qrvDhxk~{>*syVVEH#vbsL`5F%o_x1vt&P2-PS;znk?t{=UlkFH3Gj9hEVjntka4 zU$m+aTrk7)Pc4CmXo zq1yMhxT9lFiv9>Uo(?`_gGX#TrLZudUDM1vU?#F@?TbCdIqW8|e)Ar4``0s;DprIk z;zC6~z;75&&Zxotb)H5(DE`W2mjk{x$y*6ReF1qo;INMmDI+qEX9nNege}yPvkm}s zl-vR|C6sXM%LuZF>_&@oktplKI($lm2JyYTmS*xnO{kbeA>o`oV1mvnegq zz;&VM7aWPwkM9Y6h$XvjS1dX~f=({kREUFZ>m&GdUzB9+K6zL!_fWARP>1>49CZ!2 ze!YUaQd5QcKF@t$=R_F-mqh`w+|oT=Abz=Iac7e>u*sAjMd zjgDj!eD#eU_>4AkEcMVFJ$FvWG@7-IqOJC}MczZ1ru{gWWJwXfZ;$WSpSOB;wIJ<1 zt~R7B?uG7oMQhYDd=rd^_2yrj>W+lmuhG6GoRk=LGXVV1;#D;^OW}q|5wi<$yCf|Z zR=24y?myFqUJKX7^He5Ew!Ka|Z&cE2$wSjbKdEnKlqE1CF-@K3^}^!;E(i#m2q%*c zS01YgZ1THrMpx8ze6vfmDyE2;3ulmPjOs1XF+MFj zJ-&n!Ge^3i8^mhD$QXG>q;Vzpk%l_yC84V^k9UMygkD5aJ-BsYC`3W&8}gA0<{9`S zE2?4fPJh5`g|Ij$}q3hW#(dOCPU%qiT0zj+~h@G{})R0UUj$&n`QC!q^yO~ca zT`}#XqQ73R#}dTil&bVxtl}Q~P_d1q)2&;5kL4WQIu+fwRlRhY?qxBh#$n|-sIr@< zW9vH~e&7>)V{Z78@T=YbNfJl_mFt9O%1|WEj?Nj*{XMj7;m3yTUouh*GYtg-S{~XM zCo!czZ9d{jow#qz%$y#l`9a+{F5Ld+bOXBktITCRi|Q^c*WF8+HXchNPmK;-2c2{N7)cw#uXz*@|}5m6B@P`1H$oS-9up23SVS zg7ZC_vf4I1?;{K}{@|Y&aJP!-dk71^J%1;+YJV@4-x8633>hPtH)|5;Mi`<9BZVm_no?YpiXeN^N>vY9Ij&fVd?>auwyb3u-i82&t7ZZU-9_zukQu$vU> z8FAM`o8_J?z`$Gr>>pIJ%T=~tb7=W6=-vMQDW{MBx12e9Wy_7v19!gLM}JDW^)e4K zWUIg$>*KS{q487d#4~nNc)W2sTh_cL|Hnl9+$sL^cyOWWj2Vr{7u(GgT5OCLRZhN! z0squ=5eMaFwMqU`#OjDjX ztuD}0#eLq^QDmi?eWP&rv8gR|heOP^h_$I1DwCD+!*M@JU#!%CAqlaX$i)DT_x(lI z;7Ar_8V}E%jxhHnWSh_cKo|fiGOsB@3V6;uzQy9>|K_69dh2C6h26fN7qXX&sLq~; zMrUT;a(v1E^XJ0W$Gc^=YHTDEdHGB1(Vt|D=X7h6E!eEs$npz1+pfMymYlP1xLv<6k?!({>5XY) zxl&GW;jQU+Cq0DorZFB*cEIETavQ?IA}DO+ilhRD;D?M`wJXT5hJcv#Lv7ZDR>nIfJz|#;epWTxKsRR z;=qfl(<&4e80!(`N7xwKL)I} zw<3Hw0KI~}BS9g5St`W)wIrDpZX7@ptBNn3)nl$;j+1F&9t#q9%QB+3btlsgr8adt zEcQUeY3*V6JX}Z^V286X_L67pBa((f^o7<(P$GE$Vu`X}Jv>{)5Ydi1j8S{ce!gk9z|eU zz8Uj?Ko9{F#|!|l_#MY5cN_4c4-#3>SzTfed32(eU)^eXkv_WhedvSM5?}qm>sHp; zGb7HL4Rh-0e6ek#<8rZniAo;>Tz@RMpOk*&vm48=smS7Z)blL_;Xu`9wbSt}iqH%I zdNDNuUawg=cV=_T*Ys>o@qZ3+)aQFf4dI4eB=6`~6R4v2<*NLld$3RM_NLoss;Mm| zW8E*cxgrC|<=%7*X@#X#>9#5io(+kQWvO8)EjXJ`V+I$w=5>5uwzBf;@R++fW>j^Xm~VL3J? zi3$r+GGsT8wmiGZoj|!|H=>@IO`%o62v-+TeDy?85p&;}Glk~z2T#UP=!3AP6!OoF z59v(L=W~94AAAhd5C~}bp|p4@;=+=U)KA(=LEPX90x)-35KpR&tgdRl^PYc}EubMG zRSq#}JScw&vJt&}9vZ{;j)lgl_5R0f-}bmhQc*=e_KO8=?~e>dCSR8_7FJ#QC`Wj^ z1V<|xd>*DDeM*sdBHmIETZemsBFVbM4naHw-h{IEN3uF8LOmFFXu;+reZqRI>$-0S z{N%*edLH?`SMyq#_O_7Whg{Y6406ahvFRnnh3)*WImyvgJLR=2IvIF9+Aah}kI`tU_DO zSJ{U3MV!p0^|HBje=?aRd3-MhKzluYg3oO2Ocic|xdmX#r-BT}{O!6X%U_9c=fuuB z902goPs&|}=Zlg!gyglv=2^5}dY5aHQn#glKNdU-@VeymqL|D_dw(SogZq75y?6|o z)NBRiQFp!4Kazt!-*uH8xAo9$T#$wXZ!pZutWPd7W5^`eq8HlJ=w8)wY^BLsJCPz% zf7lQG>9X}vpJf(o3;M%jK8>MLTX~P@A?ELX^B5sWou!NBoA$<={p9fzpj&(2HGtc{~ zV0w1v6dA(L@wc|Fra&uL5Kjb%xQ{qdIuThvl4OX$iS(CZ;DXi$fDE%TX+i-gE0{8s zCem$mBpOdfQ6_ha|672>S8;ZF%do;rK;*NNh#Pg>EY|!RUixyqr$@mQ$!9AYnP*Ix zA_Sa)N!ZU8S?XULm-kT+K@r#b@f~jwuKvp)2o5eQak;sQiZvq`uIEaQMaM5n%RA+D}yr$6fJUAk1>grJxmy%*4Gch?;OaD z#xEQKOlc@(I$qJ3*d)`bJ~ShHl3ECiJ0(B;9E1FK88ROPLVaFt@OC;Sbk>%sH}+kR zMIbo|E434_%u}xmE zU_KxlI~gf6sr@;*+#yrzepCE=)bV+hulRT({+J;Ef>1RW@^t_PgpzY7y#T7D)N^VH z0HtN&*7$8a2rqw+rquHx#ggrSSwd0kW!8@ynzl{fUh^9>#IM6fen4tv#C3Hy%Ms_i z`b_7~`q~AV$JY$Fn|pLV{6u)OFhA3BZmq(QAb3`u(5$0k_2YasirRrf%c6w5pTRoO z&y7AnTzr~_WGavw9>&GHMM7E%q%)Ej(?F91Sp{B+f_kY+6gdm5!~EmqEVuhLUQR5^ z*nhdz*j?H7>ur?W+s_QuK^Mt~j-LR_#L$DpvV~k4pQsowqhmR;hHu-dQt%pt3r(0! zv5t@`=4F*4RdZ^X?Myi?z}rV;Ah*Ah4Yj&2YDy(ex7FRp_pY(a605sQbaZ*UX$vcON8!#oL zvG%}YZDeB6#%nqXu(mCF*gfSU;fM?%=9(fGlbgQ#$gg`h=I&G5d8WUg$;kW~@0F=6 z6~CcJFQ_DiGEC~bc3b74>QTzP{8<0irN-UH=W;6~sbrX*ZxD434)%LL@=tJwzlw)S zjhx3mnz0am&S6gD-xdJR%3gR+$?0dC(9!Q6n?$WMjW$5I_xW?xR3>m3!JwqXxVl4L z!Z(Y?8662YO`98gtiq!QmJl>hO0abv?T1L%Eq)b7itlsH`$OM&Yy%yBfj@qO|udR@XFjT)hQwrnJYrzLa8AX%N25~XBydi z_!9H=RP#PC8XCY7;tmJMWnm&C)7HD0^kI3Op^#F6dv`)Njzw)k3pHOUkG=iY)b@1u zQB#*^mX2fK`JWfx8rVJ~jEV#U!0p}>%80&}d1NC0G;13znznp>{Pw26NM83nEYBH| z$r@_^C>9GC^?Hts*nKHUPq>MXci8xn7I%#dU0o=b;S%%H0do4=!XL5zyzGWO?{k~O z$Z`E1$frMIW?Zwdi_k-Kn{QXia%U^pvoFUR2FpoERAV@m9LY=!E zRy`Kq(k$>OTkQSA*532aM=R{OFpAb$0`qzgOp14e0tQq0w#PW0*CvEUX?cn;Fp@Ul zq;15_`Ur{zH93g91YP?Ed~pC4Tfnv;aswC4$@|3tRcRD3Xgeyp5zq_Q5U zLY2Td?WJSL+H+<_qgp14W4F!j6yaa&g0KQ4wj8_W}>&B92&x0E&coTlNuiiKN(+*og_FstOtzoH^ zoM$=Aec7I$Cmgs0t9(2%)-~S|4h^w58+CL$MV*lXK6x$kOhnOpBJbst+<2T8AbTrT zCzMUycFg+5`b1@Rz0BBp@#F2PfaRc@Yma!F9T+Ln`dJB&Y%OH2WT;$tU=?|aza}0W zfiPL4hpyUfiF&9xRU{+Y^d}H^N3V#9eT}88o#5aVc}RShU-kdePql)ef!3E>4`BLg4qJ&$Z>m?k~+pQ_s-7D znS16w(ayso>2H(jZb?D{PCjbrrse9;Xz`{`NPHH6G;ZF7y4qF;{4qAotnJ`LaEvA> zOwT?_vVfU*`6DYQ)E!*m*y_w&#tT^dm!*UDG+c zPdaguv^r>3hEm$gk7zaOTJg9>OsO29*c`8wxx1KISmPQDv+ML}gU?ONu0wmRHTAz+ zZp+gk!hwgyOLKDq=6Iz3HT#02bxgzJxZQ#*MVw+=#Gi%dVm#%BC?JQR!S!Knk$J8e zJH2Ou`1cC2$8X;!SamUfL*)8}AO0~&GoBHJu>dv51e=8erUt6aAokg#lWPJ+{|w4! zJjl@fL|3&q8u2Q49omcnEv>vE+M1c9wcNXv!P||+elc6OpAT#+hgJO7Y4VIy8g1$Y z07Sl%UtkYxLH;XH?BQ=IaI_3tv_WA-;^uVqhqej}Lj*j^v7DF?)*!vZC;V+dU=w~l z4{jCapfpA6teK>IQ!P5&O&jLcry#WhMvrtdByv z(&fzm%TLVPZ3X^yY-vAPLAoka#`V)1U_V_;iRdF*GZgvVvCuCFu9pYYSQ^-Mu{zNm zWw;Z5`4tj@%Mwi6oFBN~vW8#8euw8coDF@GvBI=iu9)%H&(A1xvv>_ORcSALKobKJ z`hlO&KBPy3MyQJlp=VZ|SQbJ3$~*ZNq;WHcT@anO^|KI?lDpWZ)^CS=5no}&T8A0g zPEJDFz^`>kvO+kLnmo|U!&2`D0BJ660(UggA$VzL43y-2#4^<%9V8^~^kM4z=Vok# zR7R7%?J&05kJs{UHENtTFMIU_+t&Sx9EF_;RM}zTG@N6P>?$9}=zZZ4X~?HT4o2_& zVsv=IKOhF|A*B148#15~XD(|O`3!4jTGlg9cTgm`=H_=kJNeGeoB^kk?oF$Nk- zNV0+t>2ci5%*B6dwN((5)i|9+|CM-Bw~y5`qW`_D-MSaU4hJaIn?Rw+Q`9P&fd+^g zxgQ3IL`_XUH;4D<)DnBoIb*s?LZvM?mb5h~f%~Y^Dg8;IUiONqH?fhgoz=MB_7{0S zoWtvvPI!0h-S{g712({yZ;xf$D!h^#%o&C1IC0-2t4}0M6LHEzV(alym9O>l=LQmL z)Y<=3hc_Nt*Z%$Zv;SPc2uSxwV)qygi%9gBPL@Lc!~n2zs6Yyhq%|AAA_A4Wf->Io zmfTKM;jX?B2iYy{{3o5BRf9!jDx}gf#P(eeg#rG2}|iNDx&Yy>zp&;0j#RoKU&b#q;8ZR@=u5_RMw&rAm%E5cXXAo zgM5H*WAFq$KgN-8;1+^SuNx3Ro{NMu!U0aoblBf}&5)(JdRT!KK+P?`^r zfodLpkn^xUwqOj@GE0)aC;^wqoQ9K|wlSoZBS_6Xl(dK_j~wJP%D|_?_Gd97%*NGT z&o&}~+>gi)3;pYHpP>3NnQI4>h)5qR4CMvS{x@NQ+X2q$#ZV}?tv@evA1s);T37Bl zM2U$8%8nQ{|F_U(o90VJfsJ~GAF*`IpE!#?RsG@d@`hQT`v9F*q6$rNp*_bB|l9I);KG0%(!E4zsi=f4oKlaZV~8%jbU= z{~bEJ(ArZ0z!VyR8YlfF2rQ2y=&n(h&d10`+O_{@iv9`zN)XtKSI=!%q*TkPj*5S{ z96QfS`>@Goh2U^RV8rP$Qxa?s+$Sz-Hg|pc?;5v0 zbNkYX@kj;j$tL+#4bQ%ZKl+rAG~X=#q(aS`HXsuN9{1x0`6Uy2d?c6?U@c6CLSGJD zNsiq3*p9BDwpwWBqHn6&-UNqvF1f}kV@R5Ry-UYaIeE3Z=da}94|w#X)*(%&{+)_J zy%0+=^6jt zk5l`4zIUh0*n{e!mr1S5ngkjvqYMDkF@hchspP`S>i=VnF$WViPVsFP(LdMa{6{_G zuP(uDt?LPa1?}wLEHbbjYV)pC5<3`e#A=*})#IcxEB*Ue&5EdYdHHM#>cq2h-IAPi{oFTw8& zfXsXIlQhyq6HuW+pB$;PK1MapK1Nth1Br}jT7kS{4Hwt&Z`RZ!`r>?wynXOzpr#6$EnKx5xE(~U%W-bSbud5#1dd`2Z^&TWdMw`2!QX(*#wRe^! zoxhS#CUybqJJ+=J%~#a7fni(1Mh+2A`0v3X`do&K2V8sFH6c?nFs($bTSYB??LoW7 zy1ko(QyZ#4>=!szDz?+r$KP0f{+m~YQib!(d~<)V)Fnrr@Z$YTG2-UYQssAJE)lCE zTu}ssgL;E-`r!b2&OoqktGm(!8a%;A*L8hlm(EtVy|$MDV{d(P?c*PhU-s$J%pD7_ z@#Z{yG*y3Z(jk^e!FnoVE>wCK*B>5x-dB-0)>u#Ntpbm}rby5hp*&EK76>i0OMn=~ z(#mMer&kqPxoFS|cfcp9y~lzvPj$Naikzh48BzSEYeZ!Jomp|R2~w~9f_YI@mD$rDg2Yt*V`vA zwL&jIw~HFUuD!KtpwuJgq&}{_K`=FCKYYN=$WACX(mxHfQGyY;Pr1zo|4it4@$Gb# z!^e3$?k9pKroS;_Aw{S|E=2~t@e}rq$`0B8zG8od)u7QZaTM+}`P%2f_1@ZFA z40+{86Q9@G2_v-Qjm6K5_{y{9T!_DX@hwT&t*?FS6nfWwb`mo*W85(+XbSMcsB;yG z)DPL)djD(aep~o+VjpWlx4HdOaz$fxA#gWK0e*`#=tx79CQRGFOtn#L8N-9Dc${QT z_T|HpZv4300$$@N3^Z1|V|HT=0lrif=Uj;xkHdx$ztTUYW};61hXIJN{QZ!t~9|||Iax|c(X-rTFM*QCXo!r)M+FXJIC-^Q<~;!{Vo3^ z*R*@+YOJ#V7`Lsdz9r|jc8+lCzm-ngO<-wm<;_F@Q}x2Ho}3r%;tV)hqtB71^b?Z; zBnJXL;eQ#c7%sigee|rVNJvOQJ+?XOycKB%CM7sQv$2TRo_jYrM@8XS!%{skN zJ_#N#*eCkfxSrcE^$Mg31%a`%sPyG1Kb}J*ar5IUe-hEC@!@0FArLsDRb1+v`f|N> z?7Vgs^-6h>qNBLDbH8U^9qnoY?=pIO6Wt_p$n2ds*FL#R=DjbG1%{(IU$6e-hIFtv>n}tuz(mBajdsb(^ zz?(`Ox$qDOB5nm8t!ag3dDz8DM;X<9)Y5qHU<{i_dwja^tKY}_|0X#uOy(_K);j(O zJq-u0%$Rb8;b+5WUXdPxG|X{NJHLw+myc$jqJ$&!dxBQ_l~qym>AtiU95xX<=u}W8 z##&Y)Yp4n0y&F;7CpOFl!`3JKw?Pi%(sRok$_fVi>W6Moo=I1l@>57hg>Y?be2Be9wZ^g5Fx2gUm-xLmawpCkSOk)SuxR> z2-+1U^c7;QSa7bMVXDoaiv`v7)N3yWxP%jc;PUb)I~TR3 z14eUE1WtBXKU&yd=BG#Ur*6qU;;90AvhKO+SnP%h!&XX_e>_sued56)aaEQHQ}vWB z;Iu#2a)YhScsx>Me?#A&n6Upircf`7yj!R5)~a={gC#F4f3+$1c=rB>vZ8o}!hc5& zLgn8nJKu#Pb10&udrG~thcX4+aaRxxO6WrBvq8fatAQm+#RjZF8knN6nnQgSpGj@j zn`A7_1g>;qM;(c0@{aDKC|YZquum~;-?5)Bu8(C)JeyQTdGi0mAk+>0c>`3h6(?7Y z4(akGJbXQaq)P2zj%@aZYjWM>sM!zy$OuH!K^ep-YA#F-jhEEPs_f+TNmJjeZP$v_ zT+y_ccc4VcnsbR$ACj-Ixj!=10SNpSDwr? zk}5`pWbjJR4TQxHB@A$j41o{}$c+C?%L8YQKqNeGq5h`bi+W#}%67v+u$NMF%%h_nHPnI2|og7bRX?aIX#*bwWVy9+Kf>m5a+Nc|NIZ+LS$g z>E!(_Q$CcKsK%!OAKCHluZ@vqRVRwTd27VSrrv#Qv7c4NrTg_>%Ol}XxfQuE0DS&X z`-Fcz2;8QN?EfJ#)U4LvmWh{=pdj`@id=B)I+F$>^g$m+PY90+Bc%!-I&iwLn5C8%Fc_=03`6o+uxi_x((kPD;uSyA`w*cRx|D z2Y@eDf*X)h3u)xKVASf>1jY|T)+Xp~Qid#a1V_A-go98@+nJ_7zkRLcz_OF7EQ&`B**}|(ne+nr@dcley<*8uj#`uaNHHBbF>J(ghW{sO zmDdS5X%aZIh74x#e4I#y(!2~@y~r#(h06DtEV_#%28K>`s-wrj&^c68aaVZxw4C>y zjU?<~I`Kx&>2O<~~rTbzNn#0RSrL26;RbDdj;>ilLhEHcq!8kW8bEhC0wUt1(;4G{K!b zB*EFUcCH~wX%f0yerkn;C?#jOjG*OHWwtSj|I;8nabE4NmfIJtV{h8#sQ$0?bve|t%=KioD8VE`uM-dso=TFql=boeF zIKx4)=e?I+)i)nA&T{AsA*rEITDr1|xH8J*zBLzQ5~QQkk50>2 zrpKqq$<2_RzlF%&6cAkdQPDZ1DrmJo@!gKY^ zN~3lEFolVS_f_!;A#f*mA~FHu9sn_OV4f#Ku=BB$81`s8$r>uTi#Re6Xqu8s%a0BY z8%Bs1I)e`+?`EPUIWUX(d}D~k6NXjQRXAJ!6wOUbeazPx6r1J;kse{ZDIZNENS)2k z5Dj+U&lZ~~S+8raI{8dTbURvQJVVxH+ax>Utsh6;dX&p%+3hfn6eqlOBG0{k?rg+} zpk(71X$KxtbqfCiM|6Zjz)yBHuHys{mTBO#0gyNd6Gmh;*)ZZb4G5{7H`Lc#D zhd%V5h1R>pBz7kPLy7HAGwR~ZzQ!0c_LSr=2NmjS(D{gRUFa!5pzyC%VHs2P3*FKo zx*!k)P8pB02I3ceN$vTA#cA&?w^9is0eBHgNZWRV#W2G9V%zebERBVpq((b{zxDMe zj399^_v&)m_xJiGEf=$FTU)NzPZl3Gc$ zC(;X@RX^+X3ipVp#&D?=-r0QTj;V^;Ltn|Day)HO|0wv{K2vEfkcx>Fl9nci1uEXc zf9Z2ZLYjYXRXDlGX6Q-#jFlyxJIS;7WxRJ56B|1zFEgtkwFm`!Htco!((AC=mko}q z@#et38Ats?v{c5+vaj=LPR1MjOu^T3GIuB(YL*3&7k<&%H22>!;@ zXN3QOhstq8?{~eg5`Y(_)6~nBgkpo=HLX4Sxt*!o0%JVm>RVi>mHw6~cA?WT34Q8* zCU^U3`^_VtLx?49SCyJsu>K?$Z$4?UX(yM~?zNVNCr_IQS)55Rnl7ykB@zn(x|)fk%nf0RM7{v%q|-9A-1zE@7p_%HYvD$SSfehI)e zs+V58TYzqVZ&qFT`f%|+m`&rQB}sxNZ&W`312~brBBs&#_!JI4GtnE*Eldh&Xo+&n z){8zUldaqLJE*6@;7u$XA1|OZ|6bOeZiZLw-&B4Mb&(KnfcN&FK7P6niW*W{EdYRZ z-T&l35dBgd_=K?jR*4J&ia>f{qEbc@i+{YGYsQtouXPp=Hd19zRqS-&GU1vdHtR0G z!he@>cWav}sK!;M!7!^HjYgP8M zi|O-D%YkXYbjb0~scIG~N*aP1@w=aDGb5^;52eSe7SSX{urNH!IzzEM?^&)DA34{p z%bhjF;lV4tl-+#ljqP z4Gs>FT5&srj67EjNtS`>B;=iHt0oyQ@{u01kKyw}u#~p{{tC)7Qi!79(lOQsXSd(B zJBzHR)%uL*@*A3#|7#_Jz(@oc2uV15asoaxJ`TzP#TTwovn((F`$)1iemvYX;pHtn z4`k4z`6NxGK_TG#xnEy4&{@+JYDC{sqD|Z=ml~m6+4XG^D`P|K9J>M=rE7|A)OLqD z!=1Bny)%zmWe4LGFO~QjoQ@mczSj8>=B%G*gGERmMP>y6Ym||@zU6Y-9b3bTw4G(_ z(dvB_7A9Hhd3BX~LdqkG=89)n3j|*$D}B&=7WiEl-^_X&iyRG3*u_wiI5~<}4x>wI zQ|k00(-K1#j3ZlQyB-)0YS?3&R=GpOKu9Hd{wq!|B)j1FqNQ)U7x?*6d=T1X-$9ni0dGoqO&6I>5Luu$F_R92%q$$`?)iPHJL?QpCa z_z$D-D6`|{`=kGqK}8 zj1Zw4Z=`wtdw7d+`Rvlva)Xc-gna2+@W-j+q)$zAzphLwpz&uCZepfm$hFCXzx$6; z;J*qx_v6uUI5AG<%!xc&uG@h(%ZI;2<4m( zi&W-GB$dbbfKDHXOU&AQHI<)aEsmn`kBQCTkU&1DI-C^;shw6!mM;zNBRGDj!%UxR_}P zu{mdjRSc_}NaH8b1{cgd_Xh4a$*X!b8c(yKC~6sK5R%ZSD1Xo;_w*u@C@thP-HTT- zVrOQ@>fvIhdr9zbdkfT|((1oEz-n~z4K`NEUnyIlSY=^bs_2OzcxE& z1x0v;Ez#oc_{np?q{>9p+NB41&-Bd;6|oQ?(2zTPs&CWs)2Gih)%}}XcbmVBt;bv= z7sAivHW%jtgHjBh1ILYN8)T)(Q#c6KJVgJ|7Po99f@)Oh(S>O56Udt$OJK=fI0HG! zthkEt{4-^vThVHx)+9Ok^Ju|!m697uHFgH2Tw{_Pp=`c4GLjKgcIs%l(2~DNSuB6U zMfxQCQV>0F2w3*N^8k0W=Z`%)1IU~k{R@VIS$nL{i2ZWigK|<^UFfnD6*&{u6aFV4 z@Pv@A0X7}fiiMiTF3K7kG-y?m^!!SaX2mknpbd-{X>LWh<<-XCK_cSBbxL>+if z0$xkD`k%XWD=$9E8T4~O*<5ruP zcC5}sl~QxFtVknzJXa^SPFO+#`6QQ|8U4HejSM*xEeXE(p2;hsjb;jp~&tY&NfG_F0r9|FqQ$;YpVjgtBX&@oCoRgEu9^I3PwU? zXDDxGVgGi68+eoW|I6aaakJYo!8benrZwD%=HGoN^Kn&AmOuJH{3qt@l$gzmC&75c zKv*QwoRDnF)xv@_RQSpNT)|QGrIGztWKH&}2pp&VXSnRw4h_=vS32aUNdD{b{T6ZB$`&S;o)CHWhjxHshn%&v3SrVG*TlzVW%6l{QF%y?mo_oe6ZKmcH(< zW`k@DmQdkvE6+#i!xjpoZ;k(?6B<9YE0>0XMyz!FDw+qwwImX)Is-5HD-JYkAI~->ZG0fXY@GW7>9t2+0Tj?4~fDA}eh~v`U8! z*;Jr3U9yyHYx_X_D@L->*)=&eQ&GcO9DfWu%|qSJROmPDyoXI|SZ^Ujx44>3Pc+Iilox!sdU@bLN+~X2 z^R#r@tvEl?M$nYWUl5pPD%b$uCKbZo+RpC#WdA#GMQdXd4?d|-%_@y}>ETKZtt+Je zZ@hwKa|z!hhis{#|BGS~RFR;yvlr}Y;Q0m9IM=CLFywLco&DBfUo@i^%Bq(kBf`DN zkx1Y@GcjQ&&7BhUT*8sPepA3vl>Y)@BW(E|EQikgeSnlJ*clQ@ji6WFa-tw({Khhc z;EPrePHfVsEBt)%!Efd~5_3U^EG;_!&2JP{<6SGGB{6&K zFc?#2boo(Yg=u_J=rei3xUWTq85jQyHWGP<#7o`2TE*pC3`W13ipA^CiVgn0sRaw& z$Q7+}%g%UoXAPVr-~?15E}aWFn)KjI5PtF+F`wHZ#>}%|3eTej^US6 z3{ova6>3x4(H0H<3agsRhIC1KF8^yBHuz;4kg0+qPy0!a_XCk(w@Ih5z-r40)I5GG za#H^^mh9|EU#9lNCHn@B5Ts)c!4DtTQfERE51b(IQS5Yrh~5Ct&UGLwY%%szcCgCM z4-KPfmc_Ww)aC93@d7;5K2^l0oWi3o*?75qPJ}WVOMdPgnP5iXFm}xC9@{e-#a1tl zQl0G9{UVV?4pBPfnHraE0zlc&0cze$T6QyBR#zeRPt`gC9imNLZ1!Q0mT!s_7nYlZ zW$HaqY~${Hyu8-MZj*_X4Nlx8-{m#8f{4mOW8`U~@`=qOf-WbD2Z0-mafvk5TOZT1 z%0vJt#z9guU~GLjImsW5j7h#DGBiC5)16i~PqXu=N`)_)dnGtBb3WWn4TDZ zxn~l$!{h&)X1xTv(S}~$yK&lZr`!$B|CB2oeGa9@^F3mpZP_gLi1`$XLm@! z%btGkynzMgZa52V`y@RpVWx7tNat~)fvQc;-muX`844!_M73$Br76EGUF1z}#dy&v zTb!Kxc9GSbqt`WOf-?t|xr^px_j_lGhN+X-vlExUAsG0~AVU!KuUi?p86)wGv#t*e ztc7Y@qCqUTZ$ zc1NQb*5(u`(StBSJK%%9R4Pgh=JLIw!dbmFZL#jR16&cr1|oX_>l`VbX+j@Lmkk>~ zz2Zm}RIY#Pct@(NHW9-q{lzO`-oL(CT&zKxZPl#d1QFhV>SQ`VnBjGAWHN{ zn@*KN`6{T*C>KWj4=x(M-JUVrp7>a(%fXZX-;D+@N-rYkAE8EU2rb*88XU@VHBWwh zb#Wqg?P!D=+lePJX5`9$la-`u_SNbDhf# zd+D_f8bW2<>E(~`C#nx6L*sqXcAt2eefoz zy`kH9sia%#6>tx?{R0}{5^|lu-6%%Dn?z|)C`@7Jb&*kwtST*9#7&c|od2``l${xA zolI;pVGB0w11DHDj$?(KXVXf$b{^Yg4nZ1mI+k5THacZm{isQGVO^y?jk#T zu_}Ml9uY}7(aFj_EWcG2`e~fSBFkL0U7=NCuG|^z(XQ}N?u>zE3gohwSIj~vucuu) zOu%giQO?!kg|6f9$0SKG;khc%4uG{XL$_cqI9o&!U)k@Hh#Nv!xS^zi=jjjvfsvFB zF|h855VN^igO{UVbzlW{%EbC<&fTtk&9`R2Pv`q;bBt`tp5(bOYtV@O`NOkL8r67u z{AjrXW}a|l@M{Pq2=dBFlF+hUV4g1&R>ydXw)vkZX;G;1L&#1$u*;M zj12@lTl_X{|{9aBU1{FxzwQ~qeNqwQEGP#_T;_Q<0 zii#Y%Tb21DOhx%c2LFr@be#2l8dHkb^KuDGt2W5z+LID7Mu`R31K%^8)Oi57k$OqoLRQu?=0oTLIsbS-c>DI=tHE3&@v zwOL9DX`xH@V8&JCw9Tvi{SxzPv)9~s*d0afBml`FanI2D#>aB`PO$-xGp~w%0MQUM zQY`UH+a4_7-ilyDeXCbt=Q&>o6@}sZ2Rf7&xM|jv`o9dC4(jmad)#x&M^rMjA?=xh zoByfyhS0{_y9c@s!1bGd>l>VgH&X=dtz-0kO=`_;+x!pj+(gq+36jn$CtRf*GeNC9 zXuRW>DK=)eGUF(~wVJ+$hY;W-e$qd59EX#VK1b^R6f3Erb9x~2ADjeiGu6E3dR$rT z5pe}n0&)tCLhijC3GP*rbZAA~E2>-{oCUuFj~I2>@y{P$M&j7<$wGjKOk@!hj1R)U ze>=Lagy3e;?P0@C^qtaJhGkhLn&?(&uj*ntIWoQk&IvE=EmT6D3UyFy{p;lu)5(}sn;r*~&OZoZ+LP1ljz+0%8oh1@ zQyJlLsdzhE<>xGOx4k&)P&?}M)5RIF=m%6Vj_k1RfVVBKT|WoZkqyS6qhzTt23AVgjb%np?CM^LhNuj(-7ACeH-Fl zVtFv8j_T)E$ryriNDEh&i_7@cAubS=5I;y16M%y)u9ieB&Re_PRDhg#2o?H-{{S59CG+KYmy}zR z8OK~EwmiXq(FCc#LB*MNbaq9El2dJS6AtWAFSaazDw{yhvDG#}N6cssw8K7SeC}(@ z9Zf3mu`8CG%`b-`jw}S_lHVyAM+l=*w^*GOOUQ89x#7?9!v20{iZ&{LiNwVq@Z?UhLMDx2mG*v` z?u9h5SEE99Py1F$Dnu|LJjR3Mo|H%o&pwq&^$6LWBE*7}d5kgz$=&eU{W7C@7W?&; zId?@0>YWfnt3kjW!68kv zQ7t|>QP2T5^wjQ-Ms!48l4@c)%`Eq^oDq27gV15;1XFpBup!5Pvp~(;2bK}F1!d85 zD$$Hj_^*M%Q^NWle8e}J`{o~ISSt}-v&uC|#z>K-7jr1^Ku`j%^&SZ-OPJ-7x!KwDl%m2?=-g+70c)JYcq#iHsdv* z5H%OKzwCmMjVfd9nDSrfSO%WUP*TfIroF$r`qg7*As^gG#A9fs>6r_^FbB-wGgxV;Nc@$yQNV=)dQyZ`HwFg?Rl6AL1k+}v8Ge^^1G;xb zH`y(=c`U5)NZ&FI%aKL8@c+FoOT~7@>*jCtMJ0%1Za~mpQ?0eX+#n@JoM-S-wdwc? zEP_$D|BPAu#K^3=Cad=;_R^o_8yPz&v*8Qr2-cO4)LaE5O+DkDy!y>;Aq3a}JdHWi zre8Pv_pM&nbh4|X;vjh6(R{YE540qMt0aj_41S@wJR<{rrH+=XB@oCVPk&*CtO}JK znOjmG%*o(6^Tfk@2tcmLI;dUzD&`nfBETBLpQ&V5yh@my;KZs&Em?Z%Cm`jOx3l!w zB*6WQ;fqeI%<#1LX55TQnr%FPKuf#BWMk&v@5=%w-2mAk0Zp;Ap zX2xf*ABkeZa%WJCF4Lwr2*_`D+vw}DEaoy};2+#6+USXYR631CJ2cRyQ4c+co^nUE z<0+X*x)VQVo*$GUIc@ue*I`Ai1WxmcCtUuaa;Ycy)uZDy9Yr!@?7!sAkCFU1c8IL% zA#zLgXH{?tdY;JN}eLD zUKmfhE7w8oboE!qk1h)j?;1Z7;iG3%M3x)bI0feIpK!int~)l%w^L~r#T%OXFVKTa zxQ?94h>O$Uh!1#VID#*eA!WXWM5k;)ruYL2#(i;#?N!eRdnfTF1zv@$2oOdz5u{DyQWY(iMY@8Dhm@s zh_6%jg2qBb5T&n*;lS5zp=?!CHAUdDvkYYb88tMb&L;APWa}nB@BI|Y3Ngh36T+AC zpYVSV2fvchMd~j#>9PfPxWPhj=unaRGmT}cZ(Xc%$b6Y^=jh2!E85ZjRQ)#;W3HU2a>naA}_Q zccH1*L=3bwsOYhUS3)L=B$)+WOV}&p<(>U7h%&m_?@}9uY`(2~GjQf>8J1;D?$W66 zZ~xNB&`1RC!ssz*MWO#x!+}~`|GFKJy0SDu_eO%>zD}#ky!fo~S54hl5scpjBxn+h zc{1B;bpoBBaxQ=Tj(G5i|EfO}YpNjJ1*~H#*K@msrk4RuwmY?y&oZ6ik0_FnZE7f} z1417V!>qW>R;Snm^GvX_ROJoaGPwX+t}LaORL8DkCMWI3+u3JtPBj7AG4@QJ1lYnQYNoqF z#>6$tcki7@<%x=^+cV0^koY_H!of*$+RIuba;9oj8@8he>@UMo+Wa0U;!rl0SnOJ~ zk|8Vs^UqhQ@9$=Kv67vFZ*RVSUtFb&M+yy4%1Q3Al|G<=)LFJrm~GG*ZS0difQPpF zalu3d8j2NxUsJ^bDU`-w*3NeK@5qI)-Qr%e3*g0%`?pBRSXs}nT)1bXCZqRTLYw|1A`K^WLg><E^=#cb9$Jw~v|QjuMUys7qnu))7*qi1brWA2C zfm#!7Qmy8;Ar@#B%1g&prwJT=7S)28jd#n4DYVjnpT75?N=a|;W&*UFxW%I!EkSAD z+SP_Xn+RrS%2^7bB1a*{q&)~{SMxZl6U^7~pJ>Svli`mH#fWxIOuFb8%0S(yBCsh( zliAT~f$oQZ&;MzV(y7w8v-%$kelDhryy?R`kyuM zoIUxUFYujFF>OsPLW^BDem%gRaMajsuRi z7>dOO9@z+x1;bMCu+f#N?`CKTrq_~lOU-fc>|m=7%_@qNA&Dm^stdY8!ez89SsdAz z(=_RDbI`ZEzHeE~AC^qcKomjPalsuhTr{s~uA(Z)14B z>{L?K`yjI^ywTg!x{LEY6?l-wiv@#Fyir!HQrkk_XHN1J1!-4|o|;dGu#yzQPH>XB zq?p!{o9t$#v2P0(EDxi$hN{jDlB|b=$0bvP#(|+!NJ&r;=U@pe?o@BWwrsja~Bo`|8@ZBF}aexXpXe4Z3veL*RL8&Hk zP1q6|UvvnVu_D9nDD?o+jQLUV()dUsYxM-)G_=)Q>$Eu;bf_p@%?!^ep0uXbX?&nV zc0L%V>m3^lPC9B4=DfGvnhFR~dbQgZKJ;g5>uTtXF-w6QeI{>5SnB~sSPI8$!vRE_CR7N)pDhz~>L2$1v20^85B8P0Tm zaY*vq6yJ9hef}@3z*-O3il_yxb^_V28f@jD6zt%Cdk)MdCh_%5A(i-*dKM!?{LW!M zaq?8LX#7??Rd^SMn)uC1V!mO#`L+ySZcOqwRmbtD|7kF;ezIc(zf&glUbCGoX5-cPX&o@6=ay3yfaWfuFgiwTgD=c?&kb%bVQ8 z)OaCRW8@SW)Ll9#U!2gBg$;M213V822`^Gaifv9>Lc)>x^ynb+G;aq3fpK)v()co% z26m+8$^4{QR5kpV*#9BwbZ5R*GI*k}P?qZvz6^??mjK(c6PVVk zGf#1%IBRp_9s~YIn^w7jLJwyG6ecE$9#sjbYxZHzzQeV7byeo?yxf`qwUlD#`>gsN zXH_GePn*E~?@bA$st~Y>kZXgKgFq~7D0tKkP#;WtBI98B+RK%5b%n8uN+AhD0|sd< zNGm@TO7z5DqvYSsT|JgN*;-bS$BM7$7+$ESy_* zUs#1nJFWcYP(hYmFHqC_8lA9IVS+TZEOF5XDvWl>D|lMdNk3AFBNQr3raxHx*crcH zG?*H9SdT4Yc)gguk>Rb~53Kzq#+2Gm0AB{}|USx9|ixh!g)ada?0`sAo%erX=rB z@Q70-rs%&j9HPT#yBY(Y{QnUMe4;nseM}~7>PU5Bckm3`SJ@1C|5vbZmaAJVUPu#% z!KBVKgDXq-zRWOwnJu1eHS<+833fZJ;cU%i`BDN`Yibzy>30F?z2CVAN;QX$|G zhPi;!pn?is$coM49DD28L1{%yZaI;EX8&d|trIgJ-uoj-_-Cz$uIZ&$)VzONp9F&z zg`|e0Y0ZYhxym{tbqm73s*S{8%|R?b#_RfT?%HQ-n*gHt5nB|HFam`Uf1k3~uoFjb zm59|~92A{yIS7cny#@-?pe5`#0cC#Ur|v3wgN4**UpXh|LwGV3;}Nn8;=qZ#B-LVls@%|6P|ucln|2fA$}1zso;+>Iu2DIy^469je6{ z=;m*1T9Ma-RJ-034Dg+(A{^x-O-isnUHNBo#}^F}VU9$N*k>k`>On|0EGC(E6SeVr zBPOWAOjvrj=2^yWCV5$6PbNyxH0-ukU_&h*RIG-AyQxrEHPB|=k3^SW_1%x z0EBX>!1^=LE4!1D>LO&zXq=F>sLTqKRx8DiikwI(9R*PlnR|Yogp(*M>ATMdYZWxq zWwoVOLU;+<6m6`FoaN`@(R(8T%qi zCettqOm`qU{(a`QJSbhQg^8{ZwHZrN`+(Wc3wA6z)J!+?D`A^4J3{mWAwO*6?5=X- zSB$ynkL}&nl>(<|5D}d?7S(6)W{jr%O`Q3WCaLI{v{s+{SmOdBcHf8c34DH!sO!f!|OOCHYT}G*{ti7@%9* zClo+i^vSluQK_oA2Z&Rzpb8VFn+QXis;&uD*7@IL2jrC}0u$!~lb?7;|MiX9u?Grs zUvbN*&ch^yBdb8y(DzL-47T-N&-AbZkoUrT$xY}PT1hOmMokzh<9SWuru;&;h8vCW zVzQgZ_0H7IdkUB%=1jXbaJlyAde0OOOO`2gHq2G-@HiUYt>gH#Xq;6 zij>5J=?O|EwAh$y*fAR(Z15xo1>mk^9>492>VR@9uAiW9zP0Ka9x=nLyh2_s4QE4B zPzI4nOQ}+X(0}hiIHJLK^A&q;GLqS58j{pE_wql%w%=#d9taFPwPNGUa9YpCL%$W_ zm4Wx^WU+-t5!n`dQI)Tzw8b6W==~~Py__!?9rkDCZ~ph#L|{&^BrUCw{j*>rrt%p* zu*5UXd-Ke!aMV%L76LVb5a3P!6^xRfT^jVad#%7f>X_E3vq~F)ZR+%2h>N|Z7e*gx z4)@uAbsAPpHZPbQ2UkPOrt!KbxRCgn&JX@LBl85sWhS{&J+A*4RWp}gm&WYdeJQ+8 z{X)^U*i>k0i%!H>`&uvm#es!z59)4tQUL*2AdiG6>@AWhj#nA80Yo1{Hb`y`gQT@F zF$Dx$J8$}R^#-96vh?H(UpGVlZGJb`Wb4lQmOjtDMRKyilNytBv}?uPpmzDv;>ZvH z{;*Mk_5&gUaVGKf!!X(Tl}(Iomx48WTRYsaP-sqG{&}zN{hvv??n{L5Vp1>aw;GW27mtD=2Fl-ZohcPx9iq1DG(J#w~EWb={hCq5D3Lm}J=R4Wh znd^U5RP!U#ut|n!NM$L0FDn+;514TrRTm1gj7+79VilfUD7b7@RmKpgQpP|q!wzke z1cry<)O6}zRFb9ITbte~-*X?vz0l4e&~Ms1y@oG^*I>4cJjZGL5&K?y?U(1SrwUub zA_^^OKGzT;>?h%0_xu4}+JBh}3==1UelIAH+uEPUf%ygq_Mn2q=q5`vNETaj5fdr? zIzOs+)H0QtN};~^yI^v#cHx*>HwkPfvfoZ}e%)LGILbFyVK$YiPMNYS%z(46M zt|qI9pn%h#k1cVQ)4)PB7ZXfddx|%u$z_9zqPEyYUQH_wb+go>@zXClyNac1KM0PT z?*liSSW2JiivHLC_dD8t?cvm%YGRwl(B5wu*7V630K}i3=<^fpQbZ9U!6WsSF@dd6 zHN7eZqRf!e3nTvq>BFv?=5qiWF-$Q(D-oHWhM$?&J9bLNz4(5+bo4P)!r9B{QH&z) zAv3z@aDJp|lg?u(?e}k>ZegbMchD6XL2}1&otfBoe?^3b$VR)Q$%=BmvdPCJWrjMe z89o2z8`FO#atB#IXGO)Y^GV*7oLS7(y}0YlYI~;(zg5XcApk!tt!jk^DQHPl5>?Ob zGcUhV;O@W0u=PZAo{X*H$?#=F6FwS&nP9>2nc|!4cbT!>w@R)edc`yX%O3#4r85^n z3J#vnu`1dFWsH&HYJMm=9o@~+!D)7r@|3OpmQ`O+fPIRH5rW=ieWHxl(p zg*(HA6piXv)`T>0@9k_0TLk}S&{Sv_zV>IYZ;+7BsKVo=PaYPVatwAG#rvGarrS%ND&~NJQl~Sj!|UBll09x$2=u>(i^{O z?f6YxaHx<``bGh{bRXvfV7<39Oc?@ehf*nf$nd-wRYfKX=em@-?OKv5QS-^$pjgxT z+CD{dSZR+%1ow*A!AOE(Hft8#^WYDGOSF*%54cFamAES?bLCTZK83a6_T7Udi|(;xjh5L z56q2pF?G?toeTa+YgKvs9_T7SNqpddKi=?QWPd^c0Hg#Kg}V@hW}01$QJ|S-cnpr6 zF_u*VuB1W0t4!5}N zRrZ&W=5uA{KB{j5GSL_y$EMv-N5k78;T~XdSFenRhnmA6HW|W1me*QI)gF;AuGdE7!sU!|Psil@}GHUns0K^}?yEbD`DB)c1rsc;Gw3pF~oaJCBjc{&Y zSs{&&U^aQTn8Le%8GdE@i++#>uVj`RU-u6{H_U{)>2|C1X?s8Ag{h=U3To}uPVkq= zleIzS$n!#A=+kA$?HIns*u%UY69VdC?9WT3hAuSPViYrx%E~Gv>8fQ~ac`{{OmvQ) zw;r(^reRO<#mKTPyw?57>DPrY@~lD^Yvx3?EtwcNy!-zCz#!Q~+VfN?B}2Lg+^xWZ zPYMoPe$Hl606SSV*_AJ*z_v}_B} z@FsdbHe!%ELn{)lu1@<1Ge(Kber}^_T*g0-vdnWS1eNtNU@2U}lZ+0yR6EWH`t&1h zB3e=mI9t>7w0~sha0_ec?!XEV&ibAoG%L1Mr^@5y{lD?gFxW*i9jZ64{ zx>xKbUgHo)P8G17`RQl~2c*wbJ~vAj|CliEo{KHT4w!6pWXvDiQ{kK(tJQ?u2B<9h zki7ZdD0dL{xOn?L#oP!}K)iJfHCnp^5Xsl_Wwiff-MT5bHjMA-9f=hClqYz(-c zR6Wx~k&DUSu_Gm#%)?2{M^8N7>nvqP+5oybD*1gZ)E6OlXK~(7xFN|7nF;J1UxRpg zHHy8g$bCe+f0*;`W?LBES>%m1>NRatTVAJYCUeteakjcuq?4Q_8;*Vue#kd0`4l)v zUq)z(P(Yb~0ymoJbBQESEVdK8iaA>^lFWPkpMk;(%*^%ukZ?U%$lp_O0wWR;#*$lqn?5e zQy8Tz=~fBOvAr}NRbff5b*`_im$FWYxjP+}ys4wnkh^TqW5kyh=v(^uadJ!QW)6JMbZaxmX+$vxD@YL~Zb3sWWlrSOxOqC4-mPvO!WJVZ0;P1zs`(k> z`-E};S3r2!>(Kiu^m8095s;w`5>bgWhTf4-G0>;C)=RA$XWzP){|W@=A-m+ZOfMXj(vC;2^r zjn&!C44Es5!b}$^8Cx1c9LTf}P%hD-Ovbl#L-IM38=avt)rr ztiOZghcSVBibo4wLf8R9MPFKj}6%_aB@BX&yt%Aj6!A$MaIDuHh+Eof^zP68<>ThxWu@e|yO^it-kz zN@fNmPNfS9>@}!FTNNwF_P;!KI}EbAHYAX-)@-WHrvrk#zKfdp36k)M;jn^~V%?Sc zU+#6l%=-}C34twQ7k&_D<2xI&uGk`$BAP3=?(ET#bxIB!^f8XKlRtccz~UFXoYKyc zAw+HCBDQkvevIZ!<=yUUUp+pwT(e{j#am0xb#;uvBVxGgnda3rd&)h%)7l=MbowxB zo&Vw)CbnXrIhlg16=4a2i;^NToa9xVvO$DeO>$a>^k<&T!!k{`OSecz)7y7{4}2(M zE2QK=dhji&HzD9C&)$iNVhTjSMfQXQu#BZf2t*t+1To`;TIhtT*@W~0g{-bb2_FhL zJ{Aa+73{7Nfdpc4sM@?4wxSJ%sYPf~$8JAo+iQ$+mZm1BOMo$mg?{Hp zp*r+MBE6W$eRDWT3Ca%yToEIyy$0Dus&)mEW6SdR`xaNHy3fcz&H;F7XQp$7Ce8J*6X4F;?R*@# zdpLdr00TRFs0ZMnd2`c3z}&w%SO5S%KZC$O0YK;TBV?NBSEVQZVwj~t)B*j>2dR5*!f|tH)Q>F7?Ho;pV8gOGMn>>5VDb3-cD;5OtZ8_- zgxEzOA-_+Sq13Ae;eL5vnlK2M1A@R(cA|J(PS`_JKEAQUuXhLBJLA=0@V zAyJ>uq1EtJVI=DX*1VJQzPDqqvigx{zk&{Cq8p8?Mgl4usdyzNajrus;O{_9ARHHj_qS+iEJW3Qy!e(Wc!V0qqLEpMGNw9Lh>-1n!iBMfdV|L_{e5ll>y+ z4#uZlX>NBWAb5fQBzaK=eFh9W7Z-7Qi5eR|ioetgwDbAi(s7J*>rhTiXpK;OaP|c* zw4GH)>oFYvF<he8i0K5cIo0=HNoq!a>$A45b~`;T>r3`t3{@-BF6o#;yX ztyFyNVqq#^@hwTP0nmX8|)f6UD>=+yY+i=AHV;7 z;!8RHVm=YvE`PD-G=>Eo3V|a&Jt=ue@1{Gq(3pi1MZlW2po$&8&vTg4jKtIVPeqfY zLgp(3%L9-qvM+?)#l`eZUy5_7o5?%0*_L0{y%Fl9_)Bm9koPGrU3G>r$4{_R@_*R0 z9Cn-#nECTiRV}UQ%EUnXW!o02l6A)iTfh7}l{TJk@9*TZbiTm39f zkgdk5{-tDU&VHB-+0_Oa-wZ8+4(ta)fIH#51!3TtmBQo$H5MvW6@o`tL_bMg8xy7A zgdEGlcXpn-w?BlCvlZE|Pk6ZQOmRBqoWe3SMCz5)$_)BU7`OY<@J5Smp(N6$?~0DG z1gCCkZS<&c?~1qL>#L{6gT|PX>M!$VHl>UssBe@_*!|W+s&FObjhKcmLF^d=8Kw6d zjv*N^7UT&zil?;>)iX^yP9gX%Kt3z2I~+3YIC&??tdGPhz?0>nPiK+rpC82~Z`+pIP+czA6o* zJgk_ie-EW*0KXd7gD`=_K>J!amTNN9;}<%JQgX{RguT4k{=mXy1H%oDm=v67QC`u7oc3 zJBV`|qnO zJr^lWI~MhXNiEZs3ka!5iu-nf05&7#)zzKrt|SejUy}cN>oOxT!(#4|J+ra4)HprhX3Ws9BI4Qetp|C74WL+9f;CT_oT_Y;k0~CB+GxJ@!J~@ z$@DO_z+1qzf?Og>iZzemRU%WdzO*%O( z1o&Sc|Go(UfUfbM9Y;k$N(gyGikFwqFEu+&diUtvC=9QnZn}7!h;Vhm18{l4Cx*dW zHU>NKwkn*X4`03*C+5aOCu<0CR!K51ioCqViXid0rlDc!c>O}%h>-lC>-%0WG_gsY zxrLsZh0jy*bGzCsE*0?}ZL9;(p4rB|Ev zd_{k6|H1y_bK>9l1dAZ1PEQ_uu7kkK6rOZnpaq4=_Ont?A>n!(aJ{NG$_A;M#h#yJ zCMVK-Qw%vZ$`va$T&r2#szqw_QwC64BgRGHmKEdt{7wHY=Ncix*lH#gM#ek8uQx%I z*__dQ74|3?7KmblV49m+O_Bvy($Ldc(WQ);)@^cTa~P;&KwS~NH?(OZJ9S4@@lII8 zUG`qjf|~P==c8W|Yg&TXhWuQi2iANiiXKeyFQxJ9+BZGO6d>rTLJ9KZU9RNW*6y^d zEx}KE7Z=8EOD)!+T-Ue%Jx7>wrP4k@ZX4l z^`|nPXQDZ^3~gp}I&8dkKYpF-%z3BFw#HyL#iuAHl|v93+P2nsrMtd19Bb3tr`;#B z9bizWQO)}MO5=LAw(j8ar!(!gd;Tj&3J6Twcu7B$!e6TbpI6#GGnUENr82@ahn4zC z%da?lDcH>G=O0(mUS-aLxD`ZJ0zLmzl##%f!*{x@T?=o$iWE4~S7&TG#6O5sW>3T> zpr1CQ-p&Y#eu|jrN^GC2shEk}X!7lk!;KQpf7veTNR#X0_bOu{t2X8N4UDlo!B3OX zY7KO9E>N3KQ{gJ8&+<*F_#L$F1GZt}LdtqARUDT&8**jm8$j@Aq0X-1%~r@SnQhL> z(N}5T^2x`hYVXFr{clX$)Mx&88pm0(idxEO2&&?e%*omMM}u!C59_5NW!k_1If2Vq z-KWO>UO`1=+Dc0-9fk6{cKoj-w*AGm6pU8 zg(fSf&Y>I{U6f4gPs1ZZEf6%$Rz;XG5sOHF@7h>F!uncOY{mxO7Tz==Vf;ZAyh>)O==R<8?%`~G6b&cljT^AfwqzdQ0nV79_WZih6UT4kCw zGEwSrYib&54Gr195qq2Gg!VX0bu>`@CC?5xu7)7T3_soC>9W^PP1Db1&SJtLZi|9$ z+|9?wV{j}TTs@-Bh~o{p;xR{y4A8&>&p&&4kE>DnIOHu;sMp0>|Lc5b^;s>AX^+MEeQ*#0i;|wpfXOv7q~+aL(Z@!h zh!2$pwM2Z;5DeQS`&4D=X30%cS|08-`rw8&c~m@&_1vIWo~B0!9Ydq$tMLO-OCYCs zufhv)!`<|eiH^hKq2m|6t2q-|-tV}2~OeKV5hl}Of(X!jU}5mJZ(7Y`!K z+lG5tMGSk1`W+o-FLhFVxoW0Q5wA=fO{`Eo?Is~QBxz+mG67qr*bTUmw(rp+IM%CA z?&YtFhV?VfJRznzmB*l+vmYZggUq%$*n*XUmJ;B$lK)=9y_DAO|@IJKCbJ}T>lpnG3Ij9M6?L`nKd7bB42#eLb@;!htc z&lh_jms8bwV@J8nIHk{-wh#6ku@8TeaZL9q{YcK`dBpJ`lD^-54@(bRXnC;ARm6PC z>1?x3m!4E-q4gCDPoHoau4AA=+?J}6l8=E$)F+r`3lnmKb}S#-tv7|%M36F4&$W_1 zAtWtlZ8I9tjl{g!QKQrb-E12Wo`k{xXnj4zto;6o~MS z*{z}=n2Y>6(ZZKmzNOx&>0SA1u|e|p(<>F5^h%FVnpRU(!DTZ z*tvkpI_y-$4Ho(9y~_Xach;CN8_F+kd-NnatS>ZW!lh!B(?I?!r#|5VSI$h_KgVK! zv$?S9V%EZvPQpG&{W2~05wFHfbxC?g?R#sV!?@D8|M_GF0EkoMA$S^6(2+9{VW|N9 z8@mQ-9zzyfmDRu&R8h6+|Y5EYGRRes2naj6$K74c#*!gI<- z<#|`I9A_|%^lM7KY;~hY1Wd6-BTw>K9W?*=0nveXFUf1>mL;eKlR3hk;G{n4N1 z^CiR9upTag7+lPB6hxpnjH}iO@AJ?t$krqfAh)G{#$J?IsZzt?{s2${9qoEDthN?Z9at=*P0 zJg`zrt!y-f8Null&S)eLWpwMoS6m*Biq9=5Om7`oJ`dq$w-6XDESMbEH#TKs zi+Ob#O_^;5LE__($b=YAUzge!k&u+KuZKw;y@(+u{)z)3!}Ww9!ts?*_Wyk2+!Ndf z{|Y{Cst}JK5Y9WHM&K54Uc7H_uNd&pn)E5FtC_o-&5w%3jBfV-o;dTJ?l~yXTb1EN z;8q)j177XmXc7W^qM1q2fSD~{K6%dr_xG+wq6;Rg!WLap?9c2JDXI7ppFY#`Z+st@ zs6RBAqjj@VXH0L$@(oxIvz5w3Dtjp?yu;xDX~YX4gPmW<|9QPv{rQcpO3_M^C+!iR zy=rs(X|C+Eg(!BOW=q*79QyamtyK1pGk_?l?(@+r=exvYG>mAUhewazW|kie3YI|z zA&U0$?~UTRg*tNSo|E%w2j`3KQx3qN6`Kh;?=BQjI!~!7^Eojmt8X$(!#*}{V&BU@ z4$W*TKP$P-)1ryZC1nSeJlB0w(-zR^Ly=XkMI@O~x=jVReJfMTEbyH42q=+Im5j*lzVH*{!Ma5k|z+dJ*>i23+|$e4*R9+A^poJNa&rq>|~W z^UhsMCV*l(VCs9a%SljJ>60fNxE{)mhnHxh3(UibpjmF1=(jD9LQlhEW~l#y;7q?W zTiH#-2fjXugob~Flcuk^o!4HLqo)tgOKcRk|2=wRdq$Yl`Fuy|r>t(>*N59Hr|Aj? zAHI>`L7~QNn9t0{KU%eBc9DD+k;8wwG~F87H;m7d^4Rg8KlE?VAz@J=H(gs0zct#tfR| zKbbHgn{Oe+^Ri*>O`K1)@8w^DhGmQB&+(9Xs8_;qNJrHBw}oDU!KS4;4#rD+)}S7`3W3wF=Q{0FnwUWuwjb0c70aB)wD`x*PhHs zJfJTiN&o2bqa9sstj-TbiP8o%zi>|Ml9n5rLsI>Bn{DJ=tY1ditQr8Q{*qsf2i=+x z|BtgV3hL$1WiMj&rneaL8W9QfRWH>Qbxb8jsyAvFA9?<(cq!svzSOc+M2)%cwD9Ad z_@~^5E$N!l5mNsqWbfiH$=(1A!O=ayU}z0?q_eUR$|>p)W*NE*9(D@sZ9I%~a2G-Z zU#FR(HP9sxxpo4S{%fw|C$Cle*%}ds=kG-4%-{Yqh(y8Y>ttE%A)J(aPM|+?n@;HoUm?CYrNutuO$_wW(Eo2^G z7Eth1VUqJe$hi|lPQ^o4+a674BA7z00-7uFuR~NhiB#O*9YSJgQ+UVy$_q-48#9dG zNM_zPZ>r^*-s$IGnSw?M)4>La#61Ddn7~802OPo+UB%ma9(&9Xkyb^(CsbkT+~>4)lVYO=c4P(26?KNr?m zrRmSLpo>*O`>LvD=TXpnq&1-eV9*q+^N>^$CAHn~=Nl{W#yS79@sbB0q%~*+tBATI z<>|o|b9W&-MXU3heyRW+jZSh8nBjr*0wzV%WC6hDvlIweE&>Uge;wo5YjU6eavVp) zOyrG&qPPRKS;wqF{z-TWhK^c}!3+Z_2gonMT&?I!);d=y_}rwMgPDVd76WM)rEM9; zfkPYZ6~v6J)(8H`N6;#Jt`8Oupx<>4LG_Vpz?hK$XryV-&?^Ug7{W%wQH3BTBIhZa z;vh?efO=78|4NOI0ukm}^0Wx)&ehijM)J!B+Ia$Zw}fnb3tYL~LV?*hsXX`dpLZpm z4SNdo?Tdo+4#1#t47j622!squ_64S9ocNdGNy)qvGO`7DdEr~w_|lpjaaeR1G28_I zEU>H4W>p`11A8+)5yYywbtOv!(Thd1>;UJ-Bn1Ml;D>Mc0{3cqzQ_m*e*l}`0)U7y zcFHO)6&+>@`qUQL*Z3XylTA)fWCRw(uR<9+)%Qsnt>r7;>Ob<~B(0hqI3i|UBquI! zxOnN?#79ZFAQ9+n9!A;fypXi*UB1`jPeqj96(5673@nlkL^@NI5)Tkc4jj-0@G+oLlA1kH9w8lnU>5rf{vmix=3_x!PE z7bA{m$-eCPe8rlf56M!*zovc$e%We!a$6RG3QPVLZP&rAX11UbwmK-3B>yjndGgB5 zXCXU~b=FhX%P`XRl{$%}2Gew6=~t_%T!F@!-NoKmYr46ZMC5AYriWp~F9})Vo&$q< zaAF1q7JUS>4HH!M-KpFbZ#Dky$D;-W%?eRfh`a zABdd8I}hr-)tKy`F~mS{^~HJx%cK#SLWAC^bJ?Z1o^_1!Hb})>jixTMTrG;S#Ed_g z{Jd*xEeqLt$rMk@d4$|S$P_$FRNk-H+zg8>z2J@n+yy5V+(7B%=S9P$$QFNFlM!EqK?Dwr9P4L+( zmnDo%Xk?0yX@atWj{w@pS?WBVKxXbjQLk&%e~L~h-gMNscEDD{Pm?`!!G?WSnuo&d z(79F0rUwe*#QUXSB$!yN2t?qi*nX;)N@U@Gr`+Qk`e4LIJ*e*+W4-(cndE`w4i z?ffFcVvet&pbO%!&9&$c{30^^bw9E5M}BqMgv|wyr-w^1bO|)+fAw`~bq+?4(Pk`zI=d*8su=xZEb#&Nhh;4-kQ_vsN-PCR9k69mm?Dw2q6VEEC<(1; zt&->SY|W!YfyIA*{HZ2`R5r#Y!bo-uvQhg`4tGhSy)0o-u2}u@aH?otZb3IIJ%Lx> zx(=fyYU2V-`eJ=WY6>;DDb>0s<<2jUORwE~0CW9nqNq^t<($g_tY4uG^va{e5uS0Y z_wrxIgasl%{uzx`twAXnyGUt#`cRpA>Cw>8YL}LCyp)JALSc&CMPt@4+NMp*r^e!mgep2_cZGhWaB?F6Vuj=b|l zwQrqB&woEKseHDwEY)>)%6D(jk`n}3NgNnmlOdQD#~49YDK0tH#X~-A?s9!A6X}nKrDb@}{~(UP3*vtRkpWb* z^`s6e20vU`rZ5P7SG@S+ibW_c1$m4aSYtQr@6sct;&^IQcP^4^V$E7>2UgCXiiK}r z*kdkt$7B9-BOrJZsh049-pQgXI5nVP{ky(O#~0ux#m7PE8pav|<_VyW`Ig#)>$>al zaQqmlmE1U@HXo^=o?!+ti=2DyCp(Eu*1TE{55Y|4Ofj{*%SUB6${lz0h;o;FX)U~z z^SM;DY)!3}nJm5%n00;=>x3@{GLxN}k>Tv@J`Fsh`x8Q--=dCLVqlVEg!qF2O?kxI z?--PPUjK~wozPmIE5S5JvP>|H++4!=JOI+<|KaS)RQ0L1v7ytavgxcJkzK+mU#Dw7 zaY^8u3L#PFvBgdsQ2)ojgp9b1{Ya3L-+QC9-eU6Qv2w|p zPMy*uTilh{Ix@kYUDz?Ps~hX}^Vv_R*IDHL#O|9 zneu#~?qKGnSm#6ZpSd<0#=!621$Ud~L8kTl9y-tulq6z2-A&ipF4hxVX5N2yer!dD z+|d#~$sFbe5tpb+2#ZU5bToC3Y2;~m{H0sP>uQAc*V?=aW75DTG4a zKWfR&t||-{vK*ZR8bfoEEM*Nw3|)`rkB;m7q)Me|vt~m6f=vy7A)ncz!TpY`{M!j1 zVRsYBNfsKXMR}3W%u5IA>iL^vAMscyu6udwwn`BmywDWgY`6-}iuQ}O7`1;EgxXA-@P*M2aijD60ASDzxA_Z~Nvb>ystVZ@bd-^&#>6u_;v3RF z`dD`s#ZDDMU%^~Y{P5KOquB{LvGIJdRGrz-a_Ohdjf1hhImw56i@JBDB;j4fkN(I1 z0QTRB)HekACua>J|GtpHh>E+!(N$~En(<3_6S-mvEW8d|S^4|g)~je$j7^A%&G9Dy z^y@CkLts!cG_0gds|qiYfZW%L0O7djZ#F$MG_O~cpLy}=ZV~a^Yyn$_*v5&@L&2XY zkd)X`>mNx&OdR$Oxg+}&g@q;ZJ6-X$2lv! z6sc5J>Y~6aIaC*X0IDqb>knM7G1UM52UBuO>~qTMt5(m$g!DHw1WF62OktG- zE;zUUl_{|IDEE^7SNHf0J!-G zHZX#a=^LPNn>G(W^zaU-a6NkD*QeMeW%R5+f+MEBl&5NsATukIpERLnkM*3zyxN$D z?BMA)g}cJneqFcGsb=@~X9faW6)>D5pjXys1?xWt$`blqOx3cRX@tl;Tzf0}HN408 z9`oO>L@M5M)ZuY?VhqP=TqGS4A_q5LiW=d@Y}+KUi*e(Au84kAwyKew$>lr4TI}Wb zq?uC9OyC!Z4z}6#mOSEtHwBwH49R6+EU<7nWDmM{D6%4Fqm-{6ddN--OY-E-;|Zz5 zoybLhWUL)QVPVC4LTnaMiES$fD=B3gpBL(FGs6la-mPqY`wmOvdT+#XK+w5v1y~ia z@6HC265|O#8>CXq6E%*7brqeq!Pu zw3p9j$g|#ocT~)--2R6l6%HvEok{%*9zER2vhPz&E>8v49`-}yn0)DkFr(iAe_cjw z^Bf^i70y5^CcA$MX-$`n6xzcPm_j)V_N2@2$nWD1%3mNbJ*3&*Hl2w!3*HyIC`NeM zfn6Q7u9tN7K`Ty?7-7jroX$KcslR3WW1fnl40J~yanMj-xPo8RR#?EL40eu%dWV`` z7cL`kgUhBb!-Ym@`oCHFyhw}OvrxyX%3|8gXuo)*!`yyls{SQ%d0(`h=Rs`OVMt@l zz)$4|d>Y4GR^`luOmQzGy5>FPHLz*TB+8P^=eFsS$HJ?8z{=I=1YE2`k+ks%eDL}O z!N8;tMH!-^U&OK1W~;zELpTZln~~)iGlC~uPgjl;lkaN2@vdGMQv2nxBxLT!_(<3H zzq@H*&5>yZk9amdtl7U|8Ejr5k}@va2b0u1$1unlJ;A^N<_!@QEuFEV^~ zX~iqdI+&kvw^DEWh?Om3$8m_3z7qD_zGly%cKK1W#dJx#O?3E`>gQc_wTRzf@vr`H zc^FQ3sZx@D%mdD0`gJw0u^r@=3Ft20g50~(dQF9f>`w}xdRP7Dm=2dmtoG^uFaEQE zhS?#%x$Tl&=tR(dcZyVxPma}B%l4k}LR9TV=Ljv*R=5&zZ;cY@GHAhr+dc+hT|6EB z^w3(^$wmXkyw&|mw${Sz_X1WOZKgYc6TQ~}QMfye)4oH;THq@cX?iMYS@?LdME`El z4han$fuxOA#@My(E7<^J8eqW+^%XXDDpqKECkhC@JO#z8jwhU$BfCLa88kmUTu2c! z(Cnt{;Qh2C!oIS#Vz(wDo6F2-j%!7;oH^xnr~XJ+wrJ-5{6ld=KQ12|%a;_EI$kSW zU<2m1foh?KhhC}REu7()b|?k2KytA+Pp*K26n6qgc_zI|hF@c6?>KcvW37k1RLJ^) z^=-4J!QL|i$*d2ZK;?qta5j(EQUlh()gN|sD)?|mx}4g^6dEisSWb1F{gWuuYw zSOnC}8&h~lZD7`TSb=m)4^y5j9UmgYQ_S&Fh?+J`bA(Tgqa#uNHhGV$i7=bTk^VNMbV1covh2{%HnmfhUxLHLn7VTc~MP;gtEfNW_;gp;Hc z6`2uRoRQa9gtbS_qJ^V2QwGLN;J|i*FwxJp@3{k*qioykj8yWqbhIevh%K1^>qnmp z9Q1(;SspwKH0XeF+0xJqTk`q+xFF0Dr}}dmPCD{ex?F}I*G!#(LtK-k(v*8i#=lCt zWtK{R_m{rv7gXy^b?52iiU9Mg(JfScVK?Y7|* z%raa)Dw;P2XWT=ld9<)W9+&=5F3WEOiIejyI;QXcNJwb@FdENm8dF4rM%x>QIxyiJvAN$96W?!*OxR~f;F1`TGvgsBXe-C5xOS@|{m8JBl96u# z;8oh}NDeYx0ZTqroIG99_542suDg{$<6Fx|hR^wz!HuT|3 z&+p}o=zIyUgs->h)m-80>nO&l0kar9={D=1zy>DT_(=sun-CIQR_w?4Sl>U7uH?Et zOTY0#*jDPn%TYWJ=|Wd?>#B`o^k2B6mxl*v&*!#-$m^f~*E_o=QY*cM#Wrj=>fJrX zyv*}v|0l3OGyFWtCL|j&x6=dsg9}%IFV2upYDgc`Q#T@7SavvKb)L#bNZi~1BQ)&n zq5cyBTF=KWaYxbv(Q&=u8aoY6eR^5kE$4&_>NcoMliV7n!6k$%@-46b#9NT*$FHp^ zlWFE{u$1dNr|0rdr+iD7%arJfTi#CsE)I9#wH`PtjiS>REK!HRG-kv8%1`hz_mx2j z14eCBkLxc>_^c#;sI2K8e2a~XBjqmVI2v!8!!uP&Ss2fbyWV?rmTWyCainZza*5FulJx=}COCiq#{K0wgne=AUMDZQmT~dXAv%5TeU9suV1urfaaxXF2Wr6F-GrMFvr83O&cU>g6)KUbgd?+Sm9c+TS>`c!pdre-d z$@)~*8mu(!dfitzKU23TFAW$pJ?v+cN`ZgejdHhKp^r)iqBfd-0(n^);7&8xhkO!T z4MXNVfJVLJf97^Ce-MAYBsKGrnAX!M4y^wPvl_SkrB#P&By}s`;Om20nh+)3%CI;`_eOfx`R^IA-ICZ4XeWh;;>$`dTE1T|p06 zVgo69=be$;v46B?+&3FzQiR?bkF0Jy+N)-j{NnUpdTVVgID*B-sQd%)_o>$G{@Fu1 zMQ-4>HE^*GRFxXy=T2N;pi^VCfh_y%y?%70p>SKU#KgJ)Ck=;~CU0frh`BNs1cD_89jk>-B|9@#>ue0h~vf5P)jiA z6V2ZT`)@K|a_J-=n{w;vJJfvRsY89>sLjDfrBrvOw(ABl8F}m|ngy5bxCT7hCt7JW zC1>?PDEyK<8C}%U=>Zlnrzqu-X#IBl($j5zCNo02ULMxdHGL}9v?LZ%e7h-EgZ>=` zjv@JTQuVP6yL5@LA6H*brsIwyTMtkYYu_S%{``IZ&*d^9F1mmV%ykUJrOUEmfqDc% z;0m62B$c$qGKEUJnY7X`EUdgn{b}t=juzvFr{^M}v7CP;UU#Ig+K2>N>YFCIj(^RV zm7X1Hl9OlT;b24PA3nI-_IA}}!u^QRUnl0+!U`KqmPdlt2Up1}jt9?MVDUdX^4-&E z9{z~2%u05$ew1-waKx$hV>2q^VuP-y9-k#q^of7XcaTI=o95d2`n2&ZOUdugUdq;2 z;_|u0#bq#qkvHJ{iMoTL@u#5#kmrNnnML4?>D|IuDJNgdD;^?^rvLGu?4mKS6buaE zw3~V=xm?l%nRpSu)GCYK^;t3Oa)wi~SlPX0qNTQ?RX2JHcltufYS8*d+RefWj?Pi| z=cM!31RYxxsr|911`Fktc!GZ?Om_pc>s@7|Wm#fDL4m>5HApWljywVD#EQp*n9XIB zuSD^#k!xdGm6;Pp0@UNHP-vpL^Lw`xx3X-*e_bSyG21WhQ#ZU{X3mcQajlSx$Y0Fo zV>gI%-k-oNZWeJnRa>#OQ!UgETn1I&g5(Zm*Kf#jl|^7PsGfNf`;SqHu}X?y#H8`Q<*rRP z9Qie&|(>K?HG`iOeofHG%nleN(Oi(deJB4TF#yy}LN_~DM;8pr4ba&tJ zubzRqisb+NA2jTjA!z?ePjx@TuVh#P>TOO0A=<}#kWRVj$uFGczFo13dI54a08&6-S@<$5v9s7Z5I6^2?{0x%8OB_{yta;`|EtYEer|5!#E*qtkf;g@j*uCWjES+5^VTeWCq=v;YcA$zdP|EBf5 z#D9VzK#tWIJxLSdQiOan{je=!>>oznd*BX@!-IxkLaQ)YqjKh@?>I$FS;=|q69tb$ z%j%c}7_j38=yA4Q^*;T2OBp0H69wrzqbZvqFiLP*cw(jn^lV>Od~c~Ba&9PLaPg)R zx^Io~H!C^>K7_=@#NdEd#VM%9-Vl=0%Ik#RWHsb*1ddY*d3e!&x$>roLwI^G_in$W zaSr8t=$r9yT1Hqqn#A^Y`%6{uQT3?JE=B z-pv`EEm|L#mJBPSnGaD9Ie^n_0JjGK-pk{Ic}T)O=mt^RkAwHFT7Eou)Us2)ePnG4 z_!;RqZtIp>X)$*k-!#i#F8KV@PF~ZKIQ>~Q`|P#$ad5!(vue@e2@9twnJ#Z7u%4;T z2Xw5E1h_;L>z;c)=02(4Xa%aj9Y{J5OuHTbO{~q%bEl3McUEFBWg8TmVWTX!@Xl*^ znCE46Eyi7@TfBVBz_7%~R-z~xsBr1X&1uQN;O`f3v|!Qp=1zQr3v`o7(jl$3oNyCw=CV=64EIMNEjep zOQ&>qNP~jDNa+q~X#^CJ76j%yyg$F|`VH5$v&$bd^W1ah%z4gppZnB;`G3p&eXmGL z)5l%W8=d59iymdU#{9+Dn%b0WFuA_xQ(MbvE!F-39oKFItq`JXj4g|7XH&=HZkQ@d zPmx%Dkd1De5rraNkNvlU?f%k$-_G=g5H(#5#nXgH`RN2iy~ z>BpkjT<0(HrM*Or)c5B8{cSuIHw_c-;cw0senLrU!}mx6RaqxoZQu1@q?=q1W}-WA z69gP0vIPbN&cOtP9H(E7CioOED{WV$$6*}e+Dlxra}*E%&;LWvd6BwOxI9P`OazM! zODTR4nt@6&`7{p=V*eb){Pb<1Rc^_FGJ)+BbtMyego9qtEB`MBmo3$u2ibh`lW@m? zgEh-q#k}mB>YCqI#+L8MCHdD+g2V1Gi)|hOz~Omui372^OO_v{!&B#6A&_|9pqX;+ zvcw+lBNaIsB?6d`VBoQ&ngxy1a1_talnlCbk?enuoMa>`+W9rqE>vg@+yJUjVCOQLoiP97E(U_?^>|`0%K5cZNK+;0~SkJ8F zq!Hcsq5MhS%KB)O@;WF%4=mga-Sd`OBnI`Y2kHwI=Ng_rO4jqsJ4lMYU!DK(dn}ql zE+ZjK&!=avc0I^f7Ul_fJKweKJ9t#m@x%4*R#?%+)ik?LANRWb_x)d_?6s(?XrRBx zA7C)PdmgEsF>1`YH z1OD5=@?Yc(r+3p8jiRburN5TqpQu?@fcyt)f&=@jxQ|AQp#MUHLfjua7xp{JB<{BI zzhF&KGJm>TDjV?y?RY44mQ}CxbIX6ncU(tI>>SIGCp$K7$k|}WG|JrLKUZ2R(+7Ig z0a7y~YX$pX?&MT&p4@#JFCpEJz@Q=A2AVkRYd7D|Q@}77Z1p!1eVWF#$?7EN$2n4%j(p<|Q zrT@+E|%+g5d7XL_0TR>R+K%DU?B>$-1$`Yo$aA{3k)Q zr<;?f1z{jQD%kUG;#rU+5_lzcpFFi1lvntJ9=#HnsjtYS*F4?ND@5&c;|crW|ZocGppO$lgn+-m?aBXk z$B1`l;EyfhpP%Ro-fvi1gFXcukS+uXhhH$@2D`@46%I;TFpTgRcqu;Kene=_7)@fA*B^s8bYl}vW?Hv3Dpack9dAIk zUHPhwU}?F_cuMw|Jc{mph;G#2N_;BAs_3<59L%nJMt+`rQQ_5$(Z zXLu44LZHC{KA8|mu0%RNuVPxXG1C@rtf#G;nN#%spT_zB#s4l4OiyiXM<)oR9rt>5 z%o>7w8)ESJBADqZBO<6l7vps}12v@0_S7LtG?~zlHK*=s)6ep?Ss#VP>1EO^3-Rh~ z!}Ry7{80Mf#|IQnTX@k+M}%B==2X1pm7FD{BU$=pVWwIg&+l!^s&7h;-pr;>b5>u} z>3-ol+qb2VJ zgB8E8bqoIM^tl;g)~{@**r=MB}GkD^?`H|!>A4|$eL9~T^}Gbbw#7QLu9Z3}f4s9GG&y(Skl$LFFpsQqbeOtyXl2FY z%O|3?i<&8is3p^_$BOi>*524hykNr$dJ&rwllUqaG801V*muaLi1yXg|Kn0b^|#PI zlPg1s;`P66v2ea&v`|lBu|9f6@7q)Sj{jB`@4K>|!<|`i8X@~W_KFJRRQx{He;)XY zi4>8=^H%SH1~C4FK=KM(^&v(T%uf2T<;Bg-$&jbYn2Gu@Ig+JO>K#7874hzcA`sRkobUGkV^nSYWF@^ivWc)^&ca7}C7}P8EraWc zd<)W3Z>~s{DTBdDEGrKD`A16T)1y;?2rH0tlm5be;E5g9^!H~=vlXj7et8F6DJdv5 zi8L0IN_EFjt71pVJ%^8S}nO*@L`ugJf*^tC(1n$ zuY&d*nGSc~^UC(l+-20mKd)5d^8EG5b5NZIQQ};MoH*1@Go~hW#qck(Kbl}>#pb4A zXGM7Kx6G$>s+c-J-^{$dYP`p=7~V#K7sjE(Rs<~PQ7+AGCT&pDhrbH zlOnhogh|a%M&3)b@L)A~x3RJ6O24aMQa6VLdv~~fz(fB>MS@UyN0x=31T+B#YT){N zsN;z6KRq!2kSt4eSb0WRtoZNeviJR$azg65CCM`HohTcJg@_+OpB&aZM(Yj*vPT32 zUWJiHRcDVU2UZW6{f^*>Ip{5A*U%Wc?Bg{ylR_|CrCYbA zhKu#HYL~+1hsb}{ziz#9T;AhZ)sSii8?(6If2cDvd;CwpGP|0%3w#;EeD>bsi4K9S znaL>9gii(1HMBTNy?6TDifd|k2jV2B9>eHX;_Z>qA6zS;yA6huWmqg%>dv9sE@~4r zUelvIaTHJd&kjJ=OU3(Mgx%kEphq-O?v7MnO`WHPshNVZ$)3qA)ysgn>ikBR1NMa` z93uhdXM!zD8y`*0c7RU$?!UmaX_C~ku8$S0V!5XxwlBV;8x^Uj&i>FE$_DwjKVu8kzj;4Bm|hI9s}ZR>PZ+>Z@>Jy46^j0I zc-l;lv!-rGruQQ0<<=V}mM=B?2~IoFp=%&rzBA`jh5LuSn14b+!2I##pg(W`%Aw^( zlR_|xHCm!IN(Th>Vi+IZzlyvNsEOFV~YpUV@666}EAhN3ZuFc@JN5Uh8{*9y9QT>zzv z-j;5pJybCiEfnQ4A-eg8!Y+RLbFrtrMRVu3Bn1wB5_qBG@sVs+6P=NfQEBs&{_;oL zEiq|k`h+kFf_yPMZgE8~^17!oU^5q>hZ%vuroh*3Sn_0kZW3QchAp{p|ig+Mm7>nQpN4m$* zkZ35vI=WUzw@{M%JwcIamPwvt9c;$Iz{hKk^Z7`fqoU+Mh0?eB!DkCqRjzH|lv;v9 z9xogex1pdd)K$bndtWvz!&JFv;GE9KphnB_BVcvxlVifUX}2Mwgx+2?&K9d8!T+Y! z@@efk7Ja=L(MKU)cA8xs0GJL*#DoL~0ljY049Uf66r?@tliq_kwq&f%YdZa+Moyt$ zGK}0tj~F6^Qa`voqP87QZU zUEyHfU5+Y5>6wc+Rp>8uKDrRbzj@_v4#hA2+4UNb!>69Q{E6=m5PiV^Suj-RiT?05 zxwOU*Uaho4VvO{)0?0p+6Jp%Ih{X9Tz5Rm^@3U2x^5J+jLtyoh)O=k>J!k`}=i#1@ zft%b0J0!S--ToNOR=xU5g26L)%Mysal4|6^G|D$pKkcookdV1SX5+x+br{W#Rj)Rx zcHJc1$T?1JWnF4@*TF97x56aI0e@As4*V;de=-NAi9bN&${O0rOwF|x!w$r?DR|ix zl`eG5iy3G-1eCC_2V%!2_0LFL6FJVB?}S{)ez(n28PFyE6JrOi4vyQXz*~K5yUdXS z4@QHrlkK_`%j!_3{q1C^c^)yJcBjRhQ#LY+Bi9#0)Rg+I){KVvk%L#ruVrAv?{8lrF$cABa~EB;u@2M8C{&uV;U-6?+PxrDi+JmbClAP za4$2*7qz_~eaBt1zkh39R~gtp^}Pv5tQ#39xw0zY$xC^s&N6Z6E^02iol zvxvw2NJxwhM3B;qx`8A`g%sCEhhCxSFzmeFVaK{JQpZrHUjytKI+n1a7r~hx#^b!< zLr+2|eId##fH9Qq=}CD16qEOacrWM<9hs<&13|+J7T;mFFAMc@dly8{VQAzn@abu! zw5qFeTDR#@X~~&r-q1h$xHB{u z!7=RokH!qms-M+*fJ&x|48@4Va+?j|j(saLG`(+k84@{y+luO|A{h2mudTP|G*cM0 znnWUFp}jka3FJV>)JR_qaGR1)ni&EQMpBW?{m~4)6;i8llZSMEBx@CRjxu}s+$s4> z?+-IVutmX?4fC*S$w;sO^cOib0Skz~eH?_@j%sR#fZtk8W%x$=>nq$+ONELCryhQ~ z9}Q=CrohN;d6ijzrJsz}L47JmWNt;!JU7uj| zIVb!so-Nc2D~vg+)Lf8zu)KXZEh)+9QsykyxwOY;N`>&)gQRW@O66mupdJ1U*rl~F zr*lccb5{wGc*$hfu*YFb)oeXPDTztqMCE|qF76pI?QWub&g!2xThLy#t|;T`)*5uN zjNuuATqS^6JehCN8BR(AZXY27UMoVTCaMgz^=h7%%7ph)a5A{;F_rpJI-{lX)1Wmm=te~K}Sft@Bl)gHM%k(WDRxxRkCyi>rjCSlKZ4r^#8gB3P~vXf19 z`-G5e=n!e2{fm4Rw0V6`fye^i6~ee}l8wvw!cNw6m1GKzQ|<$_5B3k%-&s-X9~|@B zt6{zQBEu{m^Zbhf0sq$?0kW!{GitQat=LA4&_PPwQ$arpeXoI*+IauM6FuNSz5REq zr)kPM`dV+);X9UX!eRuL>hXPpm=X>S1pF%&&^=dh{hY*95$Y?&_~V}-k#922Wk`GT z?+-j9(-P)-Tz|!w(J;0%CrsJX$FUZYNOsh)!ixLGGGtcYkh?qs*~X(U(Vjxn3;jYW z2$G?t5lRZP5k1~7s-w2EM#3ewp6=h8zFN}WbBWVrot5Nceta`uc|2B^lEM^ke82W- z5X@`nI$)jhhIQQs$|V&~kwRb)>Wx$_MvOb^sEEorN4m(@n%x#m70iXHA61MaBgGhKb~2t0>Pmusdrjr(r*&yKdvj^%L1mVwjf{ap3PE9gW1>U$l&C>IRkhEer z$2_gC&rX#f=Bbath97;Hl?Vdyi7+)bnEnwSNdm^#0?M-+*CydMW8pOw1KXGCWskKR zm~$1<1yy4}sV;L}0@{?=YVYH+n%^Pg4tA1+EuRM84?3J_;IpNRrRuL#$_t#)sM53Y$&L;3W1Pp@Ku^W zF;%S9y_y$r%-CjfNxQV%54`wa{&PAUszI&$=@)&ldId^Gn)#zzh^&T6p-vVzDQN#} zjA?%_Qt5NkI7n6WZ{9Nsr(vLxsX@{8+Su%6O9 z)J2)c$Y$=N!UgM5;1}~4?*s*Cta`Eb8I2TWZ}Q|5(kb21=X8%5xMdEt|I?T9e|u}k z&D%3$hJ*vhI1_$n8N12O9l7j_-*^@YN!q3%#7IsQnms?BJkdK+k?v9n+WwZdvhiKc z`|e_cl)gYMns`62lBE|h+3ZpAia}C8@T5_bgo(8CQuWG}kWF=?C`kceAj(VA@2W)4 zk|<>Gm43Kg3&*Olbvy8|(It=^rt#oJUY2G*+?FE32mgNvu^o|{`H97~WAgRWkxgVM ze!v0P|D~!&Bi*Sel2&)h?U43LetDMO;b^|RQ~TfLpN& zo-&_CG=9xYeTd4TD%y-t;Y?XJ?T+YT`-_q}R}GDojg4wPD=URg{Jn85QZh%URgtpz&{h$_$^#=2FizkGlv_pKkku78As zlA(tC>FV+~)YCowAB5@B&OS(*V!&LDdj=@mF%y+N$Xh_GPp2g3+n*=wH{J zE}5tkbcWVv38dv!)Ezw@t(YNbQMhxbO#&9f3e3~h_6)cGm522{_#cq}>1aCRvh}3J z-Hn#k2D^47U>00|SL=DrUG4lQqXdTmL+dhvk%c8My$4K1-kT;|xWJRpG*b$@Nls=T zV<_#1D{$L@r9XCOkNQpDjuSMzE?$Y;{o3we{@Y%~HL1V3yxU%iYy&1&wDQv*;b@f4KT!?sqzN#a6Il@j#&uowDh z*XDhAz#pu?sO2(rQzln**u$%H34If%g{Gw0aH97i|KK76VXMBnt9fQ=QJu~}#$Zm$ zPzI~yU?o@c^$1%lpIC3<`1-@;Jg*e>wP2Wj&b_FER6-*imOf}qUi9QkO3!;XZ3nn0 z7>Xj2)#W*}V}Cxc_$ap^3jhT|^W8pOz_riAswjH6qR7n{Iy{E;%(Y5BeM~D)-I|gz zrrQ2@tD~#%`Dg!CoS3?0!W_1eXOtahSMgMq%IlV1 z-XDJ2e>I%(@+KQGu#Qcr6Sp>Oal})ea$C$I%%;lEwn&B zXphp{Ch?n_6PltIs@Tms}j#E_E(x9VC@l=qr2wW_U8UQx;6#@~sk{ zn7(M=ti*fH!~}_R{%%lJb@$?^=`^O*ee848oYo4)N_Pg7a5{hvR ztJ=T+*cNg8GutXfqf)@UM0Z?c$2-bSRAhqW$rG;`I2*Bo%_O+GKielaE$se?`8Qt> z$WW4$EFDIC9W{?;O{smfEC?I@`>9-m6W+9FJKlPv16Rc`zGKuFF#vv2Pt zm2VJfHxM6m=fZ0Bg*0Kaj|7u}+Jo-~h5LzJyaz3XJ{qI4=K=r3VCEayiCHX}h8Kve zLx)2T4Z{rVTAp0$q6iO6oJA}Am zq68P&qYcModqqXe!+{`!$*L7j&SATx32Co=ZI7zMHQkgz-XZTSqnB)y*4D&m7$6C} zAy@e^6>+9?K$aYlH8DgunB(iUq}ofgePSkV6jr;14AH2M6m3$0_-m&?*SY77{?2jE z24w`mX+Ss&gK4Ygl?K;!5U>zfzxo1*JI*>K=34!pLNgUxz&&ynHpFb$?iY!w}Ty%v#S%BLxe4qTM zDco3dmJ`0LN2vV_HH2qbp*=(W9c96>Um3amr0(NAXNg2snws(9Gaz8%YAi!aQf&7U zSRobv4LX5-$zyfiT`)HiVB>78tEFACvxj7e`e<+OGYu&lN^1B-Z7<}DnHr^yXbKRNkZQu}!0 zY?A4iLC>X(P_076I4rA-x`+X*J*{La7*0wFv-!Boa+-obR!SS<%elhjaq96;-PYe@ z;v@E8<+W4;rU6qhSYd^R$65iqz}CkqTRjlUnlMYPjT!ah1E>{xxx(clxWql`Tt!| zZ~GEY&ExQxnq7C@LAtF9!MA;dTyJ{1sv=a0$WM`zLv{3HKD5wQIA+6#DN3^C>`ioX zBYRHHh{XWrytDp_Z=~oCeFmK9M-}KXi+G@bLMFAgt$7WDV85y8bT?@g!gKxYEZ z9so4-L-vjk@r4xXV6d~Mu9^qNmd`8|PpR%gF}a)usztvWDKwlU!@!CE?qDe=)yTns zMbBvdcu(=U>9_CU$JLBDL^C2-V{!iV- z!_`7NY+K3*bKTbnjrz$I>C_klVudfI_;GYflKYB84fQ#6$LLFv<{O6d` zc5wZxMos{6$Qcr|HGL!7{LcH!o6mK7FX>*kU;QtY3H({@4P)F^#~GS}gL7Rx!ZcgM zTV=AaXiHUOJ}u^fjrGB|N;?PGwG=^C{}CIkEDdhd9@Ph-Uf}dVuo5-{H=|H%IZ2JE zNA>k8z-_-#voKH;u3kZu3WMqI50w}QC)KRhx3DwG^01#U(&eJ%Uh}p7C%>crib^GdgZaMVNYAowT;kFt$^?KF);*Z4G9UX zFHoxKKbUCIA*fPsEFxh_SK^S*Q8KIVZKgF{TenwL6_jB4xhJ^&_{2)@J&Q(bmNLC+ z0CADf;Lpt}7QA>EQi+0onDq4PqOe0xNa5B>LWcOHIX64|8%W@m)sm4HXSO38KaYGfyaEB2~#4Y7ReO6Cb0i5rmkCPP0H5G!n)?oR#C^DtqXx5@% z){nxz@H^_+=ns5^LyCi|Ps?RUU@R11%jc2f=Aaj&#QH3bwjYLD)6+k{mi1HC`D{(B zslO!grluB@TVS`5Hq6=kEVLGWE|^lc69eZ}jLYDnNoAL3dK0Q}L5k+s0c*Sj^-H>jTikjv`$uu0_X}dx=J29e;lC8u|%bMQ# zhtjLnT79rB#uGlvKYe!pZT6qoRK0g#zJt_*8vs?rsh_}ziC{;^vZduppymiCHd%-a zqjE@bU?WqM>+Dd>a}F-J=(!|s(?|yvc@MO>%q6eJtgNk|f@w&Xe?sDZ(C;7TguRmD z?49QN)wvK9>}Jis z-8Fe2^R82hd8l9v_`VF}05>CGfCXNb&d^|{KmxuqCkE(Fcuy*?U5u+)ReyA+s0?HH zmZevVKz1FLy2*qKTvwibku|rq7d~f` zkdkUvp82ohXo1SJC7h97%`H{Y3-@y=(t!EJ0f3T}1!Jqse2dRqAB^Ph;yvr@*o31o zl2SwWBg3D!zmM3Jmh%aT>U)7FSs@B*YD4=@&uu0B_VuPjW=f*1pTzaAmbrHekt0|HU1r03CbaA1Z!_$R|CS)%!*A z#~3k^Ed$NQt!&m&DXmK8XFNPVj}cUc5qTRT$=yv5Z$>39r7D0)0p3`L8c8hDy=J?; z+f!Py`uG>Ox4;DlRLN`dwg3PThYY>Mo_xba`w>!ww9wO+=$0Zh%NP^ZZg_zbc@-Ha zh$hgWWuyCF6%+ID5?47lqe0P3RiCtZu6jQG=Mtd<{VMG^N8#u@-x8RHK-^6ia8K;p z4ax?3_a12mLy(+9gz8vj(Om^D$*1K?MQ+gv2m{qr$`H;OW-@I9<^}@BEQ zO~2tW;XNM*0~*HU_FWG_HAKr8aRk&c@LtQ@v%6GsY{HO&k zglEUUhIIKPnkF#1^c<)AZ-NE^TZo08Ooop@gx?^1sW(9|sVP)mV=O!+r=O+^p#7fk zE$iI&U$&ZN@~?v0-1Xb)AYck70SCcBE?!lJ9|S&7Vy~3gwiQ$GTsj*}XdVB4*U2c0 z?!(`F!2c%{I?Ag1lR(hgyt*S^`s+KC=CO)OgBFQa-a+LVL(@LH%G0A83N-zCg~eyM zil^9Qd?a>EdF!8Bq?l<=*DkW7bM9V8|D169uVREYBS-n>_2=VTBr^qSP-WMb^5Nt! zok~~?Uo*!q%dxVh=u+&Xs99I77_#|Jl8-8A+@(1svy;6K5+9k`pUAZ)s}8Gx5>!K_ z?4qMy&98ss;$BZojEugyuh8oP&P)vJ9|M0q_!y=jO5}y5JicM!^vt#G`K&F&Hg;K0 z{GK{+kW`%^ zX-wk{;Vi}5tyM4hy8bsd%aGZxHbA#HFTD=jlrA?nChGHnRyY*fTjh^Knxc7_fXdFY z6q4KGU4$a{*1X@p{Yv{uf*35P`5*ql=%TvQ(|a=g7O0VN=|NPCFS<=doPn2Mes$#; z9_^8$kejR??U|8FZQJ=8Z6H^3x)CtvPD-wADUR5d6Dv5!2gF(F8`o^E!WSFE;)J>5mtFDdBsd#|{f&Pt=jxiiK2 z8P=8O#vz!+g1-r{95>O>Aq4l?w8^4e8aS69lMby%VakX9+Syonc~^|BjPqHkblP@l z?R5t5jnmfxw|4HKhwLqY){Hk|M3t2d?GeCe==jg{xj?0+Czk#%#j!2>o{z!~7JWL$Sk3<^k z#LfD|cxFwpPBH(57U5%%pb03jZPIIDru`rO&=uX;c^M>z1r`cb3x{Mg=^()V7wAuU z$_B*>(JXvDC>5dnDI>i%PZBz%4RvZIS48D6IVc7NA6dl^hl>3EX2}%H(`jNg;?C)m zlyRN&rGaIEEaBw}x@2@SRnXrHae+a#0U+Cljcy_J{+E1yzUbxI`TZz&hkh6Ex+u>n zKM(+}zL#oSf&-10`uX<%#tXI(04^jxybA*N<}xev#+8uZ5M^|xfc(^G%#DI5GfuXu zaP?&I;F`86q_L(xC8nb1V(nZw3(O)X?(jo9;`xpK^R=fhvQw1v52K`1P!s~W6(V?o zBTbXC%J+6bQ~4qfZ5Qs@@zGBOrnB!$)l`cu1j(H^5s#Tyt9f>;x84+(FcHMX)%E_+ z{U@z!Wx$Z9!}V54FL{lk#?X;s#F$bD;l9;9D|TlVs38WJrS%v7o5px(0C0gtViKzq zoOc93(2&KOn(vTuY>6kQuc=6E1UF>axgu6yy?ll?FLcLn?J=+B!-Zx9$()870@ zLmNetwN!~~_EP8IT>TTvF;2)JBoJpD;g3~kILM3sjjfu-S+%0HZfZNft!x9-@&bVEoiQO=hS`=`B< zYrCMdcMGBIK%Wdvrj&0A~US}_LRI|iE23Zqrw9s#~(-F1>TGwE*6_3Sq>sBz@k$R!=rQmPuw*+Zo?!@@rGaJ4?FVH!d`a*UzI%9=^ zL%hwIaj8s>V8*WyG>jzUo#2y?pHz6t|9Dp8!v7dE$}2nA^=gM_zOpAuilEp1yFGnQ^pk*Osol7gtbq~3ZlZ#uD*IyLa;s~qeMkY@GnSSN-%b_)X7LO_bK;kA{-OL6CQG-=J z-tN!JW1m*`tQAZxT9i6A)MLg)#dX^|%C8<3+tXP5xQ^z0lZKlhP*!pg5Frug+kC^G zzH6wU8p$Vhzy;p6{j|lpFzyaFx9`CaIrz{;c{SOFQnVUMRV#&vO0Qb;99Gz}|C?7< zzzH9Ysl!%=0i{xNS!%v_`w$;`7Azk{&a>ZAO}I@pRedK50J4!?5BU2+p|M6L2b*N?RQsz@GGWFj2{n*^s6!%5!&!MApS{NS z>=Z;dHuQP6w;_VXFVGys6d^7KRzOgc0W7f3O;-M*YF}1dX@^ zgF^&r{}h`4CO0$hsByX~dA(>1ycDGKep3zX-*kv+`@GgH$NmLeyBM^hBNV|*>wyHEeT~JyL1umL z?ZLMC$vjyf(*@*XeB-JDsp8>jf3YIvbysh77zZiBPq>3OQzCCay-b%6E77P9C(bHK z-cJaQw=pXykHM*}i_Xf8nC@U0KbAK&1M2z2}h zS~=7HQ{7paJ*FfDURWR7iYSgfl}}(gySs;!^!-mtyQSqvNFwB@bH?RzxP@l|26bM z4@Dqn+0pjxbI+K?(x66{I0iR3aSBEwFAph3dIV1m{c2dIh5xSbfwQ4S+~%Eb@DMR# zv7&{Le!*I;I4HQz3O{HiqU7y8z7h*pE9@kLS{`+DXX5-chWAQaoqEvWEAB##+9R$x%Ax`W2F^bi?8^(bX1YG+TrM2d`KvP`c zN4g#{XdjuUHNjp-Y|&{-_8Y28MkM4t%=RPiXDdsX^%GFcWSYaq^N<1I$J#d}A7b%H z?Xuq01OCB%mmnVkn+Xy|7C3`ONS+qVD^XCS53i@vW=DJ&4ewbUn6I4a&PW-?QSVgD zrXS#)>(3AopF@MAhO+Z8E&iR04DH6EF{PSr99SD#M{~#m_pH!7Qv}2Nr`f7;4Up~V zPMG=>En0r1aH9Q7i^ZjojPS$qkA;{=bP1($1W~$E8DwRaw;lhP8(TA(-3nG*Cs)E! zwcl>ZezC4Z@HW1YRNX?Rt*FIC?exx~M79Kws!5b$SopW3_F?#P#bHe8Z_3zx1jsiu z1j%dLRn$}merbbER?_U7AW#=_u>S&Bo7f-AAj6^^v*To`5fSm)iNf}ujT!pFSN$=Pw4TC~h(jZg$r}Wu z=se4=>1G;yp^_flQ*vtUPV3&4ihBu)e@MjVyZ+&rDz>ME+ECSOpus~UxCusPz6&j6 z35S`a&i>iw3-*BqBR@fzZ9RHO3?%}&H}$4hQ;1_{W#!LZMZmBHxT?!7m zpC526wJBq!aBdD~7e*uJ11o}LAHf1&xZz_`a|@%Q?nS&t8q86v+G136^`XJkGQ9?H ziu>-gob>QNPW5wXKj1$Ef$A88`d4Ja>Sb>dY*?IeZ4As*N;Rj2 zaB6(Rvrwd26v+KJ(y6az)w^ja_RjvjiTHVD2&|3FBw~Di+6d#&`tK19Y7UHB<3SCG zxl%OX*7Ef2nS9!`)+%wj+w1ZS@+Q9uiIF);5{VZszc6=ap%mYrDpQvO z1$qr=^&6Q;Mtt26OO^N(J)26`hxym5Ro)1?u+ZQ`kI+#|vAU|Wg~*zVXp8k|l}Q$4MT9Ca?^ z9q#0THy7#`pz&Eu99i~EDhyW6x}<|#4;kSJc8Fj{L3QxlVG7S>H%;?5`7UB zJr1|7FaVl|S}~<0kKeZ+>%?1Uu9I z^^Z&7COTLM98e`5x-3AGMvqPIELG{czk&pFS{OeEZc2tX6#86_^=rO-D5-$CH4|U% zb4Bv=lSyXLO9qctcsHU&pl|@G&HzI@$@0^-F0H5QH%n$N^6&atEQuxy6Tw5jo%=yq z2jS_;R1yDO&4~mJl~si@aNP%|nmNs7WmJZr?j zMR^!)Q+fO8_UqKT#UnW!i^n-#sqw1}t~0Eki^+?oje*;$RfM=3NpV3E1Xs02UVb8$ ze)l?G;8zl7)>OuhceOCc0DQpzCj{E8yXc0+t!TzU+ac}H607FmR7-Gl?NIfrH6-Rr zW3>FRxg$<7ZWfVtoCJ$9Usw^nIHTKg@9eV+1ZsYDP2U6g7d5<1;Bfv%b5&`;&%5r) z^wi9e%=#D=iZN{x`Z}sif8|HfUJ6@hE6ZIoERV)1D}PMyk&2sif;tQ?y%IoV^=#X< z{<={pQmX3m7h%m_0sd>>Qxba#AZkI*!aElvYVW=IAxS-80H0{%X6cea zJ}#=e1I=Tv$KaR@2&a$1#f`W{5TOzyD8v z4+~ld))04=h z8J$5$@$^T={C6#ec>S6F)&iBCYv&0|BTa7;_ekGNe6xyX{^~H%8_qKQLBdR#XbiT~ znfByS&>q0&;WkA2=w2VrluF-sG@px7S)^kMmLlUisR3N zfx|~6^r3PnaB-Y9s;zhdLMEK66296%0D#>2c@< zQcz1$VEZHnB`48luzPmn5t6fI%DnUcyAbFR z>Px^DRlP|horTP+Gy*?$n`(r5fJo-EBYMcv z6bhtjB}CX>k1Kc<%1=&E*l;j@Y*3F_k7pk=iq6_7`IskG?iGmfb43{dcG65v4P#WZ z@IoNikViZF^R#w$`boqNi9=*XJ%2<73eK9--g85D3`ky6laxEwsF!@MZX*(C9T2K2 zpf%~MRo>K8k&90~xJm9d)CO*e?J!#1fSXIZI{hc2(U9;IHB+9>f6TtB*u))sANt=$ zagEAL31%g{7}Up36myLy>QK!e8W9ZkBd(rr+AMncJV5WGf2}2_3&_yRuj@&bIkq3i zm6!~+KI)l1uJjPif)$3E2B)MHl4d{rNhezd*{Gx@WIqcYQ@X9?c7%hux~ zFUnlHBU3ARES}WS>hQD(jj@gX(1nl>l{Bn=KnEy)9z3`VD3`8|q_iC7Nn{_LE* z8H?O3AaKYSPPM&sJ*97Ne3G|%YxH8ZHyhb?t85kH&U#MrRt@HB?zs2g{L%M&95eL8 zWaaqZU}f#;@8c9DIx;%gzV6oo0coo8=*3_|b_iB-|Zus;DCY5vtGH~ay?cb_p z#f_nZ+*Km4mn^2iY(ag`toUX6x9?;JBEu?QRUmBrrg4u}rU@RTr|#7=;R zgr%B~WUz#57=1h!x4>Pf;X3Op{kpNIB$%P76YG0G6A|gfBKKL6IiU@f|3Fc#lkD^7fqv*Gu$3ai;;llGDptCj?nR~*FWyfK4UEX=`R^Zc4yELY zHte}sF$AU&k9K#w?eBfrBK&Do2O@X>y#)*ea(;O@X{;>Q#O(~6%fTE*$Zw26nOANU zTVgrQlQktMAh8hf4v7llr25!G8QDdR`8xivhXb2o1N#?{u*5XNPXB zP^rd7i%iAU4&s25xt2Jw+T?#bN{aQTF?E7v;8mFGh$H-CCBLLM?tMnuadrk3FF3AE z&FU>PJ1(^VDSyQ8Vc;734Mp`7oM$eh5zR%0A`?j5fU_L&sIyS^N6n=z(U(9;><{2$ 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 z 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�HV>p&V@t_r_0-Tk6c)$q3^8N>Ou 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 z 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%0DVqiCMVKw=Z%U1ST39hei%X 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

$ zkJPxxHD9SZOH2;g%%1!d^6TFu5+v>R)C5OurOY*1l|2gtp%r3;1}K?mM*WG7bHx)) zTue0_D7OOzIYzRK!v*mf3rjBAC%=tqk>*SKEHt?K3H|lq%j`B_ECqRnY%uA8masB% zbwCic4e)bX90WZa@pec3>v#CMk6~{aT+dz2wi1-%9^0`1sMIL zP!)F$ILRO^HYD~aQ8`goUe$_^isFZ(5Jkh zZ0KKdUYY@Sq(y=n`BCf|k1m%x@m2c1q0N?gAKjYN(=ZIkTC zuUofSPDYHq{P{sSJvZRyUmjoY+SToUqBGqG1Z2p^FzaiODIj2hR(y!G3bVM&VxJ7Z z$|Xr>D9S4dpsmJ`JuCK?<4&p+sdgu`5I6GYM)eN=p!`QwR?9^odp*VoWPp>hV(wI| zi>&x&0x3wbC3+$N1w0E3daNoa_uI;H@MHgl!Xy-81z(ui7FJTXR|}Nh<{8=fp{ty* zpese^dT>J*So!ao>#e~GY0mV(KX!L0%o-cAX!Z40BYQK;9Zp!f?k0iD35wm;*h{H6 z&L1e=+U<4|@hiG*W@6HvlNfKgr^z|*aX4ncD%D@ZFNz?gj%rH9+GnEY!gP9XG0T5u z)VbZMYhtq=hSVa9PGY-#>Bu!P8(sBE0oT5*JE|e&vU7XJDB>j2R3J30Z=z-b^|$YG z5s6d*_b`b^iDick{Ct+uOgoeyf+1$;zfmTgSJ*#`lWso00%Hn9upZk56Ob`S6L*oH zvdq-SzxkrBu5A6E&Ii^l#pp>z)tVm<7G5^FOUVG(+6JInPm+R=T6X@t7ULH5mIFAH zge-nTV?2NsYL*=QQK^#ciEjg|PBNCvje}iyRvKTc+il86J`f9Zx1Sp|RWUtitLP>C z%;Tc&m5{44xt|Ow(}auuW9RI=t1s{ZxZG&pUJtt28D3u(v+go!!y)4%{y_Y>SyW&5 zM1j;m*^JF*C>Q(lv8588J~4u>j{Q8&>1lL%zbrGR?v6C$0`UatXDu1suE1a?`FRMT zPyqSUr|yzNB=;{c$i8vDEuC1@Z4}jmbp}26gU(Z!8?4=T2OaY;`>XOL{$xU3mTNpS zK&otezG&?Mk*LYNqsx$2tI}FtEel)A&s-RhMMJA4ZgR2KGY!ni;GA9X2(i0>2U*N# zxmB;Pabh7P6!GOhDKx!%W~1cv?c?w-prs+KT2Ltzh?ZjLWrGSzQ!f#ipZWDvgI?P-&U;^4+BABagv;!Ij9z)XFZV{v`^yto{U|T?Kqz6i*D+)5M zF+uz>;V`ReXT_jl-=G_A;;!e{?wMb1O=+U}R|K-TfB<5}$+zn>5Hx)kl3XC>jkBv^ zM&k}&);s?9sQ;?~@NYknGSJ7Pc5qY96}3Hh7F!%^sKM+`{EW^`I12CMWv$#~40ggl zr%NXtnfLLNJT?!G)<2((VxeYs-4dwmkx`!%xw3VP+#DGviN3ZTY)7$0{~gTI2y6fA z4C(su&=|TMf|4tZo>?5uzAn^95H$7K0P$%H$T8{999l zQkz)0@Tf5g-zrMrtb+i9W{hbs$DvMu_7g|eFtd5r;C?OD7Nq?~#u)V6<|G8=3d8p^gJHa>IV5NR}?^HG#Wn9-TN zB|}$`or81XOW|$vt^+%>{kEJc1PSa47@*`?3xMCvdq15S2HU`RXEq^Rl~uuBq=a!Z zg1C%{ly5)3CyXd5AF=z#5lCeh_wMznFF~=KU!KW>NBs8z{(lbb z!xI`lQ*~+yslLFGm_wQ9Y|U7aI2XT&n9r(j#Kwq~CcNwiSK@Co{(7F8qbs0unc2dNP+5+@JK#i&`KyK*z7-Zm$b{r zx3@^T=)*YLGQ2^bjBjKGoITxQ-24`1HE&(s_(0(coyTpSHWA z30?z&9hzlZOGqniH$H7J#LCPpIk1aeJeKO5*pQb`Z ze8scPA1sNr@lp>|;{C6n6l@P{P#)Vuf1lYp1Wu5@8rg6oMiKKe+KYfZC=ZxP=f%!~cu zOi=vfd8wKx zEtLIxk$9Kew4J;~7*9610X0E$KE?Qy2|r&Vy(8II```S(@-cujU^(6th=fk6U)xV_ z0&wqowYNV32yen+bx|5*^xAUy>{Y%<-Uli8u-;FOG1MHl>7k%!+74xe^pZjO}47Lj(o0(<6m^m!-@Jg~`(mG5sg$QtPK93IPI~^C-*r%6ZQn*Xb(n=e0Ou$#G*nY>o4 zcNwmO>Fbh&$mIWI>#>Z6O%g`(fh;_1NhGMz6o)+Kp3u8Tl&^eX?XvK`c(6I>^hYx( z_0NxC6S^A@#)BdFHROUP&(axe_lTQy?%G?kVm$AMVU|WhoP}~H#!QF@nyKqjF?S4B zsipW)k6etPa#elU^$c54Ts$#1^tke+)%c_SvD()d*5jlrRZVt9SvsrnKZ0#hX5TL>5Y^rTio=FpSZHLl$@pXFN7^I`pC>N@yh zx!$djbb8IicN+IBf8CoqYi;hun{QPHxz}%J4JS0iFvpnc-;d~^{!EzN<;^|5A$e?J z4SHbqo*{3f=#zAugc44jmK}<}^>7xSmWs1ARph4_?9b}dhnGdM5*t_T6&t4c{bhcu z{idyIm^~AAd(aFG(HZY0`kndMc6aniJ)zF`{^4H+K<6HO@**U+zQ0G1az9ccq3aKr z{}`v;rJaEM+q4(yCfLJ=wAJ?5T(22z{f218n}WL(GdkXmjz9V+V{s>y_P|7X<#flV z^RFoeV|I&KGLIcbO;mu(edy;Vzr2Z%@$fA>MeDP~y&bK*Drpl<*TIFmgJFikLn>}y*>EA;)iDU2(Sv1+xW5cr59>a3Ov z9WgE5psg^JYLv`cZ}-PMsJ!>e*6?+a>TQMfiu$nTm;sU{-N?Sj&2B_oR=>Y>n84!f zF~8`IGSk|BG0e+LbqHe4`varxjY=}sn!T8>Q2uxSb?$}< z7b}4EPYO{5Y`F9Nm;m_trQ#`dn*srXYwn7=D~UMY9F~ijQ$IGm005fFH8RG4e5|0D zScM@yUF->)m+~=c@>K~oQlUW z?XAJDud+5L;`H&mq=%lS=KKs*^%dtWySCNE$beniR?*+h^+}R*;pw9_{G!6QY>Y-P zW5Twgp{fz!sFa}}n-cx|(()+h8Yc#WrP!hRY{4Ja+TTXfBMj!2%E|Olv=X+mJzPh6 zd@mXPYL=`dYpvKvhgIp}$hPIWxV5&}VVK!AEn3h3UKfL@0ki4}lsb%jfYbq(Ren`& zLjslm(!unAR7>n1{sD)$W z`pLP2)|yz9yo+34f7WUzF=-2D8hGMS#R?889kbbkOWpt!iIb1T&MBpD&qB(cK5TXA5vhu2hHke97?-WJ_rpIky$Ko?_ajMm3Vas zrkeOzE4aGV?8?oCT#SH@#H}*x4#O^=RF*Op$j*53}_Ep%{#~HZ%!Xo%bL!kcB`V9IIPC zlDG4Zn=5$-ov6_&duKkhx!$TYVTxnGNZB`duTQtaVwxTCI4INT!;3FVi@fop*h-x5 z$O;Rotgvaf5*}VFuo#npd+!1+GEn$*7O5~aaHF~)e9k;G-MqE+dH&ma5dVMrYwu*{ z7V%{+3}Zc3Wry1cWjjq81h3K^vJX9SC?^n^RjfGr?vF%Rl6#Y-UVhF}!^K7?8jzKF ztz#qiTOyM3z&6;>vLX1Q;b?_@LHr3TLgl58kDs%}{CFlnJ(|ubmeix_jQeB=3*Z}$ zR<|2A;8J58cOiQ&_?f#ZN16_~t8tIFk1FgkuH`yyo zV4K?8fRh&IM}g3z`O2?6EhYq(<4UHw+EQ{?g0dgI=mdru5KP8ka3`AL1cl4Y4KzF9ZVV#?EF%b z-D6UIRcff&fB5gB9eo&0Ml#?*7-0N}F(viYBvy`6q}vh~3A;5-=g-18f4Rfb;9@(?0aW6l1qx|=HR!-%|;&1Q*e6NG;UeaPtlP=gw*7L~Pe=vcqu;W5uNpkZZQZ~>q zk$_#1Y8-9lp-XARLNfcTcA2uB=?shUKl~2?#V%=6gHsBaY0QL=tV-7;@YScf+4anZ zj+;9wVUBD;RiOksKVpWvf_O}f=DD194D1F+I^g(sU3{-VPI->oUj|vzCfDb!+4+_- z*Suo-0fc%OF2;`CcoGd2sjdOS$E-hi_Ux!(dnLY^hEHD!pzve#T5%pPF^SqyD?94& zxXJ`M#UcDs-V2u&*PGQN?LyvG>FeEjd5IL*hn(0g_kxymA=2)deFY<;P;uCV;a$7H z+(jn?e&lkdkDtH&ZrU~#m8YC7MPWVhjCK6DlpQtcfHHrS;!tIk^-AKmlu9&Gin)fJ z;8LthT=mY}#W9<7?MjhZNm{zjjp%?a{%y7dnKR75_cX1QAMIa${5*qltlFIQn1h@a zZ)yTrpJ~cn(tf2%es{lL|4}nbtwmOD#y%nJ&T`kZmV~-rU(wtm>&u?$r&p*`3&*mk z60r1t%~TbP zVI0$ADLXs>|Lf*fU7rwKo=rzRQcu=CESoL4lxEnx0*S_|d`hfa7ub;| zr8t3qmDK9YM|U{#L_MYP;mkp>VEswg?|!DbNa!y$EvSf(lpirq}1rjPs+N|jsjHv4<;J~;b1nJ4Vm z`<5#c#Drn~z#~W~OS9w&NaJ24Ph-x14D3+ec zY+>IO-#UpUof>!TK75_E14ZS(GYgphctftFFw9*=rH@_g`fvH{Rbx<$+7KPsKOB&+ z6$Y*4mTn!XwRUd+=6EF3d>p8Sos(*w;$#RruTf_+kL*ak|M~Hp%_=RUyPCXAu4>px z$^!RY+EVb2Jo?c3yVX7yWwBG1>e6y=X9Y$eg5K7DcH;MJ|y7gdY&s zs@XF^=##tr-cZUM<+)V)m@tGSa`%D@4v55NFbHQIOQjy3ZCX)1!-uE7$CskXsf?+6 zDpJE87+CQ#Je7A-IkfUG7>#NanS9Cgu@w5K3&zb7llos|UM%nUJdh#2KQHC=hbEw0 zfZQ-%v(U7MmYzWXs_*V@cGJk}$lZCOSptqu(P%r79xqALx&~{${_0iAU-xAngNa5H ztYs~Ld&#n5+p3Xom6z7RjRpGPn3w`q_s*D%1g&>joSFx2`kI%n&Vvd=oE@}J^l7l= z(< z5aV$2)Q#KWLHa696#&a^1~V(mXU0GO;eP^k9G6`*!Y5y{+>76K*nb2!2l?ldy2iDN z+>W9WEJW~tY?7Rp#!1Ym548||t(xy*N{8bw!jS_J?Jz+=J(|?ORej%~rfNRJwYS2u zjFU30Aa5s`1Y*@gFnl{(LkL#aCzu=>WTj-~0eNMu{%oPDr8> zNy;sExf8G~%Oa|6CsnKi*iAgUKbVNN@R;f2d^J^5S-AL9eDhKcb4Y>uA-_cvhFL{e z8C*b=Re?+DTM5|Mm&)7z4|Epv*fTJFlG#KE7cCana!C(t;$HKOjZ%UjC%S&o0T*zr zwkBzA#1QNW#%_hCdT`e+M(xRLa9Vnjq5*&$$W%n{i+b zl=37^q8?Vje|(WOdBnCbe*8F!{b!;J`}D|%7>wf>62Q{3=I!uZcS_dyYRdn$51h$h>OK_K9BJZ5ijCzfiAeFYK+2+WhnKn%^(LAg=jH5xga6h5$7S zpZ)4XBc#Qw4l>dgvg9>(hppZ!A&pbn)L*mtb*v9JYU3z%&Xz4u*maIKxs(aB)&Mg< zdl&XXUAZrOC>S-w3AqmO`>jvosUPqB%{jd^+XKhwKoMra&4Leau*oJ9BW}N1)=P~Z@0#fbk+FkS zh|QvZ_#XpUP?@Po97?34TYjGXz!1FeTA_hj48c%Vp15CbywZc|@^`7j z#kuBLB&{|gmtBkuFrU;u_=qmQ9>}c0dxJT*zb*mj?~yB7H#=HLC)3zdwIqrMd@U#Q z;|c5(NUxJ#z;k@2-9$|~90knL;)Rzqm)VbxF?h5dBQsRL!$jd>r6}Y7$4*4)RAdM;+dAqFy=1?-5vV#CDrlI^`=kZw`^~tIMk8&i)k8m>E zMeQ=MCpZn(-22Z7Vl@)J1v?CF>xC@%O1IgaceE?2zCmt`A|3_C4@+H4KAg!mu(jKw zkKP29!%s1{>558{@h||Ndj=@^hd(&OU&*d}qD`)^%aL&ZK8q(I^^t_O;A==8vPvT= z!CjaO?c_IRE(@(#7#FPJW+WqKHy>5`QAlIpe>BCXnDO_Dgd&UcO`a%+M5o>WJ-6cn zP47zSLtgz(KaV%BK=z)cvW`n0CT?q5Y6B+BH76a5)dK0-1Yal#lXeZr!UnoEsx z%(Wl01qxs@@Pim~hXl$qjwW*BDyoriEphHO1SlJJ^~Ju?U|9N?BuWt|9AKl3J{sRc zM#OR8?jcw&@>^wepA}ZUoeIIc`Yn79z*Qcoz+e(d;e8oMkb%{Ygq$P~zm&Z&yNT$M zj5>oF&q3KJB#AjzIkztsIw1PSC9>A>&g(u_JMWLQ&@5bt@|BL?{Xy_YRJ#hXRX)y+8 z5OnOoZ!QJ(uf6A0UUGx|_kxd>H@kwQ7q9Q5@&zO|*j}(=D$D-=nN?VXF$hQcc*gs@DT8XH#_X{W!j`w6Tm{g{x zw-vvJ!=|4F`al1K^{N#I6XuHFQZCw-{mPJW&;cMFsRlgKK4YI-UO9et zv;8|de`55}0KGLx#I+N)lzdVbjB*dz-z+C9bmu^`Azo~fz+1J4*)>_@z3FksTZ#mx zh-3Suu>k;T5B&OIgRpSCe3U7aCp-Ptr%YC#E@h`LU8{L8NWULX|NO&K zk1fH304b?T{hE?Vz20WM=}D8LunomRZbHH&{G_FS@jny_EtZ~HBSbWt#}+Vv{V%vS zsQ+7G9Il?@*HMu@rxBogAQATP7`kJQB6s9hDb2-59+BrbEn8n?V5{X~j| zUu_4WOly3#3gH&=^ZpRx6(N=6;(fI!G)LpE$%1;Hint*fC;p=aw^m+1a$?uND=G)_ zI}BA&EUZW}I3ZseE1UB5Gf``jm5W+ngSlgcX~Eigs%XYrBV)|zFwa-j9Vw*);GJ4j zIjy1k8)s)=OV|v4BnR8JW zt?NTV5=>MF8-aXBL8*vCL&9Jc?K~Cv1 zb80*%bL#7CXrj>U{%VR7eNR-DUibCW<~r|?>3!F{rnQM7NtF2CuYdVI|H9baeO2-S z4~emCl0x1wc_;wTLL|)j($RLj>bU)4Xm<%1bY8T;Se0DybK>?K+h@xWzXYzsSXry2 z6HeXw%Wttu1}2gJ>^}p5mMP4h5F*kv_v`3ochWRWRCKD73~0m%INPoWyZuJ*rxbte z{XLofb2aqs^GBH8)KnRAwhRkRKUm&j;YV$X3JUpdW(WEp>vUz#`mnN(OL!q!$p+e= z0u>aBaEEkohS4sA1AEENu9U0oeA)Wx6UdCw324Q{pdIF!%l9+@V9DGpz-6I#A|D;9 z>P0GVK9nLsrr>C|G=x>=p7d=k|QdUo7a{R z^IOxp47_lY!Y zb(F}sS>pO)aPV2u3MFs=d;>scp-f($+oTHr|NFlcXs9FQyvHf2y;@l)t?ZyH{!=%V z>bQV#!IyPGS9sFq{$zF#-A*#oiDx(K>UfsQ)icjSAF{{Kh&k8Vf`oD{a&c|%{jP`m zCBPx;1}bm?4ax@1KoX2;Y|tpMa=J|239iwkzybnzr#$`ofD=l4-SIJ0^xMMS)n{N> zMEfT+5i<_3P$o9}|By1wljL>TxPHh*n5woK66)ka=o!{0mb?qkws9Fb5!#^6`WgM6<#vJDiOboWwyd& z1c1+C4CxGas6qn)77}qWzdOQ}*$ionW5=-nuuF=orm_~gP~tK0_TOWUiNSxno|4~U z_UanHg8I5Mfrd*ljeNjYgSL$}de-a8!ifkRRRE|-qT_u1p+(OYT^#!bwJrwj+~yl6 z*r;5t@n$=pUp@b}Dp@(AkuXBcyBnGn-{@l$m&}v-{i#oE?H#X{`B?|)=D+y!77aBO zG;xTdFVu!6(BD6j#CINaNviPh7tP?lj3K-@O?l4Vkz+a@p!xz08}Om0z~i0-+=^mFg0belAs3}|f6#E9Ed>oWjOXMLtl2r@yK(-T1vw@fW- zMc^7PL@>$_*^!K6x~n5RW{sCmULqV-10zuo0*ktJp3MzHjxB@KPhnm5)S|2*#GE8{ zr~9g`KuTFm5;Y=0;FzT%gGU-#LN#dMMmQ|ZU5$DgP+4768AI$T~ZGxO; z3zx7$+dRc^`x_r&7Y7ycO?(g8zE($!dX6eIF7si% zF1P4oF}DZChW^E$MF1MWwer;gAlBL^@Tty&YwRi_$(J}1BO7uY&@gi*^>2i}+ z5xnv73dx_9?1LYSDfCrRWKn$}m{ZKw4ZIdm5256b4=RV?i6=iJfExNa3t~gyk)-pu zmE4{~T169;-sZqPL25}d7*2Q^1wlOO#RK07_#4Z`!k(heeeo39lkBlBhVgM5Xgf>oBn;Z>VMDIj-|gBz}f!&X3GpFa7JCUbP5 zPMz8#45nN?xgrggm0<+X52EuJNB!^IcG0-Jko_21Lci&NS$FCzVhK;JGbikklH+?X z5FGwTaAFw>9WAJo;$pWz`6q5`L-k_J|L1>v0H_S#2RGRgLT#nhuLp6Ecs3)Ws{4?1 zhC~#53{48sobIHOM4y^WD`%HCCxk9XWbCmai(-ZIy)~tBHucR|LIctk5?1ACfx%eV;r{G|rN|D%8OIkwEE!2eLd%)b(ROXpemuF7TopN!6W^ zG9x%$ zCx)aP^072f@Y!fA$jCetjNE#KNqz8?gBl;!1Qi+`7iZsBSkg#@JoWeV=dbt8ODU7z zB#RZM_)yrYo|PV!@;oRQKMCL2(^t5VZX)TY`q$qbp$$!Sf6d=KT>mn!0t+L>+^e@yAwDP7G#({f-~+R~VR< zbi(a>a7Ft8w4olrl7Ou-Vwh`4qL}Gc`_`I%>AP(`A~s1Uy;Z*Il9k)6H){;>XUfth zu<5|9(S$M9*k&pF{FM{^kd9TQm2Km1L9aO`LxZw#By1rQ0vij-2%PJqVfTvPZ+YMN zDC&hHZY~!z06*V=Abr+8Y{BfWqW37)o|Dv(~LQO zC_KuhIn^*-{T!l#S{{8ZH;x&bRUb1R1AuZ#{GFi-mYG2sHr))8sS1OeUg4-xXPuRk zAu-c<9A!SfY3kv$k&;qZB#fcoL}OMB z)s%tz9d~_~xed~F-}C1(XtW!ITW3j9XE0XMOOyFaeD9@QKP>NSNZ32C&YKgm!(5-? z>A@yDv6z<0$gcKA@$z>R?XiCxx{3+Rf+e5r~e)(X7I zUNf?Jl@%TWN~fB4{GM+}tw*M6CL5{Wyyz`xWnkJ>{OTx_fIoR5u{IZzC&g?IGV_#M zXoLQUW`xydp@CIxt)pQ54*YRmS*0ZPF?y(E4&PiVm2ga;!6Zd)PH@u;ZBV@Pg|c?t zF6xceqB~}#7lZkFfGw+r!OVQX0aY?eEOj;&ipo>%qav+knIoVgl_IU;exGAg1&l>H zm5ZT544knC+*otwLJj-0BM+|XstW)0AD!C)s0-!d2_dbq7Q3dm1FH@G?`yFBtk%!* zvPSeG-tWO8?wz7FEs#tv^Wz(v;3f^|0%LT%9)N~-C%|EZirtc7c0MX#<@68i41gq?uyJDCm#Ptq0Lak#%sR++Cq~$2J`DTsUe<; z=Mla!!98l{-S=ed<`-PlqpjR+ujD=vWQXSQ^R;T@d3&^M^E9UZEt1YQUaF;%;cw&q zT5$5`jsEZjxL*qBOCp>2nP^eq#w}7+ln7YGnWJuKayWl%+NPVrfZjVjnhT?E_mRwk zIy5$^VegjaJB_D_+%!`5J;EWLBAFaZUAL`ROFZ~w^5+eh3r< znIYm0SGg_;%-0@Q-rmNe zsmULEJN}!+7!-T*Ao3vyvmfuFCg@rKx^T!pZa1J!NC+>7I*m_n*N?M<+V^n_Bvo95}2EaMq9 zRiC=3jm)rPq`&@Iza98|@aJ0@F%d&@8v(KeFxFy7p#mnEii}syeLKDO5=4Yqhjy{sZR8>(ifajy3;De7~Zy6wq0*tNn z23A8w$+0M`%|B&Lx#naX=TEc#!~YC`-byZb?8|Oi@<@LcRDGYwZD&!P*L3Z}a~gD( z!>^#bto(AQ#38E0yRzrr(kDX_;)0V>Q*m3P+b-SiTfq!i%fxUIjyR9wtQG<9oNgP~ z{3k9*c(nj%*mu{nqutHC$O2+hwiQ;a!@s`K8 zY}nNObkM{0Jk7IWw%#>V_OwP?3KXMO-xt6fI!x&Ek4n37eMSOe?2*kz@suQ0Oa3kot+Yc6DuQa4M|#RNJM4r#Z3-Ba znNGgO;l!dTF+Z_!qp|1JzNPmnJxb9iC9=Dm6&foWfgxL|CP z!~9@fXoypkfX1LG?X;Davxzx^ChWTk;y)Ut=Y>#A4)u5Y9VZGP`_~9{nm6P*5|R|R zqVe;7R4T!<3&!3dUVZ@C(AvLtDA0n>+>e21sLtDA5-@jrAA~s!05rOeyT%h)A38u)76SaFzrIL;*KT__yVlr{EM$iqCKi$5?&sT4p3eI6Lb9 z`R5_Pl5P0$XoteuRL$cC+gYE?Rv(_x9zyk1Z5RIbUJs^UUniCtbGI@d z3cRZ#Qsiq7`pV8faGt!deyd^oEo{CQbDdQ-fE`CxjJb#ftL*@mylH($V|>*5F5Y== z%f}#N5_%?%UXGlhhD9ZKi_X0iAPTr-0S`l+$h?fm(4E)YPq(uSy1xYGl_WmWel9cu zjFg9QV;r6pf*LC zDf-`@!HZzuSP_!4K3@2DKhOJR4^5HYWO^Hq5KeZi7t9=fc54_+{|r*3p9!>7%)lH& zANW|}$P6rcmm^4hv_M>!PK5k;*4`h@s$7fLZV3~NWNjXtXq8?A^Zl}tv1m*6=6vBw zETjtKtT5)+%&a(>i&wVx8u4}A_klNI48{9;#Xpg7V}D8m%!P5)DH5M8Ym=ZNKP7_X zY%WS5^8-)(W7Se&5dzTu!Tv9FKw-fN8!=^kQ2W&$)PK2Ml+vL#?6;~p@CZ*Rm9=@L z6tN!2ppaN(7D2jyks7fy{Q0g^%|FD|HkXAD&kggL?IZURyH#XXH z7hgj+pH3*kN9NVdqXog>yJfm-1Y%!of5ra5F>%NqzCBVTF+UWCkL+vskU?{h00k@r zZT02VM^DOWyeMNbqw)9@4-X|}Ir|;%Du^Zye@$W2I->!ARFF=1nCBks^|Cd-y++iK zp|bOlvwP3`IkLR0|+zNQNK9f6O+sB5l(poW$D8Uk)n2rfF7CY`v8Ali*kip2^VH zJnfx1Gxaa4ZGAFpM0FfUbC%%qN7v>9X1CX3)4BP}{7l%(pS|PmHI=MiFz4ZZQoH~g zpjAZe26Xu@o%pTRC`~C0#Y^DFp#m=XgHmPXnEsDH4)pZF^dbj^yq;PQt?WQf!c@Nm z5u0(pdCkGac|v@4?Nrg{V?vsw#+DT6jHci$g!*0uh0T{pY%-m9N-_!0-rJq0J=7=b z{IY+yU&l*NfVu6G2O41V05-B2c+Hdt@u74UUtd|9R-Y?Y)7Z04mq`BO3itcEhtl}N z!L2ac)a%bS-pCma<8#q_CVnN@`})O>*p+~t<7c6b+D2F$h|;gols>SDSF7fFDXA9d_eiwOU|XR!I$%Mg^COqeuP6 zS!yI@_2RGY?%#}7qlOL5iiMZ~D9dHo4-)dxypvkAuj+`_rs+n z$)h+cj4&qq#hRb@J1v(P?szN#zm$4lua|Gl=WUzw_NOaFU68_$f}fAl^{~3D?S)9} zBRtwegj64Q_gFrlVSk7j=kulp4+A(l9SI;|#?%MYImC{ejcT!q>C(mj_&1bK0O+vX zoEMIXpxMC<+Ly`qL`~Tin8Rz@Y@1=HF<9=!F2QjfuK9K;Cn`8!Pf%J zo{~*cm1Ars@D%(NhOn!+nB4PVAz~8yk_gTpiW+v;FK)dlNkQ;VLTmIp(m=j1BZy+- z;U7Pp95Tx0sE*p=u2NwQiu~1gyoLOPQNj*ijM+(Y znkr@S;NDw>2FwNhJ>#a7i3J!Ufy)437LN9~uga)|J|E=XF7?sud-QQ?ku5`U+1P@@ z<0eT%g=T_&E^)Sr@M`kcqK2=*UQ=QMPrbqW*}D}>0x(PLS=Y2p1LKY;*4gTxg}bIa zX4Gn;RuBUv6Qu8)Hgop;MkRPm8?W9IEhdRodlw&4dI=~U;nqzk@m2s%sf4Yi5*sd1&E zypnDcD;>F`U=a7#%Y9JOYpD5wrDR>3L3$h(KICn09M*lmaMAcSq+v^elm-72Y*Rg( zZ-ETFm`NIXJQ4*Yl{`xdvZRhWwjl2nM%>e!IP!MsGm-)Pt8g4ct^H#gtuR0 zWTvCh(W>9Z6raI7%TMOz9A=^rSGV6p52&6n{le-^gK>Ya5eDl9bc?OHulevQo^WIjX-14tM}X8dDS}mMsQ-BEyEE%j z6)U0r^uZz2@rm4pS^ySI)05_-Joq-SlX!-c?j$)7uh}^E`b+kdQB<7A!7M_ENv^hZ zCu0(Q@ls_EI4s3AE@@R3nfE6?e$_&`qQZgpYB#Mp>kGYZ`rj8{k3~1wd?l7NZ$aiA zBJfoc+kuTk0AFF<51G836hd*NK&4cZ#rc2zwQm5Hy6o&Cp^36NyC;o9OcsIqPrd4V zN&}H1&$hD!&vqY6ezx6CcAX_Imf6J8X^#$qm&99 ze(ue$GqO27JddryFxw7&;n*=da+qrsS~MEE?2=V^OiR<{ptv_>2!B@6nZ5CleIC~c zrS3|fGVvk{;%OyAKIGi<(T=N^AzgV>@Nf99-^qe0G*mu}2`Rr`bu_sW6C8%I$}Qnw z?x1pD`u?>=a*kURFCg=R2=FE(O}h`zM$YnUWCU4jY^-Q^#yKldB4wrO7S!M2wEozz z?=KBlmg%Vv$vnf`rObXrV_)<9`79{Veuz{6vr){U6djLf8~}yrrN|lddr`1RLukbG z?I(oiHAQakv|1%t&DK-M$yl+=QGE2|@CGsZv_VyDRfwVV8}AX=V2Gu~@m_$WBwnR% z5y5RQrlbn=d__$*F#UlD_xtMA$D{h9vDy&*yn1{zIO}H!^<6LXjDPX}AOgB2Yv6H& zn6q#@wv=^gOIZG{)j-`2Q7qyOx`1=!qfLkqf<>jZgYnvX40RO0s$Cf_gqFGdIdE^r z-q*ln+T2h59q3&%j-7?2veSAocLJIUR%5kaFqe2g0m*+hMerO)xt~V!%CDZNNh@snpH#_Ks;hQe44Y;%d?~Dm021yb?vZ zL%c6{*)o!;nB6`kxM(1@R`4#{FNo23y%4sB&R*nZV=vzw;oEi=iibc0g~pBdE!)}p zc^oyLc&GnRu%O?r!{GEs>vd9mc&JC7pW@$(Cqm4ci$O1_25w(jB)!q?E@ZnRPHXpC>FDwo9{QiuxqgdZqz6UM;$dXf>weV<+U$$2Ow zuj2iG{?7wIFmdry+Yh~6eyYDJ)PKa<3zvSu+?6P1hx7gpX2OgJodf~coC@C* z@Py+s*|3bY)KT*h67xw-B_^s-jaAe{hGZpyMTr0Uih}D`l(NNKEAa!~*xY$hAmp}#hMWwo_K_D(Gwak=_7vSHeAG1Z7_^Oh}m`C5PeN0 zd?si3il&6wtoK%z%BG?h(}q&{z9$dW)J1m}V@Gt_WQgXxW;8t`rt6XJur)M}>Egg1 z(-$^mw>MA|!fRid{%Op+e(~b_vsWwo0k4OCkH&<3EUJzAw$Uw}Tg*>#gTW9Hkm`z# z0VD>7=!c?+{YJ6ncLrO*Jw88W|Mg##526&O^ycSx_(n_)>NEu%>k>^ARMe8pXdY5k zyZxtpM3dIaMU;Ud*78%ng(2#EBuzPDNjiItO4T_e`60bU$~Y1( z>x97+MsS%vKcd$M0E9Gd(_x3k*bI}(^2}#RtFDbvx=&}7<;p|C9~T;o>pa7;m4(eK z{AJ{r#=Y?s^>^Pe1xQfd6}nIZ>uQrV;eDgY?Rf4%kuFhZ*t+AIIqS^;qz@M-^I>RU zwe`CvlMB49;O1T4p*}H&(%^K=K7gUlUQ1e@De~Mggzr_8kn}+3Ben9lb2X73GG#e} z_k2A;!*6mqZ%fKtWHm4_B*Ycevc30145Weh4~wm|{KR_7`u*u=m-+y&k>yPjz9*?{ zM^geugbt(<+19e!140mSO*d4Ene0i^rm1pvt|2ms>1;S1?$nFzTbB3aUK?Yu3UXj} zsSDMlY2Ng>1_073U8yv1^c_@}R!EqlqMpm|BiV{Jr3p(ux6IK0|NKQm<4^{Rgu=!K zxSsbN*exfTYo!PU1NzPB4w7Stwll*==Sk(J$Nt(!?IJqN%lQC9W9Yoi7Kjat8@tTl|b~9%kwKWnaFWVAHDe> zNmm&V)%$dprF-cRbm{Ky?%buj8ziNEC`)&DcO%jz(hVX=NJywOD6N9PzL)>IAMWz$ z;ofs+=b2~b%$Ya46T`n+^{XR2kuz=B?c-Y_QZG-Pvx=4mlVziRYn9=}ksoD+YtRjJ%dzRokZ`B&1G{k`?Iv{O?i*hW08fp@wylr(? z-$9#Nqfn|bC0Dds1q_PU7WS!+Cmaq%B5(IV=ztZWgD57d^^?m+ZE{lUT{d*ljLex@ z;lB^_p!=-2>FSZgujt4qaoxAo*r)i)-dUd0qu|m3IfO$I-PP9(Dac^izL!mF)e*|f zQE5)Uv-04l|A1gx)35mN6aGh$wja2(GO%e={bNjiIAK`gK+jYfDKB7lv}|>mIPtMe zOmI#8*>~xAxM9JIRVSD*KYE?KzX=(pwph>f(LY3`e)=&?d6YZdIAKfYaRE{cU7I<~ z6;a9UA^fwwuTrJ~&#I+MX=?yfalfGel2SzLQ|Ddis&5jOP15BkaeE!d{{DXMUzKZYORRk+9HS;h2ngEqxd9SdHW7R9y5aFZh(+kFtGp-&v#(ExaO;9)(`rwP{ zqqCl=a)jIkHt~I&*ZuFS?rF!~ttWShoINGOfJn^PdXR6M;cTgm0r`i&ow0 z=YOq3ejWNY_~=S=Qq*#8i2+&+1W9cj0Kl`msqZ!sE!_<&C)w- z!Sf(}UUt8ks4%ax=n&Vkukr{C4;udradwu4g3xgLK!H|+J{aKCX#5r8!PQiOqX0ak3zg%lknb)VG4MoDm_LJjocJv31v5qg0~322Pa-J^$M4L96N^h3878 z!#3ydREgky{QUIEhD5(82`XjgM9-Lfs_teE&-9vAE*g>hMO)rFC#Ql}V zZaX~vYh%#3{guuDHxOTyVt7MWP3h=@%}~$^!1$TYH<6~%9QE`+CC+p|3M|YjDj6=o zUStjcX+pWAWdF4n$c!B0M0sFI(93YsSy8!g?zql~znEp;(}M$Z_OmkGRa*HtR-f<( z^nYfhwO#f(2Q{7IX(eq7aqj=g95g$GX_T-EUc`Gb)Ei@Q$JRrjypTyVx)^mXr%dW+ zUFGk|?U(-kmenXW<5bJDE>PafSsE{kIQHMeI71$zAjTDm!MspeLJZKBW_RLuJ`&p` zIv&{}V_)>aQc;qA=gd|K0_?0pcH1*9-YwVW8kb4;`a>s2i5ErGCQ;8;Ekhf5-Mk~j z@b<`F7Bqw+x2*vcPfGO6D_h1i!YJO(QokT9-FI!QpN99{It2>7m$aG}BO4PaZQh%Y zaV;80l1{8m8`U6TAH>t-lM>ILY ztjhozl!8#^hbA&+wvc#ym?i&M`dE&Ft`~L05Leb)k>aX2t#vBJ4?nUJiQUumv0&9g zJ_q_9ue08(N2q`LYB|}_LOT5keztgU_*F+i>A4{t^08(VQ3gmlfzU;X z?Vkx7ia7aU;c!aH>3uA_%*@1|M{sKa`?995L2lO>l}7c>?ho5tNRd^{a-l3Gd3-4H z7e=)#7LVfY4&ygQV$yhPvut?d?t^6UvnfV({RLR5=2}@8J$Qz&1g}iC_C<`>`5{gN z!7sE+jHO6C};E8zpb0(bMe0FcW7eQi^?XZK+bF z?nDdQs({s#%KxH1;I|||p}`Z6H*F!>`ubBjAb=@GN6F37dZmzbCn9~X42hla4Y|(a zL7rL84T=ZJg0L_^UeCRf?aBut@bK_$a0hwSlp|w#P~D42BB3BzCM`VjF}n2!_zygqY$}wR7_P@{>a3!=BnYl`hYg~Z&v#!{? zW8yKD&0z}E)k{|dsgvCDx61ry10-%(D|B(H%*}yA5LV3>`J`SB_JxVLsi)6EgQt1< zx%;=p(M8g-Fz^_5Pu0uC7$UbH8FE884c?5%D&#+Oo4ZS;jWf!Fb~puC9GRQjBkSLo zJG;7saXRLJ6tvB9$F_ez+#6ngi^i`P&}e+?+jlD(&j7B$OQmOIVMH5LrtnaDP2`Qt zm&w!fyF@FM^Y83#<9+%3RxQoBloe6y?B`Rd^EtQb*lK(%%!T7ym}u(1$33W7qir&n zhLR|`r+R8GPQQGXOU0wAIWV%E?Q55U&kgg9ki$QJdI9*PkJIi#hg3Ymb~VzsP-fk% zV&E_(67?SQUWUPXu>0@SCtxmZ(NGL;tnGcB8j(&$lT$vxo@ z=r2j~X`S$>TRYa&P1~?$;{^67;W7HfH9S9JOJgzB;w^u2W2nkjy17E9xiEvB@|J7` z&d3=Lt+!b5?9b#mSwSQuit56jS!1E9@2LY;NqpQ0@85*_N-MWHoUg48ugR70Am8|^ zA_~*^j4ko%dmA5yw-MuC~JW8(=^{KQbvxPP4ThQ; znFU(;zoh!fkW6@~$9^f)?k>Qc{~OROYJ+ma@%)*FJ8GX*k#Ij7;jV~>bf!)c@&=5? z>Wyi_+xA<@AlbFaDRXf&31NsE_2RsswUyvh3zeu}jP`I#`9=ZS*>Je&=U=KHmavQybvsh4G&=AoC9$}Jjv?$++yj|*PcLP3>rG>~ z$yW$WM|-J`O;qqxV}|;bHn%*3T5nf?)<#0@9vXV_K~tH(TUI(!#g7&k7$F*r_3=4_ zomut&FNl|2FMecAoU84g%JNZRNu1^jgP>ium=;6hPx~f#t+!%BGZ9G&=`5hzYX0ZS z@@>i@rkZ^ye`_#IFRoS`*+Gyo+f)jk6ifI@nd-{_Aael&;_C-l8s&lQ3;4?g+*lAA zkUrSUu?(59g~qMDOd+}y~%J0CH>5tWu&TMBf3ju+cY6enMcm@L0Ji^`K=>LFVR zl3R>RO&5hZpcxqhEFr?g448%#GQV7ogVzU!+( zlL%U4`-AO&!_4q5sL}fsBxSnlL83W_%W%7me$(nz89ZN1f7ago7JTvd8Nc70&P)MyT4?0Y`h;u*UIk7Cq;_?yY}1erGv|RH>(P=i-_D&e(IGf z(h>F$D0V{@hHa}LcgyO41DHW+ZTlVqce04*-*MH?;%8ah0hg3jagF|#eNXtGBEScx z#(@5yCRc|@w3f3Y61!`yO$f2^>VzT9hfmD8Yyp>d=R}XPI!824 zO-T21cg?jT0XC-j1VqF8owm?LLje)_u{@Cs@^5V2$O|CzR}KuW`Uto$vO)Jx*Dcgb zhLQ_M6P=&)PjHh~J*sf?F%{cin^v6$l$VRO7)Ou=|GesK zHCVDFCL@eXCZ%9`Si8`u-3p1_KSW+2nn_d9DL`n(%C+A5Tf%b|M58zOraUTnOFp$R zY@cbtUmei!Y1t0VO}{zpe;;eCz~G}HB%Mm_;^z{qF4oDTi|yjJ!8hoC)3sBV&#Vt5 ze*!UTc#=`kT1~Ol_2LwIYK@F-C>VoZMIJ>{Ft8KbihhJwZP*+{Z>e%YG_r2V}YRtpLruFyoY zcS-$>Lc=v5$$D!fN)VWjFN-DHtp*D8kA=iT*D!cJ=(KRI;d0fZ(LvVa&^T}Cl3@p= zU*z34XR#|r4-T8Cg*>F^?SFX(Ha}S_au3b-`N%8|p)cduk=$K2G#0<9cZHWNFqK}{ zi25kWA20-Yr>3S@rwd?y3*U?qG`F03J{r-?qKjxnbx(h%Hx_Vdj^>9R>FZli@m?rzU!`(CY3f|voz zqXDgRDgzy4J}x&(W^ zSQOqszIzP7I$P<5^>^V4RVN*<|3(Na6-$;6L^?dkfLT1VW34NfA2p6i7>9z#OQk|r z=3>kW2J;4@`H@#RY@uLcguNurs#gGmmwRsYm^E?0*kE&v&Os9*Ue@+#5USv4tRbv4 zV%U-dgrZNwje`b4$VPw>u%WMZ*p(;Ugc%d8Axq(GCb27T*3Ec$DQWEm1if+;i%fw1 zd^m81GZfht>23@-QzVkvBe^DB*lmI-E}{=riiN?AKrrk|+>odsjvAynYYti3mIE=r zw5K2zsvV(G5OrD{UKDm<2wsvI8S$0ik`NJFGa}Z}@EY|ylm!VSpYR9jUlTm= zw>CRqlks59nm!P<>H#lRKL{1huoofH3_?q)T2lfO{ehNR+p}_0o1xK!{FszXZ9rSC z*{SZ}t>&KTOJtvq*U0l>?j3AIePv+qg;dwUCT6qCd()!>=*kSVypGbp6!FoW*s>on zh$meo<(f3PG?faK$?Tb|+r8XKBM$&K(3l!YM0q?uJt&+is0!%@41Y`r|KBwk6x2d zbXZPNbB_3B*~Tq@zMl(%ya_s$NY>Wt0{BBO&~qQS2g_8W!+wHlJUu)Ub*$7!8$hXk zXmWqmRXM4}%#2JDmmGv`QWU6DmdRr~fl;SsrgdygRe6L$S2*=DD(`6~s_=O0W-B6m z;_Y&uZd<;FdQY98h-Vll3ssS$5_hCW*fVvv_tLM+xYQ(z9@J+PHJOKLEYxxMcD7E(sS<|GfbDwt8?Uvz!n11Nj|`qz;w#=7 z|3tdOZBE;av$SuIJMLZ1D9}p1QgN*);~U(xK>{umj#)yzrJakw(jZzj#(GIFur|g- zz0I_Vvv`H?9tgAp_rSdoY~xe@gwLft1tn!tKq5I+Uy$ur%Yp#u%nmFS6#Db!y>X)>=$3i+GK1;a*5+XX+r^+nrEdn77kXJt5^RaycJPWo>J=FGlNJXn;U;g5) zs@!M6_MEt>X>qFU2~9Jq zAk@5Uc%Y;-LuS_Jj9CUWb4%~@zCzR0+F7BuwKxp?(7~{9_Z;MiC?9Ivo(&T}@E8~% zZZB|TY?!pubM)>Fot(DUeY-~838Fa!AO-X=!N5rx6FOq$&qc3(*R+}T{_JtkdF+`e zhsM`pM%m#J@V9^25ST&RfPqk;)F70XR33EDHSFy2Os@oX&T^ie2SK}ftuIM2@OauJ zf6A7>DGr@xQX2sT}%+g)qj4OvCyyp@V8Gu*xCxfVMnA; zwOt%3zWwLel2ckWaUxVo#fP;w@wTCN)7;W4m89_Wp@=rV%_D28U7(ZfV`j>k7yJ^1aBw1c_33PbHj5IE`gdZuk*t;xy+JT&ZMy#IE zTbuDk!4J%gN^u4+vQIqkv5B1k{WV4uS)4tpT5(Jh3~o$pah@6?qDbC3Q~3&7Xps`J zqk$}Y(n@SX|G7@;^lIj^2}!c01_#Qa|lLl7B=p! za3OAops?GMX6~qCGK{0da{U!t#qk!<*}Df73J4To zY`)a_gnualtk17|g26ejuhNSnIb9p)wE)Y!2Js0O)&4FxAd6%tEHY7*j z5txE+^S>x((?EkXR0YDqn)7rUoLdw`Uxd>`*30qe|aTZ=Qc__&MkOF-35yVdmDrI+xmPwc%MP-GRxU*Oj_@VXok;$$lT& zfGYmexANgoB6|CDWY&EDbZ>iwLonQ69QRQ?dp100iDZmjUx9^d?z}I^TxXeRBS?SZ`;x$7L9rNU7zz(SA6>+s_MXZ!g8VDt-Yi8E6 zFmXF9)R-`oylZa=uRT6)U!c9N-1V$!{MS;>xAVF}Q#DoZ6&9*S-%&5s?H7cb=N&{Z z;p2UpW~*@<=YJcS7FrDvk$~Xn7)2)Rk(g zgpM>OP-D)(_&$y60v$<*Y6uWmRv@aA;eOHRS#)?yi{Ms?OURtak^-VwB6iPL7vex( z)Yhg%$iq&CosNeeB$rQf-aE2`7!0@kOj+tn9Nw3}v8leb68fM?b62&Zik&10qG6@M zCID3QzwviJ$4uX@%8ehRt@*)+&saUH9al#}qvdb?ai0%RJX^E4jC&~MRgJsPmkV&+ zWf+}i)nog8^k;{)!}C9_BSB)5k-q_3OG1tZLkiQ%u|esT^XUT&HgNK=mlU7VMHT=(0$aZYHksR|}e&L9GL_Uxqk@IB$x9V1) z(BM6vEZ~QKp$Yl&vyRJACo{**H@RdEP{B%ySbRuX#{TB8Vg~zFI=>T6rpihA!Szw7 z)yKEL_|VZ2p7V;$SrE@O5#@M0X0QFpv&x^DpDK4N@$sh( zjJDE*9a_)24y_KA=aNcoQFzDh_R=2w8xh0~H7G8Wn9R1nVfpMam{0a^1OmHr>Kz>s zoolJoCrR2?Po-K})ijS^@MIl({l@FpL%fp9=Slx2ufos_f9L(}{**#{_p|yux31_- z_|Tv}H>Pg1x_%IyeIF7ZGB%&Rgw@&tD?v8eW;O{Af@TL<%`jn>S`n()?27ofKbj*K z(j&@WzMxl`$}ZrXnXZ>c%$cG&l1iI)l=wTc709FikT((;<7#lEi}~vu&8mi1D?dG^ zY~X8A4hmNVr~^sm_OZb}kk5_+medo(>tzNUqpRmC%(97%79BtT8>LluOFmAac^gpv zn)uky?!!N(v`6GpBlZV%Smow7Sk$B6D13DTl$i=Fm4KDcr441->47+K`X(jbE7zAa zsN%L(34JeEu1XIxTVNuT;PaK~5TPUwg^zF_sy$TOE+=i^X7cG#j@gSU-!td2wEAeDPUmN*CjllDd zbtW&)j>@o}@OJ}&jYSLq{m(f~=Hs`L!~ac@&REpsYF^O2ICdUPZh8iVlH@IURGOP0 zcZqS(22px>yIcD>IC3UfG9pLc@x5u7BkOOGfN@1vL&4hqaT4 z=tJMA{Y|G1k*rIG{JNBJ$cw%2Ps$VCVx4Yu^jSiyy$=rtLxFwhto{5D%r7WD^$>=2`Z zHKc-{Yi#t=uzJ4zhs!O2*j4p7rJ;IKBF_)02X~(TCajy~9O$p6RwIo#_*i3nq_47L zi#9G9P)c`j{z8M3_dC-;jF}lUZ*aogoKVrz-eamDzB+11B#r0163h1fA?rRdXPi(y zQ+MWhvV2_cX_;b9|#YbGUy)`=VX-vM`V|uwZT57!yzg*V_u#1sMX`wS zPHewrd{)(~#806|dy`+3u-;9!;tJ?ZDyty#NqO01F&tKEAA(7iJ z0J4bs3TCcU2oMM+FR71*rAXGX6t58OJI7zd++@(f`wo_MlcB!yy|M^jg*j>O^JwAZ za@A1Mo&bMnh!h=9Aq3F^M(z9QAnFuw^vK4q`&|~u=UbD-_u}cXJ>d`Z-`R*Q9PJZZ zYgGqxN`+gh)m8xdKQ3Vat;6~XXP$%RR7&}FbC!5(KM=($galQV5o5<$De>YnW$UM4 zIy8JfE!&A~RDu7*WbxcnzB7(|Nh_Y(v1%82d_$@$!xh@u5D89K)1@8}@f(4BCl4zW zJ;B;VcTcA*JI~gO-r<~8kqM_b>h9RftjggdQO@y6K>KtxFHwl_3@FdJltBX_F@D;J zuqj2DDnVQgo(fh7G{5)dBNww~2`%~QK2o^rMT7<&IW~@5J92dLFTI(**Dqo#{TCL# zpnXJR`=^fKzf5-%!u^0~awGmSyJbllQMy8o4k*1b3Ic?M3Zj_#^{sC{$FgYB){k3I zaF})qf8RE-VF#`9h^Nglpz0JXqoBnmb$(MxoJ8Z|aQCOB21m-X>f-uC&2GC09R7ef1Z< z{53CAoU4ITOFu%Itd9O^D5q-ml8oOBj$^P5hmCt6t^QH4=<(gM04+*1=r6uIDwW2u z2cyE!HR<;bi-~u0(~L76TFA)chpFQEO$)I&f}>oFzZicBJbJJm_44vt#=yyzpfPRS zQ~7Qu>aa>HqJZZJl!Nkg6Lmtkf59pusYgD>A*+itrj-i{W9Zuq? zKu)HD2$G7N)%jlp*`MZ5Z8MLQ?4=*K%CWviTQa3SHZLr1$0>xB`r~30A@_!%x#p5G z3l9GDU{fQkdc8i(X6mu|-y)-ZgSGyJa3lL(1M47rRF6~Mp>_kSf0qT0RK~7OYU&RI zc0{vFKYu{Dw}^K9Fwm!QcaB1@U!OI35`)5H(N$4S!+Pitmw8xxHZF90R(efCxqg&b zy9*VwGRu~~4497yJzDDU2S@e?l$!te#S|$idU)mllLhv5n@LWbNL)8`FhasQx+lK5^aO!KlgS`up+0R$svSk;Wzq>s7pH&2SSa)S%U&2p) zv_4TPIu*Mx>s3vq^95u2Ti)MP&q;_xsG803b;K5oz5TKrcaZU-C4j0zzZIkl?8=tp znhQq`qK3u7|DJyvtcW8`nSr%#3_P$s4*JUi|M@Q|dakj)MzIyQV({kq&o z_60IblTrkW2`FZtvm8xnoQFC32CjRR6I)O}o4HIJNdA^6js@HGZ{WRSbW-+z4v`yZ z48vX9Cyyh#YLqF2+rJ=a+(|AWGA|tPo%#6F|27BtH;=2c1^H;8=o&Q$CWHSTg(h11==u&J=otpzdSl$u1^3JlUsP%koiLC9DgR)^;WH0mS=?ie6fZ2nc$ zlgO$E6Vq+vg9X+fwp0lqxJEu2l6!fwv-tohfQ(`qrpD=Tk9X`II|TRnv5_Mlft_8>tx;MXx8dolZ8P6@5qZI;N6^U zjadva(Smcu?p-(|H&!FH&sgbptnX9}D1=B*mF$XM3j^F_Vqg+8i1^Xsqu~5zqMWAf z{-kUQicJY^Zm%r^!EZ;BjA_BIRS~A)2j69{gMC$lTqt*zbl<(QW*|3wg+;w|h z66WV|`{KAQvMv%=!FmEvXkMZ&hdlLl0vVf;)Tt?07wp999WG)zw?pV}BRl+>+d!6= z3Vi!|f2aGC5Q0`#vxr*HB6@U=6Nqp2d_pu85`p>^F<&S77gQKNS@7yP z`Z%;Wz%d;7>7si5{7MtVg~zEsI=sw7o}>nv9agjsAlHNV0NyR;k!VP^UcsRp_e+-e zdL_a0K?5A!*VNGwV(ac@@=y35fx#c(dJ9Lyzx5U4UrUZu;(Yz5Rnx3CWKF^LDl#8l zBdmxL=ER&Cm)3|8;az&;$G|9Gm>~7eMf%TN$tf9eS#^i|zgF)dIsdUNrG@j?U=p;U zE|4OClO(az+LAHIJiG+sA0L7PQAqAJD?Vr~y1InVKDMW(%rlzK4mo_2S}S{Ti%=%F zL`Mg!W|1W @pcn_@7$!cs66-7_QkB`-iPLtJxXWz<2nahe|D|KvCy&;+IGa#KO5 zgZRVezNN~?vBny$M`=HT#*3s;W1i!SV7!~anxPT=e7N5(Jhj6ajzwVq@0T|o@;=dw zfo7U`L4N4P&040>#g74}A6BxmAX!{RMx|7D(mZE4gvzCVM9?V%7(YvGEQ%#(#D$viCM=NG=;2kPv$%@#Z*nv*V(og{!{${T^28DuGurSrCTV8}H0;&)5_E?y zw+j4NbD{<~=3ZfhbjLuqBG8fgbnk~>ra>>R%UtaP{)ayT+#tQ|vd`gXfU(XhMW2tC zr=eC;sXxR)Q6G4nRF;YY0XCSBtdu3Cd!E=-r)&x3@h%MU*S6<8@$5L94E~Hkn8K_1 z6m=B(u9SSovT+OPvARAn5@FpvE;StBfXimJBFvRkC|DH(jqla}wE~ZQ zeO`{E7(CnX4N48cNn$YZ_(0!TU_0U1CT0&Y3@*_UdGICDg-?gRyT3-Zknu)bGlT*x zMwKjACvz%T8f=6nxX<4t9%1=le2)w2Lqp!fEKIS zB7AHn_EY4R3Pp(Gt?XQbo3YKolX?{(wiGYC00lgcIq$e>B<=1JXpn^jZL~#%fP|*M zE=5nZOUk2Qa(FJxHzHu_n*C63t!WwU0=q^5P6`MV@4;!BbQ3ObaJO|_`sL=u^&Tjl za4Mvz<#d3h+oUgx-2FrENv|%;H34fRM%O;4Dy?6dzrK1Y6GNxA>L<_gKmUV3?S?Nd za!OSyIo3Z)j^*H@YdJMizJ=k(akXE^{wmWCVtd#0k?-GD9n}7vrk{d-R8Y(iI3`w~ zRNuZQf0s|GtJhWhv8Qjs7Tsq82S5mUHTGSqDH4R1`OBo$U$?H%)vJy%Yn4K(#aH)vMW1^H^Pti4hA-jk)VZg$E|XDN<(Ha$k~- zIdh0ayyUk|Khf#wADPuE;Gq5TvM>8V`F8&`dT4Z}SJFKl6@D~uw}(ZG4vtSWHKxfi z+^?$!?P!X_;-svRbFyEbwW-8dxr`sTqjwKQp)_YdL!D3=J=9@wT(6m54QL$WXdDus z#fIHkTGLhE*w zkHHjG=E!=&{}h2rW%lK0pNv`8G5DuVxO5^+&q5Q=fQTdWt>AC$Y;uY%G%WU&=8@;O z>4A;%Bz2$VZt1RHYWD5M9Q1Z)mHnTjp#wK{f zH=`IQJ(0QAM4OfB&)eroFWS_};^8fttOhW}e7?!V5;ynb-}bV(M8Ds$BGpWQ%SLP*Q=ZEj=yUB0mt zj;3k8s;(g+I5T6~UHtwa>_!*;V5&N>>4f6BYX zY|f6}oipYUTj&#pEj_p-q;V^3Q2GD;r(p2Cv;i>xXbJ9^Kx-4B7O(mf(0?-y(=Tdx z6%#AovKd(!HtLP1frS!rH7nxsuT?QE#ObtEg?4JyxSJgO))vsH~!^YiCPkyUHG^C-1-r<_PD4`8P9WuL8oVf9Av#3N8}^n`pD zYkXvJehA?ki_dk0Ju~Wi)2=$wpyX=bRiBn{tT8H?p6vWXwUhG~xvYWR8`4H2HiGf2 zWPddr89+YC^(fluMj+~ij9eP>4%-AJbG}M@f=D)9O=}wMZdlVg3~yKus!_hP3!OJ| zcqqD`kQDp#LFq87_FoQ?MY@lU;$iFeMM`M9pwsVc2+UFiWJ=zA%TfUSG%Sf}q`{^S>mLsnm3{saP1v@~EqmeR61{j%sIP_y~U- zrebB(ru5ZHPzf6^>#^MF;_r;Ky-dWDh=a({$sn&iEND?%-r(VdxGn&sAX8S2(kfd; zkQ@li5M8szk$677tgpaCsp_Q)Aw!j2lT)v1Yh_`g!>A>xcf=9@j#u@q3I{jQ8Sflz z1MA1<^1gbv!?C=~WJo7paWw*m zf7ns=xq(BMD$698gV2RXbDCs2f( z(pO^C*>eGua#P>pVC1i*hD&cyLD(`jUMUZ6^Jk&2AV1sCor7}To_#q&16%wd7; zdf@W+-%kAR#t!P8wr)w@Irfew#m;aF2L7kiUao{AX@bOA0{Bh0U+_|ajcu1(Ct7lk zh2#c)TvU-Dwj~x z-969u`NEM-%Jzz4Js%swMgH{g%x|Lj@1*YxcMW#|;XjrbXN{F&lqv{A;l~Rj;x#P> zBx(yYq>8i&n>fA28Vh04{=fNO`w03iaoExRvu163wg;wtJY2^Aq&Rs$qEMwf0s52Y z@_dx%uOXa24KWu`J6^b|QsOnOGn2}>X`ivgF`4Kk+i!$s)?iyoyQIW7Tb+ndLxr|4 z7cT)-3r&YqkO9bLlzQ-s$fwrJBs$F7?+VNI$Jo|n9=fTT=7w~VqLB^jB28v7%gpaM z6(88}3IBVQck;1QN{4^nya%s2isH3;^7P@$PX>&9MUtGd$k-TKN@^ie zmG(M7$?^lV%t|nckpj5^)Kbx-cgb~-=aa87=?8&Vf^y8j`H#wT1--IMxcPp9HfN<+ zjx4GxRf~~OH?c^v*pY3@ zhUpC+Hl~b9v(}ITl;tKY-nloIRPxVIa%Rx0_L%+`ti8pl@rE>T)-K;qpZ>YsZ1mfd zwM?4*5)`|4N{lgZJErRgQij0i95xPIFGg|sApEi*GJbY8mK#U$x<&a>3@cSQ! zM{%ryoY9VOeL(7V>|>){M(XKL8fEK5ENV0S3L^dv6WnV1Zwl;>H3Vwg_k9N|(x|{T zuo@V>6XjTdyxck5IfMaIgnfe8S?TfR`|xo3xoS+jRb$kuvjt|ca2GO~wtFMrNRH}s zz5g#D=QJk9-(*4&kPy?#S2VTQ@= z_%m^Qd7WnCO%sxMCz8c4tza^m8DreWTBsL5zuO8LrW@kZ3H7|useON;3(Gsz)f}-+ zVk81J5;!ex(zvDEIdHG|V|+;`)Q}(f3n^F#b0qV*c%P1*|8_z@wx zOREAL_9dd{tnZ0YtZPZx8KLH(_jvH{Lk^*j2AQ8AWY)k-5=0p(6Tlu05LMR4zOW0I z(#RfBcV;y$g2pgLL5B?AigFJ@I{UGvNCPAG;C=br?^EX)~LcQNb_ zSbvFkuKYp5LSX>gw+z5v@iZKjLJrWsB0hINcBPPFsn%#dQqpXGXQD^c;2q7lBG~~3 zL5MR!^@qc3nq%opn>d%+^)f3_;V|f+159qM?jGZ1)tf_ycGbf|Pddky*rwobpbXzOJps~Rx80_L{%k`~X z)0%_`F&wM1%=i{3F0$Nf^dmiAI7pI_nOH<9uKkBPLmxE0-D2@yh3@WTjNu=NUg^bK zsSpz?gC&Wr)o~kMUMNr@1@>h$tgdNbQ1frhIinQwxE z#eNh8$`YFS^FmS=mM=qmWjSKE)#A?gpV)P6+oS(1a8{S;-59(~(0JX(UqmS>1~eAs zaNGdSiJiXeR*2_&w|`yYP`9k{+-LLQq{P!m1IRP=Km+49A%22MvWoY^N9l!mSAt;= z-WvvcAKHEf=qu@q*^5+=F9}Z;KEA6kj{oO*qWC}k+qH1;2T>R>e~Qr}o;@GP|Ibiq zX{l7cBhoBkKfEHlRCx;ikO!2dxp7cn1YkG%!tAER_;KVj90ta&nlvE;YL#d5$HX@o zAFFPk*SYIMSqL(IM$<4yqs*@ZGJX03jDPHEPq>fjbbRl}~u$5G^RYUIY^}wMnZipd(yua_(6+RlHu<$5F zVG%JO9?jLedNFGt==Mo~WY5_eAm6eYEIhGdj}{DpN-#TSh2 z(Y{AwtG)p)q^~CeLe`bd{?mDz;bT@YtXKWd8vF zd{GY$JLRyqaaz}sbow4Y`$tEmQVV8N=X!mS&A+y!`Kcr>1-q;5={+DvJ}tRYVFh^u2u3 z27Y?0VpaAvXUN}HNaU%+T1X0VYQA~1j$fTsPde)JAASvMdRaem(db?#S!KCF8hQ(_ zt?}p?3{hD`egV~b+n;^Nf`mw(9;cMQ&$~-a$6RUt2=*fUh|6<`gpg3(lDSyo{Xv9vHOXqj$n<5NR2MXpR0L;pf8+> zJvJ}>_iWU@>w*HHpN4Koa9^mtrbnI8e9-qq{*?*7)`N8~FbSrs<9%d`bLPFi4AS4U ztNr%oXyvD7{>hc>z3#vj$1j|4x>}S{h2N*z3N7S)-_~9*LfD-rY5d;zn{@dI;8qx) zHQ|pwD*D!>=KnAL{1guUYPNK=&uOTR8Qf??Zx&xk}?X99=Ry^6+P%`oe^Hu3?9 z{ImGq!z~n$u%~8)4BV?x+3Tj%E0Gp$ zSkH;qZi(u4ulk~dG}(AfcbM+}}HoLDEoxkF9r1(59ih6)&Z*Vkr5O{jY#f*^P}(Fvv39j_+Q(gl8x4*|^nI)&==< zalML+b1Hnm>(UxCU@>19zR*xD&ySN)yNX@V%iXVPFVv4@Ew1 z=}u;t87LzFkx?C6&7IQcn5w-A@U<1QxglEa$S9Xi_Ld6wX4GLlj!QgVQWUM(Uv4No zru^cmWbqdSQErLyN%yU!e%6ub0>9Y^Z$?m|sWM~XJ}1~_1EQ(qoBo<3`D5G`5X2o_ zjJJsV^SuV1yrx<#5goSo13C`vlpwaBa(Db^7HZOKM^iTK?Ai!@WR!^`c zG+~hm!1*gOKJb%~N^T1gEU(cef^1)0O1*UEzj{A51J*CBp?^;KOH})HaPkCF9m`EF zNo8k~#uiwC8V~vq$F2aLxJNPvfpp^-4>--f$&3h186n9b#YjNu?5?hC|9J&Aa#Q@J z!nU(JP4$rNMLE@o1XY!ZRedjVX5ZhZ0x|Dp2wQ{izNJS&tK7qEndfrQ4FfM(la$|~ z4mXa<KxbuIh+jC;NS9E8!ef8URnT!7xQpM5j zp+H6wie!MZEyaSu)s0cI_kZy9x@Yi%dDMEWrNK=g?8N8-(n4#(x{PG0S1GMa^Nb2y ziL{?N!;|S`#1NKx+Q*0Z&v#!w((aK`zP7WtNk5-qmu@*7L$iP);^^@ekNHbF2F27vmIvMIh z#qJNkKBu7r_}h;m!0`f$Q%5ws+RCnpHsP)~XlG_Ml`mmzS;v0Yajr%%_}IFq0oTbw z6SM^QjUn}*88N}7-k#cVJ40eC2oP%^l5k3lN24hh^JJIvuQEq0Aj40Ooq7sQi11?aJY$9^wUhsoTx_xHK)>6UDS4 z9VQzZqN{@p{;OZ!s5);`5>m-b%kyjlK8ikQI<9*X@USScmI*-T<>-;Q_ zQX7f3Rzq3FbTxW}J(Fb?!y@G-dBm&#xgLC^ zr0#;}@#}EE_HTF_W0!K6b^j7eEEzVO8qaL?xoG&QsM2VYcd)iL4GNB5-l&9T*N9Q+ zo$CX7LwCu!ME&6N*7+g6h+=Z}#?k*BwhWc~oY`7-6d z;0=s>uFM_#Mg@(u9!qT}!PHF^lV-+}oGf;iNK2&AoIa^{iE=agaiT|zKPR=a=Z-c( zbE?_FF0Hz%3fnl2y>1Z~R)*I(Io@_U{BPl%Y-+l(nXvj_7AA}kH6|P|0zyV{HTi!W zU1dNNZ5LgZPU#kDmTsh3mQHu+?ha{QK#*EGq)WQH5d?#7m2Rbx5=0t>{f2LT?9Z8f z&fK}reQumnIbM$IMle|DPY=i8EoT&;#tD$!qY-^8{w}I9U5;B)z_xpTl52&EUE)^ z5#zBUK7*}Qd*%L9f-xDz0SEJgj_^(N(cUyD2xAHtCu&2hmr3?pt5F?qIc~%J3E%c$ zr3o*ZT|mX~vak9_?||4>f+`%dK_7+DOp|#|;xEGCs^-%lhQDa!1~phdka+Yxt7>^i z-s)5YY;A|TFWaVR9;WU@0AJS)bD=|fgHa=Qn|Ltw1xs!ZYeRpTsXc>P5(o`c7m3P ze3}hUZHh1&{S0}bIsE&(#Nj7olRj;emzfM~&uMn<R?RoAAGwXm=j(qBL*?TfA?LRqEN}S*s@|`WvU=tMKB{a zYgZ5DIrMYYRLO7WB7JLvvRum9&ETBGk>|`G73F?fmP^uPzx`=@<>b)A^a_jczRez2 z?zI6Glc9@Uk9YQynBDUnsPCF^A)O=Y9ySp5r4h0g3szT6hd?!JaN|=(C<6?d5>HZF^JD=&7zh7y|k{% z@i=ql;kh`AZ=5|8fLi&}m$orQCXO{R7mv5zQM=CR6XBq^y@fKePmVmkl!a>FP4zMP z<%#gBp!VM=9AV270=nD!Ahs6e-y#vTh0NxBb7)zw!gX{VtrJ+rb)XIswEg9uUdV-X zI0shf-$m=j1*K6r3fY>-Z-M>!qKkN0hdgI ztMNduLr^p8ou<~vi8(o*w+ac*2>1Xh$@i?2Po;MZ3s=V>QK4~}^4uXkY$E5%9ectf z$^Un9KVM`($b6eX0X1zW{D&LG=}U;u4z!*@8~YJTap)vNM-DUbeZqrvN{Ku&#GI{Hy^; ztS(;n!QmB8bWAsa!`djTGQ8K8CXAg2&k?iTXqp7XPn51>oN#X#&)L z*Yq7-#$_D$PgBkx!jAGvb$&VYt2j%!Ii5MQop}wvF~ER1a4$kZr8Gy|#8Z zvMV1w|D2W7Hl3PJ&3hGLc@Y#Jqqh@i1%ndv_x_RS?bhWaX4=TYj~73EsSGKlZ`iGo zurjB*;6W)Yr42TSIWcM}ataB)VBN`N6P0mcW5)(ACn(*w;sUrJRTvn@ z`q2j0MO;6{kZ@7u9^e{}u=8+r97=6d@@-Y&_)>HwppN;xsLBSH%5-Z6Zcbjy-1Xw&?nBp3D(kNgyx7><@& z!_EHBV?&;b%a&2F5>JA3Xt*nN3qDzvo%Vs!+6w5`AQv9xjAGgPr>a##D_;QVj76sT zsF=1|SU&on9Wb~?X10ew{zAin%MH-~!nc~2$IdYdH_O|%yU0pSw$>)w?z-}H@NZ<0 zMn{WRdPm@$%KV-W{-KJ(B3E1owRr_WST%l2m0&hNccp*&;TnY+YCr9&Q3OH2)Pe6o z`FMWRCJ|kML~Ne8`<|Vhd}(6=6EEiL$0B(?vA=i507v!zW_83Goa^QoeItl>@ST|f zUWW;_K2*?{q=~6)Bl4yxOfSWxl&1CXnq>sdXeFS*nZiqrFq%_xS=;w)MW5xe*2sNFttbkTS8P8VK7j zf4mbB%LCCufh`d`j7CSEu5YTF9venV%uf7~e!KWOdR#xJb`Rs8iohZ8_X&vy&NQ|0 z^TQ9cPzT|nFM{Y=?0@sVG(w|=3bUZl#`#=SS%TQ-rzZa;U>sOVN1}*9AeAB4?&Dw5 zV>DQ1T^I!cq3i^X>JA3>$U7mgKOfQ~c{3zY*a(ro2mpZ*0>)RSv#>qy1bjN-uTJY-g(Sul`>-R1QrDeXTILiDX17 z^C>X9*rgaTghNv;qCP0VYj>+kY<17Lp`OkDCrCRLt>3eKGuPx5m+oN>PGA>Djj(5S ztr${-r;|dZjoHuo#b4(twPp)xanAFi%-ny6L33>oCUpTN`sr_6ED<|Z**eLZW@e(Ul+IxmBS{L5Ttx66R_F9vL=XFOhLSNhaf)U za2#Rm?$S~uNg??hHFtFxdIbG8lwZsNOxtk?De8bgI?1n%@Hf{u*-Fi_^Ix*W!?#W zoc|aJdoz!^e+?65;OTVn$og{jVPhSsG z8vE5Gy3}?+(04l(6eC(!%ec!(?h;i?v=>qL7Q}%>L$=DqKr4hpNqHQN3*wOPYeEl= zHy{MiR8!^Xe_!H4$Te9Uy)d~$jGvN?0}ljrdaW-LS9_|n^CwC_%sSE)Mih2dy!m-= zY~NWMGq+LVFz18X#kk&kTM1`OOGweow4+HeC8&^^RLIM|G$%+zb=A~*16e1oGZ-3pjwtO~H+s^pKo&}iBcT43AQzI^;gNhUo2BSWH zEN92#{tNJ*e~|h=|DhRnytxc>2Hwq?T2*m-pMIeWunbV&3eiOi%s|&|ogUM*_4IMP)SupEF1(RViDfT+=FHXjULB z7N>BbVro)pEXK;Qmcg~5N7UEMtPUYn|6norRE7OnXa3)xM6lAUy`KYb=QhV?yxvMh zNf|#aEXe*Z(<^hnb2|Lr`i1M^ZK6=tlg!jmRHj>Mic_pjDmxN*7DiI*K}XxO489>O z)&TmnD$NlC`piV9IVSjk{13|?g?LxgzhNLKJzIu6UA^U+PeRfCd`&Q=4Ed%{$t9fY zv&SF1U5M)rHVPHzR5EX%DMTo!8Qn4AedygA`E$Et~0y@J7kk(E~yz%J^lVeCW?<2uj8X{##nf3O>qyl za8E6N9}r-FRM`f8y+xy0eV? ze{VWiBiNTdV5G5TN#OgFkx8@fko~c-(Q~7xRzNqC$eY9x)!Oo%V!MFo7w`a}M7d)v z$asfG!|w9co`f|*$9;{4X(zQVSG$dr+{bg&GSORf?KrE}kA=CwlshD!-@vsVe=|#C zSsjHM?%Br*S|VG8q*$_CLIGqR?SBUZ-jFu16;~ylt;cp)yoE?83nxS!#ps{piMMwq7=Rj6}`Cy;%{qd7(HMtViazEn{j2vn2 zbYQ0d;1i}m?;XY@O^V4FaA|0dWhBR8&P7HOyV(op63FkzcWmZWtE7WV$*NrFxr@Fp zPC1&AvCcXMao0q&WZ%`bB?geeGqIk9q5{aB<_dTi-g>#BP@5ao)v*|0J_O0|3?sm= zEEpy(M^P?AkEG+;_Ppk_Ed2()j)$nCM}!j#x+%OI^Dr|WbU&oNnOVtO&Alr7RP?bh z+E;r{r}CX6>f^uGXrm~gs(NPCyp7aQ6iu3-Wd+44NrDBK@ee*}=)`6^H&?6T->7dZ zbtp{X^-}M+Xbx)hddRt{&fCyYpw3&x=Jtw*6(xI%jv90f1dEQi?p=}v`!;$X@t+5Q z2aSvX{#9k`30E!Yq5t9)!|eh7RWHq_ZWrgchdY_5`z;=3BSE{=b|@xsJoyWF#Y)OQ z8|f?qB1QFIeJ1`TlhgE0D{I?-=tLW3ejqbiGtxOf|CJ=unx9(5C%}DY$jnAT>Bwn% zSi#xRT7o1HS6@e=H2SieA=_SqP$t&$CH@`O$mT9a<2T@qanp=HGJNdDAKF*FvN8Qz z6-S(zV)Hf>z!zW;7^lJ~IfdI{WgYHc^T`0-Q|J=4~RQ z*;dUItLd1jxWmuf$z4ZgSx1VL>d;fnJ>+Dm2U_|UC6#s7vJgy5$8OSSQ;`0 zNj*Wc;h`4Eo1{R@Jo+C%|1MkF_+XptpDuQSjI@1b+`l2<{G~<0pTQ02AC>+)k|okJ zu^LqpmcwGkVb5v)sDz-{=3%euVVK4^d&BbvC3JGDYSX}=MDFPEty<~@Kz{tZ7nr$? zBTc4HF4N&mV_JM8xH~$yK_@I)_3Vh?DqH(+r}hRqG)yx;N12TV3g=PZbuMZrjc4lY zR$v;i^KE2DQ^g!ITZ_9QDEXz6VJ!0*_27IaW%JJ-pgn)QaB#=nu9=Dcq%e;C!QmUr zii{eo-;eIW#QpQtJQKS`0tZ(oi>@xbJHGo|GD8AH_5=#mB;IB*gd3)QmWQtF;!tyu zA7f~;G2xJkfAN3)289a2RW1Q;%w`65rP&hKjb8HLP|-<}`bt*mZJlGf%y=Z*ad%81SJ^<~tHc;v{g0ueWc>oi5IA}k@I+?reUT`p{&Q4{$qhwH^WnLz2EjjfA513kczv^UzBKBO{&UP=WmLL;F@0N%c+}XKB>E$zT-P6SVsu{hr}z`#y=$+fkt?rx6ly ztx*@RcfffGs$q-hAXUdUNj((7RN10c&n(M%hjbDg%D)LDN$vV4D&Liyv%_|5_eby< zdG=8n^juL0s70Wz^#$#P^omf2d(Ab*_n0=riQ3;#v!)j`-3cH6AirR+o0zb2ESm1RO}&Lb+%c}Q`rS;ajE&FShu>q znGG1LNPCxp+}uM0g=nTihajoNgSz$Gn%j^*xg@}s{jn(nkjFSKa6!WHn@>d5Qb+0c z?&3DH_#7Vb-vfcSC3FrBD2VlTX=!CxTJeG}E$gXYc*&3e`A-@KyhF6gY_yN>{q38d zIt+9;-?3$XWRWbxaOP4}Yz2=qy?yp$yr1yHx8fyc@zu-so?%SE#f;usYAj3SD3nda z5PxOfk#;jkXb)`>L^Pzss0y~#<;wY|<9=wWTLZ$rt!|9%TGGmq=mBUBWNzS7qlfQGJ_)T1&sG1`f5|be-oHDHB^G>toy(m(6ej z*475eB8$yQ4GnhI@Bdvn@=7oI3hI@!q=N7g$DNwI?yLWFqENF#|3Xnf_!H>B2?5Z@ zdWYSHmH3m4#zKXrRVZiSDNB-~YWO4m2VvkN*=bi?iWDMPupL$ux~B(Lm`R!H&y#*u^y6NlHE+!9`z{DHKWLQRe#zkFWGD~Su_a8e-IS{mT=`L#piRQb#!@L^YwhZ*nx>B|HTO~ z{;aU6F03qN195w_RljmjSVkhqi>*JL{pAPK!S# zCh9d4OIts5k^E)$Z0)CBG{dI8ebskmW=jPJ=3a^e-ndia<}(^t}2NL)0FJH zO8m{q5&P(C^vE+V8b6WyxyV-%TGB3TX6s+pM`oI^VLgdLFNxkqy*m9?6~ClOhKwT^ zi7-mBQjHNjp9!?rc~fOs*wyT|i0Yee9b<*Ir}IIcY4U{erF-vaJmP;80s9A^b|s)- zG#pgt1CR@Z?3qaNUQ_MNV1p>(*n<2>pYx2l#ulVe_r9+}J+grAR`rU^R_CYZrE zZd1ih^Xvkd-n~abdy!ADZJ^Iwr`_ZM%!PK#Nc;POsSyV1Ol8?30cjXU}6H*SD`2qfZ8=eO iE<>+H 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%0A`E13~1oSsoA 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

FyTtH>)89=fI6c0h3It0yhP2 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 literal 0 HcmV?d00001 diff --git a/deploy/sfx/high-pitched-aha-103125.mp3 b/deploy/sfx/high-pitched-aha-103125.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8e718b575af3e8f7b81c66e1b21eecb4c6fba98a GIT binary patch literal 13374 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ⅅ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 g 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≠%jH9}lmE6+Xa4@{Kx>iBsk?EXN2aD6o-LSMtHHWJ=>FEe z`keR7sn@^on@6^KEM`_$|8)D~y+%~ts^H*Xk51;T>g!u-bNoH$z^iw^)ccpdR?q%n z)p}vIhfG!!GUHF&D8f^;Hv}&2$hFC@)-ZUjGc4DvH_^rFrXlU`0}JKt$6T%l<-PA6 zUB}kT@3!w=%SuiUjEmB~W`9CPXCES)ncVHW{o3Ww{FHH}Z0ogUl?G(1^21jz%)Z-{ zAZ3tu+1U73`W<|7Ki>XMZ9!?8b?M0HEKcPD`!4^2B-^_6_ND$(nwJf~CacH#>e@fM zJ=`;Xq_phG_>uAP#=7GR*Hz8i^7kCClQkdK+zbslYJ24Snr$AdTEnN#gQl%+{gX$h zqrR%Y-m_(U+@r7JwjfA$Xs4KH;YRX5wt?tqr-^uymroqi+Ei%Xc|fCpg2#G&Z&xZ$ z<=gh~T%R&7}_wFvWyJGRU`S^-mhu%A8c>Pk}-1Yau0DG&eX?A;-Gft`} za>8CO`}^Lm^v3=6D^}32Z~wOc^~z7d>+*X0dVekYu;$y9%|4qmCy#&jcAu?xbH(!S zQ|ebg*Su1vRlb@1NAs1bzXyu`c=cV#_Za6ZFdotG&lrxmf6kfTrGwr1;?Vj#oUDur zZz@q=;wciAh^R!8`{2(o8ihX;vix+bAI8M_{PT-H+}qULt)@SIVJ^)_=``zFVA zU)ny*uu!tho`$!ksqXCA^Z4xPl8AfG<&}Lk#pK=xY4or~t9##h{PorM;;xwE_kO#u zp=4yEYufq1o}MihXI|DUt>GTNV)SN)(X6^AC*89NjX?_Rjj*14y2j8hmq*UQ61J|3 z%9E)n%9i2@3Qw;@mN#`G?~g#|y(&q6QFo8;ukpgb?(X@ixm%WeI!cLm zHZIIaa+$bxt~uUiv~%q)Ew>l(b9{_5jxzsPkTH78)yMcmQ8)a@2L4Xhp3(g~Wy7e) zsC)5f!l-&gKg#nPt>slu#`^AUQ#?-}PqmNNsBe9}`Bs;$TTK@)`4*zj%X_8ncIQ<* z&`-+RCzTdY6_4JUqzHK_gpLE{&l604rtJC&O~YV9uSU5LBnUDQ45oWilyB5ASf z`4RL&OJWAOBnL4w+)Ba1DiIiMEacMmdLg2fYp5g z;!wJ%zjdNfs};`RudUSTl2)^YnWi7`i|6%OB!7s3`n%kgZ-`-vm@bZ7Aw_P>Ws>5E zLRNI1XRZMT@$_1(N6G5MRP%*=2IVV8l$D)QPmybDacA%IW;(Ia{nyW`PJ|C_ zgxReAP+FO zW|PzXY{gWfcG>f2*FMdXG{Ay?^;_lpe7(zImz;0C?`xmcBwDV}e^yuFZ0NoT+a&2YrnZ1USZi6f86EA3H6F2JG6e^ znO{R=jVSX~#L!tHCh~B77p3alR-ExU28KJ6STkdeuV*%q#1(GA7~&3-6y9EJA})sy z0f#eOAVQS|ZI5i+jD=8Ro7jmGcB9{bq=f%P4VqCV*JIM$RGp157c!aN&_&^5vY~eh zgZe)gN}%O&_-=C92eYS?XZdk=mD=P;2zpy@v zw3Q!+88Ex1h@dZ(rkyflz%sBj5JKNEtLE^BKqN1i@n0AfY1EE%(_XvkzmRVOD~iF0 z@a>tshZr0u0|58%@i87NU|#^NQ&qYTjIXOxliLdS}+46R$6_4U&M6(#)s#qWvTNrj)2GRtqEVhNIFgYdf+8EzX4?Y;20Hsz-9pp`hkp z2hfOlp~}VS)C=)yG$FntRiGyh(;R?;jfpvwZ!k1icZfEttVl{G8_R;~Rn&N72%Q^% zN;$7Xbesd~Xs%8$h#9@c5brh^hSd-It%FxDqyCyh!FZ-Y>v(2|a*x9vhtj6KKrM>S zt7xO$nJipV`o-pLE^#@zqP=WmVDQ_Ml~1IdCmF{ThhVJ+-k5J_8{|jg7zdL;=5nBD z)T+3En0EM`AG<_oj4Ei_4IQE(WB7j@kC?(d85Cx>VAYnhGRK?kF@fwsOa?Ki^FRS< zmB1&MgpUq31w6=uTOqZ6$0TTK;W9NJy>Ses%=rBxBjee{MO{T@!tyhGxsi6#NfAMW zAy5RZBnRneqx58qD(e?Y6Vrd)Q81SEMx3l z+aDH`#JkztW!r8~nW#;$_zVWVMMo_*&hvX+1#n_zm!*x&|Fz*(~}m(E4guSsHEU!1z)w6tUrb;P%u{ zTXqAAY1w59yCJxm;AJ+dBAa`*)&oI%PHDLg(S}UXQfx9C>oLhTqrrkvtu_DyOJ>I_ zgVu@bz>gbo9pT+Q6z@P~ijY*TlR8Fzw-PP(FKvG4&w`@?1RB+A4v>6;0+Bo@$I2TS zs1+p*-Ev~CfR@`JX7HLr^hN^(i3$mAK<$~vdW*o~4zIMr%0at39tdje5V|BNM6dod zK)=JJO^^pre;WU8e7C`kD1)qChUgM`;+BKY=v6>_XRIrzvd607yY#64qn-@?|6GV4 z=GS@_d&lfc6&v#taqNnhbr^=@-8wFXmDnd^a#Mu8N@29_1)`@D=02XPbAt7HcFx<1 zz2zk9dxb0$VQ87DXtrKZF|qBjUlYL)0PedA0aY+v zN%Ai9Z^E`@D?}mK>5y(TryJ<*z>JdQ0p=Yt%?hn6To4CbBxb7--@vopNZ3!5Z&Wrw zAh`?1SsPP3hhG6f6HttSL<5XWGiMI5blU%W-}IUW1KFr8wY0s!LO#XmZ!kPj|Iitm z;Y@kqTjN|fa&G>xlf@o$`RbY_YF&@%%{P3OWc@1Dg_@eHVT(@uG1>fj)mSGV7`CG? zf2U`8-~<~Th|P;rfhIc}I+Dp3>$VWn3u zW>Y~g0t#DJ2PkU=4z~=VD6Y_xAm;+N#}B&4kOg4P&H@uI9c?*prg<_ZLCryNZPT9g zX@$nIJ`oogW3BL4s!6QQFW^DM&k`8Ta=QJf9Q~r%u{F~*A-BSdI$4x-u@NeW(L;qUw^~m zmO^E&TSq$!Qb2q?2RVoeM_P{9VfIQyrik$Um?ib#m;y)g2NZ@%kF-z)CTWB#0w@O= zo+JdN10n!72SU%0>wV5>oGs+y#)QolRHoVuZycX9yiph3e?OZ2 z{U0@YGd0gv%NO_?aW_ynWv(??Xz~LOYBsLG=}#_eZ9hL{dCMzyGUxVt^7v%rZA!rG z#2@0p9TnSWGSM%;a@+|W#jyONV$iKkwy=#FN#T`O>1vWSppvj2rT+Z>BcfwN`Fy*D z=P%s$0lswMNWo0N1id?an=!*~p*(du^IUDWU=qH4vteh|&MJ6Fu(0v7oyTP3my57j zP0DwaFHnEESUA!JSLq|?eL3ldP(N}8Q$qGa!+|9?3||o))gS@_01%ZercY6R{{P2! z?$VOEK@}C{nh%&&@&J8P-q4`fXPz^wHk8X>jJLG2bjAo-O$7xS2$KZqbioxYGa*%} zS*Txe7gcC0J;{g!x+Zu#0v8#k2b^wa>5xP1=dC@kp>G2e`5=uh#AlVN?2T_vgfCbj z{lO0Flq}{zryTUp;FyG|g)CeRvkS0O9-SM!9%_StX|%ykHs7JYm#ZK&$)K|%2lzIbi=-Xe4oT3gAX!_6V|n%eLV!C7f5Jd%DM zdOO4C9EXz7@%?P}6Z#8Kf3`g_MS=Nqiljc$K=LAT__NxeW3+X=Y8!}@HWa>uJ=vqM ztu}tV>dVKG4Kix$`yWM`IqK%Xc4j1_{@M^NkrThGRf)^7ApH6RlJpgPDU5|99UoryU%e zfe_x2HRQEuXx7jy=&#O#*l;NAr?d?YI4kAbnaR*m-8@!|9#;O>rE~0++IYOxxaWqe zt-oPq^Il4*(Hxz)Af8Cn?kCjr*P4kJ7ba-fTg#{phGeXS|2{9PhFUH5B>Y^NUh39Y zczI~IMo0Y&gQtMV~PKKA*oPKc6e!xOm;$%&X^fXqPS~nSAd08Z5{^QrEY%_Uzd9 z#n1UYH+AQ|bUEnvX14cJwShn5!{P{)53lUl10$pGm1njDMtvOum-_0C{57LJ#=0#f z@qZ8SRD|vQok5%J-c&XGzxQ7*7U}7wcsI-p;?8u@Fw(kLWo3W3POoBMm7$3pbB|s{ zu9g$=Bd($h^2()b(Xu?D*zn%&f;=XT$F}HsQ;Md$utwIPVO5SXC2+7Nj;~> zff(5nT;i(h-F}yJ&mLfn{QO&<-W%K6b>XDma>)Y5o+wZKTu$)ex1W7J-yiE8c-(t% zf%o?K3Z>VUiA7TGP+Q5Fh|bi#xSAusMntM%!{i$ln(;C74s$N|aJ@Yi>puAT*DLYA zHV!;=e80~AM6j*d!P#Vf@xzL^9?7Dj*1jDd-?;y<`xC)v^uljxNcIyAzdGmNvCL)6`3SDtx=)?-CJ_&;5?W;w=TSx2uiU774^N zx9{((&ZkK37OlMXx#~Nw;@;%z`?Mxb;p3)Qtvyd<(7mbR$L!RCEZ-w5DW3VtXB9@-hgEjf<)ck` zgn9YxrP8b)^_fPdUx<9|p za{sF6ggUNQtk;Q7Kg$(_q|5?0(SC$b#?f+_AMLr9u`8h=-h#>C%%L@z>DgLvCDp_H z6s4x-;iF<%7hnHDXO|0}PmRg;zRimLO4sJ6D~uN>_+#oEcFbLCt6JW&k)Z#Kba`;dW!9@4zq2FIc zX)mptzpt(Q&*5`77QeL_*=*8u=Q`oCU-`dJ*Ut0*ZDRM})qy1K#LYjCnu*+IZfhbS zKAJ8K+nfK%|FN-r%&k1iyLlyj@6ruJ=jzR0e0V8NdH6PU!0?X5$8xx9y`Ir1pD94} zIa+v6zAX6T$*qAKDHa+h9KRHo63yE(4sYxTWG#(dHuCwG?d6+e_sc%JeQ(|`L9`Rk zJK}$Ad3MolqmK8gll%DI1Vj;v3rIGq#fA7&SmL`jwA3`cO}@ohb1Y2HHf-s*d|utE z{`tHAmC#GI?~cW%HX8)IQlEPjHBoRT^YaK#m_e27@60^)%51AJ{i6Ecf1m%+svh5* za&UPRY&8#7z|H%U?)kF|XS8FwtdD&9^ph1QOy}O4O#Hn2Dh5u{6DG5+YiVg&NVPbz zJ>Bca3zI%(2z$Kjt*Y*EnBBRRPV<=FR#}8t8wqZ<-vRpv7cn6?|9l+LOV6;qgykZv z;Ka%sopdVLn5?CX7ii#S;V=plL~l{YLmfZS2{+jb6FhE~S9FQ-*LZvD2EFs%zW81d z*>3Jz|DFANU9}2hkQ04rTq^a`p1I<^4cNoTf%e#@>HcpK?;7z&9J?4IV9Cp`2=WB<>lhM}w%&MBKo#hWN zESU;gvSg{9YJX)w=gHBj7K7D6HI%bjMlK_jzuLxktzMlT!~W#@LFcFAcLpIK{_TZ9 z><0@A_s^UsA?-4)iBX)eWb9iy4f{xBIdvt-JtvopmbQ%xLf4iBqDxx-Fw#t3Oo#`EFs(h8#1GAAjD} zvCrd6DD2Qcw`h|3XVtqMW^p0&T-B#nk~}@{^v`?sW%Zh}Q#`w;l*MNZBd=X}wbj-p zqEB5rnsLu0MJ%Ndx+NYp7q|9fq*M)>UsX3Z$?k_zlDnsr*`2TcH=B;(LkTdc3xWyj{hgqEFA?37x zAVFMFZpZgDe{x#>X*5zs6B7Vhv zkDPH`{oSGc)2~0id%Sn-NPPc(&kFUo@1Ht1{r>sC{RL$^VjUlAZ$ALL;vV&{KdyL8 z?avMS?^O#PVIg>(gUymyY|&#Jz1<<^Tk5mN?e{DGy8HfWgXZ0=1dIJizrBjQwRJp0 zmL)A+*Kp}_&0+q{0L=$=iJ z*wS@>W!W+Y)84!E%a&^Q%!rSw4#YY(#M)G8TNFAy_P@vPv$3WOuW+hx=`iyod0T68 zg&~lP*+4ZirfR%uV#Vx54jO+VGNRH`Fg`zZ-qMH_~@2WPEvXRppz%%AWojOZ~LUJ8^T=e@`7FuYOtb zue!DQcv|^n`8QuP+RjbAk=HZTuS?T&qCTy9byKa*oI3ug<5qd)A@$T7mvT=3rw)e~ zr>N_{FdD1Ie*3Z$CjJ{{Nk>IMbS3< zTc7?obG~>=eI7o_?<3dNG#CZ1QU9>_P#fti+?DxXt9o*-yEh#l_0auwlTM~?ytR|y zB~Nz?Cekgn4RLfz)nj3FnDihzldB-sbGRI8;xj`9k!ogxo`0P!*#?2M2cwAjYlmio zia?}K*<8^!k6UjrPs~gzWQxSta}vI#B5)aIIU7q6#UftT3w5kT^0|T<+lt$-+Y!~X zualQghYVNRmc{cB!w%;hIuUA)%~4n3HgV6JIj`UeKUZ&j>H+ua zPwVic?2>s~i8qNOW?_`IdyV>Uq?8P;aY)JYKelL7G<#OcME~+XA1zvLRLhyVoH}Hg zN)i(mRW-3!UmqQR_Q9)>mG4vMyDdQ47;3qHR!r&s z1(myxz4h>}*`~H#mUN`GYg=&PQ}>Y% z&Mnq|FAfen7T1?3+F#=c z@Z?A?I=+i$TjG4Np8^rfI4uF@i43_@wRAp)V(<|OCKTi1#Fi}l9nvL)Ey72V42gy~ z?qfs`V>1{dLG;WBUbivVytK&GQkINa&Ht0OmEq26jLC3BHsxhi$I7tQoD52!9OF-1 z?`9N>EK4ygQ!-?Ug*ZZ0wV$!1|>#gbSVf`Ef?yr(sGcB*!iK`mp69DIq%(3)}d95xUeq&%p^0>2< zG?S*~m8v!)fmFuK&vOfC;|8uarM-4kt4+rzG7BmqPmF6h1f>Z!s+Zt`?AWr-?2j)Ythd%2 z(tZ4%_|B>ShpMxIXL|4d|88u?h7DtG(#-wbw7Cl@bDPR-?v|r$ZVGh@siTgvF=A8{ zrBb=eU8+?&M>i+iSVWyDb=1{Wra0=<3Dr63$o}uI>;Joc|G&x2hKGFi`F=m&&-?v) zKI3$`r5=SzGNa3sV}vrbz?99sK`9}e*F#yFXlT=0FD)pwz012L_tTWGL*w{9AYvCL zvLpTVschf%(t5F&*5E0&FfpMFN1igFRI*R#!A~+WqVP)k`)^5Bt8|t__3R_A;=mbo zsjmR54&G|0u;JB3egI_Q;K@it%6t;2G&;862IK#(;{gh6>>zN#Y#|K@-UprzZBHR+ z7Ot>np{ZUntA0wQTSrT))@ZF3TraR8MFMzoJ`_uZ%(qG}(!SVMFVa=dmx;U$@4W;$ zaPG;{x@x>VDZ&bj5J@q*b!Q4_8Aq=_IHcf5SrmoX2H9UaZJX2f@HV&p$+;XvoOgy| zi;uV@T06&TqCsaCcser`Y^JWHWT|Q{paXRB9>dasDy(fZsXn5VQ=MFTNTbnuCB9w?9Ru)VD{%d)19yEukj+Jy?cC5@EP6=<271I8)0i<}ahBaMRqsgcm zfxveBbTcM{)z48v4yML&_)urTt(Sh(g{4*|D z4_$H(W<7BU%KB}bU7bDpiP=}bfuA7xF|}~$M*{<@&YrZ-W_^46_t|V2%Hd8u@ObbZ zb8uG~(a#4e5rW>iK#aHg3kq}_D~px87PI@1K`W-2s3UQ@q9;X977P=SsE8IA301Jm z$=08PDg~s`d*h*H5V{T>Ap6#>lAT6|K{a#Jw2+I|mvCBaJGkrZ)#65G zA7<+=&=s*L8~TOU7bZ_XH~UVrs)-VsmB4LxIDZYMbUP3a^}X%CsnN1!r{ z`U$lJNH`G=90{%tHHKi3k|a=l71U~uUqXTdanQgI@S}IJ0GO_X&i{C(uP2r9+7UC= zZRj@)9B4zFGBcs5X(KUVlVRqyKp9Y_6~mdx_}-##Qul`a=T+to+7Yn-Oh_OG83^;o zKa|6;GkI;%15%|vZ{49FJm6V6P=PfTI7GwKAj}cO^5vnQqwTZJu4o&j$Lm=kOF#uQUixx zIBwY}C&7-Ph)`s?>TRO6TURI`VAp!G*jD$_Tu?sD2Z)5if!YW9C2BU%Ho)Qeo>_vC zkCLV|S{$eUyqUW>v)iedUeKuTo9eu~(8k(1CtGUQh%xr`Y{b;A_dHr)Kq)_CJN%4v z!c;~%Xj(ITGL)t-^FV9}MW8_exZ=32p%z4f5V&F>1bBc`3PuE224rqqLPW+_Wz|k} zK!7{)fw3?8Q0$qlDx$vnSMMe0?94tb$UrNBNp)A@Ao;5E*c~CGTNS}RO8AUa_8d9 zb+qACEd7WTeE5WT6a=yz$CghVRGs-0cQw8;fqBkDvn{BgUGu#3J+`Z}RbPDvJRi<& zS2_61OU8Td|7pMHyE1M2J=awWv8ve~@r&*7xsH7nU$F!Ey_esdzwqXYF#QS);_Rb6 z=}|oJ5)<@=o8ouOK7xMsTb<|5ebQ7pF8_-AiaU0EFm#GK(X2KVgJJ;xW(1IsfWQI+ zS{y{0`r80u6}`yccyAT@&2+K9{m3lj7n=1!YMf^Qy$df1(1ro8btZKtx4^HEXCbF! za{+disr3Q6zFAr?7nqvkt!P6ra4pbYR4BhQH7DQ9;w^0Mtf1PMT))H28Zh!}q1FFY z9%p)yUB%>jZ3#0P!be{^rdeI(Ttvi$xn`Ddq$pMa9wpj}kFel)4QXE^JfU=0M5Lmt z3hm}-7zzo}-R9&%6dt7#rHj%iEvm5rrSaGRoY-0xD63V|u9h@G5-)wVuznRO9B-kT z56!YKZLJ3W{(tEEF8>Qa`rj%re55fHO%Y8APrR3%ejQoTv!>F2jY!EZQShq;cB0i9M0@`crw0J12h##TXivMJx z7Q$d1oP#_v>V;Sm*3}Lp3%EPv;N2Oc$VcYyD+`>8jQ$}s-0EZowF2k1(Uv1h(zfoH)2CTef;4?c6D5k%QQ#Hmn*O78z&HC|^w}L;WoDO_CHFu!|0*%V`lsS><$pO?|nIJt0+yfe4$5+xXstAZeGkkL$>tTDI|Fc_1y5qlJ7%^Tu)AaG1;sZ1teZFwl zOZ_#;60$^Z5WNna*8z;AA|iBSp|A*(Hq%jGUk)jcu>ig?GpQ*?jKEg=s44~UjiY16;l$0W&4ZX$RunS6e_B|hwNXEWZn8B# z3FFIirDjEm3+u`cHL~t`X*aN3?qr#i+}pK;{oAXiU45Hev}-pn@!nhxPRC6yCOK39 zA+4dU5S>6mQw4X0L#UdSXL(CGC{5jj?p0hhnc9ViQfmSpWj$u|s91gTt0Eq?Z~-q! z$Ftn92@G@{3xpkbv@R(#$&3q`-9UxT$B-SucN4nj8RKczl}u6$ zT-|`gP0tso`%D#F0(Fz(ikZ5%LbI5t$E{J26}7*Uf7kzwJFS4T zEa3(KMEqWmZ`8Kk-4J~Kt-H9t;}q^3Vplv2B1nUZ&atgWQ^0NwhgL-8stLkHqyaA; z`oN^asK*#v1eh4Dr3+S}W(Wu4{k3WPwF&_tr)?OI5DjF;l;E=7gg`Y2$TAra7ioY@ z3fzc*G60rQGo!#B`dEDR;WR4(B)EjBNKqGbB(=I_X2`hIBne!Ui|e@xF5DHP*)J~n ziBYLv(hUkBWPJa&%7*&>PUi%x8{j|sD_&n8kVvYT8@A?M%NutuZ_L>d^l67C@u2J% zlZE9tysgIzlb)SR8(vqOAS&*fv*-6$oL$=Yan-f0_Ub!PWYj7t%XC#O3$=U+Yp<&f zD7dqwtGGE!bkXSHJpy!>h5*Des9H=~x{xJgYoSK8SX=P|+;lo*;AIV3WDN;Rrp>;LPpiixqE$dOCATB#TkNB)X-WDt|ACkzR}VT#0e zRwePwOGT5wP(D(61qKU)8w|sWX2~wTm)Yiox>tfYfcm5@XbGVbkGnH(N)0t)lPDX zU`SPmVQWJfqk_oH^>1gI%gCXk93u?LF)1Bv4Tva=QiC80vs74n!R) zgSb4<5iip6ELf=`L^q6#Z%mA9)<;-F;%XweoGxGGaX}41gIijJYq-wka_Tsji;4)s z!SzLF%+b-47?fCuIVZRj$Wi_ilkq+>YEGniA_`i9+s;zSk%o6`Z|^94_15jJtGK_l zac#D^q_r{lKd%>Ca7BCV8!q$H+V$f^anS!es0n?=&=X9F0}Jc$#xVV@-yl6s{RM%n zN5iwgaq7Z?cpzK6fHWc7wzl|;naGf!vA|>$$+$_E1As6S(5|I~X{~v^*7H;b;98*@ zxFAar2Hl8|q{RUxgoXbgw}jr`0O)qq1-KzBjWE-TI|zR7kn#Ou84rH;9a{Ts3ogR= zw$e6^FF5hj4H@qe%eoDf8HO`O{f(Ne;R6iHESn}~^(L9?23b@Rn%3x#cGZ;|qsTqp zl!IQ$;WRig0fmVcFqv>!;sE3i^f7vb?+z8Kv>X;2E`4LUN}IH z5~oXo18nAL`V4&rnO2Lu*K*Dcu%waU4#PssxFbLSyaUy~gHvlw0G+i=NtTp^&jr{_ zmvDI806Hx~!V>xl{mfYt?_*}U1GdN}3%T@z!ik^+;-)iHOo3kqXd ztecG4#WZtATM&)Ysb-_T(^(fY3=EzFLNF#n2n zaSz@ztqtGa(0-6gt?drnV$P++4X@YAj@ih)gP$O2l44dn4iqLFx8jbCwN_1%Vs^yZ zuF{Ih^&ANN!D=vj>~EW~&&Ju+MR&7DUX6VyM8;QT@291U-sz#mJoUm7`eRM$Dj

  • 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≷69z%dST%7!gPX6DClk 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 literal 0 HcmV?d00001 diff --git a/deploy/sfx/pop-94319.mp3 b/deploy/sfx/pop-94319.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fff12a8009cda20bdc05348bfc21fe3733615201 GIT binary patch literal 12480 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�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%0D}C~?VF!YObm_*}zV|xb$Y)#(t~v$>GT<06 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 X_z(NThF}E3{eSu>D1f49bk_I@-LapQGdwpd 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 v($z-Aoh= this.getWaveZombieCount()) { + const remaining = this.getRemainingZombies(); + if (remaining <= 0) { + console.log(`Wave ${this.currentWave} complete! Starting next wave...`); this.nextWave(); } else { this.updateWaveDisplay(); @@ -76,14 +84,15 @@ export const state = { this.zombiesKilledInWave = 0; // Update max targets for the new wave + const newZombieCount = this.getWaveZombieCount(); if (this.mouseSpawner) { - this.mouseSpawner.maxTargets = this.getWaveZombieCount(); + console.log(`Setting new wave ${this.currentWave} with ${newZombieCount} zombies`); + this.mouseSpawner.maxTargets = newZombieCount; + this.mouseSpawner.reset(); // Clear existing zombies and start new wave } // Update display with new wave info this.updateWaveDisplay(); - - console.log(`Starting Wave ${this.currentWave} - Speed multiplier: ${1 + ((this.currentWave - 1) * this.waveProperties.speedIncreasePercent / 100)}`); }, loseGame() { @@ -130,7 +139,9 @@ export const state = { // Reset max targets for wave 1 if (this.mouseSpawner) { - this.mouseSpawner.maxTargets = this.getWaveZombieCount(); + const initialZombies = this.getWaveZombieCount(); + console.log(`Restarting game with ${initialZombies} zombies in wave 1`); + this.mouseSpawner.maxTargets = initialZombies; } this.updateCounter(); From 0a8525bb45caff8c419283f4632c21a4220cc335 Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 16 Jun 2025 10:34:58 -0300 Subject: [PATCH 05/10] adding city --- ...6_08-48-16.wlp => 2025-06-16_10-13-36.wlp} | 1333 +++++++++--- ...6_08-37-36.wlp => 2025-06-16_10-24-16.wlp} | 1699 ++++++++++++--- ...6_08-26-56.wlp => 2025-06-16_10-34-56.wlp} | 1817 +++++++++++++++-- assets/City Builder Bits/Base.glb | Bin 0 -> 25420 bytes assets/City Builder Bits/Bench.glb | Bin 0 -> 24816 bytes assets/City Builder Bits/Box B.glb | Bin 0 -> 23324 bytes assets/City Builder Bits/Box.glb | Bin 0 -> 24228 bytes assets/City Builder Bits/Building B.glb | Bin 0 -> 87160 bytes .../City Builder Bits/Building-7lMEpT2ICD.glb | Bin 0 -> 91472 bytes .../City Builder Bits/Building-T3oyvK6VEU.glb | Bin 0 -> 105868 bytes .../City Builder Bits/Building-bbH2Bg73qM.glb | Bin 0 -> 125464 bytes .../City Builder Bits/Building-g15lpKh4li.glb | Bin 0 -> 83204 bytes .../City Builder Bits/Building-otRsYa6pan.glb | Bin 0 -> 139504 bytes .../City Builder Bits/Building-qOhhGLftam.glb | Bin 0 -> 106980 bytes assets/City Builder Bits/Building.glb | Bin 0 -> 71556 bytes assets/City Builder Bits/Bush.glb | Bin 0 -> 25040 bytes assets/City Builder Bits/Car Hatchback.glb | Bin 0 -> 82232 bytes assets/City Builder Bits/Dumpster.glb | Bin 0 -> 30184 bytes assets/City Builder Bits/Fire Hydrant.glb | Bin 0 -> 30068 bytes assets/City Builder Bits/Police Car.glb | Bin 0 -> 89468 bytes assets/City Builder Bits/Road Bits.glb | Bin 0 -> 68128 bytes assets/City Builder Bits/Rocks.glb | Bin 0 -> 23240 bytes assets/City Builder Bits/Stationwagon.glb | Bin 0 -> 84872 bytes assets/City Builder Bits/Streetlight.glb | Bin 0 -> 29148 bytes assets/City Builder Bits/Taxi.glb | Bin 0 -> 86464 bytes .../Traffic light-Q6k7Izx6YD.glb | Bin 0 -> 52684 bytes assets/City Builder Bits/Traffic light.glb | Bin 0 -> 46152 bytes assets/City Builder Bits/Trafficlight B.glb | Bin 0 -> 57612 bytes assets/City Builder Bits/Watertower.glb | Bin 0 -> 30340 bytes deploy/MyWonderland-textures.bin | Bin 1369124 -> 1399140 bytes deploy/MyWonderland.bin | Bin 1170160 -> 1378828 bytes deploy/index.html | 4 +- 32 files changed, 4157 insertions(+), 696 deletions(-) rename .autosave/MouseDefense/{2025-05-26_08-48-16.wlp => 2025-06-16_10-13-36.wlp} (86%) rename .autosave/MouseDefense/{2025-05-26_08-37-36.wlp => 2025-06-16_10-24-16.wlp} (81%) rename .autosave/MouseDefense/{2025-05-26_08-26-56.wlp => 2025-06-16_10-34-56.wlp} (79%) create mode 100644 assets/City Builder Bits/Base.glb create mode 100644 assets/City Builder Bits/Bench.glb create mode 100644 assets/City Builder Bits/Box B.glb create mode 100644 assets/City Builder Bits/Box.glb create mode 100644 assets/City Builder Bits/Building B.glb create mode 100644 assets/City Builder Bits/Building-7lMEpT2ICD.glb create mode 100644 assets/City Builder Bits/Building-T3oyvK6VEU.glb create mode 100644 assets/City Builder Bits/Building-bbH2Bg73qM.glb create mode 100644 assets/City Builder Bits/Building-g15lpKh4li.glb create mode 100644 assets/City Builder Bits/Building-otRsYa6pan.glb create mode 100644 assets/City Builder Bits/Building-qOhhGLftam.glb create mode 100644 assets/City Builder Bits/Building.glb create mode 100644 assets/City Builder Bits/Bush.glb create mode 100644 assets/City Builder Bits/Car Hatchback.glb create mode 100644 assets/City Builder Bits/Dumpster.glb create mode 100644 assets/City Builder Bits/Fire Hydrant.glb create mode 100644 assets/City Builder Bits/Police Car.glb create mode 100644 assets/City Builder Bits/Road Bits.glb create mode 100644 assets/City Builder Bits/Rocks.glb create mode 100644 assets/City Builder Bits/Stationwagon.glb create mode 100644 assets/City Builder Bits/Streetlight.glb create mode 100644 assets/City Builder Bits/Taxi.glb create mode 100644 assets/City Builder Bits/Traffic light-Q6k7Izx6YD.glb create mode 100644 assets/City Builder Bits/Traffic light.glb create mode 100644 assets/City Builder Bits/Trafficlight B.glb create mode 100644 assets/City Builder Bits/Watertower.glb diff --git a/.autosave/MouseDefense/2025-05-26_08-48-16.wlp b/.autosave/MouseDefense/2025-06-16_10-13-36.wlp similarity index 86% rename from .autosave/MouseDefense/2025-05-26_08-48-16.wlp rename to .autosave/MouseDefense/2025-06-16_10-13-36.wlp index 1499f52..8a05566 100644 --- a/.autosave/MouseDefense/2025-05-26_08-48-16.wlp +++ b/.autosave/MouseDefense/2025-06-16_10-13-36.wlp @@ -1652,159 +1652,6 @@ 1.0000044 ] }, - "730": { - "link": { - "name": "windmill", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - 14.3795557, - 0.3683118, - -13.9868984 - ], - "rotation": [ - 0.6247548, - -0.3311828, - 0.3311842, - 0.624753 - ], - "scaling": [ - 0.0419736, - 0.4500722, - 0.0055593 - ] - }, - "731": { - "link": { - "name": "object3", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "GateFence", - "translation": [ - 2.4648766, - 0.4939031, - 15.2204427 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.629207417863654e-7 - ], - "scaling": [ - 0.2333862, - 2.5509233, - 0.3531371 - ] - }, - "732": { - "link": { - "name": "Cube.014", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "FarmFences", - "components": [ - { - "mesh": { - "material": "521" - } - }, - { - "active": true - } - ], - "translation": [ - 2.6194677, - 1.097275, - 1.3452991 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.6292079862978428e-7 - ], - "scaling": [ - 0.2452231, - 2.4336197, - 0.4567871 - ] - }, - "751": { - "link": { - "name": "Plane.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "FarmPlane", - "translation": [ - 0.0, - -0.97, - -2.0722937 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 3.0871233, - 1.0, - 3.0871233 - ] - }, - "753": { - "link": { - "name": "object2", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "Gate", - "translation": [ - 2.4816784, - 0.2783944, - 14.9548416 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.6292079862978428e-7 - ], - "scaling": [ - 0.2452231, - 2.4841971, - 0.3531371 - ] - }, - "772": { - "name": "Farm", - "components": [ - { - "type": "collision" - } - ], - "translation": [ - 0.0, - -0.3, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, "909": { "link": { "name": "Mouse", @@ -1945,110 +1792,628 @@ }, "982": { "link": { - "name": "Collada visual scene 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Bench.glb b/assets/City Builder Bits/Bench.glb new file mode 100644 index 0000000000000000000000000000000000000000..424e7effb83321f6d984ed66be09db6c703f2fe1 GIT binary patch literal 24816 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 Naeb+sZoH1;|381l;%oo_ literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Box B.glb b/assets/City Builder Bits/Box B.glb new file mode 100644 index 0000000000000000000000000000000000000000..1deb8506acffa377a8c9a0b4608454894e6d112e GIT binary patch literal 23324 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Box.glb b/assets/City Builder Bits/Box.glb new file mode 100644 index 0000000000000000000000000000000000000000..82f15ed73309ef3ac225e19aaa029a8646879de1 GIT binary patch literal 24228 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 Ce$j;h literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Building B.glb b/assets/City Builder Bits/Building B.glb new file mode 100644 index 0000000000000000000000000000000000000000..85bd1aa6330df4a3e76d53df2d21717bdf3c5bc0 GIT binary patch literal 87160 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Building-T3oyvK6VEU.glb b/assets/City Builder Bits/Building-T3oyvK6VEU.glb new file mode 100644 index 0000000000000000000000000000000000000000..224c5c596e83a475b356b07bef97ebde3d531643 GIT binary patch literal 105868 zcmb@u3tUav`#=7yy-yb@<(5n6Fh;IPrE=|4#bUA6j?#x7MeB=3@8nZQI&8{G)!YZQK4w+qmHG$CY=c z(GVMJn_)IKc6JUU9Gz^34I43H#9*T#&}jz;%(T6|la1pD$Kl>XZ1`o|Yl9p3KSxIg zdneoBPO>chy;jJL{ZDP-nk{sT{~I=9xSgFNg!4bP)2c83KMa_Q|9>e=+y9p^|HF_l zQL+sD{Jnfzl?BH5L7(RPg@n!X3kmiN@m>)U8su%gB*2%y;=fEjpD}+wfA3ZW>LWKb zl;7FfcCeTKlEwdm6W#k-8~hIqp63h1o?SGekfmwTf(97vbU3!3a5;XaWB!H}n=Zf2nk8 z-1^dg-DzWOZ=?G+e1wCIy$mKnAA0m}ciGyGupc(u(RPG`{jd?kIJE2L$lp77;eYDH zyimWzTp*sGbFnQ6^7Ho#@mu!KeIF*HbwvI;Npr>X3JD4Fn->})-wQEMarcnXi-KO9xN0Vuv&2VvZ`|49q8(ffqy$|H%2k_$U@(#9k@*j}pC;1LOng57R zsrrr4Clja82KOoBO^mu5flioAobc&aL<)RVkfAYjtv;M8Wx1dm{%wjFq3w;n|_ z6Deupr{kurU=@$j{u)yhQSi>L>5$^nPbd2SvHqT6pK*f^ojBTQ(5UxrM@_T_e||bx z(RNh(!I!`KG{5^~n=j6N*I{Db+P;o+hHvvMSe?`BepAdO_soyu&->==dcS&faehQv z(~U)khaZ1@{O-2rQPNB2;}?E?pAbfbf>H+1?QXoa4)|$$XMA|^wmxAWzsJl=TO@yo-mP%oM`o$7B((PAUD{-(%r(Oe z?uq<1_a`l$+l2IMtINyOZ~kgpuvw-cm^T+tkO_V!SITc;T;dcQs>Af7Vw zZ8Rn7xl2NSUTwmUc~2UgC-Yt?FE;b$1BUad?c1Mj$4mPUUl7|6b-NT<%o4}5qm!Hc zs{%W!3-jo~Gt06z%525kS+U-KdJ0rLE`^@O)0T;riPw83PS$$AlKhP*l≩Y*h% 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 z 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 Jf7 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Building-bbH2Bg73qM.glb b/assets/City Builder Bits/Building-bbH2Bg73qM.glb new file mode 100644 index 0000000000000000000000000000000000000000..7d9c73890a36321fa78b40dc6536f954ab8f51bf GIT binary patch literal 125464 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 XAU<%%>VdLJy%hrS!4VG#f8hTDT;@si literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Building-g15lpKh4li.glb b/assets/City Builder Bits/Building-g15lpKh4li.glb new file mode 100644 index 0000000000000000000000000000000000000000..fe5446e5540beb4bcf693f7d0b7130e78709482b GIT binary patch literal 83204 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 M^S-O)ly$fNAFJyn+a literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Building-otRsYa6pan.glb b/assets/City Builder Bits/Building-otRsYa6pan.glb new file mode 100644 index 0000000000000000000000000000000000000000..ad4a6b885aa74bacdd15ddab4a74f8eff066e433 GIT binary patch literal 139504 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 R4?P`O&d7ckSaVvuu6wh;oIE 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

    qf3S4LA4BJzO@H`FVeu#9)K0x`V#DYsl%>-ifwx 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 L)X(|Z$~yiRr=feb literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Bush.glb b/assets/City Builder Bits/Bush.glb new file mode 100644 index 0000000000000000000000000000000000000000..8927922bec61e961c0a0c4cf2fa0e0e57981d579 GIT binary patch literal 25040 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Car Hatchback.glb b/assets/City Builder Bits/Car Hatchback.glb new file mode 100644 index 0000000000000000000000000000000000000000..43cbcabe03234ad7fa90b0ff34f47b7750e04c67 GIT binary patch literal 82232 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 J|3rQE{{dhh!~OsO literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Dumpster.glb b/assets/City Builder Bits/Dumpster.glb new file mode 100644 index 0000000000000000000000000000000000000000..3b02dfcb63d36d5dee861520cc2d5b0b002057d8 GIT binary patch literal 30184 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Police Car.glb b/assets/City Builder Bits/Police Car.glb new file mode 100644 index 0000000000000000000000000000000000000000..efb6ed4ef07b7f79ad1cca1a8f9ac2f4daa73c01 GIT binary patch literal 89468 zcmd>m2~-r<*6yxqCJ_YZ0hQJmaYTk@Qj|6%Q6mabV?;$nZICE~3@R#gXA+Gj5HTW7 zVB(ZSMNz>S;slBeii(N~ih>G?f--m4`%X3F#+dux`{&-Z-dpRX))}hkI(3GLVZrSuP=UryBUUPZcap)!c7tA z7d9VH9BpJWE5k@buit++)nBpXAHNk}ZEfd|FIqb}I@+<9@X+1YSKC>%G(`NwKYdMx z&;9u=)|4Y2hWUi}iDR~vIoaF(%ciVtW#VgZ^uR`DYx7oHHh-@zTL(vL`#<;VU$^Dx zbA=+8nTFL%KQ}*noHwI{LW#jZ#r~Zw}a7@KI^|~%Erl> zwg10u%G#bS)|&&A*^8t8UpD3V7gJ^DX!};D{^nHK+rK^Qe{-rFWwO5`p?@(|4puf+ ze`5jvVyYahZN-&%W77ZLR5{q#ygloGZ>k(@ogDv$)fucpf0 z>1|d1n^WcB@b;|#>rVZZ0y;R^+58Pr_^YXMw6<}0OKs3A(ME`N<#+QC=o7$K!4G?xcV)vPyN8v_K$5_Tib|0 zE1IpAw%>wFHoXD<%*@U(9BO501?6*+IoR1*JK9*u#3>V>%IqO(j#f5~HjWOWT@#;L z*;PByl7;$#N+EEQX8ZOqZm7C0lbk~u+s*+ZFwjV+9!ouj=q0M<$S(ALh{ z4o%>h43`s|V$taS7skw1;0-YT_vh2*U(M%Rmh69M`+t@Mn0VIDKQ7ikWg`FENs%!z zd829Z!5bv!&vJmZwYRmhwq+Pm+k>vc;m?w1@(p+JHPc!HzrG*~;wywk*6oZ1nfP zBMNUf{T4X?Hzffx^LP9GCM3MwZ)=7CZ>q=t7ouSOAHeLJu<#di`Zmn|b2$57!-DmH z0BHYG8r}x9zmkSGRrx;!hBsm6{|Ycz{|8w6FQwsau>EgJ!+(Hj|56&>2DSe`q~Sln z+kYhuTE6#&>1| zhs+g2F)bem@Cj3d`1>q;tF=G(pS9()FnGSt1Q2Sp*4N!*^v9okz#e0OAwH}D4Bs~- zC;(9*?M>)>pLza)e(a5f>=lpsLE1_151kScuJCwo5}x|v;|lbK1&V^_giKI``7B)M zKX+14xZnIh&~$B6Y;dk@Y*Vz;seS4nI8VV?D;pZ7#Wg4>WFET}8~gp04}Iop<5e>Z ztu67>H!>~dY5C~yzqGQHX(_Umos+$lOmyc%T6^?|UxD$+tnC~S1p)a5f5I?Y8VsHP z7c$`!;vF1>!713Z1&8SfH7o%lF0os{n(C!l!7UDlAJWTv8rg@_KqzR+l z@H=L)JlrRbn=;OQB5s*+obtgmS9kYG?|WO}f#?hN#XRAoY$`D|zw@%+MfLY?c`uo- zP%QMuA_j(eFI4!3{nz@*u=Ef8WU&24KOMv+`$s?7RJQsO|FoYW3iSNH+D(yF{h^-> zP~PaLwe_Dm>iF+;R6C&|{(kfSdoyayKlYUwzc>5p^yj|XYbRDzr++x{f9N>#^CvPDL0bTzz|e(0VcN*^4Cb$j{;8OW zO@su6{gXe7fFS-Rbgs`rhHZbs3Gr`p=ld_57oyO5+}8htZ2pbzfQUI*IapiS!$k+6 z*g&cOH~{V69N^$HPab|12K^G_A*O(6J- zNwz}x$H~bNuBM}-HDUuTex;4fj^Uw`wY8JIojpKFB!>uW*g44HH#*qLtf5G39B(Yk zP#a5onLV6MV6HV{oKA|NEDpnXYRilOy8k@O z%YQn&HxcUJ8{PjaYu94fq*AHDdmOztZX&Jrm^jARu!kYG-HgYLeSZ>>4yrn2poc=) zYw(vS+60gF3?*vYfhF$h-Kb_FDUEx7^pvGs<=ymOM;1pFzO-%HtMmT*;{twKbh&|`wtM<+k)FfRYAeh#zjHhCAW$nAZr zDQ>(+*1HL({BpOwUg2C)5S89^dBHxrL-!8d*z_nyc;a&C^!Kk5qh3XSZC)Frd17*X z*y!6XnrI;@s?F7?M>Eo=rR(@BYx1JJ)g5+3*2HU;pj0=wyg2lFeC*<%y)gtD&}~xS zj8EIjiIUC~C^xfhM)}u<@=apps|GxgZ{hGTX*8FV+Z`2Z!{&tA&k~Ldq;u?v^qh`# z0{+S#$0kwiZuV~HZJMG^^uUNcG;Vo=QU}tt?yR*A_|w$Rs62jApSX+t#?(hsELLK- z>v-%U)3m1oTD$);eF7)VGsO=)lGx8Y?yJ2w@fjCaRFo^9|Lk(J3pvIpYm$W@4wEW+ zX>-ttYs1*jI!)tZck3C5Z<+cvnh^EcCZIo0*W!=)_ZwU$uwF>dG_&Rd?by=x8$j0* zgx&j2OWF{1KO0@bC5_<@OlS_M4(g~Z%BR~8&CA`){iq! zy3{Laf=2OF2r#5@CLSssKRP!qJ*PwP@ z)?XD+rVMzXPpe+iMtd0GP>?PV%QV`?8_|Q*PFs9gs__;-WU|lWM?OG~Fk=J9+F9TsPPf{jye2q|&t~Eh~qiF4~|< zi;#4)P^$X<u#7|o)q zm?GM=R*2oHDe!G8-^xh?uG4L2NX(7_Bu{8CpND}Qf2Bcl#zT{G%u4K^q~Xi21V>{^ zS=mOq9=#s75<{LrPo3%TMRSs#Z+F06SLLWq&oPuf4$-5qC+d8=^{S^26Z=Q0`stPo zZ*cvgGntlgRuj2yNf%!v_SdlA=Lw6d_2=7YB>jv_UDkK!F704*rs|K0x25Wb-u)x# z@gf0Zp$FHL4<4Gt&a2m-KM9f$O}sp|NV%yVE1z_^7o}|BOf8~RJMMF=zr!1LcNhA& z3Bzid3;V0>2Q#(sFH_Qll}ZC!+A)yin?}eJUU5I(A?bKdnpvi*EH#3m)KMv zOdWXB}% z7o0OOeWYh`ktvI-)LwhU;olYRL;qylBKC+ou#B&@5ASpHMmUF#6B`o**}rUjO&Eq#z~jE zn+9Bsws}Xssf`>uvyfBSEWww$PXWFqkJzyGtqrc#|TvhZiQG9v#YL|(U zv4?m%vsQreV-o!6+Qsw<8lr){h1)CitR^;wPj6kL>@F(jB`TX4s_hWp{GD~Kg;tQ$ z_9Pw04Vb7=Tn!48P^2Yc9R`!o){UC4=B~Qr#9+@;d9D$4>I_ zYu2Z+9}5dQG9i^-Hp_5qkkAezyCkfLJf_h+?1?78Rf1)QXuP+fvs|2e46i#~JqJNk z4R9bPDqHGHWx&WqO+Y%aAwS}NG=gRUVQxtb#YJL@6F-h&crKax@%jCg5Q6*0OuZ<- z^d%(0e=24IV5{ont^_W9Dj^a2Dr9$OaQP$lzY$CH4QVq zE6m(BQXLO`;b^+EaO4*6v75isA0V#K^1BMILt_kN{vX$7~BlZnS;D zQC)fbJ*Fe%c^r0!e}Hy7%h8J;*9!hn3SHPMo&efO;?mYMGqdT_9~SgsZE=6$@OHkF zMHDb_`*;8Y00)5fAPABqz4XF-H@9Q8OAe&v9g=^~OW8_12&(BWA6p<4ICH#cEIQL7 zn97IH@A_yfiTt(|W@OdN=J+zx7r;4BF4oUr>}2k%Axt2d23`V5J6t6Y9AT!L@VTG0CNqMI6_MvbPkyq65E>EECPOlN6D$DKPv%CY zkOU$0AcSyfY-11<)N~guwJa0J`AgBB0nYsRZWdAW_@&`dahBy9Uz#7^!sVCgV)cc9 zvz=hm0{WBxRW^uCkR{dOK3F>mom)z7qG(n_*2iZ&*h}0h8;$D^Q2n(+0A$^d4v#ZG zZX~oAI)Fod>2nh=tstrTmokg9m*$)GkZ*;t&wtR6?A90nlQfWy+>+eEsMP6fWnyeK zFvD0DCWn%-_#{tXIq6vCn$hE{YHr<1Gx_E=v$xc9(kzKQ0Vu?<2P-5;Pm;!0Mep|^ zm1Q2Zex#gw#nOB0W)McJ0`~EBcUcE3-i` zGhlQK>d{)#89%Dg+P$-k2bAf~E&^P|kDQ(V$cP3M2-`n<%sTjh{f3z%aHbk90zgsR z(Zax7%0j=d4WP``E)!ZroY5K){b&ko3oI}C1YSf#wd_Hm2eTx~AwCH@6I<3UwhVNykBahtB9HQhVXy+G4>=eEtz2wzP%%~}djhc4 z6#9!_5-#=R?=r@q0jD*aEwFKtsDgNf&R;YE5`1s@E*`_C?KdD z6M*aa>LO=BB7=%gXk63-(ks$HsJJMIjAv(A>wY!pl&IYI2;>9GU0kLy$H)hR){f;& zwe&=b*3eS0J5f+DgStuf4Ve)VBXWAK!BF;KCgtA@l>-QvxpBrypdCgP+U2*>3rw-0 z%Gp)E31j{kV}6--(IsH1CWc7_aIO!g5-&?9)?pEV;f$hy8$z3U&UeC!)(o~(!C<2$u~Yv^sQ(1aw~*cdcM?KB+u1GoZ=p(UNpb-iqT6DPEcBU z{IT%m{_954fTI$5yaW0!fHRm|XkZneGQX$Ad&%t}h5gY3xgnLo2>ESranUP+AGHXG zM)^Lva(G$W+T#aqHnjv5-0o@tw5?}rM>RY3G#F{dOwYp4RN94HfTrQZP%O%G}cDyOl?y+Dv@3Ouh7Jo_e|RN%XFC z-{#z?M^!75f9+UnrhMkk+}ZT{nAd~zYvWvMhgHN&bMTP?)rJNXva$(;m@X~kK8uUm z+9f{~e&0M}2YPHHdN`Kv{StR@}AMgCnL@$z+;o;?Toq}&?wdHV)s_&-Q4Ao>O@%pJfk z9CJLhdbbUxBjHPe+h2W$Xzfg5yzG62SDDC4cqm6qB&#CfF34hA9ANy zpeP0luY+z9RwTo%T{^XLKyq}K%@^%DsUAUfsm z+ICe((GmhnQ&#Aip4m&QYxIs{f`E56iQHE`L4(qFVzBMjwEWM$lTc z(_P@;`uLyi01OIJZ3pL@pTZL$iAx}&&xL@gbiO;7ZIy_Y`YOi; z2Gh;4J7M`w^W*_14^BCzU(|q(2r0m4R%Z3spvt`HlG7)NIe0pbx%DQXxxj1kd`|w` zK=BbnfPSvB5!S@HeAS(jF2MuwrA5^+&*s0pih2z9*2bOupDHnTGw#4COZ06HGHb`J zVWS1x5d}bc(U8X0hzyAd`oy-XLD5v^PaZq#Fzd{4V^Q}OfM^Nsha?AJ5NN{Lj`YF{bGtKirSF^RzezYY#C?=b288TGGJqR&4)W*{2I39@jx8H(g=pJ=5QEuU zn@bUHQ9H88lqu8;^K-^Xz?v|AHw$YHZ!uC&r2&6CEc))Y2-+Ziw^xi#*wm!kH!za; z0V0H2A%`To#=BAlz6XNeu=|N1vcSAY$D*m;Ncz>jZBz=N7U_nw=7_OGzNI}K4-;f( zm2f*e9x{#?DXDFfU9tSbn<;V|;+9U$!?veGmtL=X?Dk z)KOy(uCtZ^){sy<*E)LO`C_ChHuVD*VZ=j)tE2^BCH)$VW^dKYN5e1iheZqk!Tq2> zpfTHd$b)KlkP3Q<=bK(}n;00c(AztqF#wzgP9CG^p;!+G##r%_Wcj&^7_|RYfEa`0 z2_S^AbKAa3i(5jFochGwL74CqL`@#7Q79f4wV4>Lf7!Ct+M#Vq6*qNTB zF+ZQ%5kZb!O~^T}>qm?9$iSA?rIGHyR>L1xxNy1TTIwn$?E&K8a}5Z}eEVr9m8^;d z13mFR8wsO(y|iZjNQB_c`qa4_V02HYWPV3*2ao=ds{Xo3soS}8qU0i|hf$`|d+}hG zfebP+CoBpbYiFdzVJI*JPkzO!IrA33&bO_{)@JS-gfGq&+aFf3Q0D#gfP-zM6Y5yd zEdhQlqIms8XAjsFhFybW9D-SHbwM?nba*o!GKl6zraCYe$4}B1mWUwSp{qOa1dJe) zg-vci{#YanmMWJJ=gF$>E>{h5P-$21SEilJ@nV4jfW~^GJUAFZlj$Rb?&oxrZ+cz~ z8;I})Rpo54mrISKJpY!ra@F!Kq7alo|a-?wdX?yd>9yJXTX1YD-7 zMq^?Z-6Iy?=QcSb><*L80RQSq?h7k*`eit2FLxVvPI5#b>}pfdLRw`DTE^s(5Hw+G z-JJhOR|=3qtSxAUHcIA>k-p%MG9Iy94g;b;phqAr>Q4do97rsWXkWoXZcl-L!9ekT zrVSAq&=aVP7@B~kKu81B21~w@0fYfYy1BF5;}Hf>jlPjI^OTI{WC)(H$W*MOIMMaYi^8HqRG75@;EtWKj|NSq&&-%A;9tOj5FzS0T(m|*h-VR; z8!vRaS%BDrvV!wth1q~@IWR94yj1iS5Wi(isKFI5h`0^Z?cEX}?`oIafh7vW+MYHH zgN&Ue4;Gwepl}uOEQq2rmx^Af({h>wM=Wet6_95#BXZbpfXmhilQXu#gqE#A>X%c5<~1uRG=+BW<(L%SHT-tbPC@rLq? zA+kLPT;w2-FSxTCLQ#OrLYq?|spVPiFL&@O8`sAj}8pxT|89*8^ernsz=$_62r zE^Mgcwvu$bdN*bWA^TW6XYK-IrV%_R^O&$3R0lGZ$X(V_qo|fp6hjI#Xq(=ifcDHj zu)sw4hhVS(8>Zv7`A7f|76cKn2UNv2$aZ-0_gL@(UKKXNt{vm#8?lq-s!}X-0kk4a zjX;|i!sFKMrLP#2u4Oz0T6o!jEtE*W**+PQuyrdDoaE@tD+JCvK<+v*Dto1W6sb1c z*Y(%}nyCX4)(QPD*O+*MbC2S?AqdgWxP@}qHk?mvT3xQWT?IGh7oFH$b!Q`1lom(1 zPWN%CIaIvjsd*6afd@V?Mz5%z*)h%ZRbL!aR&=a*^_0zS!o z7HZHBwoi1NuO)EUMq>=z<015+V}|TWCfgbu$k;EZ8geQ<@MmuoT1oQX8_2OZe>LzB zjE{wUU=~;fZpPLw13r<~-YN1m`=UBX11fupR+Knt;(*h_gzQzBV>;1T2VW0a#Om z5f@WhuIZYZap)*VS_*`5gDG?&Hg-kBu=E%4Be`u^@x#pB)d!WY5?2ThKV4h()I?Zc z5!&B<+W}>jyRiLMa<}61X~Ko##Sta__NOK(Vuh&wQ1mP7iq5*&xfN8N{3U<0UhIs?SL zu|I~b3r+c)(-$T)53kPM3^eoAG>-D;y<*D4T!#k?_6lRZa|GD`0VrC2iA$w@$T zZY)4H&Sgq>q3FW#SrvsPQ#L%Bl&<3(hk!Hi{HjY=^Ut|$@IlFR9=5w#dr28_Mx`!n zYcQvShqz6O=)LI zi2WeUD?;qmF(QnyI96QVM@Nn!ym$}j^v>)pBbYbCFyF&M$t(xHg6*hyW>3tIi{6j8 zoWmO=of-^9@n=L=7svu$f26zclwzf;efO_WQ11-g&H_cVL;0cJYegBwFM!F zRbaVw5|~Gcy}diTpe&<%Qz`tr$j8;4LH5!__RZ!_e}0cZhzO$Ppi~$o>r{wjz+|8i zi?L{9ABS6hj!i{`+ZXPwI1*+2zzAc-ErPsz*p{xlSy0e;HR3xgy|tbQJo{rp zA&6rmy2xDR4P#U`HIOMp^|tI{C`%qJFeN0%xiEbVe~#Tk1Pl=$w$Y^lwi?$Bh*vhl z*9udv=OA4?f=E|;w8_9Tvw!89mLn&e#bXFTtiXR92Hx`1Qbg7;RuRIR%a*!6b z&(E+%e=NEvMFeq3nqVJ9r8jm)=}NN=v5>YIvSH}F=w+irI7Sh|dN<{XI-vAfP6ugL zh`wrwE{uKC_62(@K0)+E*d4*UVb0=277l!4XarB4g`5H2*hyv^0*sP^xiA+zb$gq0 zSaoc70P01UgHAG`C$C>!Gx}tAVS6f~u$VG(z^FA^yevrF1X#2AU~2>yLNS#NC$Ioz zBBH`TGpvHx2{scg^C-sVp--{c1<8@HSRR%XLeAI&O!CI(CZ1>Er8cvJ1)&1uY4+Vo z>1==fmKB67hD|*)NiA%UB=;3IdWZ8ftC(TbZD^Gco%?UnQ$y2MKZpS_NP@(+U@~NarFf zXpcdvMZMYSAh<7}0nD$7-hUra@0R^m^Axw1t+`orc;6smAy@ngk+Me`Z}3&@+GD7y zL3sj32VRIRJA@{5X)N3`xW){pwqtk4e*dRK+2#{AD1p-mQ-6ED3*w9&S=Znn;n++H zU_~WmLLdezq+lk)!KTeq0M>}Iwy~NbDhT8VB-!iHqA>aI=`K;Uo$|l)Gp>5QX_8+VBeV)&oxS9@vb5d(6&}oCDmE z4+0fV5~({_oH!2+yWuf{=A)16AQFfdU=sG&NMJfZv>EFVjSa$jt&oq%dFoR!J|s#V zv`mw4hl#+cDJG5BH9|xNAzT&~L10G|8Ejl>onk~iYbkBtEJRXT)P^k?3q#Zwf&F7Q z;KYq#%)`BQ(L8DX*pazvQ8BS#Vn;KU*swVlZXji= ztzh(;o#?~qqIpF3VU?d-z_=z|(vjx0g+)kQV@U2hngGYJ z>eUa;RE+z1Lf?<A61*)+Z?72sQ8LFRmqqmuxXw>K&TY9=kj|IjtixUSPlT|y5N&mrxj!s` z#7oI1A?^^tbG4+HI@``)0l`3~~^>PKLAEPiaKQAA30R*seHx)Z|(? z?Gp$kVmmq;89x#1motDvpC$d6JI@Xa*oZ%GVnWO|XJ5BfwHKicf;^vzwwf8&)i`7X z^|^5!=LwQq~_(7>8mqWH=$n;E%=Bv$bbBqQ%G* zN6a9fgo7&16*vb&%5#ZjwklY=+e>S=zn8K4D0j}E${(1@w~Z6Q3g`;e!XY>TtPTe$ z7Iec74|a>nv_d4>X$Co>amcB0!IqZ?w&DA+JxRu~ngd2j3_KpSv1&0~SS+@CmgvjP z-^^1OeC;jw5kS$BM+Un%qKC#vzOFlgZm`2*jDQ5ej$#M>qD$ZrT>|0&EV;3^++G0a zm0%$nEOZJEHQ`99*I6AfA_R7)z|%pTHWjQu{SSlB%y$zuasu`c{}0;^n1t9|g8WSd zo5PN(A3bEQtjH!*HiIDvpF(*rvZzD`&f68nMs5MSh4T*LYbr;u)PzQF6PU_)>}oP1w$%uGOdk;=wq{j;V2{~sf8J8t#pgDR{x`y$@I{l9j-%AUA{3HXR3v4 zrtPI{E^o6#o{xL1gy7-;N0JyDWHQg(3+AMOGX%8b7S0IZR>AbhnLAe2V8Tp(3;TgH z&8XmUNJPO(?V;UGO-lGaXkiczi=?>GrOWWT5^;u??ME9V z0lMN&9Iy=PiB&4YIZuuMEYbRl>rL~p7Ep9V)w(dM$3hz7>0u~mLd!8K#9BpfghPn zPvZa^8q?Bj7OrC((}>2d9|tL7axVYDFqrKGLV+-TAcNLMGlIpW5$6mb@;)H?8#

    E0S7#}7~jDj@N0Jbsf*j<;lWn;dyu5^qt;}APA&DbPk?$s{we#zu9N%hP9Z*3S; zImdR*non9rJ=S(7OI%dI?Rf0iGcGEMd>49*U_Tk8Kx1&07K`uc%ZydPuNvhb{M&{g z>?vS_f^B#t6>6iC#ie%*+#~ltsOxUKgHL z*GiO+K6S4<5wY!&d$ZT49q}(2x~MMBv<$U;a=iD8U7uAP8Sx{F z=GL&pE4lElU_K-HZu|5Ahcb4A7=a{1iaW^9K2c^!9W%h)akyAlwHghbRx3}WD~gx= zSeBfR3=YooUXh0-+-T-o&=h@#&qs-{tw6E~_ zwI<;rEEgqxz|HP^D3EiUvs!&)fnS4*A9KU=e)tzs&tD~yjQL9N z?$O(Gdv^=zy$)Q~e80f2E&bz_x^IgQD8t7LIas{x*{*4tAWi)5ttqZ{roz`M2|3I< z@lKRkB@RxAALrAaR48r_qso(l@cDvrlIJ33NJ)xm{EDdTXF5&eLQlG3NB>=+Uv=zOZm*IL9)>7&;BNKa+Y@;Wk{mTdWuV^SgN~pV%@;XuS}{6 zn|e1z3i}~ltBM!zX-fQ2h=;Gn)++eDY!LpOjdwG{i$~(SOiiv_7R1rN?5ygz%v+q{ zjDbvro}9+Uha3Uevo*yHZYKogUBTlx_D4+W1IE>_Fa8I;+!*~#`UMf&UU}IU|V)b!mAo( z+PK64&^wtYoHTUEa-{_*) z7a5d{yHl22H?DGhlaPEO_kD9wpWGGI@w?k#jT|K<{Q}3|^t&gdmlxNHfD*|zcv#ao zUAE=i-bCTV1bOYYFSUx3_s~=>O2x|Z^w6V2;s;v%DxL@q=H^Y?QiPVzhNe5S$=Kl2;YFim z6`Ede4EQOtEg~tWqJ1F#TobR#l?v7Ufbi9T3o^n_ZzB?c-cpt z)m)FflYTJ0D&~&Z>*SJ(;`uBD2!&sym$BxA+j1(=bi~`1uNz!y(q-b1p`YP7%Nm8E zCHGRQ>Wj7VQS!+EyahFSapqoe{6JxU(T>vNHRtAPO-M!l4URtQ$=9FRFwTUU8&{ud z)xp}~Q|~g40*et%rw>4GtF4Z^wxc^spAFKd(;&6%n>`29tZQoH+LVb2xv%FIr&Vgz za{-PdYLR#&o!r&bXK|cw&7#D4Rpp{YE+5z!wXFdwn7y&4S53pvcqe>%*%?i4lOW=I z(cmjJ@Y|uOpQ81>iRApitVy(M&#t#ZxKWHU*{@+=+D%*Enn$H`3)3sKP1`kUwJDdD zj*f5YUF-DaF_^iR?#o4GnU(j8Q7jI~sygVZx`rKl=96d@Uvd2Oz7fL?!RSC;hh;Xq z6w@y57Y+0vSSJl%KXhQ-H z2^@x$ZLF(viWihUt$w?wm4J(t$>M4-6h3mN_JDf?m1Kt3r7sW{@>JipbU@b#Q`Sc{ z>|yE`kqKdKGt@(yzEc)zjYTqxT8c{(8S~9n}F)ck($kogeDS`b`Y*z!Lu%fDLwdo0`(E7#= zkuF*x9{8A@^(6Vl7yRRzoW_RqB5wKev}AEs^t6l7#hY8oRaJ#X@h?_AdOag~>rSB< z2Vq)x%M0GpWJRXthsd5URzrlCVKZ#yWpnK$^;4>e`M#Q zM5D3d$GYsM^?Ai(PWnLHPpYF?Fk3W9Q9nLPaXZGBta7gmIJJ0`P$w)JcvTd0V9L0_ zroy16n|_Du`YZ=s(5Ev&EgZ1EUtOEZ9eMZa6tyFkiJF-UFUSoDnWR|S+|;vfWM#+W z`zzGN+qC0*ajl2k@gzqA$2E3A~ov6Jr0sO0tWrs5XZ zc55Lu^*Zr&PQ{wy6%8p>ezjUYI5}h_!pIC#@#egw{v8C5zKY#)&_5cj9?dn4PRMXrUl(}uV3O-1vyt|i*nHN zHVnUhLM>?IhMPg7D8E`+zrPh(rP+#z%`c}HgDxX#Tws{^rCdxU3Ha~MobR= zUMuF{wHZ(Wrz^*mbArlS(D=7oB3W?M3HD2KxS3sK^QbtrRR=VI$3BFQh-ODgjvj)A z8utuxEGf+8RO#be(IJ&8D=Qo-{hFJLHRD?r@v>Z$j6SLnCqyC7m1vGEx8{{;}O z=jJtSq(oEJIs~Z}*SzkyxW=ovXvW#_@^Q7ITyOqH+#wh3#E50-C*2#CL>_|$)H2mC zJw@okpvOQKFq{J}j3IPM`>k9Qs^@_lb zEAN^xb^&WzW6dK{1J+V+R5H z;;o|OeJ!IOEPitaZJU2Guc0A5t!YLrjtR8H9j=N0NSu-oXRz2*Tcgx>JK&(yX%8Rw;Y(m~Y zFv2|q;JkcbGBCeMy-14&mqp0ONeTCmqO+q)e|i=0MeyB-bqBP=^=%#Q#U`~`ZO7+= zP_1YsJQMOB{qCE@%?vcVWpQ#tbWb|^^0pJ1_Wp^@1xSO%(O$Fb7AKy~U1C=^Y99Qd za?0=v))gInAX>*2US~$_uE>0?NQPfNbTp3KLz9?;XmRvpo+s6(Kf4E#hw z_mydxmdl^TZN2CfzR+o&wTPE!(Y?nJwX(Rb`uykx&zGIkYt#H4LZlnH;H%9y&-czN z{Z9SBVnL2q%*{Dt=ZfCIkl{432S{t=Fy;O-PStD9mpW`ZJ&ibLpYE?3(~IWDpIV%C zFX7H7nO)8|4%^}aUG4Yl$Dcjh711MvN)8ULUwA0Ffc0JRvdMiH0t(VK?Nl8%C>ruE zXe>r{xw-Gyq5A0bF#sj$ng!(U`22wRLCNf*+Unh(v3{(ZCMaq&IC$5MzxjAt#>4_y z8D#_vj@)m1?APy%*F8pGvL5uv_^>AFnUI#art&?%kWYJ=^<$PiE2R9DPJDltMnFPDnH~9)PXeoPxrc!aW^Vw0`=0=}t4BF2A_~rZJGWO)^SNd=2J-Kqs zl#vR-?fD(@$l|R;N!oC|ytrb+=wxBUowQS7F>0|RGow7Q!5>B|&W3)YUTS{1Ni+3y z$D3>fqX(rACDo9X6m@oP`w(xcn$};`ugH7;(w^kzV{*YSgr9S>=JWvfSq`*TknO zjm=HBohPLE_oy+*h%EXj@hKb7+4ici7I|LrTb6|C+M3Yb@4nq^D0i+x2Uf!k>Lw~o z(X5ja?Kp?`!bd#A=;Z7KtkKcpiX~d5WrDwwPM1Ka&Ru_e&nIgZ6S$SjOA1>1+I2(3 z>1XlZ9k?4=G(NkBD5yzjE7tdjZoOZ2Qn?UgB9v~4+{uK|IG^Jw_CkBrFy~!2P39Lp z?Fvn)Xm92+jXo^Eq{V)~m9)+5yZBtt!`>q*p+rr^ajoL}t8Pa5F8|{bGL24fp@#!z zJP8$1p!vN`TG{uE6e0t?Hu!WMTetk#dbKD=^%oJAqID24{Tk=8*UHFTA?;CagYxkh zQId64E*tevakDEHY0|ABKBZl6C|iVU6uB(k;-fS=cw$blMK8a~!NpAs4K6GX*?Kw1 zSX6iSwae7S`_8gYVI%VugVk8Y>xR06KYbl}E~d0JA@x-4vFQx??pb)fw@wu4E8L6K ziu`t}-dZt|zEY@hGEs3vQhzYBQxg|jGi_d1mrq3yYj$OQ-0(W*n+k_K+scC2gk$Ee zwT6k6Y=uiDT~ykhVr-v(TqFebT3NaE;#N+TFOtM{*V~m;eb=S7{gMmYhSr{!kQwVo zNwEmD=)~s=Ps^?a#RsZpG$=*2DwVVj9sae$giIIL{cA7nu1w6@iWBuBR~hnaUb=FI z{wN{+*>Zo+Qn44dDchKlVi;GP5HqxrbNDHSTOPFhWrJ`5%l)nU*yUQh-OsJ?o3){j zZS@_WVU{FgT9Q$<7a>)k^o!g*pHi*k+~Q3m$^{{22x-;efkDQw4T|22KM1Q#`E=B6 zHv4)jv|sC^O5a!(krn><<@W+6OoY_>QnOgdu))FU)LeSy%&6JJG4LZMH<%W`bTZ4h zB@W$MQqr|1sTZ}PqjCL4hFu%3cPS~5<)l5aFWc}qHDG66c>g8W4|0jjBg^_xQW71p z&9eQNuYpkcq7-!9EBvU1s7PVtw-AFXbG+5xiB_&8RMfmMYPNdXSv8W`KEFD_a0tbD zB6`7$oXJnKxTP}>eyW}+%D(pt{>N5b%Ij4*y5_*$1<_bbSh$Qt@gs|LN)E2_vNSzk zoR)rSq-NhWHYU#drI`+m#VnQfIN_i5?c;!od`qsLDoVN~M+=d>tLh6ySox(#~2lbkUNA z+!kgWDVx~jGBbKkPc-qOooaMj@(QH+LukGbo$bLE3P+*4h1VDF%We>A?+m1wYjtO9 zrSBkmxCA)V_;dl#n<;`A+3@T{dWV+OCyB;TRVdE&#i7)VZeFI0&!@Ex!;?1dequl2 zS=~+VTd6@iuV|O1ZW>$8i$loBnSzTKq(9Ds>9n7|)Z*4jgwXnZk53i}P=@P6Pl=ON zT>itnn$4KuA0@M;En;E5Ut|d5ef2YvbXC3mDrbb2H@nP?5k>MSpRotlzun~8yob5Q z)K#JG%A5k}_?g`7Z5M`6PxI>Qb(LwND%FX7zrtCq3P>*Y5yvxs9@kC#`&nEDW%%wp zW=p2~*~Wr&{1mjXt4KDX>#B!UzxGa9(tn8_ov{Ya{wK;u4``2PO)W`Duz#1W5+LkLZWbit-|ko3ub+K?e~LuyM#WK8Xl zjL3vc#aesnKpm0VQzz<7U8pNkXY{)}^&m6kX4DgTFWmJe*gNEXQ1+#Fs2{yc{mFs` zAoZt#G>8TxA3{TsThcJx4@BJxPY01T*^n(R8QCG(;?7=t)1DkqI*L!7XgGQ~9KAK5 z5#&rGk&mQNs6o(?k3cyJPevmjP4AH_y-y#|he+?!7#d6Ckbi`7JleEJ?uK##O(b{Z z9wtrII?bS&gwij?AAB&q0g`U2@o|v=S+r zR*B_m`i9ofTI6f#Tl$V-C>HtmC}U_H>ai4u`&e2}KhOsJA|ClhvHTV-#3M!HtIH^X zHqmCS zL4FqHIXX`laAl%)fwE9uq)U{IbdfGo4&_oFQV!+Q6}n0V$P4HiU8fsVh;*H9(k;48 zMaYZj4&9}DRE)fsO6Wd4pi-p!^pGA=8I>bFqQ~@vo>B$U6RMN!3(? z{1wXAR7-V8uc@9IsF9kGH&HXGNkam15Gju1cus;`2c<5j$LZtJ;|!3u!My?MhR6-M zwww`X%(X+_jx#}SiaQh3+aqt!b-=w5*AZ7I)H?Zaw8bSuO@`7Amp$iz%aLLa<)+D&x%CUQ^C3)c+PW^vx!Y~()N9Hd#?T;%gO1+Kld580J$HYe1>v9?iO+ZNccxR$QR&gAj%+&b1WB(Ss01=Sj2^Jp-79k zFqGja!%;3qzL;Brje{jEWdyg3i@-fAmvbwSv}Gh0#YN(tl}b*9q%A+^zTiH`{g>QV z+}F5Pa?wa%<1U(8#jQqS_p7;YxHU-Zehs&l`xc4af6INx#UQc!Sg{t%eUI{c+^xeE zhguxU_1q8K1}+}y2W}&-1k^Tho4GB>x1!vH+BRH?ToUpvD7WI-c3eNA_9M!laP2^C z2g;que?V(Hk?-Jkal5%a$baU3LG4%6_i%f0zZXw-;eI!_57&Ow_M=S3b$~mFYd>lS zxfJdY(m^~s#2x02Af<{qdwK-*H0~&Oj606}1a}g(qhfxFJB{l&?oV;)sGZ_6P-bwy zA^#2K8C+*kJB#uhuJhalTxU_cz-4k-xX(oG1X{a@x!A~E;*{Hg1bg*T#wi14Un{D8{Uv_gL_uC<&BWEr7_=* zH^x0HO?XozZP}jhz_-VJN4^u^8CMs+D^h3Nb>+M9-I3URcfJR2hQ#j8_?~<(BzE76 z@6DSdv3n`s2X(1<-v?!1T<_r7J1G0{@ACb53#51X0sKII5I-1cAU}j3%3JcokPqXn zcx&EApd~>kRQX3 z<;Nk7;XmTX^KSeEr1AVj-kta0KSpxrC-IZ{Df}l$lliIqr~EYD6X{caIzNM-$$Rm$ zcyE3-@59gG=OUknQo;N3e#qye^yfe07a;lb3;6&(kPqU6`9*vPQZOINhw z_*h)uqqYuD*79+vuSbeS{sX^(k4O4}-^eHMoA}L03H%m*E5D6TMB2(H@!R0K{BoZB55{a%vPogg|K+==6kr+zaN{o;jNsJ}!BqkD5q;`__ zk`9uNl1|7wqwFH-D(Qy2JIWrConV8D!EL*enIsrI*i6zBWiLr@i8)d)iB!@@(pT~h zQXfe_$-9#N5)0%5P!5y~k_<)~C>bIdDzTIdLmDcvl2}V@B(@Tn#7<%_agaDloRAMk zIYQzr8Hs!pN*9S-G8)N6@}9(1^1kE)Tpyw~Mlx114rz?!BguG)n`8p=36hBtcZrAO zV_Y7RNs`HuDUwf+eVT@+lHe$#lsK$xNi_5-&Xc1W%@+oQ2$5GF##!nIoBt zk`N?T2H-wa5+(`9wHUP} zlBJReq$QGN|EIk-fsdkE_QwZi5Rfgb2_O)WB`mTffy_*%8`(hwWJgvNWLNf8ASk=C z!vz!}BAXxxB!HQLX+%K44G|I9K~@Dp6a)nM*Y|W+r!pqj+;`vo|K58a%xAj3r@Bs^ zsyfxDW2GFOqn)oh$2iA2$2k+61PI^ zna)|x+4M8ZIft%uo%85AkGS)l|8Op#&wS@X;?8z1qMx@2Epon1bg}at=Mwr^>P&RL z>s;o1&$*mF%jn)B=L+Xa=PKuF=lk?o->POA2`?1XRUL+^F#Wqb#8EObZ(-b zjm{)zvU9U@3w@HETb&;{Q=EQhz`4!2-5GQm&K=H=ojaYMICnXBJNM9Mm-AESUgtjN ze)@do{M`A4^GoMf^!dVhfX4gi-q*zajOymIpjR-{LXpA`91v{ zB~+FE?F#=ET7mxUb2#d($J1>*edyym=4*Xzz-=z7EXD~*41-lXeI z;@x!Ka{f+Ix1D$B&JCJ(gJ$CTGs#~eO&3YxHp$!~+281Theo$)#%1SS=O4~{^ttQ2 z@BGtA)e+a9&MdC1balA0xE>JCNmr-qF5SCJk}g*^*CX`F?#e+|mn$cY9#u3ujdQtj zyYkRAuPYy+Tyzbiaen&AL*x9e0yNI7 zbPcC*gsZ5l7=0pK#a)lNO1MhW=P_3)SETE4S84i0x}I>Aag}wIqfZ%Ec~_LHf~z8Z zqFj|+m0eG|s?evhtE#J-tGcTOU2C|aT`{g$S53Osbk%ajx!f)fUA;u(T|SpapLmz< zs_lBpRfj&cU3FdcT=iWI=u^+t(ACJ**wutSja*N=n!28GHKR{cS94bj*R!sc^l9O0 zT!2j=ZVZ+z&q!F&pSN!qUYEzPk76$-0CU4e5vQ<@1OM# z2>85&{fzf(NBy0bec|skF4;ra!}v(zMo-N^DNlj5jlG2Zj0cb1;2+<;xgUJO9>%k_ z-Soe7D$d>V>-!%O_As6^|CWDho|As?3430Mzv^Ku`2JQewg@nPP|w#H`vvw$nN`v4 zy@mJv=!VWf_9lnT+&9ruCRI9_SbH zY3vbm{VcP8+AU9+BB%W4A9-HQeYxxJ{)9#i6o$XyrVV~+o4|_CezA|iXK#5Tt1fkq zXm9G=I;foY`sUG|%QJ3y?!D=E5AM1`=|^mNZk=LI@A!2M72j3%v>!5|wng8n=C$Ug z*(13x!e)=ae(6{7m!9@+&0imD`33f{4D#f>x475J89!sl@7_~4u%nY1ABn|&`6cd^ z@^}EgV_zf|xgm4OFLOiS4C60jD00;=u*zYMGw%g_5!k~qmv)B6A31X&=WEIr;k#ev zu(VlVkC5@py_Q(oBlg-O`Mh5t&#e8N7B6_qGq3#XZYytP4%l(1_53NT!_jcTxl@8x)(~5M?ht<=qwKVveYtlkw*0&xh7w!nh8_QZ=KJXrlhVv(J=ve1>m56A zr+OAdoaJ-j7jxzFE^V`IfL~(Y?YyP)-_Peio%wz~^XXmSUuL}v==}Hd`OopO&b>6x zROmUzah5sB&llyeUz~61+~6~fpLeXq&nBHwesMOp)sf8^N$8<;PD=OGzeUh0(gNO`Fz#5Vi)B6$YN_{%d> z>X$m@nJMMvUPu`^SDwRCUfLjSlk$kId`I)1%JW2?Ii%ly#-$9|V?WpOT#~;}O1{)1 z&o^n0Bb7JQb~`(f_S{6&YB^8hbS z`pCZ|akxA0nh!l2EIu&vA=CcJ`~K*T6K(mHO|E~$GQf~YiR=_8L^{C_2weY}9)X#p zA2Rg_PqWr~DXeaw2I+)6WLOVm822EVYL?8@Zz2Qrk{2i&7-Mb+%eG;Sb9xW7>7w)l z$3?UaL{ExP@@yO10R1c$dL*5WubpX~vk?c7}8w12=-(;n6d`Ko2F`qz~IQ`rffEYJEO z!?pq6>7OIeZhQk}^MZqsfu~n?Q&{>!|4YF@3rmK5$J~Vlo({ZYt;MkgU&j2~x1SBP zv+M+)?E#-Ld;xB8K7!8}e2yph zjKSv^g3lOyjx+d-nGe619~$SfIcxc4%y};Jakd~nycYP3!DrjRXAD030zPB#*>~_6 zgU_)7pE39xfAASIAHFaj_!l}e7gm4KJAPO>&rUl3OLyt#t+R5t8+d`mhYa{Wiw|5# zH|O@N^1Ww_HMftz?Y`aPiMHgYuFB@UK<^#s=|KD{79TRK2YkkFko-B4hYc^CEAPES z?41T@Gn|Lo;I_q2b0PU%7*C9^@(hvNKe%|x;D@VhP#PP+?@hLa@0scWp1z`icfTbg?Fp~Y*_&wDz;TBBrk8rCcw#M%E%VtPjx+f4 z*SGiPTVdM6I>B#WwxxG;#Xpsu(8+$We#o$Gz&9J$_6A>Tplt4NzPvYSRX2sDFDVK6 zyeXCp`;NIAn*8B;*;O3MSMFy33J{;#?DVm20EdKa}P3%!RI^#pZEQ%hB*Tq z6Y$v{@HuY07Te70g3oqBp5qTbuM0l!7x;2r-fPHkoK!$AtpX~>qG5G8+_>95l*n-a(e2yphjKSxagU^`x@R9lK zJI8-}_F8_%@SW!}ALk7CycYP3!DrjRXAD030zPB#*>~_6gU_)7pE39xfAASIAHFaj zIPtqIf$NJG28KK~-5t5x<*in3LEubO(G=o)1wX+2rJJ&Q_Y9g8=>J>5O*jAydBzrB z$yofq$n)F*AI@hzUV#G=vwpHo+Mw3uwS;`S>q@_*9_c&mXFVal+cAOfEE9s|Tsxi_ z>5(>Y++?hPuN=M}n7yELEd@na}p%?r%N3sN%-*1=8Ti)WgPRbtGwtcb}G5Kj@ zc5jd{tGD0v)I#s(_X>L6Bt9_sS$^rQ zWacd?=qc$wj9Sf)6?1co2hBmk~VbgG1A|f z)>`#Ttu#8N4RT$Uhixo_xhw;}q|I_IDbIRB=dwKflD@D!*5$PzgS94Fv3>g23kt(u zX@guhls`ML$h(r_5B+ll=9pkE%Y@G5J(6>!%@Rxd*-q>=`-`~A9AF$A8Seb zSwF{w_fFbCd*lHhaggf*i+rAUlsUkBD_7N8p?fO-u7P?o|Ba0P#%g0(yO#XVl4I20SkHKuc?c_c;E=!1 zD!%NO0B+vUP=9B6dG>B#RX+#LNGI8;P*^|7IcO<=-zt zWMn^yjpe#>Zm7-j@ABerEB4=9&ONB<$M4}iet+3h|LuaFqSxmII*#t?A-;$CpS)er z&-^OUO+EOXc|-NrJv$dZ?+0Gn!|x`(!WLi2SbSR^GWh)#GSDNiJy*&|{hyv~-cz|ci zx6=X*$p$GeWq4iaXZvAW!+Z{Jc;wu`8M2|ih0oHuECb(pF6@_fG9NmnkJ5LI;`RZ> z?HH}KgX~NuJKrza-y>rcSoEVO{M&!1_((qMmvO^dEDtPwlzY*R_9Y+f%Nkls`X&99 zwz0p6iJU9#k@}?`o{L!V-eFHO+7}rg855q1eU~<{e%K~`k@9ja=EDZ5Kl_nOe$L@` z9e(t4ZqNPUwx9F4i`J~M_d za@|3slk-{H(CVoHe$L^hmVWGSM)J~Tsb~EBAN|NB%w>%HVR^)mZHA0oi}{dG&qv71 zILP>9qu6quHzi*<&!r8Fp+~MIbuu3^(ytPOjsT{AY&remG<+x*dsYt>X&+02KMlofW4E?i+p}r2C-!s z_$b$v{xTmj(oT8i$au<_%bb_~%Dt2C6nPfOXJ4K<_#KRUdS739*K>JZ@02PX8hL_pu@Zikd1G;;zn#U0eCg5yl%D3! z+J4pv%<>X1i5cQQckryzDdna9i508)U!C@<(g}ISRX(ZXUy|HH&6PHEzqn$R*Vr_mPh=7IkurPaxTXfGICvxGx!{5V2&-Y^o8RLzO-5T$nk`X^q1qw zbJ>3A!CrtbeV6g%I3I8GzW>wr2YKeKYwfK!XR?2UcEa7K?@J1Qd8ma47&1NQE^T<#0Z-8|q+`=!mRJ1+3>Tws=$HcLC@S}*V0m%?*p z45glh2lu&Ir?dh3IkwVH>DK_#&vT_7IajVL<-zBeOCP20Z4#r1lZjWvyQ&z_33*00;HgRRj z&jsiD_YpSY7jIovG%D}`;TC^J2EH7dHE@RT>E~AZ4?G+6z=npe1>NhuIqsLX-6ej9 zVZ~FbJl^G>+Os9kFyln)>B=67-~OSL5xm+^`7o+&q_KAPU$K<2eAZ2htGRELr$3>u z`lX)IBXP@8!}P32-&E^LeBvX&_Hvh(mAu6F$)Bs2qVNTY4v8_QwUm5j@WQFX^zA=R zRqL{i);!yGDYI|t#^Bi!1C)NoGUm`xEBAYGefk#OBI6JK`Dc^pe;J8?67;t(460#b zhvS<$L-cBO7APC~w`ipw9v`OkODtu!>?p18c&omWkvPlY4cepn07LGz%pa_~=5bBs z|F;ysCZE2$^}*;ufeD1`OlTeGx%-j8F~a?Cy^}IKGG{>Mu*|pj)(zD^?^`sG=f{~^ zW-$ExwAB9Xxp$1!E7bmW``9s;gV*c6pyI3DyBPeYW_N{I#*9mXQRE*R`I%R~GT)@Q znliJ<=1mu>dvleD49I)Hw;ma%Yh5?_La~e|3Sp|LfCXdqlmTeL2v*ccU zVd5u$-(IV^xS&tsGdsHI-+k9!`~15fv~a?AzaW_tKWI{ql!>3!RUhbT8$8nTOd9z? zGrQ{9|7a6*w?Csvd!)RSk+zM=-(2f>c&PEmr}eZ6`I`rUoqH8l{0GDzYw@#$@U=s& zw1qjE81LjLq)RB4$VGeVp*{7^>S_$9eLqV3PJ3qzpu8GNd3Ab67vmV^&u5fBQbx|DyfS{L zyo#f|qTDl(hdSk<g<%bHSsS` zTpx6o3D=9}_3CfUuWT&ac-+^D_*X1`3&QcY%Ow3Wv5F4-){cTPz>Nq$n7Cehisk}4 zCYksM*)S)2A$={`(1UE~cBqj4CfQJe?0k^3vc8(^%tmW%m`|A2YEE-+kUs38#G&y% zSAHJ9uk{~lEwM4?ng67HmqgAvZ_6BBn2Npmi`x8wSyS=Fy9;AjPek@bHm>~S5*yFT zH_yhrYN(xm$6vLrSPbXeY72it`O_pd9ms!+UyS(u!+uL9-&D?AD||m{ z@x_)H>u(mBTH*0!1r?^;GdTAsuMEyH$|ZwyX+V9Cfjpc_IdHCl$CyC*`2pp|vm}3w za?C^d(~|HFE8nCZ$~R-=r#+Ido4IG~*bt}k@M&|dR)^*`wQz01M@jz-%Ds)GzbCER zk#cV~t@{|+>3FoVj%S2&jMlRA&Bm0I#zreA;kU7@1Nn%55{%K=7TNf0fmA#vxwp+f zw)<%tzcVGy#-5e(kJ>qDoVXuh>)Ci`tBse=+GXQxIlr-S#bqmP zEZ1Tz_Y}Ow9Y^c#a&`Xl?|m8Zi>z#;cg><%GoaO~m@)q|S;janC1@#BdHt{HvLV zN?zjdm2HgnmVSwwbR2CIwd|Cbb({XB{=ST8HoE6^-eo>2$_nH+GrKipJf5z0M zGr^#_5^pZ`OAO9|aFWlHWqr(j+84Z=wpjck#Fy_TiF1)Wzo#0%R5;pK0NM}-dXeMc|1k$i#O;@SVPZjKYCwuptE8!J+sfzd*Ooh z&XO4K2%H-}dfxNWdt^1evu4qI1n;I_iSH#ooez5NsqveCr{^5_o2aK_fa??fgWg#U zNe1{n;Rb{clMQpNbK^y_;RQN3W|9pNWM?)yHLd&RLo zCf->`Gx5%v^QZm1>r=|v=YSrYzbHLN_$NW{l{FO~yStE|cRf72eJ<(co=kl|PRy73 z-ZXWXdj2(>I%ko4UQBJu!(Eh1rN2BEy`SD$jVMndE!>bW%j_l@bDh8Dvyn5~X5=K^ zJN?FNNq%7EUN6F&S2r&Is@_w@Nhjnf{|)57VcyNRDc>3sK18_(O!;QqNzFaumW98gwPsW9CDB@xdj@`A!aIv{ z&*0pn95enP9f+mGl#>SMB;|(D`1}^m6JzYG^ENKOAQewb?rrnG{WICd=04$?_8grv zCC-+K$#4H&Wc19MijUomuw}xt+xclcaiLALsW-v+bWfO#TWmg+%=}R&@7uWNvBj*miI;gXP@J;k4`hvpHeo#~DStdAA>2UwL~bu^vJ4 zUz_rOi*LDNjqCJ*MH%5cu2}u5C6f`x{ELvu7OP^K8H_pPyITA2aQncLq+ceF)tk`1 zWCp+Wbx(TMP2HKnUk)!=-LgT?45q!%le&6+A6RkD1UACDd3`}^AO8-Yq?qThVwn-9 zy)bBBRJ=37+gjF5qP@@`&?hr^@0ZRGc`q`9k-H0u6m^%6kBh$b$yj~W#0dBAXZO;x zWAe*}@Eh-R8z-t))uRG)d>LWrdE?0lxATX+^tXUi{ft>B%M9M>);E&Q5`j6}Gs5SK z;%mW(cTJrmD$NPLY|WiRGJ{86 z(Y_~{uB3k<;jaldC;5Yx&ZkMf@q`sMeqS@q{ebH0nZdNDX?%0-#owy^Wl)*s5}wJ0YI zk)P?}Th0Qpzf&$XrTokcrkvD8ex{2rO?nV>fpkuz{LBodoHRs!ri;l(J??4|cMj{> z{Nj4J`_H@+5nG+Hl%f38I6o;THO@)ORgH6X6XmeTNsV)o@=(o19#Vd4oS&4FLFBWQ zlR?f&%5%j>o>P7XMSd#%$WNSY_pSWQ98T+($jLPRrt%#Q&QIvi4CcRUKz_INw^xZn z|5k#W_UFlI{|*XS^PjZu(twbWf1hQ%N34|@j6E(fEo-c`)<4C0a_Yt(;co=X%`2{F z66-?#Z*h7t;V2+Jj2pD>t3NekpW64#;Pm3ix};vl`!Bv|cxzl%`u`rM+Qsw#Wkoh4pLDos~HYS}x)-UHuzWf_Bd=8X&mFgJPRgFmEQcGS94lOc5?Qv!> z#adsL|2F^oTP848PyP3Se}>O59c%pP_iS&~KIqFN)`k4v;=FaM8*enKWt{$Ci!URb zr*3r}GC9|6@nwYJ(NX$+F}L+QWo9tuWHL{U1t52^N@I&*;1(Lcd-$G1#zJd!yU=lbV$I zM^&eB@I))4#_T@9OC&RpWOki98GM8In~5Jgw~sdS^HJN%K3mxL@#o`=C6l9k1M3&@ zbs!sFjH>9{LH5)k+oa4=&nv;XwC*Y+!uW#h*+BL@TdY2SeEAd&9IYTmQ=M)W2{_Lgrad*b4XDc&!<`<*3ePr6K-x?m}`;csYaq&1^ z@|TpW=*!x$h_C+Jt|8DSU6^dOmK z$9;N6SlS?Mb9`G~f91O)@ms4sr4QOR&N%q9+c%=Ik(?PkV0hH_sha=YxwJVrsv;VqQ&?TMe4_=73Ws}cV> z;wMvXcWpbyxc^K+Z9$n*v6;bV$46~nO6S9K^xWk=u^{*=<+hJ>hkl+XI&)Z9)NJ4hyxWL8jaXN2Xtl+Om|v$T`)Szkc8 zecs*CeU72rM;Ht+p!Dzd^0IG`d)VG{YhpN$^1mQA8)$serw6&F}o`ruB^u-5u*tp@BS8cp@1?=Smx-%!H{W?SHqBK1yGtj~UICF_AJdhSGN-W2EHU z#xXIT_`C_*WBjA|G@E~{ZZ?}gb?sV?iE+NqY5MnI{6qgs=PX-n{zt*jY+V1#t4Sk*$xbe-{8A zodJeSz9DY)J71fT)%46@=-*nXr!k_Pseg;Wk}oml;8`^3KgTr-H&OmR7gfT@44zP^ ziPBrULJ1=?7^|Ou;uYg=V2k?q&T8U*=0a(qD6*GPhr*EUuZCm$?Bv)XJrd_?gKuIkz9> ze1etpeF=}ZF!|Oz1U3AS6?ydfLSI#kE590 zOK+q7yEL)&5MRU^w+0&jNmoU?yF6*ee1D-zF<1Um`e0Bc=udPSjr!n{kS`G2# zxK~EW-FskC=uOZ5-yW%>_@Hy2Xsz8lUq@?Sp|w`#oKO2Qst#`CFYd=}t)}!b{a5#i^@Yx3 zKI;X=zBP?t_6dC0?dWIuZ_)JhLvL8~vf8d9t+h9k z2dlV)MwM)>O)2oQ8cTZP12gZ934^tb^c)PR){c5Wo9Ooz4Av&ma{zri@`U-AItD$j z#!SJV)#Xng>|Z{)wDL<)8iS9#!1`)m=y`zLhO>K=KBfbnDW>?Ku#@u!6#6-SlJY)6 zAN&PX_lc_KL5x*gY0UW!TH5!756}PMHf4Qy?hky}FdpYX+=mU~@%%#{KQFA0=d0(5 z?(@EZ-))`Oe13?}^6ELFG4^}c!3yfR@DRmw;y6-4JvSKRIRM3TBFFH*_lXKB9@0Pf zS$jSG9Ts^+`Z0za_7(FH?~~_DiZS??b~KE~{`P5Z`rGTNCw$oF9Mc=bW1m@$=SO~1 zK|QCezxI1C_;x)0j;~u(lQfk1ydO;QTqeGH)|WW4v*w7r;fs8^vv#D+4Ij=;@IiNs zP4Pv|?xwA7RY~i9v8xvM4DBPyN0#2F_#YiAqV2fURXg%on7ZHS%P?&K$%7C5n2-B= zo0L_2=)pSI%kA^^ifXQPtDoqD+>wM?KAaDr6Ta)D_!ytg*4)=?MN^99T_x|B`Lb`s z%TH^&+GN%CPVAs1t~=(#dY}o<(H?L3+7~&hr5a-%#?TKvxDP#$$9${7Tc0}&;;r=CxC;UX5;1~2q zg*R34+B>_M(!Y!N&<{TJLk{C95luD38}B#F#~AwqdFW|6shQd*=*NCyjD3bY#?X)b zX8CS(A9k_6g`^Mm@%s0QnCpWNzt|48ANR4(?8gSneqNu~#X5*H?qhw<&y4c6Pr0F5 zOt$X&krw5BP5h1Z0+rj+f4|&Vk6Zauy7!+ghqb3wo zG_iG8^FC3Ym!3T9!8~=JS|G*o=eaj=G6kUBMOx<7ICyz*4 ztl#aei#|}654-lO8rMF0$Ok=f;Xf$Ke8__@_40aB&uU9QDDJ}_(8U|7DSEwHEkzLz zd4I(EqG~+rmokdht6S0>*U6uT&vLAX_3}DQS-+%-zq-}_Bp$45QW`@Ze8dlYriu?a zvQy1tO8afgiFvj>?z3K=PZawEKIo32aVqYhh!gnO2T<&n;?w?NjJRWreNgu;dF&JT z*r!lAIiK~}`f0wpFV@8vaRf#DK@n$A_yvl1%Q51DF;nap#=XE)7|Zzw=s89FaUc7n z#<9SRCycRA7|Z)okFD2Q2YPW|>Q{R4ULZc=530_0qKFH|h&L$w zl9cabzre?Sfrjeg`PeVq=Xp$}Uiiaf*opIJ*OO__pU^Qsr%Y#A=MU45tn-H{^O^EI zrmUZ-eBNPC=$Pf0vL2?q4pX*+Df5}~Jf^Idsa!w$$*J1j_Ac#yjkVhCFA8hNzh0xp zkAFTzjq}Z0tA#CaXnFdYV^EC2hdgLxm3MvMODg$tKI@fwLiJ(H_OLwL$@ADwmSa2R zy08cHW^G*UgFL7yAFG*qV=cd8Eq`LQFD(DFS^k%`;&aA|&y7B&|G&*O{Rf4;;3FQO zSQmUrB_HxUpY=*Tq53dpdsv?BCKu}R`kMSQA+OI@d}DI&0Qr8Ep74d zMCVfcq+Nyd*Xq^RKQ2{RpYl#Uy?l-GO7EH_m33F3ts3J###ryI;l;#2isYl5*${nl5 zk+CsK4tz6?roXt4^>KfPvahsde`)>PV)#+ovb(gkZazg3f7pe%gJK^rKWb1}H6IlI zf%{o{S({Y2d12lfr}*bl@3`^5YB&-M@Vu^#4y?jP?P z?<4fXKHfKsIp0F}Pwpe{AMcwPH?})<-*6xMf&08aa^J8n_8aT+{q*+Fv^#Yl&Gpjm zANB!!#Gm&mqkXJBvzb|+qdE}kbm@%`44Ldhy>2g2+?Qk2cM`7$>76)4QLgK;p1&KX zCx^No_~}vT13x2*f4@h)1$Mz+*aeFBVraeff6|!iH(Z}^t!}C{{rCy(QoF9&!ZD@n zIt=q!E+MkHc6;DXRi8o~so$wi+K$6Rec*#~eF+qQZ(x0p>$W>i)tgX{LA+F5nJCv) zL4Tri9p`r)I@cv-KED_7-o*Qf-=E;~`@7e;ed_%U3ceh(JkRI%G4ol!)Q9&Kzn5A5 zUwMCHeaIil`n7s*gJM1K`TcF$lltDa-{+J^d)r5;-}`QVVg7wXjzjHXyO_^*^Y0f- znLqgY`&3Ii=36jzavI9~7ON*|g@*UnB`uaXM2&mCJ4DYp<1uaT((iqskrC4sJuv>1 zqPrrqY2a5|H6jh4$B_~16o2p1J85X`M@>HKWBt(g(WEun+;<1+HycgST0{@l3tU*O zDC`3t>+!mwcJMfKU0#pvIQLaQW%s$S;uYN$8JmX6`(HMkqMfhus^0zLYDHlW#;^|* z_9A|uh#M&4#(d20Qf;J?2ZbN+E*Y-;;5gNO)Ql^~gDKw!g}$Gc4p(|HA9g^W8UHvH z-)gJ=O69)tK8NlvugCkqapX8lJFp(dF{3#1e5p74_7z%Op@&hweMZyuZBPnb~LFckDOfjQ!#LMSi62kNJFX zJUE`AW8?wsz&zex?0agy{B?hM{~xRJu8QNX^2=2mK@sO&S7s=Fv0vX%eCU(U7wp9t z>*0BW9Ohv^Ksk>&k1%F`nQ|PMG9MIwzro*)BK_yI0*`&9t>1f5yRiQYZNP?0+VXh6 z*3@xYtNhd z{bc{xUvu4Uw!azqXRdGhCF3Xk#(JOT%BH_n>`U#;yV><(b9dU5`C*$|X~pLH>F;4r zX>S$Vqs9H9ztl{*om%MF)a%z)Mdzk<_Gs{)Wc^6RiAe?q%` zNvHWIEPaP9yHn?xaXDD1O=hn>mKl;phKl)5Na@+gH z`xv@^q4Rkj>!ELpbY!KE!{H?AQZyTlA8}-Nd2M-@j^8dY;tr)w0+R3Y9IbgkitChn7t%5;sPyU`?9g|4xVnl!HFs72Q}hnvP8 z;>6OO8Z`Dg;^`VgcRdcDL!)b~Lnm%+$5V92P4|4n)9G5rQJ1*&h>ts78fl7K-_d}$ zwH*!VrxBqBbf=D^zN0arM#O7EKTkWF(zqP?*O=}+L!(NLW^`>t_sS9P8M;%NB2kHW zPt&ym-EHn@;dqulE$Q0Q(Tc9E9Iffv+R=utZ5(as+SbvIuI(J{>Du1Wfvz1K&(ZZc zM@PDLBpuH>IypK!y3n<&qZ^@4bnQyl=jr-_<3;*(cl4lZSK_=t=tcUx2N7?e zV~As@V;FsgIEE7);TTDDlw&j@a7Q{`b&PS0b&PW)&~-e~addAKjb3xSPT5n`F@b(w zBQ%C`2zfMyW|XA-Do%7HX&Fs3#?y@9w8Cp7`#SxMrTG&blN^)jXOd%zV=7&z(a$8u z8;&>WI@K|qu5UVK&~>_FCS7MZX3=$~V>Vr9(Tqui-k|G5NA?$nxsxlG@l2Ss-Tm#l zVJQV>`#iVbxv>#=lf} z)W%69KmCa^e#is_#=3p2xmAX2Pnkh7m>W%amL)%^Xc_-2Bm+J$%O4oy^S2m(N7;FZ za5?Yq%C^BIGsf}-dKOuB4zu{M0c-uk;s*~Ejro0&&jbF>`zFR(Yb+lt4NP=vZ?<%Q z7_-G)negta#bWk!Kj=O(r?>m3_8R4{+zXB&WcsvR<9=sAK|jlT zwKZz*c)zd~^!LvHn~I5yGw&mO`GnRgM{7ZT7hxai0e^_4U+$OOQ>@#R_V<0gq95|^ zYQHk&HmOUFP|^YL;0LS59bds=S&#k z)fbA!6d!hTBlt2;c)!5sy#VHz19LoqIaa{zJ23kQ%)S7_2IQg4J@|N*az3eNOSPvm z-}qU8{2wC@x>Kh8x>4q#j0v!O203of&(EWbIdC<-Wy<^3GuyfJmXw3^+=0(~4a_+M zJhbJ(6zAzXDwjCl!0$qH*?yUmF{FP%%`M8WhSiJ3Y<}sW!u%{?ELT<@pP{lnna|nQfiwfOiRCh+;Y`HuY(A6@9dI_2|T!p}_` zr0`+#k-ke&eNSlR-)icA=1U6ZE?C_7g7B<^3u|u67p?G#F59D?MD{D4mS4s-Q@@tintLKPUd=sEe6m%;+zW)y5Qcul>;}aM z7;*ZAFk<^7VTzC9_lU}qM0V)V87P~gFl4Zwh&%AuK^u~>ABe*V(v7$y{<$^|P<-H% z#3%oiJk}>$b;J(V)syR4hD64(>bKWTgCVf5c=B^X@__Skf3 z>(i@%n-Twh$8QzCZp783k2>E{n4UGqU5g+0bJOTu)?BaiMD)-5BBC(2c0~VZf9GMF zfFVzMY`m@WEgL_u_!BnI+hmyXdhKCDR&Oeh7tg=`V3!`v_z%JxEPj^VI{!CddW(&@ zY8S_t}wu;tF@A zv!OWQcS)vZ{^>O#6Gt-p>0H?mmZZ4}=b|%Yf4(HG{;it&_B_PPUtF(CcpjZO_ri+n zIA?-k(Z-GL>tesQuHwW>PNDg>8(E>F7bZHTN_0M~Jr5umyEw+`=KobsK^?~2L@uM1O zwW2fB{l(Mksqv00?UdXHUHdB9{&qLT?>F%oMK=_yZjYgl?}Lvq>w$h=SK5)|L9$wp z?cnt*z7wP zok>dagzd)z#*{&%2)84zu_FLX(J-pu>SEjrkuaA7d{NE;3P_*eY zRTbrYkoS?#x!csxkmsjY)Y34nR=ScJ-=qFv@XI8ZRQ#|};c4ze9`_g4zN4N4P&sCK z=CdC8oIoDW*Omp#wbMPTYRwL;(%=`yL$WtlG;Z;8iq@XgL&-JDx=B%%b9ig1aYpx{ zm-YQu>$9lLnpN8L>a(cKnpN8W8TDCIX3Z+CS(!Dfv}xpRij1CHnl#B z%B)$XOq4C}L~%$ikNuFob=g*LQ4JN{vP_F;YY|8#wp zYhU~^C=DHy0!}_dQr$&6ZKFak{uB&pqLhG_zZ~ebmpG~i>%XQrUN%dKD zv6{WJIaSwe4(gN5NxiKu8s(-w*W5(&Se>(G->lg=YgS~@KO3fcXbY*%*}~LG%YC!x zm@P!(aMgjEU3JhtLaRAQJGyhxOPj^&pGEiVW7O{$p}HQ65)JL2MIUV$>X0>iXv?ZD zTJ+MErAlmh>M})tZ6*4tOel(KvlR$cq7K>0)F+F&Y;~%-qN6sNe$ZQ6mF}R|7FF5m zRFADes47)#Yf{ZMhQ`&YVjD}c)G{Ev|d8oON;ufTh(ec>YFutX}xr} z4t31drJmTQsDl=rwCJLJicll!ifuyIx^%xD;YM^1U9?T}%R)cK3P;HRmB zwlP&^pCMn%5v@qbtk0Sqv@NNRwiW%fpzhh$bZtXFEvS38EnVBuPYddvZBN$@^wWa6 zXP={MNBU_&T4evM?3^`gv}Q+bXR5_^p-*SkJ&TGhdT4vm4{EeMRYev(wS5Woqv~vL z;`JqDcF&@t7Cp2B=m$Nt=%yV=SF?Zi6~cq49z2*ngQ)%++CPgv+L5Yr7Jannq~#vk zSE%sa89l@@WEPRB`IZMo(>Vnuk8y2{h+b>Y_zA?l@J`ElILt zX|~xvi|*OU)Gs@YuG6R^b~1I%PNnN~qLZm>b~;^W5}iz4voq;Bo9JYkGn=k&kdDdd zpG^_{v#L)P{j*f(QoXe3nWf%IH}_^Twt8mOT&t%wMfCl-x$h5pL{Fug`#_ zTvR7Y;XXd_xfcw4?gs>)`@*QMk;46b;Bzk+)fQEMtJOcNVvBgf2JV@K4EIGcw)$l4 z7(&13NmMT z%mLmz$Z#DN`b96Nn`^I_%li(@dyTnVlZ6d(AJfYL$aC)`))M`pZtf3dUqbT)b45R_ zog2_2`bpi~PYOMpOPI^`MA*;I2y%vNk&u_q7e70Y;ku-JPO&cc&r;8kSoDF~`2armgaUJ30dvnOFxNDJIk$m1hk?0|6(I+kZ zH1*O#hI?r{?wJ+CJ+qwzZuVU*`~Oo9%>Ab;3e1h>zS`f1tcc-W+P8?$J+^m<&waJ; z6~O;b-t3WsF|h-`+m1WZ+lR@3to2qrO|% z{S0C5pJf^J)vhlvH;H>`ml5V(TI!iK#w2W0eX`U`YuvMXX@R+CmU`9rxlfjQDs}FqrJhRk zgsOg2>cONQQ?qB5`Ot|T(qF0Pl6o)E534YGV@bb~M=ve)b?R4020gjZe>yfk<|6f@ zQk~S`-dOM--8ew;(eH^qSLl=&^5~7_-d?N^3_kbOQe9O?A1nC~1pgvo^x1-s{#mjk zNWG}^{~fGul%(ER@*RD_s(+RGTMhKd9*>RRL_M<#*MIWlCZ3DlQq29CWUSs;rJs6P zHR|m(&>M?BS@Z>SFD)>7W6`?`jGkHa$s(Tc5q+|VC;URJ5ku zV#KH3SR+XNtRCuLrCwTtduf5u)4z{;S*cIfK+o*%D{Etyko-qhZ|nlX=#6cedu1&3 z$twK#@!vN?=X|T*7V=!Hr9N4M`(&v;YjFQ8&Mxkm#ai2Gt%=SbHdDW) zI(6qnjT49ZZ=xPpL-fxYqJP#9{j-MXpEX4PtRebm4beXfdG4PzME|UjQU5IJdED2E z{#DuU%6+li&x-z4$a6m}`eY%GzFP3PUJDBTf2EHWdU!pyNA}TjzbyCpVT`_6jL|2H zG1r^8zZUno&lGl{FBKGZI`C1ylYOS>XGMLF>v~-Ga6c{V}ZpF8FF)>X&7|pdbCQ(1W@o`v;1;B;>fi75%P| z3+<0Zol?r9pB8f9L%*CS*N0wSm+gQa?w4iC{juCH``_I^%k@~UyK=o2@q&H4zp{Uo z;{eM2w4r^pT)z#~&+@FFDX+`x@Ve>s(;|Om|19zveY4=BkCtg@y%l4wx1vv0j=5i! z`)koRi~FI^3;JfEAM)Hk%YCl0kM=*=Kl|TPpGEI%0rjm0sM8jt?=!%+8Wd6AaPY6x zXHl6otF)P^&sI?134rf8h)PqREl2g&@*(xva;hqeZ#gh4wX!~oe%a`d`m9-%twD8H zRA|%IXHkjOsH;}iXU*?As6+hp>a(cKnpIk^&!RGGR%!pW`fSvHv_6~KIg8%eu2hjl zW!9|HW?Y}e_Z#%2x-7omz^vBxQ}tPV&%w)7ll^D)+2_^w8=y-2ysFdw_tj@nnKi4l z59_n`cO9gu{c)WR^(?OO$(kMb>DA`Im-RdT-UG~)wOX#Jf&ag)J`0=EtHYvpBfje( zP2KiCQJ>{HEXNk#V}N=P*R$l_fzP$AjB16@lU_|0e3=h&f78nWto5)yTM<3ic5OYQ zn1lcSsy>@uO%{8{b=!ZpJ}c|6T#J;s0sOE&+Y;Z?V%I|v6OJ4B59_m?_5TU=Sy_k8 zs8;*Gy*`V2UwU=ejOw=ksroF}VKb`L{;T!bjB2v7Zu_u4`+uiC%XQ4qnyjqb%6hBB znW@i8{TbD2WldJ%hxOUw#>4vTzh9r_dMww0xla54vOXJHM@8KZbvN+2Ui)9I&!Qe1 zsvmXEzpKy6x-8ov>!WPn!}_fGeFhoTXSrU=byBXIhW6EFRG;N~Y-pX9>#|HA)@Rdx K|AG8|gZ~fJYf`!Z literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Road Bits.glb b/assets/City Builder Bits/Road Bits.glb new file mode 100644 index 0000000000000000000000000000000000000000..4fa5f34d1c658b225df7743f8487ac47074771b1 GIT binary patch literal 68128 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Rocks.glb b/assets/City Builder Bits/Rocks.glb new file mode 100644 index 0000000000000000000000000000000000000000..fdb43e86f2ebd7cf20279bf31e1c7e80317b5155 GIT binary patch literal 23240 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Stationwagon.glb b/assets/City Builder Bits/Stationwagon.glb new file mode 100644 index 0000000000000000000000000000000000000000..aabf140613abde6f4b094cd55d9ece2d7a23cb37 GIT binary patch literal 84872 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 PQ_hz@$?14vk+l>sY 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

    dQSGN+Cn<4Hv2C`ZD{ei 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

  • L}HRkraq>e-urT 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 literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Taxi.glb b/assets/City Builder Bits/Taxi.glb new file mode 100644 index 0000000000000000000000000000000000000000..fe98e71aa02e122b9698936ab8c298a6b32b5e36 GIT binary patch literal 86464 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û|c`I{3agc|V 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

    xDMf3o^JL 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 Yw_e2Ebo*aZIujg#M+ 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 L0 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 Zmv(=*_j%6CdpqYV={`??{?YyYe*j^oy$ApR literal 0 HcmV?d00001 diff --git a/assets/City Builder Bits/Traffic light.glb b/assets/City Builder Bits/Traffic light.glb new file mode 100644 index 0000000000000000000000000000000000000000..eccbaab3817c01b475175b3726c6a8d6f7809093 GIT binary patch literal 46152 zcmbrm2V7J~`!7Cos3Hh9EU2u;h!qi#q9|)fEU`fBh=`~Q5@}LYMA%JCM56{GDuN1F zA|@6Dm1cq1K#>wrQBgrbP(e{Z`tJFE=PaAo_kHiZzt6pY_cL>5&(4|i%rj5=&HgCro(%g>knYHn&aOeYNY0$1Z9+%ZFYRj`K#y5O6O4u)G55+s=;@%0Q^ zi#wKj#ZV~d52)kLfR#ZUs*g_Zh;;lA!ZY}tm*_wx%9Ef5wF5BmD8ktn;E>9}^Smiy|} zlE6T}f353kKOcWTUx{zf!VrHp#>5Hc7VM?UZ^ITiOq(-pK9iT#e!;#>v?f?s2n-Y! zi!D35hu{B=cGZ&pFGd%p)HV9zZyYQ>AKS`W80qt&|7)?BZ2EXHxpmPQXJ%?7)B9b3~06U`=CTG~vUIKkS|LNd+_ycN1mu&_2Wv$dXJHNo84%*saK zq>uY1VJtS3nFTsnS(sUy+ge&%Gf8E4ZLMrAZ7nC-+S*v!*xG=8c5{M-|L#lm@w3M*0XEuKzAR1?|%%5@_k(c{+Il&au1Zat@iWw z3sAk2y{~HotP*=!pkHvnYQac#y}-vkND|=X?)_h*{U`lwEO&4JweEAF7#MAsqtmqS z7Jb8RV}b$hYyeE(Bf!rG_EPyJaIO0qFJDjggg1M{X|11<30{E<1A-+^U(Lr|54>Cg zYM2T2UllM{66Egf?X`NoU$Ey|U#OdMC^k6*c*BK%z8C6aFyR*37%jekkN7}=t zjXizgT%R$MKRKS$Q)vD1^;q@plY5T6G5_n5fpg8iz5IQzS;apMw_Y(Z&aHGy;gH82 z(X*ZMzKp%%Ss4Fmi(N%Ycy`C#b!R4?e}4X9+^b0bjs5wnzkNywZ;JTYxH(esM*qS1 zX;17G5qx5Jw|n8QT(XyDt9wZsi^ARHy^e=9#wa%8DsQv@aQ@Tms11L(VG3kq|M|Wy zOS+2*NxW7fJ;)%G_-7q)oY45G4R^$cC~hWBqltwB&>-CyPe{)d{KZk^2D>A=p)Q(> zU)k-bL=u(6p6wg2DCav@9T~Cm-QRMyrHd-(Iw74%CuRpXVoM3$n+!f_QBkG8{ z(+Ogb{+7pRFFt0^rJ^DObZ|;!-JD*?-Qu{M+goaDr0@T*e`H8(BBhPV{JslB7O|<* z@6!G8tXrR@G%86GFc41}c(&^kGB}*%%Q*4Q z;KaEK$y?q>hXgb6kg0o;8?&+tdilS;$J4}IOkdXjQ-W1n`i|^^p|X%=;y4p@%j-Wv z=2I>8d8tLVeZt zYdRxKh-h7ZDw;!2&Q%ou-k~o=~_8Vb^U%> zdWc$o6RB+YG5a8lFS_$u-?d$ONHgk$qP$v{XrJfQLG&-Z?Zta6$V)qNYlpGujvn~w zBS3DWSX}cTBh~)r9S(UzP8o3cmILpVJrh67hC>g{ZNTPdV$&K5_SwYgg zdji`GBu!dmZHk7dP(5*8cOo0O5iCp>1n}Nz5@G5hdjft~KILmIWmb&Ye90Ul!fe*x z1B*!9E5WS)FsiV6la4nx@iuxS zbz3*lUQj)28>Z|+-rA81w~dMDW{-1L8ZsMsc7cxQb$})bdLu8MxL5YJDq%#pY`8|n zq&A0reThLeHJeBKC*J;$Fharl7xC*GwAPv{)Q0O-+V34e?;K}5lZ^o5El5L^+lVmo zdOeT1keBzRFRS#U*0gG^oexQfAe=a=Od8jUl~24on4}(}1}5RM<1Z+qcT!u@0DkBk zetctR=?J;i7^W6p)lxEdn^fC^93Mr*ag)WdP4wtfBAQJ_g{|cyq_0yo3=(e}My0vy z`5)>myTL@svA2DYo*DsR%z7BgY)Z1NU`gV1`Qle?$xyL-Pw727dK~P!hII+h6d&#^ zxuI|HO4GoEH-D4vObtBA$rA34Aea%R8ca`mi)ANXOpaRr(($}j|Ewk{n{AmH^LD>Xoj{>W!MEUJE}-FY)dG z1D|^l=3j{8x{0AP-c)A35pOaql6vWo_3hGwFht*N<1Ifr#8{BGH}s>b*wYR%igFJP zar{uxT$uH!33JGk8|4s(L)JN96ndxY>51m4t&O%PRT=VJFXF{ia143E)<|aaQP8VG zb+dV$WY&8=xM4h$#)60np!lTkVrFZ8-(gICv?IrNWcw`T9**E`LSnh@73Dt5#rPC>iijiIjf37Od>quU>=2Ew_V*PFyvOtgkb5^E zXtI&kgo(*FYed0xL*b^-krKCq`B)hr?Du_j{t7%BB}=x!4W!wyj%vQon! zNbecHJbsEi2KI%LWp@0<$DC6V_jCk|NK%N}QWI&OxgrVAA9!J$c)L-0u(hm;t^4_q z2FxR}gqeML_S{aq9}^SJZqbqrY2mFRNc`Q#Y?`RC_pzF;YrDNT`UOk^41+Pa&6mv~ zN7iL%h-02J9U;zH@H^Z~jN4ZXDvs{ry`U5t@K+px(M}YWwy~4BP4^M-pjFM~BlrtP zxIQM~uz^Qr!!W?$z@WYKgCvRWd@xR;$9LElKw7>a;@>zCTZxx`jRV9pOZXBy$_dV* zFIf*)Sq1%WjWAOaKQRMGwtwu5sW$ikJLgQJJhf*opg)ae0?9P+7H=tdJ216DIZ45u z_>9h}NgexX49V%8(ZRICK@Eb#FQ3Ez;5k8&8$zQ5%ky#&x4?uC3<>C#qqZ^*9sufR zIfqn268OLr2;ruvc0VYn!3na-w3;V&TLpgxbLPqQHwh=NKk8%%ToxbrXqhI!xAnTsw z!Ytz~UB1iF!8jCGzSnnE3X*I@CG$9^$y%d<;=^$E#V^~E=d}C4C5<8%AFDmZtmN5j zWg;yUaKl&@CWmS>@k);TWUFpgXhdG$lhZxhjKl}Ktvu99MR{uCSXd!ud$2-cP?9*i zKH{u9k(m}j`?tZbhzc6r(BWkhKWQB7$LK@UDM|eRoWw_^LOc1y^G|>k$h1Oo63C#n z1ZwF`x0lFkFUTx=GZBv|Y))KcP@_g?9(3oh8Ej zWtK3M7kFt*P3|CO8Yg=?ENc{ehZ=ZnM}s> zN}2V8n*pL@rXHguUh^c4O22oV;ecw5m1QtjF;i9+ztSZmOZX$-zh(r!WPO-B0%mGd zS^y}DBSsiiNb*4U{gEVhhyC0x5ofSQuzqAAd<#4;XaX)G|NY=uA{~kEm+Ey`eHve2h5Nw2g-sFsPz%21>a&WG!Q; z%<>J4t)kRRcoTnT5ciBB1_dy!HdwhfI{Xmy7{W0NL#r?d_~gEVq`~@chF#Hflm!oj zenSBP<(L3GD3+Jm@oJV(@wx5m2SR!U7zh;?1d-wFya^gVjlLo%_j3a90p%{QRv2UE zV*qPsQUfJCQCe$gDbSrDDBz$*qE%aNh?*|3eXqb&PJ)x-U&e`H2$;LE!%AQr1{Hb~ ztKbD#tRu5?5XWK8-(k)l({J1RY*IuriGZCO3RdD_(YzKc0&F;gD8Po$X3-oCn?iMi zE>LzFVnm5-5P(>ubbW&(H0WS!C2*BEszVyvRJQHQ9Ok^>gn_;kP$_XNpg5csUdK$l z5%VCHnS8on!QpMq^<`e*$|8`|!doU#b(u&*BpY!|dT<;wV(?33%6mX4N27-15)NO1 zkKoG~+YC;0FvwSXft+N%rm6C@VA8|~-Y0mpGJkm(!YsO3=_Y{Z23;z7PSS20-)Um- z5`Ytsmc0Is-+K0euE-}tO&ntl+Ie6GV-p3u;#(H?bVVUTx3s{Xk{8OSvehP!g|3#1XlC z+HAQHpZ(C6gnTbUl;f`9|5>1hfkfB3=U927LBujx^i$v|5nb1j0aZ>?Lwn68`pBa@ z`(1r0HAqruAwo(c7e&>u@K^O)l27$+Hj=(`WZ`UfYviXf#m&+7&EsohLy3G7dF0)a#J*fIgb2>+O z5W;$L;1Du&PD_L-95i4XQ_oW-IhKvt050NRiwGy)1NNLu;SviQjn|wRo#XW~xrC5k zfWjPM*!fJG^E;Bv!H$A+TK(@dF>j_J?)2FY(*^$w`Wj*F6z*z_$X$ z>|k(m)?z}w{)11ujaQP9Fok4z2;_9&7$7&pM5~Xvh+YD=Xr7y=CSz>vq=_DzG}H|w zt&V{m&~~ziQKm1G2xKLCj3h9HUN4!C0Md6$(%2izUj##=Ucr|37Oi=sfUSF63^$*U z_C4_$LdtF!LrQ0+LOXu30}Fp0N1UqLK-v0%fGB@w`>dtG1Ifb2TrU%)GqCr`Grogx z<)z~S@+UJum}jcHJ{&0`3qVpfF$M&P!S4zq;2nhLvnaVUhafyc$ih%~5xE5b>3WM# zTcidD2%@|kx^M3-ctY6H)Ge9@*G`iijhY!?5bT|K0{zLHfe0FRnVIy14ut+Ggf)O* zrm4BZtX^J>jBZ%?;XKZp26q9`4K(1t}5 z&JHaQ34~CR>4J-k?MtFO$Vitf^!wgm&(OQ@Wd=EuKB|44$w~oy$`M zWeFagenvg$PBvSh9YFv@w{^(OMgbu)L7&%MHadb-dl9GKTflYZxUs0GO8~TZ$Mb6E z;1I~%>%GZOZKa#A|SRh?Ayktx$E1A_r3rC9NE~a<=!rh>&sF^fFky5La4T@4hiuk5|$)U zth1nN12v)j4&=xjp6OQNt!LRjo7DQ(=ovspAr%MNYC3snkmH~i@den8p!1{!e71EC zYcYKox-Nr<5`r8UL1Zxm-<(*ejnx2@nyX);v~wK0-ce z98xbn4dc&iAb4ldKTNG)=SDVm8Y7JZ3sHovdBfmy}eo7Y&af z4>RHJjxVMCO%xZ7kf+ti8nB!T>=P6rAs_jVbsFNsJrRVDjGjvRgm5E`o+BtRPKA65 zz()LA5qZe$5sLu?M?N&)lN`CrbQxJ6bHw-^eCAlksp>fpvgt${VbBf8qkRy7I|MkY zdW;#eZ6gD;S03)HM7l+8!!lC_P%rT3nl6tuVfbzZ)*R7dn5Ikt{B}Wz-7S!`LH_Qv zkex7Z%(iM{An_Yy2$ez(Npy&DAhmcO0DfE28(u(xMXxd=NUN^sr!(=S5{6oU8+M9| zdTQcBJxNv&Z+Tscu*0c}VXR0#co`x0b!W>e!7~Aub=h=rtX2-9hPkwV>SC-|6H5Tv zk+1f@*9Q>JYassSMG74ml6OW#yO9vrEQa0Pwb-meY;+hXj_oIxb3NLhS1XMR4;MdbAa3ffzF1N z6N@aC&t|~xQvzi4(Ftx4i)I^)$j9`MgoU02YNO@agPvyIoS6Zc5`KmZMDC{O)nh+z zm}!Q)b$OPvnq8@e#z};bQ`MH%=&>N3;SG)@NB9fwD#ssP>K&?fKW#gcb{}E# zh1vwl{N!yPnPojo20G(;HWLQ-1}okC#Sq?&(bTs;%;?ELwY9y09h^pl$wp`-rX8U- z1j$8G53@`oU&R1j`ZALVp0F%*)I?pS9fkr!@Wg+cb>=?i_IPx6I^0QrLHgoGxzz<3 zOJ%;u_DSg`n%lyXZn21Kk;NM>1beVuLD)6Oq)2AXY4K}RWFwk!vV>?JV5$Rmk#(8; zXo?KNQ*!S(?f?EQ~eSUi`wM zE4aJQKQYWDCy;PiESm<#u76HgexJtKA?*&A&J6y&%k)PxdG=idX&;mH`X<^S5q7Vm z%$sbt04!s2Nsu&QYTa4?DPr~XaH?Ql>5#& zbz8mcR*0H5EF?UjS3F+{=L-`&fW>i^gsm~-4&uJMu#@uSf*uuh@&? zEbk8c!ci3x_khU5-QF`E`iizmWC>Or?jl!ViEKGh+8;t#+ng=hf$fCHI45*WZ9 zA=Al8EVSW4a*yS^VNxxTBLbSl9>gn9j4TygK^IZYGKUyAY#rkB(y;`uBHMvis*rHF zZ#4)gS-H~^i+vP(1nppd9H5zo7+G|CY+EE2s*_Ze)h6Fu<)V@_7%EVBz0C$L^goCw ze1t)bCNYrciDS!zWd^=w#(!j^=E;I42CbC|mX}C~A7}94uwfKbCl&UU5_=>7G(07D>L4S4 z8cabh3YZtEIkR=-4)RjS#FaYHUjkuF^<_RM`1M&Zu29Jl%sL?}GOs(!wsn@UB$?pb z@N158G2p!soiOJOlK^!fQwj905*mef zrJ|UnFoL#ep7iO-`~yo&1WyNog|T5eZc&T^1HzIZJobR<*#_BhXYM&mULdN%M%evK zDn5XnGzXbvvpq~J($q+_2`N0f=QR0=nbKVhr$7tuYO{qB065zxV-mJ!8gMHv&A6Os}#dJ?R3$jFh zL39)Pj6k`#Qh^lkW%_-f_Hg(ICN$~S~m3_qLQX5=V8lHE|sAAfz_ zR9ZFu{`hHe$p}%R`igwg`cO+fWI(aAh1dL4AkX&s*jGExyc58i#p4yr57ECGPgf%W z(K&trAdCnbKYd}u-LOA~tqVoXs;jpaun4ck(FicJX(=VeYnqtyu+ZTpvvIKZh}S)c zO^l~~az4Li5SM3ho9%>lr6G~OWJte@3?%7nu!)Tfn+DmNNe}HDcggNI7;}v5Z=SzO zljKxBRLvR2fVRxI5AYJRr5T{IHTu;=&e`x*a0;}L@r zgEiRhX5%I1MC(@Cv#r5`UQWU`DYEwl$C-!)rf_7_o)>))yRlFzmSa-Ur_U46>LTo1 zBY)+CF-wBu?;wEgo^!i1FS0Yjgs-SiP{jQ;R#6ejUt7TMaWj_ADYN;lUY?Q={x;H; z{}Y)ajl>0Q)scK-lHzH(wY+cTrN7~|!Nq6Bsi(o%A<7rvt#Mi~escIFD7`uYInZ$A z`v*L>6J+Kr^jARo0qjSEuSl^sL<(k%<*}lRzP*@<^x|_^r!Q6>n#`gZX7im)q|9^R zE!d8VVgAH8ONf4i<($-})~8KJ5Pt@AHDFnQ>oZFcL9NB6a-Tog5e`U;bxv@DU!bK!`4tSoV2i77rg+Mela@O$hQB4LR9 zu(<{qX`yh~k9=h(Vog6IjLtTYX`;_W!a~_?2qPKJP?9U&GmeDBLuZv4rI=ape={NY ziFaC=@QS06F9&F0`~1w-Xw3wPB4iN9rt?;Qr1IhK;TocR9W10pj^%g|FGSfO2*)S_ z7`}$^>MEVa>1#0uhW8U3?UB^U$X#?1B`iv0NUO6hh9>16=Zf_xjG) z5v6vrg9U*+bNTe7^gOBNLIxN4D zcn2%@dVskW3<3B7Lx2}TM}t|4k1ZrLU~z;DZh)nWWW!qonZph}mS>-djIkY-P94GSj@8*EsZ<3bP^;F(D8V6(S&$NkG%asW8^avUW3DC@2Wz2q4*E-}7>-%XnZ& z3ml%X?~f;&@C(BpV41>)9fQG1nLMUU?C^kYgsf{B%N7^$P7@z~8r^A*lzCfvEITv8 zX5OWkM7@jG+d8Cd(P7mQ9UOPp)MkleMB>7>7Q!qhYdDF56y*uB7Z!!ZBg*s&i`IRv za!%NcL3qs0k=%f}Bko94*s6&ff#L){v?U>81k4AGdms|X7k~*T&DG#K0JItE5S$It zdMcBT%z4^dAwMKY9kfhQJQ0k*sVOFn*fl~%1}R*Y7C~Z15E*P-DT88UJ)24TnH9*S zbg2znGM0vDEd%<;Zos97<5`4z|F&`B+L==d<$_{j!308uNC9XIAQ^!R%k#lxfP;v1 zY}F0^#A^bvXAgA4R#?c-1Ii$^e}bj3#=4M1?@t4;U&Ti< z?(hf+J9UWT@eY_{c=d)VBN@Yf&d~RZXLWQW(|IeLu@JyU8@4apNY5lbhIMts?I7qU z4rH;7k*B1v`mqaPiA2N>bC?p>G}M*a!%@JUVv7^>vqTiEg`l7sL>m?-?r(;nlPbp$ zyWapSeKAQ>);_8wsg zY__><4+vH;RHoFcZ4-YtsMhp1-L?*oDo;mgi!c#o)=pb=n<=l_@JzWw>G!jok-%ey zlO@p;?=l`EXoW4%Ax_oUrDdL-0V@S;xA-u2zL1JJUY^#jyRz#!M;Rv9W&ImiBx(5( zo)l;T)>2$%#^P9ps9;oSL|e|B>kb?;g8Dpsfb)d_A>w^FEWvQRljR{!2WJc5V4)?Bp4!MJDc7AuJS5SBfBVO>K3HgCBby+|a#))~KSz#QC$+5%< zL1z9~PCZ|FrXxbgOi{ud@?`|50s9GsRf}dt4M{o`WjrQ2`a>6$JaJDDOFjl9}R5fj< zSKZ9I92XXg?Vcrg(6t9S5`T^!NFU_`uU00G=!hs78G@q-`54*G3- z--{Xq76->@xesIYOWGS>%SDp;|!C!DVHbvYA9AveJ`E!lDkOvfocyb!?)1P@q5 z@I8njV7X*tnQbhRLZOH&B5nq+1&ym^mI|0m>0=@K*sNf76cUrzg$$Kmx=UIc{zYXn zsq$in>yT6zA4tZTYCfN7dnM!L6L!e+^}uZqTpZv?6mo-1=2>{bf;3k+eXth!B~x%@8lgJ7CL!7NBb$u{Mo-M9`ZVjqk!8iz$v=a4&h5p^Zt3@_V{VCF%X z22i|gnDR`8kj&8`IKK;{E9}If7ckPzFa2#X^SIkN3Z;_M;A z@emf7fCb>`pF+k3!JcfmCk}H&D)JnswrTM<-y{zx|M|UibarQDdE@)Y$p&3g!#iVD19^o zSWFsm&Hy6s4xqokFEKgaKball1H*(YNGBP|HfC)GXps1P@Jks=M@ngTcNM>_^XyLk^+?O^@^jMQ8Dmq*H@`cvRN<$H z`DZlAy}qRMlT3|RuekI@xKSMrP6#jO(%;ldo{T4TmwEn&bu~m>h@2rwlq}`8gy+9g z@0b;M*)ervXW5X<4WWG67YBs20=cl1n*Go+D~2y0VG`=-l*Yy^!!c_3aN-2wf7po^ zm2G}EmiN>&1ko3;X;ZUt@(tfxgY13%9&c1gy{~MT(V6DZpWFkg$60=^qRL}RXZ<^w zU!8rxyJm%tzj_z1qc1J5UasIb@OPhIjgFpi_Sy4nyQ_61Dr^_eyl&_8~Vtzz_(t~9Jze53pua@ zQXtMhr`dGq{rGbxci%VnbG6?vmH1aO0Ui8i#hqg2)gW0I_75+8a(RVY3&~LnHyR`? zp=6WBrg<%+>VDF%FYOr85yqc|bZsx+aIz!eC?A7ZjjfgcSNQ<^1qYtx2A5C4dzqU2 zeU}$z|FN&E_hvVN!#Sgv3cb0CjSn#ru-6;Q+vZ&2rO$Y$EbNcyxBARzZ0_d+>A0yQ z>zx&L%XfOI+VgXM!t5R0yM*nfh0G)i#$GUe93=QoF_o)AE zU3!aO$5^-Ih@P-?_=AFg(HL_8w816g!k>_(h zyQaKZFeqVcgNF@`(`AQloKD~`%@sGtZ&fNzQI&yMkcw?J*?}2jV@8=AbDR3>NaB5o zsg>jJ^)*~vD{5yV?@0#_j`BD8d&90?r_<8H3N^ElO97jydYTxkI#>O4-seIRK z1GDWIGxodp`p|A#kD=G4XXeT$cT9dFtjCA83+st&Ps(PpCB#Ci@T+fb$*bW#>Wx~m zi;OCese-I}Q=1=J@+Eh&Yiq5WTP`XU@w`CNNOC#jRkLPj$iW7mrrg5lIzgk~^*zw; zj{G~@y6d+w^KND*|86o2h05^6ocoiz&qBRo^Sfk4S?Pkhn*7%ra-Khrjuhm*d0>-V zSi=1;+UhU5T7_R%JP3Q5oswN2`Bb1fxuUjwElUAH;n!>C?7TE5lvF5s<7v}RZT5}X zmco>wpTPy2+xfDM&r|DL%a!s`v1lZof*O6e_Pji16o0ntcx6`OjnzsQQd|6xl5Yob zt=IO?(kGqmJFcj7uzAwrXAGmjV?>av=ODKYW?2qB$kR>lMr)C)0JZF$gT{~*_vL!c zsqd9U|3Ks5#B1RMbV$SQ8*wg>!l&<7nJ$VJ;5xdHtXt{ z$>Yz%=|Ek_=XTl`sV1FR=2ACcf$htvD`!g2ZXgv0GwqqC+Ab!S6Z6gAP?>SZc;>9w zb2G||gw=s7xcRi@-1xu~4X@f$YF(O@0y0r!=a5c&LFTt;ez>`OzikVj{Y?MyrT6V! z>$KvYd|52nAB#f*7a(N^T3T#lc4GZPWI zX!F!%IMJ}PFBxAIb}yYTt$eHf{N8t;N* zJ0Ae$K==)E`UOB;4{4G2eEfPPU4M2wEn-QuF4@1{At@~4pDiz~J!?^*^oA>91@ktJ zj9(So^p5ulU;nIaa@TV2i)}x`9%Vy+3@^VvH6i#J-#b((3$J3y2^>{V#P(dj3Gc8P z#+P{4gE$*gk$%N0EL+K~k4EK+xxYzM^HVSHZn53Cy0bk!JB%+>tPmi9)h29L!$x66 zW%+W0OSXZn?fb**l|nq~H9PA`#J4|iuNw>6+p^1OXlQz}z!gp9Vi>y7O|-r~Fr53a z{naOzg?Vk%*ou&5rk0gSB3(ouFkN^lxmj<)1?>@6yvaoHW>epw#DlG%bw3P1WPbxtN%vE8xG=gNkud<(yR z)ICAWVN+)Lc9i;cJo3EIGBgx$L5p1T>%xGo!&|!59WQ#`B59tyS-6P#ghku+jt*y$R5*nwp8=* zH?ZL8NcLmKa?=G&Jf7B9nMX3#iNV+K>yi)F%l29L4 z-s4eOsCkOugy!W3&ng)Y4+X!udR)3g-H6N8#>TZOtgzK$zAzijoWDHe>J_;(v`%oD zcp5FauQYMe$$ZOTxlK&j&<(v;)R&pRtj($)9;$Q^ z&Vq8U(#ZM2!8Z<7yNaaCYYxCJ#uW_=vogs zm*)#|(DgJNzgBEBVC4Qsep5+tgS7Rm%Cd^`B_RhtE-MFKkZ*)U0#1}zbcG(VjTf7C zhDfCe&3>2OcgA)xoREq+gSbsH=J2i0lm>@gTG1j`s+G|pY{idGvS3@dQ4!<4jTAyEn`ETZoDE zX0ZPkK=7UicXksIvT&ERpKL?pr`{VHUCYZ{t_Ro5Y8K@B;4i`sx!@-zZ_d8#*tRh& z6CO~BRJS?{rVEpv0a?Iw&e=1BV39Fv-?!0sMh^z2u5Q`p%3iimX`EKy;nR;PIy$-qL1hhbSeil978sk)%GL5w%&ODa9vHK z^h2l+&Y3UHmDxY&=)f*`X;Woo{#j|6a_(br=vH9O7!vROFr81|aV@y!_BDaWTL-8n z9__kcawp<#WTf0aC0)?CmD9VNmEGf4<~2I9@mhycmFDP#ghOJF`PdV7XBE+75uiBl zAH}C7Cp<1oKGQY(F~U1tNc`H%MQv@_=^ZZ3I401QcepS7kvK_2p1~xpxlyV$=bW`v zQB-AYwSXYWFkl6lQUp0~oBmF*TYg2gP-bJWrA4kN(d>_MB5r*F!bk+Z}SF z=HBmlzCoe_Jada){S%u+FZVTiY;t*j#2}LK@rf-l7;=p90-(VpWAMtB4GGr^H%@Gs zx(4x34axEJ*AN1IShU_-T(3<{s?Gf*Nk&{gZW@lgI8@;XY6#=rFQNEn%c9=R>xe~ zkoP?H>7rc2o9*Kd*+W-{pZf0mcPByy29S!BF|FR`lS>%wl8+sZCy-DO?d&1zyg{NCc*je|LXTXxdM#GsW&r5B`A00TZUcsl= zhlaTLvk4o{n0kz9#+nK0=l*WbxaE5}vL-ZQaPz~bpSF*S)L1FN7|eO#l;jknqOeot z5Q*GUaonDml2{#y<2sOeg4 zEzrL@WJqe?u-bDuzQQ=Wg*9U1gbYj#-ca`bRnY^+oNrReuIf)XA~Qk#!@>P+YuyuW z)saWfzfGu}^Zw7(Tfd$Jnp17K4|5w6FY)QQ!!9+)T@g6YOPGyw@FHo^<+1$l{%&bL zp&_ovCT^UvYUh{9e=~=cdfIO>DQ~d5J~e)I#FcixBkaemUkl4Ph_-I?iW{<^ZpOkX z5`ND6r^G3bGZQ3f|AU(H+Wpg#`N>byuLMQP1wxjGJ7a@Ch-|qY_=|j#@!bx^;;X$M zu^CJoojs1o#%?3w*H`zPT=hx%$)R~!peI>5A#*pgDN&M(+@@!j?>czYhTL57F8X5i zS@7vwVcmPk`W0+_uPC2Xmzr?lK?ZViS155tCa^+cC*ciE^WzAU! z?~k3G$KGJbyj9v2J8xZ4B!|=DaCySbZVMT3$va9u9Ie#t*uJ^$TzYlkd;9ys-PHEZ zjwg0=)4c{ZYUhNNeVg!>P3U@0Sx}ceZ}}@vjkI*vC#QeieNabiR}TVqAPnj+C`{Rk z%WBGbP8y7tI0uo-D`T-n8RfMbl}gJ5e;c`40in9_;PrF&ycJB~wuM%dsA%oCKjiAW zm|xF53oDzQKTr_VM2r>XaZ#hyGe5D0kJRTY4~6~Cgi)`UawO_jPuY086OZ)Qmc8u< zO{wi^WWSV5F9Fk{zM&P}bBArX;a4?eavhYYqdZzAzNa*DYEF1%&CS)lL<2AQxV#Az ztU%{iaZ1^D4&%doUH7~9o7ocjZm(RBqt@FQBlN7(AU>7-9!k4}YbvqdaL8S%n{sKDzsX?Fx-sP)%o^MZ4LE$)Pft*H z$6cG{3G>3^a}Xs3H4qGHLFyvyQ3w?taevHv->!xe}WZkBT&jm2LE7HIjUTGmB*i zVE=0_r?`gSx$&{%VZM}-m_+73X9v-h_Z#`#8DXCy!k7Zwvfk8J>4t8blCe*Cmy6Z& zI_#H6tQv$NKJ<`H>rPyK$=b1GEgzBZ#1;xiq5B87mY>OQ|4`# z5F9?Lwo=q37RF}o#I`md&u0A`BQEy;dI)h z8K#1pNS#EsO+hk;tZZzPYRJ}|Cvya6_>EQ$*?i%V^+v2owpDHRTBZuqeACN#VsgdI zzjFBpZ#j(kE~57;ZO)tXq2dg@Tho_;f?78?HL2bx3!7bkWiy zJ%~Pv9x)(2NiSS`qUe*}qz~zfVo3T4*Z!ynkbxN2hzvqa$zarj@ofl!A4I{QkfR<- zhT+>6!nfh%OMD+eOvp$wii}1XNyZ4*0c0#0M<9zBe>_Sbyw4Ed`r#dY!L@<7j>7Nb z@WePg!|Jil6Z)M8v4YWExsi$yaDOkgv%%DAQ4<;XC^_1D}~_4Z}Q4&_hgSk#EUtG6!WQeq+}e zpkglGIFZaFjwlmBmm_h))scKh=A&Lf7UJF_{AP}RW@Is0LYAUlDE#7#UJLPUDZV+9 zWvE^7Z8>ozD^T3XO4ROnVg>H667DU*x5a2JA*=C}4QA|$=hooK5uo!+d?aXniT-Oq z1dV6=nD2C@-l6A3}tOhQq%puGisHy<{KRPhwEVkOL%^#F2w2vE&dr zOyWrb%3+d-`Uu)b$uV*qpJU{Aa)Kn0llUZ&Kggft6gf@KpqwISNisQya+ai!RC1nN zz~?-B3CeOJh_TbHd@)Z=8(V0HF6#0FLHz2B)3Q|>RggX zZj(DCALTZ=OA1IKDMBeA#pG{tkKptcuJ_3U@{p9GJRpzoc}$+5Ji@ofqzvscT%Y3e z46SFlJ}2d*g1kT}Cof4QsUojPHA)q!A+O0Bd|s2cq!x7@d58KvsYm?*pV#CgX+Ygb znoxft&7_62k~Y##I#72KIj)^(DF{F(rIe#;sMVJi7p`D~V)unp02h~S0 zpgn0X+MD*FeW`*N(tfD>(*AS+9f;bH8qq;$_osu=ZwSg@JlPXZsZ(PVN=0-i9fl&J zU(n$gsSo`U^>8|Zn$Tuqg6l{+ijJmZP)5mPG_P1md>Vg z=v+DvWe#;j?L@yrnTz&(x_~Z3nNJttvzRVHS%h!j;<;ILDRrjHP%on{bUAgUD^R=P zx{|unRj60d)pQM&P!E(f)DzdW)Qf&k*HLej@2L;Xp#;!iTsPpl z0oRTAY@#9fY(Oi7Zl<9qA-K0z7*INVv?*CUZiO> z9pxg;pqVs_UP8&Fm+2LHm1d({p*gtzh3j9qUc=`)y@AhPXx*SU=`EBSxOZL{H<#wo z+w=}f9?hqBX#q+h>LOZ<`fqv zg1$tlq*bUZ=qt2dpsu3Tv<9UL-(S-=^exJ3T8n4O@N6A@N8h72&ooF=EmX`^Uz-Eh^xRR`DZ z_~>$a_~@Xe$MxX!QS@-HQyABP>&f-vdZYB@`fz9MeaVgBOt_IKqqx!B7;Y>#jx*)Pb7tHG&YZKrJxgvPXT@1_HmGfJ zwc;jmlQ}zX3O5zCJ+5MI8lDn!UvUm7VvO=N_YF54pBZS)T)d^-|86TZXsVptiwS)9{wBITvm@ z=ZfOOt>E0am7F_1tI%4_t>Gjnt2qzOlUvJqp?GrNbL%*7&Ie^3=gawV{@i*LKQ4d^ zTq&kjV=gPG@}n-p}cb z+|wlVDO|E4h4o?m_wH@VIR4?Z4QspL+0SYC{9T{Z!1^%0^#|WRMKxu(bnl!z@At%% z&uRGlT^a9B3w_>p(WZK@>VEaR(>BXpMr9tG+TAYl!ts=A&N`Xi^Saw57A0oP-yW8s zAJpB>=1^6JPU#mD*t^E;`xng{-k-MloHo2yn9H9-LQ_<8VQZ?QEe!ot{9!Vn;={$L zCL7h-F`3cnqn+h0?Pq6ab|S@}ew%r4Q7^m7@VE>MPB)A6=x4X$_<@Yt=e}9Cf&J}f zeo9PH-8WA-VDoc}Z)&3W>8(&2b3mQO&)3OqD=0;~S&%^SON9U$u^mC$%3>+b~`|2XAM*aJJqM*WIqW z)6st$=W||#?rjqKU)DaBq8f+E!{>ceV>aNvYRsvNj{YM*?7b>}GPzRG_W63TF+b;t ziVxlTKFD~{&o3+Bs-azs+JlVXCGD3O51W?8WNcd2e(C1UzIN}f?#uYmrTr4?^F8+< zV~G2pEFZ3~-FWSN8Ik&aS*(vy&c2K(hC4DB7WB09<{oEcY&6bt+1MD%uM*Yr=91t12&((S9O2)^aKA!ze)y} z{9k)uYvXsSyWO*4N&o0b=$%9x)qJhxkN!<&YLA#?zS-By&i|W}DWCWG{Ql=OtJ;j` zsy3U;=j+u1UU_62+U?#wGDX#g_5b|-=WC>zJ6pTY`+Pq4&+n`HGhTgu|8stN44IVa ze)QPnLqjLovNoN!b@C~+M-883%kJ;(YP0*tKWo>DCT0Gg`mkp^&_^|9RacwcZ|r)O zjrsXFs{a2;kLpE5PW8QuoLrJ{Vp8ad|F6624zH@pzLbGbB~pZ;By>d}AjzY>yn7K)DIx?c zfCW&b7-B^bQ4%cfEEJr|x0h+q5rvX-s|EWDI()jwes79b)R}KGgjt`b*J!?9ZP* zpWrTz{yg;AnpS06#JfuYlP7+5=O=l3nEd;1&2m2jp8CWkp}z%qG;kz(JFw5&BK~FY zMZY}}|8ii)Lwr3aC^vq_qj_TH@=JgY?O#L8Z5&^v5$Dv(b?g|3xxc8xcqZq=%N`7j zS@d!DzJK^`(S4%l>b1~$ zXn@lK6H3u;jiq7X&o80KUd%5;I+`{ev(*>gwS9eEY;3uc_6L#*vA`}*7T6Ub%4N6)p^HbrL~c*&Po?68J{X;XBxed;qu z#ztN+=ZbxMF6)DsHD>&EyY91Nqa9s;y)NRHHP^Z1SyNRj-2)m+JUV8^scq`sklHd% zsRQ-%i;XsQE)p|&!OT5B9qA>hq4>?M71nNelP7X(OJ3?sEO`ZD-Fq6__MKj3UhHl5 zr^Y&FjinCs#oD?*suuYZYQnlbQn5y4va{F76AOQly^1}x;&SE4HJHmib?HA9BZIJ} z!WVP;oIG_H=Zd5Xf6`|RfjT8ImpKa0Jw;p`JnJKVHLvx#FQ`L(u5W&M>0H>W)LDfb z8BgD0{yNw(cdj03=gatklbza9hgiqM-dhU4>=PY>=!|vxhp}nQ`e+^IBK8GyT|_6h zo=!YEPWB{YpnaW}u7h499W(b}?pmuF>fX>;;-N1cr?#oEubGiMKyCuTj#U&9_`-9(>jO`HN9`l|j|kw`CWa&PV&`n$V4_JZ)`h+(JY z4>#S^5lkJ%Lw)khQ84!!aWHgP6S1#(tRG zBKm=SRTVZT0c-n`7j?8R!S;ErYNBm2X7MYS^%otf4`a6NsQB4?jE8=8{q?#?Y^=GC zpL;ELO;xRQ4`?j$(3g%=+tj@wwPl}39hg^svC*c^MPeo|n03fchk1#8T_3^hff3GL z3#>DBBrn?6Soe~~(yP>`U+GVcb<7&;IC&R6mi4o{GVY?pl^R}mpWPSMy5i#RY%Kh% z|Edvr61={Zb8+pcj#_=mLP)B0py;@?>e#tY2R!$6}qxoxJ?6Y;k z5VO9YlV@z#5gU2p{fJrn4a`^a(lyt0roQB>YpZL{_~jcx`_*;Raq3!;mmGCoy0&`l zbZvES1nSGW=)4$@_|kqkSFaJ*jywi09rPVm{JkjJHUM z=OYRgipztw&iDUtnITm}BMKFBna{sJ#Jce4%J5_gg=THHP*EXJ{@ayK6-ZJyC=ieGM@%-j*37Y z7VGxP%F3=X1Dl3_5ahDT9-6zc(d7v1Ipk2hS?B{@k?&~mv0u&I*z|IQnS9|*D=d7n zuiTU2uEHNQu-e7|BTg8Mi+)cp5YE7)&AAab${8X%2=MnGPPT*6)XI5)s zt}4{clO5jN{N(9y>&Ck!A_k{Ln{$%48yyOF^Bf2N@zdevu8%4kbq{@NR4f}~?tuMq zupe})sd)xD4n0?8ZkuN8i{Lu^j`|*bqnzsu`sL~`nMT$R zb0WK&L(J1ZZZ%S~moys$ov41z&Fq;)Jg*N6H-8IiW-gxF$+&sAX&xQ!jaIcUc&lK2 zLo;K|X=R&uR(}7@x@W=1wy%{E0-qW`2Adzk=CEPm7H!Uj&0B|?TH4N6h@oNSOm8&S z_bg(ojo5maLoCg|xT=JA5Na|%dAn~c>Tvk0PmOwIW32R_UvLkve^2C*Td`K^<%Qm& zMSMokh8XMaiX*(~t_Z75w#)kW#bj@A*`4W`zsFkMlH+_4-&MELk_~HTNR^BeGsCTo zjhkCXv!)qW(&CJyupw5%DLZ`W6Qiy1-^Hz~37sR*+1j|dnfP{(jHKnUR+E*<%~sqB z^42>QZB;q5%{T3}dcMi4Kl7dH6>Y^|e8`&EtG4xWY!z28@B_hL>=kVm4eIX>ZEVMB zE<_BC5JP6NVJ^PBFrpY@F1{hgtT{0`Vy-_HTelOnI1O8 zJO_R(_-|788M;69y6i!H8-KaV{Zt<#{hxotTKf*Jbk`2uzBUUu#8bn4spKQgcSC1= zXtKMyWwUNB7U zzdPrz%C<19YPvzcxTBn8^5#UUR&qqAGi8m z#J;EgU*WXD4I}zuf0x61qgwB(|Dw&6J<7SldRM)lxaj;(Tw167gw%BvaW?G7d#mP# zH2kX`aaPOF39ilQQMq;w#yw-(`7Gf|gy!dOEaGZ}_fT)dRuH_jdq_$YbbDb=L9kPw zztJCYW}|CIn*Dmdw+nd`0MkR9HSg+f^lL#d{<49>)>_g1E8G;dErZ$~vCrH>gNX>@<H_*uqg;2FSM;%E6P zLT40o>R;RDo4Ijx%ID~xSKzlG_{U*}C$#%?V_D2lt01`6+lJ@esOg3;W~f;ZJh|F? zR{6(wW)$9<=-G2@q-70k;F}W_p9fd3@t$>a|Bj3u+Y>#n<-}UmYv0(Ied`AoaW&u( z4a>Vipc4w6B0CZ@roraLsGS)dw5J4^?WJaAZp(Vt3!&{4WCGpE&D$$odvj`i-zgPOoE}o>m8cms*^) zwAe%5sUkpIV`ccUsSZK8$f(7`ef^d+F)Oxd zYlZAP=lgQ+IioyqrG4j&Q^0+p6S8=?@hWsW1CNKig}HrzM*@GkXt?iuy}s6~r;?3F zPbK>-^yH%S?$%iJ=f!$`%?9A&@a!Y-Z=+AwqF;3nj{!dnx*Ncsg?S_tEYoAb|iYneYqn8XRKK| zGto1#+s=$6*sRne-ZOhZ1K(G$sqxTqQMjl2>t9phXA}-rxGT=Hr}2yLH^OXMeYCeE z&b^7iC+k#>DBE$7{q67q&a~>#NdT|$*Er9%r>~A6ukroRFO6R!c#T>Ay_iG&-mq5> zI)V5u_#fJ_=ckN8V;yHK*1w~(*9wAh&of`coJDboDFwl8)^6oKwX%Aj2+zS?karcv zuJOW4n{1u^&>4&VeFr*cAMP5V@zdb$gWofkzIPP_BNu~tt?c_sNE_TZ3i@fluc51!kWm@(bigPQ-k`HB>` zv+p+Ewb&*22=2abU=P;99;}1A@_y{W8Q6oxyT^O7oIR*fF}Ns4c)_*m?P zp7^onr*%BMHptn7O?t+MTNCEkd+;;tm6xD{JFKbkci2x6N!MK5zZze}9rQlT`4GIu z^Go-Mcmwys<0HsxtmEW6nD5zrN4K~-br}C#2v^GYjL)+7P-dMe{j#jkEV!?d^TM?YoSz zaR@Nq|2)4wgZ?4xLH=3VGeci-Y0Ptt_J@|eWS?t)g|ER5zVH9*d8c(Uc2>_l@3!r_ zjYldxMd`%A_Lt6iR}ef9^||2a|D^WX=h$oYoV~AgxL4)SotxBOV^p-QH_`uqSZN8I!LZ>#Cx9|m_2-(_Ee z{{i~@z!k@DAaoin8E$k3K7{Ya>iB-F(59{F#kV5A8KdyqgL~}cn~z)FaF2Z*vR&F- z-vD5I^ZB~r_ba~V^j)_xxQ_639sHZn55=9Bci`!;$#2m_*u=M-ITCSzo2@!b~#*$Xy?z*bCv-`Vg}0{$+;myT2OvvCJcMGj$@tMBI@gHKPLYqSSX z{UZ2Xft_^R<>%l|ABX$A&R6I41n&O_Dn4(Sy#GVq!nhZ(&UYR7?XWW(y#8L$wbFjI zeI4g^#PdGvN5PJ+gU)Lo{H%w+?usQ>#x^Q*Hg!-*In0E$LX1z6h0v}#(ocItn=dgb#(RY z2juWVHocaUFWp z7rzHnr`djAJ~<~(9D(sO55_C`)oe1w*fip*r|8QG#)*kHJ)7H2F$y)j=1J<5Xk^{G zoI9@EInfCI{7Nn_i2={Ju^v44MO^yz}%JTeZnD}IF+KZEN|HePl8mTOPO;$P}o{Jwaj z+l?Z*eG&NlY?}lluKrDr@G=&^fl}&oCq6Jv8B5+0zewRl@1q`BM&`B@gR<^`6Smaj zeJhTGKkV?U9KFK^`OIyrY{_~4amt^@e*2>5w?lg}-|yEy7C-V_#+lpZI{I^+IBt)p z%*r;hj_oi+237hp&$z>$lIF%os~O#olr}r0JZS`uh2Om=*c=n}iXl??dpB3I=gpX% zgTFd*lkwQ-bH-9*n-Mq`zW!w`97*kyZ6c>p}uh4onMJ!ID{aD1WG6{EzF47)BrWUew;FFmF| z@?2N)oKGn{W%Bk7e_DU~JK;{Z>)SVEtuYhzE}xWQuM2su1Lx5n`-gE*N}SZ^dIydJ z^<^ybWJ+1HQFI$48T~Y9_E#RtQ@gqvGfr2qdA|%crZ%o*Kd1C|X=p!xv`KMW&Uo(M z_PqP%CwOR&V@f{X6;sC6r=)$qzhJxm!EbCawzk`A%uC*sE4eOjU7u`^-+`QuaVb}V zaTMz#lFzqb-r+a**m?s#{UTR#KJ{pq^F?w#=W(6+eEpSc_Iygt*RuVsnTA*Kw8Q6= zw8OYLX53o7=R6mlea7dsCz5f~pGd~XJUFHvCFjYQ&&gAgXFcejdD4&6OUFxl^hc?A zi9`CI^H~qtV_sq}?7bgto|5+USn|+uNj?%k$DCK{Vj;Wc^W zwe>mnn38c*(jWB#$97!#*wucSr|fG=$(u6py%0E-_nyf9b59N`_&)wS?>Tv2iIn%Bj5DKW8(&m?)qDo)kb30} zTgGJfHk*F2%;x>FzghF?e;MTc@+JFu_N0D}e8Qf0dR>%Bd)bqoaAZI8A9tQ44zkud!I7`$2`BcEdM3yLQ;; zBYB>WN0uJ6`K6V&I&!5wZ`Z&@2JJ1aywZ_d?emfPJRdpV?{CNd^Ziucc|Ww^0?~wb4+;2Fayp}w-IhK2jmW-4B^u0vxRe|>t zxu?*c+^guHc{3h;Pt^CP!21-(jE8n4e#uAfRh0T3#pn6mr?el*i}y)=57hZdzVxf_ zRknTHizvxcPwrWAztZEtdlmE1_bstQKfJezKk>7y#3Up6L}_!#CyR{a0hLXA3~7&r zKT*MX9-3Ez&!aE%bLW-zKhM<*&3`R$^fGpT6G%y%nN6z?cv4syFk*qg2vp2IH zIbL_Y}=p;h{2TS%6RI8eFlq zwz4zVjnwt{$9)TZWgGr^ulVT4dj9pnN%nSj*6bl%boKUDHx@OG7hmyze9Y2rlFffU z#j3Ky#Za$cAF$OF9m*~E>U7Z?~SnJ-Qw9t;RvEmPlOuIte~UtX(L z$wEQ`|2ea(0{w#m17rcA3&Mj~9oCa9EZIxd-$u@Nn(jP(9@CgrfnfnmxhC10vw>GD z2%C6zja~TPP3r%qcCky{wJ-d_$?{+8wzp^R{R&2!V%_do!TU%M#SzAxCwX&2=U=0>;HMg|4v$nOfu(Y$WwX`<36Nl2@ zYok~ht4qAWW|F;?xwVCzl{H?@uG(AM+v6?PHr7^_7Us6gdcmvZB3wh5PU-x1c%AoKAVTD-gvnTtzj@4 zv@+O57V72a=eufNV3^OE02rLQD%LqC*0%-f;Z$Gs4OlH>8YsesY@<_PVDM`8RjlkE zkIe8|rAG6mx|7Us>%R%L9(TX=A9tFYSwW-OKWlp%b1NG*`N1Ds^e=Z=SlC-lvbMFb zx3K~|TCr|)R~WM9zjXq`D_ktdZRf{U^}!e$`mGL@sbOi-KfvIlA^rED{a-f8!fX=Y%mx!>Woc<+ug0{0b_3e* zpG`Cue+5E`+QJUv9saTq=EJ*(Pa=_=yHChxv*(iSZgXeq>kiQct+^YpXy8@_jq5NcU4*OqotoiU;F_^k8E`dM_8wjv=}1 ziX>M<;(}k<<=7Mwo64T;pQNhjN1o}ii~8M9kc=_p&R|wsAN;hiKTcjYwk027_ZWJq zD#er7gBor}h+*by0ku7Sm+e9&C5E`cErs3Y_EhP)m&+;GTvsc9`-kKG0mLpw-kc`< zdWI;XH+BVHxHFO6)^9P5P1OPw#8ZYo9R`F9OA^qY*E{iJ>C<*c7uE{Nl`d9&fHj-i zQKQM7L?QL~WxfX?gRe$c(Uh6=q)V57Q(#|tMJajs+_<)fq)4N2S-k8IPmWYg&mhke z$?n<4DL00txTs{W1%F)<#?(Wh;X`s~XBYJedU;!*DS7C=V$g?VoA%7@*+nB1;Y*}@ zO>tZPAQOdujokm4Hre)$?6I*TI`iq5r?tD5B`F6>+j*~rbk^=rH4EDQTDuKZdd7HA=92GDFrVpZLAb_`jVnWQq20* z!6e*7;rmQ`);tmrC*P;J!oQeoi;LQ)O%$WAqUsTagNfS_!71L7kUw_{vJ7(PRrk!H ztLx$wnc@5(Q@LW)?~b9UUvlH6fk%gYzgFxKRb`DH(K*d&pwU0}b(HS1B+nek_3g%z z8~PYeH(5_|h*kAzlIr15PRDD2f>;e!RXjKF$RN3igtL0UX?dMT6Uv5ids6A{M3P%z zd_Gj3e_I?jL)m+6vgVYgq*x692p8p#wDL&}bq}Y&Twwj+}q5LUsBRQi_bKY+hyJ z&F=*}eUiSlhh#TeJ$oyO%t zBuX(#vubj?)35!BVGT8(O9!PCG$xy<*!?BKx+d*47Ak&}ezoK7!Su!OTj{MnkgV@z=+H2-P6QT(xjjfRHZNto`+#E*I_ftdDD8-?tl(lzq zd+K0egtIWQxvShnX)}(Qg>Q|VxNMc{Sdv3yh;;81Y2thO+an^GLnXy+l_v6+>6(Tq z1p{I;y!3oCg0EJyywhfSEubxo)qCE{JcKZ>%?LZG?-K-4GQs+Dwz#Nnfer$kQpY>z=uu)*f{Jy`1&7 z!kqfeCmhVAP1`+#NcZTPOLxC>6peE}QCMXvtolocVz(DpTGQ@0R~7q0PhsE0ev*o+@lSZu(X29(Hsb;-I8`91*AS6c~r?C zQ-Z3}TT_}eLgE5gkDcU99_Cg;9roMiV4!e!roO&pF25$ukvu=A%=0C_%ml}ghir}% zcJD;HD%LQc+eK!-6~dY(!e}gsqzHyj`Y&Wyb9lQk`ObkH+Meydn7d~p*hMHRo+pbB zr*3zg%g;K^kt;g|7(WKVhukU1c2N;BX1MThvzGbXj<6*k=csUi!eN8LVyWUF)VK6- zt5dl-^t3mT%%-E~s${nVL$sv(I~~dUb4sT@R8lmU7<%`>EK*6{<7|8j-%1oCHKjUb z%4#cx1@sPA0g0O)DOrVKP0`~Y8(+~Qv4=Y|fBL$w!tAlJq@dBjOG{w|#p|bdD4OJ5 z);zbv#LcHmo6P!3SlgE=spO_nj$J!X4(VB^U`C`d9mb)rRQ^sprX8yBS$uz~IQHn? zU~)Sbil!KCOPH$cZ>zQfMy~4w(uo!M5c-=QEDH$pfY%i#i5X79Y=+^*fO)ReL=Gi* zs?W@elvclkCipJINC0dV{aodM=XDDeXK=sDA9(tXw}Pf8no99wjNIR;r(Gg|9jZKh zg{EPs{$pWT(o|&v@P(2k4#L?7oLegQ$OIsg8qO~^mFHWiQt|wrr^YD-&GLP170=nc zpAK(AKVr%l>?^Zfy6}EO+%weMUy4@zwo~whQE0+naRi{9B2H~{7jv6lCh(xoTPjV2 zGY7eTrcuDagL42302~0?vp{H)vM9R9V2v`h05tynEp<|AG+>C z&dfGGuP1anI)FoI^;-iEwIV4@s+q?*M%EY&ksg4vFMZaY=G@^Amo$c)eZW6Luawzr zW@0Q=aKo4uric72ypki|+iRE?8o!!mI?=zZHH(Qq=5;8=k!vCQkr*`9V|rf`@k@oqOCjcq`$_vZxG`)7wLkEnPLcy~0lt4!>_ z!U{l1j=GVfmcm+AEtHCxV}Ig*wNH*sGWCsVy?;3&R^jvx)5#=3 zt+Rn}GhlQK>QP(D6(7>9_IpxQ31G0n7X3$g&rAQCLH|cC2Qa_b`Nt$;7rYG z1c0HqqJ}ZWBp>a*Gn(XWcXa7iaYk!I^dk%4Ti|)oCh#IMLCqdyT5y}<)Qu-=864W? zi0ZmQ&fGCPw(m1$EpvO0KFy`TW@2l4#nyoCjZl!%--%mo`$TvF!{-#vK&==1Z551_ zS-k?-s>*%EHwia}a*r8fP=V9xU?|tbMeTW>@*Ii>)2OO+K40&fKqcj;I+1llXoK$y6wh>U0FPtyE;>?P5-pAe7_70b2tEA;tYW`U#sMpX>c2;kfZ3?&|x%x%Ra0K*wY0XKv-OPn?BiZu+o zN!c-|5haSDAYw7{bxp3YpnYxC;8oJtPI=<{imjjKFy{p)4ECjhNl6ny#o@H@ItKAZ z%!62E37H~-!`oUID10$0U!zH_f>korP)IZ-3X|XE`zA0DgI^+3--1H98a1Vrarg>; z1YgF6&G1MkqkMH|$Wi8N-d7(JAx*mHZL)V8^Opyp%#v%>o+5c}(xb8`B%{Fi#(PFD zK{!Ea$;+>VEhp~kN&L_8(ga(yT>xh=HdVnZzGiVxcl1)+M*{z&1#&|aI#Z+%!NtX> z2yxUpAQ~z4(v%{~O6rXp#yTiLQTN}>j8fIUP9W(~HIBmWMykkL%*DclQU#t!qw|D} zIZ81;`?fy`|3-l*$4fKlUjj8$B)QTv$HoUIM5+Ly|AjFnlB>E3u*%6i&R1`w_q}_v z-!&Ff!&H?vBBTs*W(;}G$Q;o{BX0`y<0H&Ju?P^qNUo?W`2^?E?+}o@awH`5m^T5J z!oS`FNT$c@f$UWG7}>V;SHdc(mRB@w5mec}oR?fM%3jFA(zmJdb5T9!zSyMP__{>Y1G>Ns2EZ5q<75Kkt#9RKu9dW^KU|&U z^>YI^D?P!`n+r1A;Y2o$d~A$v^&kwQnZpnxB9fA?VMv0(S*^fdKZQSoCX*kBa*Iu2 zhslMfT}doZ6rB>yCFhUL&DpBl5c!ENM&({z4eyExRQ`76imG;^kd~@?chv_$2Yf47 z%yvd6XD=k=^FM@)0=$xp1{9J};n33|7#Q)YLGP zwYi3L!rI9$)-nTyOl($)_hDcpQ= z#y7-wIH|}rhL+AshjskufFb;O0&%NpN6Xd?0Y$l$?Z1YG4Iv92aD7bG&cM+>-}nZ? zm1nN=$)5~>(9d))12|Gd7NDf8V~hw8!^0{g@EwHbvnjdZOb{L+WMM44gj@%K^tdi$ ze9glFqEWt1J-780Jt43(eY2L~m1AUkv(`Bb5b(|-nSO7409&G<3G=0><_*Gfi+C$;qzo~%~=P! z4u07X2vX_F8elB>k{Y7_CyU$I{P<&jfT8wR`$&mSa3>;BVGf+c4G__{g8xEtZ7`T^ zgNT;e3cGd&(_OKL;rT9e#0^0nf^rPMXaRkZQb5cs&mR)6$SZIx8j->RJPo_zHUrRH z;5Bi7OMH_+@sUG-eQvW5cEmY;KbWN4Km_7V)-}OB8~^z}>LtQk3s>U%T8^<>`UpW; zvUgXYQ7^iK^%iVLQ~*hVE}7LVG9;$xb9*YrMw1#};&!+dqs|;RCiPeuh?d}bnm-AL zKwPf&CEved-l9yX$YlYz7-fT?J^-gf$a4ct&47yjqHBoz++G+;XEAo-h~&U+=$ouV zo;ZPoJt1d7vDIPURw2X7z)rgRDG1=`<~D7w4*A~xEJXw=;Uijq@BkuXNfOms zOS&dR3)b&M4mu0WwoGzTDvEQaWtQ;Kyk8=z7yn&vJY=qm>NyM7ovmWM8NWXAyw9yj;CC2H{Pm$P2 ze<>mN7#^`0Ky>6I3Vq1Io6MGx^|3&V-zj8`cb%q@10|b5bPxvRLLVJNLENFhu{Gn& zk!>3tth3@kS2fZtN;{UBGK6_ye6HvTm=nhDmSfHlEkuNgL$vj)~a` zi{@;bc19AvK!#AQ^1 z`+Jk~p@P*_Il>ON=Zs^;2w_VIxuZ8nQH?PZd0986OB1zo5H+~aLFo%IWA9l4(1Cmw z|JDFRIKPPmS(K=B6-eG05uIj2JkB%rZdj|Q)13ogxsyQhj74Eq5X^@yW30F(O`2PP zPW#>lh%q>J0U?ZC)l-@@0I#qJR3P0$wgq>(g4W|#gabnH7uVuVLHd&5p;-SI4g+$g zCA=u;PhMrRIG-L0Cw2o3h(p}KFV|@i9ZRwsmwgP(5nB5G)knJb2}tgq5cdJq)+Lt9 z<}hOSAsIS){|GmfMYByt{)@gUF-FwJkt_8 z!`J;3Rt+o}=#J-EPZ-@BrgrmZ!v#;)rv8HfqenydHGRPy+)N@BCYmW32WhUTxk&1v zml@=<1hC5h2ALQWmW7VB)>Gp!3>be>5?Stkp;SfT)+v0JYM0Y>0_@+DID zEBi|KzO950MEU}=SgRFl63O!N$Zp<7=2*<+uwya;@_|i7B=;egz8)7upZA(K|U1=1)x35eF9-@G3=#JExUueJHo>O zdE^KZE(;aYF|g~N5SHJkdmWH=hf8OGfBPc+&Rm&&6G7U$RQ>)bc1VQX?yT@5+bluL zm|hYjO_*7CmA=rF0Hly>3tXzslDVR%jodlLBO;`5Aljpc1dw$m#NUR3#B#{?mHE-5 zWdb?_!~288hpRwOU@~HA0-gdX4Nx0Q`BnxHI_T-X{!+IW=s*+NMkIM}jMKL^D6WU| zIzUKxK;I;x8qOCGJeb9CR)ozl8y&=bH-VGNw4z>Blabqae~=}S$DAZCGgy9Ede5Bh z6qRh(u&JYkusSUYi`+gKEZNr$R1Zvnuawe&a{JD+@G#7qG@d_ahh^_(nv zqw$1e8Jv5K8iPzhY(ZJU`7y(+!;f~Evuw?a0 zOCr`$91*l*`1gXEX-bhrcf_(qO0fn>|A^Y;i_2VWswQIvD&N=H;Dtf^5QUo<)@l($ znZ7i!LY!vsTL%84o3)M>y=T-~onU!}g!myw9}WzNh3TXNUnv14z;Z%LA!5W=nGEQA zrxfWK;*Fx?6g$&bimoBtCbNLbM#%G6iCXR~)a@j)V#Rk@%xHQuEJ-H%HvF2So(y;H`NVPGGglAUy?Nis*7iV;G}KGxcSUWd+ffam0838|nu(5Ym4Q%#Mcx>HdMDU4uk zT1WkRGylL66JayJU;#GF#w|-x03a+0B47=ufh~|7a_63~H%a^*b|=Y61e{TP+K zWfDac@lQ3~_Jd|>fQ0o!`)gGO?%>?hxIsuljMDF>9G30Zk~_E8svb5VjQLX|_DJj1 z@XghgQBF&|9Gg#9ZhmbX2z=mx4=j*~Wj3d&uwu()h~dZ=%tH~Z1z91#Ah`y6Mxb0; ztwIX;BK;;rXB2#&7&zZaq*z8{4BYKG?4fUt)vG+VG&qK_U#b{?DLdc~PX%g8@jVtm zS)RWMcnHSFQa*4C>;z%PfdRygeMN-yVw?muUv2heu``KXA+~a_rSxH_94rvyVv1#p zOt8A44|_TMgiOLO!0Z;{v`2+*SU9MzvDHR!z6%=CjJ>qq5Vwd3Km{usP z9?Iog7O<7j?ldIwmyGFmHv>sJJ1k-&!=_1gXVLvTCR}j%1z?VvgDeVHYLT4kM?y8G z%9HxIQK9 z!Rmq%#L6(;8i_2T#M<7YBQTcf!$~#byU3SK{XzCJMfT0cPJ7Le0H_GE<)BpPC2LeL zKYBjUh~-$+xsNm5w_{Ne>2|+kb!VgWpXs5m_=+U&QMRP(Y7`haM~VE;&lm(&?QnG@ zg2+BgCek%a@_7#bl`XDMfZH&&9_f&inWU@j~K z&p6m47qgD#4nVyKbFfLK^u*&Yr<@Um1K661s4Rwz958B)8gB{`X93=94cHn%2q9ZY z&Lpw~WiqnDKr_sO*a$Wf-Qy_c=3!5~xuotV-U_G>0U(RiS#Z>jNTd`=gLj$jx-7quasxB>aT^bWibOLj<2Xp&h7&k!0joH~fr9h(!2Ca}dPEKmZck*5CX+5qGk`?97X zKEk${bij&2!jwQvR7k)~CWB2Irvt2!W$j_UKr|5O5lFJruTLs%F5-dVt#Ekax<8(L zk6#$~z>ul@*)|yLl*wnt#5ND;MJu|ev0`C~;AVaA!`Lnhq|Dnh6WN{-*7I(|BpTgg zy|q)$CLO4b=-`l-mJUlCBN7*vwGd`8UBgZkq$rP&-9Qu;kEqitEL!)!%(-DP2H`Q= zN0JM;BVI^U*z*!susCrX+EWoRg65-*yPy)t7hn*MTJUfkAli&|h|UISy^oNO%z4IZ zF+U_~9jr`MYK?)wt|_LCST#aM1}R*Y7C~Z1R2eK>se@u@^Jk#A`yZ zW)F75W?0P6gUTSae}tv5#xEr)ejf&7y-J8-;J}RT4(tRO%=uU;zGQqJOCsbwcCle` zE=)(lW?RPSHQUjFb>c*t;&%+K59hEB&!$+6r{fSc4l6xDXBLVW9-e|x064El z!oiz8rEG!hK&>MSsE|c^?s=rs2>~qmYDW*UI=pMj;EDC$n!>rJ+|ZB|^@K-A-l0oe z4|M{L;nka-8z~s~bBDd3J)x^Bn<3a>kA+A!+Od4$NqVOW3G7x^Tn>eOVnY^N7FxZBu=@BOC?XDV8|VewK&=T8IX!NpyfXdv7rgomxGPIQ#;_DlY!T zO$)_PAStA)Deqb!@N!d{2Rh@S}3-a@qb zV;26f1QOd(AuRKwRf&wH>{MfM$+aI{lEn5PKY{Tq)etwriJGzW>)i)g0-G%^JA#50 zjZmoVYOD2O!y2t1v#o3KsCsvljszW1XYF((1SQ>pew9iL{IP~3jU9-+ zN1aaPi@%0aBDbTlhw&4^CV~MR+RTq);XK*qB_? zQkgM?wFQtvZXlao*pt~63|__>FZ$5r!jOde^I#RmDf$0`!q^m(V}%`p4E|V7y->ZU zBU;Q%QNkSZMFgngSb=jeq|8mOu~fj@J>1xG@Uxul=V-1kseNWBO`0u&70?x?g-vh* zSRFP}tQ~|E9;_DCsFg_c(+qM%=TOw_h$SyKEW?jtYm$s(b@@-@b=+R`Fz zmh4T}?Bhr%V(tA;kw8(CM+UptqKC?ebk|@4y1_P!F#-|@KZ+If0>^-}ngoagu%xpr z=`jH4tso&9EOY@jHDODs$5jn5A|!SfAksmeHUq3c`A>(>+;=Aya{P}H?w`ILFbTD} z0sUJDHis2eAM%`qvLc&MSd4=vEQ0YCu&hK5_S==mM(zi@Meq*dYbZss)PPJ+5}3)j z9qB|X+1@C|bIxyuXAt=rm_>7cWa>p0t&lX!b(T&QGPCGzASf25@Funsf#rjN|KKhn z<$?(tr>k>)Af_UUWjy5c+^;H`I*PdowrI(wQyg^c;=>COyg>25MMU3&7y`(p7|*b= zL=J-@9*DRZy%sI5jv*B|ncBxf^|4sNa1o-c=Nh2mlZM~avmWIE5n3l^k-Gx+zSeoOu7Hn<)s3&(2O4VcUC zWk$kd#BPAaD@LmKREWtO zU4s3)09|n<4p;{B#4OcdpQp-qx#<1H`6jC|7cg{W)dn!C$5I;N?qL{bV)r&GB~zZudg+-V*Xz;@e8^E)aXQ>3~_YCr}}K0{V*e zS3gnnQod}6He(Yc4h<-6fn%{Q$sd9xmy|rVa4Nekn(%YR>)A#}5kIi@ARA6@4`{~( zfW`R1GT0h0`3^)mB@glC*IU)W6Si-|5r7h6`4nMsG$Kc~JW1TW71$oaA`=V&#`I4y zjeL>wN_sKMATk+1GWk zm))~tgHZoR_T5F~p|}MGu&Q>;Z0%8+_>YmxJl+c%RuI*Q8C`S*8zDtB{TQBO`qj=3 zuAZF7{%LGrLuG23&C+#jVH(-k-Ls)ZOwXmi>ISiuKo}7E4`fjLXhyJ@He#OvRNf0j zKfXUPJv}ImZR5j$iCK^?GMX*S+6~quNrf0MbtoMp&pFLDOfxpgn0u3Bf=?Q8o2U5m z=}#7nspPU%v#yI~Q7_fa$rmRTa61Pp_Kb^)DnEd{M6#dgq{Cvcmll)n?#-N)|6eNk zSp026Al4MHK*1I~yI|XF2jQ8n&#I z?71n+a&F(?kyid#FkYJWxOcX{Z4KK(j6{+yi95xuxKN`@`sRSUV{@^lVmm6jtdw8K zmQ`-}tttO(MQ7&U%RvFjl77UbY1*p_;e%rPjeBc1e0k`wY!OjN}e;k z^LY8&JDoxSJQqp%g02{OI)K`(+^)R0)~DUkhlSy#zY+886-M>;l|q9&|H&uiZ{H^q zD;6sux<_kskEIIP!%p5*{j%1lC;8_itv^+sl!wh6f2wlRnalS`d^wl-s!sNBBB{S92;Z))CDLN#3`vS?F}FFY@Qp_2?2wDD=^MH# zhG(sh5Hdd5Bc>I|nZ?xn+t%3$LZyjmgsWQytFr>zsNutj8yf%Z4!o#h)0^>vkJbP* z`V1CrYBx;D4Y)qkF(B~429@0J()yWQ8BT-9ZLoUm<>#uNdr$3Zc%ulccMN{hqVf;Y z=pO613(IPjsf6{y%_o=R;%1(B{3Kid=M?oQ1qDwNG7ppp4>Xn|9n8ipC>WcDNsvdY z=gRC44~M<0sM6`4Mbq{BE}O-jAZ_>CCv<*N9?(#!HS;SxgaNfXmDnnzMHrK|95$81 zZgfq=mKidd{SuxaGzi--y(tt-+q;aBC?m0!H@%DN(r;#QD=tkqRhi`xAogVyyd&FJ zwd5F{a$iI?4?US1C92u58ye<}a3b;gu3>*b#C@NlfCgDh%(5v<$)4@d0%_q%t@r!i zPCRLP^KHvO56AV>NKiFX&|$BZ-za5X4Vr~&|L`>+7nggsk{mwDXs9@avW=P>=eCZi z|K6aXymNSGq;LY-wXJgf(az-GgapKDY_5VnD+J*$+VeOsta2*e%gp4~O+oDayZ(y4 zn>@u4&Kbi@=+$K`d`OXiz1m#a?tDRzKNj51V|~P+&3|Td%Rql<$2DC=-}8~z17?)- zPfiAky?6EMR<>uB3e(W6VXJJt{ERbQ>)$*Yo+)ZaZK+U*E#728FY1ukTKK~M#P2Vo zDxO5wPYr(KJ%t!P0W6XHQ<_z)y&ntmecS4%4t}ud&ChNA$t$mf=(k-G8$0;P+N8qZ z#P`ke%-Jo)@&}@Yb?R-JCeHCytEy#YttI!15+3B`<-L`ctA8Ha5p{qK@{SUcl>bJ* zC9-$t_lX{9on|xT&mX=~R!l2;ZFp|7sBPH8o!@Cu+azRmj)>@t@^1KLZDwm==XlSw z=-xm&{K3jXvOm8(@P5g_`@IA2qi4RAsx6>6#QriDG}5#6WJ&Ed+j=0#u|T2n^88+t zggK(ouG6WS{ir6bb$0#kP9g0=@#n^(J-N!75>k6$j_mlVQ2}%A`#ce{Yb#qsK#61v zJgjQ$F591bELphVB5g_9qBfk8=Y~>IE4J2VhnyRqFvj$E&uKr8CVm%~S-Bo=s1>JP z&p=Td)cLb==j_KV_ZuE-bx%dp4_hWzW07;m1Y&Al_e!ueHttMH7rI{?lI_3-Bi^e| zV~1G-s$QF!m8YE2Ipv`^AC2v2))B?7Q=7=u@awd4c3g0dAXTcqc-rhkyJK^RDHfVca_?O)Ro?&2ni{Kdh?E ztXG@oT5L&FBk>+`@kr;0^>NylSD)QTDzF{UFbsU0&|xTkqobNhq@d%Swn6;*Mk zAmV$)xLeJL+hM7TQ2ViD;_%F3#Py6xA`dsrW9Jdq6*{AiOgBC=Vn%xh_eG% zaP3j+$%!FHnqG9As$1HkRuF5=9mBgEMV;TQ)p%`LynU;X{n+5ag|{8u^R)c7a!DeI zPsApHGtjahK;k;bx?;#9^KzKDEi8|+z`-he7v7(_&Ty=mGK>}c50 zpG7ZEcA^~>%xmfas*q|Q?NWYaMByhhVcc#V;}a$ zRApYWiOg1y);pt0mCG;k^uqLuKegI#Sk={$nH?z#8J^wPsRXGx{)?CghX+T+g^NFns(r@ zP>GE&-MpodGc(wnr}{N=XybOM5OZw0A9>j-YrbtkLqkJZ)Q-B0yr`0v4{9DZ_@lKJ zTt5^jq}6Q_GE>!W^hxO+3D=DAg}Zx_fQb55)de+qaX;4!e>5Nxk+@4G=LKOKPcq*M z8;InQ8g~4)s2masgXKG>{tn+TCF8hSEtf6ZCX&K{99{b=kAiqnHRmF?iZEOESW93q^RFsq&sJERoh(a{V%PbCbSCc#@rUw9GEgY zptC%%^S;lS))5h)3)HMBMNc`LZ-+zc6APIom$`b z{E0ecWsK04Uy~0bGW?gjMM5;cV@2u>G zZRc)M)25NoYG0|U+}xht;M1b!gY$!@B8|)-6;JL7YZv@2pnJ^P*;LKN-@sx_N3$Q# zEi;=xZM}S1tLKVtUgjr0IQR(})}V|`3~qj-jJa%qX+Z|la zx0lVllFJfeBC}7a{pEqZNM31Sr<29zVM@D%iV^GkE^nx?cvg45VN`_LMYxN`y;3vh zTW=5AxbCt1yG!cEU@xh7KD?FFVE;!CVgxYypjozaKb_ls3uRPJBdGNuex!-@7H1;0wwP&`8jUGRyAJBeD7H`yJtOd2&nO zg|}Ua-2+ZYmGe+;qk=hn+vDY7kr$S?D%ECXv>yxdK!>Zi@uD*0qYbD6vSuJgM77iSbEn~< zX1{?R^X0`h#uPP`BogX z#y>+H0dtSnpAvmT-idKWYCZqsoU__`ipl+3orjWzh|c3B^>1D+6RsmB)}P7#UjWg2 z?%UBrLdb%hwtCSJ`vQvjXz{kz4nfLoHzn7MLzoOLu(IMKYu5iFOvfjLIAo;m1_sPArwaxOz2r-VYLNU#4+A7_+!W8JmO_H zqF=|vC>>8_iWawGMz^zac<{oaR#!1mdw;qbj*iGUB=(q(J>qae6*nFMihKMRAtNpM zK}Fi}?%t0R-?@||t+`mz-kzP=xwHk_1iJGMcf>yuCn?A?nC@+9mTNnow3Vw$o*UcD zCrC03UQVW#K+oG}yixt6y!3IR%*SEL18|g=U3<>oGke%d+v*P&hoxuMR;t~ZOUXYm z!ZjG+95E&hnBS>fr$&RDBIIMIglllc)oIngzxV$x=yCY2lj`nzf9!5Sr_!jU?^{7= zl6@pRE+sGi5u3y<3ov?MdNDqFC^`4;p*=Ai{yQ5BkOtFp!&bDePrh2b!Mb(YYQ#ge zB*!O6Qw;QhXni+(T$z?ym-j)IhPZsfbZohYC9wd}^xVY~chZ*q=COZBbw)2Ox4IXC zuyRh;ClMRY7nvAEFKPU9b8%uz$cWKNKT320hONK9G^G3!n?VOY0B8p|5#hT$vzBeO z!jxsF%J*Ive(LX+p=i?Tb^2BAW$%Zsv`y(;^-E;YqhIsluXIe@%glGcOfq*#ZFv4u zd1jtj#GAMS1s-93_Nym}c!?Tahn!W)D_fhcO<((VQ?6EzuAh-2-9v+Jciq1>yrlYP zn+9RwZ0opZ_HB z(bstcu60b@?+9BR_19P5yg3p+B$!m48rSA`I<1VgUG}ci^#~FQk{!JiedA^ACD&D^ zQwQ8Xo^`q{I(sHSNwQ-takYDU()bj=qN1fK^&8fXU5f=-vkDvU266XaF3y=-W>rIS z{KrL}u*~}FXZ>9-(U$yYLvm&`r@Rp|lXujA<`cYVn9(Ta$@9}Y@J9!(tCkCy4H4l> zgII?L%$)W+vy9b~G)~^?ICnkZVoYsB^sttDk3MXh5Tm(5q%r98kf~{>j7lQ^s+0w? zR!GDI#eiW%KR&Nl%bu2JYg>w+pO~C6>z@2+7n(i_)%|@`QxPe@;D`TK!!LG*Hk%9F zUlTq&y?s#4F8C5 zkKe5~OkKI-)3jU6p`{-STu3UL9Ij4FS`~e%Bk&;mam(l8G!CV0TYdKqpI<+7!Bm;x z{Pq!X%je8RO^Ux;TUi%BJx!SMDDzTij8bgKvM6^f@Q0GkS3`bOZZy8xsakls?|s&T z>0`4e5XJbdB@2tO@x_}?-gV*EmcNNRTXO>A z^rblOy%YnBw!BqUPOeW+E;!Ij@y)J%H#>|)h44HxzHHB;TbC|9&WIeRbhWBI;pF$O ztLyhys4{=0PSuXveA1RDUwFruePn9r0>vIF251&#GBkHV-`>4KuY39@(@jdU7r+0ydobg}!Dnvwq zuFv+Wb>BTwhz#(E_Zm2>HR8=~rKm@31xQPgT~IOYW`~*&^2lN#^F?vH{N+qhlQk8N zd$cdn6?N-W*^{6?)dTOzyOnDiaa_OOORjh7!pb1iVLtWaDmxh(T#pDoa5GR}G@&ZZQL#^?WGv5 zRwK!KnG!n_WoP-eQ+fS5X-MAm_qL-@*5iKv2beX^Iub9ewpHHixJD$Y3BYVM|oWbwQ z>BeQJ7AcpBy6@S@{r1t8N`}=>Z$9~WZ8YW*9xf+Ye91bEs#DuM%nYwpW@cZSsycp$ z^@)1EGtwZlFiO=!F8JpE^wPhsR8_f$^_H7BVs9@PE)ZYqGOb#?dXeb-HvaI@l-71= zSCweiZwue3_uwxFK|Ydo*0UM)<@c$i<|SpCza9N5vIzb!i)$SDv9H@FlJU)ZcoH+L z9wPtnfOlw-Gwj2aqHtj>`d;LXb~IxxG6kI%jL`y83Txa z$>o&R3OhDDa6KTDQ<9Lv{O6ody5df=kT)~(Lv$oFfa|s!`>Wkhff*V9P*{4lW^SkB zvgnmVQAJ}f#q^%UBY>G!3uoZexSX<@s!gitM(HOF9r{)T^_MJitHvoq^ zUatjuGeZzF8}9vx*69sxDWWq}l#63sFo6sr_ivJ%Zx?^;hCA7l`pU-TP3wKn2N{8f zZ>guIbupXHg7HMpfdo~q&3;(|*J-n4qv?Z-NTH4T1+T0SU<`LBToMPXvi8^2&HFII zzws+1-D+WcLSzVYytQ*uG!?^r>X(Mpb~!GK5moXWmva=}zt{YhlIO+xWS~qrkOc*j zIm_sZr0e6!P~)b%t@W9rDYc4izeUZr`KMKSiTzo#nhsLmzntcf9Pi^nQWbkWDZ%;+%DHttUXPfMQ8Yhb`IHe=DzI)%t^LQUG^Gg3ey8JD+FSC$=v(e z_n-8|1v2}Kxu2i-Y{hr%oKV7{5Twv3(ZIPT7_~MEb_U_o17|&O)P>X~J@L`QnLg=7 z3{domA?Xci0NDq}zN8=Nk1~J^6pw=-2a_SF*N6;-97={kQhXau;0IAgkdcu1Lvnok zL_CfnpW>SdF(sqP7%~=RG#Muz2b1xrc><&vnTWITc*_91tuNluAEPz|$1(WD3{OB~ zai+k;RbiWC_YboG&3uaa=-{5f8GQ zc#;+PEG1r$p15}rep`WF+K`pFgFWLxR^e!Zwtb4vQhfWAtj715Xq60d67j~z4*l>( zA7&CC^nD8CQjE${+{@$=Jhc?{E`;>KyGEh5;gFw*-+ag#Tw9LceKAUo_}Jmh5w&^a zO`qb~RcOU()Vc=uPr_TjhBPPN;Ny)mJIJ+=R>ThPEbwhD zp0XqUB!C2>_>&+U*WnmU=8+J{5L^vL3BvcUNGQI~gLJ_i>oE2%kYQv!*#NnbgySrX zY{IwoBm&3HB$7lCfCx$y`4-3T#N!rx|DOCnwxWDbqVd^Awv!*p4zd%UpK!JrPydXk zV@NEXQIKCydl=b;PaMwTaNG^KoBT@RNdnnJ5+UPJOEl`+PWF<0WIs7TlJH3;DUb)q zLDUtAdSh|?jr>jyk;C{L!P#MwN{*60(CP@X1+Dy({6&tDfa-Liwmq|9sf&3fCE95H4 zMY%$*L0%_$B%c(J8z}jt5TBbkyNP2FDJCVP6s4Hl!sj-@J}(@L@yt~`dxzX5_aN_) za&n(MAP*rcaD0So<&fp%F?m8NNfpWy@)XBsq?$Y@FGvl_b5cuQl2_z4%1cs5>d71O z7Nwpv;Mj;`BaZLzX(G+|G~%q8yeA(}nsM!!SZ@nyC2gb~rImD$PSS;e8MlJ*Xblr@g2Fias@@y=foX7o|7t2iczvKOSm(m&{*^e=jh9>>)aG>x95r)WCl zX?h0o3_VLTXeK=enT6wddVyYqyo6^j;CPr`rr9(HpTBW-1@&Ep%*F8z(Z zR^ampXOHOxzQ*l+!$^wHx6YyAce6*rHY&n-Zi$9>H$Gp%Q-J@CAW%Ojk1!H;p2@nZybHNH7LH2-s1T;+*BFVU*vwBU~zXl=}nn5AILyFYXw39OWnj7 zPq<31ihIgE!!Om`bIAL+;{{j4)k41HUU9FvI<6k&4fmF7;2QB{BaZJNn@~eD_n!NJ z(#*BsiB>$*%C&LrTnE>Q+B?%J;;bLvpC5qIj~~bn;s^6X zPzLcv{7`-vKOAK!Z_G>h5&TGeKEc^2{!`ur(u6nVNAqL&u_&YYar}6G0&fOs#!uwU z`ANJ5qy=xuTk+Ps4WuoOcDy}58O4sD!aML&`DrMQqIBS;{B-^^-U;$^9KYaa@G~K2 z^0WBa{FnS3l-ay9@50aJT~SW5``4zkuzY=8yzlvYY%Xn`{Z{CMr!~62zpseB7@_xKOAAsV=2l7GuIzAXB zh!5dI`7nMxN+`bp$Bj5{#bKAunD_wb4QUdVko?&0_2 zcz{phlkrL65Awh9zw?Lq!~79G6~7$i|KR`R|KgAF$N3X{8steFPx0yeX_QlV@(h0# z&z;3F1IJ`s%jD1DnR7U1@#j(B1;~pyUg9tF+4$t(>?CUXo4>+eMVqdmwF$$ zK8^+a4ZaXE6~~)+_c_ROsHKQ6=1WkD_)`8Bf158uxdVBZzsHxO+~x1{5BP_C1q%L4 zN&Yeags((-%vbSGO+2&gU3*U9Og!yb)T?zp*D~P70r8w&UygHjkH*DZ%MrLo*VNOV zU2p%?Q@sB1*`gZbJR;GjPt{#qKZok9$70p|<<_$NO8*R#s2?9}%b6Icv|0O&;QV*>(1=d5y=; z`A--=Wq#BDYVSLsqpG^LBPbw|BE2^$3P^ZUFvDcdMXD4r1W-U!0!U~91f&Q;LKO%t z5Q-3b(@05^%p{o$0g);Jq`XoDL=ZwJ3R2|X&&}QA&Y1knzt;Et-}kNcy=%=n&)u`n zKF{7~?|b%{tQWsYk?TsHbEC5jogdyC6%QTgFIAsF?Sngd z2dz51DkbEL&r?c_^bQJKekrBs$yfe`wHn0y&3V+#ZvrJBTG#O9>uTfT*%$07bNih1 zd5<_Z5JThx$0T`Pc3{ymMI50M%LfHD-Vi_RxpwwtT}uW1GU3YRNyzI!jeME@`Ooc%JmnQ?$l)}3zx5tDNi!!{SXzcK1d?;!8sHG#aR zh>x5r<1=nywlO!Y$l7?;M-E6Gwttu8Y+rR<pb1Y)+c`dnRp`J-$MSw@q>yTda*|J9ScH z0{cB3;)pC(HmLp16)rjKR|~D;2rp1J$frn5N=6&I{e7>OgNjyKA20dKbs1w%Pnte1 z|LeyJ z#nf*W7Le4tS=e3ZN%pWn7{8=vjg71<)W5kg6 z7da;7l0VC(@7N2kcjN5iir%vJ4G(TQY+tx##jY&t$3L&MjLQtSyKqRHg>^3U?r-mK z?x=Oc{y9yTF0JU>_xy3|=ETxXSq{wdSE|f!x+Sc?h4mRjr{|lqEOnP1u)Z*MY}0kO zTUxe{_|E#%kjgIkzX`Lv5b2C7)5y2Zl?>}?k~1z$a=)yWcFgre2li9cEIY5u7;>x? zlX1lG3-;^2^P?5~88c7l0P|en3nA<5HOZIo$QdrVTnlpcS7K=ga`?jb86(beEy;&5 zc=qhN&cYmIoEgIob3kk*XSsL07WlIqb0uaS$=T2magaG6dCEBF#m$J1@P#?M$4&an zI-D~cLtYngHZbkc$A_on8E3f{?pWrS#IT8+L>|gqm6*A~roBT7 za+WpDtSQKW5l_f#VXvun64V82L37>a6wZF!Pl4l+b}b%fSae z@?6Hy!M^jlj3LK9=EYxfW*ztfZZ-Q|an)MF-K&OQ1_#0gOuwK5&b$^d@^%aPj(lLb zddo)Swtki##w&zNhCeUy9{8}X<7WDe3V#@I)>7m_pYHR2%ovmA3JW*y0yYmGU` zI7^-~&UtY&;v;-v&hBwTt?^o{gP5~@S6-QWXKv_=bdV3cF5@%iT1Bg;8GgaevN)%~ zpE19qpaaZvu@>?(hI|=n))ef+ChI`XegT6suf-TPSqC=dT=3_086*Cz1AXKebC7Xn z41Knb*h#~l-%ndpcOP=UCZ4EbB z2T{)nJbK#KR-4wR>6Sk;4b1X4w_UdekX-ht(19HN>Nx64SqGSVRP?SDN5ol2P#>E$ zYdPKJHyapo;1#1s=I(Dv-etvEcAGjZSV6w?P%lwgP0Z(v)oHmWzcS7;wpfejN`GZ+Wz3<^cLBMsh)?nN$4+}OTcOZx7GE4kyPV5wbtO65f73S0(7{^G z2s7td1N$4kfae^-kmK$!!dw@3z&8iP8|y+olH~9a^57mha@d4@TjUG}?q8pGT9<1r z$fXYZ3vO(ac_I$(9H0|MzDPT)k9App0O@ed;S2Nm?%j1pY_Tq4E`4VmaOSz#FT@l2 zGFI4M$${;#oPC#kWIo8a@m$28^$~Nnk2o+l@HhN5_k#7|FUJt^k@lq>j+MJj_L1{2 z*It-w`5m5O#33N*?;OBda$UBMy>Q3KVa`K|Wj=FVV6Mb6Pb6lZ*e~1%@0ZJn6y)qXr?bYStj`bi*jl@Ev!YLlkGM%h-@pkNv1>yitSDA8ytH?u-$Swz=dV zm~nv4hbD%d))WWWf!tk(*KK9yEx1LRH3&S}%m>^T2JpIcr)X^3X4D|$14)j(#+|WQ zqZ~P}i+z_Eca}+JJwlFkS%-aRn=%f_G06dVIQhtP;UntV}7B_1UcZVM>Ul}zBxwlz^=$R+cTJRnH`3bWI85?ryv8#+qG-?g{Q%r8? zy;pVqTi)J`19aXtG3?kVCt(M2cO70g$jn=CTVU28a17U@=@<5teZjut9`U)!2Y1Zi zn4EJN@(Cn|KIFZo<;a;2@&Wg|v1UC&4i1n@9bk?L+eG|X?#=-^c+W^XtdBUbKHgE- zFZK~~_MN%yGi#IAVmUbTTipk1!0&usm+fOO+_B7Ci8;@q4>{_^9rGTs zO?RH?U2%7tN4@Jw)yIJzIGQlzzyS|3UGlrs_evdL^!cmIxxkl5hx=jl$&Aq(14E}J z*+id=`$!D+&%n3~44Jvyp7rTS1G60WDfHNo<1V(%)CV3%`mhQ9_sq4xIp%(*izjoI z+<>Q(4s+;6y*gv8D>*P`9q`PYvE0xHH}v_K3qBbnXP!2av+o=SUY9u|=F)e_Ip%B! z{z5L}#xdb_IS#m+AkLCA+W{Ze2Tx$;&pNyo#}GQ$BX{4KKgXQoFZEf6edN7nInU*_ z*hlOO=N0D?`wktBPkwpGzQAAiIAHI1fAh*E@aH^~YcV(EEo06fnGc);JeTtj{Nal` zXZRxX6LoZ`MpOH|4wJ2gYBse1_rBfAI-q7#Lk?WVltX7U$usC#Vt0L>D|OgD=CV!3 z(3dtPAJzc}){#6}&Ni7pb7pRAM{q5I*BT0vGTavRr=1O_d&LbU@-s)lO+T~lBb%(Vk>q~&)~0N%HQ3s#z}CQ?Wx6lfUb!gwIbS;wE` zz~g*Ft-huXa6O@qxq0dLHtj<{Twu(VHhC`dVSUzNJKza!9B0H<#({AZ$pf1#&NC(~ zU*i^^l$9GC53(m({r37=h7GLj!bMj#aYWY}Ypu3^hCS=~r7q05fjz=r^FA`hUb7DN zsOW38TsbNCf-&?Zf0@IQGuuQ?vK(_IW*x~5I?|@h4bCg*NIv=Hr1VAl%lhv5%sMh} z!HxZOj}ObSkIYTlWQ=-0=A-8sf9P-=U|(YJLA}d51qOfAwR*Ed-)=MHeOiq)@)mO7aU_>HEakAn`dEwkXIv=k;tVsL z^XEL5JmEXXQ^rC1RqoarthIT2N>YI$z5TtsB64A=bLIH}ty-n({$4Kx zXuT&7)^Bu(^LydeE=6)FHCE^usS#iwjm!t@`7&i5b|OC+i{7V$)3c0hgZ;RdKc9? z)7a0%ooGyN7Mxs{XNw z*{1q0O}=yP&rDAbFE&Vj`pWmtYu78Jt@v?}-ko^*5Kr=5o4fcu&5v;T)iskCkNUhp z68wTrR~kdfH^d}_@JA+we9?_PN%crhanPbdUr1*BRu&)=2?9C4J?zFc=% z{rO8{y?y3lIo25QlheDt@9 z9JLjk6sUzy^3nD$D6eXtj8|ofg=>4s=5(@I_)=r-FN)Xc5hVhy(*9p1A4g_YNL%~k zAk9g>k0IYj6&s|rqqyx@a@ZfSzjuGP%KUA4P>42I>lE5VJGQidZTKiZ?MY!@ZCz|T z_2^V%?bn;Tl>OLx-~Oa8G3vom>qb%q+Q;gy^&@lnp%K2@{>t$frf@7DS;pJrO2 zS|#=L8{3@0uWwM*Y7f`bPQI5gjpBLgM7*j~EL_hH3by^;`aAXf`9b>W%ougo5up}0 z8mu>%yVsdIbCCYU<%qFt!4kLW4 z`yef}?i=aTNay&Pf!b=a(~#`!-lDYT(~Ih<8_qf#%?s4}t6Hs7hsKM&G6k^B(J ztIiA5_r1Nz>3e3BbKR~1`s@gYn!V$;t!3n3J>aF$+AD8NQ{VM_F6r)+*YwU*7k`v( zs>PE2qtm0DTXzl6z99X@q~9u%a^tE+n^&s1w$^^wnMHUS;dA!G>H@{&cZ$iPMuWBI zDgLPx|8f>DZ6NK7HC|7BE2M-LMSEeVy|_N*u!^SmU!wRg^KPxJK2cq(_MnZnLiO-d zv`0m0j}nTHQu}CM%F(_g-`J+!n_5-db+E1e?Y`xS(*E^7-d5{(e`dUYE)(8h;)qXo z*k0+FqEc6eYjQ1_8uv2`*Xhp4D&_Uxv=&-r(l0^!zuDU8Z;;Lz(mC1d?OeE3fnhc)t@WDTT3>0db)iKI zJ$TlW^x#T{tZH@}qD#(0>wj(gi+pcYaEMli^!JngvL@kL4bq=Z`n9?Z(aNO7J9l3BF^ z9;j7)oZ{#;HqH4`p&_~OFU^ZMt$sV5onr@TU5VRv;Eb~O}>E_Il`q`~9^zXrYd3l2M)9v*K zrz#ow<_W&|(YVy9w5PCtCv9lzJQL?9kLeSd8f)rEEZ=)Qi*(iN|541a=?R|v@O$U( zGQG91m!>)!I%3t-M_sf=Ev`Fn*kheD3AZJ@^Wpa@nRJGe&U5sB??dl;aHihH4?PjE zlwU1namfqPIYGUNp(Al$l0CV(%ZTms)HD5JocZ*x^9eci16ocmK>tZDvO~R#;g`gB zXx{JUT#}=|VI3E~N8e|gI`|%X;4JZXmtWWGoUl`L@ZO_N6Z%nc;+WZ&EXCKO^GQF^>@r%m6$jqCpGAMf-|Vr>Y2Gs zIqa%6iSH5zuIr!oS8>%^mcVBPzAZ5BLWm>yNE}QYdz$hKRBMGy9}}t80!%(qhu&$f zT9bGc)mnS1H7C`YCwM#6+7_y{Z^o!}Pw?c7`ROgF)}pB{_H~L%pF(wUnChYp)!KZj zo$6F;QodG;OfFSDr`GNaIT-M=iLZV?-*)~;j()(d`L?UU`_h+?%}+z3Yz@ff5wa=q zodZ=|wRTb98v>sfcr@kw$Ml&=xgBw5sDFX(VFspu^w{6;msq3LhEPq6C7l_hBk?t= zn-2!Z8+9S^Yos4cAJnhJdlN_bpQSmdqX4p}OdW}@Qms|--eTC4Sn{k(`~N=W!MW4T z14`1}66e?Tt04hWeyx<<7xEh8~faJH@Aw$tj5l`^9W=&0}^UD*wn`&x1)zm!7|5kK<4KizLCe_pms;O#JQ&L_&qf)Y+&aY4C z{K}wzozY?9)V=dg-BeGn{_wFMYE5GEOf+guV%Wb) zb6}?h*=tR9ao$OcGp@eR0M~iPSn?dQcC@qSdLMoAdLOOYr7g~m^m$aLmljB}H2Q88 z$s3UD(@R^_9g@!?*;tbGrH_qt($|hw%LxDcLzcQqpPJ2@Yimf>pJXHGbDw%w>SOf~ z>RrdvSl$uq{D3gl=|!KLb$aQtzimdc(44jOF{J+@^}(Y_pSURS{G4nKq|Z*`F_gw% zY0YClWI5~5x{||3^c`_k6KQ;%Y+&to$j)@K-Hq1xmDZh4J@s|shaOwW;c4Ws^C`itIvXPMsmc#y`-P0H%ni90a;}V_Tub^c_ek!e+%Fkh znPZZJ%t@K6GA45Gw{NA{)O|gNZ2;NL(%tqjoy#m^+!$l z1-k!9`H8yTiMQwsdq6$c#sLiyUnkujbUsKNJ0LEhE1fYd>AXEj`ZrB|DPK7t&bJHc zw5Iu$W>|c27rRd%DX$>p@Hc>T@%y>NXHRD&;7(eI){^+&sh#}jcS)Uo+jM$|HLl0! zrj%DqX}S^eiYX4?H#aWBe@jxITEIWB!^tgiz;9J+5ICjEw}yO5l_u1;;(rnP`1SPy zccxA9w~_64X$?;>W)>s;Uc}WC++?(}wWKq2HJzoN;OMc+HjDbwG&)N?!F0CiJL!xo zKt1XF$`kYlbe=xkIX_*>>0H!1(S0y|&-`>cJN1jNJWP9Wr7f9pz2Zj$VrXs(otq7* zCx!kTI!`Z9uS)%>?o0NgsXvw2Z7&kdJyNtUE-d#2u|muTZmdWBY!0@MZR5hX7d3X_ zUKcy0(7jHld!53E&NKZ-I>XAnvBv0|W~Q`BY?InB9y(3vd-ERX!gLnuqgFRd%Fa0# zU6{^Py)B)OHFEk?7lxe#(v4}`%@^2*zOP1hC5Fwkx=)kt5)X-?!#uB!*n>ROTEG3g z|ApGot{Qyxhna@_d?~x1l%J!TdP22=zY)l~lekdWwz`NLjR{h}kXZ{Y>2FnEQw`!S ziTkI-*12B(Tx*`-E48B&LMgBD_p4ku^@uOYb#Kah@{#_7FcCVvXOgZ6d8yE~hJ1eV z;w0YR*M4f=gz@-%GviA+q0&?C+p{R${pq$5M|ZAO{}Mokrrk_GRG4joW!I zE`8L&gw(zZMzvZE%ZIrwNZnNVduf%-u|Bv4~b!id2S#5d@{~H+^amn z-Lt|HabD3`s6`EkODt}_+a=~$Q4RX`F!kx2Gv5DPo3idCo;e`S4}X)!`_U6TrecX? z)ZmL$gP!24RD%P^HvK)&`OApbMhzAWYn&wI^j{J+DFpsdoI#+DxR{oM_f2 z%juq}e@V60nrahgqJOQ2X-{6Z8t0=g;jb1QGitM9$i8$tosU&We-`O~LbZu=_6@Rs zglbb_xfkcCHV4ukou=B9IIn$?=i~D05h;iva;(myW-fel(HAN6Dd+1^eH5n8Ji=?J zCPuV9Wz^=3l<$*T)Aj-e$57`6asd#nSj@PXDaervAAh;XmoFHy3wM zx+`9xJL6OO$R7JL-EZHad)yavKdeXk*>t~)CVkVsPWFv;$-a~9Yk6=sxS4(_@=I$@ zb|T3}J?hmZAIYI2@%e?g{6%+J@VrAjafgt7eqEA#k&SsI2hYyLa|(UreF1lbIJ!5a z(>)=CFzz$ub{a)$z@Dr9ONBDa+Z7~Psv}d)sfcvj5zEk zo-#htckss@>@;zb@t6A2M;Ti=*USfFzvRA{Ip)eG&Ka4L`Q@SXmughYo>$ZO_aG&f z{>m8Uw-+-0avx<(WNc*&@t){r2~FU4h9|g7%51tf;(rnPv$2=gu16oz8Itqc<+E{w zmb!noD<;pzhJDw)nCw3jGZ*$DXUy>@A8el6hR**L4;H_>ejxBrfx8JT|Ay!Zre4kY zF`Wxw@_f$k-Uco#F#XP~@$bx1|93HWU&I;wrfAHS@;d#ly5w}X*BjC~jhQ=-0ft|7dKF!c!9 z8QNFa_XKaC`%EqBox0NBygb3_bf1|*_nHj)eclrsO?}cH^Y{5^`h6jR`W)(UwC>a= zZKeJPzt2l~_|I=9RiV2K{=VFwdZTKjgWu#gQ_u8=`I~&mmgoT1DM>w38?uSNqe(3P z{vvZ*=Cjo4e(>+Vk#!R|KRJ4$PV}Mv#n?;gZP2r5kKQ?(IAKsbyx+7A)Z=s^9mplV zLw(Rtx})Itc8T95eSDxVafLT(`O@FJjo;^ckiAgS!CZ-t)A}DYvn7F##FFPU>NV)M zdHsFrC2CM#GM+wn>HNpJ=0*L^Qj%LpHj#RP8zetW`cp{Og+A|)P5|{R_znCT^+cc0 z*oQv1sL!}Zp9<7>^rJjXN)6GMQ66rgaRoikB)phxQZMAZM89c&OY#wvyR%8Yfn@b) zt=~v4b6Coy{&8A2f_S`3>*Dv``@|0;^*icC>gmc72gwHQ%o=`ZmJSM_Jc0Zjzgfo8%yQ%2-KX@Xqie4lmKVH)wt0ox@GU zLB3C93}tS}m`gj7vy82bgWL#&CLu9DL++qZYGO@H++7#7eW( zgXRTQ?UX1ruTDYrC+R_-*FA2JG1eV&ad|Et%%A;XKQMxK4WGGc$Jl$efI-^?zpOW7cg{0L_{ZO~{8{sP9iA8OMe*+8qiS!Nqn3PFL1jIOQYlMcQH>Jj zs4;%6RdnJU75Ki7dh|3(Jt$&TqqmYgyOm=9GRW`78?$YR2WP9yj~?63e>GQSmVRJc zMDpNif7qJQxT^hq*K^!bir)wKZS~tzp00Xg!4?l`hJGNJI#f9Us^sgvY;gqIY9+|6( zq!v;ybYG!XP2XqZam0r!)UerARlu3BX*T}eUH|EGo7Avc{;K!~ zE7XpU{Z*fWn^fa=f7>bf$riQkv7hUEw%_siT=m;rf5mp$PG56=yLn4h=IU(Q$OSZ3 z|J~MO?AI#dK(=dSJFL$<*)H>BKK%WT!CO_g+T`EYcT`}F1?rUV1NG{$z5jS--mE{R z+X2;V?><$f-w{>e_yX0T{aMv`*uH2p- z=iA*dzUQ&;@~z6}SU;`fq&O9_`BTmPdC9WXD)h&38jtIe78`o}%p=R^eYwD}$79Dy zS!#pYqm~e#pO)@$jVz!0bX z>+pD^=3Q0fr*s8>f7`v;HNqa`SQjJWhVNlVK106c`xF;1tasj;>f(zy_o|kluwJRf z$qIhqd#s0fSO!CG1u+fm`jD58l?|-cz z&lv|A-yfS5YK~ovdA}xh(qQk{tghx5sx3Udgys!2#~z0KK&8Igv+~CGhw|Eo8xE;@ zJIiY8dSog0XObl;`N&mli~8}oR4>(GmaJsvq9Id6GnIp@p&=8< z-%pjy_funYtZlxRDw$(_^SxBl9Lt*TrqO z^f5wTj{H5Z177$Zym$m3$YCFH@Zj%penYS2Z_O^;)gzo`#;!6|K#3RVLj-9AHH{gKe@lhm?z6wpU1r4YybcIu4m;H z_f_0)@yLA@f6vd{U-8KO6+iRHa?U3ndHwmRJ8(eb}?|iu)?=zj(}f4|(2a<=204KJmzWc;x(eR-U=%*Z<~O-uKCzd*gqf zzKr`FoTJ=Na6iT)`V;rQ4d?uSW}oKXm!Uu4zKlnl_uS9OQOeQB$o>qx-TNB!H{6$T z|AP^BI6fE=53GYe3H`?ZOWy|ly!tbvuMvG(UVRz&Upz8@9wFyG3FCi6Uj{#ApT_nL zzSM`wbO??TYWi1|6|l{D^Ccu(Pdi1#dy*ay7-+|L2L z2k;)mi0|_|7x=vjdw5^L9_Ha0_j4Zc-og7CBi?Uv^yEGdefj>!GuGn~Jovroel9={ zJTRZ%|9lR?KRzEZvcLJA1M)r2{_rTz6~qDd@;e_Om-l)0L)vHmJiWim^8tR~{S6-Z Y-QVSX-u=D~KJuJkJFts&qS;=J-q2zVFKq)xgmnIBJZe<7gU$Mt5Id6|#Udf}i5Q4s&#{|8NjNaztaO zPp}`qWLvv2_O^cu$;M&K{{UrU?O<>BAt;;wH&C{t?TL8*hSlGL8s*3%@NZPHu?MXG z0E#C%zfte#9q1E4yEbrUP*A977QcrW7#OrfqUvI8w)z{;RN zNnq&gu$2U3^e7u!npE{RaF*)?w+SrsvlL|~qW|NocF)8PM&nl^t!O=9v7H;Si$e}IplnpYs| z8g^Rj9~!pEKQzQURI)B~b+E*8WuPC;@NYXr+#cW`AW`$rKpvD8^;EN5h)=-E74H;@ zN@u76{tpITsAF=9QFsf&iaTNwB}qivI!aL;MMr z&x(~xeWpV)0BxYV$Ar(nm`Kf7V6YDX!18^Ag94y0RWBh+eU|tK`q79LG{j?RkctTY zA+v*5OFTZAiB?}sE&(>ALRT&do-PUXS+T-@@ywvreoF%(Zz@oa zB*cKc){v}o4GIcgLa#iqcS9!mELLgqc}Alw(e>XRDmGS6`mU$7r5(?=*4CrP*jwB2 z3MN>CkybAon=y8yMmyMyv9}vFW|SQ*Lk%!w>Hp-3wM6XDptX`q5u`8iSc|wLxcSntq$e;g3L4AXHK8shJGaD9`3WI&YtQ%1Fxh_W>1{!>h3=C zQ*UcD@Jf9k=;ROGMQ{m0HInajoEG1b8k|8B0}{41Fl2>KsLImKBiZEzn1Ar=3=RtY zFQ0ib^L;`V`>Y_2`GETTx5Z2SS1bvZs8kYEidqq9gy`Q1_J4_vjpZoE(WC9LL3Xyb z_G6&QpnTsi0bKAQde;2cQCbDxBR~>Dc3Vw4kx1ke$k-=SXRxgvGbS4w^)Z4gVLWxp zr!yJTMOBv>>Z6eM8@>rehm})2Lm2D$5&Z-=OC#DD6S1kEPMEz;P*W=Zb9`Au@f+K= zBf6h{IyKjrslWwZ%;H$oW@%reA)-+l@};MG^A0>&uUhKKbzEon23(xaTe>&;Rr` zF`^;zJM+dU<#UtURuk^KC?mO~hz>U+p3alcmFxOT>kA^h6(1c4ua8r%MX6|Ud42Nj zwCFXzdt(V~NUxcJ^S^eUxQH($3bSA_JRYnM{nfQ1)>5|bnr-`ZXS;m-n)cZS2tEyNnic$a<>O_ zjFQ$TbHAKovdDGqL1%ASQMYb$1<{A};r?Nisb8xJWBn31;PYZTJ{CS|ahXn7h%U4f z_`uP$wS$JRTk+hXqvv%xFxLBGWVs+|vf%ji_JF#euF{f1cK?ZaRR>X??(6xnlHa|B ztb9T$dlJufOf^rs)-P$gQu2ZeFk-8TJ!HCm?9x(9h zaP}>(ao7t7@#;E*DZyM&jC5B+$(27kh~r*idA;+Q%(~P(;|SB)V$*);p3w9VmmQD2 z{PC=GcRQ`zjTId*DO}PXRm4QgdkI8tg2U65g}=4w3>u>&n$ceP8<#dlhb3KoR%UM} zb2Jv^eJRGSU+m4o2Fv^(8%&wW0%N4R^%e%?vn??ZyA7CZ$VGr2klUMi9OPVMZ5jJx zJ10qHx1Ota4oh7XD@zO0>18364f@q36!1mYo|$;HO84kTA5@lAc4CGng}Olc`>rnH zpKaM=Cw674x#*fP=;wX&P*!>)-wdXlCHi^9IT}N1>CASgQYe~ok7MGE<1V) zt{otn$p(Y)wyf@n_uz2$Y!!#Ku*bKgkDr)CFKISdIuo1_$%NwQ66vmH?0nMoek^5= zz|`Z_A#*H}+e4G=>cka3ZApfR z-FzUp=_EJ+a$Uf_1nZ0UwijJ8F@36UYQfn&PxBO*`mw`B!fQNZMq28ToOBh-4n7(e zz3Q?1NrPS)4N_WdiM3$GEGC4QG#hxPGVx9$Yw?aZF1&EgVlullnO%1glkM;k7FM>n z%uq%@?Ig2*u48B1#Emshy58F~;AW)F$KqWb#E_X40-4QP%+#Ym>TkqWwMutG5q-Xy zvwPzjXUkq(GKqddqg~^aWxjgigaM-IQ0vj7+}Qm~WnhOr4p|@+dZ!s1i)QF7jd5X5 z&M30|nLml(aCV>eNapy4m#chT>ly8A>ML$_ofU+}mWlEp_^kUJ(lx(rHD}*Au>)J> z0ds|S26K)ZWF=1$`N4;_y3Ej-a#F}HZ08{SAc7yebyYrH$=J~T-2ILE)-zgHf2G-@ z+#WKgwKAJ|vVCCR!rz))i><+@U6^R9V8{%mUv!mOmYR#M zzBcjEm)U{wy2|o{o3-wGxjZ3-t3F8%U&@Te^l@oXRp3viv@WEgxkwalRb1kGf zHp)X7zw?oK($#wD?&gvwwC^Xw>adQeB2xPb`Sf46URLy8DX9ousg!XfZJUREcS2b{2>&2uvbC` zrJclYZGAhLO`pNApidgh26LzO3AJLt(`$6E77b$p%-D#W}*3n)MOy zg|RPu+>-3p8UT|tl%2k(^8l+-$Z2PyY?Uy>*cReLohg`7$i5w;Yn^Y#p50Uke%@>* z-rZs0o@Rk4M@JkFEkwEpJ0u1sNz-a0kNGf}WdWprGwg~euihIS9yf4fM?!xL+avHe zq`MPF;*Cn6JpvNA`|uUmgnV`wo4%BLp8)A2LVqnd(&<0D|HU2t)H(4)DG;gk^7anXYDWa%*_)$7aK} z!14ko_(g1_%6pLL!))?fH-arEb?A`Av+G(ZnPXUN|HmXPGdd1ADNKUQL|1l>u7tZc zK*kDxWgb;6RvbbnGDF(_2^d0r&E5AVi#J zMDnw9M(KS!ERz@RhYZdKguAR#X^xc-hg&;EV5)LYRN5L+3h$0*6i`qv$-X5!Os5kY z^Gb=O90n!D-;WeS5sNHSPsSY$S7X74O2DKgXKiq+N9hSf`94j)0yU z08(PGXhst@0Xm#q6!?aaW|5noW4^Ab+9^8%HWDydUpQh>(p7ctkf7bo74WOX(QVTB zhLX+y$|BS==c`2D zX0n%i!OWt|72dq_T-Qk;dB{?)nqO-m_Yw{#Tw3<*b8geI+nq!KXLQ7I4#1s*&tPt$ zgjIY&agREB$^S?M`=bx%hRF=aiSNS~=c6LTQLCWQSfP)e7*SS27jzirq=1XM=XzR% zvg$<~ONpp-;dZ+URUnG8{mkKRhHKn;LI7dmFy z`=P?bGHCQaK~pBWXe5JIIaUYtCF=xteLK>3-MIqOLrMcgNU7}9Q1*nJIc5YTuX6&; z5VB7c0pg43f(ppTsEfZrK=Ry$vCt#F489cp*QEzb^Lo*fszyiHmU+K00#YF@soTUU z<^Dn+DQ701Lt*KwL((%59cDaTuUPk@K(RskJo2F2w>>}NY3;`3Kf5-XNng5CI4f_C zdON(ZF~+6Qsya@The?Li85y$R&24aq*|imdWib(ZdlaT3?ptE)z@FJ~o1pM_H8LTC1-gfA1aAC5Fzewy{n-GwrbtT|Xt-@8o_|_o+11P8 zxQKr&U_$ZFAkX0w!le9q^Cd@zW%)l&E@JF^cwz2P>|DCz$*qTMK#siQ2EDE|kTug2 zw+F;Rb-_320bzg|XCujPeI>PYFB6n^hp7|2cw*vV*NHRr6|S`0=E~L$EH%fnIxtev zWH9)Mh$ZFdnzCT{tak8U{{?#nPG;Zt70$JQ946+TbZ61fqF59!E?K{Ctd}b!>N(&=L zfSLZLG=sl`@O-L(U2|gyj}Wqu7hb@wz=8C-!lizp0|N-8{9QY4>B?I|=+cyp`lc6- zu&wp_XFwq6JDWtow>IQN2zH$#mA>1R3I5>28n|F=BK*-XwjFSKa{`1u{ue)j4hoX( zgU`1#MaZBsp4sSpYgtOp67;RD@PMbF8??lmVt)Y?XN>gTYhe=TJ1o;BUxzJuu7JwF zUnpez;SB-?(FW+l@)}IBX-ylWdmQnNL|Hr-p$$b7o~}(`34~CRNxX@R@6Muq*^qge zf@NJno&nck%S^MzzR~$KoxDHT0tD6&o%>G`ef6g7ZQu7pz~~ zO#2gn{ecc0bMYfFGYoD+B+5;Lk+=p&^c5E{hh6Rs&$gD=mIgA%7E;sg(Z9j+ofk3> z1bGO`L4IBWx+0~3m|2?BCsvky)g^C05(Rj=j`__daC4!rndd9!p8yvhIRwb(78`C` zjLWyZS<*E`Aiiu>9n7=&9}N-D5Z>CjGyfM-&~DxX1Z9c7?LlUp1>0z~@OF3x5M4E5 zQ|fsSi5PuGN7=AQR_V_?erp2N$#7#+j}*bt;@nT_9EU+*(=T>q-##a6QN)#8q5zza zvf-fKgHMN$=NeE=1&jVXk|>wk3YLcGL;79WJ~xhJE9pw9 zJYbzpuPS3x@F=)qH|?f}uO2%9d=X!O+z2`k+rnl$WKoUeVZib;9E1?)KnWs?!Q1Af zd_(L8T&d}L*3(RJ#QV+p9MgLH>yq+6U z-)@dH4tyxMBS<@)+6v9eId;#oe?tOCY9NaFBUMD20K7GrH-m0`B87w~WdJX~@!VzN z63RAt3OxMuqboa^!si<>tts+|k1kvKRd-hOgeDpk$?l}X+#Q%J=w+ciwU0fhMAm?E zF3?X9gv4CrKbGr>_jW-LJ|xDObqf;?F?)!h#5@K3$vZaUp9Rqt{>ZX zon#qV9~;E@ZCv^YcW2!!Fxez#h%o39_|YX4jyo7Qx^lQRvTZ|x4HxchuRyv*;YgV& zQ-~MnbDvp z#s8%0qc@X50iyngga3GHrU6RF@u42*tH=)Ex9Z!ct7`?co zIH3oounCeO-NUv7x4FZu$5(^{T>iw%u@-Rp5@4ZdeWZt>a-8FyUhU4Fr%{|QI1t7h zdzvt(n4X`l(r1RYYzLbCOso-F`v3Wnc-KQXxjREVdsK`ru$@1R9J{xP;L*DWg?%ZS ztute9(!vsF`!R@(fmdh25whl_24pJtGprACHw91c1+9RZCcnEAM>(sp4x}d8vW}&U?+JhQ?dY+$UGP297njQHPsu2i`A8mcqJwC96D8f^5!WJ% zH;51Rpu0kGYLG5KGRv(gs9q^YG~;0h*4#;=19Opaj(uZ^48j9;^8i}l5oA-^7>Am5(Q8iJ3190zzCYfK11q$QCIPhf`i2+0C2C9P^nRO7;zoptRFoGl;YYG`<;2${ipp9NkR@55t}WAP+e&XiK37 z;@{P+6gG7bg&Nyt(TZm!A)kta0=PY7KA~Y8K=#5%w(8*S7I(i#Ham!f%N*GR5O&o= zM)`fgE+?ejVbV$A-#jPy##$l2jv(#LA>-~zj!1;vY%5v8w%EcgBfexvnvhtx7e3V! zK}jLk7Bo+lC3DA0UklHWAF)9U17a|wPas=0m<8Ai;KT}%?JHU#I9$YGF%Z1pS!|dR z?g>POPffs5Af*A<23x+F6oesGy1TpB<0%$U2i%w_`=xox=33d6Fdai^NLWDs1g-+c z7b>_n#c_6w_L!)HxbHgjq#`-5bNN{0HX8O(5_#xxHhmK1m&JFi1>1QhTXhGKH$)aW zG9*tZGZpQ~6S|qAC~P`dg{%b>?v!~)*|1q`nHh-!ZuP(+Le_IEZ;eJUA!Tsxyw>ey z0ml|DD|~+JFfG_t0MCn(my-S*^0(v(wYWkJB5wn6`&T(M?^c)mq2&_f+FrC+fyXW~ z4@ypxQn-nH7Ff|qkP0jmX?bm&BR00D44P*aIdV8}K*-h&#F^4!!q#sDZ+>Kr!x7mwki7jJgNxS`Byvt_BInY2N2WYR-B&yN0|J zGI7Nog6~71Oig3~2f0-lP_7Wk!K9s#6`9eIvTf}}lqBPA8@^_#HUrih(FqxE2tS`9 zJB-9d9uoPSJLPJkE0rc*7yBjU4Oj>pt3-fyU4@{69Mgb0cQQR-cj%k4%5E|nq+oi` zQu$*g(KN*&PzWje=+RDsE8v+{_&M3>+#$F+;HgBxb(L!rp-x4SrZ9uF=^qa0LiT|Y z6RRh|gN3po8MiIO4+?~mARNwsYUzONfT!>wB`*+F;UMf*x2oQyc^=gmk?3fP4PB+fqq-*qEb_Qv1{CX0Qf z=dlNFrY@YYZot1vY2pc=+gaEPNr*wlYL~;d<#J-%)+*)wT7)rw=tduGx)`>xqAbGo zD<7BolVuxUm z$44n2m<6gJ%-Gw5dC)5&q^HA0fPAsun__1cy^zOpm#z4Is1#lx=wg9mi!^w3eeZX6 z`T?1QpP;iFnd?p^mSN+hyiBK!@cGW_id$F5?mz;OO~-01c&f6Q-x+sugj(S50uZR- z$csrWxAjcTI(bIGR4x$K4Nsv5qqR#~tmLob#tRa1;;hWw6(^((i5s~mUv95`VZ!aG z4jJs8a9mpJ&h5LG+^g(z8h52^O<4J$WAYX=cf~$=T`_my*+om~6RTTR6LuvdM2YS$ z3P|lHuro#m6enAl=G#1lJm5`t!yKD-INlVGm(SlL_^bX%B@z(rRBOq*l)dZMzmjRTY0(J>PuZutqIP6oKDfYT3UX4*6E2iMH)9FYrK7@Aqc;TLL6wQ#%_pp$X<-jaBj*26DVxGZAKm2x% zZPDr0V#KpQIl6k#Eb!~oixELB#i4Sy-{}emxWyrBbzM-1q2p{)v~=MCM;8POOb{)> zcI(DdM2WM#2L~Z66Z*3X#CPG(>bk?(OXIz7qMgCgK7n8nWXs`FVU>hbu+ETK&_uwelG);m0&yOGif$gt~L=f4hbH#8R zTY(~l%CVDWHuc~sWcBtOBrVH4C^5w)$GDKZu6~8nLL>~4AGXnBLu{3bWnuAOd(=)F>U9$${_MkHro>@%EIUv^>5U+D0HxAZpDZDj?5JEDCor(ibzi;Nj>5f2Y3hoDN?84s0EQoA(94f(protzmaqeJNK-&jR6z^=mAB52_d7a zDaA({2?>}JDT5iHbdhXO6VG!vp~v?8Vj&~4Lz5i9(TyMpX_6i?+&yBS_Er{cq-~_o zm`~naM7Xt{5+M)}IQhJxR>9v(jN(pg_KShcuAVLu2?sp7q|fw*F+wBgsivvywyC#O?@=CfSo!zj8V!Jy^tw;s`Q4xic@ZrE2|YFi;Tb|>(o_3zx?_Lr%aL^Wgabn{(>?9X99|0Wnb{@foU8}NmE50Fe5K-XY! zQznOmi7pRxij=9hv1CpG=P~-u+hOfCNSU{!#nYV;TDe*Cozk4i5O} z8&cvJkvM;>g)obF4L4DcqCCiUK%-DRqDrq&v>tF?=z+r+gvWG`1}R)hiy*PXvkVTdR6#Mao{cQ+=mKO?)M7(hMrnxV5_tbO4LEzpiXz-w zSIv`_P8pxC-~|&K#v{r{3h=hzBqMO4JRejBD2PaBjIQY)m?i{g_V8|KhxzwhnAbSo^r%RyAK+z_=z|(-q})ghfc)X2jeNv_T!is@FX+lacS| z33)$#%*aSGiL=KY3*Omi!SRJR>vD*Tqpt2~4uyQ;LKYp2JYe~i_vSH5BqDZjBO$J; zt0{JYp@2EX5hw7cL=?0IFQ9tN5E^IK4f3H6RSaiNKfz(;5C3AELqQ58g^Ub6mXLOM z1HUao{|KM{ky7B2Pgy-At_xE$1beO($%W;(>rjgLi6QOHMOv3q_(KUKx>3Q+Um+-u zCog5YN*5Pg{(gD_j}P(_pl6{je-V!7jCo(|*hdL$I$U;v3zj!Prjo18qkl84)L&`2 zc{zrvZbuo4un<+&&QNrfgjZ)!y27=1*;G#?@JMk|5T&KeEKaTc>nM`6djm@fZvxs^azW$XEgIn_^!WeJGwi` zKjG{*kb(owI)f;jr^^C1eD^kDVmh3C+fmkqS8ZVArNr6_GOk;3$q3?e=Qi#a!U+-o zg3A)*$9vfA5gOrc0Sqjpg!CK9jSj;F#lr|fUg(LSA;68V6Du3bQu`1tP&w=xve~&E zNvP;V)1pch z6Y+MMR1R+(^6Fi1XVm%!6{3>pW@QZU6+NwjYtQ1+EjQ2iuVSe%y%0Oasm!B;d|Q-H3_!42L77^Zw@D_e(VW_ zvb;ATvl$Lf_!7c1dc?;<6s-Gq`Oh%=VWYz zW#IiYcoy~Dk*VjsXql*9YB+B^mzFNr0S$_SDa=GS5hx!F{SV)Tcex2NdcJjQaAa>+)6Le@v+sP9hxA-t2f)_9zd=cLEAclbEl8qqUSRjQ!F)u{i2e*C>f)WrxKqvLlC)P4E$`DM z&u4u$gK=?zBZhhwi29eCC>0sv_Q_!Z}`D|pUJ`m8q6k~WAZ z4P4r*F8M|*rw@)?lCtUGRC1FS;V0zR(?v&Kf8gvv(x2Vz(Si+t7qbGAL1)118#u~I z*@!Q{*sKbkaD5ww04^bpPZ1VJB66hTN#^M*!}Sn~Oh5wA^bbDcf?!WJ$Pbq}qLexA z&MgMq<>$%0%f5Rh9VTzDD67Af*w$8de!ODz?yIdoaLQZqD@M4>?%leUtNC4i`%8A8 zzXAibsxr%T_9%{jN4d14opE6WQ4OEb#Zqt)lGmo1@EqH(GIlWaECctaae)oMRBkq< z>*!z_+1MRZ!9~R9;$Mtb(n%l$2pAy4HJotm|uvy6DA zLMMmcRH)l&II$;RlxO)K>=}~%%rFHKgS)iYd{198Rsnx1rNi)V8-j4AfCCCT@N9={ z(+$E??MKbq1!=Oa=e#Y0%G$<MNS}V`-gGuB z;i-GO*Oy)KFBy8suFkg%v3#D<|MkIT)u+cjPW!9>Ie|V~`Z?QqU6StBveqlPxRf)W zmt5LK9^g<(SBQ~FGGZ|&gbUAB8nLcf@ZE8_SWmVUfX*wVXXTQzwfpOGPM5T${j~rt zAp5Et8(io7yo7rz+j{NJ^0k+ON`7fUCV9ya=C;Ihu$NMr)xYg%@vB>H+*MdEmNZeY zaNx;6f#agBiaX2wT3q}n3@_Zzthbh!)r=|QYNa_3KQ4aNkjU&PRzh?SY%d)-#L4>| zzpnggxnD>2en`^~WyhtfCyzK$w*KY8xym4A+&gHJo84LQTbT}XSa9~^2(ubooZu%H zraiBg+_z#i=Q!@`i%2+mKx2arC6Lz}9#<1PhW>FW|0 zbZ@Ovx*~JUzK3iE9Wb@HQe=w z=VM|fA1i$*H~uk6MWvO&&Rp8w0`8vf0;Ge9ZYzUvX_&3_YVuwre|x{*o04)v^)6bh z*?rzJ<``?f+cL84DGX2S)V-N`Hcp|=uOWt74nzLvt`(10d!j%~|guaBuakbpm z%$K>GMN7Lm5@jsf_PTF=b;|X0;lj+3C(6>j0{OKphIOQSRbL&!D93y}d2HuaaDh1YxPHT)S60U@uD@#R>E*JrNYTzt@{oUV$om=4D#IkfE%=+?MC|ResZbsA4nr}^Ni`)9Qg>%QiU0cf5 z9Bxb8&&45DqrF=BNiH1zyq%@ltINh?UJ{cV*ExRmZ@SC6uJ`6CoHdk0==pgZe29^N zy;xt?;&zskmU12$I3F=-4wziu*fRj!aoI@LH6#2=;G|-mhsT5X)w}zsneDNy%px?s z-(m-!73OK~H7_6ZPvg0xs*uaY6>m1Ov%o37Dfel>v0tA>lst^A86W)8cN{Z)2(`p= zPUw{{@h#<~ySLPg?|pCm%O9Hq5*J+vF>cP}k?s9(c|vY*d_%o7ZE9n_^d2u^ZJpLT z^Lu>Ju6({_Q^DQ5xO>^z*{`I6x)Sx8V+VPMb|t9hcTNU_)DkZ|zUZ)0%?XMtCPjc7dkDKUkT=_T&@?-7V;O zw@c7ntjxbmxd|=~8*^T`a-et9@q(%?4mHpqM}oMr^RqgS;->LJyUMV9>VwMUrl~bM z+PLJi`JbBe^5ib5i#yZ-d*rB7J}7Y7UB8E%ysE5`S193hz(b&MyKK*;BZ=JE>EgzO zO)9}Dcw#E%xngsbJmk!XxSfa_+`KIzg;P%(B6lKU#QJ>ny4A84pqHnmXDi0Fjl0k9 z$Lp3;tC;NP6YJT=Fk7iIsJ5{wr;78fHEWU=n3W?_1zuetaQwO{S8`2WUG31=bXp~d zCwY{HuybdgHtKH(+g%sXkewe>!%Otb?mJt3kbkG6yPj*)ucx*2$gD4yRN`!p!{EsTBCQhVCVKH{SCcK8GN33+YQ10L(- z^6IjslmdjnuhP%jcGhhJD_3^KXv?=PF7pKI_x4RT*7M)Zwucr5`F^{7& zj}{+W!^(H3yO5-gnZwQ{<=Q+K$jsZU$XL<1$z=un?!XjWe$aH>D&%0@)7BH!^BPqQ zGFoq2|8^Ii=QrxVzC1s6OcN(BHMw{8RjYcR7Ti>P70+VhaY^75xNK)r)0j9;+SmH8 zhbj)ZT9eH025I5b4;qiVhq3bP)lKr{{6=OD?8uJmbppu-$gG~EeiI%a+A&Kpvh7D{ zvC3E^Q`VB-%IMsu;rAVay~|Q+0iuyq#D*`{JAZ{64codit0&<%)41a5jJDlZRJ@ro z=TO$|p$up_>c0MNzGd!?peN3EqBO3?%hmDix8dc0`AxHW218u;7_e7d!YUPBf3!U) zpd^}__b;|d@(Z}q`Nh@8Z1Yssa6vq;-bOO3Mez+UxqygOr7h#s+x<&?>pmJvpx;E4 zU35-dUCMRcpyGw6@$4Y3swd%iuIH$i*bVcuoY!vLjVVvdv=5i7sP)FIOga50X-aO& zxgVOwtXDzh9dw=7~a1loBx4afwnrzHg{u18z z^;WPD88#!0U$%I(PV?;A+S;OsZPlsS5e1EJReo4+jkI39av+FHu3pcj9a7Ecm!zhI zd+LbX9UWQVhMFejS(WqRd8RY|(E#s=#AFs^aNHIhmiCHU%R~=UYG=hJrBhsPuyot_ zUtt@@r5;tW<^1_uc&9MdNBBDIVQty*L|EtXuxW5%4(+G=QM}RExW6g4ZAU@bEt(^k#Ezkvl!htS6}^DSpNuaVAg@?NO+%U19M zdp~6TY8Bz}!Syc{(V2Toig=qn?q6|(5ZmyaxoKo>Fy~OQxGAn}&;}J_neF+B=Xh6U z(iq`+FuZ!b;%-xPrb-&}k#tiH%q(+1kyyK{tn=NH4K^ouBQzs-_0%FOSSZ-d#Us;P zYX+aIG&ir-_zIhBXY#Aj&-%+(p+_aAiA8Zy;qntId%1TP zl2`h;>14C9pTaS&WWbuP3u;Sj9#?174%(nH5uUtoFVf5U+Sg0)dR3|Pn@kllxJ#;9 zi+|2gy(w@6gH*3_ZX?HC$@0fdc zb|ilhp6lMdE#62O!7i*cY8Yji7IfFWd97D1_*{|8^MQIa48K8qBizW?yFt#Zuuj^1 zOru#vxstHmZ@wynzo1wPj)Xf=WUCH6;_FX0Yzvc06B~ohzG{zG6P&Sfx4y!4GBWrM zM~hd7pIy+TP>Ge<9vsL+J6xq?{nS7c?JEXFj znrep{zxMVr|?{t zRDAyX88?;mds+72Xg8`_Q*)VzE?pSyyX*myGicL8|oxqDj&5o5ErI|Rwr)W7Yz zrrxWpWZuQqRZ|;zzTW*ke?rdNiE-=Y=iFP?hNr^E2VDDkGVd!JZVAIyxv3BC$s{_Mp=-Wy}Z!D4wxHxzyyudnL(7)vF)Q&pD4JEIn7y z(jrf5o7aeI0_wcOE&d;gvn1phEOs^4OAXwPJ4lrUPt5ISF(es!FJR*fz~?QKUMhc3 zWNJ3bdN__eppLTTRc8Xc<^2{pRJ=XcFD0$2Ol8id7rfUI?!i#b8-^xB=eH?VskFg$ zUghJagnMwwMdylN8v?#rSsM29an*8tHOsx)rZ8*l`ikS~BpQcjdco6ou}RGQK(l)m z=VBxKvNLb)k71_$ejbyK|EB&viw%+@qs=xTGx$U7n~1O zXTOysBQ75~0axxJNfaPjoH=I5GGIu;_aei_c^VQmNnH~p0NDY`b+v9+J8ifbf;kD&Gx&O`xjLFsCaC#JkKlY?xHD+`DkFo zST>^%oYrtF>9Ib&Zv@6kJhSjPG&xX!^Xo>7*GqW!+1#udMRt`eD`0r|G28S%e>DF28F0yY z+$U>NebP%VEpc1TCw{?S_A?tqmOLk=760hKeenV=t#(7$yp^=z9+RDaCCOMaO85AU z)-zWE&qY;ji0s#R=fT@8Bct>d@@@>)+-H393A2LmKg%RRgoTJtQ1s}>jAOGqH|}hF zyu300$+5AiQ|?F~wFC7*0Qc8nJz2Q)>j%xZhTKrv_{Y^ZIr4+VP9F{VVwf8MKrm zL33DHozq34#$!X!b(sS2ceXGMRFL)Vqy7Cz4^clbJon<}qHoa1ojjc&Z zyt=ouY}wDdueX}>4B>rhMA6PKZ)9ecriKq!xZ717b6xSKz5Unc0GYGMuzcH>>+Q^Yg~Pa&%ZzM-z7B#~*eZiJfYJz*dAoy?B8sS#VBAwa&5qFo|ajhNB6P#|Q{SGvfooDSYKSz7XQyZ_D^=Hc;7Re3lH>)_31gK zX~WAM3Z9ReuOcnQeg=yf)H_wam4@eYX;1T8q|YYvoUA8v*=dj|SXjMEDIW#)spxq} zs%9={=CWpwkF?W?vx`<*^z*A3Ue-q1;L3*Jz1M?`d2x5&zFtvw^de1#gUkj}tI?9T zElnqW{Vx1cR7FL6YGz~lSETtKT6lf(GtbgD1h2PB3OmdCtJp}?AW`6EqU5wr^NH+k zZGw>cxl4Mwe90@Zc2~kN_HEwx)eZ%=HAT_!>E^DDMu|1F!xcI`WGYOtwy!@g;ez^Y zuGxEauRvDFJBdHv?p$8`V~@rzYp*1XY`m<)%m|P2GG5UFiLWJ|mOYEgj@Qm>k@8|y zp`%$k;%kTL*)FcfwqH9`lbEv?H|lv`WyGHaa_Kw+XHNcdgTH45kA-bY0vRdNab@vQ zBWnZ>zeWi*1Z{ZJ!d=03|KL7lgG%2X6KwQb5IexO?tzb$C9@+b$*Mhqlq$6J>-@uC zvPQ?nWxK{zaa`00rV@k4hFMmzlKyKZhSsEf>3pB4ufI_>+W?t-XJuH<>Su3$;y^H7 zr8ZZXMT3V8PkhDND{fqHUN{yDKW%b{r1;Gkv#fjk(nsl(_pDFq$28i}xOpe(uGrf> z%8Tss(w^H_#y(38_^n{|;I+3;2ofnG%h|6}9vPNk*=6!~&`^au7xX;B?N_O&aBln$ zV1pZrycIw4R<1mRm%LEcZvCRWY&_XMzb4LT1dH)R_JWL@$*&6p>*k;MQZb+Beec)8 z{Tf*+=vOnL{&?x~NbDsnTvj4K$tvCQ6I;A2O)r9Q%HQbnJ$ z{y9H93#cwsmhGg~3atk0>I}h!#@9bDD4)CJOWydc`%WWD%Ucb~3-oHXgstmz?@uRA zI*=CYT@QFUAC(EL3ySpiAO1W%5B4uz_uA`gjt1E+_ts%-1ltaivI!lT zS0GzDf-U7Db3JIIa22}O>gKYexh-7dgQ0BxcD;ov?mGbt*Fq1qzE}?JO@hE@HaxpA z{gZ2(lXzn&E9Pl^btLP>?p|kEU(eMn!;|ei^xS^>%ci^D_fms?yP?{ern$78S4Xf; zPHbh_a{03Ym`?kz)>+&;hZNeNpD<+!2VuB9GLt7(S=BE~>UV>}`*jwI)NEmXjQ0?x z`5I&;>B;*0)yxa2YIm6*#k1rYVb)<-|IV`-3!dZ~vz`(~PYMb|)8-2nCR`c8`kL3> zZmLP+MX8C${f5ALOF(j&55JzJO9Z`C{TB$bSeEb6bX#V6j1Cq=(`Ez0!4kXaJ-0lm z{j-0{+QDn}*@e+OjIG0H{rN0wf+wU?y!}XLnNKqJr}sh_ofhdCOWsVRjAfh0Bbmb% z*0)IYWXn%7H{KXdG{|D>Pu+D`i#?IsSId`@C`<@UE8&<$rnT?oZ$Ive1~zr#j8Bh! zvhW+KGXcYDkwDW$33kFypBdmCqKv-|%m_b2){%8$#;h}*CVbr#r7_;R;O`^W6~8X5 z8|%(`;MoIZPpqOh%HAmZFf-Pd^~1A2-uk07$GaI5u>ou#o&!;S%m%T4vBAuO4Pis^ z9ENf@T1K#ucv>{W>eTyJU?U8@SDus*mO37x#KsTd7%89%|tni%|`Dp*c?1v0pkmdnS!@T zc>j_g`6WirWuELSHV@BvY(9QoYynDdynC^Q%m+^&w0PmmS9o89w?!xyvme-xEDFCLSTy^I z{mf$U`-$yfzpz*qhrgYu#j{;(H~#jZwwEQaMEv%$B({(3XTRdNj~!sYv4iXoe!sE9 z?05DD`xAdhP&>+wv1I&?vg7OoOJOJRJjqV6(=3&x;qMG;=`4et#V?(mW0~wcljE1k zve;kj0=tOkMRti@W>;7?ewSGeyUMPyT>P%G>nxAuvjY6`SRuQ?ZZh0dLV1hbW_MUI zp2h4gyT|Uc68!G52dtDmWM%l3vU2u_J!Td7Jz`JTQ&!2U@b?V0z9|M{hZ^o5H`-p2 zLG^%-bjI1B-aEx0LsK8%mCm>S%PakV^wEs{pg%vB`qNnIGZb}8d&Ss5!0!*(+Ayho z81+HBrmhEEL>Rl0`lF=wAkClZvw#C0eIT=&j6R&e?hx;U9%Q_z|pQ_E}m`XR9s{e0vAo$18r#DK?Ttt6OopAVYUh40Nc?jne)MNhx{?v!)piLjDQ~S*SKu>D7 z1We33mg;JJ-tCJvJ*iH8I-sPrQ{5dfwdtTuXQ~sPL}%g$4NbIZrL99q4`_6PHa_6D zcY1*6qrp>qT^iZ{P!DMO&>FSz*Oqr}Jhf$9o6g$uuEBxmOtL_FfMgsvypv_j%hQMU zOPf~zO=fA08aXAHn!2`b)Yh@ua{AwN+J`VTIz)Ty|E9Y%{r{Ujq4jEXk+yyyz0m-@ zu@fb=Yt^;&iFTiN?X-5yyxMg55RL|>b|3BaYU88buDy0`n0d3Wj+GhzE9DorZ5i%4 ztHu^@5RPleUiGftHo7#O`ox?aoMJos>brL8quoAo`nGp{PTH4_(ZJEJYxkkLW?oGn znoGM~gAcW9_tD0=ZQ8aB4IB~rY39|`X)N{8;ICbe#2P;APwUz}>*~Ay+I_U!sjit< z(}(8LuKy?8sE_toTH{^NyfS;$SXx(hky(lzN~%Bjx?f6++qSV9Iy@L%I!3#$-G}I= z>93&`^{2W9zIGp~Yv$7KuidVVn>HM6Jc-U4__SUPOsZ?}(d-4`qus8d6}4;kA^K>> zQXdU`?RKhb=F*0v-Cr9YZ9KKdjxP=#8|6Iwn0xHR^p#Wkjh)}IZme(Y<#cMNy1%+T z&iT({o?7j*V<(QGKEFE;w+vL*HE^`YYU}(*@tvc!F>>kj566JsG^Fe?46&syX4d_o}_o~NMPg?7;Wl^7#)K?p(c02HJ z$^7z&E&4cPyo+RHH#_R9-TqJd(^^Iv4X~qe+HkbnUjq-JRX@JZe`}{T2X-{!anSBh z?E&g`qMgC?1-AI^4BX^jFZ!NeBeff%{SDeb?5}C3{xWs{I>02ly+x@FhsJ8?*(57D zKiE&=vck1G^XZ*Vw#X~FSgz`Es{8Sz^Z!EoK$H`g>^~{VzL5FqPK3)pscVm&54ax# zj^5WL=e6q#T&u?u{1(iwUGI53$(iu!k9oE0jj|GF>c186wCiutPW`_CJngzj4W}zg z?fPc)qyBXmr(ORZaH+ik?b`Kzz+({F2LX*vv~R@goVwnKy6&Q(dRA`tQfOwE9o7Lto-6oUJkT9DOzQ7pMbQmv;0a+*>f8?y^azUI7Nx_0)CX z=OP45;OjzlhC0av;nU(j=@iXRbtUSA7tN=^hv41-ZZuEA>OPr&d>SrK?rVDfm(_j7 zA4dHq>akk&ed<2P(0)^SlkcO?-ORkLt{b49ue_Q0JI4NjGOMqtGu5LpPOh%UppNm* zG*>EMA63^+q8Cv_DpnLO>vx9{-(-|Dq@BIJXhXQnLKZ}U&;1pg5Fzr?tIQU^?z zkI~;#@tN&Eseg4K)a5{7th2e*<&*!UPB^?Qh;?3bAe6`F@9O=IhscMO?K$td?2_$2 zsT2Hl5BHoOdpv}f-M_1Ufqwa=d(N)}{C`p>_^-6^|GRoL*7+&=PXm4aN&Wv8f1>$8 z(BDi=|G%pf{7s;bBk1~1>O}M5pubp6|G%pfOa;~(3cUVFooHSF`Uj}#|95qQ`JER2 ze^)1(PXRuY)%5?nI>A?J;s1AaoC>&nGQ#E5?UP>ee^Q5Ta5-IgeH6{}PwMR)=iFB@ z!S3EkFPDE($9aXkk~!MlLH~bJCtc;VdAkOmzpZxwd~X|vQ#Y~Re^PI)_Har1EPFha zp@J#SGn}XMWsuoyl)ao)?Y;PR>ZkhN%lSs<&-m}ukJ_E;zR(&s#hKnU?NqAZsoH5C zRsUY^N(~&%eA@GC=B4sOJP8lYcfwbLmyY8UzMV>H*OaR7Q`GOOlE!P`sQOJ&!9bhel7ZG{Q95*{(be%Kb=DbhR(m$$2xy{%fvZt%Ab7s{8z{p+Ex7w zoo#gPqQ9mb;{45vNBnqIY3MvQ;syU*RSt1}ysDP}t||@H@0xOmy1%A0RKwGhL)7zW z%J+C^@YbwHRT`?-ry6f)V#ANul(cRQzBHcNHE=YgHayKZO-bW5h(^;5fs z4%#KP(>$6|8!y6-+KJAFCNp__sXTnW-1&_4Z0Ak`?(wAx{!HgytE%{S6<#xWJgEPz zN!5J2rX>8R{ljsp`QF3V%&VD419$tzn>@VygZX@^!hfcE9W$LZ?V5fnes@&!ougU~ z9o6#Z=&bp!k{d_0+`MmB@%8(6m7KhXqxr7l@Ava)-c|hTqUL88H9x<9SMj;I`n$Qa ziqCt!D>eMDkq3<&Xyioo-P~FA-s@edX-Dbu_jW^P)%$Sg zM~cJfKiqkP^8xfXRF}Qf?c?5+s_*aHHSjg<8u&jr$Mf^+Dfja8Yf4SKsvPcIJ!Ka^ zpX$4zbJMwBcsx|?z0~jH-j$kmO{syWfv+0>e%%^;G^GY#O{r;Dt$*CRb!*n6Y1fqh z-acGSR}H=1(^G?w20u;tVY_A>nsyETns&{*rqr~nN<(K29aZDs)9>>e4|)1qMVC6S zJln^a-l?Q_;tS2Yrk{5C-}=)y4ZM!-5B?3Fc02Xce5X?Lt|>KmXi81Hrlj`&1A3>| A+yDRo literal 0 HcmV?d00001 diff --git a/deploy/MyWonderland-textures.bin b/deploy/MyWonderland-textures.bin index 3333c02de7d16299f306438900e3e5bb6b8352d2..6c4a0e355557accd4c04ca027a1e410d84327af9 100644 GIT binary patch delta 29975 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 qwSy34td@4!pgpW;}Ojm` delta 74 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

    jWlmqrgCejI)^ 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 >dLNwspJi=VqpD*#Fz-Lze5Njt&3Ix?DY@~`2 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

    {Iw1-U&EON#GCLKCM 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

    Ps zfmq{V?3B=}Ix{n+OQ~arSTD!+s>dZBJDwn1=y^OLvG66_2(_`ojpQrD+H>d43-;cn za^s31bk{M3D+dZ=s(y#XB)Q(q%RBWQ|BeZnuaq zYDNZK#L%%wg|(@MBh1wG08|9^LYAesc5Y%02rY>m_-wo)!pZngki@)tDR75&Dir^*~oHlEPKkHEUu~k>s(8S+M zAI}@1Kf-7P#c)eZ^h4oqUUW>T5rr1Ur<2V~@vjpkkm6A&G$9w%QNdgW9N+Mkj4yEH zL{h`l@o<{pBK|`~DbiD=@2jZl`Y4lNGM9Q3@?=h*t$p-|zu$bxezvy1-*$jmLuf+q zz5E2vjWBB_@;B~1KEn67uww~$gU~qqefr?Huq$i!>^(v`d1x|05?(QV!># zWBZOD+P#l<7;HkSXH=yC;$)l3jH>4QG=$UO1rQeUqOD(82db;9da0{FB#3|H(zjU} z@ZBdc-5S1@Z19T~*Ci%WVskuWDTxV`*x1;HhS&ySQJ9a9kAvFubhTA0)gkHQQ*Py; zrl#f-65h~O~S&VF^sSt;fij|h{ga9=YUd;gf%?;H84mLcke1zjo-D~QVP?3 z>DOn_OM|~cDlPda_|5p^baV=c`@xU|{2Rh!SYbC3GZ((cJ>Qv{VT_<5s*$`BnxPD$aF}BYonqvBpwnLRgD=F z$6-!SXS%wo#(~e9xN<8FSZR$h)ErZ#E=UNShV0aP*o1HvK~bP;laeN39B&XLnl@0Wr(Bi76b*V3MJR4h|JWG4tq~+?A?TR|U_W76l zf$4(>6eqsA|DXY@dq$~HA9O!(;9xxfjy_vK)StX`nR4QC=JxInr?%0AMBS-vx!b$3 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
    Wonderland Engine 1.4.0 diff --git a/js/bullet-physics.js b/js/bullet-physics.js index 4a07772..cc6574f 100644 --- a/js/bullet-physics.js +++ b/js/bullet-physics.js @@ -74,13 +74,16 @@ export class BulletPhysics extends Component { this.object.setPositionLocal(this.position); let overlaps = this.collision.queryOverlaps(); + for (let i = 0; i < overlaps.length; ++i) { let t = overlaps[i].object.getComponent("score-trigger"); - if (t && !this.scored) { - t.onHit(); - this.scored = true; - state.zombiesKilledInWave++; - this.destroyBullet(0); + + // this.destroyBullet(0); + // se eu movo this.destroyBullet(0); pra aqui funciona e ele desaparece quando bate em algo mas n funciona o hit tipo o tiro n ativa botões nem mata bichos + + if (t) { + t.onHit(() => this.destroyBullet(0)); // Ativar ação do alvo (ponto, morte, etc) + this.destroyBullet(0); // Só então destruir break; } } diff --git a/js/game.js b/js/game.js index 532bbee..0993799 100644 --- a/js/game.js +++ b/js/game.js @@ -21,6 +21,8 @@ export const state = { firstShot: false, launch: null, paused: false, + isFirstGameOver : false, + zombieCount: 0, // Wave system properties currentWave: 1, @@ -42,6 +44,7 @@ export const state = { }, getWaveSpeed() { + // const speedMultiplier = 1 + ((this.currentWave - 1) * this.waveProperties.speedIncreasePercent / 100); const speed = this.waveProperties.baseSpeed * speedMultiplier; console.log(`Wave ${this.currentWave} speed: ${speed.toFixed(2)} (multiplier: ${speedMultiplier.toFixed(2)})`); @@ -59,7 +62,7 @@ export const state = { const remaining = this.getRemainingZombies(); const nextWaveZombies = this.waveProperties.baseZombies + (this.currentWave) * this.waveProperties.zombiesIncrease; - const speed = this.getWaveSpeed(); + const speed = this.getWaveSpeed() * (this.zombieCount + 1) * 0.1; this.updateScore( `Wave ${this.currentWave} - Remaining: ${remaining} zombies - Speed: ${speed.toFixed(1)} - Next Wave: ${nextWaveZombies} zombies` ); @@ -98,6 +101,7 @@ export const state = { loseGame() { console.log("Game Over triggered"); this.gameOver = true; + this.isFirstGameOver = true; // Stop music first if (this.mouseSound) { @@ -130,6 +134,15 @@ export const state = { this.mouseSpawner.reset(); } + if (this.isFirstGameOver) { + window.location.reload() + } + + // atualiza o zombieCount para 0 + this.zombieCount = 0; + + // document.getElementById("pontos-test").innerHTML = 0; + this.victoryMusic.stop(); this.gameOver = false; this.shotCount = 0; diff --git a/js/index.js b/js/index.js index 5fb7109..841febd 100644 --- a/js/index.js +++ b/js/index.js @@ -31,7 +31,6 @@ import {PlayAgainButton} from './play-again-button.js'; import {PlayerLocation} from './player-location.js'; import {ScoreDisplay} from './score-display.js'; import {ShotCounter} from './shot-counter.js'; -import {SpawnMover} from './spawn-mover.js'; import {TeleportCustom} from './teleport-custom.js'; import {WasdControlsCustom} from './wasd-controls-custom.js'; /* wle:auto-imports:end */ @@ -120,7 +119,6 @@ engine.registerComponent(PlayAgainButton); engine.registerComponent(PlayerLocation); engine.registerComponent(ScoreDisplay); engine.registerComponent(ShotCounter); -engine.registerComponent(SpawnMover); engine.registerComponent(TeleportCustom); engine.registerComponent(WasdControlsCustom); /* wle:auto-register:end */ diff --git a/js/mouse-mover.js b/js/mouse-mover.js index 4b9c556..b502496 100644 --- a/js/mouse-mover.js +++ b/js/mouse-mover.js @@ -30,7 +30,7 @@ export class MouseMover extends Component { if(state.gameOver || state.paused) return; // skip if game is over or paused // Get current speed from wave system - const currentSpeed = state.getWaveSpeed(); + const currentSpeed = state.getWaveSpeed() ; // get current and player positions const currentPos = vec3.create(); diff --git a/js/score-trigger.js b/js/score-trigger.js index 4af335e..18b913b 100644 --- a/js/score-trigger.js +++ b/js/score-trigger.js @@ -25,35 +25,54 @@ objects, see `mouse-spawner`. const tempQuat2 = new Float32Array(8); export class ScoreTrigger extends Component { - static TypeName = "score-trigger"; - static Properties = { - particles: { type: Type.Object }, - }; - - init() { - this.collision = this.object.getComponent('collision'); - this.soundHit = this.object.addComponent("howler-audio-source", { - src: "sfx/high-pitched-aha-103125.mp3", - volume: 1.9, - }); - this.soundPop = this.object.addComponent("howler-audio-source", { - src: "sfx/pop-94319.mp3", - volume: 1.9, - }); - state.victoryMusic = this.object.addComponent("howler-audio-source", { - src: "music/level-win-6416.mp3", - volume: 1.9, - }); - } + static TypeName = "score-trigger"; + static Properties = { + particles: { type: Type.Object }, + }; + + init() { + this.collision = this.object.getComponent("collision"); + this.soundHit = this.object.addComponent("howler-audio-source", { + src: "sfx/high-pitched-aha-103125.mp3", + volume: 1.9, + }); + this.soundPop = this.object.addComponent("howler-audio-source", { + src: "sfx/pop-94319.mp3", + volume: 1.9, + }); + state.victoryMusic = this.object.addComponent("howler-audio-source", { + src: "music/level-win-6416.mp3", + volume: 1.9, + }); + } - onHit() { - this.particles.setTransformWorld(this.object.getTransformWorld(tempQuat2)); + onHit(callback) { + if (typeof callback === "function") { + this.particles.setTransformWorld( + this.object.getTransformWorld(tempQuat2) + ); this.particles.getComponent("confetti-particles").burst(); + state.zombiesKilledInWave++; + state.zombieCount++; + // document.getElementById("pontos-test").innerHTML = state.zombieCount; + const elementPontos = document.getElementById("pontos-test") + if(elementPontos) { + elementPontos.innerHTML = state.zombieCount + } - state.despawnTarget(this.object.parent); - state.incrementScore(); + state.despawnTarget(this.object.parent); - this.soundHit.play(); - this.soundPop.play(); + callback(); // chama o callback com argumento + } else { + console.log("Nenhum callback fornecido."); } -}; + this.particles.setTransformWorld(this.object.getTransformWorld(tempQuat2)); + this.particles.getComponent("confetti-particles").burst(); + + state.despawnTarget(this.object.parent); + state.incrementScore(); + + this.soundHit.play(); + this.soundPop.play(); + } +} From a0aef0080fa14b433d627fb94c7bc48691cb279f Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 30 Jun 2025 18:03:10 -0300 Subject: [PATCH 09/10] uii --- ...0_16-41-52.wlp => 2025-06-30_17-45-52.wlp} | 107 +- .../MouseDefense/2025-06-30_17-56-32.wlp | 7205 +++++++++++++++++ MouseDefense.wlp | 63 +- deploy/MyWonderland-bundle.js | 72 +- deploy/MyWonderland-bundle.js.map | 6 +- deploy/MyWonderland.bin | Bin 1172012 -> 1172000 bytes deploy/index.html | 7 +- js/game.js | 4 +- js/mouse-spawner.js | 136 +- 9 files changed, 7366 insertions(+), 234 deletions(-) rename .autosave/MouseDefense/{2025-06-30_16-41-52.wlp => 2025-06-30_17-45-52.wlp} (98%) create mode 100644 .autosave/MouseDefense/2025-06-30_17-56-32.wlp diff --git a/.autosave/MouseDefense/2025-06-30_16-41-52.wlp b/.autosave/MouseDefense/2025-06-30_17-45-52.wlp similarity index 98% rename from .autosave/MouseDefense/2025-06-30_16-41-52.wlp rename to .autosave/MouseDefense/2025-06-30_17-45-52.wlp index 2717241..73e4c8c 100644 --- a/.autosave/MouseDefense/2025-06-30_16-41-52.wlp +++ b/.autosave/MouseDefense/2025-06-30_17-45-52.wlp @@ -1648,7 +1648,7 @@ }, "components": [ { - "active": false, + "active": true, "mesh": { "material": "996", "mesh": "982" @@ -1670,19 +1670,19 @@ "name": "MouseSpawner", "scaling": [ 0.2, - 0.1999813, - 0.1999823 + 0.1999808, + 0.1999818 ], "rotation": [ - 0.707102, + 0.7071011, 0.0, 0.0, - 0.7071114 + 0.7071123 ], "translation": [ - -22.3248748, - -9.5367431640625e-7, - 8.5837488 + -25.8049697, + 4.76837158203125e-7, + 8.5837411 ] }, "970": { @@ -2452,97 +2452,6 @@ 0.9999816 ], "parent": "1003" - }, - "1031": { - "link": { - "name": "Mouse", - "file": "assets\\uploads_files_3861195_Mouse_GLB.glb" - }, - "components": [ - { - "active": false, - "mesh": { - "material": "996", - "mesh": "982" - } - }, - { - "type": "mouse-spawner", - "mouse-spawner": { - "targetMesh": "982", - "targetMaterial": "996", - "spawnAnimation": "439", - "particles": "482", - "maxTargets": 20, - "bulletMesh": "9", - "bulletMaterial": "22" - } - } - ], - "name": "MouseSpawner", - "scaling": [ - 0.2, - 0.1999787, - 0.1999798 - ], - "rotation": [ - 0.7070986, - 0.0, - 0.0, - 0.7071149 - ], - "translation": [ - 19.7182445, - 9.5367431640625e-7, - 9.2442646 - ] - }, - "1032": { - "link": { - "name": "Mouse", - "file": "assets\\uploads_files_3861195_Mouse_GLB.glb" - }, - "components": [ - { - "active": false, - "mesh": { - "material": "996", - "mesh": "982" - } - }, - { - "type": "mouse-spawner", - "mouse-spawner": { - "targetMesh": "982", - "targetMaterial": "996", - "spawnAnimation": "439", - "particles": "482", - "maxTargets": 20, - "bulletMesh": "9", - "bulletMaterial": "22" - } - }, - { - "type": "spawn-mover" - } - ], - "name": "MouseSpawner", - "scaling": [ - 0.2, - 0.1999775, - 0.1999786 - ], - "rotation": [ - 0.7070954, - 0.0, - 0.0, - 0.707118 - ], - "translation": [ - 2.1427974, - -4.76837158203125e-7, - 14.1688098 - ] } }, "meshes": { diff --git a/.autosave/MouseDefense/2025-06-30_17-56-32.wlp b/.autosave/MouseDefense/2025-06-30_17-56-32.wlp new file mode 100644 index 0000000..99a9a7b --- /dev/null +++ b/.autosave/MouseDefense/2025-06-30_17-56-32.wlp @@ -0,0 +1,7205 @@ +{ + "objects": { + "14": { + "name": "Player", + "components": [ + { + "type": "bg-music" + }, + { + "type": "player-location" + }, + { + "type": "fixed-foveation", + "fixed-foveation": { + "fixedFoveation": 1.0 + } + } + ], + "translation": [ + 0.0, + 0.0, + 4.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 0.9999998, + 1.0, + 0.9999998 + ] + }, + "15": { + "name": "FloorPlane", + "components": [ + { + "type": "mesh", + "mesh": { + "mesh": "12", + "material": "540" + }, + "active": true + }, + { + "type": "collision", + "collision": { + "collider": "aabb", + "aabb": { + "extents": [ + 16.0, + -0.1, + 16.0 + ] + }, + "groups": 4 + }, + "active": true + } + ], + "scaling": [ + 60.0, + 60.0000267, + 60.0000038 + ], + "rotation": [ + -0.707264, + 0.0, + 0.0, + 0.7069494 + ] + }, + "17": { + "name": "NonVrCamera", + "parent": "205", + "components": [ + { + "type": "view" + }, + { + "type": "wasd-controls-custom", + "wasd-controls-custom": { + "speed": 0.1, + "headObject": "14" + }, + "active": true + }, + { + "type": "mouse-look-custom", + "mouse-look-custom": { + "pointerLockOnClick": true, + "requireMouseDown": false, + "bulletMesh": "9", + "bulletMaterial": "20", + "bulletSpeed": 5.0 + } + } + ], + "translation": [ + 0.0, + 0.0, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] + }, + "18": { + "name": "EyeLeft", + "parent": "205", + "components": [ + { + "type": "view" + }, + { + "type": "input", + "input": { + "type": "eye left" + } + }, + { + "type": "howler-audio-listener" + } + ], + "translation": [ + 0.0, + 0.0, + -2.384185791015625e-7 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] + }, + "19": { + "name": "EyeRight", + "parent": "205", + "components": [ + { + "type": "view" + }, + { + "type": "input", + "input": { + "type": "eye right" + } + } + ], + "translation": [ + 0.0, + 0.0, + -2.384185791015625e-7 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] + }, + "21": { + "name": "Sunlight", + "components": [ + { + "type": "light", + "light": { + "type": "sun", + "color": [ + 1.0, + 0.8839215, + 0.4196078 + ], + "shadows": true, + "cascadeCount": 3, + "shadowRange": 50.0, + "intensity": 1.0 + } + } + ], + "parent": "501", + "translation": [ + -0.0000013, + 3.0000147, + 8.8421812 + ], + "rotation": [ + 0.2330272, + -0.2990215, + 0.1749209, + 0.9086732 + ], + "scaling": [ + 0.9999998, + 0.9999994, + 0.9999992 + ] + }, + "53": { + "link": { + "name": "root", + "file": "models\\oculus-touch-v2-left.glb" + }, + "parent": "130", + "name": "ControllerModelLeft", + "translation": [ + -0.0117514, + 0.0008869, + 0.0161192 + ], + "scaling": [ + 0.9999998, + 0.9999998, + 0.9999997 + ] + }, + "54": { + "link": { + "name": "controller this.minSpawnInterval) { this.spawnInterval *= this.spawnIntervalDecreaseRate; } - if (this.targets.length % 10 === 0) { - this.waveNumber++; - state.updateScore(`Wave ${this.waveNumber} - Zombies: ${this.targets.length}`); - } } } reset() { - for (let i = 0; i < this.targets.length; i++) { - this.targets[i].destroy(); + for (let obj of this.targets) { + obj.destroy(); } this.targets = []; - this.waveNumber = 1; - this.spawnInterval = this.initialSpawnInterval; this.time = 0; + this.spawnInterval = this.initialSpawnInterval; + this.waveNumber = 1; + this.sideCount = 0; + this.pickNewSide(); this.object.resetPosition(); } + pickNewSide() { + const idx = Math.floor(Math.random() * this.sides.length); + this.currentSide = this.sides[idx]; + this.sideCount = 0; + state.updateScore(`Wave ${this.waveNumber} \u2013 Lado ${this.currentSide}`); + } spawnTarget() { + if (this.sideCount >= 6) { + this.waveNumber++; + this.pickNewSide(); + } const obj = this.engine.scene.addObject(); obj.setTransformLocal(this.object.getTransformWorld(tempQuat24)); - const angle2 = Math.random() * 2 * Math.PI; - const dist2 = Math.random() * 5; - const dx = Math.cos(angle2) * dist2; - const dz = Math.sin(angle2) * dist2; + const minR = this.spawnRadiusMin; + const maxR = this.spawnRadiusMax; + let dx = 0, dz = 0; + switch (this.currentSide) { + case "+X": + dx = minR + Math.random() * (maxR - minR); + dz = (Math.random() * 2 - 1) * maxR; + break; + case "-X": + dx = -(minR + Math.random() * (maxR - minR)); + dz = (Math.random() * 2 - 1) * maxR; + break; + case "+Z": + dz = minR + Math.random() * (maxR - minR); + dx = (Math.random() * 2 - 1) * maxR; + break; + case "-Z": + dz = -(minR + Math.random() * (maxR - minR)); + dx = (Math.random() * 2 - 1) * maxR; + break; + } obj.translateLocal([dx, 0, dz]); obj.scaleLocal([1, 1, 1]); const mesh = obj.addComponent("mesh"); @@ -13479,6 +13509,7 @@ var MouseSpawner = class extends Component3 { }); obj.setDirty(); this.targets.push(obj); + this.sideCount++; } }; __publicField(MouseSpawner, "TypeName", "mouse-spawner"); @@ -13490,8 +13521,9 @@ __publicField(MouseSpawner, "Properties", { initialSpawnInterval: { type: Type.Float, default: 2 }, minSpawnInterval: { type: Type.Float, default: 0.5 }, spawnIntervalDecreaseRate: { type: Type.Float, default: 0.95 }, - bulletMesh: { type: Type.Mesh }, - bulletMaterial: { type: Type.Material } + // Raio mínimo/ máximo para spawn + spawnRadiusMin: { type: Type.Float, default: 15 }, + spawnRadiusMax: { type: Type.Float, default: 30 } }); // js/play-again-button.js diff --git a/deploy/MyWonderland-bundle.js.map b/deploy/MyWonderland-bundle.js.map index 207328f..f18aa2b 100644 --- a/deploy/MyWonderland-bundle.js.map +++ b/deploy/MyWonderland-bundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/howler/dist/howler.js", "../node_modules/earcut/src/earcut.js", "../node_modules/node_modules/wasm-feature-detect/dist/esm/index.js", "../node_modules/@wonderlandengine/api/src/property.ts", "../node_modules/@wonderlandengine/api/src/decorators.ts", "../node_modules/@wonderlandengine/api/src/utils/object.ts", "../node_modules/@wonderlandengine/api/src/utils/event.ts", "../node_modules/@wonderlandengine/api/src/resources/resource.ts", "../node_modules/@wonderlandengine/api/src/utils/cbor.ts", "../node_modules/@wonderlandengine/api/src/component.ts", "../node_modules/@wonderlandengine/api/src/utils/fetch.ts", "../node_modules/@wonderlandengine/api/src/prefab.ts", "../node_modules/@wonderlandengine/api/src/utils/misc.ts", "../node_modules/@wonderlandengine/api/src/wonderland.ts", "../node_modules/@wonderlandengine/api/src/version.ts", "../node_modules/@wonderlandengine/api/src/resources/material-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/mesh-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/texture-manager.ts", "../node_modules/@wonderlandengine/api/src/webxr.ts", "../node_modules/@wonderlandengine/api/src/scene-gltf.ts", "../node_modules/@wonderlandengine/api/src/scene.ts", "../node_modules/@wonderlandengine/api/src/engine.ts", "../node_modules/@wonderlandengine/api/src/utils/bitset.ts", "../node_modules/@wonderlandengine/api/src/utils/logger.ts", "../node_modules/@wonderlandengine/api/src/wasm.ts", "../node_modules/@wonderlandengine/api/src/index.ts", "../node_modules/@wonderlandengine/components/dist/8thwall-camera.js", "../node_modules/@wonderlandengine/components/dist/utils/webxr.js", "../node_modules/@wonderlandengine/components/dist/anchor.js", "../node_modules/@wonderlandengine/components/dist/cursor-target.js", "../node_modules/gl-matrix/esm/common.js", "../node_modules/gl-matrix/esm/mat3.js", "../node_modules/gl-matrix/esm/mat4.js", "../node_modules/gl-matrix/esm/quat.js", "../node_modules/gl-matrix/esm/vec3.js", "../node_modules/gl-matrix/esm/vec4.js", "../node_modules/gl-matrix/esm/quat2.js", "../node_modules/@wonderlandengine/components/dist/hit-test-location.js", "../node_modules/@wonderlandengine/components/dist/cursor.js", "../node_modules/@wonderlandengine/components/dist/debug-object.js", "../node_modules/@wonderlandengine/components/dist/finger-cursor.js", "../node_modules/@wonderlandengine/components/dist/fixed-foveation.js", "../node_modules/@wonderlandengine/components/dist/hand-tracking.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-listener.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-source.js", "../node_modules/@wonderlandengine/components/dist/utils/utils.js", "../node_modules/@wonderlandengine/components/dist/image-texture.js", "../node_modules/@wonderlandengine/components/dist/mouse-look.js", "../node_modules/@wonderlandengine/components/dist/player-height.js", "../node_modules/@wonderlandengine/components/dist/target-framerate.js", "../node_modules/@wonderlandengine/components/dist/teleport.js", "../node_modules/@wonderlandengine/components/dist/trail.js", "../node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js", "../node_modules/@wonderlandengine/components/dist/video-texture.js", "../node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js", "../node_modules/@wonderlandengine/components/dist/plane-detection.js", "../node_modules/@wonderlandengine/components/dist/vrm.js", "../node_modules/@wonderlandengine/components/dist/wasd-controls.js", "../js/game.js", "../js/bg-music.js", "../js/bullet-physics.js", "../js/bullet-spawner.js", "../js/confetti-particles.js", "../js/hud-control.js", "../js/joystick-movement.js", "../js/mouse-look-custom.js", "../js/mouse-mover.js", "../js/score-trigger.js", "../js/mouse-spawner.js", "../js/play-again-button.js", "../js/player-location.js", "../js/score-display.js", "../js/shot-counter.js", "../js/teleport-custom.js", "../js/wasd-controls-custom.js", "../js/index.js"], - "sourcesContent": ["/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, \u221E]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspending\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "/**\n * Component property type.\n */\nexport enum Type {\n /**\n * **Native**\n *\n * Property of a native component. Must not be used in custom components.\n *\n * @hidden\n */\n Native = 0,\n\n /**\n * **Bool**:\n *\n * Appears in the editor as a checkbox.\n *\n * Initial value is `false`, unless overridden by the `default` property.\n */\n Bool = 1,\n\n /**\n * **Int**:\n *\n * Appears in the editor as an integer input field.\n *\n * Initial value is `0`, unless overridden by the `default` property.\n */\n Int = 2,\n\n /**\n * **Float**:\n *\n * Appears in the editor as a floating point input field.\n *\n * Initial value is `0.0`, unless overridden by the `default` property.\n */\n Float = 3,\n\n /**\n * **String / Text**:\n *\n * Appears in the editor as a single-line text input field.\n *\n * Initial value is an empty string, unless overridden by the `default`\n * property.\n */\n String = 4,\n\n /**\n * **Enumeration**:\n *\n * Appears in the editor as a dropdown with given values. The additional\n * `values` parameter with selection options is mandatory.\n *\n * The property value is resolved to an **index** into the `values` array.\n *\n * Initial value is the first element in `values`, unless overridden by\n * the `default` property. The `default` value can be a string or an index\n * into `values`.\n *\n * @example\n *\n * ```js\n * camera: {type: Type.Enum, values: ['auto', 'back', 'front'], default: 'auto'},\n * ```\n */\n Enum = 5,\n\n /**\n * **Object reference**:\n *\n * Appears in the editor as an object resource selection dropdown\n * with object picker.\n *\n * Initial value is `null`.\n */\n Object = 6,\n\n /**\n * **Mesh reference**:\n *\n * Appears in the editor as a mesh resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Mesh = 7,\n\n /**\n * **Texture reference**:\n *\n * Appears in the editor as a texture resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Texture = 8,\n\n /**\n * **Material reference**:\n *\n * Appears in the editor as a material resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Material = 9,\n\n /**\n * **Animation reference**:\n *\n * Appears in the editor as an animation resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Animation = 10,\n\n /**\n * **Skin reference**:\n *\n * Appears in the editor as a skin resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Skin = 11,\n\n /**\n * **Color**:\n *\n * Appears in the editor as a color widget.\n *\n * Initial value is `[0.0, 0.0, 0.0, 1.0]`, unless overridden by the\n * `default` property.\n */\n Color = 12,\n\n /**\n * **Vector of two floats**:\n *\n * Appears in the editor as a two-element floating point input field.\n *\n * Initial value is `[0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector2 = 13,\n\n /**\n * **Vector of three floats**:\n *\n * Appears in the editor as a three-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector3 = 14,\n\n /**\n * **Vector of four floats**:\n *\n * Appears in the editor as a four-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector4 = 15,\n\n /**\n * **Array of property**:\n *\n * Appears in the editor as a list of **N** elements.\n *\n * Initial value is `[]`, unless overridden by the `default` property.\n */\n Array = 16,\n\n /**\n * **Class with sub-properties**:\n *\n * Appears in the editor as a nested properties structure.\n *\n * Initial value is `{}`, unless overridden by the `default` property.\n */\n Record = 17,\n\n /**\n * **Particle effect reference**:\n *\n * Appears in the editor as a particle effect resource selection dropdown.\n *\n * Initial value is `null`.\n */\n ParticleEffect = 18,\n\n /** @hidden */\n Count = 19,\n}\n\n/**\n * Cloning interface for component properties.\n *\n * Used for component initialization and cloning.\n */\nexport interface PropertyCloner {\n /**\n * Clone a property value.\n * @param type Type of the property.\n * @param value Value of the property.\n * @returns The cloned value.\n */\n clone(type: Type, value: any): any;\n}\n\n/**\n * Interface describing a record class used in properties.\n *\n * ```ts\n * import {property, PropertyRecord} from '@wonderlandengine/api';\n * class Record implements PropertyRecord {\n * @property.string()\n * string: string;\n * @property.record(SubRecord)\n * subrecord: SubRecord;\n * }\n * ```\n *\n * @note Implementing `PropertyRecord` isn't required.\n */\nexport interface PropertyRecord {\n new (): unknown;\n /** Static properties definition, similar to {@link Component.Properties}. */\n Properties?: Record;\n /** @hidden */\n _propertyOrder?: string[];\n}\n\n/**\n * Default cloner implementation.\n *\n * Clones array-like properties and leaves all other types unchanged.\n */\nexport class DefaultPropertyCloner implements PropertyCloner {\n clone(type: Type, value: any): any {\n switch (type) {\n case Type.Color:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n case Type.Array:\n /** @todo: Array should be deep cloned. */\n return value.slice();\n case Type.Record: {\n if (!value || !value.constructor) return value;\n\n const RecordClass = value.constructor as PropertyRecord;\n const result = new RecordClass() as Record;\n for (const key in RecordClass.Properties) {\n const prop = RecordClass.Properties[key];\n result[key] = this.clone(prop.type, value[key]);\n }\n return result;\n }\n default:\n return value;\n }\n }\n}\n\n/** Default cloner for property values. */\nexport const defaultPropertyCloner = new DefaultPropertyCloner();\n\n/**\n * Custom component property.\n *\n * For more information about component properties, have a look\n * at the {@link Component.Properties} attribute.\n */\nexport interface ComponentProperty {\n /** Property type. */\n type: Type;\n /** Default value, depending on type. */\n default?: any;\n /** Values for {@link Type.Enum} */\n values?: string[];\n /** Record definition, used if the property type is {@link Type.Record}. */\n record?: PropertyRecord;\n element?: ComponentProperty;\n required?: boolean;\n /**\n * Cloner for the property.\n *\n * If not defined, falls back to {@link defaultPropertyCloner}. To prevent\n * any cloning, set a custom cloner that passes the original value back\n * from {@link PropertyCloner.clone}. */\n cloner?: PropertyCloner;\n}\n\n/**\n * Component property namespace.\n *\n * Usage:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myBool: Property.bool(true),\n * myInt: Property.int(42),\n * myString: Property.string('Hello World!'),\n * myMesh: Property.mesh()\n * }\n * }\n * ```\n *\n * It's possible to nest properties using record, and array:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Weapon {\n * static Properties = {\n * damage: Property.float(100.0),\n * fireRate: Property.int(10)\n * }\n * }\n * class Zombie {\n * static Properties = {\n * names: Property.string('Mad Zombie'),\n * animation: Property.animation()\n * }\n * }\n *\n * class Player extends Component {\n * static Properties = {\n * weapon: Property.record(Weapon),\n * zombieTargets: Property.array(Zombie),\n * }\n * }\n * ```\n *\n * For TypeScript users, you can use the decorators instead.\n */\nexport const Property = {\n /**\n * Create an boolean property.\n *\n * @param defaultValue The default value. If not provided, defaults to `false`.\n */\n bool(defaultValue: boolean = false): ComponentProperty {\n return {type: Type.Bool, default: defaultValue};\n },\n\n /**\n * Create an integer property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0`.\n */\n int(defaultValue: number = 0): ComponentProperty {\n return {type: Type.Int, default: defaultValue};\n },\n\n /**\n * Create an float property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0.0`.\n */\n float(defaultValue: number = 0.0): ComponentProperty {\n return {type: Type.Float, default: defaultValue};\n },\n\n /**\n * Create an string property.\n *\n * @param defaultValue The default value. If not provided, defaults to `''`.\n */\n string(defaultValue = ''): ComponentProperty {\n return {type: Type.String, default: defaultValue};\n },\n\n /**\n * Create an enumeration property.\n *\n * @param values The list of values.\n * @param defaultValue The default value. Can be a string or an index into\n * `values`. If not provided, defaults to the first element.\n */\n enum(values: string[], defaultValue?: string | number): ComponentProperty {\n return {type: Type.Enum, values, default: defaultValue};\n },\n\n /** Create an {@link Object3D} reference property. */\n object(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Object, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Mesh} reference property. */\n mesh(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Mesh, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Texture} reference property. */\n texture(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Texture, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Material} reference property. */\n material(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Material, default: null, required: opts?.required ?? false};\n },\n\n /** Create an {@link Animation} reference property. */\n animation(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Animation, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Skin} reference property. */\n skin(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Skin, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link ParticleEffect} reference property. */\n particleEffect(opts?: PropertyReferenceOptions): ComponentProperty {\n return {\n type: Type.ParticleEffect,\n default: null,\n required: opts?.required ?? false,\n };\n },\n\n /**\n * Create a color property.\n *\n * @param r The red component, in the range [0; 1].\n * @param g The green component, in the range [0; 1].\n * @param b The blue component, in the range [0; 1].\n * @param a The alpha component, in the range [0; 1].\n */\n color(r = 0.0, g = 0.0, b = 0.0, a = 1.0): ComponentProperty {\n return {type: Type.Color, default: [r, g, b, a]};\n },\n\n /**\n * Create a two-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n */\n vector2(x = 0.0, y = 0.0): ComponentProperty {\n return {type: Type.Vector2, default: [x, y]};\n },\n\n /**\n * Create a three-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n */\n vector3(x = 0.0, y = 0.0, z = 0.0): ComponentProperty {\n return {type: Type.Vector3, default: [x, y, z]};\n },\n\n /**\n * Create a four-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n * @param w The w component.\n */\n vector4(x = 0.0, y = 0.0, z = 0.0, w = 0.0): ComponentProperty {\n return {type: Type.Vector4, default: [x, y, z, w]};\n },\n\n /**\n * Create a class property.\n *\n * @param definition The template class, containing sub properties.\n */\n record(definition: PropertyRecord): ComponentProperty {\n return {type: Type.Record, record: definition, default: new definition()};\n },\n\n /**\n * Create an unsized array of properties.\n *\n * @note Array properties can only contain a single element type.\n *\n * @param element The element property.\n */\n array(element: ComponentProperty): ComponentProperty {\n /** @todo: Implement ArrayBuffer, which are much faster to decode */\n return {type: Type.Array, element, default: undefined};\n },\n};\n\n/**\n * Options to create a reference property, i.e.,\n * object, mesh, animation, skin, etc...\n */\nexport interface PropertyReferenceOptions {\n /** If `true`, the component will throw if the property isn't initialized. */\n required?: boolean;\n}\n\n/** All the keys that exists on the {@link Property} object. */\nexport type PropertyKeys = keyof typeof Property;\n\n/** Retrieve all the argument types of a {@link Property} function. */\nexport type PropertyArgs = Parameters<(typeof Property)[key]>;\n", "import {Component, ComponentConstructor} from './wonderland.js';\nimport {Property, PropertyArgs, PropertyKeys, ComponentProperty, Type} from './property.js';\n\n/**\n * Decorator for JS component properties.\n *\n * @param data The property description as an object literal\n * @returns A decorator function modifying the `Properties` static\n * attribute\n */\nfunction propertyDecorator(data: ComponentProperty) {\n return function (target: any, propertyKey: string): void {\n const ctor = target.constructor as ComponentConstructor;\n ctor.Properties = ctor.hasOwnProperty('Properties') ? ctor.Properties : {};\n ctor.Properties[propertyKey] = data;\n };\n}\n\n/**\n * Decorator for making a getter enumerable.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @enumerable()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function enumerable() {\n return function (_: any, __: string, descriptor: PropertyDescriptor) {\n descriptor.enumerable = true;\n };\n}\n\n/**\n * Decorator for native properties.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @nativeProperty()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function nativeProperty() {\n return function (\n target: Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n enumerable()(target, propertyKey, descriptor);\n propertyDecorator({type: Type.Native})(target, propertyKey);\n };\n}\n\n/**\n * Property decorators namespace.\n *\n * You can use the decorators to mark a class attribute as\n * a Wonderland Engine property.\n *\n * Usage:\n *\n * ```ts\n * import {Mesh} from '@wonderlandengine/api';\n * import {property} from '@wonderlandengine/api/decorators.js';\n *\n * class MyComponent extends Component {\n * @property.bool(true)\n * myBool!: boolean;\n *\n * @property.int(42)\n * myInt!: number;\n *\n * @property.string('Hello World!')\n * myString!: string;\n *\n * @property.mesh()\n * myMesh!: Mesh;\n * }\n * ```\n *\n * For JavaScript users, please declare the properties statically.\n */\nexport const property = {} as {\n [key in PropertyKeys]: (\n ...args: PropertyArgs\n ) => ReturnType;\n};\n\nfor (const name in Property) {\n /* Assign each property functor to a TypeScript decorator.\n * This code extracts parameters and return type to provide proper\n * typings to the user. */\n property[name as PropertyKeys] = (...args: PropertyArgs) => {\n const functor = Property[name as PropertyKeys] as (\n ...args: unknown[]\n ) => ComponentProperty;\n return propertyDecorator(functor(...args));\n };\n}\n", "import {ImageLike} from '../types.js';\n\n/**\n * Check if a given value is a native string or a `String` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type string literal or `String`, `false` otherwise.\n */\nexport function isString(value: any): value is string {\n if (value === '') return true;\n return value && (typeof value === 'string' || value.constructor === String);\n}\n\n/**\n * Check if a given value is a native number or a `Number` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type number literal or `Number`, `false` otherwise.\n */\nexport function isNumber(value: any): value is number {\n if (value === null || value === undefined) return false;\n return typeof value === 'number' || value.constructor === Number;\n}\n\n/**\n * Check whether a given value is a visual media.\n *\n * @param value The value to check\n * @returns `true` if the `value` is an image, video, or canvas.\n */\nexport function isImageLike(value: any): value is ImageLike {\n return (\n value instanceof HTMLImageElement ||\n value instanceof HTMLVideoElement ||\n value instanceof HTMLCanvasElement\n );\n}\n", "/**\n * Listener callback type, used in {@link Emitter.add}.\n */\nexport type ListenerCallback = (...data: T) => void;\n\n/**\n * Registration options for a listener in an {@link Emitter}.\n */\nexport interface ListenerOptions {\n /**\n * Listener identifier. This is used to find and remove the listener\n * without needing the callback reference.\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * For more information, please look at the {@link Emitter.remove} method.\n */\n id: any | undefined;\n /**\n * If `true`, the listener is automatically removed after it's invoked.\n * Defaults to `false`.\n */\n once: boolean;\n}\n\n/** Internal listener type. */\ntype Listener = ListenerOptions & {\n callback: ListenerCallback;\n};\n\n/** Internal type for transaction. */\nenum TransactionType {\n Addition = 1,\n Removal = 2,\n}\n\n/**\n * Event emitter.\n *\n * This class allows to register listeners that will get notified by the emitter.\n *\n * Usage example:\n *\n * ```js\n * // `onPreRender` is an `Emitter` instance.\n * scene.onPreRender.add(() => console.log('before rendering'));\n * // `onPostRender` is an `Emitter` instance.\n * scene.onPostRender.add(() => console.log('after rendering'));\n * ```\n *\n * You can create your own emitters:\n *\n * ```js\n * import {Emitter} from '@wonderlandengine/api';\n *\n * const emitter = new Emitter();\n * ```\n *\n * You can notify listeners in to your emitter using {@link Emitter.notify}:\n *\n * ```js\n * // Notifies all the listeners.\n * emitter.notify();\n * // Notifies all the listeners with some data.\n * emitter.notify({ myInt: 42, myStr: 'Hello World!' });\n * ```\n *\n * @category event\n */\nexport class Emitter {\n /**\n * List of listeners to trigger when `notify` is called.\n *\n * @hidden\n */\n protected readonly _listeners: Listener[] = [];\n\n /**\n * `true` if the emitter is currently notifying listeners. This\n * is used to defer addition and removal.\n *\n * @hidden\n */\n private _notifying = false;\n\n /**\n * Pending additions / removals, performed during a notification.\n *\n * @hidden\n */\n private readonly _transactions: {\n type: TransactionType;\n data: Listener | ListenerCallback;\n }[] = [];\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Basic usage:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * });\n * ```\n *\n * Automatically remove the listener when an event is received:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * }, {once: true});\n * ```\n *\n * @param listener The callback to register.\n * @param opts The listener options. For more information, please have a look\n * at the {@link ListenerOptions} interface.\n *\n * @returns Reference to self (for method chaining)\n */\n add(listener: ListenerCallback, opts: Partial = {}): this {\n const {once = false, id = undefined} = opts;\n const data = {id, once, callback: listener};\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Addition, data});\n return this;\n }\n this._listeners.push(data);\n return this;\n }\n\n /**\n * Equivalent to {@link Emitter.add}.\n *\n * @param listeners The callback(s) to register.\n * @returns Reference to self (for method chaining).\n *\n * @deprecated Please use {@link Emitter.add} instead.\n */\n push(...listeners: ListenerCallback[]): this {\n for (const cb of listeners) this.add(cb);\n return this;\n }\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Once notified, the listener will be automatically removed.\n *\n * The method is equivalent to calling {@link Emitter.add} with:\n *\n * ```js\n * emitter.add(listener, {once: true});\n * ```\n *\n * @param listener The callback to register.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback) {\n return this.add(listener, {once: true});\n }\n\n /**\n * Remove a registered listener.\n *\n * Usage with a callback:\n *\n * ```js\n * const listener = (data) => console.log(data);\n * emitter.add(listener);\n *\n * // Remove using the callback reference:\n * emitter.remove(listener);\n * ```\n *\n * Usage with an id:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'my-callback'});\n *\n * // Remove using the id:\n * emitter.remove('my-callback');\n * ```\n *\n * Using identifiers, you will need to ensure your value is unique to avoid\n * removing listeners from other libraries, e.g.,:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'non-unique'});\n * // This second listener could be added by a third-party library.\n * emitter.add((data) => console.log('Hello From Library!'), {id: 'non-unique'});\n *\n * // Ho Snap! This also removed the library listener!\n * emitter.remove('non-unique');\n * ```\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * Example:\n *\n * ```js\n * emitter.add(() => console.log('Hello'), {id: {value: 42}});\n * emitter.add(() => console.log('World!'), {id: {value: 42}});\n * emitter.remove({value: 42}); // None of the above listeners match!\n * emitter.notify(); // Prints 'Hello' and 'World!'.\n * ```\n *\n * Here, both emitters have id `{value: 42}`, but the comparison is made by reference. Thus,\n * the `remove()` call has no effect. We can make it work by doing:\n *\n * ```js\n * const id = {value: 42};\n * emitter.add(() => console.log('Hello'), {id});\n * emitter.add(() => console.log('World!'), {id});\n * emitter.remove(id); // Same reference, it works!\n * emitter.notify(); // Doesn't print.\n * ```\n *\n * @param listener The registered callback or a value representing the `id`.\n *\n * @returns Reference to self (for method chaining)\n */\n remove(listener: ListenerCallback | any): this {\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Removal, data: listener});\n return this;\n }\n\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) {\n listeners.splice(i--, 1);\n }\n }\n return this;\n }\n\n /**\n * Check whether the listener is registered.\n *\n * @note This method performs a linear search.\n *\n * * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n *\n * @param listener The registered callback or a value representing the `id`.\n * @returns `true` if the handle is found, `false` otherwise.\n */\n has(listener: ListenerCallback | any): boolean {\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) return true;\n }\n return false;\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note This method ensures all listeners are called even if\n * an exception is thrown. For (possibly) faster notification,\n * please use {@link Emitter.notifyUnsafe}.\n *\n * @param data The data to pass to listener when invoked.\n */\n notify(...data: T): void {\n const listeners = this._listeners;\n\n this._notifying = true;\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n try {\n listener.callback(...data);\n } catch (e) {\n console.error(e);\n }\n }\n this._notifying = false;\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note Because this method doesn't catch exceptions, some listeners\n * will be skipped on a throw. Please use {@link Emitter.notify} for safe\n * notification.\n *\n * @param data The data to pass to listener when invoked.\n */\n notifyUnsafe(...data: T): void {\n const listeners = this._listeners;\n\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n listener.callback(...data);\n }\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Return a promise that will resolve on the next event.\n *\n * @note The promise might never resolve if no event is sent.\n *\n * @returns A promise that resolves with the data passed to\n * {@link Emitter.notify}.\n */\n promise(): Promise {\n return new Promise((res, _) => {\n this.once((...args) => {\n if (args.length > 1) {\n res(args);\n } else {\n res(args[0] as T);\n }\n });\n });\n }\n\n /**\n * Number of listeners.\n *\n * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n */\n get listenerCount() {\n return this._listeners.length;\n }\n\n /** `true` if it has no listeners, `false` otherwise. */\n get isEmpty() {\n return this.listenerCount === 0;\n }\n\n /**\n * Flush all pending transactions.\n *\n * @hidden\n */\n private _flushTransactions() {\n const listeners = this._listeners;\n for (const transaction of this._transactions) {\n if (transaction.type === TransactionType.Addition) {\n listeners.push(transaction.data as Listener);\n } else {\n this.remove(transaction.data as ListenerCallback);\n }\n }\n this._transactions.length = 0;\n }\n}\n\n/**\n * Registration options for a listener in an {@link RetainEmitter}.\n *\n * Those options extend {@link ListenerOptions}.\n */\nexport interface RetainListenerOptions extends ListenerOptions {\n /**\n * If `true`, directly resolves if the emitter retains a value. If `false`,\n * the listener isn't invoked until the next {@link Emitter.notify}.\n *\n * Defaults to `true`.\n */\n immediate: boolean;\n}\n\n/* Dummy value used with RetainEmitter. */\nconst RetainEmitterUndefined: Record = {};\n\n/**\n * Event emitter that retains event data when notified.\n *\n * After a notification happens, subsequent calls to {@link RetainEmitter.add} will get\n * automatically notified.\n *\n * You can use another emitter in order to cancel the last retained event:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n *\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n * ```\n *\n * You can reset the state of the emitter, i.e., making it forget about the\n * last event using:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n *\n * // Reset the state of the emitter.\n * onStart.reset();\n * onStart.add((data) => console.log(data)) // Doesn't print anything.\n * ```\n *\n * For more information about emitters, please have a look at the base {@link Emitter} class.\n *\n * @category event\n */\nexport class RetainEmitter extends Emitter {\n /** Pre-resolved data. @hidden */\n protected _event: T | typeof RetainEmitterUndefined = RetainEmitterUndefined;\n\n /**\n * Emitter target used to reset the state of this emitter.\n *\n * @hidden\n */\n protected readonly _reset: Emitter | undefined;\n\n /** @override */\n add(listener: ListenerCallback, opts?: Partial): this {\n const immediate = opts?.immediate ?? true;\n if (this._event !== RetainEmitterUndefined && immediate) {\n listener(...(this._event as T));\n }\n super.add(listener, opts);\n return this;\n }\n\n /**\n * @override\n *\n * @param listener The callback to register.\n * @param immediate If `true`, directly resolves if the emitter retains a value.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback, immediate?: boolean) {\n return this.add(listener, {once: true, immediate});\n }\n\n /** @override */\n notify(...data: T): void {\n this._event = data;\n super.notify(...data);\n }\n\n /** @override */\n notifyUnsafe(...data: T): void {\n this._event = data;\n super.notifyUnsafe(...data);\n }\n\n /**\n * Reset the state of the emitter.\n *\n * Further call to {@link Emitter.add} will not automatically resolve,\n * until a new call to {@link Emitter.notify} is performed.\n *\n * @returns Reference to self (for method chaining)\n */\n reset(): this {\n this._event = RetainEmitterUndefined;\n return this;\n }\n\n /** Returns the retained data, or `undefined` if no data was retained. */\n get data(): T | undefined {\n return this.isDataRetained ? this._event : undefined;\n }\n\n /** `true` if data is retained from the last event, `false` otherwise. */\n get isDataRetained(): boolean {\n return this._event !== RetainEmitterUndefined;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Prefab} from '../prefab.js';\nimport {Scene} from '../scene.js';\nimport {FirstConstructorParam} from '../types.js';\n\n/** Interface for a resource class */\ntype ResourceConstructor = {\n new (host: FirstConstructorParam, index: number): T;\n};\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nfunction createDestroyedProxy(\n host: FirstConstructorParam,\n type: ResourceConstructor\n) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(\n `Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n set(_, param: string) {\n throw new Error(\n `Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n }\n );\n}\n\n/**\n * Base class for engine resources, such as:\n * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n *\n * @since 1.2.0\n */\nexport abstract class Resource {\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n private readonly _engine: WonderlandEngine;\n\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n this._id = index;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._index === other._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._index <= 0;\n }\n}\n\n/**\n * Base class for scene resources, such as:\n * * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n * - {@link Skin}\n * - {@link Animation}\n *\n * @since 1.2.0\n */\nexport abstract class SceneResource {\n /** @hidden */\n static _pack(scene: number, index: number) {\n return (scene << 22) | index;\n }\n\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n protected readonly _scene: Prefab;\n\n constructor(scene: Prefab, index: number) {\n this._scene = scene;\n this._index = index;\n this._id = SceneResource._pack(scene._index, index);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._id === other._id;\n }\n\n /** Hosting instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._id <= 0;\n }\n}\n\n/**\n * Manager for resources.\n *\n * Resources are accessed via the engine they belong to.\n *\n * @see {@link WonderlandEngine.textures}, {@link WonderlandEngine.meshes},\n * and {@link WonderlandEngine.materials}.\n *\n * @since 1.2.0\n */\nexport class ResourceManager {\n /** @hidden */\n protected readonly _host: FirstConstructorParam;\n /** Cache. @hidden */\n protected readonly _cache: (T | null)[] = [];\n\n /** Resource class. @hidden */\n private readonly _template: ResourceConstructor;\n\n /** Destructor proxy, used if {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`. @hidden */\n private _destructor: {} | null = null;\n\n private readonly _engine: WonderlandEngine;\n\n /**\n * Create a new manager\n *\n * @param host The host containing the managed resources.\n * @param Class The class to instantiate when wrapping an index.\n *\n * @hidden\n */\n constructor(host: FirstConstructorParam, Class: ResourceConstructor) {\n this._host = host;\n this._template = Class;\n this._engine = (host as Prefab).engine ?? host;\n }\n\n /**\n * Wrap the index into a resource instance.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index (if any).\n *\n * @param index The resource index.\n * @returns\n */\n wrap(index: number) {\n if (index <= 0) return null;\n const texture =\n this._cache[index] ??\n (this._cache[index] = new this._template(this._host, index));\n return texture;\n }\n\n /**\n * Retrieve the resource at the given index.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index.\n */\n get(index: number): T | null {\n return this._cache[index] ?? null;\n }\n\n /** Number of textures allocated in the manager. */\n get allocatedCount() {\n return this._cache.length;\n }\n\n /**\n * Number of textures in the manager.\n *\n * @note For performance reasons, avoid calling this method when possible.\n */\n get count() {\n let count = 0;\n for (const res of this._cache) {\n if (res && res.index >= 0) ++count;\n }\n return count;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Destroy the instance.\n *\n * @note This method takes care of the prototype destruction.\n *\n * @hidden\n */\n _destroy(instance: T) {\n const index = instance.index;\n (instance._index as number) = -1;\n (instance._id as number) = -1;\n this._cache[index] = null;\n\n if (!this.engine.erasePrototypeOnDestroy) return;\n\n if (!this._destructor)\n this._destructor = createDestroyedProxy(this._host, this._template);\n Object.setPrototypeOf(instance, this._destructor);\n }\n\n /**\n * Mark all instances as destroyed.\n *\n * @hidden\n */\n _clear() {\n if (!this.engine.erasePrototypeOnDestroy) return;\n for (let i = 0; i < this._cache.length; ++i) {\n const instance = this._cache[i];\n if (instance) this._destroy(instance);\n }\n this._cache.length = 0;\n }\n}\n", "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2016 Patrick Gansterer \n * Copyright (c) 2020-2023 Aaron Huggins \n * Copyright (c) 2024 Wonderland GmbH \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst kCborTagBignum = 2;\nconst kCborTagNegativeBignum = 3;\n/* RFC 8746 Tag values for typed little-endian arrays */\nconst kCborTagUint8 = 64;\nconst kCborTagUint16 = 69;\nconst kCborTagUint32 = 70;\nconst kCborTagUint64 = 71;\nconst kCborTagInt8 = 72;\nconst kCborTagInt16 = 77;\nconst kCborTagInt32 = 78;\nconst kCborTagInt64 = 79;\nconst kCborTagFloat32 = 85;\nconst kCborTagFloat64 = 86;\n\n/**\n * Whether key/value dictionaries should be decoded as objects or as\n * `Map`. The latter is useful if non-string keys or iterating in\n * insertion order are required.\n */\nexport type DictionaryOption = 'object' | 'map';\n\n/** Options for the decoder. */\nexport interface Options {\n /** The dictionary type to use. Defaults to `object`. */\n dictionary?: DictionaryOption;\n}\n\n/** A function to modify tagged values which are encountered during decoding. */\nexport type Tagger = (tag: number | bigint, value: any) => any;\n\n/**\n * Converts a Concise Binary Object Representation (CBOR) buffer into an object.\n *\n * ```js\n * const buffer = new Uint8Array([0xa2, 0x01, 0x02, 0x03, 0x04]).buffer;\n * const decoded = decode(buffer);\n * console.log(decoded); // { \"1\": 2, \"3\": 4 }\n * ```\n *\n * CBOR values can be wrapped in a numeric tag. To handle and possibly\n * transform tagged values, pass a tagger function:\n *\n * ```js\n * const buffer = new Uint8Array([\n * 0xa1, 0x63, 0x75, 0x72, 0x6c, 0xd8, 0x20, 0x70,\n * 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,\n * 0x69, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f\n * ]);\n * const decoded = decode(buffer, (tag, value) => {\n * if (tag === 32) return new URL(value);\n * return value;\n * });\n * console.log(decoded); // { url: URL { href: \"http://site.com/\" } }\n * ```\n *\n * Decoded basic types generally match the equivalent JavaScript types. Byte\n * strings are decoded to Uint8Array.\n *\n * Tagged values are left as-is, with the following exceptions:\n * - Bignum values (byte strings with tag 2 or 3) are decoded to BigInt\n * - Little-endian versions of typed arrays as defined in RFC 8746 are decoded\n * to JavaScript typed arrays\n *\n * @param data A valid CBOR buffer.\n * @param tagger Optional callback for transformation of tagged values.\n * @param options Options for decoding behavior.\n * @returns The CBOR buffer converted to a JavaScript value.\n */\nexport function decode(\n data: Uint8Array,\n tagger: Tagger = (_, value) => value,\n options: Options = {}\n): T {\n const reader = new CBORReader(data);\n reader.tagger = tagger;\n if (options.dictionary) {\n reader.dictionary = options.dictionary;\n }\n\n const ret = reader.decodeItem();\n if (reader.offset !== data.byteLength) {\n throw new Error('CBORError: Remaining bytes');\n }\n return ret;\n}\n\nexport enum CBORType {\n Array = 0,\n Record = 1,\n Constant = 2,\n Native = 3,\n}\n\n/**\n * Check whether the type is an array, a record,\n * or a native type (decodable without recursion).\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The type category.\n */\nexport function getType(typeInfo: number): CBORType {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n switch (majorType) {\n case 4:\n return CBORType.Array;\n case 5:\n return CBORType.Record;\n case 7:\n return CBORType.Constant;\n }\n return CBORType.Native;\n}\n\nexport function isUndefined(type: CBORType, length: number) {\n return type === CBORType.Constant && length === 23;\n}\n\n/**\n * CBOR reader.\n */\nexport class CBORReader {\n dataView: DataView;\n data: Uint8Array;\n offset: number;\n tagger: Tagger = (_, value) => value;\n dictionary: 'object' | 'map' = 'object';\n\n constructor(data: Uint8Array) {\n this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.data = data;\n this.offset = 0;\n }\n\n /* Wonderland extra methods. */\n\n /**\n * Read type information and move the cursor.\n *\n * @note Must be called before reading the value.\n */\n readTypeInfo() {\n return this.readUint8();\n }\n\n /**\n * Read the array length.\n *\n * @note Must not be called if the type is a constant.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The array length.\n */\n readArrayLength(typeInfo: number) {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n const length = this.readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n return length;\n }\n\n /* CBOR original decoding methods. */\n\n /**\n * Recursively read the item.\n *\n * @note This method will recursively allocate arrays and records\n * based the item type.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The decoded value.\n */\n readItem(typeInfo: number, inputLen: number | null = null): any {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n let i;\n\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return this.readFloat16();\n case 26:\n return this.readFloat32();\n case 27:\n return this.readFloat64();\n }\n }\n\n let length = inputLen === null ? this.readLength(additionalInformation) : inputLen;\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n\n switch (majorType) {\n case 0:\n return length;\n case 1:\n if (typeof length === 'number') {\n return -1 - length;\n }\n return -1n - length;\n case 2: {\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n fullArrayLength += length;\n elements.push(this.readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return this.readArrayBuffer(length as number).slice();\n }\n case 3: {\n /* Can't use TextDecoder.decode() because not all browsers\n * support calling it with an underlying SharedArrayBuffer yet.\n * See https://github.com/whatwg/encoding/issues/172 */\n /** @todo Re-evaluate browser support */\n const utf16data: number[] = [];\n if (length < 0) {\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n this.appendUtf16Data(utf16data, length);\n }\n } else {\n this.appendUtf16Data(utf16data, length as number);\n }\n let string = '';\n const DECODE_CHUNK_SIZE = 8192;\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n string += String.fromCharCode.apply(\n null,\n utf16data.slice(i, i + DECODE_CHUNK_SIZE)\n );\n }\n return string;\n }\n case 4: {\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!this.readBreak()) {\n retArray.push(this.decodeItem());\n }\n } else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = this.decodeItem();\n }\n }\n return retArray;\n }\n case 5: {\n if (this.dictionary === 'map') {\n const retMap = new Map();\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (retMap.has(key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retMap.set(key, this.decodeItem());\n }\n return retMap;\n }\n const retObject: any = {};\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (Object.prototype.hasOwnProperty.call(retObject, key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retObject[key] = this.decodeItem();\n }\n return retObject;\n }\n case 6: {\n const value = this.decodeItem();\n const tag = length;\n if (value instanceof Uint8Array) {\n switch (tag) {\n case kCborTagBignum:\n case kCborTagNegativeBignum:\n let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n);\n if (tag == kCborTagNegativeBignum) {\n num = -1n - num;\n }\n return num;\n /* Little-endian typed arrays (RFC 8746) */\n case kCborTagUint8:\n return value;\n case kCborTagInt8:\n return new Int8Array(value.buffer);\n case kCborTagUint16:\n return new Uint16Array(value.buffer);\n case kCborTagInt16:\n return new Int16Array(value.buffer);\n case kCborTagUint32:\n return new Uint32Array(value.buffer);\n case kCborTagInt32:\n return new Int32Array(value.buffer);\n case kCborTagUint64:\n return new BigUint64Array(value.buffer);\n case kCborTagInt64:\n return new BigInt64Array(value.buffer);\n case kCborTagFloat32:\n return new Float32Array(value.buffer);\n case kCborTagFloat64:\n return new Float64Array(value.buffer);\n }\n }\n return this.tagger(tag, value);\n }\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return length as number;\n }\n }\n }\n\n decodeItem(): any {\n const initialByte = this.readUint8();\n return this.readItem(initialByte);\n }\n\n readArrayBuffer(length: number) {\n return this.commitRead(\n length,\n this.data.subarray(this.offset, this.offset + length)\n );\n }\n readFloat16() {\n const POW_2_24 = 5.960464477539063e-8;\n\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = this.readUint16();\n\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n\n if (exponent === 0x7c00) exponent = 0xff << 10;\n else if (exponent !== 0) exponent += (127 - 15) << 10;\n else if (fraction !== 0) return (sign ? -1 : 1) * fraction * POW_2_24;\n\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n readFloat32(): number {\n return this.commitRead(4, this.dataView.getFloat32(this.offset));\n }\n readFloat64(): number {\n return this.commitRead(8, this.dataView.getFloat64(this.offset));\n }\n readUint8(): number {\n return this.commitRead(1, this.data[this.offset]);\n }\n readUint16(): number {\n return this.commitRead(2, this.dataView.getUint16(this.offset));\n }\n readUint32(): number {\n return this.commitRead(4, this.dataView.getUint32(this.offset));\n }\n readUint64(): bigint {\n return this.commitRead(8, this.dataView.getBigUint64(this.offset));\n }\n readBreak(): boolean {\n if (this.data[this.offset] !== 0xff) return false;\n this.offset += 1;\n return true;\n }\n readLength(additionalInformation: number): number | bigint {\n if (additionalInformation < 24) return additionalInformation;\n if (additionalInformation === 24) return this.readUint8();\n if (additionalInformation === 25) return this.readUint16();\n if (additionalInformation === 26) return this.readUint32();\n if (additionalInformation === 27) {\n const integer = this.readUint64();\n if (integer <= Number.MAX_SAFE_INTEGER) return Number(integer);\n return integer;\n }\n if (additionalInformation === 31) return -1;\n throw new Error('CBORError: Invalid length encoding');\n }\n\n readIndefiniteStringLength(majorType: number): number {\n const initialByte = this.readUint8();\n if (initialByte === 0xff) return -1;\n const length = this.readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error('CBORError: Invalid indefinite length element');\n }\n return Number(length);\n }\n appendUtf16Data(utf16data: number[], length: number) {\n for (let i = 0; i < length; ++i) {\n let value = this.readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (this.readUint8() & 0x3f);\n length -= 1;\n } else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 2;\n } else {\n value =\n ((value & 0x07) << 18) |\n ((this.readUint8() & 0x3f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 3;\n }\n }\n\n if (value < 0x10000) {\n utf16data.push(value);\n } else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n\n private commitRead(length: number, value: T): T {\n this.offset += length;\n return value;\n }\n}\n", "import {Prefab} from './prefab.js';\nimport {\n defaultPropertyCloner,\n ComponentProperty,\n Type,\n PropertyRecord,\n} from './property.js';\nimport {\n AnimationComponent,\n BrokenComponent,\n CollisionComponent,\n Component,\n ComponentConstructor,\n DestroyedComponentInstance,\n InputComponent,\n LightComponent,\n MeshComponent,\n Object3D,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n LogTag,\n inheritProperties,\n} from './wonderland.js';\n\nimport {CBORReader, CBORType, getType, isUndefined} from './utils/cbor.js';\n\n/** Native components list */\nexport interface NativeComponents {\n 'collision': CollisionComponent;\n 'text': TextComponent;\n 'view': ViewComponent;\n 'mesh': MeshComponent;\n 'input': InputComponent;\n 'light': LightComponent;\n 'animation': AnimationComponent;\n 'physx': PhysXComponent;\n 'particle-effect': ParticleEffectComponent;\n}\n\n/**\n * Manage all component managers in a scene.\n *\n * @hidden\n */\nexport class ComponentManagers {\n /** Animation manager index. */\n readonly animation: number = -1;\n /** Collision manager index. */\n readonly collision: number = -1;\n /** JavaScript manager index. */\n readonly js: number = -1;\n /** Physx manager index. */\n readonly physx: number = -1;\n /** View manager index. */\n readonly view: number = -1;\n\n /**\n * Component class instances per type to avoid GC.\n *\n * @note Maps the manager index to the list of components.\n *\n * @todo: Refactor ResourceManager and re-use for components.\n */\n private readonly _cache: (Component | null)[][] = [];\n /** Manager index to component class. */\n private readonly _constructors: ComponentConstructor[];\n /* Manager name to the manager index. */\n private readonly _nativeManagers: Map = new Map();\n\n /** Host instance. */\n private readonly _scene: Prefab;\n\n constructor(scene: Prefab) {\n this._scene = scene;\n const wasm = this._scene.engine.wasm;\n\n const native = [\n AnimationComponent,\n CollisionComponent,\n InputComponent,\n LightComponent,\n MeshComponent,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n ];\n this._cache = new Array(native.length);\n this._constructors = new Array(native.length);\n\n for (const Class of native) {\n const ptr = wasm.tempUTF8(Class.TypeName);\n const manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._constructors[manager] = Class;\n this._cache[manager] = [] as Component[];\n this._nativeManagers.set(Class.TypeName, manager);\n }\n\n this.animation = this._nativeManagers.get(AnimationComponent.TypeName)!;\n this.collision = this._nativeManagers.get(CollisionComponent.TypeName)!;\n this.physx = this._nativeManagers.get(PhysXComponent.TypeName)!;\n this.view = this._nativeManagers.get(ViewComponent.TypeName)!;\n\n const ptr = wasm.tempUTF8('js');\n this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._cache[this.js] = [] as Component[];\n }\n\n createJs(index: number, id: number, type: number, object: number) {\n const wasm = this._scene.engine.wasm;\n const ctor = wasm._componentTypes[type];\n if (!ctor) {\n throw new Error(`Type index ${type} isn't registered`);\n }\n\n const log = this._scene.engine.log;\n\n let component = null;\n try {\n component = new ctor(this._scene, this.js, id);\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during instantiation of component ${ctor.TypeName}`\n );\n log.error(LogTag.Component, e);\n component = new BrokenComponent(this._scene);\n }\n component._object = this._scene.wrap(object);\n\n try {\n component.resetProperties();\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during ${component.type} resetProperties() on object ${component.object.name}`\n );\n log.error(LogTag.Component, e);\n }\n\n this._scene._jsComponents[index] = component;\n\n /* Add to cache. This is required because destruction is\n * ID-based and not index-based. */\n this._cache[this.js][id] = component;\n\n return component;\n }\n\n /**\n * Get components of type T.\n *\n * @param type Component class.\n * @returns An array containing all components in this scene.\n */\n components(type: ComponentConstructor, active: boolean): T[] {\n return this.componentsFromTypename(type.TypeName, active) as T[];\n }\n\n /**\n * Similar to {@link getComponents}, but directly from string.\n *\n * @param typename The component `TypeName` attribute.\n */\n componentsFromTypename(typename: string, active: boolean): Component[] {\n const wasm = this._scene.engine.wasm;\n\n const manager = this.getNativeManager(typename) ?? this.js;\n const subTypeIndex =\n manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0;\n\n const maxRead = wasm._tempMemSize / 4;\n const components: Component[] = [];\n let read = 0;\n let offset = 0;\n while (\n (read = wasm._wl_scene_get_components(\n this._scene._index,\n manager,\n subTypeIndex,\n active,\n offset,\n maxRead,\n wasm._tempMem\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n const id = wasm._tempMemUint32[i];\n components.push(this.wrapAny(manager, id) as Component);\n }\n /* Offset by `maxRead` because js components of different types are contiguous.\n * `read` could be less than `maxRead`, and we want to skip all\n * the components already processed. */\n offset += maxRead;\n }\n\n return components;\n }\n\n /**\n * Get component of type T.\n *\n * @note Currently only works for native components, but we will extend this later (and expose it in the API)\n */\n componentAt(type: ComponentConstructor, index: number): T {\n const wasm = this._scene.engine.wasm;\n const manager = this.getNativeManager(type.TypeName)!;\n const id = wasm._wl_scene_get_component(this._scene._index, manager, index);\n return this.wrapAny(manager, id) as T;\n }\n\n /**\n * Retrieve a cached component.\n *\n * @param manager The manager index.\n * @param id The component id.\n * @returns The component if cached, `null` otherwise.\n */\n get(manager: number, id: number) {\n return this._cache[manager][id] ?? null;\n }\n\n /**\n * Wrap the animation.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAnimation(id: number): AnimationComponent {\n return this.wrapNative(this.animation, id) as AnimationComponent;\n }\n\n /**\n * Wrap the collision.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapCollision(id: number): CollisionComponent {\n return this.wrapNative(this.collision, id) as CollisionComponent;\n }\n\n /**\n * Wrap the view.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapView(id: number): ViewComponent {\n return this.wrapNative(this.view, id) as ViewComponent;\n }\n\n /**\n * Wrap the physx.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapPhysx(id: number): PhysXComponent {\n return this.wrapNative(this.physx, id) as PhysXComponent;\n }\n\n /**\n * Retrieves a component instance if it exists, or create and cache\n * a new one.\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link Object3D.addComponent} instead.\n *\n * @param componentType Component manager index\n * @param componentId Component id in the manager\n *\n * @returns JavaScript instance wrapping the native component\n */\n wrapNative(manager: number, id: number) {\n if (id < 0) return null;\n\n const cache = this._cache[manager];\n if (cache[id]) return cache[id];\n\n const scene = this._scene;\n const Class = this._constructors[manager];\n const component = new Class(scene, manager, id);\n cache[id] = component;\n return component;\n }\n\n /**\n * Wrap a native or js component.\n *\n * @throws For JavaScript components that weren't previously cached,\n * since that would be a bug in the runtime / api.\n *\n * @param manager The manager index.\n * @param id The id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAny(manager: number, id: number) {\n if (id < 0) return null;\n\n if (manager === this.js) {\n const found = this._cache[this.js][id];\n if (!found) {\n throw new Error('JS components must always be cached');\n }\n return found.constructor !== BrokenComponent ? found : null;\n }\n\n return this.wrapNative(manager, id);\n }\n\n getNativeManager(name: string): number | null {\n const manager = this._nativeManagers.get(name);\n return manager !== undefined ? manager : null;\n }\n\n /**\n * Perform cleanup upon component destruction.\n *\n * @param instance The instance to destroy.\n *\n * @hidden\n */\n destroy(instance: Component) {\n const localId = instance._localId;\n const manager = instance._manager;\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n (instance._manager as number) = -1;\n\n const erasePrototypeOnDestroy = this._scene.engine.erasePrototypeOnDestroy;\n /* Destroy the prototype of this instance to avoid using a dangling component */\n if (erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedComponentInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating a component with the same id. */\n this._cache[manager][localId] = null;\n }\n\n /** Number of managers **registered** in the scene, i.e., `js`, `names`, etc... */\n get managersCount() {\n return this._scene.engine.wasm._wl_scene_get_component_manager_count(\n this._scene._index\n );\n }\n}\n\nexport function resetComponentProperties(record: Component) {\n const ctor = record.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return;\n for (const name in properties) {\n const property = properties[name];\n const cloner = property.cloner ?? defaultPropertyCloner;\n (record as Record)[name] = cloner.clone(\n property.type,\n property.default\n );\n }\n}\n\nexport function setupComponentClass(ctor: ComponentConstructor | PropertyRecord) {\n inheritProperties(ctor);\n /** @todo: Merge the _setupDefaults and _setPropertyOrder calls with this function. */\n for (const name in ctor.Properties) {\n const prop = ctor.Properties[name];\n let record = null;\n switch (prop.type) {\n case Type.Record:\n record = prop.record;\n break;\n case Type.Array:\n record = prop.element?.record;\n break;\n default:\n break;\n }\n if (record && !record._propertyOrder) setupComponentClass(record);\n }\n _setupDefaults(ctor);\n _setPropertyOrder(ctor);\n}\n\n/**\n * Decode component properties from CBOR encoded data.\n *\n * ## Failure\n *\n * When decoding properties, failures will not be treated as errors. Failures include:\n * - Invalid parameters count\n * - Wrongly defined property\n *\n * When a failure occurs, the cbor reader will be consumed to prevent\n * errors to cascade in the following components.\n */\nexport class ComponentPropertyDecoder {\n scene: Prefab;\n offsets: Uint32Array;\n\n constructor(scene: Prefab, offsets: Uint32Array) {\n this.scene = scene;\n this.offsets = offsets;\n }\n\n decode(cbor: CBORReader, component: Component) {\n const ctor = component.constructor as ComponentConstructor;\n if (!ctor._propertyOrder) setupComponentClass(ctor);\n\n const typeInfo = cbor.readTypeInfo();\n if (ctor === BrokenComponent) {\n return cbor.readItem(typeInfo); /* Consumme the cbor state */\n }\n\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array) {\n this._error(`${component} parameters not encoded as an array.`);\n return cbor.readItem(typeInfo);\n }\n\n const paramNames = ctor._propertyOrder;\n const count = cbor.readArrayLength(typeInfo) as number;\n if (count !== paramNames.length) {\n this._error(\n `${component} has ${count} parameters encoded, but expected ${paramNames.length}`\n );\n return cbor.readItem(typeInfo, count);\n }\n\n for (let j = 0; j < count; ++j) {\n const name = paramNames[j];\n const property = ctor.Properties[name];\n (component as any)[name] = this.decodeProperty(cbor, name, property);\n }\n }\n\n decodeProperty(cbor: CBORReader, name: string, property: ComponentProperty) {\n const typeInfo = cbor.readTypeInfo();\n\n if (property.type === Type.Record) {\n return this.decodeRecordProperty(cbor, name, property, typeInfo);\n } else if (property.type === Type.Array) {\n return this.decodeArrayProperty(cbor, name, property, typeInfo);\n }\n\n let value = cbor.readItem(typeInfo);\n\n /* Default values are sent as undefined to avoid wasting space */\n if (value === undefined) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n value = cloner.clone(property.type, property.default);\n return value;\n }\n /* This skips unset resource parameters as those are sent\n * directly with type null. Offsets for Int and Float types\n * should always be 0. */\n /** @todo CBOR tag to mark resources? Wastes a byte though. */\n if (typeof value === 'number') {\n value += this.offsets[property.type];\n }\n\n const engine = this.scene.engine;\n switch (property.type) {\n case Type.Bool:\n case Type.Int:\n case Type.Float:\n case Type.String:\n case Type.Enum:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n /* Nothing to do */\n return value;\n case Type.Object: {\n const wasm = engine.wasm;\n return value\n ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value))\n : null;\n }\n case Type.Mesh:\n return engine.meshes.wrap(value);\n case Type.Texture:\n return engine.textures.wrap(value);\n case Type.Material:\n return engine.materials.wrap(value);\n case Type.ParticleEffect:\n return engine.particleEffects.wrap(value);\n case Type.Animation:\n return this.scene.animations.wrap(value);\n case Type.Skin:\n return this.scene.skins.wrap(value);\n case Type.Color: {\n /* Colors are sent as Uint8Array. Normalize positive\n * integer values to 0-1. Don't assume any bit size\n * here, could become Uint16Array as well. */\n const max = (1 << (value.BYTES_PER_ELEMENT * 8)) - 1;\n return Float32Array.from(value, (f: number, _) => f / max);\n }\n }\n }\n\n decodeRecordProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Record parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return null;\n }\n const record = property.record;\n if (!record) {\n this._error(`Record parameter '${name}' .record is undefined`);\n cbor.readItem(typeInfo);\n return null;\n }\n\n if (!record._propertyOrder) setupComponentClass(record);\n const propertyOrder = record._propertyOrder as string[];\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n return cloner.clone(property.type, property.default);\n }\n\n const result = new (record as any)();\n if (count !== propertyOrder.length) {\n const propsCount = propertyOrder.length;\n this._error(\n `Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`\n );\n cbor.readItem(typeInfo, count);\n return result;\n }\n const order = record._propertyOrder!;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n const prop = record.Properties![key];\n (result as any)[key] = this.decodeProperty(cbor, key, prop);\n }\n return result;\n }\n\n decodeArrayProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const log = this.scene.engine.log;\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Array parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n if (!property.element) {\n this._error(`Array parameter '${name}' .element property is undefined`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) return [];\n\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n result[i] = this.decodeProperty(cbor, name, property.element);\n }\n return result;\n }\n\n private _error(msg: string) {\n const log = this.scene.engine.log;\n log.error(LogTag.Engine, msg);\n }\n}\n\n/**\n * Default component parameter value per type.\n */\nconst _componentDefaults = new Map([\n [Type.Bool, false],\n [Type.Int, 0],\n [Type.Float, 0.0],\n [Type.String, ''],\n [Type.Enum, undefined],\n [Type.Object, null],\n [Type.Mesh, null],\n [Type.Texture, null],\n [Type.Material, null],\n [Type.Animation, null],\n [Type.Skin, null],\n [Type.ParticleEffect, null],\n [Type.Color, Float32Array.from([0.0, 0.0, 0.0, 1.0])],\n [Type.Vector2, Float32Array.from([0.0, 0.0])],\n [Type.Vector3, Float32Array.from([0.0, 0.0, 0.0])],\n [Type.Vector4, Float32Array.from([0.0, 0.0, 0.0, 0.0])],\n [Type.Record, undefined],\n [Type.Array, []],\n]);\n\n/**\n * Setup the defaults value of the properties on a given\n * component class.\n *\n * @param ctor The component class\n */\nfunction _setupDefaults(ctor: ComponentConstructor | PropertyRecord) {\n for (const name in ctor.Properties) {\n const p = ctor.Properties[name];\n\n if (p.type === Type.Enum) {\n /* Enum default can be a string or an index. Convert to and/or\n * sanity-check the index. */\n if (p.values?.length) {\n /* Don't try to look up the default if the user specified a\n * number or we already converted to one. */\n if (typeof p.default !== 'number') {\n /* If undefined, missing element or wrong type this returns\n * -1 which becomes 0 below. This matches editor behavior. */\n p.default = p.values.indexOf(p.default);\n }\n if (p.default < 0 || p.default >= p.values.length) {\n p.default = 0;\n }\n } else {\n /* There's no index value that makes sense */\n p.default = undefined;\n }\n } else if (\n (p.type === Type.Color ||\n p.type === Type.Vector2 ||\n p.type === Type.Vector3 ||\n p.type === Type.Vector4) &&\n Array.isArray(p.default)\n ) {\n /* Defaults provided by user code are currently always a standard\n * array, but become a typed array on the property */\n p.default = Float32Array.from(p.default);\n } else if (p.type === Type.Record && p.record) {\n p.default = new p.record();\n resetComponentProperties(p.default);\n } else if (p.default === undefined) {\n const cloner = p.cloner ?? defaultPropertyCloner;\n p.default = cloner.clone(p.type, _componentDefaults.get(p.type));\n }\n ctor.prototype[name] = p.default;\n }\n}\n\n/**\n * Determines a fixed order for property attributes used for deserialization.\n *\n * @param ctor The component class\n */\nfunction _setPropertyOrder(ctor: ComponentConstructor | PropertyRecord) {\n ctor._propertyOrder = ctor.hasOwnProperty('Properties')\n ? Object.keys(ctor.Properties!).sort()\n : [];\n}\n", "import {ImageLike, ProgressCallback} from '../types.js';\n\n/**\n * Transformer for {@link TransformStream} that passes read progress to a\n * callback.\n *\n * Invokes the callback for each streamed chunk, and one final time when the\n * stream closes.\n *\n * @hidden\n */\nclass FetchProgressTransformer implements Transformer {\n #progress = 0;\n #callback: ProgressCallback;\n #totalSize: number;\n\n /**\n * Constructor.\n * @param callback Callback that receives the progress.\n * @param totalSize Total size of the data. Pass 0 to indicate that the\n * size is unknown, then the callback will only be called once after\n * all data was transferred.\n */\n constructor(callback: ProgressCallback, totalSize = 0) {\n this.#callback = callback;\n this.#totalSize = totalSize;\n }\n\n transform(chunk: Uint8Array, controller: TransformStreamDefaultController) {\n controller.enqueue(chunk);\n this.#progress += chunk.length;\n if (this.#totalSize > 0) {\n this.#callback(this.#progress, this.#totalSize);\n }\n }\n\n flush() {\n this.#callback(this.#progress, this.#progress);\n }\n}\n\n/**\n * Sink for `WritableStream` that writes data to an `ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSink implements UnderlyingSink {\n #buffer: Uint8Array;\n #offset = 0;\n\n /**\n * Constructor.\n * @param size Initial size of the buffer. If less than the received data,\n * the buffer is dynamically reallocated.\n */\n constructor(size = 0) {\n this.#buffer = new Uint8Array(size);\n }\n\n /** Get the received data as an `ArrayBuffer`. */\n get arrayBuffer() {\n const arrayBuffer = this.#buffer.buffer;\n if (this.#offset < arrayBuffer.byteLength) {\n return arrayBuffer.slice(0, this.#offset);\n }\n return arrayBuffer;\n }\n\n write(chunk: Uint8Array) {\n const newLength = this.#offset + chunk.length;\n if (newLength > this.#buffer.length) {\n const newBuffer = new Uint8Array(\n Math.max(this.#buffer.length * 1.5, newLength)\n );\n newBuffer.set(this.#buffer);\n this.#buffer = newBuffer;\n }\n this.#buffer.set(chunk, this.#offset);\n this.#offset = newLength;\n }\n}\n\n/**\n * Source for `ReadableStream` that reads data from an`ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSource implements UnderlyingSource {\n #buffer: ArrayBuffer;\n\n /**\n * Constructor.\n * @param buffer Buffer to read from.\n */\n constructor(buffer: ArrayBuffer) {\n this.#buffer = buffer;\n }\n\n start(controller: ReadableStreamController) {\n if (this.#buffer.byteLength > 0) {\n controller.enqueue(new Uint8Array(this.#buffer));\n }\n controller.close();\n }\n}\n\n/**\n * Fetch a file as an `ArrayBuffer`, with fetch progress passed to a callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n if (!onProgress || !res.body) return res.arrayBuffer();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n const sink = new ArrayBufferSink(size);\n await res.body\n .pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size)))\n .pipeTo(new WritableStream(sink));\n return sink.arrayBuffer;\n}\n\n/**\n * Fetch a file as a `ReadableStream`, with fetch progress passed to a\n * callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchStreamWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise> {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n const body = res.body ?? new ReadableStream();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n if (!onProgress) return body;\n const stream = body.pipeThrough(\n new TransformStream(new FetchProgressTransformer(onProgress, size))\n );\n return stream;\n}\n\n/**\n * Get parent path from a URL.\n *\n * @param url URL to get the parent from.\n * @returns Parent URL without trailing slash.\n */\nexport function getBaseUrl(url: string): string {\n return url.substring(0, url.lastIndexOf('/'));\n}\n\n/**\n * Get the filename of a url.\n *\n * @param url The url to extract the name from.\n * @returns A string containing the filename. If no filename is found,\n * returns the input string.\n */\nexport function getFilename(url: string): string {\n if (url.endsWith('/')) {\n /* Remove trailing slash. */\n url = url.substring(0, url.lastIndexOf('/'));\n }\n const lastSlash = url.lastIndexOf('/');\n if (lastSlash < 0) return url;\n return url.substring(lastSlash + 1);\n}\n\n/**\n * Promise resolved once the image is ready to be used\n *\n * @param image The image, video, or canvas to wait for.\n * @returns A promise with the image, once it's ready to be used.\n */\nexport function onImageReady(image: T): Promise {\n return new Promise((res, rej) => {\n if (image instanceof HTMLVideoElement) {\n if (image.readyState >= 2) {\n res(image as T);\n return;\n }\n image.addEventListener(\n 'loadeddata',\n () => {\n if (image.readyState >= 2) res(image);\n },\n {once: true}\n );\n return;\n } else if (\n !(image instanceof HTMLImageElement) ||\n (image as HTMLImageElement).complete\n ) {\n res(image);\n return;\n }\n image.addEventListener('load', () => res(image), {once: true});\n image.addEventListener('error', rej, {once: true});\n });\n}\n", "import {ComponentManagers, NativeComponents} from './component.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ResourceManager, SceneResource} from './resources/resource.js';\nimport {ProgressCallback} from './types.js';\nimport {\n fetchStreamWithProgress,\n fetchWithProgress,\n getBaseUrl,\n getFilename,\n onImageReady,\n} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Animation,\n CollisionCallback,\n Component,\n ComponentConstructor,\n DestroyedObjectInstance,\n Object3D,\n Skin,\n} from './wonderland.js';\n\n/** Scene loading options. */\nexport interface SceneLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n}\n\n/** Loading options for in-memory data. */\nexport interface InMemoryLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/**\n * Loading options for streamed data.\n *\n * @hidden\n */\nexport interface StreamLoadOptions {\n /** Stream that transfers the bytes of a `.bin` file. */\n stream: ReadableStream;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n}\n\n/** Options for loading files from a URL. */\nexport interface UrlLoadOptions {\n /** URL to load. */\n url: string;\n /** Signal to abort the file fetch request. */\n signal?: AbortSignal;\n /**\n * Whether to load the file as parts of it are fetched. If `false`,\n * fetches the entire file first before loading. Streamed loading reduces\n * memory usage. If not set, defaults to `true`.\n */\n streamed?: boolean;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/** Options used during loading. */\nexport type LoadOptions = string | (UrlLoadOptions & Partial);\n\n/**\n * Base class for prefabs, scenes, and glTF.\n *\n * For more information have a look at the derived types:\n * - {@link Scene} for Wonderland Engine activatable scenes (.bin)\n * - {@link PrefabGLTF} for glTF scenes\n *\n * #### Resources\n *\n * While **meshes**, **textures**, and **materials** are shared\n * on the {@link WonderlandEngine} instance, a scene comes with:\n * - Animations: Managed using {@link Prefab.animations}\n * - Skins: Managed using {@link Prefab.skins}\n *\n * Those resources are bound to the object hierarchy and are thus required to be\n * per-scene.\n *\n * #### Destruction\n *\n * For now, destroying a scene doesn't automatically remove the resources it\n * references in the engine. For more information, have a look at the\n * {@link Scene.destroy} method.\n *\n * #### Isolation\n *\n * It's forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addChild();\n * const objB = sceneB.addChild();\n * objA.parent = objB; // Throws\n * ```\n *\n * @category scene\n *\n * @since 1.2.0\n */\nexport class Prefab {\n /**\n * Create an object with shape `{url: string}`.\n *\n * - If the parameter is a string, a new object is returned\n * - If the parameter is an object, the same reference is returned\n *\n * @param options The url or options object.\n * @returns An object of the form `{url: string, ...}`.\n *\n * @hidden\n */\n static makeUrlLoadOptions(options: LoadOptions): UrlLoadOptions & Partial {\n return isString(options)\n ? ({url: options} as UrlLoadOptions & Partial)\n : options;\n }\n\n /**\n * Load an `ArrayBuffer` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns An {@link InMemoryLoadOptions} object.\n *\n * @hidden\n */\n static async loadBuffer(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const buffer = await fetchWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, buffer, baseURL, filename};\n }\n\n /**\n * Load a `ReadableStream` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns A {@link StreamLoadOptions} object.\n *\n * @hidden\n */\n static async loadStream(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const stream = await fetchStreamWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, stream, baseURL, filename};\n }\n\n /**\n * Validate the in-memory load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateBufferOptions(options: InMemoryLoadOptions): {\n buffer: ArrayBuffer;\n baseURL: string;\n url: string;\n } {\n const {buffer, baseURL, filename = 'scene.bin'} = options;\n if (!buffer) {\n throw new Error(\"missing 'buffer' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {buffer, baseURL, url};\n }\n\n /**\n * Validate the stream load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateStreamOptions(options: StreamLoadOptions): {\n stream: ReadableStream;\n baseURL: string;\n url: string;\n } {\n const {stream, baseURL, filename = 'scene.bin'} = options;\n if (!stream) {\n throw new Error(\"missing 'stream' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {stream, baseURL, url};\n }\n\n /** Index in the scene manager. @hidden */\n readonly _index;\n /** @hidden */\n protected _engine: WonderlandEngine;\n\n /**\n * Component manager caching to avoid GC.\n *\n * @hidden\n */\n readonly _components: ComponentManagers;\n /**\n * JavaScript components for this scene.\n *\n * This array is moved into the WASM instance upon activation.\n *\n * @hidden\n */\n readonly _jsComponents: Component[] = [];\n\n /**\n * The map is indexed using the physx component id.\n *\n * @hidden\n */\n readonly _pxCallbacks: Map = new Map();\n\n /** @hidden */\n private readonly _animations;\n /** @hidden */\n private readonly _skins;\n\n /**\n * Object class instances to avoid GC.\n *\n * @hidden\n */\n private readonly _objectCache: (Object3D | null)[] = [];\n\n /**\n * `onDestroy()` depth.\n *\n * Multiple components can stack `onDestroy()` calls.\n */\n private _pendingDestroy: number = 0;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n\n this._components = new ComponentManagers(this);\n this._animations = new ResourceManager(this as Prefab, Animation);\n this._skins = new ResourceManager(this as Prefab, Skin);\n }\n\n /**\n * Add a new {@link Object3D} to the root object.\n *\n * See {@link Object3D.addChild} for more information.\n *\n * @returns A new {@link Object3D}.\n */\n addChild() {\n return this.wrap(0).addChild();\n }\n\n /**\n * Add an object to the scene.\n *\n * Alternatively, you can use {@link Prefab.addChild} to add the object\n * to the root, or {@link Object3D.addChild} to add the object to a given parent:\n *\n * ```js\n * const parent = scene.addChild();\n * const child = parent.addChild();\n * // Equivalent using scene.addObject\n * const sibling = scene.addObject(parent);\n * ```\n *\n * @param parent Parent object or `null`.\n * @returns A newly created object.\n */\n addObject(parent: Object3D | null = null): Object3D {\n if (parent?.markedDestroyed) {\n throw new Error(`Failed to add object. ${parent} is marked as destroyed.`);\n }\n this.assertOrigin(parent);\n return (parent ?? this.wrap(0)).addChild();\n }\n\n /**\n * Batch-add objects to the scene.\n *\n * Will provide better performance for adding multiple objects (e.g. > 16)\n * than calling {@link Scene#addObject} repeatedly in a loop.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * convervatively grow the memory in small steps.\n *\n * @experimental This API might change in upcoming versions.\n *\n * @param count Number of objects to add.\n * @param parent Parent object or `null`, default `null`.\n * @param componentCountHint Hint for how many components in total will\n * be added to the created objects afterwards, default `0`.\n * @returns Newly created objects\n */\n addObjects(\n count: number,\n parent: Object3D | null = null,\n componentCountHint: number = 0\n ): Object3D[] {\n const parentId = parent ? parent._id : 0;\n this.engine.wasm.requireTempMem(count * 2);\n const actualCount = this.engine.wasm._wl_scene_add_objects(\n this._index,\n parentId,\n count,\n componentCountHint || 0,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount);\n const wrapper = this.wrap.bind(this);\n const objects = Array.from(ids, wrapper);\n return objects;\n }\n\n /**\n * Pre-allocate memory for a given amount of objects and components.\n *\n * Will provide better performance for adding objects later with {@link Scene#addObject}\n * and {@link Scene#addObjects}.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * conservatively grow the memory in small steps.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * @param objectCount Number of objects to add.\n * @param componentCountPerType Amount of components to\n * allocate for {@link Object3D.addComponent}, e.g. `{mesh: 100, collision: 200, \"my-comp\": 100}`.\n * @since 0.8.10\n */\n reserveObjects(objectCount: number, componentCountPerType: Record) {\n const wasm = this.engine.wasm;\n if (!componentCountPerType) return;\n\n const countsPerTypeIndex = wasm._tempMemInt;\n const managerCount = this._components.managersCount;\n for (let i = 0; i < managerCount; ++i) countsPerTypeIndex[i] = 0;\n\n const names = Object.keys(componentCountPerType);\n for (const name of names) {\n const count = componentCountPerType[name];\n const nativeIndex = this._components.getNativeManager(name);\n countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] +=\n count;\n }\n wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem);\n }\n\n /**\n * Root object's children.\n *\n * See {@link Object3D.getChildren} for more information.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const root = this.wrap(0);\n return root.getChildren(out);\n }\n\n /** @overload */\n getComponents(typeOrClass: K): NativeComponents[K][];\n /** @overload */\n getComponents(typeOrClass: string): Component[];\n /**\n * Get all the components of a given type.\n *\n * #### Usage\n *\n * ```js\n * const meshes = scene.getComponents('mesh');\n * const zombies = scene.getComponents(ZombieComponent);\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, false);\n }\n\n /** @overload */\n getActiveComponents(\n typeOrClass: K\n ): NativeComponents[K][];\n /** @overload */\n getActiveComponents(typeOrClass: string): Component[];\n /**\n * Get all the **active** components of a given type.\n *\n * ```js\n * const zombies = scene.getActiveComponents(ZombieComponent);\n * for(const zombie of zombies) zombie.active = false;\n *\n * const list = scene.getActiveComponents(ZombieComponent);\n * console.log(list.length); // Prints `0`\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getActiveComponents(typeOrClass: ComponentConstructor): T[];\n getActiveComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, true);\n }\n\n /**\n * Top-level objects of this scene.\n *\n * See {@link Object3D.children} for more information.\n *\n * @since 1.2.0\n */\n get children(): Object3D[] {\n const root = this.wrap(0);\n return root.children;\n }\n\n /** The number of children of the root object. */\n get childrenCount(): number {\n const root = this.wrap(0);\n return this.engine.wasm._wl_object_get_children_count(root._id);\n }\n\n /**\n * Search for objects matching the name.\n *\n * See {@link Object3D.findByName} for more information.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the objects of\n * this scene. If `false`, this method will only perform the search in\n * root objects.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n const root = this.wrap(0);\n return root.findByName(name, recursive);\n }\n\n /**\n * Search for all **top-level** objects matching the name.\n *\n * See {@link Object3D.findByNameDirect} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameDirect(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameDirect(name);\n }\n\n /**\n * Search for **all objects** matching the name.\n *\n * See {@link Object3D.findByNameRecursive} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameRecursive(name);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n *\n * @returns The object\n */\n wrap(objectId: number): Object3D {\n const cache = this._objectCache;\n const o = cache[objectId] || (cache[objectId] = new Object3D(this, objectId));\n return o;\n }\n\n /**\n * Destroy the scene.\n *\n * For now, destroying a scene doesn't remove the resources it references. Thus,\n * you will need to reload a main scene to free the memory.\n *\n * For more information about destruction, have a look at the {@link Scene.destroy} method.\n */\n destroy() {\n if (this._pendingDestroy > 0) {\n throw new Error(\"It's forbidden to destroy a scene from onDestroy().\");\n }\n this._pxCallbacks.clear();\n this.engine._destroyScene(this);\n }\n\n /* Public Getters & Setters */\n\n /**\n * `true` if the scene is active, `false` otherwise.\n *\n * Always false for {@link Prefab} and {@link PrefabGLTF}.\n */\n get isActive() {\n return !!this.engine.wasm._wl_scene_active(this._index);\n }\n\n /**\n * Relative directory of the scene that was loaded.\n *\n * This is used for loading any files relative to the scene.\n */\n get baseURL(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_baseURL(this._index);\n if (!ptr) return '';\n\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Filename used when loading the file.\n *\n * If the scenes was loaded from memory and no filename was provided,\n * this accessor will return an empty string.\n */\n get filename(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_filename(this._index);\n if (!ptr) return '';\n return wasm.UTF8ToString(ptr);\n }\n\n /** Animation resources */\n get animations() {\n return this._animations;\n }\n\n /** Skin resources */\n get skins() {\n return this._skins;\n }\n\n /** Hosting engine instance. */\n get engine(): WonderlandEngine {\n return this._engine;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed(): boolean {\n return this._index < 0;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Scene(destroyed)';\n }\n return `Scene('${this.filename}', ${this._index})`;\n }\n\n /**\n * Checks that the input's scene is the same as this instance.\n *\n * It is forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addObject();\n * const objB = sceneA.addObject();\n * objA.parent = objB; // Throws\n * ```\n *\n * @param other Object / component to check.\n *\n * @throws If other's scene isn't the same reference as this.\n */\n assertOrigin(other: Object3D | Component | SceneResource | undefined | null) {\n if (other && (other.scene as Prefab) !== this) {\n throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`);\n }\n }\n\n /**\n * Download components and initialize the scene.\n *\n * @hidden\n */\n _initialize() {\n const wasm = this.engine.wasm;\n /* Initialize component parameters */\n wasm._wl_scene_initialize(this._index);\n }\n\n /**\n * Perform cleanup upon object destruction.\n *\n * @param localId The id to destroy.\n *\n * @hidden\n */\n _destroyObject(localId: number) {\n const instance = this._objectCache[localId];\n if (!instance) return;\n\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n\n /* Destroy the prototype of this instance to avoid using a dangling object */\n if (this.engine.erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedObjectInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating an object with the same id. */\n this._objectCache[localId] = null;\n }\n\n /**\n * Performs JavaScript only destrution of a component.\n *\n * @note Prefer to use this method to manually calling the destruction code,\n * to protect the user from illegal method calls in {@link Component.onDestroy}.\n *\n * @param manager The component manager index.\n * @param id The component id.\n *\n * @hidden\n */\n _destroyComponent(manager: number, id: number) {\n const component = this._components.get(manager, id);\n ++this._pendingDestroy;\n component?._triggerOnDestroy();\n --this._pendingDestroy;\n }\n}\n", "/**\n * Schedule a timeout, resolving in `time` milliseconds.\n *\n * @note `setTimeout` being a macro-task, this method can\n * be use as a debounce call.\n *\n * @param time The time until it resolves, in milliseconds.\n * @returns A promise resolving in `time` ms.\n */\nexport function timeout(time: number): Promise {\n return new Promise((res) => setTimeout(res, time));\n}\n\n/**\n * Clamp the value in the range [min; max].\n *\n * @param val The value to clamp.\n * @param min The minimum value (inclusive).\n * @param max The maximum value (inclusive).\n * @returns The clamped value.\n */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.max(Math.min(max, val), min);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @note The string must be UTF-8.\n *\n * @param str The string to format.\n * @returns The string with the first letter capitalized.\n */\nexport function capitalizeFirstUTF8(str: string) {\n return `${str[0].toUpperCase()}${str.substring(1)}`;\n}\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nexport function createDestroyedProxy(type: string) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(`Cannot read '${param}' of destroyed ${type}`);\n },\n set(_, param: string) {\n throw new Error(`Cannot write '${param}' of destroyed ${type}`);\n },\n }\n );\n}\n", "/**\n * Types\n */\n\nimport {nativeProperty, enumerable} from './decorators.js';\nimport {WonderlandEngine} from './engine.js';\nimport {isImageLike, isNumber, isString} from './utils/object.js';\nimport {Emitter} from './utils/event.js';\nimport {Material} from './resources/material-manager.js';\nimport {\n ComponentProperty,\n PropertyRecord,\n Type,\n defaultPropertyCloner,\n} from './property.js';\nimport {Constructor, ImageLike, NumberArray, TypedArray, TypedArrayCtor} from './types.js';\nimport {Resource, SceneResource} from './resources/resource.js';\nimport {Prefab} from './prefab.js';\nimport {Scene} from './scene.js';\nimport {createDestroyedProxy} from './utils/misc.js';\nimport {NativeComponents, resetComponentProperties} from './component.js';\n\n/**\n * Component constructor type.\n *\n * For more information, please have a look at the {@link Component} class.\n */\nexport type ComponentConstructor = {\n new (scene: Prefab, manager: number, id: number): T;\n} & {\n _isBaseComponent: boolean;\n _propertyOrder: string[];\n TypeName: string;\n Properties: Record;\n InheritProperties?: boolean;\n onRegister?: (engine: WonderlandEngine) => void;\n};\n\n/**\n * Component prototype interface.\n *\n * User component's should have the same structure.\n */\nexport interface ComponentProto {\n /**\n * Triggered after the component instantiation.\n * For more information, please have a look at {@link Component.init}.\n */\n init?: () => void;\n /**\n * Triggered after the component is activated for the first time.\n * For more information, please have a look at {@link Component.start}.\n */\n start?: () => void;\n /**\n * Triggered once per frame.\n * For more information, please have a look at {@link Component.update}.\n *\n * @param dt Delta time, time since last update.\n */\n update?: (dt: number) => void;\n /**\n * Triggered when the component goes from deactivated to activated.\n * For more information, please have a look at {@link Component.onActivate}.\n */\n onActivate?: () => void;\n /**\n * Triggered when the component goes from activated to deactivated.\n * For more information, please have a look at {@link Component.onDeactivate}.\n */\n onDeactivate?: () => void;\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @since 0.9.0\n */\n onDestroy?: () => void;\n}\n\n/**\n * Callback triggered on collision event.\n *\n * @param type Type of the event.\n * @param other Other component that was (un)collided with\n */\nexport type CollisionCallback = (type: CollisionEventType, other: PhysXComponent) => void;\n\n/** @todo Remove at 1.0.0 */\ndeclare const WL: WonderlandEngine;\n\n/**\n * Wonderland Engine API\n * @namespace WL\n */\n\n/**\n * Default set of logging tags used by the API.\n */\nexport enum LogTag {\n /** Initialization, component registration, etc... */\n Engine = 0,\n /** Scene loading */\n Scene = 1,\n /** Component init, update, etc... */\n Component = 2,\n}\n\n/**\n * Collider type enum for {@link CollisionComponent}.\n */\nexport enum Collider {\n /**\n * **Sphere Collider**:\n *\n * Simplest and most performant collision shape. If this type is set on a\n * {@link CollisionComponent}, only the first component of\n * {@link CollisionComponent#extents} will be used to determine the radius.\n */\n Sphere = 0,\n\n /**\n * **Axis Aligned Bounding Box Collider**:\n *\n * Box that is always aligned to XYZ axis. It cannot be rotated but is more\n * efficient than {@link Collider.Box}.\n */\n AxisAlignedBox = 1,\n\n /**\n * **Aligned Bounding Box Collider**:\n *\n * Box that matches the object's rotation and translation correctly. This\n * is the least efficient collider and should only be chosen over\n * {@link Collider.Sphere} and {@link Collider.AxisAlignedBox} if really\n * necessary.\n */\n Box = 2,\n}\n\n/**\n * Alignment type enum for {@link TextComponent}.\n */\nexport enum Alignment {\n /** Text start is at object origin */\n Left = 0,\n\n /** Text center is at object origin */\n Center = 1,\n\n /** Text end is at object origin */\n Right = 2,\n}\n\n/**\n * Vertical alignment type enum for {@link TextComponent}.\n */\nexport enum VerticalAlignment {\n /** Text line is at object origin */\n Line = 0,\n\n /** Text middle is at object origin */\n Middle = 1,\n\n /** Text top is at object origin */\n Top = 2,\n\n /** Text bottom is at object origin */\n Bottom = 3,\n}\n\n/**\n * Justification type enum for {@link TextComponent}.\n *\n * @deprecated Please use {@link VerticalAlignment} instead.\n */\nexport const Justification = VerticalAlignment;\n\n/**\n * Effect type enum for {@link TextComponent}.\n */\nexport enum TextEffect {\n /** Text is rendered normally */\n None = 0,\n\n /** Text is rendered with an outline */\n Outline = 1,\n\n /** Text is rendered with a drop shadow */\n Shadow = 2,\n}\n\n/**\n * Wrap mode enum for {@link TextComponent}.\n *\n * @since 1.2.1\n */\nexport enum TextWrapMode {\n /** Text doesn't wrap automatically, only with explicit newline */\n None = 0,\n\n /** Text wraps at word boundaries */\n Soft = 1,\n\n /** Text wraps anywhere */\n Hard = 2,\n\n /** Text is cut off */\n Clip = 3,\n}\n\n/**\n * Input type enum for {@link InputComponent}.\n */\nexport enum InputType {\n /** Head input */\n Head = 0,\n\n /** Left eye input */\n EyeLeft = 1,\n\n /** Right eye input */\n EyeRight = 2,\n\n /** Left controller input */\n ControllerLeft = 3,\n\n /** Right controller input */\n ControllerRight = 4,\n\n /** Left ray input */\n RayLeft = 5,\n\n /** Right ray input */\n RayRight = 6,\n}\n\n/**\n * Projection type enum for {@link ViewComponent}.\n */\nexport enum ProjectionType {\n /** Perspective projection */\n Perspective = 0,\n\n /** Orthographic projection */\n Orthographic = 1,\n}\n\n/**\n * Light type enum for {@link LightComponent}.\n */\nexport enum LightType {\n /** Point light */\n Point = 0,\n\n /** Spot light */\n Spot = 1,\n\n /** Sun light / Directional light */\n Sun = 2,\n}\n\n/**\n * Animation state of {@link AnimationComponent}.\n */\nexport enum AnimationState {\n /** Animation is currently playing */\n Playing = 0,\n\n /** Animation is paused and will continue at current playback\n * time on {@link AnimationComponent#play} */\n Paused = 1,\n\n /** Animation is stopped */\n Stopped = 2,\n}\n\n/**\n * Root motion mode of {@link AnimationComponent}.\n */\nexport enum RootMotionMode {\n /** Do nothing */\n None = 0,\n /** Move and rotate root with the delta of its motion */\n ApplyToOwner = 1,\n /** Store the motion to be retrieved by a JS script */\n Script = 2,\n}\n\n/**\n * Rigid body force mode for {@link PhysXComponent#addForce} and {@link PhysXComponent#addTorque}.\n *\n * [PhysX API Reference](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxapi/files/structPxForceMode.html)\n */\nexport enum ForceMode {\n /** Apply as force */\n Force = 0,\n\n /** Apply as impulse */\n Impulse = 1,\n\n /** Apply as velocity change, mass dependent */\n VelocityChange = 2,\n\n /** Apply as mass dependent force */\n Acceleration = 3,\n}\n\n/**\n * Collision callback event type.\n */\nexport enum CollisionEventType {\n /** Touch/contact detected, collision */\n Touch = 0,\n\n /** Touch/contact lost, uncollide */\n TouchLost = 1,\n\n /** Touch/contact with trigger detected */\n TriggerTouch = 2,\n\n /** Touch/contact with trigger lost */\n TriggerTouchLost = 3,\n}\n\n/**\n * Rigid body {@link PhysXComponent#shape}.\n *\n * [PhysX SDK Guide](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/Geometry.html#geometry-types).\n */\nexport enum Shape {\n /** No shape. */\n None = 0,\n\n /** Sphere shape. */\n Sphere = 1,\n\n /** Capsule shape. */\n Capsule = 2,\n\n /** Box shape. */\n Box = 3,\n\n /** Plane shape. */\n Plane = 4,\n\n /** Convex mesh shape. */\n ConvexMesh = 5,\n\n /** Triangle mesh shape. */\n TriangleMesh = 6,\n}\n\n/**\n * Mesh attribute enum.\n * @since 0.9.0\n */\nexport enum MeshAttribute {\n /** Position attribute, 3 floats */\n Position = 0,\n\n /** Tangent attribute, 4 floats */\n Tangent = 1,\n\n /** Normal attribute, 3 floats */\n Normal = 2,\n\n /** Texture coordinate attribute, 2 floats */\n TextureCoordinate = 3,\n\n /** Color attribute, 4 floats, RGBA, range `0` to `1` */\n Color = 4,\n\n /** Joint id attribute, 8 unsigned ints */\n JointId = 5,\n\n /** Joint weights attribute, 8 floats */\n JointWeight = 6,\n\n /** Secondary texture coordinate attribute, 2 floats */\n SecondaryTextureCoordinate = 7,\n}\n\n/** Proxy used to override prototypes of destroyed objects. */\nexport const DestroyedObjectInstance = createDestroyedProxy('object');\n/** Proxy used to override prototypes of destroyed components. */\nexport const DestroyedComponentInstance = createDestroyedProxy('component');\n/** Proxy used to override prototypes of destroyed prefabs. */\nexport const DestroyedPrefabInstance = createDestroyedProxy('prefab/scene');\n\n/**\n * Check whether a given shape is a mesh or not.\n *\n * @param shape The shape to check.\n * @returns `true` if the shape is a mesh, `false` if it's a primitive.\n */\nfunction isMeshShape(shape: Shape): boolean {\n return shape === Shape.ConvexMesh || shape === Shape.TriangleMesh;\n}\n\n/**\n * Check whether an object is the {@link Component} class or not,\n *\n * @note This method if foolproof to developers inadvertently using\n * multiple Wonderland Engine API in a bundle.\n *\n * @param value The object to check.\n * @returns `true` if the object is a {@link Component} class, `false` otherwise.\n */\nfunction isBaseComponentClass(\n value: Constructor | null\n): value is ComponentConstructor {\n return (\n !!value &&\n value.hasOwnProperty('_isBaseComponent') &&\n (value as ComponentConstructor)._isBaseComponent\n );\n}\n\n/**\n * Constants.\n */\n\n/**\n * Default world up vector.\n */\nconst UP_VECTOR = [0, 1, 0];\n\nconst SQRT_3 = Math.sqrt(3);\n\n/**\n * Provides access to a component instance of a specified component type.\n *\n * @example\n *\n * This is how you extend this class to create your own custom\n * component:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * };\n * start() {}\n * onActivate() {}\n * onDeactivate() {}\n * update(dt) {}\n * }\n * ```\n *\n * In a component, the scene can be accessed using `this.scene`:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * start() {\n * const obj = this.scene.addObject();\n * }\n * }\n * ```\n */\nexport class Component {\n /**\n * Pack scene index and component id.\n *\n * @param scene Scene index.\n * @param id Component id.\n * @returns The packed id.\n *\n * @hidden\n */\n static _pack(scene: number, id: number) {\n return (scene << 22) | id;\n }\n\n /**\n * `true` for every class inheriting from this class.\n *\n * @note This is a workaround for `instanceof` to prevent issues\n * that could arise when an application ends up using multiple API versions.\n *\n * @hidden\n */\n static readonly _isBaseComponent = true;\n\n /**\n * Fixed order of attributes in the `Properties` array.\n *\n * @note This is used for parameter deserialization and is filled during\n * component registration.\n *\n * @hidden\n */\n static _propertyOrder: string[] = [];\n\n /**\n * Unique identifier for this component class.\n *\n * This is used to register, add, and retrieve components of a given type.\n */\n static TypeName: string;\n\n /**\n * Properties of this component class.\n *\n * Properties are public attributes that can be configured via the\n * Wonderland Editor.\n *\n * Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * myFloat: { type: Type.Float, default: false },\n * myTexture: { type: Type.Texture, default: null },\n * };\n * }\n * ```\n *\n * Properties are automatically added to each component instance, and are\n * accessible like any JS attribute:\n *\n * ```js\n * // Creates a new component and set each properties value:\n * const myComponent = object.addComponent(MyComponent, {\n * myBoolean: true,\n * myFloat: 42.0,\n * myTexture: null\n * });\n *\n * // You can also override the properties on the instance:\n * myComponent.myBoolean = false;\n * myComponent.myFloat = -42.0;\n * ```\n *\n * #### References\n *\n * Reference types (i.e., mesh, object, etc...) can also be listed as **required**:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myObject: Property.object({required: true}),\n * myAnimation: Property.animation({required: true}),\n * myTexture: Property.texture({required: true}),\n * myMesh: Property.mesh({required: true}),\n * }\n * }\n * ```\n *\n * Please note that references are validated **once** before the call to {@link Component.start} only,\n * via the {@link Component.validateProperties} method.\n */\n static Properties: Record;\n\n /**\n * When set to `true`, the child class inherits from the parent\n * properties, as shown in the following example:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Parent extends Component {\n * static TypeName = 'parent';\n * static Properties = {parentName: Property.string('parent')}\n * }\n *\n * class Child extends Parent {\n * static TypeName = 'child';\n * static Properties = {name: Property.string('child')}\n * static InheritProperties = true;\n *\n * start() {\n * // Works because `InheritProperties` is `true`.\n * console.log(`${this.name} inherits from ${this.parentName}`);\n * }\n * }\n * ```\n *\n * @note Properties defined in descendant classes will override properties\n * with the same name defined in ancestor classes.\n *\n * Defaults to `true`.\n */\n static InheritProperties?: boolean;\n\n /**\n * Called when this component class is registered.\n *\n * @example\n *\n * This callback can be used to register dependencies of a component,\n * e.g., component classes that need to be registered in order to add\n * them at runtime with {@link Object3D.addComponent}, independent of whether\n * they are used in the editor.\n *\n * ```js\n * class Spawner extends Component {\n * static TypeName = 'spawner';\n *\n * static onRegister(engine) {\n * engine.registerComponent(SpawnedComponent);\n * }\n *\n * // You can now use addComponent with SpawnedComponent\n * }\n * ```\n *\n * @example\n *\n * This callback can be used to register different implementations of a\n * component depending on client features or API versions.\n *\n * ```js\n * // Properties need to be the same for all implementations!\n * const SharedProperties = {};\n *\n * class Anchor extends Component {\n * static TypeName = 'spawner';\n * static Properties = SharedProperties;\n *\n * static onRegister(engine) {\n * if(navigator.xr === undefined) {\n * /* WebXR unsupported, keep this dummy component *\\/\n * return;\n * }\n * /* WebXR supported! Override already registered dummy implementation\n * * with one depending on hit-test API support *\\/\n * engine.registerComponent(window.HitTestSource === undefined ?\n * AnchorWithoutHitTest : AnchorWithHitTest);\n * }\n *\n * // This one implements no functions\n * }\n * ```\n */\n static onRegister?: (engine: WonderlandEngine) => void;\n\n /**\n * Allows to inherit properties directly inside the editor.\n *\n * @note Do not use directly, prefer using {@link inheritProperties}.\n *\n * @hidden\n */\n static _inheritProperties() {\n inheritProperties(this);\n }\n\n /**\n * Triggered when the component is initialized by the runtime. This method\n * will only be triggered **once** after instantiation.\n *\n * @note During the initialization phase, `this.scene` will not match\n * `engine.scene`, since `engine.scene` references the **active** scene:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * init() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `false`\n * }\n * start() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `true`\n * }\n * }\n * ```\n */\n init?(): void;\n\n /**\n * Triggered when the component is started by the runtime, or activated.\n *\n * You can use that to re-initialize the state of the component.\n */\n start?(): void;\n\n /**\n * Triggered **every frame** by the runtime.\n *\n * You should perform your business logic in this method. Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * class TranslateForwardComponent extends Component {\n * static TypeName = 'translate-forward-component';\n * static Properties = {\n * speed: { type: Type.Float, default: 1.0 }\n * };\n * constructor() {\n * this._forward = new Float32Array([0, 0, 0]);\n * }\n * update(dt) {\n * this.object.getForward(this._forward);\n * this._forward[0] *= this.speed;\n * this._forward[1] *= this.speed;\n * this._forward[2] *= this.speed;\n * this.object.translate(this._forward);\n * }\n * }\n * ```\n *\n * @param delta Elapsed time between this frame and the previous one, in **seconds**.\n */\n update?(delta: number): void;\n\n /**\n * Triggered when the component goes from an inactive state to an active state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), all the components\n * that were previously active will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onActivate?(): void;\n\n /**\n * Triggered when the component goes from an activated state to an inactive state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), the components of\n * the scene getting deactivated will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onDeactivate?(): void;\n\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @note This method will not be triggered for inactive scene being destroyed.\n *\n * @since 0.9.0\n */\n onDestroy?(): void;\n\n /** Manager index. @hidden */\n readonly _manager: number;\n /** Packed id, containing the scene and the local id. @hidden */\n readonly _id: number;\n /** Id relative to the scene component's manager. @hidden */\n readonly _localId: number;\n\n /**\n * Object containing this object.\n *\n * **Note**: This is cached for faster retrieval.\n *\n * @hidden\n */\n _object: Object3D | null;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n\n /**\n * Create a new instance\n *\n * @param engine The engine instance.\n * @param manager Index of the manager.\n * @param id WASM component instance index.\n *\n * @hidden\n */\n constructor(scene: Prefab, manager: number = -1, id: number = -1) {\n this._scene = scene;\n this._manager = manager;\n this._localId = id;\n this._id = Component._pack(scene._index, id);\n this._object = null;\n }\n\n /** Scene this component is part of. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** The name of this component's type */\n get type(): string {\n const ctor = this.constructor as ComponentConstructor;\n return ctor.TypeName;\n }\n\n /** The object this component is attached to. */\n get object(): Object3D {\n if (!this._object) {\n const objectId = this.engine.wasm._wl_component_get_object(\n this._manager,\n this._id\n );\n this._object = this._scene.wrap(objectId);\n }\n return this._object;\n }\n\n /**\n * Set whether this component is active.\n *\n * Activating/deactivating a component comes at a small cost of reordering\n * components in the respective component manager. This function therefore\n * is not a trivial assignment.\n *\n * Does nothing if the component is already activated/deactivated.\n *\n * @param active New active state.\n */\n set active(active: boolean) {\n this.engine.wasm._wl_component_setActive(this._manager, this._id, active);\n }\n\n /** `true` if the component is marked as active and its scene is active. */\n get active(): boolean {\n return this.markedActive && this._scene.isActive;\n }\n\n /**\n * `true` if the component is marked as active in the scene, `false` otherwise.\n *\n * @note At the opposite of {@link Component.active}, this accessor doesn't\n * take into account whether the scene is active or not.\n */\n get markedActive(): boolean {\n return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0;\n }\n\n /**\n * Copy all the properties from `src` into this instance.\n *\n * @note Only properties are copied. If a component needs to\n * copy extra data, it needs to override this method.\n *\n * #### Example\n *\n * ```js\n * class MyComponent extends Component {\n * nonPropertyData = 'Hello World';\n *\n * copy(src) {\n * super.copy(src);\n * this.nonPropertyData = src.nonPropertyData;\n * return this;\n * }\n * }\n * ```\n *\n * @note This method is called by {@link Object3D.clone}. Do not attempt to:\n * - Create new component\n * - Read references to other objects\n *\n * When cloning via {@link Object3D.clone}, this method will be called before\n * {@link Component.start}.\n *\n * @note JavaScript component properties aren't retargeted. Thus, references\n * inside the source object will not be retargeted to the destination object,\n * at the exception of the skin data on {@link MeshComponent} and {@link AnimationComponent}.\n *\n * @param src The source component to copy from.\n *\n * @returns Reference to self (for method chaining).\n */\n copy(src: Record): this {\n const ctor = this.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return this;\n for (const name in properties) {\n const property = properties[name];\n const value = src[name];\n if (value === undefined) continue;\n const cloner = property.cloner ?? defaultPropertyCloner;\n (this as Record)[name] = cloner.clone(property.type, value);\n }\n return this;\n }\n\n /**\n * Remove this component from its objects and destroy it.\n *\n * It is best practice to set the component to `null` after,\n * to ensure it does not get used later.\n *\n * ```js\n * c.destroy();\n * c = null;\n * ```\n * @since 0.9.0\n */\n destroy(): void {\n const manager = this._manager;\n if (manager < 0 || this._id < 0) return;\n\n /* This call will mark the component destroyed,\n * automatically calling `_triggerOnDestroy`. */\n this.engine.wasm._wl_component_remove(manager, this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const componentA = obj.addComponent('mesh');\n * const componentB = obj.addComponent('mesh');\n * const componentC = componentB;\n * console.log(componentA === componentB); // false\n * console.log(componentA === componentA); // true\n * console.log(componentB === componentC); // true\n * ```\n */\n equals(otherComponent: Component | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherComponent) return false;\n return this._manager === otherComponent._manager && this._id === otherComponent._id;\n }\n\n /**\n * Reset the component properties to default.\n *\n * @note This is automatically called during the component instantiation.\n *\n * @returns Reference to self (for method chaining).\n */\n resetProperties(): this {\n resetComponentProperties(this);\n return this;\n }\n\n /** @deprecated Use {@link Component.resetProperties} instead. */\n reset(): this {\n return this.resetProperties();\n }\n\n /**\n * Validate the properties on this instance.\n *\n * @throws If any of the required properties isn't initialized\n * on this instance.\n */\n validateProperties(): void {\n const ctor = this.constructor as ComponentConstructor;\n if (!ctor.Properties) return;\n\n for (const name in ctor.Properties) {\n if (!ctor.Properties[name].required) continue;\n if (!(this as Record)[name]) {\n throw new Error(`Property '${name}' is required but was not initialized`);\n }\n }\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Component(destroyed)';\n }\n return `Component('${this.type}', ${this._localId})`;\n }\n\n /**\n * `true` if the component is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const comp = obj.addComponent('mesh');\n * comp.customParam = 'Hello World!';\n *\n * console.log(comp.isDestroyed); // Prints `false`\n * comp.destroy();\n * console.log(comp.isDestroyed); // Prints `true`\n * console.log(comp.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /** @hidden */\n _copy(src: this, offsetsPtr: number, copyInfoPtr: number) {\n const wasm = this.engine.wasm;\n\n /** @todo: Support retargeting for `Object3D.clone` as well. */\n const offsets = wasm.HEAPU32;\n const offsetsStart = offsetsPtr >>> 2;\n\n const copyInfoStart = copyInfoPtr >>> 1;\n const srcRootIndex = wasm.HEAPU16[copyInfoStart]; /* Defaults to max ushort */\n const srcRootSize = wasm.HEAPU16[copyInfoStart + 1]; /* Defaults to 0 */\n const dstRootIndex = wasm.HEAPU16[copyInfoStart + 2]; /* Defaults to 0 */\n\n const destScene = this._scene;\n\n const ctor = this.constructor as ComponentConstructor;\n for (const name in ctor.Properties) {\n const value = (src as Record)[name];\n if (value === null) {\n (this as Record)[name] = null;\n continue;\n }\n\n const prop = ctor.Properties[name];\n const offset = offsets[offsetsStart + prop.type];\n\n let retargeted = null;\n switch (prop.type) {\n case Type.Object: {\n let index = wasm._wl_object_index((value as Object3D)._id) + offset;\n const dist = index - srcRootIndex;\n if (dist >= 0 && dist <= srcRootSize) {\n /* Only retarget if a reference points into the source hierarchy. */\n index = dstRootIndex + dist;\n }\n const id = wasm._wl_object_id(destScene._index, index);\n retargeted = destScene.wrap(id);\n break;\n }\n case Type.Animation:\n retargeted = destScene.animations.wrap(\n offset + (value as Animation)._index\n );\n break;\n case Type.Skin:\n retargeted = destScene.skins.wrap(offset + (value as Skin)._index);\n break;\n default:\n const cloner = prop.cloner ?? defaultPropertyCloner;\n retargeted = cloner.clone(prop.type, value);\n break;\n }\n (this as Record)[name] = retargeted;\n }\n return this;\n }\n\n /**\n * Trigger the component {@link Component.init} method.\n *\n * @note Use this method instead of directly calling {@link Component.init},\n * because this method creates an handler for the {@link Component.start}.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerInit() {\n if (this.init) {\n try {\n this.init();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} init() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /* Arm onActivate() with the initial start() call */\n const oldActivate = this.onActivate;\n this.onActivate = function () {\n this.onActivate = oldActivate;\n let failed = false;\n try {\n this.validateProperties();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} validateProperties() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n try {\n this.start?.();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} start() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n if (failed) {\n this.active = false;\n return;\n }\n\n if (!this.onActivate) return;\n\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n };\n }\n\n /**\n * Trigger the component {@link Component.update} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerUpdate(dt: number) {\n if (!this.update) return;\n try {\n this.update(dt);\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} update() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n if (this.engine.wasm._deactivate_component_on_error) {\n this.active = false;\n }\n }\n }\n\n /**\n * Trigger the component {@link Component.onActivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnActivate() {\n if (!this.onActivate) return;\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDeactivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDeactivate() {\n if (!this.onDeactivate) return;\n try {\n this.onDeactivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDeactivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDestroy} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDestroy() {\n try {\n if (this.onDestroy) this.onDestroy();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDestroy() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n this._scene._components.destroy(this);\n }\n}\n\n/**\n * Components must be registered before loading / appending a scene.\n *\n * It's possible to end up with a broken component in the following cases:\n *\n * - Component wasn't registered when the scene was loaded\n * - Component instantiation failed\n *\n * This dummy component is thus used as a placeholder by the engine.\n */\nexport class BrokenComponent extends Component {\n static TypeName = '__broken-component__';\n}\n\n/**\n * Merge the ascendant properties of class\n *\n * This method walks the prototype chain, and merges\n * all the properties found in parent components.\n *\n * Example:\n *\n * ```js\n * import {Property, inheritProperties} from '@wonderlandengine/api';\n *\n * class Parent {\n * static Properties = { parentProp: Property.string('parent') };\n * }\n *\n * class Child extends Parent {\n * static Properties = { childProp: Property.string('child') };\n * }\n * inheritProperties(Child);\n * ```\n *\n * @param target The class in which properties should be merged\n *\n * @hidden\n */\nexport function inheritProperties(target: ComponentConstructor | PropertyRecord) {\n const chain: ComponentConstructor[] = [];\n let curr: Constructor | null = target;\n while (curr && !isBaseComponentClass(curr)) {\n const comp = curr as ComponentConstructor;\n\n /* Stop at the first class that doesn't require properties merging */\n const needsMerge = comp.hasOwnProperty('InheritProperties')\n ? comp.InheritProperties\n : true;\n if (!needsMerge) break;\n\n if (comp.hasOwnProperty('Properties')) {\n /* We push properties even if the object isn't deriving from a Component class.\n * This could theoretically lead to issue, when inheriting from another type\n * of component (lit-like elements) but extremely unlikely. */\n chain.push(comp);\n }\n curr = Object.getPrototypeOf(curr);\n }\n\n /* No prototype merge is needed. */\n if (!chain.length || (chain.length === 1 && chain[0] === target)) {\n return;\n }\n\n const merged: Record = {};\n for (let i = chain.length - 1; i >= 0; --i) {\n Object.assign(merged, chain[i].Properties);\n }\n target.Properties = merged;\n}\n\n/**\n * Native collision component.\n *\n * Provides access to a native collision component instance.\n */\nexport class CollisionComponent extends Component {\n /** @override */\n static TypeName = 'collision';\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * Collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the returned vector is used.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** Collision component collider */\n @nativeProperty()\n get collider(): Collider {\n return this.engine.wasm._wl_collision_component_get_collider(this._id);\n }\n\n /**\n * Set collision component collider.\n *\n * @param collider Collider of the collision component.\n */\n set collider(collider: Collider) {\n this.engine.wasm._wl_collision_component_set_collider(this._id, collider);\n }\n\n /**\n * Equivalent to {@link CollisionComponent.getExtents}.\n *\n * @note Prefer to use {@link CollisionComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n }\n\n /**\n * Set collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the passed vector is used.\n *\n * Example:\n *\n * ```js\n * // Spans 1 unit on the x-axis, 2 on the y-axis, 3 on the z-axis.\n * collision.extent = [1, 2, 3];\n * ```\n *\n * @param extents Extents of the collision component, expects a\n * 3 component array.\n */\n set extents(extents: Readonly) {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = extents[0];\n wasm.HEAPF32[ptr + 1] = extents[1];\n wasm.HEAPF32[ptr + 2] = extents[2];\n }\n\n /**\n * Get collision component radius.\n *\n * @note If {@link collider} is not {@link Collider.Sphere}, the returned value\n * corresponds to the radius of a sphere enclosing the shape.\n *\n * Example:\n *\n * ```js\n * sphere.radius = 3.0;\n * console.log(sphere.radius); // 3.0\n *\n * box.extents = [2.0, 2.0, 2.0];\n * console.log(box.radius); // 1.732...\n * ```\n *\n */\n get radius(): number {\n const wasm = this.engine.wasm;\n if (this.collider === Collider.Sphere)\n return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2];\n const extents = new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n const x2 = extents[0] * extents[0];\n const y2 = extents[1] * extents[1];\n const z2 = extents[2] * extents[2];\n return Math.sqrt(x2 + y2 + z2) / 2;\n }\n\n /**\n * Set collision component radius.\n *\n * @param radius Radius of the collision component\n *\n * @note If {@link collider} is not {@link Collider.Sphere},\n * the extents are set to form a square that fits a sphere with the provided radius.\n *\n * Example:\n *\n * ```js\n * aabbCollision.radius = 2.0; // AABB fits a sphere of radius 2.0\n * boxCollision.radius = 3.0; // Box now fits a sphere of radius 3.0, keeping orientation\n * ```\n *\n */\n set radius(radius: number) {\n const length = this.collider === Collider.Sphere ? radius : (2 * radius) / SQRT_3;\n this.extents.set([length, length, length]);\n }\n\n /**\n * Collision component group.\n *\n * The groups is a bitmask that is compared to other components in {@link CollisionComponent#queryOverlaps}\n * or the group in {@link Scene#rayCast}.\n *\n * Colliders that have no common groups will not overlap with each other. If a collider\n * has none of the groups set for {@link Scene#rayCast}, the ray will not hit it.\n *\n * Each bit represents belonging to a group, see example.\n *\n * ```js\n * // c belongs to group 2\n * c.group = (1 << 2);\n *\n * // c belongs to group 0\n * c.group = (1 << 0);\n *\n * // c belongs to group 0 *and* 2\n * c.group = (1 << 0) | (1 << 2);\n *\n * (c.group & (1 << 2)) != 0; // true\n * (c.group & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get group(): number {\n return this.engine.wasm._wl_collision_component_get_group(this._id);\n }\n\n /**\n * Set collision component group.\n *\n * @param group Group mask of the collision component.\n */\n set group(group: number) {\n this.engine.wasm._wl_collision_component_set_group(this._id, group);\n }\n\n /**\n * Query overlapping objects.\n *\n * Usage:\n *\n * ```js\n * const collision = object.getComponent('collision');\n * const overlaps = collision.queryOverlaps();\n * for(const otherCollision of overlaps) {\n * const otherObject = otherCollision.object;\n * console.log(`Collision with object ${otherObject.objectId}`);\n * }\n * ```\n *\n * @returns Collision components overlapping this collider.\n */\n queryOverlaps(): CollisionComponent[] {\n const count = this.engine.wasm._wl_collision_component_query_overlaps(\n this._id,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const overlaps: CollisionComponent[] = new Array(count);\n for (let i = 0; i < count; ++i) {\n const id = this.engine.wasm._tempMemUint16[i];\n overlaps[i] = this._scene._components.wrapCollision(id);\n }\n return overlaps;\n }\n}\n\n/**\n * Native text component\n *\n * Provides access to a native text component instance\n */\nexport class TextComponent extends Component {\n /** @override */\n static TypeName = 'text';\n\n /** Text component alignment. */\n @nativeProperty()\n get alignment(): Alignment {\n return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id);\n }\n\n /**\n * Set text component alignment.\n *\n * @param alignment Alignment for the text component.\n */\n set alignment(alignment: Alignment) {\n this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment);\n }\n\n /**\n * Text component vertical alignment.\n * @since 1.2.0\n */\n @nativeProperty()\n get verticalAlignment(): VerticalAlignment {\n return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id);\n }\n\n /**\n * Set text component vertical alignment.\n *\n * @param verticalAlignment Vertical for the text component.\n * @since 1.2.0\n */\n set verticalAlignment(verticalAlignment: VerticalAlignment) {\n this.engine.wasm._wl_text_component_set_vertical_alignment(\n this._id,\n verticalAlignment\n );\n }\n\n /**\n * Text component justification.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n @nativeProperty()\n get justification() {\n return this.verticalAlignment;\n }\n\n /**\n * Set text component justification.\n *\n * @param justification Justification for the text component.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n set justification(justification: VerticalAlignment) {\n this.verticalAlignment = justification;\n }\n\n /**\n * Whether text is justified horizontally.\n *\n * Aligns text horizontally to both margins by adding space between words.\n *\n * Requires {@link wrapMode} to be {@link TextWrapMode.Soft} or\n * {@link TextWrapMode.Hard} and non-0 {@link wrapWidth}.\n *\n * The last line in a paragraph is never justified and respects\n * {@link alignment}.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get justified(): boolean {\n return !!this.engine.wasm._wl_text_component_get_justified(this._id);\n }\n\n /**\n * Set whether text is justified horizontally.\n *\n * @param justified New justified state for the text component.\n * @since 1.3.0\n */\n set justified(justified: boolean) {\n this.engine.wasm._wl_text_component_set_justified(this._id, justified);\n }\n\n /** Text component character spacing. */\n @nativeProperty()\n get characterSpacing(): number {\n return this.engine.wasm._wl_text_component_get_character_spacing(this._id);\n }\n\n /**\n * Set text component character spacing.\n *\n * @param spacing Character spacing for the text component.\n */\n set characterSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing);\n }\n\n /** Text component line spacing. */\n @nativeProperty()\n get lineSpacing(): number {\n return this.engine.wasm._wl_text_component_get_line_spacing(this._id);\n }\n\n /**\n * Set text component line spacing.\n *\n * @param spacing Line spacing for the text component\n */\n set lineSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing);\n }\n\n /** Text component effect. */\n @nativeProperty()\n get effect(): TextEffect {\n return this.engine.wasm._wl_text_component_get_effect(this._id);\n }\n\n /**\n * Set text component effect.\n *\n * @param effect Effect for the text component\n */\n set effect(effect: TextEffect) {\n this.engine.wasm._wl_text_component_set_effect(this._id, effect);\n }\n\n /**\n * Equivalent to {@link getEffectOffset}.\n *\n * @note Prefer to use {@link getEffectOffset} for performance.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get effectOffset(): Float32Array {\n return this.getEffectOffset();\n }\n\n /**\n * Equivalent to {@link setEffectOffset}.\n *\n * @since 1.3.0\n */\n set effectOffset(offset: Readonly) {\n this.setEffectOffset(offset);\n }\n\n /** @overload */\n getEffectOffset(): Float32Array;\n /**\n * Get text component effect offset.\n *\n * @param out Destination array, expected to have at least 2 elements.\n * @returns The `out` parameter.\n *\n * @since 1.3.0\n */\n getEffectOffset(out: T): T;\n getEffectOffset(out: NumberArray = new Float32Array(2)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n return out;\n }\n\n /**\n * Set text component effect offset.\n *\n * The offset is given as X and Y factors for {@link Font.emHeight}. E.g. a\n * value of 2 in one axis offsets the effect by two font line heights. A\n * positive Y value moves the effect **upwards**.\n *\n * @param offset Array with new offset, expected to have at least 2 elements.\n *\n * @since 1.3.0\n */\n setEffectOffset(offset: Readonly) {\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(offset);\n wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem);\n }\n\n /**\n * Text component line wrap mode.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapMode(): TextWrapMode {\n return this.engine.wasm._wl_text_component_get_wrapMode(this._id);\n }\n\n /**\n * Set text component line wrap mode.\n *\n * @param wrapMode Line wrap mode for the text component.\n * @since 1.2.1\n */\n set wrapMode(wrapMode: TextWrapMode) {\n this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode);\n }\n\n /**\n * Text component line wrap width, in object space.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapWidth(): number {\n return this.engine.wasm._wl_text_component_get_wrapWidth(this._id);\n }\n\n /**\n * Set text component line wrap width.\n *\n * Only takes effect when {@link wrapMode} is something other than\n * {@link TextWrapMode.None}.\n *\n * @param width Line wrap width for the text component, in object space.\n * @since 1.2.1\n */\n set wrapWidth(width: number) {\n this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width);\n }\n\n /** Text component text. */\n @nativeProperty()\n get text(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_text_component_get_text(this._id);\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Set text component text.\n *\n * @param text Text of the text component.\n */\n set text(text: any) {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString()));\n }\n\n /**\n * Set material to render the text with.\n *\n * @param material New material.\n */\n set material(material: Material | null | undefined) {\n const matIndex = material ? material._id : 0;\n this.engine.wasm._wl_text_component_set_material(this._id, matIndex);\n }\n\n /** Material used to render the text. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_text_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** @overload */\n getBoundingBoxForText(text: string): Float32Array;\n /**\n * Axis-aligned bounding box for a given text, in object space.\n *\n * To calculate the size for the currently set text, use\n * {@link getBoundingBox}.\n *\n * Useful for calculating the text size before an update and potentially\n * adjusting the text:\n *\n * ```js\n * let updatedName = 'some very long name';\n * const box = new Float32Array(4);\n * text.getBoundingBoxForText(updatedName, box);\n * const width = box[2] - box[0];\n * if(width > 2.0) {\n * updatedName = updatedName.slice(0, 5) + '...';\n * }\n * text.text = updatedName;\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBoxForText(text: string, out: T): T;\n /** @overload */\n getBoundingBoxForText(\n text: string,\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n /* Offset by 4 floats, output is written to _tempMem */\n const textPtr = wasm.tempUTF8(text, 4 * 4);\n this.engine.wasm._wl_text_component_get_boundingBox(\n this._id,\n textPtr,\n wasm._tempMem\n );\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n getBoundingBox(): Float32Array;\n /**\n * Axis-aligned bounding box, in object space.\n *\n * The bounding box is computed using the current component properties\n * that influence the position and size of the text. The bounding box is\n * affected by alignment, spacing, effect type and the font set in the\n * material.\n *\n * To calculate the size for a different text, use\n * {@link getBoundingBoxForText}.\n *\n * Useful for adjusting text position or scaling:\n *\n * ```js\n * const box = new Float32Array(4);\n * text.getBoundingBox(box);\n * const width = box[2] - box[0];\n * // Make text 1m wide\n * text.object.setScalingLocal([1/width, 1, 1]);\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBox(out: T): T;\n /** @overload */\n getBoundingBox(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n}\n\n/**\n * Native view component.\n *\n * Provides access to a native view component instance.\n */\nexport class ViewComponent extends Component {\n /** @override */\n static TypeName = 'view';\n\n /**\n * Projection type of the view.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get projectionType(): ProjectionType {\n return this.engine.wasm._wl_view_component_get_projectionType(this._id);\n }\n\n /**\n * Set the projection type of the view.\n *\n * @param type New projection type.\n * @since 1.2.2\n */\n set projectionType(type) {\n this.engine.wasm._wl_view_component_set_projectionType(this._id, type);\n }\n\n /** @overload */\n getProjectionMatrix(): Float32Array;\n /**\n * Projection matrix.\n *\n * A 4x4 matrix that transforms from view space to a WebGL-compatible clip\n * space (-1 to 1 on all axes, near plane at -1, far plane at 1).\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the projection matrix reported by the device.\n *\n * @note This is not necessarily the final projection matrix used for\n * rendering. You can use it for unprojecting from screen space coordinates\n * to view space.\n *\n * @param out Destination array/vector, expected to have at least 16 elements.\n * @returns The `out` parameter.\n */\n getProjectionMatrix(out: T): T;\n getProjectionMatrix(out: NumberArray = new Float32Array(16)): NumberArray {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem);\n for (let i = 0; i < 16; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Equivalent to {@link ViewComponent.getProjectionMatrix}.\n *\n * @note Prefer to use {@link ViewComponent.getProjectionMatrix} for performance.\n */\n @enumerable()\n get projectionMatrix(): Float32Array {\n return this.getProjectionMatrix();\n }\n\n /**\n * Override projection matrix for this view.\n *\n * Bypasses the generation of the projection matrix from viewport, fov, near, far.\n *\n * @hidden\n */\n _setProjectionMatrix(v: Readonly) {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._tempMemFloat.set(v);\n wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem);\n }\n\n /**\n * Generate projection matrix from viewport, fov, near, far.\n *\n * Overwrites any projection matrix set manually.\n *\n * @hidden\n */\n _generateProjectionMatrix() {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_generate_projectionMatrix(this._id);\n }\n\n /** ViewComponent near clipping plane value. */\n @nativeProperty()\n get near(): number {\n return this.engine.wasm._wl_view_component_get_near(this._id);\n }\n\n /**\n * Set near clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param near Near depth value.\n */\n set near(near: number) {\n this.engine.wasm._wl_view_component_set_near(this._id, near);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(near, this.far);\n }\n }\n\n /** Far clipping plane value. */\n @nativeProperty()\n get far(): number {\n return this.engine.wasm._wl_view_component_get_far(this._id);\n }\n\n /**\n * Set far clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param far Near depth value.\n */\n set far(far: number) {\n this.engine.wasm._wl_view_component_set_far(this._id, far);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(this.near, far);\n }\n }\n\n /**\n * Get the horizontal field of view for the view, **in degrees**.\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the field of view reported by the device, regardless of the fov\n * that was set.\n */\n @nativeProperty()\n get fov(): number {\n return this.engine.wasm._wl_view_component_get_fov(this._id);\n }\n\n /**\n * Set the horizontal field of view for the view, **in degrees**.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Perspective}.\n *\n * If an XR session is active and this is the left or right eye view, the\n * field of view reported by the device is used and this value is ignored.\n * After the XR session ends, the new value is applied.\n *\n * @param fov Horizontal field of view, **in degrees**.\n */\n set fov(fov) {\n this.engine.wasm._wl_view_component_set_fov(this._id, fov);\n }\n\n /** @overload */\n getViewport(): Int32Array;\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n */\n getViewport(out: T): T;\n getViewport(out: NumberArray = new Int32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_view_component_get_viewport(this._id);\n for (let i = 0; i < 4; ++i) {\n out[i] = wasm.HEAPF32[ptr + i];\n }\n return out;\n }\n\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n */\n @enumerable()\n get viewport(): Int32Array {\n return this.getViewport();\n }\n\n /**\n * Set viewport.\n *\n * @hidden\n */\n _setViewport(x: number, y: number, width: number, height: number) {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_set_viewport(this._id, x, y, width, height);\n }\n\n /**\n * Get the width of the orthographic viewing volume.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get extent(): number {\n return this.engine.wasm._wl_view_component_get_extent(this._id);\n }\n\n /**\n * Set the width of the orthographic viewing volume.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Orthographic}.\n *\n * @param extent New extent.\n * @since 1.2.2\n */\n set extent(extent) {\n this.engine.wasm._wl_view_component_set_extent(this._id, extent);\n }\n}\n\n/**\n * Native input component.\n *\n * Provides access to a native input component instance.\n */\nexport class InputComponent extends Component {\n /** @override */\n static TypeName = 'input';\n\n /** Input component type */\n @nativeProperty()\n get inputType(): InputType {\n return this.engine.wasm._wl_input_component_get_type(this._id);\n }\n\n /**\n * Set input component type.\n *\n * @params New input component type.\n */\n set inputType(type: InputType) {\n this.engine.wasm._wl_input_component_set_type(this._id, type);\n }\n\n /**\n * WebXR Device API input source associated with this input component,\n * if type {@link InputType.ControllerLeft} or {@link InputType.ControllerRight}.\n */\n @enumerable()\n get xrInputSource(): XRInputSource | null {\n const xr = this.engine.xr;\n if (!xr) return null;\n\n for (let inputSource of xr.session.inputSources) {\n if (inputSource.handedness == this.handedness) {\n return inputSource;\n }\n }\n\n return null;\n }\n\n /**\n * 'left', 'right' or `null` depending on the {@link InputComponent#inputType}.\n */\n @enumerable()\n get handedness(): 'left' | 'right' | null {\n const inputType = this.inputType;\n if (\n inputType == InputType.ControllerRight ||\n inputType == InputType.RayRight ||\n inputType == InputType.EyeRight\n )\n return 'right';\n if (\n inputType == InputType.ControllerLeft ||\n inputType == InputType.RayLeft ||\n inputType == InputType.EyeLeft\n )\n return 'left';\n\n return null;\n }\n}\n\n/**\n * Native light component.\n *\n * Provides access to a native light component instance.\n */\nexport class LightComponent extends Component {\n /** @override */\n static TypeName = 'light';\n\n /** @overload */\n getColor(): Float32Array;\n /**\n * Get light color.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n * @since 1.0.0\n */\n getColor(out: T): T;\n getColor(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set light color.\n *\n * @param c New color array/vector, expected to have at least 3 elements.\n * @since 1.0.0\n */\n setColor(c: Readonly): void {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = c[0];\n wasm.HEAPF32[ptr + 1] = c[1];\n wasm.HEAPF32[ptr + 2] = c[2];\n }\n\n /**\n * View on the light color.\n *\n * @note Prefer to use {@link getColor} in performance-critical code.\n */\n @nativeProperty()\n get color(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_light_component_get_color(this._id),\n 3\n );\n }\n\n /**\n * Set light color.\n *\n * @param c Color of the light component.\n *\n * @note Prefer to use {@link setColor} in performance-critical code.\n */\n set color(c: Readonly) {\n this.color.set(c);\n }\n\n /** Light type. */\n @nativeProperty()\n get lightType(): LightType {\n return this.engine.wasm._wl_light_component_get_type(this._id);\n }\n\n /**\n * Set light type.\n *\n * @param lightType Type of the light component.\n */\n set lightType(t: LightType) {\n this.engine.wasm._wl_light_component_set_type(this._id, t);\n }\n\n /**\n * Light intensity.\n * @since 1.0.0\n */\n @nativeProperty()\n get intensity(): number {\n return this.engine.wasm._wl_light_component_get_intensity(this._id);\n }\n\n /**\n * Set light intensity.\n *\n * @param intensity Intensity of the light component.\n * @since 1.0.0\n */\n set intensity(intensity: number) {\n this.engine.wasm._wl_light_component_set_intensity(this._id, intensity);\n }\n\n /**\n * Outer angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get outerAngle(): number {\n return this.engine.wasm._wl_light_component_get_outerAngle(this._id);\n }\n\n /**\n * Set outer angle for spot lights.\n *\n * @param angle Outer angle, in degrees.\n * @since 1.0.0\n */\n set outerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle);\n }\n\n /**\n * Inner angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get innerAngle(): number {\n return this.engine.wasm._wl_light_component_get_innerAngle(this._id);\n }\n\n /**\n * Set inner angle for spot lights.\n *\n * @param angle Inner angle, in degrees.\n * @since 1.0.0\n */\n set innerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle);\n }\n\n /**\n * Whether the light casts shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadows(): boolean {\n return !!this.engine.wasm._wl_light_component_get_shadows(this._id);\n }\n\n /**\n * Set whether the light casts shadows.\n *\n * @param b Whether the light casts shadows.\n * @since 1.0.0\n */\n set shadows(b: boolean) {\n this.engine.wasm._wl_light_component_set_shadows(this._id, b);\n }\n\n /**\n * Range for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowRange(): number {\n return this.engine.wasm._wl_light_component_get_shadowRange(this._id);\n }\n\n /**\n * Set range for shadows.\n *\n * @param range Range for shadows.\n * @since 1.0.0\n */\n set shadowRange(range: number) {\n this.engine.wasm._wl_light_component_set_shadowRange(this._id, range);\n }\n\n /**\n * Bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowBias(this._id);\n }\n\n /**\n * Set bias value for shadows.\n *\n * @param bias Bias for shadows.\n * @since 1.0.0\n */\n set shadowBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias);\n }\n\n /**\n * Normal bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowNormalBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id);\n }\n\n /**\n * Set normal bias value for shadows.\n *\n * @param bias Normal bias for shadows.\n * @since 1.0.0\n */\n set shadowNormalBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias);\n }\n\n /**\n * Texel size for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowTexelSize(): number {\n return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id);\n }\n\n /**\n * Set texel size for shadows.\n *\n * @param size Texel size for shadows.\n * @since 1.0.0\n */\n set shadowTexelSize(size: number) {\n this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size);\n }\n\n /**\n * Cascade count for {@link LightType.Sun} shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get cascadeCount(): number {\n return this.engine.wasm._wl_light_component_get_cascadeCount(this._id);\n }\n\n /**\n * Set cascade count for {@link LightType.Sun} shadows.\n *\n * @param count Cascade count.\n * @since 1.0.0\n */\n set cascadeCount(count: number) {\n this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count);\n }\n}\n\n/**\n * Native animation component.\n *\n * Provides access to a native animation component instance.\n */\nexport class AnimationComponent extends Component {\n /** @override */\n static TypeName = 'animation';\n\n /**\n * Emitter for animation events triggered on this component.\n *\n * The first argument is the name of the event.\n */\n readonly onEvent = new Emitter<[string]>();\n\n /**\n * Set animation to play.\n *\n * Make sure to {@link Animation#retarget} the animation to affect the\n * right objects.\n *\n * @param anim Animation to play.\n */\n set animation(anim: Animation | null | undefined) {\n this.scene.assertOrigin(anim);\n this.engine.wasm._wl_animation_component_set_animation(\n this._id,\n anim ? anim._id : 0\n );\n }\n\n /** Animation set for this component */\n @nativeProperty()\n get animation(): Animation | null {\n const index = this.engine.wasm._wl_animation_component_get_animation(this._id);\n return this._scene.animations.wrap(index);\n }\n\n /**\n * Set play count. Set to `0` to loop indefinitely.\n *\n * @param playCount Number of times to repeat the animation.\n */\n set playCount(playCount: number) {\n this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount);\n }\n\n /** Number of times the animation is played. */\n @nativeProperty()\n get playCount(): number {\n return this.engine.wasm._wl_animation_component_get_playCount(this._id);\n }\n\n /**\n * Set speed. Set to negative values to run the animation backwards.\n *\n * Setting speed has an immediate effect for the current frame's update\n * and will continue with the speed from the current point in the animation.\n *\n * @param speed New speed at which to play the animation.\n * @since 0.8.10\n */\n set speed(speed: number) {\n this.engine.wasm._wl_animation_component_set_speed(this._id, speed);\n }\n\n /**\n * Speed factor at which the animation is played.\n *\n * @since 0.8.10\n */\n @nativeProperty()\n get speed(): number {\n return this.engine.wasm._wl_animation_component_get_speed(this._id);\n }\n\n /** Current playing state of the animation */\n @enumerable()\n get state(): AnimationState {\n return this.engine.wasm._wl_animation_component_state(this._id);\n }\n\n /**\n * How to handle root motion on this component.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n @enumerable()\n get rootMotionMode(): RootMotionMode {\n return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id);\n }\n\n /**\n * Set how to handle root motion.\n *\n * @param mode Mode to handle root motion, see {@link RootMotionMode}.\n * @since 1.2.2\n */\n set rootMotionMode(mode: RootMotionMode) {\n this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode);\n }\n\n /**\n * Current iteration of the animation.\n *\n * If {@link playCount} is not unlimited, the value is in the range from\n * `0` to `playCount`.\n *\n * @since 1.2.3\n */\n get iteration(): number {\n return this.engine.wasm._wl_animation_component_get_iteration(this._id);\n }\n\n /**\n * Current playing position of the animation within the current iteration,\n * in seconds.\n *\n * The value is in the range from `0.0` to {@link AnimationComponent#duration},\n * if playing in reverse, this range is reversed as well.\n *\n * @since 1.2.3\n */\n get position(): number {\n return this.engine.wasm._wl_animation_component_get_position(this._id);\n }\n\n /**\n * Current duration to loop one iteration in seconds, offers a more accurate duration\n * than {@link Animation#duration} when blending multiple animations.\n *\n * @since 1.2.3\n */\n get duration(): number {\n return this.engine.wasm._wl_animation_component_get_duration(this._id);\n }\n\n /**\n * Play animation.\n *\n * If the animation is currently paused, resumes from that position. If the\n * animation is already playing, does nothing.\n *\n * To restart the animation, {@link AnimationComponent#stop} it first.\n */\n play(): void {\n this.engine.wasm._wl_animation_component_play(this._id);\n }\n\n /** Stop animation. */\n stop(): void {\n this.engine.wasm._wl_animation_component_stop(this._id);\n }\n\n /** Pause animation. */\n pause(): void {\n this.engine.wasm._wl_animation_component_pause(this._id);\n }\n\n /**\n * Get the value of a float parameter in the attached graph.\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @since 1.2.0\n */\n getFloatParameter(name: string): number | null {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n }\n\n /**\n * Set the value of a float parameter in the attached graph\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @param value Float value to set.\n * @returns 1 if the parameter was successfully set, 0 on fail.\n * @since 1.2.0\n */\n setFloatParameter(name: string, value: number): void {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._tempMemFloat[0] = value;\n wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem);\n }\n\n /** @overload */\n getRootMotionTranslation(): Float32Array;\n /**\n * Get the root motion translation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity translation.\n *\n * @since 1.2.2\n */\n getRootMotionTranslation(out: T): T;\n getRootMotionTranslation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRootMotionRotation(): Float32Array;\n /**\n * Get the root motion rotation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity rotation.\n *\n * @since 1.2.2\n */\n getRootMotionRotation(out: T): T;\n getRootMotionRotation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n}\n\n/**\n * Native mesh component.\n *\n * Provides access to a native mesh component instance.\n */\nexport class MeshComponent extends Component {\n /** @override */\n static TypeName = 'mesh';\n\n /**\n * Set material to render the mesh with.\n *\n * @param material Material to render the mesh with.\n */\n set material(material: Material | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_material(\n this._id,\n material ? material._id : 0\n );\n }\n\n /** Material used to render the mesh. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_mesh_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** Mesh rendered by this component. */\n @nativeProperty()\n get mesh(): Mesh | null {\n const index = this.engine.wasm._wl_mesh_component_get_mesh(this._id);\n return this.engine.meshes.wrap(index);\n }\n\n /**\n * Set mesh to rendered with this component.\n *\n * @param mesh Mesh rendered by this component.\n */\n set mesh(mesh: Mesh | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0);\n }\n\n /** Skin for this mesh component. */\n @nativeProperty()\n get skin(): Skin | null {\n const index = this.engine.wasm._wl_mesh_component_get_skin(this._id);\n return this._scene.skins.wrap(index);\n }\n\n /**\n * Set skin to transform this mesh component.\n *\n * @param skin Skin to use for rendering skinned meshes.\n */\n set skin(skin: Skin | null | undefined) {\n this.scene.assertOrigin(skin);\n this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0);\n }\n\n /**\n * Morph targets for this mesh component.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargets(): MorphTargets | null {\n const index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id);\n return this.engine.morphTargets.wrap(index);\n }\n\n /**\n * Set morph targets to transform this mesh component.\n *\n * @param morphTargets Morph targets to use for rendering.\n *\n * @since 1.2.0\n */\n set morphTargets(morphTargets: MorphTargets | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_morph_targets(\n this._id,\n morphTargets?._id ?? 0\n );\n }\n\n /**\n * Equivalent to {@link getMorphTargetWeights}.\n *\n * @note Prefer to use {@link getMorphTargetWeights} for performance.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargetWeights(): Float32Array {\n return this.getMorphTargetWeights();\n }\n\n /**\n * Set the morph target weights to transform this mesh component.\n *\n * @param weights New weights.\n *\n * @since 1.2.0\n */\n set morphTargetWeights(weights: Readonly) {\n this.setMorphTargetWeights(weights);\n }\n\n /** @overload */\n getMorphTargetWeights(): Float32Array;\n /**\n * Get morph target weights for this mesh component.\n *\n * @param out Destination array, expected to have at least as many elements\n * as {@link MorphTargets.count}.\n * @returns The `out` parameter.\n *\n * @since 1.2.0\n */\n getMorphTargetWeights(out: T): T;\n getMorphTargetWeights(out?: NumberArray): NumberArray {\n const wasm = this.engine.wasm;\n const count = wasm._wl_mesh_component_get_morph_target_weights(\n this._id,\n wasm._tempMem\n );\n if (!out) {\n out = new Float32Array(count);\n }\n for (let i = 0; i < count; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Get the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @returns The weight.\n *\n * @since 1.2.0\n */\n getMorphTargetWeight(target: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n return this.engine.wasm._wl_mesh_component_get_morph_target_weight(\n this._id,\n target\n );\n }\n\n /**\n * Set morph target weights for this mesh component.\n *\n * @param weights Array of new weights, expected to have at least as many\n * elements as {@link MorphTargets.count}.\n *\n * @since 1.2.0\n */\n setMorphTargetWeights(weights: Readonly) {\n const count = this.morphTargets?.count ?? 0;\n if (weights.length !== count) {\n throw new Error(`Expected ${count} weights but got ${weights.length}`);\n }\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(weights);\n wasm._wl_mesh_component_set_morph_target_weights(\n this._id,\n wasm._tempMem,\n weights.length\n );\n }\n\n /**\n * Set the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @param weight The new weight.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\n setMorphTargetWeight(target: number, weight: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n this.engine.wasm._wl_mesh_component_set_morph_target_weight(\n this._id,\n target,\n weight\n );\n }\n}\n\n/**\n * Native particle effect component.\n *\n * @since 1.4.0\n */\nexport class ParticleEffectComponent extends Component {\n /** @override */\n static TypeName = 'particle-effect';\n\n /** Particle effect used by this component. */\n @nativeProperty()\n get particleEffect(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(\n this._id\n );\n return this.engine.particleEffects.wrap(index);\n }\n\n /**\n * Set particle effect to use with this component.\n *\n * @param particleEffect Particle effect used by this component.\n */\n set particleEffect(particleEffect: ParticleEffect | null | undefined) {\n this.engine.wasm._wl_particleEffect_component_set_particleEffect(\n this._id,\n particleEffect?._id ?? 0\n );\n }\n}\n\n/**\n * Enum for Physics axes locking\n *\n * See {@link PhysXComponent.angularLockAxis} and {@link PhysXComponent.linearLockAxis}.\n */\nexport enum LockAxis {\n /**\n * No axis selected.\n */\n None = 0,\n\n /**\n * **X axis**:\n */\n X = 1 << 0,\n\n /**\n * **Y axis**:\n */\n Y = 1 << 1,\n\n /**\n * **Z axis**:\n */\n Z = 1 << 2,\n}\n\n/**\n * Native physx rigid body component.\n *\n * Provides access to a native mesh component instance.\n * Only available when using physx enabled runtime, see \"Project Settings > Runtime\".\n */\nexport class PhysXComponent extends Component {\n /** @override */\n static TypeName = 'physx';\n\n /** @overload */\n getTranslationOffset(): Float32Array;\n /**\n * Local translation offset.\n *\n * Allows to move a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getTranslationOffset(out: T): T;\n getTranslationOffset(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRotationOffset(): Float32Array;\n /**\n * Local rotation offset represented as a quaternion.\n *\n * Allows to rotate a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getRotationOffset(out: T): T;\n getRotationOffset(out: NumberArray = new Float32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr =\n wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * The shape extents for collision detection.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_physx_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** @overload */\n getLinearVelocity(): Float32Array;\n /**\n * Linear velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLinearVelocity(out: T): T;\n getLinearVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_linearVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getAngularVelocity(): Float32Array;\n /**\n * Angular velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getAngularVelocity(out: T): T;\n getAngularVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_angularVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /**\n * Set whether this rigid body is static.\n *\n * Setting this property only takes effect once the component\n * switches from inactive to active.\n *\n * @param b Whether the rigid body should be static.\n */\n set static(b: boolean) {\n this.engine.wasm._wl_physx_component_set_static(this._id, b);\n }\n\n /**\n * Whether this rigid body is static.\n *\n * This property returns whether the rigid body is *effectively*\n * static. If static property was set while the rigid body was\n * active, it will not take effect until the rigid body is set\n * inactive and active again. Until the component is set inactive,\n * this getter will return whether the rigid body is actually\n * static.\n */\n @nativeProperty()\n get static(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_static(this._id);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getTranslationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getTranslationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get translationOffset(): Float32Array {\n return this.getTranslationOffset();\n }\n\n /**\n * Set the offset translation.\n *\n * The array must be a vector of at least **3** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set translationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetTranslation(\n this._id,\n offset[0],\n offset[1],\n offset[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getRotationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getRotationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get rotationOffset(): Float32Array {\n return this.getRotationOffset();\n }\n\n /**\n * Set the offset rotation.\n *\n * The array must be a quaternion of at least **4** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set rotationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetRotation(\n this._id,\n offset[0],\n offset[1],\n offset[2],\n offset[3]\n );\n }\n\n /**\n * Set whether this rigid body is kinematic.\n *\n * @param b Whether the rigid body should be kinematic.\n */\n set kinematic(b: boolean) {\n this.engine.wasm._wl_physx_component_set_kinematic(this._id, b);\n }\n\n /**\n * Whether this rigid body is kinematic.\n */\n @nativeProperty()\n get kinematic(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id);\n }\n\n /**\n * Set whether this rigid body's gravity is enabled.\n *\n * @param b Whether the rigid body's gravity should be enabled.\n */\n set gravity(b: boolean) {\n this.engine.wasm._wl_physx_component_set_gravity(this._id, b);\n }\n\n /**\n * Whether this rigid body's gravity flag is enabled.\n */\n @nativeProperty()\n get gravity(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_gravity(this._id);\n }\n\n /**\n * Set whether this rigid body's simulate flag is enabled.\n *\n * @param b Whether the rigid body's simulate flag should be enabled.\n */\n set simulate(b: boolean) {\n this.engine.wasm._wl_physx_component_set_simulate(this._id, b);\n }\n\n /**\n * Whether this rigid body's simulate flag is enabled.\n */\n @nativeProperty()\n get simulate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_simulate(this._id);\n }\n\n /**\n * Set whether to allow simulation of this rigid body.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling {@link allowSimulation} while {@link trigger} is enabled\n * will disable {@link trigger}.\n *\n * @param b Whether to allow simulation of this rigid body.\n */\n set allowSimulation(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b);\n }\n\n /**\n * Whether to allow simulation of this rigid body.\n */\n @nativeProperty()\n get allowSimulation(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id);\n }\n\n /**\n * Set whether this rigid body may be queried in ray casts.\n *\n * @param b Whether this rigid body may be queried in ray casts.\n */\n set allowQuery(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b);\n }\n\n /**\n * Whether this rigid body may be queried in ray casts.\n */\n @nativeProperty()\n get allowQuery(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id);\n }\n\n /**\n * Set whether this physics body is a trigger.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling trigger while {@link allowSimulation} is enabled,\n * will disable {@link allowSimulation}.\n *\n * @param b Whether this physics body is a trigger.\n */\n set trigger(b: boolean) {\n this.engine.wasm._wl_physx_component_set_trigger(this._id, b);\n }\n\n /**\n * Whether this physics body is a trigger.\n */\n @nativeProperty()\n get trigger(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_trigger(this._id);\n }\n\n /**\n * Set the shape for collision detection.\n *\n * @param s New shape.\n * @since 0.8.5\n */\n set shape(s: Shape) {\n this.engine.wasm._wl_physx_component_set_shape(this._id, s);\n }\n\n /** The shape for collision detection. */\n @nativeProperty()\n get shape(): Shape {\n return this.engine.wasm._wl_physx_component_get_shape(this._id);\n }\n\n /**\n * Set additional data for the shape.\n *\n * Retrieved only from {@link PhysXComponent#shapeData}.\n * @since 0.8.10\n */\n set shapeData(d) {\n if (d == null || !isMeshShape(this.shape)) return;\n this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index);\n }\n\n /**\n * Additional data for the shape.\n *\n * `null` for {@link Shape} values: `None`, `Sphere`, `Capsule`, `Box`, `Plane`.\n * `{index: n}` for `TriangleMesh` and `ConvexHull`.\n *\n * This data is currently only for passing onto or creating other {@link PhysXComponent}.\n * @since 0.8.10\n */\n @nativeProperty()\n get shapeData(): {\n index: number;\n } | null {\n if (!isMeshShape(this.shape)) return null;\n return {\n index: this.engine.wasm._wl_physx_component_get_shape_data(this._id),\n };\n }\n\n /**\n * Set the shape extents for collision detection.\n *\n * @param e New extents for the shape.\n * @since 0.8.5\n */\n set extents(e: Readonly) {\n this.extents.set(e);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getExtents}.\n *\n * @note Prefer to use {@link PhysXComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n const wasm = this.engine.wasm;\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const ptr = wasm._wl_physx_component_get_extents(this._id);\n return new Float32Array(wasm.HEAPF32.buffer, ptr, 3);\n }\n\n /**\n * Get staticFriction.\n */\n @nativeProperty()\n get staticFriction(): number {\n return this.engine.wasm._wl_physx_component_get_staticFriction(this._id);\n }\n\n /**\n * Set staticFriction.\n * @param v New staticFriction.\n */\n set staticFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v);\n }\n\n /**\n * Get dynamicFriction.\n */\n @nativeProperty()\n get dynamicFriction(): number {\n return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id);\n }\n\n /**\n * Set dynamicFriction\n * @param v New dynamicDamping.\n */\n set dynamicFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v);\n }\n\n /**\n * Get bounciness.\n * @since 0.9.0\n */\n @nativeProperty()\n get bounciness(): number {\n return this.engine.wasm._wl_physx_component_get_bounciness(this._id);\n }\n\n /**\n * Set bounciness.\n * @param v New bounciness.\n * @since 0.9.0\n */\n set bounciness(v: number) {\n this.engine.wasm._wl_physx_component_set_bounciness(this._id, v);\n }\n\n /**\n * Get linearDamping/\n */\n @nativeProperty()\n get linearDamping(): number {\n return this.engine.wasm._wl_physx_component_get_linearDamping(this._id);\n }\n\n /**\n * Set linearDamping.\n * @param v New linearDamping.\n */\n set linearDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v);\n }\n\n /** Get angularDamping. */\n @nativeProperty()\n get angularDamping(): number {\n return this.engine.wasm._wl_physx_component_get_angularDamping(this._id);\n }\n\n /**\n * Set angularDamping.\n * @param v New angularDamping.\n */\n set angularDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v);\n }\n\n /**\n * Set linear velocity.\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New linear velocity.\n */\n set linearVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getLinearVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getLinearVelocity} for performance.\n */\n @nativeProperty()\n get linearVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set angular velocity\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New angular velocity\n */\n set angularVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_angularVelocity(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getAngularVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getAngularVelocity} for performance.\n */\n @nativeProperty()\n get angularVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set the components groups mask.\n *\n * @param flags New flags that need to be set.\n */\n set groupsMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags);\n }\n\n /**\n * Get the components groups mask flags.\n *\n * Each bit represents membership to group, see example.\n *\n * ```js\n * // Assign c to group 2\n * c.groupsMask = (1 << 2);\n *\n * // Assign c to group 0\n * c.groupsMask = (1 << 0);\n *\n * // Assign c to group 0 and 2\n * c.groupsMask = (1 << 0) | (1 << 2);\n *\n * (c.groupsMask & (1 << 2)) != 0; // true\n * (c.groupsMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get groupsMask(): number {\n return this.engine.wasm._wl_physx_component_get_groupsMask(this._id);\n }\n\n /**\n * Set the components blocks mask.\n *\n * @param flags New flags that need to be set.\n */\n set blocksMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags);\n }\n\n /**\n * Get the components blocks mask flags.\n *\n * Each bit represents membership to the block, see example.\n *\n * ```js\n * // Block overlap with any objects in group 2\n * c.blocksMask = (1 << 2);\n *\n * // Block overlap with any objects in group 0\n * c.blocksMask = (1 << 0)\n *\n * // Block overlap with any objects in group 0 and 2\n * c.blocksMask = (1 << 0) | (1 << 2);\n *\n * (c.blocksMask & (1 << 2)) != 0; // true\n * (c.blocksMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get blocksMask(): number {\n return this.engine.wasm._wl_physx_component_get_blocksMask(this._id);\n }\n\n /**\n * Set axes to lock for linear velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * Combine flags with Bitwise OR:\n *\n * ```js\n * body.linearLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.linearLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set linearLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock);\n }\n\n /**\n * Get the linear lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed.\n *\n * ```js\n * if(body.linearLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for linear movement.\n */\n @nativeProperty()\n get linearLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id);\n }\n\n /**\n * Set axes to lock for angular velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * ```js\n * body.angularLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.angularLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set angularLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock);\n }\n\n /**\n * Get the angular lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed:\n *\n * ```js\n * if(body.angularLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for angular movement.\n */\n @nativeProperty()\n get angularLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id);\n }\n\n /**\n * Set mass.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * @param m New mass.\n */\n set mass(m: number) {\n this.engine.wasm._wl_physx_component_set_mass(this._id, m);\n }\n\n /** Mass */\n @nativeProperty()\n get mass(): number {\n return this.engine.wasm._wl_physx_component_get_mass(this._id);\n }\n\n /**\n * Set mass space interia tensor.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New mass space interatia tensor.\n */\n set massSpaceInteriaTensor(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Set the rigid body to sleep upon activation.\n *\n * When asleep, the rigid body will not be simulated until the next contact.\n *\n * @param flag `true` to sleep upon activation.\n *\n * @since 1.1.5\n */\n set sleepOnActivate(flag: boolean) {\n this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag);\n }\n\n /**\n * `true` if the rigid body is set to sleep upon activation, `false` otherwise.\n *\n * @since 1.1.5\n */\n @nativeProperty()\n get sleepOnActivate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id);\n }\n\n /**\n * Apply a force.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n * @param localForce Whether the force vector is in local space, default `false`.\n * @param p Position to apply force at, default is center of mass.\n * @param local Whether position is in local space, default `false`.\n */\n addForce(\n f: Readonly,\n m: ForceMode = ForceMode.Force,\n localForce: boolean = false,\n p?: Readonly,\n local: boolean = false\n ) {\n const wasm = this.engine.wasm;\n if (!p) {\n wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce);\n return;\n }\n wasm._wl_physx_component_addForceAt(\n this._id,\n f[0],\n f[1],\n f[2],\n m,\n localForce,\n p[0],\n p[1],\n p[2],\n local\n );\n }\n\n /**\n * Apply torque.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n */\n addTorque(f: Readonly, m: ForceMode = ForceMode.Force) {\n this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m);\n }\n\n /**\n * Add on collision callback.\n *\n * @param callback Function to call when this rigid body (un)collides with any other.\n *\n * ```js\n * let rigidBody = this.object.getComponent('physx');\n * rigidBody.onCollision(function(type, other) {\n * // Ignore uncollides\n * if(type == CollisionEventType.TouchLost) return;\n *\n * // Take damage on collision with enemies\n * if(other.object.name.startsWith(\"enemy-\")) {\n * this.applyDamage(10);\n * }\n * }.bind(this));\n * ```\n *\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollision(callback: CollisionCallback): number {\n return this.onCollisionWith(this, callback);\n }\n\n /**\n * Add filtered on collision callback.\n *\n * @param otherComp Component for which callbacks will\n * be triggered. If you pass this component, the method is equivalent to.\n * {@link PhysXComponent#onCollision}.\n * @param callback Function to call when this rigid body\n * (un)collides with `otherComp`.\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollisionWith(otherComp: this, callback: CollisionCallback): number {\n const callbacks = this.scene._pxCallbacks;\n if (!callbacks.has(this._id)) {\n callbacks.set(this._id, []);\n }\n callbacks.get(this._id)!.push(callback);\n return this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id);\n }\n\n /**\n * Remove a collision callback added with {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n *\n * @param callbackId Callback id as returned by {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n * @throws When the callback does not belong to the component.\n * @throws When the callback does not exist.\n */\n removeCollisionCallback(callbackId: number): void {\n const r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId);\n const callbacks = this.scene._pxCallbacks;\n /* r is the amount of object to remove from the end of the\n * callbacks array for this object */\n if (r) callbacks.get(this._id)!.splice(-r);\n }\n}\n\n/**\n * Access to the physics scene\n */\nexport class Physics {\n /**\n * Hit.\n * @hidden\n */\n _hit: RayHit;\n\n /**\n * Wonderland Engine instance\n * @hidden\n */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * Ray Hit\n * @hidden\n */\n private _rayHit: number;\n\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n const wasm = engine.wasm;\n this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(engine.scene, this._rayHit);\n\n /* Setup the physics callback. */\n wasm._wl_physx_set_collision_callback(\n wasm.addFunction((a: number, index: number, type: number, b: number) => {\n const physxA = this._engine.scene._components.wrapPhysx(a)!;\n const physxB = this._engine.scene._components.wrapPhysx(b)!;\n /* We assume that the map returns an array. If not,\n * this is an internal engine error. */\n const callbacks = this._engine.scene._pxCallbacks.get(physxA._id)!;\n const callback = callbacks[index];\n callback(type, physxB as PhysXComponent);\n }, 'viiii')\n );\n }\n\n /**\n * Cast a ray through the scene and find intersecting physics components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.physics.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against physics components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of physics groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Physics}\n * instance and will be reused with the next {@link Physics#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance: number = 100.0\n ): RayHit {\n const scene = this._engine.scene._index;\n this._engine.wasm._wl_physx_ray_cast(\n scene,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n maxDistance,\n this._rayHit\n );\n return this._hit;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Mesh index type.\n */\nexport enum MeshIndexType {\n /** Single byte mesh index, range 0-255 */\n UnsignedByte = 1,\n\n /** Two byte mesh index, range 0-65535 */\n UnsignedShort = 2,\n\n /** Four byte mesh index, range 0-4294967295 */\n UnsignedInt = 4,\n}\n\n/**\n * Mesh skinning type.\n */\nexport enum MeshSkinningType {\n /** Not skinned */\n None = 0,\n\n /** Skinned, 4 joints/weight per vertex */\n FourJoints = 1,\n\n /** Skinned, 8 joints/weight per vertex */\n EightJoints = 2,\n}\n\n/**\n * Mesh constructor parameters object.\n *\n * Usage:\n *\n * ```js\n * const mesh = Mesh({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n */\nexport interface MeshParameters {\n /** Number of vertices to allocate. */\n vertexCount: number;\n /** Index data values. */\n indexData: Readonly;\n /** Index type, `null` if not indexed. */\n indexType: MeshIndexType;\n /** Whether the mesh should be skinned. Defaults to not skinned. */\n skinningType: MeshSkinningType;\n}\n\n/**\n * Wrapper around a native mesh data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link MeshManager} class.\n *\n * #### Update\n *\n * To modify a mesh, you get access to a {@link MeshAttributeAccessor} that\n * allows you to modify the content of the buffers:\n *\n * Usage:\n *\n * ```js\n * const mesh = engine.es.create({vertexCount: 3, indexData: [0, 1, 2]});\n * const positions = mesh.attribute(MeshAttribute.Position);\n * ...\n * ```\n *\n * @note Meshes are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Mesh extends Resource {\n /**\n * @deprecated Use {@link MeshManager.create} instead, accessible via {@link WonderlandEngine.meshes}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ...\n * mesh.update();\n * ```\n */\n constructor(engine: WonderlandEngine, params: Partial | number) {\n if (!isNumber(params)) {\n const mesh = engine.meshes.create(params);\n /* `super()` must be called as stated in the specification */\n super(engine, mesh._index);\n return mesh;\n }\n super(engine, params);\n }\n\n /** Number of vertices in this mesh. */\n get vertexCount(): number {\n return this.engine.wasm._wl_mesh_get_vertexCount(this._id);\n }\n\n /** Index data (read-only) or `null` if the mesh is not indexed. */\n get indexData(): Uint8Array | Uint16Array | Uint32Array | null {\n const wasm = this.engine.wasm;\n const tempMem = wasm._tempMem;\n const ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4);\n if (ptr === null) return null;\n\n const indexCount = wasm.HEAPU32[tempMem / 4];\n const indexSize = wasm.HEAPU32[tempMem / 4 + 1];\n switch (indexSize) {\n case MeshIndexType.UnsignedByte:\n return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedShort:\n return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedInt:\n return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount);\n }\n return null;\n }\n\n /**\n * Apply changes to {@link attribute | vertex attributes}.\n *\n * Uploads the updated vertex attributes to the GPU and updates the bounding\n * sphere to match the new vertex positions.\n *\n * Since this is an expensive operation, call it only once you have performed\n * all modifications on a mesh and avoid calling if you did not perform any\n * modifications at all.\n */\n update() {\n this.engine.wasm._wl_mesh_update(this._id);\n }\n\n /** @overload */\n getBoundingSphere(): Float32Array;\n /** @overload */\n getBoundingSphere(out: T): T;\n /**\n * Mesh bounding sphere.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * ```js\n * const sphere = new Float32Array(4);\n * for(...) {\n * mesh.getBoundingSphere(sphere);\n * ...\n * }\n * ```\n *\n * If the position data is changed, call {@link Mesh#update} to update the\n * bounding sphere.\n *\n * @returns Bounding sphere, 0-2 sphere origin, 3 radius.\n */\n getBoundingSphere(out: T | Float32Array): T | Float32Array;\n getBoundingSphere(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n attribute(\n attr: MeshAttribute.Position\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Tangent\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Normal\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.TextureCoordinate\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Color\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointId\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointWeight\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.SecondaryTextureCoordinate\n ): MeshAttributeAccessor | null;\n /**\n * Get an attribute accessor to retrieve or modify data of give attribute.\n *\n * @param attr Attribute to get access to\n * @returns Attribute to get access to or `null`, if mesh does not have this attribute.\n *\n * Call {@link update} for changes to vertex attributes to take effect.\n *\n * If there are no shaders in the scene that use `TextureCoordinate` for example,\n * no meshes will have the `TextureCoordinate` attribute.\n *\n * For flexible reusable components, take this into account that only `Position`\n * is guaranteed to be present at all time.\n */\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null;\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null {\n if (typeof attr != 'number')\n throw new TypeError('Expected number, but got ' + typeof attr);\n\n const wasm = this.engine.wasm;\n const tempMemUint32 = wasm._tempMemUint32;\n wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem);\n if (tempMemUint32[0] == 255) return null;\n\n const arraySize = tempMemUint32[5];\n return new MeshAttributeAccessor(this.engine, {\n attribute: tempMemUint32[0],\n offset: tempMemUint32[1],\n stride: tempMemUint32[2],\n formatSize: tempMemUint32[3],\n componentCount: tempMemUint32[4],\n /* The WASM API returns `0` for a scalar value. We clamp it to 1 as we strictly use it as a multiplier for get/set operations */\n arraySize: arraySize ? arraySize : 1,\n length: this.vertexCount,\n bufferType: (attr !== MeshAttribute.JointId\n ? Float32Array\n : Uint16Array) as TypedArrayCtor,\n });\n }\n\n /**\n * Destroy and free the meshes memory.\n *\n * It is best practice to set the mesh variable to `null` after calling\n * destroy to prevent accidental use:\n *\n * ```js\n * mesh.destroy();\n * mesh = null;\n * ```\n *\n * Accessing the mesh after destruction behaves like accessing an empty\n * mesh.\n *\n * @since 0.9.0\n */\n destroy(): void {\n this.engine.wasm._wl_mesh_destroy(this._id);\n this.engine.meshes._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Mesh(destroyed)';\n }\n return `Mesh(${this._index})`;\n }\n}\n\n/**\n * Options to create a new {@link MeshAttributeAccessor} instance.\n */\ninterface MeshAttributeAccessorOptions {\n attribute: number;\n offset: number;\n stride: number;\n formatSize: number;\n componentCount: number;\n arraySize: number;\n length: number;\n bufferType: T;\n}\n\n/**\n * An iterator over a mesh vertex attribute.\n *\n * Usage:\n *\n * ```js\n * const mesh = this.object.getComponent('mesh').mesh;\n * const positions = mesh.attribute(MeshAttribute.Position);\n *\n * // Equivalent to `new Float32Array(3)`.\n * const temp = positions.createArray();\n *\n * for(let i = 0; i < positions.length; ++i) {\n * // `pos` will reference `temp` and thereby not allocate additional\n * // memory, which would cause a perf spike when collected.\n * const pos = positions.get(i, temp);\n * // Scale position by 2 on x-axis only.\n * pos[0] *= 2.0;\n * positions.set(i, pos);\n * }\n * // We're done modifying, tell the engine to move vertex data to the GPU.\n * mesh.update();\n * ```\n */\nexport class MeshAttributeAccessor {\n /** Max number of elements. */\n readonly length: number = 0;\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Attribute index. @hidden */\n private _attribute: number = -1;\n /** Attribute offset. @hidden */\n private _offset: number = 0;\n /** Attribute stride. @hidden */\n private _stride: number = 0;\n /** Format size native enum. @hidden */\n private _formatSize: number = 0;\n /** Number of components per vertex. @hidden */\n private _componentCount: number = 0;\n /** Number of values per vertex. @hidden */\n private _arraySize: number = 1;\n\n /**\n * Class to instantiate an ArrayBuffer to get/set values.\n */\n private _bufferType: T;\n /**\n * Function to allocate temporary WASM memory. It is cached in the accessor to avoid\n * conditionals during get/set.\n */\n private _tempBufferGetter: (bytes: number) => TypedArray;\n\n /**\n * Create a new instance.\n *\n * @note Please use {@link Mesh.attribute} to create a new instance.\n *\n * @param options Contains information about how to read the data.\n * @note Do not use this constructor. Instead, please use the {@link Mesh.attribute} method.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, options: MeshAttributeAccessorOptions) {\n this._engine = engine;\n\n this._attribute = options.attribute;\n this._offset = options.offset;\n this._stride = options.stride;\n this._formatSize = options.formatSize;\n this._componentCount = options.componentCount;\n this._arraySize = options.arraySize;\n this._bufferType = options.bufferType;\n this.length = options.length;\n\n const wasm = this._engine.wasm;\n this._tempBufferGetter = (\n this._bufferType === Float32Array\n ? wasm.getTempBufferF32.bind(wasm)\n : wasm.getTempBufferU16.bind(wasm)\n ) as () => TypedArray;\n }\n\n /**\n * Create a new TypedArray to hold this attribute's values.\n *\n * This method is useful to create a view to hold the data to\n * pass to {@link get} and {@link set}\n *\n * Example:\n *\n * ```js\n * const vertexCount = 4;\n * const positionAttribute = mesh.attribute(MeshAttribute.Position);\n *\n * // A position has 3 floats per vertex. Thus, positions has length 3 * 4.\n * const positions = positionAttribute.createArray(vertexCount);\n * ```\n *\n * @param count The number of **vertices** expected.\n * @returns A TypedArray with the appropriate format to access the data\n */\n createArray(count = 1): TypedArray {\n count = count > this.length ? this.length : count;\n return new this._bufferType(\n count * this._componentCount * this._arraySize\n ) as TypedArray;\n }\n\n /** @overload */\n get(index: number): TypedArray;\n /**\n * Get attribute element.\n *\n * @param index Index\n * @param out Preallocated array to write into,\n * to avoid garbage, otherwise will allocate a new TypedArray.\n *\n * `out.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `out.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns The `out` parameter\n */\n get(index: number, out: T): T;\n get(index: number, out: NumberArray = this.createArray()): NumberArray {\n if (out.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(out.length, componentCount * this.length);\n\n const dest = this._tempBufferGetter(len);\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const destSize = elementSize * len;\n const srcFormatSize = this._formatSize * this._arraySize;\n const destFormatSize = this._componentCount * elementSize * this._arraySize;\n\n this.engine.wasm._wl_mesh_get_attribute_values(\n this._attribute,\n srcFormatSize,\n this._offset + index * this._stride,\n this._stride,\n destFormatSize,\n dest.byteOffset,\n destSize\n );\n\n for (let i = 0; i < len; ++i) out[i] = dest[i];\n return out;\n }\n\n /**\n * Set attribute element.\n *\n * @param i Index\n * @param v Value to set the element to\n *\n * `v.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `v.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns Reference to self (for method chaining)\n */\n set(i: number, v: Readonly) {\n if (v.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(v.length, componentCount * this.length);\n\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const srcSize = elementSize * len;\n const srcFormatSize = componentCount * elementSize;\n const destFormatSize = this._formatSize * this._arraySize;\n\n const wasm = this.engine.wasm;\n\n /* Unless we are already working with data from WASM heap, we\n * need to copy into temporary memory. */\n if ((v as Float32Array).buffer != wasm.HEAPU8.buffer) {\n const dest = this._tempBufferGetter(len);\n dest.set(v);\n v = dest;\n }\n\n wasm._wl_mesh_set_attribute_values(\n this._attribute,\n srcFormatSize,\n (v as Float32Array).byteOffset,\n srcSize,\n destFormatSize,\n this._offset + i * this._stride,\n this._stride\n );\n\n return this;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Wrapper around a native font resource.\n *\n * @note Fonts are **per-engine**, they can thus be shared by multiple scenes.\n *\n * @since 1.2.0\n */\nexport class Font extends Resource {\n /** Em height in object space. Equivalent to line height. */\n get emHeight(): number {\n return this.engine.wasm._wl_font_get_emHeight(this._id);\n }\n\n /**\n * Cap height in object space. This is the typical height of capital\n * letters. Can be 0 if not defined by the font.\n */\n get capHeight(): number {\n return this.engine.wasm._wl_font_get_capHeight(this._id);\n }\n\n /**\n * X height in object space. This is the typical height of lowercase\n * letters. Can be 0 if not defined by the font.\n */\n get xHeight(): number {\n return this.engine.wasm._wl_font_get_xHeight(this._id);\n }\n\n /**\n * Outline size. This is the factor by which characters are expanded to\n * create the outline effect. Returns 0 if the font was compiled without\n * an outline.\n *\n * @since 1.2.1\n */\n get outlineSize(): number {\n return this.engine.wasm._wl_font_get_outlineSize(this._id);\n }\n}\n\n/**\n * Wrapper around a native particle effect resource.\n *\n * @note Particle effects are **per-engine**, they can thus be shared by\n * multiple scenes.\n *\n * @since 1.4.0\n */\nexport class ParticleEffect extends Resource {\n /**\n * Create a copy of the underlying native particle effect.\n *\n * @returns Particle effect clone.\n */\n clone(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_clone(this._id);\n return this.engine.particleEffects.wrap(index);\n }\n}\n\n/** Temporary canvas */\nlet temp2d: {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} | null = null;\n\n/**\n * Wrapper around a native texture data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link TextureManager} class.\n *\n * @note Textures are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Texture extends Resource {\n /**\n * @deprecated Use {@link TextureManager.create} instead, accessible via\n * {@link WonderlandEngine.textures}:\n *\n * ```js\n * const image = new Image();\n * image.onload = () => {\n * const texture = engine.textures.create(image);\n * };\n * ```\n */\n constructor(engine: WonderlandEngine, param: ImageLike | number) {\n if (isImageLike(param)) {\n const texture = engine.textures.create(param);\n /* `super()` must be called as stated in the specification */\n super(engine, texture._index);\n return texture;\n }\n super(engine, param);\n }\n\n /** Whether this texture is valid. */\n get valid(): boolean {\n return !this.isDestroyed && this.width !== 0 && this.height !== 0;\n }\n\n /**\n * Index in this manager.\n *\n * @deprecated Use {@link Texture.index} instead.\n */\n get id(): number {\n return this.index;\n }\n\n /** Update the texture to match the HTML element (e.g. reflect the current frame of a video). */\n update() {\n const image = this._imageIndex;\n if (!this.valid || !image) return;\n\n this.engine.wasm._wl_image_markDirty(image);\n }\n\n /**\n * Width of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the width used at creation.\n * If the actual element's width changed, it must be read from the element itself.\n */\n get width(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoWidth ?? element.width;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[0];\n }\n\n /**\n * Height of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the height used at creation.\n * If the actual element's height changed, it must be read from the element itself.\n */\n get height(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoHeight ?? element.height;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[1];\n }\n\n /**\n * Returns the html element associated to this texture.\n *\n * @note This accessor will return `null` if the image is compressed.\n */\n get htmlElement(): ImageLike | null {\n const image = this._imageIndex;\n if (!image) return null;\n\n const wasm = this.engine.wasm;\n const jsImageIndex = wasm._wl_image_get_jsImage_index(image);\n\n /* Since the first element is `null`, no need to check for `jsImageIndex` */\n return wasm._images[jsImageIndex];\n }\n\n /**\n * Upload content to the texture to the GPU.\n *\n * Usage:\n *\n * ```js\n * // Size 128x64\n * const image = new Image();\n * texture.updateSubImage(28, 4, 100, 60, 0, 0, image);\n * ```\n *\n * @note The source is cropped if the destination offset and source dimensions\n * are out-of-bounds regarding the texture size.\n *\n * @note Uploading a texture without a source offset is significantly faster.\n *\n * #### ImageBitmap\n *\n * If you need to upload a subregion, it's recommended to use:\n *\n * ```js\n * createImageBitmap(image, sourceX, sourceY, sourceWidth, sourceHeight).then(bitmap => {\n * const destinationX = sourceX;\n * const destinationY = sourceY;\n * texture.updateSubImage(0, 0, sourceWidth, sourceHeight, destinationX, destinationY, bitmap);\n * });\n * ```\n *\n * You could use this method with a `src` offset, but the synchronous implementation\n * uses a temporary 2d canvas, negatively affecting performance for large content.\n *\n * @param srcX Horizontal pixel offset, in the source image.\n * @param srcY Vertical pixel offset, in the source image.\n * @param srcWidth Width of the sub image, in the source image.\n * @param srcHeight Height of the sub image, in the source image\n * @param dstX Horizontal pixel offset, in the destination image.\n * Defaults to `srcX` for backward compatibility with older API versions.\n * @param dstY Vertical pixel offset, in the destination image.\n * Defaults to `srcY` for backward compatibility with older API versions.\n * @param content `Image`, `HTMLCanvasElement`, `HTMLVideoElement`, or `ImageBitmap` to upload.\n * @returns `true` if the update went through, `false` otherwise.\n */\n updateSubImage(\n srcX: number,\n srcY: number,\n srcWidth: number,\n srcHeight: number,\n dstX: number = srcX,\n dstY: number = srcY,\n content?: ImageLike\n ): boolean {\n if (this.isDestroyed) return false;\n\n const image = this._imageIndex;\n if (!image) return false;\n\n let img = content ?? this.htmlElement;\n if (!img) return false;\n\n const isImageBitmap = img instanceof ImageBitmap;\n /* ImageBitmap can't be flipped upon upload to the GPU.\n * Thus, we need to skip flipping the temporary canvas to keep the same behavior\n * when uploading an ImageBitmap and uploading a blitted ImageBitmap. */\n const flipY = !isImageBitmap;\n\n if (srcX || srcY) {\n /* Lazy initialize temp canvas */\n if (!temp2d) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n 'Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D.'\n );\n }\n temp2d = {canvas, ctx};\n }\n temp2d.canvas.width = srcWidth;\n temp2d.canvas.height = srcHeight;\n\n temp2d.ctx.drawImage(\n img,\n srcX,\n isImageBitmap ? img.height - srcY - srcHeight : srcY,\n srcWidth,\n srcHeight,\n 0,\n 0,\n srcWidth,\n srcHeight\n );\n img = temp2d.canvas;\n }\n\n const wasm = this.engine.wasm;\n wasm._images[0] = img;\n\n /* Clamp the width/height to avoid a GL upload error */\n const width = srcWidth - Math.max(srcWidth + dstX - this.width, 0);\n const height = srcHeight - Math.max(srcHeight + dstY - this.height, 0);\n const dstReversedY = this.height - dstY - height;\n\n const ret = wasm._wl_renderer_updateImage(\n image,\n 0,\n width,\n height,\n dstX,\n dstReversedY,\n flipY\n );\n wasm._images[0] = null;\n\n return !!ret;\n }\n\n /**\n * Destroy and free the texture's texture altas space and memory.\n *\n * It is best practice to set the texture variable to `null` after calling\n * destroy to prevent accidental use of the invalid texture:\n *\n * ```js\n * texture.destroy();\n * texture = null;\n * ```\n *\n * @since 0.9.0\n */\n destroy(): void {\n const wasm = this.engine.wasm;\n\n const img = wasm._images[this._imageIndex];\n if (img instanceof ImageBitmap) img.close();\n\n wasm._wl_texture_destroy(this._id);\n this.engine.textures._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Texture(destroyed)';\n }\n return `Texture(${this._index})`;\n }\n\n private get _imageIndex() {\n return this.engine.wasm._wl_texture_get_image_index(this._id);\n }\n}\n\n/**\n * Wrapper around a native animation.\n */\nexport class Animation extends SceneResource {\n /**\n * @param index Index in the manager\n */\n constructor(host: WonderlandEngine | Prefab = WL, index: number) {\n const scene = host instanceof Prefab ? host : host.scene;\n super(scene as Prefab, index);\n }\n\n /** Duration of this animation. */\n get duration(): number {\n return this.engine.wasm._wl_animation_get_duration(this._id);\n }\n\n /** Number of tracks in this animation. */\n get trackCount(): number {\n return this.engine.wasm._wl_animation_get_trackCount(this._id);\n }\n\n /**\n * Clone this animation retargeted to a new set of objects.\n *\n * The clone shares most of the data with the original and is therefore\n * light-weight.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * If retargeting to {@link Skin}, the join names will be used to determine a mapping\n * from the previous skin to the new skin. The source skin will be retrieved from\n * the first track in the animation that targets a joint.\n *\n * @param newTargets New targets per track. Expected to have\n * {@link Animation#trackCount} elements or to be a {@link Skin}.\n * @returns The retargeted clone of this animation.\n */\n retarget(newTargets: Object3D[] | Skin): Animation {\n const wasm = this.engine.wasm;\n if (newTargets instanceof Skin) {\n const index = wasm._wl_animation_retargetToSkin(this._id, newTargets._id);\n return this._scene.animations.wrap(index)!;\n }\n\n if (newTargets.length != this.trackCount) {\n throw Error(\n 'Expected ' +\n this.trackCount.toString() +\n ' targets, but got ' +\n newTargets.length.toString()\n );\n }\n const ptr = wasm._malloc(2 * newTargets.length);\n for (let i = 0; i < newTargets.length; ++i) {\n const object3d = newTargets[i];\n this.scene.assertOrigin(object3d);\n /* Use local id here and **not** packed id, because the WASM\n * takes ownership and reinterprets the ids. */\n wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId;\n }\n const index = wasm._wl_animation_retarget(this._id, ptr);\n wasm._free(ptr);\n\n return this._scene.animations.wrap(index)!;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Animation(destroyed)';\n }\n return `Animation(${this._index})`;\n }\n}\n\n/**\n * Scene graph object.\n *\n * Node in the scene graph or \"entity\". Consists of transformation and a reference\n * to its parent object. Usually holds components and is accessible by components\n * through {@link Component#object}.\n *\n * Objects are stored in a data oriented manner inside WebAssembly memory. This class\n * is a JavaScript API wrapper around this memory for more convenient use in\n * components.\n *\n * Objects can be created and added to a scene through {@link Prefab.addObject}:\n *\n * ```js\n * const parent = scene.addObject();\n * parent.name = 'parent`';\n * const child = scene.addObject(parent);\n * child.name = 'child`';\n * ```\n */\nexport class Object3D {\n /**\n * Packed object id, containing scene index and local id.\n *\n * @hidden\n */\n readonly _id: number = -1;\n /** Object id, relative to the scene manager. @hidden */\n readonly _localId: number = -1;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * @param o Object id to wrap.\n *\n * @deprecated Objects must be obtained via {@link Scene.addObject} or {@link Scene.wrap}:\n *\n * ```js\n * // Create a new object.\n * const obj = scene.addObject();\n *\n * // Wrap an object using its id. The id must be valid.\n * const obj = scene.wrap(0);\n * ```\n *\n * @hidden\n */\n constructor(scene: WonderlandEngine | Prefab, id: number) {\n scene = scene instanceof Prefab ? scene : scene.scene;\n this._localId = id;\n this._id = (scene._index << 22) | id;\n this._scene = scene;\n /** @todo: Remove and only keep getter. */\n this._engine = scene.engine;\n }\n\n /**\n * Name of the object.\n *\n * Useful for identifying objects during debugging.\n */\n get name(): string {\n const wasm = this._engine.wasm;\n return wasm.UTF8ToString(wasm._wl_object_name(this._id));\n }\n\n /**\n * Set the object's name.\n *\n * @param newName The new name to set.\n */\n set name(newName: string) {\n const wasm = this._engine.wasm;\n wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName));\n }\n\n /**\n * Parent of this object or `null` if parented to root.\n */\n get parent(): Object3D | null {\n const p = this._engine.wasm._wl_object_parent(this._id);\n return p === 0 ? null : this._scene.wrap(p);\n }\n\n /**\n * Equivalent to {@link Object3D.getChildren}.\n *\n * @note Prefer to use {@link Object3D.getChildren} for performance.\n */\n get children(): Object3D[] {\n return this.getChildren();\n }\n\n /** The number of children of this object. */\n get childrenCount(): number {\n return this._engine.wasm._wl_object_get_children_count(this._id);\n }\n\n /**\n * Reparent object to given object.\n *\n * @note Reparenting is not trivial and might have a noticeable performance impact.\n *\n * @param newParent New parent or `null` to parent to root\n */\n set parent(newParent: Object3D | undefined | null) {\n if (this.markedDestroyed) {\n const strThis = this.toString();\n const strParent = newParent ? newParent : 'root';\n throw new Error(\n `Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`\n );\n } else if (newParent?.markedDestroyed) {\n const strParent = newParent.toString();\n throw new Error(\n `Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`\n );\n }\n this.scene.assertOrigin(newParent);\n this._engine.wasm._wl_object_set_parent(\n this._id,\n newParent == null ? 0 : newParent._id\n );\n }\n\n /** Local object id in the scene manager. */\n get objectId() {\n return this._localId;\n }\n\n /** Scene instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Add an object as a child of this instance.\n *\n * @returns A newly created object.\n */\n addChild(): Object3D {\n const objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id);\n const obj = this.scene.wrap(objectId);\n return obj;\n }\n\n /**\n * Clone this hierarchy into a new one.\n *\n * Cloning copies the hierarchy structure, object names,\n * as well as components.\n *\n * JavaScript components are cloned using {@link Component.copy}. You can\n * override this method in your components.\n *\n * @param parent The parent for the cloned hierarchy or `null` to clone\n * into the scene root. Defaults to `null`.\n *\n * @returns The clone of this object.\n */\n clone(parent: Object3D | null = null): Object3D {\n this.scene.assertOrigin(parent);\n const engine = this._engine;\n const id = engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0);\n return this._scene.wrap(id);\n }\n\n /**\n * Children of this object.\n *\n * @note Child order is **undefined**. No assumptions should be made\n * about the index of a specific object.\n *\n * If you need to access a specific child of this object, you can\n * use {@link Object3D.findByName}.\n *\n * When the object exists in the scene at editor time, prefer passing it as\n * a component property.\n *\n * @note When providing an output array, only `this.childrenCount` elements will be written.\n * The rest of the array will not be modified by this method.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const childrenCount = this.childrenCount;\n if (childrenCount === 0) return out;\n\n const wasm = this._engine.wasm;\n wasm.requireTempMem(childrenCount * 2);\n\n this._engine.wasm._wl_object_get_children(\n this._id,\n wasm._tempMem,\n wasm._tempMemSize >> 1\n );\n\n for (let i = 0; i < childrenCount; ++i) {\n out[i] = this._scene.wrap(wasm._tempMemUint16[i]);\n }\n return out;\n }\n\n /**\n * Reset local transformation (translation, rotation and scaling) to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetTransform(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /**\n * Reset local position and rotation to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPositionRotation(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPositionRotation} instead. */\n resetTranslationRotation(): this {\n return this.resetPositionRotation();\n }\n\n /**\n * Reset local rotation, keep translation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetRotation(): this {\n this._engine.wasm._wl_object_reset_rotation(this._id);\n return this;\n }\n\n /**\n * Reset local translation, keep rotation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPosition(): this {\n this._engine.wasm._wl_object_reset_translation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPosition} instead. */\n resetTranslation(): this {\n return this.resetPosition();\n }\n\n /**\n * Reset local scaling to identity (``[1.0, 1.0, 1.0]``).\n *\n * @returns Reference to self (for method chaining).\n */\n resetScaling(): this {\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.translateLocal} instead. */\n translate(v: Readonly): this {\n return this.translateLocal(v);\n }\n\n /**\n * Translate object by a vector in the parent's space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateLocal(v: Readonly): this {\n this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in object space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateObject(v: Readonly): this {\n this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in world space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateWorld(v: Readonly): this {\n this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleDegLocal} instead. */\n rotateAxisAngleDeg(a: Readonly, d: number): this {\n this.rotateAxisAngleDegLocal(a, d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleRad}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleRadLocal} instead. */\n rotateAxisAngleRad(a: Readonly, d: number): this {\n return this.rotateAxisAngleRadLocal(a, d);\n }\n\n /**\n * Rotate around given axis by given angle (radians) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in radians.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleDeg}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in object space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @see {@link rotateAxisAngleRadObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (radians) in object space\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param a Vector representing the rotation axis\n * @param d Angle in degrees\n *\n * @see {@link rotateAxisAngleDegObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(\n this._id,\n a[0],\n a[1],\n a[2],\n d\n );\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateLocal} instead. */\n rotate(q: Readonly): this {\n this.rotateLocal(q);\n return this;\n }\n\n /**\n * Rotate by a quaternion.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateLocal(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /**\n * Rotate by a quaternion in object space.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateObject(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.scaleLocal} instead. */\n scale(v: Readonly): this {\n this.scaleLocal(v);\n return this;\n }\n\n /**\n * Scale object by a vector in object space.\n *\n * @param v Vector to scale by.\n *\n * @returns Reference to self (for method chaining).\n */\n scaleLocal(v: Readonly): this {\n this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getPositionLocal(): Float32Array;\n /**\n * Compute local / object space position from transformation.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getPositionLocal(out: T): T;\n getPositionLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_local(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationLocal(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionLocal} instead. */\n getTranslationLocal(out: T): T;\n getTranslationLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionLocal(out);\n }\n\n /** @overload */\n getPositionWorld(): Float32Array;\n /**\n * Compute world space position from transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getPositionWorld(out: T): T;\n getPositionWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_world(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationWorld(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionWorld} instead. */\n getTranslationWorld(out: T): T;\n getTranslationWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionWorld(out);\n }\n\n /**\n * Set local / object space position.\n *\n * Concatenates a new translation dual quaternion onto the existing rotation.\n *\n * @param v New local position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionLocal} instead. */\n setTranslationLocal(v: Readonly): this {\n return this.setPositionLocal(v);\n }\n\n /**\n * Set world space position.\n *\n * Applies the inverse parent transform with a new translation dual quaternion\n * which is concatenated onto the existing rotation.\n *\n * @param v New world position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionWorld} instead. */\n setTranslationWorld(v: Readonly): this {\n return this.setPositionWorld(v);\n }\n\n /** @overload */\n getScalingLocal(): Float32Array;\n /**\n * Local / object space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingLocal(out: T): T;\n getScalingLocal(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set local / object space scaling.\n *\n * @param v New local scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getScalingWorld(): Float32Array;\n /**\n * World space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingWorld(out: T): T;\n getScalingWorld(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set World space scaling.\n *\n * @param v New world scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getRotationLocal(): Float32Array;\n /**\n * Local space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationLocal(out: T): T;\n getRotationLocal(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getRotationWorld(): Float32Array;\n /**\n * World space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationWorld(out: T): T;\n getRotationWorld(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getTransformLocal(): Float32Array;\n /**\n * Local space transformation.\n *\n * @param out Destination array/vector, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformLocal(out: T): T;\n getTransformLocal(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New local transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformLocal(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this.setDirty();\n return this;\n }\n\n /** @overload */\n getTransformWorld(): Float32Array;\n /**\n * World space transformation.\n *\n * @param out Destination array, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformWorld(out: T): T;\n getTransformWorld(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set world space rotation.\n *\n * @param v New world transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformWorld(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n return this;\n }\n\n /**\n * Local space transformation.\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n get transformLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_local(this._id),\n 8\n );\n }\n\n /**\n * Set local transform.\n *\n * @param t Local space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n set transformLocal(t: Readonly) {\n this.transformLocal.set(t);\n this.setDirty();\n }\n\n /**\n * Global / world space transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n get transformWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_world(this._id),\n 8\n );\n }\n\n /**\n * Set world transform.\n *\n * @param t Global / world space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n set transformWorld(t: Readonly) {\n this.transformWorld.set(t);\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n }\n\n /**\n * Local / object space scaling.\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n get scalingLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_local(this._id),\n 3\n );\n }\n\n /**\n * Set local space scaling.\n *\n * @param s Local space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n set scalingLocal(s: Readonly) {\n this.scalingLocal.set(s);\n this.setDirty();\n }\n\n /**\n * Global / world space scaling.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n get scalingWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_world(this._id),\n 3\n );\n }\n\n /**\n * Set world space scaling.\n *\n * @param t World space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n set scalingWorld(s: Readonly) {\n this.scalingWorld.set(s);\n this._engine.wasm._wl_object_scaling_world_to_local(this._id);\n }\n\n /**\n * Local space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n get rotationLocal(): Float32Array {\n return this.transformLocal.subarray(0, 4);\n }\n\n /**\n * Global / world space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n get rotationWorld(): Float32Array {\n return this.transformWorld.subarray(0, 4);\n }\n\n /**\n * Set local space rotation.\n *\n * @param r Local space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n set rotationLocal(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /**\n * Set world space rotation.\n *\n * @param r Global / world space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n set rotationWorld(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /** @deprecated Please use {@link Object3D.getForwardWorld} instead. */\n getForward(out: T): T {\n return this.getForwardWorld(out);\n }\n\n /**\n * Compute the object's forward facing world space vector.\n *\n * The forward vector in object space is along the negative z-axis, i.e.,\n * `[0, 0, -1]`.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getForwardWorld(out: T): T {\n out[0] = 0;\n out[1] = 0;\n out[2] = -1;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getUpWorld} instead. */\n getUp(out: T): T {\n return this.getUpWorld(out);\n }\n\n /**\n * Compute the object's up facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getUpWorld(out: T): T {\n out[0] = 0;\n out[1] = 1;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getRightWorld} instead. */\n getRight(out: T): T {\n return this.getRightWorld(out);\n }\n\n /**\n * Compute the object's right facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getRightWorld(out: T): T {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /**\n * Transform a vector by this object's world transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a vector by this object's local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a point by this object's world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse world transform.\n *\n * @param out Out vector.\n * @param v Vector to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(p);\n wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform an object space dual quaternion into world space.\n *\n * @param out Out transformation.\n * @param q Local space transformation, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toWorldSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into local space.\n *\n * @param out Out transformation\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toLocalSpaceTransform(out: T, q: NumberArray = out): T {\n const p = this.parent;\n if (p) {\n p.toObjectSpaceTransform(out, q);\n return out;\n }\n if (out !== q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = q[4];\n out[5] = q[5];\n out[6] = q[6];\n out[7] = q[7];\n }\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into object space.\n *\n * @param out Out transformation.\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toObjectSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Turn towards / look at target.\n *\n * Rotates the object so that its forward vector faces towards the target\n * position. The `up` vector acts as a hint to uniquely orient the object's\n * up direction. When orienting a view component, the projected `up` vector\n * faces upwards on the viewing plane.\n *\n * @param p Target position to turn towards, in world space.\n * @param up Up vector to align object with, in world space. Default is `[0, 1, 0]`.\n *\n * @returns Reference to self (for method chaining).\n */\n lookAt(p: NumberArray, up: NumberArray = UP_VECTOR): this {\n this._engine.wasm._wl_object_lookAt(\n this._id,\n p[0],\n p[1],\n p[2],\n up[0],\n up[1],\n up[2]\n );\n return this;\n }\n\n /** Destroy the object with all of its components and remove it from the scene */\n destroy(): void {\n if (this._id < 0) return;\n /* This will automatically call `scene._destroyObject` */\n this.engine.wasm._wl_object_remove(this._id);\n }\n\n /**\n * Mark transformation dirty.\n *\n * Causes an eventual recalculation of {@link transformWorld}, either\n * on next {@link getTranslationWorld}, {@link transformWorld} or\n * {@link scalingWorld} or the beginning of next frame, whichever\n * happens first.\n */\n setDirty(): void {\n this._engine.wasm._wl_object_set_dirty(this._id);\n }\n\n /**\n * Disable/enable all components of this object.\n *\n * @param b New state for the components.\n *\n * @since 0.8.5\n */\n set active(b: boolean) {\n const comps = this.getComponents();\n for (let c of comps) {\n c.active = b;\n }\n }\n\n /* `getComponent` overloads for native components. */\n\n /** @overload */\n getComponent(\n type: K,\n index?: number\n ): NativeComponents[K] | null;\n /** @overload */\n getComponent(typeOrClass: string, index?: number): Component | null;\n /**\n * Get a component attached to this object.\n *\n * @param typeOrClass Type name. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field to find the component.\n * @param index=0 Index for component of given type. This can be used to access specific\n * components if the object has multiple components of the same type.\n * @returns The component or `null` if there is no such component on this object\n */\n getComponent(\n typeOrClass: ComponentConstructor,\n index?: number\n ): T | null;\n getComponent(\n typeOrClass: string | ComponentConstructor,\n index: number = 0\n ): Component | null {\n const wasm = this._engine.wasm;\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n\n const scene = this._scene;\n const componentType = wasm._wl_scene_get_component_manager_index(\n scene._index,\n wasm.tempUTF8(type)\n );\n\n if (componentType < 0) {\n /* Not a native component, try js: */\n const typeIndex = wasm._componentTypeIndices[type];\n if (typeIndex === undefined) return null;\n const jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index);\n if (jsIndex < 0) return null;\n\n const component = this._scene._jsComponents[jsIndex];\n return component.constructor !== BrokenComponent ? component : null;\n }\n\n const componentId = wasm._wl_get_component_id(this._id, componentType, index);\n return scene._components.wrapNative(componentType, componentId);\n }\n\n /* `getComponents` overloads for native components. */\n\n /** @overload */\n getComponents(): Component[];\n /** @overload */\n getComponents(type: K): NativeComponents[K][];\n /**\n * @param typeOrClass Type name, pass a falsey value (`undefined` or `null`) to retrieve all.\n * It's also possible to give a class definition. In this case, the method will use the `class.TypeName` field to\n * find the components.\n * @returns All components of given type attached to this object.\n *\n * @note As this function is non-trivial, avoid using it in `update()` repeatedly,\n * but rather store its result in `init()` or `start()`\n * @warning This method will currently return at most 341 components.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(\n typeOrClass?: string | ComponentConstructor | null\n ): T[] {\n const wasm = this._engine.wasm;\n const scene = this._scene;\n\n let manager = null;\n let type = null;\n if (typeOrClass) {\n type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = scene._components.getNativeManager(type);\n manager = nativeManager !== null ? nativeManager : scene._components.js;\n }\n\n const components: Component[] = [];\n const maxComps = Math.floor((wasm._tempMemSize / 3) * 2);\n const componentsCount = wasm._wl_object_get_components(\n this._id,\n wasm._tempMem,\n maxComps\n );\n const offset = 2 * componentsCount;\n wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset, maxComps);\n\n for (let i = 0; i < componentsCount; ++i) {\n const t = wasm._tempMemUint8[i + offset];\n const componentId = wasm._tempMemUint16[i];\n if (manager !== null && t !== manager) continue;\n\n const comp = this._scene._components.wrapAny(t, componentId);\n if (!comp) continue;\n if (type && type !== (comp.constructor as ComponentConstructor).TypeName)\n continue;\n components.push(comp);\n }\n return components as T[];\n }\n\n /* `addComponent` overloads for native components. */\n\n /** @overload */\n addComponent(type: 'collision', params?: Record): CollisionComponent;\n /** @overload */\n addComponent(type: 'text', params?: Record): TextComponent;\n /** @overload */\n addComponent(type: 'view', params?: Record): ViewComponent;\n /** @overload */\n addComponent(type: 'mesh', params?: Record): MeshComponent;\n /** @overload */\n addComponent(type: 'input', params?: Record): InputComponent;\n /** @overload */\n addComponent(type: 'light', params?: Record): LightComponent;\n /** @overload */\n addComponent(type: 'animation', params?: Record): AnimationComponent;\n /** @overload */\n addComponent(type: 'physx', params?: Record): PhysXComponent;\n /** @overload */\n addComponent(\n type: 'particle-effect',\n params?: Record\n ): ParticleEffectComponent;\n /** @overload */\n addComponent(type: string, params?: Record): Component;\n /**\n * Add component of given type to the object.\n *\n * You can use this function to clone components, see the example below.\n *\n * ```js\n * // Clone existing component (since 0.8.10)\n * let original = this.object.getComponent('mesh');\n * otherObject.addComponent('mesh', original);\n * // Create component from parameters\n * this.object.addComponent('mesh', {\n * mesh: someMesh,\n * material: someMaterial,\n * });\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @param params Parameters to initialize properties of the new component,\n * can be another component to copy properties from.\n *\n * @returns The component or `null` if the type was not found\n */\n addComponent(\n typeClass: ComponentConstructor,\n params?: Record\n ): T;\n addComponent(\n typeOrClass: ComponentConstructor | string,\n params?: Record\n ): Component {\n if (this.markedDestroyed) {\n throw new Error(`Failed to add component. ${this} is marked as destroyed.`);\n }\n\n const wasm = this._engine.wasm;\n\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = this._scene._components.getNativeManager(type);\n const isNative = nativeManager !== null;\n const manager = isNative ? nativeManager : this._scene._components.js;\n\n let componentId = -1;\n if (!isNative) {\n /* JavaScript component */\n if (!(type in wasm._componentTypeIndices)) {\n throw new TypeError(\"Unknown component type '\" + type + \"'\");\n }\n componentId = wasm._wl_object_add_js_component(\n this._id,\n wasm._componentTypeIndices[type]\n );\n } else {\n /* native component */\n componentId = wasm._wl_object_add_component(this._id, manager);\n }\n\n const component = this._scene._components.wrapAny(manager, componentId)!;\n\n if (params !== undefined) component.copy(params as Component);\n\n /* Explicitly initialize js components */\n if (!isNative) {\n component._triggerInit();\n /* start() is called through onActivate() */\n }\n\n /* If it was not explicitly requested by the user to leave the component inactive,\n * we activate it as a final step. This invalidates componentIndex! */\n if (!params || !('active' in params && !params.active)) {\n component.active = true;\n }\n\n return component;\n }\n\n /**\n * Search for descendants matching the name.\n *\n * This method is a wrapper around {@link Object3D.findByNameDirect} and\n * {@link Object3D.findByNameRecursive}.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the descendants of this object.\n * If `false`, this method will only perform the search in direct children.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name);\n }\n\n /**\n * Search for all **direct** children matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameDirect(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 2; /* Reserve two ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n buffer[maxCount + 1] = 0; /* child count */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const childCountPtr = bufferPtr + maxCount * 2 + 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2);\n\n const result: Object3D[] = [];\n let read = 0;\n while (\n (read = wasm._wl_object_findByName(\n id,\n namePtr,\n indexPtr,\n childCountPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Search for **all descendants** matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 1; /* Reserve one ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2);\n\n let read = 0;\n const result: Object3D[] = [];\n while (\n (read = wasm._wl_object_findByNameRecursive(\n id,\n namePtr,\n indexPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Whether given object's transformation has changed.\n */\n get changed(): boolean {\n return !!this._engine.wasm._wl_object_is_changed(this._id);\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = scene.addObject();\n * obj.customParam = 'Hello World!';\n *\n * console.log(obj.isDestroyed); // Prints `false`\n * obj.destroy();\n * console.log(obj.isDestroyed); // Prints `true`\n * console.log(obj.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /**\n * `true` if the object is marked as destroyed.\n *\n * This boolean will only ever be `true` when reading objects state\n * from the {@link Component.onDestroy} callback, i.e.,\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n * class CleanupComponent extends Component {\n * onDestroy() {\n * if (this.object.markedDestroyed) {\n * // this object is getting removed\n * } else {\n * // The component is getting destroyed, the object will\n * // still exist after the destruction call\n * }\n * }\n * }\n * ```\n *\n * Certain operations are forbidden when an object is pending destruction:\n * - Reparenting the object via {@link parent}\n * - {@link addComponent}\n * - {@link Scene.addObject}\n * - {@link Scene.destroy}\n */\n get markedDestroyed(): boolean {\n const wasm = this.engine.wasm;\n return !!wasm._wl_object_markedDestroyed(this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const objectA = scene.addObject();\n * const objectB = scene.addObject();\n * const objectC = objectB;\n * console.log(objectA === objectB); // false\n * console.log(objectA === objectA); // true\n * console.log(objectB === objectC); // true\n * ```\n */\n equals(otherObject: Object3D | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherObject) return false;\n return this._id == otherObject._id;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Object3D(destroyed)';\n }\n return `Object3D('${this.name}', ${this._localId})`;\n }\n}\n\n/**\n * Wrapper around a native skin data.\n */\nexport class Skin extends SceneResource {\n /** Amount of joints in this skin. */\n get jointCount() {\n return this.engine.wasm._wl_skin_get_joint_count(this._id);\n }\n\n /** Joints object ids for this skin */\n get jointIds(): Uint16Array {\n const wasm = this.engine.wasm;\n return new Uint16Array(\n wasm.HEAPU16.buffer,\n wasm._wl_skin_joint_ids(this._id),\n this.jointCount\n );\n }\n\n /**\n * Dual quaternions in a flat array of size 8 times {@link jointCount}.\n *\n * Inverse bind transforms of the skin.\n */\n get inverseBindTransforms(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_transforms(this._id),\n 8 * this.jointCount\n );\n }\n\n /**\n * Vectors in a flat array of size 3 times {@link jointCount}.\n *\n * Inverse bind scalings of the skin.\n */\n get inverseBindScalings(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_scalings(this._id),\n 3 * this.jointCount\n );\n }\n}\n\n/**\n * Wrapper around a native set of morph targets.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\nexport class MorphTargets extends Resource {\n /** Amount of targets in this morph target set. */\n get count() {\n return this.engine.wasm._wl_morph_targets_get_target_count(this._id);\n }\n\n /** Returns the name of a given target */\n getTargetName(target: number): string {\n if (target >= this.count) {\n throw new Error(`Index ${target} is out of bounds for ${this.count} targets`);\n }\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target));\n }\n\n /**\n * Get the index for a given target name.\n *\n * Throws if no target with that name exists.\n *\n * @param name Name of the target.\n */\n getTargetIndex(name: string): number {\n const wasm = this.engine.wasm;\n const index = wasm._wl_morph_targets_get_target_index(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing target '${name}'`);\n }\n return index;\n }\n}\n\n/* For backward compatibility with < 1.0.0. */\nexport {Object3D as Object};\n\n/**\n * Ray hit.\n *\n * Result of a {@link Scene.rayCast} or {@link Physics.rayCast}.\n *\n * @note this class wraps internal engine data and should only be created internally.\n */\nexport class RayHit {\n /** Scene instance. @hidden */\n readonly _scene: Scene;\n\n /** Pointer to the memory heap. */\n private _ptr: number;\n\n /**\n * @param ptr Pointer to the ray hits memory.\n */\n constructor(scene: Scene, ptr: number) {\n if ((ptr & 3) !== 0) {\n throw new Error('Misaligned pointer: please report a bug');\n }\n this._scene = scene;\n this._ptr = ptr;\n }\n\n /** @overload */\n getLocations(): Float32Array[];\n /**\n * Array of ray hit locations.\n *\n * #### Usage\n *\n * ```js\n * const hit = engine.physics.rayCast();\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLocations(out: T): T;\n getLocations(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = this._ptr / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const locationPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[locationPtr];\n out[i][1] = wasm.HEAPF32[locationPtr + 1];\n out[i][2] = wasm.HEAPF32[locationPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getNormals(): Float32Array[];\n /**\n * Array of ray hit normals (only when using {@link Physics#rayCast}.\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getNormals(out: T): T;\n getNormals(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const normalPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[normalPtr];\n out[i][1] = wasm.HEAPF32[normalPtr + 1];\n out[i][2] = wasm.HEAPF32[normalPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getDistances(): Float32Array;\n /**\n * Prefer these to recalculating the distance from locations.\n *\n * Distances of array hits to ray origin.\n *\n * @param out Destination array/vector, expected to have at least this.hitCount elements.\n * @returns The `out` parameter.\n */\n getDistances(out: T): T;\n getDistances(out: NumberArray = new Float32Array(this.hitCount)): NumberArray {\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48 * 2) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const distancePtr = alignedPtr + i;\n out[i] = wasm.HEAPF32[distancePtr];\n }\n return out;\n }\n\n /**\n * Array of hit objects.\n *\n * @param out Destination array/vector, expected to have at least `this.hitCount` elements.\n * @returns The `out` parameter.\n */\n getObjects(out: Object3D[] = new Array(this.hitCount)): Object3D[] {\n const HEAPU16 = this.engine.wasm.HEAPU16;\n const alignedPtr = (this._ptr + (48 * 2 + 16)) >> 1;\n for (let i = 0; i < this.hitCount; ++i) {\n out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]);\n }\n return out;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /**\n * Equivalent to {@link RayHit.getLocations}.\n *\n * @note Prefer to use {@link RayHit.getLocations} for performance.\n */\n get locations(): Float32Array[] {\n return this.getLocations();\n }\n\n /**\n * Equivalent to {@link RayHit.getNormals}.\n *\n * @note Prefer to use {@link RayHit.getNormals} for performance.\n */\n get normals(): Float32Array[] {\n return this.getNormals();\n }\n\n /**\n * Equivalent to {@link RayHit.getDistances}.\n *\n * @note Prefer to use {@link RayHit.getDistances} for performance.\n */\n get distances(): Float32Array {\n return this.getDistances();\n }\n\n /**\n * Equivalent to {@link RayHit.getObjects}.\n *\n * @note Prefer to use {@link RayHit.getObjects} for performance.\n */\n get objects(): (Object3D | null)[] {\n /** @todo: Remove at 2.0.0, this is kept for backward compatibility. */\n const objects: (Object3D | null)[] = [null, null, null, null];\n return this.getObjects(objects as Object3D[]);\n }\n\n /** Number of hits (max 4) */\n get hitCount(): number {\n return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4);\n }\n}\n\nclass math {\n /** (Experimental!) Cubic Hermite spline interpolation for vector3 and quaternions.\n *\n * With `f == 0`, `out` will be `b`, if `f == 1`, `out` will be c.\n *\n * Whether a quaternion or vector3 interpolation is intended is determined by\n * length of `a`.\n *\n * @param out Array to write result to.\n * @param a First tangent/handle.\n * @param b First point or quaternion.\n * @param c Second point or quaternion.\n * @param d Second handle.\n * @param f Interpolation factor in [0; 1].\n * @returns The `out` parameter.\n *\n * @since 0.8.6\n */\n static cubicHermite(\n out: T,\n a: Readonly,\n b: Readonly,\n c: Readonly,\n d: Readonly,\n f: number,\n engine: WonderlandEngine = WL\n ) {\n const wasm = engine.wasm;\n wasm._tempMemFloat.subarray(0).set(a);\n wasm._tempMemFloat.subarray(4).set(b);\n wasm._tempMemFloat.subarray(8).set(c);\n wasm._tempMemFloat.subarray(12).set(d);\n\n const isQuat = a.length == 4;\n\n wasm._wl_math_cubicHermite(\n wasm._tempMem + 4 * 16,\n wasm._tempMem + 4 * 0,\n wasm._tempMem + 4 * 4,\n wasm._tempMem + 4 * 8,\n wasm._tempMem + 4 * 12,\n f,\n isQuat\n );\n out[0] = wasm._tempMemFloat[16];\n out[1] = wasm._tempMemFloat[17];\n out[2] = wasm._tempMemFloat[18];\n if (isQuat) out[3] = wasm._tempMemFloat[19];\n return out;\n }\n}\n\nexport {math};\n\n/**\n * Class for accessing internationalization (i18n) features.\n *\n * Allows {@link I18N.onLanguageChanged \"detecting language change\"},\n * {@link I18N.language \"setting the current language\"} or translating\n * {@link I18N.translate \"individual terms\"}.\n *\n * Internationalization works with terms,\n * a string type keyword that is linked to a different text for each language.\n *\n * Internally, string parameters for text and js components are\n * automatically swapped during language change, given they are linked to a term.\n * If manual text swapping is desired, {@link I18N.translate}\n * can be used to retrieve the current translation for any term.\n *\n * You can also use the {@link I18N.onLanguageChanged} to manually update text\n * when a language is changed to for example update a number in a string.\n *\n * @since 1.0.0\n */\nexport class I18N {\n /**\n * {@link Emitter} for language change events.\n *\n * First parameter to a listener is the old language index,\n * second parameter is the new language index.\n *\n * Usage from a within a component:\n *\n * ```js\n * this.engine.i18n.onLanguageChanged.add((oldLanguageIndex, newLanguageIndex) => {\n * const oldLanguage = this.engine.i18n.languageName(oldLanguageIndex);\n * const newLanguage = this.engine.i18n.languageName(newLanguageIndex);\n * console.log(\"Switched from\", oldLanguage, \"to\", newLanguage);\n * });\n * ```\n */\n readonly onLanguageChanged = new Emitter<[number, number]>();\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Previously set language index. @hidden */\n private _prevLanguageIndex: number = -1;\n\n /**\n * Constructor\n */\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @note This is equivalent to {@link I18N.setLanguage}.\n *\n * @param code Language code to switch to\n */\n set language(code: string | null) {\n this.setLanguage(code);\n }\n\n /** Get current language code. */\n get language(): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_currentLanguage();\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get the current language index.\n *\n * This method is more efficient than its equivalent:\n *\n * ```js\n * const index = i18n.languageIndex(i18n.language);\n * ```\n */\n get currentIndex(): number {\n return this._engine.wasm._wl_i18n_currentLanguageIndex();\n }\n\n /** Previous language index. */\n get previousIndex(): number {\n return this._prevLanguageIndex;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @param code The language code.\n * @returns A promise that resolves with the current index code when the\n * language is loaded.\n */\n async setLanguage(code: string | null): Promise {\n if (code == null) return Promise.resolve(this.currentIndex);\n const wasm = this._engine.wasm;\n this._prevLanguageIndex = this.currentIndex;\n wasm._wl_i18n_setLanguage(wasm.tempUTF8(code));\n\n const scene = this.engine.scene;\n\n const filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex));\n const url = `${scene.baseURL}/locale/${filename}`;\n\n await scene._downloadDependency(url);\n\n this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex);\n\n return this.currentIndex;\n }\n\n /**\n * Get translated string for a term for the currently loaded language.\n *\n * @param term Term to translate\n */\n translate(term: string): string | null {\n const wasm = this._engine.wasm;\n const translation = wasm._wl_i18n_translate(wasm.tempUTF8(term));\n if (translation === 0) return null;\n return wasm.UTF8ToString(translation);\n }\n\n /**\n * Get the number of languages in the project.\n *\n */\n languageCount(): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageCount();\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageIndex(code: string): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code));\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageCode(index: number): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_languageCode(index);\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get a language name.\n *\n * @param index Index of the language to get the name from\n */\n languageName(index: number): string | null {\n const wasm = this._engine.wasm;\n const name = wasm._wl_i18n_languageName(index);\n if (name === 0) return null;\n return wasm.UTF8ToString(name);\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Environment lighting properties\n *\n * @since 1.2.3\n */\nexport class Environment {\n /** Scene instance. @hidden */\n private readonly _scene: Scene;\n\n /** Constructor */\n constructor(scene: Scene) {\n this._scene = scene;\n }\n\n /**\n * Get intensity of environment lighting.\n *\n * Incoming environment lighting is multiplied by this factor.\n */\n get intensity() {\n return this._scene.engine.wasm._wl_scene_environment_get_intensity(\n this._scene._index\n );\n }\n\n /**\n * Set intensity of environment lighting.\n *\n * @param intensity New intensity.\n */\n set intensity(intensity: number) {\n this._scene.engine.wasm._wl_scene_environment_set_intensity(\n this._scene._index,\n intensity\n );\n }\n\n /** @overload */\n getTint(): Float32Array;\n /**\n * Get tint for environment lighting.\n *\n * Incoming environment lighting color channels are multiplied by these\n * values.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Tint values - red, green, blue.\n */\n getTint(out: T): T;\n /** @overload */\n getTint(\n out: T | Float32Array = new Float32Array(3)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out as T;\n }\n\n /**\n * Equivalent to {@link getTint}.\n *\n * @note Prefer to use {@link getTint} for performance.\n */\n get tint(): Float32Array {\n return this.getTint();\n }\n\n /**\n * Set tint for environment lighting.\n *\n * @param v New tint value. Expects a 3 component array.\n */\n setTint(v: Readonly) {\n this._scene.engine.wasm._wl_scene_environment_set_tint(\n this._scene._index,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /** Equivalent to {@link setTint}. */\n set tint(v: Readonly) {\n this.setTint(v);\n }\n\n /** @overload */\n getCoefficients(): Float32Array;\n /**\n * Get spherical harmonics coefficients for indirect lighting.\n *\n * These are 9 spherical harmonics coefficients for indirect diffuse\n * lighting.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Spherical harmonics coefficients. Always 27 elements, every\n * consecutive 3 values representing the red, green, blue components of\n * a single coefficient. Unused/empty coefficients at the end can be 0.\n */\n getCoefficients(out: T): T;\n /** @overload */\n getCoefficients(\n out: T | Float32Array = new Float32Array(3 * 9)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(3 * 9 * 4);\n wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem);\n for (let i = 0; i < 3 * 9; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out as T;\n }\n\n /**\n * Equivalent to {@link getCoefficients}.\n *\n * @note Prefer to use {@link getCoefficients} for performance.\n */\n get coefficients(): Float32Array {\n return this.getCoefficients();\n }\n\n /**\n * Set spherical harmonics coefficients for indirect lighting.\n *\n * @note The scene must have been packaged with environment lighting on for\n * this to take effect.\n *\n * @example\n *\n * Coefficients from [WebXR Lighting Estimation](https://www.w3.org/TR/webxr-lighting-estimation-1)\n * can be passed as follows:\n *\n * ```js\n * const probe = await engine.xr.session.requestLightProbe();\n * const estimate = engine.xr.frame.getLightEstimate(probe);\n * scene.environment.coefficients = estimate.sphericalHarmonicsCoefficients;\n * ```\n *\n * @param v A set of spherical harmonics coefficients, every 3 elements\n * constituting the red/green/blue components of a single coefficient.\n * Should be 0, 3, 12 or 27 **array elements**. Passing an empty array\n * disables indirect lighting.\n */\n setCoefficients(v: Readonly) {\n let count = v.length / 3;\n if (count > 9) count = 9;\n else if (count > 4 && count < 9) count = 4;\n else if (count > 1 && count < 4) count = 1;\n const wasm = this._scene.engine.wasm;\n wasm._tempMemFloat.set(v);\n wasm._wl_scene_environment_set_coefficients(\n this._scene._index,\n wasm._tempMem,\n count\n );\n }\n\n /** Equivalent to {@link setCoefficients}. */\n set coefficients(v: Readonly) {\n this.setCoefficients(v);\n }\n}\n", "/**\n * This file is automatically generated.\n *\n * **Do not** modify this file directly, but instead update\n * the 'write-version.mjs' script.\n */\n\n/**\n * Version type following a subset of the Semantic Versioning specification.\n */\nexport type Version = {major: number, minor: number, patch: number, rc: number};\n\n/** Version of this API. */\nexport const APIVersion: Version = {\n major: 1,\n minor: 4,\n patch: 2,\n rc: 0\n};\n", "import {WonderlandEngine} from '../engine.js';\nimport {NumberArray} from '../types.js';\nimport {capitalizeFirstUTF8} from '../utils/misc.js';\nimport {Texture} from '../wonderland.js';\n\nimport {Resource, ResourceManager} from './resource.js';\n\n/**\n * Material parameter type.\n */\nexport enum MaterialParamType {\n /** Unsigned integer parameter type. */\n UnsignedInt = 0,\n /** Integer parameter type. */\n Int = 1,\n /** 16-bit float parameter type. */\n HalfFloat = 2,\n /** Float parameter type. */\n Float = 3,\n /** Sampler resource parameter type, i.e., a {@link Texture}. */\n Sampler = 4,\n /**\n * Font resource parameter type.\n *\n * **Note**: Changing font isn't exposed yet and will raise an error.\n */\n Font = 5,\n}\n\n/**\n * Constructor parameters object for a {@link Material} instance.\n *\n * @deprecated Use {@link MaterialManager#getTemplate} instead:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\nexport interface MaterialParameters {\n /** The name of the pipeline. */\n pipeline: string;\n}\n\n/**\n * Material constructor.\n *\n * Material classes are automatically generated by the runtime based on the\n * loaded scene shaders.\n */\nexport interface MaterialConstructor {\n /**\n * Set of the dynamic parameters that exist on the definition.\n *\n * For instance, the set would contain elements such as `ambientColor`, `diffuseColor`\n * for a Phong material.\n */\n readonly Parameters: Set;\n /**\n * Create a new Material.\n *\n * The material is created from the pipeline associated to the material class.\n *\n * @note Creating material is expensive. Please use {@link Material#clone} to clone a material.\n * @note Do not use this constructor directly with an index, this is reserved for internal purposes.\n */\n new (index?: number): T;\n}\n\n/**\n * Wrapper around a native material.\n *\n * For more information about how to create materials, have a look at the\n * {@link MaterialManager} class.\n *\n * #### Properties\n *\n * The material properties are automatically converted into getters/setters:\n *\n * ```js\n * const material = new PhongMaterial();\n *\n * // Set the `diffuseColor` property\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * console.log(material.getDiffuseColor());\n * ```\n *\n * Getters for non-scalar types have an optional argument to skip an array\n * allocation:\n *\n * ```js\n * const material = new PhongMaterial();\n * const diffuse = [0, 0, 0, 0];\n * material.getDiffuseColor(diffuse);\n * console.log(diffuse) // Prints '[1.0, 1.0, 1.0, 1.0]'\n * ```\n *\n * @note Materials are **per-engine**, they can thus be shared by multiple scenes.\n *\n * #### TypeScript\n *\n * The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * It's then possible to cast the material type using:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const mesh = object.getComponent('mesh');\n * const material = mesh.material as PhongOpaque;\n * material.setDiffuseColor([1, 0, 0, 1]); // Set a red diffuse\n * ```\n *\n * @since 1.2.0\n */\nexport class Material extends Resource {\n /**\n * @deprecated Use {@link MaterialManager#getTemplate} via {@link WonderlandEngine.materials}\n * to create a new material with a given pipeline:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\n constructor(engine: WonderlandEngine, params: number | MaterialParameters) {\n if (typeof params !== 'number') {\n if (!params?.pipeline) throw new Error(\"Missing parameter 'pipeline'\");\n const template = engine.materials.getTemplate(params.pipeline);\n const material = new template();\n super(engine, material._index);\n return material;\n }\n super(engine, params);\n }\n\n /**\n * Check whether a parameter exists on this material.\n *\n * @param name The name to check.\n * @returns `true` if the parameter with name `name` exists on this material,\n * `false` otherwise.\n */\n hasParameter(name: string) {\n const parameters = (this.constructor as MaterialConstructor).Parameters;\n return parameters && parameters.has(name);\n }\n\n /** @deprecated Use {@link pipeline} instead. */\n get shader(): string {\n return this.pipeline;\n }\n\n /** Name of the pipeline used by this material. */\n get pipeline(): string {\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id));\n }\n\n /**\n * Create a copy of the underlying native material.\n *\n * @returns Material clone.\n */\n clone(): Material | null {\n const index = this.engine.wasm._wl_material_clone(this._id);\n return this.engine.materials.wrap(index);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Material(destroyed)';\n }\n return `Material('${this.pipeline}', ${this._index})`;\n }\n\n /**\n * Wrap a native material index.\n *\n * @param engine Engine instance.\n * @param index The index.\n * @returns Material instance or `null` if index <= 0.\n *\n * @deprecated Use the {@link WonderlandEngine.materials} instead.\n */\n static wrap(engine: WonderlandEngine, index: number): Material | null {\n return engine.materials.wrap(index);\n }\n}\n\n/**\n * Manage materials.\n *\n * #### Creation\n *\n * To create a material, first retrieve the class associated to\n * the pipeline using {@link MaterialManager.getTemplate}:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * ```\n *\n * Creating a material is then done using the constructor:\n *\n * ```js\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n */\nexport class MaterialManager extends ResourceManager {\n /** Material classes. @hidden. */\n private readonly _materialTemplates: MaterialConstructor[] = [];\n\n /** @hidden */\n constructor(engine: WonderlandEngine) {\n super(engine, Material);\n this._cacheDefinitions();\n }\n\n /** @override */\n wrap(index: number) {\n if (index <= 0) return null;\n\n const cached = this._cache[index];\n if (cached) return cached;\n\n const wasm = this.engine.wasm;\n const definition = wasm._wl_material_get_definition(index);\n\n const Template = this._materialTemplates[definition];\n const material = new Template(index);\n return this._wrapInstance(material);\n }\n\n /**\n * Get the material class with the given pipeline name.\n *\n * #### Usage\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n *\n * #### TypeScript\n *\n * This method provide a simple way to cast the constructor returned by `getTemplate`:\n *\n * ```ts\n * interface Phong {\n * getAmbientColor(out?: Float32Array): Float32Array;\n * setAmbientColor(value: NumberArray): void;\n * }\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `Phong`\n * ```\n *\n * However, this means manually writing types for each pipeline.\n *\n * Fortunately, The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * Material constructors will then be typed automatically when using a string literal pipeline name:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `PhongOpaque`\n * ```\n *\n * @param pipeline The pipeline name to search for.\n * @returns The material class.\n *\n * @throws `Error` if the material class doesn't exist.\n */\n getTemplate(pipeline: string): MaterialConstructor {\n const wasm = this.engine.wasm;\n const index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline));\n if (!index) {\n throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`);\n }\n return this._materialTemplates[index] as MaterialConstructor;\n }\n\n /**\n * Wrap a material instance.\n *\n * @todo: Remove at 2.0.0.\n *\n * @note Wrapping should only be called once per instance.\n *\n * @param instance The material instance.\n * @returns The new material, wrapped in a proxy.\n */\n _wrapInstance(instance: Material): Material {\n this._cache[instance.index] = instance;\n if (!this.engine.legacyMaterialSupport) return instance;\n\n /** @todo: Remove at 2.0.0. This is kept for backward compatibility. */\n const proxy = new Proxy(instance, {\n get(target: Material, prop: string) {\n if (!target.hasParameter(prop)) {\n return (target as Record)[prop];\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `get${capitalizeFirstUTF8(prop)}`;\n return (target as Record)[name]();\n },\n set(target, prop: string, value) {\n if (!target.hasParameter(prop)) {\n (target as Record)[prop] = value;\n return true;\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `set${capitalizeFirstUTF8(prop)}`;\n (target as Record)[name](value);\n return true;\n },\n });\n this._cache[instance.index] = proxy;\n return proxy;\n }\n\n /**\n * Cache all pipeline definitions.\n *\n * @hidden\n */\n private _cacheDefinitions() {\n const wasm = this.engine.wasm;\n const count = wasm._wl_get_material_definition_count();\n for (let i = 1; i < count; ++i) {\n this._materialTemplates[i] = this._createMaterialTemplate(i);\n }\n }\n\n /**\n * Create a material class from a definition index.\n *\n * @param wasm The WASM instance.\n * @param definitionIndex The definition index to wrap.\n * @returns The material class.\n */\n private _createMaterialTemplate(definitionIndex: number) {\n const engine = this.engine;\n const template = class CustomMaterial extends Material {\n static Parameters: Set = new Set();\n\n constructor(index?: number) {\n index = index ?? engine.wasm._wl_material_create(definitionIndex);\n super(engine, index);\n /** @todo(2.0.0): Unify with Material. We need to wrap in both since materials\n * can be created via the parent class, or via child classes.\n * In addition, wrapping returns a proxy, we want to support Proxy\n * as well as Proxy. */\n return engine.materials._wrapInstance(this);\n }\n };\n\n const wasm = this.engine.wasm;\n const nbParams = wasm._wl_material_definition_get_param_count(definitionIndex);\n for (let index = 0; index < nbParams; ++index) {\n const name = wasm.UTF8ToString(\n wasm._wl_material_definition_get_param_name(definitionIndex, index)\n );\n template.Parameters.add(name);\n\n const t = wasm._wl_material_definition_get_param_type(definitionIndex, index);\n const type = t & 0xff;\n const componentCount = (t >> 8) & 0xff;\n /* metaType could also be extracted using: (t >> 16) & 0xff */\n\n const capitalized = capitalizeFirstUTF8(name);\n const getterId = `get${capitalized}`;\n const setterId = `set${capitalized}`;\n\n const templateProto = template.prototype as Record;\n switch (type) {\n case MaterialParamType.UnsignedInt:\n templateProto[getterId] = uint32Getter(index, componentCount);\n /* For now, it's only possible to set scalar uint values */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.Int:\n templateProto[getterId] = int32Getter(index, componentCount);\n /* For now, it's only possible to set scalar int values. Integer values setter\n * is purposely shared with uint. */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.HalfFloat:\n case MaterialParamType.Float:\n templateProto[getterId] = float32Getter(index, componentCount);\n templateProto[setterId] = float32Setter(index, componentCount);\n break;\n case MaterialParamType.Sampler:\n templateProto[getterId] = samplerGetter(index);\n templateProto[setterId] = samplerSetter(index);\n break;\n case MaterialParamType.Font:\n templateProto[getterId] = fontGetter(index);\n /* For now, setting fonts is not supported */\n break;\n }\n }\n\n return template as MaterialConstructor;\n }\n}\n\n/** @todo: With this implementation, `_wl_material_get_param_value`\n * do not need to check for the parameter type anymore, we could use\n * explicit calls. */\n\nfunction uint32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemUint32[0];\n };\n }\n return function (this: Material, out: NumberArray = new Uint32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemUint32[i];\n }\n return out;\n };\n}\n\nfunction uint32Setter(index: number) {\n return function (this: Material, value: number) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value);\n };\n}\n\nfunction int32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemInt[0];\n };\n }\n return function (this: Material, out: NumberArray = new Int32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemInt[i];\n }\n return out;\n };\n}\n\nfunction float32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n };\n }\n return function (this: Material, out: NumberArray = new Float32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n };\n}\n\nfunction float32Setter(index: number, count: number) {\n return function (this: Material, value: number | NumberArray) {\n const wasm = this.engine.wasm;\n\n let actualCount = 1;\n if (typeof value === 'number') {\n wasm._tempMemFloat[0] = value;\n } else {\n actualCount = value.length;\n for (let i = 0; i < actualCount; ++i) wasm._tempMemFloat[i] = value[i];\n }\n\n if (actualCount < count) {\n throw new Error(`Expected an array ${count} values, got ${actualCount}`);\n }\n\n wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count);\n };\n}\n\nfunction samplerGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.textures.wrap(wasm._tempMemInt[0]);\n };\n}\n\nfunction samplerSetter(index: number) {\n return function (this: Material, value: Texture | null | undefined) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0);\n };\n}\n\nfunction fontGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.fonts.wrap(wasm._tempMemInt[0]);\n };\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Mesh, MeshIndexType, MeshParameters, MeshSkinningType} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\n/**\n * Manage meshes.\n *\n * #### Creation\n *\n * Creating a mesh is done using {@link MeshManager.create}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n *\n * @since 1.2.0\n */\nexport class MeshManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Mesh);\n }\n\n /**\n * Create a new mesh.\n *\n * @param params Vertex and index data. For more information, have a look\n * at the {@link MeshParameters} object.\n */\n create(params: Partial) {\n if (!params.vertexCount) throw new Error(\"Missing parameter 'vertexCount'\");\n\n const wasm = this.engine.wasm;\n\n let indexData = 0;\n let indexType = 0;\n let indexDataSize = 0;\n if (params.indexData) {\n indexType = params.indexType || MeshIndexType.UnsignedShort;\n indexDataSize = params.indexData.length * indexType;\n indexData = wasm._malloc(indexDataSize);\n /* Copy the index data into wasm memory */\n switch (indexType) {\n case MeshIndexType.UnsignedByte:\n wasm.HEAPU8.set(params.indexData, indexData);\n break;\n case MeshIndexType.UnsignedShort:\n wasm.HEAPU16.set(params.indexData, indexData >> 1);\n break;\n case MeshIndexType.UnsignedInt:\n wasm.HEAPU32.set(params.indexData, indexData >> 2);\n break;\n }\n }\n\n const {skinningType = MeshSkinningType.None} = params;\n\n const index = wasm._wl_mesh_create(\n indexData,\n indexDataSize,\n indexType,\n params.vertexCount,\n skinningType\n );\n const instance = new Mesh(this._host, index);\n this._cache[instance.index] = instance;\n return instance;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {ImageLike} from '../types.js';\nimport {Texture} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\nexport function needsFlipY(image: ImageLike) {\n /* WebGL can't flip ImageBitmap on upload.\n * For consistency with WebGPU, disable ImageBitmap flipping entirely and let the user use:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap#options */\n return image instanceof ImageBitmap ? 0 : 1;\n}\n\n/**\n * Manage textures.\n *\n * #### Creation\n *\n * Creating a texture is done using {@link TextureManager.load}:\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * Alternatively, textures can be created directly via a loaded image using\n * {@link TextureManager.create}.\n *\n * @since 1.2.0\n */\nexport class TextureManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Texture);\n }\n\n /**\n * Create a new texture from an image or video.\n *\n * #### Usage\n *\n * ```js\n * const img = new Image();\n * img.load = function(img) {\n * const texture = engine.textures.create(img);\n * };\n * img.src = 'my-image.png';\n * ```\n *\n * @note The media must already be loaded. To automatically\n * load the media and create a texture, use {@link TextureManager.load} instead.\n *\n * @param image Media element to create the texture from.\n * @ret\\urns The new texture with the media content.\n */\n create(image: ImageLike): Texture {\n const wasm = this.engine.wasm;\n\n const jsImageIndex = wasm._images.length;\n wasm._images.push(image);\n\n if (image instanceof HTMLImageElement && !image.complete) {\n throw new Error('image must be ready to create a texture');\n }\n\n const width = (image as HTMLVideoElement).videoWidth ?? image.width;\n const height = (image as HTMLVideoElement).videoHeight ?? image.height;\n\n const imageIndex = wasm._wl_image_create(jsImageIndex);\n wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image));\n\n /* Required because the image isn't a resource by itself, but will eventually be one. */\n const index = wasm._wl_texture_create(imageIndex);\n\n const instance = new Texture(this.engine, index);\n this._cache[instance.index] = instance;\n\n return instance;\n }\n\n /**\n * Load an image from URL as {@link Texture}.\n *\n * #### Usage\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * @param filename URL to load from.\n * @param crossOrigin Cross origin flag for the image object.\n * @returns Loaded texture.\n */\n load(filename: string, crossOrigin?: string): Promise {\n let image = new Image();\n image.crossOrigin = crossOrigin ?? image.crossOrigin;\n image.src = filename;\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(this.create(image));\n };\n image.onerror = function () {\n reject('Failed to load image. Not found or no read access');\n };\n });\n }\n}\n", "import {WASM} from './wasm.js';\nimport {Scene} from './scene.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {WonderlandEngine} from './engine.js';\nimport {InputType, ViewComponent} from './wonderland.js';\n\ntype WebXRFramebuffer = WebGLFramebuffer & {name: number};\ntype WebXRTexture = WebGLTexture & {name: number};\n\n/**\n * Options for {@link LoadRuntimeOptions.xrOfferSession}\n *\n * @since 1.1.5\n */\nexport interface XROfferSessionOptions {\n /**\n * Mode to offer XR session with. If set to `'auto'`, offers a session\n * with the first supported mode in the following order:\n * - VR\n * - AR\n * - inline\n */\n mode: XRSessionMode | 'auto';\n /** Required features for the offered XR session */\n features: string[];\n /** Optional features for the offered XR session */\n optionalFeatures: string[];\n}\n\n/** Properties of a WebXR session */\nexport class XRSessionState {\n /** Wonderland WASM bridge. @hidden */\n readonly #webxr: WebXR;\n\n /** Current WebXR session mode */\n sessionMode: XRSessionMode;\n\n /** Current WebXR session */\n session: XRSession;\n\n /** Current WebXR frame */\n frame: XRFrame | null = null;\n\n /**\n * Constructor.\n *\n * @param wasm Wasm bridge instance\n * @param mode Current XR session mode\n *\n * @hidden\n */\n constructor(webxr: WebXR, mode: XRSessionMode, session: XRSession) {\n this.#webxr = webxr;\n this.sessionMode = mode;\n this.session = session;\n }\n\n /** @overload */\n referenceSpaceForType(type: 'viewer'): XRReferenceSpace;\n /**\n * Get a WebXR reference space of a given reference space type.\n *\n * @param type Type of reference space to get\n * @returns Reference space, or `null` if there's no reference space\n * of the requested type available\n */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null;\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this.#webxr.referenceSpaceForType(type);\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this.#webxr.currentReferenceSpace = refSpace;\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this.#webxr.currentReferenceSpace;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this.#webxr.currentReferenceSpaceType;\n }\n\n /** Current WebXR base layer */\n get baseLayer(): XRProjectionLayer | XRWebGLLayer {\n return this.#webxr.baseLayer!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n return this.#webxr.framebuffers;\n }\n}\n\n/**\n * WebXR API (internal)\n *\n * @hidden\n */\nexport class WebXR {\n /** Wonderland WASM bridge. @hidden */\n readonly #wasm: WASM;\n\n readonly engine: WonderlandEngine;\n\n sessionState: XRSessionState | null = null;\n\n colorFormat: number = 0x8058 /* RGBA8 */;\n depthFormat: number = 0x88f0 /* DEPTH24_STENCIL8 */;\n textureType: XRTextureType = 'texture';\n\n /**\n * {@link Emitter} for WebXR session end events.\n */\n readonly onSessionEnd = new Emitter();\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n */\n readonly onSessionStart: Emitter<[XRSession, XRSessionMode]> = new RetainEmitter<\n [XRSession, XRSessionMode]\n >();\n\n /**\n * {@link Emitter} notified before the first update and rendering on the first frame of a new XR session.\n */\n readonly onSessionFirstFrame: Emitter<[XRSession, XRSessionMode]> = new Emitter<\n [XRSession, XRSessionMode]\n >();\n\n /** Whether AR is supported by the browser. */\n arSupported: boolean = false;\n\n /** Whether VR is supported by the browser. */\n vrSupported: boolean = false;\n\n /**\n * Current WebXR base layer or `null` if no session active.\n */\n baseLayer: XRProjectionLayer | XRWebGLLayer | null = null;\n\n /** WebXR framebuffer scale factor. */\n framebufferScaleFactor: number = 1.0;\n\n private _webglBinding: XRWebGLBinding | null = null;\n\n private _initXR: boolean = false;\n private _inXR: boolean = false;\n\n /** WebXR reference spaces. */\n private _refSpaces: Record = {\n 'viewer': undefined,\n 'local': undefined,\n 'local-floor': undefined,\n 'bounded-floor': undefined,\n 'unbounded': undefined,\n };\n\n /** Current WebXR reference space. */\n private _refSpace: XRReferenceSpace | null = null;\n\n /** Current WebXR reference space type. */\n private _refSpaceType: XRReferenceSpaceType | null = null;\n\n /**\n * Emscripten WebXR framebuffer(s).\n *\n * @note fbo will not get overwritten if we are rendering to the\n * default framebuffer, e.g., when using WebXR emulator.\n */\n private _fbo: number | number[] = 0;\n\n private _allowLayers: boolean = false;\n private _requestAnimationFrameId: any = null;\n\n /**\n * Initial WebXR reference space type. See {@link init} for\n * more information.\n */\n private _initialReferenceSpaceType: XRReferenceSpaceType | null = null;\n\n private _tempPosition: Float32Array = new Float32Array(3);\n private _tempRotation: Float32Array = new Float32Array(4);\n\n private _tempPose(transform: XRRigidTransform) {\n const p = transform.position;\n this._tempPosition[0] = p.x;\n this._tempPosition[1] = p.y;\n this._tempPosition[2] = p.z;\n const o = transform.orientation;\n this._tempRotation[0] = o.x;\n this._tempRotation[1] = o.y;\n this._tempRotation[2] = o.z;\n this._tempRotation[3] = o.w;\n }\n\n /**\n * Constructor.\n *\n * @param engine Engine\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine) {\n this.engine = engine;\n this.#wasm = engine.wasm;\n }\n\n /**\n * Check whether XR is supported and store the result in {@link arSupported} and {@link vrSupported}\n */\n checkXRSupport(): Promise {\n if (typeof navigator === 'undefined') {\n return Promise.resolve(false);\n }\n if (!navigator.xr) {\n const isLocalhost =\n location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n const missingHTTPS = location.protocol !== 'https:' && !isLocalhost;\n console.warn(\n missingHTTPS\n ? 'WebXR is only supported with HTTPS or on localhost!'\n : 'WebXR unsupported in this browser.'\n );\n return Promise.resolve(false);\n }\n /* Those can throw if the application is embedded in an iframe without\n * xr-spatial-tracking permission. navigator.xr will be available, but\n * any access of it will throw. */\n const vrPromise = navigator.xr\n .isSessionSupported('immersive-vr')\n .then((supported) => (this.vrSupported = supported))\n .catch(() => (this.vrSupported = false));\n const arPromise = navigator.xr\n .isSessionSupported('immersive-ar')\n .then((supported) => (this.arSupported = supported))\n .catch(() => (this.arSupported = false));\n\n return Promise.all([vrPromise, arPromise]).then(\n () => this.vrSupported || this.arSupported\n );\n }\n\n /**\n * Initialize WebXR.\n *\n * @hidden\n */\n async init(\n framebufferScaleFactor: number,\n offerSessionOptions: XROfferSessionOptions | null\n ) {\n const supported = await this.checkXRSupport();\n if (!supported) return;\n\n this.framebufferScaleFactor = framebufferScaleFactor;\n\n /* Force the reference space to 'local'/'viewer' for the loading screen\n * to make sure the head input is at the origin. Doing it this way to\n * avoid adding JS components to the loading screen. */\n const onXRStart = () => {\n this._initialReferenceSpaceType = this.currentReferenceSpaceType;\n const newSpace = this._refSpaces['local'] ?? this._refSpaces['viewer']!;\n this.currentReferenceSpace = newSpace;\n };\n\n /* Not once() because the user can enter and exit XR several times\n * during a long loading screen */\n this.onSessionStart.add(onXRStart);\n\n /* This is called before all init()/start()/onActivate() so we avoid\n * overwriting a user-set reference space */\n this.engine.onLoadingScreenEnd.once(() => {\n this.onSessionStart.remove(onXRStart);\n\n if (!this._initialReferenceSpaceType) return;\n\n this.currentReferenceSpace =\n this._refSpaces[this._initialReferenceSpaceType] ??\n this._refSpaces['viewer']!;\n this._initialReferenceSpaceType = null;\n });\n\n if (offerSessionOptions !== null) {\n let mode = offerSessionOptions.mode;\n if (mode == 'auto') {\n if (this.vrSupported) {\n mode = 'immersive-vr';\n } else if (this.arSupported) {\n mode = 'immersive-ar';\n } else {\n mode = 'inline';\n }\n }\n\n const offerSession = () => {\n this.offerSession(\n mode as XRSessionMode,\n offerSessionOptions.features,\n offerSessionOptions.optionalFeatures\n )\n .then(\n /* When the session ends, offer to start a new one again */\n (s) => s.addEventListener('end', offerSession)\n )\n /* The browser may not suppoer offer session, or a previous request\n * was replaced by a new one. Not crucial, but inform the user. */\n .catch(console.warn);\n };\n\n offerSession();\n }\n }\n\n /** Get a WebXR reference space of a given reference space type. */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this._refSpaces[type] ?? null;\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this._refSpace! = refSpace;\n\n this._refSpaceType = null;\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n if (this._refSpaces[type] === refSpace) {\n /* Keep track of reference space type */\n this._refSpaceType = type;\n }\n }\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this._refSpace!;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this._refSpaceType!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n if (!Array.isArray(this._fbo)) {\n return [this.#wasm.GL.framebuffers[this._fbo]];\n }\n return this._fbo.map((id) => this.#wasm.GL.framebuffers[id]);\n }\n\n /**\n * Set main/left/right eye view active according to XR mode.\n *\n * If @param inXR is `true`, disables the main view and enables the left and\n * right view. Otherwise, enables the main view and disables the left and\n * right view.\n *\n * @param inXR Whether an XR session is currently active\n */\n updateViewState(inXR: boolean | undefined) {\n const scene: Scene = this.engine.scene;\n\n inXR = inXR ?? this._inXR;\n\n if (scene.mainView) {\n scene.mainView.active = !inXR;\n }\n\n if (scene.leftEyeView && scene.rightEyeView) {\n /** We always have either no left/right eye views or both. Always enable\n * both since we can't know if this is single-view AR until we get the\n * view count in {@link nextFrame}. There the right eye view is\n * disabled if necessary. */\n scene.leftEyeView.active = inXR;\n scene.rightEyeView.active = inXR;\n }\n }\n\n /**\n * Set projection matrix parameters for the webxr session.\n *\n * @param near Distance of near clipping plane\n * @param far Distance of far clipping plane\n */\n updateProjectionParams(near: number | undefined, far: number | undefined) {\n if (!this.sessionState) return;\n\n const scene = this.engine.scene;\n near ??= scene.leftEyeView!.near;\n far ??= scene.leftEyeView!.far;\n\n /* If reverse-Z is enabled, we need to give WebXR swapped near and far\n * planes so it generates the correct projection matrices. This is\n * explicitly supported by the spec. */\n const reverseZ = !!this.engine.isReverseZEnabled;\n\n this.sessionState!.session.updateRenderState({\n depthNear: reverseZ ? far : near,\n depthFar: reverseZ ? near : far,\n });\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n const options = this.sessionOptions(features, optionalFeatures);\n return navigator.xr!.requestSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n /* @ts-ignore */\n if (!navigator.xr!.offerSession) {\n return Promise.reject('WebXR offerSession() unsupported in this browser.');\n }\n const options = this.sessionOptions(features, optionalFeatures);\n /* @ts-ignore */\n return navigator.xr!.offerSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n async startSession(session: XRSession, mode: XRSessionMode) {\n /* Multiple calls to requestSession will result in the existing\n * session being passed to the callback */\n if (session == this.sessionState?.session) return;\n this.sessionState = new XRSessionState(this, mode, session);\n\n /* React to session ending */\n session.addEventListener('end', () => {\n this.endSession();\n });\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n\n /* Create the base layer */\n let binding = null;\n const isEmulator = 'CustomWebXRPolyfill' in window;\n /* The WebXR emulator doesn't support layers, and will\n * simply throw an exception. Only way of checking seems\n * to be whether the custom polyfill is available */\n if (!isEmulator && 'XRWebGLBinding' in window) {\n binding = this._webglBinding = new XRWebGLBinding(session, gl);\n }\n const useLayers = this._allowLayers && binding;\n if (useLayers) {\n /* Use WebXR Layers */\n const layer = (this.baseLayer = binding!.createProjectionLayer({\n scaleFactor: this.framebufferScaleFactor,\n colorFormat: this.colorFormat,\n depthFormat: this.depthFormat,\n /* Always use 'texture-array' with multiview, otherwise default to it\n * if not set otherwise */\n textureType: !this.textureType ? 'texture-array' : this.textureType,\n }));\n session.updateRenderState({layers: [layer]});\n } else {\n const layer = (this.baseLayer = new XRWebGLLayer(session, gl, {\n framebufferScaleFactor: this.framebufferScaleFactor,\n }));\n session.updateRenderState({baseLayer: layer});\n }\n\n /* Request and cache available spaces. 'viewer' is always available. */\n const promises = [];\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n promises.push(\n session.requestReferenceSpace(type).then((refSpace) => {\n this._refSpaces[type] = refSpace;\n return refSpace;\n })\n );\n }\n\n await Promise.allSettled(promises).then((results) => {\n /* We prefer the reference space automatically in above order */\n for (let i = results.length - 1; i >= 0; --i) {\n const result = results[i];\n if (result.status === 'rejected') continue;\n /* Type is kept track of for the user to test against */\n this._refSpaceType = Object.keys(this._refSpaces)[\n i\n ] as XRReferenceSpaceType;\n this._refSpace = result.value;\n break;\n }\n });\n\n const isVR = mode == 'immersive-vr';\n\n const scene: Scene = this.engine.scene;\n\n if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) {\n console.error(\n `sessionStart(): VR sessions require 1 classic view, a left and a right view`\n );\n return;\n }\n\n this.updateViewState(true);\n\n this.updateProjectionParams(undefined, undefined);\n\n this.onSessionStart.notify(session, this.sessionState!.sessionMode);\n\n this.#wasm._wl_reset_context();\n\n console.log(`WebXR ${isVR ? 'VR' : 'AR'} session started`);\n\n this.sessionState.session.addEventListener('visibilitychange', (event) => {\n switch (event.session.visibilityState) {\n case 'visible':\n this.#wasm._wl_xr_focus();\n case 'visible-blurred':\n this.#wasm._wl_xr_blur();\n case 'hidden':\n this.#wasm._wl_xr_hide();\n }\n });\n\n /* Wait until first frame to call _wl_xr_init() */\n this._initXR = true;\n\n this._requestAnimationFrameId = session.requestAnimationFrame(\n useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)\n );\n }\n\n sessionOptions(\n requiredFeatures: string[],\n optionalFeatures: string[] = []\n ): XRSessionInit {\n if (this._allowLayers && !optionalFeatures.includes('layers')) {\n optionalFeatures.push('layers');\n }\n\n const params: XRSessionInit = {\n requiredFeatures,\n optionalFeatures,\n };\n\n const hasDepthSensing =\n requiredFeatures.includes('depth-sensing') ||\n optionalFeatures.includes('depth-sensing');\n if (hasDepthSensing) {\n params.depthSensing = {\n usagePreference: ['gpu-optimized', 'cpu-optimized'],\n dataFormatPreference: ['float32', 'luminance-alpha'],\n };\n }\n return params;\n }\n\n endSession() {\n this.sessionState!.session.cancelAnimationFrame(this._requestAnimationFrameId);\n this._requestAnimationFrameId = null;\n this.sessionState = null;\n\n this.#wasm._wl_reset_context();\n\n if (this.onSessionStart instanceof RetainEmitter) this.onSessionStart.reset();\n this.onSessionEnd.notify();\n\n console.log('WebXR session ended');\n\n this._inXR = false;\n\n this.updateViewState(false);\n\n const scene: Scene = this.engine.scene;\n\n this.#wasm._wl_xr_exit();\n\n /* Restore projection matrices. They are temporarily overridden in XR and\n * view changes are applied when the session ends. */\n scene.leftEyeView!._generateProjectionMatrix();\n scene.rightEyeView!._generateProjectionMatrix();\n\n /* Meta WebXR emulator doesn't request animation frame. Quest does. */\n this.#wasm._wl_application_redraw();\n }\n\n nextFrame(time: number, frame: XRFrame) {\n this.sessionState!.frame = frame;\n\n const session = frame.session;\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const scene: Scene = this.engine.scene;\n\n if (this._initXR) {\n /* There's no way to tell how many views we have before rendering the first frame,\n * and AR is not a sufficient criteria for one eye (mobile AR, AR headsets) */\n scene.rightEyeView!.active = pose.views.length > 1;\n\n this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer);\n this._initXR = false;\n this._inXR = true;\n\n this.onSessionFirstFrame.notify(session, this.sessionState!.sessionMode);\n }\n\n /* Head transformation */\n this._tempPose(pose.transform);\n scene._setInputTransformation(\n InputType.Head,\n this._tempPosition,\n this._tempRotation\n );\n\n /* Eyes transformations */\n for (let i = 0; i < pose.views.length && i < 2; ++i) {\n const view = pose.views[i];\n const viewIndex = view.eye == 'right' ? 1 : 0;\n this._tempPose(view.transform);\n scene._setInputTransformation(\n InputType.EyeLeft + viewIndex,\n this._tempPosition,\n this._tempRotation\n );\n }\n\n /* Controller transformations */\n for (const inputSource of session.inputSources) {\n let handedness = -1;\n if (inputSource.handedness == 'left') handedness = 0;\n else if (inputSource.handedness == 'right') handedness = 1;\n this._updateInputComponent(\n frame,\n inputSource.gripSpace,\n InputType.ControllerLeft + handedness\n );\n this._updateInputComponent(\n frame,\n inputSource.targetRaySpace,\n InputType.RayLeft + handedness\n );\n }\n\n this.#wasm._wl_nextFrame(0);\n }\n\n nextFrameSingle(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameSingle.bind(this)\n );\n }\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n /* If framebuffer is non-null, compositor is enabled and we bind it.\n * If it's null, we need to avoid this call otherwise the canvas FBO is bound */\n const glLayer = session.renderState.baseLayer!;\n if (glLayer.framebuffer) {\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const id = this._fbo || GL.getNewId(GL.framebuffers);\n (glLayer.framebuffer as WebXRFramebuffer).name = id;\n GL.framebuffers[id] = glLayer.framebuffer;\n this._fbo = id;\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]);\n }\n\n for (let i = 0; i < pose.views.length; ++i) {\n const view = pose.views[i];\n const viewport = glLayer.getViewport(view)!;\n\n let destView: ViewComponent;\n if (view.eye == 'left') {\n destView = this.engine.scene.leftEyeView!;\n } else if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene._components.componentAt(ViewComponent, i);\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n /* Patch projection matrix, currently only needed for reverse-Z.\n * If reverse-Z is enabled, we pass swapped near and far values to\n * updateRenderState(), giving us a matrix with inverted depth. But\n * we still need to map from NDC 1,-1 to 1,0. On WebGPU this won't\n * be necessary. */\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n this._fbo as number\n );\n }\n\n this.nextFrame(time, frame);\n }\n\n nextFrameLayers(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameLayers.bind(this)\n );\n }\n\n const scene: Scene = this.engine.scene;\n\n const pose = frame.getViewerPose(this._refSpace!)!;\n\n const layer = this.baseLayer!;\n const binding = this._webglBinding;\n\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n const createFramebuffer = !this._fbo;\n const textureArray = layer.textureArrayLength == 2;\n\n if (createFramebuffer) {\n if (textureArray) {\n this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)];\n } else {\n /* Both eyes use the same FBO */\n const id = GL.getNewId(GL.framebuffers);\n this._fbo = [id, id];\n }\n this._fbo.forEach((id) => {\n const framebuffer = gl.createFramebuffer() as WebXRFramebuffer;\n GL.framebuffers[id] = framebuffer;\n framebuffer.name = id;\n });\n }\n\n const ids = this._fbo as number[];\n pose.views.forEach((view) => {\n const viewIndex = view.eye == 'right' ? 1 : 0;\n\n const subImage = binding!.getViewSubImage(layer, view);\n const viewport = subImage.viewport;\n\n let destView: ViewComponent;\n if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene.leftEyeView!;\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n ids[viewIndex]\n );\n\n if (!createFramebuffer) return;\n /* Only needs to be done for the first view on when using side-by-side\n * target texture */\n if (!textureArray && viewIndex != 0) return;\n\n /* Make WebXR API created textures known to emscripten */\n const colorTexture = subImage.colorTexture as WebXRTexture;\n const colorImageId = (colorTexture.name =\n colorTexture.name || GL.getNewId(GL.textures));\n GL.textures[colorImageId] = colorTexture;\n\n const depthStencilTexture = subImage.depthStencilTexture as WebXRTexture;\n const depthStencilImageId = (depthStencilTexture.name =\n depthStencilTexture.name || GL.getNewId(GL.textures));\n GL.textures[depthStencilImageId] = depthStencilTexture;\n\n /* Attach textures to framebuffer */\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]);\n\n if (textureArray) {\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n subImage.colorTexture,\n 0,\n subImage.imageIndex\n );\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n subImage.depthStencilTexture,\n 0,\n subImage.imageIndex\n );\n } else {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n subImage.colorTexture,\n 0\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.TEXTURE_2D,\n subImage.depthStencilTexture,\n 0\n );\n }\n\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER)) {\n console.error('Target framebuffer for', view.eye, 'eye is incomplete.');\n }\n });\n\n this.nextFrame(time, frame);\n }\n\n private _updateInputComponent(\n frame: XRFrame,\n space: XRSpace | undefined,\n inputType: InputType\n ) {\n if (!space) return;\n const pose = frame.getPose(space, this._refSpace!);\n if (!pose || Number.isNaN(pose.transform.matrix[0])) return;\n this._tempPose(pose.transform);\n this.engine.scene._setInputTransformation(\n inputType,\n this._tempPosition,\n this._tempRotation\n );\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {InstantiateGltfResult, Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {Object3D} from './wonderland.js';\n\n/** GLTF-specific loading options. */\nexport type GLTFOptions = {\n /** If `true`, extensions will be parsed. */\n extensions?: boolean;\n};\n\n/**\n * Extension data obtained from glTF files.\n */\nexport interface GLTFExtensionsInstance {\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\nexport class GLTFExtensions {\n objectCount: number;\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record = {};\n /**\n * Mesh extension objects. Key is the gltf index, value is JSON\n * data indexed by extension name.\n */\n mesh: Record> = {};\n /**\n * Node extension objects. Key is a glTF index, value is JSON\n * data indexed by extension name.\n */\n node: Record> = {};\n\n constructor(count: number) {\n this.objectCount = count;\n }\n}\n\n/**\n * glTF scene.\n *\n * At the opposite of {@link Scene}, glTF scenes can be instantiated\n * in other scenes but can't:\n * - Be activated\n * - Be the destination of an instantiation\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n *\n * const scene = engine.scene;\n * for (let i = 0; i < 100; ++i) {\n * scene.instantiate(prefab);\n * }\n * ```\n *\n * Since this class inherits from {@link Prefab}, you can use the shared\n * API to modify the glTF before an instantiation:\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n * const zombie = prefab.findByName('Zombie')[0];\n *\n * // The mesh is too small, we scale the root\n * zombie.setScalingWorld([2, 2, 2]);\n * // Add a custom js 'health' component to the root\n * zombie.addComponent('health', {value: 100});\n *\n * // 'Zombie' is wrapped in a new root added during instantiation\n * const {root} = engine.scene.instantiate(prefab);\n * const instanceZombie = root.children[0];\n * console.log(instanceZombie.getScalingWorld()); // Prints '[2, 2, 2]'\n * ```\n *\n * @category scene\n * @since 1.2.0\n */\nexport class PrefabGLTF extends Prefab {\n /**\n * Raw extensions read from the glTF file.\n *\n * The extensions will be mapped to the hierarchy upon instantiation.\n * For more information, have a look at the {@link InstantiateGltfResult} type.\n *\n * @note The glTF must be loaded with `extensions` enabled. If not, this\n * field will be set to `null`. For more information, have a look at the\n * {@link GLTFOptions} type.\n */\n extensions: GLTFExtensions | null = null;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n this.extensions = this._readExtensions();\n }\n\n /**\n * Instantiate the glTF extensions on an active sub scene graph.\n *\n * @param id The root object id.\n * @param result The instantiation object result.\n *\n * @hidden\n */\n _processInstantiaton(dest: Prefab, root: Object3D, result: InstantiateGltfResult) {\n if (!this.extensions) return null;\n\n const wasm = this.engine.wasm;\n\n const count = this.extensions.objectCount;\n const idMapping: number[] = new Array(count);\n\n /** @todo: We need some check to ensure that the gltf layout didn't change to retarget extensions.\n * At least a simple scene graph size check should be required to avoid a segfault. */\n\n const activeRootIndex = wasm._wl_object_index(root._id);\n for (let i = 0; i < count; ++i) {\n const mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(\n this._index,\n dest._index,\n activeRootIndex,\n i\n );\n idMapping[i] = mappedId;\n }\n\n const remapped: GLTFExtensionsInstance = {\n mesh: {},\n node: {},\n idMapping,\n };\n\n for (const gltfIndex in this.extensions.mesh) {\n const id = idMapping[gltfIndex];\n remapped.mesh[id] = this.extensions.mesh[gltfIndex];\n }\n for (const gltfIndex in this.extensions.node) {\n const id = idMapping[gltfIndex];\n remapped.node[id] = this.extensions.node[gltfIndex];\n }\n\n result.extensions = remapped;\n }\n\n /**\n * Unmarshalls gltf extensions.\n *\n * @hidden\n */\n private _readExtensions() {\n const wasm = this.engine.wasm;\n\n const ptr = wasm._wl_glTF_scene_get_extensions(this._index);\n if (!ptr) return null;\n\n let index = ptr / 4;\n const data = wasm.HEAPU32;\n const readString = () => {\n const strPtr = data[index++];\n const strLen = data[index++];\n return wasm.UTF8ViewToString(strPtr, strPtr + strLen);\n };\n\n const objectCount = data[index++];\n const extensions = new GLTFExtensions(objectCount);\n\n const meshExtensionsSize = data[index++];\n for (let i = 0; i < meshExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.mesh[objectId] = JSON.parse(readString());\n }\n const nodeExtensionsSize = data[index++];\n for (let i = 0; i < nodeExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.node[objectId] = JSON.parse(readString());\n }\n const rootExtensionsStr = readString();\n if (rootExtensionsStr) {\n extensions.root = JSON.parse(rootExtensionsStr);\n }\n\n return extensions;\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {WASM} from './wasm.js';\nimport {Emitter} from './utils/event.js';\nimport {fetchStreamWithProgress, fetchWithProgress, getBaseUrl} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Object3D,\n RayHit,\n Environment,\n ViewComponent,\n InputType,\n LogTag,\n} from './wonderland.js';\nimport {NumberArray} from './types.js';\nimport {Material} from './resources/material-manager.js';\nimport {InMemoryLoadOptions, Prefab, SceneLoadOptions} from './prefab.js';\nimport {GLTFExtensionsInstance, PrefabGLTF} from './scene-gltf.js';\n\nexport interface InstantiateResult {\n root: Object3D;\n}\n\nexport interface InstantiateGltfResult extends InstantiateResult {\n extensions: GLTFExtensionsInstance | null;\n}\n\n/** Options for scene activation. */\nexport interface ActivateOptions {\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n /**\n * If `true`, the promise will resolve only once all dependencies are downloaded.\n *\n * If `false`, resolves as soon as possible, e.g., when the lowest\n * resolution textures are available.\n */\n waitForDependencies?: boolean;\n /** @hidden */\n legacyLoaded?: boolean;\n}\n\n/**\n * Legacy gltf extension type.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadGLTF} API.\n */\nexport interface GLTFExtensionsLegacy {\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record>;\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\n/** Options for {@link Scene.append}. */\nexport interface SceneAppendParameters {\n /** Whether to load glTF extension data */\n loadGltfExtensions: boolean;\n baseURL: string | undefined;\n}\n\n/**\n * Result obtained when appending a scene with {@link Scene.append} with gltf extensions.\n */\nexport type SceneAppendResultWithExtensions = {\n root: Object3D | null;\n extensions: GLTFExtensionsLegacy;\n};\n\n/**\n * Result obtained when appending a scene with {@link Scene.append}.\n */\nexport type SceneAppendResult = (Object3D | null) | SceneAppendResultWithExtensions;\n\n/**\n * Constants\n */\n\n/** Magic number for .bin */\nconst MAGIC_BIN = 'WLEV';\n\n/**\n * Scene type to load with {@link ChunkedSceneLoadSink}.\n *\n * @since 1.2.1\n * @hidden\n */\nexport enum SceneType {\n Prefab,\n Main,\n Dependency,\n}\n\n/**\n * Sink for `WritableStream` that loads the data as a .bin file.\n *\n * Data is loaded chunk by chunk to minimize the total WASM allocation size.\n *\n * @since 1.2.1\n * @hidden\n */\nexport class ChunkedSceneLoadSink implements UnderlyingSink {\n readonly #wasm: WASM;\n readonly #type: SceneType;\n readonly #closeParameters: any[];\n #offset = 0;\n #requested = 0;\n #firstChunk = true;\n\n _loadIndex = -1;\n sceneIndex = -1;\n\n /** Pointer to the staging buffer. */\n #ptr: number = 0;\n /** Staging buffer size, in **bytes**. */\n #bufferSize: number = 0;\n\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Prefab, url: string);\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Main, url: string);\n /** @overload */\n constructor(\n engine: WonderlandEngine,\n type: SceneType.Dependency,\n url: string,\n dependentSceneIndex: number\n );\n /**\n * Constructor\n * @param engine Engine instance\n * @param type Type of scene to load\n * @param url URL for the scene creation. Can be empty.\n * @param closeParameters Parameters for the final function to be called\n * during a successful {@link ChunkedSceneLoadSink.close}.\n */\n constructor(\n engine: WonderlandEngine,\n type: SceneType,\n url: string,\n ...closeParameters: any[]\n ) {\n this.#wasm = engine.wasm;\n this.#type = type;\n this.#closeParameters = closeParameters;\n this._loadIndex = this.#wasm._wl_scene_create_chunked_start(\n this.#wasm.tempUTF8(url)\n );\n /* Initial buffer for the header chunk */\n this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex);\n this._resizeBuffer(this.#requested);\n }\n\n private _resizeBuffer(size: number) {\n if (this.#bufferSize > 0) {\n this.#wasm._free(this.#ptr);\n }\n this.#bufferSize = size;\n this.#ptr = size ? this.#wasm._malloc(size) : 0;\n }\n\n private _throwError(reason: string) {\n this.abort();\n throw new Error(reason);\n }\n\n /**\n * Write a single blob of data.\n *\n * @param blob Data to parse\n */\n write(blob: Uint8Array) {\n let read = 0;\n while (read < blob.length) {\n /* Fill the staging buffer */\n const toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset);\n /* **Do not** attempt to create a HEAP8 view here, since the next wasm call might\n * re-allocate the heap, making this view dangling. */\n this.#wasm.HEAPU8.set(\n blob.subarray(read, read + toRead),\n this.#ptr + this.#offset\n );\n this.#offset += toRead;\n read += toRead;\n\n /* Not enough data, wait for more */\n if (this.#requested > this.#offset) continue;\n\n /* Send data. This loads as many chunks as possible and then tells\n * us how much data it's missing, and how much it has read. The\n * read count allows us to move incomplete chunk data to the start\n * of the buffer. This is necessary because the buffer is allocated\n * with just enough data to hold the largest chunk. */\n const readSizePtr = this.#wasm._tempMem;\n const requestedPtr = this.#wasm._tempMem + 4;\n let success: boolean;\n try {\n success = this.#wasm._wl_scene_create_chunked_next(\n this._loadIndex,\n this.#ptr,\n this.#offset,\n readSizePtr,\n requestedPtr\n );\n } catch {\n /* Catch calls to abort(), e.g. via asserts */\n success = false;\n }\n\n if (!success) {\n this._throwError('Chunk parsing failed');\n }\n\n const sentSize = this.#offset;\n const readSize = this.#wasm._tempMemUint32[0];\n this.#requested = this.#wasm._tempMemUint32[1];\n const extraSize = sentSize - readSize;\n\n /* #requested == 0 signals end of .bin file */\n if (extraSize > this.#requested) {\n this._throwError('Unexpected extra data');\n }\n\n /* Not enough data for a chunk, wait for more */\n if (!readSize) continue;\n\n if (extraSize > 0) {\n /* We passed one or more complete chunks plus incomplete extra\n * data for the next chunk. Move it to the buffer start. */\n this.#wasm.HEAPU8.copyWithin(\n this.#ptr,\n this.#ptr + readSize,\n this.#ptr + sentSize\n );\n }\n\n this.#offset = extraSize;\n\n if (this.#firstChunk) {\n /* First chunk is the header. At this point we can query for\n * the required buffer size for parsing the rest of the .bin.\n * The initial buffer is exactly the size of the header chunk\n * so #offset should be 0 here since we sent a complete chunk. */\n this._resizeBuffer(\n this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)\n );\n this.#firstChunk = false;\n }\n }\n }\n\n /** Called when all blobs of data have been written */\n close() {\n if (this.#requested > 0) {\n this._throwError('Unexpected end of data');\n }\n\n this._resizeBuffer(0);\n switch (this.#type) {\n case SceneType.Prefab:\n this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(\n this._loadIndex\n );\n break;\n case SceneType.Main:\n this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex);\n this.sceneIndex = 0;\n break;\n case SceneType.Dependency:\n [this.sceneIndex] = this.#closeParameters;\n this.#wasm._wl_scene_create_chunked_end_queued(\n this._loadIndex,\n this.sceneIndex\n );\n break;\n default:\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n break;\n }\n this._loadIndex = -1;\n }\n\n /** Called when the stream is aborted */\n abort() {\n if (this._loadIndex === -1) return;\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n this._loadIndex = -1;\n this._resizeBuffer(0);\n }\n\n /** Staging buffer size */\n get size() {\n return this.#bufferSize;\n }\n}\n\n/**\n * Wonderland Engine (.bin) scene.\n *\n * Wonderland Engine packages two types of scene:\n * - Activatable scene: Contains objects, components, views, resources, and rendering data\n * - Streamable scene: Contains objects, components, and resources\n *\n * #### Activation\n *\n * Some scenes are **activatable**, they can thus be attached to the renderer\n * to be updated and rendered on the canvas.\n *\n * For more information, have a look at the {@link WonderlandEngine.switchTo} method.\n *\n * #### Instantiation\n *\n * Besides activation, a scene can instantiate the content of another scene.\n *\n * For more information, have a look at the {@link Scene#instantiate} method.\n *\n * @category scene\n */\nexport class Scene extends Prefab {\n /** Called before rendering the scene */\n readonly onPreRender = new Emitter();\n /** Called after the scene has been rendered */\n readonly onPostRender = new Emitter();\n\n /** Ray hit pointer in WASM heap. @hidden */\n private _rayHit: number;\n /** Ray hit. @hidden */\n private _hit: RayHit;\n\n /** @hidden */\n private _environment: Environment;\n\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n /** `this.engine?` is used for testing. */\n this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(this, this._rayHit);\n this._environment = new Environment(this);\n }\n\n /** @overload */\n instantiate(scene: PrefabGLTF): InstantiateGltfResult;\n /**\n * Instantiate `scene` into this instance.\n *\n * Any scene can be instantiated into one another. It's thus possible\n * to instantiate a {@link PrefabGLTF} into this instance, or another\n * {@link Scene} instance.\n *\n * #### Usage\n *\n * ```js\n * const prefabScene = await engine.loadScene('Prefab.bin');\n * // Instantiate `prefabScene` into `scene`\n * engine.scene.instantiate(prefabScene);\n * ```\n *\n * #### Shared Resources\n *\n * Instantiating **does not** duplicate resources. Each instance will\n * reference the same assets stored in the {@link Scene}, e.g.,\n *\n * ```js\n * // `zombie` has one mesh and one material\n * const zombie = await engine.loadScene('Zombie.bin');\n *\n * for (let i = 0; i < 100; ++i) {\n * engine.scene.instantiate(zombie);\n * }\n *\n * console.log(engine.meshes.count) // Prints '1'\n * console.log(engine.materials.count) // Prints '1'\n * ```\n *\n * #### glTF extensions\n *\n * Instantiating a prefab loaded from a .glb automatically retargets the extensions\n * to the created hierarchy:\n *\n * ```js\n * const gltf = await engine.loadGLTF({url: 'Model.glb', extensions: true});\n * const {root, extensions} = engine.scene.instantiate(gltf);\n *\n * // Retrieve Object3D instance from extension nodes list\n * for (const key in extensions.node) {\n * const object3d = engine.scene.wrap(extensions.node[key]);\n * }\n * ```\n *\n * @param scene The scene to instantiate.\n * @returns An object containing the instantiated root {@link Object3D}.\n * When a glTF is instantiated, the result can contain extra metadata.\n * For more information, have a look at the {@link InstantiateResult} type.\n *\n * @since 1.2.0\n */\n instantiate(prefab: Prefab): InstantiateResult;\n instantiate(prefab: Prefab): InstantiateResult {\n if (prefab._index === this._index) {\n throw new Error(\"Can't instantiate scene into itself\");\n }\n\n const wasm = this.engine.wasm;\n const id = wasm._wl_scene_instantiate(prefab._index, this._index);\n\n const result: InstantiateResult = {root: this.wrap(id)};\n if (prefab instanceof PrefabGLTF) {\n const obj = this.wrap(id);\n prefab._processInstantiaton(this, obj, result as InstantiateGltfResult);\n }\n return result;\n }\n\n /** @todo: Add `instantiateBatch` to instantiate multiple chunks in a row. */\n\n /**\n * @todo Provide an API to delete all resources linked to a scene.\n *\n * Example:\n *\n * ```ts\n * const scene = await engine.loadScene('Scene.bin');\n * ...\n * scene.destroy({removeResources: true});\n * ```\n */\n\n /**\n * Destroy this scene and remove it from the engine.\n *\n * @note Destroying a scene **doesn't** remove the materials, meshes,\n * and textures it references in the engine. Those should be cleaned up either by loading\n * another main scene via {@link WonderlandEngine.loadMainScene}, or manually using {@link Mesh.destroy}.\n *\n * @throws If the scene is currently active.\n * */\n destroy() {\n if (this.isActive) {\n throw new Error(\n `Attempt to destroy ${this}, but destroying the active scene is not supported`\n );\n }\n\n /* Store before calling `super.destroy()` since the call\n * might destroy entirely the prototype. */\n const wasm = this.engine.wasm;\n const rayPtr = this._rayHit;\n\n super.destroy();\n\n wasm._free(rayPtr);\n }\n\n /**\n * View components.\n */\n get views(): ViewComponent[] {\n return this._components.components(ViewComponent, false);\n }\n\n /**\n * Active view components.\n */\n get activeViews(): ViewComponent[] {\n return this._components.components(ViewComponent, true);\n }\n\n /**\n * Main view.\n */\n get mainView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_mainView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Left eye view.\n */\n get leftEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_leftView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Right eye view.\n */\n get rightEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_rightView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Set input transformation.\n *\n * @hidden\n */\n _setInputTransformation(\n type: InputType,\n position: Readonly,\n orientation: Readonly\n ) {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(4 * 2 * 4);\n wasm._tempMemFloat.set(position);\n wasm._tempMemFloat.set(orientation, 4);\n wasm._wl_input_set_transformation(this._index, type, wasm._tempMem);\n }\n\n /**\n * Cast a ray through the scene and find intersecting collision components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.scene.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of collision groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Scene}\n * instance and will be reused with the next {@link Scene#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance = 100.0\n ): RayHit {\n this.engine.wasm._wl_scene_ray_cast(\n this._index,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n this._rayHit,\n maxDistance\n );\n return this._hit;\n }\n\n /**\n * Set the background clear color.\n *\n * @param color new clear color (RGBA).\n * @since 0.8.5\n */\n set clearColor(color: number[]) {\n this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]);\n }\n\n /**\n * Set whether to clear the color framebuffer before drawing.\n *\n * This function is useful if an external framework (e.g. an AR tracking\n * framework) is responsible for drawing a camera frame before Wonderland\n * Engine draws the scene on top of it.\n *\n * @param b Whether to enable color clear.\n * @since 0.9.4\n */\n set colorClearEnabled(b: boolean) {\n this.engine.wasm._wl_scene_enableColorClear(b);\n }\n\n /**\n * Load a scene file (.bin).\n *\n * Will replace the currently active scene with the one loaded\n * from given file. It is assumed that JavaScript components required by\n * the new scene were registered in advance.\n *\n * Once the scene is loaded successfully and initialized,\n * {@link WonderlandEngine.onSceneLoaded} is notified.\n *\n * #### ArrayBuffer\n *\n * The `load()` method accepts an in-memory buffer:\n *\n * ```js\n * scene.load({\n * buffer: new ArrayBuffer(...),\n * baseURL: 'https://my-website/assets'\n * })\n * ```\n *\n * @note The `baseURL` is mandatory. It's used to fetch images and languages.\n *\n * Use {@link Scene.setLoadingProgress} to update the loading progress bar\n * when using an ArrayBuffer.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadMainScene} API.\n *\n * @param options Path to the file to load, or an option object.\n * For more information about the options, see the {@link SceneLoadOptions} documentation.\n * @returns Promise that resolves when the scene was loaded.\n */\n async load(options: string | SceneLoadOptions): Promise {\n const engine = this.engine;\n\n /** @todo(2.0.0): Remove this method. */\n let dispatchReadyEvent = false;\n let opts: InMemoryLoadOptions;\n if (isString(options)) {\n opts = await Scene.loadBuffer(options, (bytes: number, size: number) => {\n this.engine.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.engine.setLoadingProgress(bytes / size);\n });\n } else {\n opts = options;\n dispatchReadyEvent = options.dispatchReadyEvent ?? false;\n }\n\n const scene = await engine.loadMainSceneFromBuffer({\n ...opts,\n dispatchReadyEvent,\n });\n /* Do not use `this`, since `loadMainScene` will destroy it.\n * `erasePrototypeOnDestroy` would make this instance unusable. */\n engine.onSceneLoaded.notify();\n return scene;\n }\n\n /**\n * Append a scene file.\n *\n * Loads and parses the file and its images and appends the result\n * to the currently active scene.\n *\n * Supported formats are streamable Wonderland scene files (.bin) and glTF\n * 3D scenes (.gltf, .glb).\n *\n * ```js\n * WL.scene.append(filename).then(root => {\n * // root contains the loaded scene\n * });\n * ```\n *\n * In case the `loadGltfExtensions` option is set to true, the response\n * will be an object containing both the root of the loaded scene and\n * any glTF extensions found on nodes, meshes and the root of the file.\n *\n * ```js\n * WL.scene.append(filename, { loadGltfExtensions: true }).then(({root, extensions}) => {\n * // root contains the loaded scene\n * // extensions.root contains any extensions at the root of glTF document\n * const rootExtensions = extensions.root;\n * // extensions.mesh and extensions.node contain extensions indexed by Object id\n * const childObject = root.children[0];\n * const meshExtensions = root.meshExtensions[childObject.objectId];\n * const nodeExtensions = root.nodeExtensions[childObject.objectId];\n * // extensions.idMapping contains a mapping from glTF node index to Object id\n * });\n * ```\n *\n * If the file to be loaded is located in a subfolder, it might be useful\n * to define the `baseURL` option. This will ensure any bin files\n * referenced by the loaded bin file are loaded at the correct path.\n *\n * ```js\n * WL.scene.append(filename, { baseURL: 'scenes' }).then(({root, extensions}) => {\n * // do stuff\n * });\n * ```\n *\n * @deprecated Use the new {@link Prefab} and {@link Scene} API.\n *\n * @param file The .bin, .gltf or .glb file to append. Should be a URL or\n * an `ArrayBuffer` with the file content.\n * @param options Additional options for loading.\n * @returns Promise that resolves when the scene was appended.\n */\n async append(\n file: string | ArrayBuffer,\n options: Partial = {}\n ): Promise {\n /** @todo(2.0.0): Remove this method. */\n\n const {baseURL = isString(file) ? getBaseUrl(file) : this.baseURL} = options;\n\n const buffer = isString(file) ? await fetchWithProgress(file) : file;\n const data = new Uint8Array(buffer);\n const isBinFile =\n data.byteLength > MAGIC_BIN.length &&\n data\n .subarray(0, MAGIC_BIN.length)\n .every((value, i) => value === MAGIC_BIN.charCodeAt(i));\n\n const scene = isBinFile\n ? this.engine.loadPrefabFromBuffer({buffer, baseURL})\n : this.engine.loadGLTFFromBuffer({\n buffer,\n baseURL,\n extensions: options.loadGltfExtensions,\n });\n\n const result = this.instantiate(scene)!;\n if (scene instanceof PrefabGLTF) {\n if (!scene.extensions) return result.root;\n return {\n root: result.root,\n extensions: {\n ...(result as InstantiateGltfResult).extensions,\n root: scene.extensions.root,\n },\n } as SceneAppendResultWithExtensions;\n }\n\n scene.destroy();\n return result.root;\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @deprecated Use {@link WonderlandEngine.setLoadingProgress}.\n */\n setLoadingProgress(percentage: number) {\n this.engine.setLoadingProgress(percentage);\n }\n\n /**\n * Dispatch an event 'wle-scene-ready' in the document.\n *\n * @note This is used for automatic testing.\n */\n dispatchReadyEvent() {\n document.dispatchEvent(\n new CustomEvent('wle-scene-ready', {\n detail: {filename: this.filename},\n })\n );\n }\n\n /**\n * Set the current material to render the sky.\n *\n * @note The sky needs to be enabled in the editor when creating the scene.\n * For more information, please refer to the background [tutorial](https://wonderlandengine.com/tutorials/background-effect/).\n */\n set skyMaterial(material: Material | null) {\n this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0);\n }\n\n /** Current sky material, or `null` if no sky is set. */\n get skyMaterial(): Material | null {\n const index = this.engine.wasm._wl_scene_get_sky_material(this._index);\n return this.engine.materials.wrap(index);\n }\n\n /**\n * Environment lighting properties.\n *\n * @since 1.2.3\n */\n get environment(): Environment {\n return this._environment;\n }\n\n /**\n * Relative url to the js components bundle\n *\n * Returns `null` if the scene was built without a components bundle.\n */\n get componentsBundle(): string | null {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_componentsBundle(this._index);\n return ptr ? wasm.UTF8ToString(ptr) : null;\n }\n\n /**\n * Reset the scene.\n *\n * This method deletes all used and allocated objects, and components.\n *\n * @deprecated Load a new scene and activate it instead.\n */\n reset() {\n /** @todo(2.0.0): Remove this method. */\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependency(url: string) {\n const sink = new ChunkedSceneLoadSink(\n this.engine,\n SceneType.Dependency,\n url,\n this._index\n );\n const stream = await fetchStreamWithProgress(url);\n return stream.pipeTo(new WritableStream(sink));\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependencies() {\n const wasm = this.engine.wasm;\n\n const count = wasm._wl_scene_queued_bin_count(this._index);\n if (!count) return Promise.resolve();\n\n const urls = new Array(count).fill(0).map((_, i: number) => {\n const ptr = wasm._wl_scene_queued_bin_path(this._index, i);\n const url = wasm.UTF8ToString(ptr);\n return url;\n });\n\n wasm._wl_scene_clear_queued_bin_list(this._index);\n\n return Promise.all(urls.map((url: string) => this._downloadDependency(url)));\n }\n}\n", "import {\n Component,\n ComponentConstructor,\n Object as Object3D,\n Physics,\n I18N,\n MorphTargets,\n Texture,\n Font,\n DestroyedPrefabInstance,\n ParticleEffect,\n} from './wonderland.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {isString} from './utils/object.js';\nimport {APIVersion, Version} from './version.js';\nimport {WASM} from './wasm.js';\nimport {Logger} from './utils/logger.js';\nimport {clamp} from './utils/misc.js';\nimport {MaterialManager} from './resources/material-manager.js';\nimport {MeshManager} from './resources/mesh-manager.js';\nimport {ResourceManager} from './resources/resource.js';\nimport {needsFlipY, TextureManager} from './resources/texture-manager.js';\nimport {LogTag} from './wonderland.js';\nimport {Constructor, ImageLike, ProgressCallback} from './types.js';\nimport {XRSessionState, WebXR} from './webxr.js';\nimport {Prefab, InMemoryLoadOptions, LoadOptions, StreamLoadOptions} from './prefab.js';\nimport {Scene, ActivateOptions, ChunkedSceneLoadSink, SceneType} from './scene.js';\nimport {PrefabGLTF, GLTFOptions} from './scene-gltf.js';\nimport {ArrayBufferSource, onImageReady} from './utils/fetch.js';\n\n/**\n * Ensures that this API is compatible with the given\n * runtime version.\n *\n * We only enforce compatibility for major and minor components, i.e.,\n * the runtime and the API must both be of the form `x.y.*`.\n *\n * @throws If the major or the minor components are different.\n *\n * @param version The target version\n */\nexport function checkRuntimeCompatibility(version: Version) {\n const {major, minor} = version;\n\n let majorDiff = major - APIVersion.major;\n let minorDiff = minor - APIVersion.minor;\n /* Same version, so perfectly compatible. */\n if (!majorDiff && !minorDiff) return;\n\n const error =\n 'checkRuntimeCompatibility(): Version compatibility mismatch:\\n' +\n '\\t\u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*)\\n';\n\n const isRuntimeOlder = majorDiff < 0 || (!majorDiff && minorDiff < 0);\n if (isRuntimeOlder) {\n /* Runtime is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`\n );\n }\n /* API is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a new API version >= ${version.major}.${version.minor}.*`\n );\n}\n\n/**\n * Reload the browser tab.\n *\n * @note This method first ensures the XR session is terminated,\n * to avoid blocking the Oculus Quest page.\n *\n * @param engine The engine instance\n */\nfunction reloadPage(engine: WonderlandEngine) {\n /* End XR session for Oculus Quest blocking reload otherwise */\n const session = engine.xr?.session ?? null;\n if (!session) {\n location.reload();\n return;\n }\n session.end().then(() => location.reload());\n}\n\n/**\n * Main Wonderland Engine instance.\n *\n * Controls the canvas, rendering, and JS <-> WASM communication.\n */\nexport class WonderlandEngine {\n /**\n * {@link Emitter} for WebXR session end events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionEnd.add(() => console.log(\"XR session ended.\"));\n * ```\n */\n get onXRSessionEnd(): Emitter {\n return this.#webxr.onSessionEnd;\n }\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionStart.add((session, mode) => console.log(session, mode));\n * ```\n *\n * By default, this emitter is retained and will automatically call any callback added\n * while a session is already started:\n *\n * ```js\n * // XR session is already active.\n * this.engine.onXRSessionStart.add((session, mode) => {\n * console.log(session, mode); // Triggered immediately.\n * });\n * ```\n */\n get onXRSessionStart(): Emitter<[XRSession, XRSessionMode]> {\n return this.#webxr.onSessionStart;\n }\n\n /**\n * {@link Emitter} for canvas / main framebuffer resize events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onResize.add(() => {\n * const canvas = this.engine.canvas;\n * console.log(`New Size: ${canvas.width}, ${canvas.height}`);\n * });\n * ```\n *\n * @note The size of the canvas is in physical pixels, and is set via {@link WonderlandEngine.resize}.\n */\n readonly onResize: Emitter = new Emitter();\n\n /** Whether AR is supported by the browser. */\n get arSupported(): boolean {\n return this.#webxr.arSupported;\n }\n\n /** Whether VR is supported by the browser. */\n get vrSupported(): boolean {\n return this.#webxr.vrSupported;\n }\n\n /**\n * {@link RetainEmitter} signalling the end of the loading screen.\n *\n * Listeners get notified when the first call to {@link Scene#load()} is\n * invoked. At this point the new scene has not become active, and none of\n * its resources or components are initialized.\n *\n * Compared to {@link onSceneLoaded}, this does not wait for all components\n * to be fully initialized and activated. Any handler added inside\n * {@link Component#init()}, {@link Component#start()} or\n * {@link Component#onActivate()} will be called immediately.\n *\n * Usage:\n *\n * ```js\n * this.engine.onLoadingScreenEnd.add(() => console.log(\"Wait is over!\"));\n * ```\n */\n readonly onLoadingScreenEnd = new RetainEmitter();\n\n /**\n * {@link Emitter} for scene loaded events.\n *\n * Listeners get notified when a call to {@link Scene#load()} finishes. At\n * this point all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneLoaded.add(() => console.log(\"Scene switched!\"));\n * ```\n *\n * @deprecated Use {@link onSceneActivated} instead.\n */\n readonly onSceneLoaded = new Emitter();\n\n /**\n * {@link Emitter} for scene activated events.\n *\n * This listener is notified with the old scene as first parameter, and\n * the new scene as second.\n *\n * This listener is notified after all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneActivated.add((oldScene, newScene) => {\n * console.log(`Scene switch from ${oldScene.filename} to ${newScene.filename}`);\n * });\n * ```\n */\n readonly onSceneActivated = new Emitter<[Scene, Scene]>();\n\n /**\n * Triggered when a hot reload is requested.\n *\n * When using the Wonderland Editor, this will be triggered when packaging\n * the project.\n *\n * @note When {@link autoHotReload} is `true`, the emitter is notified after the\n * scene is reloaded.\n *\n * To customize the hot reload behavior, set the {@link autoHotReload} to `false`,\n * and use this emitter:\n *\n * ```js\n * this.engine.onHotReloadRequest.add(async (filename: string) => {\n * // This handler can be used to re-download a scene, download components,\n * // fetch an API, anything!\n * await this.loadMainScene(filename);\n * });\n * ```\n */\n readonly onHotReloadRequest: Emitter<[string]> = new Emitter();\n\n /**\n * Access to internationalization.\n */\n readonly i18n: I18N = new I18N(this);\n\n /**\n * WebXR related state, `null` if no XR session is active.\n */\n get xr(): XRSessionState | null {\n return this.#webxr.sessionState;\n }\n\n /**\n * If `true`, {@link Texture}, {@link Object3D}, and {@link Component}\n * instances have their prototype erased upon destruction.\n *\n * #### Object\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = engine.scene.addObject();\n * obj.name = 'iamalive';\n * console.log(obj.name); // Prints 'iamalive'\n *\n * obj.destroy();\n * console.log(obj.name); // Throws an error\n * ```\n *\n * #### Component\n *\n * Components will also be affected:\n *\n * ```js\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * alive: Property.bool(true)\n * };\n *\n * start() {\n * this.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * A component is also destroyed if its ancestor gets destroyed:\n *\n * ```js\n * class MyComponent extends Component {\n * ...\n * start() {\n * this.object.parent.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * @note Native components will not be erased if destroyed via object destruction:\n *\n * ```js\n * const mesh = obj.addComponent('mesh');\n * obj.destroy();\n * console.log(mesh.active) // Doesn't throw even if the mesh is destroyed\n * ```\n *\n * @since 1.1.1\n */\n erasePrototypeOnDestroy = false;\n\n /**\n * If `true`, the materials will be wrapped in a proxy to support pre-1.2.0\n * material access, i.e.,\n *\n * ```js\n * const material = new Material(engine, 'Phong Opaque');\n * material.diffuseColor = [1.0, 0.0, 0.0, 1.0];\n * ```\n *\n * If `false`, property accessors will not be available and material\n * properties should be accessed via methods, i.e.,\n *\n * ```js\n * const PhongOpaque = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongOpaque();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ...\n * const diffuse = material.getDiffuseColor();\n * ```\n *\n * When disabled, reading/writing to materials is slightly more efficient on the CPU.\n */\n legacyMaterialSupport = true;\n\n /**\n * If `true`, automatically reloads the scene sent by the editor socket.\n *\n * @note The {@link onHotReloadRequest} emitter is notified **after** the scene is re-loaded.\n *\n * To use custom hot-reload code, set this boolean to `false` and add the reloading code\n *\n */\n autoHotReload = true;\n\n /**\n * If `true`, uncompressed images will be automatically converted\n * to `ImageBitmap` before upload to the GPU.\n *\n * For more information, have a look at the\n * [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) documentation.\n */\n loadUncompressedImagesAsBitmap = false;\n\n /**\n * Scene cache in scene manager.\n *\n * @hidden\n */\n _scenes: (Prefab | null)[] = [];\n\n /**\n * Currently active scene.\n *\n * @hidden\n */\n _scene: Scene;\n\n /** Incremented every time a new main scene is loaded. */\n _mainSceneVersion: number = 0;\n\n /** @hidden */\n private _textures!: TextureManager;\n /** @hidden */\n private _materials!: MaterialManager;\n /** @hidden */\n private _meshes!: MeshManager;\n /** @hidden */\n private _morphTargets!: ResourceManager;\n /** @hidden */\n private _fonts!: ResourceManager;\n /** @hidden */\n private _particleEffects!: ResourceManager;\n /**\n * Current loading uncompressed images.\n *\n * @note Indexed by js image index.\n *\n * @hidden\n */\n private _uncompressedPromises: Promise[] = [];\n\n /**\n * WebAssembly bridge.\n *\n * @hidden\n */\n #wasm: WASM;\n\n /**\n * Physics manager, only available when physx is enabled in the runtime.\n *\n * @hidden\n */\n #physics: Physics | null = null;\n\n /**\n * WebXR library.\n *\n * @hidden\n */\n #webxr: WebXR;\n\n /**\n * Resize observer to track for canvas size changes.\n *\n * @hidden\n */\n #resizeObserver: ResizeObserver | null = null;\n\n /**\n * Whether a components bundle has already been loaded or not.\n *\n * @hidden\n */\n #bundleCache: Set = new Set();\n\n /**\n * Create a new engine instance.\n *\n * @param wasm Wasm bridge instance\n * @param loadingScreen Loading screen .bin file data\n *\n * @hidden\n */\n constructor(wasm: WASM, loadingScreen: ArrayBuffer | null, withRenderer: boolean) {\n this.#wasm = wasm;\n this.#wasm['_setEngine'](this); /* String lookup to bypass private. */\n this.#wasm._loadingScreen = loadingScreen;\n\n const version = this.runtimeVersion;\n let versionString = `${version.major}.${version.minor}.${version.patch}`;\n if (version.rc > 0) {\n versionString += `-rc${version.rc}`;\n }\n this.log.info(LogTag.Engine, 'Wonderland Engine runtime version:', versionString);\n\n this.#webxr = new WebXR(this);\n\n checkRuntimeCompatibility(this.#wasm.runtimeVersion);\n\n /* Setup the error handler. This is used to to manage native errors. */\n this.#wasm._wl_set_error_callback(\n this.#wasm.addFunction((messagePtr: number) => {\n throw new Error(this.#wasm.UTF8ToString(messagePtr));\n }, 'vi')\n );\n\n this.#wasm._wl_application_create();\n\n this.#physics = null;\n\n if (this.#wasm.withPhysX) {\n this.#physics = new Physics(this);\n }\n\n this._init(withRenderer);\n\n this._scene = this._reload(0);\n\n this.canvas.addEventListener(\n 'webglcontextlost',\n (e) => this.log.error(LogTag.Engine, 'Context lost:', e),\n false\n );\n }\n\n /**\n * Start the engine if it's not already running.\n *\n * When using the {@link loadRuntime} function, this method is called\n * automatically.\n */\n start(): void {\n this.wasm._wl_application_start();\n }\n\n /**\n * Register a custom JavaScript component type.\n *\n * You can register a component directly using a class inheriting from {@link Component}:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myParam: {type: Type.Float, default: 42.0},\n * };\n * init() {}\n * start() {}\n * update(dt) {}\n * onActivate() {}\n * onDeactivate() {}\n * onDestroy() {}\n * });\n *\n * // Here, we assume we have an engine already instantiated.\n * // In general, the registration occurs in the `index.js` file in your\n * // final application.\n * engine.registerComponent(MyComponent);\n * ```\n *\n * {@label CLASSES}\n * @param classes Custom component(s) extending {@link Component}.\n *\n * @since 1.0.0\n */\n registerComponent(...classes: ComponentConstructor[]) {\n for (const arg of classes) {\n this.wasm._registerComponent(arg);\n }\n }\n\n /**\n * Register a component bundle\n *\n * The module must be of the form:\n *\n * ```js\n * export default function(engine) {\n * engine.registerComponent(MyComponent);\n * ...\n * }\n * ```\n *\n * Alternatively, you can manually register a component bundle:\n *\n * ```js\n * const registerBundle = (await import(url)).default;\n * registerBundle(engine);\n * ```\n *\n * @param url The URL of the module to register.\n * @param nocache If `true`, force browser to re-download the file.\n */\n async registerBundle(url: string, nocache = false) {\n if (!nocache && this.#bundleCache.has(url)) return;\n this.#bundleCache.add(url);\n\n if (nocache) url += `?t=${Date.now()}`;\n const register = (await import(url)).default;\n if (typeof register !== 'function') {\n throw new Error(\n `The bundle '${url}' doesn't have a default exported registration function`\n );\n }\n register(this);\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @since 1.2.1\n */\n setLoadingProgress(percentage: number) {\n this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1));\n }\n\n /**\n * Switch the current active scene.\n *\n * Once active, the scene will be updated and rendered on the canvas.\n *\n * The currently active scene is accessed via {@link WonderlandEngine.scene}:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * start() {\n * console.log(this.scene === this.engine.scene); // Prints `true`\n * }\n * }\n * ```\n *\n * @note This method will throw if the scene isn't activatable.\n *\n * #### Component Lifecycle\n *\n * Marking a scene as active will:\n * * Call {@link Component#onDeactivate} for all active components of the previous scene\n * * Call {@link Component#onActivate} for all active components of the new scene\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * engine.switchTo(scene);\n * ```\n *\n * @returns A promise that resolves once the scene is ready.\n *\n * @since 1.2.0\n */\n async switchTo(scene: Scene, opts: ActivateOptions = {}) {\n this.wasm._wl_deactivate_activeScene();\n\n /* Switch reference on engine **just** before activating, to allow\n * component to use `this.engine.scene` in `onActivate()`/`start()`. */\n const previous = this.scene;\n this._preactivate(scene);\n\n this.wasm._wl_scene_activate(scene._index);\n\n /* Enable/disable required views */\n this.#webxr.updateViewState(undefined);\n\n /* We loaded new views, update WebXR projection parameters */\n this.#webxr.updateProjectionParams(undefined, undefined);\n\n if (!this.onLoadingScreenEnd.isDataRetained) {\n this.onLoadingScreenEnd.notify();\n }\n\n /* For now, we always automatically download dependencies for\n * the user, i.e., separate textures.bin and languages.bin.\n *\n * In the future, we can eventually expose this in the chunk API\n * to give more control to the user if needed.\n *\n * We do not make the user wait until the textures download is complete. */\n const promise = scene._downloadDependencies();\n\n await this.i18n.setLanguage(this.i18n.languageCode(0));\n\n const {dispatchReadyEvent = false, waitForDependencies = false} = opts;\n\n if (waitForDependencies) await promise;\n\n this.onSceneActivated.notify(previous, scene);\n\n if (dispatchReadyEvent) scene.dispatchReadyEvent();\n }\n\n /**\n * Load the scene from a URL, as the main scene of a new {@link Scene}.\n *\n * #### Usage\n *\n * ```js\n * // The method returns the main scene\n * const scene = await engine.loadMainScene();\n * ```\n *\n * #### Destruction\n *\n * Loading a new main scene entirely resets the state of the engine, and destroys:\n * - All loaded scenes, prefabs, and gltf files\n * - Meshes\n * - Textures\n * - Materials\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback. When setting a custom\n * callback, you need to manually call {@link setLoadingProgress} to\n * get progress updates in the loading screen.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainScene(\n options: LoadOptions & ActivateOptions,\n progress?: ProgressCallback\n ) {\n /**\n * @todo: It's currently possible to put the runtime in a limbo\n * state using hot-reload: Multiple reload requests are sent, and scene loading\n * ends up being interleaved.\n *\n * Add a system to cancel the last loading, if any.\n */\n\n progress ??= (bytes: number, size: number) => {\n this.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.setLoadingProgress(bytes / size);\n };\n\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true, nocache = false} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const {stream, url} = Prefab.validateStreamOptions(options);\n return this._loadMainScene(stream, url, nocache, options as ActivateOptions);\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadMainSceneFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadMainScene}, but loading is done\n * from an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainSceneFromBuffer(options: InMemoryLoadOptions & ActivateOptions) {\n const {nocache = false} = options;\n const {buffer, url} = Prefab.validateBufferOptions(options);\n return this._loadMainScene(buffer, url, nocache, options);\n }\n\n /**\n * Load a {@link Prefab} from a URL.\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadPrefab('Prefab.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n * @note This method is a wrapper around {@link WonderlandEngine.loadPrefabFromBuffer}.\n *\n * @param url The URL pointing to the prefab to load.\n * @param progress Optional progress callback.\n * @returns The loaded {@link Prefab}.\n */\n async loadPrefab(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadPrefabFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadPrefab}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Prefab}.\n */\n loadPrefabFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Load a scene from a URL.\n *\n * At the opposite of {@link WonderlandEngine.loadMainScene}, the scene loaded\n * will be added to the list of existing scenes, and its resources will be made\n * available for other scenes/prefabs/gltf to use.\n *\n * #### Resources Sharing\n *\n * Upon loading, the scene resources are added in the engine, and references\n * to those resources are updated.\n *\n * It's impossible for a scene loaded with this method to import pipelines.\n * Thus, the loaded scene will reference existing pipelines in the main scene,\n * based on their names.\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link Scene}.\n */\n async loadScene(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadSceneFromBuffer(options);\n }\n }\n\n /**\n * Create a glTF scene from a URL.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @note This method is a wrapper around {@link WonderlandEngine.loadGLTFFromBuffer}.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options, optionally including\n * {@link GLTFOptions}. {@link LoadOptions.streamed} is ignored as\n * streamed glTF parsing isn't supported.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n async loadGLTF(opts: LoadOptions & GLTFOptions, progress?: ProgressCallback) {\n const memOptions = await Scene.loadBuffer(opts, progress);\n const options = isString(opts) ? memOptions : {...opts, ...memOptions};\n return this.loadGLTFFromBuffer(options);\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadScene}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @throws If the scene is streamable.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Scene}.\n */\n loadSceneFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadGLTF}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @param options An object containing the buffer and extra glTF metadata.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n loadGLTFFromBuffer(options: InMemoryLoadOptions & GLTFOptions) {\n Scene.validateBufferOptions(options);\n const {buffer, extensions = false} = options;\n\n const wasm = this.wasm;\n\n if (!wasm._wl_glTF_scene_create) {\n throw new Error(\n 'Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings.'\n );\n }\n\n const ptr = wasm.copyBufferToHeap(buffer);\n\n try {\n const index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength);\n const scene = new PrefabGLTF(this, index);\n this._scenes[scene._index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n if (this.runtimeVersion.patch) {\n this._loadUncompressedImages(scene._index);\n }\n return scene;\n } finally {\n /* Catch calls to abort(), e.g. via asserts */\n wasm._free(ptr);\n }\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param typeOrClass A string representing the component typename (e.g., `'cursor-component'`),\n * or a component class (e.g., `CursorComponent`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(typeOrClass: string | ComponentConstructor) {\n return this.#wasm.isRegistered(\n isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName\n );\n }\n\n /**\n * Retrieve the registered component from its type name.\n *\n * @param typename The component {@link Component.TypeName} property\n * @returns The class if a component was registered with given name, `null` otherwise.\n */\n getComponentClass(\n typename: string\n ): ComponentConstructor | null {\n const index = this.wasm._componentTypeIndices[typename];\n if (index === undefined) return null;\n return this.wasm._componentTypes[index] as ComponentConstructor;\n }\n\n /**\n * Resize the canvas and the rendering context.\n *\n * @note The `width` and `height` parameters will be scaled by the\n * `devicePixelRatio` value. By default, the pixel ratio used is\n * [window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n *\n * @param width The width, in CSS pixels.\n * @param height The height, in CSS pixels.\n * @param devicePixelRatio The pixel ratio factor.\n */\n resize(width: number, height: number, devicePixelRatio = window.devicePixelRatio) {\n width = width * devicePixelRatio;\n height = height * devicePixelRatio;\n this.canvas.width = width;\n this.canvas.height = height;\n this.wasm._wl_application_resize(width, height);\n this.onResize.notify();\n }\n\n /**\n * Run the next frame.\n *\n * @param fixedDelta The elapsed time between this frame and the previous one.\n *\n * @note The engine automatically schedules next frames. You should only\n * use this method for testing.\n */\n nextFrame(fixedDelta: number = 0) {\n this.#wasm._wl_nextFrame(fixedDelta);\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.requestSession(mode, features, optionalFeatures);\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.offerSession(mode, features, optionalFeatures);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n * @returns The object\n *\n * @deprecated Use {@link Scene#wrap} instead.\n *\n */\n wrapObject(objectId: number): Object3D {\n return this.scene.wrap(objectId);\n }\n\n toString() {\n return 'engine';\n }\n\n /* Public Getters & Setter */\n\n /** Currently active scene. */\n get scene(): Scene {\n return this._scene;\n }\n\n /**\n * WebAssembly bridge.\n *\n * @note Use with care. This object is used to communicate\n * with the WebAssembly code throughout the api.\n *\n * @hidden\n */\n get wasm(): WASM {\n return this.#wasm;\n }\n\n /**\n * WebXR api.\n *\n * @hidden\n */\n get webxr(): WebXR {\n return this.#webxr;\n }\n\n /** Canvas element that Wonderland Engine renders to. */\n get canvas(): HTMLCanvasElement {\n return this.#wasm.canvas;\n }\n\n /**\n * Current WebXR session or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.session} on the {@link xr}\n * object instead.\n */\n get xrSession(): XRSession | null {\n return this.xr?.session ?? null;\n }\n\n /**\n * Current WebXR frame or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.frame} on the {@link xr}\n * object instead.\n */\n get xrFrame(): XRFrame | null {\n return this.xr?.frame ?? null;\n }\n\n /**\n * Current WebXR base layer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.baseLayer} on the {@link xr}\n * object instead.\n */\n get xrBaseLayer(): XRProjectionLayer | XRWebGLLayer | null {\n return this.xr?.baseLayer ?? null;\n }\n\n /**\n * Current WebXR framebuffer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.framebuffers} on the {@link xr}\n * object instead.\n */\n get xrFramebuffer(): WebGLFramebuffer | null {\n return this.xr?.framebuffers[0] ?? null;\n }\n\n /**\n * WebXR framebuffer scale factor.\n */\n get xrFramebufferScaleFactor() {\n return this.#webxr.framebufferScaleFactor;\n }\n\n set xrFramebufferScaleFactor(value: number) {\n this.#webxr.framebufferScaleFactor = value;\n }\n\n /** Physics manager, only available when physx is enabled in the runtime. */\n get physics() {\n return this.#physics;\n }\n\n /** Texture resources */\n get textures() {\n return this._textures;\n }\n\n /** Material resources */\n get materials() {\n return this._materials;\n }\n\n /** Mesh resources */\n get meshes() {\n return this._meshes;\n }\n\n /** Morph target set resources */\n get morphTargets() {\n return this._morphTargets;\n }\n\n /** Font resources */\n get fonts() {\n return this._fonts;\n }\n\n /** Particle effect resources */\n get particleEffects() {\n return this._particleEffects;\n }\n\n /** Get all uncompressed images. */\n get images(): ImageLike[] {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n result[i] = wasm._images[index];\n }\n return result;\n }\n\n /**\n * Promise that resolve once all uncompressed images are loaded.\n *\n * This is equivalent to calling {@link WonderlandEngine.images}, and wrapping each\n * `load` listener into a promise.\n */\n get imagesPromise(): Promise {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n const loading = this._uncompressedPromises[index];\n result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]);\n }\n return Promise.all(result);\n }\n\n /**\n * `true` if the texture streaming is currently idle, i.e.,\n * not attempting to upload any textures.\n *\n * @hidden\n */\n get isTextureStreamingIdle() {\n return !!this.wasm._wl_renderer_streaming_idle();\n }\n\n /**\n * `true` if reverse-Z rendering is supported and enabled.\n *\n * @hidden\n */\n get isReverseZEnabled() {\n return !!this.wasm._wl_renderer_isReverseZEnabled();\n }\n\n /*\n * Enable or disable the mechanism to automatically resize the canvas.\n *\n * Internally, the engine uses a [ResizeObserver](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * Changing the canvas css will thus automatically be tracked by the engine.\n */\n set autoResizeCanvas(flag: boolean) {\n const state = !!this.#resizeObserver;\n if (state === flag) return;\n\n if (!flag) {\n this.#resizeObserver?.unobserve(this.canvas);\n this.#resizeObserver = null;\n return;\n }\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.canvas) {\n this.resize(entry.contentRect.width, entry.contentRect.height);\n }\n }\n });\n this.#resizeObserver.observe(this.canvas);\n }\n\n /** `true` if the canvas is automatically resized by the engine. */\n get autoResizeCanvas() {\n return this.#resizeObserver !== null;\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n return this.#wasm.runtimeVersion;\n }\n\n /** Engine {@link Logger}. Use it to turn on / off logging. */\n get log(): Logger {\n return this.#wasm._log;\n }\n\n /* Internal-Only Methods */\n\n /**\n * Initialize the engine.\n *\n * @note Should be called after the WebAssembly is fully loaded.\n *\n * @hidden\n */\n _init(withRenderer: boolean): boolean {\n const success = this.#wasm._wl_application_init(withRenderer);\n if (!success) {\n throw new Error(`Failed to initializing Wonderland runtime`);\n }\n\n this.resize(this.canvas.clientWidth, this.canvas.clientHeight);\n return true;\n }\n\n /**\n * Reset the runtime state, including:\n * - Component cache\n * - Images\n * - Callbacks\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _reset() {\n this.wasm.reset();\n this._scenes.length = 0;\n this._scene = this._reload(0);\n this.#bundleCache.clear();\n return this.switchTo(this._scene);\n }\n\n /**\n * Attempt to hot reload the engine.\n *\n * @param filename URL of the file to use for the reload.\n * If `null`, forces a full page reload.\n *\n * @hidden\n */\n async _reloadRequest(filename: string | null) {\n if (filename === null) {\n reloadPage(this);\n return;\n }\n\n try {\n if (this.autoHotReload)\n await this.loadMainScene({url: filename, nocache: true});\n } catch (e) {\n console.error('Hot reload request failed to load main scene, reason:', e);\n setTimeout(() => reloadPage(this), 1000);\n return;\n }\n\n this.onHotReloadRequest.notify(filename);\n }\n\n /**\n * Add an empty scene.\n *\n * @returns The newly created scene\n *\n * @hidden\n */\n _createEmpty(): Scene {\n const wasm = this.wasm;\n const index = wasm._wl_scene_create_empty();\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n return scene;\n }\n\n /** @hidden */\n _destroyScene(instance: Prefab) {\n const wasm = this.wasm;\n wasm._wl_scene_destroy(instance._index);\n\n const index = instance._index;\n (instance._index as number) = -1;\n if (this.erasePrototypeOnDestroy) {\n Object.setPrototypeOf(instance, DestroyedPrefabInstance);\n }\n\n this._scenes[index] = null;\n }\n\n /**\n * Reload the state of the engine with a new main scene.\n *\n * @param index Scene index.\n *\n * @hidden\n */\n private _reload(index: number) {\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n\n this._textures = new TextureManager(this);\n this._materials = new MaterialManager(this);\n this._meshes = new MeshManager(this);\n this._morphTargets = new ResourceManager(this, MorphTargets);\n this._fonts = new ResourceManager(this, Font);\n this._particleEffects = new ResourceManager(this, ParticleEffect);\n this._uncompressedPromises.length = 0;\n\n return scene;\n }\n\n /**\n * Helper to load a main scene from an `ArrayBuffer` or `ReadableStream`.\n *\n * @param data Buffer or stream.\n * @param url Base URL.\n * @param nocache If `true`, force a browser reload of files to download.\n * Only affects components loading for now.\n * @param options Activation options.\n * @returns The loaded main scene.\n *\n * @hidden\n */\n private async _loadMainScene(\n data: ArrayBuffer | ReadableStream,\n url: string,\n nocache: boolean,\n options: ActivateOptions\n ) {\n if (nocache) url += `?t=${Date.now()}`;\n\n const wasm = this.#wasm;\n\n /*\n * - Deactivate currently active scene\n * - Destroy all scenes\n * - Mark all resources as destroyed\n * - Activation of main scene to prevent the runtime to be in limbo\n */\n\n wasm._wl_deactivate_activeScene();\n\n ++this._mainSceneVersion;\n\n /* Only destroy all scene once the current active one is disabled */\n for (let i = this._scenes.length - 1; i >= 0; --i) {\n const scene = this._scenes[i];\n if (scene) scene.destroy();\n }\n\n /* Mark all resources as destroyed */\n this._textures._clear();\n this._materials._clear();\n this._meshes._clear();\n this._morphTargets._clear();\n this._uncompressedPromises.length = 0;\n\n const stream =\n data instanceof ReadableStream\n ? data\n : new ReadableStream(new ArrayBufferSource(data));\n const sink = new ChunkedSceneLoadSink(this, SceneType.Main, url);\n await stream.pipeTo(new WritableStream(sink));\n\n const mainScene = this._reload(sink.sceneIndex);\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(mainScene._index);\n\n /**\n * @todo(2.0.0)\n *\n * Backward compatibility: We need to set this instance reference on the\n * engine **before** component creation occurs, since users have been accessing\n * the scene with `this.engine.scene` in `init()`.\n */\n this._preactivate(mainScene);\n\n const componentsBundle = mainScene.componentsBundle;\n if (componentsBundle) {\n /* Relative URL are resolved from the script that imports, and **not** from\n * the document. We assume that the components bundle is located alongside\n * other resources, relative to the .bin.\n *\n * @note: `componentsBundle` already contains the same baseURL as the .bin. */\n const bundleURL = new URL(componentsBundle, document.baseURI);\n const url = nocache ? bundleURL.href.split('?')[0] : bundleURL.href;\n await this.registerBundle(url, nocache);\n }\n mainScene._initialize();\n\n await this.switchTo(mainScene, options);\n\n return mainScene;\n }\n\n /**\n * Helper to load prefab and activatable scene from an `ArrayBuffer`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private _loadSceneFromBuffer(\n PrefabClass: Constructor,\n options: InMemoryLoadOptions\n ) {\n const {buffer, url} = Scene.validateBufferOptions(options);\n\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n sink.write(new Uint8Array(buffer));\n sink.close();\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Helper to load prefab and activatable scene from a `ReadableStream`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private async _loadSceneFromStream(\n PrefabClass: Constructor,\n options: StreamLoadOptions\n ) {\n const {stream, url} = Scene.validateStreamOptions(options);\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n await stream.pipeTo(new WritableStream(sink));\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Checks if the loaded scene is a prefab and throws an error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedPrefab(scene: Prefab) {\n if (this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a prefab. To load a scene, use loadScene() instead'\n );\n }\n }\n\n /**\n * Checks if the loaded scene is a scene (and not a prefab) and throws an\n * error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedScene(scene: Scene) {\n if (!this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a scene. To load a prefab, use loadPrefab() instead'\n );\n }\n }\n\n /**\n * Set the scene data on the engine, before the activation occurs.\n *\n * @hidden\n */\n private _preactivate(scene: Scene) {\n this._scene = scene;\n /* Update the current active scene in the physx manager */\n if (this.physics) (this.physics._hit._scene as Scene) = scene;\n }\n\n /**\n * Notify the runtime when images are ready to be uploaded.\n *\n * @param sceneIndex Index of the scene where the image originated\n * @hidden\n */\n private _loadUncompressedImages(sceneIndex: number) {\n const mainSceneVersion = this._mainSceneVersion;\n const wasm = this.wasm;\n\n const bitmapOptions: ImageBitmapOptions = {\n colorSpaceConversion: 'none',\n };\n\n const imageCount = wasm._wl_image_count();\n for (let i = 0; i < imageCount; ++i) {\n if (wasm._wl_image_originalScene(i) !== sceneIndex) continue;\n\n const jsImageIndex = wasm._wl_image_get_jsImage_index(i);\n\n const image = wasm._images[jsImageIndex];\n if (!image) continue;\n\n let promise: Promise = onImageReady(image);\n if (this.loadUncompressedImagesAsBitmap) {\n promise = promise.then((img) => createImageBitmap(img, bitmapOptions));\n }\n this._uncompressedPromises[jsImageIndex] = promise\n .then((img) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img));\n }\n })\n .catch((e) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n this.log.error(\n LogTag.Scene,\n 'Failed to load uncompressed image',\n e\n );\n }\n });\n }\n }\n}\n", "/**\n * Assert that the given bit index is less than 32.\n *\n * @param bit The bit to test.\n */\nfunction assert(bit: number): void {\n if (bit >= 32) {\n throw new Error(`BitSet.enable(): Value ${bit} is over 31`);\n }\n}\n\n/**\n * Stores a bit pattern to quickly test if an index is enabled / disabled.\n *\n * This class can store up to **32** different values in the range [0; 31].\n *\n * #### Usage\n *\n * ```js\n * const bitset = new BitSet();\n * bitset.enable(10); // Enable bit at index `10`.\n * console.log(bitset.enabled(10)); // Prints 'true'.\n * ```\n *\n * #### TypeScript\n *\n * The set can be typed over an enum:\n *\n * ```ts\n * enum Tag {\n * First = 0,\n * Second = 1,\n * }\n *\n * const bitset = new BitSet();\n * bitset.enable(Tag.First);\n * ```\n */\nexport class BitSet {\n /** Enabled bits. @hidden */\n private _bits: number = 0;\n\n /**\n * Enable the bit at the given index.\n *\n * @param bits A spread of all the bits to enable.\n * @returns Reference to self (for method chaining).\n */\n enable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits |= (1 << bit) >>> 0;\n }\n return this;\n }\n\n /**\n * Enable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n enableAll() {\n this._bits = ~0;\n return this;\n }\n\n /**\n * Disable the bit at the given index.\n *\n * @param bits A spread of all the bits to disable.\n * @returns Reference to self (for method chaining).\n */\n disable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits &= ~((1 << bit) >>> 0);\n }\n return this;\n }\n\n /**\n * Disable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n disableAll() {\n this._bits = 0;\n return this;\n }\n\n /**\n * Checker whether the bit is set or not.\n *\n * @param bit The bit to check.\n * @returns `true` if it's enabled, `false` otherwise.\n */\n enabled(bit: T) {\n return !!(this._bits & ((1 << bit) >>> 0));\n }\n}\n", "import {BitSet} from './bitset.js';\nimport {Emitter} from './event.js';\n\n/**\n * Logging levels supported by {@link Logger}.\n */\nexport enum LogLevel {\n Info = 0,\n Warn = 1,\n Error = 2,\n}\n\n/**\n * Logging wrapper.\n *\n * This is used to allow turning on/off:\n * - `console.log`\n * - `console.warn`\n * - `console.error`\n *\n * #### Usage\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * // Create a logger with only the \"error\" and \"warn\" levels activated\n * const logger = new Logger(LogLevel.Warn, LogLevel.Error);\n *\n * // Only the \"error\" and \"warn\" levels are activated,\n * // this message isn't logged.\n * logger.info(LogTag.Component, 'This message is shushed')\n *\n * // Prints 'Hello Error!'\n * logger.error(LogTag.Component, 'Hello Error!');\n *\n * // Prints 'Hello Warning!'\n * logger.warn(LogTag.Component, 'Hello Warning!');\n * ```\n *\n * The log levels can be changed at anytime using the {@link BitSet} api:\n *\n * ```js\n * // Enable the \"info\" level\n * logger.levels.enable(LogLevel.Info);\n * * // Disable the \"warn\" level\n * logger.levels.disable(LogLevel.Warn);\n * ```\n *\n * #### Tags\n *\n * In addition, the logger supports tagging messages:\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * const logger = new Logger(LogLevel.Info);\n *\n * logger.tags.disableAll();\n *\n * // All tags are off, this message isn't logged\n * logger.info(LogTag.Component, 'This message is shushed');\n *\n * logger.tags.enable(LogTag.Component);\n * logger.info(LogTag.Component, 'Hello World!') // Prints 'Hello World!'\n * ```\n *\n * The tagging system gives another layer of control to enable / disable\n * some specific logs.\n */\nexport class Logger {\n /**\n * Bitset of enabled levels.\n *\n * @hidden\n */\n levels: BitSet = new BitSet();\n\n /**\n * Bitset of enabled tags.\n *\n * @hidden\n */\n tags: BitSet = new BitSet().enableAll();\n\n /**\n * Notified when an `info`, `warn`, or `error` message is logged.\n *\n * @note The emitter is always notified, even if the logger levels\n * and tags are disabled.\n *\n * @note The message is passed as an array, similar to `console.log`.\n *\n * #### Usage\n *\n * ```js\n * import {LogLevel} from '@wonderlandengine/api';\n *\n * engine.logger.onLog.add((level, messages, tag) => {\n * // Only process error messages\n * if (level !== LogLevel.Error) return;\n *\n * // Only process engine logs\n * if (tag !== LogTag.Engine) return;\n *\n * const str = messages.join(' ');\n * sendAnalytics(str);\n * });\n * ```\n */\n onLog: Emitter<[LogLevel, unknown[], number]> = new Emitter();\n\n /**\n * Create a new logger instance.\n *\n * @param levels Default set of levels to enable.\n */\n constructor(...levels: LogLevel[]) {\n this.levels.enable(...levels);\n }\n\n /**\n * Log the message(s) using `console.log`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n info(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Info) && this.tags.enabled(tag)) {\n console.log(...msg);\n }\n this.onLog.notify(LogLevel.Info, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.warn`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n warn(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Warn) && this.tags.enabled(tag)) {\n console.warn(...msg);\n }\n this.onLog.notify(LogLevel.Warn, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.error`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n error(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Error) && this.tags.enabled(tag)) {\n console.error(...msg);\n }\n this.onLog.notify(LogLevel.Error, msg, tag);\n return this;\n }\n}\n", "import {Version} from './version.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ComponentProperty, Type, defaultPropertyCloner} from './property.js';\nimport {CBORReader, CBORType, getType} from './utils/cbor.js';\nimport {Logger} from './utils/logger.js';\nimport {\n inheritProperties,\n Component,\n ComponentConstructor,\n ComponentProto,\n BrokenComponent,\n AnimationComponent,\n LogTag,\n} from './wonderland.js';\nimport {ImageLike} from './types.js';\nimport {Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {ComponentPropertyDecoder, setupComponentClass} from './component.js';\n\n/**\n * Low-level wrapper to interact with the WebAssembly code.\n *\n * @hidden\n */\nexport class WASM {\n /**\n * Emscripten wasm field.\n *\n * @note This api is meant to be used internally.\n */\n readonly wasm: ArrayBuffer = null!;\n\n /**\n * Emscripten canvas.\n *\n * @note This api is meant to be used internally.\n */\n readonly canvas: HTMLCanvasElement = null!;\n\n /**\n * WebGPU device.\n *\n * @note This api is meant to be used internally.\n */\n readonly preinitializedWebGPUDevice: any = null;\n\n /**\n * Convert a WASM memory view to a JavaScript string.\n *\n * @param ptr Pointer start\n * @param ptrEnd Pointer end\n * @returns JavaScript string\n */\n UTF8ViewToString: (ptr: number, ptrEnd: number) => string;\n\n /** Logger instance. */\n readonly _log: Logger = new Logger();\n\n /** If `true`, logs will not spam the console on error. */\n _deactivate_component_on_error: boolean = false;\n\n /** Temporary memory pointer. */\n _tempMem: number = null!;\n /** Temporary memory size. */\n _tempMemSize: number = 0;\n /** Temporary float memory view. */\n _tempMemFloat: Float32Array = null!;\n /** Temporary int memory view. */\n _tempMemInt: Int32Array = null!;\n /** Temporary uint8 memory view. */\n _tempMemUint8: Uint8Array = null!;\n /** Temporary uint32 memory view. */\n _tempMemUint32: Uint32Array = null!;\n /** Temporary uint16 memory view. */\n _tempMemUint16: Uint16Array = null!;\n\n /** Loading screen .bin file data */\n _loadingScreen: ArrayBuffer | null = null;\n\n /** List of callbacks triggered when the scene is loaded. */\n readonly _sceneLoadedCallback: any[] = [];\n\n /** Image cache. */\n _images: (ImageLike | null)[] = [null];\n\n /** Component instances. */\n private _components: Component[] = null!;\n\n /** Component Type info. */\n _componentTypes: ComponentConstructor[] = [];\n\n /** Index per component type name. */\n _componentTypeIndices: Record = {};\n\n /** Wonderland engine instance. */\n private _engine: WonderlandEngine = null!;\n\n /**\n * `true` if this runtime is using physx.\n *\n * @note This api is meant to be used internally.\n */\n private _withPhysX: boolean = false;\n\n /** Decoder for UTF8 `ArrayBuffer` to JavaScript string. */\n private readonly _utf8Decoder = new TextDecoder('utf8');\n\n /**\n * Registration index of {@link BrokenComponent}.\n *\n * This is used to return dummy instances when a component\n * isn't registered.\n *\n * @hidden\n */\n private readonly _brokenComponentIndex = 0;\n\n /**\n * Create a new instance of the WebAssembly <> API bridge.\n *\n * @param threads `true` if the runtime used has threads support\n */\n constructor(threads: boolean) {\n if (threads) {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.slice(s, e));\n };\n } else {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.subarray(s, e));\n };\n }\n\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n /** We cannot use _tempMem because we are meant to be called before it's initialized */\n const tempBuf = this._malloc(4 * 2);\n const tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4);\n this._wl_runtime_version(tempBuf);\n const version = {\n major: tempVersion[0],\n minor: tempVersion[1],\n patch: tempVersion[2],\n rc: tempVersion[3],\n };\n this._free(tempBuf);\n return version;\n }\n\n /**\n * Reset the cache of the library.\n *\n * @note Should only be called when tearing down the runtime.\n */\n reset() {\n /* Called first to perform cleanup. */\n this._wl_reset();\n\n this._components = null!;\n this._images.length = 1;\n this.allocateTempMemory(1024);\n\n this._componentTypes = [];\n this._componentTypeIndices = {};\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param ctor A string representing the component typename (e.g., `'cursor-component'`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(type: string) {\n return type in this._componentTypeIndices;\n }\n\n /**\n * Register a legacy component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param typeName The name of the component.\n * @param params An object containing the parameters (properties).\n * @param object The object's prototype.\n * @returns The registration index\n */\n _registerComponentLegacy(\n typeName: string,\n params: Record,\n object: ComponentProto\n ) {\n const ctor = class CustomComponent extends Component {};\n ctor.TypeName = typeName;\n ctor.Properties = params;\n Object.assign(ctor.prototype, object);\n return this._registerComponent(ctor);\n }\n\n /**\n * Register a class component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param ctor The class to register.\n * @returns The registration index.\n */\n _registerComponent(ctor: ComponentConstructor) {\n if (!ctor.TypeName) throw new Error('no name provided for component.');\n if (!ctor.prototype._triggerInit) {\n throw new Error(\n `registerComponent(): Component ${ctor.TypeName} must extend Component`\n );\n }\n\n setupComponentClass(ctor);\n\n const typeIndex =\n ctor.TypeName in this._componentTypeIndices\n ? this._componentTypeIndices[ctor.TypeName]\n : this._componentTypes.length;\n this._componentTypes[typeIndex] = ctor;\n this._componentTypeIndices[ctor.TypeName] = typeIndex;\n\n if (ctor === BrokenComponent) return typeIndex;\n\n this._log.info(\n LogTag.Engine,\n 'Registered component',\n ctor.TypeName,\n `(class ${ctor.name})`,\n 'with index',\n typeIndex\n );\n\n if (ctor.onRegister) ctor.onRegister(this._engine);\n\n return typeIndex;\n }\n\n /**\n * Allocate the requested amount of temporary memory\n * in this WASM instance.\n *\n * @param size The number of bytes to allocate\n */\n allocateTempMemory(size: number) {\n this._log.info(LogTag.Engine, 'Allocating temp mem:', size);\n this._tempMemSize = size;\n if (this._tempMem) this._free(this._tempMem);\n this._tempMem = this._malloc(this._tempMemSize);\n this.updateTempMemory();\n }\n\n /**\n * @todo: Delete this and only keep `allocateTempMemory`\n *\n * @param size Number of bytes to allocate\n */\n requireTempMem(size: number) {\n if (this._tempMemSize >= size) return;\n /* Grow in 1kb increments */\n this.allocateTempMemory(Math.ceil(size / 1024) * 1024);\n }\n\n /**\n * Update the temporary memory views. This must be called whenever the\n * temporary memory address changes.\n *\n * @note This api is meant to be used internally.\n */\n updateTempMemory() {\n this._tempMemFloat = new Float32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemInt = new Int32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint32 = new Uint32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint16 = new Uint16Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 1\n );\n this._tempMemUint8 = new Uint8Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize\n );\n }\n\n /**\n * Returns a uint8 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU8(count: number): Uint8Array {\n this.requireTempMem(count);\n return this._tempMemUint8;\n }\n\n /**\n * Returns a uint16 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU16(count: number): Uint16Array {\n this.requireTempMem(count * 2);\n return this._tempMemUint16;\n }\n\n /**\n * Returns a uint32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferU32(count: number): Uint32Array {\n this.requireTempMem(count * 4);\n return this._tempMemUint32;\n }\n\n /**\n * Returns a int32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferI32(count: number): Int32Array {\n this.requireTempMem(count * 4);\n return this._tempMemInt;\n }\n\n /**\n * Returns a float32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferF32(count: number): Float32Array {\n this.requireTempMem(count * 4);\n return this._tempMemFloat;\n }\n\n /**\n * Copy the string into temporary WASM memory and retrieve the pointer.\n *\n * @note This method will compute the strlen and append a `\\0`.\n *\n * @note The result should be used **directly** otherwise it might get\n * overridden by any next call modifying the temporary memory.\n *\n * @param str The string to write to temporary memory\n * @param byteOffset The starting byte offset in the temporary memory at which\n * the string should be written. This is useful when using multiple temporaries.\n * @return The temporary pointer onto the WASM memory\n */\n tempUTF8(str: string, byteOffset = 0): number {\n const strLen = this.lengthBytesUTF8(str) + 1;\n this.requireTempMem(strLen + byteOffset);\n const ptr = this._tempMem + byteOffset;\n this.stringToUTF8(str, ptr, strLen);\n return ptr;\n }\n\n /**\n * Copy the buffer into the WASM heap.\n *\n * @note The returned pointer must be freed.\n *\n * @param buffer The buffer to copy into the heap.\n * @returns An allocated pointer, that must be free after use.\n */\n copyBufferToHeap(buffer: ArrayBuffer): number {\n const size = buffer.byteLength;\n const ptr = this._malloc(size);\n this.HEAPU8.set(new Uint8Array(buffer), ptr);\n return ptr;\n }\n\n /**\n * Returns `true` if the runtime supports physx or not.\n */\n get withPhysX(): boolean {\n return this._withPhysX;\n }\n\n /**\n * Set the engine instance holding this bridge.\n *\n * @note This api is meant to be used internally.\n *\n * @param engine The engine instance.\n */\n protected _setEngine(engine: WonderlandEngine): void {\n this._engine = engine;\n }\n\n /* WebAssembly to JS call bridge. */\n\n protected _wljs_reload(filenamePtr: number) {\n const filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null;\n this._engine._reloadRequest(filename);\n }\n protected _wljs_init(withPhysX: boolean) {\n this._withPhysX = withPhysX;\n\n /* Target memory for JS API functions that return arrays */\n this.allocateTempMemory(1024);\n }\n protected _wljs_scene_switch(index: number) {\n const scene = this._engine._scenes[index] as Scene | null;\n /* Scene can be null during testing with `engine.reset()` */\n this._components = scene?._jsComponents ?? null!;\n }\n protected _wljs_destroy_image(index: number) {\n const img = this._images[index];\n if (!img) return;\n\n this._images[index] = null;\n\n if ((img as HTMLImageElement).src !== undefined) {\n (img as HTMLImageElement).src = '';\n }\n if ((img as HTMLImageElement).onload !== undefined) {\n (img as HTMLImageElement).onload = null;\n }\n if ((img as HTMLImageElement).onerror !== undefined) {\n (img as HTMLImageElement).onerror = null;\n }\n }\n protected _wljs_objects_markDestroyed(\n sceneIndex: number,\n idsPtr: number,\n count: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n const start = idsPtr >>> 1;\n for (let i = 0; i < count; ++i) {\n const id = this.HEAPU16[start + i];\n scene._destroyObject(id);\n }\n }\n protected _wljs_scene_initialize(\n sceneIndex: number,\n idsPtr: number,\n idsEnd: number,\n paramDataPtr: number,\n paramDataEndPtr: number,\n offsetsPtr: number,\n offsetsEndPtr: number\n ) {\n const cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr);\n const offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2);\n const ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1);\n\n const engine = this._engine;\n const scene = engine._scenes[sceneIndex] as Scene;\n const components = scene._jsComponents;\n\n const cbor = new CBORReader(cborEncoded);\n\n let componentsCount = 0;\n {\n const typeInfo = cbor.readTypeInfo();\n if (getType(typeInfo) !== CBORType.Array) {\n this._log.error(LogTag.Engine, 'Parameters data must be an array');\n return;\n }\n componentsCount = cbor.readArrayLength(typeInfo) as number;\n }\n if (componentsCount !== ids.length) {\n this._log.error(\n LogTag.Engine,\n `Parameters set for ${componentsCount} components, but expected ${ids.length}`\n );\n return;\n }\n\n const decoder = new ComponentPropertyDecoder(scene, offsets);\n for (let i = 0; i < componentsCount; ++i) {\n const id = Component._pack(sceneIndex, ids[i]);\n const index = this._wl_get_js_component_index_for_id(id);\n const component = components[index];\n decoder.decode(cbor, component);\n }\n }\n\n protected _wljs_set_component_param_translation(\n scene: number,\n component: number,\n param: number,\n valuePtr: number,\n valueEndPtr: number\n ) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const comp = components[component];\n\n const value = this.UTF8ViewToString(valuePtr, valueEndPtr);\n const ctor = comp.constructor as ComponentConstructor;\n const paramName = ctor._propertyOrder[param];\n (comp as Record)[paramName] = value;\n }\n\n protected _wljs_get_component_type_index(namePtr: number, nameEndPtr: number) {\n const typename = this.UTF8ViewToString(namePtr, nameEndPtr);\n const index = this._componentTypeIndices[typename];\n if (index === undefined) {\n return this._brokenComponentIndex;\n }\n return index;\n }\n protected _wljs_component_create(\n sceneIndex: number,\n index: number,\n id: number,\n type: number,\n object: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n scene._components.createJs(index, id, type, object);\n }\n protected _wljs_component_init(scene: number, component: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const c = components[component];\n c._triggerInit();\n }\n protected _wljs_component_update(component: number, dt: number) {\n const c = this._components[component];\n c._triggerUpdate(dt);\n }\n protected _wljs_component_onActivate(component: number) {\n const c = this._components[component];\n c._triggerOnActivate();\n }\n protected _wljs_component_onDeactivate(component: number) {\n const c = this._components[component];\n c._triggerOnDeactivate();\n }\n protected _wljs_component_markDestroyed(\n sceneIndex: number,\n manager: number,\n componentId: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Prefab;\n scene._destroyComponent(manager, componentId);\n }\n protected _wljs_swap(scene: number, a: number, b: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const componentA = components[a];\n components[a] = components[b];\n components[b] = componentA;\n }\n protected _wljs_copy(\n srcSceneIndex: number,\n srcIndex: number,\n dstSceneIndex: number,\n dstIndex: number,\n offsetsPtr: number,\n copyInfoPtr: number\n ) {\n const srcScene = this._engine._scenes[srcSceneIndex] as Scene;\n const dstScene = this._engine._scenes[dstSceneIndex] as Scene;\n const destComp = dstScene._jsComponents[dstIndex];\n const srcComp = srcScene._jsComponents[srcIndex];\n destComp._copy(srcComp, offsetsPtr, copyInfoPtr);\n }\n /**\n * Forward an animation event to a corresponding\n * {@link AnimationComponent}\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link AnimationComponent.onEvent} instead.\n *\n * @param componentId Component id in the manager\n * @param namePtr Pointer to UTF8 event name\n * @param nameEndPtr Pointer to end of UTF8 event name\n */\n protected _wljs_trigger_animationEvent(\n componentId: number,\n namePtr: number,\n nameEndPtr: number\n ) {\n const scene = this._engine.scene;\n const comp = scene._components.wrapAnimation(componentId);\n const nameStr = this.UTF8ViewToString(namePtr, nameEndPtr);\n comp.onEvent.notify(nameStr);\n }\n}\n\n/* Extends the WASM class with the WebAssembly typings */\n\nexport interface WASM {\n HEAP8: Int8Array;\n HEAPU8: Uint8Array;\n HEAPU16: Uint16Array;\n HEAP16: Int16Array;\n HEAPU32: Uint32Array;\n HEAP32: Int32Array;\n HEAPF32: Float32Array;\n HEAPF64: Float64Array;\n\n GL: {\n framebuffers: WebGLFramebuffer[];\n };\n\n assert: (condition: boolean, msg?: string) => void;\n _free: (ptr: number) => void;\n _malloc: (size: number) => number;\n lengthBytesUTF8: (str: string) => number;\n stringToUTF8: (str: string, outPtr: number, len: number) => void;\n UTF8ToString: (ptr: number) => string;\n addFunction: (func: Function, sig: string) => number;\n removeFunction: (ptr: number) => void;\n\n _wl_runtime_version: (out: number) => void;\n _wl_set_error_callback: (cbPtr: number) => void;\n _wl_application_create: () => void;\n _wl_application_init: (withRenderer: boolean) => boolean;\n _wl_application_start: () => void;\n _wl_application_redraw: () => void;\n _wl_application_resize: (width: number, height: number) => void;\n\n _wl_nextUpdate: (delta: number) => void;\n _wl_nextFrame: (delta: number) => void;\n _wl_reset: () => void;\n _wl_reset_context: () => void;\n _wl_xr_init: (viewCount: number, useLayers: boolean) => void;\n _wl_xr_focus: () => void;\n _wl_xr_blur: () => void;\n _wl_xr_hide: () => void;\n _wl_xr_exit: () => void;\n\n _wl_deactivate_activeScene: () => void;\n\n _wl_renderer_set_mesh_layout: (layout: number) => void;\n _wl_renderer_streaming_idle: () => number;\n _wl_renderer_isReverseZEnabled: () => number;\n\n _wl_load_main_scene: (ptr: number, size: number, url: number) => number;\n _wl_get_images: (out: number, max: number) => number;\n _wl_get_material_definition_count: () => number;\n _wl_get_material_definition_index: (ptr: number) => number;\n\n _wl_scene_get_active: (root: number) => number;\n _wl_scene_create: (ptr: number, size: number, url: number) => number;\n _wl_scene_create_chunked_start: (url: number) => number;\n _wl_scene_create_chunked_buffer_size: (index: number) => number;\n _wl_scene_create_chunked_next: (\n index: number,\n ptr: number,\n size: number,\n readSizePtr: number,\n requiredSizePtr: number\n ) => boolean;\n _wl_scene_create_chunked_abort: (index: number) => void;\n _wl_scene_create_chunked_end_prefab: (index: number) => number;\n _wl_scene_create_chunked_end_main: (index: number) => void;\n _wl_scene_create_chunked_end_queued: (\n index: number,\n dependentSceneIndex: number\n ) => void;\n _wl_scene_create_empty: () => number;\n _wl_scene_initialize: (index: number) => number;\n _wl_scene_destroy: (index: number) => void;\n _wl_scene_instantiate: (src: number, dst: number) => number;\n _wl_scene_activate: (index: number) => void;\n _wl_scene_queued_bin_count: (index: number) => number;\n _wl_scene_queued_bin_path: (sceneIndex: number, index: number) => number;\n _wl_scene_clear_queued_bin_list: (sceneIndex: number) => void;\n _wl_scene_load_queued_bin: (index: number, ptr: number, size: number) => boolean;\n _wl_scene_activatable: (index: number) => boolean;\n _wl_scene_active: (index: number) => boolean;\n _wl_scene_get_baseURL: (index: number) => number;\n _wl_scene_get_filename: (index: number) => number;\n _wl_scene_get_componentsBundle: (index: number) => number;\n\n _wl_scene_get_component_manager_count: (scene: number) => number;\n _wl_scene_get_component_manager_index: (scene: number, ptr: number) => number;\n\n _wl_scene_get_mainView: (scene: number) => number;\n _wl_scene_get_leftView: (scene: number) => number;\n _wl_scene_get_rightView: (scene: number) => number;\n _wl_scene_get_components: (\n scene: number,\n typeIndex: number,\n subTypeIndex: number,\n active: boolean,\n offset: number,\n count: number,\n ptr: number\n ) => number;\n _wl_scene_get_component: (scene: number, typeIndex: number, index: number) => number;\n\n _wl_scene_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n maxDistance: number,\n outPtr: number\n ) => void;\n _wl_scene_add_object: (scene: number, parentId: number) => number;\n _wl_scene_add_objects: (\n scene: number,\n parentId: number,\n count: number,\n componentCountHint: number,\n ptr: number,\n size: number\n ) => number;\n _wl_scene_reserve_objects: (\n scene: number,\n objectCount: number,\n _tempMem: number\n ) => void;\n _wl_scene_set_sky_material: (index: number, id: number) => void;\n _wl_scene_get_sky_material: (index: number) => number;\n _wl_scene_environment_set_intensity: (index: number, intensity: number) => void;\n _wl_scene_environment_get_intensity: (index: number) => number;\n _wl_scene_environment_set_tint: (\n index: number,\n r: number,\n g: number,\n b: number\n ) => void;\n _wl_scene_environment_get_tint: (index: number, ptr: number) => void;\n _wl_scene_environment_set_coefficients: (\n index: number,\n ptr: number,\n count: number\n ) => void;\n _wl_scene_environment_get_coefficients: (index: number, ptr: number) => void;\n _wl_scene_set_clearColor: (r: number, g: number, b: number, a: number) => void;\n _wl_scene_enableColorClear: (b: boolean) => void;\n\n _wl_set_loading_screen_progress: (ratio: number) => void;\n\n _wl_glTF_scene_create: (extensions: boolean, ptr: number, ptrEnd: number) => number;\n _wl_glTF_scene_get_extensions: (index: number) => number;\n _wl_glTF_scene_extensions_gltfIndex_to_id: (\n gltfScene: number,\n destScene: number,\n objectIndex: number,\n gltfIndex: number\n ) => number;\n\n _wl_component_get_object: (manager: number, id: number) => number;\n _wl_component_setActive: (manager: number, id: number, active: boolean) => void;\n _wl_component_isActive: (manager: number, id: number) => number;\n _wl_component_remove: (manager: number, id: number) => void;\n\n _wl_collision_component_get_collider: (id: number) => number;\n _wl_collision_component_set_collider: (id: number, collider: number) => void;\n _wl_collision_component_get_extents: (id: number) => number;\n _wl_collision_component_get_group: (id: number) => number;\n _wl_collision_component_set_group: (id: number, group: number) => void;\n _wl_collision_component_query_overlaps: (\n id: number,\n outPtr: number,\n outCount: number\n ) => number;\n _wl_text_component_get_horizontal_alignment: (id: number) => number;\n _wl_text_component_set_horizontal_alignment: (id: number, alignment: number) => void;\n _wl_text_component_get_vertical_alignment: (id: number) => number;\n _wl_text_component_set_vertical_alignment: (\n id: number,\n verticalAlignment: number\n ) => void;\n _wl_text_component_get_justified: (id: number) => number;\n _wl_text_component_set_justified: (id: number, justified: boolean) => void;\n _wl_text_component_get_character_spacing: (id: number) => number;\n _wl_text_component_set_character_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_line_spacing: (id: number) => number;\n _wl_text_component_set_line_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_effect: (id: number) => number;\n _wl_text_component_get_effectOffset: (id: number, outPtr: number) => void;\n _wl_text_component_set_effect: (id: number, effect: number) => void;\n _wl_text_component_set_effectOffset: (id: number, offsetPtr: number) => void;\n _wl_text_component_get_wrapMode: (id: number) => number;\n _wl_text_component_set_wrapMode: (id: number, mode: number) => void;\n _wl_text_component_get_wrapWidth: (id: number) => number;\n _wl_text_component_set_wrapWidth: (id: number, width: number) => void;\n _wl_text_component_get_text: (id: number) => number;\n _wl_text_component_set_text: (id: number, ptr: number) => void;\n _wl_text_component_set_material: (id: number, materialId: number) => void;\n _wl_text_component_get_material: (id: number) => number;\n _wl_text_component_get_boundingBox: (\n id: number,\n textPtr: number,\n resultPtr: number\n ) => number;\n _wl_view_component_get_projectionType: (id: number) => number;\n _wl_view_component_set_projectionType: (id: number, type: number) => void;\n _wl_view_component_get_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_set_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_remapProjectionMatrix: (\n id: number,\n inverseDepth: boolean,\n depthZeroToOne: boolean\n ) => void;\n _wl_view_component_generate_projectionMatrix: (id: number) => void;\n _wl_view_component_get_near: (id: number) => number;\n _wl_view_component_set_near: (id: number, near: number) => void;\n _wl_view_component_get_far: (id: number) => number;\n _wl_view_component_set_far: (id: number, far: number) => void;\n _wl_view_component_get_fov: (id: number) => number;\n _wl_view_component_set_fov: (id: number, fov: number) => void;\n _wl_view_component_get_viewport: (id: number) => number;\n _wl_view_component_set_viewport: (\n id: number,\n x: number,\n y: number,\n width: number,\n height: number\n ) => void;\n _wl_view_component_get_extent: (id: number) => number;\n _wl_view_component_set_extent: (id: number, fov: number) => void;\n _wl_view_component_set_externalFramebuffer: (id: number, fb: number) => void;\n _wl_input_component_get_type: (id: number) => number;\n _wl_input_component_set_type: (id: number, type: number) => void;\n _wl_input_set_transformation: (sceneIndex: number, type: number, ptr: number) => void;\n _wl_light_component_get_color: (id: number) => number;\n _wl_light_component_get_type: (id: number) => number;\n _wl_light_component_set_type: (id: number, type: number) => void;\n _wl_light_component_get_intensity: (id: number) => number;\n _wl_light_component_set_intensity: (id: number, intensity: number) => void;\n _wl_light_component_get_outerAngle: (id: number) => number;\n _wl_light_component_set_outerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_innerAngle: (id: number) => number;\n _wl_light_component_set_innerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_shadows: (id: number) => number;\n _wl_light_component_set_shadows: (id: number, shadows: boolean) => void;\n _wl_light_component_get_shadowRange: (id: number) => number;\n _wl_light_component_set_shadowRange: (id: number, range: number) => void;\n _wl_light_component_get_shadowBias: (id: number) => number;\n _wl_light_component_set_shadowBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowNormalBias: (id: number) => number;\n _wl_light_component_set_shadowNormalBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowTexelSize: (id: number) => number;\n _wl_light_component_set_shadowTexelSize: (id: number, size: number) => void;\n _wl_light_component_get_cascadeCount: (id: number) => number;\n _wl_light_component_set_cascadeCount: (id: number, count: number) => void;\n _wl_animation_component_get_animation: (id: number) => number;\n _wl_animation_component_set_animation: (id: number, animId: number) => void;\n _wl_animation_component_get_playCount: (id: number) => number;\n _wl_animation_component_set_playCount: (id: number, count: number) => void;\n _wl_animation_component_get_speed: (id: number) => number;\n _wl_animation_component_set_speed: (id: number, speed: number) => void;\n _wl_animation_component_play: (id: number) => void;\n _wl_animation_component_stop: (id: number) => void;\n _wl_animation_component_pause: (id: number) => void;\n _wl_animation_component_state: (id: number) => number;\n _wl_animation_component_getGraphParamValue: (\n id: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_animation_component_setGraphParamValue: (\n id: number,\n paramIndex: number,\n valuePtr: number\n ) => void;\n _wl_animation_component_get_rootMotionMode: (id: number) => number;\n _wl_animation_component_set_rootMotionMode: (id: number, value: number) => void;\n _wl_animation_component_get_rootMotion_translation: (\n id: number,\n outPtr: number\n ) => number;\n _wl_animation_component_get_rootMotion_rotation: (id: number, outPtr: number) => number;\n _wl_animation_component_getGraphParamIndex: (id: number, paramName: number) => number;\n _wl_animation_component_get_iteration: (id: number) => number;\n _wl_animation_component_get_position: (id: number) => number;\n _wl_animation_component_get_duration: (id: number) => number;\n _wl_mesh_component_get_material: (id: number) => number;\n _wl_mesh_component_set_material: (id: number, materialId: number) => void;\n _wl_mesh_component_get_mesh: (id: number) => number;\n _wl_mesh_component_set_mesh: (id: number, meshId: number) => void;\n _wl_mesh_component_get_skin: (id: number) => number;\n _wl_mesh_component_set_skin: (id: number, skinId: number) => void;\n _wl_mesh_component_get_morph_targets: (id: number) => number;\n _wl_mesh_component_set_morph_targets: (id: number, morphTargetSetId: number) => void;\n _wl_mesh_component_get_morph_target_weight: (id: number, index: number) => number;\n _wl_mesh_component_get_morph_target_weights: (id: number, ptr: number) => number;\n _wl_mesh_component_set_morph_target_weight: (\n id: number,\n index: number,\n weight: number\n ) => void;\n _wl_mesh_component_set_morph_target_weights: (\n id: number,\n ptr: number,\n count: number\n ) => void;\n _wl_particleEffect_component_get_particleEffect: (id: number) => number;\n _wl_particleEffect_component_set_particleEffect: (\n id: number,\n particleEffectId: number\n ) => void;\n _wl_physx_component_get_static: (id: number) => number;\n _wl_physx_component_set_static: (id: number, flag: boolean) => void;\n _wl_physx_component_get_kinematic: (id: number) => number;\n _wl_physx_component_set_kinematic: (id: number, kinematic: boolean) => void;\n _wl_physx_component_get_gravity: (id: number) => number;\n _wl_physx_component_set_gravity: (id: number, gravity: boolean) => void;\n _wl_physx_component_get_simulate: (id: number) => number;\n _wl_physx_component_set_simulate: (id: number, simulation: boolean) => void;\n _wl_physx_component_get_allowSimulation: (id: number) => number;\n _wl_physx_component_set_allowSimulation: (id: number, allowSimulation: boolean) => void;\n _wl_physx_component_get_allowQuery: (id: number) => number;\n _wl_physx_component_set_allowQuery: (id: number, allowQuery: boolean) => void;\n _wl_physx_component_get_trigger: (id: number) => number;\n _wl_physx_component_set_trigger: (id: number, trigger: boolean) => void;\n _wl_physx_component_get_shape: (id: number) => number;\n _wl_physx_component_set_shape: (id: number, shape: number) => void;\n _wl_physx_component_get_shape_data: (id: number) => number;\n _wl_physx_component_set_shape_data: (id: number, shapeIndex: number) => void;\n _wl_physx_component_get_extents: (id: number) => number;\n _wl_physx_component_get_staticFriction: (id: number) => number;\n _wl_physx_component_set_staticFriction: (id: number, value: number) => void;\n _wl_physx_component_get_dynamicFriction: (id: number) => number;\n _wl_physx_component_set_dynamicFriction: (id: number, value: number) => void;\n _wl_physx_component_get_bounciness: (id: number) => number;\n _wl_physx_component_set_bounciness: (id: number, value: number) => void;\n _wl_physx_component_get_linearDamping: (id: number) => number;\n _wl_physx_component_set_linearDamping: (id: number, value: number) => void;\n _wl_physx_component_get_angularDamping: (id: number) => number;\n _wl_physx_component_set_angularDamping: (id: number, value: number) => void;\n _wl_physx_component_get_linearVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_linearVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_angularVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_angularVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_groupsMask: (id: number) => number;\n _wl_physx_component_set_groupsMask: (id: number, flags: number) => void;\n _wl_physx_component_get_blocksMask: (id: number) => number;\n _wl_physx_component_set_blocksMask: (id: number, flags: number) => void;\n _wl_physx_component_get_linearLockAxis: (id: number) => number;\n _wl_physx_component_set_linearLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_angularLockAxis: (id: number) => number;\n _wl_physx_component_set_angularLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_mass: (id: number) => number;\n _wl_physx_component_set_mass: (id: number, value: number) => void;\n _wl_physx_component_get_offsetTranslation: (id: number, out: number) => void;\n _wl_physx_component_get_offsetTransform: (id: number) => number;\n _wl_physx_component_set_offsetTranslation: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_set_offsetRotation: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_physx_component_set_sleepOnActivate: (id: number, flag: boolean) => void;\n _wl_physx_component_get_sleepOnActivate: (id: number) => number;\n _wl_physx_component_set_massSpaceInertiaTensor: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_addForce: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean\n ) => void;\n _wl_physx_component_addForceAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean,\n posX: number,\n posY: number,\n posZ: number,\n local: boolean\n ) => void;\n _wl_physx_component_addTorque: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number\n ) => void;\n _wl_physx_component_addCallback: (id: number, otherId: number) => number;\n _wl_physx_component_removeCallback: (id: number, callbackId: number) => number;\n _wl_physx_update_global_pose: (object: number, component: number) => void;\n _wl_physx_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n outPtr: number,\n maxDistance: number\n ) => void;\n _wl_physx_set_collision_callback: (callback: number) => void;\n _wl_mesh_create: (\n indicesPtr: number,\n indicesSize: number,\n indexType: number,\n vertexCount: number,\n skinningType: number\n ) => number;\n _wl_mesh_get_vertexCount: (index: number) => number;\n _wl_mesh_get_indexData: (index: number, outPtr: number, count: number) => number;\n _wl_mesh_update: (index: number) => void;\n _wl_mesh_get_boundingSphere: (index: number, outPtr: number) => void;\n _wl_mesh_get_attribute: (index: number, attribute: number, outPtr: number) => void;\n _wl_mesh_destroy: (index: number) => void;\n _wl_mesh_get_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcStride: number,\n dstFormatSize: number,\n destPtr: number,\n dstSize: number\n ) => void;\n _wl_mesh_set_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcSize: number,\n dstFormatSize: number,\n destPtr: number,\n destStride: number\n ) => void;\n _wl_font_get_emHeight: (index: number) => number;\n _wl_font_get_capHeight: (index: number) => number;\n _wl_font_get_xHeight: (index: number) => number;\n _wl_font_get_outlineSize: (index: number) => number;\n _wl_material_create: (definitionIndex: number) => number;\n _wl_material_get_definition: (index: number) => number;\n _wl_material_definition_get_param_count: (index: number) => number;\n _wl_material_definition_get_param_name: (index: number, paramIndex: number) => number;\n _wl_material_definition_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_pipeline: (index: number) => number;\n _wl_material_clone: (index: number) => number;\n _wl_material_get_param_index: (index: number, namePtr: number) => number;\n _wl_material_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_param_value: (\n index: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_material_set_param_value_uint: (\n index: number,\n paramId: number,\n valueId: number\n ) => void;\n _wl_material_set_param_value_float: (\n index: number,\n paramId: number,\n ptr: number,\n count: number\n ) => void;\n _wl_image_create: (jsImage: number) => number;\n _wl_image_size: (index: number, out: number) => number;\n _wl_image_get_jsImage_index: (index: number) => number;\n _wl_image_compressed: (index: number) => number;\n _wl_image_originalScene: (index: number) => number;\n _wl_image_markDirty: (index: number) => void;\n _wl_image_markReady: (\n index: number,\n width: number,\n height: number,\n flipY: number\n ) => void;\n _wl_image_count: () => number;\n\n _wl_texture_create: (image: number) => number;\n _wl_texture_get_image_index: (index: number) => number;\n _wl_texture_destroy: (id: number) => void;\n\n _wl_renderer_updateImage: (\n imageIndex: number,\n jsImageIndex: number,\n srcWidth: number,\n srcHeight: number,\n xOffset: number,\n yOffset: number,\n flipY: boolean\n ) => number;\n\n _wl_animation_get_duration: (id: number) => number;\n _wl_animation_get_trackCount: (id: number) => number;\n _wl_animation_retargetToSkin: (id: number, targetId: number) => number;\n _wl_animation_retarget: (id: number, ptr: number) => number;\n _wl_particleEffect_clone: (index: number) => number;\n _wl_object_id: (scene: number, index: number) => number;\n _wl_object_index: (id: number) => number;\n _wl_object_name: (id: number) => number;\n _wl_object_set_name: (id: number, ptr: number) => void;\n _wl_object_remove: (id: number) => void;\n _wl_object_markedDestroyed: (id: number) => boolean;\n _wl_object_parent: (id: number) => number;\n _wl_object_get_children_count: (id: number) => number;\n _wl_object_get_children: (id: number, outPtr: number, count: number) => number;\n _wl_object_set_parent: (id: number, parentId: number) => void;\n _wl_object_clone: (id: number, parentId: number) => number;\n _wl_object_reset_scaling: (id: number) => void;\n _wl_object_reset_translation_rotation: (id: number) => void;\n _wl_object_reset_rotation: (id: number) => void;\n _wl_object_reset_translation: (id: number) => void;\n _wl_object_translate: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_obj: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_rotate_axis_angle: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_axis_angle_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_quat: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_rotate_quat_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_scale: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_local: (id: number) => number;\n _wl_object_get_translation_local: (id: number, outPtr: number) => void;\n _wl_object_set_translation_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_get_translation_world: (id: number, outPtr: number) => void;\n _wl_object_set_translation_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_world: (id: number) => number;\n _wl_object_trans_world_to_local: (id: number) => number;\n _wl_object_scaling_local: (id: number) => number;\n _wl_object_scaling_world: (id: number) => number;\n _wl_object_set_scaling_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_set_scaling_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_scaling_world_to_local: (id: number) => number;\n _wl_object_set_rotation_local: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_set_rotation_world: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_transformVectorWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointLocal: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseLocal: (id: number, ptr: number) => number;\n _wl_object_toWorldSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_toObjectSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_lookAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n upX: number,\n upY: number,\n upZ: number\n ) => void;\n _wl_object_set_dirty: (id: number) => void;\n _wl_get_js_component_index: (id: number, outPtr: number, count: number) => number;\n _wl_get_js_component_index_for_id: (id: number) => number;\n _wl_get_component_id: (id: number, managerId: number, index: number) => number;\n _wl_object_get_components: (id: number, outPtr: number, count: number) => number;\n _wl_object_get_component_types: (id: number, outPtr: number, count: number) => void;\n _wl_object_add_js_component: (id: number, typeId: number) => number;\n _wl_object_add_component: (id: number, typeId: number) => number;\n _wl_object_is_changed: (id: number) => number;\n _wl_object_findByName: (\n obj: number,\n name: number,\n indexPtr: number,\n childPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_object_findByNameRecursive: (\n obj: number,\n name: number,\n indexPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_component_manager_name: (scene: number, id: number) => number;\n _wl_skin_get_joint_count: (id: number) => number;\n _wl_skin_joint_ids: (id: number) => number;\n _wl_skin_inverse_bind_transforms: (id: number) => number;\n _wl_skin_inverse_bind_scalings: (id: number) => number;\n _wl_morph_targets_get_target_count: (id: number) => number;\n _wl_morph_targets_get_target_name: (id: number, target: number) => number;\n _wl_morph_targets_get_target_index: (id: number, namePtr: number) => number;\n _wl_morph_target_weights_get_weight: (id: number, target: number) => number;\n _wl_morph_target_weights_set_weight: (\n id: number,\n target: number,\n weight: number\n ) => void;\n _wl_math_cubicHermite: (\n a: number,\n b: number,\n c: number,\n d: number,\n f: number,\n e: number,\n isQuat: boolean\n ) => void;\n _wl_i18n_setLanguage: (ptr: number) => void;\n _wl_i18n_currentLanguage: () => number;\n _wl_i18n_currentLanguageIndex: () => number;\n _wl_i18n_translate: (ptr: number) => number;\n _wl_i18n_languageCount: () => number;\n _wl_i18n_languageIndex: (ptr: number) => number;\n _wl_i18n_languageCode: (index: number) => number;\n _wl_i18n_languageName: (index: number) => number;\n _wl_i18n_languageFile: (index: number) => number;\n}\n\n/*\n * Api <> Runtime compatibility.\n *\n * Some features exposed in the API are only available from a specific\n * runtime version.\n *\n * Every added feature must throw by default. If the runtime loaded\n * has the specific feature, the method will be overwritten by Emscripten\n * upon loading.\n */\n\n/**\n * Throwing function used for features added in a patch version.\n *\n * #### Usage\n *\n * ```ts\n * const requireRuntime1_1_1 = throwInvalidRuntime('1.1.1');\n * WASM.prototype._wl_new_function = requireRuntime1_1_1;\n * ```\n *\n * @param version The version in which the feature was added.\n * @returns A function that will throw when called.\n */\nfunction throwInvalidRuntime(version: string) {\n return function () {\n throw new Error(\n `Feature added in version ${version}.` +\n `\\n\\t\u2192 Please use a Wonderland Engine editor version >= ${version}`\n );\n };\n}\n", "import {threads} from 'wasm-feature-detect';\nimport {WonderlandEngine} from './engine.js';\nimport {XROfferSessionOptions} from './webxr.js';\nimport {LogLevel} from './utils/logger.js';\nimport {WASM} from './wasm.js';\n\nimport {getBaseUrl} from './utils/fetch.js';\n\nexport * from './utils/index.js';\nexport * from './decorators.js';\nexport {NativeComponents} from './component.js';\nexport * from './wonderland.js';\nexport * from './engine.js';\nexport * from './webxr.js';\nexport * from './property.js';\nexport * from './prefab.js';\nexport * from './scene.js';\nexport * from './scene-gltf.js';\nexport * from './resources/resource.js';\nexport * from './resources/material-manager.js';\nexport * from './resources/mesh-manager.js';\nexport {TextureManager} from './resources/texture-manager.js';\nexport * from './types.js';\nexport * from './version.js';\nexport * from './wasm.js';\n\n/** Relative default path for the loading screen. */\nconst LOADING_SCREEN_PATH = 'WonderlandRuntime-LoadingScreen.bin';\n\nfunction loadScript(scriptURL: string): Promise {\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n const node = document.body.appendChild(s);\n s.onload = () => {\n document.body.removeChild(node);\n resolve();\n };\n s.onerror = (e) => {\n document.body.removeChild(node);\n reject(e);\n };\n s.src = scriptURL;\n });\n}\n\n/**\n * Checks for support of WebAssembly features.\n *\n * @returns An object containing booleans for supported features.\n */\nasync function detectFeatures(): Promise<{\n threadsSupported: boolean;\n}> {\n let threadsSupported = await threads();\n if (threadsSupported) {\n if (self.crossOriginIsolated) {\n console.log('WASM Threads is supported');\n } else {\n console.warn(\n 'WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.'\n );\n }\n } else {\n console.warn('WASM Threads is not supported');\n }\n\n threadsSupported = threadsSupported && self.crossOriginIsolated;\n return {\n threadsSupported,\n };\n}\n\n/**\n * Options to forward to {@link loadRuntime}\n */\nexport interface LoadRuntimeOptions {\n /**\n * @deprecated Ignored, SIMD in the runtime is always enabled as it's supported on\n * all modern browsers.\n */\n simd: boolean;\n /**\n * If `true`, forces the runtime to load the threads-compatible version.\n * If `undefined`, performs browser feature detection to check whether threads are supported or not.\n */\n threads: boolean;\n /**\n * If `true`, forces the runtime to load the webgpu-compatible version.\n */\n webgpu: boolean;\n /**\n * If `true`, forces the runtime to load a physx-compatible version.\n *\n * **Note**: If your scene uses physx, you **must** enable this option.\n */\n physx: boolean;\n /**\n * If `true`, forces the runtime to load a loader-compatible version.\n *\n * This option allows to load gltf data at runtime.\n */\n loader: boolean;\n\n /**\n * Whether to instantiate the runtime with a renderer.\n *\n * Disabling this is mostly meant for testing purposes (increased speed).\n *\n * @hidden\n */\n renderer: boolean;\n\n /**\n * Path to the loading screen. If `undefined`, defaults to 'WonderlandRuntime-LoadingScreen.bin'.\n * Beware that these are special .bin files signed by Wonderland. Customizing\n * requires an enterprise license, please reach out for more information.\n */\n loadingScreen: string;\n\n /**\n * Default framebuffer scale factor. This can later be changed using\n * {@link WonderlandEngine.xrFramebufferScaleFactor}\n */\n xrFramebufferScaleFactor: number;\n\n /**\n * Whether to advertise AR/VR session support to the browser.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * If `undefined`, no XR session is automatically offered to the browser.\n *\n * @since 1.1.5\n */\n xrOfferSession: XROfferSessionOptions;\n\n /**\n * Canvas id or element. If this is `undefined`, looks for a canvas with id 'canvas'.\n */\n canvas: string;\n\n /**\n * Logging level(s) to enable.\n *\n * By default, all levels are enabled.\n */\n logs: LogLevel[];\n}\n\n/**\n * Load the runtime using the WASM and JS files.\n *\n * @param runtime The runtime base string, e.g,: `WonderlandRuntime-loader-physx`.\n * @param options Options to modify the loading behaviour.\n *\n * @returns A promise that resolves when the engine is ready to be used.\n */\nexport async function loadRuntime(\n runtime: string,\n options: Partial = {}\n): Promise {\n const baseURL = getBaseUrl(runtime);\n\n const {threadsSupported} = await detectFeatures();\n const {\n threads = threadsSupported,\n webgpu = false,\n physx = false,\n loader = false,\n renderer = true,\n xrFramebufferScaleFactor = 1.0,\n xrOfferSession = null,\n loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH,\n canvas = 'canvas',\n logs = [LogLevel.Info, LogLevel.Warn, LogLevel.Error],\n } = options;\n\n const variant = [];\n if (loader) variant.push('loader');\n if (physx) variant.push('physx');\n if (threads) variant.push('threads');\n if (webgpu) variant.push('webgpu');\n\n const variantStr = variant.join('-');\n\n let filename = runtime;\n if (variantStr) filename = `${filename}-${variantStr}`;\n\n const download = function (\n filename: string,\n errorMessage: string\n ): Promise {\n return fetch(filename)\n .then((r) => {\n if (!r.ok) return Promise.reject(errorMessage);\n return r.arrayBuffer();\n })\n .catch((_) => Promise.reject(errorMessage));\n };\n\n const [wasmData, loadingScreenData] = await Promise.all([\n download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`),\n download(loadingScreen, 'Failed to fetch loading screen file'),\n ]);\n\n const canvasElement = document.getElementById(canvas) as HTMLCanvasElement;\n if (!canvasElement) {\n throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas}'`);\n }\n if (!(canvasElement instanceof HTMLCanvasElement)) {\n throw new Error(`loadRuntime(): HTML element '${canvas}' must be a canvas`);\n }\n\n const wasm = new WASM(threads);\n (wasm.wasm as ArrayBuffer) = wasmData;\n (wasm.canvas as HTMLCanvasElement) = canvasElement;\n wasm._log.levels.enable(...logs);\n\n if (!window._WL) {\n window._WL = {runtimes: {}};\n }\n const runtimes = window._WL.runtimes;\n\n /* Global identifier of this runtime in `window`. */\n const runtimeGlobalId = variantStr ? variantStr : 'default';\n /* Only load the runtime if not previously loaded in the page */\n if (!runtimes[runtimeGlobalId]) {\n await loadScript(`${filename}.js`);\n runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime!;\n window.instantiateWonderlandRuntime = undefined;\n }\n await runtimes[runtimeGlobalId](wasm);\n\n if (webgpu) {\n const WebGPU = (wasm as any).WebGPU;\n const adapter = await (navigator as any).gpu.requestAdapter();\n const adapterId = WebGPU.mgrAdapter.create(adapter);\n const desc = {\n requiredFeatures: ['texture-compression-bc', 'depth32float-stencil8'],\n };\n const device = await adapter.requestDevice(desc);\n const deviceId = WebGPU.mgrDevice.create(adapter);\n (wasm.preinitializedWebGPUDevice as any) = device;\n\n const context = canvasElement.getContext('webgpu')! as any;\n\n context.configure({\n device: device,\n format: (navigator as any).gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n }\n\n const engine = new WonderlandEngine(wasm, loadingScreenData, renderer);\n\n await engine.webxr.init(xrFramebufferScaleFactor, xrOfferSession);\n\n engine.autoResizeCanvas = true;\n engine.start();\n\n return engine;\n}\n", "import { Component, Type } from '@wonderlandengine/api';\n/**\n * 8thwall camera component.\n *\n * Sets up the 8thwall pipeline and retrieves tracking events to place an\n * object at the location of the tracked AR camera / mobile device.\n *\n * Use this for SLAM tracking based on 8thwall.\n *\n * Make sure to enable 8thwall in \"Project Settings\" > \"AR\". See also the\n * [AR Getting Started Guide](/getting-started/quick-start-ar)\n *\n *\n * Currently only supports world-tracking (SLAM) using BACK camera.\n *\n * - remove any occurrences of the old 8thwall-camera component in the editor\n * - Add this component to NonVrCamera\n *\n * IMPORTANT!\n * - until it get's fixed, select 'customIndexHtml' in the project settings\n * - open a generated index.html and crossorigin=\"anonymous\" attribute to the + -
    - Zumbies Mortos: 0 -
    Wonderland Engine 1.4.0 diff --git a/js/game.js b/js/game.js index 0993799..5195afa 100644 --- a/js/game.js +++ b/js/game.js @@ -48,7 +48,7 @@ export const state = { const speedMultiplier = 1 + ((this.currentWave - 1) * this.waveProperties.speedIncreasePercent / 100); const speed = this.waveProperties.baseSpeed * speedMultiplier; console.log(`Wave ${this.currentWave} speed: ${speed.toFixed(2)} (multiplier: ${speedMultiplier.toFixed(2)})`); - return speed; + return speed * ((this.zombieCount * 0.001) + 1) }, getRemainingZombies() { @@ -62,7 +62,7 @@ export const state = { const remaining = this.getRemainingZombies(); const nextWaveZombies = this.waveProperties.baseZombies + (this.currentWave) * this.waveProperties.zombiesIncrease; - const speed = this.getWaveSpeed() * (this.zombieCount + 1) * 0.1; + const speed = this.getWaveSpeed() this.updateScore( `Wave ${this.currentWave} - Remaining: ${remaining} zombies - Speed: ${speed.toFixed(1)} - Next Wave: ${nextWaveZombies} zombies` ); diff --git a/js/mouse-spawner.js b/js/mouse-spawner.js index 9922fdc..d7dbf07 100644 --- a/js/mouse-spawner.js +++ b/js/mouse-spawner.js @@ -16,7 +16,7 @@ import { state } from "./game"; import { MouseMover } from "./mouse-mover"; import { ScoreTrigger } from "./score-trigger"; /** -@brief Spawns in mice at set intervals until maxTargets is reached. +@brief Spawns waves of 6 mice per side (±X, ±Z). Após 6 spawns, escolhe um novo lado aleatório. */ const tempQuat2 = new Float32Array(8); @@ -24,29 +24,36 @@ const tempQuat2 = new Float32Array(8); export class MouseSpawner extends Component { static TypeName = "mouse-spawner"; static Properties = { - targetMesh: { type: Type.Mesh }, - targetMaterial: { type: Type.Material }, - spawnAnimation: { type: Type.Animation }, - particles: { type: Type.Object }, + targetMesh: { type: Type.Mesh }, + targetMaterial: { type: Type.Material }, + spawnAnimation: { type: Type.Animation }, + particles: { type: Type.Object }, initialSpawnInterval: { type: Type.Float, default: 2.0 }, - minSpawnInterval: { type: Type.Float, default: 0.5 }, + minSpawnInterval: { type: Type.Float, default: 0.5 }, spawnIntervalDecreaseRate: { type: Type.Float, default: 0.95 }, - bulletMesh: { type: Type.Mesh }, - bulletMaterial: { type: Type.Material }, + // Raio mínimo/ máximo para spawn + spawnRadiusMin: { type: Type.Float, default: 15.0 }, + spawnRadiusMax: { type: Type.Float, default: 30.0 }, }; + time = 0; + spawnInterval = 2.0; + targets = []; + + // Para controle de waves por lado + sides = ["+X", "-X", "+Z", "-Z"]; + currentSide = null; + sideCount = 0; + waveNumber = 1; + static onRegister(engine) { engine.registerComponent(ScoreTrigger); engine.registerComponent(HowlerAudioSource); // engine.registerComponent(MouseMover); } - time = 0; - spawnInterval = 2.0; - targets = []; - waveNumber = 1; - init() { + // Função global para despawn state.despawnTarget = function (obj) { for (let i = 0; i < this.targets.length; i++) { if (obj.objectId == this.targets[i].objectId) { @@ -61,6 +68,7 @@ export class MouseSpawner extends Component { start() { state.mouseSpawner = this; this.spawnInterval = this.initialSpawnInterval; + this.pickNewSide(); // escolhe o primeiro lado this.spawnTarget(); } @@ -72,58 +80,86 @@ export class MouseSpawner extends Component { this.time = 0; this.spawnTarget(); - // Decrease spawn interval until it hits the minimum + // Diminui o intervalo if (this.spawnInterval > this.minSpawnInterval) { this.spawnInterval *= this.spawnIntervalDecreaseRate; } - - // Increase wave number every 10 zombies - if (this.targets.length % 10 === 0) { - this.waveNumber++; - state.updateScore(`Wave ${this.waveNumber} - Zombies: ${this.targets.length}`); - } } } reset() { - for (let i = 0; i < this.targets.length; i++) { - this.targets[i].destroy(); + // Destroi todos os alvos atuais + for (let obj of this.targets) { + obj.destroy(); } this.targets = []; - this.waveNumber = 1; - this.spawnInterval = this.initialSpawnInterval; this.time = 0; + this.spawnInterval = this.initialSpawnInterval; + this.waveNumber = 1; + this.sideCount = 0; + this.pickNewSide(); this.object.resetPosition(); } + pickNewSide() { + // Escolhe um lado aleatório (pode repetir) + const idx = Math.floor(Math.random() * this.sides.length); + this.currentSide = this.sides[idx]; + this.sideCount = 0; + // Atualiza texto de wave + state.updateScore(`Wave ${this.waveNumber} – Lado ${this.currentSide}`); + } spawnTarget() { - // cria o objeto no mesmo ponto do spawner + // Se já geramos 6 no lado atual, passamos para o próximo + if (this.sideCount >= 6) { + this.waveNumber++; + this.pickNewSide(); + } + + // Cria o objeto no ponto do spawner const obj = this.engine.scene.addObject(); obj.setTransformLocal(this.object.getTransformWorld(tempQuat2)); - - // --- NOVO: calcula deslocamento aleatório no plano XZ --- - const angle = Math.random() * 2 * Math.PI; - const dist = Math.random() * 5.0; - const dx = Math.cos(angle) * dist; - const dz = Math.sin(angle) * dist; - // aplica ao objeto + + // Gera deslocamento com base no lado atual + const minR = this.spawnRadiusMin; + const maxR = this.spawnRadiusMax; + let dx = 0, dz = 0; + + switch (this.currentSide) { + case "+X": + dx = minR + Math.random() * (maxR - minR); + dz = (Math.random() * 2 - 1) * maxR; + break; + case "-X": + dx = - (minR + Math.random() * (maxR - minR)); + dz = (Math.random() * 2 - 1) * maxR; + break; + case "+Z": + dz = minR + Math.random() * (maxR - minR); + dx = (Math.random() * 2 - 1) * maxR; + break; + case "-Z": + dz = - (minR + Math.random() * (maxR - minR)); + dx = (Math.random() * 2 - 1) * maxR; + break; + } obj.translateLocal([dx, 0, dz]); - - // escala, mesh, material etc. - obj.scaleLocal([1, 1, 1]); + + // Configura mesh, material e escala + obj.scaleLocal([1,1,1]); const mesh = obj.addComponent("mesh"); mesh.mesh = this.targetMesh; mesh.material = this.targetMaterial; mesh.active = true; - - // movimento + + // Movimento obj.addComponent(MouseMover); - - // corrige rotação - obj.rotateAxisAngleDegLocal([1, 0, 0], 180); - - // animação de spawn + + // Corrige rotação + obj.rotateAxisAngleDegLocal([1,0,0], 180); + + // Animação de spawn if (this.spawnAnimation) { const anim = obj.addComponent("animation"); anim.playCount = 1; @@ -131,22 +167,24 @@ export class MouseSpawner extends Component { anim.active = true; anim.play(); } - - // gatilho de pontuação + + // Gatilho de pontuação const trigger = this.engine.scene.addObject(obj); trigger.addComponent("collision", { collider: WL.Collider.Sphere, - extents: [1.5, 1.5, 1.5], + extents: [1.5,1.5,1.5], group: 1 << 0, active: true, }); - trigger.translateLocal([0, 1, 0]); + trigger.translateLocal([0,1,0]); trigger.addComponent(ScoreTrigger, { particles: this.particles }); - + obj.setDirty(); this.targets.push(obj); + + // Incrementa contador deste lado + this.sideCount++; } - -}; +} From 4c3724c67852c93d6432664deb5afd27b7b64d43 Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 30 Jun 2025 18:29:13 -0300 Subject: [PATCH 10/10] . --- ...0_16-52-32.wlp => 2025-06-30_18-24-16.wlp} | 38 +++++++---------- MouseDefense.wlp | 39 ++++++++++++++++++ deploy/MyWonderland-bundle.js | 2 +- deploy/MyWonderland-bundle.js.map | 2 +- deploy/MyWonderland.bin | Bin 1172000 -> 1172008 bytes deploy/index.html | 7 +++- js/mouse-spawner.js | 2 +- 7 files changed, 61 insertions(+), 29 deletions(-) rename .autosave/MouseDefense/{2025-06-30_16-52-32.wlp => 2025-06-30_18-24-16.wlp} (99%) diff --git a/.autosave/MouseDefense/2025-06-30_16-52-32.wlp b/.autosave/MouseDefense/2025-06-30_18-24-16.wlp similarity index 99% rename from .autosave/MouseDefense/2025-06-30_16-52-32.wlp rename to .autosave/MouseDefense/2025-06-30_18-24-16.wlp index 0683634..15681be 100644 --- a/.autosave/MouseDefense/2025-06-30_16-52-32.wlp +++ b/.autosave/MouseDefense/2025-06-30_18-24-16.wlp @@ -1320,7 +1320,7 @@ { "type": "text", "text": { - "text": "Play Again" + "text": "Start" } } ], @@ -1648,7 +1648,7 @@ }, "components": [ { - "active": false, + "active": true, "mesh": { "material": "996", "mesh": "982" @@ -1662,27 +1662,22 @@ "spawnAnimation": "439", "particles": "482", "maxTargets": 20, - "bulletMesh": "9", - "bulletMaterial": "22" + "bulletMesh": 3, + "bulletMaterial": 3 } } ], "name": "MouseSpawner", "scaling": [ 0.2, - 0.1999808, - 0.1999818 + 0.1999804, + 0.1999814 ], "rotation": [ - 0.7071011, + 0.7071006, 0.0, 0.0, - 0.7071123 - ], - "translation": [ - -25.8049697, - 4.76837158203125e-7, - 8.5837411 + 0.7071129 ] }, "970": { @@ -2474,27 +2469,22 @@ "spawnAnimation": "439", "particles": "482", "maxTargets": 20, - "bulletMesh": "9", - "bulletMaterial": "22" + "bulletMesh": 3, + "bulletMaterial": 3 } } ], "name": "MouseSpawner", "scaling": [ 0.2, - 0.1999785, - 0.1999796 + 0.1999804, + 0.1999814 ], "rotation": [ - 0.7070986, + 0.7071006, 0.0, 0.0, - 0.7071149 - ], - "translation": [ - 23.9312839, - 9.5367431640625e-7, - 9.2442646 + 0.7071129 ] } }, diff --git a/MouseDefense.wlp b/MouseDefense.wlp index affff81..15681be 100644 --- a/MouseDefense.wlp +++ b/MouseDefense.wlp @@ -2447,6 +2447,45 @@ 0.9999816 ], "parent": "1003" + }, + "1031": { + "link": { + "name": "Mouse", + "file": "assets\\uploads_files_3861195_Mouse_GLB.glb" + }, + "components": [ + { + "active": true, + "mesh": { + "material": "996", + "mesh": "982" + } + }, + { + "type": "mouse-spawner", + "mouse-spawner": { + "targetMesh": "982", + "targetMaterial": "996", + "spawnAnimation": "439", + "particles": "482", + "maxTargets": 20, + "bulletMesh": 3, + "bulletMaterial": 3 + } + } + ], + "name": "MouseSpawner", + "scaling": [ + 0.2, + 0.1999804, + 0.1999814 + ], + "rotation": [ + 0.7071006, + 0.0, + 0.0, + 0.7071129 + ] } }, "meshes": { diff --git a/deploy/MyWonderland-bundle.js b/deploy/MyWonderland-bundle.js index b331057..237790e 100644 --- a/deploy/MyWonderland-bundle.js +++ b/deploy/MyWonderland-bundle.js @@ -13395,7 +13395,7 @@ __publicField(ScoreTrigger, "Properties", { var tempQuat24 = new Float32Array(8); var MouseSpawner = class extends Component3 { time = 0; - spawnInterval = 2; + spawnInterval = 1.2; targets = []; // Para controle de waves por lado sides = ["+X", "-X", "+Z", "-Z"]; diff --git a/deploy/MyWonderland-bundle.js.map b/deploy/MyWonderland-bundle.js.map index f18aa2b..63c6f80 100644 --- a/deploy/MyWonderland-bundle.js.map +++ b/deploy/MyWonderland-bundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/howler/dist/howler.js", "../node_modules/earcut/src/earcut.js", "../node_modules/node_modules/wasm-feature-detect/dist/esm/index.js", "../node_modules/@wonderlandengine/api/src/property.ts", "../node_modules/@wonderlandengine/api/src/decorators.ts", "../node_modules/@wonderlandengine/api/src/utils/object.ts", "../node_modules/@wonderlandengine/api/src/utils/event.ts", "../node_modules/@wonderlandengine/api/src/resources/resource.ts", "../node_modules/@wonderlandengine/api/src/utils/cbor.ts", "../node_modules/@wonderlandengine/api/src/component.ts", "../node_modules/@wonderlandengine/api/src/utils/fetch.ts", "../node_modules/@wonderlandengine/api/src/prefab.ts", "../node_modules/@wonderlandengine/api/src/utils/misc.ts", "../node_modules/@wonderlandengine/api/src/wonderland.ts", "../node_modules/@wonderlandengine/api/src/version.ts", "../node_modules/@wonderlandengine/api/src/resources/material-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/mesh-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/texture-manager.ts", "../node_modules/@wonderlandengine/api/src/webxr.ts", "../node_modules/@wonderlandengine/api/src/scene-gltf.ts", "../node_modules/@wonderlandengine/api/src/scene.ts", "../node_modules/@wonderlandengine/api/src/engine.ts", "../node_modules/@wonderlandengine/api/src/utils/bitset.ts", "../node_modules/@wonderlandengine/api/src/utils/logger.ts", "../node_modules/@wonderlandengine/api/src/wasm.ts", "../node_modules/@wonderlandengine/api/src/index.ts", "../node_modules/@wonderlandengine/components/dist/8thwall-camera.js", "../node_modules/@wonderlandengine/components/dist/utils/webxr.js", "../node_modules/@wonderlandengine/components/dist/anchor.js", "../node_modules/@wonderlandengine/components/dist/cursor-target.js", "../node_modules/gl-matrix/esm/common.js", "../node_modules/gl-matrix/esm/mat3.js", "../node_modules/gl-matrix/esm/mat4.js", "../node_modules/gl-matrix/esm/quat.js", "../node_modules/gl-matrix/esm/vec3.js", "../node_modules/gl-matrix/esm/vec4.js", "../node_modules/gl-matrix/esm/quat2.js", "../node_modules/@wonderlandengine/components/dist/hit-test-location.js", "../node_modules/@wonderlandengine/components/dist/cursor.js", "../node_modules/@wonderlandengine/components/dist/debug-object.js", "../node_modules/@wonderlandengine/components/dist/finger-cursor.js", "../node_modules/@wonderlandengine/components/dist/fixed-foveation.js", "../node_modules/@wonderlandengine/components/dist/hand-tracking.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-listener.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-source.js", "../node_modules/@wonderlandengine/components/dist/utils/utils.js", "../node_modules/@wonderlandengine/components/dist/image-texture.js", "../node_modules/@wonderlandengine/components/dist/mouse-look.js", "../node_modules/@wonderlandengine/components/dist/player-height.js", "../node_modules/@wonderlandengine/components/dist/target-framerate.js", "../node_modules/@wonderlandengine/components/dist/teleport.js", "../node_modules/@wonderlandengine/components/dist/trail.js", "../node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js", "../node_modules/@wonderlandengine/components/dist/video-texture.js", "../node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js", "../node_modules/@wonderlandengine/components/dist/plane-detection.js", "../node_modules/@wonderlandengine/components/dist/vrm.js", "../node_modules/@wonderlandengine/components/dist/wasd-controls.js", "../js/game.js", "../js/bg-music.js", "../js/bullet-physics.js", "../js/bullet-spawner.js", "../js/confetti-particles.js", "../js/hud-control.js", "../js/joystick-movement.js", "../js/mouse-look-custom.js", "../js/mouse-mover.js", "../js/score-trigger.js", "../js/mouse-spawner.js", "../js/play-again-button.js", "../js/player-location.js", "../js/score-display.js", "../js/shot-counter.js", "../js/teleport-custom.js", "../js/wasd-controls-custom.js", "../js/index.js"], - "sourcesContent": ["/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, \u221E]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspending\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "/**\n * Component property type.\n */\nexport enum Type {\n /**\n * **Native**\n *\n * Property of a native component. Must not be used in custom components.\n *\n * @hidden\n */\n Native = 0,\n\n /**\n * **Bool**:\n *\n * Appears in the editor as a checkbox.\n *\n * Initial value is `false`, unless overridden by the `default` property.\n */\n Bool = 1,\n\n /**\n * **Int**:\n *\n * Appears in the editor as an integer input field.\n *\n * Initial value is `0`, unless overridden by the `default` property.\n */\n Int = 2,\n\n /**\n * **Float**:\n *\n * Appears in the editor as a floating point input field.\n *\n * Initial value is `0.0`, unless overridden by the `default` property.\n */\n Float = 3,\n\n /**\n * **String / Text**:\n *\n * Appears in the editor as a single-line text input field.\n *\n * Initial value is an empty string, unless overridden by the `default`\n * property.\n */\n String = 4,\n\n /**\n * **Enumeration**:\n *\n * Appears in the editor as a dropdown with given values. The additional\n * `values` parameter with selection options is mandatory.\n *\n * The property value is resolved to an **index** into the `values` array.\n *\n * Initial value is the first element in `values`, unless overridden by\n * the `default` property. The `default` value can be a string or an index\n * into `values`.\n *\n * @example\n *\n * ```js\n * camera: {type: Type.Enum, values: ['auto', 'back', 'front'], default: 'auto'},\n * ```\n */\n Enum = 5,\n\n /**\n * **Object reference**:\n *\n * Appears in the editor as an object resource selection dropdown\n * with object picker.\n *\n * Initial value is `null`.\n */\n Object = 6,\n\n /**\n * **Mesh reference**:\n *\n * Appears in the editor as a mesh resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Mesh = 7,\n\n /**\n * **Texture reference**:\n *\n * Appears in the editor as a texture resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Texture = 8,\n\n /**\n * **Material reference**:\n *\n * Appears in the editor as a material resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Material = 9,\n\n /**\n * **Animation reference**:\n *\n * Appears in the editor as an animation resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Animation = 10,\n\n /**\n * **Skin reference**:\n *\n * Appears in the editor as a skin resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Skin = 11,\n\n /**\n * **Color**:\n *\n * Appears in the editor as a color widget.\n *\n * Initial value is `[0.0, 0.0, 0.0, 1.0]`, unless overridden by the\n * `default` property.\n */\n Color = 12,\n\n /**\n * **Vector of two floats**:\n *\n * Appears in the editor as a two-element floating point input field.\n *\n * Initial value is `[0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector2 = 13,\n\n /**\n * **Vector of three floats**:\n *\n * Appears in the editor as a three-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector3 = 14,\n\n /**\n * **Vector of four floats**:\n *\n * Appears in the editor as a four-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector4 = 15,\n\n /**\n * **Array of property**:\n *\n * Appears in the editor as a list of **N** elements.\n *\n * Initial value is `[]`, unless overridden by the `default` property.\n */\n Array = 16,\n\n /**\n * **Class with sub-properties**:\n *\n * Appears in the editor as a nested properties structure.\n *\n * Initial value is `{}`, unless overridden by the `default` property.\n */\n Record = 17,\n\n /**\n * **Particle effect reference**:\n *\n * Appears in the editor as a particle effect resource selection dropdown.\n *\n * Initial value is `null`.\n */\n ParticleEffect = 18,\n\n /** @hidden */\n Count = 19,\n}\n\n/**\n * Cloning interface for component properties.\n *\n * Used for component initialization and cloning.\n */\nexport interface PropertyCloner {\n /**\n * Clone a property value.\n * @param type Type of the property.\n * @param value Value of the property.\n * @returns The cloned value.\n */\n clone(type: Type, value: any): any;\n}\n\n/**\n * Interface describing a record class used in properties.\n *\n * ```ts\n * import {property, PropertyRecord} from '@wonderlandengine/api';\n * class Record implements PropertyRecord {\n * @property.string()\n * string: string;\n * @property.record(SubRecord)\n * subrecord: SubRecord;\n * }\n * ```\n *\n * @note Implementing `PropertyRecord` isn't required.\n */\nexport interface PropertyRecord {\n new (): unknown;\n /** Static properties definition, similar to {@link Component.Properties}. */\n Properties?: Record;\n /** @hidden */\n _propertyOrder?: string[];\n}\n\n/**\n * Default cloner implementation.\n *\n * Clones array-like properties and leaves all other types unchanged.\n */\nexport class DefaultPropertyCloner implements PropertyCloner {\n clone(type: Type, value: any): any {\n switch (type) {\n case Type.Color:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n case Type.Array:\n /** @todo: Array should be deep cloned. */\n return value.slice();\n case Type.Record: {\n if (!value || !value.constructor) return value;\n\n const RecordClass = value.constructor as PropertyRecord;\n const result = new RecordClass() as Record;\n for (const key in RecordClass.Properties) {\n const prop = RecordClass.Properties[key];\n result[key] = this.clone(prop.type, value[key]);\n }\n return result;\n }\n default:\n return value;\n }\n }\n}\n\n/** Default cloner for property values. */\nexport const defaultPropertyCloner = new DefaultPropertyCloner();\n\n/**\n * Custom component property.\n *\n * For more information about component properties, have a look\n * at the {@link Component.Properties} attribute.\n */\nexport interface ComponentProperty {\n /** Property type. */\n type: Type;\n /** Default value, depending on type. */\n default?: any;\n /** Values for {@link Type.Enum} */\n values?: string[];\n /** Record definition, used if the property type is {@link Type.Record}. */\n record?: PropertyRecord;\n element?: ComponentProperty;\n required?: boolean;\n /**\n * Cloner for the property.\n *\n * If not defined, falls back to {@link defaultPropertyCloner}. To prevent\n * any cloning, set a custom cloner that passes the original value back\n * from {@link PropertyCloner.clone}. */\n cloner?: PropertyCloner;\n}\n\n/**\n * Component property namespace.\n *\n * Usage:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myBool: Property.bool(true),\n * myInt: Property.int(42),\n * myString: Property.string('Hello World!'),\n * myMesh: Property.mesh()\n * }\n * }\n * ```\n *\n * It's possible to nest properties using record, and array:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Weapon {\n * static Properties = {\n * damage: Property.float(100.0),\n * fireRate: Property.int(10)\n * }\n * }\n * class Zombie {\n * static Properties = {\n * names: Property.string('Mad Zombie'),\n * animation: Property.animation()\n * }\n * }\n *\n * class Player extends Component {\n * static Properties = {\n * weapon: Property.record(Weapon),\n * zombieTargets: Property.array(Zombie),\n * }\n * }\n * ```\n *\n * For TypeScript users, you can use the decorators instead.\n */\nexport const Property = {\n /**\n * Create an boolean property.\n *\n * @param defaultValue The default value. If not provided, defaults to `false`.\n */\n bool(defaultValue: boolean = false): ComponentProperty {\n return {type: Type.Bool, default: defaultValue};\n },\n\n /**\n * Create an integer property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0`.\n */\n int(defaultValue: number = 0): ComponentProperty {\n return {type: Type.Int, default: defaultValue};\n },\n\n /**\n * Create an float property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0.0`.\n */\n float(defaultValue: number = 0.0): ComponentProperty {\n return {type: Type.Float, default: defaultValue};\n },\n\n /**\n * Create an string property.\n *\n * @param defaultValue The default value. If not provided, defaults to `''`.\n */\n string(defaultValue = ''): ComponentProperty {\n return {type: Type.String, default: defaultValue};\n },\n\n /**\n * Create an enumeration property.\n *\n * @param values The list of values.\n * @param defaultValue The default value. Can be a string or an index into\n * `values`. If not provided, defaults to the first element.\n */\n enum(values: string[], defaultValue?: string | number): ComponentProperty {\n return {type: Type.Enum, values, default: defaultValue};\n },\n\n /** Create an {@link Object3D} reference property. */\n object(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Object, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Mesh} reference property. */\n mesh(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Mesh, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Texture} reference property. */\n texture(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Texture, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Material} reference property. */\n material(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Material, default: null, required: opts?.required ?? false};\n },\n\n /** Create an {@link Animation} reference property. */\n animation(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Animation, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Skin} reference property. */\n skin(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Skin, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link ParticleEffect} reference property. */\n particleEffect(opts?: PropertyReferenceOptions): ComponentProperty {\n return {\n type: Type.ParticleEffect,\n default: null,\n required: opts?.required ?? false,\n };\n },\n\n /**\n * Create a color property.\n *\n * @param r The red component, in the range [0; 1].\n * @param g The green component, in the range [0; 1].\n * @param b The blue component, in the range [0; 1].\n * @param a The alpha component, in the range [0; 1].\n */\n color(r = 0.0, g = 0.0, b = 0.0, a = 1.0): ComponentProperty {\n return {type: Type.Color, default: [r, g, b, a]};\n },\n\n /**\n * Create a two-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n */\n vector2(x = 0.0, y = 0.0): ComponentProperty {\n return {type: Type.Vector2, default: [x, y]};\n },\n\n /**\n * Create a three-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n */\n vector3(x = 0.0, y = 0.0, z = 0.0): ComponentProperty {\n return {type: Type.Vector3, default: [x, y, z]};\n },\n\n /**\n * Create a four-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n * @param w The w component.\n */\n vector4(x = 0.0, y = 0.0, z = 0.0, w = 0.0): ComponentProperty {\n return {type: Type.Vector4, default: [x, y, z, w]};\n },\n\n /**\n * Create a class property.\n *\n * @param definition The template class, containing sub properties.\n */\n record(definition: PropertyRecord): ComponentProperty {\n return {type: Type.Record, record: definition, default: new definition()};\n },\n\n /**\n * Create an unsized array of properties.\n *\n * @note Array properties can only contain a single element type.\n *\n * @param element The element property.\n */\n array(element: ComponentProperty): ComponentProperty {\n /** @todo: Implement ArrayBuffer, which are much faster to decode */\n return {type: Type.Array, element, default: undefined};\n },\n};\n\n/**\n * Options to create a reference property, i.e.,\n * object, mesh, animation, skin, etc...\n */\nexport interface PropertyReferenceOptions {\n /** If `true`, the component will throw if the property isn't initialized. */\n required?: boolean;\n}\n\n/** All the keys that exists on the {@link Property} object. */\nexport type PropertyKeys = keyof typeof Property;\n\n/** Retrieve all the argument types of a {@link Property} function. */\nexport type PropertyArgs = Parameters<(typeof Property)[key]>;\n", "import {Component, ComponentConstructor} from './wonderland.js';\nimport {Property, PropertyArgs, PropertyKeys, ComponentProperty, Type} from './property.js';\n\n/**\n * Decorator for JS component properties.\n *\n * @param data The property description as an object literal\n * @returns A decorator function modifying the `Properties` static\n * attribute\n */\nfunction propertyDecorator(data: ComponentProperty) {\n return function (target: any, propertyKey: string): void {\n const ctor = target.constructor as ComponentConstructor;\n ctor.Properties = ctor.hasOwnProperty('Properties') ? ctor.Properties : {};\n ctor.Properties[propertyKey] = data;\n };\n}\n\n/**\n * Decorator for making a getter enumerable.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @enumerable()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function enumerable() {\n return function (_: any, __: string, descriptor: PropertyDescriptor) {\n descriptor.enumerable = true;\n };\n}\n\n/**\n * Decorator for native properties.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @nativeProperty()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function nativeProperty() {\n return function (\n target: Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n enumerable()(target, propertyKey, descriptor);\n propertyDecorator({type: Type.Native})(target, propertyKey);\n };\n}\n\n/**\n * Property decorators namespace.\n *\n * You can use the decorators to mark a class attribute as\n * a Wonderland Engine property.\n *\n * Usage:\n *\n * ```ts\n * import {Mesh} from '@wonderlandengine/api';\n * import {property} from '@wonderlandengine/api/decorators.js';\n *\n * class MyComponent extends Component {\n * @property.bool(true)\n * myBool!: boolean;\n *\n * @property.int(42)\n * myInt!: number;\n *\n * @property.string('Hello World!')\n * myString!: string;\n *\n * @property.mesh()\n * myMesh!: Mesh;\n * }\n * ```\n *\n * For JavaScript users, please declare the properties statically.\n */\nexport const property = {} as {\n [key in PropertyKeys]: (\n ...args: PropertyArgs\n ) => ReturnType;\n};\n\nfor (const name in Property) {\n /* Assign each property functor to a TypeScript decorator.\n * This code extracts parameters and return type to provide proper\n * typings to the user. */\n property[name as PropertyKeys] = (...args: PropertyArgs) => {\n const functor = Property[name as PropertyKeys] as (\n ...args: unknown[]\n ) => ComponentProperty;\n return propertyDecorator(functor(...args));\n };\n}\n", "import {ImageLike} from '../types.js';\n\n/**\n * Check if a given value is a native string or a `String` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type string literal or `String`, `false` otherwise.\n */\nexport function isString(value: any): value is string {\n if (value === '') return true;\n return value && (typeof value === 'string' || value.constructor === String);\n}\n\n/**\n * Check if a given value is a native number or a `Number` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type number literal or `Number`, `false` otherwise.\n */\nexport function isNumber(value: any): value is number {\n if (value === null || value === undefined) return false;\n return typeof value === 'number' || value.constructor === Number;\n}\n\n/**\n * Check whether a given value is a visual media.\n *\n * @param value The value to check\n * @returns `true` if the `value` is an image, video, or canvas.\n */\nexport function isImageLike(value: any): value is ImageLike {\n return (\n value instanceof HTMLImageElement ||\n value instanceof HTMLVideoElement ||\n value instanceof HTMLCanvasElement\n );\n}\n", "/**\n * Listener callback type, used in {@link Emitter.add}.\n */\nexport type ListenerCallback = (...data: T) => void;\n\n/**\n * Registration options for a listener in an {@link Emitter}.\n */\nexport interface ListenerOptions {\n /**\n * Listener identifier. This is used to find and remove the listener\n * without needing the callback reference.\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * For more information, please look at the {@link Emitter.remove} method.\n */\n id: any | undefined;\n /**\n * If `true`, the listener is automatically removed after it's invoked.\n * Defaults to `false`.\n */\n once: boolean;\n}\n\n/** Internal listener type. */\ntype Listener = ListenerOptions & {\n callback: ListenerCallback;\n};\n\n/** Internal type for transaction. */\nenum TransactionType {\n Addition = 1,\n Removal = 2,\n}\n\n/**\n * Event emitter.\n *\n * This class allows to register listeners that will get notified by the emitter.\n *\n * Usage example:\n *\n * ```js\n * // `onPreRender` is an `Emitter` instance.\n * scene.onPreRender.add(() => console.log('before rendering'));\n * // `onPostRender` is an `Emitter` instance.\n * scene.onPostRender.add(() => console.log('after rendering'));\n * ```\n *\n * You can create your own emitters:\n *\n * ```js\n * import {Emitter} from '@wonderlandengine/api';\n *\n * const emitter = new Emitter();\n * ```\n *\n * You can notify listeners in to your emitter using {@link Emitter.notify}:\n *\n * ```js\n * // Notifies all the listeners.\n * emitter.notify();\n * // Notifies all the listeners with some data.\n * emitter.notify({ myInt: 42, myStr: 'Hello World!' });\n * ```\n *\n * @category event\n */\nexport class Emitter {\n /**\n * List of listeners to trigger when `notify` is called.\n *\n * @hidden\n */\n protected readonly _listeners: Listener[] = [];\n\n /**\n * `true` if the emitter is currently notifying listeners. This\n * is used to defer addition and removal.\n *\n * @hidden\n */\n private _notifying = false;\n\n /**\n * Pending additions / removals, performed during a notification.\n *\n * @hidden\n */\n private readonly _transactions: {\n type: TransactionType;\n data: Listener | ListenerCallback;\n }[] = [];\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Basic usage:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * });\n * ```\n *\n * Automatically remove the listener when an event is received:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * }, {once: true});\n * ```\n *\n * @param listener The callback to register.\n * @param opts The listener options. For more information, please have a look\n * at the {@link ListenerOptions} interface.\n *\n * @returns Reference to self (for method chaining)\n */\n add(listener: ListenerCallback, opts: Partial = {}): this {\n const {once = false, id = undefined} = opts;\n const data = {id, once, callback: listener};\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Addition, data});\n return this;\n }\n this._listeners.push(data);\n return this;\n }\n\n /**\n * Equivalent to {@link Emitter.add}.\n *\n * @param listeners The callback(s) to register.\n * @returns Reference to self (for method chaining).\n *\n * @deprecated Please use {@link Emitter.add} instead.\n */\n push(...listeners: ListenerCallback[]): this {\n for (const cb of listeners) this.add(cb);\n return this;\n }\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Once notified, the listener will be automatically removed.\n *\n * The method is equivalent to calling {@link Emitter.add} with:\n *\n * ```js\n * emitter.add(listener, {once: true});\n * ```\n *\n * @param listener The callback to register.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback) {\n return this.add(listener, {once: true});\n }\n\n /**\n * Remove a registered listener.\n *\n * Usage with a callback:\n *\n * ```js\n * const listener = (data) => console.log(data);\n * emitter.add(listener);\n *\n * // Remove using the callback reference:\n * emitter.remove(listener);\n * ```\n *\n * Usage with an id:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'my-callback'});\n *\n * // Remove using the id:\n * emitter.remove('my-callback');\n * ```\n *\n * Using identifiers, you will need to ensure your value is unique to avoid\n * removing listeners from other libraries, e.g.,:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'non-unique'});\n * // This second listener could be added by a third-party library.\n * emitter.add((data) => console.log('Hello From Library!'), {id: 'non-unique'});\n *\n * // Ho Snap! This also removed the library listener!\n * emitter.remove('non-unique');\n * ```\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * Example:\n *\n * ```js\n * emitter.add(() => console.log('Hello'), {id: {value: 42}});\n * emitter.add(() => console.log('World!'), {id: {value: 42}});\n * emitter.remove({value: 42}); // None of the above listeners match!\n * emitter.notify(); // Prints 'Hello' and 'World!'.\n * ```\n *\n * Here, both emitters have id `{value: 42}`, but the comparison is made by reference. Thus,\n * the `remove()` call has no effect. We can make it work by doing:\n *\n * ```js\n * const id = {value: 42};\n * emitter.add(() => console.log('Hello'), {id});\n * emitter.add(() => console.log('World!'), {id});\n * emitter.remove(id); // Same reference, it works!\n * emitter.notify(); // Doesn't print.\n * ```\n *\n * @param listener The registered callback or a value representing the `id`.\n *\n * @returns Reference to self (for method chaining)\n */\n remove(listener: ListenerCallback | any): this {\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Removal, data: listener});\n return this;\n }\n\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) {\n listeners.splice(i--, 1);\n }\n }\n return this;\n }\n\n /**\n * Check whether the listener is registered.\n *\n * @note This method performs a linear search.\n *\n * * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n *\n * @param listener The registered callback or a value representing the `id`.\n * @returns `true` if the handle is found, `false` otherwise.\n */\n has(listener: ListenerCallback | any): boolean {\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) return true;\n }\n return false;\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note This method ensures all listeners are called even if\n * an exception is thrown. For (possibly) faster notification,\n * please use {@link Emitter.notifyUnsafe}.\n *\n * @param data The data to pass to listener when invoked.\n */\n notify(...data: T): void {\n const listeners = this._listeners;\n\n this._notifying = true;\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n try {\n listener.callback(...data);\n } catch (e) {\n console.error(e);\n }\n }\n this._notifying = false;\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note Because this method doesn't catch exceptions, some listeners\n * will be skipped on a throw. Please use {@link Emitter.notify} for safe\n * notification.\n *\n * @param data The data to pass to listener when invoked.\n */\n notifyUnsafe(...data: T): void {\n const listeners = this._listeners;\n\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n listener.callback(...data);\n }\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Return a promise that will resolve on the next event.\n *\n * @note The promise might never resolve if no event is sent.\n *\n * @returns A promise that resolves with the data passed to\n * {@link Emitter.notify}.\n */\n promise(): Promise {\n return new Promise((res, _) => {\n this.once((...args) => {\n if (args.length > 1) {\n res(args);\n } else {\n res(args[0] as T);\n }\n });\n });\n }\n\n /**\n * Number of listeners.\n *\n * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n */\n get listenerCount() {\n return this._listeners.length;\n }\n\n /** `true` if it has no listeners, `false` otherwise. */\n get isEmpty() {\n return this.listenerCount === 0;\n }\n\n /**\n * Flush all pending transactions.\n *\n * @hidden\n */\n private _flushTransactions() {\n const listeners = this._listeners;\n for (const transaction of this._transactions) {\n if (transaction.type === TransactionType.Addition) {\n listeners.push(transaction.data as Listener);\n } else {\n this.remove(transaction.data as ListenerCallback);\n }\n }\n this._transactions.length = 0;\n }\n}\n\n/**\n * Registration options for a listener in an {@link RetainEmitter}.\n *\n * Those options extend {@link ListenerOptions}.\n */\nexport interface RetainListenerOptions extends ListenerOptions {\n /**\n * If `true`, directly resolves if the emitter retains a value. If `false`,\n * the listener isn't invoked until the next {@link Emitter.notify}.\n *\n * Defaults to `true`.\n */\n immediate: boolean;\n}\n\n/* Dummy value used with RetainEmitter. */\nconst RetainEmitterUndefined: Record = {};\n\n/**\n * Event emitter that retains event data when notified.\n *\n * After a notification happens, subsequent calls to {@link RetainEmitter.add} will get\n * automatically notified.\n *\n * You can use another emitter in order to cancel the last retained event:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n *\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n * ```\n *\n * You can reset the state of the emitter, i.e., making it forget about the\n * last event using:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n *\n * // Reset the state of the emitter.\n * onStart.reset();\n * onStart.add((data) => console.log(data)) // Doesn't print anything.\n * ```\n *\n * For more information about emitters, please have a look at the base {@link Emitter} class.\n *\n * @category event\n */\nexport class RetainEmitter extends Emitter {\n /** Pre-resolved data. @hidden */\n protected _event: T | typeof RetainEmitterUndefined = RetainEmitterUndefined;\n\n /**\n * Emitter target used to reset the state of this emitter.\n *\n * @hidden\n */\n protected readonly _reset: Emitter | undefined;\n\n /** @override */\n add(listener: ListenerCallback, opts?: Partial): this {\n const immediate = opts?.immediate ?? true;\n if (this._event !== RetainEmitterUndefined && immediate) {\n listener(...(this._event as T));\n }\n super.add(listener, opts);\n return this;\n }\n\n /**\n * @override\n *\n * @param listener The callback to register.\n * @param immediate If `true`, directly resolves if the emitter retains a value.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback, immediate?: boolean) {\n return this.add(listener, {once: true, immediate});\n }\n\n /** @override */\n notify(...data: T): void {\n this._event = data;\n super.notify(...data);\n }\n\n /** @override */\n notifyUnsafe(...data: T): void {\n this._event = data;\n super.notifyUnsafe(...data);\n }\n\n /**\n * Reset the state of the emitter.\n *\n * Further call to {@link Emitter.add} will not automatically resolve,\n * until a new call to {@link Emitter.notify} is performed.\n *\n * @returns Reference to self (for method chaining)\n */\n reset(): this {\n this._event = RetainEmitterUndefined;\n return this;\n }\n\n /** Returns the retained data, or `undefined` if no data was retained. */\n get data(): T | undefined {\n return this.isDataRetained ? this._event : undefined;\n }\n\n /** `true` if data is retained from the last event, `false` otherwise. */\n get isDataRetained(): boolean {\n return this._event !== RetainEmitterUndefined;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Prefab} from '../prefab.js';\nimport {Scene} from '../scene.js';\nimport {FirstConstructorParam} from '../types.js';\n\n/** Interface for a resource class */\ntype ResourceConstructor = {\n new (host: FirstConstructorParam, index: number): T;\n};\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nfunction createDestroyedProxy(\n host: FirstConstructorParam,\n type: ResourceConstructor\n) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(\n `Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n set(_, param: string) {\n throw new Error(\n `Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n }\n );\n}\n\n/**\n * Base class for engine resources, such as:\n * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n *\n * @since 1.2.0\n */\nexport abstract class Resource {\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n private readonly _engine: WonderlandEngine;\n\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n this._id = index;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._index === other._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._index <= 0;\n }\n}\n\n/**\n * Base class for scene resources, such as:\n * * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n * - {@link Skin}\n * - {@link Animation}\n *\n * @since 1.2.0\n */\nexport abstract class SceneResource {\n /** @hidden */\n static _pack(scene: number, index: number) {\n return (scene << 22) | index;\n }\n\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n protected readonly _scene: Prefab;\n\n constructor(scene: Prefab, index: number) {\n this._scene = scene;\n this._index = index;\n this._id = SceneResource._pack(scene._index, index);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._id === other._id;\n }\n\n /** Hosting instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._id <= 0;\n }\n}\n\n/**\n * Manager for resources.\n *\n * Resources are accessed via the engine they belong to.\n *\n * @see {@link WonderlandEngine.textures}, {@link WonderlandEngine.meshes},\n * and {@link WonderlandEngine.materials}.\n *\n * @since 1.2.0\n */\nexport class ResourceManager {\n /** @hidden */\n protected readonly _host: FirstConstructorParam;\n /** Cache. @hidden */\n protected readonly _cache: (T | null)[] = [];\n\n /** Resource class. @hidden */\n private readonly _template: ResourceConstructor;\n\n /** Destructor proxy, used if {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`. @hidden */\n private _destructor: {} | null = null;\n\n private readonly _engine: WonderlandEngine;\n\n /**\n * Create a new manager\n *\n * @param host The host containing the managed resources.\n * @param Class The class to instantiate when wrapping an index.\n *\n * @hidden\n */\n constructor(host: FirstConstructorParam, Class: ResourceConstructor) {\n this._host = host;\n this._template = Class;\n this._engine = (host as Prefab).engine ?? host;\n }\n\n /**\n * Wrap the index into a resource instance.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index (if any).\n *\n * @param index The resource index.\n * @returns\n */\n wrap(index: number) {\n if (index <= 0) return null;\n const texture =\n this._cache[index] ??\n (this._cache[index] = new this._template(this._host, index));\n return texture;\n }\n\n /**\n * Retrieve the resource at the given index.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index.\n */\n get(index: number): T | null {\n return this._cache[index] ?? null;\n }\n\n /** Number of textures allocated in the manager. */\n get allocatedCount() {\n return this._cache.length;\n }\n\n /**\n * Number of textures in the manager.\n *\n * @note For performance reasons, avoid calling this method when possible.\n */\n get count() {\n let count = 0;\n for (const res of this._cache) {\n if (res && res.index >= 0) ++count;\n }\n return count;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Destroy the instance.\n *\n * @note This method takes care of the prototype destruction.\n *\n * @hidden\n */\n _destroy(instance: T) {\n const index = instance.index;\n (instance._index as number) = -1;\n (instance._id as number) = -1;\n this._cache[index] = null;\n\n if (!this.engine.erasePrototypeOnDestroy) return;\n\n if (!this._destructor)\n this._destructor = createDestroyedProxy(this._host, this._template);\n Object.setPrototypeOf(instance, this._destructor);\n }\n\n /**\n * Mark all instances as destroyed.\n *\n * @hidden\n */\n _clear() {\n if (!this.engine.erasePrototypeOnDestroy) return;\n for (let i = 0; i < this._cache.length; ++i) {\n const instance = this._cache[i];\n if (instance) this._destroy(instance);\n }\n this._cache.length = 0;\n }\n}\n", "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2016 Patrick Gansterer \n * Copyright (c) 2020-2023 Aaron Huggins \n * Copyright (c) 2024 Wonderland GmbH \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst kCborTagBignum = 2;\nconst kCborTagNegativeBignum = 3;\n/* RFC 8746 Tag values for typed little-endian arrays */\nconst kCborTagUint8 = 64;\nconst kCborTagUint16 = 69;\nconst kCborTagUint32 = 70;\nconst kCborTagUint64 = 71;\nconst kCborTagInt8 = 72;\nconst kCborTagInt16 = 77;\nconst kCborTagInt32 = 78;\nconst kCborTagInt64 = 79;\nconst kCborTagFloat32 = 85;\nconst kCborTagFloat64 = 86;\n\n/**\n * Whether key/value dictionaries should be decoded as objects or as\n * `Map`. The latter is useful if non-string keys or iterating in\n * insertion order are required.\n */\nexport type DictionaryOption = 'object' | 'map';\n\n/** Options for the decoder. */\nexport interface Options {\n /** The dictionary type to use. Defaults to `object`. */\n dictionary?: DictionaryOption;\n}\n\n/** A function to modify tagged values which are encountered during decoding. */\nexport type Tagger = (tag: number | bigint, value: any) => any;\n\n/**\n * Converts a Concise Binary Object Representation (CBOR) buffer into an object.\n *\n * ```js\n * const buffer = new Uint8Array([0xa2, 0x01, 0x02, 0x03, 0x04]).buffer;\n * const decoded = decode(buffer);\n * console.log(decoded); // { \"1\": 2, \"3\": 4 }\n * ```\n *\n * CBOR values can be wrapped in a numeric tag. To handle and possibly\n * transform tagged values, pass a tagger function:\n *\n * ```js\n * const buffer = new Uint8Array([\n * 0xa1, 0x63, 0x75, 0x72, 0x6c, 0xd8, 0x20, 0x70,\n * 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,\n * 0x69, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f\n * ]);\n * const decoded = decode(buffer, (tag, value) => {\n * if (tag === 32) return new URL(value);\n * return value;\n * });\n * console.log(decoded); // { url: URL { href: \"http://site.com/\" } }\n * ```\n *\n * Decoded basic types generally match the equivalent JavaScript types. Byte\n * strings are decoded to Uint8Array.\n *\n * Tagged values are left as-is, with the following exceptions:\n * - Bignum values (byte strings with tag 2 or 3) are decoded to BigInt\n * - Little-endian versions of typed arrays as defined in RFC 8746 are decoded\n * to JavaScript typed arrays\n *\n * @param data A valid CBOR buffer.\n * @param tagger Optional callback for transformation of tagged values.\n * @param options Options for decoding behavior.\n * @returns The CBOR buffer converted to a JavaScript value.\n */\nexport function decode(\n data: Uint8Array,\n tagger: Tagger = (_, value) => value,\n options: Options = {}\n): T {\n const reader = new CBORReader(data);\n reader.tagger = tagger;\n if (options.dictionary) {\n reader.dictionary = options.dictionary;\n }\n\n const ret = reader.decodeItem();\n if (reader.offset !== data.byteLength) {\n throw new Error('CBORError: Remaining bytes');\n }\n return ret;\n}\n\nexport enum CBORType {\n Array = 0,\n Record = 1,\n Constant = 2,\n Native = 3,\n}\n\n/**\n * Check whether the type is an array, a record,\n * or a native type (decodable without recursion).\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The type category.\n */\nexport function getType(typeInfo: number): CBORType {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n switch (majorType) {\n case 4:\n return CBORType.Array;\n case 5:\n return CBORType.Record;\n case 7:\n return CBORType.Constant;\n }\n return CBORType.Native;\n}\n\nexport function isUndefined(type: CBORType, length: number) {\n return type === CBORType.Constant && length === 23;\n}\n\n/**\n * CBOR reader.\n */\nexport class CBORReader {\n dataView: DataView;\n data: Uint8Array;\n offset: number;\n tagger: Tagger = (_, value) => value;\n dictionary: 'object' | 'map' = 'object';\n\n constructor(data: Uint8Array) {\n this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.data = data;\n this.offset = 0;\n }\n\n /* Wonderland extra methods. */\n\n /**\n * Read type information and move the cursor.\n *\n * @note Must be called before reading the value.\n */\n readTypeInfo() {\n return this.readUint8();\n }\n\n /**\n * Read the array length.\n *\n * @note Must not be called if the type is a constant.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The array length.\n */\n readArrayLength(typeInfo: number) {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n const length = this.readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n return length;\n }\n\n /* CBOR original decoding methods. */\n\n /**\n * Recursively read the item.\n *\n * @note This method will recursively allocate arrays and records\n * based the item type.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The decoded value.\n */\n readItem(typeInfo: number, inputLen: number | null = null): any {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n let i;\n\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return this.readFloat16();\n case 26:\n return this.readFloat32();\n case 27:\n return this.readFloat64();\n }\n }\n\n let length = inputLen === null ? this.readLength(additionalInformation) : inputLen;\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n\n switch (majorType) {\n case 0:\n return length;\n case 1:\n if (typeof length === 'number') {\n return -1 - length;\n }\n return -1n - length;\n case 2: {\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n fullArrayLength += length;\n elements.push(this.readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return this.readArrayBuffer(length as number).slice();\n }\n case 3: {\n /* Can't use TextDecoder.decode() because not all browsers\n * support calling it with an underlying SharedArrayBuffer yet.\n * See https://github.com/whatwg/encoding/issues/172 */\n /** @todo Re-evaluate browser support */\n const utf16data: number[] = [];\n if (length < 0) {\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n this.appendUtf16Data(utf16data, length);\n }\n } else {\n this.appendUtf16Data(utf16data, length as number);\n }\n let string = '';\n const DECODE_CHUNK_SIZE = 8192;\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n string += String.fromCharCode.apply(\n null,\n utf16data.slice(i, i + DECODE_CHUNK_SIZE)\n );\n }\n return string;\n }\n case 4: {\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!this.readBreak()) {\n retArray.push(this.decodeItem());\n }\n } else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = this.decodeItem();\n }\n }\n return retArray;\n }\n case 5: {\n if (this.dictionary === 'map') {\n const retMap = new Map();\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (retMap.has(key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retMap.set(key, this.decodeItem());\n }\n return retMap;\n }\n const retObject: any = {};\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (Object.prototype.hasOwnProperty.call(retObject, key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retObject[key] = this.decodeItem();\n }\n return retObject;\n }\n case 6: {\n const value = this.decodeItem();\n const tag = length;\n if (value instanceof Uint8Array) {\n switch (tag) {\n case kCborTagBignum:\n case kCborTagNegativeBignum:\n let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n);\n if (tag == kCborTagNegativeBignum) {\n num = -1n - num;\n }\n return num;\n /* Little-endian typed arrays (RFC 8746) */\n case kCborTagUint8:\n return value;\n case kCborTagInt8:\n return new Int8Array(value.buffer);\n case kCborTagUint16:\n return new Uint16Array(value.buffer);\n case kCborTagInt16:\n return new Int16Array(value.buffer);\n case kCborTagUint32:\n return new Uint32Array(value.buffer);\n case kCborTagInt32:\n return new Int32Array(value.buffer);\n case kCborTagUint64:\n return new BigUint64Array(value.buffer);\n case kCborTagInt64:\n return new BigInt64Array(value.buffer);\n case kCborTagFloat32:\n return new Float32Array(value.buffer);\n case kCborTagFloat64:\n return new Float64Array(value.buffer);\n }\n }\n return this.tagger(tag, value);\n }\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return length as number;\n }\n }\n }\n\n decodeItem(): any {\n const initialByte = this.readUint8();\n return this.readItem(initialByte);\n }\n\n readArrayBuffer(length: number) {\n return this.commitRead(\n length,\n this.data.subarray(this.offset, this.offset + length)\n );\n }\n readFloat16() {\n const POW_2_24 = 5.960464477539063e-8;\n\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = this.readUint16();\n\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n\n if (exponent === 0x7c00) exponent = 0xff << 10;\n else if (exponent !== 0) exponent += (127 - 15) << 10;\n else if (fraction !== 0) return (sign ? -1 : 1) * fraction * POW_2_24;\n\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n readFloat32(): number {\n return this.commitRead(4, this.dataView.getFloat32(this.offset));\n }\n readFloat64(): number {\n return this.commitRead(8, this.dataView.getFloat64(this.offset));\n }\n readUint8(): number {\n return this.commitRead(1, this.data[this.offset]);\n }\n readUint16(): number {\n return this.commitRead(2, this.dataView.getUint16(this.offset));\n }\n readUint32(): number {\n return this.commitRead(4, this.dataView.getUint32(this.offset));\n }\n readUint64(): bigint {\n return this.commitRead(8, this.dataView.getBigUint64(this.offset));\n }\n readBreak(): boolean {\n if (this.data[this.offset] !== 0xff) return false;\n this.offset += 1;\n return true;\n }\n readLength(additionalInformation: number): number | bigint {\n if (additionalInformation < 24) return additionalInformation;\n if (additionalInformation === 24) return this.readUint8();\n if (additionalInformation === 25) return this.readUint16();\n if (additionalInformation === 26) return this.readUint32();\n if (additionalInformation === 27) {\n const integer = this.readUint64();\n if (integer <= Number.MAX_SAFE_INTEGER) return Number(integer);\n return integer;\n }\n if (additionalInformation === 31) return -1;\n throw new Error('CBORError: Invalid length encoding');\n }\n\n readIndefiniteStringLength(majorType: number): number {\n const initialByte = this.readUint8();\n if (initialByte === 0xff) return -1;\n const length = this.readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error('CBORError: Invalid indefinite length element');\n }\n return Number(length);\n }\n appendUtf16Data(utf16data: number[], length: number) {\n for (let i = 0; i < length; ++i) {\n let value = this.readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (this.readUint8() & 0x3f);\n length -= 1;\n } else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 2;\n } else {\n value =\n ((value & 0x07) << 18) |\n ((this.readUint8() & 0x3f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 3;\n }\n }\n\n if (value < 0x10000) {\n utf16data.push(value);\n } else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n\n private commitRead(length: number, value: T): T {\n this.offset += length;\n return value;\n }\n}\n", "import {Prefab} from './prefab.js';\nimport {\n defaultPropertyCloner,\n ComponentProperty,\n Type,\n PropertyRecord,\n} from './property.js';\nimport {\n AnimationComponent,\n BrokenComponent,\n CollisionComponent,\n Component,\n ComponentConstructor,\n DestroyedComponentInstance,\n InputComponent,\n LightComponent,\n MeshComponent,\n Object3D,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n LogTag,\n inheritProperties,\n} from './wonderland.js';\n\nimport {CBORReader, CBORType, getType, isUndefined} from './utils/cbor.js';\n\n/** Native components list */\nexport interface NativeComponents {\n 'collision': CollisionComponent;\n 'text': TextComponent;\n 'view': ViewComponent;\n 'mesh': MeshComponent;\n 'input': InputComponent;\n 'light': LightComponent;\n 'animation': AnimationComponent;\n 'physx': PhysXComponent;\n 'particle-effect': ParticleEffectComponent;\n}\n\n/**\n * Manage all component managers in a scene.\n *\n * @hidden\n */\nexport class ComponentManagers {\n /** Animation manager index. */\n readonly animation: number = -1;\n /** Collision manager index. */\n readonly collision: number = -1;\n /** JavaScript manager index. */\n readonly js: number = -1;\n /** Physx manager index. */\n readonly physx: number = -1;\n /** View manager index. */\n readonly view: number = -1;\n\n /**\n * Component class instances per type to avoid GC.\n *\n * @note Maps the manager index to the list of components.\n *\n * @todo: Refactor ResourceManager and re-use for components.\n */\n private readonly _cache: (Component | null)[][] = [];\n /** Manager index to component class. */\n private readonly _constructors: ComponentConstructor[];\n /* Manager name to the manager index. */\n private readonly _nativeManagers: Map = new Map();\n\n /** Host instance. */\n private readonly _scene: Prefab;\n\n constructor(scene: Prefab) {\n this._scene = scene;\n const wasm = this._scene.engine.wasm;\n\n const native = [\n AnimationComponent,\n CollisionComponent,\n InputComponent,\n LightComponent,\n MeshComponent,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n ];\n this._cache = new Array(native.length);\n this._constructors = new Array(native.length);\n\n for (const Class of native) {\n const ptr = wasm.tempUTF8(Class.TypeName);\n const manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._constructors[manager] = Class;\n this._cache[manager] = [] as Component[];\n this._nativeManagers.set(Class.TypeName, manager);\n }\n\n this.animation = this._nativeManagers.get(AnimationComponent.TypeName)!;\n this.collision = this._nativeManagers.get(CollisionComponent.TypeName)!;\n this.physx = this._nativeManagers.get(PhysXComponent.TypeName)!;\n this.view = this._nativeManagers.get(ViewComponent.TypeName)!;\n\n const ptr = wasm.tempUTF8('js');\n this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._cache[this.js] = [] as Component[];\n }\n\n createJs(index: number, id: number, type: number, object: number) {\n const wasm = this._scene.engine.wasm;\n const ctor = wasm._componentTypes[type];\n if (!ctor) {\n throw new Error(`Type index ${type} isn't registered`);\n }\n\n const log = this._scene.engine.log;\n\n let component = null;\n try {\n component = new ctor(this._scene, this.js, id);\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during instantiation of component ${ctor.TypeName}`\n );\n log.error(LogTag.Component, e);\n component = new BrokenComponent(this._scene);\n }\n component._object = this._scene.wrap(object);\n\n try {\n component.resetProperties();\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during ${component.type} resetProperties() on object ${component.object.name}`\n );\n log.error(LogTag.Component, e);\n }\n\n this._scene._jsComponents[index] = component;\n\n /* Add to cache. This is required because destruction is\n * ID-based and not index-based. */\n this._cache[this.js][id] = component;\n\n return component;\n }\n\n /**\n * Get components of type T.\n *\n * @param type Component class.\n * @returns An array containing all components in this scene.\n */\n components(type: ComponentConstructor, active: boolean): T[] {\n return this.componentsFromTypename(type.TypeName, active) as T[];\n }\n\n /**\n * Similar to {@link getComponents}, but directly from string.\n *\n * @param typename The component `TypeName` attribute.\n */\n componentsFromTypename(typename: string, active: boolean): Component[] {\n const wasm = this._scene.engine.wasm;\n\n const manager = this.getNativeManager(typename) ?? this.js;\n const subTypeIndex =\n manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0;\n\n const maxRead = wasm._tempMemSize / 4;\n const components: Component[] = [];\n let read = 0;\n let offset = 0;\n while (\n (read = wasm._wl_scene_get_components(\n this._scene._index,\n manager,\n subTypeIndex,\n active,\n offset,\n maxRead,\n wasm._tempMem\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n const id = wasm._tempMemUint32[i];\n components.push(this.wrapAny(manager, id) as Component);\n }\n /* Offset by `maxRead` because js components of different types are contiguous.\n * `read` could be less than `maxRead`, and we want to skip all\n * the components already processed. */\n offset += maxRead;\n }\n\n return components;\n }\n\n /**\n * Get component of type T.\n *\n * @note Currently only works for native components, but we will extend this later (and expose it in the API)\n */\n componentAt(type: ComponentConstructor, index: number): T {\n const wasm = this._scene.engine.wasm;\n const manager = this.getNativeManager(type.TypeName)!;\n const id = wasm._wl_scene_get_component(this._scene._index, manager, index);\n return this.wrapAny(manager, id) as T;\n }\n\n /**\n * Retrieve a cached component.\n *\n * @param manager The manager index.\n * @param id The component id.\n * @returns The component if cached, `null` otherwise.\n */\n get(manager: number, id: number) {\n return this._cache[manager][id] ?? null;\n }\n\n /**\n * Wrap the animation.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAnimation(id: number): AnimationComponent {\n return this.wrapNative(this.animation, id) as AnimationComponent;\n }\n\n /**\n * Wrap the collision.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapCollision(id: number): CollisionComponent {\n return this.wrapNative(this.collision, id) as CollisionComponent;\n }\n\n /**\n * Wrap the view.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapView(id: number): ViewComponent {\n return this.wrapNative(this.view, id) as ViewComponent;\n }\n\n /**\n * Wrap the physx.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapPhysx(id: number): PhysXComponent {\n return this.wrapNative(this.physx, id) as PhysXComponent;\n }\n\n /**\n * Retrieves a component instance if it exists, or create and cache\n * a new one.\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link Object3D.addComponent} instead.\n *\n * @param componentType Component manager index\n * @param componentId Component id in the manager\n *\n * @returns JavaScript instance wrapping the native component\n */\n wrapNative(manager: number, id: number) {\n if (id < 0) return null;\n\n const cache = this._cache[manager];\n if (cache[id]) return cache[id];\n\n const scene = this._scene;\n const Class = this._constructors[manager];\n const component = new Class(scene, manager, id);\n cache[id] = component;\n return component;\n }\n\n /**\n * Wrap a native or js component.\n *\n * @throws For JavaScript components that weren't previously cached,\n * since that would be a bug in the runtime / api.\n *\n * @param manager The manager index.\n * @param id The id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAny(manager: number, id: number) {\n if (id < 0) return null;\n\n if (manager === this.js) {\n const found = this._cache[this.js][id];\n if (!found) {\n throw new Error('JS components must always be cached');\n }\n return found.constructor !== BrokenComponent ? found : null;\n }\n\n return this.wrapNative(manager, id);\n }\n\n getNativeManager(name: string): number | null {\n const manager = this._nativeManagers.get(name);\n return manager !== undefined ? manager : null;\n }\n\n /**\n * Perform cleanup upon component destruction.\n *\n * @param instance The instance to destroy.\n *\n * @hidden\n */\n destroy(instance: Component) {\n const localId = instance._localId;\n const manager = instance._manager;\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n (instance._manager as number) = -1;\n\n const erasePrototypeOnDestroy = this._scene.engine.erasePrototypeOnDestroy;\n /* Destroy the prototype of this instance to avoid using a dangling component */\n if (erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedComponentInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating a component with the same id. */\n this._cache[manager][localId] = null;\n }\n\n /** Number of managers **registered** in the scene, i.e., `js`, `names`, etc... */\n get managersCount() {\n return this._scene.engine.wasm._wl_scene_get_component_manager_count(\n this._scene._index\n );\n }\n}\n\nexport function resetComponentProperties(record: Component) {\n const ctor = record.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return;\n for (const name in properties) {\n const property = properties[name];\n const cloner = property.cloner ?? defaultPropertyCloner;\n (record as Record)[name] = cloner.clone(\n property.type,\n property.default\n );\n }\n}\n\nexport function setupComponentClass(ctor: ComponentConstructor | PropertyRecord) {\n inheritProperties(ctor);\n /** @todo: Merge the _setupDefaults and _setPropertyOrder calls with this function. */\n for (const name in ctor.Properties) {\n const prop = ctor.Properties[name];\n let record = null;\n switch (prop.type) {\n case Type.Record:\n record = prop.record;\n break;\n case Type.Array:\n record = prop.element?.record;\n break;\n default:\n break;\n }\n if (record && !record._propertyOrder) setupComponentClass(record);\n }\n _setupDefaults(ctor);\n _setPropertyOrder(ctor);\n}\n\n/**\n * Decode component properties from CBOR encoded data.\n *\n * ## Failure\n *\n * When decoding properties, failures will not be treated as errors. Failures include:\n * - Invalid parameters count\n * - Wrongly defined property\n *\n * When a failure occurs, the cbor reader will be consumed to prevent\n * errors to cascade in the following components.\n */\nexport class ComponentPropertyDecoder {\n scene: Prefab;\n offsets: Uint32Array;\n\n constructor(scene: Prefab, offsets: Uint32Array) {\n this.scene = scene;\n this.offsets = offsets;\n }\n\n decode(cbor: CBORReader, component: Component) {\n const ctor = component.constructor as ComponentConstructor;\n if (!ctor._propertyOrder) setupComponentClass(ctor);\n\n const typeInfo = cbor.readTypeInfo();\n if (ctor === BrokenComponent) {\n return cbor.readItem(typeInfo); /* Consumme the cbor state */\n }\n\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array) {\n this._error(`${component} parameters not encoded as an array.`);\n return cbor.readItem(typeInfo);\n }\n\n const paramNames = ctor._propertyOrder;\n const count = cbor.readArrayLength(typeInfo) as number;\n if (count !== paramNames.length) {\n this._error(\n `${component} has ${count} parameters encoded, but expected ${paramNames.length}`\n );\n return cbor.readItem(typeInfo, count);\n }\n\n for (let j = 0; j < count; ++j) {\n const name = paramNames[j];\n const property = ctor.Properties[name];\n (component as any)[name] = this.decodeProperty(cbor, name, property);\n }\n }\n\n decodeProperty(cbor: CBORReader, name: string, property: ComponentProperty) {\n const typeInfo = cbor.readTypeInfo();\n\n if (property.type === Type.Record) {\n return this.decodeRecordProperty(cbor, name, property, typeInfo);\n } else if (property.type === Type.Array) {\n return this.decodeArrayProperty(cbor, name, property, typeInfo);\n }\n\n let value = cbor.readItem(typeInfo);\n\n /* Default values are sent as undefined to avoid wasting space */\n if (value === undefined) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n value = cloner.clone(property.type, property.default);\n return value;\n }\n /* This skips unset resource parameters as those are sent\n * directly with type null. Offsets for Int and Float types\n * should always be 0. */\n /** @todo CBOR tag to mark resources? Wastes a byte though. */\n if (typeof value === 'number') {\n value += this.offsets[property.type];\n }\n\n const engine = this.scene.engine;\n switch (property.type) {\n case Type.Bool:\n case Type.Int:\n case Type.Float:\n case Type.String:\n case Type.Enum:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n /* Nothing to do */\n return value;\n case Type.Object: {\n const wasm = engine.wasm;\n return value\n ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value))\n : null;\n }\n case Type.Mesh:\n return engine.meshes.wrap(value);\n case Type.Texture:\n return engine.textures.wrap(value);\n case Type.Material:\n return engine.materials.wrap(value);\n case Type.ParticleEffect:\n return engine.particleEffects.wrap(value);\n case Type.Animation:\n return this.scene.animations.wrap(value);\n case Type.Skin:\n return this.scene.skins.wrap(value);\n case Type.Color: {\n /* Colors are sent as Uint8Array. Normalize positive\n * integer values to 0-1. Don't assume any bit size\n * here, could become Uint16Array as well. */\n const max = (1 << (value.BYTES_PER_ELEMENT * 8)) - 1;\n return Float32Array.from(value, (f: number, _) => f / max);\n }\n }\n }\n\n decodeRecordProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Record parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return null;\n }\n const record = property.record;\n if (!record) {\n this._error(`Record parameter '${name}' .record is undefined`);\n cbor.readItem(typeInfo);\n return null;\n }\n\n if (!record._propertyOrder) setupComponentClass(record);\n const propertyOrder = record._propertyOrder as string[];\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n return cloner.clone(property.type, property.default);\n }\n\n const result = new (record as any)();\n if (count !== propertyOrder.length) {\n const propsCount = propertyOrder.length;\n this._error(\n `Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`\n );\n cbor.readItem(typeInfo, count);\n return result;\n }\n const order = record._propertyOrder!;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n const prop = record.Properties![key];\n (result as any)[key] = this.decodeProperty(cbor, key, prop);\n }\n return result;\n }\n\n decodeArrayProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const log = this.scene.engine.log;\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Array parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n if (!property.element) {\n this._error(`Array parameter '${name}' .element property is undefined`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) return [];\n\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n result[i] = this.decodeProperty(cbor, name, property.element);\n }\n return result;\n }\n\n private _error(msg: string) {\n const log = this.scene.engine.log;\n log.error(LogTag.Engine, msg);\n }\n}\n\n/**\n * Default component parameter value per type.\n */\nconst _componentDefaults = new Map([\n [Type.Bool, false],\n [Type.Int, 0],\n [Type.Float, 0.0],\n [Type.String, ''],\n [Type.Enum, undefined],\n [Type.Object, null],\n [Type.Mesh, null],\n [Type.Texture, null],\n [Type.Material, null],\n [Type.Animation, null],\n [Type.Skin, null],\n [Type.ParticleEffect, null],\n [Type.Color, Float32Array.from([0.0, 0.0, 0.0, 1.0])],\n [Type.Vector2, Float32Array.from([0.0, 0.0])],\n [Type.Vector3, Float32Array.from([0.0, 0.0, 0.0])],\n [Type.Vector4, Float32Array.from([0.0, 0.0, 0.0, 0.0])],\n [Type.Record, undefined],\n [Type.Array, []],\n]);\n\n/**\n * Setup the defaults value of the properties on a given\n * component class.\n *\n * @param ctor The component class\n */\nfunction _setupDefaults(ctor: ComponentConstructor | PropertyRecord) {\n for (const name in ctor.Properties) {\n const p = ctor.Properties[name];\n\n if (p.type === Type.Enum) {\n /* Enum default can be a string or an index. Convert to and/or\n * sanity-check the index. */\n if (p.values?.length) {\n /* Don't try to look up the default if the user specified a\n * number or we already converted to one. */\n if (typeof p.default !== 'number') {\n /* If undefined, missing element or wrong type this returns\n * -1 which becomes 0 below. This matches editor behavior. */\n p.default = p.values.indexOf(p.default);\n }\n if (p.default < 0 || p.default >= p.values.length) {\n p.default = 0;\n }\n } else {\n /* There's no index value that makes sense */\n p.default = undefined;\n }\n } else if (\n (p.type === Type.Color ||\n p.type === Type.Vector2 ||\n p.type === Type.Vector3 ||\n p.type === Type.Vector4) &&\n Array.isArray(p.default)\n ) {\n /* Defaults provided by user code are currently always a standard\n * array, but become a typed array on the property */\n p.default = Float32Array.from(p.default);\n } else if (p.type === Type.Record && p.record) {\n p.default = new p.record();\n resetComponentProperties(p.default);\n } else if (p.default === undefined) {\n const cloner = p.cloner ?? defaultPropertyCloner;\n p.default = cloner.clone(p.type, _componentDefaults.get(p.type));\n }\n ctor.prototype[name] = p.default;\n }\n}\n\n/**\n * Determines a fixed order for property attributes used for deserialization.\n *\n * @param ctor The component class\n */\nfunction _setPropertyOrder(ctor: ComponentConstructor | PropertyRecord) {\n ctor._propertyOrder = ctor.hasOwnProperty('Properties')\n ? Object.keys(ctor.Properties!).sort()\n : [];\n}\n", "import {ImageLike, ProgressCallback} from '../types.js';\n\n/**\n * Transformer for {@link TransformStream} that passes read progress to a\n * callback.\n *\n * Invokes the callback for each streamed chunk, and one final time when the\n * stream closes.\n *\n * @hidden\n */\nclass FetchProgressTransformer implements Transformer {\n #progress = 0;\n #callback: ProgressCallback;\n #totalSize: number;\n\n /**\n * Constructor.\n * @param callback Callback that receives the progress.\n * @param totalSize Total size of the data. Pass 0 to indicate that the\n * size is unknown, then the callback will only be called once after\n * all data was transferred.\n */\n constructor(callback: ProgressCallback, totalSize = 0) {\n this.#callback = callback;\n this.#totalSize = totalSize;\n }\n\n transform(chunk: Uint8Array, controller: TransformStreamDefaultController) {\n controller.enqueue(chunk);\n this.#progress += chunk.length;\n if (this.#totalSize > 0) {\n this.#callback(this.#progress, this.#totalSize);\n }\n }\n\n flush() {\n this.#callback(this.#progress, this.#progress);\n }\n}\n\n/**\n * Sink for `WritableStream` that writes data to an `ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSink implements UnderlyingSink {\n #buffer: Uint8Array;\n #offset = 0;\n\n /**\n * Constructor.\n * @param size Initial size of the buffer. If less than the received data,\n * the buffer is dynamically reallocated.\n */\n constructor(size = 0) {\n this.#buffer = new Uint8Array(size);\n }\n\n /** Get the received data as an `ArrayBuffer`. */\n get arrayBuffer() {\n const arrayBuffer = this.#buffer.buffer;\n if (this.#offset < arrayBuffer.byteLength) {\n return arrayBuffer.slice(0, this.#offset);\n }\n return arrayBuffer;\n }\n\n write(chunk: Uint8Array) {\n const newLength = this.#offset + chunk.length;\n if (newLength > this.#buffer.length) {\n const newBuffer = new Uint8Array(\n Math.max(this.#buffer.length * 1.5, newLength)\n );\n newBuffer.set(this.#buffer);\n this.#buffer = newBuffer;\n }\n this.#buffer.set(chunk, this.#offset);\n this.#offset = newLength;\n }\n}\n\n/**\n * Source for `ReadableStream` that reads data from an`ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSource implements UnderlyingSource {\n #buffer: ArrayBuffer;\n\n /**\n * Constructor.\n * @param buffer Buffer to read from.\n */\n constructor(buffer: ArrayBuffer) {\n this.#buffer = buffer;\n }\n\n start(controller: ReadableStreamController) {\n if (this.#buffer.byteLength > 0) {\n controller.enqueue(new Uint8Array(this.#buffer));\n }\n controller.close();\n }\n}\n\n/**\n * Fetch a file as an `ArrayBuffer`, with fetch progress passed to a callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n if (!onProgress || !res.body) return res.arrayBuffer();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n const sink = new ArrayBufferSink(size);\n await res.body\n .pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size)))\n .pipeTo(new WritableStream(sink));\n return sink.arrayBuffer;\n}\n\n/**\n * Fetch a file as a `ReadableStream`, with fetch progress passed to a\n * callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchStreamWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise> {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n const body = res.body ?? new ReadableStream();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n if (!onProgress) return body;\n const stream = body.pipeThrough(\n new TransformStream(new FetchProgressTransformer(onProgress, size))\n );\n return stream;\n}\n\n/**\n * Get parent path from a URL.\n *\n * @param url URL to get the parent from.\n * @returns Parent URL without trailing slash.\n */\nexport function getBaseUrl(url: string): string {\n return url.substring(0, url.lastIndexOf('/'));\n}\n\n/**\n * Get the filename of a url.\n *\n * @param url The url to extract the name from.\n * @returns A string containing the filename. If no filename is found,\n * returns the input string.\n */\nexport function getFilename(url: string): string {\n if (url.endsWith('/')) {\n /* Remove trailing slash. */\n url = url.substring(0, url.lastIndexOf('/'));\n }\n const lastSlash = url.lastIndexOf('/');\n if (lastSlash < 0) return url;\n return url.substring(lastSlash + 1);\n}\n\n/**\n * Promise resolved once the image is ready to be used\n *\n * @param image The image, video, or canvas to wait for.\n * @returns A promise with the image, once it's ready to be used.\n */\nexport function onImageReady(image: T): Promise {\n return new Promise((res, rej) => {\n if (image instanceof HTMLVideoElement) {\n if (image.readyState >= 2) {\n res(image as T);\n return;\n }\n image.addEventListener(\n 'loadeddata',\n () => {\n if (image.readyState >= 2) res(image);\n },\n {once: true}\n );\n return;\n } else if (\n !(image instanceof HTMLImageElement) ||\n (image as HTMLImageElement).complete\n ) {\n res(image);\n return;\n }\n image.addEventListener('load', () => res(image), {once: true});\n image.addEventListener('error', rej, {once: true});\n });\n}\n", "import {ComponentManagers, NativeComponents} from './component.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ResourceManager, SceneResource} from './resources/resource.js';\nimport {ProgressCallback} from './types.js';\nimport {\n fetchStreamWithProgress,\n fetchWithProgress,\n getBaseUrl,\n getFilename,\n onImageReady,\n} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Animation,\n CollisionCallback,\n Component,\n ComponentConstructor,\n DestroyedObjectInstance,\n Object3D,\n Skin,\n} from './wonderland.js';\n\n/** Scene loading options. */\nexport interface SceneLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n}\n\n/** Loading options for in-memory data. */\nexport interface InMemoryLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/**\n * Loading options for streamed data.\n *\n * @hidden\n */\nexport interface StreamLoadOptions {\n /** Stream that transfers the bytes of a `.bin` file. */\n stream: ReadableStream;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n}\n\n/** Options for loading files from a URL. */\nexport interface UrlLoadOptions {\n /** URL to load. */\n url: string;\n /** Signal to abort the file fetch request. */\n signal?: AbortSignal;\n /**\n * Whether to load the file as parts of it are fetched. If `false`,\n * fetches the entire file first before loading. Streamed loading reduces\n * memory usage. If not set, defaults to `true`.\n */\n streamed?: boolean;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/** Options used during loading. */\nexport type LoadOptions = string | (UrlLoadOptions & Partial);\n\n/**\n * Base class for prefabs, scenes, and glTF.\n *\n * For more information have a look at the derived types:\n * - {@link Scene} for Wonderland Engine activatable scenes (.bin)\n * - {@link PrefabGLTF} for glTF scenes\n *\n * #### Resources\n *\n * While **meshes**, **textures**, and **materials** are shared\n * on the {@link WonderlandEngine} instance, a scene comes with:\n * - Animations: Managed using {@link Prefab.animations}\n * - Skins: Managed using {@link Prefab.skins}\n *\n * Those resources are bound to the object hierarchy and are thus required to be\n * per-scene.\n *\n * #### Destruction\n *\n * For now, destroying a scene doesn't automatically remove the resources it\n * references in the engine. For more information, have a look at the\n * {@link Scene.destroy} method.\n *\n * #### Isolation\n *\n * It's forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addChild();\n * const objB = sceneB.addChild();\n * objA.parent = objB; // Throws\n * ```\n *\n * @category scene\n *\n * @since 1.2.0\n */\nexport class Prefab {\n /**\n * Create an object with shape `{url: string}`.\n *\n * - If the parameter is a string, a new object is returned\n * - If the parameter is an object, the same reference is returned\n *\n * @param options The url or options object.\n * @returns An object of the form `{url: string, ...}`.\n *\n * @hidden\n */\n static makeUrlLoadOptions(options: LoadOptions): UrlLoadOptions & Partial {\n return isString(options)\n ? ({url: options} as UrlLoadOptions & Partial)\n : options;\n }\n\n /**\n * Load an `ArrayBuffer` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns An {@link InMemoryLoadOptions} object.\n *\n * @hidden\n */\n static async loadBuffer(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const buffer = await fetchWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, buffer, baseURL, filename};\n }\n\n /**\n * Load a `ReadableStream` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns A {@link StreamLoadOptions} object.\n *\n * @hidden\n */\n static async loadStream(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const stream = await fetchStreamWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, stream, baseURL, filename};\n }\n\n /**\n * Validate the in-memory load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateBufferOptions(options: InMemoryLoadOptions): {\n buffer: ArrayBuffer;\n baseURL: string;\n url: string;\n } {\n const {buffer, baseURL, filename = 'scene.bin'} = options;\n if (!buffer) {\n throw new Error(\"missing 'buffer' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {buffer, baseURL, url};\n }\n\n /**\n * Validate the stream load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateStreamOptions(options: StreamLoadOptions): {\n stream: ReadableStream;\n baseURL: string;\n url: string;\n } {\n const {stream, baseURL, filename = 'scene.bin'} = options;\n if (!stream) {\n throw new Error(\"missing 'stream' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {stream, baseURL, url};\n }\n\n /** Index in the scene manager. @hidden */\n readonly _index;\n /** @hidden */\n protected _engine: WonderlandEngine;\n\n /**\n * Component manager caching to avoid GC.\n *\n * @hidden\n */\n readonly _components: ComponentManagers;\n /**\n * JavaScript components for this scene.\n *\n * This array is moved into the WASM instance upon activation.\n *\n * @hidden\n */\n readonly _jsComponents: Component[] = [];\n\n /**\n * The map is indexed using the physx component id.\n *\n * @hidden\n */\n readonly _pxCallbacks: Map = new Map();\n\n /** @hidden */\n private readonly _animations;\n /** @hidden */\n private readonly _skins;\n\n /**\n * Object class instances to avoid GC.\n *\n * @hidden\n */\n private readonly _objectCache: (Object3D | null)[] = [];\n\n /**\n * `onDestroy()` depth.\n *\n * Multiple components can stack `onDestroy()` calls.\n */\n private _pendingDestroy: number = 0;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n\n this._components = new ComponentManagers(this);\n this._animations = new ResourceManager(this as Prefab, Animation);\n this._skins = new ResourceManager(this as Prefab, Skin);\n }\n\n /**\n * Add a new {@link Object3D} to the root object.\n *\n * See {@link Object3D.addChild} for more information.\n *\n * @returns A new {@link Object3D}.\n */\n addChild() {\n return this.wrap(0).addChild();\n }\n\n /**\n * Add an object to the scene.\n *\n * Alternatively, you can use {@link Prefab.addChild} to add the object\n * to the root, or {@link Object3D.addChild} to add the object to a given parent:\n *\n * ```js\n * const parent = scene.addChild();\n * const child = parent.addChild();\n * // Equivalent using scene.addObject\n * const sibling = scene.addObject(parent);\n * ```\n *\n * @param parent Parent object or `null`.\n * @returns A newly created object.\n */\n addObject(parent: Object3D | null = null): Object3D {\n if (parent?.markedDestroyed) {\n throw new Error(`Failed to add object. ${parent} is marked as destroyed.`);\n }\n this.assertOrigin(parent);\n return (parent ?? this.wrap(0)).addChild();\n }\n\n /**\n * Batch-add objects to the scene.\n *\n * Will provide better performance for adding multiple objects (e.g. > 16)\n * than calling {@link Scene#addObject} repeatedly in a loop.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * convervatively grow the memory in small steps.\n *\n * @experimental This API might change in upcoming versions.\n *\n * @param count Number of objects to add.\n * @param parent Parent object or `null`, default `null`.\n * @param componentCountHint Hint for how many components in total will\n * be added to the created objects afterwards, default `0`.\n * @returns Newly created objects\n */\n addObjects(\n count: number,\n parent: Object3D | null = null,\n componentCountHint: number = 0\n ): Object3D[] {\n const parentId = parent ? parent._id : 0;\n this.engine.wasm.requireTempMem(count * 2);\n const actualCount = this.engine.wasm._wl_scene_add_objects(\n this._index,\n parentId,\n count,\n componentCountHint || 0,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount);\n const wrapper = this.wrap.bind(this);\n const objects = Array.from(ids, wrapper);\n return objects;\n }\n\n /**\n * Pre-allocate memory for a given amount of objects and components.\n *\n * Will provide better performance for adding objects later with {@link Scene#addObject}\n * and {@link Scene#addObjects}.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * conservatively grow the memory in small steps.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * @param objectCount Number of objects to add.\n * @param componentCountPerType Amount of components to\n * allocate for {@link Object3D.addComponent}, e.g. `{mesh: 100, collision: 200, \"my-comp\": 100}`.\n * @since 0.8.10\n */\n reserveObjects(objectCount: number, componentCountPerType: Record) {\n const wasm = this.engine.wasm;\n if (!componentCountPerType) return;\n\n const countsPerTypeIndex = wasm._tempMemInt;\n const managerCount = this._components.managersCount;\n for (let i = 0; i < managerCount; ++i) countsPerTypeIndex[i] = 0;\n\n const names = Object.keys(componentCountPerType);\n for (const name of names) {\n const count = componentCountPerType[name];\n const nativeIndex = this._components.getNativeManager(name);\n countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] +=\n count;\n }\n wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem);\n }\n\n /**\n * Root object's children.\n *\n * See {@link Object3D.getChildren} for more information.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const root = this.wrap(0);\n return root.getChildren(out);\n }\n\n /** @overload */\n getComponents(typeOrClass: K): NativeComponents[K][];\n /** @overload */\n getComponents(typeOrClass: string): Component[];\n /**\n * Get all the components of a given type.\n *\n * #### Usage\n *\n * ```js\n * const meshes = scene.getComponents('mesh');\n * const zombies = scene.getComponents(ZombieComponent);\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, false);\n }\n\n /** @overload */\n getActiveComponents(\n typeOrClass: K\n ): NativeComponents[K][];\n /** @overload */\n getActiveComponents(typeOrClass: string): Component[];\n /**\n * Get all the **active** components of a given type.\n *\n * ```js\n * const zombies = scene.getActiveComponents(ZombieComponent);\n * for(const zombie of zombies) zombie.active = false;\n *\n * const list = scene.getActiveComponents(ZombieComponent);\n * console.log(list.length); // Prints `0`\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getActiveComponents(typeOrClass: ComponentConstructor): T[];\n getActiveComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, true);\n }\n\n /**\n * Top-level objects of this scene.\n *\n * See {@link Object3D.children} for more information.\n *\n * @since 1.2.0\n */\n get children(): Object3D[] {\n const root = this.wrap(0);\n return root.children;\n }\n\n /** The number of children of the root object. */\n get childrenCount(): number {\n const root = this.wrap(0);\n return this.engine.wasm._wl_object_get_children_count(root._id);\n }\n\n /**\n * Search for objects matching the name.\n *\n * See {@link Object3D.findByName} for more information.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the objects of\n * this scene. If `false`, this method will only perform the search in\n * root objects.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n const root = this.wrap(0);\n return root.findByName(name, recursive);\n }\n\n /**\n * Search for all **top-level** objects matching the name.\n *\n * See {@link Object3D.findByNameDirect} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameDirect(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameDirect(name);\n }\n\n /**\n * Search for **all objects** matching the name.\n *\n * See {@link Object3D.findByNameRecursive} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameRecursive(name);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n *\n * @returns The object\n */\n wrap(objectId: number): Object3D {\n const cache = this._objectCache;\n const o = cache[objectId] || (cache[objectId] = new Object3D(this, objectId));\n return o;\n }\n\n /**\n * Destroy the scene.\n *\n * For now, destroying a scene doesn't remove the resources it references. Thus,\n * you will need to reload a main scene to free the memory.\n *\n * For more information about destruction, have a look at the {@link Scene.destroy} method.\n */\n destroy() {\n if (this._pendingDestroy > 0) {\n throw new Error(\"It's forbidden to destroy a scene from onDestroy().\");\n }\n this._pxCallbacks.clear();\n this.engine._destroyScene(this);\n }\n\n /* Public Getters & Setters */\n\n /**\n * `true` if the scene is active, `false` otherwise.\n *\n * Always false for {@link Prefab} and {@link PrefabGLTF}.\n */\n get isActive() {\n return !!this.engine.wasm._wl_scene_active(this._index);\n }\n\n /**\n * Relative directory of the scene that was loaded.\n *\n * This is used for loading any files relative to the scene.\n */\n get baseURL(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_baseURL(this._index);\n if (!ptr) return '';\n\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Filename used when loading the file.\n *\n * If the scenes was loaded from memory and no filename was provided,\n * this accessor will return an empty string.\n */\n get filename(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_filename(this._index);\n if (!ptr) return '';\n return wasm.UTF8ToString(ptr);\n }\n\n /** Animation resources */\n get animations() {\n return this._animations;\n }\n\n /** Skin resources */\n get skins() {\n return this._skins;\n }\n\n /** Hosting engine instance. */\n get engine(): WonderlandEngine {\n return this._engine;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed(): boolean {\n return this._index < 0;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Scene(destroyed)';\n }\n return `Scene('${this.filename}', ${this._index})`;\n }\n\n /**\n * Checks that the input's scene is the same as this instance.\n *\n * It is forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addObject();\n * const objB = sceneA.addObject();\n * objA.parent = objB; // Throws\n * ```\n *\n * @param other Object / component to check.\n *\n * @throws If other's scene isn't the same reference as this.\n */\n assertOrigin(other: Object3D | Component | SceneResource | undefined | null) {\n if (other && (other.scene as Prefab) !== this) {\n throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`);\n }\n }\n\n /**\n * Download components and initialize the scene.\n *\n * @hidden\n */\n _initialize() {\n const wasm = this.engine.wasm;\n /* Initialize component parameters */\n wasm._wl_scene_initialize(this._index);\n }\n\n /**\n * Perform cleanup upon object destruction.\n *\n * @param localId The id to destroy.\n *\n * @hidden\n */\n _destroyObject(localId: number) {\n const instance = this._objectCache[localId];\n if (!instance) return;\n\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n\n /* Destroy the prototype of this instance to avoid using a dangling object */\n if (this.engine.erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedObjectInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating an object with the same id. */\n this._objectCache[localId] = null;\n }\n\n /**\n * Performs JavaScript only destrution of a component.\n *\n * @note Prefer to use this method to manually calling the destruction code,\n * to protect the user from illegal method calls in {@link Component.onDestroy}.\n *\n * @param manager The component manager index.\n * @param id The component id.\n *\n * @hidden\n */\n _destroyComponent(manager: number, id: number) {\n const component = this._components.get(manager, id);\n ++this._pendingDestroy;\n component?._triggerOnDestroy();\n --this._pendingDestroy;\n }\n}\n", "/**\n * Schedule a timeout, resolving in `time` milliseconds.\n *\n * @note `setTimeout` being a macro-task, this method can\n * be use as a debounce call.\n *\n * @param time The time until it resolves, in milliseconds.\n * @returns A promise resolving in `time` ms.\n */\nexport function timeout(time: number): Promise {\n return new Promise((res) => setTimeout(res, time));\n}\n\n/**\n * Clamp the value in the range [min; max].\n *\n * @param val The value to clamp.\n * @param min The minimum value (inclusive).\n * @param max The maximum value (inclusive).\n * @returns The clamped value.\n */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.max(Math.min(max, val), min);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @note The string must be UTF-8.\n *\n * @param str The string to format.\n * @returns The string with the first letter capitalized.\n */\nexport function capitalizeFirstUTF8(str: string) {\n return `${str[0].toUpperCase()}${str.substring(1)}`;\n}\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nexport function createDestroyedProxy(type: string) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(`Cannot read '${param}' of destroyed ${type}`);\n },\n set(_, param: string) {\n throw new Error(`Cannot write '${param}' of destroyed ${type}`);\n },\n }\n );\n}\n", "/**\n * Types\n */\n\nimport {nativeProperty, enumerable} from './decorators.js';\nimport {WonderlandEngine} from './engine.js';\nimport {isImageLike, isNumber, isString} from './utils/object.js';\nimport {Emitter} from './utils/event.js';\nimport {Material} from './resources/material-manager.js';\nimport {\n ComponentProperty,\n PropertyRecord,\n Type,\n defaultPropertyCloner,\n} from './property.js';\nimport {Constructor, ImageLike, NumberArray, TypedArray, TypedArrayCtor} from './types.js';\nimport {Resource, SceneResource} from './resources/resource.js';\nimport {Prefab} from './prefab.js';\nimport {Scene} from './scene.js';\nimport {createDestroyedProxy} from './utils/misc.js';\nimport {NativeComponents, resetComponentProperties} from './component.js';\n\n/**\n * Component constructor type.\n *\n * For more information, please have a look at the {@link Component} class.\n */\nexport type ComponentConstructor = {\n new (scene: Prefab, manager: number, id: number): T;\n} & {\n _isBaseComponent: boolean;\n _propertyOrder: string[];\n TypeName: string;\n Properties: Record;\n InheritProperties?: boolean;\n onRegister?: (engine: WonderlandEngine) => void;\n};\n\n/**\n * Component prototype interface.\n *\n * User component's should have the same structure.\n */\nexport interface ComponentProto {\n /**\n * Triggered after the component instantiation.\n * For more information, please have a look at {@link Component.init}.\n */\n init?: () => void;\n /**\n * Triggered after the component is activated for the first time.\n * For more information, please have a look at {@link Component.start}.\n */\n start?: () => void;\n /**\n * Triggered once per frame.\n * For more information, please have a look at {@link Component.update}.\n *\n * @param dt Delta time, time since last update.\n */\n update?: (dt: number) => void;\n /**\n * Triggered when the component goes from deactivated to activated.\n * For more information, please have a look at {@link Component.onActivate}.\n */\n onActivate?: () => void;\n /**\n * Triggered when the component goes from activated to deactivated.\n * For more information, please have a look at {@link Component.onDeactivate}.\n */\n onDeactivate?: () => void;\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @since 0.9.0\n */\n onDestroy?: () => void;\n}\n\n/**\n * Callback triggered on collision event.\n *\n * @param type Type of the event.\n * @param other Other component that was (un)collided with\n */\nexport type CollisionCallback = (type: CollisionEventType, other: PhysXComponent) => void;\n\n/** @todo Remove at 1.0.0 */\ndeclare const WL: WonderlandEngine;\n\n/**\n * Wonderland Engine API\n * @namespace WL\n */\n\n/**\n * Default set of logging tags used by the API.\n */\nexport enum LogTag {\n /** Initialization, component registration, etc... */\n Engine = 0,\n /** Scene loading */\n Scene = 1,\n /** Component init, update, etc... */\n Component = 2,\n}\n\n/**\n * Collider type enum for {@link CollisionComponent}.\n */\nexport enum Collider {\n /**\n * **Sphere Collider**:\n *\n * Simplest and most performant collision shape. If this type is set on a\n * {@link CollisionComponent}, only the first component of\n * {@link CollisionComponent#extents} will be used to determine the radius.\n */\n Sphere = 0,\n\n /**\n * **Axis Aligned Bounding Box Collider**:\n *\n * Box that is always aligned to XYZ axis. It cannot be rotated but is more\n * efficient than {@link Collider.Box}.\n */\n AxisAlignedBox = 1,\n\n /**\n * **Aligned Bounding Box Collider**:\n *\n * Box that matches the object's rotation and translation correctly. This\n * is the least efficient collider and should only be chosen over\n * {@link Collider.Sphere} and {@link Collider.AxisAlignedBox} if really\n * necessary.\n */\n Box = 2,\n}\n\n/**\n * Alignment type enum for {@link TextComponent}.\n */\nexport enum Alignment {\n /** Text start is at object origin */\n Left = 0,\n\n /** Text center is at object origin */\n Center = 1,\n\n /** Text end is at object origin */\n Right = 2,\n}\n\n/**\n * Vertical alignment type enum for {@link TextComponent}.\n */\nexport enum VerticalAlignment {\n /** Text line is at object origin */\n Line = 0,\n\n /** Text middle is at object origin */\n Middle = 1,\n\n /** Text top is at object origin */\n Top = 2,\n\n /** Text bottom is at object origin */\n Bottom = 3,\n}\n\n/**\n * Justification type enum for {@link TextComponent}.\n *\n * @deprecated Please use {@link VerticalAlignment} instead.\n */\nexport const Justification = VerticalAlignment;\n\n/**\n * Effect type enum for {@link TextComponent}.\n */\nexport enum TextEffect {\n /** Text is rendered normally */\n None = 0,\n\n /** Text is rendered with an outline */\n Outline = 1,\n\n /** Text is rendered with a drop shadow */\n Shadow = 2,\n}\n\n/**\n * Wrap mode enum for {@link TextComponent}.\n *\n * @since 1.2.1\n */\nexport enum TextWrapMode {\n /** Text doesn't wrap automatically, only with explicit newline */\n None = 0,\n\n /** Text wraps at word boundaries */\n Soft = 1,\n\n /** Text wraps anywhere */\n Hard = 2,\n\n /** Text is cut off */\n Clip = 3,\n}\n\n/**\n * Input type enum for {@link InputComponent}.\n */\nexport enum InputType {\n /** Head input */\n Head = 0,\n\n /** Left eye input */\n EyeLeft = 1,\n\n /** Right eye input */\n EyeRight = 2,\n\n /** Left controller input */\n ControllerLeft = 3,\n\n /** Right controller input */\n ControllerRight = 4,\n\n /** Left ray input */\n RayLeft = 5,\n\n /** Right ray input */\n RayRight = 6,\n}\n\n/**\n * Projection type enum for {@link ViewComponent}.\n */\nexport enum ProjectionType {\n /** Perspective projection */\n Perspective = 0,\n\n /** Orthographic projection */\n Orthographic = 1,\n}\n\n/**\n * Light type enum for {@link LightComponent}.\n */\nexport enum LightType {\n /** Point light */\n Point = 0,\n\n /** Spot light */\n Spot = 1,\n\n /** Sun light / Directional light */\n Sun = 2,\n}\n\n/**\n * Animation state of {@link AnimationComponent}.\n */\nexport enum AnimationState {\n /** Animation is currently playing */\n Playing = 0,\n\n /** Animation is paused and will continue at current playback\n * time on {@link AnimationComponent#play} */\n Paused = 1,\n\n /** Animation is stopped */\n Stopped = 2,\n}\n\n/**\n * Root motion mode of {@link AnimationComponent}.\n */\nexport enum RootMotionMode {\n /** Do nothing */\n None = 0,\n /** Move and rotate root with the delta of its motion */\n ApplyToOwner = 1,\n /** Store the motion to be retrieved by a JS script */\n Script = 2,\n}\n\n/**\n * Rigid body force mode for {@link PhysXComponent#addForce} and {@link PhysXComponent#addTorque}.\n *\n * [PhysX API Reference](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxapi/files/structPxForceMode.html)\n */\nexport enum ForceMode {\n /** Apply as force */\n Force = 0,\n\n /** Apply as impulse */\n Impulse = 1,\n\n /** Apply as velocity change, mass dependent */\n VelocityChange = 2,\n\n /** Apply as mass dependent force */\n Acceleration = 3,\n}\n\n/**\n * Collision callback event type.\n */\nexport enum CollisionEventType {\n /** Touch/contact detected, collision */\n Touch = 0,\n\n /** Touch/contact lost, uncollide */\n TouchLost = 1,\n\n /** Touch/contact with trigger detected */\n TriggerTouch = 2,\n\n /** Touch/contact with trigger lost */\n TriggerTouchLost = 3,\n}\n\n/**\n * Rigid body {@link PhysXComponent#shape}.\n *\n * [PhysX SDK Guide](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/Geometry.html#geometry-types).\n */\nexport enum Shape {\n /** No shape. */\n None = 0,\n\n /** Sphere shape. */\n Sphere = 1,\n\n /** Capsule shape. */\n Capsule = 2,\n\n /** Box shape. */\n Box = 3,\n\n /** Plane shape. */\n Plane = 4,\n\n /** Convex mesh shape. */\n ConvexMesh = 5,\n\n /** Triangle mesh shape. */\n TriangleMesh = 6,\n}\n\n/**\n * Mesh attribute enum.\n * @since 0.9.0\n */\nexport enum MeshAttribute {\n /** Position attribute, 3 floats */\n Position = 0,\n\n /** Tangent attribute, 4 floats */\n Tangent = 1,\n\n /** Normal attribute, 3 floats */\n Normal = 2,\n\n /** Texture coordinate attribute, 2 floats */\n TextureCoordinate = 3,\n\n /** Color attribute, 4 floats, RGBA, range `0` to `1` */\n Color = 4,\n\n /** Joint id attribute, 8 unsigned ints */\n JointId = 5,\n\n /** Joint weights attribute, 8 floats */\n JointWeight = 6,\n\n /** Secondary texture coordinate attribute, 2 floats */\n SecondaryTextureCoordinate = 7,\n}\n\n/** Proxy used to override prototypes of destroyed objects. */\nexport const DestroyedObjectInstance = createDestroyedProxy('object');\n/** Proxy used to override prototypes of destroyed components. */\nexport const DestroyedComponentInstance = createDestroyedProxy('component');\n/** Proxy used to override prototypes of destroyed prefabs. */\nexport const DestroyedPrefabInstance = createDestroyedProxy('prefab/scene');\n\n/**\n * Check whether a given shape is a mesh or not.\n *\n * @param shape The shape to check.\n * @returns `true` if the shape is a mesh, `false` if it's a primitive.\n */\nfunction isMeshShape(shape: Shape): boolean {\n return shape === Shape.ConvexMesh || shape === Shape.TriangleMesh;\n}\n\n/**\n * Check whether an object is the {@link Component} class or not,\n *\n * @note This method if foolproof to developers inadvertently using\n * multiple Wonderland Engine API in a bundle.\n *\n * @param value The object to check.\n * @returns `true` if the object is a {@link Component} class, `false` otherwise.\n */\nfunction isBaseComponentClass(\n value: Constructor | null\n): value is ComponentConstructor {\n return (\n !!value &&\n value.hasOwnProperty('_isBaseComponent') &&\n (value as ComponentConstructor)._isBaseComponent\n );\n}\n\n/**\n * Constants.\n */\n\n/**\n * Default world up vector.\n */\nconst UP_VECTOR = [0, 1, 0];\n\nconst SQRT_3 = Math.sqrt(3);\n\n/**\n * Provides access to a component instance of a specified component type.\n *\n * @example\n *\n * This is how you extend this class to create your own custom\n * component:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * };\n * start() {}\n * onActivate() {}\n * onDeactivate() {}\n * update(dt) {}\n * }\n * ```\n *\n * In a component, the scene can be accessed using `this.scene`:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * start() {\n * const obj = this.scene.addObject();\n * }\n * }\n * ```\n */\nexport class Component {\n /**\n * Pack scene index and component id.\n *\n * @param scene Scene index.\n * @param id Component id.\n * @returns The packed id.\n *\n * @hidden\n */\n static _pack(scene: number, id: number) {\n return (scene << 22) | id;\n }\n\n /**\n * `true` for every class inheriting from this class.\n *\n * @note This is a workaround for `instanceof` to prevent issues\n * that could arise when an application ends up using multiple API versions.\n *\n * @hidden\n */\n static readonly _isBaseComponent = true;\n\n /**\n * Fixed order of attributes in the `Properties` array.\n *\n * @note This is used for parameter deserialization and is filled during\n * component registration.\n *\n * @hidden\n */\n static _propertyOrder: string[] = [];\n\n /**\n * Unique identifier for this component class.\n *\n * This is used to register, add, and retrieve components of a given type.\n */\n static TypeName: string;\n\n /**\n * Properties of this component class.\n *\n * Properties are public attributes that can be configured via the\n * Wonderland Editor.\n *\n * Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * myFloat: { type: Type.Float, default: false },\n * myTexture: { type: Type.Texture, default: null },\n * };\n * }\n * ```\n *\n * Properties are automatically added to each component instance, and are\n * accessible like any JS attribute:\n *\n * ```js\n * // Creates a new component and set each properties value:\n * const myComponent = object.addComponent(MyComponent, {\n * myBoolean: true,\n * myFloat: 42.0,\n * myTexture: null\n * });\n *\n * // You can also override the properties on the instance:\n * myComponent.myBoolean = false;\n * myComponent.myFloat = -42.0;\n * ```\n *\n * #### References\n *\n * Reference types (i.e., mesh, object, etc...) can also be listed as **required**:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myObject: Property.object({required: true}),\n * myAnimation: Property.animation({required: true}),\n * myTexture: Property.texture({required: true}),\n * myMesh: Property.mesh({required: true}),\n * }\n * }\n * ```\n *\n * Please note that references are validated **once** before the call to {@link Component.start} only,\n * via the {@link Component.validateProperties} method.\n */\n static Properties: Record;\n\n /**\n * When set to `true`, the child class inherits from the parent\n * properties, as shown in the following example:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Parent extends Component {\n * static TypeName = 'parent';\n * static Properties = {parentName: Property.string('parent')}\n * }\n *\n * class Child extends Parent {\n * static TypeName = 'child';\n * static Properties = {name: Property.string('child')}\n * static InheritProperties = true;\n *\n * start() {\n * // Works because `InheritProperties` is `true`.\n * console.log(`${this.name} inherits from ${this.parentName}`);\n * }\n * }\n * ```\n *\n * @note Properties defined in descendant classes will override properties\n * with the same name defined in ancestor classes.\n *\n * Defaults to `true`.\n */\n static InheritProperties?: boolean;\n\n /**\n * Called when this component class is registered.\n *\n * @example\n *\n * This callback can be used to register dependencies of a component,\n * e.g., component classes that need to be registered in order to add\n * them at runtime with {@link Object3D.addComponent}, independent of whether\n * they are used in the editor.\n *\n * ```js\n * class Spawner extends Component {\n * static TypeName = 'spawner';\n *\n * static onRegister(engine) {\n * engine.registerComponent(SpawnedComponent);\n * }\n *\n * // You can now use addComponent with SpawnedComponent\n * }\n * ```\n *\n * @example\n *\n * This callback can be used to register different implementations of a\n * component depending on client features or API versions.\n *\n * ```js\n * // Properties need to be the same for all implementations!\n * const SharedProperties = {};\n *\n * class Anchor extends Component {\n * static TypeName = 'spawner';\n * static Properties = SharedProperties;\n *\n * static onRegister(engine) {\n * if(navigator.xr === undefined) {\n * /* WebXR unsupported, keep this dummy component *\\/\n * return;\n * }\n * /* WebXR supported! Override already registered dummy implementation\n * * with one depending on hit-test API support *\\/\n * engine.registerComponent(window.HitTestSource === undefined ?\n * AnchorWithoutHitTest : AnchorWithHitTest);\n * }\n *\n * // This one implements no functions\n * }\n * ```\n */\n static onRegister?: (engine: WonderlandEngine) => void;\n\n /**\n * Allows to inherit properties directly inside the editor.\n *\n * @note Do not use directly, prefer using {@link inheritProperties}.\n *\n * @hidden\n */\n static _inheritProperties() {\n inheritProperties(this);\n }\n\n /**\n * Triggered when the component is initialized by the runtime. This method\n * will only be triggered **once** after instantiation.\n *\n * @note During the initialization phase, `this.scene` will not match\n * `engine.scene`, since `engine.scene` references the **active** scene:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * init() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `false`\n * }\n * start() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `true`\n * }\n * }\n * ```\n */\n init?(): void;\n\n /**\n * Triggered when the component is started by the runtime, or activated.\n *\n * You can use that to re-initialize the state of the component.\n */\n start?(): void;\n\n /**\n * Triggered **every frame** by the runtime.\n *\n * You should perform your business logic in this method. Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * class TranslateForwardComponent extends Component {\n * static TypeName = 'translate-forward-component';\n * static Properties = {\n * speed: { type: Type.Float, default: 1.0 }\n * };\n * constructor() {\n * this._forward = new Float32Array([0, 0, 0]);\n * }\n * update(dt) {\n * this.object.getForward(this._forward);\n * this._forward[0] *= this.speed;\n * this._forward[1] *= this.speed;\n * this._forward[2] *= this.speed;\n * this.object.translate(this._forward);\n * }\n * }\n * ```\n *\n * @param delta Elapsed time between this frame and the previous one, in **seconds**.\n */\n update?(delta: number): void;\n\n /**\n * Triggered when the component goes from an inactive state to an active state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), all the components\n * that were previously active will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onActivate?(): void;\n\n /**\n * Triggered when the component goes from an activated state to an inactive state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), the components of\n * the scene getting deactivated will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onDeactivate?(): void;\n\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @note This method will not be triggered for inactive scene being destroyed.\n *\n * @since 0.9.0\n */\n onDestroy?(): void;\n\n /** Manager index. @hidden */\n readonly _manager: number;\n /** Packed id, containing the scene and the local id. @hidden */\n readonly _id: number;\n /** Id relative to the scene component's manager. @hidden */\n readonly _localId: number;\n\n /**\n * Object containing this object.\n *\n * **Note**: This is cached for faster retrieval.\n *\n * @hidden\n */\n _object: Object3D | null;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n\n /**\n * Create a new instance\n *\n * @param engine The engine instance.\n * @param manager Index of the manager.\n * @param id WASM component instance index.\n *\n * @hidden\n */\n constructor(scene: Prefab, manager: number = -1, id: number = -1) {\n this._scene = scene;\n this._manager = manager;\n this._localId = id;\n this._id = Component._pack(scene._index, id);\n this._object = null;\n }\n\n /** Scene this component is part of. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** The name of this component's type */\n get type(): string {\n const ctor = this.constructor as ComponentConstructor;\n return ctor.TypeName;\n }\n\n /** The object this component is attached to. */\n get object(): Object3D {\n if (!this._object) {\n const objectId = this.engine.wasm._wl_component_get_object(\n this._manager,\n this._id\n );\n this._object = this._scene.wrap(objectId);\n }\n return this._object;\n }\n\n /**\n * Set whether this component is active.\n *\n * Activating/deactivating a component comes at a small cost of reordering\n * components in the respective component manager. This function therefore\n * is not a trivial assignment.\n *\n * Does nothing if the component is already activated/deactivated.\n *\n * @param active New active state.\n */\n set active(active: boolean) {\n this.engine.wasm._wl_component_setActive(this._manager, this._id, active);\n }\n\n /** `true` if the component is marked as active and its scene is active. */\n get active(): boolean {\n return this.markedActive && this._scene.isActive;\n }\n\n /**\n * `true` if the component is marked as active in the scene, `false` otherwise.\n *\n * @note At the opposite of {@link Component.active}, this accessor doesn't\n * take into account whether the scene is active or not.\n */\n get markedActive(): boolean {\n return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0;\n }\n\n /**\n * Copy all the properties from `src` into this instance.\n *\n * @note Only properties are copied. If a component needs to\n * copy extra data, it needs to override this method.\n *\n * #### Example\n *\n * ```js\n * class MyComponent extends Component {\n * nonPropertyData = 'Hello World';\n *\n * copy(src) {\n * super.copy(src);\n * this.nonPropertyData = src.nonPropertyData;\n * return this;\n * }\n * }\n * ```\n *\n * @note This method is called by {@link Object3D.clone}. Do not attempt to:\n * - Create new component\n * - Read references to other objects\n *\n * When cloning via {@link Object3D.clone}, this method will be called before\n * {@link Component.start}.\n *\n * @note JavaScript component properties aren't retargeted. Thus, references\n * inside the source object will not be retargeted to the destination object,\n * at the exception of the skin data on {@link MeshComponent} and {@link AnimationComponent}.\n *\n * @param src The source component to copy from.\n *\n * @returns Reference to self (for method chaining).\n */\n copy(src: Record): this {\n const ctor = this.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return this;\n for (const name in properties) {\n const property = properties[name];\n const value = src[name];\n if (value === undefined) continue;\n const cloner = property.cloner ?? defaultPropertyCloner;\n (this as Record)[name] = cloner.clone(property.type, value);\n }\n return this;\n }\n\n /**\n * Remove this component from its objects and destroy it.\n *\n * It is best practice to set the component to `null` after,\n * to ensure it does not get used later.\n *\n * ```js\n * c.destroy();\n * c = null;\n * ```\n * @since 0.9.0\n */\n destroy(): void {\n const manager = this._manager;\n if (manager < 0 || this._id < 0) return;\n\n /* This call will mark the component destroyed,\n * automatically calling `_triggerOnDestroy`. */\n this.engine.wasm._wl_component_remove(manager, this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const componentA = obj.addComponent('mesh');\n * const componentB = obj.addComponent('mesh');\n * const componentC = componentB;\n * console.log(componentA === componentB); // false\n * console.log(componentA === componentA); // true\n * console.log(componentB === componentC); // true\n * ```\n */\n equals(otherComponent: Component | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherComponent) return false;\n return this._manager === otherComponent._manager && this._id === otherComponent._id;\n }\n\n /**\n * Reset the component properties to default.\n *\n * @note This is automatically called during the component instantiation.\n *\n * @returns Reference to self (for method chaining).\n */\n resetProperties(): this {\n resetComponentProperties(this);\n return this;\n }\n\n /** @deprecated Use {@link Component.resetProperties} instead. */\n reset(): this {\n return this.resetProperties();\n }\n\n /**\n * Validate the properties on this instance.\n *\n * @throws If any of the required properties isn't initialized\n * on this instance.\n */\n validateProperties(): void {\n const ctor = this.constructor as ComponentConstructor;\n if (!ctor.Properties) return;\n\n for (const name in ctor.Properties) {\n if (!ctor.Properties[name].required) continue;\n if (!(this as Record)[name]) {\n throw new Error(`Property '${name}' is required but was not initialized`);\n }\n }\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Component(destroyed)';\n }\n return `Component('${this.type}', ${this._localId})`;\n }\n\n /**\n * `true` if the component is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const comp = obj.addComponent('mesh');\n * comp.customParam = 'Hello World!';\n *\n * console.log(comp.isDestroyed); // Prints `false`\n * comp.destroy();\n * console.log(comp.isDestroyed); // Prints `true`\n * console.log(comp.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /** @hidden */\n _copy(src: this, offsetsPtr: number, copyInfoPtr: number) {\n const wasm = this.engine.wasm;\n\n /** @todo: Support retargeting for `Object3D.clone` as well. */\n const offsets = wasm.HEAPU32;\n const offsetsStart = offsetsPtr >>> 2;\n\n const copyInfoStart = copyInfoPtr >>> 1;\n const srcRootIndex = wasm.HEAPU16[copyInfoStart]; /* Defaults to max ushort */\n const srcRootSize = wasm.HEAPU16[copyInfoStart + 1]; /* Defaults to 0 */\n const dstRootIndex = wasm.HEAPU16[copyInfoStart + 2]; /* Defaults to 0 */\n\n const destScene = this._scene;\n\n const ctor = this.constructor as ComponentConstructor;\n for (const name in ctor.Properties) {\n const value = (src as Record)[name];\n if (value === null) {\n (this as Record)[name] = null;\n continue;\n }\n\n const prop = ctor.Properties[name];\n const offset = offsets[offsetsStart + prop.type];\n\n let retargeted = null;\n switch (prop.type) {\n case Type.Object: {\n let index = wasm._wl_object_index((value as Object3D)._id) + offset;\n const dist = index - srcRootIndex;\n if (dist >= 0 && dist <= srcRootSize) {\n /* Only retarget if a reference points into the source hierarchy. */\n index = dstRootIndex + dist;\n }\n const id = wasm._wl_object_id(destScene._index, index);\n retargeted = destScene.wrap(id);\n break;\n }\n case Type.Animation:\n retargeted = destScene.animations.wrap(\n offset + (value as Animation)._index\n );\n break;\n case Type.Skin:\n retargeted = destScene.skins.wrap(offset + (value as Skin)._index);\n break;\n default:\n const cloner = prop.cloner ?? defaultPropertyCloner;\n retargeted = cloner.clone(prop.type, value);\n break;\n }\n (this as Record)[name] = retargeted;\n }\n return this;\n }\n\n /**\n * Trigger the component {@link Component.init} method.\n *\n * @note Use this method instead of directly calling {@link Component.init},\n * because this method creates an handler for the {@link Component.start}.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerInit() {\n if (this.init) {\n try {\n this.init();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} init() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /* Arm onActivate() with the initial start() call */\n const oldActivate = this.onActivate;\n this.onActivate = function () {\n this.onActivate = oldActivate;\n let failed = false;\n try {\n this.validateProperties();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} validateProperties() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n try {\n this.start?.();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} start() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n if (failed) {\n this.active = false;\n return;\n }\n\n if (!this.onActivate) return;\n\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n };\n }\n\n /**\n * Trigger the component {@link Component.update} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerUpdate(dt: number) {\n if (!this.update) return;\n try {\n this.update(dt);\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} update() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n if (this.engine.wasm._deactivate_component_on_error) {\n this.active = false;\n }\n }\n }\n\n /**\n * Trigger the component {@link Component.onActivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnActivate() {\n if (!this.onActivate) return;\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDeactivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDeactivate() {\n if (!this.onDeactivate) return;\n try {\n this.onDeactivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDeactivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDestroy} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDestroy() {\n try {\n if (this.onDestroy) this.onDestroy();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDestroy() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n this._scene._components.destroy(this);\n }\n}\n\n/**\n * Components must be registered before loading / appending a scene.\n *\n * It's possible to end up with a broken component in the following cases:\n *\n * - Component wasn't registered when the scene was loaded\n * - Component instantiation failed\n *\n * This dummy component is thus used as a placeholder by the engine.\n */\nexport class BrokenComponent extends Component {\n static TypeName = '__broken-component__';\n}\n\n/**\n * Merge the ascendant properties of class\n *\n * This method walks the prototype chain, and merges\n * all the properties found in parent components.\n *\n * Example:\n *\n * ```js\n * import {Property, inheritProperties} from '@wonderlandengine/api';\n *\n * class Parent {\n * static Properties = { parentProp: Property.string('parent') };\n * }\n *\n * class Child extends Parent {\n * static Properties = { childProp: Property.string('child') };\n * }\n * inheritProperties(Child);\n * ```\n *\n * @param target The class in which properties should be merged\n *\n * @hidden\n */\nexport function inheritProperties(target: ComponentConstructor | PropertyRecord) {\n const chain: ComponentConstructor[] = [];\n let curr: Constructor | null = target;\n while (curr && !isBaseComponentClass(curr)) {\n const comp = curr as ComponentConstructor;\n\n /* Stop at the first class that doesn't require properties merging */\n const needsMerge = comp.hasOwnProperty('InheritProperties')\n ? comp.InheritProperties\n : true;\n if (!needsMerge) break;\n\n if (comp.hasOwnProperty('Properties')) {\n /* We push properties even if the object isn't deriving from a Component class.\n * This could theoretically lead to issue, when inheriting from another type\n * of component (lit-like elements) but extremely unlikely. */\n chain.push(comp);\n }\n curr = Object.getPrototypeOf(curr);\n }\n\n /* No prototype merge is needed. */\n if (!chain.length || (chain.length === 1 && chain[0] === target)) {\n return;\n }\n\n const merged: Record = {};\n for (let i = chain.length - 1; i >= 0; --i) {\n Object.assign(merged, chain[i].Properties);\n }\n target.Properties = merged;\n}\n\n/**\n * Native collision component.\n *\n * Provides access to a native collision component instance.\n */\nexport class CollisionComponent extends Component {\n /** @override */\n static TypeName = 'collision';\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * Collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the returned vector is used.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** Collision component collider */\n @nativeProperty()\n get collider(): Collider {\n return this.engine.wasm._wl_collision_component_get_collider(this._id);\n }\n\n /**\n * Set collision component collider.\n *\n * @param collider Collider of the collision component.\n */\n set collider(collider: Collider) {\n this.engine.wasm._wl_collision_component_set_collider(this._id, collider);\n }\n\n /**\n * Equivalent to {@link CollisionComponent.getExtents}.\n *\n * @note Prefer to use {@link CollisionComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n }\n\n /**\n * Set collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the passed vector is used.\n *\n * Example:\n *\n * ```js\n * // Spans 1 unit on the x-axis, 2 on the y-axis, 3 on the z-axis.\n * collision.extent = [1, 2, 3];\n * ```\n *\n * @param extents Extents of the collision component, expects a\n * 3 component array.\n */\n set extents(extents: Readonly) {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = extents[0];\n wasm.HEAPF32[ptr + 1] = extents[1];\n wasm.HEAPF32[ptr + 2] = extents[2];\n }\n\n /**\n * Get collision component radius.\n *\n * @note If {@link collider} is not {@link Collider.Sphere}, the returned value\n * corresponds to the radius of a sphere enclosing the shape.\n *\n * Example:\n *\n * ```js\n * sphere.radius = 3.0;\n * console.log(sphere.radius); // 3.0\n *\n * box.extents = [2.0, 2.0, 2.0];\n * console.log(box.radius); // 1.732...\n * ```\n *\n */\n get radius(): number {\n const wasm = this.engine.wasm;\n if (this.collider === Collider.Sphere)\n return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2];\n const extents = new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n const x2 = extents[0] * extents[0];\n const y2 = extents[1] * extents[1];\n const z2 = extents[2] * extents[2];\n return Math.sqrt(x2 + y2 + z2) / 2;\n }\n\n /**\n * Set collision component radius.\n *\n * @param radius Radius of the collision component\n *\n * @note If {@link collider} is not {@link Collider.Sphere},\n * the extents are set to form a square that fits a sphere with the provided radius.\n *\n * Example:\n *\n * ```js\n * aabbCollision.radius = 2.0; // AABB fits a sphere of radius 2.0\n * boxCollision.radius = 3.0; // Box now fits a sphere of radius 3.0, keeping orientation\n * ```\n *\n */\n set radius(radius: number) {\n const length = this.collider === Collider.Sphere ? radius : (2 * radius) / SQRT_3;\n this.extents.set([length, length, length]);\n }\n\n /**\n * Collision component group.\n *\n * The groups is a bitmask that is compared to other components in {@link CollisionComponent#queryOverlaps}\n * or the group in {@link Scene#rayCast}.\n *\n * Colliders that have no common groups will not overlap with each other. If a collider\n * has none of the groups set for {@link Scene#rayCast}, the ray will not hit it.\n *\n * Each bit represents belonging to a group, see example.\n *\n * ```js\n * // c belongs to group 2\n * c.group = (1 << 2);\n *\n * // c belongs to group 0\n * c.group = (1 << 0);\n *\n * // c belongs to group 0 *and* 2\n * c.group = (1 << 0) | (1 << 2);\n *\n * (c.group & (1 << 2)) != 0; // true\n * (c.group & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get group(): number {\n return this.engine.wasm._wl_collision_component_get_group(this._id);\n }\n\n /**\n * Set collision component group.\n *\n * @param group Group mask of the collision component.\n */\n set group(group: number) {\n this.engine.wasm._wl_collision_component_set_group(this._id, group);\n }\n\n /**\n * Query overlapping objects.\n *\n * Usage:\n *\n * ```js\n * const collision = object.getComponent('collision');\n * const overlaps = collision.queryOverlaps();\n * for(const otherCollision of overlaps) {\n * const otherObject = otherCollision.object;\n * console.log(`Collision with object ${otherObject.objectId}`);\n * }\n * ```\n *\n * @returns Collision components overlapping this collider.\n */\n queryOverlaps(): CollisionComponent[] {\n const count = this.engine.wasm._wl_collision_component_query_overlaps(\n this._id,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const overlaps: CollisionComponent[] = new Array(count);\n for (let i = 0; i < count; ++i) {\n const id = this.engine.wasm._tempMemUint16[i];\n overlaps[i] = this._scene._components.wrapCollision(id);\n }\n return overlaps;\n }\n}\n\n/**\n * Native text component\n *\n * Provides access to a native text component instance\n */\nexport class TextComponent extends Component {\n /** @override */\n static TypeName = 'text';\n\n /** Text component alignment. */\n @nativeProperty()\n get alignment(): Alignment {\n return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id);\n }\n\n /**\n * Set text component alignment.\n *\n * @param alignment Alignment for the text component.\n */\n set alignment(alignment: Alignment) {\n this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment);\n }\n\n /**\n * Text component vertical alignment.\n * @since 1.2.0\n */\n @nativeProperty()\n get verticalAlignment(): VerticalAlignment {\n return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id);\n }\n\n /**\n * Set text component vertical alignment.\n *\n * @param verticalAlignment Vertical for the text component.\n * @since 1.2.0\n */\n set verticalAlignment(verticalAlignment: VerticalAlignment) {\n this.engine.wasm._wl_text_component_set_vertical_alignment(\n this._id,\n verticalAlignment\n );\n }\n\n /**\n * Text component justification.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n @nativeProperty()\n get justification() {\n return this.verticalAlignment;\n }\n\n /**\n * Set text component justification.\n *\n * @param justification Justification for the text component.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n set justification(justification: VerticalAlignment) {\n this.verticalAlignment = justification;\n }\n\n /**\n * Whether text is justified horizontally.\n *\n * Aligns text horizontally to both margins by adding space between words.\n *\n * Requires {@link wrapMode} to be {@link TextWrapMode.Soft} or\n * {@link TextWrapMode.Hard} and non-0 {@link wrapWidth}.\n *\n * The last line in a paragraph is never justified and respects\n * {@link alignment}.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get justified(): boolean {\n return !!this.engine.wasm._wl_text_component_get_justified(this._id);\n }\n\n /**\n * Set whether text is justified horizontally.\n *\n * @param justified New justified state for the text component.\n * @since 1.3.0\n */\n set justified(justified: boolean) {\n this.engine.wasm._wl_text_component_set_justified(this._id, justified);\n }\n\n /** Text component character spacing. */\n @nativeProperty()\n get characterSpacing(): number {\n return this.engine.wasm._wl_text_component_get_character_spacing(this._id);\n }\n\n /**\n * Set text component character spacing.\n *\n * @param spacing Character spacing for the text component.\n */\n set characterSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing);\n }\n\n /** Text component line spacing. */\n @nativeProperty()\n get lineSpacing(): number {\n return this.engine.wasm._wl_text_component_get_line_spacing(this._id);\n }\n\n /**\n * Set text component line spacing.\n *\n * @param spacing Line spacing for the text component\n */\n set lineSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing);\n }\n\n /** Text component effect. */\n @nativeProperty()\n get effect(): TextEffect {\n return this.engine.wasm._wl_text_component_get_effect(this._id);\n }\n\n /**\n * Set text component effect.\n *\n * @param effect Effect for the text component\n */\n set effect(effect: TextEffect) {\n this.engine.wasm._wl_text_component_set_effect(this._id, effect);\n }\n\n /**\n * Equivalent to {@link getEffectOffset}.\n *\n * @note Prefer to use {@link getEffectOffset} for performance.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get effectOffset(): Float32Array {\n return this.getEffectOffset();\n }\n\n /**\n * Equivalent to {@link setEffectOffset}.\n *\n * @since 1.3.0\n */\n set effectOffset(offset: Readonly) {\n this.setEffectOffset(offset);\n }\n\n /** @overload */\n getEffectOffset(): Float32Array;\n /**\n * Get text component effect offset.\n *\n * @param out Destination array, expected to have at least 2 elements.\n * @returns The `out` parameter.\n *\n * @since 1.3.0\n */\n getEffectOffset(out: T): T;\n getEffectOffset(out: NumberArray = new Float32Array(2)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n return out;\n }\n\n /**\n * Set text component effect offset.\n *\n * The offset is given as X and Y factors for {@link Font.emHeight}. E.g. a\n * value of 2 in one axis offsets the effect by two font line heights. A\n * positive Y value moves the effect **upwards**.\n *\n * @param offset Array with new offset, expected to have at least 2 elements.\n *\n * @since 1.3.0\n */\n setEffectOffset(offset: Readonly) {\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(offset);\n wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem);\n }\n\n /**\n * Text component line wrap mode.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapMode(): TextWrapMode {\n return this.engine.wasm._wl_text_component_get_wrapMode(this._id);\n }\n\n /**\n * Set text component line wrap mode.\n *\n * @param wrapMode Line wrap mode for the text component.\n * @since 1.2.1\n */\n set wrapMode(wrapMode: TextWrapMode) {\n this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode);\n }\n\n /**\n * Text component line wrap width, in object space.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapWidth(): number {\n return this.engine.wasm._wl_text_component_get_wrapWidth(this._id);\n }\n\n /**\n * Set text component line wrap width.\n *\n * Only takes effect when {@link wrapMode} is something other than\n * {@link TextWrapMode.None}.\n *\n * @param width Line wrap width for the text component, in object space.\n * @since 1.2.1\n */\n set wrapWidth(width: number) {\n this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width);\n }\n\n /** Text component text. */\n @nativeProperty()\n get text(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_text_component_get_text(this._id);\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Set text component text.\n *\n * @param text Text of the text component.\n */\n set text(text: any) {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString()));\n }\n\n /**\n * Set material to render the text with.\n *\n * @param material New material.\n */\n set material(material: Material | null | undefined) {\n const matIndex = material ? material._id : 0;\n this.engine.wasm._wl_text_component_set_material(this._id, matIndex);\n }\n\n /** Material used to render the text. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_text_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** @overload */\n getBoundingBoxForText(text: string): Float32Array;\n /**\n * Axis-aligned bounding box for a given text, in object space.\n *\n * To calculate the size for the currently set text, use\n * {@link getBoundingBox}.\n *\n * Useful for calculating the text size before an update and potentially\n * adjusting the text:\n *\n * ```js\n * let updatedName = 'some very long name';\n * const box = new Float32Array(4);\n * text.getBoundingBoxForText(updatedName, box);\n * const width = box[2] - box[0];\n * if(width > 2.0) {\n * updatedName = updatedName.slice(0, 5) + '...';\n * }\n * text.text = updatedName;\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBoxForText(text: string, out: T): T;\n /** @overload */\n getBoundingBoxForText(\n text: string,\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n /* Offset by 4 floats, output is written to _tempMem */\n const textPtr = wasm.tempUTF8(text, 4 * 4);\n this.engine.wasm._wl_text_component_get_boundingBox(\n this._id,\n textPtr,\n wasm._tempMem\n );\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n getBoundingBox(): Float32Array;\n /**\n * Axis-aligned bounding box, in object space.\n *\n * The bounding box is computed using the current component properties\n * that influence the position and size of the text. The bounding box is\n * affected by alignment, spacing, effect type and the font set in the\n * material.\n *\n * To calculate the size for a different text, use\n * {@link getBoundingBoxForText}.\n *\n * Useful for adjusting text position or scaling:\n *\n * ```js\n * const box = new Float32Array(4);\n * text.getBoundingBox(box);\n * const width = box[2] - box[0];\n * // Make text 1m wide\n * text.object.setScalingLocal([1/width, 1, 1]);\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBox(out: T): T;\n /** @overload */\n getBoundingBox(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n}\n\n/**\n * Native view component.\n *\n * Provides access to a native view component instance.\n */\nexport class ViewComponent extends Component {\n /** @override */\n static TypeName = 'view';\n\n /**\n * Projection type of the view.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get projectionType(): ProjectionType {\n return this.engine.wasm._wl_view_component_get_projectionType(this._id);\n }\n\n /**\n * Set the projection type of the view.\n *\n * @param type New projection type.\n * @since 1.2.2\n */\n set projectionType(type) {\n this.engine.wasm._wl_view_component_set_projectionType(this._id, type);\n }\n\n /** @overload */\n getProjectionMatrix(): Float32Array;\n /**\n * Projection matrix.\n *\n * A 4x4 matrix that transforms from view space to a WebGL-compatible clip\n * space (-1 to 1 on all axes, near plane at -1, far plane at 1).\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the projection matrix reported by the device.\n *\n * @note This is not necessarily the final projection matrix used for\n * rendering. You can use it for unprojecting from screen space coordinates\n * to view space.\n *\n * @param out Destination array/vector, expected to have at least 16 elements.\n * @returns The `out` parameter.\n */\n getProjectionMatrix(out: T): T;\n getProjectionMatrix(out: NumberArray = new Float32Array(16)): NumberArray {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem);\n for (let i = 0; i < 16; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Equivalent to {@link ViewComponent.getProjectionMatrix}.\n *\n * @note Prefer to use {@link ViewComponent.getProjectionMatrix} for performance.\n */\n @enumerable()\n get projectionMatrix(): Float32Array {\n return this.getProjectionMatrix();\n }\n\n /**\n * Override projection matrix for this view.\n *\n * Bypasses the generation of the projection matrix from viewport, fov, near, far.\n *\n * @hidden\n */\n _setProjectionMatrix(v: Readonly) {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._tempMemFloat.set(v);\n wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem);\n }\n\n /**\n * Generate projection matrix from viewport, fov, near, far.\n *\n * Overwrites any projection matrix set manually.\n *\n * @hidden\n */\n _generateProjectionMatrix() {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_generate_projectionMatrix(this._id);\n }\n\n /** ViewComponent near clipping plane value. */\n @nativeProperty()\n get near(): number {\n return this.engine.wasm._wl_view_component_get_near(this._id);\n }\n\n /**\n * Set near clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param near Near depth value.\n */\n set near(near: number) {\n this.engine.wasm._wl_view_component_set_near(this._id, near);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(near, this.far);\n }\n }\n\n /** Far clipping plane value. */\n @nativeProperty()\n get far(): number {\n return this.engine.wasm._wl_view_component_get_far(this._id);\n }\n\n /**\n * Set far clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param far Near depth value.\n */\n set far(far: number) {\n this.engine.wasm._wl_view_component_set_far(this._id, far);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(this.near, far);\n }\n }\n\n /**\n * Get the horizontal field of view for the view, **in degrees**.\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the field of view reported by the device, regardless of the fov\n * that was set.\n */\n @nativeProperty()\n get fov(): number {\n return this.engine.wasm._wl_view_component_get_fov(this._id);\n }\n\n /**\n * Set the horizontal field of view for the view, **in degrees**.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Perspective}.\n *\n * If an XR session is active and this is the left or right eye view, the\n * field of view reported by the device is used and this value is ignored.\n * After the XR session ends, the new value is applied.\n *\n * @param fov Horizontal field of view, **in degrees**.\n */\n set fov(fov) {\n this.engine.wasm._wl_view_component_set_fov(this._id, fov);\n }\n\n /** @overload */\n getViewport(): Int32Array;\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n */\n getViewport(out: T): T;\n getViewport(out: NumberArray = new Int32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_view_component_get_viewport(this._id);\n for (let i = 0; i < 4; ++i) {\n out[i] = wasm.HEAPF32[ptr + i];\n }\n return out;\n }\n\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n */\n @enumerable()\n get viewport(): Int32Array {\n return this.getViewport();\n }\n\n /**\n * Set viewport.\n *\n * @hidden\n */\n _setViewport(x: number, y: number, width: number, height: number) {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_set_viewport(this._id, x, y, width, height);\n }\n\n /**\n * Get the width of the orthographic viewing volume.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get extent(): number {\n return this.engine.wasm._wl_view_component_get_extent(this._id);\n }\n\n /**\n * Set the width of the orthographic viewing volume.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Orthographic}.\n *\n * @param extent New extent.\n * @since 1.2.2\n */\n set extent(extent) {\n this.engine.wasm._wl_view_component_set_extent(this._id, extent);\n }\n}\n\n/**\n * Native input component.\n *\n * Provides access to a native input component instance.\n */\nexport class InputComponent extends Component {\n /** @override */\n static TypeName = 'input';\n\n /** Input component type */\n @nativeProperty()\n get inputType(): InputType {\n return this.engine.wasm._wl_input_component_get_type(this._id);\n }\n\n /**\n * Set input component type.\n *\n * @params New input component type.\n */\n set inputType(type: InputType) {\n this.engine.wasm._wl_input_component_set_type(this._id, type);\n }\n\n /**\n * WebXR Device API input source associated with this input component,\n * if type {@link InputType.ControllerLeft} or {@link InputType.ControllerRight}.\n */\n @enumerable()\n get xrInputSource(): XRInputSource | null {\n const xr = this.engine.xr;\n if (!xr) return null;\n\n for (let inputSource of xr.session.inputSources) {\n if (inputSource.handedness == this.handedness) {\n return inputSource;\n }\n }\n\n return null;\n }\n\n /**\n * 'left', 'right' or `null` depending on the {@link InputComponent#inputType}.\n */\n @enumerable()\n get handedness(): 'left' | 'right' | null {\n const inputType = this.inputType;\n if (\n inputType == InputType.ControllerRight ||\n inputType == InputType.RayRight ||\n inputType == InputType.EyeRight\n )\n return 'right';\n if (\n inputType == InputType.ControllerLeft ||\n inputType == InputType.RayLeft ||\n inputType == InputType.EyeLeft\n )\n return 'left';\n\n return null;\n }\n}\n\n/**\n * Native light component.\n *\n * Provides access to a native light component instance.\n */\nexport class LightComponent extends Component {\n /** @override */\n static TypeName = 'light';\n\n /** @overload */\n getColor(): Float32Array;\n /**\n * Get light color.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n * @since 1.0.0\n */\n getColor(out: T): T;\n getColor(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set light color.\n *\n * @param c New color array/vector, expected to have at least 3 elements.\n * @since 1.0.0\n */\n setColor(c: Readonly): void {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = c[0];\n wasm.HEAPF32[ptr + 1] = c[1];\n wasm.HEAPF32[ptr + 2] = c[2];\n }\n\n /**\n * View on the light color.\n *\n * @note Prefer to use {@link getColor} in performance-critical code.\n */\n @nativeProperty()\n get color(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_light_component_get_color(this._id),\n 3\n );\n }\n\n /**\n * Set light color.\n *\n * @param c Color of the light component.\n *\n * @note Prefer to use {@link setColor} in performance-critical code.\n */\n set color(c: Readonly) {\n this.color.set(c);\n }\n\n /** Light type. */\n @nativeProperty()\n get lightType(): LightType {\n return this.engine.wasm._wl_light_component_get_type(this._id);\n }\n\n /**\n * Set light type.\n *\n * @param lightType Type of the light component.\n */\n set lightType(t: LightType) {\n this.engine.wasm._wl_light_component_set_type(this._id, t);\n }\n\n /**\n * Light intensity.\n * @since 1.0.0\n */\n @nativeProperty()\n get intensity(): number {\n return this.engine.wasm._wl_light_component_get_intensity(this._id);\n }\n\n /**\n * Set light intensity.\n *\n * @param intensity Intensity of the light component.\n * @since 1.0.0\n */\n set intensity(intensity: number) {\n this.engine.wasm._wl_light_component_set_intensity(this._id, intensity);\n }\n\n /**\n * Outer angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get outerAngle(): number {\n return this.engine.wasm._wl_light_component_get_outerAngle(this._id);\n }\n\n /**\n * Set outer angle for spot lights.\n *\n * @param angle Outer angle, in degrees.\n * @since 1.0.0\n */\n set outerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle);\n }\n\n /**\n * Inner angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get innerAngle(): number {\n return this.engine.wasm._wl_light_component_get_innerAngle(this._id);\n }\n\n /**\n * Set inner angle for spot lights.\n *\n * @param angle Inner angle, in degrees.\n * @since 1.0.0\n */\n set innerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle);\n }\n\n /**\n * Whether the light casts shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadows(): boolean {\n return !!this.engine.wasm._wl_light_component_get_shadows(this._id);\n }\n\n /**\n * Set whether the light casts shadows.\n *\n * @param b Whether the light casts shadows.\n * @since 1.0.0\n */\n set shadows(b: boolean) {\n this.engine.wasm._wl_light_component_set_shadows(this._id, b);\n }\n\n /**\n * Range for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowRange(): number {\n return this.engine.wasm._wl_light_component_get_shadowRange(this._id);\n }\n\n /**\n * Set range for shadows.\n *\n * @param range Range for shadows.\n * @since 1.0.0\n */\n set shadowRange(range: number) {\n this.engine.wasm._wl_light_component_set_shadowRange(this._id, range);\n }\n\n /**\n * Bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowBias(this._id);\n }\n\n /**\n * Set bias value for shadows.\n *\n * @param bias Bias for shadows.\n * @since 1.0.0\n */\n set shadowBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias);\n }\n\n /**\n * Normal bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowNormalBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id);\n }\n\n /**\n * Set normal bias value for shadows.\n *\n * @param bias Normal bias for shadows.\n * @since 1.0.0\n */\n set shadowNormalBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias);\n }\n\n /**\n * Texel size for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowTexelSize(): number {\n return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id);\n }\n\n /**\n * Set texel size for shadows.\n *\n * @param size Texel size for shadows.\n * @since 1.0.0\n */\n set shadowTexelSize(size: number) {\n this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size);\n }\n\n /**\n * Cascade count for {@link LightType.Sun} shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get cascadeCount(): number {\n return this.engine.wasm._wl_light_component_get_cascadeCount(this._id);\n }\n\n /**\n * Set cascade count for {@link LightType.Sun} shadows.\n *\n * @param count Cascade count.\n * @since 1.0.0\n */\n set cascadeCount(count: number) {\n this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count);\n }\n}\n\n/**\n * Native animation component.\n *\n * Provides access to a native animation component instance.\n */\nexport class AnimationComponent extends Component {\n /** @override */\n static TypeName = 'animation';\n\n /**\n * Emitter for animation events triggered on this component.\n *\n * The first argument is the name of the event.\n */\n readonly onEvent = new Emitter<[string]>();\n\n /**\n * Set animation to play.\n *\n * Make sure to {@link Animation#retarget} the animation to affect the\n * right objects.\n *\n * @param anim Animation to play.\n */\n set animation(anim: Animation | null | undefined) {\n this.scene.assertOrigin(anim);\n this.engine.wasm._wl_animation_component_set_animation(\n this._id,\n anim ? anim._id : 0\n );\n }\n\n /** Animation set for this component */\n @nativeProperty()\n get animation(): Animation | null {\n const index = this.engine.wasm._wl_animation_component_get_animation(this._id);\n return this._scene.animations.wrap(index);\n }\n\n /**\n * Set play count. Set to `0` to loop indefinitely.\n *\n * @param playCount Number of times to repeat the animation.\n */\n set playCount(playCount: number) {\n this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount);\n }\n\n /** Number of times the animation is played. */\n @nativeProperty()\n get playCount(): number {\n return this.engine.wasm._wl_animation_component_get_playCount(this._id);\n }\n\n /**\n * Set speed. Set to negative values to run the animation backwards.\n *\n * Setting speed has an immediate effect for the current frame's update\n * and will continue with the speed from the current point in the animation.\n *\n * @param speed New speed at which to play the animation.\n * @since 0.8.10\n */\n set speed(speed: number) {\n this.engine.wasm._wl_animation_component_set_speed(this._id, speed);\n }\n\n /**\n * Speed factor at which the animation is played.\n *\n * @since 0.8.10\n */\n @nativeProperty()\n get speed(): number {\n return this.engine.wasm._wl_animation_component_get_speed(this._id);\n }\n\n /** Current playing state of the animation */\n @enumerable()\n get state(): AnimationState {\n return this.engine.wasm._wl_animation_component_state(this._id);\n }\n\n /**\n * How to handle root motion on this component.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n @enumerable()\n get rootMotionMode(): RootMotionMode {\n return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id);\n }\n\n /**\n * Set how to handle root motion.\n *\n * @param mode Mode to handle root motion, see {@link RootMotionMode}.\n * @since 1.2.2\n */\n set rootMotionMode(mode: RootMotionMode) {\n this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode);\n }\n\n /**\n * Current iteration of the animation.\n *\n * If {@link playCount} is not unlimited, the value is in the range from\n * `0` to `playCount`.\n *\n * @since 1.2.3\n */\n get iteration(): number {\n return this.engine.wasm._wl_animation_component_get_iteration(this._id);\n }\n\n /**\n * Current playing position of the animation within the current iteration,\n * in seconds.\n *\n * The value is in the range from `0.0` to {@link AnimationComponent#duration},\n * if playing in reverse, this range is reversed as well.\n *\n * @since 1.2.3\n */\n get position(): number {\n return this.engine.wasm._wl_animation_component_get_position(this._id);\n }\n\n /**\n * Current duration to loop one iteration in seconds, offers a more accurate duration\n * than {@link Animation#duration} when blending multiple animations.\n *\n * @since 1.2.3\n */\n get duration(): number {\n return this.engine.wasm._wl_animation_component_get_duration(this._id);\n }\n\n /**\n * Play animation.\n *\n * If the animation is currently paused, resumes from that position. If the\n * animation is already playing, does nothing.\n *\n * To restart the animation, {@link AnimationComponent#stop} it first.\n */\n play(): void {\n this.engine.wasm._wl_animation_component_play(this._id);\n }\n\n /** Stop animation. */\n stop(): void {\n this.engine.wasm._wl_animation_component_stop(this._id);\n }\n\n /** Pause animation. */\n pause(): void {\n this.engine.wasm._wl_animation_component_pause(this._id);\n }\n\n /**\n * Get the value of a float parameter in the attached graph.\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @since 1.2.0\n */\n getFloatParameter(name: string): number | null {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n }\n\n /**\n * Set the value of a float parameter in the attached graph\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @param value Float value to set.\n * @returns 1 if the parameter was successfully set, 0 on fail.\n * @since 1.2.0\n */\n setFloatParameter(name: string, value: number): void {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._tempMemFloat[0] = value;\n wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem);\n }\n\n /** @overload */\n getRootMotionTranslation(): Float32Array;\n /**\n * Get the root motion translation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity translation.\n *\n * @since 1.2.2\n */\n getRootMotionTranslation(out: T): T;\n getRootMotionTranslation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRootMotionRotation(): Float32Array;\n /**\n * Get the root motion rotation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity rotation.\n *\n * @since 1.2.2\n */\n getRootMotionRotation(out: T): T;\n getRootMotionRotation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n}\n\n/**\n * Native mesh component.\n *\n * Provides access to a native mesh component instance.\n */\nexport class MeshComponent extends Component {\n /** @override */\n static TypeName = 'mesh';\n\n /**\n * Set material to render the mesh with.\n *\n * @param material Material to render the mesh with.\n */\n set material(material: Material | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_material(\n this._id,\n material ? material._id : 0\n );\n }\n\n /** Material used to render the mesh. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_mesh_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** Mesh rendered by this component. */\n @nativeProperty()\n get mesh(): Mesh | null {\n const index = this.engine.wasm._wl_mesh_component_get_mesh(this._id);\n return this.engine.meshes.wrap(index);\n }\n\n /**\n * Set mesh to rendered with this component.\n *\n * @param mesh Mesh rendered by this component.\n */\n set mesh(mesh: Mesh | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0);\n }\n\n /** Skin for this mesh component. */\n @nativeProperty()\n get skin(): Skin | null {\n const index = this.engine.wasm._wl_mesh_component_get_skin(this._id);\n return this._scene.skins.wrap(index);\n }\n\n /**\n * Set skin to transform this mesh component.\n *\n * @param skin Skin to use for rendering skinned meshes.\n */\n set skin(skin: Skin | null | undefined) {\n this.scene.assertOrigin(skin);\n this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0);\n }\n\n /**\n * Morph targets for this mesh component.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargets(): MorphTargets | null {\n const index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id);\n return this.engine.morphTargets.wrap(index);\n }\n\n /**\n * Set morph targets to transform this mesh component.\n *\n * @param morphTargets Morph targets to use for rendering.\n *\n * @since 1.2.0\n */\n set morphTargets(morphTargets: MorphTargets | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_morph_targets(\n this._id,\n morphTargets?._id ?? 0\n );\n }\n\n /**\n * Equivalent to {@link getMorphTargetWeights}.\n *\n * @note Prefer to use {@link getMorphTargetWeights} for performance.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargetWeights(): Float32Array {\n return this.getMorphTargetWeights();\n }\n\n /**\n * Set the morph target weights to transform this mesh component.\n *\n * @param weights New weights.\n *\n * @since 1.2.0\n */\n set morphTargetWeights(weights: Readonly) {\n this.setMorphTargetWeights(weights);\n }\n\n /** @overload */\n getMorphTargetWeights(): Float32Array;\n /**\n * Get morph target weights for this mesh component.\n *\n * @param out Destination array, expected to have at least as many elements\n * as {@link MorphTargets.count}.\n * @returns The `out` parameter.\n *\n * @since 1.2.0\n */\n getMorphTargetWeights(out: T): T;\n getMorphTargetWeights(out?: NumberArray): NumberArray {\n const wasm = this.engine.wasm;\n const count = wasm._wl_mesh_component_get_morph_target_weights(\n this._id,\n wasm._tempMem\n );\n if (!out) {\n out = new Float32Array(count);\n }\n for (let i = 0; i < count; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Get the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @returns The weight.\n *\n * @since 1.2.0\n */\n getMorphTargetWeight(target: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n return this.engine.wasm._wl_mesh_component_get_morph_target_weight(\n this._id,\n target\n );\n }\n\n /**\n * Set morph target weights for this mesh component.\n *\n * @param weights Array of new weights, expected to have at least as many\n * elements as {@link MorphTargets.count}.\n *\n * @since 1.2.0\n */\n setMorphTargetWeights(weights: Readonly) {\n const count = this.morphTargets?.count ?? 0;\n if (weights.length !== count) {\n throw new Error(`Expected ${count} weights but got ${weights.length}`);\n }\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(weights);\n wasm._wl_mesh_component_set_morph_target_weights(\n this._id,\n wasm._tempMem,\n weights.length\n );\n }\n\n /**\n * Set the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @param weight The new weight.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\n setMorphTargetWeight(target: number, weight: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n this.engine.wasm._wl_mesh_component_set_morph_target_weight(\n this._id,\n target,\n weight\n );\n }\n}\n\n/**\n * Native particle effect component.\n *\n * @since 1.4.0\n */\nexport class ParticleEffectComponent extends Component {\n /** @override */\n static TypeName = 'particle-effect';\n\n /** Particle effect used by this component. */\n @nativeProperty()\n get particleEffect(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(\n this._id\n );\n return this.engine.particleEffects.wrap(index);\n }\n\n /**\n * Set particle effect to use with this component.\n *\n * @param particleEffect Particle effect used by this component.\n */\n set particleEffect(particleEffect: ParticleEffect | null | undefined) {\n this.engine.wasm._wl_particleEffect_component_set_particleEffect(\n this._id,\n particleEffect?._id ?? 0\n );\n }\n}\n\n/**\n * Enum for Physics axes locking\n *\n * See {@link PhysXComponent.angularLockAxis} and {@link PhysXComponent.linearLockAxis}.\n */\nexport enum LockAxis {\n /**\n * No axis selected.\n */\n None = 0,\n\n /**\n * **X axis**:\n */\n X = 1 << 0,\n\n /**\n * **Y axis**:\n */\n Y = 1 << 1,\n\n /**\n * **Z axis**:\n */\n Z = 1 << 2,\n}\n\n/**\n * Native physx rigid body component.\n *\n * Provides access to a native mesh component instance.\n * Only available when using physx enabled runtime, see \"Project Settings > Runtime\".\n */\nexport class PhysXComponent extends Component {\n /** @override */\n static TypeName = 'physx';\n\n /** @overload */\n getTranslationOffset(): Float32Array;\n /**\n * Local translation offset.\n *\n * Allows to move a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getTranslationOffset(out: T): T;\n getTranslationOffset(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRotationOffset(): Float32Array;\n /**\n * Local rotation offset represented as a quaternion.\n *\n * Allows to rotate a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getRotationOffset(out: T): T;\n getRotationOffset(out: NumberArray = new Float32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr =\n wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * The shape extents for collision detection.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_physx_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** @overload */\n getLinearVelocity(): Float32Array;\n /**\n * Linear velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLinearVelocity(out: T): T;\n getLinearVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_linearVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getAngularVelocity(): Float32Array;\n /**\n * Angular velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getAngularVelocity(out: T): T;\n getAngularVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_angularVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /**\n * Set whether this rigid body is static.\n *\n * Setting this property only takes effect once the component\n * switches from inactive to active.\n *\n * @param b Whether the rigid body should be static.\n */\n set static(b: boolean) {\n this.engine.wasm._wl_physx_component_set_static(this._id, b);\n }\n\n /**\n * Whether this rigid body is static.\n *\n * This property returns whether the rigid body is *effectively*\n * static. If static property was set while the rigid body was\n * active, it will not take effect until the rigid body is set\n * inactive and active again. Until the component is set inactive,\n * this getter will return whether the rigid body is actually\n * static.\n */\n @nativeProperty()\n get static(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_static(this._id);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getTranslationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getTranslationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get translationOffset(): Float32Array {\n return this.getTranslationOffset();\n }\n\n /**\n * Set the offset translation.\n *\n * The array must be a vector of at least **3** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set translationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetTranslation(\n this._id,\n offset[0],\n offset[1],\n offset[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getRotationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getRotationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get rotationOffset(): Float32Array {\n return this.getRotationOffset();\n }\n\n /**\n * Set the offset rotation.\n *\n * The array must be a quaternion of at least **4** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set rotationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetRotation(\n this._id,\n offset[0],\n offset[1],\n offset[2],\n offset[3]\n );\n }\n\n /**\n * Set whether this rigid body is kinematic.\n *\n * @param b Whether the rigid body should be kinematic.\n */\n set kinematic(b: boolean) {\n this.engine.wasm._wl_physx_component_set_kinematic(this._id, b);\n }\n\n /**\n * Whether this rigid body is kinematic.\n */\n @nativeProperty()\n get kinematic(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id);\n }\n\n /**\n * Set whether this rigid body's gravity is enabled.\n *\n * @param b Whether the rigid body's gravity should be enabled.\n */\n set gravity(b: boolean) {\n this.engine.wasm._wl_physx_component_set_gravity(this._id, b);\n }\n\n /**\n * Whether this rigid body's gravity flag is enabled.\n */\n @nativeProperty()\n get gravity(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_gravity(this._id);\n }\n\n /**\n * Set whether this rigid body's simulate flag is enabled.\n *\n * @param b Whether the rigid body's simulate flag should be enabled.\n */\n set simulate(b: boolean) {\n this.engine.wasm._wl_physx_component_set_simulate(this._id, b);\n }\n\n /**\n * Whether this rigid body's simulate flag is enabled.\n */\n @nativeProperty()\n get simulate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_simulate(this._id);\n }\n\n /**\n * Set whether to allow simulation of this rigid body.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling {@link allowSimulation} while {@link trigger} is enabled\n * will disable {@link trigger}.\n *\n * @param b Whether to allow simulation of this rigid body.\n */\n set allowSimulation(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b);\n }\n\n /**\n * Whether to allow simulation of this rigid body.\n */\n @nativeProperty()\n get allowSimulation(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id);\n }\n\n /**\n * Set whether this rigid body may be queried in ray casts.\n *\n * @param b Whether this rigid body may be queried in ray casts.\n */\n set allowQuery(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b);\n }\n\n /**\n * Whether this rigid body may be queried in ray casts.\n */\n @nativeProperty()\n get allowQuery(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id);\n }\n\n /**\n * Set whether this physics body is a trigger.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling trigger while {@link allowSimulation} is enabled,\n * will disable {@link allowSimulation}.\n *\n * @param b Whether this physics body is a trigger.\n */\n set trigger(b: boolean) {\n this.engine.wasm._wl_physx_component_set_trigger(this._id, b);\n }\n\n /**\n * Whether this physics body is a trigger.\n */\n @nativeProperty()\n get trigger(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_trigger(this._id);\n }\n\n /**\n * Set the shape for collision detection.\n *\n * @param s New shape.\n * @since 0.8.5\n */\n set shape(s: Shape) {\n this.engine.wasm._wl_physx_component_set_shape(this._id, s);\n }\n\n /** The shape for collision detection. */\n @nativeProperty()\n get shape(): Shape {\n return this.engine.wasm._wl_physx_component_get_shape(this._id);\n }\n\n /**\n * Set additional data for the shape.\n *\n * Retrieved only from {@link PhysXComponent#shapeData}.\n * @since 0.8.10\n */\n set shapeData(d) {\n if (d == null || !isMeshShape(this.shape)) return;\n this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index);\n }\n\n /**\n * Additional data for the shape.\n *\n * `null` for {@link Shape} values: `None`, `Sphere`, `Capsule`, `Box`, `Plane`.\n * `{index: n}` for `TriangleMesh` and `ConvexHull`.\n *\n * This data is currently only for passing onto or creating other {@link PhysXComponent}.\n * @since 0.8.10\n */\n @nativeProperty()\n get shapeData(): {\n index: number;\n } | null {\n if (!isMeshShape(this.shape)) return null;\n return {\n index: this.engine.wasm._wl_physx_component_get_shape_data(this._id),\n };\n }\n\n /**\n * Set the shape extents for collision detection.\n *\n * @param e New extents for the shape.\n * @since 0.8.5\n */\n set extents(e: Readonly) {\n this.extents.set(e);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getExtents}.\n *\n * @note Prefer to use {@link PhysXComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n const wasm = this.engine.wasm;\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const ptr = wasm._wl_physx_component_get_extents(this._id);\n return new Float32Array(wasm.HEAPF32.buffer, ptr, 3);\n }\n\n /**\n * Get staticFriction.\n */\n @nativeProperty()\n get staticFriction(): number {\n return this.engine.wasm._wl_physx_component_get_staticFriction(this._id);\n }\n\n /**\n * Set staticFriction.\n * @param v New staticFriction.\n */\n set staticFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v);\n }\n\n /**\n * Get dynamicFriction.\n */\n @nativeProperty()\n get dynamicFriction(): number {\n return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id);\n }\n\n /**\n * Set dynamicFriction\n * @param v New dynamicDamping.\n */\n set dynamicFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v);\n }\n\n /**\n * Get bounciness.\n * @since 0.9.0\n */\n @nativeProperty()\n get bounciness(): number {\n return this.engine.wasm._wl_physx_component_get_bounciness(this._id);\n }\n\n /**\n * Set bounciness.\n * @param v New bounciness.\n * @since 0.9.0\n */\n set bounciness(v: number) {\n this.engine.wasm._wl_physx_component_set_bounciness(this._id, v);\n }\n\n /**\n * Get linearDamping/\n */\n @nativeProperty()\n get linearDamping(): number {\n return this.engine.wasm._wl_physx_component_get_linearDamping(this._id);\n }\n\n /**\n * Set linearDamping.\n * @param v New linearDamping.\n */\n set linearDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v);\n }\n\n /** Get angularDamping. */\n @nativeProperty()\n get angularDamping(): number {\n return this.engine.wasm._wl_physx_component_get_angularDamping(this._id);\n }\n\n /**\n * Set angularDamping.\n * @param v New angularDamping.\n */\n set angularDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v);\n }\n\n /**\n * Set linear velocity.\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New linear velocity.\n */\n set linearVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getLinearVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getLinearVelocity} for performance.\n */\n @nativeProperty()\n get linearVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set angular velocity\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New angular velocity\n */\n set angularVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_angularVelocity(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getAngularVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getAngularVelocity} for performance.\n */\n @nativeProperty()\n get angularVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set the components groups mask.\n *\n * @param flags New flags that need to be set.\n */\n set groupsMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags);\n }\n\n /**\n * Get the components groups mask flags.\n *\n * Each bit represents membership to group, see example.\n *\n * ```js\n * // Assign c to group 2\n * c.groupsMask = (1 << 2);\n *\n * // Assign c to group 0\n * c.groupsMask = (1 << 0);\n *\n * // Assign c to group 0 and 2\n * c.groupsMask = (1 << 0) | (1 << 2);\n *\n * (c.groupsMask & (1 << 2)) != 0; // true\n * (c.groupsMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get groupsMask(): number {\n return this.engine.wasm._wl_physx_component_get_groupsMask(this._id);\n }\n\n /**\n * Set the components blocks mask.\n *\n * @param flags New flags that need to be set.\n */\n set blocksMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags);\n }\n\n /**\n * Get the components blocks mask flags.\n *\n * Each bit represents membership to the block, see example.\n *\n * ```js\n * // Block overlap with any objects in group 2\n * c.blocksMask = (1 << 2);\n *\n * // Block overlap with any objects in group 0\n * c.blocksMask = (1 << 0)\n *\n * // Block overlap with any objects in group 0 and 2\n * c.blocksMask = (1 << 0) | (1 << 2);\n *\n * (c.blocksMask & (1 << 2)) != 0; // true\n * (c.blocksMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get blocksMask(): number {\n return this.engine.wasm._wl_physx_component_get_blocksMask(this._id);\n }\n\n /**\n * Set axes to lock for linear velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * Combine flags with Bitwise OR:\n *\n * ```js\n * body.linearLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.linearLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set linearLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock);\n }\n\n /**\n * Get the linear lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed.\n *\n * ```js\n * if(body.linearLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for linear movement.\n */\n @nativeProperty()\n get linearLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id);\n }\n\n /**\n * Set axes to lock for angular velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * ```js\n * body.angularLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.angularLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set angularLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock);\n }\n\n /**\n * Get the angular lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed:\n *\n * ```js\n * if(body.angularLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for angular movement.\n */\n @nativeProperty()\n get angularLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id);\n }\n\n /**\n * Set mass.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * @param m New mass.\n */\n set mass(m: number) {\n this.engine.wasm._wl_physx_component_set_mass(this._id, m);\n }\n\n /** Mass */\n @nativeProperty()\n get mass(): number {\n return this.engine.wasm._wl_physx_component_get_mass(this._id);\n }\n\n /**\n * Set mass space interia tensor.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New mass space interatia tensor.\n */\n set massSpaceInteriaTensor(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Set the rigid body to sleep upon activation.\n *\n * When asleep, the rigid body will not be simulated until the next contact.\n *\n * @param flag `true` to sleep upon activation.\n *\n * @since 1.1.5\n */\n set sleepOnActivate(flag: boolean) {\n this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag);\n }\n\n /**\n * `true` if the rigid body is set to sleep upon activation, `false` otherwise.\n *\n * @since 1.1.5\n */\n @nativeProperty()\n get sleepOnActivate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id);\n }\n\n /**\n * Apply a force.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n * @param localForce Whether the force vector is in local space, default `false`.\n * @param p Position to apply force at, default is center of mass.\n * @param local Whether position is in local space, default `false`.\n */\n addForce(\n f: Readonly,\n m: ForceMode = ForceMode.Force,\n localForce: boolean = false,\n p?: Readonly,\n local: boolean = false\n ) {\n const wasm = this.engine.wasm;\n if (!p) {\n wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce);\n return;\n }\n wasm._wl_physx_component_addForceAt(\n this._id,\n f[0],\n f[1],\n f[2],\n m,\n localForce,\n p[0],\n p[1],\n p[2],\n local\n );\n }\n\n /**\n * Apply torque.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n */\n addTorque(f: Readonly, m: ForceMode = ForceMode.Force) {\n this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m);\n }\n\n /**\n * Add on collision callback.\n *\n * @param callback Function to call when this rigid body (un)collides with any other.\n *\n * ```js\n * let rigidBody = this.object.getComponent('physx');\n * rigidBody.onCollision(function(type, other) {\n * // Ignore uncollides\n * if(type == CollisionEventType.TouchLost) return;\n *\n * // Take damage on collision with enemies\n * if(other.object.name.startsWith(\"enemy-\")) {\n * this.applyDamage(10);\n * }\n * }.bind(this));\n * ```\n *\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollision(callback: CollisionCallback): number {\n return this.onCollisionWith(this, callback);\n }\n\n /**\n * Add filtered on collision callback.\n *\n * @param otherComp Component for which callbacks will\n * be triggered. If you pass this component, the method is equivalent to.\n * {@link PhysXComponent#onCollision}.\n * @param callback Function to call when this rigid body\n * (un)collides with `otherComp`.\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollisionWith(otherComp: this, callback: CollisionCallback): number {\n const callbacks = this.scene._pxCallbacks;\n if (!callbacks.has(this._id)) {\n callbacks.set(this._id, []);\n }\n callbacks.get(this._id)!.push(callback);\n return this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id);\n }\n\n /**\n * Remove a collision callback added with {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n *\n * @param callbackId Callback id as returned by {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n * @throws When the callback does not belong to the component.\n * @throws When the callback does not exist.\n */\n removeCollisionCallback(callbackId: number): void {\n const r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId);\n const callbacks = this.scene._pxCallbacks;\n /* r is the amount of object to remove from the end of the\n * callbacks array for this object */\n if (r) callbacks.get(this._id)!.splice(-r);\n }\n}\n\n/**\n * Access to the physics scene\n */\nexport class Physics {\n /**\n * Hit.\n * @hidden\n */\n _hit: RayHit;\n\n /**\n * Wonderland Engine instance\n * @hidden\n */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * Ray Hit\n * @hidden\n */\n private _rayHit: number;\n\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n const wasm = engine.wasm;\n this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(engine.scene, this._rayHit);\n\n /* Setup the physics callback. */\n wasm._wl_physx_set_collision_callback(\n wasm.addFunction((a: number, index: number, type: number, b: number) => {\n const physxA = this._engine.scene._components.wrapPhysx(a)!;\n const physxB = this._engine.scene._components.wrapPhysx(b)!;\n /* We assume that the map returns an array. If not,\n * this is an internal engine error. */\n const callbacks = this._engine.scene._pxCallbacks.get(physxA._id)!;\n const callback = callbacks[index];\n callback(type, physxB as PhysXComponent);\n }, 'viiii')\n );\n }\n\n /**\n * Cast a ray through the scene and find intersecting physics components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.physics.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against physics components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of physics groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Physics}\n * instance and will be reused with the next {@link Physics#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance: number = 100.0\n ): RayHit {\n const scene = this._engine.scene._index;\n this._engine.wasm._wl_physx_ray_cast(\n scene,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n maxDistance,\n this._rayHit\n );\n return this._hit;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Mesh index type.\n */\nexport enum MeshIndexType {\n /** Single byte mesh index, range 0-255 */\n UnsignedByte = 1,\n\n /** Two byte mesh index, range 0-65535 */\n UnsignedShort = 2,\n\n /** Four byte mesh index, range 0-4294967295 */\n UnsignedInt = 4,\n}\n\n/**\n * Mesh skinning type.\n */\nexport enum MeshSkinningType {\n /** Not skinned */\n None = 0,\n\n /** Skinned, 4 joints/weight per vertex */\n FourJoints = 1,\n\n /** Skinned, 8 joints/weight per vertex */\n EightJoints = 2,\n}\n\n/**\n * Mesh constructor parameters object.\n *\n * Usage:\n *\n * ```js\n * const mesh = Mesh({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n */\nexport interface MeshParameters {\n /** Number of vertices to allocate. */\n vertexCount: number;\n /** Index data values. */\n indexData: Readonly;\n /** Index type, `null` if not indexed. */\n indexType: MeshIndexType;\n /** Whether the mesh should be skinned. Defaults to not skinned. */\n skinningType: MeshSkinningType;\n}\n\n/**\n * Wrapper around a native mesh data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link MeshManager} class.\n *\n * #### Update\n *\n * To modify a mesh, you get access to a {@link MeshAttributeAccessor} that\n * allows you to modify the content of the buffers:\n *\n * Usage:\n *\n * ```js\n * const mesh = engine.es.create({vertexCount: 3, indexData: [0, 1, 2]});\n * const positions = mesh.attribute(MeshAttribute.Position);\n * ...\n * ```\n *\n * @note Meshes are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Mesh extends Resource {\n /**\n * @deprecated Use {@link MeshManager.create} instead, accessible via {@link WonderlandEngine.meshes}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ...\n * mesh.update();\n * ```\n */\n constructor(engine: WonderlandEngine, params: Partial | number) {\n if (!isNumber(params)) {\n const mesh = engine.meshes.create(params);\n /* `super()` must be called as stated in the specification */\n super(engine, mesh._index);\n return mesh;\n }\n super(engine, params);\n }\n\n /** Number of vertices in this mesh. */\n get vertexCount(): number {\n return this.engine.wasm._wl_mesh_get_vertexCount(this._id);\n }\n\n /** Index data (read-only) or `null` if the mesh is not indexed. */\n get indexData(): Uint8Array | Uint16Array | Uint32Array | null {\n const wasm = this.engine.wasm;\n const tempMem = wasm._tempMem;\n const ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4);\n if (ptr === null) return null;\n\n const indexCount = wasm.HEAPU32[tempMem / 4];\n const indexSize = wasm.HEAPU32[tempMem / 4 + 1];\n switch (indexSize) {\n case MeshIndexType.UnsignedByte:\n return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedShort:\n return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedInt:\n return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount);\n }\n return null;\n }\n\n /**\n * Apply changes to {@link attribute | vertex attributes}.\n *\n * Uploads the updated vertex attributes to the GPU and updates the bounding\n * sphere to match the new vertex positions.\n *\n * Since this is an expensive operation, call it only once you have performed\n * all modifications on a mesh and avoid calling if you did not perform any\n * modifications at all.\n */\n update() {\n this.engine.wasm._wl_mesh_update(this._id);\n }\n\n /** @overload */\n getBoundingSphere(): Float32Array;\n /** @overload */\n getBoundingSphere(out: T): T;\n /**\n * Mesh bounding sphere.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * ```js\n * const sphere = new Float32Array(4);\n * for(...) {\n * mesh.getBoundingSphere(sphere);\n * ...\n * }\n * ```\n *\n * If the position data is changed, call {@link Mesh#update} to update the\n * bounding sphere.\n *\n * @returns Bounding sphere, 0-2 sphere origin, 3 radius.\n */\n getBoundingSphere(out: T | Float32Array): T | Float32Array;\n getBoundingSphere(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n attribute(\n attr: MeshAttribute.Position\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Tangent\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Normal\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.TextureCoordinate\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Color\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointId\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointWeight\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.SecondaryTextureCoordinate\n ): MeshAttributeAccessor | null;\n /**\n * Get an attribute accessor to retrieve or modify data of give attribute.\n *\n * @param attr Attribute to get access to\n * @returns Attribute to get access to or `null`, if mesh does not have this attribute.\n *\n * Call {@link update} for changes to vertex attributes to take effect.\n *\n * If there are no shaders in the scene that use `TextureCoordinate` for example,\n * no meshes will have the `TextureCoordinate` attribute.\n *\n * For flexible reusable components, take this into account that only `Position`\n * is guaranteed to be present at all time.\n */\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null;\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null {\n if (typeof attr != 'number')\n throw new TypeError('Expected number, but got ' + typeof attr);\n\n const wasm = this.engine.wasm;\n const tempMemUint32 = wasm._tempMemUint32;\n wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem);\n if (tempMemUint32[0] == 255) return null;\n\n const arraySize = tempMemUint32[5];\n return new MeshAttributeAccessor(this.engine, {\n attribute: tempMemUint32[0],\n offset: tempMemUint32[1],\n stride: tempMemUint32[2],\n formatSize: tempMemUint32[3],\n componentCount: tempMemUint32[4],\n /* The WASM API returns `0` for a scalar value. We clamp it to 1 as we strictly use it as a multiplier for get/set operations */\n arraySize: arraySize ? arraySize : 1,\n length: this.vertexCount,\n bufferType: (attr !== MeshAttribute.JointId\n ? Float32Array\n : Uint16Array) as TypedArrayCtor,\n });\n }\n\n /**\n * Destroy and free the meshes memory.\n *\n * It is best practice to set the mesh variable to `null` after calling\n * destroy to prevent accidental use:\n *\n * ```js\n * mesh.destroy();\n * mesh = null;\n * ```\n *\n * Accessing the mesh after destruction behaves like accessing an empty\n * mesh.\n *\n * @since 0.9.0\n */\n destroy(): void {\n this.engine.wasm._wl_mesh_destroy(this._id);\n this.engine.meshes._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Mesh(destroyed)';\n }\n return `Mesh(${this._index})`;\n }\n}\n\n/**\n * Options to create a new {@link MeshAttributeAccessor} instance.\n */\ninterface MeshAttributeAccessorOptions {\n attribute: number;\n offset: number;\n stride: number;\n formatSize: number;\n componentCount: number;\n arraySize: number;\n length: number;\n bufferType: T;\n}\n\n/**\n * An iterator over a mesh vertex attribute.\n *\n * Usage:\n *\n * ```js\n * const mesh = this.object.getComponent('mesh').mesh;\n * const positions = mesh.attribute(MeshAttribute.Position);\n *\n * // Equivalent to `new Float32Array(3)`.\n * const temp = positions.createArray();\n *\n * for(let i = 0; i < positions.length; ++i) {\n * // `pos` will reference `temp` and thereby not allocate additional\n * // memory, which would cause a perf spike when collected.\n * const pos = positions.get(i, temp);\n * // Scale position by 2 on x-axis only.\n * pos[0] *= 2.0;\n * positions.set(i, pos);\n * }\n * // We're done modifying, tell the engine to move vertex data to the GPU.\n * mesh.update();\n * ```\n */\nexport class MeshAttributeAccessor {\n /** Max number of elements. */\n readonly length: number = 0;\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Attribute index. @hidden */\n private _attribute: number = -1;\n /** Attribute offset. @hidden */\n private _offset: number = 0;\n /** Attribute stride. @hidden */\n private _stride: number = 0;\n /** Format size native enum. @hidden */\n private _formatSize: number = 0;\n /** Number of components per vertex. @hidden */\n private _componentCount: number = 0;\n /** Number of values per vertex. @hidden */\n private _arraySize: number = 1;\n\n /**\n * Class to instantiate an ArrayBuffer to get/set values.\n */\n private _bufferType: T;\n /**\n * Function to allocate temporary WASM memory. It is cached in the accessor to avoid\n * conditionals during get/set.\n */\n private _tempBufferGetter: (bytes: number) => TypedArray;\n\n /**\n * Create a new instance.\n *\n * @note Please use {@link Mesh.attribute} to create a new instance.\n *\n * @param options Contains information about how to read the data.\n * @note Do not use this constructor. Instead, please use the {@link Mesh.attribute} method.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, options: MeshAttributeAccessorOptions) {\n this._engine = engine;\n\n this._attribute = options.attribute;\n this._offset = options.offset;\n this._stride = options.stride;\n this._formatSize = options.formatSize;\n this._componentCount = options.componentCount;\n this._arraySize = options.arraySize;\n this._bufferType = options.bufferType;\n this.length = options.length;\n\n const wasm = this._engine.wasm;\n this._tempBufferGetter = (\n this._bufferType === Float32Array\n ? wasm.getTempBufferF32.bind(wasm)\n : wasm.getTempBufferU16.bind(wasm)\n ) as () => TypedArray;\n }\n\n /**\n * Create a new TypedArray to hold this attribute's values.\n *\n * This method is useful to create a view to hold the data to\n * pass to {@link get} and {@link set}\n *\n * Example:\n *\n * ```js\n * const vertexCount = 4;\n * const positionAttribute = mesh.attribute(MeshAttribute.Position);\n *\n * // A position has 3 floats per vertex. Thus, positions has length 3 * 4.\n * const positions = positionAttribute.createArray(vertexCount);\n * ```\n *\n * @param count The number of **vertices** expected.\n * @returns A TypedArray with the appropriate format to access the data\n */\n createArray(count = 1): TypedArray {\n count = count > this.length ? this.length : count;\n return new this._bufferType(\n count * this._componentCount * this._arraySize\n ) as TypedArray;\n }\n\n /** @overload */\n get(index: number): TypedArray;\n /**\n * Get attribute element.\n *\n * @param index Index\n * @param out Preallocated array to write into,\n * to avoid garbage, otherwise will allocate a new TypedArray.\n *\n * `out.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `out.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns The `out` parameter\n */\n get(index: number, out: T): T;\n get(index: number, out: NumberArray = this.createArray()): NumberArray {\n if (out.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(out.length, componentCount * this.length);\n\n const dest = this._tempBufferGetter(len);\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const destSize = elementSize * len;\n const srcFormatSize = this._formatSize * this._arraySize;\n const destFormatSize = this._componentCount * elementSize * this._arraySize;\n\n this.engine.wasm._wl_mesh_get_attribute_values(\n this._attribute,\n srcFormatSize,\n this._offset + index * this._stride,\n this._stride,\n destFormatSize,\n dest.byteOffset,\n destSize\n );\n\n for (let i = 0; i < len; ++i) out[i] = dest[i];\n return out;\n }\n\n /**\n * Set attribute element.\n *\n * @param i Index\n * @param v Value to set the element to\n *\n * `v.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `v.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns Reference to self (for method chaining)\n */\n set(i: number, v: Readonly) {\n if (v.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(v.length, componentCount * this.length);\n\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const srcSize = elementSize * len;\n const srcFormatSize = componentCount * elementSize;\n const destFormatSize = this._formatSize * this._arraySize;\n\n const wasm = this.engine.wasm;\n\n /* Unless we are already working with data from WASM heap, we\n * need to copy into temporary memory. */\n if ((v as Float32Array).buffer != wasm.HEAPU8.buffer) {\n const dest = this._tempBufferGetter(len);\n dest.set(v);\n v = dest;\n }\n\n wasm._wl_mesh_set_attribute_values(\n this._attribute,\n srcFormatSize,\n (v as Float32Array).byteOffset,\n srcSize,\n destFormatSize,\n this._offset + i * this._stride,\n this._stride\n );\n\n return this;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Wrapper around a native font resource.\n *\n * @note Fonts are **per-engine**, they can thus be shared by multiple scenes.\n *\n * @since 1.2.0\n */\nexport class Font extends Resource {\n /** Em height in object space. Equivalent to line height. */\n get emHeight(): number {\n return this.engine.wasm._wl_font_get_emHeight(this._id);\n }\n\n /**\n * Cap height in object space. This is the typical height of capital\n * letters. Can be 0 if not defined by the font.\n */\n get capHeight(): number {\n return this.engine.wasm._wl_font_get_capHeight(this._id);\n }\n\n /**\n * X height in object space. This is the typical height of lowercase\n * letters. Can be 0 if not defined by the font.\n */\n get xHeight(): number {\n return this.engine.wasm._wl_font_get_xHeight(this._id);\n }\n\n /**\n * Outline size. This is the factor by which characters are expanded to\n * create the outline effect. Returns 0 if the font was compiled without\n * an outline.\n *\n * @since 1.2.1\n */\n get outlineSize(): number {\n return this.engine.wasm._wl_font_get_outlineSize(this._id);\n }\n}\n\n/**\n * Wrapper around a native particle effect resource.\n *\n * @note Particle effects are **per-engine**, they can thus be shared by\n * multiple scenes.\n *\n * @since 1.4.0\n */\nexport class ParticleEffect extends Resource {\n /**\n * Create a copy of the underlying native particle effect.\n *\n * @returns Particle effect clone.\n */\n clone(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_clone(this._id);\n return this.engine.particleEffects.wrap(index);\n }\n}\n\n/** Temporary canvas */\nlet temp2d: {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} | null = null;\n\n/**\n * Wrapper around a native texture data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link TextureManager} class.\n *\n * @note Textures are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Texture extends Resource {\n /**\n * @deprecated Use {@link TextureManager.create} instead, accessible via\n * {@link WonderlandEngine.textures}:\n *\n * ```js\n * const image = new Image();\n * image.onload = () => {\n * const texture = engine.textures.create(image);\n * };\n * ```\n */\n constructor(engine: WonderlandEngine, param: ImageLike | number) {\n if (isImageLike(param)) {\n const texture = engine.textures.create(param);\n /* `super()` must be called as stated in the specification */\n super(engine, texture._index);\n return texture;\n }\n super(engine, param);\n }\n\n /** Whether this texture is valid. */\n get valid(): boolean {\n return !this.isDestroyed && this.width !== 0 && this.height !== 0;\n }\n\n /**\n * Index in this manager.\n *\n * @deprecated Use {@link Texture.index} instead.\n */\n get id(): number {\n return this.index;\n }\n\n /** Update the texture to match the HTML element (e.g. reflect the current frame of a video). */\n update() {\n const image = this._imageIndex;\n if (!this.valid || !image) return;\n\n this.engine.wasm._wl_image_markDirty(image);\n }\n\n /**\n * Width of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the width used at creation.\n * If the actual element's width changed, it must be read from the element itself.\n */\n get width(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoWidth ?? element.width;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[0];\n }\n\n /**\n * Height of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the height used at creation.\n * If the actual element's height changed, it must be read from the element itself.\n */\n get height(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoHeight ?? element.height;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[1];\n }\n\n /**\n * Returns the html element associated to this texture.\n *\n * @note This accessor will return `null` if the image is compressed.\n */\n get htmlElement(): ImageLike | null {\n const image = this._imageIndex;\n if (!image) return null;\n\n const wasm = this.engine.wasm;\n const jsImageIndex = wasm._wl_image_get_jsImage_index(image);\n\n /* Since the first element is `null`, no need to check for `jsImageIndex` */\n return wasm._images[jsImageIndex];\n }\n\n /**\n * Upload content to the texture to the GPU.\n *\n * Usage:\n *\n * ```js\n * // Size 128x64\n * const image = new Image();\n * texture.updateSubImage(28, 4, 100, 60, 0, 0, image);\n * ```\n *\n * @note The source is cropped if the destination offset and source dimensions\n * are out-of-bounds regarding the texture size.\n *\n * @note Uploading a texture without a source offset is significantly faster.\n *\n * #### ImageBitmap\n *\n * If you need to upload a subregion, it's recommended to use:\n *\n * ```js\n * createImageBitmap(image, sourceX, sourceY, sourceWidth, sourceHeight).then(bitmap => {\n * const destinationX = sourceX;\n * const destinationY = sourceY;\n * texture.updateSubImage(0, 0, sourceWidth, sourceHeight, destinationX, destinationY, bitmap);\n * });\n * ```\n *\n * You could use this method with a `src` offset, but the synchronous implementation\n * uses a temporary 2d canvas, negatively affecting performance for large content.\n *\n * @param srcX Horizontal pixel offset, in the source image.\n * @param srcY Vertical pixel offset, in the source image.\n * @param srcWidth Width of the sub image, in the source image.\n * @param srcHeight Height of the sub image, in the source image\n * @param dstX Horizontal pixel offset, in the destination image.\n * Defaults to `srcX` for backward compatibility with older API versions.\n * @param dstY Vertical pixel offset, in the destination image.\n * Defaults to `srcY` for backward compatibility with older API versions.\n * @param content `Image`, `HTMLCanvasElement`, `HTMLVideoElement`, or `ImageBitmap` to upload.\n * @returns `true` if the update went through, `false` otherwise.\n */\n updateSubImage(\n srcX: number,\n srcY: number,\n srcWidth: number,\n srcHeight: number,\n dstX: number = srcX,\n dstY: number = srcY,\n content?: ImageLike\n ): boolean {\n if (this.isDestroyed) return false;\n\n const image = this._imageIndex;\n if (!image) return false;\n\n let img = content ?? this.htmlElement;\n if (!img) return false;\n\n const isImageBitmap = img instanceof ImageBitmap;\n /* ImageBitmap can't be flipped upon upload to the GPU.\n * Thus, we need to skip flipping the temporary canvas to keep the same behavior\n * when uploading an ImageBitmap and uploading a blitted ImageBitmap. */\n const flipY = !isImageBitmap;\n\n if (srcX || srcY) {\n /* Lazy initialize temp canvas */\n if (!temp2d) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n 'Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D.'\n );\n }\n temp2d = {canvas, ctx};\n }\n temp2d.canvas.width = srcWidth;\n temp2d.canvas.height = srcHeight;\n\n temp2d.ctx.drawImage(\n img,\n srcX,\n isImageBitmap ? img.height - srcY - srcHeight : srcY,\n srcWidth,\n srcHeight,\n 0,\n 0,\n srcWidth,\n srcHeight\n );\n img = temp2d.canvas;\n }\n\n const wasm = this.engine.wasm;\n wasm._images[0] = img;\n\n /* Clamp the width/height to avoid a GL upload error */\n const width = srcWidth - Math.max(srcWidth + dstX - this.width, 0);\n const height = srcHeight - Math.max(srcHeight + dstY - this.height, 0);\n const dstReversedY = this.height - dstY - height;\n\n const ret = wasm._wl_renderer_updateImage(\n image,\n 0,\n width,\n height,\n dstX,\n dstReversedY,\n flipY\n );\n wasm._images[0] = null;\n\n return !!ret;\n }\n\n /**\n * Destroy and free the texture's texture altas space and memory.\n *\n * It is best practice to set the texture variable to `null` after calling\n * destroy to prevent accidental use of the invalid texture:\n *\n * ```js\n * texture.destroy();\n * texture = null;\n * ```\n *\n * @since 0.9.0\n */\n destroy(): void {\n const wasm = this.engine.wasm;\n\n const img = wasm._images[this._imageIndex];\n if (img instanceof ImageBitmap) img.close();\n\n wasm._wl_texture_destroy(this._id);\n this.engine.textures._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Texture(destroyed)';\n }\n return `Texture(${this._index})`;\n }\n\n private get _imageIndex() {\n return this.engine.wasm._wl_texture_get_image_index(this._id);\n }\n}\n\n/**\n * Wrapper around a native animation.\n */\nexport class Animation extends SceneResource {\n /**\n * @param index Index in the manager\n */\n constructor(host: WonderlandEngine | Prefab = WL, index: number) {\n const scene = host instanceof Prefab ? host : host.scene;\n super(scene as Prefab, index);\n }\n\n /** Duration of this animation. */\n get duration(): number {\n return this.engine.wasm._wl_animation_get_duration(this._id);\n }\n\n /** Number of tracks in this animation. */\n get trackCount(): number {\n return this.engine.wasm._wl_animation_get_trackCount(this._id);\n }\n\n /**\n * Clone this animation retargeted to a new set of objects.\n *\n * The clone shares most of the data with the original and is therefore\n * light-weight.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * If retargeting to {@link Skin}, the join names will be used to determine a mapping\n * from the previous skin to the new skin. The source skin will be retrieved from\n * the first track in the animation that targets a joint.\n *\n * @param newTargets New targets per track. Expected to have\n * {@link Animation#trackCount} elements or to be a {@link Skin}.\n * @returns The retargeted clone of this animation.\n */\n retarget(newTargets: Object3D[] | Skin): Animation {\n const wasm = this.engine.wasm;\n if (newTargets instanceof Skin) {\n const index = wasm._wl_animation_retargetToSkin(this._id, newTargets._id);\n return this._scene.animations.wrap(index)!;\n }\n\n if (newTargets.length != this.trackCount) {\n throw Error(\n 'Expected ' +\n this.trackCount.toString() +\n ' targets, but got ' +\n newTargets.length.toString()\n );\n }\n const ptr = wasm._malloc(2 * newTargets.length);\n for (let i = 0; i < newTargets.length; ++i) {\n const object3d = newTargets[i];\n this.scene.assertOrigin(object3d);\n /* Use local id here and **not** packed id, because the WASM\n * takes ownership and reinterprets the ids. */\n wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId;\n }\n const index = wasm._wl_animation_retarget(this._id, ptr);\n wasm._free(ptr);\n\n return this._scene.animations.wrap(index)!;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Animation(destroyed)';\n }\n return `Animation(${this._index})`;\n }\n}\n\n/**\n * Scene graph object.\n *\n * Node in the scene graph or \"entity\". Consists of transformation and a reference\n * to its parent object. Usually holds components and is accessible by components\n * through {@link Component#object}.\n *\n * Objects are stored in a data oriented manner inside WebAssembly memory. This class\n * is a JavaScript API wrapper around this memory for more convenient use in\n * components.\n *\n * Objects can be created and added to a scene through {@link Prefab.addObject}:\n *\n * ```js\n * const parent = scene.addObject();\n * parent.name = 'parent`';\n * const child = scene.addObject(parent);\n * child.name = 'child`';\n * ```\n */\nexport class Object3D {\n /**\n * Packed object id, containing scene index and local id.\n *\n * @hidden\n */\n readonly _id: number = -1;\n /** Object id, relative to the scene manager. @hidden */\n readonly _localId: number = -1;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * @param o Object id to wrap.\n *\n * @deprecated Objects must be obtained via {@link Scene.addObject} or {@link Scene.wrap}:\n *\n * ```js\n * // Create a new object.\n * const obj = scene.addObject();\n *\n * // Wrap an object using its id. The id must be valid.\n * const obj = scene.wrap(0);\n * ```\n *\n * @hidden\n */\n constructor(scene: WonderlandEngine | Prefab, id: number) {\n scene = scene instanceof Prefab ? scene : scene.scene;\n this._localId = id;\n this._id = (scene._index << 22) | id;\n this._scene = scene;\n /** @todo: Remove and only keep getter. */\n this._engine = scene.engine;\n }\n\n /**\n * Name of the object.\n *\n * Useful for identifying objects during debugging.\n */\n get name(): string {\n const wasm = this._engine.wasm;\n return wasm.UTF8ToString(wasm._wl_object_name(this._id));\n }\n\n /**\n * Set the object's name.\n *\n * @param newName The new name to set.\n */\n set name(newName: string) {\n const wasm = this._engine.wasm;\n wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName));\n }\n\n /**\n * Parent of this object or `null` if parented to root.\n */\n get parent(): Object3D | null {\n const p = this._engine.wasm._wl_object_parent(this._id);\n return p === 0 ? null : this._scene.wrap(p);\n }\n\n /**\n * Equivalent to {@link Object3D.getChildren}.\n *\n * @note Prefer to use {@link Object3D.getChildren} for performance.\n */\n get children(): Object3D[] {\n return this.getChildren();\n }\n\n /** The number of children of this object. */\n get childrenCount(): number {\n return this._engine.wasm._wl_object_get_children_count(this._id);\n }\n\n /**\n * Reparent object to given object.\n *\n * @note Reparenting is not trivial and might have a noticeable performance impact.\n *\n * @param newParent New parent or `null` to parent to root\n */\n set parent(newParent: Object3D | undefined | null) {\n if (this.markedDestroyed) {\n const strThis = this.toString();\n const strParent = newParent ? newParent : 'root';\n throw new Error(\n `Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`\n );\n } else if (newParent?.markedDestroyed) {\n const strParent = newParent.toString();\n throw new Error(\n `Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`\n );\n }\n this.scene.assertOrigin(newParent);\n this._engine.wasm._wl_object_set_parent(\n this._id,\n newParent == null ? 0 : newParent._id\n );\n }\n\n /** Local object id in the scene manager. */\n get objectId() {\n return this._localId;\n }\n\n /** Scene instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Add an object as a child of this instance.\n *\n * @returns A newly created object.\n */\n addChild(): Object3D {\n const objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id);\n const obj = this.scene.wrap(objectId);\n return obj;\n }\n\n /**\n * Clone this hierarchy into a new one.\n *\n * Cloning copies the hierarchy structure, object names,\n * as well as components.\n *\n * JavaScript components are cloned using {@link Component.copy}. You can\n * override this method in your components.\n *\n * @param parent The parent for the cloned hierarchy or `null` to clone\n * into the scene root. Defaults to `null`.\n *\n * @returns The clone of this object.\n */\n clone(parent: Object3D | null = null): Object3D {\n this.scene.assertOrigin(parent);\n const engine = this._engine;\n const id = engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0);\n return this._scene.wrap(id);\n }\n\n /**\n * Children of this object.\n *\n * @note Child order is **undefined**. No assumptions should be made\n * about the index of a specific object.\n *\n * If you need to access a specific child of this object, you can\n * use {@link Object3D.findByName}.\n *\n * When the object exists in the scene at editor time, prefer passing it as\n * a component property.\n *\n * @note When providing an output array, only `this.childrenCount` elements will be written.\n * The rest of the array will not be modified by this method.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const childrenCount = this.childrenCount;\n if (childrenCount === 0) return out;\n\n const wasm = this._engine.wasm;\n wasm.requireTempMem(childrenCount * 2);\n\n this._engine.wasm._wl_object_get_children(\n this._id,\n wasm._tempMem,\n wasm._tempMemSize >> 1\n );\n\n for (let i = 0; i < childrenCount; ++i) {\n out[i] = this._scene.wrap(wasm._tempMemUint16[i]);\n }\n return out;\n }\n\n /**\n * Reset local transformation (translation, rotation and scaling) to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetTransform(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /**\n * Reset local position and rotation to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPositionRotation(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPositionRotation} instead. */\n resetTranslationRotation(): this {\n return this.resetPositionRotation();\n }\n\n /**\n * Reset local rotation, keep translation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetRotation(): this {\n this._engine.wasm._wl_object_reset_rotation(this._id);\n return this;\n }\n\n /**\n * Reset local translation, keep rotation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPosition(): this {\n this._engine.wasm._wl_object_reset_translation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPosition} instead. */\n resetTranslation(): this {\n return this.resetPosition();\n }\n\n /**\n * Reset local scaling to identity (``[1.0, 1.0, 1.0]``).\n *\n * @returns Reference to self (for method chaining).\n */\n resetScaling(): this {\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.translateLocal} instead. */\n translate(v: Readonly): this {\n return this.translateLocal(v);\n }\n\n /**\n * Translate object by a vector in the parent's space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateLocal(v: Readonly): this {\n this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in object space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateObject(v: Readonly): this {\n this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in world space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateWorld(v: Readonly): this {\n this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleDegLocal} instead. */\n rotateAxisAngleDeg(a: Readonly, d: number): this {\n this.rotateAxisAngleDegLocal(a, d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleRad}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleRadLocal} instead. */\n rotateAxisAngleRad(a: Readonly, d: number): this {\n return this.rotateAxisAngleRadLocal(a, d);\n }\n\n /**\n * Rotate around given axis by given angle (radians) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in radians.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleDeg}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in object space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @see {@link rotateAxisAngleRadObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (radians) in object space\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param a Vector representing the rotation axis\n * @param d Angle in degrees\n *\n * @see {@link rotateAxisAngleDegObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(\n this._id,\n a[0],\n a[1],\n a[2],\n d\n );\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateLocal} instead. */\n rotate(q: Readonly): this {\n this.rotateLocal(q);\n return this;\n }\n\n /**\n * Rotate by a quaternion.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateLocal(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /**\n * Rotate by a quaternion in object space.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateObject(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.scaleLocal} instead. */\n scale(v: Readonly): this {\n this.scaleLocal(v);\n return this;\n }\n\n /**\n * Scale object by a vector in object space.\n *\n * @param v Vector to scale by.\n *\n * @returns Reference to self (for method chaining).\n */\n scaleLocal(v: Readonly): this {\n this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getPositionLocal(): Float32Array;\n /**\n * Compute local / object space position from transformation.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getPositionLocal(out: T): T;\n getPositionLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_local(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationLocal(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionLocal} instead. */\n getTranslationLocal(out: T): T;\n getTranslationLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionLocal(out);\n }\n\n /** @overload */\n getPositionWorld(): Float32Array;\n /**\n * Compute world space position from transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getPositionWorld(out: T): T;\n getPositionWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_world(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationWorld(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionWorld} instead. */\n getTranslationWorld(out: T): T;\n getTranslationWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionWorld(out);\n }\n\n /**\n * Set local / object space position.\n *\n * Concatenates a new translation dual quaternion onto the existing rotation.\n *\n * @param v New local position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionLocal} instead. */\n setTranslationLocal(v: Readonly): this {\n return this.setPositionLocal(v);\n }\n\n /**\n * Set world space position.\n *\n * Applies the inverse parent transform with a new translation dual quaternion\n * which is concatenated onto the existing rotation.\n *\n * @param v New world position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionWorld} instead. */\n setTranslationWorld(v: Readonly): this {\n return this.setPositionWorld(v);\n }\n\n /** @overload */\n getScalingLocal(): Float32Array;\n /**\n * Local / object space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingLocal(out: T): T;\n getScalingLocal(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set local / object space scaling.\n *\n * @param v New local scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getScalingWorld(): Float32Array;\n /**\n * World space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingWorld(out: T): T;\n getScalingWorld(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set World space scaling.\n *\n * @param v New world scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getRotationLocal(): Float32Array;\n /**\n * Local space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationLocal(out: T): T;\n getRotationLocal(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getRotationWorld(): Float32Array;\n /**\n * World space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationWorld(out: T): T;\n getRotationWorld(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getTransformLocal(): Float32Array;\n /**\n * Local space transformation.\n *\n * @param out Destination array/vector, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformLocal(out: T): T;\n getTransformLocal(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New local transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformLocal(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this.setDirty();\n return this;\n }\n\n /** @overload */\n getTransformWorld(): Float32Array;\n /**\n * World space transformation.\n *\n * @param out Destination array, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformWorld(out: T): T;\n getTransformWorld(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set world space rotation.\n *\n * @param v New world transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformWorld(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n return this;\n }\n\n /**\n * Local space transformation.\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n get transformLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_local(this._id),\n 8\n );\n }\n\n /**\n * Set local transform.\n *\n * @param t Local space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n set transformLocal(t: Readonly) {\n this.transformLocal.set(t);\n this.setDirty();\n }\n\n /**\n * Global / world space transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n get transformWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_world(this._id),\n 8\n );\n }\n\n /**\n * Set world transform.\n *\n * @param t Global / world space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n set transformWorld(t: Readonly) {\n this.transformWorld.set(t);\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n }\n\n /**\n * Local / object space scaling.\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n get scalingLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_local(this._id),\n 3\n );\n }\n\n /**\n * Set local space scaling.\n *\n * @param s Local space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n set scalingLocal(s: Readonly) {\n this.scalingLocal.set(s);\n this.setDirty();\n }\n\n /**\n * Global / world space scaling.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n get scalingWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_world(this._id),\n 3\n );\n }\n\n /**\n * Set world space scaling.\n *\n * @param t World space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n set scalingWorld(s: Readonly) {\n this.scalingWorld.set(s);\n this._engine.wasm._wl_object_scaling_world_to_local(this._id);\n }\n\n /**\n * Local space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n get rotationLocal(): Float32Array {\n return this.transformLocal.subarray(0, 4);\n }\n\n /**\n * Global / world space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n get rotationWorld(): Float32Array {\n return this.transformWorld.subarray(0, 4);\n }\n\n /**\n * Set local space rotation.\n *\n * @param r Local space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n set rotationLocal(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /**\n * Set world space rotation.\n *\n * @param r Global / world space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n set rotationWorld(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /** @deprecated Please use {@link Object3D.getForwardWorld} instead. */\n getForward(out: T): T {\n return this.getForwardWorld(out);\n }\n\n /**\n * Compute the object's forward facing world space vector.\n *\n * The forward vector in object space is along the negative z-axis, i.e.,\n * `[0, 0, -1]`.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getForwardWorld(out: T): T {\n out[0] = 0;\n out[1] = 0;\n out[2] = -1;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getUpWorld} instead. */\n getUp(out: T): T {\n return this.getUpWorld(out);\n }\n\n /**\n * Compute the object's up facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getUpWorld(out: T): T {\n out[0] = 0;\n out[1] = 1;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getRightWorld} instead. */\n getRight(out: T): T {\n return this.getRightWorld(out);\n }\n\n /**\n * Compute the object's right facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getRightWorld(out: T): T {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /**\n * Transform a vector by this object's world transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a vector by this object's local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a point by this object's world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse world transform.\n *\n * @param out Out vector.\n * @param v Vector to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(p);\n wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform an object space dual quaternion into world space.\n *\n * @param out Out transformation.\n * @param q Local space transformation, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toWorldSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into local space.\n *\n * @param out Out transformation\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toLocalSpaceTransform(out: T, q: NumberArray = out): T {\n const p = this.parent;\n if (p) {\n p.toObjectSpaceTransform(out, q);\n return out;\n }\n if (out !== q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = q[4];\n out[5] = q[5];\n out[6] = q[6];\n out[7] = q[7];\n }\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into object space.\n *\n * @param out Out transformation.\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toObjectSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Turn towards / look at target.\n *\n * Rotates the object so that its forward vector faces towards the target\n * position. The `up` vector acts as a hint to uniquely orient the object's\n * up direction. When orienting a view component, the projected `up` vector\n * faces upwards on the viewing plane.\n *\n * @param p Target position to turn towards, in world space.\n * @param up Up vector to align object with, in world space. Default is `[0, 1, 0]`.\n *\n * @returns Reference to self (for method chaining).\n */\n lookAt(p: NumberArray, up: NumberArray = UP_VECTOR): this {\n this._engine.wasm._wl_object_lookAt(\n this._id,\n p[0],\n p[1],\n p[2],\n up[0],\n up[1],\n up[2]\n );\n return this;\n }\n\n /** Destroy the object with all of its components and remove it from the scene */\n destroy(): void {\n if (this._id < 0) return;\n /* This will automatically call `scene._destroyObject` */\n this.engine.wasm._wl_object_remove(this._id);\n }\n\n /**\n * Mark transformation dirty.\n *\n * Causes an eventual recalculation of {@link transformWorld}, either\n * on next {@link getTranslationWorld}, {@link transformWorld} or\n * {@link scalingWorld} or the beginning of next frame, whichever\n * happens first.\n */\n setDirty(): void {\n this._engine.wasm._wl_object_set_dirty(this._id);\n }\n\n /**\n * Disable/enable all components of this object.\n *\n * @param b New state for the components.\n *\n * @since 0.8.5\n */\n set active(b: boolean) {\n const comps = this.getComponents();\n for (let c of comps) {\n c.active = b;\n }\n }\n\n /* `getComponent` overloads for native components. */\n\n /** @overload */\n getComponent(\n type: K,\n index?: number\n ): NativeComponents[K] | null;\n /** @overload */\n getComponent(typeOrClass: string, index?: number): Component | null;\n /**\n * Get a component attached to this object.\n *\n * @param typeOrClass Type name. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field to find the component.\n * @param index=0 Index for component of given type. This can be used to access specific\n * components if the object has multiple components of the same type.\n * @returns The component or `null` if there is no such component on this object\n */\n getComponent(\n typeOrClass: ComponentConstructor,\n index?: number\n ): T | null;\n getComponent(\n typeOrClass: string | ComponentConstructor,\n index: number = 0\n ): Component | null {\n const wasm = this._engine.wasm;\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n\n const scene = this._scene;\n const componentType = wasm._wl_scene_get_component_manager_index(\n scene._index,\n wasm.tempUTF8(type)\n );\n\n if (componentType < 0) {\n /* Not a native component, try js: */\n const typeIndex = wasm._componentTypeIndices[type];\n if (typeIndex === undefined) return null;\n const jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index);\n if (jsIndex < 0) return null;\n\n const component = this._scene._jsComponents[jsIndex];\n return component.constructor !== BrokenComponent ? component : null;\n }\n\n const componentId = wasm._wl_get_component_id(this._id, componentType, index);\n return scene._components.wrapNative(componentType, componentId);\n }\n\n /* `getComponents` overloads for native components. */\n\n /** @overload */\n getComponents(): Component[];\n /** @overload */\n getComponents(type: K): NativeComponents[K][];\n /**\n * @param typeOrClass Type name, pass a falsey value (`undefined` or `null`) to retrieve all.\n * It's also possible to give a class definition. In this case, the method will use the `class.TypeName` field to\n * find the components.\n * @returns All components of given type attached to this object.\n *\n * @note As this function is non-trivial, avoid using it in `update()` repeatedly,\n * but rather store its result in `init()` or `start()`\n * @warning This method will currently return at most 341 components.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(\n typeOrClass?: string | ComponentConstructor | null\n ): T[] {\n const wasm = this._engine.wasm;\n const scene = this._scene;\n\n let manager = null;\n let type = null;\n if (typeOrClass) {\n type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = scene._components.getNativeManager(type);\n manager = nativeManager !== null ? nativeManager : scene._components.js;\n }\n\n const components: Component[] = [];\n const maxComps = Math.floor((wasm._tempMemSize / 3) * 2);\n const componentsCount = wasm._wl_object_get_components(\n this._id,\n wasm._tempMem,\n maxComps\n );\n const offset = 2 * componentsCount;\n wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset, maxComps);\n\n for (let i = 0; i < componentsCount; ++i) {\n const t = wasm._tempMemUint8[i + offset];\n const componentId = wasm._tempMemUint16[i];\n if (manager !== null && t !== manager) continue;\n\n const comp = this._scene._components.wrapAny(t, componentId);\n if (!comp) continue;\n if (type && type !== (comp.constructor as ComponentConstructor).TypeName)\n continue;\n components.push(comp);\n }\n return components as T[];\n }\n\n /* `addComponent` overloads for native components. */\n\n /** @overload */\n addComponent(type: 'collision', params?: Record): CollisionComponent;\n /** @overload */\n addComponent(type: 'text', params?: Record): TextComponent;\n /** @overload */\n addComponent(type: 'view', params?: Record): ViewComponent;\n /** @overload */\n addComponent(type: 'mesh', params?: Record): MeshComponent;\n /** @overload */\n addComponent(type: 'input', params?: Record): InputComponent;\n /** @overload */\n addComponent(type: 'light', params?: Record): LightComponent;\n /** @overload */\n addComponent(type: 'animation', params?: Record): AnimationComponent;\n /** @overload */\n addComponent(type: 'physx', params?: Record): PhysXComponent;\n /** @overload */\n addComponent(\n type: 'particle-effect',\n params?: Record\n ): ParticleEffectComponent;\n /** @overload */\n addComponent(type: string, params?: Record): Component;\n /**\n * Add component of given type to the object.\n *\n * You can use this function to clone components, see the example below.\n *\n * ```js\n * // Clone existing component (since 0.8.10)\n * let original = this.object.getComponent('mesh');\n * otherObject.addComponent('mesh', original);\n * // Create component from parameters\n * this.object.addComponent('mesh', {\n * mesh: someMesh,\n * material: someMaterial,\n * });\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @param params Parameters to initialize properties of the new component,\n * can be another component to copy properties from.\n *\n * @returns The component or `null` if the type was not found\n */\n addComponent(\n typeClass: ComponentConstructor,\n params?: Record\n ): T;\n addComponent(\n typeOrClass: ComponentConstructor | string,\n params?: Record\n ): Component {\n if (this.markedDestroyed) {\n throw new Error(`Failed to add component. ${this} is marked as destroyed.`);\n }\n\n const wasm = this._engine.wasm;\n\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = this._scene._components.getNativeManager(type);\n const isNative = nativeManager !== null;\n const manager = isNative ? nativeManager : this._scene._components.js;\n\n let componentId = -1;\n if (!isNative) {\n /* JavaScript component */\n if (!(type in wasm._componentTypeIndices)) {\n throw new TypeError(\"Unknown component type '\" + type + \"'\");\n }\n componentId = wasm._wl_object_add_js_component(\n this._id,\n wasm._componentTypeIndices[type]\n );\n } else {\n /* native component */\n componentId = wasm._wl_object_add_component(this._id, manager);\n }\n\n const component = this._scene._components.wrapAny(manager, componentId)!;\n\n if (params !== undefined) component.copy(params as Component);\n\n /* Explicitly initialize js components */\n if (!isNative) {\n component._triggerInit();\n /* start() is called through onActivate() */\n }\n\n /* If it was not explicitly requested by the user to leave the component inactive,\n * we activate it as a final step. This invalidates componentIndex! */\n if (!params || !('active' in params && !params.active)) {\n component.active = true;\n }\n\n return component;\n }\n\n /**\n * Search for descendants matching the name.\n *\n * This method is a wrapper around {@link Object3D.findByNameDirect} and\n * {@link Object3D.findByNameRecursive}.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the descendants of this object.\n * If `false`, this method will only perform the search in direct children.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name);\n }\n\n /**\n * Search for all **direct** children matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameDirect(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 2; /* Reserve two ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n buffer[maxCount + 1] = 0; /* child count */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const childCountPtr = bufferPtr + maxCount * 2 + 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2);\n\n const result: Object3D[] = [];\n let read = 0;\n while (\n (read = wasm._wl_object_findByName(\n id,\n namePtr,\n indexPtr,\n childCountPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Search for **all descendants** matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 1; /* Reserve one ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2);\n\n let read = 0;\n const result: Object3D[] = [];\n while (\n (read = wasm._wl_object_findByNameRecursive(\n id,\n namePtr,\n indexPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Whether given object's transformation has changed.\n */\n get changed(): boolean {\n return !!this._engine.wasm._wl_object_is_changed(this._id);\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = scene.addObject();\n * obj.customParam = 'Hello World!';\n *\n * console.log(obj.isDestroyed); // Prints `false`\n * obj.destroy();\n * console.log(obj.isDestroyed); // Prints `true`\n * console.log(obj.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /**\n * `true` if the object is marked as destroyed.\n *\n * This boolean will only ever be `true` when reading objects state\n * from the {@link Component.onDestroy} callback, i.e.,\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n * class CleanupComponent extends Component {\n * onDestroy() {\n * if (this.object.markedDestroyed) {\n * // this object is getting removed\n * } else {\n * // The component is getting destroyed, the object will\n * // still exist after the destruction call\n * }\n * }\n * }\n * ```\n *\n * Certain operations are forbidden when an object is pending destruction:\n * - Reparenting the object via {@link parent}\n * - {@link addComponent}\n * - {@link Scene.addObject}\n * - {@link Scene.destroy}\n */\n get markedDestroyed(): boolean {\n const wasm = this.engine.wasm;\n return !!wasm._wl_object_markedDestroyed(this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const objectA = scene.addObject();\n * const objectB = scene.addObject();\n * const objectC = objectB;\n * console.log(objectA === objectB); // false\n * console.log(objectA === objectA); // true\n * console.log(objectB === objectC); // true\n * ```\n */\n equals(otherObject: Object3D | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherObject) return false;\n return this._id == otherObject._id;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Object3D(destroyed)';\n }\n return `Object3D('${this.name}', ${this._localId})`;\n }\n}\n\n/**\n * Wrapper around a native skin data.\n */\nexport class Skin extends SceneResource {\n /** Amount of joints in this skin. */\n get jointCount() {\n return this.engine.wasm._wl_skin_get_joint_count(this._id);\n }\n\n /** Joints object ids for this skin */\n get jointIds(): Uint16Array {\n const wasm = this.engine.wasm;\n return new Uint16Array(\n wasm.HEAPU16.buffer,\n wasm._wl_skin_joint_ids(this._id),\n this.jointCount\n );\n }\n\n /**\n * Dual quaternions in a flat array of size 8 times {@link jointCount}.\n *\n * Inverse bind transforms of the skin.\n */\n get inverseBindTransforms(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_transforms(this._id),\n 8 * this.jointCount\n );\n }\n\n /**\n * Vectors in a flat array of size 3 times {@link jointCount}.\n *\n * Inverse bind scalings of the skin.\n */\n get inverseBindScalings(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_scalings(this._id),\n 3 * this.jointCount\n );\n }\n}\n\n/**\n * Wrapper around a native set of morph targets.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\nexport class MorphTargets extends Resource {\n /** Amount of targets in this morph target set. */\n get count() {\n return this.engine.wasm._wl_morph_targets_get_target_count(this._id);\n }\n\n /** Returns the name of a given target */\n getTargetName(target: number): string {\n if (target >= this.count) {\n throw new Error(`Index ${target} is out of bounds for ${this.count} targets`);\n }\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target));\n }\n\n /**\n * Get the index for a given target name.\n *\n * Throws if no target with that name exists.\n *\n * @param name Name of the target.\n */\n getTargetIndex(name: string): number {\n const wasm = this.engine.wasm;\n const index = wasm._wl_morph_targets_get_target_index(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing target '${name}'`);\n }\n return index;\n }\n}\n\n/* For backward compatibility with < 1.0.0. */\nexport {Object3D as Object};\n\n/**\n * Ray hit.\n *\n * Result of a {@link Scene.rayCast} or {@link Physics.rayCast}.\n *\n * @note this class wraps internal engine data and should only be created internally.\n */\nexport class RayHit {\n /** Scene instance. @hidden */\n readonly _scene: Scene;\n\n /** Pointer to the memory heap. */\n private _ptr: number;\n\n /**\n * @param ptr Pointer to the ray hits memory.\n */\n constructor(scene: Scene, ptr: number) {\n if ((ptr & 3) !== 0) {\n throw new Error('Misaligned pointer: please report a bug');\n }\n this._scene = scene;\n this._ptr = ptr;\n }\n\n /** @overload */\n getLocations(): Float32Array[];\n /**\n * Array of ray hit locations.\n *\n * #### Usage\n *\n * ```js\n * const hit = engine.physics.rayCast();\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLocations(out: T): T;\n getLocations(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = this._ptr / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const locationPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[locationPtr];\n out[i][1] = wasm.HEAPF32[locationPtr + 1];\n out[i][2] = wasm.HEAPF32[locationPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getNormals(): Float32Array[];\n /**\n * Array of ray hit normals (only when using {@link Physics#rayCast}.\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getNormals(out: T): T;\n getNormals(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const normalPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[normalPtr];\n out[i][1] = wasm.HEAPF32[normalPtr + 1];\n out[i][2] = wasm.HEAPF32[normalPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getDistances(): Float32Array;\n /**\n * Prefer these to recalculating the distance from locations.\n *\n * Distances of array hits to ray origin.\n *\n * @param out Destination array/vector, expected to have at least this.hitCount elements.\n * @returns The `out` parameter.\n */\n getDistances(out: T): T;\n getDistances(out: NumberArray = new Float32Array(this.hitCount)): NumberArray {\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48 * 2) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const distancePtr = alignedPtr + i;\n out[i] = wasm.HEAPF32[distancePtr];\n }\n return out;\n }\n\n /**\n * Array of hit objects.\n *\n * @param out Destination array/vector, expected to have at least `this.hitCount` elements.\n * @returns The `out` parameter.\n */\n getObjects(out: Object3D[] = new Array(this.hitCount)): Object3D[] {\n const HEAPU16 = this.engine.wasm.HEAPU16;\n const alignedPtr = (this._ptr + (48 * 2 + 16)) >> 1;\n for (let i = 0; i < this.hitCount; ++i) {\n out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]);\n }\n return out;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /**\n * Equivalent to {@link RayHit.getLocations}.\n *\n * @note Prefer to use {@link RayHit.getLocations} for performance.\n */\n get locations(): Float32Array[] {\n return this.getLocations();\n }\n\n /**\n * Equivalent to {@link RayHit.getNormals}.\n *\n * @note Prefer to use {@link RayHit.getNormals} for performance.\n */\n get normals(): Float32Array[] {\n return this.getNormals();\n }\n\n /**\n * Equivalent to {@link RayHit.getDistances}.\n *\n * @note Prefer to use {@link RayHit.getDistances} for performance.\n */\n get distances(): Float32Array {\n return this.getDistances();\n }\n\n /**\n * Equivalent to {@link RayHit.getObjects}.\n *\n * @note Prefer to use {@link RayHit.getObjects} for performance.\n */\n get objects(): (Object3D | null)[] {\n /** @todo: Remove at 2.0.0, this is kept for backward compatibility. */\n const objects: (Object3D | null)[] = [null, null, null, null];\n return this.getObjects(objects as Object3D[]);\n }\n\n /** Number of hits (max 4) */\n get hitCount(): number {\n return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4);\n }\n}\n\nclass math {\n /** (Experimental!) Cubic Hermite spline interpolation for vector3 and quaternions.\n *\n * With `f == 0`, `out` will be `b`, if `f == 1`, `out` will be c.\n *\n * Whether a quaternion or vector3 interpolation is intended is determined by\n * length of `a`.\n *\n * @param out Array to write result to.\n * @param a First tangent/handle.\n * @param b First point or quaternion.\n * @param c Second point or quaternion.\n * @param d Second handle.\n * @param f Interpolation factor in [0; 1].\n * @returns The `out` parameter.\n *\n * @since 0.8.6\n */\n static cubicHermite(\n out: T,\n a: Readonly,\n b: Readonly,\n c: Readonly,\n d: Readonly,\n f: number,\n engine: WonderlandEngine = WL\n ) {\n const wasm = engine.wasm;\n wasm._tempMemFloat.subarray(0).set(a);\n wasm._tempMemFloat.subarray(4).set(b);\n wasm._tempMemFloat.subarray(8).set(c);\n wasm._tempMemFloat.subarray(12).set(d);\n\n const isQuat = a.length == 4;\n\n wasm._wl_math_cubicHermite(\n wasm._tempMem + 4 * 16,\n wasm._tempMem + 4 * 0,\n wasm._tempMem + 4 * 4,\n wasm._tempMem + 4 * 8,\n wasm._tempMem + 4 * 12,\n f,\n isQuat\n );\n out[0] = wasm._tempMemFloat[16];\n out[1] = wasm._tempMemFloat[17];\n out[2] = wasm._tempMemFloat[18];\n if (isQuat) out[3] = wasm._tempMemFloat[19];\n return out;\n }\n}\n\nexport {math};\n\n/**\n * Class for accessing internationalization (i18n) features.\n *\n * Allows {@link I18N.onLanguageChanged \"detecting language change\"},\n * {@link I18N.language \"setting the current language\"} or translating\n * {@link I18N.translate \"individual terms\"}.\n *\n * Internationalization works with terms,\n * a string type keyword that is linked to a different text for each language.\n *\n * Internally, string parameters for text and js components are\n * automatically swapped during language change, given they are linked to a term.\n * If manual text swapping is desired, {@link I18N.translate}\n * can be used to retrieve the current translation for any term.\n *\n * You can also use the {@link I18N.onLanguageChanged} to manually update text\n * when a language is changed to for example update a number in a string.\n *\n * @since 1.0.0\n */\nexport class I18N {\n /**\n * {@link Emitter} for language change events.\n *\n * First parameter to a listener is the old language index,\n * second parameter is the new language index.\n *\n * Usage from a within a component:\n *\n * ```js\n * this.engine.i18n.onLanguageChanged.add((oldLanguageIndex, newLanguageIndex) => {\n * const oldLanguage = this.engine.i18n.languageName(oldLanguageIndex);\n * const newLanguage = this.engine.i18n.languageName(newLanguageIndex);\n * console.log(\"Switched from\", oldLanguage, \"to\", newLanguage);\n * });\n * ```\n */\n readonly onLanguageChanged = new Emitter<[number, number]>();\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Previously set language index. @hidden */\n private _prevLanguageIndex: number = -1;\n\n /**\n * Constructor\n */\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @note This is equivalent to {@link I18N.setLanguage}.\n *\n * @param code Language code to switch to\n */\n set language(code: string | null) {\n this.setLanguage(code);\n }\n\n /** Get current language code. */\n get language(): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_currentLanguage();\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get the current language index.\n *\n * This method is more efficient than its equivalent:\n *\n * ```js\n * const index = i18n.languageIndex(i18n.language);\n * ```\n */\n get currentIndex(): number {\n return this._engine.wasm._wl_i18n_currentLanguageIndex();\n }\n\n /** Previous language index. */\n get previousIndex(): number {\n return this._prevLanguageIndex;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @param code The language code.\n * @returns A promise that resolves with the current index code when the\n * language is loaded.\n */\n async setLanguage(code: string | null): Promise {\n if (code == null) return Promise.resolve(this.currentIndex);\n const wasm = this._engine.wasm;\n this._prevLanguageIndex = this.currentIndex;\n wasm._wl_i18n_setLanguage(wasm.tempUTF8(code));\n\n const scene = this.engine.scene;\n\n const filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex));\n const url = `${scene.baseURL}/locale/${filename}`;\n\n await scene._downloadDependency(url);\n\n this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex);\n\n return this.currentIndex;\n }\n\n /**\n * Get translated string for a term for the currently loaded language.\n *\n * @param term Term to translate\n */\n translate(term: string): string | null {\n const wasm = this._engine.wasm;\n const translation = wasm._wl_i18n_translate(wasm.tempUTF8(term));\n if (translation === 0) return null;\n return wasm.UTF8ToString(translation);\n }\n\n /**\n * Get the number of languages in the project.\n *\n */\n languageCount(): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageCount();\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageIndex(code: string): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code));\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageCode(index: number): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_languageCode(index);\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get a language name.\n *\n * @param index Index of the language to get the name from\n */\n languageName(index: number): string | null {\n const wasm = this._engine.wasm;\n const name = wasm._wl_i18n_languageName(index);\n if (name === 0) return null;\n return wasm.UTF8ToString(name);\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Environment lighting properties\n *\n * @since 1.2.3\n */\nexport class Environment {\n /** Scene instance. @hidden */\n private readonly _scene: Scene;\n\n /** Constructor */\n constructor(scene: Scene) {\n this._scene = scene;\n }\n\n /**\n * Get intensity of environment lighting.\n *\n * Incoming environment lighting is multiplied by this factor.\n */\n get intensity() {\n return this._scene.engine.wasm._wl_scene_environment_get_intensity(\n this._scene._index\n );\n }\n\n /**\n * Set intensity of environment lighting.\n *\n * @param intensity New intensity.\n */\n set intensity(intensity: number) {\n this._scene.engine.wasm._wl_scene_environment_set_intensity(\n this._scene._index,\n intensity\n );\n }\n\n /** @overload */\n getTint(): Float32Array;\n /**\n * Get tint for environment lighting.\n *\n * Incoming environment lighting color channels are multiplied by these\n * values.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Tint values - red, green, blue.\n */\n getTint(out: T): T;\n /** @overload */\n getTint(\n out: T | Float32Array = new Float32Array(3)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out as T;\n }\n\n /**\n * Equivalent to {@link getTint}.\n *\n * @note Prefer to use {@link getTint} for performance.\n */\n get tint(): Float32Array {\n return this.getTint();\n }\n\n /**\n * Set tint for environment lighting.\n *\n * @param v New tint value. Expects a 3 component array.\n */\n setTint(v: Readonly) {\n this._scene.engine.wasm._wl_scene_environment_set_tint(\n this._scene._index,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /** Equivalent to {@link setTint}. */\n set tint(v: Readonly) {\n this.setTint(v);\n }\n\n /** @overload */\n getCoefficients(): Float32Array;\n /**\n * Get spherical harmonics coefficients for indirect lighting.\n *\n * These are 9 spherical harmonics coefficients for indirect diffuse\n * lighting.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Spherical harmonics coefficients. Always 27 elements, every\n * consecutive 3 values representing the red, green, blue components of\n * a single coefficient. Unused/empty coefficients at the end can be 0.\n */\n getCoefficients(out: T): T;\n /** @overload */\n getCoefficients(\n out: T | Float32Array = new Float32Array(3 * 9)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(3 * 9 * 4);\n wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem);\n for (let i = 0; i < 3 * 9; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out as T;\n }\n\n /**\n * Equivalent to {@link getCoefficients}.\n *\n * @note Prefer to use {@link getCoefficients} for performance.\n */\n get coefficients(): Float32Array {\n return this.getCoefficients();\n }\n\n /**\n * Set spherical harmonics coefficients for indirect lighting.\n *\n * @note The scene must have been packaged with environment lighting on for\n * this to take effect.\n *\n * @example\n *\n * Coefficients from [WebXR Lighting Estimation](https://www.w3.org/TR/webxr-lighting-estimation-1)\n * can be passed as follows:\n *\n * ```js\n * const probe = await engine.xr.session.requestLightProbe();\n * const estimate = engine.xr.frame.getLightEstimate(probe);\n * scene.environment.coefficients = estimate.sphericalHarmonicsCoefficients;\n * ```\n *\n * @param v A set of spherical harmonics coefficients, every 3 elements\n * constituting the red/green/blue components of a single coefficient.\n * Should be 0, 3, 12 or 27 **array elements**. Passing an empty array\n * disables indirect lighting.\n */\n setCoefficients(v: Readonly) {\n let count = v.length / 3;\n if (count > 9) count = 9;\n else if (count > 4 && count < 9) count = 4;\n else if (count > 1 && count < 4) count = 1;\n const wasm = this._scene.engine.wasm;\n wasm._tempMemFloat.set(v);\n wasm._wl_scene_environment_set_coefficients(\n this._scene._index,\n wasm._tempMem,\n count\n );\n }\n\n /** Equivalent to {@link setCoefficients}. */\n set coefficients(v: Readonly) {\n this.setCoefficients(v);\n }\n}\n", "/**\n * This file is automatically generated.\n *\n * **Do not** modify this file directly, but instead update\n * the 'write-version.mjs' script.\n */\n\n/**\n * Version type following a subset of the Semantic Versioning specification.\n */\nexport type Version = {major: number, minor: number, patch: number, rc: number};\n\n/** Version of this API. */\nexport const APIVersion: Version = {\n major: 1,\n minor: 4,\n patch: 2,\n rc: 0\n};\n", "import {WonderlandEngine} from '../engine.js';\nimport {NumberArray} from '../types.js';\nimport {capitalizeFirstUTF8} from '../utils/misc.js';\nimport {Texture} from '../wonderland.js';\n\nimport {Resource, ResourceManager} from './resource.js';\n\n/**\n * Material parameter type.\n */\nexport enum MaterialParamType {\n /** Unsigned integer parameter type. */\n UnsignedInt = 0,\n /** Integer parameter type. */\n Int = 1,\n /** 16-bit float parameter type. */\n HalfFloat = 2,\n /** Float parameter type. */\n Float = 3,\n /** Sampler resource parameter type, i.e., a {@link Texture}. */\n Sampler = 4,\n /**\n * Font resource parameter type.\n *\n * **Note**: Changing font isn't exposed yet and will raise an error.\n */\n Font = 5,\n}\n\n/**\n * Constructor parameters object for a {@link Material} instance.\n *\n * @deprecated Use {@link MaterialManager#getTemplate} instead:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\nexport interface MaterialParameters {\n /** The name of the pipeline. */\n pipeline: string;\n}\n\n/**\n * Material constructor.\n *\n * Material classes are automatically generated by the runtime based on the\n * loaded scene shaders.\n */\nexport interface MaterialConstructor {\n /**\n * Set of the dynamic parameters that exist on the definition.\n *\n * For instance, the set would contain elements such as `ambientColor`, `diffuseColor`\n * for a Phong material.\n */\n readonly Parameters: Set;\n /**\n * Create a new Material.\n *\n * The material is created from the pipeline associated to the material class.\n *\n * @note Creating material is expensive. Please use {@link Material#clone} to clone a material.\n * @note Do not use this constructor directly with an index, this is reserved for internal purposes.\n */\n new (index?: number): T;\n}\n\n/**\n * Wrapper around a native material.\n *\n * For more information about how to create materials, have a look at the\n * {@link MaterialManager} class.\n *\n * #### Properties\n *\n * The material properties are automatically converted into getters/setters:\n *\n * ```js\n * const material = new PhongMaterial();\n *\n * // Set the `diffuseColor` property\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * console.log(material.getDiffuseColor());\n * ```\n *\n * Getters for non-scalar types have an optional argument to skip an array\n * allocation:\n *\n * ```js\n * const material = new PhongMaterial();\n * const diffuse = [0, 0, 0, 0];\n * material.getDiffuseColor(diffuse);\n * console.log(diffuse) // Prints '[1.0, 1.0, 1.0, 1.0]'\n * ```\n *\n * @note Materials are **per-engine**, they can thus be shared by multiple scenes.\n *\n * #### TypeScript\n *\n * The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * It's then possible to cast the material type using:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const mesh = object.getComponent('mesh');\n * const material = mesh.material as PhongOpaque;\n * material.setDiffuseColor([1, 0, 0, 1]); // Set a red diffuse\n * ```\n *\n * @since 1.2.0\n */\nexport class Material extends Resource {\n /**\n * @deprecated Use {@link MaterialManager#getTemplate} via {@link WonderlandEngine.materials}\n * to create a new material with a given pipeline:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\n constructor(engine: WonderlandEngine, params: number | MaterialParameters) {\n if (typeof params !== 'number') {\n if (!params?.pipeline) throw new Error(\"Missing parameter 'pipeline'\");\n const template = engine.materials.getTemplate(params.pipeline);\n const material = new template();\n super(engine, material._index);\n return material;\n }\n super(engine, params);\n }\n\n /**\n * Check whether a parameter exists on this material.\n *\n * @param name The name to check.\n * @returns `true` if the parameter with name `name` exists on this material,\n * `false` otherwise.\n */\n hasParameter(name: string) {\n const parameters = (this.constructor as MaterialConstructor).Parameters;\n return parameters && parameters.has(name);\n }\n\n /** @deprecated Use {@link pipeline} instead. */\n get shader(): string {\n return this.pipeline;\n }\n\n /** Name of the pipeline used by this material. */\n get pipeline(): string {\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id));\n }\n\n /**\n * Create a copy of the underlying native material.\n *\n * @returns Material clone.\n */\n clone(): Material | null {\n const index = this.engine.wasm._wl_material_clone(this._id);\n return this.engine.materials.wrap(index);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Material(destroyed)';\n }\n return `Material('${this.pipeline}', ${this._index})`;\n }\n\n /**\n * Wrap a native material index.\n *\n * @param engine Engine instance.\n * @param index The index.\n * @returns Material instance or `null` if index <= 0.\n *\n * @deprecated Use the {@link WonderlandEngine.materials} instead.\n */\n static wrap(engine: WonderlandEngine, index: number): Material | null {\n return engine.materials.wrap(index);\n }\n}\n\n/**\n * Manage materials.\n *\n * #### Creation\n *\n * To create a material, first retrieve the class associated to\n * the pipeline using {@link MaterialManager.getTemplate}:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * ```\n *\n * Creating a material is then done using the constructor:\n *\n * ```js\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n */\nexport class MaterialManager extends ResourceManager {\n /** Material classes. @hidden. */\n private readonly _materialTemplates: MaterialConstructor[] = [];\n\n /** @hidden */\n constructor(engine: WonderlandEngine) {\n super(engine, Material);\n this._cacheDefinitions();\n }\n\n /** @override */\n wrap(index: number) {\n if (index <= 0) return null;\n\n const cached = this._cache[index];\n if (cached) return cached;\n\n const wasm = this.engine.wasm;\n const definition = wasm._wl_material_get_definition(index);\n\n const Template = this._materialTemplates[definition];\n const material = new Template(index);\n return this._wrapInstance(material);\n }\n\n /**\n * Get the material class with the given pipeline name.\n *\n * #### Usage\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n *\n * #### TypeScript\n *\n * This method provide a simple way to cast the constructor returned by `getTemplate`:\n *\n * ```ts\n * interface Phong {\n * getAmbientColor(out?: Float32Array): Float32Array;\n * setAmbientColor(value: NumberArray): void;\n * }\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `Phong`\n * ```\n *\n * However, this means manually writing types for each pipeline.\n *\n * Fortunately, The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * Material constructors will then be typed automatically when using a string literal pipeline name:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `PhongOpaque`\n * ```\n *\n * @param pipeline The pipeline name to search for.\n * @returns The material class.\n *\n * @throws `Error` if the material class doesn't exist.\n */\n getTemplate(pipeline: string): MaterialConstructor {\n const wasm = this.engine.wasm;\n const index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline));\n if (!index) {\n throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`);\n }\n return this._materialTemplates[index] as MaterialConstructor;\n }\n\n /**\n * Wrap a material instance.\n *\n * @todo: Remove at 2.0.0.\n *\n * @note Wrapping should only be called once per instance.\n *\n * @param instance The material instance.\n * @returns The new material, wrapped in a proxy.\n */\n _wrapInstance(instance: Material): Material {\n this._cache[instance.index] = instance;\n if (!this.engine.legacyMaterialSupport) return instance;\n\n /** @todo: Remove at 2.0.0. This is kept for backward compatibility. */\n const proxy = new Proxy(instance, {\n get(target: Material, prop: string) {\n if (!target.hasParameter(prop)) {\n return (target as Record)[prop];\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `get${capitalizeFirstUTF8(prop)}`;\n return (target as Record)[name]();\n },\n set(target, prop: string, value) {\n if (!target.hasParameter(prop)) {\n (target as Record)[prop] = value;\n return true;\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `set${capitalizeFirstUTF8(prop)}`;\n (target as Record)[name](value);\n return true;\n },\n });\n this._cache[instance.index] = proxy;\n return proxy;\n }\n\n /**\n * Cache all pipeline definitions.\n *\n * @hidden\n */\n private _cacheDefinitions() {\n const wasm = this.engine.wasm;\n const count = wasm._wl_get_material_definition_count();\n for (let i = 1; i < count; ++i) {\n this._materialTemplates[i] = this._createMaterialTemplate(i);\n }\n }\n\n /**\n * Create a material class from a definition index.\n *\n * @param wasm The WASM instance.\n * @param definitionIndex The definition index to wrap.\n * @returns The material class.\n */\n private _createMaterialTemplate(definitionIndex: number) {\n const engine = this.engine;\n const template = class CustomMaterial extends Material {\n static Parameters: Set = new Set();\n\n constructor(index?: number) {\n index = index ?? engine.wasm._wl_material_create(definitionIndex);\n super(engine, index);\n /** @todo(2.0.0): Unify with Material. We need to wrap in both since materials\n * can be created via the parent class, or via child classes.\n * In addition, wrapping returns a proxy, we want to support Proxy\n * as well as Proxy. */\n return engine.materials._wrapInstance(this);\n }\n };\n\n const wasm = this.engine.wasm;\n const nbParams = wasm._wl_material_definition_get_param_count(definitionIndex);\n for (let index = 0; index < nbParams; ++index) {\n const name = wasm.UTF8ToString(\n wasm._wl_material_definition_get_param_name(definitionIndex, index)\n );\n template.Parameters.add(name);\n\n const t = wasm._wl_material_definition_get_param_type(definitionIndex, index);\n const type = t & 0xff;\n const componentCount = (t >> 8) & 0xff;\n /* metaType could also be extracted using: (t >> 16) & 0xff */\n\n const capitalized = capitalizeFirstUTF8(name);\n const getterId = `get${capitalized}`;\n const setterId = `set${capitalized}`;\n\n const templateProto = template.prototype as Record;\n switch (type) {\n case MaterialParamType.UnsignedInt:\n templateProto[getterId] = uint32Getter(index, componentCount);\n /* For now, it's only possible to set scalar uint values */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.Int:\n templateProto[getterId] = int32Getter(index, componentCount);\n /* For now, it's only possible to set scalar int values. Integer values setter\n * is purposely shared with uint. */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.HalfFloat:\n case MaterialParamType.Float:\n templateProto[getterId] = float32Getter(index, componentCount);\n templateProto[setterId] = float32Setter(index, componentCount);\n break;\n case MaterialParamType.Sampler:\n templateProto[getterId] = samplerGetter(index);\n templateProto[setterId] = samplerSetter(index);\n break;\n case MaterialParamType.Font:\n templateProto[getterId] = fontGetter(index);\n /* For now, setting fonts is not supported */\n break;\n }\n }\n\n return template as MaterialConstructor;\n }\n}\n\n/** @todo: With this implementation, `_wl_material_get_param_value`\n * do not need to check for the parameter type anymore, we could use\n * explicit calls. */\n\nfunction uint32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemUint32[0];\n };\n }\n return function (this: Material, out: NumberArray = new Uint32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemUint32[i];\n }\n return out;\n };\n}\n\nfunction uint32Setter(index: number) {\n return function (this: Material, value: number) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value);\n };\n}\n\nfunction int32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemInt[0];\n };\n }\n return function (this: Material, out: NumberArray = new Int32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemInt[i];\n }\n return out;\n };\n}\n\nfunction float32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n };\n }\n return function (this: Material, out: NumberArray = new Float32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n };\n}\n\nfunction float32Setter(index: number, count: number) {\n return function (this: Material, value: number | NumberArray) {\n const wasm = this.engine.wasm;\n\n let actualCount = 1;\n if (typeof value === 'number') {\n wasm._tempMemFloat[0] = value;\n } else {\n actualCount = value.length;\n for (let i = 0; i < actualCount; ++i) wasm._tempMemFloat[i] = value[i];\n }\n\n if (actualCount < count) {\n throw new Error(`Expected an array ${count} values, got ${actualCount}`);\n }\n\n wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count);\n };\n}\n\nfunction samplerGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.textures.wrap(wasm._tempMemInt[0]);\n };\n}\n\nfunction samplerSetter(index: number) {\n return function (this: Material, value: Texture | null | undefined) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0);\n };\n}\n\nfunction fontGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.fonts.wrap(wasm._tempMemInt[0]);\n };\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Mesh, MeshIndexType, MeshParameters, MeshSkinningType} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\n/**\n * Manage meshes.\n *\n * #### Creation\n *\n * Creating a mesh is done using {@link MeshManager.create}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n *\n * @since 1.2.0\n */\nexport class MeshManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Mesh);\n }\n\n /**\n * Create a new mesh.\n *\n * @param params Vertex and index data. For more information, have a look\n * at the {@link MeshParameters} object.\n */\n create(params: Partial) {\n if (!params.vertexCount) throw new Error(\"Missing parameter 'vertexCount'\");\n\n const wasm = this.engine.wasm;\n\n let indexData = 0;\n let indexType = 0;\n let indexDataSize = 0;\n if (params.indexData) {\n indexType = params.indexType || MeshIndexType.UnsignedShort;\n indexDataSize = params.indexData.length * indexType;\n indexData = wasm._malloc(indexDataSize);\n /* Copy the index data into wasm memory */\n switch (indexType) {\n case MeshIndexType.UnsignedByte:\n wasm.HEAPU8.set(params.indexData, indexData);\n break;\n case MeshIndexType.UnsignedShort:\n wasm.HEAPU16.set(params.indexData, indexData >> 1);\n break;\n case MeshIndexType.UnsignedInt:\n wasm.HEAPU32.set(params.indexData, indexData >> 2);\n break;\n }\n }\n\n const {skinningType = MeshSkinningType.None} = params;\n\n const index = wasm._wl_mesh_create(\n indexData,\n indexDataSize,\n indexType,\n params.vertexCount,\n skinningType\n );\n const instance = new Mesh(this._host, index);\n this._cache[instance.index] = instance;\n return instance;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {ImageLike} from '../types.js';\nimport {Texture} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\nexport function needsFlipY(image: ImageLike) {\n /* WebGL can't flip ImageBitmap on upload.\n * For consistency with WebGPU, disable ImageBitmap flipping entirely and let the user use:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap#options */\n return image instanceof ImageBitmap ? 0 : 1;\n}\n\n/**\n * Manage textures.\n *\n * #### Creation\n *\n * Creating a texture is done using {@link TextureManager.load}:\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * Alternatively, textures can be created directly via a loaded image using\n * {@link TextureManager.create}.\n *\n * @since 1.2.0\n */\nexport class TextureManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Texture);\n }\n\n /**\n * Create a new texture from an image or video.\n *\n * #### Usage\n *\n * ```js\n * const img = new Image();\n * img.load = function(img) {\n * const texture = engine.textures.create(img);\n * };\n * img.src = 'my-image.png';\n * ```\n *\n * @note The media must already be loaded. To automatically\n * load the media and create a texture, use {@link TextureManager.load} instead.\n *\n * @param image Media element to create the texture from.\n * @ret\\urns The new texture with the media content.\n */\n create(image: ImageLike): Texture {\n const wasm = this.engine.wasm;\n\n const jsImageIndex = wasm._images.length;\n wasm._images.push(image);\n\n if (image instanceof HTMLImageElement && !image.complete) {\n throw new Error('image must be ready to create a texture');\n }\n\n const width = (image as HTMLVideoElement).videoWidth ?? image.width;\n const height = (image as HTMLVideoElement).videoHeight ?? image.height;\n\n const imageIndex = wasm._wl_image_create(jsImageIndex);\n wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image));\n\n /* Required because the image isn't a resource by itself, but will eventually be one. */\n const index = wasm._wl_texture_create(imageIndex);\n\n const instance = new Texture(this.engine, index);\n this._cache[instance.index] = instance;\n\n return instance;\n }\n\n /**\n * Load an image from URL as {@link Texture}.\n *\n * #### Usage\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * @param filename URL to load from.\n * @param crossOrigin Cross origin flag for the image object.\n * @returns Loaded texture.\n */\n load(filename: string, crossOrigin?: string): Promise {\n let image = new Image();\n image.crossOrigin = crossOrigin ?? image.crossOrigin;\n image.src = filename;\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(this.create(image));\n };\n image.onerror = function () {\n reject('Failed to load image. Not found or no read access');\n };\n });\n }\n}\n", "import {WASM} from './wasm.js';\nimport {Scene} from './scene.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {WonderlandEngine} from './engine.js';\nimport {InputType, ViewComponent} from './wonderland.js';\n\ntype WebXRFramebuffer = WebGLFramebuffer & {name: number};\ntype WebXRTexture = WebGLTexture & {name: number};\n\n/**\n * Options for {@link LoadRuntimeOptions.xrOfferSession}\n *\n * @since 1.1.5\n */\nexport interface XROfferSessionOptions {\n /**\n * Mode to offer XR session with. If set to `'auto'`, offers a session\n * with the first supported mode in the following order:\n * - VR\n * - AR\n * - inline\n */\n mode: XRSessionMode | 'auto';\n /** Required features for the offered XR session */\n features: string[];\n /** Optional features for the offered XR session */\n optionalFeatures: string[];\n}\n\n/** Properties of a WebXR session */\nexport class XRSessionState {\n /** Wonderland WASM bridge. @hidden */\n readonly #webxr: WebXR;\n\n /** Current WebXR session mode */\n sessionMode: XRSessionMode;\n\n /** Current WebXR session */\n session: XRSession;\n\n /** Current WebXR frame */\n frame: XRFrame | null = null;\n\n /**\n * Constructor.\n *\n * @param wasm Wasm bridge instance\n * @param mode Current XR session mode\n *\n * @hidden\n */\n constructor(webxr: WebXR, mode: XRSessionMode, session: XRSession) {\n this.#webxr = webxr;\n this.sessionMode = mode;\n this.session = session;\n }\n\n /** @overload */\n referenceSpaceForType(type: 'viewer'): XRReferenceSpace;\n /**\n * Get a WebXR reference space of a given reference space type.\n *\n * @param type Type of reference space to get\n * @returns Reference space, or `null` if there's no reference space\n * of the requested type available\n */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null;\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this.#webxr.referenceSpaceForType(type);\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this.#webxr.currentReferenceSpace = refSpace;\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this.#webxr.currentReferenceSpace;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this.#webxr.currentReferenceSpaceType;\n }\n\n /** Current WebXR base layer */\n get baseLayer(): XRProjectionLayer | XRWebGLLayer {\n return this.#webxr.baseLayer!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n return this.#webxr.framebuffers;\n }\n}\n\n/**\n * WebXR API (internal)\n *\n * @hidden\n */\nexport class WebXR {\n /** Wonderland WASM bridge. @hidden */\n readonly #wasm: WASM;\n\n readonly engine: WonderlandEngine;\n\n sessionState: XRSessionState | null = null;\n\n colorFormat: number = 0x8058 /* RGBA8 */;\n depthFormat: number = 0x88f0 /* DEPTH24_STENCIL8 */;\n textureType: XRTextureType = 'texture';\n\n /**\n * {@link Emitter} for WebXR session end events.\n */\n readonly onSessionEnd = new Emitter();\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n */\n readonly onSessionStart: Emitter<[XRSession, XRSessionMode]> = new RetainEmitter<\n [XRSession, XRSessionMode]\n >();\n\n /**\n * {@link Emitter} notified before the first update and rendering on the first frame of a new XR session.\n */\n readonly onSessionFirstFrame: Emitter<[XRSession, XRSessionMode]> = new Emitter<\n [XRSession, XRSessionMode]\n >();\n\n /** Whether AR is supported by the browser. */\n arSupported: boolean = false;\n\n /** Whether VR is supported by the browser. */\n vrSupported: boolean = false;\n\n /**\n * Current WebXR base layer or `null` if no session active.\n */\n baseLayer: XRProjectionLayer | XRWebGLLayer | null = null;\n\n /** WebXR framebuffer scale factor. */\n framebufferScaleFactor: number = 1.0;\n\n private _webglBinding: XRWebGLBinding | null = null;\n\n private _initXR: boolean = false;\n private _inXR: boolean = false;\n\n /** WebXR reference spaces. */\n private _refSpaces: Record = {\n 'viewer': undefined,\n 'local': undefined,\n 'local-floor': undefined,\n 'bounded-floor': undefined,\n 'unbounded': undefined,\n };\n\n /** Current WebXR reference space. */\n private _refSpace: XRReferenceSpace | null = null;\n\n /** Current WebXR reference space type. */\n private _refSpaceType: XRReferenceSpaceType | null = null;\n\n /**\n * Emscripten WebXR framebuffer(s).\n *\n * @note fbo will not get overwritten if we are rendering to the\n * default framebuffer, e.g., when using WebXR emulator.\n */\n private _fbo: number | number[] = 0;\n\n private _allowLayers: boolean = false;\n private _requestAnimationFrameId: any = null;\n\n /**\n * Initial WebXR reference space type. See {@link init} for\n * more information.\n */\n private _initialReferenceSpaceType: XRReferenceSpaceType | null = null;\n\n private _tempPosition: Float32Array = new Float32Array(3);\n private _tempRotation: Float32Array = new Float32Array(4);\n\n private _tempPose(transform: XRRigidTransform) {\n const p = transform.position;\n this._tempPosition[0] = p.x;\n this._tempPosition[1] = p.y;\n this._tempPosition[2] = p.z;\n const o = transform.orientation;\n this._tempRotation[0] = o.x;\n this._tempRotation[1] = o.y;\n this._tempRotation[2] = o.z;\n this._tempRotation[3] = o.w;\n }\n\n /**\n * Constructor.\n *\n * @param engine Engine\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine) {\n this.engine = engine;\n this.#wasm = engine.wasm;\n }\n\n /**\n * Check whether XR is supported and store the result in {@link arSupported} and {@link vrSupported}\n */\n checkXRSupport(): Promise {\n if (typeof navigator === 'undefined') {\n return Promise.resolve(false);\n }\n if (!navigator.xr) {\n const isLocalhost =\n location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n const missingHTTPS = location.protocol !== 'https:' && !isLocalhost;\n console.warn(\n missingHTTPS\n ? 'WebXR is only supported with HTTPS or on localhost!'\n : 'WebXR unsupported in this browser.'\n );\n return Promise.resolve(false);\n }\n /* Those can throw if the application is embedded in an iframe without\n * xr-spatial-tracking permission. navigator.xr will be available, but\n * any access of it will throw. */\n const vrPromise = navigator.xr\n .isSessionSupported('immersive-vr')\n .then((supported) => (this.vrSupported = supported))\n .catch(() => (this.vrSupported = false));\n const arPromise = navigator.xr\n .isSessionSupported('immersive-ar')\n .then((supported) => (this.arSupported = supported))\n .catch(() => (this.arSupported = false));\n\n return Promise.all([vrPromise, arPromise]).then(\n () => this.vrSupported || this.arSupported\n );\n }\n\n /**\n * Initialize WebXR.\n *\n * @hidden\n */\n async init(\n framebufferScaleFactor: number,\n offerSessionOptions: XROfferSessionOptions | null\n ) {\n const supported = await this.checkXRSupport();\n if (!supported) return;\n\n this.framebufferScaleFactor = framebufferScaleFactor;\n\n /* Force the reference space to 'local'/'viewer' for the loading screen\n * to make sure the head input is at the origin. Doing it this way to\n * avoid adding JS components to the loading screen. */\n const onXRStart = () => {\n this._initialReferenceSpaceType = this.currentReferenceSpaceType;\n const newSpace = this._refSpaces['local'] ?? this._refSpaces['viewer']!;\n this.currentReferenceSpace = newSpace;\n };\n\n /* Not once() because the user can enter and exit XR several times\n * during a long loading screen */\n this.onSessionStart.add(onXRStart);\n\n /* This is called before all init()/start()/onActivate() so we avoid\n * overwriting a user-set reference space */\n this.engine.onLoadingScreenEnd.once(() => {\n this.onSessionStart.remove(onXRStart);\n\n if (!this._initialReferenceSpaceType) return;\n\n this.currentReferenceSpace =\n this._refSpaces[this._initialReferenceSpaceType] ??\n this._refSpaces['viewer']!;\n this._initialReferenceSpaceType = null;\n });\n\n if (offerSessionOptions !== null) {\n let mode = offerSessionOptions.mode;\n if (mode == 'auto') {\n if (this.vrSupported) {\n mode = 'immersive-vr';\n } else if (this.arSupported) {\n mode = 'immersive-ar';\n } else {\n mode = 'inline';\n }\n }\n\n const offerSession = () => {\n this.offerSession(\n mode as XRSessionMode,\n offerSessionOptions.features,\n offerSessionOptions.optionalFeatures\n )\n .then(\n /* When the session ends, offer to start a new one again */\n (s) => s.addEventListener('end', offerSession)\n )\n /* The browser may not suppoer offer session, or a previous request\n * was replaced by a new one. Not crucial, but inform the user. */\n .catch(console.warn);\n };\n\n offerSession();\n }\n }\n\n /** Get a WebXR reference space of a given reference space type. */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this._refSpaces[type] ?? null;\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this._refSpace! = refSpace;\n\n this._refSpaceType = null;\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n if (this._refSpaces[type] === refSpace) {\n /* Keep track of reference space type */\n this._refSpaceType = type;\n }\n }\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this._refSpace!;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this._refSpaceType!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n if (!Array.isArray(this._fbo)) {\n return [this.#wasm.GL.framebuffers[this._fbo]];\n }\n return this._fbo.map((id) => this.#wasm.GL.framebuffers[id]);\n }\n\n /**\n * Set main/left/right eye view active according to XR mode.\n *\n * If @param inXR is `true`, disables the main view and enables the left and\n * right view. Otherwise, enables the main view and disables the left and\n * right view.\n *\n * @param inXR Whether an XR session is currently active\n */\n updateViewState(inXR: boolean | undefined) {\n const scene: Scene = this.engine.scene;\n\n inXR = inXR ?? this._inXR;\n\n if (scene.mainView) {\n scene.mainView.active = !inXR;\n }\n\n if (scene.leftEyeView && scene.rightEyeView) {\n /** We always have either no left/right eye views or both. Always enable\n * both since we can't know if this is single-view AR until we get the\n * view count in {@link nextFrame}. There the right eye view is\n * disabled if necessary. */\n scene.leftEyeView.active = inXR;\n scene.rightEyeView.active = inXR;\n }\n }\n\n /**\n * Set projection matrix parameters for the webxr session.\n *\n * @param near Distance of near clipping plane\n * @param far Distance of far clipping plane\n */\n updateProjectionParams(near: number | undefined, far: number | undefined) {\n if (!this.sessionState) return;\n\n const scene = this.engine.scene;\n near ??= scene.leftEyeView!.near;\n far ??= scene.leftEyeView!.far;\n\n /* If reverse-Z is enabled, we need to give WebXR swapped near and far\n * planes so it generates the correct projection matrices. This is\n * explicitly supported by the spec. */\n const reverseZ = !!this.engine.isReverseZEnabled;\n\n this.sessionState!.session.updateRenderState({\n depthNear: reverseZ ? far : near,\n depthFar: reverseZ ? near : far,\n });\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n const options = this.sessionOptions(features, optionalFeatures);\n return navigator.xr!.requestSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n /* @ts-ignore */\n if (!navigator.xr!.offerSession) {\n return Promise.reject('WebXR offerSession() unsupported in this browser.');\n }\n const options = this.sessionOptions(features, optionalFeatures);\n /* @ts-ignore */\n return navigator.xr!.offerSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n async startSession(session: XRSession, mode: XRSessionMode) {\n /* Multiple calls to requestSession will result in the existing\n * session being passed to the callback */\n if (session == this.sessionState?.session) return;\n this.sessionState = new XRSessionState(this, mode, session);\n\n /* React to session ending */\n session.addEventListener('end', () => {\n this.endSession();\n });\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n\n /* Create the base layer */\n let binding = null;\n const isEmulator = 'CustomWebXRPolyfill' in window;\n /* The WebXR emulator doesn't support layers, and will\n * simply throw an exception. Only way of checking seems\n * to be whether the custom polyfill is available */\n if (!isEmulator && 'XRWebGLBinding' in window) {\n binding = this._webglBinding = new XRWebGLBinding(session, gl);\n }\n const useLayers = this._allowLayers && binding;\n if (useLayers) {\n /* Use WebXR Layers */\n const layer = (this.baseLayer = binding!.createProjectionLayer({\n scaleFactor: this.framebufferScaleFactor,\n colorFormat: this.colorFormat,\n depthFormat: this.depthFormat,\n /* Always use 'texture-array' with multiview, otherwise default to it\n * if not set otherwise */\n textureType: !this.textureType ? 'texture-array' : this.textureType,\n }));\n session.updateRenderState({layers: [layer]});\n } else {\n const layer = (this.baseLayer = new XRWebGLLayer(session, gl, {\n framebufferScaleFactor: this.framebufferScaleFactor,\n }));\n session.updateRenderState({baseLayer: layer});\n }\n\n /* Request and cache available spaces. 'viewer' is always available. */\n const promises = [];\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n promises.push(\n session.requestReferenceSpace(type).then((refSpace) => {\n this._refSpaces[type] = refSpace;\n return refSpace;\n })\n );\n }\n\n await Promise.allSettled(promises).then((results) => {\n /* We prefer the reference space automatically in above order */\n for (let i = results.length - 1; i >= 0; --i) {\n const result = results[i];\n if (result.status === 'rejected') continue;\n /* Type is kept track of for the user to test against */\n this._refSpaceType = Object.keys(this._refSpaces)[\n i\n ] as XRReferenceSpaceType;\n this._refSpace = result.value;\n break;\n }\n });\n\n const isVR = mode == 'immersive-vr';\n\n const scene: Scene = this.engine.scene;\n\n if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) {\n console.error(\n `sessionStart(): VR sessions require 1 classic view, a left and a right view`\n );\n return;\n }\n\n this.updateViewState(true);\n\n this.updateProjectionParams(undefined, undefined);\n\n this.onSessionStart.notify(session, this.sessionState!.sessionMode);\n\n this.#wasm._wl_reset_context();\n\n console.log(`WebXR ${isVR ? 'VR' : 'AR'} session started`);\n\n this.sessionState.session.addEventListener('visibilitychange', (event) => {\n switch (event.session.visibilityState) {\n case 'visible':\n this.#wasm._wl_xr_focus();\n case 'visible-blurred':\n this.#wasm._wl_xr_blur();\n case 'hidden':\n this.#wasm._wl_xr_hide();\n }\n });\n\n /* Wait until first frame to call _wl_xr_init() */\n this._initXR = true;\n\n this._requestAnimationFrameId = session.requestAnimationFrame(\n useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)\n );\n }\n\n sessionOptions(\n requiredFeatures: string[],\n optionalFeatures: string[] = []\n ): XRSessionInit {\n if (this._allowLayers && !optionalFeatures.includes('layers')) {\n optionalFeatures.push('layers');\n }\n\n const params: XRSessionInit = {\n requiredFeatures,\n optionalFeatures,\n };\n\n const hasDepthSensing =\n requiredFeatures.includes('depth-sensing') ||\n optionalFeatures.includes('depth-sensing');\n if (hasDepthSensing) {\n params.depthSensing = {\n usagePreference: ['gpu-optimized', 'cpu-optimized'],\n dataFormatPreference: ['float32', 'luminance-alpha'],\n };\n }\n return params;\n }\n\n endSession() {\n this.sessionState!.session.cancelAnimationFrame(this._requestAnimationFrameId);\n this._requestAnimationFrameId = null;\n this.sessionState = null;\n\n this.#wasm._wl_reset_context();\n\n if (this.onSessionStart instanceof RetainEmitter) this.onSessionStart.reset();\n this.onSessionEnd.notify();\n\n console.log('WebXR session ended');\n\n this._inXR = false;\n\n this.updateViewState(false);\n\n const scene: Scene = this.engine.scene;\n\n this.#wasm._wl_xr_exit();\n\n /* Restore projection matrices. They are temporarily overridden in XR and\n * view changes are applied when the session ends. */\n scene.leftEyeView!._generateProjectionMatrix();\n scene.rightEyeView!._generateProjectionMatrix();\n\n /* Meta WebXR emulator doesn't request animation frame. Quest does. */\n this.#wasm._wl_application_redraw();\n }\n\n nextFrame(time: number, frame: XRFrame) {\n this.sessionState!.frame = frame;\n\n const session = frame.session;\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const scene: Scene = this.engine.scene;\n\n if (this._initXR) {\n /* There's no way to tell how many views we have before rendering the first frame,\n * and AR is not a sufficient criteria for one eye (mobile AR, AR headsets) */\n scene.rightEyeView!.active = pose.views.length > 1;\n\n this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer);\n this._initXR = false;\n this._inXR = true;\n\n this.onSessionFirstFrame.notify(session, this.sessionState!.sessionMode);\n }\n\n /* Head transformation */\n this._tempPose(pose.transform);\n scene._setInputTransformation(\n InputType.Head,\n this._tempPosition,\n this._tempRotation\n );\n\n /* Eyes transformations */\n for (let i = 0; i < pose.views.length && i < 2; ++i) {\n const view = pose.views[i];\n const viewIndex = view.eye == 'right' ? 1 : 0;\n this._tempPose(view.transform);\n scene._setInputTransformation(\n InputType.EyeLeft + viewIndex,\n this._tempPosition,\n this._tempRotation\n );\n }\n\n /* Controller transformations */\n for (const inputSource of session.inputSources) {\n let handedness = -1;\n if (inputSource.handedness == 'left') handedness = 0;\n else if (inputSource.handedness == 'right') handedness = 1;\n this._updateInputComponent(\n frame,\n inputSource.gripSpace,\n InputType.ControllerLeft + handedness\n );\n this._updateInputComponent(\n frame,\n inputSource.targetRaySpace,\n InputType.RayLeft + handedness\n );\n }\n\n this.#wasm._wl_nextFrame(0);\n }\n\n nextFrameSingle(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameSingle.bind(this)\n );\n }\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n /* If framebuffer is non-null, compositor is enabled and we bind it.\n * If it's null, we need to avoid this call otherwise the canvas FBO is bound */\n const glLayer = session.renderState.baseLayer!;\n if (glLayer.framebuffer) {\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const id = this._fbo || GL.getNewId(GL.framebuffers);\n (glLayer.framebuffer as WebXRFramebuffer).name = id;\n GL.framebuffers[id] = glLayer.framebuffer;\n this._fbo = id;\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]);\n }\n\n for (let i = 0; i < pose.views.length; ++i) {\n const view = pose.views[i];\n const viewport = glLayer.getViewport(view)!;\n\n let destView: ViewComponent;\n if (view.eye == 'left') {\n destView = this.engine.scene.leftEyeView!;\n } else if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene._components.componentAt(ViewComponent, i);\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n /* Patch projection matrix, currently only needed for reverse-Z.\n * If reverse-Z is enabled, we pass swapped near and far values to\n * updateRenderState(), giving us a matrix with inverted depth. But\n * we still need to map from NDC 1,-1 to 1,0. On WebGPU this won't\n * be necessary. */\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n this._fbo as number\n );\n }\n\n this.nextFrame(time, frame);\n }\n\n nextFrameLayers(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameLayers.bind(this)\n );\n }\n\n const scene: Scene = this.engine.scene;\n\n const pose = frame.getViewerPose(this._refSpace!)!;\n\n const layer = this.baseLayer!;\n const binding = this._webglBinding;\n\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n const createFramebuffer = !this._fbo;\n const textureArray = layer.textureArrayLength == 2;\n\n if (createFramebuffer) {\n if (textureArray) {\n this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)];\n } else {\n /* Both eyes use the same FBO */\n const id = GL.getNewId(GL.framebuffers);\n this._fbo = [id, id];\n }\n this._fbo.forEach((id) => {\n const framebuffer = gl.createFramebuffer() as WebXRFramebuffer;\n GL.framebuffers[id] = framebuffer;\n framebuffer.name = id;\n });\n }\n\n const ids = this._fbo as number[];\n pose.views.forEach((view) => {\n const viewIndex = view.eye == 'right' ? 1 : 0;\n\n const subImage = binding!.getViewSubImage(layer, view);\n const viewport = subImage.viewport;\n\n let destView: ViewComponent;\n if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene.leftEyeView!;\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n ids[viewIndex]\n );\n\n if (!createFramebuffer) return;\n /* Only needs to be done for the first view on when using side-by-side\n * target texture */\n if (!textureArray && viewIndex != 0) return;\n\n /* Make WebXR API created textures known to emscripten */\n const colorTexture = subImage.colorTexture as WebXRTexture;\n const colorImageId = (colorTexture.name =\n colorTexture.name || GL.getNewId(GL.textures));\n GL.textures[colorImageId] = colorTexture;\n\n const depthStencilTexture = subImage.depthStencilTexture as WebXRTexture;\n const depthStencilImageId = (depthStencilTexture.name =\n depthStencilTexture.name || GL.getNewId(GL.textures));\n GL.textures[depthStencilImageId] = depthStencilTexture;\n\n /* Attach textures to framebuffer */\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]);\n\n if (textureArray) {\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n subImage.colorTexture,\n 0,\n subImage.imageIndex\n );\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n subImage.depthStencilTexture,\n 0,\n subImage.imageIndex\n );\n } else {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n subImage.colorTexture,\n 0\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.TEXTURE_2D,\n subImage.depthStencilTexture,\n 0\n );\n }\n\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER)) {\n console.error('Target framebuffer for', view.eye, 'eye is incomplete.');\n }\n });\n\n this.nextFrame(time, frame);\n }\n\n private _updateInputComponent(\n frame: XRFrame,\n space: XRSpace | undefined,\n inputType: InputType\n ) {\n if (!space) return;\n const pose = frame.getPose(space, this._refSpace!);\n if (!pose || Number.isNaN(pose.transform.matrix[0])) return;\n this._tempPose(pose.transform);\n this.engine.scene._setInputTransformation(\n inputType,\n this._tempPosition,\n this._tempRotation\n );\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {InstantiateGltfResult, Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {Object3D} from './wonderland.js';\n\n/** GLTF-specific loading options. */\nexport type GLTFOptions = {\n /** If `true`, extensions will be parsed. */\n extensions?: boolean;\n};\n\n/**\n * Extension data obtained from glTF files.\n */\nexport interface GLTFExtensionsInstance {\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\nexport class GLTFExtensions {\n objectCount: number;\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record = {};\n /**\n * Mesh extension objects. Key is the gltf index, value is JSON\n * data indexed by extension name.\n */\n mesh: Record> = {};\n /**\n * Node extension objects. Key is a glTF index, value is JSON\n * data indexed by extension name.\n */\n node: Record> = {};\n\n constructor(count: number) {\n this.objectCount = count;\n }\n}\n\n/**\n * glTF scene.\n *\n * At the opposite of {@link Scene}, glTF scenes can be instantiated\n * in other scenes but can't:\n * - Be activated\n * - Be the destination of an instantiation\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n *\n * const scene = engine.scene;\n * for (let i = 0; i < 100; ++i) {\n * scene.instantiate(prefab);\n * }\n * ```\n *\n * Since this class inherits from {@link Prefab}, you can use the shared\n * API to modify the glTF before an instantiation:\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n * const zombie = prefab.findByName('Zombie')[0];\n *\n * // The mesh is too small, we scale the root\n * zombie.setScalingWorld([2, 2, 2]);\n * // Add a custom js 'health' component to the root\n * zombie.addComponent('health', {value: 100});\n *\n * // 'Zombie' is wrapped in a new root added during instantiation\n * const {root} = engine.scene.instantiate(prefab);\n * const instanceZombie = root.children[0];\n * console.log(instanceZombie.getScalingWorld()); // Prints '[2, 2, 2]'\n * ```\n *\n * @category scene\n * @since 1.2.0\n */\nexport class PrefabGLTF extends Prefab {\n /**\n * Raw extensions read from the glTF file.\n *\n * The extensions will be mapped to the hierarchy upon instantiation.\n * For more information, have a look at the {@link InstantiateGltfResult} type.\n *\n * @note The glTF must be loaded with `extensions` enabled. If not, this\n * field will be set to `null`. For more information, have a look at the\n * {@link GLTFOptions} type.\n */\n extensions: GLTFExtensions | null = null;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n this.extensions = this._readExtensions();\n }\n\n /**\n * Instantiate the glTF extensions on an active sub scene graph.\n *\n * @param id The root object id.\n * @param result The instantiation object result.\n *\n * @hidden\n */\n _processInstantiaton(dest: Prefab, root: Object3D, result: InstantiateGltfResult) {\n if (!this.extensions) return null;\n\n const wasm = this.engine.wasm;\n\n const count = this.extensions.objectCount;\n const idMapping: number[] = new Array(count);\n\n /** @todo: We need some check to ensure that the gltf layout didn't change to retarget extensions.\n * At least a simple scene graph size check should be required to avoid a segfault. */\n\n const activeRootIndex = wasm._wl_object_index(root._id);\n for (let i = 0; i < count; ++i) {\n const mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(\n this._index,\n dest._index,\n activeRootIndex,\n i\n );\n idMapping[i] = mappedId;\n }\n\n const remapped: GLTFExtensionsInstance = {\n mesh: {},\n node: {},\n idMapping,\n };\n\n for (const gltfIndex in this.extensions.mesh) {\n const id = idMapping[gltfIndex];\n remapped.mesh[id] = this.extensions.mesh[gltfIndex];\n }\n for (const gltfIndex in this.extensions.node) {\n const id = idMapping[gltfIndex];\n remapped.node[id] = this.extensions.node[gltfIndex];\n }\n\n result.extensions = remapped;\n }\n\n /**\n * Unmarshalls gltf extensions.\n *\n * @hidden\n */\n private _readExtensions() {\n const wasm = this.engine.wasm;\n\n const ptr = wasm._wl_glTF_scene_get_extensions(this._index);\n if (!ptr) return null;\n\n let index = ptr / 4;\n const data = wasm.HEAPU32;\n const readString = () => {\n const strPtr = data[index++];\n const strLen = data[index++];\n return wasm.UTF8ViewToString(strPtr, strPtr + strLen);\n };\n\n const objectCount = data[index++];\n const extensions = new GLTFExtensions(objectCount);\n\n const meshExtensionsSize = data[index++];\n for (let i = 0; i < meshExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.mesh[objectId] = JSON.parse(readString());\n }\n const nodeExtensionsSize = data[index++];\n for (let i = 0; i < nodeExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.node[objectId] = JSON.parse(readString());\n }\n const rootExtensionsStr = readString();\n if (rootExtensionsStr) {\n extensions.root = JSON.parse(rootExtensionsStr);\n }\n\n return extensions;\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {WASM} from './wasm.js';\nimport {Emitter} from './utils/event.js';\nimport {fetchStreamWithProgress, fetchWithProgress, getBaseUrl} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Object3D,\n RayHit,\n Environment,\n ViewComponent,\n InputType,\n LogTag,\n} from './wonderland.js';\nimport {NumberArray} from './types.js';\nimport {Material} from './resources/material-manager.js';\nimport {InMemoryLoadOptions, Prefab, SceneLoadOptions} from './prefab.js';\nimport {GLTFExtensionsInstance, PrefabGLTF} from './scene-gltf.js';\n\nexport interface InstantiateResult {\n root: Object3D;\n}\n\nexport interface InstantiateGltfResult extends InstantiateResult {\n extensions: GLTFExtensionsInstance | null;\n}\n\n/** Options for scene activation. */\nexport interface ActivateOptions {\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n /**\n * If `true`, the promise will resolve only once all dependencies are downloaded.\n *\n * If `false`, resolves as soon as possible, e.g., when the lowest\n * resolution textures are available.\n */\n waitForDependencies?: boolean;\n /** @hidden */\n legacyLoaded?: boolean;\n}\n\n/**\n * Legacy gltf extension type.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadGLTF} API.\n */\nexport interface GLTFExtensionsLegacy {\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record>;\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\n/** Options for {@link Scene.append}. */\nexport interface SceneAppendParameters {\n /** Whether to load glTF extension data */\n loadGltfExtensions: boolean;\n baseURL: string | undefined;\n}\n\n/**\n * Result obtained when appending a scene with {@link Scene.append} with gltf extensions.\n */\nexport type SceneAppendResultWithExtensions = {\n root: Object3D | null;\n extensions: GLTFExtensionsLegacy;\n};\n\n/**\n * Result obtained when appending a scene with {@link Scene.append}.\n */\nexport type SceneAppendResult = (Object3D | null) | SceneAppendResultWithExtensions;\n\n/**\n * Constants\n */\n\n/** Magic number for .bin */\nconst MAGIC_BIN = 'WLEV';\n\n/**\n * Scene type to load with {@link ChunkedSceneLoadSink}.\n *\n * @since 1.2.1\n * @hidden\n */\nexport enum SceneType {\n Prefab,\n Main,\n Dependency,\n}\n\n/**\n * Sink for `WritableStream` that loads the data as a .bin file.\n *\n * Data is loaded chunk by chunk to minimize the total WASM allocation size.\n *\n * @since 1.2.1\n * @hidden\n */\nexport class ChunkedSceneLoadSink implements UnderlyingSink {\n readonly #wasm: WASM;\n readonly #type: SceneType;\n readonly #closeParameters: any[];\n #offset = 0;\n #requested = 0;\n #firstChunk = true;\n\n _loadIndex = -1;\n sceneIndex = -1;\n\n /** Pointer to the staging buffer. */\n #ptr: number = 0;\n /** Staging buffer size, in **bytes**. */\n #bufferSize: number = 0;\n\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Prefab, url: string);\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Main, url: string);\n /** @overload */\n constructor(\n engine: WonderlandEngine,\n type: SceneType.Dependency,\n url: string,\n dependentSceneIndex: number\n );\n /**\n * Constructor\n * @param engine Engine instance\n * @param type Type of scene to load\n * @param url URL for the scene creation. Can be empty.\n * @param closeParameters Parameters for the final function to be called\n * during a successful {@link ChunkedSceneLoadSink.close}.\n */\n constructor(\n engine: WonderlandEngine,\n type: SceneType,\n url: string,\n ...closeParameters: any[]\n ) {\n this.#wasm = engine.wasm;\n this.#type = type;\n this.#closeParameters = closeParameters;\n this._loadIndex = this.#wasm._wl_scene_create_chunked_start(\n this.#wasm.tempUTF8(url)\n );\n /* Initial buffer for the header chunk */\n this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex);\n this._resizeBuffer(this.#requested);\n }\n\n private _resizeBuffer(size: number) {\n if (this.#bufferSize > 0) {\n this.#wasm._free(this.#ptr);\n }\n this.#bufferSize = size;\n this.#ptr = size ? this.#wasm._malloc(size) : 0;\n }\n\n private _throwError(reason: string) {\n this.abort();\n throw new Error(reason);\n }\n\n /**\n * Write a single blob of data.\n *\n * @param blob Data to parse\n */\n write(blob: Uint8Array) {\n let read = 0;\n while (read < blob.length) {\n /* Fill the staging buffer */\n const toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset);\n /* **Do not** attempt to create a HEAP8 view here, since the next wasm call might\n * re-allocate the heap, making this view dangling. */\n this.#wasm.HEAPU8.set(\n blob.subarray(read, read + toRead),\n this.#ptr + this.#offset\n );\n this.#offset += toRead;\n read += toRead;\n\n /* Not enough data, wait for more */\n if (this.#requested > this.#offset) continue;\n\n /* Send data. This loads as many chunks as possible and then tells\n * us how much data it's missing, and how much it has read. The\n * read count allows us to move incomplete chunk data to the start\n * of the buffer. This is necessary because the buffer is allocated\n * with just enough data to hold the largest chunk. */\n const readSizePtr = this.#wasm._tempMem;\n const requestedPtr = this.#wasm._tempMem + 4;\n let success: boolean;\n try {\n success = this.#wasm._wl_scene_create_chunked_next(\n this._loadIndex,\n this.#ptr,\n this.#offset,\n readSizePtr,\n requestedPtr\n );\n } catch {\n /* Catch calls to abort(), e.g. via asserts */\n success = false;\n }\n\n if (!success) {\n this._throwError('Chunk parsing failed');\n }\n\n const sentSize = this.#offset;\n const readSize = this.#wasm._tempMemUint32[0];\n this.#requested = this.#wasm._tempMemUint32[1];\n const extraSize = sentSize - readSize;\n\n /* #requested == 0 signals end of .bin file */\n if (extraSize > this.#requested) {\n this._throwError('Unexpected extra data');\n }\n\n /* Not enough data for a chunk, wait for more */\n if (!readSize) continue;\n\n if (extraSize > 0) {\n /* We passed one or more complete chunks plus incomplete extra\n * data for the next chunk. Move it to the buffer start. */\n this.#wasm.HEAPU8.copyWithin(\n this.#ptr,\n this.#ptr + readSize,\n this.#ptr + sentSize\n );\n }\n\n this.#offset = extraSize;\n\n if (this.#firstChunk) {\n /* First chunk is the header. At this point we can query for\n * the required buffer size for parsing the rest of the .bin.\n * The initial buffer is exactly the size of the header chunk\n * so #offset should be 0 here since we sent a complete chunk. */\n this._resizeBuffer(\n this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)\n );\n this.#firstChunk = false;\n }\n }\n }\n\n /** Called when all blobs of data have been written */\n close() {\n if (this.#requested > 0) {\n this._throwError('Unexpected end of data');\n }\n\n this._resizeBuffer(0);\n switch (this.#type) {\n case SceneType.Prefab:\n this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(\n this._loadIndex\n );\n break;\n case SceneType.Main:\n this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex);\n this.sceneIndex = 0;\n break;\n case SceneType.Dependency:\n [this.sceneIndex] = this.#closeParameters;\n this.#wasm._wl_scene_create_chunked_end_queued(\n this._loadIndex,\n this.sceneIndex\n );\n break;\n default:\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n break;\n }\n this._loadIndex = -1;\n }\n\n /** Called when the stream is aborted */\n abort() {\n if (this._loadIndex === -1) return;\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n this._loadIndex = -1;\n this._resizeBuffer(0);\n }\n\n /** Staging buffer size */\n get size() {\n return this.#bufferSize;\n }\n}\n\n/**\n * Wonderland Engine (.bin) scene.\n *\n * Wonderland Engine packages two types of scene:\n * - Activatable scene: Contains objects, components, views, resources, and rendering data\n * - Streamable scene: Contains objects, components, and resources\n *\n * #### Activation\n *\n * Some scenes are **activatable**, they can thus be attached to the renderer\n * to be updated and rendered on the canvas.\n *\n * For more information, have a look at the {@link WonderlandEngine.switchTo} method.\n *\n * #### Instantiation\n *\n * Besides activation, a scene can instantiate the content of another scene.\n *\n * For more information, have a look at the {@link Scene#instantiate} method.\n *\n * @category scene\n */\nexport class Scene extends Prefab {\n /** Called before rendering the scene */\n readonly onPreRender = new Emitter();\n /** Called after the scene has been rendered */\n readonly onPostRender = new Emitter();\n\n /** Ray hit pointer in WASM heap. @hidden */\n private _rayHit: number;\n /** Ray hit. @hidden */\n private _hit: RayHit;\n\n /** @hidden */\n private _environment: Environment;\n\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n /** `this.engine?` is used for testing. */\n this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(this, this._rayHit);\n this._environment = new Environment(this);\n }\n\n /** @overload */\n instantiate(scene: PrefabGLTF): InstantiateGltfResult;\n /**\n * Instantiate `scene` into this instance.\n *\n * Any scene can be instantiated into one another. It's thus possible\n * to instantiate a {@link PrefabGLTF} into this instance, or another\n * {@link Scene} instance.\n *\n * #### Usage\n *\n * ```js\n * const prefabScene = await engine.loadScene('Prefab.bin');\n * // Instantiate `prefabScene` into `scene`\n * engine.scene.instantiate(prefabScene);\n * ```\n *\n * #### Shared Resources\n *\n * Instantiating **does not** duplicate resources. Each instance will\n * reference the same assets stored in the {@link Scene}, e.g.,\n *\n * ```js\n * // `zombie` has one mesh and one material\n * const zombie = await engine.loadScene('Zombie.bin');\n *\n * for (let i = 0; i < 100; ++i) {\n * engine.scene.instantiate(zombie);\n * }\n *\n * console.log(engine.meshes.count) // Prints '1'\n * console.log(engine.materials.count) // Prints '1'\n * ```\n *\n * #### glTF extensions\n *\n * Instantiating a prefab loaded from a .glb automatically retargets the extensions\n * to the created hierarchy:\n *\n * ```js\n * const gltf = await engine.loadGLTF({url: 'Model.glb', extensions: true});\n * const {root, extensions} = engine.scene.instantiate(gltf);\n *\n * // Retrieve Object3D instance from extension nodes list\n * for (const key in extensions.node) {\n * const object3d = engine.scene.wrap(extensions.node[key]);\n * }\n * ```\n *\n * @param scene The scene to instantiate.\n * @returns An object containing the instantiated root {@link Object3D}.\n * When a glTF is instantiated, the result can contain extra metadata.\n * For more information, have a look at the {@link InstantiateResult} type.\n *\n * @since 1.2.0\n */\n instantiate(prefab: Prefab): InstantiateResult;\n instantiate(prefab: Prefab): InstantiateResult {\n if (prefab._index === this._index) {\n throw new Error(\"Can't instantiate scene into itself\");\n }\n\n const wasm = this.engine.wasm;\n const id = wasm._wl_scene_instantiate(prefab._index, this._index);\n\n const result: InstantiateResult = {root: this.wrap(id)};\n if (prefab instanceof PrefabGLTF) {\n const obj = this.wrap(id);\n prefab._processInstantiaton(this, obj, result as InstantiateGltfResult);\n }\n return result;\n }\n\n /** @todo: Add `instantiateBatch` to instantiate multiple chunks in a row. */\n\n /**\n * @todo Provide an API to delete all resources linked to a scene.\n *\n * Example:\n *\n * ```ts\n * const scene = await engine.loadScene('Scene.bin');\n * ...\n * scene.destroy({removeResources: true});\n * ```\n */\n\n /**\n * Destroy this scene and remove it from the engine.\n *\n * @note Destroying a scene **doesn't** remove the materials, meshes,\n * and textures it references in the engine. Those should be cleaned up either by loading\n * another main scene via {@link WonderlandEngine.loadMainScene}, or manually using {@link Mesh.destroy}.\n *\n * @throws If the scene is currently active.\n * */\n destroy() {\n if (this.isActive) {\n throw new Error(\n `Attempt to destroy ${this}, but destroying the active scene is not supported`\n );\n }\n\n /* Store before calling `super.destroy()` since the call\n * might destroy entirely the prototype. */\n const wasm = this.engine.wasm;\n const rayPtr = this._rayHit;\n\n super.destroy();\n\n wasm._free(rayPtr);\n }\n\n /**\n * View components.\n */\n get views(): ViewComponent[] {\n return this._components.components(ViewComponent, false);\n }\n\n /**\n * Active view components.\n */\n get activeViews(): ViewComponent[] {\n return this._components.components(ViewComponent, true);\n }\n\n /**\n * Main view.\n */\n get mainView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_mainView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Left eye view.\n */\n get leftEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_leftView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Right eye view.\n */\n get rightEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_rightView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Set input transformation.\n *\n * @hidden\n */\n _setInputTransformation(\n type: InputType,\n position: Readonly,\n orientation: Readonly\n ) {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(4 * 2 * 4);\n wasm._tempMemFloat.set(position);\n wasm._tempMemFloat.set(orientation, 4);\n wasm._wl_input_set_transformation(this._index, type, wasm._tempMem);\n }\n\n /**\n * Cast a ray through the scene and find intersecting collision components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.scene.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of collision groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Scene}\n * instance and will be reused with the next {@link Scene#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance = 100.0\n ): RayHit {\n this.engine.wasm._wl_scene_ray_cast(\n this._index,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n this._rayHit,\n maxDistance\n );\n return this._hit;\n }\n\n /**\n * Set the background clear color.\n *\n * @param color new clear color (RGBA).\n * @since 0.8.5\n */\n set clearColor(color: number[]) {\n this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]);\n }\n\n /**\n * Set whether to clear the color framebuffer before drawing.\n *\n * This function is useful if an external framework (e.g. an AR tracking\n * framework) is responsible for drawing a camera frame before Wonderland\n * Engine draws the scene on top of it.\n *\n * @param b Whether to enable color clear.\n * @since 0.9.4\n */\n set colorClearEnabled(b: boolean) {\n this.engine.wasm._wl_scene_enableColorClear(b);\n }\n\n /**\n * Load a scene file (.bin).\n *\n * Will replace the currently active scene with the one loaded\n * from given file. It is assumed that JavaScript components required by\n * the new scene were registered in advance.\n *\n * Once the scene is loaded successfully and initialized,\n * {@link WonderlandEngine.onSceneLoaded} is notified.\n *\n * #### ArrayBuffer\n *\n * The `load()` method accepts an in-memory buffer:\n *\n * ```js\n * scene.load({\n * buffer: new ArrayBuffer(...),\n * baseURL: 'https://my-website/assets'\n * })\n * ```\n *\n * @note The `baseURL` is mandatory. It's used to fetch images and languages.\n *\n * Use {@link Scene.setLoadingProgress} to update the loading progress bar\n * when using an ArrayBuffer.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadMainScene} API.\n *\n * @param options Path to the file to load, or an option object.\n * For more information about the options, see the {@link SceneLoadOptions} documentation.\n * @returns Promise that resolves when the scene was loaded.\n */\n async load(options: string | SceneLoadOptions): Promise {\n const engine = this.engine;\n\n /** @todo(2.0.0): Remove this method. */\n let dispatchReadyEvent = false;\n let opts: InMemoryLoadOptions;\n if (isString(options)) {\n opts = await Scene.loadBuffer(options, (bytes: number, size: number) => {\n this.engine.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.engine.setLoadingProgress(bytes / size);\n });\n } else {\n opts = options;\n dispatchReadyEvent = options.dispatchReadyEvent ?? false;\n }\n\n const scene = await engine.loadMainSceneFromBuffer({\n ...opts,\n dispatchReadyEvent,\n });\n /* Do not use `this`, since `loadMainScene` will destroy it.\n * `erasePrototypeOnDestroy` would make this instance unusable. */\n engine.onSceneLoaded.notify();\n return scene;\n }\n\n /**\n * Append a scene file.\n *\n * Loads and parses the file and its images and appends the result\n * to the currently active scene.\n *\n * Supported formats are streamable Wonderland scene files (.bin) and glTF\n * 3D scenes (.gltf, .glb).\n *\n * ```js\n * WL.scene.append(filename).then(root => {\n * // root contains the loaded scene\n * });\n * ```\n *\n * In case the `loadGltfExtensions` option is set to true, the response\n * will be an object containing both the root of the loaded scene and\n * any glTF extensions found on nodes, meshes and the root of the file.\n *\n * ```js\n * WL.scene.append(filename, { loadGltfExtensions: true }).then(({root, extensions}) => {\n * // root contains the loaded scene\n * // extensions.root contains any extensions at the root of glTF document\n * const rootExtensions = extensions.root;\n * // extensions.mesh and extensions.node contain extensions indexed by Object id\n * const childObject = root.children[0];\n * const meshExtensions = root.meshExtensions[childObject.objectId];\n * const nodeExtensions = root.nodeExtensions[childObject.objectId];\n * // extensions.idMapping contains a mapping from glTF node index to Object id\n * });\n * ```\n *\n * If the file to be loaded is located in a subfolder, it might be useful\n * to define the `baseURL` option. This will ensure any bin files\n * referenced by the loaded bin file are loaded at the correct path.\n *\n * ```js\n * WL.scene.append(filename, { baseURL: 'scenes' }).then(({root, extensions}) => {\n * // do stuff\n * });\n * ```\n *\n * @deprecated Use the new {@link Prefab} and {@link Scene} API.\n *\n * @param file The .bin, .gltf or .glb file to append. Should be a URL or\n * an `ArrayBuffer` with the file content.\n * @param options Additional options for loading.\n * @returns Promise that resolves when the scene was appended.\n */\n async append(\n file: string | ArrayBuffer,\n options: Partial = {}\n ): Promise {\n /** @todo(2.0.0): Remove this method. */\n\n const {baseURL = isString(file) ? getBaseUrl(file) : this.baseURL} = options;\n\n const buffer = isString(file) ? await fetchWithProgress(file) : file;\n const data = new Uint8Array(buffer);\n const isBinFile =\n data.byteLength > MAGIC_BIN.length &&\n data\n .subarray(0, MAGIC_BIN.length)\n .every((value, i) => value === MAGIC_BIN.charCodeAt(i));\n\n const scene = isBinFile\n ? this.engine.loadPrefabFromBuffer({buffer, baseURL})\n : this.engine.loadGLTFFromBuffer({\n buffer,\n baseURL,\n extensions: options.loadGltfExtensions,\n });\n\n const result = this.instantiate(scene)!;\n if (scene instanceof PrefabGLTF) {\n if (!scene.extensions) return result.root;\n return {\n root: result.root,\n extensions: {\n ...(result as InstantiateGltfResult).extensions,\n root: scene.extensions.root,\n },\n } as SceneAppendResultWithExtensions;\n }\n\n scene.destroy();\n return result.root;\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @deprecated Use {@link WonderlandEngine.setLoadingProgress}.\n */\n setLoadingProgress(percentage: number) {\n this.engine.setLoadingProgress(percentage);\n }\n\n /**\n * Dispatch an event 'wle-scene-ready' in the document.\n *\n * @note This is used for automatic testing.\n */\n dispatchReadyEvent() {\n document.dispatchEvent(\n new CustomEvent('wle-scene-ready', {\n detail: {filename: this.filename},\n })\n );\n }\n\n /**\n * Set the current material to render the sky.\n *\n * @note The sky needs to be enabled in the editor when creating the scene.\n * For more information, please refer to the background [tutorial](https://wonderlandengine.com/tutorials/background-effect/).\n */\n set skyMaterial(material: Material | null) {\n this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0);\n }\n\n /** Current sky material, or `null` if no sky is set. */\n get skyMaterial(): Material | null {\n const index = this.engine.wasm._wl_scene_get_sky_material(this._index);\n return this.engine.materials.wrap(index);\n }\n\n /**\n * Environment lighting properties.\n *\n * @since 1.2.3\n */\n get environment(): Environment {\n return this._environment;\n }\n\n /**\n * Relative url to the js components bundle\n *\n * Returns `null` if the scene was built without a components bundle.\n */\n get componentsBundle(): string | null {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_componentsBundle(this._index);\n return ptr ? wasm.UTF8ToString(ptr) : null;\n }\n\n /**\n * Reset the scene.\n *\n * This method deletes all used and allocated objects, and components.\n *\n * @deprecated Load a new scene and activate it instead.\n */\n reset() {\n /** @todo(2.0.0): Remove this method. */\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependency(url: string) {\n const sink = new ChunkedSceneLoadSink(\n this.engine,\n SceneType.Dependency,\n url,\n this._index\n );\n const stream = await fetchStreamWithProgress(url);\n return stream.pipeTo(new WritableStream(sink));\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependencies() {\n const wasm = this.engine.wasm;\n\n const count = wasm._wl_scene_queued_bin_count(this._index);\n if (!count) return Promise.resolve();\n\n const urls = new Array(count).fill(0).map((_, i: number) => {\n const ptr = wasm._wl_scene_queued_bin_path(this._index, i);\n const url = wasm.UTF8ToString(ptr);\n return url;\n });\n\n wasm._wl_scene_clear_queued_bin_list(this._index);\n\n return Promise.all(urls.map((url: string) => this._downloadDependency(url)));\n }\n}\n", "import {\n Component,\n ComponentConstructor,\n Object as Object3D,\n Physics,\n I18N,\n MorphTargets,\n Texture,\n Font,\n DestroyedPrefabInstance,\n ParticleEffect,\n} from './wonderland.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {isString} from './utils/object.js';\nimport {APIVersion, Version} from './version.js';\nimport {WASM} from './wasm.js';\nimport {Logger} from './utils/logger.js';\nimport {clamp} from './utils/misc.js';\nimport {MaterialManager} from './resources/material-manager.js';\nimport {MeshManager} from './resources/mesh-manager.js';\nimport {ResourceManager} from './resources/resource.js';\nimport {needsFlipY, TextureManager} from './resources/texture-manager.js';\nimport {LogTag} from './wonderland.js';\nimport {Constructor, ImageLike, ProgressCallback} from './types.js';\nimport {XRSessionState, WebXR} from './webxr.js';\nimport {Prefab, InMemoryLoadOptions, LoadOptions, StreamLoadOptions} from './prefab.js';\nimport {Scene, ActivateOptions, ChunkedSceneLoadSink, SceneType} from './scene.js';\nimport {PrefabGLTF, GLTFOptions} from './scene-gltf.js';\nimport {ArrayBufferSource, onImageReady} from './utils/fetch.js';\n\n/**\n * Ensures that this API is compatible with the given\n * runtime version.\n *\n * We only enforce compatibility for major and minor components, i.e.,\n * the runtime and the API must both be of the form `x.y.*`.\n *\n * @throws If the major or the minor components are different.\n *\n * @param version The target version\n */\nexport function checkRuntimeCompatibility(version: Version) {\n const {major, minor} = version;\n\n let majorDiff = major - APIVersion.major;\n let minorDiff = minor - APIVersion.minor;\n /* Same version, so perfectly compatible. */\n if (!majorDiff && !minorDiff) return;\n\n const error =\n 'checkRuntimeCompatibility(): Version compatibility mismatch:\\n' +\n '\\t\u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*)\\n';\n\n const isRuntimeOlder = majorDiff < 0 || (!majorDiff && minorDiff < 0);\n if (isRuntimeOlder) {\n /* Runtime is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`\n );\n }\n /* API is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a new API version >= ${version.major}.${version.minor}.*`\n );\n}\n\n/**\n * Reload the browser tab.\n *\n * @note This method first ensures the XR session is terminated,\n * to avoid blocking the Oculus Quest page.\n *\n * @param engine The engine instance\n */\nfunction reloadPage(engine: WonderlandEngine) {\n /* End XR session for Oculus Quest blocking reload otherwise */\n const session = engine.xr?.session ?? null;\n if (!session) {\n location.reload();\n return;\n }\n session.end().then(() => location.reload());\n}\n\n/**\n * Main Wonderland Engine instance.\n *\n * Controls the canvas, rendering, and JS <-> WASM communication.\n */\nexport class WonderlandEngine {\n /**\n * {@link Emitter} for WebXR session end events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionEnd.add(() => console.log(\"XR session ended.\"));\n * ```\n */\n get onXRSessionEnd(): Emitter {\n return this.#webxr.onSessionEnd;\n }\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionStart.add((session, mode) => console.log(session, mode));\n * ```\n *\n * By default, this emitter is retained and will automatically call any callback added\n * while a session is already started:\n *\n * ```js\n * // XR session is already active.\n * this.engine.onXRSessionStart.add((session, mode) => {\n * console.log(session, mode); // Triggered immediately.\n * });\n * ```\n */\n get onXRSessionStart(): Emitter<[XRSession, XRSessionMode]> {\n return this.#webxr.onSessionStart;\n }\n\n /**\n * {@link Emitter} for canvas / main framebuffer resize events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onResize.add(() => {\n * const canvas = this.engine.canvas;\n * console.log(`New Size: ${canvas.width}, ${canvas.height}`);\n * });\n * ```\n *\n * @note The size of the canvas is in physical pixels, and is set via {@link WonderlandEngine.resize}.\n */\n readonly onResize: Emitter = new Emitter();\n\n /** Whether AR is supported by the browser. */\n get arSupported(): boolean {\n return this.#webxr.arSupported;\n }\n\n /** Whether VR is supported by the browser. */\n get vrSupported(): boolean {\n return this.#webxr.vrSupported;\n }\n\n /**\n * {@link RetainEmitter} signalling the end of the loading screen.\n *\n * Listeners get notified when the first call to {@link Scene#load()} is\n * invoked. At this point the new scene has not become active, and none of\n * its resources or components are initialized.\n *\n * Compared to {@link onSceneLoaded}, this does not wait for all components\n * to be fully initialized and activated. Any handler added inside\n * {@link Component#init()}, {@link Component#start()} or\n * {@link Component#onActivate()} will be called immediately.\n *\n * Usage:\n *\n * ```js\n * this.engine.onLoadingScreenEnd.add(() => console.log(\"Wait is over!\"));\n * ```\n */\n readonly onLoadingScreenEnd = new RetainEmitter();\n\n /**\n * {@link Emitter} for scene loaded events.\n *\n * Listeners get notified when a call to {@link Scene#load()} finishes. At\n * this point all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneLoaded.add(() => console.log(\"Scene switched!\"));\n * ```\n *\n * @deprecated Use {@link onSceneActivated} instead.\n */\n readonly onSceneLoaded = new Emitter();\n\n /**\n * {@link Emitter} for scene activated events.\n *\n * This listener is notified with the old scene as first parameter, and\n * the new scene as second.\n *\n * This listener is notified after all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneActivated.add((oldScene, newScene) => {\n * console.log(`Scene switch from ${oldScene.filename} to ${newScene.filename}`);\n * });\n * ```\n */\n readonly onSceneActivated = new Emitter<[Scene, Scene]>();\n\n /**\n * Triggered when a hot reload is requested.\n *\n * When using the Wonderland Editor, this will be triggered when packaging\n * the project.\n *\n * @note When {@link autoHotReload} is `true`, the emitter is notified after the\n * scene is reloaded.\n *\n * To customize the hot reload behavior, set the {@link autoHotReload} to `false`,\n * and use this emitter:\n *\n * ```js\n * this.engine.onHotReloadRequest.add(async (filename: string) => {\n * // This handler can be used to re-download a scene, download components,\n * // fetch an API, anything!\n * await this.loadMainScene(filename);\n * });\n * ```\n */\n readonly onHotReloadRequest: Emitter<[string]> = new Emitter();\n\n /**\n * Access to internationalization.\n */\n readonly i18n: I18N = new I18N(this);\n\n /**\n * WebXR related state, `null` if no XR session is active.\n */\n get xr(): XRSessionState | null {\n return this.#webxr.sessionState;\n }\n\n /**\n * If `true`, {@link Texture}, {@link Object3D}, and {@link Component}\n * instances have their prototype erased upon destruction.\n *\n * #### Object\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = engine.scene.addObject();\n * obj.name = 'iamalive';\n * console.log(obj.name); // Prints 'iamalive'\n *\n * obj.destroy();\n * console.log(obj.name); // Throws an error\n * ```\n *\n * #### Component\n *\n * Components will also be affected:\n *\n * ```js\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * alive: Property.bool(true)\n * };\n *\n * start() {\n * this.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * A component is also destroyed if its ancestor gets destroyed:\n *\n * ```js\n * class MyComponent extends Component {\n * ...\n * start() {\n * this.object.parent.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * @note Native components will not be erased if destroyed via object destruction:\n *\n * ```js\n * const mesh = obj.addComponent('mesh');\n * obj.destroy();\n * console.log(mesh.active) // Doesn't throw even if the mesh is destroyed\n * ```\n *\n * @since 1.1.1\n */\n erasePrototypeOnDestroy = false;\n\n /**\n * If `true`, the materials will be wrapped in a proxy to support pre-1.2.0\n * material access, i.e.,\n *\n * ```js\n * const material = new Material(engine, 'Phong Opaque');\n * material.diffuseColor = [1.0, 0.0, 0.0, 1.0];\n * ```\n *\n * If `false`, property accessors will not be available and material\n * properties should be accessed via methods, i.e.,\n *\n * ```js\n * const PhongOpaque = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongOpaque();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ...\n * const diffuse = material.getDiffuseColor();\n * ```\n *\n * When disabled, reading/writing to materials is slightly more efficient on the CPU.\n */\n legacyMaterialSupport = true;\n\n /**\n * If `true`, automatically reloads the scene sent by the editor socket.\n *\n * @note The {@link onHotReloadRequest} emitter is notified **after** the scene is re-loaded.\n *\n * To use custom hot-reload code, set this boolean to `false` and add the reloading code\n *\n */\n autoHotReload = true;\n\n /**\n * If `true`, uncompressed images will be automatically converted\n * to `ImageBitmap` before upload to the GPU.\n *\n * For more information, have a look at the\n * [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) documentation.\n */\n loadUncompressedImagesAsBitmap = false;\n\n /**\n * Scene cache in scene manager.\n *\n * @hidden\n */\n _scenes: (Prefab | null)[] = [];\n\n /**\n * Currently active scene.\n *\n * @hidden\n */\n _scene: Scene;\n\n /** Incremented every time a new main scene is loaded. */\n _mainSceneVersion: number = 0;\n\n /** @hidden */\n private _textures!: TextureManager;\n /** @hidden */\n private _materials!: MaterialManager;\n /** @hidden */\n private _meshes!: MeshManager;\n /** @hidden */\n private _morphTargets!: ResourceManager;\n /** @hidden */\n private _fonts!: ResourceManager;\n /** @hidden */\n private _particleEffects!: ResourceManager;\n /**\n * Current loading uncompressed images.\n *\n * @note Indexed by js image index.\n *\n * @hidden\n */\n private _uncompressedPromises: Promise[] = [];\n\n /**\n * WebAssembly bridge.\n *\n * @hidden\n */\n #wasm: WASM;\n\n /**\n * Physics manager, only available when physx is enabled in the runtime.\n *\n * @hidden\n */\n #physics: Physics | null = null;\n\n /**\n * WebXR library.\n *\n * @hidden\n */\n #webxr: WebXR;\n\n /**\n * Resize observer to track for canvas size changes.\n *\n * @hidden\n */\n #resizeObserver: ResizeObserver | null = null;\n\n /**\n * Whether a components bundle has already been loaded or not.\n *\n * @hidden\n */\n #bundleCache: Set = new Set();\n\n /**\n * Create a new engine instance.\n *\n * @param wasm Wasm bridge instance\n * @param loadingScreen Loading screen .bin file data\n *\n * @hidden\n */\n constructor(wasm: WASM, loadingScreen: ArrayBuffer | null, withRenderer: boolean) {\n this.#wasm = wasm;\n this.#wasm['_setEngine'](this); /* String lookup to bypass private. */\n this.#wasm._loadingScreen = loadingScreen;\n\n const version = this.runtimeVersion;\n let versionString = `${version.major}.${version.minor}.${version.patch}`;\n if (version.rc > 0) {\n versionString += `-rc${version.rc}`;\n }\n this.log.info(LogTag.Engine, 'Wonderland Engine runtime version:', versionString);\n\n this.#webxr = new WebXR(this);\n\n checkRuntimeCompatibility(this.#wasm.runtimeVersion);\n\n /* Setup the error handler. This is used to to manage native errors. */\n this.#wasm._wl_set_error_callback(\n this.#wasm.addFunction((messagePtr: number) => {\n throw new Error(this.#wasm.UTF8ToString(messagePtr));\n }, 'vi')\n );\n\n this.#wasm._wl_application_create();\n\n this.#physics = null;\n\n if (this.#wasm.withPhysX) {\n this.#physics = new Physics(this);\n }\n\n this._init(withRenderer);\n\n this._scene = this._reload(0);\n\n this.canvas.addEventListener(\n 'webglcontextlost',\n (e) => this.log.error(LogTag.Engine, 'Context lost:', e),\n false\n );\n }\n\n /**\n * Start the engine if it's not already running.\n *\n * When using the {@link loadRuntime} function, this method is called\n * automatically.\n */\n start(): void {\n this.wasm._wl_application_start();\n }\n\n /**\n * Register a custom JavaScript component type.\n *\n * You can register a component directly using a class inheriting from {@link Component}:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myParam: {type: Type.Float, default: 42.0},\n * };\n * init() {}\n * start() {}\n * update(dt) {}\n * onActivate() {}\n * onDeactivate() {}\n * onDestroy() {}\n * });\n *\n * // Here, we assume we have an engine already instantiated.\n * // In general, the registration occurs in the `index.js` file in your\n * // final application.\n * engine.registerComponent(MyComponent);\n * ```\n *\n * {@label CLASSES}\n * @param classes Custom component(s) extending {@link Component}.\n *\n * @since 1.0.0\n */\n registerComponent(...classes: ComponentConstructor[]) {\n for (const arg of classes) {\n this.wasm._registerComponent(arg);\n }\n }\n\n /**\n * Register a component bundle\n *\n * The module must be of the form:\n *\n * ```js\n * export default function(engine) {\n * engine.registerComponent(MyComponent);\n * ...\n * }\n * ```\n *\n * Alternatively, you can manually register a component bundle:\n *\n * ```js\n * const registerBundle = (await import(url)).default;\n * registerBundle(engine);\n * ```\n *\n * @param url The URL of the module to register.\n * @param nocache If `true`, force browser to re-download the file.\n */\n async registerBundle(url: string, nocache = false) {\n if (!nocache && this.#bundleCache.has(url)) return;\n this.#bundleCache.add(url);\n\n if (nocache) url += `?t=${Date.now()}`;\n const register = (await import(url)).default;\n if (typeof register !== 'function') {\n throw new Error(\n `The bundle '${url}' doesn't have a default exported registration function`\n );\n }\n register(this);\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @since 1.2.1\n */\n setLoadingProgress(percentage: number) {\n this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1));\n }\n\n /**\n * Switch the current active scene.\n *\n * Once active, the scene will be updated and rendered on the canvas.\n *\n * The currently active scene is accessed via {@link WonderlandEngine.scene}:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * start() {\n * console.log(this.scene === this.engine.scene); // Prints `true`\n * }\n * }\n * ```\n *\n * @note This method will throw if the scene isn't activatable.\n *\n * #### Component Lifecycle\n *\n * Marking a scene as active will:\n * * Call {@link Component#onDeactivate} for all active components of the previous scene\n * * Call {@link Component#onActivate} for all active components of the new scene\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * engine.switchTo(scene);\n * ```\n *\n * @returns A promise that resolves once the scene is ready.\n *\n * @since 1.2.0\n */\n async switchTo(scene: Scene, opts: ActivateOptions = {}) {\n this.wasm._wl_deactivate_activeScene();\n\n /* Switch reference on engine **just** before activating, to allow\n * component to use `this.engine.scene` in `onActivate()`/`start()`. */\n const previous = this.scene;\n this._preactivate(scene);\n\n this.wasm._wl_scene_activate(scene._index);\n\n /* Enable/disable required views */\n this.#webxr.updateViewState(undefined);\n\n /* We loaded new views, update WebXR projection parameters */\n this.#webxr.updateProjectionParams(undefined, undefined);\n\n if (!this.onLoadingScreenEnd.isDataRetained) {\n this.onLoadingScreenEnd.notify();\n }\n\n /* For now, we always automatically download dependencies for\n * the user, i.e., separate textures.bin and languages.bin.\n *\n * In the future, we can eventually expose this in the chunk API\n * to give more control to the user if needed.\n *\n * We do not make the user wait until the textures download is complete. */\n const promise = scene._downloadDependencies();\n\n await this.i18n.setLanguage(this.i18n.languageCode(0));\n\n const {dispatchReadyEvent = false, waitForDependencies = false} = opts;\n\n if (waitForDependencies) await promise;\n\n this.onSceneActivated.notify(previous, scene);\n\n if (dispatchReadyEvent) scene.dispatchReadyEvent();\n }\n\n /**\n * Load the scene from a URL, as the main scene of a new {@link Scene}.\n *\n * #### Usage\n *\n * ```js\n * // The method returns the main scene\n * const scene = await engine.loadMainScene();\n * ```\n *\n * #### Destruction\n *\n * Loading a new main scene entirely resets the state of the engine, and destroys:\n * - All loaded scenes, prefabs, and gltf files\n * - Meshes\n * - Textures\n * - Materials\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback. When setting a custom\n * callback, you need to manually call {@link setLoadingProgress} to\n * get progress updates in the loading screen.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainScene(\n options: LoadOptions & ActivateOptions,\n progress?: ProgressCallback\n ) {\n /**\n * @todo: It's currently possible to put the runtime in a limbo\n * state using hot-reload: Multiple reload requests are sent, and scene loading\n * ends up being interleaved.\n *\n * Add a system to cancel the last loading, if any.\n */\n\n progress ??= (bytes: number, size: number) => {\n this.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.setLoadingProgress(bytes / size);\n };\n\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true, nocache = false} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const {stream, url} = Prefab.validateStreamOptions(options);\n return this._loadMainScene(stream, url, nocache, options as ActivateOptions);\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadMainSceneFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadMainScene}, but loading is done\n * from an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainSceneFromBuffer(options: InMemoryLoadOptions & ActivateOptions) {\n const {nocache = false} = options;\n const {buffer, url} = Prefab.validateBufferOptions(options);\n return this._loadMainScene(buffer, url, nocache, options);\n }\n\n /**\n * Load a {@link Prefab} from a URL.\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadPrefab('Prefab.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n * @note This method is a wrapper around {@link WonderlandEngine.loadPrefabFromBuffer}.\n *\n * @param url The URL pointing to the prefab to load.\n * @param progress Optional progress callback.\n * @returns The loaded {@link Prefab}.\n */\n async loadPrefab(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadPrefabFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadPrefab}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Prefab}.\n */\n loadPrefabFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Load a scene from a URL.\n *\n * At the opposite of {@link WonderlandEngine.loadMainScene}, the scene loaded\n * will be added to the list of existing scenes, and its resources will be made\n * available for other scenes/prefabs/gltf to use.\n *\n * #### Resources Sharing\n *\n * Upon loading, the scene resources are added in the engine, and references\n * to those resources are updated.\n *\n * It's impossible for a scene loaded with this method to import pipelines.\n * Thus, the loaded scene will reference existing pipelines in the main scene,\n * based on their names.\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link Scene}.\n */\n async loadScene(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadSceneFromBuffer(options);\n }\n }\n\n /**\n * Create a glTF scene from a URL.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @note This method is a wrapper around {@link WonderlandEngine.loadGLTFFromBuffer}.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options, optionally including\n * {@link GLTFOptions}. {@link LoadOptions.streamed} is ignored as\n * streamed glTF parsing isn't supported.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n async loadGLTF(opts: LoadOptions & GLTFOptions, progress?: ProgressCallback) {\n const memOptions = await Scene.loadBuffer(opts, progress);\n const options = isString(opts) ? memOptions : {...opts, ...memOptions};\n return this.loadGLTFFromBuffer(options);\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadScene}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @throws If the scene is streamable.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Scene}.\n */\n loadSceneFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadGLTF}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @param options An object containing the buffer and extra glTF metadata.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n loadGLTFFromBuffer(options: InMemoryLoadOptions & GLTFOptions) {\n Scene.validateBufferOptions(options);\n const {buffer, extensions = false} = options;\n\n const wasm = this.wasm;\n\n if (!wasm._wl_glTF_scene_create) {\n throw new Error(\n 'Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings.'\n );\n }\n\n const ptr = wasm.copyBufferToHeap(buffer);\n\n try {\n const index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength);\n const scene = new PrefabGLTF(this, index);\n this._scenes[scene._index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n if (this.runtimeVersion.patch) {\n this._loadUncompressedImages(scene._index);\n }\n return scene;\n } finally {\n /* Catch calls to abort(), e.g. via asserts */\n wasm._free(ptr);\n }\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param typeOrClass A string representing the component typename (e.g., `'cursor-component'`),\n * or a component class (e.g., `CursorComponent`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(typeOrClass: string | ComponentConstructor) {\n return this.#wasm.isRegistered(\n isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName\n );\n }\n\n /**\n * Retrieve the registered component from its type name.\n *\n * @param typename The component {@link Component.TypeName} property\n * @returns The class if a component was registered with given name, `null` otherwise.\n */\n getComponentClass(\n typename: string\n ): ComponentConstructor | null {\n const index = this.wasm._componentTypeIndices[typename];\n if (index === undefined) return null;\n return this.wasm._componentTypes[index] as ComponentConstructor;\n }\n\n /**\n * Resize the canvas and the rendering context.\n *\n * @note The `width` and `height` parameters will be scaled by the\n * `devicePixelRatio` value. By default, the pixel ratio used is\n * [window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n *\n * @param width The width, in CSS pixels.\n * @param height The height, in CSS pixels.\n * @param devicePixelRatio The pixel ratio factor.\n */\n resize(width: number, height: number, devicePixelRatio = window.devicePixelRatio) {\n width = width * devicePixelRatio;\n height = height * devicePixelRatio;\n this.canvas.width = width;\n this.canvas.height = height;\n this.wasm._wl_application_resize(width, height);\n this.onResize.notify();\n }\n\n /**\n * Run the next frame.\n *\n * @param fixedDelta The elapsed time between this frame and the previous one.\n *\n * @note The engine automatically schedules next frames. You should only\n * use this method for testing.\n */\n nextFrame(fixedDelta: number = 0) {\n this.#wasm._wl_nextFrame(fixedDelta);\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.requestSession(mode, features, optionalFeatures);\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.offerSession(mode, features, optionalFeatures);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n * @returns The object\n *\n * @deprecated Use {@link Scene#wrap} instead.\n *\n */\n wrapObject(objectId: number): Object3D {\n return this.scene.wrap(objectId);\n }\n\n toString() {\n return 'engine';\n }\n\n /* Public Getters & Setter */\n\n /** Currently active scene. */\n get scene(): Scene {\n return this._scene;\n }\n\n /**\n * WebAssembly bridge.\n *\n * @note Use with care. This object is used to communicate\n * with the WebAssembly code throughout the api.\n *\n * @hidden\n */\n get wasm(): WASM {\n return this.#wasm;\n }\n\n /**\n * WebXR api.\n *\n * @hidden\n */\n get webxr(): WebXR {\n return this.#webxr;\n }\n\n /** Canvas element that Wonderland Engine renders to. */\n get canvas(): HTMLCanvasElement {\n return this.#wasm.canvas;\n }\n\n /**\n * Current WebXR session or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.session} on the {@link xr}\n * object instead.\n */\n get xrSession(): XRSession | null {\n return this.xr?.session ?? null;\n }\n\n /**\n * Current WebXR frame or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.frame} on the {@link xr}\n * object instead.\n */\n get xrFrame(): XRFrame | null {\n return this.xr?.frame ?? null;\n }\n\n /**\n * Current WebXR base layer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.baseLayer} on the {@link xr}\n * object instead.\n */\n get xrBaseLayer(): XRProjectionLayer | XRWebGLLayer | null {\n return this.xr?.baseLayer ?? null;\n }\n\n /**\n * Current WebXR framebuffer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.framebuffers} on the {@link xr}\n * object instead.\n */\n get xrFramebuffer(): WebGLFramebuffer | null {\n return this.xr?.framebuffers[0] ?? null;\n }\n\n /**\n * WebXR framebuffer scale factor.\n */\n get xrFramebufferScaleFactor() {\n return this.#webxr.framebufferScaleFactor;\n }\n\n set xrFramebufferScaleFactor(value: number) {\n this.#webxr.framebufferScaleFactor = value;\n }\n\n /** Physics manager, only available when physx is enabled in the runtime. */\n get physics() {\n return this.#physics;\n }\n\n /** Texture resources */\n get textures() {\n return this._textures;\n }\n\n /** Material resources */\n get materials() {\n return this._materials;\n }\n\n /** Mesh resources */\n get meshes() {\n return this._meshes;\n }\n\n /** Morph target set resources */\n get morphTargets() {\n return this._morphTargets;\n }\n\n /** Font resources */\n get fonts() {\n return this._fonts;\n }\n\n /** Particle effect resources */\n get particleEffects() {\n return this._particleEffects;\n }\n\n /** Get all uncompressed images. */\n get images(): ImageLike[] {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n result[i] = wasm._images[index];\n }\n return result;\n }\n\n /**\n * Promise that resolve once all uncompressed images are loaded.\n *\n * This is equivalent to calling {@link WonderlandEngine.images}, and wrapping each\n * `load` listener into a promise.\n */\n get imagesPromise(): Promise {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n const loading = this._uncompressedPromises[index];\n result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]);\n }\n return Promise.all(result);\n }\n\n /**\n * `true` if the texture streaming is currently idle, i.e.,\n * not attempting to upload any textures.\n *\n * @hidden\n */\n get isTextureStreamingIdle() {\n return !!this.wasm._wl_renderer_streaming_idle();\n }\n\n /**\n * `true` if reverse-Z rendering is supported and enabled.\n *\n * @hidden\n */\n get isReverseZEnabled() {\n return !!this.wasm._wl_renderer_isReverseZEnabled();\n }\n\n /*\n * Enable or disable the mechanism to automatically resize the canvas.\n *\n * Internally, the engine uses a [ResizeObserver](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * Changing the canvas css will thus automatically be tracked by the engine.\n */\n set autoResizeCanvas(flag: boolean) {\n const state = !!this.#resizeObserver;\n if (state === flag) return;\n\n if (!flag) {\n this.#resizeObserver?.unobserve(this.canvas);\n this.#resizeObserver = null;\n return;\n }\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.canvas) {\n this.resize(entry.contentRect.width, entry.contentRect.height);\n }\n }\n });\n this.#resizeObserver.observe(this.canvas);\n }\n\n /** `true` if the canvas is automatically resized by the engine. */\n get autoResizeCanvas() {\n return this.#resizeObserver !== null;\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n return this.#wasm.runtimeVersion;\n }\n\n /** Engine {@link Logger}. Use it to turn on / off logging. */\n get log(): Logger {\n return this.#wasm._log;\n }\n\n /* Internal-Only Methods */\n\n /**\n * Initialize the engine.\n *\n * @note Should be called after the WebAssembly is fully loaded.\n *\n * @hidden\n */\n _init(withRenderer: boolean): boolean {\n const success = this.#wasm._wl_application_init(withRenderer);\n if (!success) {\n throw new Error(`Failed to initializing Wonderland runtime`);\n }\n\n this.resize(this.canvas.clientWidth, this.canvas.clientHeight);\n return true;\n }\n\n /**\n * Reset the runtime state, including:\n * - Component cache\n * - Images\n * - Callbacks\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _reset() {\n this.wasm.reset();\n this._scenes.length = 0;\n this._scene = this._reload(0);\n this.#bundleCache.clear();\n return this.switchTo(this._scene);\n }\n\n /**\n * Attempt to hot reload the engine.\n *\n * @param filename URL of the file to use for the reload.\n * If `null`, forces a full page reload.\n *\n * @hidden\n */\n async _reloadRequest(filename: string | null) {\n if (filename === null) {\n reloadPage(this);\n return;\n }\n\n try {\n if (this.autoHotReload)\n await this.loadMainScene({url: filename, nocache: true});\n } catch (e) {\n console.error('Hot reload request failed to load main scene, reason:', e);\n setTimeout(() => reloadPage(this), 1000);\n return;\n }\n\n this.onHotReloadRequest.notify(filename);\n }\n\n /**\n * Add an empty scene.\n *\n * @returns The newly created scene\n *\n * @hidden\n */\n _createEmpty(): Scene {\n const wasm = this.wasm;\n const index = wasm._wl_scene_create_empty();\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n return scene;\n }\n\n /** @hidden */\n _destroyScene(instance: Prefab) {\n const wasm = this.wasm;\n wasm._wl_scene_destroy(instance._index);\n\n const index = instance._index;\n (instance._index as number) = -1;\n if (this.erasePrototypeOnDestroy) {\n Object.setPrototypeOf(instance, DestroyedPrefabInstance);\n }\n\n this._scenes[index] = null;\n }\n\n /**\n * Reload the state of the engine with a new main scene.\n *\n * @param index Scene index.\n *\n * @hidden\n */\n private _reload(index: number) {\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n\n this._textures = new TextureManager(this);\n this._materials = new MaterialManager(this);\n this._meshes = new MeshManager(this);\n this._morphTargets = new ResourceManager(this, MorphTargets);\n this._fonts = new ResourceManager(this, Font);\n this._particleEffects = new ResourceManager(this, ParticleEffect);\n this._uncompressedPromises.length = 0;\n\n return scene;\n }\n\n /**\n * Helper to load a main scene from an `ArrayBuffer` or `ReadableStream`.\n *\n * @param data Buffer or stream.\n * @param url Base URL.\n * @param nocache If `true`, force a browser reload of files to download.\n * Only affects components loading for now.\n * @param options Activation options.\n * @returns The loaded main scene.\n *\n * @hidden\n */\n private async _loadMainScene(\n data: ArrayBuffer | ReadableStream,\n url: string,\n nocache: boolean,\n options: ActivateOptions\n ) {\n if (nocache) url += `?t=${Date.now()}`;\n\n const wasm = this.#wasm;\n\n /*\n * - Deactivate currently active scene\n * - Destroy all scenes\n * - Mark all resources as destroyed\n * - Activation of main scene to prevent the runtime to be in limbo\n */\n\n wasm._wl_deactivate_activeScene();\n\n ++this._mainSceneVersion;\n\n /* Only destroy all scene once the current active one is disabled */\n for (let i = this._scenes.length - 1; i >= 0; --i) {\n const scene = this._scenes[i];\n if (scene) scene.destroy();\n }\n\n /* Mark all resources as destroyed */\n this._textures._clear();\n this._materials._clear();\n this._meshes._clear();\n this._morphTargets._clear();\n this._uncompressedPromises.length = 0;\n\n const stream =\n data instanceof ReadableStream\n ? data\n : new ReadableStream(new ArrayBufferSource(data));\n const sink = new ChunkedSceneLoadSink(this, SceneType.Main, url);\n await stream.pipeTo(new WritableStream(sink));\n\n const mainScene = this._reload(sink.sceneIndex);\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(mainScene._index);\n\n /**\n * @todo(2.0.0)\n *\n * Backward compatibility: We need to set this instance reference on the\n * engine **before** component creation occurs, since users have been accessing\n * the scene with `this.engine.scene` in `init()`.\n */\n this._preactivate(mainScene);\n\n const componentsBundle = mainScene.componentsBundle;\n if (componentsBundle) {\n /* Relative URL are resolved from the script that imports, and **not** from\n * the document. We assume that the components bundle is located alongside\n * other resources, relative to the .bin.\n *\n * @note: `componentsBundle` already contains the same baseURL as the .bin. */\n const bundleURL = new URL(componentsBundle, document.baseURI);\n const url = nocache ? bundleURL.href.split('?')[0] : bundleURL.href;\n await this.registerBundle(url, nocache);\n }\n mainScene._initialize();\n\n await this.switchTo(mainScene, options);\n\n return mainScene;\n }\n\n /**\n * Helper to load prefab and activatable scene from an `ArrayBuffer`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private _loadSceneFromBuffer(\n PrefabClass: Constructor,\n options: InMemoryLoadOptions\n ) {\n const {buffer, url} = Scene.validateBufferOptions(options);\n\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n sink.write(new Uint8Array(buffer));\n sink.close();\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Helper to load prefab and activatable scene from a `ReadableStream`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private async _loadSceneFromStream(\n PrefabClass: Constructor,\n options: StreamLoadOptions\n ) {\n const {stream, url} = Scene.validateStreamOptions(options);\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n await stream.pipeTo(new WritableStream(sink));\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Checks if the loaded scene is a prefab and throws an error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedPrefab(scene: Prefab) {\n if (this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a prefab. To load a scene, use loadScene() instead'\n );\n }\n }\n\n /**\n * Checks if the loaded scene is a scene (and not a prefab) and throws an\n * error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedScene(scene: Scene) {\n if (!this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a scene. To load a prefab, use loadPrefab() instead'\n );\n }\n }\n\n /**\n * Set the scene data on the engine, before the activation occurs.\n *\n * @hidden\n */\n private _preactivate(scene: Scene) {\n this._scene = scene;\n /* Update the current active scene in the physx manager */\n if (this.physics) (this.physics._hit._scene as Scene) = scene;\n }\n\n /**\n * Notify the runtime when images are ready to be uploaded.\n *\n * @param sceneIndex Index of the scene where the image originated\n * @hidden\n */\n private _loadUncompressedImages(sceneIndex: number) {\n const mainSceneVersion = this._mainSceneVersion;\n const wasm = this.wasm;\n\n const bitmapOptions: ImageBitmapOptions = {\n colorSpaceConversion: 'none',\n };\n\n const imageCount = wasm._wl_image_count();\n for (let i = 0; i < imageCount; ++i) {\n if (wasm._wl_image_originalScene(i) !== sceneIndex) continue;\n\n const jsImageIndex = wasm._wl_image_get_jsImage_index(i);\n\n const image = wasm._images[jsImageIndex];\n if (!image) continue;\n\n let promise: Promise = onImageReady(image);\n if (this.loadUncompressedImagesAsBitmap) {\n promise = promise.then((img) => createImageBitmap(img, bitmapOptions));\n }\n this._uncompressedPromises[jsImageIndex] = promise\n .then((img) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img));\n }\n })\n .catch((e) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n this.log.error(\n LogTag.Scene,\n 'Failed to load uncompressed image',\n e\n );\n }\n });\n }\n }\n}\n", "/**\n * Assert that the given bit index is less than 32.\n *\n * @param bit The bit to test.\n */\nfunction assert(bit: number): void {\n if (bit >= 32) {\n throw new Error(`BitSet.enable(): Value ${bit} is over 31`);\n }\n}\n\n/**\n * Stores a bit pattern to quickly test if an index is enabled / disabled.\n *\n * This class can store up to **32** different values in the range [0; 31].\n *\n * #### Usage\n *\n * ```js\n * const bitset = new BitSet();\n * bitset.enable(10); // Enable bit at index `10`.\n * console.log(bitset.enabled(10)); // Prints 'true'.\n * ```\n *\n * #### TypeScript\n *\n * The set can be typed over an enum:\n *\n * ```ts\n * enum Tag {\n * First = 0,\n * Second = 1,\n * }\n *\n * const bitset = new BitSet();\n * bitset.enable(Tag.First);\n * ```\n */\nexport class BitSet {\n /** Enabled bits. @hidden */\n private _bits: number = 0;\n\n /**\n * Enable the bit at the given index.\n *\n * @param bits A spread of all the bits to enable.\n * @returns Reference to self (for method chaining).\n */\n enable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits |= (1 << bit) >>> 0;\n }\n return this;\n }\n\n /**\n * Enable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n enableAll() {\n this._bits = ~0;\n return this;\n }\n\n /**\n * Disable the bit at the given index.\n *\n * @param bits A spread of all the bits to disable.\n * @returns Reference to self (for method chaining).\n */\n disable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits &= ~((1 << bit) >>> 0);\n }\n return this;\n }\n\n /**\n * Disable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n disableAll() {\n this._bits = 0;\n return this;\n }\n\n /**\n * Checker whether the bit is set or not.\n *\n * @param bit The bit to check.\n * @returns `true` if it's enabled, `false` otherwise.\n */\n enabled(bit: T) {\n return !!(this._bits & ((1 << bit) >>> 0));\n }\n}\n", "import {BitSet} from './bitset.js';\nimport {Emitter} from './event.js';\n\n/**\n * Logging levels supported by {@link Logger}.\n */\nexport enum LogLevel {\n Info = 0,\n Warn = 1,\n Error = 2,\n}\n\n/**\n * Logging wrapper.\n *\n * This is used to allow turning on/off:\n * - `console.log`\n * - `console.warn`\n * - `console.error`\n *\n * #### Usage\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * // Create a logger with only the \"error\" and \"warn\" levels activated\n * const logger = new Logger(LogLevel.Warn, LogLevel.Error);\n *\n * // Only the \"error\" and \"warn\" levels are activated,\n * // this message isn't logged.\n * logger.info(LogTag.Component, 'This message is shushed')\n *\n * // Prints 'Hello Error!'\n * logger.error(LogTag.Component, 'Hello Error!');\n *\n * // Prints 'Hello Warning!'\n * logger.warn(LogTag.Component, 'Hello Warning!');\n * ```\n *\n * The log levels can be changed at anytime using the {@link BitSet} api:\n *\n * ```js\n * // Enable the \"info\" level\n * logger.levels.enable(LogLevel.Info);\n * * // Disable the \"warn\" level\n * logger.levels.disable(LogLevel.Warn);\n * ```\n *\n * #### Tags\n *\n * In addition, the logger supports tagging messages:\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * const logger = new Logger(LogLevel.Info);\n *\n * logger.tags.disableAll();\n *\n * // All tags are off, this message isn't logged\n * logger.info(LogTag.Component, 'This message is shushed');\n *\n * logger.tags.enable(LogTag.Component);\n * logger.info(LogTag.Component, 'Hello World!') // Prints 'Hello World!'\n * ```\n *\n * The tagging system gives another layer of control to enable / disable\n * some specific logs.\n */\nexport class Logger {\n /**\n * Bitset of enabled levels.\n *\n * @hidden\n */\n levels: BitSet = new BitSet();\n\n /**\n * Bitset of enabled tags.\n *\n * @hidden\n */\n tags: BitSet = new BitSet().enableAll();\n\n /**\n * Notified when an `info`, `warn`, or `error` message is logged.\n *\n * @note The emitter is always notified, even if the logger levels\n * and tags are disabled.\n *\n * @note The message is passed as an array, similar to `console.log`.\n *\n * #### Usage\n *\n * ```js\n * import {LogLevel} from '@wonderlandengine/api';\n *\n * engine.logger.onLog.add((level, messages, tag) => {\n * // Only process error messages\n * if (level !== LogLevel.Error) return;\n *\n * // Only process engine logs\n * if (tag !== LogTag.Engine) return;\n *\n * const str = messages.join(' ');\n * sendAnalytics(str);\n * });\n * ```\n */\n onLog: Emitter<[LogLevel, unknown[], number]> = new Emitter();\n\n /**\n * Create a new logger instance.\n *\n * @param levels Default set of levels to enable.\n */\n constructor(...levels: LogLevel[]) {\n this.levels.enable(...levels);\n }\n\n /**\n * Log the message(s) using `console.log`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n info(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Info) && this.tags.enabled(tag)) {\n console.log(...msg);\n }\n this.onLog.notify(LogLevel.Info, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.warn`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n warn(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Warn) && this.tags.enabled(tag)) {\n console.warn(...msg);\n }\n this.onLog.notify(LogLevel.Warn, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.error`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n error(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Error) && this.tags.enabled(tag)) {\n console.error(...msg);\n }\n this.onLog.notify(LogLevel.Error, msg, tag);\n return this;\n }\n}\n", "import {Version} from './version.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ComponentProperty, Type, defaultPropertyCloner} from './property.js';\nimport {CBORReader, CBORType, getType} from './utils/cbor.js';\nimport {Logger} from './utils/logger.js';\nimport {\n inheritProperties,\n Component,\n ComponentConstructor,\n ComponentProto,\n BrokenComponent,\n AnimationComponent,\n LogTag,\n} from './wonderland.js';\nimport {ImageLike} from './types.js';\nimport {Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {ComponentPropertyDecoder, setupComponentClass} from './component.js';\n\n/**\n * Low-level wrapper to interact with the WebAssembly code.\n *\n * @hidden\n */\nexport class WASM {\n /**\n * Emscripten wasm field.\n *\n * @note This api is meant to be used internally.\n */\n readonly wasm: ArrayBuffer = null!;\n\n /**\n * Emscripten canvas.\n *\n * @note This api is meant to be used internally.\n */\n readonly canvas: HTMLCanvasElement = null!;\n\n /**\n * WebGPU device.\n *\n * @note This api is meant to be used internally.\n */\n readonly preinitializedWebGPUDevice: any = null;\n\n /**\n * Convert a WASM memory view to a JavaScript string.\n *\n * @param ptr Pointer start\n * @param ptrEnd Pointer end\n * @returns JavaScript string\n */\n UTF8ViewToString: (ptr: number, ptrEnd: number) => string;\n\n /** Logger instance. */\n readonly _log: Logger = new Logger();\n\n /** If `true`, logs will not spam the console on error. */\n _deactivate_component_on_error: boolean = false;\n\n /** Temporary memory pointer. */\n _tempMem: number = null!;\n /** Temporary memory size. */\n _tempMemSize: number = 0;\n /** Temporary float memory view. */\n _tempMemFloat: Float32Array = null!;\n /** Temporary int memory view. */\n _tempMemInt: Int32Array = null!;\n /** Temporary uint8 memory view. */\n _tempMemUint8: Uint8Array = null!;\n /** Temporary uint32 memory view. */\n _tempMemUint32: Uint32Array = null!;\n /** Temporary uint16 memory view. */\n _tempMemUint16: Uint16Array = null!;\n\n /** Loading screen .bin file data */\n _loadingScreen: ArrayBuffer | null = null;\n\n /** List of callbacks triggered when the scene is loaded. */\n readonly _sceneLoadedCallback: any[] = [];\n\n /** Image cache. */\n _images: (ImageLike | null)[] = [null];\n\n /** Component instances. */\n private _components: Component[] = null!;\n\n /** Component Type info. */\n _componentTypes: ComponentConstructor[] = [];\n\n /** Index per component type name. */\n _componentTypeIndices: Record = {};\n\n /** Wonderland engine instance. */\n private _engine: WonderlandEngine = null!;\n\n /**\n * `true` if this runtime is using physx.\n *\n * @note This api is meant to be used internally.\n */\n private _withPhysX: boolean = false;\n\n /** Decoder for UTF8 `ArrayBuffer` to JavaScript string. */\n private readonly _utf8Decoder = new TextDecoder('utf8');\n\n /**\n * Registration index of {@link BrokenComponent}.\n *\n * This is used to return dummy instances when a component\n * isn't registered.\n *\n * @hidden\n */\n private readonly _brokenComponentIndex = 0;\n\n /**\n * Create a new instance of the WebAssembly <> API bridge.\n *\n * @param threads `true` if the runtime used has threads support\n */\n constructor(threads: boolean) {\n if (threads) {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.slice(s, e));\n };\n } else {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.subarray(s, e));\n };\n }\n\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n /** We cannot use _tempMem because we are meant to be called before it's initialized */\n const tempBuf = this._malloc(4 * 2);\n const tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4);\n this._wl_runtime_version(tempBuf);\n const version = {\n major: tempVersion[0],\n minor: tempVersion[1],\n patch: tempVersion[2],\n rc: tempVersion[3],\n };\n this._free(tempBuf);\n return version;\n }\n\n /**\n * Reset the cache of the library.\n *\n * @note Should only be called when tearing down the runtime.\n */\n reset() {\n /* Called first to perform cleanup. */\n this._wl_reset();\n\n this._components = null!;\n this._images.length = 1;\n this.allocateTempMemory(1024);\n\n this._componentTypes = [];\n this._componentTypeIndices = {};\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param ctor A string representing the component typename (e.g., `'cursor-component'`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(type: string) {\n return type in this._componentTypeIndices;\n }\n\n /**\n * Register a legacy component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param typeName The name of the component.\n * @param params An object containing the parameters (properties).\n * @param object The object's prototype.\n * @returns The registration index\n */\n _registerComponentLegacy(\n typeName: string,\n params: Record,\n object: ComponentProto\n ) {\n const ctor = class CustomComponent extends Component {};\n ctor.TypeName = typeName;\n ctor.Properties = params;\n Object.assign(ctor.prototype, object);\n return this._registerComponent(ctor);\n }\n\n /**\n * Register a class component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param ctor The class to register.\n * @returns The registration index.\n */\n _registerComponent(ctor: ComponentConstructor) {\n if (!ctor.TypeName) throw new Error('no name provided for component.');\n if (!ctor.prototype._triggerInit) {\n throw new Error(\n `registerComponent(): Component ${ctor.TypeName} must extend Component`\n );\n }\n\n setupComponentClass(ctor);\n\n const typeIndex =\n ctor.TypeName in this._componentTypeIndices\n ? this._componentTypeIndices[ctor.TypeName]\n : this._componentTypes.length;\n this._componentTypes[typeIndex] = ctor;\n this._componentTypeIndices[ctor.TypeName] = typeIndex;\n\n if (ctor === BrokenComponent) return typeIndex;\n\n this._log.info(\n LogTag.Engine,\n 'Registered component',\n ctor.TypeName,\n `(class ${ctor.name})`,\n 'with index',\n typeIndex\n );\n\n if (ctor.onRegister) ctor.onRegister(this._engine);\n\n return typeIndex;\n }\n\n /**\n * Allocate the requested amount of temporary memory\n * in this WASM instance.\n *\n * @param size The number of bytes to allocate\n */\n allocateTempMemory(size: number) {\n this._log.info(LogTag.Engine, 'Allocating temp mem:', size);\n this._tempMemSize = size;\n if (this._tempMem) this._free(this._tempMem);\n this._tempMem = this._malloc(this._tempMemSize);\n this.updateTempMemory();\n }\n\n /**\n * @todo: Delete this and only keep `allocateTempMemory`\n *\n * @param size Number of bytes to allocate\n */\n requireTempMem(size: number) {\n if (this._tempMemSize >= size) return;\n /* Grow in 1kb increments */\n this.allocateTempMemory(Math.ceil(size / 1024) * 1024);\n }\n\n /**\n * Update the temporary memory views. This must be called whenever the\n * temporary memory address changes.\n *\n * @note This api is meant to be used internally.\n */\n updateTempMemory() {\n this._tempMemFloat = new Float32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemInt = new Int32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint32 = new Uint32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint16 = new Uint16Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 1\n );\n this._tempMemUint8 = new Uint8Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize\n );\n }\n\n /**\n * Returns a uint8 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU8(count: number): Uint8Array {\n this.requireTempMem(count);\n return this._tempMemUint8;\n }\n\n /**\n * Returns a uint16 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU16(count: number): Uint16Array {\n this.requireTempMem(count * 2);\n return this._tempMemUint16;\n }\n\n /**\n * Returns a uint32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferU32(count: number): Uint32Array {\n this.requireTempMem(count * 4);\n return this._tempMemUint32;\n }\n\n /**\n * Returns a int32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferI32(count: number): Int32Array {\n this.requireTempMem(count * 4);\n return this._tempMemInt;\n }\n\n /**\n * Returns a float32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferF32(count: number): Float32Array {\n this.requireTempMem(count * 4);\n return this._tempMemFloat;\n }\n\n /**\n * Copy the string into temporary WASM memory and retrieve the pointer.\n *\n * @note This method will compute the strlen and append a `\\0`.\n *\n * @note The result should be used **directly** otherwise it might get\n * overridden by any next call modifying the temporary memory.\n *\n * @param str The string to write to temporary memory\n * @param byteOffset The starting byte offset in the temporary memory at which\n * the string should be written. This is useful when using multiple temporaries.\n * @return The temporary pointer onto the WASM memory\n */\n tempUTF8(str: string, byteOffset = 0): number {\n const strLen = this.lengthBytesUTF8(str) + 1;\n this.requireTempMem(strLen + byteOffset);\n const ptr = this._tempMem + byteOffset;\n this.stringToUTF8(str, ptr, strLen);\n return ptr;\n }\n\n /**\n * Copy the buffer into the WASM heap.\n *\n * @note The returned pointer must be freed.\n *\n * @param buffer The buffer to copy into the heap.\n * @returns An allocated pointer, that must be free after use.\n */\n copyBufferToHeap(buffer: ArrayBuffer): number {\n const size = buffer.byteLength;\n const ptr = this._malloc(size);\n this.HEAPU8.set(new Uint8Array(buffer), ptr);\n return ptr;\n }\n\n /**\n * Returns `true` if the runtime supports physx or not.\n */\n get withPhysX(): boolean {\n return this._withPhysX;\n }\n\n /**\n * Set the engine instance holding this bridge.\n *\n * @note This api is meant to be used internally.\n *\n * @param engine The engine instance.\n */\n protected _setEngine(engine: WonderlandEngine): void {\n this._engine = engine;\n }\n\n /* WebAssembly to JS call bridge. */\n\n protected _wljs_reload(filenamePtr: number) {\n const filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null;\n this._engine._reloadRequest(filename);\n }\n protected _wljs_init(withPhysX: boolean) {\n this._withPhysX = withPhysX;\n\n /* Target memory for JS API functions that return arrays */\n this.allocateTempMemory(1024);\n }\n protected _wljs_scene_switch(index: number) {\n const scene = this._engine._scenes[index] as Scene | null;\n /* Scene can be null during testing with `engine.reset()` */\n this._components = scene?._jsComponents ?? null!;\n }\n protected _wljs_destroy_image(index: number) {\n const img = this._images[index];\n if (!img) return;\n\n this._images[index] = null;\n\n if ((img as HTMLImageElement).src !== undefined) {\n (img as HTMLImageElement).src = '';\n }\n if ((img as HTMLImageElement).onload !== undefined) {\n (img as HTMLImageElement).onload = null;\n }\n if ((img as HTMLImageElement).onerror !== undefined) {\n (img as HTMLImageElement).onerror = null;\n }\n }\n protected _wljs_objects_markDestroyed(\n sceneIndex: number,\n idsPtr: number,\n count: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n const start = idsPtr >>> 1;\n for (let i = 0; i < count; ++i) {\n const id = this.HEAPU16[start + i];\n scene._destroyObject(id);\n }\n }\n protected _wljs_scene_initialize(\n sceneIndex: number,\n idsPtr: number,\n idsEnd: number,\n paramDataPtr: number,\n paramDataEndPtr: number,\n offsetsPtr: number,\n offsetsEndPtr: number\n ) {\n const cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr);\n const offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2);\n const ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1);\n\n const engine = this._engine;\n const scene = engine._scenes[sceneIndex] as Scene;\n const components = scene._jsComponents;\n\n const cbor = new CBORReader(cborEncoded);\n\n let componentsCount = 0;\n {\n const typeInfo = cbor.readTypeInfo();\n if (getType(typeInfo) !== CBORType.Array) {\n this._log.error(LogTag.Engine, 'Parameters data must be an array');\n return;\n }\n componentsCount = cbor.readArrayLength(typeInfo) as number;\n }\n if (componentsCount !== ids.length) {\n this._log.error(\n LogTag.Engine,\n `Parameters set for ${componentsCount} components, but expected ${ids.length}`\n );\n return;\n }\n\n const decoder = new ComponentPropertyDecoder(scene, offsets);\n for (let i = 0; i < componentsCount; ++i) {\n const id = Component._pack(sceneIndex, ids[i]);\n const index = this._wl_get_js_component_index_for_id(id);\n const component = components[index];\n decoder.decode(cbor, component);\n }\n }\n\n protected _wljs_set_component_param_translation(\n scene: number,\n component: number,\n param: number,\n valuePtr: number,\n valueEndPtr: number\n ) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const comp = components[component];\n\n const value = this.UTF8ViewToString(valuePtr, valueEndPtr);\n const ctor = comp.constructor as ComponentConstructor;\n const paramName = ctor._propertyOrder[param];\n (comp as Record)[paramName] = value;\n }\n\n protected _wljs_get_component_type_index(namePtr: number, nameEndPtr: number) {\n const typename = this.UTF8ViewToString(namePtr, nameEndPtr);\n const index = this._componentTypeIndices[typename];\n if (index === undefined) {\n return this._brokenComponentIndex;\n }\n return index;\n }\n protected _wljs_component_create(\n sceneIndex: number,\n index: number,\n id: number,\n type: number,\n object: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n scene._components.createJs(index, id, type, object);\n }\n protected _wljs_component_init(scene: number, component: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const c = components[component];\n c._triggerInit();\n }\n protected _wljs_component_update(component: number, dt: number) {\n const c = this._components[component];\n c._triggerUpdate(dt);\n }\n protected _wljs_component_onActivate(component: number) {\n const c = this._components[component];\n c._triggerOnActivate();\n }\n protected _wljs_component_onDeactivate(component: number) {\n const c = this._components[component];\n c._triggerOnDeactivate();\n }\n protected _wljs_component_markDestroyed(\n sceneIndex: number,\n manager: number,\n componentId: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Prefab;\n scene._destroyComponent(manager, componentId);\n }\n protected _wljs_swap(scene: number, a: number, b: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const componentA = components[a];\n components[a] = components[b];\n components[b] = componentA;\n }\n protected _wljs_copy(\n srcSceneIndex: number,\n srcIndex: number,\n dstSceneIndex: number,\n dstIndex: number,\n offsetsPtr: number,\n copyInfoPtr: number\n ) {\n const srcScene = this._engine._scenes[srcSceneIndex] as Scene;\n const dstScene = this._engine._scenes[dstSceneIndex] as Scene;\n const destComp = dstScene._jsComponents[dstIndex];\n const srcComp = srcScene._jsComponents[srcIndex];\n destComp._copy(srcComp, offsetsPtr, copyInfoPtr);\n }\n /**\n * Forward an animation event to a corresponding\n * {@link AnimationComponent}\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link AnimationComponent.onEvent} instead.\n *\n * @param componentId Component id in the manager\n * @param namePtr Pointer to UTF8 event name\n * @param nameEndPtr Pointer to end of UTF8 event name\n */\n protected _wljs_trigger_animationEvent(\n componentId: number,\n namePtr: number,\n nameEndPtr: number\n ) {\n const scene = this._engine.scene;\n const comp = scene._components.wrapAnimation(componentId);\n const nameStr = this.UTF8ViewToString(namePtr, nameEndPtr);\n comp.onEvent.notify(nameStr);\n }\n}\n\n/* Extends the WASM class with the WebAssembly typings */\n\nexport interface WASM {\n HEAP8: Int8Array;\n HEAPU8: Uint8Array;\n HEAPU16: Uint16Array;\n HEAP16: Int16Array;\n HEAPU32: Uint32Array;\n HEAP32: Int32Array;\n HEAPF32: Float32Array;\n HEAPF64: Float64Array;\n\n GL: {\n framebuffers: WebGLFramebuffer[];\n };\n\n assert: (condition: boolean, msg?: string) => void;\n _free: (ptr: number) => void;\n _malloc: (size: number) => number;\n lengthBytesUTF8: (str: string) => number;\n stringToUTF8: (str: string, outPtr: number, len: number) => void;\n UTF8ToString: (ptr: number) => string;\n addFunction: (func: Function, sig: string) => number;\n removeFunction: (ptr: number) => void;\n\n _wl_runtime_version: (out: number) => void;\n _wl_set_error_callback: (cbPtr: number) => void;\n _wl_application_create: () => void;\n _wl_application_init: (withRenderer: boolean) => boolean;\n _wl_application_start: () => void;\n _wl_application_redraw: () => void;\n _wl_application_resize: (width: number, height: number) => void;\n\n _wl_nextUpdate: (delta: number) => void;\n _wl_nextFrame: (delta: number) => void;\n _wl_reset: () => void;\n _wl_reset_context: () => void;\n _wl_xr_init: (viewCount: number, useLayers: boolean) => void;\n _wl_xr_focus: () => void;\n _wl_xr_blur: () => void;\n _wl_xr_hide: () => void;\n _wl_xr_exit: () => void;\n\n _wl_deactivate_activeScene: () => void;\n\n _wl_renderer_set_mesh_layout: (layout: number) => void;\n _wl_renderer_streaming_idle: () => number;\n _wl_renderer_isReverseZEnabled: () => number;\n\n _wl_load_main_scene: (ptr: number, size: number, url: number) => number;\n _wl_get_images: (out: number, max: number) => number;\n _wl_get_material_definition_count: () => number;\n _wl_get_material_definition_index: (ptr: number) => number;\n\n _wl_scene_get_active: (root: number) => number;\n _wl_scene_create: (ptr: number, size: number, url: number) => number;\n _wl_scene_create_chunked_start: (url: number) => number;\n _wl_scene_create_chunked_buffer_size: (index: number) => number;\n _wl_scene_create_chunked_next: (\n index: number,\n ptr: number,\n size: number,\n readSizePtr: number,\n requiredSizePtr: number\n ) => boolean;\n _wl_scene_create_chunked_abort: (index: number) => void;\n _wl_scene_create_chunked_end_prefab: (index: number) => number;\n _wl_scene_create_chunked_end_main: (index: number) => void;\n _wl_scene_create_chunked_end_queued: (\n index: number,\n dependentSceneIndex: number\n ) => void;\n _wl_scene_create_empty: () => number;\n _wl_scene_initialize: (index: number) => number;\n _wl_scene_destroy: (index: number) => void;\n _wl_scene_instantiate: (src: number, dst: number) => number;\n _wl_scene_activate: (index: number) => void;\n _wl_scene_queued_bin_count: (index: number) => number;\n _wl_scene_queued_bin_path: (sceneIndex: number, index: number) => number;\n _wl_scene_clear_queued_bin_list: (sceneIndex: number) => void;\n _wl_scene_load_queued_bin: (index: number, ptr: number, size: number) => boolean;\n _wl_scene_activatable: (index: number) => boolean;\n _wl_scene_active: (index: number) => boolean;\n _wl_scene_get_baseURL: (index: number) => number;\n _wl_scene_get_filename: (index: number) => number;\n _wl_scene_get_componentsBundle: (index: number) => number;\n\n _wl_scene_get_component_manager_count: (scene: number) => number;\n _wl_scene_get_component_manager_index: (scene: number, ptr: number) => number;\n\n _wl_scene_get_mainView: (scene: number) => number;\n _wl_scene_get_leftView: (scene: number) => number;\n _wl_scene_get_rightView: (scene: number) => number;\n _wl_scene_get_components: (\n scene: number,\n typeIndex: number,\n subTypeIndex: number,\n active: boolean,\n offset: number,\n count: number,\n ptr: number\n ) => number;\n _wl_scene_get_component: (scene: number, typeIndex: number, index: number) => number;\n\n _wl_scene_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n maxDistance: number,\n outPtr: number\n ) => void;\n _wl_scene_add_object: (scene: number, parentId: number) => number;\n _wl_scene_add_objects: (\n scene: number,\n parentId: number,\n count: number,\n componentCountHint: number,\n ptr: number,\n size: number\n ) => number;\n _wl_scene_reserve_objects: (\n scene: number,\n objectCount: number,\n _tempMem: number\n ) => void;\n _wl_scene_set_sky_material: (index: number, id: number) => void;\n _wl_scene_get_sky_material: (index: number) => number;\n _wl_scene_environment_set_intensity: (index: number, intensity: number) => void;\n _wl_scene_environment_get_intensity: (index: number) => number;\n _wl_scene_environment_set_tint: (\n index: number,\n r: number,\n g: number,\n b: number\n ) => void;\n _wl_scene_environment_get_tint: (index: number, ptr: number) => void;\n _wl_scene_environment_set_coefficients: (\n index: number,\n ptr: number,\n count: number\n ) => void;\n _wl_scene_environment_get_coefficients: (index: number, ptr: number) => void;\n _wl_scene_set_clearColor: (r: number, g: number, b: number, a: number) => void;\n _wl_scene_enableColorClear: (b: boolean) => void;\n\n _wl_set_loading_screen_progress: (ratio: number) => void;\n\n _wl_glTF_scene_create: (extensions: boolean, ptr: number, ptrEnd: number) => number;\n _wl_glTF_scene_get_extensions: (index: number) => number;\n _wl_glTF_scene_extensions_gltfIndex_to_id: (\n gltfScene: number,\n destScene: number,\n objectIndex: number,\n gltfIndex: number\n ) => number;\n\n _wl_component_get_object: (manager: number, id: number) => number;\n _wl_component_setActive: (manager: number, id: number, active: boolean) => void;\n _wl_component_isActive: (manager: number, id: number) => number;\n _wl_component_remove: (manager: number, id: number) => void;\n\n _wl_collision_component_get_collider: (id: number) => number;\n _wl_collision_component_set_collider: (id: number, collider: number) => void;\n _wl_collision_component_get_extents: (id: number) => number;\n _wl_collision_component_get_group: (id: number) => number;\n _wl_collision_component_set_group: (id: number, group: number) => void;\n _wl_collision_component_query_overlaps: (\n id: number,\n outPtr: number,\n outCount: number\n ) => number;\n _wl_text_component_get_horizontal_alignment: (id: number) => number;\n _wl_text_component_set_horizontal_alignment: (id: number, alignment: number) => void;\n _wl_text_component_get_vertical_alignment: (id: number) => number;\n _wl_text_component_set_vertical_alignment: (\n id: number,\n verticalAlignment: number\n ) => void;\n _wl_text_component_get_justified: (id: number) => number;\n _wl_text_component_set_justified: (id: number, justified: boolean) => void;\n _wl_text_component_get_character_spacing: (id: number) => number;\n _wl_text_component_set_character_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_line_spacing: (id: number) => number;\n _wl_text_component_set_line_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_effect: (id: number) => number;\n _wl_text_component_get_effectOffset: (id: number, outPtr: number) => void;\n _wl_text_component_set_effect: (id: number, effect: number) => void;\n _wl_text_component_set_effectOffset: (id: number, offsetPtr: number) => void;\n _wl_text_component_get_wrapMode: (id: number) => number;\n _wl_text_component_set_wrapMode: (id: number, mode: number) => void;\n _wl_text_component_get_wrapWidth: (id: number) => number;\n _wl_text_component_set_wrapWidth: (id: number, width: number) => void;\n _wl_text_component_get_text: (id: number) => number;\n _wl_text_component_set_text: (id: number, ptr: number) => void;\n _wl_text_component_set_material: (id: number, materialId: number) => void;\n _wl_text_component_get_material: (id: number) => number;\n _wl_text_component_get_boundingBox: (\n id: number,\n textPtr: number,\n resultPtr: number\n ) => number;\n _wl_view_component_get_projectionType: (id: number) => number;\n _wl_view_component_set_projectionType: (id: number, type: number) => void;\n _wl_view_component_get_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_set_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_remapProjectionMatrix: (\n id: number,\n inverseDepth: boolean,\n depthZeroToOne: boolean\n ) => void;\n _wl_view_component_generate_projectionMatrix: (id: number) => void;\n _wl_view_component_get_near: (id: number) => number;\n _wl_view_component_set_near: (id: number, near: number) => void;\n _wl_view_component_get_far: (id: number) => number;\n _wl_view_component_set_far: (id: number, far: number) => void;\n _wl_view_component_get_fov: (id: number) => number;\n _wl_view_component_set_fov: (id: number, fov: number) => void;\n _wl_view_component_get_viewport: (id: number) => number;\n _wl_view_component_set_viewport: (\n id: number,\n x: number,\n y: number,\n width: number,\n height: number\n ) => void;\n _wl_view_component_get_extent: (id: number) => number;\n _wl_view_component_set_extent: (id: number, fov: number) => void;\n _wl_view_component_set_externalFramebuffer: (id: number, fb: number) => void;\n _wl_input_component_get_type: (id: number) => number;\n _wl_input_component_set_type: (id: number, type: number) => void;\n _wl_input_set_transformation: (sceneIndex: number, type: number, ptr: number) => void;\n _wl_light_component_get_color: (id: number) => number;\n _wl_light_component_get_type: (id: number) => number;\n _wl_light_component_set_type: (id: number, type: number) => void;\n _wl_light_component_get_intensity: (id: number) => number;\n _wl_light_component_set_intensity: (id: number, intensity: number) => void;\n _wl_light_component_get_outerAngle: (id: number) => number;\n _wl_light_component_set_outerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_innerAngle: (id: number) => number;\n _wl_light_component_set_innerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_shadows: (id: number) => number;\n _wl_light_component_set_shadows: (id: number, shadows: boolean) => void;\n _wl_light_component_get_shadowRange: (id: number) => number;\n _wl_light_component_set_shadowRange: (id: number, range: number) => void;\n _wl_light_component_get_shadowBias: (id: number) => number;\n _wl_light_component_set_shadowBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowNormalBias: (id: number) => number;\n _wl_light_component_set_shadowNormalBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowTexelSize: (id: number) => number;\n _wl_light_component_set_shadowTexelSize: (id: number, size: number) => void;\n _wl_light_component_get_cascadeCount: (id: number) => number;\n _wl_light_component_set_cascadeCount: (id: number, count: number) => void;\n _wl_animation_component_get_animation: (id: number) => number;\n _wl_animation_component_set_animation: (id: number, animId: number) => void;\n _wl_animation_component_get_playCount: (id: number) => number;\n _wl_animation_component_set_playCount: (id: number, count: number) => void;\n _wl_animation_component_get_speed: (id: number) => number;\n _wl_animation_component_set_speed: (id: number, speed: number) => void;\n _wl_animation_component_play: (id: number) => void;\n _wl_animation_component_stop: (id: number) => void;\n _wl_animation_component_pause: (id: number) => void;\n _wl_animation_component_state: (id: number) => number;\n _wl_animation_component_getGraphParamValue: (\n id: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_animation_component_setGraphParamValue: (\n id: number,\n paramIndex: number,\n valuePtr: number\n ) => void;\n _wl_animation_component_get_rootMotionMode: (id: number) => number;\n _wl_animation_component_set_rootMotionMode: (id: number, value: number) => void;\n _wl_animation_component_get_rootMotion_translation: (\n id: number,\n outPtr: number\n ) => number;\n _wl_animation_component_get_rootMotion_rotation: (id: number, outPtr: number) => number;\n _wl_animation_component_getGraphParamIndex: (id: number, paramName: number) => number;\n _wl_animation_component_get_iteration: (id: number) => number;\n _wl_animation_component_get_position: (id: number) => number;\n _wl_animation_component_get_duration: (id: number) => number;\n _wl_mesh_component_get_material: (id: number) => number;\n _wl_mesh_component_set_material: (id: number, materialId: number) => void;\n _wl_mesh_component_get_mesh: (id: number) => number;\n _wl_mesh_component_set_mesh: (id: number, meshId: number) => void;\n _wl_mesh_component_get_skin: (id: number) => number;\n _wl_mesh_component_set_skin: (id: number, skinId: number) => void;\n _wl_mesh_component_get_morph_targets: (id: number) => number;\n _wl_mesh_component_set_morph_targets: (id: number, morphTargetSetId: number) => void;\n _wl_mesh_component_get_morph_target_weight: (id: number, index: number) => number;\n _wl_mesh_component_get_morph_target_weights: (id: number, ptr: number) => number;\n _wl_mesh_component_set_morph_target_weight: (\n id: number,\n index: number,\n weight: number\n ) => void;\n _wl_mesh_component_set_morph_target_weights: (\n id: number,\n ptr: number,\n count: number\n ) => void;\n _wl_particleEffect_component_get_particleEffect: (id: number) => number;\n _wl_particleEffect_component_set_particleEffect: (\n id: number,\n particleEffectId: number\n ) => void;\n _wl_physx_component_get_static: (id: number) => number;\n _wl_physx_component_set_static: (id: number, flag: boolean) => void;\n _wl_physx_component_get_kinematic: (id: number) => number;\n _wl_physx_component_set_kinematic: (id: number, kinematic: boolean) => void;\n _wl_physx_component_get_gravity: (id: number) => number;\n _wl_physx_component_set_gravity: (id: number, gravity: boolean) => void;\n _wl_physx_component_get_simulate: (id: number) => number;\n _wl_physx_component_set_simulate: (id: number, simulation: boolean) => void;\n _wl_physx_component_get_allowSimulation: (id: number) => number;\n _wl_physx_component_set_allowSimulation: (id: number, allowSimulation: boolean) => void;\n _wl_physx_component_get_allowQuery: (id: number) => number;\n _wl_physx_component_set_allowQuery: (id: number, allowQuery: boolean) => void;\n _wl_physx_component_get_trigger: (id: number) => number;\n _wl_physx_component_set_trigger: (id: number, trigger: boolean) => void;\n _wl_physx_component_get_shape: (id: number) => number;\n _wl_physx_component_set_shape: (id: number, shape: number) => void;\n _wl_physx_component_get_shape_data: (id: number) => number;\n _wl_physx_component_set_shape_data: (id: number, shapeIndex: number) => void;\n _wl_physx_component_get_extents: (id: number) => number;\n _wl_physx_component_get_staticFriction: (id: number) => number;\n _wl_physx_component_set_staticFriction: (id: number, value: number) => void;\n _wl_physx_component_get_dynamicFriction: (id: number) => number;\n _wl_physx_component_set_dynamicFriction: (id: number, value: number) => void;\n _wl_physx_component_get_bounciness: (id: number) => number;\n _wl_physx_component_set_bounciness: (id: number, value: number) => void;\n _wl_physx_component_get_linearDamping: (id: number) => number;\n _wl_physx_component_set_linearDamping: (id: number, value: number) => void;\n _wl_physx_component_get_angularDamping: (id: number) => number;\n _wl_physx_component_set_angularDamping: (id: number, value: number) => void;\n _wl_physx_component_get_linearVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_linearVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_angularVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_angularVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_groupsMask: (id: number) => number;\n _wl_physx_component_set_groupsMask: (id: number, flags: number) => void;\n _wl_physx_component_get_blocksMask: (id: number) => number;\n _wl_physx_component_set_blocksMask: (id: number, flags: number) => void;\n _wl_physx_component_get_linearLockAxis: (id: number) => number;\n _wl_physx_component_set_linearLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_angularLockAxis: (id: number) => number;\n _wl_physx_component_set_angularLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_mass: (id: number) => number;\n _wl_physx_component_set_mass: (id: number, value: number) => void;\n _wl_physx_component_get_offsetTranslation: (id: number, out: number) => void;\n _wl_physx_component_get_offsetTransform: (id: number) => number;\n _wl_physx_component_set_offsetTranslation: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_set_offsetRotation: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_physx_component_set_sleepOnActivate: (id: number, flag: boolean) => void;\n _wl_physx_component_get_sleepOnActivate: (id: number) => number;\n _wl_physx_component_set_massSpaceInertiaTensor: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_addForce: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean\n ) => void;\n _wl_physx_component_addForceAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean,\n posX: number,\n posY: number,\n posZ: number,\n local: boolean\n ) => void;\n _wl_physx_component_addTorque: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number\n ) => void;\n _wl_physx_component_addCallback: (id: number, otherId: number) => number;\n _wl_physx_component_removeCallback: (id: number, callbackId: number) => number;\n _wl_physx_update_global_pose: (object: number, component: number) => void;\n _wl_physx_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n outPtr: number,\n maxDistance: number\n ) => void;\n _wl_physx_set_collision_callback: (callback: number) => void;\n _wl_mesh_create: (\n indicesPtr: number,\n indicesSize: number,\n indexType: number,\n vertexCount: number,\n skinningType: number\n ) => number;\n _wl_mesh_get_vertexCount: (index: number) => number;\n _wl_mesh_get_indexData: (index: number, outPtr: number, count: number) => number;\n _wl_mesh_update: (index: number) => void;\n _wl_mesh_get_boundingSphere: (index: number, outPtr: number) => void;\n _wl_mesh_get_attribute: (index: number, attribute: number, outPtr: number) => void;\n _wl_mesh_destroy: (index: number) => void;\n _wl_mesh_get_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcStride: number,\n dstFormatSize: number,\n destPtr: number,\n dstSize: number\n ) => void;\n _wl_mesh_set_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcSize: number,\n dstFormatSize: number,\n destPtr: number,\n destStride: number\n ) => void;\n _wl_font_get_emHeight: (index: number) => number;\n _wl_font_get_capHeight: (index: number) => number;\n _wl_font_get_xHeight: (index: number) => number;\n _wl_font_get_outlineSize: (index: number) => number;\n _wl_material_create: (definitionIndex: number) => number;\n _wl_material_get_definition: (index: number) => number;\n _wl_material_definition_get_param_count: (index: number) => number;\n _wl_material_definition_get_param_name: (index: number, paramIndex: number) => number;\n _wl_material_definition_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_pipeline: (index: number) => number;\n _wl_material_clone: (index: number) => number;\n _wl_material_get_param_index: (index: number, namePtr: number) => number;\n _wl_material_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_param_value: (\n index: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_material_set_param_value_uint: (\n index: number,\n paramId: number,\n valueId: number\n ) => void;\n _wl_material_set_param_value_float: (\n index: number,\n paramId: number,\n ptr: number,\n count: number\n ) => void;\n _wl_image_create: (jsImage: number) => number;\n _wl_image_size: (index: number, out: number) => number;\n _wl_image_get_jsImage_index: (index: number) => number;\n _wl_image_compressed: (index: number) => number;\n _wl_image_originalScene: (index: number) => number;\n _wl_image_markDirty: (index: number) => void;\n _wl_image_markReady: (\n index: number,\n width: number,\n height: number,\n flipY: number\n ) => void;\n _wl_image_count: () => number;\n\n _wl_texture_create: (image: number) => number;\n _wl_texture_get_image_index: (index: number) => number;\n _wl_texture_destroy: (id: number) => void;\n\n _wl_renderer_updateImage: (\n imageIndex: number,\n jsImageIndex: number,\n srcWidth: number,\n srcHeight: number,\n xOffset: number,\n yOffset: number,\n flipY: boolean\n ) => number;\n\n _wl_animation_get_duration: (id: number) => number;\n _wl_animation_get_trackCount: (id: number) => number;\n _wl_animation_retargetToSkin: (id: number, targetId: number) => number;\n _wl_animation_retarget: (id: number, ptr: number) => number;\n _wl_particleEffect_clone: (index: number) => number;\n _wl_object_id: (scene: number, index: number) => number;\n _wl_object_index: (id: number) => number;\n _wl_object_name: (id: number) => number;\n _wl_object_set_name: (id: number, ptr: number) => void;\n _wl_object_remove: (id: number) => void;\n _wl_object_markedDestroyed: (id: number) => boolean;\n _wl_object_parent: (id: number) => number;\n _wl_object_get_children_count: (id: number) => number;\n _wl_object_get_children: (id: number, outPtr: number, count: number) => number;\n _wl_object_set_parent: (id: number, parentId: number) => void;\n _wl_object_clone: (id: number, parentId: number) => number;\n _wl_object_reset_scaling: (id: number) => void;\n _wl_object_reset_translation_rotation: (id: number) => void;\n _wl_object_reset_rotation: (id: number) => void;\n _wl_object_reset_translation: (id: number) => void;\n _wl_object_translate: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_obj: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_rotate_axis_angle: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_axis_angle_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_quat: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_rotate_quat_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_scale: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_local: (id: number) => number;\n _wl_object_get_translation_local: (id: number, outPtr: number) => void;\n _wl_object_set_translation_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_get_translation_world: (id: number, outPtr: number) => void;\n _wl_object_set_translation_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_world: (id: number) => number;\n _wl_object_trans_world_to_local: (id: number) => number;\n _wl_object_scaling_local: (id: number) => number;\n _wl_object_scaling_world: (id: number) => number;\n _wl_object_set_scaling_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_set_scaling_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_scaling_world_to_local: (id: number) => number;\n _wl_object_set_rotation_local: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_set_rotation_world: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_transformVectorWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointLocal: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseLocal: (id: number, ptr: number) => number;\n _wl_object_toWorldSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_toObjectSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_lookAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n upX: number,\n upY: number,\n upZ: number\n ) => void;\n _wl_object_set_dirty: (id: number) => void;\n _wl_get_js_component_index: (id: number, outPtr: number, count: number) => number;\n _wl_get_js_component_index_for_id: (id: number) => number;\n _wl_get_component_id: (id: number, managerId: number, index: number) => number;\n _wl_object_get_components: (id: number, outPtr: number, count: number) => number;\n _wl_object_get_component_types: (id: number, outPtr: number, count: number) => void;\n _wl_object_add_js_component: (id: number, typeId: number) => number;\n _wl_object_add_component: (id: number, typeId: number) => number;\n _wl_object_is_changed: (id: number) => number;\n _wl_object_findByName: (\n obj: number,\n name: number,\n indexPtr: number,\n childPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_object_findByNameRecursive: (\n obj: number,\n name: number,\n indexPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_component_manager_name: (scene: number, id: number) => number;\n _wl_skin_get_joint_count: (id: number) => number;\n _wl_skin_joint_ids: (id: number) => number;\n _wl_skin_inverse_bind_transforms: (id: number) => number;\n _wl_skin_inverse_bind_scalings: (id: number) => number;\n _wl_morph_targets_get_target_count: (id: number) => number;\n _wl_morph_targets_get_target_name: (id: number, target: number) => number;\n _wl_morph_targets_get_target_index: (id: number, namePtr: number) => number;\n _wl_morph_target_weights_get_weight: (id: number, target: number) => number;\n _wl_morph_target_weights_set_weight: (\n id: number,\n target: number,\n weight: number\n ) => void;\n _wl_math_cubicHermite: (\n a: number,\n b: number,\n c: number,\n d: number,\n f: number,\n e: number,\n isQuat: boolean\n ) => void;\n _wl_i18n_setLanguage: (ptr: number) => void;\n _wl_i18n_currentLanguage: () => number;\n _wl_i18n_currentLanguageIndex: () => number;\n _wl_i18n_translate: (ptr: number) => number;\n _wl_i18n_languageCount: () => number;\n _wl_i18n_languageIndex: (ptr: number) => number;\n _wl_i18n_languageCode: (index: number) => number;\n _wl_i18n_languageName: (index: number) => number;\n _wl_i18n_languageFile: (index: number) => number;\n}\n\n/*\n * Api <> Runtime compatibility.\n *\n * Some features exposed in the API are only available from a specific\n * runtime version.\n *\n * Every added feature must throw by default. If the runtime loaded\n * has the specific feature, the method will be overwritten by Emscripten\n * upon loading.\n */\n\n/**\n * Throwing function used for features added in a patch version.\n *\n * #### Usage\n *\n * ```ts\n * const requireRuntime1_1_1 = throwInvalidRuntime('1.1.1');\n * WASM.prototype._wl_new_function = requireRuntime1_1_1;\n * ```\n *\n * @param version The version in which the feature was added.\n * @returns A function that will throw when called.\n */\nfunction throwInvalidRuntime(version: string) {\n return function () {\n throw new Error(\n `Feature added in version ${version}.` +\n `\\n\\t\u2192 Please use a Wonderland Engine editor version >= ${version}`\n );\n };\n}\n", "import {threads} from 'wasm-feature-detect';\nimport {WonderlandEngine} from './engine.js';\nimport {XROfferSessionOptions} from './webxr.js';\nimport {LogLevel} from './utils/logger.js';\nimport {WASM} from './wasm.js';\n\nimport {getBaseUrl} from './utils/fetch.js';\n\nexport * from './utils/index.js';\nexport * from './decorators.js';\nexport {NativeComponents} from './component.js';\nexport * from './wonderland.js';\nexport * from './engine.js';\nexport * from './webxr.js';\nexport * from './property.js';\nexport * from './prefab.js';\nexport * from './scene.js';\nexport * from './scene-gltf.js';\nexport * from './resources/resource.js';\nexport * from './resources/material-manager.js';\nexport * from './resources/mesh-manager.js';\nexport {TextureManager} from './resources/texture-manager.js';\nexport * from './types.js';\nexport * from './version.js';\nexport * from './wasm.js';\n\n/** Relative default path for the loading screen. */\nconst LOADING_SCREEN_PATH = 'WonderlandRuntime-LoadingScreen.bin';\n\nfunction loadScript(scriptURL: string): Promise {\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n const node = document.body.appendChild(s);\n s.onload = () => {\n document.body.removeChild(node);\n resolve();\n };\n s.onerror = (e) => {\n document.body.removeChild(node);\n reject(e);\n };\n s.src = scriptURL;\n });\n}\n\n/**\n * Checks for support of WebAssembly features.\n *\n * @returns An object containing booleans for supported features.\n */\nasync function detectFeatures(): Promise<{\n threadsSupported: boolean;\n}> {\n let threadsSupported = await threads();\n if (threadsSupported) {\n if (self.crossOriginIsolated) {\n console.log('WASM Threads is supported');\n } else {\n console.warn(\n 'WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.'\n );\n }\n } else {\n console.warn('WASM Threads is not supported');\n }\n\n threadsSupported = threadsSupported && self.crossOriginIsolated;\n return {\n threadsSupported,\n };\n}\n\n/**\n * Options to forward to {@link loadRuntime}\n */\nexport interface LoadRuntimeOptions {\n /**\n * @deprecated Ignored, SIMD in the runtime is always enabled as it's supported on\n * all modern browsers.\n */\n simd: boolean;\n /**\n * If `true`, forces the runtime to load the threads-compatible version.\n * If `undefined`, performs browser feature detection to check whether threads are supported or not.\n */\n threads: boolean;\n /**\n * If `true`, forces the runtime to load the webgpu-compatible version.\n */\n webgpu: boolean;\n /**\n * If `true`, forces the runtime to load a physx-compatible version.\n *\n * **Note**: If your scene uses physx, you **must** enable this option.\n */\n physx: boolean;\n /**\n * If `true`, forces the runtime to load a loader-compatible version.\n *\n * This option allows to load gltf data at runtime.\n */\n loader: boolean;\n\n /**\n * Whether to instantiate the runtime with a renderer.\n *\n * Disabling this is mostly meant for testing purposes (increased speed).\n *\n * @hidden\n */\n renderer: boolean;\n\n /**\n * Path to the loading screen. If `undefined`, defaults to 'WonderlandRuntime-LoadingScreen.bin'.\n * Beware that these are special .bin files signed by Wonderland. Customizing\n * requires an enterprise license, please reach out for more information.\n */\n loadingScreen: string;\n\n /**\n * Default framebuffer scale factor. This can later be changed using\n * {@link WonderlandEngine.xrFramebufferScaleFactor}\n */\n xrFramebufferScaleFactor: number;\n\n /**\n * Whether to advertise AR/VR session support to the browser.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * If `undefined`, no XR session is automatically offered to the browser.\n *\n * @since 1.1.5\n */\n xrOfferSession: XROfferSessionOptions;\n\n /**\n * Canvas id or element. If this is `undefined`, looks for a canvas with id 'canvas'.\n */\n canvas: string;\n\n /**\n * Logging level(s) to enable.\n *\n * By default, all levels are enabled.\n */\n logs: LogLevel[];\n}\n\n/**\n * Load the runtime using the WASM and JS files.\n *\n * @param runtime The runtime base string, e.g,: `WonderlandRuntime-loader-physx`.\n * @param options Options to modify the loading behaviour.\n *\n * @returns A promise that resolves when the engine is ready to be used.\n */\nexport async function loadRuntime(\n runtime: string,\n options: Partial = {}\n): Promise {\n const baseURL = getBaseUrl(runtime);\n\n const {threadsSupported} = await detectFeatures();\n const {\n threads = threadsSupported,\n webgpu = false,\n physx = false,\n loader = false,\n renderer = true,\n xrFramebufferScaleFactor = 1.0,\n xrOfferSession = null,\n loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH,\n canvas = 'canvas',\n logs = [LogLevel.Info, LogLevel.Warn, LogLevel.Error],\n } = options;\n\n const variant = [];\n if (loader) variant.push('loader');\n if (physx) variant.push('physx');\n if (threads) variant.push('threads');\n if (webgpu) variant.push('webgpu');\n\n const variantStr = variant.join('-');\n\n let filename = runtime;\n if (variantStr) filename = `${filename}-${variantStr}`;\n\n const download = function (\n filename: string,\n errorMessage: string\n ): Promise {\n return fetch(filename)\n .then((r) => {\n if (!r.ok) return Promise.reject(errorMessage);\n return r.arrayBuffer();\n })\n .catch((_) => Promise.reject(errorMessage));\n };\n\n const [wasmData, loadingScreenData] = await Promise.all([\n download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`),\n download(loadingScreen, 'Failed to fetch loading screen file'),\n ]);\n\n const canvasElement = document.getElementById(canvas) as HTMLCanvasElement;\n if (!canvasElement) {\n throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas}'`);\n }\n if (!(canvasElement instanceof HTMLCanvasElement)) {\n throw new Error(`loadRuntime(): HTML element '${canvas}' must be a canvas`);\n }\n\n const wasm = new WASM(threads);\n (wasm.wasm as ArrayBuffer) = wasmData;\n (wasm.canvas as HTMLCanvasElement) = canvasElement;\n wasm._log.levels.enable(...logs);\n\n if (!window._WL) {\n window._WL = {runtimes: {}};\n }\n const runtimes = window._WL.runtimes;\n\n /* Global identifier of this runtime in `window`. */\n const runtimeGlobalId = variantStr ? variantStr : 'default';\n /* Only load the runtime if not previously loaded in the page */\n if (!runtimes[runtimeGlobalId]) {\n await loadScript(`${filename}.js`);\n runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime!;\n window.instantiateWonderlandRuntime = undefined;\n }\n await runtimes[runtimeGlobalId](wasm);\n\n if (webgpu) {\n const WebGPU = (wasm as any).WebGPU;\n const adapter = await (navigator as any).gpu.requestAdapter();\n const adapterId = WebGPU.mgrAdapter.create(adapter);\n const desc = {\n requiredFeatures: ['texture-compression-bc', 'depth32float-stencil8'],\n };\n const device = await adapter.requestDevice(desc);\n const deviceId = WebGPU.mgrDevice.create(adapter);\n (wasm.preinitializedWebGPUDevice as any) = device;\n\n const context = canvasElement.getContext('webgpu')! as any;\n\n context.configure({\n device: device,\n format: (navigator as any).gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n }\n\n const engine = new WonderlandEngine(wasm, loadingScreenData, renderer);\n\n await engine.webxr.init(xrFramebufferScaleFactor, xrOfferSession);\n\n engine.autoResizeCanvas = true;\n engine.start();\n\n return engine;\n}\n", "import { Component, Type } from '@wonderlandengine/api';\n/**\n * 8thwall camera component.\n *\n * Sets up the 8thwall pipeline and retrieves tracking events to place an\n * object at the location of the tracked AR camera / mobile device.\n *\n * Use this for SLAM tracking based on 8thwall.\n *\n * Make sure to enable 8thwall in \"Project Settings\" > \"AR\". See also the\n * [AR Getting Started Guide](/getting-started/quick-start-ar)\n *\n *\n * Currently only supports world-tracking (SLAM) using BACK camera.\n *\n * - remove any occurrences of the old 8thwall-camera component in the editor\n * - Add this component to NonVrCamera\n *\n * IMPORTANT!\n * - until it get's fixed, select 'customIndexHtml' in the project settings\n * - open a generated index.html and crossorigin=\"anonymous\" attribute to the + +
    + Zumbies Mortos: 0 +
    Wonderland Engine 1.4.0 diff --git a/js/mouse-spawner.js b/js/mouse-spawner.js index d7dbf07..6e36ad7 100644 --- a/js/mouse-spawner.js +++ b/js/mouse-spawner.js @@ -37,7 +37,7 @@ export class MouseSpawner extends Component { }; time = 0; - spawnInterval = 2.0; + spawnInterval = 1.2; targets = []; // Para controle de waves por lado

    jM5HX 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%0D^u*uSfi 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 delta 114546 zcmcG$30MW`+w)Z&iVdxU8gJ6wRUxNQB{3E z&vQ3B3u4y?VJ`H(50fl1$a0&px8h~$cfNcR=P<*N~0m9$0GVJj_yMd3 zi@;*AM7epoWqW=aPdWJ(^^LRjx8il*ifzC~un9PUK(O-Lr5pZLmC6B|tESwh?xTw7 zfDUl58g&W$I|P)!)2#oNkE1#i+()l_vf7+{{Y3MgLsm_*hgCK`Da>v98>#u zJ-OHvMz#4@v~BCs2HzW8F4rCwztC^^r=7pcV^R67VS_bCyENsqi%yEStmbO|zW!h5 zZ}oiVe~n+Ucaj7>t=JTr z@@)++-|8q&eW7MnZRn%kp;T?^qt;TCyE~{6%E<<*_i`Ix1ML2B4!{vO10iq&?!eM0w(AE&G`Ud;P*dq$_@k7iWma?|2Iwq{-51YFboU_Bfv;73eB}3Fct)Z z@jwDXKq#0D!od{q9hmw*am4?m(*KWjX8(_R`Twm0$}p1ZgVB_!Bz1~1%aLXY?EoL` z5%y?7IiNH83!9ebQX4ipD5evejhSMmIJR#N&5K9-cCguWO0`SmUhu^wK2aNx?{$J&$X$esMzw4RWF}17AbEMG-7HaA57ERaMe|y+}HDTJ3 zR-xTx4cgW=qkg8MUCZP$(avJpyG)x~5Rjs2?Stmta5S$7umL^O|9UXN-_8=<)&4)6 zgXyUWbo2jo4AhDLyE8Sw`nR+A7W>ytOr8I`1q=<&Fm&}0)CGSa_~uNLUhwVev1r2o z?Ixi~k2d^o$7p~qw?*SgL!qew1{#?JFdNJPbJ3PA16d#&D87xDX{7!h^D6KQVCK&o zqMXd9Nle@5p{gi5+7c$VrRs_ct&mBZJa5(Vs@a2R+gN@Xi&rEqU%YG?2%EQN;pBxY z7Ayp&(r>ZV-=a~==B-$0Dppzs(55K2Ot)YGh6PO-ZO}cA#e` zO?6GLK-1xgJncX7xF~I!p}z9}s%MGPM+w44dKCQ~C3>P%c!?<{1H#3)#ES$HwWe2? zA=B#g?{qDva#RvhuIyEdQ&pwvpwwpaq}Wa*XeiU+B$NIjvPSoQXaa>AVaywC)+^i|niR5L4x8zZggjkfPRn@E0 zR1#b);;HLXns7PM)6||Q!ULkTT77e2p3+Mv(+V^sYDNqq>!T9OQdy_8g)OCWiCjWT zR4TGJfGGxYO`=YWdY&jC(KAXw9!LXXVOmsLq!y5E?QJ5VT1*hY`%7ErAITN&(QeJS#(A8`@vyZRu1tGk;DMhd$2&3j%$aE~3cCE}MJvASUESmAil)2hTvzJoGk zV(3I6O6Nqz4n6L*$LoHNWlv}1B;Et(cX5TY@#v)+i%X_kj@tLDgMdEe1GCdMZbYFR zFOGaX^q0s@6Cc~&LF@fI_!-<`i(c0(`E!YNtKx$~QN-dd5^Vz=9O26$U0F+wwNyZ8 zrxXt#;wqx`C^^*u?xH7m%NnK(>*msruY9td?QaIn%a@E7KIEz-o~+}OZ<}q7Ei~^a z6i(~r)F;WPmb8&ZH)SE+l5y6465o5<1D0jd2~N1^*Jt}T{n`=h5o>qGyv(oL_(z4|J&01LLn%+CeJPsc+%%q=alMYzG0iP$$R3lYe zx3hL&09AX=g_3@n@u(J{+M!zcJtIjr%jdfpwcyor6gP&_>T16-3@utTA890+Ww}~Q zC8z^{Xlv7}_1eH&d8I00q6TP$D!{*p)~j+m<5kaG>JT!B$~7`fnF<< zNPt{aDr#t`_qa8?{#I@r5k^EN%L93VXl=dICd)K>P?)R?6eVY>2#HWgparK+R{OTAU%i14Yml#&GpNx6=cw-aO=DQO3} zpccKHG*N(%m5N9quPmyqoy95)YY>7qeF_mq#uFKOQV5co&E8zQOS$B*%U|x@eDe6t zbSgL5Te~tTFbMcAjE!mAc&c_(!Yo5uy6SDEmbks(+vFTWKr^m z+UAq3l?yAURMdxDs$S1YHO#R(*=F9h>U7)bZ9_y+*H0w1l*gFWPC8gVcM#ZxUYMca z3+<>){=(n)DYxZ3dHQsR*x9vrAxP85+%*!siSX0HP%z(YV&mKNK|`NsPMrIQFx#+C z-XUkx=ghhLJ|oiIDtuZ&K8xfG+?&h0A$iXJ_1?jr;=7M9 zKV+E36*a2auGg6F&vQpyfPb=Bmh94-Ox^D{9OiTH%T=RTI5XvRljVoqm(H)@SeTuh z#&$2Takb6*KJ?}MK1Yqmx!D1Km|Nmwm}X{;mLB#F9`lOxVCeKUTl4S~1U;T1sAFIq zDsK!4@*NVGU=bja@LG8jEy2-?{)E+H&6tpRGlHbi(x}n5j7+pn`g>T$5p}#8BbEBK z&-lE)RzdA2dky_{Zgs#gU>uks2lvPU8?0}DO4f$9IT=W!p&x|S)sX}J{r9-9v{c4` zff_xhUrRL_Xso(CZMc!7XVZ)kJ9lmy+PAfFjLuS!qmHGU!NHkFoVA+FO9&Xc(R()ABv61#4?%YiCiVi z>>nSS6Z6~jX_X{*VDhx-jd>Dcd8XI;=8D+TL#2frrB=Kq(eFp^At8q+ti0iPbLFt# z0$wdESnfpV+!}mR#;l!zXg{40YM^ z`|-PW73_*5Q%S#W&+cC?XU}C%eKVDl{xm%-|3&`mkk}BJX7B^~gCdu!6$KTeBO)qE z=;9O+VGKGGwDR!y!v{XC{Pf;4)cno5Lgt3++1H&{d|Kg^o0)r{HMF(5Tv&d4&(S@_ zQzUzestH|nb%2>>96G( zPT>y1m&&RO(r;pyG)SVg9829U<8vvDo~TNcye5TvA>A(ck~oR&@N>^?s=G z0PBF~?kz#h&1c>=zKMAQSZ@@QqL$4HTj8+c6mjmSwDt~KL2R_oGmVwL6Lx+168H79 z|2?O3D?_XHclWlx>bN%2a?{B%U)%AH*mmGtw{8;<;-KqG*Op34oJMiSW;~jkH}ERV zSxDnh^`ed$$@~tW{?Pro>r02k^1RnJ$&JAslFc*PqZstW3m~zhz2|c`!`X4}s==$D z6S^*ItL;JLLE0y4E7(ZZf9>lZ;NNZ-W#ehzt+8;8#wJk`;Y5!tYpcs8)>Z*7&N6E& zYpZ+vZLYq@Y$>JKVp>YFb#4m5?VCEP5_6lZh8o>-Wq)cLiUjv%@9s9 zKT(9iB<&su)4hXe5FX?N210mtL=g{S6+?X?j8(8VLKyQj=qkk0j=Dm4JEZG32)*9N z#z5$~i)w%{vu8)*-|Z9fY6!&(o)Ga6PBvRR5ke|s+;|L*cCdobgU;YU=xj^3g7}0$ zUkGqI#75Jo5RMs*Q6OgKPr=~W-~b2*nT;L;;ZXk}ObCNVV`Khqd_sr_!j<1otAa4+ zV80iH7q=;LFw6?w<<^_yVMDg!Lqm@S-lPMfV5k@+ z!n=EEXuLNzQ@@As<&1FD=)4n7IIOOsL)hxDHydJmR-=pS21&U%HsK6}_M0!5qX#Qo znvPISA`XB1?Fobn=S>Ml<4cYG4no|)!vnR=fH-DGh4>_5gaASt3}-=X5XA;ZPeQ=~ z1_6U1k!a;q2B&0^76>GF@`n0wHIY~sSOI4cYFcG<2ED?)I zLadP!gkIMplWXOQOQf!csR>IV8zi~1fV@0?s!#@iMyr!`>q(7PLP+vN;)XOLuN^3> z+8f%4D0yUL1863X^orU8v{CKyw!}P5WF!#qq67hLUb-;7Du7fLX6EHc3N@$r3L-x6 zQaxX%2f2B2gi+*xOv@`3=85Z7X_8Vko(lxR+%f?3Gnp)bWm0)lER7{kL=)cnntEog&(EF?0c`q3BXB?=;EqjF`nGgnpgd+&XL1@wre$~LN0^GW(0h->Buj! zer8G4^lHFJ$a+~wY53Yt<(;R|i~}Uu*LVIhX*43qf-*3m{aM~ck_JQ9{PI`SZxVw>Q$t9o#(t98 zKLDaI?D=n6)&QM40C9@JfS)%|Xa-WHwbPU}=<9PeJS~}9nwKosh?67LQA)Ky5~c*< z`t~c!@>GNxh*chFIK8sc0y7*{0wfr#Wz^Y14^ClouByH%u1d^{luOj@kx^-Ak(gk4 z83?K+h+AQH*SR^783G9)NxjPMk`Rg6{CA*9l1wDmg5GdFO84}lb&nL~`mk{AttPqG zk840l*UpsTKt{@hNKQG%NqZ!SNt`pasVc8YsnhBTt2CL-Xh}BMRW+z1lP{_4Qp)PV zrAvSWc%n+2!fVHS3Ar2)L`r=eAqVm@R;flOX=iCPT0PPpsQSk;Wk4=JMl0p=tM6AI z(rZ5EACIpds$dfICH_Gko7&gu;;I*)whOe!YXfujshF6e)yvFR>t$v zySmo~+TRp=t~wd~=u_~cM>E6cF4-KK{rkbOo5QmYe}m=z;2}XD6nZWH^7_BZE5b-S z8{EjhZ{KFwT5!E*(x#CsI7jC+n?K91KC)_vcF%{&ffcyh?Y1(-(=|^w45H2O_)}DB zao@kDqig5mGvQyCSOgY}?>%zweH5%L;|IH!J$eLsdmoj0J__C&{~@?Ee&!?K83D=x z&DX})Z0en#ab z@K9pbkCXlyQtGq4;IkRU484_TJv@1Mi^tw9S+`%E;=&0g~g`TiKnsB1zn%DHFUj5S#|9tf4qnG;-HYZHreB=+S ziq^YT@CUpM1z4y1$90D{q-?$Tsd7TVCwAZ6X(4I65g$%1YhU`sp?%NO!Hk#-f0e9n z@%!U`h32+;dCx`RF5PbVl9S7KtjTs9bIf;WZQL~O0Mi>dI{9*(eWy(x2$|05XZZjZ zXD_ak*YrvKm95~z+wJp2#`YqjW0`A$2XJ@v7<2HiL*fOXJWXm$3VU<+jZL+>T378_eRr_K;EMbu`RUi)3K|snC&~2T zhg-(9q=Tose|1$hJs2~x;KGF{&)ohOp+6EOMV%2voyidn{^+>e=kHH^gXygetT8bi zNo@V~z4OYSE_=%Q)Mw%NCiu;q1Hq}*I@j-a4@`P7rF>WU1NAOpWI|BI(Ye{N=f{uU zW7R!h{#|lU>Y!0y-i*JntK9))UhT+feNh+zT|}MW<;za^vNOWTW$b@T^O2Y^)c@+` z{ZEN;PwkSzMk4znG3qhu0F2& z`20TA&dr8zOI)m-y;_Tvlx$hqgPke8?@GLRM@%jqd9c0Y0qu^9K+RM%_-JM;2B;T1I=j4jN z`1pc!u;<%{_}H>1acvo+s88TJmznGXF6S82IJ<{qcN$XYlGVdlachww!iEt;6IlYx zgF2a>=t}aeETQiH$02ubm^E5E+nRm6Z`93mfc))Lf9V8T7$p?r(TSNf1{TAzyg^Bp zxZfz~UI1ATq{>^>4@StB_DFT?tK*;1*E6vEnz@BI+uJa!=$ z!oOs$E)X6tiuPhSju7!*@4b>C?2}(v2l2RN2-E-Yu4Ns9%Ry5QL)dkONC)_P2o<{s z-614O=rL3#irBULTf^8`vk?%EWepn*an^{T5X0DGFr4WLF}B$t95Q@7ARb^g2ts!b z*8_P?6rn1H^i6s1raH{oh@HYHJ?ViAC!n}$OIrnUK5 zL)_(uNC+*ajzD|#o9z&HJyQaqOZfFm5RcdW0O4sKo(5s`F$Nmyh@sZ45WbBbdko^o zgY6)^HuLZffYYpTjEd|b7=rc`4u*5EjT@1cAL%(r*(82=VoSJ8qt!?V4Jjsdk!ew7 zNG%`GOo$McmkAOZOG+a%O|DIwUGtmx!MQUi+`! z3lpg`Wqx#I;*IWl$502ny8kYt?AU0Pji9#pWp=L33E|b_6{9jVH;s3Wfn!_MUjFkp z-ZiMGTh&*l{POpVBu=c3s z>_4Zs@uwn7=27?J;`l$rMNbEw^R8FiEp>V~4B~_CymYuTljHQoe^dpsTGn$uzIZW0 zz;7Db{&vV#cI4f+&-U0%5ZZQ?*57Yn|OA-Z`8+84TN{2 z8=3HEyt9!L^&+oHQt^xH$rCS!UAbCrF_Cv}w2$QXa*yMpzktzo0&iO6@Q~S+KTSQ` zw^+F31@D@;!ffSKU}0%K(#Q*#Zehv!Ro}uAaq>qP4$ra9XId^;&dp!o$OiK!MMv2* zhSqTn2*t8%&1;P`112R&DoK$OIMVGK0Qs_xL@3^1q+TvY3PObM4MszixLn(BFwlAt zXn*~oOHR`JX>^7`T|}cIOm8eMHW;W>3PSe7J72x(A3*JqSz51Gs2#WbGui=zTb)8q z8urNREc*KyQmGNOKY)OJFj|q3(yT;{oR_91+S4Kvf$StxSVjO5t4Rw-Ox6(8c8RZv17tkjLXh!gwOirbtXHekCN`-))UN02a#Hwu zg+x-DmqJ!Wk;>%4+>Dd}LY1r*X`6Mzh8(r9tO^Lky;X^t!nTu=UiCKnq}5ck7Q?~s z;3Wtrz3kU5_tMpvxVDZO8>Vq2XB5nNDHrMG~&Z0(HBe=EXh+%8&Am2k_ zUiUyT*W=2P9VnSGL+>t|GKjhyCi}bJaJdNHD>%m^o zhMphXa6ja+z~=M>p-+MBF(|$H^G2$C%WVJe56+Y0eP-II7cv!?G}&!)e%N4-vrDw& z!1!0ZoY@~mnuyHFH5FUU+*U_7jLLVtIpMtP3zyqN7>aJD0_1c~EC_HJHn10_*ZWyl zfMU13mll5i-C^f-L1{c^ml!uZD}i%yA+e|uUKn%``iI6?>b>vTPPp%G|0Sc}u`ute z?c1mQ{5=l_&6+A+t8k;t`oZPu%uwR>a-qf3!)`w*-&&sEV>Q8SW>qWxG{(i@K;96G zpDWL@k1%nwXL{C+i%gs~$Gm=irq?3tjhxtpy0LpKCas6O_ZPY?rP2vdOWRqCmJy+? zp_wDxEdeZ~z6W@XgrvQ$M{9}Nhn7pPo12?EwQcwpv@+3prBg|UVIcNFw1mX*nY^?v zF|QZl`pcJ*T-1*uNUMKkHnq1OL(+9$zX2m3bPgXFFw#jn9W7Ef?W+M~F_>y&GS&_B zlhG1Z=o~`YPyI@vA{35RWxb|&jqu!y(AEzoSGj$`j!Abm++9_7?B3L!r9YM?-jOiU z_JyBO)c+`Vt#unY(0>ErIkz;sA9rN#tt>rPDgY(H=B;ANJI3h%G?e#6JbrD{(T;~KEk`G5R5v0=?MpOL!;8lRV$HEfkd z7&mn+igyDpV8M6vH0%6IuOvrit#(^Tw&g+DApxQ*6_H3B@VPf}$poxEc#8Ehho!oc z1T6lu?Bc1&%lCizdjM*4yUnw!za6jr-}^5)(16tEV-6I(VZHHuFkd;A+$5*GQM?(M z+3{oRtUZ5ZUnL$i92s+5c2qKY_mbV~gRbvZMU9&^_054dZw}l| zRq52=MJ?XK$!=8qq~=j79tU-xxOb|dSfv6G{9M*IW1e3Tu)-fD0UV*Jk)H< zT&Y64O4Bp#l=t0|(8<(BujAFD>%VXmT&mQE4+2;q>n_NaOvFC1yWRbLcy8Igj0GKXFo5 zXM4w^n8EIrbJT3Rg9rdA-N^DHoM81OX2}jK+pfP?tX$gRX~&8#~<{4Z5Lhm?K9PAWB2xW zI*m%Jr|GDPPwQHz&!=&gThgQR_gFdt8lA~Ps%Q+*DFjyL(BIehmB}c%jMfZ__8MsP z2Z)+P4@E#0E5qo_uU+{_IYg%ei3BkP(Pij>(CFg*7ldl7M;jpgsV_~3L7U7N2wylD znlOL>c7|Dr9I2uoe%*mo`R~e(;P{2}I1GG$8EMsjm5;<>%+yT~5^mr3e}}=?ZX+@s z%o~&RciU8&CmX^K7cB($U`$gV2o1W_&~aXmoK36$w!$F#u`)C33lziZ*=-K=}V#h_vHWAVK&OY4zD$ zWGQfQ{nkfdu?oVb#)qggbq7T+FqrcPlC`o#=80&uEXMF4+!itn2~_^eonJy2G-|?T z9G471a#(fxIAnUTp7IU}R4&`m*emX}CIL7q8^WWrx7>=IgrRoKEO|5xQs^uUa*?S5 zCon1>L&`uLS#+or8)N~%Ok-)wvH)-#vX|IQnoc1IskBH7di6c^!T?boo~soJ>vbsf zmMAr%#4<6_#v_3^O`+q3>19Zvuhr?qTiBB~RUi4A9<%ont;7Yhu zwz?VrlfxY$;C1xCp0BD->Scq zsjg3Ms1>eG&C=9NO_8@qGFZu^TKsF9UoF3^J%A`pywUJ|U{_M_HwHoX0Z;3n5R)M9 z!5}50a^LByx5}H}ojd$umexFZt3#;&BX(!iU%dOEbMKY>DA{k2eB+6*Y5n!JNYm73ptF07RKh@V zWwR{@FZFxcKWRGB)o`bQ>2YGMj|$+rdB5x z7y%-7E4!7?+%|+98T0EH5*m=M;;1}XzU7tu(;9g=Ycc?zySr9(JrY|!zG{4-)!I^7 zL)bNm$P|U4If-ONKp^p)n}oxL3%^6m`2GffxEXyk60)&jXeNwxKl^WC3 z#^lJOdt%^aJNU;b9gcCWmBM3Oi~o}olZFd{NC}T|o&Vo2qyL{&<|sD@((H(=T>zN8 ziIu0?2Ea-N09r(+6I%TTD-Wd?ww?*O;o~7W&Aw2xMalU$E6-H-zq9iGm4}M{&C2^% z-ZxgBv)w*eBu1}c1mH!b?PUR_+IopfpeFJ(Wo0UTnWi+ep|n0xuhs=N2+MGDD+n5)aY8d+@!QmD{U)_)POR6LmR5vu8VAls!wbX>p=6# zrp)HT`rcA)gDSU8ov5lWQ>nDt)?8L0PAHjq@yfVDer{qRp$y2IQzj^FD3g@>DTDHs zX(G!aOB2iTN+Y$ArBP+4ni{mc()#8{%3ic3^c3oIWra&o)1WD%c};F&-e;ApR9_}h zzfsEaKyF&z&W1c)kDO2et)6(N&(&3x^2)@e!m?CkH6#%+4^(zkemey&Pbt6(QdSr% zZ&m{2&n3J|0LVW~s6}CI!mR`Xg+zkBF}M*Re`|@T$o#ljrtNX!G4=8GA~@sCQf|iA z8ReBYx*k>*C7eX{PbQp7xPrnf33Uk;D6~j;Q@M6ISdm_tP&o_Ln^h@nv?Wl3wv8E$ zV^BB-xl@hJl}@P8sqzVmyHzSsTv2%zIe`401TPeNC9G|pI1`0F6VoD*`*=P%dO9B;Om3dJ03^hY8bO=+XAym#i(pY zJed=|?a0=GZ9{W%v*zTuE9`Q-6?~mGGD@wJL`D(nRFFoh1a|R4(k@K6ck6J4UrtaK z$a$FMwY6Ch<}}<+!XM%I&WY)$aPn|0amsa!;wMZgp2!<#=a><^*K% zwu%((IhhLT)(pi-ew9EZthFPB$##J`LL{UK6j6M+AcK>^UCmj8&*7i4kkA z$1!{!v{|}cb_2*?aXT!=B!}IKLtmh@E_6C;IbvlmL+5v>{yWwyRvAi{v6QTG6qd6t zjhmc7C4Ly{lb%tppepYEFw|`dx^RkHZ!fFY1!T@yAe%)rl%}vM8agl7BVVK6I#CV4$(Ow3^$`?f>#S<4=1B<7uMf(O# zuh$w6egM*0iR=RSL(x|k!|WahEJ0IovFJ5}gZT1X`o(^3_m@h>4QR<<`%l)-3){DV z&25Xgo39~l%x}b&v;2vujZnKU`xr&r(izze!FJx4ls2sl94FC2G5mXh zkR-&76pHCn19ZenX6&wd?J+Y2?3PM{51l%+w?a^X$RyTg7DKA$l}n|6WmoL2 zZS2gEO2g;8n}bKmrc0&cb7Hf%$CO1&W9Q1hKX$ZGE|mtZ$bWp=&e2gSb!<48_;68> zOe%GKIQ~KJQ!?`JE~b<>>`m%Tl1dj|%-R>*QQ#z%?wnzBd>3m7flH+!oHOjU%YHvf zrI*gS9$!ULFsbys(p~wxFMozKda>0E&ptgxD)l)dK1X}?r(P;O_l$UUQ!#IwRO+7i z^~jGmb|y-tFQ{j*tNat_;oI0RIls;hnk|j>SZuaogV|!Kl$~Af01TA8~l?uN&Ih+S*Uo{^-)y)zo}#q~3d6Q&U&>(0w4P=AID8IYV5ZgLP|cmD!3Qjb2x@YY{js_ z0u19dV;EI~VM5fOS(sxW8^btxIKFuchW(g_@?O2fupG+YH)ff5X6WM%L_x!7 z=wk(Bu|Q&y>4zdXPDOK_N+pn;*v^z?dQzBDk2qfGWiPFfIH}mHhEON$s6jGP>#;cy za(*4BMFQrAACVo&t6~yjs%;OBS%$;v^8GnA$kJUrS+<6sAP+GV1 zLJ0RQShL~pI~*vhg)l!M7TI9Nc)AIYRmR=h#RfIv%tw-zjjbgjRhe^nmdHfIW+R~! zkzg4RGN@eCE{#S-XNDOAjTExI&{<3zrZ%VIIE^Y0?1M)Oa!(>0r7lcrkkrSOs?>x= zTNczHu2-s6Wq4_s#wz!a4(Jc&)hnA3KB~_a)}0LHAJAkOjp+6 zhX7Wv?sXn3QLgV{0$y9syRhCw)jPXWWs1_AAjze89-bpQ9w`&2%2Uh4dTo0tz$3My zfLu*(J5MOcm9+puC01*RFd;~k<)yGxgkB|(h$N|PdWoP-+*XpSQh2rG5Grrxr9eV_ zQl@Vbu)K3YYMMkRlknSm=cGlQl1sEgMBYkN3Gh<2P#2J@S7{NkLyqX;h|mE5sZonb zVY@n4B4~&LGR?L|8p1ua#=eB$gz^7iCNYXz7AO(!Q5N(z?m$3nN238bfII?r%TUHL zziBj5h>bz7H5A=zA!8P$dk42Ne%hg ziss(CuzzQlcrs_hmpIaBPEOim_u>zJXE&qca|fksw7qWg=q54t!yxjMPH(%hK#m>c4`x>1H$n%NxiFb|mO;^h_P;p!9NVehwY#e;O- znfEE@e$}oRvgHY1e>mue1MFAKCjnoapxD|?iqVf^c)t-xA6S@PSWyF{H9)G~r~!&K zpdghm7Q(%M3o)`uBa#wBsZmZWM`D@N2S-g>T53+tV1;{*pQ1IbG}S6cl11Ap&RSD1 zOBBn1I`ngGgGj|AMKYB-QJk1a$^t|WbH?IKjwGu&pgmEg(gnyxLW#CF>ZG_KbwseF z@KR)+EJb_jHPfkW?}ipUmNlF8YhEkamKsooNJ}O{BB@qI3Q`GGZaiP?t!&UUbJPmX z)`MB8>UZ_;WGqQMp%&-?C@WQ~fQ%sZq(nfbrAD;Y@>+9`^K|Zxs*>Stx{Ol|8E7#C z61SRCMRBP$&z42{S!Et7tm=x%D>?XjS*g>d3hK!i+UmVMm%OO$vNr3xX-R&8X}U*T z@3ABHx)E9ggEVfxDpn|H=&LG#JQKy2vV2h7hqd(PDg{uizRAxzcoW<_l*LhWZo{(M z6v%KFYR@`~pwv;8eduC^VB4-x5So`=qV353l>T+YM%5JO+2f{aP;GN)ws(WAEX^_Vl|_iHnV~r1RqXRxm_N# z>Dq${fmtg$hosldbl5rc*Zq55Bp1HZ#O-oCu_O8E&mHN^4PUhnv!|VzlIErQ>da1X zoAS2Ce3vL?zwgq@6UQr#T-m;1p3}QOx;p}!Hvd+(YtzH!zb&uU{Pemc2t>ez(Z`sc*^voir&>=&cwb(u( z)ZSYW6W8I`o1S z&w9EQ-NDL+?ZC6*Ign`g{#y6-%uhC!mNs@@jnSPwy*+&*YX?UMSAt(ud>UEujo1K= zj2U&@a26VoIxbC)sDvP^mPH~ZA_&b24Xvx6R)@@*0|wGSVmMl05)fvntGh=-_7apG z8XAh;pd>&_1%!9H_IIb$?3*c-R>d!#vx!&5kxI7;#olpItXQekdgc!i1wWoXEtMWD zA@Z}|8Zt@RG9|xI=VZmK>5n~?Y(+2~MW1VV+uD|}Mqk<()U(Zgh4K2KKo@$>5}$gnCo!!ESUyi`{e9eH z^08Ffq}is)U;TA8!jM_PSx%xY$OvV`w+uU?t*$=3Y1S+6)gPZ*7IWt$ANsoFG)}zq zy-@X%`&cIl}T9*^8}YS6vfVbK?=Qq2P>vP9v9Jhwnc9z8R7j;x?mK73Ph;&w+QFm`B zYa!LocL*(9&}}^0+tu4~!Qal=)-|a6(!|Hv6Hvg=%t?6=F0l@{k3JI+@m3Q(8WTbXGbRFhz7|YGz8A6R(KwvJ@WG%t!yPe=Fd72C zR4TG)2)QOaC^W+mz1|l61(4kYLnVluV}St*b2%9GB z!;wX0eC{18dj7=FH*+DpAe*3o@Cl?L&>6_1AkgW>#LxwhNl8MNB~cLlhsmJ%K*(b; zMx%TN>pHSDNKg-KS#)$B#HG_sT`;M8p%jsdHbg`rGk}%9JF+sYSmo)5p>L;g9t6%j zu^6FMc`oAIYl+AxUY;VOJy)F>rqLogO~->w&nG$N#`6Urng!=$g2 zlNz8F2M9D`5Fiod302yjj2vZ40Ff7%R@%-J$?;q@(k~JcQl1Oy#cFkfMBE?{^JHWj zV*83T4XO;i7V!m2>t~m;!qIn$YW!hCl&&ElmUk%XgZLOKtWa9(v}Iy4SD34d2W3%O z31A`;5gA$EKx!pqZZ0A*l?i#`285W?+T_|)VW~u{6KHfg4M_+S(H93AWP8ydg9}N> zbP_=55=pI=Kx`;6A!-oIH5#!TDNTvGsJUl}&yJH7H<}qlX0r@2^yVsjqb{G#EjV{J zvZy&F?a=x3vB|tyek-Sjd>l7zd+_rtb}n;$?^C2zEVM@Z8#;gRnvkzy>Pj-2upTBOuy{$~&RrT1gd;75b z1=;UbRjzq_!f(|u^Q&IvkI(l_89wvT#t^0J#OYs_bnbcC$b0|duC1H=Kuh7r5JtY}{Q3v)#RXTOq^N z+uQ;_<5dup&pKtl*shg3dgzxEpY09}`i)=gS;E}!@R#@TKeuF4@A0A9dEpar%kZMEb3s}d@Ia} z3mHyaN8BmeitRMjd7WsjdGfI7?1|pIiL1wBt~rZlLNpSVOpmg-aTew~W=UKF_Fp-P z6~~m$iM7~U6v{kgISa1pe33_?f-9UCF-gGS(Fp_=P1Eh-VM|u~! z9mXILPly&uV@K58zlV7J1BfVj52*$ao8LtF7wbhLS zw^TN`IWdeE@6{5hOHFLbs3Om>R#U^ubJl|mBqy)m``Kzf@$h=w>zuoJ!F#>h6^dKo zGXAAn*;bB+*L6t?GiN}tCdWz96QRuL3cH>eUz@DYQ>1zca~u_`b9%B$2pLlRC(6YF zHTvd-C*~n2EZ2rJOCteK8=yHmmn6=vFTuZ&=mxw+|O+>qkLrdMPd$U&bevn*Un(VN7 z??97Z=bS|y-NOQB%zOAQbklFkW91!X(J2oJ-_n{ZyDlC%vE8|H|M3|Ko2SHrwALcx zRr&8#_l7cAeyq)`R2Jua`L*rmYp%_$avJ)HI9J|;@;0Ng&-u4wL5%kJUk~%n=q=h* zt)XKSeN%Sq8g3Pq;vITVAq{oTuiAdgZ-Ugyv5nLwT(JA;S$fjLXwS3XOKjZDL?!ng@Ln#Q_^`#y4lP z9N0XT12cwY!3?xDgDf*H2bfuKatZWbHv+ABRvy-Ddk{aMktiH=V5d=4>Pxc0z< zI)&juAIk8dub{h``7s8uy?~H5oaM$zW%$yEG2H2l^K$gxVu%ZT-}&ZMV>a>HMfP*) zMJ0X~xf^GBiKfU(1LPO-M=N)389Qm)duzIYY73o1xfpMhg^=fE=E5VK8GLgKTNf*? zMX31{Mkp^38^d&V8gJvuokLBgC2^+m=1{}jLfK}hBk5){vDw)7)DW9^O0-)rGo0Z{ zUq_n>q|^k2QGL-njsk9dMT{O&p{R)<4Rtm3HKdV5-^cWaA{0vw?;;t~heu}ZSv))E zBzFAhN!rhZMS*Dc;D}+<8ZXP@_=l)7qZRnUo!2Pk^y8W+?^%kJw#rXY*D6LZ4z%X{ zen%DjU_Ud0IWcPG3Rc{aFVa08iz@^d z_&e*4&UZhv{dy>*u{O!a)}go^mL z?{1S7%(*vhOz9-Dzi|AIh#zv;Iwgt5Bu$6sF3*_npj-B`;|8!jgx#9Ef zmyeBv?mPF-o0aPqXp6r0m^FUF_LeQ=_blt)_aB&>yoOJ7NL^B-RF-aO`H?d8yP-{G z$MhcQI1w9b`>!In7E*i6P51lOU^T=U+9L5o<@UbyI0cj51V-4X~`ZmEVz65-^)K-P@ALzc6V3z zef)d#`wu9aCt^zmyOX^rGWcD$rFyXZNmA>&w;g78sZ1K=K?|o1LAwus$f;24^Q-MX z4En(TkPyGa0TU>d_B3m%!fKdRSLC44`RcAeg6s?0O!~O|_nmwR$MCk*%;u1TLBki& zZAtH12l~Nd?+7Pn4pd(K6LTN#WXl(_X+p9SnFHEPXH|FSZ%!zi!?8n+@3W_rPATmTM2VUQKKYAz&&Jkode{F#*Gyv$kUx@pIkpaJ|F|bWaI`=7?dQ3V z{w$<0Faqb|NhIDDs*Eg=VoTnYOx9R@LSQEOnjXAGUReCb`Y1#HFB`HtMyvM zY!sUa#23g*no!ldGggx12R`T>QndM1{y`%(}st1aTPL=!Dy5qDijqT-J{Dl2iIg&l&GXN+I*2bPb$_M z)kq$ym#f84%Ar%??}}C(@+!(W=$_nQ9N3w5^>&vcLtdov9P)rw_x`Sb`|5>gVfC2z ze@}ml|2o&PAYcmZ%enxG$JqNjT+U9cxmPrzZPSA#sx2>f%9jMN!j_dD@!mYu=<}%D z3-Yd7sXSPr9MKAD_~o3ay6UAjH5JZZzaW7l6c{W(oj zzUGK`pKF`VFPg1kgO)@d&&o=2OM091D9IQwRsUOStzb;i0zpDDid+@ZWOF0SDG{5l_Yj>TItMijSeZ_ z@LR~|OACN%l{4Vu*F5kAoa?u5S62^!d6r_1jMCIuMieaxl5G4^P0jX;7i+Iq7<=Dn zQXM^LGTxh}j$~a=%22gEM{Bd{=T^*i~`iQgkm)`kb{q{aIE~I#fmi=bcbsryLR0cazX-rP zwCGCdZO1cZn`d|uw@jX*qtUO?CH3NGE1svX*tG3khxd@`^IKih6SY6H6!WcAwfoZ& zrb-1%9?diFO?o)z+NACAgX|A%;SG7olckWN$Ntb>>Jd35w?48zH#BmM4X$-;!aGid zm5wE4ZtT1o+THl_NReiFJ!hYOfgj%caRQ~7^rjCeL+Iy?<5@cQCZv}WPsO3&Pl zb4{lPR!zTOU;0yu8QEFjzWzqi;b2|Dj0qDYJ0;x6@r~`)OVTyhcig!a)~D@CKafQB zS0VdW_8(X|hgVf&eP_OHv`zJr`n~I4;&UoD3>8hKCX2%DzLk32wUP6e=we7mRE{!5*BOA*-?LBB7OOX=-L@HL zH_|piAoHH)7w*(M+imFWv=VX{mj@w~zhvhIwK&_k1iFs#T<99*ohXpYf?Y;AT4Mwr zkBiuXtBn_ik$Af?F>Xy`3$2mDB&ePsL@l=rze9SXubNz&JJ4Sp8Ch!{h^bZ}W`zJu zD}4ieFthY4U;q~0JKe|T%;Ft6Icq_|@dsINQjGHh_r;ZtV@x^<9gf?>bH~NitgKbK ztlYS|*va|>_`n949dmnrPVS;x5d*T5Uub_j0v$s-;-f)|dVHyyE)$POecBXH4|d;Vj;dtHv* z;BT6b|FOs_ea}AcBW1`&7}*<&d|$nYxNBJ3iWleo^|u}+G$kDOKRmWFt)F5i_JX0I zt^P|h%4bJyPTKx(Z*tPi3o#XHG^V+Il^5g|_;+6NpUsMoe^P{8Kz@BJ@52wd{P|nT zv^9I*3vRLi5+{#ZIcjPYn>`hs8|`*^lFhgybMWD=tru4Bp&VeCehT?xwcPK#i%Vpu z$LrUtKmA@&~lvG1s#ygCMLgLp~DV$suU2hZNv zaAwLjy!^n_Hmk+$H8VGDMzlyV5{-=i5ct=P{L+M^o2`2UJ?|H}Om|r*iwRcBH%IMB z(I=1x?&o9M)4|m3;jM#ilpRV?4{LX&uLOm1!*XC<=VIP!3@hU-0>~W4aTp7!%!F0L zL5^I%v<#Y4eCGIK*oU8^u3^}ztTYiMF>kMP0qnfB$_Yjuz&jl@6bO8iNeO2 zp%dfcmDU!Y1)RQqt!n{e!q=m-m}dd8A&*W}fV*1{wEGX_vU~!;T)^`DV;^jY<%okZ zo@8YMk}p8F6_t<-yTwTGdWc8f0qpg%VZsjimdx3;px1V52(Sh*M&PiS`kK+O z4=R{#p_3&(P64lyH5?DsQg?}3!Il^t457g?l(f*uUlA86QCkMz4RWmrMl#K2C{~c` z%{q}9QRoqk7?PccPN9Mfrn)>|C00n;Dn&*Etf*Iu^7B=Vc~F(1m7B|nYf289$?D~t#X{KIz58Y5DohlUi`7htBwAUDWWdX-wEg(673v7{tFUzC?` zmMP47vBHpNzK~y@2NWyH%oEER6h$iqvbfk6XsjyMq(ub5<&9d1hQ?|eHJQ@9%nYO2 zfH#6eRi7_4H|J<8L@6u8rr7Z>M;Z3zkBXJ6jlIPUIy_d!j#Z1|^z4!~8EC$?F093k zU4gdc7Nia6b;J7$FFcq$^TGakp*|@~79+bBPx3GOv+z@4qesI7y=aw#Ysc^Dd?9i2(+8JYmc{K7opTuNzbd|f6Z>F%Fd?Pq zPru@Z2Z?2>C7*YBJhz4FPyW+;)>j!gEEl|mVJGnP>O?sNJ%BqOFGCYJRYeJyC$92vdy5S2| znkjFTZ~e1;|Hq=0Rx$o6kK1-D6fc6;UG@+Dys>>)`Jy4SYEHHL9}$dpa&QY0@!e!j zm|LvK&iNf1<&an$4ux%NGlIqBL`x)WlJ!WdXzEBt04sT&y+9jIjz)No<2y$4pM?!OK1| zX8B-~3B z{yUJg^q-Q5)(;kKyl*beK2^W!M8d#?SxL8o+zMW=f0$B)AdM3uIe@*4H^agYPUtAk zSV*b7X3j4veY$ox^XHU@$ti1dH*RdaIm!~-HswA4x!mwTWmH%sV)pP$(`&S)3guXNafDV< zRLmFRbPkP89mGiC5&0N&KeIUmZa9a`J>w?#lDI{AcuK}NoECaW-JF~x!}!yL^H>S? zainoPO3ZJBMDU{~36a);@KkJ}bC?v^aHx zipsz_-;-C_OG1+e$sA^T?Mv22KAy5+Dh?xMWgy;aEUHrii2&(KeO-1WoHa()=2n}{ z{^ws@3i0*z?t*SdJGYRW?1aJB!h3%GC7^KR{!XL^Q6t|Wf!ot}sO~MDz$S1Gor>{) zVFf88WJxi5Om17TN3|VyZCuwQ+A~d~M5Hf$r>j_*Qv|slj8syNJ z4R0?j8NHHT+rUoZgQt5HR80T^o@38+r4W!r&B$;%x#P_n=35>Zg1Iatd+ZU&>2bYHwGUu+-;9)2rEk05Z--z96YnPku3_l|KD$3Cr`C?AL{x zp$>ffxvM{(J%{}0c<4&!twZ-aAHsdIMK;EXQxAW6Bs-NhWyufThnC~Z1n2kJadMgt z&u&O4@mUEQn++SC@4My04%*%wqoWYR=jk(Y{)U|=Y~In>9aH`D0_M!4FZ2;_@@|g3 zyFA~n+-3T(yTA3!ezNUD)L&ZTMs4w--xhn-bmox%PFecbwgU&Q*O1Os0@oJ9cIP^X zX5anju3^la^eTK%JbMxzBEHx$D04v~kn!ZwHm8iwySRPFrXO_D9$S;Y;mQ)d#^3+= z!d=HY-qm&Rc_ao$%42g#pxpKZzBd`UC>KQ?5L5Tzdu8V~vAOfIOzLjZREjG*kkUN} zmY1V^{+xn21>MT-E?YbH)2=pC_kELzjR|ep%#MzCHn;=S7}}BS9Xjf6zj4MWLY`=l zyGKJqy}^AD*-b?8baitf8y@$)m5AuJqNxmsmui`xxaUu-jr%Uj+5VkT4cX@byJ7xS&k9DMblV8G^aN+sqB9)hCRN zKzRwl6^Eb&0PnZMquF@L09z^aQ5be;8j%E2>#cfFYH!s6PZBL=0|J>g4?=!{1khDk z4m?0wI?D>~w`M1SKY&V~1oqXqsXKtdiPUj`j^pK_p!|*_jE93e0^n`&B47w8wjdsV zy@{hlxcyZ~{w6vr6qdB2rAAT%0uua#FVJV1A39(|G!%G0pqmW(D{tWpU|I%mE}S2b z89bm_G6Q`G-yNp;2p~RU|ebkTZ%i zu4slHl5zyHQyR!Hp?Wh?qSKZjT6QC%lY?_Xqf?km6b4+Q5@}RwxGgsW5aY0*2MC1~ z^?HLD(dAXh%3~|?wMa>Mxwb{qAaB{zjI?-^*BUDtjExNq6=3L9i7N8orx{p`?905K zk9MFH@;CrsX@@!^&LYMdj0%InSkk=5Bu7;$eT60yl~x#`alJ)gxET8>&qx>2J!3tK zXfSdoe^J3Mk8V^O5)gSFBr3IF-$k{G5@SBxZ-8f0VFt^EP9xUJMLMw_SAZF}|eU?y0f)Rp9&lu-4;;>(uM2D;Kfr%kV-|To@G)y(MP1?FrI`<|z=P?q5d=1t02}RsjU!32 zs#mbHdf4d?u=6AOA572bkB8dTJ-_^8Vp>pd&Wx0h8#|)Y-r%OQ^Tu>qCEZTCm!wGw zXj-~=T=^HLy?qO|MrFCRsgjN-4L9v?pKiR~Izo?w18iX1>l;vnW}hTTTC#Khmx3i< zn$aV>?$2etNN=t3ullpaN)VyU*Pp@k(DZQ4;7^II8eV`9Mbzq?ot}LfKo5Xg5^>obOoV}a5j3Tu0>*E5^43Sx^ z5Uhmn#X^0M+{l(1#q3N4qSDA?Gc@cxkxmqwr%;IiKNX5bw!-q}lV@s8CP9L%1lOQK z!OBmH;1#h74Lv7==9#a{6alA}gX=an7A-NsS%{DNUJAR0nJQW-d{Ic|<}tHxapS5} zBDJo;wTwb$A4AJb(7cWwhn(#w>N*^d=tE=QV?;93<4^33k-UyX9S=vEF%|q#`AITF zQYR_G>R`DMn*nFy_yPJWx(Z{!9mBCF^cebn`f6;AZr$UL;itnF!)3G1?r}7>8t#vw z8(Xk{wD8~=un`0{RsC zw_Ao5H@A-u-(q+4p}%TdF+~!e# z<2>inypHB6dTaq!{sl6kAunAVg%^gDb=ON@G8tf(^$<)GdJ9^Z99YK5jJ|yzdf?Z+ zcS1cU*v1_Tb1tr%`^Sr67e`ID!82zGlS6DC1o zVvJ^?mmo>#3Cm2z3)$_iBfb{}4w4ta$@VdBdpMhI`=*|@$s6PzqjeKJt`y(F){nj} zFwj?()d>r5=^XcXfxv!wm`1o~Sg!vsLnXW^L;nzl2{wvFK+mqObcvVCR+QoD&m=G& zLr&`n%HxVq6mzh#!Q6N-4#IS1gfYpCWj2BA5vV^FOqYQ@(TA1H9L^wWroqQowgUJT zf>NMoSiWkvHdGIg$zbY%GA|sk7inlvD!ZN@54dlAB_ckGHn2%|W4Z%CqjmnAg*_QOXxRH5am?YT}g%-oeI(?M#@bDMIT_4Yi zSC;lzH|)Qd`H**Hf3TxtS&3h|_S&Ir{2^|%wo)w=BrjwQI@vxVL}_k%@{w?SN!jm- zhd%cdS5~%d*sR@F5A(Dvd4KEXlnY(?p-nbOF^TaSLroM*4 zRP|i4exX0NE$rQZO}Wfx^kS>g?4hITV@^#^LJlArqCE_ayIF;!3^th;AH}odl5Kg) zD2z|%&@rybWXgBVhBgnjt7sItYneLV)M)1#r9`;`8xEZxrF0V8lDUJ#@k(1Fn}LQ~ zb)qGyUMF8?*VVo4=Q8PR9*0ln^e^Y~NLEl#AmWgTwzqHh*9nAt zTa3)}u&ryYZQzF6K86hr`|5lR1BuiU>k6>^hgnPlmisMN1jH9W49F9NQ3k-C zHDIV8Af#28Kism+76V6!@4l434JBl6zzCYGT);_BE2zCDS$hyLT23~GZ6I#ULb2_6 zmkDSp@E&~X0JUY5`oW>lY*QD(<`~W(y=K!0K%U}l8{fk{Z1KTwhX~|mal-<~!ooMa z1iJuu4=ndvt|0#lcx!3T_=Z>VU&I&69&qIG5j4@?0h zM;^RjXSls^G#wo5Z&>H2#v4#DPUd-8>MbmZu=4E&IAR-zo^Cj9Yt|(Utz(1YOLS)d zkP=9o(QuIQpxj!sXcS9^4vrK`M~D<_kY7P8CXz|;G7;gYMuVUm3>{G!WXoY%)Znl9 zjFKWOsV^ot?hPw6dU=UKWB%%rm4itZhCX$`mPWh;QH#t!%QYf}8rO(Qv@k+%uE!xv zB7z9KMXANjFRp;hio+Igvq-BmYmFspy-uz`^dRx-;WJaAkF7A4OY`FLdf=}UvTC6pgjUu!`uGM9zWoAg=HyY)J zJVYgfjDIYYY&VpvaDZLu;V=_~xY*hXQ#t!yN=}|AzpkmgsL!ZxkhRF0)y6%|A1l=5 zii(mFU4zsDq_|jPIV3$47c}VYA5;`F3P$tX+p7i3=d!0BXiJy&ym+PjSSJ&`3w&I| zNT0_!duVH=$DtdQbVH9Qdyxaj+e29+n)336AO6~z;ZvaJm;F7$&v71S@wLJ;59|v^ z7DfiVJXi2wcMoUctiaY0e0@}vU)7x@yPD_k{PN`lYkxZRNcFw@z=q{j_p6>6@z(LC z>+R}+{jYQM-l?g;lKudiNcjRM_ogpovo$$*k&RlEFuwHr0pRJLnETh?1w&gJ#2yu~`_J6lTQvjt~ZdWQn~ z-`I+!pcE~upx&RN7wTxOoPL|#j>TK=;!Zava)+x++zaRVF?gWDXxCgIxx@&6KoX5WWOO%5?iZT6moz6awo7O5G-|keQ+Mk zN60WM2Z`OrWP3!X?%C$H6rcWR4-8{`YG6#y6_{Hu)+VQ(YUPzgyVf!W->OOVbnQ#M zkjPDoludUyxqg$1saxB$Oz-BHX>%p^=~Akfy*CtI$sx*irbAvfV1Qj-)VS=Lw= zX_j<_kG8fc{^7;a%0CB!A9k!Qx;lNqIntRQ9`}04ZoWKYvJdS`PhU@V z*ZVH6+pOWTA+kYqACfC2kl;u4A%>A;rIH z1V?*1{;zfL*`GXzer*`5$HzQ9e! za4meD1wamhY+h68_MazDk4YZaPxvysT)>&F7G&R7{pb;UmefD_bBq*eMi!5kNJ47z z6W(sf>*=vdDP+MEmUuUlb)Bv> zCwFg|SzJ>7arcr>znhi!a!a>;sf_;nCsNOorL%1K?f3#Zt^Kc%;Dtj6**PydO6NK3 zBOW@u;i#WZt5jayPuPU#L1!%xbSDrTY_DHl2%d13tFwj*H4pEHE%M;$}` z29Kwjgr{Ia6IJ5(7@sBb+3nQA%Yz5G(j-33NJwSuW62g@l2+ zNU*jBsFj6Ts*f>(Gz^@k1Yh7?76E02L7((j`2E^t0E7K+Eo5qcMGqcP8&FEgtg1>2 z584et55P_$4ge`yw;H$*71?gUu=zyP3EZYRGvOX4Km0I+)`)Z#f?1}d=_%v@A!lve zkc|;?*qfr_mGR)B19XJIm4yo}vZ`g-QgZ+XSpw-l%a(#Tpwh3v`;UR(V`bF z3>t3HBBLix3qccCY8$}hdMr;|B4W$(HPTq9oD;J}AbytXMIsF-v>@JU4IQXnqc71L z;g?T?z$bNy7MiaNB2bgmqVkFcbvat0HJ6CsJ_Oa7D|DI+eVkckfX{2O79J0FLUb@;a(c7tXDEYJPouT-igwzMl#Us+Iu; zMgj)<0uqk8>#>dnh^V1+Ti5Hat(=)iy~(___440$bMH?6|Jc%kmZ^7}?zaAmLzlv~ zT7X%d%C5KLzeare3axvS3X_ulFW}zaSGA%_AMnZo!e@OaigSPP(&$e;SX21>g=0%x z=her#76v|eHFi3u(AnhgP<66SQPo+MJNt*qL9=rzXF|D_qV8nX^FgKlKGCk6mIp%% z&2y`p|EvmFA}(C@fO=ni7DQG2+*R+FdhNujoGq}kmH#NPL`H*s0@H=<9!0#B%jB@` z2>ltI;09#VDU<_L2bzW~pbRHFkroi+kpE#Lcvy)}q-|7SOL`0~8i|1+P6cH&*@1NC ze;mrdI5I{e)r0a2(~;$2gWIz`P$598BionCrZw9mBEBQV2>@3#(;0EHvaw-2^Isl3 z)_+ZKVu`0h1`yf~T!y`@8_V@|!_-*yu5ONy#TN6^~v^>-!qHJ~% zlf_~?(456E0!%1H$K0||@;wY|M0P?YMv^tF&1#*@r+iWx%& zED29$jyiihBMxoOL2?!B3xJ%hXf$Y<8d0s#EY`||A!6x#$5YZcTqI^^;09d==$|^H zx};GU+tu2TsWXd>aSb>$t(B|wCdW2u%*t}9Xhlk1KKNS8^UE{KGffIz;(VGkCz>Yu z)U2ETu{p#b&lIm^=o`_3Y*bx>gm}iDnp41NWzu?&cFXYcm>1F)g)QBIvbEruL9dMY zNP4}kFfqrJ8_i9N0glFx%5#|6iCG2NI)LmNfNXkBQFdw$I~PsJIAs(TN8ii(m|KGI z3WD{d?r4yI)tcUM!AMQlsg6t1G@r#)Cutohnr{Nc&TNVXs>=YvQ_%zHhk*FT0`Uz3 z0(=4l=+^ODm$ltH-Y$kI7w-Gx zANY2Gl^14s0hnK#<^UU^{vV~aJ{f_XEmo+%sl0zC>>0ckqErkAaoM2 zgu?}8dd-k%>7QwFg7?1O*sop-xa)`ElO(d_&q^N$Z^56kjiN0_JY7loCA2+L2O{vm zH3E^0ZKn<0Ylnv~;m&Yox||J~sIuvr4X_%@cXe}P@r6SHRw=Sff$u+Hi&%h`WzF$} zooD|Kfa%i!fSF7dBNQMx7+efuDwjf|$?&ff9Yl44)QyCa{tsa*;FOO~b*6krkdZ9p zEu!)$W5CwHwRWQX-us&2M6gD7IWbW88=ADboiK$11*|uUq>HDFP zz`yEt=%nw?S3R%#u5}S{^NHz56VmZE=uE(@-S)NZ6A5!3mn^$znU%^Tw`=r^_k;d) z53s2kzRzoj4Kfi~k-h!H7v`J-0l03X#-Agqdip1Qh&GgMsB4>bLa6Ft%$h5F)QBJT zn52rH8TW~N5!RDiOA6j?q<#1s*^RvJVmF`6b&Hvz?H*De@UZFwauZoIYl7pNj)Jp# zv*jtXPPt494E!ksS1OIy2SvFUet4}k(=$D@E;ytgp>Z7#kPaTvobcC|YyyBCt7Zvb zX%<>pzcL1gEC_Och&)9u9<2OOu=w*IO`FQLe?AlQOa|#)&BeAnVrSQl_?5Rl;D1Sy zC&1j;r@|@GDXXzfo>oq})Y@wd4$_5iqlQ{*Sc|2fqRa8*i|Cff^GF&pca>Kn>*nWs z0m%1A)U%+)s^_F9Tcu-5>d}~O2UR^AV*Wlj!lv;+>62P%^Rvf`dtkL`HxJ)qtr?$K zgR~%v*%d>Ej9Nk;WfL^IA^K#pGZ;P=u6EosVK^FHl2n$YRQfS(xe;O+U#U#?oXDN! zNfMj%CS2VWNg9ocJt=d#A`!H!8na(oy|ns$sVQH8e%JZFv#HzE4ZzEBKY!1k?0sRgeqh{T@Y6o~IKHFjsoQB*Q2vdolk zLL*7Sh&GZ2HDz`$jj-=tiknQ`U7bz5p=@8aecju){Q(|Hd>)@e=HCWA*pWNLYo5SX z@C|p_C%&SoWx@_3#~(mUF=8Vm@zJ%n6G2E7o&rUZTqOpncE{{%5^&9y=Yk?BKD`T| zch<0CR|^tr4@0{_$t}=y-S&k-1Hy4!R0EJaaL~oFi?6cnKYA{B2bfF*1*B!d=r{{# zkifK1FT)BxkYKc(POze*C{$3PG&+jWtzad(1&!&}-wt+jQO;(NZ?m&NeZ>l%T1fF; zGY}-r24L?80>c)=rY|P2LH~4~zKQ^?0^)_+;M*+mdT>A3@BIao(|eOaJC;pq0;|EV zKiPp}A`jG1OjNvz2!{#>3q1Q@Wf!xu`sSehCXaqYVz>w3O#^m&iscw7U-|gIE5LEW z%l2ir6|{Xl$36vO*paJS;8o>#{SA8ux}6OuPquczu%ovUBXE2orYYm0+RGa15x~8xfn$Z=ek>vaCXcZQ zx-elL3jGgYiGY|Lq}fo+S`KB^L*>>e^p#l-^Q+aiQ51)O_G#SHC^D?PXwGY-d!lHp zBH#4FQ_hCam)Im1XQ&!0GBd@}5*Xw!%wy+I(M#iGY@-|sgTN5bXdIV^onF5X6*f7)ed?_0eWqOeciVwgsn_-ZR4+M*?hqT5h@X%)F0V1>a2xU5j zCNnx;Ey^g7iZ$$fg&L|7pqo!>#1L|>vc%H@!NGbmJMH7+(A4G1De^zu9{Ta(}T zpYixuK-Au{kN+LK-y1G_eIHnM*}n$)e*@+{Z!rYi{GTCU9k6k~p1Se|{aWkAI_~8I ziD@^p+ka8vPbcSvu4&hb)^HZI4w zZ2{Kf$6%Ls3)-|^jt z7Yk;N3H^M0+y_M(M8WS+Xa3g(tFn({#E{&mVH6p1hdz}ujhILq!JdpnJC0@h(}JvL zfyK6*5=t3lABqWCZoIiHo{b!=xW9<(+yb4zsw-l(kxX5rDlyqh?Tn@tS9kt<&? zi}U8l#UW?2WqzTTHWpl8GMO=q_l036B(jiYgk#7I68+0SzseMlDTc4Uz7_XrB$(fj zW|`~o3#2l^M;NKFs%|lp`p8HmOzi+=Lf<871H$qIDYBgEFnVx823?ORJGLBi4)|&SP8sKHyG`C!|8x)(mZHMy;*SJ#rl80K;l6f&x zBS^{Ap)!L`9G6yVF0T;9sTx1xHF}XpoQFo1SX2?)p@+FdFBBP6hL1j( z%~RI4ox0GqZOK2Q^p7QnBA>ps`!=G#=%at-b5;6I+XuP$l~v=F-B~*;C5_tqHY2XCZQAs52ZyNY*c&*`>#Op6yKzif z8F&=z{_!h>fOp|MD906`DDNKkG<}lQX{}_|n5*YXk7(W4d=<5J;maqoqhW7mzAqZ{ zCK(UMC)_TcxX`hZ&OXuJY0jghCQ}Q0{v&V<6muQDt z^QJh(OT|KWw>^1nVp7@o;adWT^f5}7^r6s~CkxHvtoLS5{nfGD<-_zL6!)*PF9ve( z5Q2>8g#?1nGY|VUwovq8%0GLLguq zYZf6_Uu4hB3>s6eic*Hm1O8c#w~zs88_+gt*(v){Wr3< zPY*_(UNaI$w16^^3_~Ta9tVG)* z9*4WS2GkZLF1+sd}mCiC?2_-RQK`!dgM&yaNY8@3CdIXH~ZeN(wuzRK#xJx=$!zXTW7?_m3+TP>Pd99U-aW-{l! zZ9vL`6K$oWR@yzHy{q@mGvWcmvb2ivg!x;RZRyTie^41$883BzgFV=)v+l;!^WAyDe?3obUw!z)Z-Bld z7nlB#p#Ah||C#dV**PWKvjLIsX#S$nXD_gwzQD%)^eaX1DR}iv+{4A8P7cSk{)KD)LXFWWTvlMi0mSUmEH@1+{e)tC~K!;!IV1yO-zUg-EdI!op|sm&Dd~Y<_u@ zSh;BX{{5qqOBbYl*qm&OXt7n5gx)Gu3V zf8l^VH}_uYtj0v`;Ag3_uGLmx&*u(`=hxRisRQ`sbNEzt7dX;P zork-9Fo$EUH*ExG3N;+pkNmH`|y|V(B2f|uikzm>F&N`Q6vFW-vbmL1S zmlk$CeGf^s?kLQS1TY@+p4>L7?f3W9Y=?rjx1NvPK;kBjhpiJTM8OW+ zY6XEa9&oqtc7x#wXwW>eh)3qyzJCvU>Aus=wH0s%p=eWQ*WX>6r<8K+zO^S{zgM*E z0*XAjvk}A61^Bv=5apt9O*B_2g%xq!x)$s6*of%-oWiX+J7DK$h zrppi%rVS*xxxxu30sKGk{<4&F0gT#+wl9DqU^->PZi#f*Wbq~oqd%)T81k*K>0TefDULTZj|1N1v&JP`tp<4nD#Ii^Ds{*fw zwKeQNBErJC$06`#%9Cqk`D$5-Ox2*R5XCgi zEf7?7B`SqN0W%H4G-ev;uQiJEU=r?(JhQl@F&`;MOmdU_LdLNoxl{(72AN`cMyyn? zC~wSm&B)Kt>9n{Om8zu~&^jyXh>J92b@Uo8$C=Upv?qvlad`#v8}csa_p&Pj*2tg5 z7KfabWupab)z=n=qiBLE+H}+;&2PYKX*$tL`BAjR>{;Ky(ZffiMZo4PZf!yjBdR>Cz zYbQa_e>(|={L@uHgieDV=r-tqUIV92#?hTnhJgR44PhmeAnY+6PmB$EXnSZ&+JD;< zHb84aF0>~!nI6h#4)r>5I)(9Pb@aNm-h02bFmS&`%bM>06FZY^CL1?DQkE56aE`d_ z@k~GJzfBJQUz;2vzJvsfxMIG)gIG8*>)un`3%Og{ZohETWdG3g^B#^&k&a`e|3YX( zo)MoSuc&SO+mw5@Lj_Emw_GCg1@?vJn$|T8W{Pz}e2}dojcHM@v_M4Ugq%2O z$jDU@4{^GS(|73Gao{o>GY~(i={OP5K#d=~Pa*+fTVqJ1$UZ$83=8Hc{nzwoBpEVZ zSrsvTHEU8E3rpsI`kDiK=@CB4;bK_sl(^nUb)#0+)}AWNzP|K@D;w&W=YLXVa0||= z+ddXEVxv)ph7je711gOZa$9VYOzKIo?3kgQX(>C#BCoO=US4S9}trz zHwQ<{bLo0{T!&aL&II?-3PJ3imF4D(iDq`ko{$`E0`?x2E{ppxO%ghZp zRan>Dr7ej*8rSIA)u)m*Xx;=GWfxTHuES(mfi%Bl(EdW}tN+P(wf!px*7mQg*rR`E z%If##80TEtz?`D$DTdrx&B}iKz^ebRl7O)OKoSM23T7na^&d$wcTP&WU%z@_3AJH@ zW3ls_+u^C~WkLP-i0}r^0l949l5%`cFfDI>`>KhE1@=O``g&W1=v)- z_T`ifc6)z#9Ja$Paf{y!Bjm?6L4NE`s3lw0cV{8Kc2$} zGrtx&xYvvRPtn8PqV#bO9DgbMafTo9KN&Blf91f2{wpgM^{-6XG^p%gv7N20SVH;; z$erck|EeSy=lZRxVAN2Ld^hi8m!F63D7jmfTuz~$biK&AAv)pP9O26@palyCsO2#{ z`C*bB*PZEy^@Rs3ce~h0JZ=8q^}F)ufAK$2)1D;z4(G&r{~qqKB|LQb>xKMedrN*S z>7Q)bMa<3_w`Z_yQ3lDz0|I9A|5fDR^RJ=@5@|Yh5@RMA3L>l#^$CQmpfh3Q13W)5 z)sYmCc*&8~F_6A|Q{6Yv+i#B4!xTE_qtjoy6DtqCi;F)R8&5i_5GIVT5VFUw_+eq; zoTf~CJdZ3mToyg_%D!v?(Q8lLd@ww=#fl|LA!fCN*lW3zI zXT@0|)^C=4pRH|rGBV-26ZQV-$oj-hSrg1> z5PUn zcL$tuK2;=kQkaxLeCEsIi(%WwkE>l%ljyc4t5te(LHy$F9v{zM`QhAIn#UX^TzqFv zU}##6_$ZmeM3ZqEozYlvV-oJ%Z36WhnUf0vAR1-$r>yTH@zw<~K7vyQ5_ zW{#`q^hur+9)M{PyhQ=#iZEXLGfAK9q*=qQxY=s~C4m@sx?@onYa&C>d?KquzvJM` z!#tx~t3%0y6t~F3b$K1#6Kl}U_HJFCk+DHjW5cfkJrJZ`Dx*wXJ-P6%_rFc}4;KTc8O1{3IfaDwEY(qx>`^Lc$3|+pVfid`?4ScxQZ@|(Q z0=g}znw1|~8+ACkbW?2|aBEh9+Jbh`F9yZ=d|YPoVO~6&`(quCnUsF{I zMh#ir{@xI=*_(L`;1bSCz@f?5IoujH+L!6T=!o|*e!wo4k(*Wnj>6i*%K&lVm;Ezw zeEEeGD}?Z)0yn@v;4aO9PemYslNhREUonVY2jQr{CdLp;$6$i074E{ItHW6=Hh^P+ zZmkY%FM$ch*#`$#7wGDyTe3H5v@kf|%ps)NnOG?$Wo`fZW)X%0-@P zbR@)2o4jhnE%<2%JE%3}5y5n9olWt;D4olr@C=y1vyK}BU&=Tx7vLIf zY({7SpK7i>3Yb$9x&Y!Ypl<5p;Auhts{zwA1P}z2t_H052sKR=TiP5gQHsDb3y=`q4PF}FBgft7m*0u@Msv-dY0+nW&REY4R3y|uj z!m>nUZ*VCO3<9b#UbaJZT9&;%DN1x`65C@|qKdR!StU|gA`QXV%Dmi=yt1aZW!d(v zSt7C(c~jDw%}a|eapN_$*$47&g{&0c^5O)vWF-l564G)*5MF^2AZQVxNK_^&Eeno z>#{0S5}Iq;S{)KaiCJYK*FO|4+!}@bars;pez@Y)l)MK&kBIO2aidqy-Hm56ep(Qf z(J^0n?!@TwsHXeP54fXTD_;1ITfAgO(1R^4Q$AEIs`PmKL)4E4o-n=u2;n2QF@ZFn zX?u4%?Nvc(j0_*f-2Hj+r%efq8Jo7(g^>^I7$kcC2^I-hy59pxZv^kE`3hRo z_+&wJdDCgHst;nL)Jq2XTvJ1i#`k;mQ}?Brt*hpH-I{|&dxMMLI-i_#cS}sCPx0W5 zp85>?V384e{}F<(8M~M_YpjIrYQmndYWznWfMj(zq#@Tp%VfG9+qhgymq+1h1!}r! znd-T5aU(ly9@7rnHjG01E!{(f%@xeDV{PL&(7n~2nQVpyYDpV~e#RO4eIvZb9yT{} z&@ne1!!{pn1BU7TitWp_Vm6O|^zp;wohICyoZAQc6Lyb%JL0z86C*?RVdIw~^0aHb z3UfD~w_Gn%bXEVfa5Him$$|7*xCgLw^NqgMID;Lc$!IqkA$o0ZFDP6A?0aA+GWFo& zIfDR5OYiONr_=A1`y!0NK86fdgoZmj`T#hG1p(Kpq*qzJeE;Zjj1rt ziaO9Yam#gtRBY}o5m#`pcvS|kyKEF&^b#q56c^FTDd%5K!$zH?pV_Y?bXHcRMVIoe ztH>V9CZ#lv-R9})VExvOmv(MqhDJP}VDXLuM`Ul<^XdDpIndl~xtWNNGX*%L7Fj z#s~PlPl~!uUr9K>uherDV+E6W_-sO`&7){foe;~H_AN6Z#uK=|x z3Q)VA08&@Idc(KLZ?Z{d(Ki=np7<6IehS#P2jd?83m)!T0L+b?SKs8j9RPDTwin*| z2cT}KxoTJE5Nel!43N4Sah=h2WMi;xi~d`tkwq{28^FG` z`3D~EWdO|e*2nl9YzQz{@((~={b4*@J%HE)z+Jk|Fix(~S0LVD99<#Zf`Ld3!7>4* z`AQJveHCL1y>D=U#32e@(otiLii6-j{zuHq1&)UUv!-xnAQ~}IT59xJ?cc}F=jG&#I`ZBL$Uoc&4N)A@e) zh56avv)aZPggk3pK>wrCtDw!JI5jo-k1KIa`7S@)tM~@B37<_~W(;7n0P$;kf1>@; zzQ?wc-)4@?v5bD}W`3GvUA+xB1cloxOCJ{Qh~MS2>_kEHfxv;0471Tc-|m1vDgL#>CivAFN^9_5&KBw81LE}QU2Ucwz2xM&E zl82r=oyW}4dXvkxK246jpB?Bh?Z_v=ZMs^jrlcnP2=S^_^YQUXFXLsGwr+hNqqZi+|AU{lNMr5zC2%FMT(|~ zcRYYoe`3wa?@PP~GGl&jX6@mANpmlJb=%;6pjk`%W{GccZI|PVAoBgGHQ)Be?ic*h zSULOTrxhkmH?!%Lb9VfyA9gi@9h_d7mv>_4F+5Li*?#25)hFUA^FvQeCKkq_>6?F8 z)N9JyzBlN6|KuO9F*g6A{9d-JY&NxjLZ7J?_(jPZ=7Yd9iU7uw@ z6VP?Qb^>D3AtUMF+eXue&1_x32J5PHZ0qRc>pNmRtmF5txCQWo)p38ktxLaaR1(Wo zn-FxY=t^O(wufIirOg~|;={wST+w6?}VrZj{6{Ak#i^s$5Z|gk-(a5 z44rxs%mBtN0F7+C?o!YjMtEd7;CO&wvkM@(?wI2Sr!_c^#W8&gu=3qERv&D0!QKFz zqW~ZaV8gz0qY$TgB&Zih0f&krBZnqXbKr5pfZRGUaZGyzSOPFuTwsUI)PWTwjmC1J zA#~#cqJhyt`W)D=XXvE@LpYrU=wFK|QwJk!D*6_Eq&k)JS#$}oRT>fso1jbrA#*|? z=E1NQ6_``i-Qce`cIAP=tW_YD+XSm1Wc>jt0X24nXboC=fF%}*hQj?>>Y8)mZen$q zHyc<|9KS#ZoiC0WaVRd<79Nf{4v@ESh?NUD+ZAJ~KnU6Z1gjZBwI(7Ee@g<;Sy^pO zt-@?DOa-PBo)FkRWrCzeQmD+@iwVImOjKYWmzbDs(Imti(t2YPC9NPXwUTXuK;0eu z*6mqVyfWAAt_9&!$(jPCL?n^6mWA+IrLArDX);XIoER*N;ABC7uWGVQi9vv`5OJ_L zO%|LT+*Z?8+U5|f+sw<;wa7|ykX(rqLU6F;y-1?0xs`|T-?Y~GBhlCE9BQrVTx;_R z%fOsL1aS+c+0j{~EW0LKSs*SfElsP7Zc2uMy#SveDRU^u0`IPf=7ie9vaD=irc3LZ ztE-W^y>N1FEx)F$nu?sTdfV+xuR~|fvtu)6ebR5V8y9ZK{CsP)p7_~qyWR#DGp(WU zS=JiE;j{E1q!vdNW{W-)W{ZS4TRU@Yy>$N;hwBRj>ZF0PaXg|!ow$zA{R!k8x8@x4(iH*EJZOyPq=qL zl$fURgniHUtufuP-(=a27EN4xasch)_+1rSmOp%G!Ly%iGTL#rg{k#43!~A^;F8K= zny5p-Et2`{nev{InYo!*&5#R$xah`UduPmAuVW&hv8^}|uM4m?&9t|IiL8)E#q#3l zGqkj+IA40|7^WlRSh2%(&G--l4A;@J;*EtEVUFs5#RwynA3o4UEL9jWGoe}ULRR=- zRR8*M!AEipF<4_roW&$0`HsTrtv+%AQ&70Tb0T_=%C&}Dk33m0mMY8m3CmIiP6?h zi7gG7#YE?fm8Ca-`9U*xGHu;~R_@M$D6-~FguSJ8%H_Qk9TRtyrU^(yydXZ$ezuH} zC-*-m4b18&wXCt1N(wAFA~vAPxk=dR0Lm4+;M~Zn%Sw<>?t6^@%u*v1d!z9X zYZgX}7HCv~Bi=)9GG74xLpub){OuwKd!>kqiJ{D z6s-YI!_=HC`>mH}b|r2NJ~qOUx$L@MMpxOmZ^xgBW7eNq-yiSc^XSF0f;k(1Dzmt= z%njjvN8a~V-h`-KZHVkUi!3jQ=%u9`sNS{AY~Ydqo{`&Ee2#qg)6$GzOINa(H$KVsq z76ZXh!^2*XIoC z^JOR=mZ@N=o=DdL9lO}fwQ&odi1FWFDk-xQpf@quM*fR45? z^s|*1PTh-l&CiC=1Mi<_`|R4m)ih4FK5Z55pAAvF9E`Tx+)+jJN)C9Fb(N8mwxfH~ z&gU9<3z22QfzP^()S5HGvfblb-M7a7I_XMW)AHmxT0gK-c z4rY9bVPqH}#!{OJzP@*>sQ2VCO6BO_9#uH6K@wcO27R|Me1S}YWh~@C%BXipsT3pY z55&z*KKha1T%|?Kx`AE3wVi&99(g#{FvmIAxacGE%?~?*pJ(5B(A%>7$%5diOU*c5 zoZyICUA4`%y656`_%?BUvea9~q5jyKwt2=q9XhV=Tg%wnN^ZvKe6U%XSAH;J4tXJX z%Mt(loV=PH$*)<>Wie_6*CV7?);a10v|d(!z4Y^J@3<3!;vM-1^ddWR9vhGDs@7ir zeks$dD8;pZduM#MQPwLxElx$>bO`AMv0yEZnjJ}xXr4n5-p5>zc}Bg0=(cz6+>Nmo zB!L6JZA@w9n#m=B5RH}=7bF}Z+v=lz4omO;-X=OVLm_d>IgwRXBN*L6J`y7rz7(`x<%a{c|X0g zM$HemwRP1k=oa!!c1E*Osy-4P0%#b;nWkI)Q=`u#ExiRgv%ust;TU&c?=YsB$ zcJ^+z*Y$k;M#X-*(Oogd$mQp-TWz1Zd-S!1+WR{?JHmQCwd?Y91pr4t(?{G3>MA_1^GAg)iX&GQgv74i-3+q~IMRjkhOKZr4 zCQh9d*gy%J?3=NsH-)VQO=PxG(wvpu3;+Xp&AcXYObujcv1_Xi4crpX(KSG}mj5!~CaPa1n9_a6R zaue!tkxr4jVGMz^8|o_}&p`c5o7cCTZ!fX26jeqHDX zf?;rbtRdK^893en&Z`PMshn7JHp%hpj-_HJKZLj!V#$1=0Qv+%d!FbmxO>F{>Z^uEDi+4G!pK@4=3vDS7D+`1x#k)N0%iOV zK{oFI#9QBs<$(<*pSKr_;EB2BJYQ}ixT>->*xWsQsYuL^04OVGu8`*n7qrJ99s?H4 z2lj7jk)SjnTwuwMNT|Sf16Q&eH#a+NcFruwYy;kpr{J5RZ!?tr_y)5e5(ZA21>zaF z3w{g+jzI}^bey6fPIPYmvfIEaq!~Dg#>e%8f2`%(>_I@&A+A# z3O25W&Q$@<-^MkAx~azXyIch|J?X@7N4NldAq0B-{uXXMmC8L12()z&U7Y{H%nn9u zO^Gmw_6^6-PYCj%HGSwu1=IuFiZ$43`APB>1hMbHk7vkZd5QxBv3bSWq&%+$Tma&p z=fx?ENg#;#32}v;Et7$;5=FKHoOhY;34*H>UYr>ydrJ_KcUvZxnEz%<5d4bfii3IM z&wyj~SZ8P9BQC@M9q6&?npZI5JV9jTYM(XOAd{(X{SkA<_@7I9zzhAoN%X*6(K~`9 zruUS5HfVg;6h<_?Yy9zaP&PqSoC-eu`nFdEL1f52O)&D`1Nsi5iJxSLj6#G2@xnC3 zNHNFlVwQ`Z9IApn-gIXF1RP#z$3I>7j_cmf*GS3g7q3B`)eKr zM0Qe0#d}49r6H}PL>i2UrIOZ=1aTARjVxN3Kw@dqz4kI`8lT+Jnk8!m*Dh%*7<4w* zMFhO94Bz{PUkae&HNoN#UI3Pjh43PpOTovXv@8M%VT;)z$acUbm5NG*Z>t09nt``V z$!;PgWT~tqIv~7N8WO?FE-eLP(Xt(HkXjNfM3E~bA{C0Fk=7<8Ho(6b5eTK}$_QBi z!j5(=sgWkuxyeL5{$zDZ6I*5<8zJSf3wdN(bA;>O@bFfwxi*WFjWuu2P)5t%a1sKl z+v2L@-XzvtdE2XOttqK?2uTyeemYW0f=Pf(QU=zYB;2-CSc(J*$spSxVbC>5RB0Q3 z&TQ9Wp_vjiV{}MZ<0@Z=#&dqF{DiOid`n-oZfhIFwyhf6b7Z{1$Rni&E34Y7CPI2r zJ-)gfQs?Ei%U+OX)r_y%2k8o!rWitsv>9&`4{748wpoWERb-CO{0-6_9}*GHpYMZw ze+udR=9^Q9wht1XndyTZ{;5;FZgJ<_exmcmyxh(-lNaPqb#qVUmJ11TPx#_f^P5Lj zy?%$yTKrBnt0)KS{JwcjRT*ndkq1k1c~<;x-+HCR;8W$u!I)E$&WMT~L6**AYX;ta zuzCGvtc?@vcD0B6LuNE9x>`vpzd#gfNBjBqjsU7NRL&n`Ydd?iquowBN84yyN4x9# z2BUrTY{xW?adclYdV&X{&DXKP4RqTr7fdmXq<4QMyi7O0bv>I>95v@#`Pj$Klo8T1bxHoF_jXISQ!Eejfu**{#eHBo>r-4KyQRt zT2&NRsB<}5ewoDl_ezzev9A3w^eAOaKVOt9779g@=#03d57TBJ3*b};`ARqBO>cB- zf-6Q5VFQzMWHqV228GI&cKMaQPq zm)S(e)rm?={kH=Ss}hW#0mnlktx-ltV-<1aUi&f-3)>PP1T)0Ot5)(73&mGrs{`Vv z${BgbgQ1 zbysesa^43PVif46Yi#ej#mL@7+t_x5uK64nD~rH!PmFAhp>1UAIA^TQ*g1}72DSoy zLwo)@>p3=KZRS`{)3?`~q-U@H*nEzKhs7N8OdNcLNNsyu&v?%09Y*nE&S-$Dhij|p zip86L$6Ie!!?9(%ux&X(%#G?Pto3RPhCMo#Zc8KBh|tQCgRJEt46X)-B(V`Q149m? z6USJos~yrjt-fk>wi#oV%z}LF zBO6Uj$QWZR8RfXj$Jv@aVTz6Cm<&?~KSQ_u)Qhcd#I{f~;DGlA9zZvuA$mI6A;ejg zcJeD%KlE-;d?p+c;Jc`U0lVrd@eyfLeo<6b6yHHB$lG^{Z&xZ5Kb*gCUw+Q&octlc zT`Ckcsq3;**EOw6%~_YKP-NFPcsDlGH`Mz!)b}aq4fWz@Xnj+C!^HXqg+jV6HG5rZ za_YLA4eJ$((3Bv7+D*#JF|KlA3R3#x|@Ai(BU! zCSG@!b2Jqn!>Nhoq*q->Xs-DoIsrj;}tk)%*U@@VNS-pv6XY#GQHs{@QDb zqRTzSKlolQ`usz&Lh;4G(3&sM74WSEe1&36=8>}*>5B9Wd3uIIagIE6`23;6@VRjK z&^5)9_{~e=+v1mOj$fisXwI3tUm87U?woyd=O`2 zsjhKP+MtbVr+bh09`CLoAV0BZ_i+Kga2K-k1MC`q+{J^YH@`u97cXPHz&rS3;F9F` zzBMiHk(%Ix6UjfkKYm)0q}MLppm$`B%)>o%a&YD$o#3g5mLJS`^Wnv{Vjum?xjhGb z-+ei7)d^MGG4?;RdN?WUZl;Cl8%`Iim)%V=b&d4doK>uuOt2ziE<{+! z%n(C&g(dvQIa}K}+1c7zBQ}`13z{t3E(rC?N&3RKv$oSqVP;tN`t`cvHoYUe z_gN6#3r2c~d&jlOdfZ&~t(?a9SoJvfjOtmWXJw#r*+y7WYt6mg(=oiVwGD(%2>IrYq8|T!g1BVp2$*4y z;A1F#B`7ap=a_<7q7F0zMF$U{sEZYfiX*_?eBKfiU7muXYf@2ky$nSrAh-n!M<+9% zA-IR(HQx-)e@4BxVO3ywFs zxx%i!20+o{*rBPQgrx=e2jCdFd_fGTZh06FB5*+rNExU{X5;Afs2bS4nFhP&#$!){ zzx@rZ1{_Z>EY$}ifaQ@s1fdJpjfsI%eN0V(N*ZcwYvUM?+PSB3I2`b%VuC7^LU~m! z0pI|Ip;|0}lhVsBBZX~}>Ox7IL|odsmu!+nho>l;LBj~}{7t3N1!=7{O=4L>(_Uez zQkpG^7J(~$a0uxDjyYLmM6E2M5+YE=rL`#~HJosvGOMPfsX&reT@w-#CzDlV2k%9i zOT~3c!1Tl3VnVWpjF4qa@xrjX1MHA}L}no66jGDuEILUg#KPDtj()ySkW1n{p&B&|6i z+O^3|ioDH;<}~?}0PsUud5UARsi*;IS?Q88py*0*23U-O&t;ZH*Q8fdDl~(}%Lg;b zr1srr-^5$MVktG4)HU-}4R@wlWW|!8U${%m0H@Aitn=*}f0+DD`wp|4-l2`ll>4^j zKUxx>%!)6HQwp|mPEG4v2;*WnXSw&jMt7L^1lsjYf~w2S@m1|`{RymTm%ZP8J4^jh zXnevu`m8m;5gy8+cQ&rwP5RC^G^kmDPRw*54XQ1FI(&ro(~Tp481~mRuD#*6Y)`*U z^`40~i71iz2YI;KT%9E5rJY*5TKE$g6P|mDMIxOmSCUAuPg*D4=SAmOAN5WvpShhY zN7eXUu>6}mlFq9F`%8YUA}1oS4@=vK^@W86KA#A8znSMoZmQu@ODv-|EQwu)V@qO#6N|AM8u|@HBE0FTam2^=^ z34+-#DVJmw?5#bfNDr&-=&=v4xa=8L+JH%GW7Bq|mj+0s52uzPx(^?fB98=8ew?sc zS78;VLuT`r=uXY8&O>r5&m~A5f{_sWXv>1rd35>FJO`<)mR*w&o&VCaO~diz^j*8o zRsOba%)H(1ekM8BK5#r=PHubcJ-NDL?9=Ioy`NSKu6c6wPVUeA-Sy;myVv#3OLpIH zqO)tY_KA|GO4lEs-nq4Fr1pVz=g3{JLi{scJ@qekUrm}=dvC6O1s&=)M`{XgKGhU@ zw^VQb@!Xw^QO3(|l9>n{n?CO@>(RADwb*No zY7b7bk8)l%wv~9Z#jf5=vEQzXmA}nPWPS4>>1s^lpy{hOACsQbP7MB(gorO)NWfmSSxPWKt2$+Y={;oE#0*gfi#+9JsFv7&Cy-z4Q=nGx}5G6$ck=`yGWC7V9ho8 zjxhp#K4Fwgl-POfukc&f5;6sjBBs%38+3$3h#LFA`{4ni*l&}#u2DXQuJu2`F)XtQOLMaHpTkRJb^jWSkDwO4ko>g$L=xJG!8Xm8a=ifWscf9SX7$n7-wMy!Z+BU zHj-na4ncz%mUJz>5!y>*cuDFp*mNgR96s4J4g253N^^+|{A2=JD|5m>Q&d^ee=7BRI{gh$*!pPQ53Lq4&fWdZ`08 z&XF5T{<^k4qyh^@j6~Bi<=QMk>UGPz4VBEybxA=-&Q`8GXCKVzanf*pJ?+=<}}lfz4lcVw$JCt&es)BlJ#V z7ZF!4ha0>CKJcf>h|oCr=mnqPB}P5{UU%HLep8*nI+CgY{_%ZCyzwUBB|Ct3YzH3F zBFuX|*v6(F-6E+e*|zurSw0Oh?f~XfxjPd$Q|3Npl6m^>%nOWz%(5eyM=}ZG(m};e z&D|yY{rs(`g)mY7VB+!SZ6~%gY>wJaqyFS;?wRSYpa1?tdka#nk?F=4dK}5n4hcMb z*4-_A;}KWE!ltX2-yXRp2nsoJc#r<4x!ujLi$s}M4R|m{Kh#i6_yN>R8BJlHl`Tl(iDEto`v^*GpKzSe^0{nH&Xp?>BeA*}pvU3XC z+_Ac2OZ)x+zp2^#+c%Bek~=B5ZTY5s9b5Fac=@+)>Y3EBy2pyA?QGe$JbVAb8K?F+ zx5+9N^*Ddp806yD<93xpw(sv5HGY&iu#EcM`|4b+T?9}0y?#F|=p=-a-jSV~d&l)! zI_lZ*933e*1S^ufy^8Elb*fpHjZRj^j&Cw;cz#rN(|w3G5}m1~xNk?ThC){^i+k zb8xia?5{YwXYPG~e>$s;_$VurF-A&cz!w4} z66{UW7?iFX7*Fu|h8ks?31Fd+#=r~|9RX^5ii0KHhn`VygikDN_=i89!8&5~9Z_-C;*A__&NiO`nTh#{USRw^sZs;()EF0H8nBS`RiuP)2) zasG&WbnaolU;&TAdZGQ1wF+6q`uO=pGqjsu_yr))Mgsg^D50%{cGoTB7TFchvoan! z;#bCaaG`_i5wo)01Mz5Ixxk~sBM}nyK_H25C+B*&~>$0OcuHuJnaC96qq z&++bJFX-?ZPq~=UR5JX~f{LQ{xq;`9+REz1^cujVD> z-p!-uR_3K(O(DYI=AMLHhdhqlIxj6aD?}8$HzHSFaE_gOF7I-<^t47nT*wuy|6F`d z94|B%EGHNVg}O`0lR)QAE=^mpbqX?N>x$~7^PoL%>7C@Y&|aI;u=Ew!*r6YUzdest*ehobzJJ2<(m3x>DW{x)ivvpI}fM`=J8{- z&jsZCgqjQPdeGMQkZzm>?Z{1bq`NV67j)2tfM(M6*P!j5&C1#UM?Vig%QEoa)yAT}E0_j68vUuXXS=<|uNgL)73 z^dISiu=%mzqxXl0A3)>_E(C==7D5og9-BR;xbxfz;z;I}%oj)ekNEn%c%BIuT__R8 z;W%>GV_^;Aa3*j(*p5(RvV0hR%&D-!$Y2qS8O%U>0PH5t437jsmyCoJ<4*~g0FihW zh{mxialB{qmd(`Ie-(5ASi{`|)(sF@L2O+P;_Ey(PYm*`%K;o81icG2_D`9V0Ro}A zrj{nGT-X>&=v?6+;1B5Z=+wZefLhVi4BL0sAf%#b;}&YpkOWBylK{X$36^w9#>CmC zrlu(B6BC{PXoAfneMx(0dHG4L$jwc^Q#Xb5Z#U;S=`q&Y7#kBgh(u!g|Lxs7?*DWq z8~KigVQq|bF`unRHtPW%1|(`fM*}uy=D{;%!~ba;NdJ@qK$W0<$y4n|J>6&HHSRn9 zWER~eF@iDRZ zI3R9phZ9xc*9f}BaLGLD>ie#GikKMqzE(42#&1sz}2GVR1_qUFT#_a~~R1wma}{2qFb zpJ+MmVqiE(7?`@xHeBUlX6m(SP78h>ja;>QCNZ#d{ARsd4Jc5|Cb=%ffVkW?M67;apFv;U5j|n1a+tzK)a4C2PL&HKR zJbC=2Mf%>*z|duDh{3pR<6MddgU40E%LG!VyXH)yMN`XP(-;0c%`j=Pp9eQoOEZ9b zd*h}-Vq?um7vH` z0z(X2@4z7fniTvFSSX?F{ru%Kf%e1y7f@m)`sMSN=jOGr5zk=wmLZ^dqYP7#8Nvls zW&NMO^!0x(FVp5jV5|i&NN2&0WXLsz{aELMLPvW$-QW-fk+yk@c?yy=CuULGE>Oq`_#RqSVROK|44^ z$DU?qA%y~Qa845zI@zNRE)ciT$rgcAkq{lg^0JT$WjAC%<#`}2Bd8F`#&~P@Qf>H@ zBc>J?_96_hHU)Y5n&RZi+V$&eRk@s4KMRg84naE!;)%oOo&M(@KuDD($z$%+s3s`n zLlafg6pC4YJ6E9?8XC&~rxuEAhg-v)eI}63PaZq@On_WYJOK;&E*H;kZ!ib(N*$jt zMR++(Q6%zTsTx=aVyOJjEfi^A3U@BN2(Fz2kUB_Exrs0lG6;KC zGOUmWeHZ1_$RG^RFJ7d4K&j@%i&XyK)lj6rUoxN!>k6H}oPVa6bB*?`+5)zab4vX* z#J)s+qt&%trT@adie4`a=SVOqZ%2uc?Z#(gZ^^63R^%Xhggr+oSV`Nuf0pJxKqOtH zwQ9~QK8GVLgE{=i#2avuVpj?=Vb!ySs(hm{Mmr%rc>t>#4@f+h05*Ge>ce`$VB zL3LamQ)d-e6vgp>(_LaTYIV%=#*=Yp=4l?H<_WLDJkH_y+wYP^(dA5?d8*D2FwtXv z4Doqu^#1NkiB~Jq61OeXz6ik%;{^BcMaHYQEZN>8O$=M0yBQ;=~C; zei_Q}g>dA{W8v6Z4TqdStE#H*jy`_;c$gn#MaPe$h#rbSj{0>K9WT-=x^SE< zgR#rUiu8+=euc-1j_E_XbfTzBs#|p7M9~RdNSBX?DPevAOr$0&{VojG;4)oO7#KdS z=ompo6$tACEAzg7Kl!20UqEx;@;+Zq<;!7_d6G|1c?FDz`Stga{V)YZ7Q+9aU)Q0} z2NxX%e6l`i*rLw|VFa2=KdNK6*(DtsA8Ljvho@7`|6$(HBf-i7hp&97ROaWaDkS9j zs=#_cER*>2XZZWlyLRkpnKvQB#& zkXC{smeQ^?UY00J7LDa`guFgQ!Lg$?5*~GdQgUxvk~20DB9rN)ToI-RfSK-rt^^r? zA}E1~gE2@dGDrXgr08E2(8Ct#@joe~3y{p&rW`{cP^&z=3=Ad^MC{CpY5qYQ!BT%a zVIJf^t=K?uEwHy|T46z9K}AaPHAPCYq3^_n*A*>=1^Ei-B@5&nwoyuQK8&O!SE^>M z?Y(MQe_d@L%Tuw&PJ&MOq& zsx#qyg`KTJp^=jOdHarf2m3`V>B-8XMkTzkEIg(eU{`k1>_*A#cF zgrscgisdm3dcK0{T_q#4?^fl*z}>3Rs!2x66RM(C=-oDdr%x{a12BZ|Ca!3@qrV)N z>HPtYe(zvEXU`9Qeqp3+PU2F9;(_WUIJN8D9|}d&-KxGjw}1KL9RmV5clM`@qqu;O zS$Zm$5DcCA+`Os3@5^V3@Rn5q<|DmQRtAyR+iA}5EbX+uK5gyiNrMc!lhgD4)Z-0k zYj->Va^Ck~-t+xRC6$vv`_W$Dz5A3&upI|uFg~#V`GW@lxn5SrsO?uW7<%x@q>a~x#n8rxkEUb8)fw}RF z>B~>&tmEY|*SU;JsBcK(Wiu6HE!05-=V9c+tKsi^Ph)W&ocbt1&&?w`3n~n^@2%$@%d*zx4f65 zd*DG%=SYC7lIMS+NI7-n=MR;$Wi*fGI4WpoN+20{r@g(_ff@CAXUEQ+ zr4CH=^Uffp^59R&JNfMvfiA-7VZ4uQlVh|jrJ3Suf?2mJAq9=FMjuV z!cRY4R7^+-q^`~1xl@kDtL{JaRIU`2r#|`lkdvxv6d`;3WHM0xb)Lmh-QM=Kbpi29 zs=b&|spChgDroBXuGZFVk1sEYFRDX_3guuxe9;qHE!C$g6bhTaF$DxcUN)N&5Bvjq zF)-Ef@so@4u|pS*Um{0utDd1uPA+~ok)rf}JMR0+eCaX>$tXdnBt!O5+w*Yz$u)r2 ztPJ+wBw%q2MwM`?1FWaY@m{cr7ANS_i81CJPW-+;DQ?9=?L$C4qXo}_dhU-~lB6*) z(QSclEY&CC!#pmB$H^+J z#p?Fvatf1t_VpiPV$C_@R|fyq&t4zG*$N7 zrX;wQB+E6I4cB{98(m#nS5lW%_%^Rm&7Wt_`9WQ+IPMw=Tm$_12oPxfqJm+14fOp) z5s+`7($X+}$l;@3gdznfdK}``J-as|MAzhAb%2D_i#4g*DhXQ@yJ!)L1fa-0B8=h~ z;E?B!xknwp-h;laFdn1Vkzf@C4l1tKj0;w^#Lcte5)5Y8})+QT6y^M`AH68~Wyz)xK@ z0SS{3ICAk4hF?jzg5Z}fqUZp)%joKH^ib@>MI66$C1Eju|Ii19W@>@Ej@Ae*1lQ7{ zo&haSK`~Eo6W7uj0bA_t@Dxn2Rvy5Sefz-?y?!5w;e+w}Fmw>`EC<1UctXGgus>!j z!O{37^(eY;08a3OD^Wrc2Aqg0sfa%g>;ZKXHno!gul6v5fFlEg7&b6~VS@u0gmt0* zQP-A)`B7ZMKd(a$GZNuQKA`ol?`mphE3N84(glXXmF7aTSM!JsL>v%s$yzXw?B>dF zU^qpKuo_u*^QvSJl?zA^luLOv$vxG)<|YUfN^^B%yDW4-LAK_MTXc~PC9oj_uGUU; zH@bs#FU)FQJrCZL!WsxwXid&)1(E0&PzTg8)qevh6OgX1)vG{`HFh~ciNRf6AO;T+ zf5^MKKnR9jmsOMi+%*6qFbKmS0vCed+tn2Tf^dP+j1$LIQzc-<-hUHTr(p_C3-3}3IpwL}iAlnX6X`s(tT_D*4 zjrJbr0`hEE7bV}0+vcOG1@pVQDCt&nCeGD>`CVOp(8~>7JtguSMf*P&L)J(80tOTVU?C4b zPfG6s)DYQdf$Wzc$c@wB`s)la8%4rsR3rog1)<26pxWu_8Y2nC*zBaGKvYlyBJ01(g%TP39iTGWB7>E? zgOc0+66VzR$804*Mhe;(y??z{;s~#p=ui?mg!e!&qE<0VNFqUCnzt}|H8mk3Alj80 zPpe$^IGs1&czteSW;d+dt=Y@IufSuB$yISHM)BhW+b=J>T11T>NZh6l6yVL4W&7%> z@p*|eJz##J0=drlnRXp}On-_zM(fOw zMMabhR8%CDQu0tyksd6oRErXaprxAebtbj8>cJRQUMRXm2|`p0%EF?{)N)L<9)gm24jfd8Iftdv|J*u2$w)90M5g}4ga3;b zNM_W`+oVc5BdFYcSR|t)GI$6L4b=ju{4b^9P`}}SR}KkQU&ShF^6-+1P(L%(azx2N zhy-LHNzweRmL(yx6g z6)8fX+1V7w1}ZW_j=&d2iH>wsP9LhGDPR`1dj)(mtAR|cl*=PvVQu>M=8c;-_gE`NZ+YSxx97$y!rD=Ax5HHE???9(RX6b=rN7o0&Ykth&VN@f^Nh;ll9A0MQ;K}?nf_%$@%rG3z4hpO_%#-Z|m zYE8dOYu9BrHU_K8q5NN3i_UN z3H`6=4`%bIS0Rk(TCh(C5v2Q^Sp7gg%~HVP6!eEjo*fAvu#L!9t}o~{wcw;eL?Hgb*f><@P{rP% zx@x;?GgW_}{XlyYgUT742{e?pfa0^zrA{DjgR349k}o%dqs#{mxxD5!98w`1a`}ek za2UV_mNwk~DK#mS%H;B_1#qlf2ZvmK?iw63shM)QhZ7vCiE{Zbt#C9`S-$)~R8gcE z9QRhEh#m2mgvW`Cjf?$lXbsc({q^s!AH(JxnJ$-4ZEb69%UiQ{&04u!26N()shM*5 z$z3~l?G%GOF%Apb^B2!wjE8NFZF2cD(DxLoCR%dXoE}I&!iu7*{PeZ*R}YH(2*~)L zs(&h&LP+-E9ZsNW9soTY?1fFo$quJ|I4GnCsa59Be-w9*C}C9s@&x)ga2160`D+3t z9gs6>MFLm&A;sNr2j#1nP5l7n^34!(KtF}jOv&Y*yZ7wga|1lKXUXMx)LP9~Ez;?UDb`wr3x-8FI1fdW7Oq_#(Y&{ zr*nK&Lx0bQ9?SX+9LsjW0kk6(4pQ$89CEp8z5hkE(4(sLejzHayFs;4w4hF&Z%I|D zL!Pf1{%3XQq~oZ3SKU8{e1}i)^`%Dso+H_tNSa)}05)1(Wv^bodMTHef$q`ySNQu* z15pBEGM@$ivuruqLmAIsK;=DCs0xan=%J_x^*P@S9n|N~p5EcT z5{-oP`1(@)kds3Nd?>jiL$! zLD7Yw+Fyj~UkS@U=lylYztqU#%lz4it7_l@tD~#)FZs}8eO>1NTJVQz6d@QQB}28p zXw$!vl7G%4so{Ti{+m8r)d!|P@KpbjQ;+q(BQ^h|BC4~<|45;z(_pE>WXOK)VIy2r z?tWKA4bbnX!b>jqqspyRhNAJhu2kS>c&P{ySa$&H_zNmu9ZaqCa#XeKzmv<~{kia?s5~8*)MY68{ywZ@ zD&mljQp596)bbiCzr-6NEh;jkB0_SxiVUfU5YQhL9a7Pj5P;>Oqyafkn|iV3sA>)0 zO|9=#+Vc~No~c7oUN(vfFQIbNP1LM>l*(_S=!6%joNY5iI8;PNMPlS~ipZp^C=4vV z6pc|4j{l3jHxF#8O8dvpP0}Xa?*(F6y2;*xQbh$pC6!j8t+ot36c2QkbnyHzrNuzrZWIx_^@w|g+$u07*G6i_4i^}$86pzFj2IoXDFM>d6n`44 zagmk~naRAmgzh?3j(!l zHi26LwQM$lTLQJxQfrAXr>1%xZRYOc`H7z(2|zgjGN4un(B3gWl0DyHk*)O1cqVyLMSFM%w`iPCNL~5^*8_~I5pMl zXbTEngn`w`Hk%Nbgt!FZjszwlE{$E;Wdr{8LIM)ED&`x6PvgYAmhK9=B~bJUu&M=H z$MVbGxa}{dTXKSR8f(uny>Z!X6M}V{h2y;SZGt!Zpm-( z0#cNz9UQem{8@Bcrrlbi`f_t@1l6y9KSk-^!BHC|AUE$6GxtFYwH+y?9}D6~rV@|Zo7qq3n5xSsvzM)h!!^6RAMa;Z7 zh^z7UQe1dA^?oe;F`QwdwAs3xN0g}_dNfXux$o)`;!>_2VbD@0k)mHDEp;TZ{nXUf zqs_L0n7@!JY&IcR2&uwm6LN)+DpXsVVE#Z3@2*upu?I z^@w>nA%qYtY&H@tR7FS@Hk*(wgk)h$6A+>E?W&Qn+5S!h{G}LQAx7(O@MRb*v_MQR zg{<)e9$8HiQQe{lJsqt;aiM7h05iaHf&Y5DN8pA_IGHUJMn~2F4ECz2fQAkF^&4iV z>ZxG;2H*q=sL*En&7(#-k3_Q-z_8wCn?xsrNK3cU3DU!vV#$`gL#v-mr*I+tluV#B z4+F$e)8Z-gIW(y+LE`Y&iYa`ZpOEvQd7`(+6O;)*7l8&sD zRNKuL`PX+O;lM*xmt;#5x-3WFJ7hWOwFD@fN3=NwOi){e6PMKT1m;p7OSam-w~<_^ zppB4oiF7wjn+Oklq!-u3L2~LKuFxb060d72fsDkldV$!vdJMd|7JQpBzv4`v_R^;= zuS>4K;@8V+zdi9IrRh`qW35Pw@*nGdrZN(4e*HPE^2gJ4h=zj9=g@cESow2n_V%tB zl|NFAN@Wm$4ng{HSO0)Cs@>VZojb0j+oxlwaMh|Bp75zt+80Z2`umgkXeLgjp%8Y5fHIDCx7@rRy&BrFlGM57OcP8 zpdVqF)v?yARq3UsrCoaU2;J2q9t(dd4yZIDHBDsGB$P!-Qok9JE&4VM?TYCXEYi}W zbTUiQ{YNEf7Q~O?QIhS7c~nSWHWjL=g#;bv)oH0{l$M&<3R*4{f(&y)l5XBB*#>Z` zw3P_qMUkV9+rwCF{zZCM5<#r@u`JsOqh76zlEX$xr7*Z!Y$lbyoR8*aFJcR z7E&e@I{)o0*?u0{Sy{wpYdEj$BT0^VlC*NJjSV4ObQ@QMcy%WhGvJFKUV$Ax51-V8 zg!2m-Hrun*G_WM&5@aOlSz%z2SP0B6+AzQUDA|4+OR&&JT2KRs3pU%`=M_n?ECTkI zQ}C|LXHvr}2|@Tan$^TdO7PfEP)R>H)3N57+cXuF&=aYKny)pbQ^v=-pSu~Gzvdqs zPU^aa1hT3$!{TB%h01Z2!mQ%Z&f_XiBA}s zz_y}xHRR?VlMYUd5{L7oeNLx0J+e(lJm*L^(V z$rPtbw=D)ICF1`BnzrN-5 z6nr>e0R_la@SVY;y_G9gu7zU^=ZSC+`1GU7k2rsQug4mOX#r zT*NsnseKq*o^d`NA_=yN!dk?`&|2(A4ht$kfv8~dLu5qce$eE6PF!qU4070}02kVV zwUwOz8&sYJs&h`#&ImzeJ5u{W2?N((T|dA3++*GP@W2fw_B%9rSOm!J|3 zU#oqB$^z_i7K$9_|3Saqw8Dh*U(xaDOD??xPBtzwIXv>#$SrZ3@U0sDrpA4I?UeeJ zK~qxzOS%dyFKHo@51ihhnUQq63oBR)nU$yjTLkFfi6D3-u~6YBhCmIFsK#M^k$_!n z8;pBZk`DY;QsCjYPF8+C057pC@0XPQ|6Pw<<^7WM6;=N7qO6?UKcDl*F)!Mbk(t5y zLd+Ucva+)bAS%4Vy3CT4hPRK(%G(VPTdw!Xed(3sJf^U)upd60&u?gG=#3PJsGtHl zB&bnR&Pitx9rYYM!PaUyEOA1nwo#JLXf>Sw3}yd(d^mRw7&u@LelE~3lVF0m100|k zbPGa`36ut4TysF*%3vv_`g2|1YOVGzt3L0;Jd^bU*LkPakoSI`(K>Z1n{p@8FdyZugU-g|l0o#JS>YiI39w{RZX_`(Kp<3$VYCBPLIV{WG%)EAv=*vWRwaS|_6>wvtX%{NL0(|qwCC(KNzJs;f&}wl0ee}E` z!`0K)XwLI~9dY{Y`e9(nIX%bM_e!qs4#qd@$K;skg2@o3PLGPd?)31}oZtRh$!k~Q zlfz41E7_bfw1nrpR&s3A^)F!$zbh`h&a(D;Rbul17`TR`v7d~*BM{caI!*&CxjQ*>fcRn%da44{&}cYF+FbXu)||cv$#N_~h`g@UT>qE{x}dhmA5B z(~WXPSw$T_H?gvcvbutVvefpfRPQ>8g^q(ROOYC}#SA#PS!t2rXeJoFP`}Xn4vpFQ zrZgrdwOTtYj12x12u-9{>KdyQaY%2D@40&%S3i z=XWBt5ndmhZ`gZe*G)yWyExxd^nUS=yFXirpa;8;?zW)-|w+VYn45SLjg4dBnYQ?oAY_jWAGd zD{uag^CKT7J-%?)*?8?DUj>F-ix1Xv0!j2D^|S|Jj_PmK4>QJKlaL>c*BbZeM`HFc z0c8u9FJF!j2bCLe{;m?U3>Asf0+a}vLIs)SNQEROCL+cG@>fDM=R5_+SW)|adV2aP z(c^C9TReS#t1QBBx9YDnX6e(TpvJ{7Sqfu(Bkb{snCZe#bxJ-Ea4*31 zc7W+rRO|wiO~X|URRbfcFAkqK=RdyR zrP?$CE({k}A_T0?iAN;@2c6EI>jVx5a;|7s{&JyjD`InIkqE*Jp~Yh=n10`wePe?4 z75geIUG%|<8H=@a`f-v;ulrn)^G&mu^nlnc3>${&#*8tIv9JOtmcZ3N-zv*G9rh9f z555BKW3MT4;pK}EUF1=woccm5$1{gmvU+kGzC=8K7E(&VGD0UX8La(acya#PqxU5r zh~H3*_$?D(uSi?@68P>n`yR&v@4^a6D*un9%ozBAtPH&8C(cKLKNpop?8m+j`->}J zF!^Z?S9Yit_dd64I3JgWo@XB0jXi2aW4@nrklH=L#oDo*xc5NvR<;IQ!FJB)BG&s;An&&Y=X8KQK{K+9Hze)~>7pDOjJ;7c>Oif|LSk+J?JRTc<<;puKEpy0b={nP9 zJ}w)OzWW^kAUXN$$cEW}C4-`6dG$RwNK z1-S%n;t)_^PQ#}KJQciF#tKWMD(a&!OKi(7&y`P|;+7}CuiVK_$st}$)`!RX5>ZW% zCNyrmr-}Rz6K)j*C%~1mq^@&A|Q3{V#^@9KoYhKfTbq#6krF1s@B{H8s8( zNH}rTkj6|)w#!^SG}KlJ$L1Ngb>zSlJ;af4U!ztQitnXysn+AW#6boB1RL{bnrbV9 z3oNf_9M^7lNirR%%3LkIWgeSn+}4qO394EPyIm{x#_Sg}Ccv_RsYeU=$(;^T}ad*;&R8It+hpT|y-l#R1g>}Nisk0j^kOUmC5 z>oE1?vRuE2^I?I-35X1ma{Z#qWxi+!TJRhaNAQ;Tf37BZWE{yO7x%VE<{<~K$Btih zXet$cfY?%C^2)o7Q?(H!@W|^(d{6_*50Ww+mU*tf2emwhWDL9|e)T^{$QVaLM%oQV z$vkSAafzh#plxLJ5!ho6fT3I&q_+g|6k<5UU%-Zd9QYGUnzSU27Si63C$j365!^1x zh%MOycVY!{2l!R9B^%p$2m+uch?0hd{;8-*5sOz~swaI^3;KYyHA5Fg`g}wCJibF7KCZMsoju&HSl~3=@?~jTPLSQBM6r z&HTaLvkA>e2BDHdP}+|C;$7a9P+LAp)H=Cg*S7s?;qL8K+jsBUo#WhIxNR{?sDN&H z4RuIR@DUgU>Ud+4WDfqS^6G5!m8jWg<~fx)n~=i(rYYRqAOwvvGrzp@-E{#esotbo z;jM*Njt9z(Up^kIu5z5?zZ*{(`joJ>B_tQr0e;SUgajGT*SL|+Ycy5J9lp)Is(qxA_AbW1e18$Prh)tH)H+LYvSoPk zjZ^4;virf31{gH|Z-XNKO$GmAb%5(S!)MOrar~yNA2foevCXf^UMGk}M!ghi+2jgR0?ENhv!VgzSxc++%oH zZ_WrcXNQDdKRbP#^jrPdc{JTjz{CEMl-*F3IZj%+A|q9jbFGpxp)^G1rJutfqR4NB zoaFZ68Kdt`C1=6@PTsHo-CIWYoALULyHjV-SCpl*3l#b6RH)W_HBObK#)tU0&tEH1 zU;FZl5_9%zC95h&jgulHEOU8|0JPUilVI><)p^e>&I0FX6BQZ`fY*Yc&qUt^ ze$5zHZl5kL?`hW}997Sqi-9~v2tD?k*}4IX5)5!79K0ocb4| zPjiijXwi;syHv9VZPdS7^8W^v)y1>xOh8vZu1b? zUe$WFG(3JQd@W#>2eo((0T~LMkl-{RqiQEt-Ptxk=SP53gYVF(xyD2FyYb^IRdXv) zR;yk^e&>^e-Ht9`yjO$qY&`o;#no76(?z)GbEkKk*2|^pl9Hs7l`i=6hQjlet#vn8 z$^21NbyvyeY|L0qI)YYN04zp$Fa$rP2DhRd@H_dD9(V07&M3;q!Z1E<>J)=sPY_cl zCnV%&0C;?G$E%@knn5qX2rcusKO7!T4X0RC4Wa7t#}saV7)7aksx;Y6GePc?UsUly zH!mogOyGvGr%lC`VP@EjRHHa)?a&OG5ZjPKQT{L zXe&l$a9U`$MrNTugKIL36COSBT!trCV56te{nQz+r-Dtx`b8t3Fr;+@1p zsRg$yhl)Nch8jF0)5$Y3KU-gvacIM#&x#M>-bbn!C4bEyJw3HA>(jRn>pOk(bbLnl z$z70-b?d45qxJsMTdF5YeY}WocPLY5YO8x^!j2fwC2Md|LEL zaXN#}oTV4PTAcpLD@9{JeU)23{iOKQPmt?7acko*xpi2S_}nkseyQ8;aJJcJh|J5Ze4HccJpMly4#4G?(BN??8f65g<%+`c0VD5Y}E1SMwweNRAUoz zJB?c#2ZZ(?k~}22U)+F!u}lO1AI)xFA| z`ddtCH!%dm7%Z-zph%Rtl}0gv{>I3yjTsS{6yGf4){M+sR4328HsaQd>mqN7jL3}S z_R`r)F8@G)Ds)LH&^cO2{B22*S`fxuJaP#Ai`gZ4A(Nelw(rs_1}ZV=Eva<2VD}t& z(TO%P+EN=@-UGR7bx8%b>*CD>5Q4v}g%vgGjw(V37d~(fgaCtYm4+6x?aU5*0{;g> zx$uQMy&=L0p{o^Nc(Ygk8iJVZ)L-=G)fL6t381tR8k_B4+UU6u*a)A{+hO$@ANRPY zKYDX#Ykwf-)}kHeiiYwt`}S(zjX=T$5j85n0U+Um2!R1!)hJd00#x5=4B*XP1pMh& zSAI91K*~MhcP{GRRpvsQ=|UKX)qQz1J}}VT8ePY8r+0t8^}F$RmD|hhdbll=Bn7~c zwnYIjqfMi=@*I>A76E_Ukkmn|aa%)*VOdmYzk8wLT=snLyAoXD%`^g^J_+6G@(Dc% zXWWR?0eZMQt6sgkaeY2@*Wj#ALjH|85`YFpE|8M*A1$h=0{H0j84*CkX}eKGctp>J zfi)Q{*dnwo+PG?DLt~SLHKxjhOmZVjX;K?y0FsQX=pSsb1O-AH0~0l}At>0wf>LEd zCTz%*5*#E0k7VRTcc;PP41_iYxV552ri})fGZphoArGfGorstvbj8@Cvcj2LTj~6& zwzAI==SL@NuUb&;q*U(%#RrRSWH5uW8xL+eh)?mD0~@*Zz`>#el!`bH9$X>7r!PRs znF}Za45bn{<&R!a4X{$DZ(dhZe7GoUrTnT2_vxE?W7*8qS)&IGoLM$=U<)5Gt8^AVD4CgxqQ}Q3gEIzf}&qZ)+Q{(Y-lzJp&Yhynb z9K`hN-%G$jOuyuiUVwuTZto&6jF_e~7f9qnvxSS6EvN?MEi`@$SUDcOQw6d#bqCNi z;&Y-pmr#hx)-PUqvZZj@ucz=X3@*gS>R5VeanRzzWsB*|8^>w`5Z<+LkQYM;AY5pC z==v*On-A6BP=q>6W(A9!xtHhMQ-68RlGC%tUv~Ki3#w;RYBTtMe_%o^f}0oz2f5IO zTM^xWFe!LYC4gaUMEb~UMqV>^;@I?DCr=+4F>&lQk-3o(>A-~tbc((k?GGR2%++5c zMFH?+o!Ox8wxC)^scB+>ohnF~;@m@2=enqWYfzG#BacRmx^`5Ti!N%(vXC^D1&CCE zi;Y~P4RUe|2W3HB-%aNn(h&39po9WNHa~KM44>eYeGBuLu35-dI_;J>7%cigU;{X! z8mJcy7N$?7Gn4f!#h{k~N3z~v=1*fA0u@vmt^4-kU4CQ3-ik35vMg>I0I7LO%tPZ7k*DJXDQsZ`57e|{oyZHTD;RMHFT z>Kcp>7$0zgazTUDp$()BW8F%*9U3C}eW6zibOmDO6`ySBDtFu6;M@%{z8j`xU7-lm zW@WO{wHeiQa&x@g4O#^2R+Z{64(c6zaZIm9D@D7F2_De9SJ1$qV22guNL`GQxAkrk zT@{Ws%I#-z-;l_q|l82frtNbK9om?S6|DFq6NUzoNw_5nRHM6aMEtD{ehDG|$O zdz&a>-HM@-Dh!Cr5`pLBBqoiPWK0?v=3gSHp>x%^8+weZ76O++Z#n?cN^dac>md$R zktEfMQ4r2Z3hP{3^+Fo^x1}dgVU0~PYm^~=2}qNhI$I)ot1Kv3W4m4Vu1*OFJ zfx0*}P;YeMPlgU7>Cnb!EHz2j*9)WQk^){)(%2-U^+WA?FqY2o?~9Yf1*H!#B@B=p z|Bg@U55igl-N!FgIq9lJ6Z)aj9M`7|oqq*FQom+(5L(Q0B~ zG^Jevf3Uy$+JzIqRJ3GH0ZUjZZv;H7b)6GnXuI$-RU>lYoweH!0K@b$ZCgO#f*C67 zT!{ugY$#J5R>Bv12I0xy7J0##l_XE1n_Jspt2dsBI_d~4&G zoeqLDymzKs9YC_N@9lIzL@6KZK*P_GGNkl*yhE@j>JgGG?H3@+UrnYK&`LzxR}1k^n0 z%iq;N48DIr2JcO!L%<@qdciGou}XZyK$GgexTJs01_-9CU}70^8+J2d|q`kdYTVG&bI(xx?D632t_Cm z4~%NbN|425sjEP*GlMq9$aCaw>k8(`3G&*6=P0io=RmAN*+8!nn9E#kR=V3-pfv-c zfNf4&b#ZU?&jOMxJ=vV5r(h!j2w(=1p)ARxS^fA~5R>Ro7?vFEvn3fPa- zqWY4O$8>)bM)=kcX@S(m(3J!vY~OlOR~g(OO1emo3pR8`xKN=S#58o&wUN#iYyD|Z_cVST1DLOCdOgZ*RGYE3t|N(`XgsU3q(3SbCQj{(w-pIT0{ z`#|~JP`z7UUSYuc1EFbiR%`mP#d=cAwP&qy8*4mJA&fO`(4z=QV&y;>pa+4ALj}AT zV9o(%0Ck+X+w>a1?5I-F;%i66c7xp;M7G1?^QhY*B`iv05c0ApZHKEwI~FBeBg6MI zgXxpO2aLR0Q@?3yIX||pdg;PCWw0S#ovRQ-SexcnT@m8xRZYMiS?nJV^sMVUq<(0s;nt!`( zHOt;MzSlVS1=A7QpmzBE13w%7!hpHM-X6G~Z7_buHk;lWu0C*b!+_hYy1KkmPd@SF z6D`&!eGWi-Zy|cfo;;qy!|D;7mttS;AYU zK3H=>Z?)#FRj?&Jy4hyz1$z^a1K*Vl^&T^QwF*N$IJzoqL-$nIng)jSgSmy?YIR8L zz##~Hj_BtDhp5%2IH=lU_Y2dIFxqsl6{a9E2??9c*>f-q_3XN}v7rAGvu5J0zWT&0 zwYvW+1v9(8+OPi;UAxW7J=y=2X;9XQF>MHC_+IJKRGB@k5R>AoR1PBb0t81Z08w>Rs zz18Z-T+**asF9>}Q>!&qTg`c_H?w1)NE&vWjB7{E96WwRtsZuu;j5T~!-pM@>2)Oc zhf+1<31A2kSOn7$=6}$@L2MF6Bh|}l zB>t5DXn8 zj43KtHP~y%?Sb3Fb~e0sX3vLsJNbuu-W%KS;m-7(@15D{aca3N$-giF1X>mf3^b$&2*xpLp4 ziKZ5;cS0?QKkh6S-L%%+{-mbRgGLbGl;jpMItxC)9@X8)CBpbZ8JunsNOQNWOVrUJ z&7us7k4Ij=W>Kh7N6wgXrPKNRPW@yy$EREPjenPE37Z%wZKj<6MhTAS-}be&qA`q zR5opGBm)omEgXj@fm#jo4%vEO;AxD`J=rM33hMkLON0Y~3J(H{FuyQ}E-b2xxtq(h!>usx=*SfF7F5^$U_Bzwh5nZadF0Z5 zai&WE875<_N@5JO6_?g1T_T+1?O;jnLauShQ>RxoD=+4N?)&m)+EzL|u_p zofuHF^UNu@tFszB0vqy7pjWH2L0gQGNCNV4Rq!f-7EWDV0+tL8`1ta|8C@PJC{77Ea{>msi274Q{_=n z7BK;G^5h{=*`t!>EIG;|J2|B+C~?MH5=JF3jKnZlg4GfqpU0i?38UgEH3}u%o>@$0 zC$bPZd9lm<1Pf7dLP0jXOj->$#RaH`Ek&inCFkYy|JhUB@=FxGoIEP3C9yhcPhv~U zF91bK{eqGiWUUc)n+8~J8t})R1p*y3>kzkdU4kwlj$Vz8#rxvodMDsdZEW1Pj}mdc zCnqGtG1SsWhXP&i;(d*cD5Oemf5ihezTX25IQaMVf(?Z%C`MDCAUw%PkyWJ(P6Hjl zLzI%PMy83mv6BxQj=9n>Wnx5RngZh|QfVmpi_qIKKnU}ghPX2*xYabo?RWNE+G80O z49~gO$>-eLW5d!pJ=gc_v8<<)Q)(GXwjj534nqruW?C6{_CPbHwvPpHgxhB zm)(ifhD=F?%cqW3abcTmIJ&cD_~1R)X_)D-q3R7t9kvYEkRCtss0-+a=Y>@P+fZlK z<#XqSOr0#zhQ_ZE$Oq30sRZi#w}Fq+9DxyPXF#GIjA#dB$lmi63^@Zb16p!$cfz_v zjS}I?ryg=9UOZSBg-{e)4XC;}NtZyToXkO?{B~+HNOy6Pa}w-EWPURBhKez%uiMtc z(sdauQ-Zw*bTq_68~SZJ2N7!f7|}Tbf3UyW0Z92=04YB@3l101PQ4%-l6KDtk2fzE zarwZVuSD2<;1daFWpWB2=YWg`b!}9BF2jyI42$WbR;-=au#!9FsQd;><)eh#L${sT z-cSxjTDcRh(c81nRBX%Iw!Hx!+LUTQiLM|DRwD+Z5hJ_Ny-_O*=79UEasj1aHM*DE zj|QfqdXZUEPL2-@RwD+(k>&t_3BT}d)0`v5k&_+drtM-0{n(~S^RS~j zVHVm^6_ZeaZ%Xh&pNN)B-P>=nH{TQ=U3%u5E$PKo&PMg^7D~STW;(ZDDMX8o1d{mk zf=t?ZY4{2?@PF`^YF;H3oy&2K3_=c0YB{*i(aW#yu@NP!otz9j_>_)A7L&=^DxcX z2L1|EbtbVOAv!cV^w}|RfetaLAtqNriU{EWjM4s_aP(e%J_+W+0mGl7>h>Ma9-f?B z*RAfx{Av3#3aj$#BAE{vgsJ^k{2s;Auym;d;iB-L@eQ;0QTH6_SU$tgRf<4#tq2!+ivq z3&SW+f0g_ege2r4;NZF$cf;fSZuq3npcOpqZblyHXL7Uqy*{dK696A;pR=xFFnT>X%%&r31-@>5;txjhwF~P#r|c8v zUh3oE3n%8fOidGMSr5x)?j=4Beu>$%DMF%!Ic!Y;0eMwTAEn*AVQdKPAS!8nXGs22<4pyEwjY&;IW(!-%W z9XD|R z4+~}PMLrG=u?t?}8Cd4?19^(G?^&bEYy319rl7Mh6*a*%yb1dOYlfn85f1)HNazqU zDD?|{_wu1beYyIa758Ebm%Ng=LH)_j62yWTW^^ho0vhaQ`7irHfrB^piovQLGQaeq zwLUC{(JCKW_v7II6f1h%h8q__LC?WIi;Tdso`}edh)7!6!y=e_nU90>+2kL74;K1d zc3Op#IJ=yE;BpwpO(U#8?&U%zW@PTANe*5a89_EHn5|SCqpIoMfO1at>$Z z3{G^yQQW~N?yw8*>IVA`atdd5=62-6qX19v;(XG)A>8!zB38`YGM|J0h<@9$>^mB^ zRaL3<4KEzF{v`An??8n2@^YAa$gCsI_=axtkAqL@pl(4y0pvPT@rg4lU~XB@!SC_( zd;a-p?{)-HYIJBv)t=hj<%LznaMhL#*TR7tbES9~c;MxY;_SA?b=mjco0naecV*0g z-a!z|=-F@!Y3^t3F`8Z(VE+(Sq5ljbu`tx`@~xcj5v)(LD=g?w{9u=}0h=7((u zK5h#q>SAFcq7|y-tu`IeK->l-2VYl1Yk>}9eNYW84q}H{5v>hE+QF~tpkLWcS_3r8 z<>NM!&0=IBa<2y>2k%74PlKQ+bE-Vi<&%w#3KIvCW{xH4P!&1|O+I!WJ()O|q_e?^ z0~0SN`w$x_I)i|znGeuhzC~B6^rAd;=z%KoDRAM6a5r%9ONGIR)~b>V+d{TTW$wkV z4*o5W4=CkYgX%&SVM%iE^^0j;P~qaGg^Our5G!QMkf+r_uEql7mn4 zMi_OFH^h*|2qxU*Z!c0vI3i<`up|*VS{T%pTtm!CIJ^!V^hjaDm@%Qo@Mu@Q<17jE zq*5pQYp0>g524)sgjx?%ngiRhl!u%OXfY40L)i}gaR(qUcG*%a*IBAAQ_u*jcvumm z^*gkZ$H5g1QQ+z=5C#iW$vvFV#lc4|S_n7rg^LumfSkke4ahB=9K;>Gse^vwfM7e* zE6UI8e2?70*-l2T;40v3>?h>;4fxtY-g)>q_zvL>PHH{j^(_Q6^5)xqkiKbKpqSPH z80_qzZlvl#inc`SI_UUq2mRVdt)qVGJJ?^_$KDY(+vniV}5saU7ppdW<%@uXs>}62a}Vy)=8{5a(BAQzmtUkuujhE zrd$fo@aFiIEa0Hh^$Zq5M8`zOJU*royT_Ws2Dd%&629b#wA3kN@E{HcDsfr17*2b=kJ%}cy3?)YC(x%U;p;N&f|`6@WKlV%Y0?eKZp zf2ZBb|ARWAf9$NasiO-e0mhH@cP6WPfTA<4+iMJ2x7d%d2jKOAiqy7{5UAN7X{9lB z%@X8~8rXlboeID5-w7{1(p4aI!Tz7;)e-uMQA39c>4wc@B+-y$gGu41pJ1WRCs@jJ zh?ehYDnhZ8$H6yrz{m^KTp^Re(_EmuSIM4jfS5+u9dxR7D0dc~?dkPP4+O9#U=~yIl`+qz5 z!FF_o@c(x3=ixj)>_D%WhGE0WnVbz{$B`$;atH6;0nu-~B{?5K&cQcn3QPEsv()@l zO;=dag;`oIW=~Gm_H89yA??3#KFB&>y^pTYkb25d;_tpoBQouD!~^D|WsI5AgTk5x$fB#Myg{JjBTl+`%UVtW&kh zRf`MZZCD65@x|nW2=Si056KJB!E+%5zH<}Qh3{zk&~}jQ_kk7s&o7`OzQym7yYPIq zBgu;ayetB!3ss>;guZYE^o0eN z#U%C?QXDfe@*gA#j-I$jgo+XBLYF92T>RYgzYp*HflRFnAQiRa2GJRztV6K#!!!az zVgK?+#s4j^3xIXL_Ambiq(s|H>xdW@5*-w4ik@=tH#$)L4Ts9`^OvDA{Jfex%-QE` z3G(D^4s~LHeyZlI?%?g~47+q7V_{o{cIB_Z9n^XH!T&-CZuCus9SgxM$#z9HEC(-d zSF`8f?{}ar{IG+5q%ABAh6=K9FCqF|j9)XwmBXA^N0*~<}>=8y@6J!=rE;`66O_KJr2&Z$t!TP2q|NL!SqO+FtW|4@p>cH~JW$9K4Ux1%BdP6wJEFdmOVa@*5}r zaR)yaB-DCv;`X;fIrxa4J>dGSk`s7Oau{blnA;cJ!C%+P;5JT;da$0%?Mm+8Ycyi; z7WdZ~I(SrM1iTC*;D^`~9*0Deybj6xkRFPu5!k{@PtZs!sAwfsSCy2Iq=Q@$o7BgU znhJm;ldjMh;s{?r9Z8m*fu7&hMh)QZ*BL?=igWF$3?YAAu+H$jLY+U1b&%Kaud3=R zs3=-hcjtu;k6I5VEFWFtU~dZ+REEtwQS&Y*8XqlUJgy8>QV^mk`kp$J5)7# zAS-~X@x0gTrJ~f-F>YW{fh~U$vivTzQUP_ptK)h4(L>WQsA#onCoNW;q2(c^Jshq; zd>!ix)z*l8ehnd2v9&|txmo}pa+jG&c$Pc(6CLpXEX`2@uH?dTf?=l#w<|f{f^Zl` z<;nrhDMa5z6f8r<#;s9^+p%)I2+=Xja@Bszfo!GQZc{m;A&M9plSJI8!ir2u zDL*)obBe!FRBqlc0z_5xL{3~Pc_jFFBD~Q7TPHh_8rb!L^UFk_4Md6(!Jpa-!(o<} zFJG9Ft*o!CN#Xnn(FYMVM0BYJNl6)vNG^xlP_mWi3WDLy4SSEu$fcWHyWO*yYy4(2 z?(!`Ea##GPg-soV<1oviA%EMOtxPmNxtH@#u+x2rsUd_T=7z}_BPn~oQ}NGO?TSa` zp@VRaoOnN}rrZ%WWVs2u9fa2NYU+uG5h$pwS350<;2d`E*m(iR zrlBeRhIYYi)u4fcSh&Msh>#hrL27*>I4Q2^dA<~?pl|X=S+zauSx0aujmveG8O@T( z_|KGa=CVj^od5Rj!is{`dD&?c_sL{VGn%S5XJ$xJ*NHNpc&~^RMS*Sxq)THZY1k*S zbYKic`GNnH8wuSW85eE>la%NTgkb7-M3KAB=_)BVhV0Ew`+=fDnbTe?Ik|n5MN%xr zy)q9uh{BvSRA3D-qCquHkyWYb;pgG9*C~8KmwSfG((r#Na!e%H$Ii&$?6mn5KEs?A z9yWajLft7tBTX`oj6`8h8Y*;D_OMAOOQxQz8^?T7k1&LoUdpUlM(hf#|HGO_1cA*l zBb zAZ;AcAO|&KR~C@O_->lq><()PNOA>{tsw9zpRB>m?mGZbi1&&-01M%rv^a!4L~XGE zAqxJ~L)1!A){l~M@5LX=O8k940#5{BxhdU=oH=`Od62qxzd5^VzrDNyjR%y=%7B^Q z)AP`A%%|2sO&t5zQ9Q!HKqX22eZn86x&g`)(NHyKe^;54z1*C=eEI4{m6DR{ij`QB zRKPk2@8k)~8XlQJTOW_EAnTCYDp>m1Ywg7WGeC}QjH{CHC>jb_f_P(bu&5t z6?nGTgK2lA4-MsrfA~7E?I7YGnx~`V^nv5d)7PNQtJ&tyaoWfE$H2cC>BB_Z*V2Q~ z7K1_mET5Z#kSuZMrXW1a!>-(rg_p_F!uJ(<;bn{44ZAL4A^x;*D774CUPuuW%d*Ws z;&ckv2$XA$(2l0sS2O8Ml5)9*M+hpVQ%#aI#(*dlk+3ouI*O?-DbMNvV}{6aX5Bx) z%8IhhBXGjB|9aq@Pxy61N>C1Ph5i6B#Jez)7NHQ4r8Bc2+&P6mlrjI(!e}6xQ*#SN zbV4L2QG_@LW{rraH|;%1g?h2#80r~xpiUHU3L7v5Xpdpspf*ilJ?{f;XjwJnm5S`oy%_yKcuntFxb&e>*NKF-y(Yqo4h9@$5lc?3Fr>9qo9$z6( zQPj1*!}WLSIZrg+s-F}!17U(MN4Vf6#s}ZzJX){5VEkBAQ+UMh5ZqUj_g?pO)*`!S zBmW-|)h_Zwm%zk%cvz@$r3j{eGmgWcV&S|HsVlLfoAcAyuO)+cC&famIw|obW&VcXpUR7)SMc?b7|CJlb zT#%)qTgS&XQPW%Fr?;lO=>q?}W4SXaCr46h?#6U-`WspRbwlCqLTn*~CrA4m3I&sa zluY!Nluu_GS;g+c>079si4KSjmV&T@u>!(2G3iPYc$AkZyO_cOqHdglkc6nJk}^{X~dcg{2VYX$SX-l*umG+qndYS$+lC!kpd8_ zxSt55Jt}&yG`r@2zC#9gKCaaXxj+@-2Sqdo1Jh&y_gueKOQp^EedhTW)YxvHYRxOp zvsQ?s-L9R*QMKZx0`usAopsE>TDg`+!cD4uS-_{A>WY*eNNDhB*y(m!uL3OY@Z~6e zIT!a*iC?yPyV;g6!*sFM0F(dU-wyHbyr=$w2iC~bKgyd|xs_b4jIA~0YUi5zdqe?^ zd3u-9{J+D-q6=oTU{2xKQyM%D2g|66)ZG=P;P48|Zi~UhIeh9uDAF^YG|Y`=rH>S| z{Ee99|7$EFjeBa52%VEYO4P1T4;lL}71h_Hv`BQO>c3{DiRyKzt^#L!VY6-X)Uwht z&L4Z_)mP3UC+F~LCJp8M3QYAW{&^1fpX|3&cOnIXfKQ#;DkZooe}e+=D|`+f{N`X? zc3$>2`Qd-(f>Tpy>Nz*Z0*4>_+ib1T9Gn7DJ?ys0EDh(W!tmpE>G$RCshr8|NNY-Vy>x{c#;89+Sk%JiZ3_%vvTTr=Z_t+W}iA+3GrO;cMiy?iFMOI$%ij?JVo@a_2Pe`qLqbqoT5Py zsS*q1J_T3ed>v*iF9|Mn>!yvHvQ|B{it`rRX4}&*uX~wuCsI}+T+i6@`j$KK!JG_& z;ia2Z+h)$=v1?bNAVWK8l;~TfQnE$$5QT=-)Es196;x9r=J96fr;I7RyBgu>qrQANBx%4HWiIa+E{{(t`Tg#H@_7C(%Od8<2 zcm+z~&fSplbf4)5jbl~L?|3fd$Zca{pW{5g@9WvCaqpmhT6EcI$K;e~Y!;DxZ^94V z-%EyWrvBmXAD&96NA;Jnha&EK;G$UkkFJ|>dT89CYdHVA{A}DY{9Je%B^|U2E#fD+ zV;sM}`>iXl%eY}hic_WkHQ^D7I_%pz>?_i3eR$7j6V``E{=ahwk}S`@ze*8bJ0ekL z_!)fP2^8bhuZ)R4U8h^xRMZ7--liS(Y}-3-ZPG&~Roa%&E!1RGi^0$6a}C&=1D{xYy5rLqA81uQ zpReT^qt+CREPt`_^-)t^JZ|ZQI?~8e+iv*Ki*OsdAx~L2^0cLEQbB7OZ4I{$iVgM( zTe~i2yb7e-%Ese39{EXk;Jua6@eX9?&%=8wqvJee1uSeuEGxVqZeT|}dMoVu6y%_% zrnkb@Z$J(hN^gbTaw~Ez&El=F<`&koCzMU}rkyS`+033jwKydijLxY3;C*^$FghYD zMssF}QFY8>DUf8v+0u-Fc{)7~08nNrD8Mg);7KjbBvnKYe57La%BAHwFWp-q72xZ- zU(en*%rHRB!;eiL`oRz2)7}prdC5JaN^d=O-M7JSj0)cV)1UE!TP)2jYC3)e*jy}= z?nr0&ospV9FP-5hM#||-r!NW=7GaCAF}}?DAotAE+FNGNAm@tX4#51I)CDgJ^Jy@& z{^JaWXP?_De$Ho6{=xfO#c%lm(oW~r(c1q{htXPpN~jbSMseExeo6^H3Nu;-v9UchPiR7;p8s`Z_L|JpccGtnENtTGxCDh*FPP+ z>Z1ZfbFKRQ$GWO(5cy`q`Xeh$#Vej=YfUOEST%pcGat>(U2x++ZJ>7De%-&`>d@=JJvH;r&k5KK0=Ksxb)DQdau!HMO~G*F5@I@(Sn5KGE}69 zPv>sh^wC2nYajY{%$OIy`R1Fjuz#sNYFm2rICSXrmtXGG=Y6?bpF8{gFF|aLdCZt) z<7Vsi-*0;4n{OUDS-a^8cb@~@YbQiUqsx)6!f*aZbME0=s}67aN7c=nZoT;*_&?!U zavsF4rDvRH;7^f~I_S*V(>Z)ZSbbQ%r2-bF3VLTbInOT3c4nz-9&(=i<>9)lUJpO? zaFmlyx%}a%hH1{b9(&k{OMUdC$`tsvl$NbMR@?IPvBJfBva{~W4jZsPD|dFxK#;Ty z`>4{$XJ4$3$*VycbiOUVyxCz!cyS)ms*2YaL(n#@>*2%+OdUpAnZ@m4+gyuKjq)?oj ze%Y0=(OLTI?q4^a-aTg1sa<2yp=68bwh;t%tY-5TK@!9dx2QF#rZ+x(Fl6PvT<50f z74!I}jVrrv+|+I53Vw3siqrMKzHTzs-G8hW1L7*?hlI{s-(uaMHtl)SIC1Za(7&VY zf}oA)>D;stawIpG*l^@kGw`z6XFvhpaEqe6^wLXq`(p~dkVJx?{KE3jBS(Ho!fQfv z(&|ZgDPQv{#aa3_|5~Idrzj;`L@x#8bZo}vErQ|<71T-q-usv4fK)@spD#ef{;9iLrBcu9A(TAll{`Z_vjXM;X}8We!F8xm!Mf;{}beNHdV(@Ot^PqnAJ4VI9d`ATt#K%WG zFH07DE!`Iqzii59pG%Kb?aQqGy!y~*$Ad3D`Zc}NBR@V-bvu-`VNX2CgPwr4$v9#zPRUG1Rm!2$$q96%m!!)algXN!iS3k?X=Pw02Ig#vMy(Um6nre% zs9`@*_4OyTM(|IxV15J9TqsfjXO>im>8Yu=?btai)i8WmOlsK!}2El^Vp1qGJW)QDd2Sxl8>mNE_@vI-X)ShE3ckcL7-YRqM`S?WErnW0&$+_MK4 zgFj~2W3XH;qRrs~A)hPE@VUW|Gss}TMWDZ-1=dC=b8j7&8}oMW!X0MaRkeS&X}{gRJ1=+Q z?p?P)i?nOE-F~&0mp(Z6e&WCU$Q)quC#dODRa?8iYGUqpuIk#F`%ynXfYm(;I z)U0`Wl;y*@mQ`!l48FhSmo-m~vMd7e=-9aKyK8HA?as4e(A_iw+hxte=K4j^YYSB8 z%C|PirPJ5wAIlhKxMuWzeN`xH&b{@D$8S~pFIV3xxZblBPSx9L z^S-3lqi4>16;*pt)Gc9QKOH)BlYX{cKQ+3?mye%0bA0}Mn|=O^FV3GoUqnf<+oONg36()v#zfGznkXHol{dYchi6W z`@LRd^fk4V+Y}Y`l^DL3I)LhTPku`;jk?goV}KL)SIzn{QqmGp4RNceb@^ z_Ct|XUp{30GE&b9AXB(8_e@sIz#ZAY)P@ak4y3>OrpB-!wRS@AC#7Y}3KxHt?VN4T zG9UXn>%OMO+TtRcy%@Wd6&FFX7Zhx_2O+%7vZaqSHZ?9?X1CYC87MoeR2=z{Qp^IT zqheuDZEY|bj&Rl1)@ZFF?lPKkvukQh(;_3*Wofw;-yC!VABa-7POHXnq8sQhBl5Mi zH0~i>Np@CQY3)69b?@!3y8fd|eRFR3l!@UF&B={^cuMpNSxV_b!4^|1@Cd^A9up2J zV%8hMdVN!i^W3@mp`VO97Zh~v+&TL?3CAFO6IfANoXRI?9&}cUzJjUY=gz@1hW=PY zOa#%1k8%WMGmZ|mwbc0>$Th*#4Dv)Deq7F{SKk1mP0h*`(utLoMa7FBxp~VH)HtJX zyI#YbkIa?FXH71atD2qFJ$qz4yE^mmlB$0-f4t>z&F2HMyPJDT%ve?R>C#QV)TyUl z?~7^jWDA>H;ari~QR`WV4-_H zY~(x**Dzz!B)za3lzByHIPXX)uRz-$diSoq2ToVL zLkH6fiftNq_uxU&iNUcHXSa4skKR!I8cjVAOfop?iJsFE@9LS|z(=Ph_UM^3p$E?$ zIe|}5lSZdPws?$7ccafp3+ruRPgFFk%aTT~?lCRtnx470@WcW>fhYDz$8Ob;6l8urDN z$4-rN=9b3>hu;`JCj5c$!?4-0ZNb*yn{RwQj>TS^P##}y|3*c-3ItaYajxw4IK)_r zi@gT9*tj)O4W=KB=Sz!~PaFGAtSAm0@SYcAMS`s|c?#g5f1p^lDkn zpWx7Q3pkw|8Y1yfsr2aAL58DG-C;O0kS!N^|Q|fik~=I)pQ7my^o+A8t$WC zZvwU-;_4(cI5c&#GvIXQd>oA_Fm)uLIp>Sj zw#`8X+qah)QZB#GW@dnG7=D|`9@W_Nz`RD?ucxHby$Q}?hp=t7ptO-sLVe?PBc#Hj4Bg?-EZzq+n3q^T&3pS#_)xh6S1!=Od>5EfgS5dOiy)3^|U zqJfvdF#89g#Gr?e3Y}1Bgpwd~?XAs+EW!w~3rdJq^V?{m#8h zH0Hg#=R5a)-#KHu=bZ2Ro$vf%hg57KYo2Pq+8BT?<`kw2=M6^qSs(`P##jzsfw^BC z8X0PgD}M2q-!KX1eu0;nYCKd24T2yrV#Fu|ZdF19M-}w+t=c(ruO5_e%zEdH~{*;W4i%rZnz_3h7y3)*um61Q_D{wJ( ze?WCJ?8ICplPY0B2v-wO4thDv_Qv3b!w z8tWhHDjy5CEA@^*yq7WOt)#llu4w_UpH8qv!W#ktUX4=t^Xh^-P;!SwxcuFBW z1*@PjgTL_i2|I(ZrC3rRB7vgf!^ve6MFB_6j|8IvMF|Ln6OwJQq(C47w6vv@%O+?6 zR_S#IqXK^j$btisGqEJh{g6*!gi~|LWt3!K1VDq0)?hRf5#$K!`ed@pu)QTWOm6GU z@GJYcqu4ql&-RTE)x<;Ui+JGJwG*=%^OmZ&`pS!@m!_{S#bfGvM3mL^xAg`!mMO!7 zmKNre?2_wY8FAIdLzfr6%y-w$qcULe2sM@|cI}pCCT!1_RYItGV@=4Q^kUtpfMNA< zULxKn4);xyE@tlW(;|v8(E`&C+nnP4+XxFQWa1*|ZAR{apvC=gcC_O3*T->M^YP8v z+bti7n1DxqYHs*Pw)qS86y)VmR#ap!v#)N&gwVm={3kXGy4wEAzZ6^a!SNvc z4#WtxnnJrrAEM3%XU|Hdxc1_5=_{4F)#rOOU%syS3Zgte5i|^V^cLYmu*#&QJvmPO zTECArWtf7q#oX}G?p+g2`st@EOdUB|q$~{WbxHQze%y6X?NTZ2%#ui7Ev1D8x_*Wh j+oTTddo69Xcc#-1$o`O4Uq=h2F8z8PJ^4)gje7nUw%~ur diff --git a/deploy/index.html b/deploy/index.html index d109b73..38ac5d4 100644 --- a/deploy/index.html +++ b/deploy/index.html @@ -14,7 +14,7 @@ - + MyWonderland @@ -111,7 +111,7 @@ - + From 09f2ea230a4d61d9eee8e8da79a3b5a3382e989e Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 30 Jun 2025 07:06:48 -0300 Subject: [PATCH 06/10] important vr broken --- ...6_10-24-16.wlp => 2025-06-30_06-29-36.wlp} | 1665 +++++--------- ...6_10-34-56.wlp => 2025-06-30_06-40-16.wlp} | 2049 ++++++----------- ...6_10-13-36.wlp => 2025-06-30_06-59-28.wlp} | 1294 +++++------ MouseDefense.wlp | 1224 ++++++++-- assets/Propeller.glb | Bin 0 -> 17608 bytes deploy/MyWonderland-bundle.js | 160 +- deploy/MyWonderland-bundle.js.map | 6 +- deploy/MyWonderland.bin | Bin 1378828 -> 1195260 bytes deploy/index.html | 4 +- js/bullet-physics.js | 24 +- js/mouse-spawner.js | 47 +- js/spawn-mover.js | 67 +- js/wasd-controls-custom.js | 170 +- 13 files changed, 3141 insertions(+), 3569 deletions(-) rename .autosave/MouseDefense/{2025-06-16_10-24-16.wlp => 2025-06-30_06-29-36.wlp} (86%) rename .autosave/MouseDefense/{2025-06-16_10-34-56.wlp => 2025-06-30_06-40-16.wlp} (84%) rename .autosave/MouseDefense/{2025-06-16_10-13-36.wlp => 2025-06-30_06-59-28.wlp} (90%) create mode 100644 assets/Propeller.glb diff --git a/.autosave/MouseDefense/2025-06-16_10-24-16.wlp b/.autosave/MouseDefense/2025-06-30_06-29-36.wlp similarity index 86% rename from .autosave/MouseDefense/2025-06-16_10-24-16.wlp rename to .autosave/MouseDefense/2025-06-30_06-29-36.wlp index 9a3ebdb..61636e8 100644 --- a/.autosave/MouseDefense/2025-06-16_10-24-16.wlp +++ b/.autosave/MouseDefense/2025-06-30_06-29-36.wlp @@ -234,12 +234,6 @@ 0.0008869, 0.0161192 ], - "rotation": [ - -0.0, - 0.7316615, - 0.6816681, - 3.196286257889369e-8 - ], "scaling": [ 0.9999998, 0.9999998, @@ -1676,27 +1670,24 @@ "bulletMesh": "9", "bulletMaterial": "22" } - }, - { - "type": "spawn-mover" } ], "name": "MouseSpawner", - "translation": [ - -3.0, - 4.76837158203125e-7, - -3.0 + "scaling": [ + 0.2, + 0.1999813, + 0.1999823 ], "rotation": [ - 0.7071068, + 0.707102, 0.0, 0.0, - 0.7071067 + 0.7071114 ], - "scaling": [ - 0.2, - 0.1999848, - 0.1999859 + "translation": [ + 0.0, + -4.76837158203125e-7, + 8.5837488 ] }, "970": { @@ -1717,10 +1708,10 @@ "type": "score-display" } ], - "translation": [ - 0.0, - 2.3104021, - 0.0 + "scaling": [ + 0.2, + 0.2, + 0.2 ], "rotation": [ 0.0, @@ -1728,10 +1719,10 @@ 0.0, 1.0 ], - "scaling": [ - 1.5, - 1.5, - 1.5 + "translation": [ + 0.0163903, + 1.8593227, + 4.0734233 ] }, "972": { @@ -1749,10 +1740,10 @@ "type": "shot-counter" } ], - "translation": [ - 0.0, - 1.9985342, - 0.0 + "scaling": [ + 0.2, + 0.2, + 0.2 ], "rotation": [ 0.0, @@ -1760,10 +1751,10 @@ 0.0, 1.0 ], - "scaling": [ - 1.5, - 1.5, - 1.5 + "translation": [ + 0.0199566, + 1.8341934, + 4.0704011 ] }, "981": { @@ -1899,797 +1890,715 @@ }, "1002": { "link": { - "name": "RootNode", - "file": "assets\\City Builder Bits\\Building.glb" - } - }, - "1003": { - "link": { - "name": "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 Oey&F!bG@B+%6|jeIjN%n literal 0 HcmV?d00001 diff --git a/deploy/MyWonderland-bundle.js b/deploy/MyWonderland-bundle.js index 71a398b..04fdadc 100644 --- a/deploy/MyWonderland-bundle.js +++ b/deploy/MyWonderland-bundle.js @@ -12704,6 +12704,8 @@ var BulletPhysics = class extends Component3 { console.log("dt is NaN"); return; } + if (this.scored) + return; this.object.getPositionWorld(this.position); if (this.position[1] <= state.floorHeight + this.collision.extents[0]) { this.destroyBullet(0); @@ -12722,17 +12724,25 @@ var BulletPhysics = class extends Component3 { let t = overlaps[i].object.getComponent("score-trigger"); if (t && !this.scored) { t.onHit(); + this.scored = true; + state.zombiesKilledInWave++; this.destroyBullet(0); - return; + break; } } } destroyBullet(time) { - if (time == 0) { - this.object.destroy(); + const meshComp = this.object.getComponent("mesh", 0); + if (meshComp) + meshComp.active = false; + if (this.collision) + this.collision.active = false; + this.object.active = false; + if (time === 0) { + this.engine.scene.removeObject(this.object); } else { setTimeout(() => { - this.object.destroy(); + this.engine.scene.removeObject(this.object); }, time); } } @@ -13366,7 +13376,6 @@ var MouseSpawner = class extends Component3 { static onRegister(engine2) { engine2.registerComponent(ScoreTrigger); engine2.registerComponent(HowlerAudioSource); - engine2.registerComponent(MouseMover); } time = 0; spawnInterval = 2; @@ -13417,6 +13426,11 @@ var MouseSpawner = class extends Component3 { spawnTarget() { const obj = this.engine.scene.addObject(); obj.setTransformLocal(this.object.getTransformWorld(tempQuat24)); + const angle2 = Math.random() * 2 * Math.PI; + const dist2 = Math.random() * 5; + const dx = Math.cos(angle2) * dist2; + const dz = Math.sin(angle2) * dist2; + obj.translateLocal([dx, 0, dz]); obj.scaleLocal([1, 1, 1]); const mesh = obj.addComponent("mesh"); mesh.mesh = this.targetMesh; @@ -13581,40 +13595,13 @@ var SpawnMover = class extends Component3 { this.pointA = [0, 0, 0]; this.pointB = [0, 0, 0]; this.moveDuration = 1; - this.speed = 3; + this.speed = 0.2; this.travelDistance = this.moveDuration * this.speed; quat2_exports.getTranslation(this.currentPos, this.object.transformLocal); vec3_exports.add(this.pointA, this.pointA, this.currentPos); vec3_exports.add(this.pointB, this.currentPos, [0, 0, 1.5]); } update(dt) { - if (isNaN(dt)) - return; - this.time += dt; - if (this.time >= this.moveDuration) { - this.time -= this.moveDuration; - this.pointA = this.currentPos; - let x = Math.random() * this.travelDistance; - let z = Math.sqrt(Math.pow(this.travelDistance, 2) - Math.pow(x, 2)); - let distanceFromOrigin = vec3_exports.length(this.pointA); - if (distanceFromOrigin > 20) { - if (this.pointA[0] >= 14) { - x *= -1; - } - if (this.pointA[2] >= 14) { - z *= -1; - } - } else { - const randomNegative1 = Math.round(Math.random()) * 2 - 1; - const randomNegative2 = Math.round(Math.random()) * 2 - 1; - x *= randomNegative1; - z *= randomNegative2; - } - vec3_exports.add(this.pointB, this.pointA, [x, 0, z]); - } - this.object.resetPosition(); - vec3_exports.lerp(this.currentPos, this.pointA, this.pointB, this.time); - this.object.translateLocal(this.currentPos); } }; __publicField(SpawnMover, "TypeName", "spawn-mover"); @@ -13796,67 +13783,74 @@ var WasdControlsCustom = class extends Component3 { this.right = false; this.down = false; this.left = false; + this.centerPos = vec3_exports.create(); + if (this.headObject) { + this.headObject.getPositionLocal(this.centerPos); + } window.addEventListener("keydown", this.press.bind(this)); window.addEventListener("keyup", this.release.bind(this)); } update() { + if (!this.headObject) + return; if (this.up || this.right || this.down || this.left) { - let direction2 = [0, 0, 0]; - let forwardVec = []; - this.object.getForward(forwardVec); - forwardVec[1] = 0; - let backVec = [0, 0, 0]; - if (forwardVec[2] == 1) { - forwardVec[2] = this.speed; - backVec = [0, 0, -this.speed]; - } else if (forwardVec[2] == -1) { - forwardVec[2] = -this.speed; - backVec = [0, 0, this.speed]; + const direction2 = vec3_exports.create(); + const forward = vec3_exports.fromValues(0, 0, 0); + this.object.getForward(forward); + forward[1] = 0; + const back = vec3_exports.create(); + if (vec3_exports.equals(forward, [0, 0, 1])) { + vec3_exports.set(forward, 0, 0, this.speed); + vec3_exports.set(back, 0, 0, -this.speed); + } else if (vec3_exports.equals(forward, [0, 0, -1])) { + vec3_exports.set(forward, 0, 0, -this.speed); + vec3_exports.set(back, 0, 0, this.speed); } else { - let angle2 = vec3_exports.angle([0, 0, -1], forwardVec); - let xPolarity = -1; - let zPolarity = -1; - if (forwardVec[0] > 0) - xPolarity = 1; - if (forwardVec[2] > 0) - zPolarity = 1; - forwardVec[0] = xPolarity * Math.abs(Math.sin(angle2)) * this.speed; - backVec[0] = -forwardVec[0]; - forwardVec[2] = zPolarity * Math.abs(Math.cos(angle2)) * this.speed; - backVec[2] = -forwardVec[2]; + const angleF = vec3_exports.angle([0, 0, -1], forward); + const xPolF = forward[0] > 0 ? 1 : -1; + const zPolF = forward[2] > 0 ? 1 : -1; + forward[0] = xPolF * Math.abs(Math.sin(angleF)) * this.speed; + forward[2] = zPolF * Math.abs(Math.cos(angleF)) * this.speed; + back[0] = -forward[0]; + back[2] = -forward[2]; } - let rightVec = []; - this.object.getRight(rightVec); - rightVec[1] = 0; - let leftVec = [0, 0, 0]; - if (rightVec[0] == 1) { - rightVec[0] = this.speed; - leftVec = [-this.speed, 0, 0]; - } else if (rightVec[0] == -1) { - rightVec[0] = -this.speed; - leftVec = [this.speed, 0, 0]; + const rightV = vec3_exports.fromValues(0, 0, 0); + this.object.getRight(rightV); + rightV[1] = 0; + const leftV = vec3_exports.create(); + if (vec3_exports.equals(rightV, [1, 0, 0])) { + vec3_exports.set(rightV, this.speed, 0, 0); + vec3_exports.set(leftV, -this.speed, 0, 0); + } else if (vec3_exports.equals(rightV, [-1, 0, 0])) { + vec3_exports.set(rightV, -this.speed, 0, 0); + vec3_exports.set(leftV, this.speed, 0, 0); } else { - let angle2 = vec3_exports.angle([-1, 0, 0], rightVec); - let xPolarity = -1; - let zPolarity = -1; - if (rightVec[0] > 0) - xPolarity = 1; - rightVec[0] = xPolarity * Math.abs(Math.cos(angle2)) * this.speed; - leftVec[0] = -rightVec[0]; - if (rightVec[2] > 0) - zPolarity = 1; - rightVec[2] = zPolarity * Math.abs(Math.sin(angle2)) * this.speed; - leftVec[2] = -rightVec[2]; + const angleR = vec3_exports.angle([-1, 0, 0], rightV); + const xPolR = rightV[0] > 0 ? 1 : -1; + const zPolR = rightV[2] > 0 ? 1 : -1; + rightV[0] = xPolR * Math.abs(Math.cos(angleR)) * this.speed; + rightV[2] = zPolR * Math.abs(Math.sin(angleR)) * this.speed; + leftV[0] = -rightV[0]; + leftV[2] = -rightV[2]; } if (this.up) - vec3_exports.add(direction2, direction2, forwardVec); + vec3_exports.add(direction2, direction2, forward); if (this.down) - vec3_exports.add(direction2, direction2, backVec); + vec3_exports.add(direction2, direction2, back); if (this.left) - vec3_exports.add(direction2, direction2, leftVec); + vec3_exports.add(direction2, direction2, leftV); if (this.right) - vec3_exports.add(direction2, direction2, rightVec); - this.headObject.translate(direction2); + vec3_exports.add(direction2, direction2, rightV); + const newPos = vec3_exports.create(); + this.headObject.getPositionLocal(newPos); + vec3_exports.add(newPos, newPos, direction2); + const minX = this.centerPos[0] - this.boundaryLimit; + const maxX = this.centerPos[0] + this.boundaryLimit; + const minZ = this.centerPos[2] - this.boundaryLimit; + const maxZ = this.centerPos[2] + this.boundaryLimit; + newPos[0] = Math.min(Math.max(newPos[0], minX), maxX); + newPos[2] = Math.min(Math.max(newPos[2], minZ), maxZ); + this.headObject.setPositionLocal(newPos); } } press(e) { @@ -13887,7 +13881,9 @@ __publicField(WasdControlsCustom, "Properties", { /** Movement speed in m/s. */ speed: { type: Type.Float, default: 0.1 }, /** Object of which the orientation is used to determine forward direction */ - headObject: { type: Type.Object } + headObject: { type: Type.Object }, + /** Maximum distance from center on X and Z axes */ + boundaryLimit: { type: Type.Float, default: 12 } }); // js/index.js diff --git a/deploy/MyWonderland-bundle.js.map b/deploy/MyWonderland-bundle.js.map index f4dfb36..d1da649 100644 --- a/deploy/MyWonderland-bundle.js.map +++ b/deploy/MyWonderland-bundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/howler/dist/howler.js", "../node_modules/earcut/src/earcut.js", "../node_modules/node_modules/wasm-feature-detect/dist/esm/index.js", "../node_modules/@wonderlandengine/api/src/property.ts", "../node_modules/@wonderlandengine/api/src/decorators.ts", "../node_modules/@wonderlandengine/api/src/utils/object.ts", "../node_modules/@wonderlandengine/api/src/utils/event.ts", "../node_modules/@wonderlandengine/api/src/resources/resource.ts", "../node_modules/@wonderlandengine/api/src/utils/cbor.ts", "../node_modules/@wonderlandengine/api/src/component.ts", "../node_modules/@wonderlandengine/api/src/utils/fetch.ts", "../node_modules/@wonderlandengine/api/src/prefab.ts", "../node_modules/@wonderlandengine/api/src/utils/misc.ts", "../node_modules/@wonderlandengine/api/src/wonderland.ts", "../node_modules/@wonderlandengine/api/src/version.ts", "../node_modules/@wonderlandengine/api/src/resources/material-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/mesh-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/texture-manager.ts", "../node_modules/@wonderlandengine/api/src/webxr.ts", "../node_modules/@wonderlandengine/api/src/scene-gltf.ts", "../node_modules/@wonderlandengine/api/src/scene.ts", "../node_modules/@wonderlandengine/api/src/engine.ts", "../node_modules/@wonderlandengine/api/src/utils/bitset.ts", "../node_modules/@wonderlandengine/api/src/utils/logger.ts", "../node_modules/@wonderlandengine/api/src/wasm.ts", "../node_modules/@wonderlandengine/api/src/index.ts", "../node_modules/@wonderlandengine/components/dist/8thwall-camera.js", "../node_modules/@wonderlandengine/components/dist/utils/webxr.js", "../node_modules/@wonderlandengine/components/dist/anchor.js", "../node_modules/@wonderlandengine/components/dist/cursor-target.js", "../node_modules/gl-matrix/esm/common.js", "../node_modules/gl-matrix/esm/mat3.js", "../node_modules/gl-matrix/esm/mat4.js", "../node_modules/gl-matrix/esm/quat.js", "../node_modules/gl-matrix/esm/vec3.js", "../node_modules/gl-matrix/esm/vec4.js", "../node_modules/gl-matrix/esm/quat2.js", "../node_modules/@wonderlandengine/components/dist/hit-test-location.js", "../node_modules/@wonderlandengine/components/dist/cursor.js", "../node_modules/@wonderlandengine/components/dist/debug-object.js", "../node_modules/@wonderlandengine/components/dist/finger-cursor.js", "../node_modules/@wonderlandengine/components/dist/fixed-foveation.js", "../node_modules/@wonderlandengine/components/dist/hand-tracking.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-listener.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-source.js", "../node_modules/@wonderlandengine/components/dist/utils/utils.js", "../node_modules/@wonderlandengine/components/dist/image-texture.js", "../node_modules/@wonderlandengine/components/dist/mouse-look.js", "../node_modules/@wonderlandengine/components/dist/player-height.js", "../node_modules/@wonderlandengine/components/dist/target-framerate.js", "../node_modules/@wonderlandengine/components/dist/teleport.js", "../node_modules/@wonderlandengine/components/dist/trail.js", "../node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js", "../node_modules/@wonderlandengine/components/dist/video-texture.js", "../node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js", "../node_modules/@wonderlandengine/components/dist/plane-detection.js", "../node_modules/@wonderlandengine/components/dist/vrm.js", "../node_modules/@wonderlandengine/components/dist/wasd-controls.js", "../js/game.js", "../js/bg-music.js", "../js/bullet-physics.js", "../js/bullet-spawner.js", "../js/confetti-particles.js", "../js/hud-control.js", "../js/joystick-movement.js", "../js/mouse-look-custom.js", "../js/mouse-mover.js", "../js/score-trigger.js", "../js/mouse-spawner.js", "../js/play-again-button.js", "../js/player-location.js", "../js/score-display.js", "../js/shot-counter.js", "../js/spawn-mover.js", "../js/teleport-custom.js", "../js/wasd-controls-custom.js", "../js/index.js"], - "sourcesContent": ["/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, \u221E]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspending\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "/**\n * Component property type.\n */\nexport enum Type {\n /**\n * **Native**\n *\n * Property of a native component. Must not be used in custom components.\n *\n * @hidden\n */\n Native = 0,\n\n /**\n * **Bool**:\n *\n * Appears in the editor as a checkbox.\n *\n * Initial value is `false`, unless overridden by the `default` property.\n */\n Bool = 1,\n\n /**\n * **Int**:\n *\n * Appears in the editor as an integer input field.\n *\n * Initial value is `0`, unless overridden by the `default` property.\n */\n Int = 2,\n\n /**\n * **Float**:\n *\n * Appears in the editor as a floating point input field.\n *\n * Initial value is `0.0`, unless overridden by the `default` property.\n */\n Float = 3,\n\n /**\n * **String / Text**:\n *\n * Appears in the editor as a single-line text input field.\n *\n * Initial value is an empty string, unless overridden by the `default`\n * property.\n */\n String = 4,\n\n /**\n * **Enumeration**:\n *\n * Appears in the editor as a dropdown with given values. The additional\n * `values` parameter with selection options is mandatory.\n *\n * The property value is resolved to an **index** into the `values` array.\n *\n * Initial value is the first element in `values`, unless overridden by\n * the `default` property. The `default` value can be a string or an index\n * into `values`.\n *\n * @example\n *\n * ```js\n * camera: {type: Type.Enum, values: ['auto', 'back', 'front'], default: 'auto'},\n * ```\n */\n Enum = 5,\n\n /**\n * **Object reference**:\n *\n * Appears in the editor as an object resource selection dropdown\n * with object picker.\n *\n * Initial value is `null`.\n */\n Object = 6,\n\n /**\n * **Mesh reference**:\n *\n * Appears in the editor as a mesh resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Mesh = 7,\n\n /**\n * **Texture reference**:\n *\n * Appears in the editor as a texture resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Texture = 8,\n\n /**\n * **Material reference**:\n *\n * Appears in the editor as a material resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Material = 9,\n\n /**\n * **Animation reference**:\n *\n * Appears in the editor as an animation resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Animation = 10,\n\n /**\n * **Skin reference**:\n *\n * Appears in the editor as a skin resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Skin = 11,\n\n /**\n * **Color**:\n *\n * Appears in the editor as a color widget.\n *\n * Initial value is `[0.0, 0.0, 0.0, 1.0]`, unless overridden by the\n * `default` property.\n */\n Color = 12,\n\n /**\n * **Vector of two floats**:\n *\n * Appears in the editor as a two-element floating point input field.\n *\n * Initial value is `[0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector2 = 13,\n\n /**\n * **Vector of three floats**:\n *\n * Appears in the editor as a three-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector3 = 14,\n\n /**\n * **Vector of four floats**:\n *\n * Appears in the editor as a four-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector4 = 15,\n\n /**\n * **Array of property**:\n *\n * Appears in the editor as a list of **N** elements.\n *\n * Initial value is `[]`, unless overridden by the `default` property.\n */\n Array = 16,\n\n /**\n * **Class with sub-properties**:\n *\n * Appears in the editor as a nested properties structure.\n *\n * Initial value is `{}`, unless overridden by the `default` property.\n */\n Record = 17,\n\n /**\n * **Particle effect reference**:\n *\n * Appears in the editor as a particle effect resource selection dropdown.\n *\n * Initial value is `null`.\n */\n ParticleEffect = 18,\n\n /** @hidden */\n Count = 19,\n}\n\n/**\n * Cloning interface for component properties.\n *\n * Used for component initialization and cloning.\n */\nexport interface PropertyCloner {\n /**\n * Clone a property value.\n * @param type Type of the property.\n * @param value Value of the property.\n * @returns The cloned value.\n */\n clone(type: Type, value: any): any;\n}\n\n/**\n * Interface describing a record class used in properties.\n *\n * ```ts\n * import {property, PropertyRecord} from '@wonderlandengine/api';\n * class Record implements PropertyRecord {\n * @property.string()\n * string: string;\n * @property.record(SubRecord)\n * subrecord: SubRecord;\n * }\n * ```\n *\n * @note Implementing `PropertyRecord` isn't required.\n */\nexport interface PropertyRecord {\n new (): unknown;\n /** Static properties definition, similar to {@link Component.Properties}. */\n Properties?: Record;\n /** @hidden */\n _propertyOrder?: string[];\n}\n\n/**\n * Default cloner implementation.\n *\n * Clones array-like properties and leaves all other types unchanged.\n */\nexport class DefaultPropertyCloner implements PropertyCloner {\n clone(type: Type, value: any): any {\n switch (type) {\n case Type.Color:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n case Type.Array:\n /** @todo: Array should be deep cloned. */\n return value.slice();\n case Type.Record: {\n if (!value || !value.constructor) return value;\n\n const RecordClass = value.constructor as PropertyRecord;\n const result = new RecordClass() as Record;\n for (const key in RecordClass.Properties) {\n const prop = RecordClass.Properties[key];\n result[key] = this.clone(prop.type, value[key]);\n }\n return result;\n }\n default:\n return value;\n }\n }\n}\n\n/** Default cloner for property values. */\nexport const defaultPropertyCloner = new DefaultPropertyCloner();\n\n/**\n * Custom component property.\n *\n * For more information about component properties, have a look\n * at the {@link Component.Properties} attribute.\n */\nexport interface ComponentProperty {\n /** Property type. */\n type: Type;\n /** Default value, depending on type. */\n default?: any;\n /** Values for {@link Type.Enum} */\n values?: string[];\n /** Record definition, used if the property type is {@link Type.Record}. */\n record?: PropertyRecord;\n element?: ComponentProperty;\n required?: boolean;\n /**\n * Cloner for the property.\n *\n * If not defined, falls back to {@link defaultPropertyCloner}. To prevent\n * any cloning, set a custom cloner that passes the original value back\n * from {@link PropertyCloner.clone}. */\n cloner?: PropertyCloner;\n}\n\n/**\n * Component property namespace.\n *\n * Usage:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myBool: Property.bool(true),\n * myInt: Property.int(42),\n * myString: Property.string('Hello World!'),\n * myMesh: Property.mesh()\n * }\n * }\n * ```\n *\n * It's possible to nest properties using record, and array:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Weapon {\n * static Properties = {\n * damage: Property.float(100.0),\n * fireRate: Property.int(10)\n * }\n * }\n * class Zombie {\n * static Properties = {\n * names: Property.string('Mad Zombie'),\n * animation: Property.animation()\n * }\n * }\n *\n * class Player extends Component {\n * static Properties = {\n * weapon: Property.record(Weapon),\n * zombieTargets: Property.array(Zombie),\n * }\n * }\n * ```\n *\n * For TypeScript users, you can use the decorators instead.\n */\nexport const Property = {\n /**\n * Create an boolean property.\n *\n * @param defaultValue The default value. If not provided, defaults to `false`.\n */\n bool(defaultValue: boolean = false): ComponentProperty {\n return {type: Type.Bool, default: defaultValue};\n },\n\n /**\n * Create an integer property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0`.\n */\n int(defaultValue: number = 0): ComponentProperty {\n return {type: Type.Int, default: defaultValue};\n },\n\n /**\n * Create an float property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0.0`.\n */\n float(defaultValue: number = 0.0): ComponentProperty {\n return {type: Type.Float, default: defaultValue};\n },\n\n /**\n * Create an string property.\n *\n * @param defaultValue The default value. If not provided, defaults to `''`.\n */\n string(defaultValue = ''): ComponentProperty {\n return {type: Type.String, default: defaultValue};\n },\n\n /**\n * Create an enumeration property.\n *\n * @param values The list of values.\n * @param defaultValue The default value. Can be a string or an index into\n * `values`. If not provided, defaults to the first element.\n */\n enum(values: string[], defaultValue?: string | number): ComponentProperty {\n return {type: Type.Enum, values, default: defaultValue};\n },\n\n /** Create an {@link Object3D} reference property. */\n object(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Object, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Mesh} reference property. */\n mesh(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Mesh, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Texture} reference property. */\n texture(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Texture, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Material} reference property. */\n material(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Material, default: null, required: opts?.required ?? false};\n },\n\n /** Create an {@link Animation} reference property. */\n animation(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Animation, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Skin} reference property. */\n skin(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Skin, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link ParticleEffect} reference property. */\n particleEffect(opts?: PropertyReferenceOptions): ComponentProperty {\n return {\n type: Type.ParticleEffect,\n default: null,\n required: opts?.required ?? false,\n };\n },\n\n /**\n * Create a color property.\n *\n * @param r The red component, in the range [0; 1].\n * @param g The green component, in the range [0; 1].\n * @param b The blue component, in the range [0; 1].\n * @param a The alpha component, in the range [0; 1].\n */\n color(r = 0.0, g = 0.0, b = 0.0, a = 1.0): ComponentProperty {\n return {type: Type.Color, default: [r, g, b, a]};\n },\n\n /**\n * Create a two-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n */\n vector2(x = 0.0, y = 0.0): ComponentProperty {\n return {type: Type.Vector2, default: [x, y]};\n },\n\n /**\n * Create a three-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n */\n vector3(x = 0.0, y = 0.0, z = 0.0): ComponentProperty {\n return {type: Type.Vector3, default: [x, y, z]};\n },\n\n /**\n * Create a four-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n * @param w The w component.\n */\n vector4(x = 0.0, y = 0.0, z = 0.0, w = 0.0): ComponentProperty {\n return {type: Type.Vector4, default: [x, y, z, w]};\n },\n\n /**\n * Create a class property.\n *\n * @param definition The template class, containing sub properties.\n */\n record(definition: PropertyRecord): ComponentProperty {\n return {type: Type.Record, record: definition, default: new definition()};\n },\n\n /**\n * Create an unsized array of properties.\n *\n * @note Array properties can only contain a single element type.\n *\n * @param element The element property.\n */\n array(element: ComponentProperty): ComponentProperty {\n /** @todo: Implement ArrayBuffer, which are much faster to decode */\n return {type: Type.Array, element, default: undefined};\n },\n};\n\n/**\n * Options to create a reference property, i.e.,\n * object, mesh, animation, skin, etc...\n */\nexport interface PropertyReferenceOptions {\n /** If `true`, the component will throw if the property isn't initialized. */\n required?: boolean;\n}\n\n/** All the keys that exists on the {@link Property} object. */\nexport type PropertyKeys = keyof typeof Property;\n\n/** Retrieve all the argument types of a {@link Property} function. */\nexport type PropertyArgs = Parameters<(typeof Property)[key]>;\n", "import {Component, ComponentConstructor} from './wonderland.js';\nimport {Property, PropertyArgs, PropertyKeys, ComponentProperty, Type} from './property.js';\n\n/**\n * Decorator for JS component properties.\n *\n * @param data The property description as an object literal\n * @returns A decorator function modifying the `Properties` static\n * attribute\n */\nfunction propertyDecorator(data: ComponentProperty) {\n return function (target: any, propertyKey: string): void {\n const ctor = target.constructor as ComponentConstructor;\n ctor.Properties = ctor.hasOwnProperty('Properties') ? ctor.Properties : {};\n ctor.Properties[propertyKey] = data;\n };\n}\n\n/**\n * Decorator for making a getter enumerable.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @enumerable()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function enumerable() {\n return function (_: any, __: string, descriptor: PropertyDescriptor) {\n descriptor.enumerable = true;\n };\n}\n\n/**\n * Decorator for native properties.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @nativeProperty()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function nativeProperty() {\n return function (\n target: Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n enumerable()(target, propertyKey, descriptor);\n propertyDecorator({type: Type.Native})(target, propertyKey);\n };\n}\n\n/**\n * Property decorators namespace.\n *\n * You can use the decorators to mark a class attribute as\n * a Wonderland Engine property.\n *\n * Usage:\n *\n * ```ts\n * import {Mesh} from '@wonderlandengine/api';\n * import {property} from '@wonderlandengine/api/decorators.js';\n *\n * class MyComponent extends Component {\n * @property.bool(true)\n * myBool!: boolean;\n *\n * @property.int(42)\n * myInt!: number;\n *\n * @property.string('Hello World!')\n * myString!: string;\n *\n * @property.mesh()\n * myMesh!: Mesh;\n * }\n * ```\n *\n * For JavaScript users, please declare the properties statically.\n */\nexport const property = {} as {\n [key in PropertyKeys]: (\n ...args: PropertyArgs\n ) => ReturnType;\n};\n\nfor (const name in Property) {\n /* Assign each property functor to a TypeScript decorator.\n * This code extracts parameters and return type to provide proper\n * typings to the user. */\n property[name as PropertyKeys] = (...args: PropertyArgs) => {\n const functor = Property[name as PropertyKeys] as (\n ...args: unknown[]\n ) => ComponentProperty;\n return propertyDecorator(functor(...args));\n };\n}\n", "import {ImageLike} from '../types.js';\n\n/**\n * Check if a given value is a native string or a `String` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type string literal or `String`, `false` otherwise.\n */\nexport function isString(value: any): value is string {\n if (value === '') return true;\n return value && (typeof value === 'string' || value.constructor === String);\n}\n\n/**\n * Check if a given value is a native number or a `Number` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type number literal or `Number`, `false` otherwise.\n */\nexport function isNumber(value: any): value is number {\n if (value === null || value === undefined) return false;\n return typeof value === 'number' || value.constructor === Number;\n}\n\n/**\n * Check whether a given value is a visual media.\n *\n * @param value The value to check\n * @returns `true` if the `value` is an image, video, or canvas.\n */\nexport function isImageLike(value: any): value is ImageLike {\n return (\n value instanceof HTMLImageElement ||\n value instanceof HTMLVideoElement ||\n value instanceof HTMLCanvasElement\n );\n}\n", "/**\n * Listener callback type, used in {@link Emitter.add}.\n */\nexport type ListenerCallback = (...data: T) => void;\n\n/**\n * Registration options for a listener in an {@link Emitter}.\n */\nexport interface ListenerOptions {\n /**\n * Listener identifier. This is used to find and remove the listener\n * without needing the callback reference.\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * For more information, please look at the {@link Emitter.remove} method.\n */\n id: any | undefined;\n /**\n * If `true`, the listener is automatically removed after it's invoked.\n * Defaults to `false`.\n */\n once: boolean;\n}\n\n/** Internal listener type. */\ntype Listener = ListenerOptions & {\n callback: ListenerCallback;\n};\n\n/** Internal type for transaction. */\nenum TransactionType {\n Addition = 1,\n Removal = 2,\n}\n\n/**\n * Event emitter.\n *\n * This class allows to register listeners that will get notified by the emitter.\n *\n * Usage example:\n *\n * ```js\n * // `onPreRender` is an `Emitter` instance.\n * scene.onPreRender.add(() => console.log('before rendering'));\n * // `onPostRender` is an `Emitter` instance.\n * scene.onPostRender.add(() => console.log('after rendering'));\n * ```\n *\n * You can create your own emitters:\n *\n * ```js\n * import {Emitter} from '@wonderlandengine/api';\n *\n * const emitter = new Emitter();\n * ```\n *\n * You can notify listeners in to your emitter using {@link Emitter.notify}:\n *\n * ```js\n * // Notifies all the listeners.\n * emitter.notify();\n * // Notifies all the listeners with some data.\n * emitter.notify({ myInt: 42, myStr: 'Hello World!' });\n * ```\n *\n * @category event\n */\nexport class Emitter {\n /**\n * List of listeners to trigger when `notify` is called.\n *\n * @hidden\n */\n protected readonly _listeners: Listener[] = [];\n\n /**\n * `true` if the emitter is currently notifying listeners. This\n * is used to defer addition and removal.\n *\n * @hidden\n */\n private _notifying = false;\n\n /**\n * Pending additions / removals, performed during a notification.\n *\n * @hidden\n */\n private readonly _transactions: {\n type: TransactionType;\n data: Listener | ListenerCallback;\n }[] = [];\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Basic usage:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * });\n * ```\n *\n * Automatically remove the listener when an event is received:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * }, {once: true});\n * ```\n *\n * @param listener The callback to register.\n * @param opts The listener options. For more information, please have a look\n * at the {@link ListenerOptions} interface.\n *\n * @returns Reference to self (for method chaining)\n */\n add(listener: ListenerCallback, opts: Partial = {}): this {\n const {once = false, id = undefined} = opts;\n const data = {id, once, callback: listener};\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Addition, data});\n return this;\n }\n this._listeners.push(data);\n return this;\n }\n\n /**\n * Equivalent to {@link Emitter.add}.\n *\n * @param listeners The callback(s) to register.\n * @returns Reference to self (for method chaining).\n *\n * @deprecated Please use {@link Emitter.add} instead.\n */\n push(...listeners: ListenerCallback[]): this {\n for (const cb of listeners) this.add(cb);\n return this;\n }\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Once notified, the listener will be automatically removed.\n *\n * The method is equivalent to calling {@link Emitter.add} with:\n *\n * ```js\n * emitter.add(listener, {once: true});\n * ```\n *\n * @param listener The callback to register.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback) {\n return this.add(listener, {once: true});\n }\n\n /**\n * Remove a registered listener.\n *\n * Usage with a callback:\n *\n * ```js\n * const listener = (data) => console.log(data);\n * emitter.add(listener);\n *\n * // Remove using the callback reference:\n * emitter.remove(listener);\n * ```\n *\n * Usage with an id:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'my-callback'});\n *\n * // Remove using the id:\n * emitter.remove('my-callback');\n * ```\n *\n * Using identifiers, you will need to ensure your value is unique to avoid\n * removing listeners from other libraries, e.g.,:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'non-unique'});\n * // This second listener could be added by a third-party library.\n * emitter.add((data) => console.log('Hello From Library!'), {id: 'non-unique'});\n *\n * // Ho Snap! This also removed the library listener!\n * emitter.remove('non-unique');\n * ```\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * Example:\n *\n * ```js\n * emitter.add(() => console.log('Hello'), {id: {value: 42}});\n * emitter.add(() => console.log('World!'), {id: {value: 42}});\n * emitter.remove({value: 42}); // None of the above listeners match!\n * emitter.notify(); // Prints 'Hello' and 'World!'.\n * ```\n *\n * Here, both emitters have id `{value: 42}`, but the comparison is made by reference. Thus,\n * the `remove()` call has no effect. We can make it work by doing:\n *\n * ```js\n * const id = {value: 42};\n * emitter.add(() => console.log('Hello'), {id});\n * emitter.add(() => console.log('World!'), {id});\n * emitter.remove(id); // Same reference, it works!\n * emitter.notify(); // Doesn't print.\n * ```\n *\n * @param listener The registered callback or a value representing the `id`.\n *\n * @returns Reference to self (for method chaining)\n */\n remove(listener: ListenerCallback | any): this {\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Removal, data: listener});\n return this;\n }\n\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) {\n listeners.splice(i--, 1);\n }\n }\n return this;\n }\n\n /**\n * Check whether the listener is registered.\n *\n * @note This method performs a linear search.\n *\n * * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n *\n * @param listener The registered callback or a value representing the `id`.\n * @returns `true` if the handle is found, `false` otherwise.\n */\n has(listener: ListenerCallback | any): boolean {\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) return true;\n }\n return false;\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note This method ensures all listeners are called even if\n * an exception is thrown. For (possibly) faster notification,\n * please use {@link Emitter.notifyUnsafe}.\n *\n * @param data The data to pass to listener when invoked.\n */\n notify(...data: T): void {\n const listeners = this._listeners;\n\n this._notifying = true;\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n try {\n listener.callback(...data);\n } catch (e) {\n console.error(e);\n }\n }\n this._notifying = false;\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note Because this method doesn't catch exceptions, some listeners\n * will be skipped on a throw. Please use {@link Emitter.notify} for safe\n * notification.\n *\n * @param data The data to pass to listener when invoked.\n */\n notifyUnsafe(...data: T): void {\n const listeners = this._listeners;\n\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n listener.callback(...data);\n }\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Return a promise that will resolve on the next event.\n *\n * @note The promise might never resolve if no event is sent.\n *\n * @returns A promise that resolves with the data passed to\n * {@link Emitter.notify}.\n */\n promise(): Promise {\n return new Promise((res, _) => {\n this.once((...args) => {\n if (args.length > 1) {\n res(args);\n } else {\n res(args[0] as T);\n }\n });\n });\n }\n\n /**\n * Number of listeners.\n *\n * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n */\n get listenerCount() {\n return this._listeners.length;\n }\n\n /** `true` if it has no listeners, `false` otherwise. */\n get isEmpty() {\n return this.listenerCount === 0;\n }\n\n /**\n * Flush all pending transactions.\n *\n * @hidden\n */\n private _flushTransactions() {\n const listeners = this._listeners;\n for (const transaction of this._transactions) {\n if (transaction.type === TransactionType.Addition) {\n listeners.push(transaction.data as Listener);\n } else {\n this.remove(transaction.data as ListenerCallback);\n }\n }\n this._transactions.length = 0;\n }\n}\n\n/**\n * Registration options for a listener in an {@link RetainEmitter}.\n *\n * Those options extend {@link ListenerOptions}.\n */\nexport interface RetainListenerOptions extends ListenerOptions {\n /**\n * If `true`, directly resolves if the emitter retains a value. If `false`,\n * the listener isn't invoked until the next {@link Emitter.notify}.\n *\n * Defaults to `true`.\n */\n immediate: boolean;\n}\n\n/* Dummy value used with RetainEmitter. */\nconst RetainEmitterUndefined: Record = {};\n\n/**\n * Event emitter that retains event data when notified.\n *\n * After a notification happens, subsequent calls to {@link RetainEmitter.add} will get\n * automatically notified.\n *\n * You can use another emitter in order to cancel the last retained event:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n *\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n * ```\n *\n * You can reset the state of the emitter, i.e., making it forget about the\n * last event using:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n *\n * // Reset the state of the emitter.\n * onStart.reset();\n * onStart.add((data) => console.log(data)) // Doesn't print anything.\n * ```\n *\n * For more information about emitters, please have a look at the base {@link Emitter} class.\n *\n * @category event\n */\nexport class RetainEmitter extends Emitter {\n /** Pre-resolved data. @hidden */\n protected _event: T | typeof RetainEmitterUndefined = RetainEmitterUndefined;\n\n /**\n * Emitter target used to reset the state of this emitter.\n *\n * @hidden\n */\n protected readonly _reset: Emitter | undefined;\n\n /** @override */\n add(listener: ListenerCallback, opts?: Partial): this {\n const immediate = opts?.immediate ?? true;\n if (this._event !== RetainEmitterUndefined && immediate) {\n listener(...(this._event as T));\n }\n super.add(listener, opts);\n return this;\n }\n\n /**\n * @override\n *\n * @param listener The callback to register.\n * @param immediate If `true`, directly resolves if the emitter retains a value.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback, immediate?: boolean) {\n return this.add(listener, {once: true, immediate});\n }\n\n /** @override */\n notify(...data: T): void {\n this._event = data;\n super.notify(...data);\n }\n\n /** @override */\n notifyUnsafe(...data: T): void {\n this._event = data;\n super.notifyUnsafe(...data);\n }\n\n /**\n * Reset the state of the emitter.\n *\n * Further call to {@link Emitter.add} will not automatically resolve,\n * until a new call to {@link Emitter.notify} is performed.\n *\n * @returns Reference to self (for method chaining)\n */\n reset(): this {\n this._event = RetainEmitterUndefined;\n return this;\n }\n\n /** Returns the retained data, or `undefined` if no data was retained. */\n get data(): T | undefined {\n return this.isDataRetained ? this._event : undefined;\n }\n\n /** `true` if data is retained from the last event, `false` otherwise. */\n get isDataRetained(): boolean {\n return this._event !== RetainEmitterUndefined;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Prefab} from '../prefab.js';\nimport {Scene} from '../scene.js';\nimport {FirstConstructorParam} from '../types.js';\n\n/** Interface for a resource class */\ntype ResourceConstructor = {\n new (host: FirstConstructorParam, index: number): T;\n};\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nfunction createDestroyedProxy(\n host: FirstConstructorParam,\n type: ResourceConstructor\n) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(\n `Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n set(_, param: string) {\n throw new Error(\n `Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n }\n );\n}\n\n/**\n * Base class for engine resources, such as:\n * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n *\n * @since 1.2.0\n */\nexport abstract class Resource {\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n private readonly _engine: WonderlandEngine;\n\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n this._id = index;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._index === other._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._index <= 0;\n }\n}\n\n/**\n * Base class for scene resources, such as:\n * * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n * - {@link Skin}\n * - {@link Animation}\n *\n * @since 1.2.0\n */\nexport abstract class SceneResource {\n /** @hidden */\n static _pack(scene: number, index: number) {\n return (scene << 22) | index;\n }\n\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n protected readonly _scene: Prefab;\n\n constructor(scene: Prefab, index: number) {\n this._scene = scene;\n this._index = index;\n this._id = SceneResource._pack(scene._index, index);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._id === other._id;\n }\n\n /** Hosting instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._id <= 0;\n }\n}\n\n/**\n * Manager for resources.\n *\n * Resources are accessed via the engine they belong to.\n *\n * @see {@link WonderlandEngine.textures}, {@link WonderlandEngine.meshes},\n * and {@link WonderlandEngine.materials}.\n *\n * @since 1.2.0\n */\nexport class ResourceManager {\n /** @hidden */\n protected readonly _host: FirstConstructorParam;\n /** Cache. @hidden */\n protected readonly _cache: (T | null)[] = [];\n\n /** Resource class. @hidden */\n private readonly _template: ResourceConstructor;\n\n /** Destructor proxy, used if {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`. @hidden */\n private _destructor: {} | null = null;\n\n private readonly _engine: WonderlandEngine;\n\n /**\n * Create a new manager\n *\n * @param host The host containing the managed resources.\n * @param Class The class to instantiate when wrapping an index.\n *\n * @hidden\n */\n constructor(host: FirstConstructorParam, Class: ResourceConstructor) {\n this._host = host;\n this._template = Class;\n this._engine = (host as Prefab).engine ?? host;\n }\n\n /**\n * Wrap the index into a resource instance.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index (if any).\n *\n * @param index The resource index.\n * @returns\n */\n wrap(index: number) {\n if (index <= 0) return null;\n const texture =\n this._cache[index] ??\n (this._cache[index] = new this._template(this._host, index));\n return texture;\n }\n\n /**\n * Retrieve the resource at the given index.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index.\n */\n get(index: number): T | null {\n return this._cache[index] ?? null;\n }\n\n /** Number of textures allocated in the manager. */\n get allocatedCount() {\n return this._cache.length;\n }\n\n /**\n * Number of textures in the manager.\n *\n * @note For performance reasons, avoid calling this method when possible.\n */\n get count() {\n let count = 0;\n for (const res of this._cache) {\n if (res && res.index >= 0) ++count;\n }\n return count;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Destroy the instance.\n *\n * @note This method takes care of the prototype destruction.\n *\n * @hidden\n */\n _destroy(instance: T) {\n const index = instance.index;\n (instance._index as number) = -1;\n (instance._id as number) = -1;\n this._cache[index] = null;\n\n if (!this.engine.erasePrototypeOnDestroy) return;\n\n if (!this._destructor)\n this._destructor = createDestroyedProxy(this._host, this._template);\n Object.setPrototypeOf(instance, this._destructor);\n }\n\n /**\n * Mark all instances as destroyed.\n *\n * @hidden\n */\n _clear() {\n if (!this.engine.erasePrototypeOnDestroy) return;\n for (let i = 0; i < this._cache.length; ++i) {\n const instance = this._cache[i];\n if (instance) this._destroy(instance);\n }\n this._cache.length = 0;\n }\n}\n", "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2016 Patrick Gansterer \n * Copyright (c) 2020-2023 Aaron Huggins \n * Copyright (c) 2024 Wonderland GmbH \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst kCborTagBignum = 2;\nconst kCborTagNegativeBignum = 3;\n/* RFC 8746 Tag values for typed little-endian arrays */\nconst kCborTagUint8 = 64;\nconst kCborTagUint16 = 69;\nconst kCborTagUint32 = 70;\nconst kCborTagUint64 = 71;\nconst kCborTagInt8 = 72;\nconst kCborTagInt16 = 77;\nconst kCborTagInt32 = 78;\nconst kCborTagInt64 = 79;\nconst kCborTagFloat32 = 85;\nconst kCborTagFloat64 = 86;\n\n/**\n * Whether key/value dictionaries should be decoded as objects or as\n * `Map`. The latter is useful if non-string keys or iterating in\n * insertion order are required.\n */\nexport type DictionaryOption = 'object' | 'map';\n\n/** Options for the decoder. */\nexport interface Options {\n /** The dictionary type to use. Defaults to `object`. */\n dictionary?: DictionaryOption;\n}\n\n/** A function to modify tagged values which are encountered during decoding. */\nexport type Tagger = (tag: number | bigint, value: any) => any;\n\n/**\n * Converts a Concise Binary Object Representation (CBOR) buffer into an object.\n *\n * ```js\n * const buffer = new Uint8Array([0xa2, 0x01, 0x02, 0x03, 0x04]).buffer;\n * const decoded = decode(buffer);\n * console.log(decoded); // { \"1\": 2, \"3\": 4 }\n * ```\n *\n * CBOR values can be wrapped in a numeric tag. To handle and possibly\n * transform tagged values, pass a tagger function:\n *\n * ```js\n * const buffer = new Uint8Array([\n * 0xa1, 0x63, 0x75, 0x72, 0x6c, 0xd8, 0x20, 0x70,\n * 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,\n * 0x69, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f\n * ]);\n * const decoded = decode(buffer, (tag, value) => {\n * if (tag === 32) return new URL(value);\n * return value;\n * });\n * console.log(decoded); // { url: URL { href: \"http://site.com/\" } }\n * ```\n *\n * Decoded basic types generally match the equivalent JavaScript types. Byte\n * strings are decoded to Uint8Array.\n *\n * Tagged values are left as-is, with the following exceptions:\n * - Bignum values (byte strings with tag 2 or 3) are decoded to BigInt\n * - Little-endian versions of typed arrays as defined in RFC 8746 are decoded\n * to JavaScript typed arrays\n *\n * @param data A valid CBOR buffer.\n * @param tagger Optional callback for transformation of tagged values.\n * @param options Options for decoding behavior.\n * @returns The CBOR buffer converted to a JavaScript value.\n */\nexport function decode(\n data: Uint8Array,\n tagger: Tagger = (_, value) => value,\n options: Options = {}\n): T {\n const reader = new CBORReader(data);\n reader.tagger = tagger;\n if (options.dictionary) {\n reader.dictionary = options.dictionary;\n }\n\n const ret = reader.decodeItem();\n if (reader.offset !== data.byteLength) {\n throw new Error('CBORError: Remaining bytes');\n }\n return ret;\n}\n\nexport enum CBORType {\n Array = 0,\n Record = 1,\n Constant = 2,\n Native = 3,\n}\n\n/**\n * Check whether the type is an array, a record,\n * or a native type (decodable without recursion).\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The type category.\n */\nexport function getType(typeInfo: number): CBORType {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n switch (majorType) {\n case 4:\n return CBORType.Array;\n case 5:\n return CBORType.Record;\n case 7:\n return CBORType.Constant;\n }\n return CBORType.Native;\n}\n\nexport function isUndefined(type: CBORType, length: number) {\n return type === CBORType.Constant && length === 23;\n}\n\n/**\n * CBOR reader.\n */\nexport class CBORReader {\n dataView: DataView;\n data: Uint8Array;\n offset: number;\n tagger: Tagger = (_, value) => value;\n dictionary: 'object' | 'map' = 'object';\n\n constructor(data: Uint8Array) {\n this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.data = data;\n this.offset = 0;\n }\n\n /* Wonderland extra methods. */\n\n /**\n * Read type information and move the cursor.\n *\n * @note Must be called before reading the value.\n */\n readTypeInfo() {\n return this.readUint8();\n }\n\n /**\n * Read the array length.\n *\n * @note Must not be called if the type is a constant.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The array length.\n */\n readArrayLength(typeInfo: number) {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n const length = this.readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n return length;\n }\n\n /* CBOR original decoding methods. */\n\n /**\n * Recursively read the item.\n *\n * @note This method will recursively allocate arrays and records\n * based the item type.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The decoded value.\n */\n readItem(typeInfo: number, inputLen: number | null = null): any {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n let i;\n\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return this.readFloat16();\n case 26:\n return this.readFloat32();\n case 27:\n return this.readFloat64();\n }\n }\n\n let length = inputLen === null ? this.readLength(additionalInformation) : inputLen;\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n\n switch (majorType) {\n case 0:\n return length;\n case 1:\n if (typeof length === 'number') {\n return -1 - length;\n }\n return -1n - length;\n case 2: {\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n fullArrayLength += length;\n elements.push(this.readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return this.readArrayBuffer(length as number).slice();\n }\n case 3: {\n /* Can't use TextDecoder.decode() because not all browsers\n * support calling it with an underlying SharedArrayBuffer yet.\n * See https://github.com/whatwg/encoding/issues/172 */\n /** @todo Re-evaluate browser support */\n const utf16data: number[] = [];\n if (length < 0) {\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n this.appendUtf16Data(utf16data, length);\n }\n } else {\n this.appendUtf16Data(utf16data, length as number);\n }\n let string = '';\n const DECODE_CHUNK_SIZE = 8192;\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n string += String.fromCharCode.apply(\n null,\n utf16data.slice(i, i + DECODE_CHUNK_SIZE)\n );\n }\n return string;\n }\n case 4: {\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!this.readBreak()) {\n retArray.push(this.decodeItem());\n }\n } else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = this.decodeItem();\n }\n }\n return retArray;\n }\n case 5: {\n if (this.dictionary === 'map') {\n const retMap = new Map();\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (retMap.has(key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retMap.set(key, this.decodeItem());\n }\n return retMap;\n }\n const retObject: any = {};\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (Object.prototype.hasOwnProperty.call(retObject, key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retObject[key] = this.decodeItem();\n }\n return retObject;\n }\n case 6: {\n const value = this.decodeItem();\n const tag = length;\n if (value instanceof Uint8Array) {\n switch (tag) {\n case kCborTagBignum:\n case kCborTagNegativeBignum:\n let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n);\n if (tag == kCborTagNegativeBignum) {\n num = -1n - num;\n }\n return num;\n /* Little-endian typed arrays (RFC 8746) */\n case kCborTagUint8:\n return value;\n case kCborTagInt8:\n return new Int8Array(value.buffer);\n case kCborTagUint16:\n return new Uint16Array(value.buffer);\n case kCborTagInt16:\n return new Int16Array(value.buffer);\n case kCborTagUint32:\n return new Uint32Array(value.buffer);\n case kCborTagInt32:\n return new Int32Array(value.buffer);\n case kCborTagUint64:\n return new BigUint64Array(value.buffer);\n case kCborTagInt64:\n return new BigInt64Array(value.buffer);\n case kCborTagFloat32:\n return new Float32Array(value.buffer);\n case kCborTagFloat64:\n return new Float64Array(value.buffer);\n }\n }\n return this.tagger(tag, value);\n }\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return length as number;\n }\n }\n }\n\n decodeItem(): any {\n const initialByte = this.readUint8();\n return this.readItem(initialByte);\n }\n\n readArrayBuffer(length: number) {\n return this.commitRead(\n length,\n this.data.subarray(this.offset, this.offset + length)\n );\n }\n readFloat16() {\n const POW_2_24 = 5.960464477539063e-8;\n\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = this.readUint16();\n\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n\n if (exponent === 0x7c00) exponent = 0xff << 10;\n else if (exponent !== 0) exponent += (127 - 15) << 10;\n else if (fraction !== 0) return (sign ? -1 : 1) * fraction * POW_2_24;\n\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n readFloat32(): number {\n return this.commitRead(4, this.dataView.getFloat32(this.offset));\n }\n readFloat64(): number {\n return this.commitRead(8, this.dataView.getFloat64(this.offset));\n }\n readUint8(): number {\n return this.commitRead(1, this.data[this.offset]);\n }\n readUint16(): number {\n return this.commitRead(2, this.dataView.getUint16(this.offset));\n }\n readUint32(): number {\n return this.commitRead(4, this.dataView.getUint32(this.offset));\n }\n readUint64(): bigint {\n return this.commitRead(8, this.dataView.getBigUint64(this.offset));\n }\n readBreak(): boolean {\n if (this.data[this.offset] !== 0xff) return false;\n this.offset += 1;\n return true;\n }\n readLength(additionalInformation: number): number | bigint {\n if (additionalInformation < 24) return additionalInformation;\n if (additionalInformation === 24) return this.readUint8();\n if (additionalInformation === 25) return this.readUint16();\n if (additionalInformation === 26) return this.readUint32();\n if (additionalInformation === 27) {\n const integer = this.readUint64();\n if (integer <= Number.MAX_SAFE_INTEGER) return Number(integer);\n return integer;\n }\n if (additionalInformation === 31) return -1;\n throw new Error('CBORError: Invalid length encoding');\n }\n\n readIndefiniteStringLength(majorType: number): number {\n const initialByte = this.readUint8();\n if (initialByte === 0xff) return -1;\n const length = this.readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error('CBORError: Invalid indefinite length element');\n }\n return Number(length);\n }\n appendUtf16Data(utf16data: number[], length: number) {\n for (let i = 0; i < length; ++i) {\n let value = this.readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (this.readUint8() & 0x3f);\n length -= 1;\n } else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 2;\n } else {\n value =\n ((value & 0x07) << 18) |\n ((this.readUint8() & 0x3f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 3;\n }\n }\n\n if (value < 0x10000) {\n utf16data.push(value);\n } else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n\n private commitRead(length: number, value: T): T {\n this.offset += length;\n return value;\n }\n}\n", "import {Prefab} from './prefab.js';\nimport {\n defaultPropertyCloner,\n ComponentProperty,\n Type,\n PropertyRecord,\n} from './property.js';\nimport {\n AnimationComponent,\n BrokenComponent,\n CollisionComponent,\n Component,\n ComponentConstructor,\n DestroyedComponentInstance,\n InputComponent,\n LightComponent,\n MeshComponent,\n Object3D,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n LogTag,\n inheritProperties,\n} from './wonderland.js';\n\nimport {CBORReader, CBORType, getType, isUndefined} from './utils/cbor.js';\n\n/** Native components list */\nexport interface NativeComponents {\n 'collision': CollisionComponent;\n 'text': TextComponent;\n 'view': ViewComponent;\n 'mesh': MeshComponent;\n 'input': InputComponent;\n 'light': LightComponent;\n 'animation': AnimationComponent;\n 'physx': PhysXComponent;\n 'particle-effect': ParticleEffectComponent;\n}\n\n/**\n * Manage all component managers in a scene.\n *\n * @hidden\n */\nexport class ComponentManagers {\n /** Animation manager index. */\n readonly animation: number = -1;\n /** Collision manager index. */\n readonly collision: number = -1;\n /** JavaScript manager index. */\n readonly js: number = -1;\n /** Physx manager index. */\n readonly physx: number = -1;\n /** View manager index. */\n readonly view: number = -1;\n\n /**\n * Component class instances per type to avoid GC.\n *\n * @note Maps the manager index to the list of components.\n *\n * @todo: Refactor ResourceManager and re-use for components.\n */\n private readonly _cache: (Component | null)[][] = [];\n /** Manager index to component class. */\n private readonly _constructors: ComponentConstructor[];\n /* Manager name to the manager index. */\n private readonly _nativeManagers: Map = new Map();\n\n /** Host instance. */\n private readonly _scene: Prefab;\n\n constructor(scene: Prefab) {\n this._scene = scene;\n const wasm = this._scene.engine.wasm;\n\n const native = [\n AnimationComponent,\n CollisionComponent,\n InputComponent,\n LightComponent,\n MeshComponent,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n ];\n this._cache = new Array(native.length);\n this._constructors = new Array(native.length);\n\n for (const Class of native) {\n const ptr = wasm.tempUTF8(Class.TypeName);\n const manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._constructors[manager] = Class;\n this._cache[manager] = [] as Component[];\n this._nativeManagers.set(Class.TypeName, manager);\n }\n\n this.animation = this._nativeManagers.get(AnimationComponent.TypeName)!;\n this.collision = this._nativeManagers.get(CollisionComponent.TypeName)!;\n this.physx = this._nativeManagers.get(PhysXComponent.TypeName)!;\n this.view = this._nativeManagers.get(ViewComponent.TypeName)!;\n\n const ptr = wasm.tempUTF8('js');\n this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._cache[this.js] = [] as Component[];\n }\n\n createJs(index: number, id: number, type: number, object: number) {\n const wasm = this._scene.engine.wasm;\n const ctor = wasm._componentTypes[type];\n if (!ctor) {\n throw new Error(`Type index ${type} isn't registered`);\n }\n\n const log = this._scene.engine.log;\n\n let component = null;\n try {\n component = new ctor(this._scene, this.js, id);\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during instantiation of component ${ctor.TypeName}`\n );\n log.error(LogTag.Component, e);\n component = new BrokenComponent(this._scene);\n }\n component._object = this._scene.wrap(object);\n\n try {\n component.resetProperties();\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during ${component.type} resetProperties() on object ${component.object.name}`\n );\n log.error(LogTag.Component, e);\n }\n\n this._scene._jsComponents[index] = component;\n\n /* Add to cache. This is required because destruction is\n * ID-based and not index-based. */\n this._cache[this.js][id] = component;\n\n return component;\n }\n\n /**\n * Get components of type T.\n *\n * @param type Component class.\n * @returns An array containing all components in this scene.\n */\n components(type: ComponentConstructor, active: boolean): T[] {\n return this.componentsFromTypename(type.TypeName, active) as T[];\n }\n\n /**\n * Similar to {@link getComponents}, but directly from string.\n *\n * @param typename The component `TypeName` attribute.\n */\n componentsFromTypename(typename: string, active: boolean): Component[] {\n const wasm = this._scene.engine.wasm;\n\n const manager = this.getNativeManager(typename) ?? this.js;\n const subTypeIndex =\n manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0;\n\n const maxRead = wasm._tempMemSize / 4;\n const components: Component[] = [];\n let read = 0;\n let offset = 0;\n while (\n (read = wasm._wl_scene_get_components(\n this._scene._index,\n manager,\n subTypeIndex,\n active,\n offset,\n maxRead,\n wasm._tempMem\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n const id = wasm._tempMemUint32[i];\n components.push(this.wrapAny(manager, id) as Component);\n }\n /* Offset by `maxRead` because js components of different types are contiguous.\n * `read` could be less than `maxRead`, and we want to skip all\n * the components already processed. */\n offset += maxRead;\n }\n\n return components;\n }\n\n /**\n * Get component of type T.\n *\n * @note Currently only works for native components, but we will extend this later (and expose it in the API)\n */\n componentAt(type: ComponentConstructor, index: number): T {\n const wasm = this._scene.engine.wasm;\n const manager = this.getNativeManager(type.TypeName)!;\n const id = wasm._wl_scene_get_component(this._scene._index, manager, index);\n return this.wrapAny(manager, id) as T;\n }\n\n /**\n * Retrieve a cached component.\n *\n * @param manager The manager index.\n * @param id The component id.\n * @returns The component if cached, `null` otherwise.\n */\n get(manager: number, id: number) {\n return this._cache[manager][id] ?? null;\n }\n\n /**\n * Wrap the animation.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAnimation(id: number): AnimationComponent {\n return this.wrapNative(this.animation, id) as AnimationComponent;\n }\n\n /**\n * Wrap the collision.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapCollision(id: number): CollisionComponent {\n return this.wrapNative(this.collision, id) as CollisionComponent;\n }\n\n /**\n * Wrap the view.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapView(id: number): ViewComponent {\n return this.wrapNative(this.view, id) as ViewComponent;\n }\n\n /**\n * Wrap the physx.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapPhysx(id: number): PhysXComponent {\n return this.wrapNative(this.physx, id) as PhysXComponent;\n }\n\n /**\n * Retrieves a component instance if it exists, or create and cache\n * a new one.\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link Object3D.addComponent} instead.\n *\n * @param componentType Component manager index\n * @param componentId Component id in the manager\n *\n * @returns JavaScript instance wrapping the native component\n */\n wrapNative(manager: number, id: number) {\n if (id < 0) return null;\n\n const cache = this._cache[manager];\n if (cache[id]) return cache[id];\n\n const scene = this._scene;\n const Class = this._constructors[manager];\n const component = new Class(scene, manager, id);\n cache[id] = component;\n return component;\n }\n\n /**\n * Wrap a native or js component.\n *\n * @throws For JavaScript components that weren't previously cached,\n * since that would be a bug in the runtime / api.\n *\n * @param manager The manager index.\n * @param id The id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAny(manager: number, id: number) {\n if (id < 0) return null;\n\n if (manager === this.js) {\n const found = this._cache[this.js][id];\n if (!found) {\n throw new Error('JS components must always be cached');\n }\n return found.constructor !== BrokenComponent ? found : null;\n }\n\n return this.wrapNative(manager, id);\n }\n\n getNativeManager(name: string): number | null {\n const manager = this._nativeManagers.get(name);\n return manager !== undefined ? manager : null;\n }\n\n /**\n * Perform cleanup upon component destruction.\n *\n * @param instance The instance to destroy.\n *\n * @hidden\n */\n destroy(instance: Component) {\n const localId = instance._localId;\n const manager = instance._manager;\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n (instance._manager as number) = -1;\n\n const erasePrototypeOnDestroy = this._scene.engine.erasePrototypeOnDestroy;\n /* Destroy the prototype of this instance to avoid using a dangling component */\n if (erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedComponentInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating a component with the same id. */\n this._cache[manager][localId] = null;\n }\n\n /** Number of managers **registered** in the scene, i.e., `js`, `names`, etc... */\n get managersCount() {\n return this._scene.engine.wasm._wl_scene_get_component_manager_count(\n this._scene._index\n );\n }\n}\n\nexport function resetComponentProperties(record: Component) {\n const ctor = record.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return;\n for (const name in properties) {\n const property = properties[name];\n const cloner = property.cloner ?? defaultPropertyCloner;\n (record as Record)[name] = cloner.clone(\n property.type,\n property.default\n );\n }\n}\n\nexport function setupComponentClass(ctor: ComponentConstructor | PropertyRecord) {\n inheritProperties(ctor);\n /** @todo: Merge the _setupDefaults and _setPropertyOrder calls with this function. */\n for (const name in ctor.Properties) {\n const prop = ctor.Properties[name];\n let record = null;\n switch (prop.type) {\n case Type.Record:\n record = prop.record;\n break;\n case Type.Array:\n record = prop.element?.record;\n break;\n default:\n break;\n }\n if (record && !record._propertyOrder) setupComponentClass(record);\n }\n _setupDefaults(ctor);\n _setPropertyOrder(ctor);\n}\n\n/**\n * Decode component properties from CBOR encoded data.\n *\n * ## Failure\n *\n * When decoding properties, failures will not be treated as errors. Failures include:\n * - Invalid parameters count\n * - Wrongly defined property\n *\n * When a failure occurs, the cbor reader will be consumed to prevent\n * errors to cascade in the following components.\n */\nexport class ComponentPropertyDecoder {\n scene: Prefab;\n offsets: Uint32Array;\n\n constructor(scene: Prefab, offsets: Uint32Array) {\n this.scene = scene;\n this.offsets = offsets;\n }\n\n decode(cbor: CBORReader, component: Component) {\n const ctor = component.constructor as ComponentConstructor;\n if (!ctor._propertyOrder) setupComponentClass(ctor);\n\n const typeInfo = cbor.readTypeInfo();\n if (ctor === BrokenComponent) {\n return cbor.readItem(typeInfo); /* Consumme the cbor state */\n }\n\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array) {\n this._error(`${component} parameters not encoded as an array.`);\n return cbor.readItem(typeInfo);\n }\n\n const paramNames = ctor._propertyOrder;\n const count = cbor.readArrayLength(typeInfo) as number;\n if (count !== paramNames.length) {\n this._error(\n `${component} has ${count} parameters encoded, but expected ${paramNames.length}`\n );\n return cbor.readItem(typeInfo, count);\n }\n\n for (let j = 0; j < count; ++j) {\n const name = paramNames[j];\n const property = ctor.Properties[name];\n (component as any)[name] = this.decodeProperty(cbor, name, property);\n }\n }\n\n decodeProperty(cbor: CBORReader, name: string, property: ComponentProperty) {\n const typeInfo = cbor.readTypeInfo();\n\n if (property.type === Type.Record) {\n return this.decodeRecordProperty(cbor, name, property, typeInfo);\n } else if (property.type === Type.Array) {\n return this.decodeArrayProperty(cbor, name, property, typeInfo);\n }\n\n let value = cbor.readItem(typeInfo);\n\n /* Default values are sent as undefined to avoid wasting space */\n if (value === undefined) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n value = cloner.clone(property.type, property.default);\n return value;\n }\n /* This skips unset resource parameters as those are sent\n * directly with type null. Offsets for Int and Float types\n * should always be 0. */\n /** @todo CBOR tag to mark resources? Wastes a byte though. */\n if (typeof value === 'number') {\n value += this.offsets[property.type];\n }\n\n const engine = this.scene.engine;\n switch (property.type) {\n case Type.Bool:\n case Type.Int:\n case Type.Float:\n case Type.String:\n case Type.Enum:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n /* Nothing to do */\n return value;\n case Type.Object: {\n const wasm = engine.wasm;\n return value\n ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value))\n : null;\n }\n case Type.Mesh:\n return engine.meshes.wrap(value);\n case Type.Texture:\n return engine.textures.wrap(value);\n case Type.Material:\n return engine.materials.wrap(value);\n case Type.ParticleEffect:\n return engine.particleEffects.wrap(value);\n case Type.Animation:\n return this.scene.animations.wrap(value);\n case Type.Skin:\n return this.scene.skins.wrap(value);\n case Type.Color: {\n /* Colors are sent as Uint8Array. Normalize positive\n * integer values to 0-1. Don't assume any bit size\n * here, could become Uint16Array as well. */\n const max = (1 << (value.BYTES_PER_ELEMENT * 8)) - 1;\n return Float32Array.from(value, (f: number, _) => f / max);\n }\n }\n }\n\n decodeRecordProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Record parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return null;\n }\n const record = property.record;\n if (!record) {\n this._error(`Record parameter '${name}' .record is undefined`);\n cbor.readItem(typeInfo);\n return null;\n }\n\n if (!record._propertyOrder) setupComponentClass(record);\n const propertyOrder = record._propertyOrder as string[];\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n return cloner.clone(property.type, property.default);\n }\n\n const result = new (record as any)();\n if (count !== propertyOrder.length) {\n const propsCount = propertyOrder.length;\n this._error(\n `Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`\n );\n cbor.readItem(typeInfo, count);\n return result;\n }\n const order = record._propertyOrder!;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n const prop = record.Properties![key];\n (result as any)[key] = this.decodeProperty(cbor, key, prop);\n }\n return result;\n }\n\n decodeArrayProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const log = this.scene.engine.log;\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Array parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n if (!property.element) {\n this._error(`Array parameter '${name}' .element property is undefined`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) return [];\n\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n result[i] = this.decodeProperty(cbor, name, property.element);\n }\n return result;\n }\n\n private _error(msg: string) {\n const log = this.scene.engine.log;\n log.error(LogTag.Engine, msg);\n }\n}\n\n/**\n * Default component parameter value per type.\n */\nconst _componentDefaults = new Map([\n [Type.Bool, false],\n [Type.Int, 0],\n [Type.Float, 0.0],\n [Type.String, ''],\n [Type.Enum, undefined],\n [Type.Object, null],\n [Type.Mesh, null],\n [Type.Texture, null],\n [Type.Material, null],\n [Type.Animation, null],\n [Type.Skin, null],\n [Type.ParticleEffect, null],\n [Type.Color, Float32Array.from([0.0, 0.0, 0.0, 1.0])],\n [Type.Vector2, Float32Array.from([0.0, 0.0])],\n [Type.Vector3, Float32Array.from([0.0, 0.0, 0.0])],\n [Type.Vector4, Float32Array.from([0.0, 0.0, 0.0, 0.0])],\n [Type.Record, undefined],\n [Type.Array, []],\n]);\n\n/**\n * Setup the defaults value of the properties on a given\n * component class.\n *\n * @param ctor The component class\n */\nfunction _setupDefaults(ctor: ComponentConstructor | PropertyRecord) {\n for (const name in ctor.Properties) {\n const p = ctor.Properties[name];\n\n if (p.type === Type.Enum) {\n /* Enum default can be a string or an index. Convert to and/or\n * sanity-check the index. */\n if (p.values?.length) {\n /* Don't try to look up the default if the user specified a\n * number or we already converted to one. */\n if (typeof p.default !== 'number') {\n /* If undefined, missing element or wrong type this returns\n * -1 which becomes 0 below. This matches editor behavior. */\n p.default = p.values.indexOf(p.default);\n }\n if (p.default < 0 || p.default >= p.values.length) {\n p.default = 0;\n }\n } else {\n /* There's no index value that makes sense */\n p.default = undefined;\n }\n } else if (\n (p.type === Type.Color ||\n p.type === Type.Vector2 ||\n p.type === Type.Vector3 ||\n p.type === Type.Vector4) &&\n Array.isArray(p.default)\n ) {\n /* Defaults provided by user code are currently always a standard\n * array, but become a typed array on the property */\n p.default = Float32Array.from(p.default);\n } else if (p.type === Type.Record && p.record) {\n p.default = new p.record();\n resetComponentProperties(p.default);\n } else if (p.default === undefined) {\n const cloner = p.cloner ?? defaultPropertyCloner;\n p.default = cloner.clone(p.type, _componentDefaults.get(p.type));\n }\n ctor.prototype[name] = p.default;\n }\n}\n\n/**\n * Determines a fixed order for property attributes used for deserialization.\n *\n * @param ctor The component class\n */\nfunction _setPropertyOrder(ctor: ComponentConstructor | PropertyRecord) {\n ctor._propertyOrder = ctor.hasOwnProperty('Properties')\n ? Object.keys(ctor.Properties!).sort()\n : [];\n}\n", "import {ImageLike, ProgressCallback} from '../types.js';\n\n/**\n * Transformer for {@link TransformStream} that passes read progress to a\n * callback.\n *\n * Invokes the callback for each streamed chunk, and one final time when the\n * stream closes.\n *\n * @hidden\n */\nclass FetchProgressTransformer implements Transformer {\n #progress = 0;\n #callback: ProgressCallback;\n #totalSize: number;\n\n /**\n * Constructor.\n * @param callback Callback that receives the progress.\n * @param totalSize Total size of the data. Pass 0 to indicate that the\n * size is unknown, then the callback will only be called once after\n * all data was transferred.\n */\n constructor(callback: ProgressCallback, totalSize = 0) {\n this.#callback = callback;\n this.#totalSize = totalSize;\n }\n\n transform(chunk: Uint8Array, controller: TransformStreamDefaultController) {\n controller.enqueue(chunk);\n this.#progress += chunk.length;\n if (this.#totalSize > 0) {\n this.#callback(this.#progress, this.#totalSize);\n }\n }\n\n flush() {\n this.#callback(this.#progress, this.#progress);\n }\n}\n\n/**\n * Sink for `WritableStream` that writes data to an `ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSink implements UnderlyingSink {\n #buffer: Uint8Array;\n #offset = 0;\n\n /**\n * Constructor.\n * @param size Initial size of the buffer. If less than the received data,\n * the buffer is dynamically reallocated.\n */\n constructor(size = 0) {\n this.#buffer = new Uint8Array(size);\n }\n\n /** Get the received data as an `ArrayBuffer`. */\n get arrayBuffer() {\n const arrayBuffer = this.#buffer.buffer;\n if (this.#offset < arrayBuffer.byteLength) {\n return arrayBuffer.slice(0, this.#offset);\n }\n return arrayBuffer;\n }\n\n write(chunk: Uint8Array) {\n const newLength = this.#offset + chunk.length;\n if (newLength > this.#buffer.length) {\n const newBuffer = new Uint8Array(\n Math.max(this.#buffer.length * 1.5, newLength)\n );\n newBuffer.set(this.#buffer);\n this.#buffer = newBuffer;\n }\n this.#buffer.set(chunk, this.#offset);\n this.#offset = newLength;\n }\n}\n\n/**\n * Source for `ReadableStream` that reads data from an`ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSource implements UnderlyingSource {\n #buffer: ArrayBuffer;\n\n /**\n * Constructor.\n * @param buffer Buffer to read from.\n */\n constructor(buffer: ArrayBuffer) {\n this.#buffer = buffer;\n }\n\n start(controller: ReadableStreamController) {\n if (this.#buffer.byteLength > 0) {\n controller.enqueue(new Uint8Array(this.#buffer));\n }\n controller.close();\n }\n}\n\n/**\n * Fetch a file as an `ArrayBuffer`, with fetch progress passed to a callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n if (!onProgress || !res.body) return res.arrayBuffer();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n const sink = new ArrayBufferSink(size);\n await res.body\n .pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size)))\n .pipeTo(new WritableStream(sink));\n return sink.arrayBuffer;\n}\n\n/**\n * Fetch a file as a `ReadableStream`, with fetch progress passed to a\n * callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchStreamWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise> {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n const body = res.body ?? new ReadableStream();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n if (!onProgress) return body;\n const stream = body.pipeThrough(\n new TransformStream(new FetchProgressTransformer(onProgress, size))\n );\n return stream;\n}\n\n/**\n * Get parent path from a URL.\n *\n * @param url URL to get the parent from.\n * @returns Parent URL without trailing slash.\n */\nexport function getBaseUrl(url: string): string {\n return url.substring(0, url.lastIndexOf('/'));\n}\n\n/**\n * Get the filename of a url.\n *\n * @param url The url to extract the name from.\n * @returns A string containing the filename. If no filename is found,\n * returns the input string.\n */\nexport function getFilename(url: string): string {\n if (url.endsWith('/')) {\n /* Remove trailing slash. */\n url = url.substring(0, url.lastIndexOf('/'));\n }\n const lastSlash = url.lastIndexOf('/');\n if (lastSlash < 0) return url;\n return url.substring(lastSlash + 1);\n}\n\n/**\n * Promise resolved once the image is ready to be used\n *\n * @param image The image, video, or canvas to wait for.\n * @returns A promise with the image, once it's ready to be used.\n */\nexport function onImageReady(image: T): Promise {\n return new Promise((res, rej) => {\n if (image instanceof HTMLVideoElement) {\n if (image.readyState >= 2) {\n res(image as T);\n return;\n }\n image.addEventListener(\n 'loadeddata',\n () => {\n if (image.readyState >= 2) res(image);\n },\n {once: true}\n );\n return;\n } else if (\n !(image instanceof HTMLImageElement) ||\n (image as HTMLImageElement).complete\n ) {\n res(image);\n return;\n }\n image.addEventListener('load', () => res(image), {once: true});\n image.addEventListener('error', rej, {once: true});\n });\n}\n", "import {ComponentManagers, NativeComponents} from './component.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ResourceManager, SceneResource} from './resources/resource.js';\nimport {ProgressCallback} from './types.js';\nimport {\n fetchStreamWithProgress,\n fetchWithProgress,\n getBaseUrl,\n getFilename,\n onImageReady,\n} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Animation,\n CollisionCallback,\n Component,\n ComponentConstructor,\n DestroyedObjectInstance,\n Object3D,\n Skin,\n} from './wonderland.js';\n\n/** Scene loading options. */\nexport interface SceneLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n}\n\n/** Loading options for in-memory data. */\nexport interface InMemoryLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/**\n * Loading options for streamed data.\n *\n * @hidden\n */\nexport interface StreamLoadOptions {\n /** Stream that transfers the bytes of a `.bin` file. */\n stream: ReadableStream;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n}\n\n/** Options for loading files from a URL. */\nexport interface UrlLoadOptions {\n /** URL to load. */\n url: string;\n /** Signal to abort the file fetch request. */\n signal?: AbortSignal;\n /**\n * Whether to load the file as parts of it are fetched. If `false`,\n * fetches the entire file first before loading. Streamed loading reduces\n * memory usage. If not set, defaults to `true`.\n */\n streamed?: boolean;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/** Options used during loading. */\nexport type LoadOptions = string | (UrlLoadOptions & Partial);\n\n/**\n * Base class for prefabs, scenes, and glTF.\n *\n * For more information have a look at the derived types:\n * - {@link Scene} for Wonderland Engine activatable scenes (.bin)\n * - {@link PrefabGLTF} for glTF scenes\n *\n * #### Resources\n *\n * While **meshes**, **textures**, and **materials** are shared\n * on the {@link WonderlandEngine} instance, a scene comes with:\n * - Animations: Managed using {@link Prefab.animations}\n * - Skins: Managed using {@link Prefab.skins}\n *\n * Those resources are bound to the object hierarchy and are thus required to be\n * per-scene.\n *\n * #### Destruction\n *\n * For now, destroying a scene doesn't automatically remove the resources it\n * references in the engine. For more information, have a look at the\n * {@link Scene.destroy} method.\n *\n * #### Isolation\n *\n * It's forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addChild();\n * const objB = sceneB.addChild();\n * objA.parent = objB; // Throws\n * ```\n *\n * @category scene\n *\n * @since 1.2.0\n */\nexport class Prefab {\n /**\n * Create an object with shape `{url: string}`.\n *\n * - If the parameter is a string, a new object is returned\n * - If the parameter is an object, the same reference is returned\n *\n * @param options The url or options object.\n * @returns An object of the form `{url: string, ...}`.\n *\n * @hidden\n */\n static makeUrlLoadOptions(options: LoadOptions): UrlLoadOptions & Partial {\n return isString(options)\n ? ({url: options} as UrlLoadOptions & Partial)\n : options;\n }\n\n /**\n * Load an `ArrayBuffer` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns An {@link InMemoryLoadOptions} object.\n *\n * @hidden\n */\n static async loadBuffer(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const buffer = await fetchWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, buffer, baseURL, filename};\n }\n\n /**\n * Load a `ReadableStream` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns A {@link StreamLoadOptions} object.\n *\n * @hidden\n */\n static async loadStream(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const stream = await fetchStreamWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, stream, baseURL, filename};\n }\n\n /**\n * Validate the in-memory load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateBufferOptions(options: InMemoryLoadOptions): {\n buffer: ArrayBuffer;\n baseURL: string;\n url: string;\n } {\n const {buffer, baseURL, filename = 'scene.bin'} = options;\n if (!buffer) {\n throw new Error(\"missing 'buffer' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {buffer, baseURL, url};\n }\n\n /**\n * Validate the stream load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateStreamOptions(options: StreamLoadOptions): {\n stream: ReadableStream;\n baseURL: string;\n url: string;\n } {\n const {stream, baseURL, filename = 'scene.bin'} = options;\n if (!stream) {\n throw new Error(\"missing 'stream' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {stream, baseURL, url};\n }\n\n /** Index in the scene manager. @hidden */\n readonly _index;\n /** @hidden */\n protected _engine: WonderlandEngine;\n\n /**\n * Component manager caching to avoid GC.\n *\n * @hidden\n */\n readonly _components: ComponentManagers;\n /**\n * JavaScript components for this scene.\n *\n * This array is moved into the WASM instance upon activation.\n *\n * @hidden\n */\n readonly _jsComponents: Component[] = [];\n\n /**\n * The map is indexed using the physx component id.\n *\n * @hidden\n */\n readonly _pxCallbacks: Map = new Map();\n\n /** @hidden */\n private readonly _animations;\n /** @hidden */\n private readonly _skins;\n\n /**\n * Object class instances to avoid GC.\n *\n * @hidden\n */\n private readonly _objectCache: (Object3D | null)[] = [];\n\n /**\n * `onDestroy()` depth.\n *\n * Multiple components can stack `onDestroy()` calls.\n */\n private _pendingDestroy: number = 0;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n\n this._components = new ComponentManagers(this);\n this._animations = new ResourceManager(this as Prefab, Animation);\n this._skins = new ResourceManager(this as Prefab, Skin);\n }\n\n /**\n * Add a new {@link Object3D} to the root object.\n *\n * See {@link Object3D.addChild} for more information.\n *\n * @returns A new {@link Object3D}.\n */\n addChild() {\n return this.wrap(0).addChild();\n }\n\n /**\n * Add an object to the scene.\n *\n * Alternatively, you can use {@link Prefab.addChild} to add the object\n * to the root, or {@link Object3D.addChild} to add the object to a given parent:\n *\n * ```js\n * const parent = scene.addChild();\n * const child = parent.addChild();\n * // Equivalent using scene.addObject\n * const sibling = scene.addObject(parent);\n * ```\n *\n * @param parent Parent object or `null`.\n * @returns A newly created object.\n */\n addObject(parent: Object3D | null = null): Object3D {\n if (parent?.markedDestroyed) {\n throw new Error(`Failed to add object. ${parent} is marked as destroyed.`);\n }\n this.assertOrigin(parent);\n return (parent ?? this.wrap(0)).addChild();\n }\n\n /**\n * Batch-add objects to the scene.\n *\n * Will provide better performance for adding multiple objects (e.g. > 16)\n * than calling {@link Scene#addObject} repeatedly in a loop.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * convervatively grow the memory in small steps.\n *\n * @experimental This API might change in upcoming versions.\n *\n * @param count Number of objects to add.\n * @param parent Parent object or `null`, default `null`.\n * @param componentCountHint Hint for how many components in total will\n * be added to the created objects afterwards, default `0`.\n * @returns Newly created objects\n */\n addObjects(\n count: number,\n parent: Object3D | null = null,\n componentCountHint: number = 0\n ): Object3D[] {\n const parentId = parent ? parent._id : 0;\n this.engine.wasm.requireTempMem(count * 2);\n const actualCount = this.engine.wasm._wl_scene_add_objects(\n this._index,\n parentId,\n count,\n componentCountHint || 0,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount);\n const wrapper = this.wrap.bind(this);\n const objects = Array.from(ids, wrapper);\n return objects;\n }\n\n /**\n * Pre-allocate memory for a given amount of objects and components.\n *\n * Will provide better performance for adding objects later with {@link Scene#addObject}\n * and {@link Scene#addObjects}.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * conservatively grow the memory in small steps.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * @param objectCount Number of objects to add.\n * @param componentCountPerType Amount of components to\n * allocate for {@link Object3D.addComponent}, e.g. `{mesh: 100, collision: 200, \"my-comp\": 100}`.\n * @since 0.8.10\n */\n reserveObjects(objectCount: number, componentCountPerType: Record) {\n const wasm = this.engine.wasm;\n if (!componentCountPerType) return;\n\n const countsPerTypeIndex = wasm._tempMemInt;\n const managerCount = this._components.managersCount;\n for (let i = 0; i < managerCount; ++i) countsPerTypeIndex[i] = 0;\n\n const names = Object.keys(componentCountPerType);\n for (const name of names) {\n const count = componentCountPerType[name];\n const nativeIndex = this._components.getNativeManager(name);\n countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] +=\n count;\n }\n wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem);\n }\n\n /**\n * Root object's children.\n *\n * See {@link Object3D.getChildren} for more information.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const root = this.wrap(0);\n return root.getChildren(out);\n }\n\n /** @overload */\n getComponents(typeOrClass: K): NativeComponents[K][];\n /** @overload */\n getComponents(typeOrClass: string): Component[];\n /**\n * Get all the components of a given type.\n *\n * #### Usage\n *\n * ```js\n * const meshes = scene.getComponents('mesh');\n * const zombies = scene.getComponents(ZombieComponent);\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, false);\n }\n\n /** @overload */\n getActiveComponents(\n typeOrClass: K\n ): NativeComponents[K][];\n /** @overload */\n getActiveComponents(typeOrClass: string): Component[];\n /**\n * Get all the **active** components of a given type.\n *\n * ```js\n * const zombies = scene.getActiveComponents(ZombieComponent);\n * for(const zombie of zombies) zombie.active = false;\n *\n * const list = scene.getActiveComponents(ZombieComponent);\n * console.log(list.length); // Prints `0`\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getActiveComponents(typeOrClass: ComponentConstructor): T[];\n getActiveComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, true);\n }\n\n /**\n * Top-level objects of this scene.\n *\n * See {@link Object3D.children} for more information.\n *\n * @since 1.2.0\n */\n get children(): Object3D[] {\n const root = this.wrap(0);\n return root.children;\n }\n\n /** The number of children of the root object. */\n get childrenCount(): number {\n const root = this.wrap(0);\n return this.engine.wasm._wl_object_get_children_count(root._id);\n }\n\n /**\n * Search for objects matching the name.\n *\n * See {@link Object3D.findByName} for more information.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the objects of\n * this scene. If `false`, this method will only perform the search in\n * root objects.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n const root = this.wrap(0);\n return root.findByName(name, recursive);\n }\n\n /**\n * Search for all **top-level** objects matching the name.\n *\n * See {@link Object3D.findByNameDirect} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameDirect(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameDirect(name);\n }\n\n /**\n * Search for **all objects** matching the name.\n *\n * See {@link Object3D.findByNameRecursive} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameRecursive(name);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n *\n * @returns The object\n */\n wrap(objectId: number): Object3D {\n const cache = this._objectCache;\n const o = cache[objectId] || (cache[objectId] = new Object3D(this, objectId));\n return o;\n }\n\n /**\n * Destroy the scene.\n *\n * For now, destroying a scene doesn't remove the resources it references. Thus,\n * you will need to reload a main scene to free the memory.\n *\n * For more information about destruction, have a look at the {@link Scene.destroy} method.\n */\n destroy() {\n if (this._pendingDestroy > 0) {\n throw new Error(\"It's forbidden to destroy a scene from onDestroy().\");\n }\n this._pxCallbacks.clear();\n this.engine._destroyScene(this);\n }\n\n /* Public Getters & Setters */\n\n /**\n * `true` if the scene is active, `false` otherwise.\n *\n * Always false for {@link Prefab} and {@link PrefabGLTF}.\n */\n get isActive() {\n return !!this.engine.wasm._wl_scene_active(this._index);\n }\n\n /**\n * Relative directory of the scene that was loaded.\n *\n * This is used for loading any files relative to the scene.\n */\n get baseURL(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_baseURL(this._index);\n if (!ptr) return '';\n\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Filename used when loading the file.\n *\n * If the scenes was loaded from memory and no filename was provided,\n * this accessor will return an empty string.\n */\n get filename(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_filename(this._index);\n if (!ptr) return '';\n return wasm.UTF8ToString(ptr);\n }\n\n /** Animation resources */\n get animations() {\n return this._animations;\n }\n\n /** Skin resources */\n get skins() {\n return this._skins;\n }\n\n /** Hosting engine instance. */\n get engine(): WonderlandEngine {\n return this._engine;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed(): boolean {\n return this._index < 0;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Scene(destroyed)';\n }\n return `Scene('${this.filename}', ${this._index})`;\n }\n\n /**\n * Checks that the input's scene is the same as this instance.\n *\n * It is forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addObject();\n * const objB = sceneA.addObject();\n * objA.parent = objB; // Throws\n * ```\n *\n * @param other Object / component to check.\n *\n * @throws If other's scene isn't the same reference as this.\n */\n assertOrigin(other: Object3D | Component | SceneResource | undefined | null) {\n if (other && (other.scene as Prefab) !== this) {\n throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`);\n }\n }\n\n /**\n * Download components and initialize the scene.\n *\n * @hidden\n */\n _initialize() {\n const wasm = this.engine.wasm;\n /* Initialize component parameters */\n wasm._wl_scene_initialize(this._index);\n }\n\n /**\n * Perform cleanup upon object destruction.\n *\n * @param localId The id to destroy.\n *\n * @hidden\n */\n _destroyObject(localId: number) {\n const instance = this._objectCache[localId];\n if (!instance) return;\n\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n\n /* Destroy the prototype of this instance to avoid using a dangling object */\n if (this.engine.erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedObjectInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating an object with the same id. */\n this._objectCache[localId] = null;\n }\n\n /**\n * Performs JavaScript only destrution of a component.\n *\n * @note Prefer to use this method to manually calling the destruction code,\n * to protect the user from illegal method calls in {@link Component.onDestroy}.\n *\n * @param manager The component manager index.\n * @param id The component id.\n *\n * @hidden\n */\n _destroyComponent(manager: number, id: number) {\n const component = this._components.get(manager, id);\n ++this._pendingDestroy;\n component?._triggerOnDestroy();\n --this._pendingDestroy;\n }\n}\n", "/**\n * Schedule a timeout, resolving in `time` milliseconds.\n *\n * @note `setTimeout` being a macro-task, this method can\n * be use as a debounce call.\n *\n * @param time The time until it resolves, in milliseconds.\n * @returns A promise resolving in `time` ms.\n */\nexport function timeout(time: number): Promise {\n return new Promise((res) => setTimeout(res, time));\n}\n\n/**\n * Clamp the value in the range [min; max].\n *\n * @param val The value to clamp.\n * @param min The minimum value (inclusive).\n * @param max The maximum value (inclusive).\n * @returns The clamped value.\n */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.max(Math.min(max, val), min);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @note The string must be UTF-8.\n *\n * @param str The string to format.\n * @returns The string with the first letter capitalized.\n */\nexport function capitalizeFirstUTF8(str: string) {\n return `${str[0].toUpperCase()}${str.substring(1)}`;\n}\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nexport function createDestroyedProxy(type: string) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(`Cannot read '${param}' of destroyed ${type}`);\n },\n set(_, param: string) {\n throw new Error(`Cannot write '${param}' of destroyed ${type}`);\n },\n }\n );\n}\n", "/**\n * Types\n */\n\nimport {nativeProperty, enumerable} from './decorators.js';\nimport {WonderlandEngine} from './engine.js';\nimport {isImageLike, isNumber, isString} from './utils/object.js';\nimport {Emitter} from './utils/event.js';\nimport {Material} from './resources/material-manager.js';\nimport {\n ComponentProperty,\n PropertyRecord,\n Type,\n defaultPropertyCloner,\n} from './property.js';\nimport {Constructor, ImageLike, NumberArray, TypedArray, TypedArrayCtor} from './types.js';\nimport {Resource, SceneResource} from './resources/resource.js';\nimport {Prefab} from './prefab.js';\nimport {Scene} from './scene.js';\nimport {createDestroyedProxy} from './utils/misc.js';\nimport {NativeComponents, resetComponentProperties} from './component.js';\n\n/**\n * Component constructor type.\n *\n * For more information, please have a look at the {@link Component} class.\n */\nexport type ComponentConstructor = {\n new (scene: Prefab, manager: number, id: number): T;\n} & {\n _isBaseComponent: boolean;\n _propertyOrder: string[];\n TypeName: string;\n Properties: Record;\n InheritProperties?: boolean;\n onRegister?: (engine: WonderlandEngine) => void;\n};\n\n/**\n * Component prototype interface.\n *\n * User component's should have the same structure.\n */\nexport interface ComponentProto {\n /**\n * Triggered after the component instantiation.\n * For more information, please have a look at {@link Component.init}.\n */\n init?: () => void;\n /**\n * Triggered after the component is activated for the first time.\n * For more information, please have a look at {@link Component.start}.\n */\n start?: () => void;\n /**\n * Triggered once per frame.\n * For more information, please have a look at {@link Component.update}.\n *\n * @param dt Delta time, time since last update.\n */\n update?: (dt: number) => void;\n /**\n * Triggered when the component goes from deactivated to activated.\n * For more information, please have a look at {@link Component.onActivate}.\n */\n onActivate?: () => void;\n /**\n * Triggered when the component goes from activated to deactivated.\n * For more information, please have a look at {@link Component.onDeactivate}.\n */\n onDeactivate?: () => void;\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @since 0.9.0\n */\n onDestroy?: () => void;\n}\n\n/**\n * Callback triggered on collision event.\n *\n * @param type Type of the event.\n * @param other Other component that was (un)collided with\n */\nexport type CollisionCallback = (type: CollisionEventType, other: PhysXComponent) => void;\n\n/** @todo Remove at 1.0.0 */\ndeclare const WL: WonderlandEngine;\n\n/**\n * Wonderland Engine API\n * @namespace WL\n */\n\n/**\n * Default set of logging tags used by the API.\n */\nexport enum LogTag {\n /** Initialization, component registration, etc... */\n Engine = 0,\n /** Scene loading */\n Scene = 1,\n /** Component init, update, etc... */\n Component = 2,\n}\n\n/**\n * Collider type enum for {@link CollisionComponent}.\n */\nexport enum Collider {\n /**\n * **Sphere Collider**:\n *\n * Simplest and most performant collision shape. If this type is set on a\n * {@link CollisionComponent}, only the first component of\n * {@link CollisionComponent#extents} will be used to determine the radius.\n */\n Sphere = 0,\n\n /**\n * **Axis Aligned Bounding Box Collider**:\n *\n * Box that is always aligned to XYZ axis. It cannot be rotated but is more\n * efficient than {@link Collider.Box}.\n */\n AxisAlignedBox = 1,\n\n /**\n * **Aligned Bounding Box Collider**:\n *\n * Box that matches the object's rotation and translation correctly. This\n * is the least efficient collider and should only be chosen over\n * {@link Collider.Sphere} and {@link Collider.AxisAlignedBox} if really\n * necessary.\n */\n Box = 2,\n}\n\n/**\n * Alignment type enum for {@link TextComponent}.\n */\nexport enum Alignment {\n /** Text start is at object origin */\n Left = 0,\n\n /** Text center is at object origin */\n Center = 1,\n\n /** Text end is at object origin */\n Right = 2,\n}\n\n/**\n * Vertical alignment type enum for {@link TextComponent}.\n */\nexport enum VerticalAlignment {\n /** Text line is at object origin */\n Line = 0,\n\n /** Text middle is at object origin */\n Middle = 1,\n\n /** Text top is at object origin */\n Top = 2,\n\n /** Text bottom is at object origin */\n Bottom = 3,\n}\n\n/**\n * Justification type enum for {@link TextComponent}.\n *\n * @deprecated Please use {@link VerticalAlignment} instead.\n */\nexport const Justification = VerticalAlignment;\n\n/**\n * Effect type enum for {@link TextComponent}.\n */\nexport enum TextEffect {\n /** Text is rendered normally */\n None = 0,\n\n /** Text is rendered with an outline */\n Outline = 1,\n\n /** Text is rendered with a drop shadow */\n Shadow = 2,\n}\n\n/**\n * Wrap mode enum for {@link TextComponent}.\n *\n * @since 1.2.1\n */\nexport enum TextWrapMode {\n /** Text doesn't wrap automatically, only with explicit newline */\n None = 0,\n\n /** Text wraps at word boundaries */\n Soft = 1,\n\n /** Text wraps anywhere */\n Hard = 2,\n\n /** Text is cut off */\n Clip = 3,\n}\n\n/**\n * Input type enum for {@link InputComponent}.\n */\nexport enum InputType {\n /** Head input */\n Head = 0,\n\n /** Left eye input */\n EyeLeft = 1,\n\n /** Right eye input */\n EyeRight = 2,\n\n /** Left controller input */\n ControllerLeft = 3,\n\n /** Right controller input */\n ControllerRight = 4,\n\n /** Left ray input */\n RayLeft = 5,\n\n /** Right ray input */\n RayRight = 6,\n}\n\n/**\n * Projection type enum for {@link ViewComponent}.\n */\nexport enum ProjectionType {\n /** Perspective projection */\n Perspective = 0,\n\n /** Orthographic projection */\n Orthographic = 1,\n}\n\n/**\n * Light type enum for {@link LightComponent}.\n */\nexport enum LightType {\n /** Point light */\n Point = 0,\n\n /** Spot light */\n Spot = 1,\n\n /** Sun light / Directional light */\n Sun = 2,\n}\n\n/**\n * Animation state of {@link AnimationComponent}.\n */\nexport enum AnimationState {\n /** Animation is currently playing */\n Playing = 0,\n\n /** Animation is paused and will continue at current playback\n * time on {@link AnimationComponent#play} */\n Paused = 1,\n\n /** Animation is stopped */\n Stopped = 2,\n}\n\n/**\n * Root motion mode of {@link AnimationComponent}.\n */\nexport enum RootMotionMode {\n /** Do nothing */\n None = 0,\n /** Move and rotate root with the delta of its motion */\n ApplyToOwner = 1,\n /** Store the motion to be retrieved by a JS script */\n Script = 2,\n}\n\n/**\n * Rigid body force mode for {@link PhysXComponent#addForce} and {@link PhysXComponent#addTorque}.\n *\n * [PhysX API Reference](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxapi/files/structPxForceMode.html)\n */\nexport enum ForceMode {\n /** Apply as force */\n Force = 0,\n\n /** Apply as impulse */\n Impulse = 1,\n\n /** Apply as velocity change, mass dependent */\n VelocityChange = 2,\n\n /** Apply as mass dependent force */\n Acceleration = 3,\n}\n\n/**\n * Collision callback event type.\n */\nexport enum CollisionEventType {\n /** Touch/contact detected, collision */\n Touch = 0,\n\n /** Touch/contact lost, uncollide */\n TouchLost = 1,\n\n /** Touch/contact with trigger detected */\n TriggerTouch = 2,\n\n /** Touch/contact with trigger lost */\n TriggerTouchLost = 3,\n}\n\n/**\n * Rigid body {@link PhysXComponent#shape}.\n *\n * [PhysX SDK Guide](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/Geometry.html#geometry-types).\n */\nexport enum Shape {\n /** No shape. */\n None = 0,\n\n /** Sphere shape. */\n Sphere = 1,\n\n /** Capsule shape. */\n Capsule = 2,\n\n /** Box shape. */\n Box = 3,\n\n /** Plane shape. */\n Plane = 4,\n\n /** Convex mesh shape. */\n ConvexMesh = 5,\n\n /** Triangle mesh shape. */\n TriangleMesh = 6,\n}\n\n/**\n * Mesh attribute enum.\n * @since 0.9.0\n */\nexport enum MeshAttribute {\n /** Position attribute, 3 floats */\n Position = 0,\n\n /** Tangent attribute, 4 floats */\n Tangent = 1,\n\n /** Normal attribute, 3 floats */\n Normal = 2,\n\n /** Texture coordinate attribute, 2 floats */\n TextureCoordinate = 3,\n\n /** Color attribute, 4 floats, RGBA, range `0` to `1` */\n Color = 4,\n\n /** Joint id attribute, 8 unsigned ints */\n JointId = 5,\n\n /** Joint weights attribute, 8 floats */\n JointWeight = 6,\n\n /** Secondary texture coordinate attribute, 2 floats */\n SecondaryTextureCoordinate = 7,\n}\n\n/** Proxy used to override prototypes of destroyed objects. */\nexport const DestroyedObjectInstance = createDestroyedProxy('object');\n/** Proxy used to override prototypes of destroyed components. */\nexport const DestroyedComponentInstance = createDestroyedProxy('component');\n/** Proxy used to override prototypes of destroyed prefabs. */\nexport const DestroyedPrefabInstance = createDestroyedProxy('prefab/scene');\n\n/**\n * Check whether a given shape is a mesh or not.\n *\n * @param shape The shape to check.\n * @returns `true` if the shape is a mesh, `false` if it's a primitive.\n */\nfunction isMeshShape(shape: Shape): boolean {\n return shape === Shape.ConvexMesh || shape === Shape.TriangleMesh;\n}\n\n/**\n * Check whether an object is the {@link Component} class or not,\n *\n * @note This method if foolproof to developers inadvertently using\n * multiple Wonderland Engine API in a bundle.\n *\n * @param value The object to check.\n * @returns `true` if the object is a {@link Component} class, `false` otherwise.\n */\nfunction isBaseComponentClass(\n value: Constructor | null\n): value is ComponentConstructor {\n return (\n !!value &&\n value.hasOwnProperty('_isBaseComponent') &&\n (value as ComponentConstructor)._isBaseComponent\n );\n}\n\n/**\n * Constants.\n */\n\n/**\n * Default world up vector.\n */\nconst UP_VECTOR = [0, 1, 0];\n\nconst SQRT_3 = Math.sqrt(3);\n\n/**\n * Provides access to a component instance of a specified component type.\n *\n * @example\n *\n * This is how you extend this class to create your own custom\n * component:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * };\n * start() {}\n * onActivate() {}\n * onDeactivate() {}\n * update(dt) {}\n * }\n * ```\n *\n * In a component, the scene can be accessed using `this.scene`:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * start() {\n * const obj = this.scene.addObject();\n * }\n * }\n * ```\n */\nexport class Component {\n /**\n * Pack scene index and component id.\n *\n * @param scene Scene index.\n * @param id Component id.\n * @returns The packed id.\n *\n * @hidden\n */\n static _pack(scene: number, id: number) {\n return (scene << 22) | id;\n }\n\n /**\n * `true` for every class inheriting from this class.\n *\n * @note This is a workaround for `instanceof` to prevent issues\n * that could arise when an application ends up using multiple API versions.\n *\n * @hidden\n */\n static readonly _isBaseComponent = true;\n\n /**\n * Fixed order of attributes in the `Properties` array.\n *\n * @note This is used for parameter deserialization and is filled during\n * component registration.\n *\n * @hidden\n */\n static _propertyOrder: string[] = [];\n\n /**\n * Unique identifier for this component class.\n *\n * This is used to register, add, and retrieve components of a given type.\n */\n static TypeName: string;\n\n /**\n * Properties of this component class.\n *\n * Properties are public attributes that can be configured via the\n * Wonderland Editor.\n *\n * Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * myFloat: { type: Type.Float, default: false },\n * myTexture: { type: Type.Texture, default: null },\n * };\n * }\n * ```\n *\n * Properties are automatically added to each component instance, and are\n * accessible like any JS attribute:\n *\n * ```js\n * // Creates a new component and set each properties value:\n * const myComponent = object.addComponent(MyComponent, {\n * myBoolean: true,\n * myFloat: 42.0,\n * myTexture: null\n * });\n *\n * // You can also override the properties on the instance:\n * myComponent.myBoolean = false;\n * myComponent.myFloat = -42.0;\n * ```\n *\n * #### References\n *\n * Reference types (i.e., mesh, object, etc...) can also be listed as **required**:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myObject: Property.object({required: true}),\n * myAnimation: Property.animation({required: true}),\n * myTexture: Property.texture({required: true}),\n * myMesh: Property.mesh({required: true}),\n * }\n * }\n * ```\n *\n * Please note that references are validated **once** before the call to {@link Component.start} only,\n * via the {@link Component.validateProperties} method.\n */\n static Properties: Record;\n\n /**\n * When set to `true`, the child class inherits from the parent\n * properties, as shown in the following example:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Parent extends Component {\n * static TypeName = 'parent';\n * static Properties = {parentName: Property.string('parent')}\n * }\n *\n * class Child extends Parent {\n * static TypeName = 'child';\n * static Properties = {name: Property.string('child')}\n * static InheritProperties = true;\n *\n * start() {\n * // Works because `InheritProperties` is `true`.\n * console.log(`${this.name} inherits from ${this.parentName}`);\n * }\n * }\n * ```\n *\n * @note Properties defined in descendant classes will override properties\n * with the same name defined in ancestor classes.\n *\n * Defaults to `true`.\n */\n static InheritProperties?: boolean;\n\n /**\n * Called when this component class is registered.\n *\n * @example\n *\n * This callback can be used to register dependencies of a component,\n * e.g., component classes that need to be registered in order to add\n * them at runtime with {@link Object3D.addComponent}, independent of whether\n * they are used in the editor.\n *\n * ```js\n * class Spawner extends Component {\n * static TypeName = 'spawner';\n *\n * static onRegister(engine) {\n * engine.registerComponent(SpawnedComponent);\n * }\n *\n * // You can now use addComponent with SpawnedComponent\n * }\n * ```\n *\n * @example\n *\n * This callback can be used to register different implementations of a\n * component depending on client features or API versions.\n *\n * ```js\n * // Properties need to be the same for all implementations!\n * const SharedProperties = {};\n *\n * class Anchor extends Component {\n * static TypeName = 'spawner';\n * static Properties = SharedProperties;\n *\n * static onRegister(engine) {\n * if(navigator.xr === undefined) {\n * /* WebXR unsupported, keep this dummy component *\\/\n * return;\n * }\n * /* WebXR supported! Override already registered dummy implementation\n * * with one depending on hit-test API support *\\/\n * engine.registerComponent(window.HitTestSource === undefined ?\n * AnchorWithoutHitTest : AnchorWithHitTest);\n * }\n *\n * // This one implements no functions\n * }\n * ```\n */\n static onRegister?: (engine: WonderlandEngine) => void;\n\n /**\n * Allows to inherit properties directly inside the editor.\n *\n * @note Do not use directly, prefer using {@link inheritProperties}.\n *\n * @hidden\n */\n static _inheritProperties() {\n inheritProperties(this);\n }\n\n /**\n * Triggered when the component is initialized by the runtime. This method\n * will only be triggered **once** after instantiation.\n *\n * @note During the initialization phase, `this.scene` will not match\n * `engine.scene`, since `engine.scene` references the **active** scene:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * init() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `false`\n * }\n * start() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `true`\n * }\n * }\n * ```\n */\n init?(): void;\n\n /**\n * Triggered when the component is started by the runtime, or activated.\n *\n * You can use that to re-initialize the state of the component.\n */\n start?(): void;\n\n /**\n * Triggered **every frame** by the runtime.\n *\n * You should perform your business logic in this method. Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * class TranslateForwardComponent extends Component {\n * static TypeName = 'translate-forward-component';\n * static Properties = {\n * speed: { type: Type.Float, default: 1.0 }\n * };\n * constructor() {\n * this._forward = new Float32Array([0, 0, 0]);\n * }\n * update(dt) {\n * this.object.getForward(this._forward);\n * this._forward[0] *= this.speed;\n * this._forward[1] *= this.speed;\n * this._forward[2] *= this.speed;\n * this.object.translate(this._forward);\n * }\n * }\n * ```\n *\n * @param delta Elapsed time between this frame and the previous one, in **seconds**.\n */\n update?(delta: number): void;\n\n /**\n * Triggered when the component goes from an inactive state to an active state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), all the components\n * that were previously active will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onActivate?(): void;\n\n /**\n * Triggered when the component goes from an activated state to an inactive state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), the components of\n * the scene getting deactivated will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onDeactivate?(): void;\n\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @note This method will not be triggered for inactive scene being destroyed.\n *\n * @since 0.9.0\n */\n onDestroy?(): void;\n\n /** Manager index. @hidden */\n readonly _manager: number;\n /** Packed id, containing the scene and the local id. @hidden */\n readonly _id: number;\n /** Id relative to the scene component's manager. @hidden */\n readonly _localId: number;\n\n /**\n * Object containing this object.\n *\n * **Note**: This is cached for faster retrieval.\n *\n * @hidden\n */\n _object: Object3D | null;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n\n /**\n * Create a new instance\n *\n * @param engine The engine instance.\n * @param manager Index of the manager.\n * @param id WASM component instance index.\n *\n * @hidden\n */\n constructor(scene: Prefab, manager: number = -1, id: number = -1) {\n this._scene = scene;\n this._manager = manager;\n this._localId = id;\n this._id = Component._pack(scene._index, id);\n this._object = null;\n }\n\n /** Scene this component is part of. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** The name of this component's type */\n get type(): string {\n const ctor = this.constructor as ComponentConstructor;\n return ctor.TypeName;\n }\n\n /** The object this component is attached to. */\n get object(): Object3D {\n if (!this._object) {\n const objectId = this.engine.wasm._wl_component_get_object(\n this._manager,\n this._id\n );\n this._object = this._scene.wrap(objectId);\n }\n return this._object;\n }\n\n /**\n * Set whether this component is active.\n *\n * Activating/deactivating a component comes at a small cost of reordering\n * components in the respective component manager. This function therefore\n * is not a trivial assignment.\n *\n * Does nothing if the component is already activated/deactivated.\n *\n * @param active New active state.\n */\n set active(active: boolean) {\n this.engine.wasm._wl_component_setActive(this._manager, this._id, active);\n }\n\n /** `true` if the component is marked as active and its scene is active. */\n get active(): boolean {\n return this.markedActive && this._scene.isActive;\n }\n\n /**\n * `true` if the component is marked as active in the scene, `false` otherwise.\n *\n * @note At the opposite of {@link Component.active}, this accessor doesn't\n * take into account whether the scene is active or not.\n */\n get markedActive(): boolean {\n return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0;\n }\n\n /**\n * Copy all the properties from `src` into this instance.\n *\n * @note Only properties are copied. If a component needs to\n * copy extra data, it needs to override this method.\n *\n * #### Example\n *\n * ```js\n * class MyComponent extends Component {\n * nonPropertyData = 'Hello World';\n *\n * copy(src) {\n * super.copy(src);\n * this.nonPropertyData = src.nonPropertyData;\n * return this;\n * }\n * }\n * ```\n *\n * @note This method is called by {@link Object3D.clone}. Do not attempt to:\n * - Create new component\n * - Read references to other objects\n *\n * When cloning via {@link Object3D.clone}, this method will be called before\n * {@link Component.start}.\n *\n * @note JavaScript component properties aren't retargeted. Thus, references\n * inside the source object will not be retargeted to the destination object,\n * at the exception of the skin data on {@link MeshComponent} and {@link AnimationComponent}.\n *\n * @param src The source component to copy from.\n *\n * @returns Reference to self (for method chaining).\n */\n copy(src: Record): this {\n const ctor = this.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return this;\n for (const name in properties) {\n const property = properties[name];\n const value = src[name];\n if (value === undefined) continue;\n const cloner = property.cloner ?? defaultPropertyCloner;\n (this as Record)[name] = cloner.clone(property.type, value);\n }\n return this;\n }\n\n /**\n * Remove this component from its objects and destroy it.\n *\n * It is best practice to set the component to `null` after,\n * to ensure it does not get used later.\n *\n * ```js\n * c.destroy();\n * c = null;\n * ```\n * @since 0.9.0\n */\n destroy(): void {\n const manager = this._manager;\n if (manager < 0 || this._id < 0) return;\n\n /* This call will mark the component destroyed,\n * automatically calling `_triggerOnDestroy`. */\n this.engine.wasm._wl_component_remove(manager, this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const componentA = obj.addComponent('mesh');\n * const componentB = obj.addComponent('mesh');\n * const componentC = componentB;\n * console.log(componentA === componentB); // false\n * console.log(componentA === componentA); // true\n * console.log(componentB === componentC); // true\n * ```\n */\n equals(otherComponent: Component | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherComponent) return false;\n return this._manager === otherComponent._manager && this._id === otherComponent._id;\n }\n\n /**\n * Reset the component properties to default.\n *\n * @note This is automatically called during the component instantiation.\n *\n * @returns Reference to self (for method chaining).\n */\n resetProperties(): this {\n resetComponentProperties(this);\n return this;\n }\n\n /** @deprecated Use {@link Component.resetProperties} instead. */\n reset(): this {\n return this.resetProperties();\n }\n\n /**\n * Validate the properties on this instance.\n *\n * @throws If any of the required properties isn't initialized\n * on this instance.\n */\n validateProperties(): void {\n const ctor = this.constructor as ComponentConstructor;\n if (!ctor.Properties) return;\n\n for (const name in ctor.Properties) {\n if (!ctor.Properties[name].required) continue;\n if (!(this as Record)[name]) {\n throw new Error(`Property '${name}' is required but was not initialized`);\n }\n }\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Component(destroyed)';\n }\n return `Component('${this.type}', ${this._localId})`;\n }\n\n /**\n * `true` if the component is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const comp = obj.addComponent('mesh');\n * comp.customParam = 'Hello World!';\n *\n * console.log(comp.isDestroyed); // Prints `false`\n * comp.destroy();\n * console.log(comp.isDestroyed); // Prints `true`\n * console.log(comp.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /** @hidden */\n _copy(src: this, offsetsPtr: number, copyInfoPtr: number) {\n const wasm = this.engine.wasm;\n\n /** @todo: Support retargeting for `Object3D.clone` as well. */\n const offsets = wasm.HEAPU32;\n const offsetsStart = offsetsPtr >>> 2;\n\n const copyInfoStart = copyInfoPtr >>> 1;\n const srcRootIndex = wasm.HEAPU16[copyInfoStart]; /* Defaults to max ushort */\n const srcRootSize = wasm.HEAPU16[copyInfoStart + 1]; /* Defaults to 0 */\n const dstRootIndex = wasm.HEAPU16[copyInfoStart + 2]; /* Defaults to 0 */\n\n const destScene = this._scene;\n\n const ctor = this.constructor as ComponentConstructor;\n for (const name in ctor.Properties) {\n const value = (src as Record)[name];\n if (value === null) {\n (this as Record)[name] = null;\n continue;\n }\n\n const prop = ctor.Properties[name];\n const offset = offsets[offsetsStart + prop.type];\n\n let retargeted = null;\n switch (prop.type) {\n case Type.Object: {\n let index = wasm._wl_object_index((value as Object3D)._id) + offset;\n const dist = index - srcRootIndex;\n if (dist >= 0 && dist <= srcRootSize) {\n /* Only retarget if a reference points into the source hierarchy. */\n index = dstRootIndex + dist;\n }\n const id = wasm._wl_object_id(destScene._index, index);\n retargeted = destScene.wrap(id);\n break;\n }\n case Type.Animation:\n retargeted = destScene.animations.wrap(\n offset + (value as Animation)._index\n );\n break;\n case Type.Skin:\n retargeted = destScene.skins.wrap(offset + (value as Skin)._index);\n break;\n default:\n const cloner = prop.cloner ?? defaultPropertyCloner;\n retargeted = cloner.clone(prop.type, value);\n break;\n }\n (this as Record)[name] = retargeted;\n }\n return this;\n }\n\n /**\n * Trigger the component {@link Component.init} method.\n *\n * @note Use this method instead of directly calling {@link Component.init},\n * because this method creates an handler for the {@link Component.start}.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerInit() {\n if (this.init) {\n try {\n this.init();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} init() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /* Arm onActivate() with the initial start() call */\n const oldActivate = this.onActivate;\n this.onActivate = function () {\n this.onActivate = oldActivate;\n let failed = false;\n try {\n this.validateProperties();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} validateProperties() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n try {\n this.start?.();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} start() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n if (failed) {\n this.active = false;\n return;\n }\n\n if (!this.onActivate) return;\n\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n };\n }\n\n /**\n * Trigger the component {@link Component.update} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerUpdate(dt: number) {\n if (!this.update) return;\n try {\n this.update(dt);\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} update() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n if (this.engine.wasm._deactivate_component_on_error) {\n this.active = false;\n }\n }\n }\n\n /**\n * Trigger the component {@link Component.onActivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnActivate() {\n if (!this.onActivate) return;\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDeactivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDeactivate() {\n if (!this.onDeactivate) return;\n try {\n this.onDeactivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDeactivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDestroy} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDestroy() {\n try {\n if (this.onDestroy) this.onDestroy();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDestroy() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n this._scene._components.destroy(this);\n }\n}\n\n/**\n * Components must be registered before loading / appending a scene.\n *\n * It's possible to end up with a broken component in the following cases:\n *\n * - Component wasn't registered when the scene was loaded\n * - Component instantiation failed\n *\n * This dummy component is thus used as a placeholder by the engine.\n */\nexport class BrokenComponent extends Component {\n static TypeName = '__broken-component__';\n}\n\n/**\n * Merge the ascendant properties of class\n *\n * This method walks the prototype chain, and merges\n * all the properties found in parent components.\n *\n * Example:\n *\n * ```js\n * import {Property, inheritProperties} from '@wonderlandengine/api';\n *\n * class Parent {\n * static Properties = { parentProp: Property.string('parent') };\n * }\n *\n * class Child extends Parent {\n * static Properties = { childProp: Property.string('child') };\n * }\n * inheritProperties(Child);\n * ```\n *\n * @param target The class in which properties should be merged\n *\n * @hidden\n */\nexport function inheritProperties(target: ComponentConstructor | PropertyRecord) {\n const chain: ComponentConstructor[] = [];\n let curr: Constructor | null = target;\n while (curr && !isBaseComponentClass(curr)) {\n const comp = curr as ComponentConstructor;\n\n /* Stop at the first class that doesn't require properties merging */\n const needsMerge = comp.hasOwnProperty('InheritProperties')\n ? comp.InheritProperties\n : true;\n if (!needsMerge) break;\n\n if (comp.hasOwnProperty('Properties')) {\n /* We push properties even if the object isn't deriving from a Component class.\n * This could theoretically lead to issue, when inheriting from another type\n * of component (lit-like elements) but extremely unlikely. */\n chain.push(comp);\n }\n curr = Object.getPrototypeOf(curr);\n }\n\n /* No prototype merge is needed. */\n if (!chain.length || (chain.length === 1 && chain[0] === target)) {\n return;\n }\n\n const merged: Record = {};\n for (let i = chain.length - 1; i >= 0; --i) {\n Object.assign(merged, chain[i].Properties);\n }\n target.Properties = merged;\n}\n\n/**\n * Native collision component.\n *\n * Provides access to a native collision component instance.\n */\nexport class CollisionComponent extends Component {\n /** @override */\n static TypeName = 'collision';\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * Collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the returned vector is used.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** Collision component collider */\n @nativeProperty()\n get collider(): Collider {\n return this.engine.wasm._wl_collision_component_get_collider(this._id);\n }\n\n /**\n * Set collision component collider.\n *\n * @param collider Collider of the collision component.\n */\n set collider(collider: Collider) {\n this.engine.wasm._wl_collision_component_set_collider(this._id, collider);\n }\n\n /**\n * Equivalent to {@link CollisionComponent.getExtents}.\n *\n * @note Prefer to use {@link CollisionComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n }\n\n /**\n * Set collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the passed vector is used.\n *\n * Example:\n *\n * ```js\n * // Spans 1 unit on the x-axis, 2 on the y-axis, 3 on the z-axis.\n * collision.extent = [1, 2, 3];\n * ```\n *\n * @param extents Extents of the collision component, expects a\n * 3 component array.\n */\n set extents(extents: Readonly) {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = extents[0];\n wasm.HEAPF32[ptr + 1] = extents[1];\n wasm.HEAPF32[ptr + 2] = extents[2];\n }\n\n /**\n * Get collision component radius.\n *\n * @note If {@link collider} is not {@link Collider.Sphere}, the returned value\n * corresponds to the radius of a sphere enclosing the shape.\n *\n * Example:\n *\n * ```js\n * sphere.radius = 3.0;\n * console.log(sphere.radius); // 3.0\n *\n * box.extents = [2.0, 2.0, 2.0];\n * console.log(box.radius); // 1.732...\n * ```\n *\n */\n get radius(): number {\n const wasm = this.engine.wasm;\n if (this.collider === Collider.Sphere)\n return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2];\n const extents = new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n const x2 = extents[0] * extents[0];\n const y2 = extents[1] * extents[1];\n const z2 = extents[2] * extents[2];\n return Math.sqrt(x2 + y2 + z2) / 2;\n }\n\n /**\n * Set collision component radius.\n *\n * @param radius Radius of the collision component\n *\n * @note If {@link collider} is not {@link Collider.Sphere},\n * the extents are set to form a square that fits a sphere with the provided radius.\n *\n * Example:\n *\n * ```js\n * aabbCollision.radius = 2.0; // AABB fits a sphere of radius 2.0\n * boxCollision.radius = 3.0; // Box now fits a sphere of radius 3.0, keeping orientation\n * ```\n *\n */\n set radius(radius: number) {\n const length = this.collider === Collider.Sphere ? radius : (2 * radius) / SQRT_3;\n this.extents.set([length, length, length]);\n }\n\n /**\n * Collision component group.\n *\n * The groups is a bitmask that is compared to other components in {@link CollisionComponent#queryOverlaps}\n * or the group in {@link Scene#rayCast}.\n *\n * Colliders that have no common groups will not overlap with each other. If a collider\n * has none of the groups set for {@link Scene#rayCast}, the ray will not hit it.\n *\n * Each bit represents belonging to a group, see example.\n *\n * ```js\n * // c belongs to group 2\n * c.group = (1 << 2);\n *\n * // c belongs to group 0\n * c.group = (1 << 0);\n *\n * // c belongs to group 0 *and* 2\n * c.group = (1 << 0) | (1 << 2);\n *\n * (c.group & (1 << 2)) != 0; // true\n * (c.group & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get group(): number {\n return this.engine.wasm._wl_collision_component_get_group(this._id);\n }\n\n /**\n * Set collision component group.\n *\n * @param group Group mask of the collision component.\n */\n set group(group: number) {\n this.engine.wasm._wl_collision_component_set_group(this._id, group);\n }\n\n /**\n * Query overlapping objects.\n *\n * Usage:\n *\n * ```js\n * const collision = object.getComponent('collision');\n * const overlaps = collision.queryOverlaps();\n * for(const otherCollision of overlaps) {\n * const otherObject = otherCollision.object;\n * console.log(`Collision with object ${otherObject.objectId}`);\n * }\n * ```\n *\n * @returns Collision components overlapping this collider.\n */\n queryOverlaps(): CollisionComponent[] {\n const count = this.engine.wasm._wl_collision_component_query_overlaps(\n this._id,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const overlaps: CollisionComponent[] = new Array(count);\n for (let i = 0; i < count; ++i) {\n const id = this.engine.wasm._tempMemUint16[i];\n overlaps[i] = this._scene._components.wrapCollision(id);\n }\n return overlaps;\n }\n}\n\n/**\n * Native text component\n *\n * Provides access to a native text component instance\n */\nexport class TextComponent extends Component {\n /** @override */\n static TypeName = 'text';\n\n /** Text component alignment. */\n @nativeProperty()\n get alignment(): Alignment {\n return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id);\n }\n\n /**\n * Set text component alignment.\n *\n * @param alignment Alignment for the text component.\n */\n set alignment(alignment: Alignment) {\n this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment);\n }\n\n /**\n * Text component vertical alignment.\n * @since 1.2.0\n */\n @nativeProperty()\n get verticalAlignment(): VerticalAlignment {\n return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id);\n }\n\n /**\n * Set text component vertical alignment.\n *\n * @param verticalAlignment Vertical for the text component.\n * @since 1.2.0\n */\n set verticalAlignment(verticalAlignment: VerticalAlignment) {\n this.engine.wasm._wl_text_component_set_vertical_alignment(\n this._id,\n verticalAlignment\n );\n }\n\n /**\n * Text component justification.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n @nativeProperty()\n get justification() {\n return this.verticalAlignment;\n }\n\n /**\n * Set text component justification.\n *\n * @param justification Justification for the text component.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n set justification(justification: VerticalAlignment) {\n this.verticalAlignment = justification;\n }\n\n /**\n * Whether text is justified horizontally.\n *\n * Aligns text horizontally to both margins by adding space between words.\n *\n * Requires {@link wrapMode} to be {@link TextWrapMode.Soft} or\n * {@link TextWrapMode.Hard} and non-0 {@link wrapWidth}.\n *\n * The last line in a paragraph is never justified and respects\n * {@link alignment}.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get justified(): boolean {\n return !!this.engine.wasm._wl_text_component_get_justified(this._id);\n }\n\n /**\n * Set whether text is justified horizontally.\n *\n * @param justified New justified state for the text component.\n * @since 1.3.0\n */\n set justified(justified: boolean) {\n this.engine.wasm._wl_text_component_set_justified(this._id, justified);\n }\n\n /** Text component character spacing. */\n @nativeProperty()\n get characterSpacing(): number {\n return this.engine.wasm._wl_text_component_get_character_spacing(this._id);\n }\n\n /**\n * Set text component character spacing.\n *\n * @param spacing Character spacing for the text component.\n */\n set characterSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing);\n }\n\n /** Text component line spacing. */\n @nativeProperty()\n get lineSpacing(): number {\n return this.engine.wasm._wl_text_component_get_line_spacing(this._id);\n }\n\n /**\n * Set text component line spacing.\n *\n * @param spacing Line spacing for the text component\n */\n set lineSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing);\n }\n\n /** Text component effect. */\n @nativeProperty()\n get effect(): TextEffect {\n return this.engine.wasm._wl_text_component_get_effect(this._id);\n }\n\n /**\n * Set text component effect.\n *\n * @param effect Effect for the text component\n */\n set effect(effect: TextEffect) {\n this.engine.wasm._wl_text_component_set_effect(this._id, effect);\n }\n\n /**\n * Equivalent to {@link getEffectOffset}.\n *\n * @note Prefer to use {@link getEffectOffset} for performance.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get effectOffset(): Float32Array {\n return this.getEffectOffset();\n }\n\n /**\n * Equivalent to {@link setEffectOffset}.\n *\n * @since 1.3.0\n */\n set effectOffset(offset: Readonly) {\n this.setEffectOffset(offset);\n }\n\n /** @overload */\n getEffectOffset(): Float32Array;\n /**\n * Get text component effect offset.\n *\n * @param out Destination array, expected to have at least 2 elements.\n * @returns The `out` parameter.\n *\n * @since 1.3.0\n */\n getEffectOffset(out: T): T;\n getEffectOffset(out: NumberArray = new Float32Array(2)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n return out;\n }\n\n /**\n * Set text component effect offset.\n *\n * The offset is given as X and Y factors for {@link Font.emHeight}. E.g. a\n * value of 2 in one axis offsets the effect by two font line heights. A\n * positive Y value moves the effect **upwards**.\n *\n * @param offset Array with new offset, expected to have at least 2 elements.\n *\n * @since 1.3.0\n */\n setEffectOffset(offset: Readonly) {\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(offset);\n wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem);\n }\n\n /**\n * Text component line wrap mode.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapMode(): TextWrapMode {\n return this.engine.wasm._wl_text_component_get_wrapMode(this._id);\n }\n\n /**\n * Set text component line wrap mode.\n *\n * @param wrapMode Line wrap mode for the text component.\n * @since 1.2.1\n */\n set wrapMode(wrapMode: TextWrapMode) {\n this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode);\n }\n\n /**\n * Text component line wrap width, in object space.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapWidth(): number {\n return this.engine.wasm._wl_text_component_get_wrapWidth(this._id);\n }\n\n /**\n * Set text component line wrap width.\n *\n * Only takes effect when {@link wrapMode} is something other than\n * {@link TextWrapMode.None}.\n *\n * @param width Line wrap width for the text component, in object space.\n * @since 1.2.1\n */\n set wrapWidth(width: number) {\n this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width);\n }\n\n /** Text component text. */\n @nativeProperty()\n get text(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_text_component_get_text(this._id);\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Set text component text.\n *\n * @param text Text of the text component.\n */\n set text(text: any) {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString()));\n }\n\n /**\n * Set material to render the text with.\n *\n * @param material New material.\n */\n set material(material: Material | null | undefined) {\n const matIndex = material ? material._id : 0;\n this.engine.wasm._wl_text_component_set_material(this._id, matIndex);\n }\n\n /** Material used to render the text. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_text_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** @overload */\n getBoundingBoxForText(text: string): Float32Array;\n /**\n * Axis-aligned bounding box for a given text, in object space.\n *\n * To calculate the size for the currently set text, use\n * {@link getBoundingBox}.\n *\n * Useful for calculating the text size before an update and potentially\n * adjusting the text:\n *\n * ```js\n * let updatedName = 'some very long name';\n * const box = new Float32Array(4);\n * text.getBoundingBoxForText(updatedName, box);\n * const width = box[2] - box[0];\n * if(width > 2.0) {\n * updatedName = updatedName.slice(0, 5) + '...';\n * }\n * text.text = updatedName;\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBoxForText(text: string, out: T): T;\n /** @overload */\n getBoundingBoxForText(\n text: string,\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n /* Offset by 4 floats, output is written to _tempMem */\n const textPtr = wasm.tempUTF8(text, 4 * 4);\n this.engine.wasm._wl_text_component_get_boundingBox(\n this._id,\n textPtr,\n wasm._tempMem\n );\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n getBoundingBox(): Float32Array;\n /**\n * Axis-aligned bounding box, in object space.\n *\n * The bounding box is computed using the current component properties\n * that influence the position and size of the text. The bounding box is\n * affected by alignment, spacing, effect type and the font set in the\n * material.\n *\n * To calculate the size for a different text, use\n * {@link getBoundingBoxForText}.\n *\n * Useful for adjusting text position or scaling:\n *\n * ```js\n * const box = new Float32Array(4);\n * text.getBoundingBox(box);\n * const width = box[2] - box[0];\n * // Make text 1m wide\n * text.object.setScalingLocal([1/width, 1, 1]);\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBox(out: T): T;\n /** @overload */\n getBoundingBox(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n}\n\n/**\n * Native view component.\n *\n * Provides access to a native view component instance.\n */\nexport class ViewComponent extends Component {\n /** @override */\n static TypeName = 'view';\n\n /**\n * Projection type of the view.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get projectionType(): ProjectionType {\n return this.engine.wasm._wl_view_component_get_projectionType(this._id);\n }\n\n /**\n * Set the projection type of the view.\n *\n * @param type New projection type.\n * @since 1.2.2\n */\n set projectionType(type) {\n this.engine.wasm._wl_view_component_set_projectionType(this._id, type);\n }\n\n /** @overload */\n getProjectionMatrix(): Float32Array;\n /**\n * Projection matrix.\n *\n * A 4x4 matrix that transforms from view space to a WebGL-compatible clip\n * space (-1 to 1 on all axes, near plane at -1, far plane at 1).\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the projection matrix reported by the device.\n *\n * @note This is not necessarily the final projection matrix used for\n * rendering. You can use it for unprojecting from screen space coordinates\n * to view space.\n *\n * @param out Destination array/vector, expected to have at least 16 elements.\n * @returns The `out` parameter.\n */\n getProjectionMatrix(out: T): T;\n getProjectionMatrix(out: NumberArray = new Float32Array(16)): NumberArray {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem);\n for (let i = 0; i < 16; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Equivalent to {@link ViewComponent.getProjectionMatrix}.\n *\n * @note Prefer to use {@link ViewComponent.getProjectionMatrix} for performance.\n */\n @enumerable()\n get projectionMatrix(): Float32Array {\n return this.getProjectionMatrix();\n }\n\n /**\n * Override projection matrix for this view.\n *\n * Bypasses the generation of the projection matrix from viewport, fov, near, far.\n *\n * @hidden\n */\n _setProjectionMatrix(v: Readonly) {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._tempMemFloat.set(v);\n wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem);\n }\n\n /**\n * Generate projection matrix from viewport, fov, near, far.\n *\n * Overwrites any projection matrix set manually.\n *\n * @hidden\n */\n _generateProjectionMatrix() {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_generate_projectionMatrix(this._id);\n }\n\n /** ViewComponent near clipping plane value. */\n @nativeProperty()\n get near(): number {\n return this.engine.wasm._wl_view_component_get_near(this._id);\n }\n\n /**\n * Set near clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param near Near depth value.\n */\n set near(near: number) {\n this.engine.wasm._wl_view_component_set_near(this._id, near);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(near, this.far);\n }\n }\n\n /** Far clipping plane value. */\n @nativeProperty()\n get far(): number {\n return this.engine.wasm._wl_view_component_get_far(this._id);\n }\n\n /**\n * Set far clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param far Near depth value.\n */\n set far(far: number) {\n this.engine.wasm._wl_view_component_set_far(this._id, far);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(this.near, far);\n }\n }\n\n /**\n * Get the horizontal field of view for the view, **in degrees**.\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the field of view reported by the device, regardless of the fov\n * that was set.\n */\n @nativeProperty()\n get fov(): number {\n return this.engine.wasm._wl_view_component_get_fov(this._id);\n }\n\n /**\n * Set the horizontal field of view for the view, **in degrees**.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Perspective}.\n *\n * If an XR session is active and this is the left or right eye view, the\n * field of view reported by the device is used and this value is ignored.\n * After the XR session ends, the new value is applied.\n *\n * @param fov Horizontal field of view, **in degrees**.\n */\n set fov(fov) {\n this.engine.wasm._wl_view_component_set_fov(this._id, fov);\n }\n\n /** @overload */\n getViewport(): Int32Array;\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n */\n getViewport(out: T): T;\n getViewport(out: NumberArray = new Int32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_view_component_get_viewport(this._id);\n for (let i = 0; i < 4; ++i) {\n out[i] = wasm.HEAPF32[ptr + i];\n }\n return out;\n }\n\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n */\n @enumerable()\n get viewport(): Int32Array {\n return this.getViewport();\n }\n\n /**\n * Set viewport.\n *\n * @hidden\n */\n _setViewport(x: number, y: number, width: number, height: number) {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_set_viewport(this._id, x, y, width, height);\n }\n\n /**\n * Get the width of the orthographic viewing volume.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get extent(): number {\n return this.engine.wasm._wl_view_component_get_extent(this._id);\n }\n\n /**\n * Set the width of the orthographic viewing volume.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Orthographic}.\n *\n * @param extent New extent.\n * @since 1.2.2\n */\n set extent(extent) {\n this.engine.wasm._wl_view_component_set_extent(this._id, extent);\n }\n}\n\n/**\n * Native input component.\n *\n * Provides access to a native input component instance.\n */\nexport class InputComponent extends Component {\n /** @override */\n static TypeName = 'input';\n\n /** Input component type */\n @nativeProperty()\n get inputType(): InputType {\n return this.engine.wasm._wl_input_component_get_type(this._id);\n }\n\n /**\n * Set input component type.\n *\n * @params New input component type.\n */\n set inputType(type: InputType) {\n this.engine.wasm._wl_input_component_set_type(this._id, type);\n }\n\n /**\n * WebXR Device API input source associated with this input component,\n * if type {@link InputType.ControllerLeft} or {@link InputType.ControllerRight}.\n */\n @enumerable()\n get xrInputSource(): XRInputSource | null {\n const xr = this.engine.xr;\n if (!xr) return null;\n\n for (let inputSource of xr.session.inputSources) {\n if (inputSource.handedness == this.handedness) {\n return inputSource;\n }\n }\n\n return null;\n }\n\n /**\n * 'left', 'right' or `null` depending on the {@link InputComponent#inputType}.\n */\n @enumerable()\n get handedness(): 'left' | 'right' | null {\n const inputType = this.inputType;\n if (\n inputType == InputType.ControllerRight ||\n inputType == InputType.RayRight ||\n inputType == InputType.EyeRight\n )\n return 'right';\n if (\n inputType == InputType.ControllerLeft ||\n inputType == InputType.RayLeft ||\n inputType == InputType.EyeLeft\n )\n return 'left';\n\n return null;\n }\n}\n\n/**\n * Native light component.\n *\n * Provides access to a native light component instance.\n */\nexport class LightComponent extends Component {\n /** @override */\n static TypeName = 'light';\n\n /** @overload */\n getColor(): Float32Array;\n /**\n * Get light color.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n * @since 1.0.0\n */\n getColor(out: T): T;\n getColor(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set light color.\n *\n * @param c New color array/vector, expected to have at least 3 elements.\n * @since 1.0.0\n */\n setColor(c: Readonly): void {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = c[0];\n wasm.HEAPF32[ptr + 1] = c[1];\n wasm.HEAPF32[ptr + 2] = c[2];\n }\n\n /**\n * View on the light color.\n *\n * @note Prefer to use {@link getColor} in performance-critical code.\n */\n @nativeProperty()\n get color(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_light_component_get_color(this._id),\n 3\n );\n }\n\n /**\n * Set light color.\n *\n * @param c Color of the light component.\n *\n * @note Prefer to use {@link setColor} in performance-critical code.\n */\n set color(c: Readonly) {\n this.color.set(c);\n }\n\n /** Light type. */\n @nativeProperty()\n get lightType(): LightType {\n return this.engine.wasm._wl_light_component_get_type(this._id);\n }\n\n /**\n * Set light type.\n *\n * @param lightType Type of the light component.\n */\n set lightType(t: LightType) {\n this.engine.wasm._wl_light_component_set_type(this._id, t);\n }\n\n /**\n * Light intensity.\n * @since 1.0.0\n */\n @nativeProperty()\n get intensity(): number {\n return this.engine.wasm._wl_light_component_get_intensity(this._id);\n }\n\n /**\n * Set light intensity.\n *\n * @param intensity Intensity of the light component.\n * @since 1.0.0\n */\n set intensity(intensity: number) {\n this.engine.wasm._wl_light_component_set_intensity(this._id, intensity);\n }\n\n /**\n * Outer angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get outerAngle(): number {\n return this.engine.wasm._wl_light_component_get_outerAngle(this._id);\n }\n\n /**\n * Set outer angle for spot lights.\n *\n * @param angle Outer angle, in degrees.\n * @since 1.0.0\n */\n set outerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle);\n }\n\n /**\n * Inner angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get innerAngle(): number {\n return this.engine.wasm._wl_light_component_get_innerAngle(this._id);\n }\n\n /**\n * Set inner angle for spot lights.\n *\n * @param angle Inner angle, in degrees.\n * @since 1.0.0\n */\n set innerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle);\n }\n\n /**\n * Whether the light casts shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadows(): boolean {\n return !!this.engine.wasm._wl_light_component_get_shadows(this._id);\n }\n\n /**\n * Set whether the light casts shadows.\n *\n * @param b Whether the light casts shadows.\n * @since 1.0.0\n */\n set shadows(b: boolean) {\n this.engine.wasm._wl_light_component_set_shadows(this._id, b);\n }\n\n /**\n * Range for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowRange(): number {\n return this.engine.wasm._wl_light_component_get_shadowRange(this._id);\n }\n\n /**\n * Set range for shadows.\n *\n * @param range Range for shadows.\n * @since 1.0.0\n */\n set shadowRange(range: number) {\n this.engine.wasm._wl_light_component_set_shadowRange(this._id, range);\n }\n\n /**\n * Bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowBias(this._id);\n }\n\n /**\n * Set bias value for shadows.\n *\n * @param bias Bias for shadows.\n * @since 1.0.0\n */\n set shadowBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias);\n }\n\n /**\n * Normal bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowNormalBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id);\n }\n\n /**\n * Set normal bias value for shadows.\n *\n * @param bias Normal bias for shadows.\n * @since 1.0.0\n */\n set shadowNormalBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias);\n }\n\n /**\n * Texel size for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowTexelSize(): number {\n return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id);\n }\n\n /**\n * Set texel size for shadows.\n *\n * @param size Texel size for shadows.\n * @since 1.0.0\n */\n set shadowTexelSize(size: number) {\n this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size);\n }\n\n /**\n * Cascade count for {@link LightType.Sun} shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get cascadeCount(): number {\n return this.engine.wasm._wl_light_component_get_cascadeCount(this._id);\n }\n\n /**\n * Set cascade count for {@link LightType.Sun} shadows.\n *\n * @param count Cascade count.\n * @since 1.0.0\n */\n set cascadeCount(count: number) {\n this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count);\n }\n}\n\n/**\n * Native animation component.\n *\n * Provides access to a native animation component instance.\n */\nexport class AnimationComponent extends Component {\n /** @override */\n static TypeName = 'animation';\n\n /**\n * Emitter for animation events triggered on this component.\n *\n * The first argument is the name of the event.\n */\n readonly onEvent = new Emitter<[string]>();\n\n /**\n * Set animation to play.\n *\n * Make sure to {@link Animation#retarget} the animation to affect the\n * right objects.\n *\n * @param anim Animation to play.\n */\n set animation(anim: Animation | null | undefined) {\n this.scene.assertOrigin(anim);\n this.engine.wasm._wl_animation_component_set_animation(\n this._id,\n anim ? anim._id : 0\n );\n }\n\n /** Animation set for this component */\n @nativeProperty()\n get animation(): Animation | null {\n const index = this.engine.wasm._wl_animation_component_get_animation(this._id);\n return this._scene.animations.wrap(index);\n }\n\n /**\n * Set play count. Set to `0` to loop indefinitely.\n *\n * @param playCount Number of times to repeat the animation.\n */\n set playCount(playCount: number) {\n this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount);\n }\n\n /** Number of times the animation is played. */\n @nativeProperty()\n get playCount(): number {\n return this.engine.wasm._wl_animation_component_get_playCount(this._id);\n }\n\n /**\n * Set speed. Set to negative values to run the animation backwards.\n *\n * Setting speed has an immediate effect for the current frame's update\n * and will continue with the speed from the current point in the animation.\n *\n * @param speed New speed at which to play the animation.\n * @since 0.8.10\n */\n set speed(speed: number) {\n this.engine.wasm._wl_animation_component_set_speed(this._id, speed);\n }\n\n /**\n * Speed factor at which the animation is played.\n *\n * @since 0.8.10\n */\n @nativeProperty()\n get speed(): number {\n return this.engine.wasm._wl_animation_component_get_speed(this._id);\n }\n\n /** Current playing state of the animation */\n @enumerable()\n get state(): AnimationState {\n return this.engine.wasm._wl_animation_component_state(this._id);\n }\n\n /**\n * How to handle root motion on this component.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n @enumerable()\n get rootMotionMode(): RootMotionMode {\n return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id);\n }\n\n /**\n * Set how to handle root motion.\n *\n * @param mode Mode to handle root motion, see {@link RootMotionMode}.\n * @since 1.2.2\n */\n set rootMotionMode(mode: RootMotionMode) {\n this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode);\n }\n\n /**\n * Current iteration of the animation.\n *\n * If {@link playCount} is not unlimited, the value is in the range from\n * `0` to `playCount`.\n *\n * @since 1.2.3\n */\n get iteration(): number {\n return this.engine.wasm._wl_animation_component_get_iteration(this._id);\n }\n\n /**\n * Current playing position of the animation within the current iteration,\n * in seconds.\n *\n * The value is in the range from `0.0` to {@link AnimationComponent#duration},\n * if playing in reverse, this range is reversed as well.\n *\n * @since 1.2.3\n */\n get position(): number {\n return this.engine.wasm._wl_animation_component_get_position(this._id);\n }\n\n /**\n * Current duration to loop one iteration in seconds, offers a more accurate duration\n * than {@link Animation#duration} when blending multiple animations.\n *\n * @since 1.2.3\n */\n get duration(): number {\n return this.engine.wasm._wl_animation_component_get_duration(this._id);\n }\n\n /**\n * Play animation.\n *\n * If the animation is currently paused, resumes from that position. If the\n * animation is already playing, does nothing.\n *\n * To restart the animation, {@link AnimationComponent#stop} it first.\n */\n play(): void {\n this.engine.wasm._wl_animation_component_play(this._id);\n }\n\n /** Stop animation. */\n stop(): void {\n this.engine.wasm._wl_animation_component_stop(this._id);\n }\n\n /** Pause animation. */\n pause(): void {\n this.engine.wasm._wl_animation_component_pause(this._id);\n }\n\n /**\n * Get the value of a float parameter in the attached graph.\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @since 1.2.0\n */\n getFloatParameter(name: string): number | null {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n }\n\n /**\n * Set the value of a float parameter in the attached graph\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @param value Float value to set.\n * @returns 1 if the parameter was successfully set, 0 on fail.\n * @since 1.2.0\n */\n setFloatParameter(name: string, value: number): void {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._tempMemFloat[0] = value;\n wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem);\n }\n\n /** @overload */\n getRootMotionTranslation(): Float32Array;\n /**\n * Get the root motion translation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity translation.\n *\n * @since 1.2.2\n */\n getRootMotionTranslation(out: T): T;\n getRootMotionTranslation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRootMotionRotation(): Float32Array;\n /**\n * Get the root motion rotation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity rotation.\n *\n * @since 1.2.2\n */\n getRootMotionRotation(out: T): T;\n getRootMotionRotation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n}\n\n/**\n * Native mesh component.\n *\n * Provides access to a native mesh component instance.\n */\nexport class MeshComponent extends Component {\n /** @override */\n static TypeName = 'mesh';\n\n /**\n * Set material to render the mesh with.\n *\n * @param material Material to render the mesh with.\n */\n set material(material: Material | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_material(\n this._id,\n material ? material._id : 0\n );\n }\n\n /** Material used to render the mesh. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_mesh_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** Mesh rendered by this component. */\n @nativeProperty()\n get mesh(): Mesh | null {\n const index = this.engine.wasm._wl_mesh_component_get_mesh(this._id);\n return this.engine.meshes.wrap(index);\n }\n\n /**\n * Set mesh to rendered with this component.\n *\n * @param mesh Mesh rendered by this component.\n */\n set mesh(mesh: Mesh | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0);\n }\n\n /** Skin for this mesh component. */\n @nativeProperty()\n get skin(): Skin | null {\n const index = this.engine.wasm._wl_mesh_component_get_skin(this._id);\n return this._scene.skins.wrap(index);\n }\n\n /**\n * Set skin to transform this mesh component.\n *\n * @param skin Skin to use for rendering skinned meshes.\n */\n set skin(skin: Skin | null | undefined) {\n this.scene.assertOrigin(skin);\n this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0);\n }\n\n /**\n * Morph targets for this mesh component.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargets(): MorphTargets | null {\n const index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id);\n return this.engine.morphTargets.wrap(index);\n }\n\n /**\n * Set morph targets to transform this mesh component.\n *\n * @param morphTargets Morph targets to use for rendering.\n *\n * @since 1.2.0\n */\n set morphTargets(morphTargets: MorphTargets | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_morph_targets(\n this._id,\n morphTargets?._id ?? 0\n );\n }\n\n /**\n * Equivalent to {@link getMorphTargetWeights}.\n *\n * @note Prefer to use {@link getMorphTargetWeights} for performance.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargetWeights(): Float32Array {\n return this.getMorphTargetWeights();\n }\n\n /**\n * Set the morph target weights to transform this mesh component.\n *\n * @param weights New weights.\n *\n * @since 1.2.0\n */\n set morphTargetWeights(weights: Readonly) {\n this.setMorphTargetWeights(weights);\n }\n\n /** @overload */\n getMorphTargetWeights(): Float32Array;\n /**\n * Get morph target weights for this mesh component.\n *\n * @param out Destination array, expected to have at least as many elements\n * as {@link MorphTargets.count}.\n * @returns The `out` parameter.\n *\n * @since 1.2.0\n */\n getMorphTargetWeights(out: T): T;\n getMorphTargetWeights(out?: NumberArray): NumberArray {\n const wasm = this.engine.wasm;\n const count = wasm._wl_mesh_component_get_morph_target_weights(\n this._id,\n wasm._tempMem\n );\n if (!out) {\n out = new Float32Array(count);\n }\n for (let i = 0; i < count; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Get the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @returns The weight.\n *\n * @since 1.2.0\n */\n getMorphTargetWeight(target: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n return this.engine.wasm._wl_mesh_component_get_morph_target_weight(\n this._id,\n target\n );\n }\n\n /**\n * Set morph target weights for this mesh component.\n *\n * @param weights Array of new weights, expected to have at least as many\n * elements as {@link MorphTargets.count}.\n *\n * @since 1.2.0\n */\n setMorphTargetWeights(weights: Readonly) {\n const count = this.morphTargets?.count ?? 0;\n if (weights.length !== count) {\n throw new Error(`Expected ${count} weights but got ${weights.length}`);\n }\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(weights);\n wasm._wl_mesh_component_set_morph_target_weights(\n this._id,\n wasm._tempMem,\n weights.length\n );\n }\n\n /**\n * Set the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @param weight The new weight.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\n setMorphTargetWeight(target: number, weight: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n this.engine.wasm._wl_mesh_component_set_morph_target_weight(\n this._id,\n target,\n weight\n );\n }\n}\n\n/**\n * Native particle effect component.\n *\n * @since 1.4.0\n */\nexport class ParticleEffectComponent extends Component {\n /** @override */\n static TypeName = 'particle-effect';\n\n /** Particle effect used by this component. */\n @nativeProperty()\n get particleEffect(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(\n this._id\n );\n return this.engine.particleEffects.wrap(index);\n }\n\n /**\n * Set particle effect to use with this component.\n *\n * @param particleEffect Particle effect used by this component.\n */\n set particleEffect(particleEffect: ParticleEffect | null | undefined) {\n this.engine.wasm._wl_particleEffect_component_set_particleEffect(\n this._id,\n particleEffect?._id ?? 0\n );\n }\n}\n\n/**\n * Enum for Physics axes locking\n *\n * See {@link PhysXComponent.angularLockAxis} and {@link PhysXComponent.linearLockAxis}.\n */\nexport enum LockAxis {\n /**\n * No axis selected.\n */\n None = 0,\n\n /**\n * **X axis**:\n */\n X = 1 << 0,\n\n /**\n * **Y axis**:\n */\n Y = 1 << 1,\n\n /**\n * **Z axis**:\n */\n Z = 1 << 2,\n}\n\n/**\n * Native physx rigid body component.\n *\n * Provides access to a native mesh component instance.\n * Only available when using physx enabled runtime, see \"Project Settings > Runtime\".\n */\nexport class PhysXComponent extends Component {\n /** @override */\n static TypeName = 'physx';\n\n /** @overload */\n getTranslationOffset(): Float32Array;\n /**\n * Local translation offset.\n *\n * Allows to move a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getTranslationOffset(out: T): T;\n getTranslationOffset(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRotationOffset(): Float32Array;\n /**\n * Local rotation offset represented as a quaternion.\n *\n * Allows to rotate a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getRotationOffset(out: T): T;\n getRotationOffset(out: NumberArray = new Float32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr =\n wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * The shape extents for collision detection.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_physx_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** @overload */\n getLinearVelocity(): Float32Array;\n /**\n * Linear velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLinearVelocity(out: T): T;\n getLinearVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_linearVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getAngularVelocity(): Float32Array;\n /**\n * Angular velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getAngularVelocity(out: T): T;\n getAngularVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_angularVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /**\n * Set whether this rigid body is static.\n *\n * Setting this property only takes effect once the component\n * switches from inactive to active.\n *\n * @param b Whether the rigid body should be static.\n */\n set static(b: boolean) {\n this.engine.wasm._wl_physx_component_set_static(this._id, b);\n }\n\n /**\n * Whether this rigid body is static.\n *\n * This property returns whether the rigid body is *effectively*\n * static. If static property was set while the rigid body was\n * active, it will not take effect until the rigid body is set\n * inactive and active again. Until the component is set inactive,\n * this getter will return whether the rigid body is actually\n * static.\n */\n @nativeProperty()\n get static(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_static(this._id);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getTranslationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getTranslationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get translationOffset(): Float32Array {\n return this.getTranslationOffset();\n }\n\n /**\n * Set the offset translation.\n *\n * The array must be a vector of at least **3** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set translationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetTranslation(\n this._id,\n offset[0],\n offset[1],\n offset[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getRotationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getRotationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get rotationOffset(): Float32Array {\n return this.getRotationOffset();\n }\n\n /**\n * Set the offset rotation.\n *\n * The array must be a quaternion of at least **4** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set rotationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetRotation(\n this._id,\n offset[0],\n offset[1],\n offset[2],\n offset[3]\n );\n }\n\n /**\n * Set whether this rigid body is kinematic.\n *\n * @param b Whether the rigid body should be kinematic.\n */\n set kinematic(b: boolean) {\n this.engine.wasm._wl_physx_component_set_kinematic(this._id, b);\n }\n\n /**\n * Whether this rigid body is kinematic.\n */\n @nativeProperty()\n get kinematic(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id);\n }\n\n /**\n * Set whether this rigid body's gravity is enabled.\n *\n * @param b Whether the rigid body's gravity should be enabled.\n */\n set gravity(b: boolean) {\n this.engine.wasm._wl_physx_component_set_gravity(this._id, b);\n }\n\n /**\n * Whether this rigid body's gravity flag is enabled.\n */\n @nativeProperty()\n get gravity(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_gravity(this._id);\n }\n\n /**\n * Set whether this rigid body's simulate flag is enabled.\n *\n * @param b Whether the rigid body's simulate flag should be enabled.\n */\n set simulate(b: boolean) {\n this.engine.wasm._wl_physx_component_set_simulate(this._id, b);\n }\n\n /**\n * Whether this rigid body's simulate flag is enabled.\n */\n @nativeProperty()\n get simulate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_simulate(this._id);\n }\n\n /**\n * Set whether to allow simulation of this rigid body.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling {@link allowSimulation} while {@link trigger} is enabled\n * will disable {@link trigger}.\n *\n * @param b Whether to allow simulation of this rigid body.\n */\n set allowSimulation(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b);\n }\n\n /**\n * Whether to allow simulation of this rigid body.\n */\n @nativeProperty()\n get allowSimulation(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id);\n }\n\n /**\n * Set whether this rigid body may be queried in ray casts.\n *\n * @param b Whether this rigid body may be queried in ray casts.\n */\n set allowQuery(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b);\n }\n\n /**\n * Whether this rigid body may be queried in ray casts.\n */\n @nativeProperty()\n get allowQuery(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id);\n }\n\n /**\n * Set whether this physics body is a trigger.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling trigger while {@link allowSimulation} is enabled,\n * will disable {@link allowSimulation}.\n *\n * @param b Whether this physics body is a trigger.\n */\n set trigger(b: boolean) {\n this.engine.wasm._wl_physx_component_set_trigger(this._id, b);\n }\n\n /**\n * Whether this physics body is a trigger.\n */\n @nativeProperty()\n get trigger(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_trigger(this._id);\n }\n\n /**\n * Set the shape for collision detection.\n *\n * @param s New shape.\n * @since 0.8.5\n */\n set shape(s: Shape) {\n this.engine.wasm._wl_physx_component_set_shape(this._id, s);\n }\n\n /** The shape for collision detection. */\n @nativeProperty()\n get shape(): Shape {\n return this.engine.wasm._wl_physx_component_get_shape(this._id);\n }\n\n /**\n * Set additional data for the shape.\n *\n * Retrieved only from {@link PhysXComponent#shapeData}.\n * @since 0.8.10\n */\n set shapeData(d) {\n if (d == null || !isMeshShape(this.shape)) return;\n this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index);\n }\n\n /**\n * Additional data for the shape.\n *\n * `null` for {@link Shape} values: `None`, `Sphere`, `Capsule`, `Box`, `Plane`.\n * `{index: n}` for `TriangleMesh` and `ConvexHull`.\n *\n * This data is currently only for passing onto or creating other {@link PhysXComponent}.\n * @since 0.8.10\n */\n @nativeProperty()\n get shapeData(): {\n index: number;\n } | null {\n if (!isMeshShape(this.shape)) return null;\n return {\n index: this.engine.wasm._wl_physx_component_get_shape_data(this._id),\n };\n }\n\n /**\n * Set the shape extents for collision detection.\n *\n * @param e New extents for the shape.\n * @since 0.8.5\n */\n set extents(e: Readonly) {\n this.extents.set(e);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getExtents}.\n *\n * @note Prefer to use {@link PhysXComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n const wasm = this.engine.wasm;\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const ptr = wasm._wl_physx_component_get_extents(this._id);\n return new Float32Array(wasm.HEAPF32.buffer, ptr, 3);\n }\n\n /**\n * Get staticFriction.\n */\n @nativeProperty()\n get staticFriction(): number {\n return this.engine.wasm._wl_physx_component_get_staticFriction(this._id);\n }\n\n /**\n * Set staticFriction.\n * @param v New staticFriction.\n */\n set staticFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v);\n }\n\n /**\n * Get dynamicFriction.\n */\n @nativeProperty()\n get dynamicFriction(): number {\n return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id);\n }\n\n /**\n * Set dynamicFriction\n * @param v New dynamicDamping.\n */\n set dynamicFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v);\n }\n\n /**\n * Get bounciness.\n * @since 0.9.0\n */\n @nativeProperty()\n get bounciness(): number {\n return this.engine.wasm._wl_physx_component_get_bounciness(this._id);\n }\n\n /**\n * Set bounciness.\n * @param v New bounciness.\n * @since 0.9.0\n */\n set bounciness(v: number) {\n this.engine.wasm._wl_physx_component_set_bounciness(this._id, v);\n }\n\n /**\n * Get linearDamping/\n */\n @nativeProperty()\n get linearDamping(): number {\n return this.engine.wasm._wl_physx_component_get_linearDamping(this._id);\n }\n\n /**\n * Set linearDamping.\n * @param v New linearDamping.\n */\n set linearDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v);\n }\n\n /** Get angularDamping. */\n @nativeProperty()\n get angularDamping(): number {\n return this.engine.wasm._wl_physx_component_get_angularDamping(this._id);\n }\n\n /**\n * Set angularDamping.\n * @param v New angularDamping.\n */\n set angularDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v);\n }\n\n /**\n * Set linear velocity.\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New linear velocity.\n */\n set linearVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getLinearVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getLinearVelocity} for performance.\n */\n @nativeProperty()\n get linearVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set angular velocity\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New angular velocity\n */\n set angularVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_angularVelocity(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getAngularVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getAngularVelocity} for performance.\n */\n @nativeProperty()\n get angularVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set the components groups mask.\n *\n * @param flags New flags that need to be set.\n */\n set groupsMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags);\n }\n\n /**\n * Get the components groups mask flags.\n *\n * Each bit represents membership to group, see example.\n *\n * ```js\n * // Assign c to group 2\n * c.groupsMask = (1 << 2);\n *\n * // Assign c to group 0\n * c.groupsMask = (1 << 0);\n *\n * // Assign c to group 0 and 2\n * c.groupsMask = (1 << 0) | (1 << 2);\n *\n * (c.groupsMask & (1 << 2)) != 0; // true\n * (c.groupsMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get groupsMask(): number {\n return this.engine.wasm._wl_physx_component_get_groupsMask(this._id);\n }\n\n /**\n * Set the components blocks mask.\n *\n * @param flags New flags that need to be set.\n */\n set blocksMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags);\n }\n\n /**\n * Get the components blocks mask flags.\n *\n * Each bit represents membership to the block, see example.\n *\n * ```js\n * // Block overlap with any objects in group 2\n * c.blocksMask = (1 << 2);\n *\n * // Block overlap with any objects in group 0\n * c.blocksMask = (1 << 0)\n *\n * // Block overlap with any objects in group 0 and 2\n * c.blocksMask = (1 << 0) | (1 << 2);\n *\n * (c.blocksMask & (1 << 2)) != 0; // true\n * (c.blocksMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get blocksMask(): number {\n return this.engine.wasm._wl_physx_component_get_blocksMask(this._id);\n }\n\n /**\n * Set axes to lock for linear velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * Combine flags with Bitwise OR:\n *\n * ```js\n * body.linearLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.linearLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set linearLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock);\n }\n\n /**\n * Get the linear lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed.\n *\n * ```js\n * if(body.linearLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for linear movement.\n */\n @nativeProperty()\n get linearLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id);\n }\n\n /**\n * Set axes to lock for angular velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * ```js\n * body.angularLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.angularLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set angularLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock);\n }\n\n /**\n * Get the angular lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed:\n *\n * ```js\n * if(body.angularLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for angular movement.\n */\n @nativeProperty()\n get angularLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id);\n }\n\n /**\n * Set mass.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * @param m New mass.\n */\n set mass(m: number) {\n this.engine.wasm._wl_physx_component_set_mass(this._id, m);\n }\n\n /** Mass */\n @nativeProperty()\n get mass(): number {\n return this.engine.wasm._wl_physx_component_get_mass(this._id);\n }\n\n /**\n * Set mass space interia tensor.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New mass space interatia tensor.\n */\n set massSpaceInteriaTensor(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Set the rigid body to sleep upon activation.\n *\n * When asleep, the rigid body will not be simulated until the next contact.\n *\n * @param flag `true` to sleep upon activation.\n *\n * @since 1.1.5\n */\n set sleepOnActivate(flag: boolean) {\n this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag);\n }\n\n /**\n * `true` if the rigid body is set to sleep upon activation, `false` otherwise.\n *\n * @since 1.1.5\n */\n @nativeProperty()\n get sleepOnActivate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id);\n }\n\n /**\n * Apply a force.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n * @param localForce Whether the force vector is in local space, default `false`.\n * @param p Position to apply force at, default is center of mass.\n * @param local Whether position is in local space, default `false`.\n */\n addForce(\n f: Readonly,\n m: ForceMode = ForceMode.Force,\n localForce: boolean = false,\n p?: Readonly,\n local: boolean = false\n ) {\n const wasm = this.engine.wasm;\n if (!p) {\n wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce);\n return;\n }\n wasm._wl_physx_component_addForceAt(\n this._id,\n f[0],\n f[1],\n f[2],\n m,\n localForce,\n p[0],\n p[1],\n p[2],\n local\n );\n }\n\n /**\n * Apply torque.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n */\n addTorque(f: Readonly, m: ForceMode = ForceMode.Force) {\n this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m);\n }\n\n /**\n * Add on collision callback.\n *\n * @param callback Function to call when this rigid body (un)collides with any other.\n *\n * ```js\n * let rigidBody = this.object.getComponent('physx');\n * rigidBody.onCollision(function(type, other) {\n * // Ignore uncollides\n * if(type == CollisionEventType.TouchLost) return;\n *\n * // Take damage on collision with enemies\n * if(other.object.name.startsWith(\"enemy-\")) {\n * this.applyDamage(10);\n * }\n * }.bind(this));\n * ```\n *\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollision(callback: CollisionCallback): number {\n return this.onCollisionWith(this, callback);\n }\n\n /**\n * Add filtered on collision callback.\n *\n * @param otherComp Component for which callbacks will\n * be triggered. If you pass this component, the method is equivalent to.\n * {@link PhysXComponent#onCollision}.\n * @param callback Function to call when this rigid body\n * (un)collides with `otherComp`.\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollisionWith(otherComp: this, callback: CollisionCallback): number {\n const callbacks = this.scene._pxCallbacks;\n if (!callbacks.has(this._id)) {\n callbacks.set(this._id, []);\n }\n callbacks.get(this._id)!.push(callback);\n return this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id);\n }\n\n /**\n * Remove a collision callback added with {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n *\n * @param callbackId Callback id as returned by {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n * @throws When the callback does not belong to the component.\n * @throws When the callback does not exist.\n */\n removeCollisionCallback(callbackId: number): void {\n const r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId);\n const callbacks = this.scene._pxCallbacks;\n /* r is the amount of object to remove from the end of the\n * callbacks array for this object */\n if (r) callbacks.get(this._id)!.splice(-r);\n }\n}\n\n/**\n * Access to the physics scene\n */\nexport class Physics {\n /**\n * Hit.\n * @hidden\n */\n _hit: RayHit;\n\n /**\n * Wonderland Engine instance\n * @hidden\n */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * Ray Hit\n * @hidden\n */\n private _rayHit: number;\n\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n const wasm = engine.wasm;\n this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(engine.scene, this._rayHit);\n\n /* Setup the physics callback. */\n wasm._wl_physx_set_collision_callback(\n wasm.addFunction((a: number, index: number, type: number, b: number) => {\n const physxA = this._engine.scene._components.wrapPhysx(a)!;\n const physxB = this._engine.scene._components.wrapPhysx(b)!;\n /* We assume that the map returns an array. If not,\n * this is an internal engine error. */\n const callbacks = this._engine.scene._pxCallbacks.get(physxA._id)!;\n const callback = callbacks[index];\n callback(type, physxB as PhysXComponent);\n }, 'viiii')\n );\n }\n\n /**\n * Cast a ray through the scene and find intersecting physics components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.physics.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against physics components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of physics groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Physics}\n * instance and will be reused with the next {@link Physics#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance: number = 100.0\n ): RayHit {\n const scene = this._engine.scene._index;\n this._engine.wasm._wl_physx_ray_cast(\n scene,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n maxDistance,\n this._rayHit\n );\n return this._hit;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Mesh index type.\n */\nexport enum MeshIndexType {\n /** Single byte mesh index, range 0-255 */\n UnsignedByte = 1,\n\n /** Two byte mesh index, range 0-65535 */\n UnsignedShort = 2,\n\n /** Four byte mesh index, range 0-4294967295 */\n UnsignedInt = 4,\n}\n\n/**\n * Mesh skinning type.\n */\nexport enum MeshSkinningType {\n /** Not skinned */\n None = 0,\n\n /** Skinned, 4 joints/weight per vertex */\n FourJoints = 1,\n\n /** Skinned, 8 joints/weight per vertex */\n EightJoints = 2,\n}\n\n/**\n * Mesh constructor parameters object.\n *\n * Usage:\n *\n * ```js\n * const mesh = Mesh({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n */\nexport interface MeshParameters {\n /** Number of vertices to allocate. */\n vertexCount: number;\n /** Index data values. */\n indexData: Readonly;\n /** Index type, `null` if not indexed. */\n indexType: MeshIndexType;\n /** Whether the mesh should be skinned. Defaults to not skinned. */\n skinningType: MeshSkinningType;\n}\n\n/**\n * Wrapper around a native mesh data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link MeshManager} class.\n *\n * #### Update\n *\n * To modify a mesh, you get access to a {@link MeshAttributeAccessor} that\n * allows you to modify the content of the buffers:\n *\n * Usage:\n *\n * ```js\n * const mesh = engine.es.create({vertexCount: 3, indexData: [0, 1, 2]});\n * const positions = mesh.attribute(MeshAttribute.Position);\n * ...\n * ```\n *\n * @note Meshes are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Mesh extends Resource {\n /**\n * @deprecated Use {@link MeshManager.create} instead, accessible via {@link WonderlandEngine.meshes}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ...\n * mesh.update();\n * ```\n */\n constructor(engine: WonderlandEngine, params: Partial | number) {\n if (!isNumber(params)) {\n const mesh = engine.meshes.create(params);\n /* `super()` must be called as stated in the specification */\n super(engine, mesh._index);\n return mesh;\n }\n super(engine, params);\n }\n\n /** Number of vertices in this mesh. */\n get vertexCount(): number {\n return this.engine.wasm._wl_mesh_get_vertexCount(this._id);\n }\n\n /** Index data (read-only) or `null` if the mesh is not indexed. */\n get indexData(): Uint8Array | Uint16Array | Uint32Array | null {\n const wasm = this.engine.wasm;\n const tempMem = wasm._tempMem;\n const ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4);\n if (ptr === null) return null;\n\n const indexCount = wasm.HEAPU32[tempMem / 4];\n const indexSize = wasm.HEAPU32[tempMem / 4 + 1];\n switch (indexSize) {\n case MeshIndexType.UnsignedByte:\n return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedShort:\n return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedInt:\n return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount);\n }\n return null;\n }\n\n /**\n * Apply changes to {@link attribute | vertex attributes}.\n *\n * Uploads the updated vertex attributes to the GPU and updates the bounding\n * sphere to match the new vertex positions.\n *\n * Since this is an expensive operation, call it only once you have performed\n * all modifications on a mesh and avoid calling if you did not perform any\n * modifications at all.\n */\n update() {\n this.engine.wasm._wl_mesh_update(this._id);\n }\n\n /** @overload */\n getBoundingSphere(): Float32Array;\n /** @overload */\n getBoundingSphere(out: T): T;\n /**\n * Mesh bounding sphere.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * ```js\n * const sphere = new Float32Array(4);\n * for(...) {\n * mesh.getBoundingSphere(sphere);\n * ...\n * }\n * ```\n *\n * If the position data is changed, call {@link Mesh#update} to update the\n * bounding sphere.\n *\n * @returns Bounding sphere, 0-2 sphere origin, 3 radius.\n */\n getBoundingSphere(out: T | Float32Array): T | Float32Array;\n getBoundingSphere(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n attribute(\n attr: MeshAttribute.Position\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Tangent\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Normal\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.TextureCoordinate\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Color\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointId\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointWeight\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.SecondaryTextureCoordinate\n ): MeshAttributeAccessor | null;\n /**\n * Get an attribute accessor to retrieve or modify data of give attribute.\n *\n * @param attr Attribute to get access to\n * @returns Attribute to get access to or `null`, if mesh does not have this attribute.\n *\n * Call {@link update} for changes to vertex attributes to take effect.\n *\n * If there are no shaders in the scene that use `TextureCoordinate` for example,\n * no meshes will have the `TextureCoordinate` attribute.\n *\n * For flexible reusable components, take this into account that only `Position`\n * is guaranteed to be present at all time.\n */\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null;\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null {\n if (typeof attr != 'number')\n throw new TypeError('Expected number, but got ' + typeof attr);\n\n const wasm = this.engine.wasm;\n const tempMemUint32 = wasm._tempMemUint32;\n wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem);\n if (tempMemUint32[0] == 255) return null;\n\n const arraySize = tempMemUint32[5];\n return new MeshAttributeAccessor(this.engine, {\n attribute: tempMemUint32[0],\n offset: tempMemUint32[1],\n stride: tempMemUint32[2],\n formatSize: tempMemUint32[3],\n componentCount: tempMemUint32[4],\n /* The WASM API returns `0` for a scalar value. We clamp it to 1 as we strictly use it as a multiplier for get/set operations */\n arraySize: arraySize ? arraySize : 1,\n length: this.vertexCount,\n bufferType: (attr !== MeshAttribute.JointId\n ? Float32Array\n : Uint16Array) as TypedArrayCtor,\n });\n }\n\n /**\n * Destroy and free the meshes memory.\n *\n * It is best practice to set the mesh variable to `null` after calling\n * destroy to prevent accidental use:\n *\n * ```js\n * mesh.destroy();\n * mesh = null;\n * ```\n *\n * Accessing the mesh after destruction behaves like accessing an empty\n * mesh.\n *\n * @since 0.9.0\n */\n destroy(): void {\n this.engine.wasm._wl_mesh_destroy(this._id);\n this.engine.meshes._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Mesh(destroyed)';\n }\n return `Mesh(${this._index})`;\n }\n}\n\n/**\n * Options to create a new {@link MeshAttributeAccessor} instance.\n */\ninterface MeshAttributeAccessorOptions {\n attribute: number;\n offset: number;\n stride: number;\n formatSize: number;\n componentCount: number;\n arraySize: number;\n length: number;\n bufferType: T;\n}\n\n/**\n * An iterator over a mesh vertex attribute.\n *\n * Usage:\n *\n * ```js\n * const mesh = this.object.getComponent('mesh').mesh;\n * const positions = mesh.attribute(MeshAttribute.Position);\n *\n * // Equivalent to `new Float32Array(3)`.\n * const temp = positions.createArray();\n *\n * for(let i = 0; i < positions.length; ++i) {\n * // `pos` will reference `temp` and thereby not allocate additional\n * // memory, which would cause a perf spike when collected.\n * const pos = positions.get(i, temp);\n * // Scale position by 2 on x-axis only.\n * pos[0] *= 2.0;\n * positions.set(i, pos);\n * }\n * // We're done modifying, tell the engine to move vertex data to the GPU.\n * mesh.update();\n * ```\n */\nexport class MeshAttributeAccessor {\n /** Max number of elements. */\n readonly length: number = 0;\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Attribute index. @hidden */\n private _attribute: number = -1;\n /** Attribute offset. @hidden */\n private _offset: number = 0;\n /** Attribute stride. @hidden */\n private _stride: number = 0;\n /** Format size native enum. @hidden */\n private _formatSize: number = 0;\n /** Number of components per vertex. @hidden */\n private _componentCount: number = 0;\n /** Number of values per vertex. @hidden */\n private _arraySize: number = 1;\n\n /**\n * Class to instantiate an ArrayBuffer to get/set values.\n */\n private _bufferType: T;\n /**\n * Function to allocate temporary WASM memory. It is cached in the accessor to avoid\n * conditionals during get/set.\n */\n private _tempBufferGetter: (bytes: number) => TypedArray;\n\n /**\n * Create a new instance.\n *\n * @note Please use {@link Mesh.attribute} to create a new instance.\n *\n * @param options Contains information about how to read the data.\n * @note Do not use this constructor. Instead, please use the {@link Mesh.attribute} method.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, options: MeshAttributeAccessorOptions) {\n this._engine = engine;\n\n this._attribute = options.attribute;\n this._offset = options.offset;\n this._stride = options.stride;\n this._formatSize = options.formatSize;\n this._componentCount = options.componentCount;\n this._arraySize = options.arraySize;\n this._bufferType = options.bufferType;\n this.length = options.length;\n\n const wasm = this._engine.wasm;\n this._tempBufferGetter = (\n this._bufferType === Float32Array\n ? wasm.getTempBufferF32.bind(wasm)\n : wasm.getTempBufferU16.bind(wasm)\n ) as () => TypedArray;\n }\n\n /**\n * Create a new TypedArray to hold this attribute's values.\n *\n * This method is useful to create a view to hold the data to\n * pass to {@link get} and {@link set}\n *\n * Example:\n *\n * ```js\n * const vertexCount = 4;\n * const positionAttribute = mesh.attribute(MeshAttribute.Position);\n *\n * // A position has 3 floats per vertex. Thus, positions has length 3 * 4.\n * const positions = positionAttribute.createArray(vertexCount);\n * ```\n *\n * @param count The number of **vertices** expected.\n * @returns A TypedArray with the appropriate format to access the data\n */\n createArray(count = 1): TypedArray {\n count = count > this.length ? this.length : count;\n return new this._bufferType(\n count * this._componentCount * this._arraySize\n ) as TypedArray;\n }\n\n /** @overload */\n get(index: number): TypedArray;\n /**\n * Get attribute element.\n *\n * @param index Index\n * @param out Preallocated array to write into,\n * to avoid garbage, otherwise will allocate a new TypedArray.\n *\n * `out.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `out.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns The `out` parameter\n */\n get(index: number, out: T): T;\n get(index: number, out: NumberArray = this.createArray()): NumberArray {\n if (out.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(out.length, componentCount * this.length);\n\n const dest = this._tempBufferGetter(len);\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const destSize = elementSize * len;\n const srcFormatSize = this._formatSize * this._arraySize;\n const destFormatSize = this._componentCount * elementSize * this._arraySize;\n\n this.engine.wasm._wl_mesh_get_attribute_values(\n this._attribute,\n srcFormatSize,\n this._offset + index * this._stride,\n this._stride,\n destFormatSize,\n dest.byteOffset,\n destSize\n );\n\n for (let i = 0; i < len; ++i) out[i] = dest[i];\n return out;\n }\n\n /**\n * Set attribute element.\n *\n * @param i Index\n * @param v Value to set the element to\n *\n * `v.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `v.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns Reference to self (for method chaining)\n */\n set(i: number, v: Readonly) {\n if (v.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(v.length, componentCount * this.length);\n\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const srcSize = elementSize * len;\n const srcFormatSize = componentCount * elementSize;\n const destFormatSize = this._formatSize * this._arraySize;\n\n const wasm = this.engine.wasm;\n\n /* Unless we are already working with data from WASM heap, we\n * need to copy into temporary memory. */\n if ((v as Float32Array).buffer != wasm.HEAPU8.buffer) {\n const dest = this._tempBufferGetter(len);\n dest.set(v);\n v = dest;\n }\n\n wasm._wl_mesh_set_attribute_values(\n this._attribute,\n srcFormatSize,\n (v as Float32Array).byteOffset,\n srcSize,\n destFormatSize,\n this._offset + i * this._stride,\n this._stride\n );\n\n return this;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Wrapper around a native font resource.\n *\n * @note Fonts are **per-engine**, they can thus be shared by multiple scenes.\n *\n * @since 1.2.0\n */\nexport class Font extends Resource {\n /** Em height in object space. Equivalent to line height. */\n get emHeight(): number {\n return this.engine.wasm._wl_font_get_emHeight(this._id);\n }\n\n /**\n * Cap height in object space. This is the typical height of capital\n * letters. Can be 0 if not defined by the font.\n */\n get capHeight(): number {\n return this.engine.wasm._wl_font_get_capHeight(this._id);\n }\n\n /**\n * X height in object space. This is the typical height of lowercase\n * letters. Can be 0 if not defined by the font.\n */\n get xHeight(): number {\n return this.engine.wasm._wl_font_get_xHeight(this._id);\n }\n\n /**\n * Outline size. This is the factor by which characters are expanded to\n * create the outline effect. Returns 0 if the font was compiled without\n * an outline.\n *\n * @since 1.2.1\n */\n get outlineSize(): number {\n return this.engine.wasm._wl_font_get_outlineSize(this._id);\n }\n}\n\n/**\n * Wrapper around a native particle effect resource.\n *\n * @note Particle effects are **per-engine**, they can thus be shared by\n * multiple scenes.\n *\n * @since 1.4.0\n */\nexport class ParticleEffect extends Resource {\n /**\n * Create a copy of the underlying native particle effect.\n *\n * @returns Particle effect clone.\n */\n clone(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_clone(this._id);\n return this.engine.particleEffects.wrap(index);\n }\n}\n\n/** Temporary canvas */\nlet temp2d: {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} | null = null;\n\n/**\n * Wrapper around a native texture data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link TextureManager} class.\n *\n * @note Textures are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Texture extends Resource {\n /**\n * @deprecated Use {@link TextureManager.create} instead, accessible via\n * {@link WonderlandEngine.textures}:\n *\n * ```js\n * const image = new Image();\n * image.onload = () => {\n * const texture = engine.textures.create(image);\n * };\n * ```\n */\n constructor(engine: WonderlandEngine, param: ImageLike | number) {\n if (isImageLike(param)) {\n const texture = engine.textures.create(param);\n /* `super()` must be called as stated in the specification */\n super(engine, texture._index);\n return texture;\n }\n super(engine, param);\n }\n\n /** Whether this texture is valid. */\n get valid(): boolean {\n return !this.isDestroyed && this.width !== 0 && this.height !== 0;\n }\n\n /**\n * Index in this manager.\n *\n * @deprecated Use {@link Texture.index} instead.\n */\n get id(): number {\n return this.index;\n }\n\n /** Update the texture to match the HTML element (e.g. reflect the current frame of a video). */\n update() {\n const image = this._imageIndex;\n if (!this.valid || !image) return;\n\n this.engine.wasm._wl_image_markDirty(image);\n }\n\n /**\n * Width of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the width used at creation.\n * If the actual element's width changed, it must be read from the element itself.\n */\n get width(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoWidth ?? element.width;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[0];\n }\n\n /**\n * Height of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the height used at creation.\n * If the actual element's height changed, it must be read from the element itself.\n */\n get height(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoHeight ?? element.height;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[1];\n }\n\n /**\n * Returns the html element associated to this texture.\n *\n * @note This accessor will return `null` if the image is compressed.\n */\n get htmlElement(): ImageLike | null {\n const image = this._imageIndex;\n if (!image) return null;\n\n const wasm = this.engine.wasm;\n const jsImageIndex = wasm._wl_image_get_jsImage_index(image);\n\n /* Since the first element is `null`, no need to check for `jsImageIndex` */\n return wasm._images[jsImageIndex];\n }\n\n /**\n * Upload content to the texture to the GPU.\n *\n * Usage:\n *\n * ```js\n * // Size 128x64\n * const image = new Image();\n * texture.updateSubImage(28, 4, 100, 60, 0, 0, image);\n * ```\n *\n * @note The source is cropped if the destination offset and source dimensions\n * are out-of-bounds regarding the texture size.\n *\n * @note Uploading a texture without a source offset is significantly faster.\n *\n * #### ImageBitmap\n *\n * If you need to upload a subregion, it's recommended to use:\n *\n * ```js\n * createImageBitmap(image, sourceX, sourceY, sourceWidth, sourceHeight).then(bitmap => {\n * const destinationX = sourceX;\n * const destinationY = sourceY;\n * texture.updateSubImage(0, 0, sourceWidth, sourceHeight, destinationX, destinationY, bitmap);\n * });\n * ```\n *\n * You could use this method with a `src` offset, but the synchronous implementation\n * uses a temporary 2d canvas, negatively affecting performance for large content.\n *\n * @param srcX Horizontal pixel offset, in the source image.\n * @param srcY Vertical pixel offset, in the source image.\n * @param srcWidth Width of the sub image, in the source image.\n * @param srcHeight Height of the sub image, in the source image\n * @param dstX Horizontal pixel offset, in the destination image.\n * Defaults to `srcX` for backward compatibility with older API versions.\n * @param dstY Vertical pixel offset, in the destination image.\n * Defaults to `srcY` for backward compatibility with older API versions.\n * @param content `Image`, `HTMLCanvasElement`, `HTMLVideoElement`, or `ImageBitmap` to upload.\n * @returns `true` if the update went through, `false` otherwise.\n */\n updateSubImage(\n srcX: number,\n srcY: number,\n srcWidth: number,\n srcHeight: number,\n dstX: number = srcX,\n dstY: number = srcY,\n content?: ImageLike\n ): boolean {\n if (this.isDestroyed) return false;\n\n const image = this._imageIndex;\n if (!image) return false;\n\n let img = content ?? this.htmlElement;\n if (!img) return false;\n\n const isImageBitmap = img instanceof ImageBitmap;\n /* ImageBitmap can't be flipped upon upload to the GPU.\n * Thus, we need to skip flipping the temporary canvas to keep the same behavior\n * when uploading an ImageBitmap and uploading a blitted ImageBitmap. */\n const flipY = !isImageBitmap;\n\n if (srcX || srcY) {\n /* Lazy initialize temp canvas */\n if (!temp2d) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n 'Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D.'\n );\n }\n temp2d = {canvas, ctx};\n }\n temp2d.canvas.width = srcWidth;\n temp2d.canvas.height = srcHeight;\n\n temp2d.ctx.drawImage(\n img,\n srcX,\n isImageBitmap ? img.height - srcY - srcHeight : srcY,\n srcWidth,\n srcHeight,\n 0,\n 0,\n srcWidth,\n srcHeight\n );\n img = temp2d.canvas;\n }\n\n const wasm = this.engine.wasm;\n wasm._images[0] = img;\n\n /* Clamp the width/height to avoid a GL upload error */\n const width = srcWidth - Math.max(srcWidth + dstX - this.width, 0);\n const height = srcHeight - Math.max(srcHeight + dstY - this.height, 0);\n const dstReversedY = this.height - dstY - height;\n\n const ret = wasm._wl_renderer_updateImage(\n image,\n 0,\n width,\n height,\n dstX,\n dstReversedY,\n flipY\n );\n wasm._images[0] = null;\n\n return !!ret;\n }\n\n /**\n * Destroy and free the texture's texture altas space and memory.\n *\n * It is best practice to set the texture variable to `null` after calling\n * destroy to prevent accidental use of the invalid texture:\n *\n * ```js\n * texture.destroy();\n * texture = null;\n * ```\n *\n * @since 0.9.0\n */\n destroy(): void {\n const wasm = this.engine.wasm;\n\n const img = wasm._images[this._imageIndex];\n if (img instanceof ImageBitmap) img.close();\n\n wasm._wl_texture_destroy(this._id);\n this.engine.textures._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Texture(destroyed)';\n }\n return `Texture(${this._index})`;\n }\n\n private get _imageIndex() {\n return this.engine.wasm._wl_texture_get_image_index(this._id);\n }\n}\n\n/**\n * Wrapper around a native animation.\n */\nexport class Animation extends SceneResource {\n /**\n * @param index Index in the manager\n */\n constructor(host: WonderlandEngine | Prefab = WL, index: number) {\n const scene = host instanceof Prefab ? host : host.scene;\n super(scene as Prefab, index);\n }\n\n /** Duration of this animation. */\n get duration(): number {\n return this.engine.wasm._wl_animation_get_duration(this._id);\n }\n\n /** Number of tracks in this animation. */\n get trackCount(): number {\n return this.engine.wasm._wl_animation_get_trackCount(this._id);\n }\n\n /**\n * Clone this animation retargeted to a new set of objects.\n *\n * The clone shares most of the data with the original and is therefore\n * light-weight.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * If retargeting to {@link Skin}, the join names will be used to determine a mapping\n * from the previous skin to the new skin. The source skin will be retrieved from\n * the first track in the animation that targets a joint.\n *\n * @param newTargets New targets per track. Expected to have\n * {@link Animation#trackCount} elements or to be a {@link Skin}.\n * @returns The retargeted clone of this animation.\n */\n retarget(newTargets: Object3D[] | Skin): Animation {\n const wasm = this.engine.wasm;\n if (newTargets instanceof Skin) {\n const index = wasm._wl_animation_retargetToSkin(this._id, newTargets._id);\n return this._scene.animations.wrap(index)!;\n }\n\n if (newTargets.length != this.trackCount) {\n throw Error(\n 'Expected ' +\n this.trackCount.toString() +\n ' targets, but got ' +\n newTargets.length.toString()\n );\n }\n const ptr = wasm._malloc(2 * newTargets.length);\n for (let i = 0; i < newTargets.length; ++i) {\n const object3d = newTargets[i];\n this.scene.assertOrigin(object3d);\n /* Use local id here and **not** packed id, because the WASM\n * takes ownership and reinterprets the ids. */\n wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId;\n }\n const index = wasm._wl_animation_retarget(this._id, ptr);\n wasm._free(ptr);\n\n return this._scene.animations.wrap(index)!;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Animation(destroyed)';\n }\n return `Animation(${this._index})`;\n }\n}\n\n/**\n * Scene graph object.\n *\n * Node in the scene graph or \"entity\". Consists of transformation and a reference\n * to its parent object. Usually holds components and is accessible by components\n * through {@link Component#object}.\n *\n * Objects are stored in a data oriented manner inside WebAssembly memory. This class\n * is a JavaScript API wrapper around this memory for more convenient use in\n * components.\n *\n * Objects can be created and added to a scene through {@link Prefab.addObject}:\n *\n * ```js\n * const parent = scene.addObject();\n * parent.name = 'parent`';\n * const child = scene.addObject(parent);\n * child.name = 'child`';\n * ```\n */\nexport class Object3D {\n /**\n * Packed object id, containing scene index and local id.\n *\n * @hidden\n */\n readonly _id: number = -1;\n /** Object id, relative to the scene manager. @hidden */\n readonly _localId: number = -1;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * @param o Object id to wrap.\n *\n * @deprecated Objects must be obtained via {@link Scene.addObject} or {@link Scene.wrap}:\n *\n * ```js\n * // Create a new object.\n * const obj = scene.addObject();\n *\n * // Wrap an object using its id. The id must be valid.\n * const obj = scene.wrap(0);\n * ```\n *\n * @hidden\n */\n constructor(scene: WonderlandEngine | Prefab, id: number) {\n scene = scene instanceof Prefab ? scene : scene.scene;\n this._localId = id;\n this._id = (scene._index << 22) | id;\n this._scene = scene;\n /** @todo: Remove and only keep getter. */\n this._engine = scene.engine;\n }\n\n /**\n * Name of the object.\n *\n * Useful for identifying objects during debugging.\n */\n get name(): string {\n const wasm = this._engine.wasm;\n return wasm.UTF8ToString(wasm._wl_object_name(this._id));\n }\n\n /**\n * Set the object's name.\n *\n * @param newName The new name to set.\n */\n set name(newName: string) {\n const wasm = this._engine.wasm;\n wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName));\n }\n\n /**\n * Parent of this object or `null` if parented to root.\n */\n get parent(): Object3D | null {\n const p = this._engine.wasm._wl_object_parent(this._id);\n return p === 0 ? null : this._scene.wrap(p);\n }\n\n /**\n * Equivalent to {@link Object3D.getChildren}.\n *\n * @note Prefer to use {@link Object3D.getChildren} for performance.\n */\n get children(): Object3D[] {\n return this.getChildren();\n }\n\n /** The number of children of this object. */\n get childrenCount(): number {\n return this._engine.wasm._wl_object_get_children_count(this._id);\n }\n\n /**\n * Reparent object to given object.\n *\n * @note Reparenting is not trivial and might have a noticeable performance impact.\n *\n * @param newParent New parent or `null` to parent to root\n */\n set parent(newParent: Object3D | undefined | null) {\n if (this.markedDestroyed) {\n const strThis = this.toString();\n const strParent = newParent ? newParent : 'root';\n throw new Error(\n `Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`\n );\n } else if (newParent?.markedDestroyed) {\n const strParent = newParent.toString();\n throw new Error(\n `Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`\n );\n }\n this.scene.assertOrigin(newParent);\n this._engine.wasm._wl_object_set_parent(\n this._id,\n newParent == null ? 0 : newParent._id\n );\n }\n\n /** Local object id in the scene manager. */\n get objectId() {\n return this._localId;\n }\n\n /** Scene instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Add an object as a child of this instance.\n *\n * @returns A newly created object.\n */\n addChild(): Object3D {\n const objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id);\n const obj = this.scene.wrap(objectId);\n return obj;\n }\n\n /**\n * Clone this hierarchy into a new one.\n *\n * Cloning copies the hierarchy structure, object names,\n * as well as components.\n *\n * JavaScript components are cloned using {@link Component.copy}. You can\n * override this method in your components.\n *\n * @param parent The parent for the cloned hierarchy or `null` to clone\n * into the scene root. Defaults to `null`.\n *\n * @returns The clone of this object.\n */\n clone(parent: Object3D | null = null): Object3D {\n this.scene.assertOrigin(parent);\n const engine = this._engine;\n const id = engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0);\n return this._scene.wrap(id);\n }\n\n /**\n * Children of this object.\n *\n * @note Child order is **undefined**. No assumptions should be made\n * about the index of a specific object.\n *\n * If you need to access a specific child of this object, you can\n * use {@link Object3D.findByName}.\n *\n * When the object exists in the scene at editor time, prefer passing it as\n * a component property.\n *\n * @note When providing an output array, only `this.childrenCount` elements will be written.\n * The rest of the array will not be modified by this method.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const childrenCount = this.childrenCount;\n if (childrenCount === 0) return out;\n\n const wasm = this._engine.wasm;\n wasm.requireTempMem(childrenCount * 2);\n\n this._engine.wasm._wl_object_get_children(\n this._id,\n wasm._tempMem,\n wasm._tempMemSize >> 1\n );\n\n for (let i = 0; i < childrenCount; ++i) {\n out[i] = this._scene.wrap(wasm._tempMemUint16[i]);\n }\n return out;\n }\n\n /**\n * Reset local transformation (translation, rotation and scaling) to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetTransform(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /**\n * Reset local position and rotation to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPositionRotation(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPositionRotation} instead. */\n resetTranslationRotation(): this {\n return this.resetPositionRotation();\n }\n\n /**\n * Reset local rotation, keep translation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetRotation(): this {\n this._engine.wasm._wl_object_reset_rotation(this._id);\n return this;\n }\n\n /**\n * Reset local translation, keep rotation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPosition(): this {\n this._engine.wasm._wl_object_reset_translation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPosition} instead. */\n resetTranslation(): this {\n return this.resetPosition();\n }\n\n /**\n * Reset local scaling to identity (``[1.0, 1.0, 1.0]``).\n *\n * @returns Reference to self (for method chaining).\n */\n resetScaling(): this {\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.translateLocal} instead. */\n translate(v: Readonly): this {\n return this.translateLocal(v);\n }\n\n /**\n * Translate object by a vector in the parent's space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateLocal(v: Readonly): this {\n this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in object space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateObject(v: Readonly): this {\n this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in world space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateWorld(v: Readonly): this {\n this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleDegLocal} instead. */\n rotateAxisAngleDeg(a: Readonly, d: number): this {\n this.rotateAxisAngleDegLocal(a, d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleRad}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleRadLocal} instead. */\n rotateAxisAngleRad(a: Readonly, d: number): this {\n return this.rotateAxisAngleRadLocal(a, d);\n }\n\n /**\n * Rotate around given axis by given angle (radians) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in radians.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleDeg}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in object space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @see {@link rotateAxisAngleRadObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (radians) in object space\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param a Vector representing the rotation axis\n * @param d Angle in degrees\n *\n * @see {@link rotateAxisAngleDegObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(\n this._id,\n a[0],\n a[1],\n a[2],\n d\n );\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateLocal} instead. */\n rotate(q: Readonly): this {\n this.rotateLocal(q);\n return this;\n }\n\n /**\n * Rotate by a quaternion.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateLocal(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /**\n * Rotate by a quaternion in object space.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateObject(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.scaleLocal} instead. */\n scale(v: Readonly): this {\n this.scaleLocal(v);\n return this;\n }\n\n /**\n * Scale object by a vector in object space.\n *\n * @param v Vector to scale by.\n *\n * @returns Reference to self (for method chaining).\n */\n scaleLocal(v: Readonly): this {\n this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getPositionLocal(): Float32Array;\n /**\n * Compute local / object space position from transformation.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getPositionLocal(out: T): T;\n getPositionLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_local(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationLocal(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionLocal} instead. */\n getTranslationLocal(out: T): T;\n getTranslationLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionLocal(out);\n }\n\n /** @overload */\n getPositionWorld(): Float32Array;\n /**\n * Compute world space position from transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getPositionWorld(out: T): T;\n getPositionWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_world(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationWorld(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionWorld} instead. */\n getTranslationWorld(out: T): T;\n getTranslationWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionWorld(out);\n }\n\n /**\n * Set local / object space position.\n *\n * Concatenates a new translation dual quaternion onto the existing rotation.\n *\n * @param v New local position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionLocal} instead. */\n setTranslationLocal(v: Readonly): this {\n return this.setPositionLocal(v);\n }\n\n /**\n * Set world space position.\n *\n * Applies the inverse parent transform with a new translation dual quaternion\n * which is concatenated onto the existing rotation.\n *\n * @param v New world position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionWorld} instead. */\n setTranslationWorld(v: Readonly): this {\n return this.setPositionWorld(v);\n }\n\n /** @overload */\n getScalingLocal(): Float32Array;\n /**\n * Local / object space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingLocal(out: T): T;\n getScalingLocal(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set local / object space scaling.\n *\n * @param v New local scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getScalingWorld(): Float32Array;\n /**\n * World space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingWorld(out: T): T;\n getScalingWorld(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set World space scaling.\n *\n * @param v New world scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getRotationLocal(): Float32Array;\n /**\n * Local space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationLocal(out: T): T;\n getRotationLocal(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getRotationWorld(): Float32Array;\n /**\n * World space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationWorld(out: T): T;\n getRotationWorld(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getTransformLocal(): Float32Array;\n /**\n * Local space transformation.\n *\n * @param out Destination array/vector, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformLocal(out: T): T;\n getTransformLocal(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New local transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformLocal(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this.setDirty();\n return this;\n }\n\n /** @overload */\n getTransformWorld(): Float32Array;\n /**\n * World space transformation.\n *\n * @param out Destination array, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformWorld(out: T): T;\n getTransformWorld(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set world space rotation.\n *\n * @param v New world transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformWorld(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n return this;\n }\n\n /**\n * Local space transformation.\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n get transformLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_local(this._id),\n 8\n );\n }\n\n /**\n * Set local transform.\n *\n * @param t Local space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n set transformLocal(t: Readonly) {\n this.transformLocal.set(t);\n this.setDirty();\n }\n\n /**\n * Global / world space transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n get transformWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_world(this._id),\n 8\n );\n }\n\n /**\n * Set world transform.\n *\n * @param t Global / world space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n set transformWorld(t: Readonly) {\n this.transformWorld.set(t);\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n }\n\n /**\n * Local / object space scaling.\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n get scalingLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_local(this._id),\n 3\n );\n }\n\n /**\n * Set local space scaling.\n *\n * @param s Local space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n set scalingLocal(s: Readonly) {\n this.scalingLocal.set(s);\n this.setDirty();\n }\n\n /**\n * Global / world space scaling.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n get scalingWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_world(this._id),\n 3\n );\n }\n\n /**\n * Set world space scaling.\n *\n * @param t World space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n set scalingWorld(s: Readonly) {\n this.scalingWorld.set(s);\n this._engine.wasm._wl_object_scaling_world_to_local(this._id);\n }\n\n /**\n * Local space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n get rotationLocal(): Float32Array {\n return this.transformLocal.subarray(0, 4);\n }\n\n /**\n * Global / world space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n get rotationWorld(): Float32Array {\n return this.transformWorld.subarray(0, 4);\n }\n\n /**\n * Set local space rotation.\n *\n * @param r Local space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n set rotationLocal(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /**\n * Set world space rotation.\n *\n * @param r Global / world space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n set rotationWorld(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /** @deprecated Please use {@link Object3D.getForwardWorld} instead. */\n getForward(out: T): T {\n return this.getForwardWorld(out);\n }\n\n /**\n * Compute the object's forward facing world space vector.\n *\n * The forward vector in object space is along the negative z-axis, i.e.,\n * `[0, 0, -1]`.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getForwardWorld(out: T): T {\n out[0] = 0;\n out[1] = 0;\n out[2] = -1;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getUpWorld} instead. */\n getUp(out: T): T {\n return this.getUpWorld(out);\n }\n\n /**\n * Compute the object's up facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getUpWorld(out: T): T {\n out[0] = 0;\n out[1] = 1;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getRightWorld} instead. */\n getRight(out: T): T {\n return this.getRightWorld(out);\n }\n\n /**\n * Compute the object's right facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getRightWorld(out: T): T {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /**\n * Transform a vector by this object's world transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a vector by this object's local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a point by this object's world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse world transform.\n *\n * @param out Out vector.\n * @param v Vector to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(p);\n wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform an object space dual quaternion into world space.\n *\n * @param out Out transformation.\n * @param q Local space transformation, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toWorldSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into local space.\n *\n * @param out Out transformation\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toLocalSpaceTransform(out: T, q: NumberArray = out): T {\n const p = this.parent;\n if (p) {\n p.toObjectSpaceTransform(out, q);\n return out;\n }\n if (out !== q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = q[4];\n out[5] = q[5];\n out[6] = q[6];\n out[7] = q[7];\n }\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into object space.\n *\n * @param out Out transformation.\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toObjectSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Turn towards / look at target.\n *\n * Rotates the object so that its forward vector faces towards the target\n * position. The `up` vector acts as a hint to uniquely orient the object's\n * up direction. When orienting a view component, the projected `up` vector\n * faces upwards on the viewing plane.\n *\n * @param p Target position to turn towards, in world space.\n * @param up Up vector to align object with, in world space. Default is `[0, 1, 0]`.\n *\n * @returns Reference to self (for method chaining).\n */\n lookAt(p: NumberArray, up: NumberArray = UP_VECTOR): this {\n this._engine.wasm._wl_object_lookAt(\n this._id,\n p[0],\n p[1],\n p[2],\n up[0],\n up[1],\n up[2]\n );\n return this;\n }\n\n /** Destroy the object with all of its components and remove it from the scene */\n destroy(): void {\n if (this._id < 0) return;\n /* This will automatically call `scene._destroyObject` */\n this.engine.wasm._wl_object_remove(this._id);\n }\n\n /**\n * Mark transformation dirty.\n *\n * Causes an eventual recalculation of {@link transformWorld}, either\n * on next {@link getTranslationWorld}, {@link transformWorld} or\n * {@link scalingWorld} or the beginning of next frame, whichever\n * happens first.\n */\n setDirty(): void {\n this._engine.wasm._wl_object_set_dirty(this._id);\n }\n\n /**\n * Disable/enable all components of this object.\n *\n * @param b New state for the components.\n *\n * @since 0.8.5\n */\n set active(b: boolean) {\n const comps = this.getComponents();\n for (let c of comps) {\n c.active = b;\n }\n }\n\n /* `getComponent` overloads for native components. */\n\n /** @overload */\n getComponent(\n type: K,\n index?: number\n ): NativeComponents[K] | null;\n /** @overload */\n getComponent(typeOrClass: string, index?: number): Component | null;\n /**\n * Get a component attached to this object.\n *\n * @param typeOrClass Type name. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field to find the component.\n * @param index=0 Index for component of given type. This can be used to access specific\n * components if the object has multiple components of the same type.\n * @returns The component or `null` if there is no such component on this object\n */\n getComponent(\n typeOrClass: ComponentConstructor,\n index?: number\n ): T | null;\n getComponent(\n typeOrClass: string | ComponentConstructor,\n index: number = 0\n ): Component | null {\n const wasm = this._engine.wasm;\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n\n const scene = this._scene;\n const componentType = wasm._wl_scene_get_component_manager_index(\n scene._index,\n wasm.tempUTF8(type)\n );\n\n if (componentType < 0) {\n /* Not a native component, try js: */\n const typeIndex = wasm._componentTypeIndices[type];\n if (typeIndex === undefined) return null;\n const jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index);\n if (jsIndex < 0) return null;\n\n const component = this._scene._jsComponents[jsIndex];\n return component.constructor !== BrokenComponent ? component : null;\n }\n\n const componentId = wasm._wl_get_component_id(this._id, componentType, index);\n return scene._components.wrapNative(componentType, componentId);\n }\n\n /* `getComponents` overloads for native components. */\n\n /** @overload */\n getComponents(): Component[];\n /** @overload */\n getComponents(type: K): NativeComponents[K][];\n /**\n * @param typeOrClass Type name, pass a falsey value (`undefined` or `null`) to retrieve all.\n * It's also possible to give a class definition. In this case, the method will use the `class.TypeName` field to\n * find the components.\n * @returns All components of given type attached to this object.\n *\n * @note As this function is non-trivial, avoid using it in `update()` repeatedly,\n * but rather store its result in `init()` or `start()`\n * @warning This method will currently return at most 341 components.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(\n typeOrClass?: string | ComponentConstructor | null\n ): T[] {\n const wasm = this._engine.wasm;\n const scene = this._scene;\n\n let manager = null;\n let type = null;\n if (typeOrClass) {\n type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = scene._components.getNativeManager(type);\n manager = nativeManager !== null ? nativeManager : scene._components.js;\n }\n\n const components: Component[] = [];\n const maxComps = Math.floor((wasm._tempMemSize / 3) * 2);\n const componentsCount = wasm._wl_object_get_components(\n this._id,\n wasm._tempMem,\n maxComps\n );\n const offset = 2 * componentsCount;\n wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset, maxComps);\n\n for (let i = 0; i < componentsCount; ++i) {\n const t = wasm._tempMemUint8[i + offset];\n const componentId = wasm._tempMemUint16[i];\n if (manager !== null && t !== manager) continue;\n\n const comp = this._scene._components.wrapAny(t, componentId);\n if (!comp) continue;\n if (type && type !== (comp.constructor as ComponentConstructor).TypeName)\n continue;\n components.push(comp);\n }\n return components as T[];\n }\n\n /* `addComponent` overloads for native components. */\n\n /** @overload */\n addComponent(type: 'collision', params?: Record): CollisionComponent;\n /** @overload */\n addComponent(type: 'text', params?: Record): TextComponent;\n /** @overload */\n addComponent(type: 'view', params?: Record): ViewComponent;\n /** @overload */\n addComponent(type: 'mesh', params?: Record): MeshComponent;\n /** @overload */\n addComponent(type: 'input', params?: Record): InputComponent;\n /** @overload */\n addComponent(type: 'light', params?: Record): LightComponent;\n /** @overload */\n addComponent(type: 'animation', params?: Record): AnimationComponent;\n /** @overload */\n addComponent(type: 'physx', params?: Record): PhysXComponent;\n /** @overload */\n addComponent(\n type: 'particle-effect',\n params?: Record\n ): ParticleEffectComponent;\n /** @overload */\n addComponent(type: string, params?: Record): Component;\n /**\n * Add component of given type to the object.\n *\n * You can use this function to clone components, see the example below.\n *\n * ```js\n * // Clone existing component (since 0.8.10)\n * let original = this.object.getComponent('mesh');\n * otherObject.addComponent('mesh', original);\n * // Create component from parameters\n * this.object.addComponent('mesh', {\n * mesh: someMesh,\n * material: someMaterial,\n * });\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @param params Parameters to initialize properties of the new component,\n * can be another component to copy properties from.\n *\n * @returns The component or `null` if the type was not found\n */\n addComponent(\n typeClass: ComponentConstructor,\n params?: Record\n ): T;\n addComponent(\n typeOrClass: ComponentConstructor | string,\n params?: Record\n ): Component {\n if (this.markedDestroyed) {\n throw new Error(`Failed to add component. ${this} is marked as destroyed.`);\n }\n\n const wasm = this._engine.wasm;\n\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = this._scene._components.getNativeManager(type);\n const isNative = nativeManager !== null;\n const manager = isNative ? nativeManager : this._scene._components.js;\n\n let componentId = -1;\n if (!isNative) {\n /* JavaScript component */\n if (!(type in wasm._componentTypeIndices)) {\n throw new TypeError(\"Unknown component type '\" + type + \"'\");\n }\n componentId = wasm._wl_object_add_js_component(\n this._id,\n wasm._componentTypeIndices[type]\n );\n } else {\n /* native component */\n componentId = wasm._wl_object_add_component(this._id, manager);\n }\n\n const component = this._scene._components.wrapAny(manager, componentId)!;\n\n if (params !== undefined) component.copy(params as Component);\n\n /* Explicitly initialize js components */\n if (!isNative) {\n component._triggerInit();\n /* start() is called through onActivate() */\n }\n\n /* If it was not explicitly requested by the user to leave the component inactive,\n * we activate it as a final step. This invalidates componentIndex! */\n if (!params || !('active' in params && !params.active)) {\n component.active = true;\n }\n\n return component;\n }\n\n /**\n * Search for descendants matching the name.\n *\n * This method is a wrapper around {@link Object3D.findByNameDirect} and\n * {@link Object3D.findByNameRecursive}.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the descendants of this object.\n * If `false`, this method will only perform the search in direct children.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name);\n }\n\n /**\n * Search for all **direct** children matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameDirect(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 2; /* Reserve two ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n buffer[maxCount + 1] = 0; /* child count */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const childCountPtr = bufferPtr + maxCount * 2 + 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2);\n\n const result: Object3D[] = [];\n let read = 0;\n while (\n (read = wasm._wl_object_findByName(\n id,\n namePtr,\n indexPtr,\n childCountPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Search for **all descendants** matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 1; /* Reserve one ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2);\n\n let read = 0;\n const result: Object3D[] = [];\n while (\n (read = wasm._wl_object_findByNameRecursive(\n id,\n namePtr,\n indexPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Whether given object's transformation has changed.\n */\n get changed(): boolean {\n return !!this._engine.wasm._wl_object_is_changed(this._id);\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = scene.addObject();\n * obj.customParam = 'Hello World!';\n *\n * console.log(obj.isDestroyed); // Prints `false`\n * obj.destroy();\n * console.log(obj.isDestroyed); // Prints `true`\n * console.log(obj.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /**\n * `true` if the object is marked as destroyed.\n *\n * This boolean will only ever be `true` when reading objects state\n * from the {@link Component.onDestroy} callback, i.e.,\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n * class CleanupComponent extends Component {\n * onDestroy() {\n * if (this.object.markedDestroyed) {\n * // this object is getting removed\n * } else {\n * // The component is getting destroyed, the object will\n * // still exist after the destruction call\n * }\n * }\n * }\n * ```\n *\n * Certain operations are forbidden when an object is pending destruction:\n * - Reparenting the object via {@link parent}\n * - {@link addComponent}\n * - {@link Scene.addObject}\n * - {@link Scene.destroy}\n */\n get markedDestroyed(): boolean {\n const wasm = this.engine.wasm;\n return !!wasm._wl_object_markedDestroyed(this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const objectA = scene.addObject();\n * const objectB = scene.addObject();\n * const objectC = objectB;\n * console.log(objectA === objectB); // false\n * console.log(objectA === objectA); // true\n * console.log(objectB === objectC); // true\n * ```\n */\n equals(otherObject: Object3D | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherObject) return false;\n return this._id == otherObject._id;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Object3D(destroyed)';\n }\n return `Object3D('${this.name}', ${this._localId})`;\n }\n}\n\n/**\n * Wrapper around a native skin data.\n */\nexport class Skin extends SceneResource {\n /** Amount of joints in this skin. */\n get jointCount() {\n return this.engine.wasm._wl_skin_get_joint_count(this._id);\n }\n\n /** Joints object ids for this skin */\n get jointIds(): Uint16Array {\n const wasm = this.engine.wasm;\n return new Uint16Array(\n wasm.HEAPU16.buffer,\n wasm._wl_skin_joint_ids(this._id),\n this.jointCount\n );\n }\n\n /**\n * Dual quaternions in a flat array of size 8 times {@link jointCount}.\n *\n * Inverse bind transforms of the skin.\n */\n get inverseBindTransforms(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_transforms(this._id),\n 8 * this.jointCount\n );\n }\n\n /**\n * Vectors in a flat array of size 3 times {@link jointCount}.\n *\n * Inverse bind scalings of the skin.\n */\n get inverseBindScalings(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_scalings(this._id),\n 3 * this.jointCount\n );\n }\n}\n\n/**\n * Wrapper around a native set of morph targets.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\nexport class MorphTargets extends Resource {\n /** Amount of targets in this morph target set. */\n get count() {\n return this.engine.wasm._wl_morph_targets_get_target_count(this._id);\n }\n\n /** Returns the name of a given target */\n getTargetName(target: number): string {\n if (target >= this.count) {\n throw new Error(`Index ${target} is out of bounds for ${this.count} targets`);\n }\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target));\n }\n\n /**\n * Get the index for a given target name.\n *\n * Throws if no target with that name exists.\n *\n * @param name Name of the target.\n */\n getTargetIndex(name: string): number {\n const wasm = this.engine.wasm;\n const index = wasm._wl_morph_targets_get_target_index(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing target '${name}'`);\n }\n return index;\n }\n}\n\n/* For backward compatibility with < 1.0.0. */\nexport {Object3D as Object};\n\n/**\n * Ray hit.\n *\n * Result of a {@link Scene.rayCast} or {@link Physics.rayCast}.\n *\n * @note this class wraps internal engine data and should only be created internally.\n */\nexport class RayHit {\n /** Scene instance. @hidden */\n readonly _scene: Scene;\n\n /** Pointer to the memory heap. */\n private _ptr: number;\n\n /**\n * @param ptr Pointer to the ray hits memory.\n */\n constructor(scene: Scene, ptr: number) {\n if ((ptr & 3) !== 0) {\n throw new Error('Misaligned pointer: please report a bug');\n }\n this._scene = scene;\n this._ptr = ptr;\n }\n\n /** @overload */\n getLocations(): Float32Array[];\n /**\n * Array of ray hit locations.\n *\n * #### Usage\n *\n * ```js\n * const hit = engine.physics.rayCast();\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLocations(out: T): T;\n getLocations(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = this._ptr / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const locationPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[locationPtr];\n out[i][1] = wasm.HEAPF32[locationPtr + 1];\n out[i][2] = wasm.HEAPF32[locationPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getNormals(): Float32Array[];\n /**\n * Array of ray hit normals (only when using {@link Physics#rayCast}.\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getNormals(out: T): T;\n getNormals(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const normalPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[normalPtr];\n out[i][1] = wasm.HEAPF32[normalPtr + 1];\n out[i][2] = wasm.HEAPF32[normalPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getDistances(): Float32Array;\n /**\n * Prefer these to recalculating the distance from locations.\n *\n * Distances of array hits to ray origin.\n *\n * @param out Destination array/vector, expected to have at least this.hitCount elements.\n * @returns The `out` parameter.\n */\n getDistances(out: T): T;\n getDistances(out: NumberArray = new Float32Array(this.hitCount)): NumberArray {\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48 * 2) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const distancePtr = alignedPtr + i;\n out[i] = wasm.HEAPF32[distancePtr];\n }\n return out;\n }\n\n /**\n * Array of hit objects.\n *\n * @param out Destination array/vector, expected to have at least `this.hitCount` elements.\n * @returns The `out` parameter.\n */\n getObjects(out: Object3D[] = new Array(this.hitCount)): Object3D[] {\n const HEAPU16 = this.engine.wasm.HEAPU16;\n const alignedPtr = (this._ptr + (48 * 2 + 16)) >> 1;\n for (let i = 0; i < this.hitCount; ++i) {\n out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]);\n }\n return out;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /**\n * Equivalent to {@link RayHit.getLocations}.\n *\n * @note Prefer to use {@link RayHit.getLocations} for performance.\n */\n get locations(): Float32Array[] {\n return this.getLocations();\n }\n\n /**\n * Equivalent to {@link RayHit.getNormals}.\n *\n * @note Prefer to use {@link RayHit.getNormals} for performance.\n */\n get normals(): Float32Array[] {\n return this.getNormals();\n }\n\n /**\n * Equivalent to {@link RayHit.getDistances}.\n *\n * @note Prefer to use {@link RayHit.getDistances} for performance.\n */\n get distances(): Float32Array {\n return this.getDistances();\n }\n\n /**\n * Equivalent to {@link RayHit.getObjects}.\n *\n * @note Prefer to use {@link RayHit.getObjects} for performance.\n */\n get objects(): (Object3D | null)[] {\n /** @todo: Remove at 2.0.0, this is kept for backward compatibility. */\n const objects: (Object3D | null)[] = [null, null, null, null];\n return this.getObjects(objects as Object3D[]);\n }\n\n /** Number of hits (max 4) */\n get hitCount(): number {\n return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4);\n }\n}\n\nclass math {\n /** (Experimental!) Cubic Hermite spline interpolation for vector3 and quaternions.\n *\n * With `f == 0`, `out` will be `b`, if `f == 1`, `out` will be c.\n *\n * Whether a quaternion or vector3 interpolation is intended is determined by\n * length of `a`.\n *\n * @param out Array to write result to.\n * @param a First tangent/handle.\n * @param b First point or quaternion.\n * @param c Second point or quaternion.\n * @param d Second handle.\n * @param f Interpolation factor in [0; 1].\n * @returns The `out` parameter.\n *\n * @since 0.8.6\n */\n static cubicHermite(\n out: T,\n a: Readonly,\n b: Readonly,\n c: Readonly,\n d: Readonly,\n f: number,\n engine: WonderlandEngine = WL\n ) {\n const wasm = engine.wasm;\n wasm._tempMemFloat.subarray(0).set(a);\n wasm._tempMemFloat.subarray(4).set(b);\n wasm._tempMemFloat.subarray(8).set(c);\n wasm._tempMemFloat.subarray(12).set(d);\n\n const isQuat = a.length == 4;\n\n wasm._wl_math_cubicHermite(\n wasm._tempMem + 4 * 16,\n wasm._tempMem + 4 * 0,\n wasm._tempMem + 4 * 4,\n wasm._tempMem + 4 * 8,\n wasm._tempMem + 4 * 12,\n f,\n isQuat\n );\n out[0] = wasm._tempMemFloat[16];\n out[1] = wasm._tempMemFloat[17];\n out[2] = wasm._tempMemFloat[18];\n if (isQuat) out[3] = wasm._tempMemFloat[19];\n return out;\n }\n}\n\nexport {math};\n\n/**\n * Class for accessing internationalization (i18n) features.\n *\n * Allows {@link I18N.onLanguageChanged \"detecting language change\"},\n * {@link I18N.language \"setting the current language\"} or translating\n * {@link I18N.translate \"individual terms\"}.\n *\n * Internationalization works with terms,\n * a string type keyword that is linked to a different text for each language.\n *\n * Internally, string parameters for text and js components are\n * automatically swapped during language change, given they are linked to a term.\n * If manual text swapping is desired, {@link I18N.translate}\n * can be used to retrieve the current translation for any term.\n *\n * You can also use the {@link I18N.onLanguageChanged} to manually update text\n * when a language is changed to for example update a number in a string.\n *\n * @since 1.0.0\n */\nexport class I18N {\n /**\n * {@link Emitter} for language change events.\n *\n * First parameter to a listener is the old language index,\n * second parameter is the new language index.\n *\n * Usage from a within a component:\n *\n * ```js\n * this.engine.i18n.onLanguageChanged.add((oldLanguageIndex, newLanguageIndex) => {\n * const oldLanguage = this.engine.i18n.languageName(oldLanguageIndex);\n * const newLanguage = this.engine.i18n.languageName(newLanguageIndex);\n * console.log(\"Switched from\", oldLanguage, \"to\", newLanguage);\n * });\n * ```\n */\n readonly onLanguageChanged = new Emitter<[number, number]>();\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Previously set language index. @hidden */\n private _prevLanguageIndex: number = -1;\n\n /**\n * Constructor\n */\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @note This is equivalent to {@link I18N.setLanguage}.\n *\n * @param code Language code to switch to\n */\n set language(code: string | null) {\n this.setLanguage(code);\n }\n\n /** Get current language code. */\n get language(): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_currentLanguage();\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get the current language index.\n *\n * This method is more efficient than its equivalent:\n *\n * ```js\n * const index = i18n.languageIndex(i18n.language);\n * ```\n */\n get currentIndex(): number {\n return this._engine.wasm._wl_i18n_currentLanguageIndex();\n }\n\n /** Previous language index. */\n get previousIndex(): number {\n return this._prevLanguageIndex;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @param code The language code.\n * @returns A promise that resolves with the current index code when the\n * language is loaded.\n */\n async setLanguage(code: string | null): Promise {\n if (code == null) return Promise.resolve(this.currentIndex);\n const wasm = this._engine.wasm;\n this._prevLanguageIndex = this.currentIndex;\n wasm._wl_i18n_setLanguage(wasm.tempUTF8(code));\n\n const scene = this.engine.scene;\n\n const filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex));\n const url = `${scene.baseURL}/locale/${filename}`;\n\n await scene._downloadDependency(url);\n\n this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex);\n\n return this.currentIndex;\n }\n\n /**\n * Get translated string for a term for the currently loaded language.\n *\n * @param term Term to translate\n */\n translate(term: string): string | null {\n const wasm = this._engine.wasm;\n const translation = wasm._wl_i18n_translate(wasm.tempUTF8(term));\n if (translation === 0) return null;\n return wasm.UTF8ToString(translation);\n }\n\n /**\n * Get the number of languages in the project.\n *\n */\n languageCount(): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageCount();\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageIndex(code: string): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code));\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageCode(index: number): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_languageCode(index);\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get a language name.\n *\n * @param index Index of the language to get the name from\n */\n languageName(index: number): string | null {\n const wasm = this._engine.wasm;\n const name = wasm._wl_i18n_languageName(index);\n if (name === 0) return null;\n return wasm.UTF8ToString(name);\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Environment lighting properties\n *\n * @since 1.2.3\n */\nexport class Environment {\n /** Scene instance. @hidden */\n private readonly _scene: Scene;\n\n /** Constructor */\n constructor(scene: Scene) {\n this._scene = scene;\n }\n\n /**\n * Get intensity of environment lighting.\n *\n * Incoming environment lighting is multiplied by this factor.\n */\n get intensity() {\n return this._scene.engine.wasm._wl_scene_environment_get_intensity(\n this._scene._index\n );\n }\n\n /**\n * Set intensity of environment lighting.\n *\n * @param intensity New intensity.\n */\n set intensity(intensity: number) {\n this._scene.engine.wasm._wl_scene_environment_set_intensity(\n this._scene._index,\n intensity\n );\n }\n\n /** @overload */\n getTint(): Float32Array;\n /**\n * Get tint for environment lighting.\n *\n * Incoming environment lighting color channels are multiplied by these\n * values.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Tint values - red, green, blue.\n */\n getTint(out: T): T;\n /** @overload */\n getTint(\n out: T | Float32Array = new Float32Array(3)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out as T;\n }\n\n /**\n * Equivalent to {@link getTint}.\n *\n * @note Prefer to use {@link getTint} for performance.\n */\n get tint(): Float32Array {\n return this.getTint();\n }\n\n /**\n * Set tint for environment lighting.\n *\n * @param v New tint value. Expects a 3 component array.\n */\n setTint(v: Readonly) {\n this._scene.engine.wasm._wl_scene_environment_set_tint(\n this._scene._index,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /** Equivalent to {@link setTint}. */\n set tint(v: Readonly) {\n this.setTint(v);\n }\n\n /** @overload */\n getCoefficients(): Float32Array;\n /**\n * Get spherical harmonics coefficients for indirect lighting.\n *\n * These are 9 spherical harmonics coefficients for indirect diffuse\n * lighting.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Spherical harmonics coefficients. Always 27 elements, every\n * consecutive 3 values representing the red, green, blue components of\n * a single coefficient. Unused/empty coefficients at the end can be 0.\n */\n getCoefficients(out: T): T;\n /** @overload */\n getCoefficients(\n out: T | Float32Array = new Float32Array(3 * 9)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(3 * 9 * 4);\n wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem);\n for (let i = 0; i < 3 * 9; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out as T;\n }\n\n /**\n * Equivalent to {@link getCoefficients}.\n *\n * @note Prefer to use {@link getCoefficients} for performance.\n */\n get coefficients(): Float32Array {\n return this.getCoefficients();\n }\n\n /**\n * Set spherical harmonics coefficients for indirect lighting.\n *\n * @note The scene must have been packaged with environment lighting on for\n * this to take effect.\n *\n * @example\n *\n * Coefficients from [WebXR Lighting Estimation](https://www.w3.org/TR/webxr-lighting-estimation-1)\n * can be passed as follows:\n *\n * ```js\n * const probe = await engine.xr.session.requestLightProbe();\n * const estimate = engine.xr.frame.getLightEstimate(probe);\n * scene.environment.coefficients = estimate.sphericalHarmonicsCoefficients;\n * ```\n *\n * @param v A set of spherical harmonics coefficients, every 3 elements\n * constituting the red/green/blue components of a single coefficient.\n * Should be 0, 3, 12 or 27 **array elements**. Passing an empty array\n * disables indirect lighting.\n */\n setCoefficients(v: Readonly) {\n let count = v.length / 3;\n if (count > 9) count = 9;\n else if (count > 4 && count < 9) count = 4;\n else if (count > 1 && count < 4) count = 1;\n const wasm = this._scene.engine.wasm;\n wasm._tempMemFloat.set(v);\n wasm._wl_scene_environment_set_coefficients(\n this._scene._index,\n wasm._tempMem,\n count\n );\n }\n\n /** Equivalent to {@link setCoefficients}. */\n set coefficients(v: Readonly) {\n this.setCoefficients(v);\n }\n}\n", "/**\n * This file is automatically generated.\n *\n * **Do not** modify this file directly, but instead update\n * the 'write-version.mjs' script.\n */\n\n/**\n * Version type following a subset of the Semantic Versioning specification.\n */\nexport type Version = {major: number, minor: number, patch: number, rc: number};\n\n/** Version of this API. */\nexport const APIVersion: Version = {\n major: 1,\n minor: 4,\n patch: 2,\n rc: 0\n};\n", "import {WonderlandEngine} from '../engine.js';\nimport {NumberArray} from '../types.js';\nimport {capitalizeFirstUTF8} from '../utils/misc.js';\nimport {Texture} from '../wonderland.js';\n\nimport {Resource, ResourceManager} from './resource.js';\n\n/**\n * Material parameter type.\n */\nexport enum MaterialParamType {\n /** Unsigned integer parameter type. */\n UnsignedInt = 0,\n /** Integer parameter type. */\n Int = 1,\n /** 16-bit float parameter type. */\n HalfFloat = 2,\n /** Float parameter type. */\n Float = 3,\n /** Sampler resource parameter type, i.e., a {@link Texture}. */\n Sampler = 4,\n /**\n * Font resource parameter type.\n *\n * **Note**: Changing font isn't exposed yet and will raise an error.\n */\n Font = 5,\n}\n\n/**\n * Constructor parameters object for a {@link Material} instance.\n *\n * @deprecated Use {@link MaterialManager#getTemplate} instead:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\nexport interface MaterialParameters {\n /** The name of the pipeline. */\n pipeline: string;\n}\n\n/**\n * Material constructor.\n *\n * Material classes are automatically generated by the runtime based on the\n * loaded scene shaders.\n */\nexport interface MaterialConstructor {\n /**\n * Set of the dynamic parameters that exist on the definition.\n *\n * For instance, the set would contain elements such as `ambientColor`, `diffuseColor`\n * for a Phong material.\n */\n readonly Parameters: Set;\n /**\n * Create a new Material.\n *\n * The material is created from the pipeline associated to the material class.\n *\n * @note Creating material is expensive. Please use {@link Material#clone} to clone a material.\n * @note Do not use this constructor directly with an index, this is reserved for internal purposes.\n */\n new (index?: number): T;\n}\n\n/**\n * Wrapper around a native material.\n *\n * For more information about how to create materials, have a look at the\n * {@link MaterialManager} class.\n *\n * #### Properties\n *\n * The material properties are automatically converted into getters/setters:\n *\n * ```js\n * const material = new PhongMaterial();\n *\n * // Set the `diffuseColor` property\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * console.log(material.getDiffuseColor());\n * ```\n *\n * Getters for non-scalar types have an optional argument to skip an array\n * allocation:\n *\n * ```js\n * const material = new PhongMaterial();\n * const diffuse = [0, 0, 0, 0];\n * material.getDiffuseColor(diffuse);\n * console.log(diffuse) // Prints '[1.0, 1.0, 1.0, 1.0]'\n * ```\n *\n * @note Materials are **per-engine**, they can thus be shared by multiple scenes.\n *\n * #### TypeScript\n *\n * The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * It's then possible to cast the material type using:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const mesh = object.getComponent('mesh');\n * const material = mesh.material as PhongOpaque;\n * material.setDiffuseColor([1, 0, 0, 1]); // Set a red diffuse\n * ```\n *\n * @since 1.2.0\n */\nexport class Material extends Resource {\n /**\n * @deprecated Use {@link MaterialManager#getTemplate} via {@link WonderlandEngine.materials}\n * to create a new material with a given pipeline:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\n constructor(engine: WonderlandEngine, params: number | MaterialParameters) {\n if (typeof params !== 'number') {\n if (!params?.pipeline) throw new Error(\"Missing parameter 'pipeline'\");\n const template = engine.materials.getTemplate(params.pipeline);\n const material = new template();\n super(engine, material._index);\n return material;\n }\n super(engine, params);\n }\n\n /**\n * Check whether a parameter exists on this material.\n *\n * @param name The name to check.\n * @returns `true` if the parameter with name `name` exists on this material,\n * `false` otherwise.\n */\n hasParameter(name: string) {\n const parameters = (this.constructor as MaterialConstructor).Parameters;\n return parameters && parameters.has(name);\n }\n\n /** @deprecated Use {@link pipeline} instead. */\n get shader(): string {\n return this.pipeline;\n }\n\n /** Name of the pipeline used by this material. */\n get pipeline(): string {\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id));\n }\n\n /**\n * Create a copy of the underlying native material.\n *\n * @returns Material clone.\n */\n clone(): Material | null {\n const index = this.engine.wasm._wl_material_clone(this._id);\n return this.engine.materials.wrap(index);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Material(destroyed)';\n }\n return `Material('${this.pipeline}', ${this._index})`;\n }\n\n /**\n * Wrap a native material index.\n *\n * @param engine Engine instance.\n * @param index The index.\n * @returns Material instance or `null` if index <= 0.\n *\n * @deprecated Use the {@link WonderlandEngine.materials} instead.\n */\n static wrap(engine: WonderlandEngine, index: number): Material | null {\n return engine.materials.wrap(index);\n }\n}\n\n/**\n * Manage materials.\n *\n * #### Creation\n *\n * To create a material, first retrieve the class associated to\n * the pipeline using {@link MaterialManager.getTemplate}:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * ```\n *\n * Creating a material is then done using the constructor:\n *\n * ```js\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n */\nexport class MaterialManager extends ResourceManager {\n /** Material classes. @hidden. */\n private readonly _materialTemplates: MaterialConstructor[] = [];\n\n /** @hidden */\n constructor(engine: WonderlandEngine) {\n super(engine, Material);\n this._cacheDefinitions();\n }\n\n /** @override */\n wrap(index: number) {\n if (index <= 0) return null;\n\n const cached = this._cache[index];\n if (cached) return cached;\n\n const wasm = this.engine.wasm;\n const definition = wasm._wl_material_get_definition(index);\n\n const Template = this._materialTemplates[definition];\n const material = new Template(index);\n return this._wrapInstance(material);\n }\n\n /**\n * Get the material class with the given pipeline name.\n *\n * #### Usage\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n *\n * #### TypeScript\n *\n * This method provide a simple way to cast the constructor returned by `getTemplate`:\n *\n * ```ts\n * interface Phong {\n * getAmbientColor(out?: Float32Array): Float32Array;\n * setAmbientColor(value: NumberArray): void;\n * }\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `Phong`\n * ```\n *\n * However, this means manually writing types for each pipeline.\n *\n * Fortunately, The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * Material constructors will then be typed automatically when using a string literal pipeline name:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `PhongOpaque`\n * ```\n *\n * @param pipeline The pipeline name to search for.\n * @returns The material class.\n *\n * @throws `Error` if the material class doesn't exist.\n */\n getTemplate(pipeline: string): MaterialConstructor {\n const wasm = this.engine.wasm;\n const index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline));\n if (!index) {\n throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`);\n }\n return this._materialTemplates[index] as MaterialConstructor;\n }\n\n /**\n * Wrap a material instance.\n *\n * @todo: Remove at 2.0.0.\n *\n * @note Wrapping should only be called once per instance.\n *\n * @param instance The material instance.\n * @returns The new material, wrapped in a proxy.\n */\n _wrapInstance(instance: Material): Material {\n this._cache[instance.index] = instance;\n if (!this.engine.legacyMaterialSupport) return instance;\n\n /** @todo: Remove at 2.0.0. This is kept for backward compatibility. */\n const proxy = new Proxy(instance, {\n get(target: Material, prop: string) {\n if (!target.hasParameter(prop)) {\n return (target as Record)[prop];\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `get${capitalizeFirstUTF8(prop)}`;\n return (target as Record)[name]();\n },\n set(target, prop: string, value) {\n if (!target.hasParameter(prop)) {\n (target as Record)[prop] = value;\n return true;\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `set${capitalizeFirstUTF8(prop)}`;\n (target as Record)[name](value);\n return true;\n },\n });\n this._cache[instance.index] = proxy;\n return proxy;\n }\n\n /**\n * Cache all pipeline definitions.\n *\n * @hidden\n */\n private _cacheDefinitions() {\n const wasm = this.engine.wasm;\n const count = wasm._wl_get_material_definition_count();\n for (let i = 1; i < count; ++i) {\n this._materialTemplates[i] = this._createMaterialTemplate(i);\n }\n }\n\n /**\n * Create a material class from a definition index.\n *\n * @param wasm The WASM instance.\n * @param definitionIndex The definition index to wrap.\n * @returns The material class.\n */\n private _createMaterialTemplate(definitionIndex: number) {\n const engine = this.engine;\n const template = class CustomMaterial extends Material {\n static Parameters: Set = new Set();\n\n constructor(index?: number) {\n index = index ?? engine.wasm._wl_material_create(definitionIndex);\n super(engine, index);\n /** @todo(2.0.0): Unify with Material. We need to wrap in both since materials\n * can be created via the parent class, or via child classes.\n * In addition, wrapping returns a proxy, we want to support Proxy\n * as well as Proxy. */\n return engine.materials._wrapInstance(this);\n }\n };\n\n const wasm = this.engine.wasm;\n const nbParams = wasm._wl_material_definition_get_param_count(definitionIndex);\n for (let index = 0; index < nbParams; ++index) {\n const name = wasm.UTF8ToString(\n wasm._wl_material_definition_get_param_name(definitionIndex, index)\n );\n template.Parameters.add(name);\n\n const t = wasm._wl_material_definition_get_param_type(definitionIndex, index);\n const type = t & 0xff;\n const componentCount = (t >> 8) & 0xff;\n /* metaType could also be extracted using: (t >> 16) & 0xff */\n\n const capitalized = capitalizeFirstUTF8(name);\n const getterId = `get${capitalized}`;\n const setterId = `set${capitalized}`;\n\n const templateProto = template.prototype as Record;\n switch (type) {\n case MaterialParamType.UnsignedInt:\n templateProto[getterId] = uint32Getter(index, componentCount);\n /* For now, it's only possible to set scalar uint values */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.Int:\n templateProto[getterId] = int32Getter(index, componentCount);\n /* For now, it's only possible to set scalar int values. Integer values setter\n * is purposely shared with uint. */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.HalfFloat:\n case MaterialParamType.Float:\n templateProto[getterId] = float32Getter(index, componentCount);\n templateProto[setterId] = float32Setter(index, componentCount);\n break;\n case MaterialParamType.Sampler:\n templateProto[getterId] = samplerGetter(index);\n templateProto[setterId] = samplerSetter(index);\n break;\n case MaterialParamType.Font:\n templateProto[getterId] = fontGetter(index);\n /* For now, setting fonts is not supported */\n break;\n }\n }\n\n return template as MaterialConstructor;\n }\n}\n\n/** @todo: With this implementation, `_wl_material_get_param_value`\n * do not need to check for the parameter type anymore, we could use\n * explicit calls. */\n\nfunction uint32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemUint32[0];\n };\n }\n return function (this: Material, out: NumberArray = new Uint32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemUint32[i];\n }\n return out;\n };\n}\n\nfunction uint32Setter(index: number) {\n return function (this: Material, value: number) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value);\n };\n}\n\nfunction int32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemInt[0];\n };\n }\n return function (this: Material, out: NumberArray = new Int32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemInt[i];\n }\n return out;\n };\n}\n\nfunction float32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n };\n }\n return function (this: Material, out: NumberArray = new Float32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n };\n}\n\nfunction float32Setter(index: number, count: number) {\n return function (this: Material, value: number | NumberArray) {\n const wasm = this.engine.wasm;\n\n let actualCount = 1;\n if (typeof value === 'number') {\n wasm._tempMemFloat[0] = value;\n } else {\n actualCount = value.length;\n for (let i = 0; i < actualCount; ++i) wasm._tempMemFloat[i] = value[i];\n }\n\n if (actualCount < count) {\n throw new Error(`Expected an array ${count} values, got ${actualCount}`);\n }\n\n wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count);\n };\n}\n\nfunction samplerGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.textures.wrap(wasm._tempMemInt[0]);\n };\n}\n\nfunction samplerSetter(index: number) {\n return function (this: Material, value: Texture | null | undefined) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0);\n };\n}\n\nfunction fontGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.fonts.wrap(wasm._tempMemInt[0]);\n };\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Mesh, MeshIndexType, MeshParameters, MeshSkinningType} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\n/**\n * Manage meshes.\n *\n * #### Creation\n *\n * Creating a mesh is done using {@link MeshManager.create}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n *\n * @since 1.2.0\n */\nexport class MeshManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Mesh);\n }\n\n /**\n * Create a new mesh.\n *\n * @param params Vertex and index data. For more information, have a look\n * at the {@link MeshParameters} object.\n */\n create(params: Partial) {\n if (!params.vertexCount) throw new Error(\"Missing parameter 'vertexCount'\");\n\n const wasm = this.engine.wasm;\n\n let indexData = 0;\n let indexType = 0;\n let indexDataSize = 0;\n if (params.indexData) {\n indexType = params.indexType || MeshIndexType.UnsignedShort;\n indexDataSize = params.indexData.length * indexType;\n indexData = wasm._malloc(indexDataSize);\n /* Copy the index data into wasm memory */\n switch (indexType) {\n case MeshIndexType.UnsignedByte:\n wasm.HEAPU8.set(params.indexData, indexData);\n break;\n case MeshIndexType.UnsignedShort:\n wasm.HEAPU16.set(params.indexData, indexData >> 1);\n break;\n case MeshIndexType.UnsignedInt:\n wasm.HEAPU32.set(params.indexData, indexData >> 2);\n break;\n }\n }\n\n const {skinningType = MeshSkinningType.None} = params;\n\n const index = wasm._wl_mesh_create(\n indexData,\n indexDataSize,\n indexType,\n params.vertexCount,\n skinningType\n );\n const instance = new Mesh(this._host, index);\n this._cache[instance.index] = instance;\n return instance;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {ImageLike} from '../types.js';\nimport {Texture} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\nexport function needsFlipY(image: ImageLike) {\n /* WebGL can't flip ImageBitmap on upload.\n * For consistency with WebGPU, disable ImageBitmap flipping entirely and let the user use:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap#options */\n return image instanceof ImageBitmap ? 0 : 1;\n}\n\n/**\n * Manage textures.\n *\n * #### Creation\n *\n * Creating a texture is done using {@link TextureManager.load}:\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * Alternatively, textures can be created directly via a loaded image using\n * {@link TextureManager.create}.\n *\n * @since 1.2.0\n */\nexport class TextureManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Texture);\n }\n\n /**\n * Create a new texture from an image or video.\n *\n * #### Usage\n *\n * ```js\n * const img = new Image();\n * img.load = function(img) {\n * const texture = engine.textures.create(img);\n * };\n * img.src = 'my-image.png';\n * ```\n *\n * @note The media must already be loaded. To automatically\n * load the media and create a texture, use {@link TextureManager.load} instead.\n *\n * @param image Media element to create the texture from.\n * @ret\\urns The new texture with the media content.\n */\n create(image: ImageLike): Texture {\n const wasm = this.engine.wasm;\n\n const jsImageIndex = wasm._images.length;\n wasm._images.push(image);\n\n if (image instanceof HTMLImageElement && !image.complete) {\n throw new Error('image must be ready to create a texture');\n }\n\n const width = (image as HTMLVideoElement).videoWidth ?? image.width;\n const height = (image as HTMLVideoElement).videoHeight ?? image.height;\n\n const imageIndex = wasm._wl_image_create(jsImageIndex);\n wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image));\n\n /* Required because the image isn't a resource by itself, but will eventually be one. */\n const index = wasm._wl_texture_create(imageIndex);\n\n const instance = new Texture(this.engine, index);\n this._cache[instance.index] = instance;\n\n return instance;\n }\n\n /**\n * Load an image from URL as {@link Texture}.\n *\n * #### Usage\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * @param filename URL to load from.\n * @param crossOrigin Cross origin flag for the image object.\n * @returns Loaded texture.\n */\n load(filename: string, crossOrigin?: string): Promise {\n let image = new Image();\n image.crossOrigin = crossOrigin ?? image.crossOrigin;\n image.src = filename;\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(this.create(image));\n };\n image.onerror = function () {\n reject('Failed to load image. Not found or no read access');\n };\n });\n }\n}\n", "import {WASM} from './wasm.js';\nimport {Scene} from './scene.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {WonderlandEngine} from './engine.js';\nimport {InputType, ViewComponent} from './wonderland.js';\n\ntype WebXRFramebuffer = WebGLFramebuffer & {name: number};\ntype WebXRTexture = WebGLTexture & {name: number};\n\n/**\n * Options for {@link LoadRuntimeOptions.xrOfferSession}\n *\n * @since 1.1.5\n */\nexport interface XROfferSessionOptions {\n /**\n * Mode to offer XR session with. If set to `'auto'`, offers a session\n * with the first supported mode in the following order:\n * - VR\n * - AR\n * - inline\n */\n mode: XRSessionMode | 'auto';\n /** Required features for the offered XR session */\n features: string[];\n /** Optional features for the offered XR session */\n optionalFeatures: string[];\n}\n\n/** Properties of a WebXR session */\nexport class XRSessionState {\n /** Wonderland WASM bridge. @hidden */\n readonly #webxr: WebXR;\n\n /** Current WebXR session mode */\n sessionMode: XRSessionMode;\n\n /** Current WebXR session */\n session: XRSession;\n\n /** Current WebXR frame */\n frame: XRFrame | null = null;\n\n /**\n * Constructor.\n *\n * @param wasm Wasm bridge instance\n * @param mode Current XR session mode\n *\n * @hidden\n */\n constructor(webxr: WebXR, mode: XRSessionMode, session: XRSession) {\n this.#webxr = webxr;\n this.sessionMode = mode;\n this.session = session;\n }\n\n /** @overload */\n referenceSpaceForType(type: 'viewer'): XRReferenceSpace;\n /**\n * Get a WebXR reference space of a given reference space type.\n *\n * @param type Type of reference space to get\n * @returns Reference space, or `null` if there's no reference space\n * of the requested type available\n */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null;\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this.#webxr.referenceSpaceForType(type);\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this.#webxr.currentReferenceSpace = refSpace;\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this.#webxr.currentReferenceSpace;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this.#webxr.currentReferenceSpaceType;\n }\n\n /** Current WebXR base layer */\n get baseLayer(): XRProjectionLayer | XRWebGLLayer {\n return this.#webxr.baseLayer!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n return this.#webxr.framebuffers;\n }\n}\n\n/**\n * WebXR API (internal)\n *\n * @hidden\n */\nexport class WebXR {\n /** Wonderland WASM bridge. @hidden */\n readonly #wasm: WASM;\n\n readonly engine: WonderlandEngine;\n\n sessionState: XRSessionState | null = null;\n\n colorFormat: number = 0x8058 /* RGBA8 */;\n depthFormat: number = 0x88f0 /* DEPTH24_STENCIL8 */;\n textureType: XRTextureType = 'texture';\n\n /**\n * {@link Emitter} for WebXR session end events.\n */\n readonly onSessionEnd = new Emitter();\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n */\n readonly onSessionStart: Emitter<[XRSession, XRSessionMode]> = new RetainEmitter<\n [XRSession, XRSessionMode]\n >();\n\n /**\n * {@link Emitter} notified before the first update and rendering on the first frame of a new XR session.\n */\n readonly onSessionFirstFrame: Emitter<[XRSession, XRSessionMode]> = new Emitter<\n [XRSession, XRSessionMode]\n >();\n\n /** Whether AR is supported by the browser. */\n arSupported: boolean = false;\n\n /** Whether VR is supported by the browser. */\n vrSupported: boolean = false;\n\n /**\n * Current WebXR base layer or `null` if no session active.\n */\n baseLayer: XRProjectionLayer | XRWebGLLayer | null = null;\n\n /** WebXR framebuffer scale factor. */\n framebufferScaleFactor: number = 1.0;\n\n private _webglBinding: XRWebGLBinding | null = null;\n\n private _initXR: boolean = false;\n private _inXR: boolean = false;\n\n /** WebXR reference spaces. */\n private _refSpaces: Record = {\n 'viewer': undefined,\n 'local': undefined,\n 'local-floor': undefined,\n 'bounded-floor': undefined,\n 'unbounded': undefined,\n };\n\n /** Current WebXR reference space. */\n private _refSpace: XRReferenceSpace | null = null;\n\n /** Current WebXR reference space type. */\n private _refSpaceType: XRReferenceSpaceType | null = null;\n\n /**\n * Emscripten WebXR framebuffer(s).\n *\n * @note fbo will not get overwritten if we are rendering to the\n * default framebuffer, e.g., when using WebXR emulator.\n */\n private _fbo: number | number[] = 0;\n\n private _allowLayers: boolean = false;\n private _requestAnimationFrameId: any = null;\n\n /**\n * Initial WebXR reference space type. See {@link init} for\n * more information.\n */\n private _initialReferenceSpaceType: XRReferenceSpaceType | null = null;\n\n private _tempPosition: Float32Array = new Float32Array(3);\n private _tempRotation: Float32Array = new Float32Array(4);\n\n private _tempPose(transform: XRRigidTransform) {\n const p = transform.position;\n this._tempPosition[0] = p.x;\n this._tempPosition[1] = p.y;\n this._tempPosition[2] = p.z;\n const o = transform.orientation;\n this._tempRotation[0] = o.x;\n this._tempRotation[1] = o.y;\n this._tempRotation[2] = o.z;\n this._tempRotation[3] = o.w;\n }\n\n /**\n * Constructor.\n *\n * @param engine Engine\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine) {\n this.engine = engine;\n this.#wasm = engine.wasm;\n }\n\n /**\n * Check whether XR is supported and store the result in {@link arSupported} and {@link vrSupported}\n */\n checkXRSupport(): Promise {\n if (typeof navigator === 'undefined') {\n return Promise.resolve(false);\n }\n if (!navigator.xr) {\n const isLocalhost =\n location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n const missingHTTPS = location.protocol !== 'https:' && !isLocalhost;\n console.warn(\n missingHTTPS\n ? 'WebXR is only supported with HTTPS or on localhost!'\n : 'WebXR unsupported in this browser.'\n );\n return Promise.resolve(false);\n }\n /* Those can throw if the application is embedded in an iframe without\n * xr-spatial-tracking permission. navigator.xr will be available, but\n * any access of it will throw. */\n const vrPromise = navigator.xr\n .isSessionSupported('immersive-vr')\n .then((supported) => (this.vrSupported = supported))\n .catch(() => (this.vrSupported = false));\n const arPromise = navigator.xr\n .isSessionSupported('immersive-ar')\n .then((supported) => (this.arSupported = supported))\n .catch(() => (this.arSupported = false));\n\n return Promise.all([vrPromise, arPromise]).then(\n () => this.vrSupported || this.arSupported\n );\n }\n\n /**\n * Initialize WebXR.\n *\n * @hidden\n */\n async init(\n framebufferScaleFactor: number,\n offerSessionOptions: XROfferSessionOptions | null\n ) {\n const supported = await this.checkXRSupport();\n if (!supported) return;\n\n this.framebufferScaleFactor = framebufferScaleFactor;\n\n /* Force the reference space to 'local'/'viewer' for the loading screen\n * to make sure the head input is at the origin. Doing it this way to\n * avoid adding JS components to the loading screen. */\n const onXRStart = () => {\n this._initialReferenceSpaceType = this.currentReferenceSpaceType;\n const newSpace = this._refSpaces['local'] ?? this._refSpaces['viewer']!;\n this.currentReferenceSpace = newSpace;\n };\n\n /* Not once() because the user can enter and exit XR several times\n * during a long loading screen */\n this.onSessionStart.add(onXRStart);\n\n /* This is called before all init()/start()/onActivate() so we avoid\n * overwriting a user-set reference space */\n this.engine.onLoadingScreenEnd.once(() => {\n this.onSessionStart.remove(onXRStart);\n\n if (!this._initialReferenceSpaceType) return;\n\n this.currentReferenceSpace =\n this._refSpaces[this._initialReferenceSpaceType] ??\n this._refSpaces['viewer']!;\n this._initialReferenceSpaceType = null;\n });\n\n if (offerSessionOptions !== null) {\n let mode = offerSessionOptions.mode;\n if (mode == 'auto') {\n if (this.vrSupported) {\n mode = 'immersive-vr';\n } else if (this.arSupported) {\n mode = 'immersive-ar';\n } else {\n mode = 'inline';\n }\n }\n\n const offerSession = () => {\n this.offerSession(\n mode as XRSessionMode,\n offerSessionOptions.features,\n offerSessionOptions.optionalFeatures\n )\n .then(\n /* When the session ends, offer to start a new one again */\n (s) => s.addEventListener('end', offerSession)\n )\n /* The browser may not suppoer offer session, or a previous request\n * was replaced by a new one. Not crucial, but inform the user. */\n .catch(console.warn);\n };\n\n offerSession();\n }\n }\n\n /** Get a WebXR reference space of a given reference space type. */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this._refSpaces[type] ?? null;\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this._refSpace! = refSpace;\n\n this._refSpaceType = null;\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n if (this._refSpaces[type] === refSpace) {\n /* Keep track of reference space type */\n this._refSpaceType = type;\n }\n }\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this._refSpace!;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this._refSpaceType!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n if (!Array.isArray(this._fbo)) {\n return [this.#wasm.GL.framebuffers[this._fbo]];\n }\n return this._fbo.map((id) => this.#wasm.GL.framebuffers[id]);\n }\n\n /**\n * Set main/left/right eye view active according to XR mode.\n *\n * If @param inXR is `true`, disables the main view and enables the left and\n * right view. Otherwise, enables the main view and disables the left and\n * right view.\n *\n * @param inXR Whether an XR session is currently active\n */\n updateViewState(inXR: boolean | undefined) {\n const scene: Scene = this.engine.scene;\n\n inXR = inXR ?? this._inXR;\n\n if (scene.mainView) {\n scene.mainView.active = !inXR;\n }\n\n if (scene.leftEyeView && scene.rightEyeView) {\n /** We always have either no left/right eye views or both. Always enable\n * both since we can't know if this is single-view AR until we get the\n * view count in {@link nextFrame}. There the right eye view is\n * disabled if necessary. */\n scene.leftEyeView.active = inXR;\n scene.rightEyeView.active = inXR;\n }\n }\n\n /**\n * Set projection matrix parameters for the webxr session.\n *\n * @param near Distance of near clipping plane\n * @param far Distance of far clipping plane\n */\n updateProjectionParams(near: number | undefined, far: number | undefined) {\n if (!this.sessionState) return;\n\n const scene = this.engine.scene;\n near ??= scene.leftEyeView!.near;\n far ??= scene.leftEyeView!.far;\n\n /* If reverse-Z is enabled, we need to give WebXR swapped near and far\n * planes so it generates the correct projection matrices. This is\n * explicitly supported by the spec. */\n const reverseZ = !!this.engine.isReverseZEnabled;\n\n this.sessionState!.session.updateRenderState({\n depthNear: reverseZ ? far : near,\n depthFar: reverseZ ? near : far,\n });\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n const options = this.sessionOptions(features, optionalFeatures);\n return navigator.xr!.requestSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n /* @ts-ignore */\n if (!navigator.xr!.offerSession) {\n return Promise.reject('WebXR offerSession() unsupported in this browser.');\n }\n const options = this.sessionOptions(features, optionalFeatures);\n /* @ts-ignore */\n return navigator.xr!.offerSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n async startSession(session: XRSession, mode: XRSessionMode) {\n /* Multiple calls to requestSession will result in the existing\n * session being passed to the callback */\n if (session == this.sessionState?.session) return;\n this.sessionState = new XRSessionState(this, mode, session);\n\n /* React to session ending */\n session.addEventListener('end', () => {\n this.endSession();\n });\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n\n /* Create the base layer */\n let binding = null;\n const isEmulator = 'CustomWebXRPolyfill' in window;\n /* The WebXR emulator doesn't support layers, and will\n * simply throw an exception. Only way of checking seems\n * to be whether the custom polyfill is available */\n if (!isEmulator && 'XRWebGLBinding' in window) {\n binding = this._webglBinding = new XRWebGLBinding(session, gl);\n }\n const useLayers = this._allowLayers && binding;\n if (useLayers) {\n /* Use WebXR Layers */\n const layer = (this.baseLayer = binding!.createProjectionLayer({\n scaleFactor: this.framebufferScaleFactor,\n colorFormat: this.colorFormat,\n depthFormat: this.depthFormat,\n /* Always use 'texture-array' with multiview, otherwise default to it\n * if not set otherwise */\n textureType: !this.textureType ? 'texture-array' : this.textureType,\n }));\n session.updateRenderState({layers: [layer]});\n } else {\n const layer = (this.baseLayer = new XRWebGLLayer(session, gl, {\n framebufferScaleFactor: this.framebufferScaleFactor,\n }));\n session.updateRenderState({baseLayer: layer});\n }\n\n /* Request and cache available spaces. 'viewer' is always available. */\n const promises = [];\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n promises.push(\n session.requestReferenceSpace(type).then((refSpace) => {\n this._refSpaces[type] = refSpace;\n return refSpace;\n })\n );\n }\n\n await Promise.allSettled(promises).then((results) => {\n /* We prefer the reference space automatically in above order */\n for (let i = results.length - 1; i >= 0; --i) {\n const result = results[i];\n if (result.status === 'rejected') continue;\n /* Type is kept track of for the user to test against */\n this._refSpaceType = Object.keys(this._refSpaces)[\n i\n ] as XRReferenceSpaceType;\n this._refSpace = result.value;\n break;\n }\n });\n\n const isVR = mode == 'immersive-vr';\n\n const scene: Scene = this.engine.scene;\n\n if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) {\n console.error(\n `sessionStart(): VR sessions require 1 classic view, a left and a right view`\n );\n return;\n }\n\n this.updateViewState(true);\n\n this.updateProjectionParams(undefined, undefined);\n\n this.onSessionStart.notify(session, this.sessionState!.sessionMode);\n\n this.#wasm._wl_reset_context();\n\n console.log(`WebXR ${isVR ? 'VR' : 'AR'} session started`);\n\n this.sessionState.session.addEventListener('visibilitychange', (event) => {\n switch (event.session.visibilityState) {\n case 'visible':\n this.#wasm._wl_xr_focus();\n case 'visible-blurred':\n this.#wasm._wl_xr_blur();\n case 'hidden':\n this.#wasm._wl_xr_hide();\n }\n });\n\n /* Wait until first frame to call _wl_xr_init() */\n this._initXR = true;\n\n this._requestAnimationFrameId = session.requestAnimationFrame(\n useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)\n );\n }\n\n sessionOptions(\n requiredFeatures: string[],\n optionalFeatures: string[] = []\n ): XRSessionInit {\n if (this._allowLayers && !optionalFeatures.includes('layers')) {\n optionalFeatures.push('layers');\n }\n\n const params: XRSessionInit = {\n requiredFeatures,\n optionalFeatures,\n };\n\n const hasDepthSensing =\n requiredFeatures.includes('depth-sensing') ||\n optionalFeatures.includes('depth-sensing');\n if (hasDepthSensing) {\n params.depthSensing = {\n usagePreference: ['gpu-optimized', 'cpu-optimized'],\n dataFormatPreference: ['float32', 'luminance-alpha'],\n };\n }\n return params;\n }\n\n endSession() {\n this.sessionState!.session.cancelAnimationFrame(this._requestAnimationFrameId);\n this._requestAnimationFrameId = null;\n this.sessionState = null;\n\n this.#wasm._wl_reset_context();\n\n if (this.onSessionStart instanceof RetainEmitter) this.onSessionStart.reset();\n this.onSessionEnd.notify();\n\n console.log('WebXR session ended');\n\n this._inXR = false;\n\n this.updateViewState(false);\n\n const scene: Scene = this.engine.scene;\n\n this.#wasm._wl_xr_exit();\n\n /* Restore projection matrices. They are temporarily overridden in XR and\n * view changes are applied when the session ends. */\n scene.leftEyeView!._generateProjectionMatrix();\n scene.rightEyeView!._generateProjectionMatrix();\n\n /* Meta WebXR emulator doesn't request animation frame. Quest does. */\n this.#wasm._wl_application_redraw();\n }\n\n nextFrame(time: number, frame: XRFrame) {\n this.sessionState!.frame = frame;\n\n const session = frame.session;\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const scene: Scene = this.engine.scene;\n\n if (this._initXR) {\n /* There's no way to tell how many views we have before rendering the first frame,\n * and AR is not a sufficient criteria for one eye (mobile AR, AR headsets) */\n scene.rightEyeView!.active = pose.views.length > 1;\n\n this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer);\n this._initXR = false;\n this._inXR = true;\n\n this.onSessionFirstFrame.notify(session, this.sessionState!.sessionMode);\n }\n\n /* Head transformation */\n this._tempPose(pose.transform);\n scene._setInputTransformation(\n InputType.Head,\n this._tempPosition,\n this._tempRotation\n );\n\n /* Eyes transformations */\n for (let i = 0; i < pose.views.length && i < 2; ++i) {\n const view = pose.views[i];\n const viewIndex = view.eye == 'right' ? 1 : 0;\n this._tempPose(view.transform);\n scene._setInputTransformation(\n InputType.EyeLeft + viewIndex,\n this._tempPosition,\n this._tempRotation\n );\n }\n\n /* Controller transformations */\n for (const inputSource of session.inputSources) {\n let handedness = -1;\n if (inputSource.handedness == 'left') handedness = 0;\n else if (inputSource.handedness == 'right') handedness = 1;\n this._updateInputComponent(\n frame,\n inputSource.gripSpace,\n InputType.ControllerLeft + handedness\n );\n this._updateInputComponent(\n frame,\n inputSource.targetRaySpace,\n InputType.RayLeft + handedness\n );\n }\n\n this.#wasm._wl_nextFrame(0);\n }\n\n nextFrameSingle(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameSingle.bind(this)\n );\n }\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n /* If framebuffer is non-null, compositor is enabled and we bind it.\n * If it's null, we need to avoid this call otherwise the canvas FBO is bound */\n const glLayer = session.renderState.baseLayer!;\n if (glLayer.framebuffer) {\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const id = this._fbo || GL.getNewId(GL.framebuffers);\n (glLayer.framebuffer as WebXRFramebuffer).name = id;\n GL.framebuffers[id] = glLayer.framebuffer;\n this._fbo = id;\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]);\n }\n\n for (let i = 0; i < pose.views.length; ++i) {\n const view = pose.views[i];\n const viewport = glLayer.getViewport(view)!;\n\n let destView: ViewComponent;\n if (view.eye == 'left') {\n destView = this.engine.scene.leftEyeView!;\n } else if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene._components.componentAt(ViewComponent, i);\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n /* Patch projection matrix, currently only needed for reverse-Z.\n * If reverse-Z is enabled, we pass swapped near and far values to\n * updateRenderState(), giving us a matrix with inverted depth. But\n * we still need to map from NDC 1,-1 to 1,0. On WebGPU this won't\n * be necessary. */\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n this._fbo as number\n );\n }\n\n this.nextFrame(time, frame);\n }\n\n nextFrameLayers(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameLayers.bind(this)\n );\n }\n\n const scene: Scene = this.engine.scene;\n\n const pose = frame.getViewerPose(this._refSpace!)!;\n\n const layer = this.baseLayer!;\n const binding = this._webglBinding;\n\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n const createFramebuffer = !this._fbo;\n const textureArray = layer.textureArrayLength == 2;\n\n if (createFramebuffer) {\n if (textureArray) {\n this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)];\n } else {\n /* Both eyes use the same FBO */\n const id = GL.getNewId(GL.framebuffers);\n this._fbo = [id, id];\n }\n this._fbo.forEach((id) => {\n const framebuffer = gl.createFramebuffer() as WebXRFramebuffer;\n GL.framebuffers[id] = framebuffer;\n framebuffer.name = id;\n });\n }\n\n const ids = this._fbo as number[];\n pose.views.forEach((view) => {\n const viewIndex = view.eye == 'right' ? 1 : 0;\n\n const subImage = binding!.getViewSubImage(layer, view);\n const viewport = subImage.viewport;\n\n let destView: ViewComponent;\n if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene.leftEyeView!;\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n ids[viewIndex]\n );\n\n if (!createFramebuffer) return;\n /* Only needs to be done for the first view on when using side-by-side\n * target texture */\n if (!textureArray && viewIndex != 0) return;\n\n /* Make WebXR API created textures known to emscripten */\n const colorTexture = subImage.colorTexture as WebXRTexture;\n const colorImageId = (colorTexture.name =\n colorTexture.name || GL.getNewId(GL.textures));\n GL.textures[colorImageId] = colorTexture;\n\n const depthStencilTexture = subImage.depthStencilTexture as WebXRTexture;\n const depthStencilImageId = (depthStencilTexture.name =\n depthStencilTexture.name || GL.getNewId(GL.textures));\n GL.textures[depthStencilImageId] = depthStencilTexture;\n\n /* Attach textures to framebuffer */\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]);\n\n if (textureArray) {\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n subImage.colorTexture,\n 0,\n subImage.imageIndex\n );\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n subImage.depthStencilTexture,\n 0,\n subImage.imageIndex\n );\n } else {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n subImage.colorTexture,\n 0\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.TEXTURE_2D,\n subImage.depthStencilTexture,\n 0\n );\n }\n\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER)) {\n console.error('Target framebuffer for', view.eye, 'eye is incomplete.');\n }\n });\n\n this.nextFrame(time, frame);\n }\n\n private _updateInputComponent(\n frame: XRFrame,\n space: XRSpace | undefined,\n inputType: InputType\n ) {\n if (!space) return;\n const pose = frame.getPose(space, this._refSpace!);\n if (!pose || Number.isNaN(pose.transform.matrix[0])) return;\n this._tempPose(pose.transform);\n this.engine.scene._setInputTransformation(\n inputType,\n this._tempPosition,\n this._tempRotation\n );\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {InstantiateGltfResult, Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {Object3D} from './wonderland.js';\n\n/** GLTF-specific loading options. */\nexport type GLTFOptions = {\n /** If `true`, extensions will be parsed. */\n extensions?: boolean;\n};\n\n/**\n * Extension data obtained from glTF files.\n */\nexport interface GLTFExtensionsInstance {\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\nexport class GLTFExtensions {\n objectCount: number;\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record = {};\n /**\n * Mesh extension objects. Key is the gltf index, value is JSON\n * data indexed by extension name.\n */\n mesh: Record> = {};\n /**\n * Node extension objects. Key is a glTF index, value is JSON\n * data indexed by extension name.\n */\n node: Record> = {};\n\n constructor(count: number) {\n this.objectCount = count;\n }\n}\n\n/**\n * glTF scene.\n *\n * At the opposite of {@link Scene}, glTF scenes can be instantiated\n * in other scenes but can't:\n * - Be activated\n * - Be the destination of an instantiation\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n *\n * const scene = engine.scene;\n * for (let i = 0; i < 100; ++i) {\n * scene.instantiate(prefab);\n * }\n * ```\n *\n * Since this class inherits from {@link Prefab}, you can use the shared\n * API to modify the glTF before an instantiation:\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n * const zombie = prefab.findByName('Zombie')[0];\n *\n * // The mesh is too small, we scale the root\n * zombie.setScalingWorld([2, 2, 2]);\n * // Add a custom js 'health' component to the root\n * zombie.addComponent('health', {value: 100});\n *\n * // 'Zombie' is wrapped in a new root added during instantiation\n * const {root} = engine.scene.instantiate(prefab);\n * const instanceZombie = root.children[0];\n * console.log(instanceZombie.getScalingWorld()); // Prints '[2, 2, 2]'\n * ```\n *\n * @category scene\n * @since 1.2.0\n */\nexport class PrefabGLTF extends Prefab {\n /**\n * Raw extensions read from the glTF file.\n *\n * The extensions will be mapped to the hierarchy upon instantiation.\n * For more information, have a look at the {@link InstantiateGltfResult} type.\n *\n * @note The glTF must be loaded with `extensions` enabled. If not, this\n * field will be set to `null`. For more information, have a look at the\n * {@link GLTFOptions} type.\n */\n extensions: GLTFExtensions | null = null;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n this.extensions = this._readExtensions();\n }\n\n /**\n * Instantiate the glTF extensions on an active sub scene graph.\n *\n * @param id The root object id.\n * @param result The instantiation object result.\n *\n * @hidden\n */\n _processInstantiaton(dest: Prefab, root: Object3D, result: InstantiateGltfResult) {\n if (!this.extensions) return null;\n\n const wasm = this.engine.wasm;\n\n const count = this.extensions.objectCount;\n const idMapping: number[] = new Array(count);\n\n /** @todo: We need some check to ensure that the gltf layout didn't change to retarget extensions.\n * At least a simple scene graph size check should be required to avoid a segfault. */\n\n const activeRootIndex = wasm._wl_object_index(root._id);\n for (let i = 0; i < count; ++i) {\n const mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(\n this._index,\n dest._index,\n activeRootIndex,\n i\n );\n idMapping[i] = mappedId;\n }\n\n const remapped: GLTFExtensionsInstance = {\n mesh: {},\n node: {},\n idMapping,\n };\n\n for (const gltfIndex in this.extensions.mesh) {\n const id = idMapping[gltfIndex];\n remapped.mesh[id] = this.extensions.mesh[gltfIndex];\n }\n for (const gltfIndex in this.extensions.node) {\n const id = idMapping[gltfIndex];\n remapped.node[id] = this.extensions.node[gltfIndex];\n }\n\n result.extensions = remapped;\n }\n\n /**\n * Unmarshalls gltf extensions.\n *\n * @hidden\n */\n private _readExtensions() {\n const wasm = this.engine.wasm;\n\n const ptr = wasm._wl_glTF_scene_get_extensions(this._index);\n if (!ptr) return null;\n\n let index = ptr / 4;\n const data = wasm.HEAPU32;\n const readString = () => {\n const strPtr = data[index++];\n const strLen = data[index++];\n return wasm.UTF8ViewToString(strPtr, strPtr + strLen);\n };\n\n const objectCount = data[index++];\n const extensions = new GLTFExtensions(objectCount);\n\n const meshExtensionsSize = data[index++];\n for (let i = 0; i < meshExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.mesh[objectId] = JSON.parse(readString());\n }\n const nodeExtensionsSize = data[index++];\n for (let i = 0; i < nodeExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.node[objectId] = JSON.parse(readString());\n }\n const rootExtensionsStr = readString();\n if (rootExtensionsStr) {\n extensions.root = JSON.parse(rootExtensionsStr);\n }\n\n return extensions;\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {WASM} from './wasm.js';\nimport {Emitter} from './utils/event.js';\nimport {fetchStreamWithProgress, fetchWithProgress, getBaseUrl} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Object3D,\n RayHit,\n Environment,\n ViewComponent,\n InputType,\n LogTag,\n} from './wonderland.js';\nimport {NumberArray} from './types.js';\nimport {Material} from './resources/material-manager.js';\nimport {InMemoryLoadOptions, Prefab, SceneLoadOptions} from './prefab.js';\nimport {GLTFExtensionsInstance, PrefabGLTF} from './scene-gltf.js';\n\nexport interface InstantiateResult {\n root: Object3D;\n}\n\nexport interface InstantiateGltfResult extends InstantiateResult {\n extensions: GLTFExtensionsInstance | null;\n}\n\n/** Options for scene activation. */\nexport interface ActivateOptions {\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n /**\n * If `true`, the promise will resolve only once all dependencies are downloaded.\n *\n * If `false`, resolves as soon as possible, e.g., when the lowest\n * resolution textures are available.\n */\n waitForDependencies?: boolean;\n /** @hidden */\n legacyLoaded?: boolean;\n}\n\n/**\n * Legacy gltf extension type.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadGLTF} API.\n */\nexport interface GLTFExtensionsLegacy {\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record>;\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\n/** Options for {@link Scene.append}. */\nexport interface SceneAppendParameters {\n /** Whether to load glTF extension data */\n loadGltfExtensions: boolean;\n baseURL: string | undefined;\n}\n\n/**\n * Result obtained when appending a scene with {@link Scene.append} with gltf extensions.\n */\nexport type SceneAppendResultWithExtensions = {\n root: Object3D | null;\n extensions: GLTFExtensionsLegacy;\n};\n\n/**\n * Result obtained when appending a scene with {@link Scene.append}.\n */\nexport type SceneAppendResult = (Object3D | null) | SceneAppendResultWithExtensions;\n\n/**\n * Constants\n */\n\n/** Magic number for .bin */\nconst MAGIC_BIN = 'WLEV';\n\n/**\n * Scene type to load with {@link ChunkedSceneLoadSink}.\n *\n * @since 1.2.1\n * @hidden\n */\nexport enum SceneType {\n Prefab,\n Main,\n Dependency,\n}\n\n/**\n * Sink for `WritableStream` that loads the data as a .bin file.\n *\n * Data is loaded chunk by chunk to minimize the total WASM allocation size.\n *\n * @since 1.2.1\n * @hidden\n */\nexport class ChunkedSceneLoadSink implements UnderlyingSink {\n readonly #wasm: WASM;\n readonly #type: SceneType;\n readonly #closeParameters: any[];\n #offset = 0;\n #requested = 0;\n #firstChunk = true;\n\n _loadIndex = -1;\n sceneIndex = -1;\n\n /** Pointer to the staging buffer. */\n #ptr: number = 0;\n /** Staging buffer size, in **bytes**. */\n #bufferSize: number = 0;\n\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Prefab, url: string);\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Main, url: string);\n /** @overload */\n constructor(\n engine: WonderlandEngine,\n type: SceneType.Dependency,\n url: string,\n dependentSceneIndex: number\n );\n /**\n * Constructor\n * @param engine Engine instance\n * @param type Type of scene to load\n * @param url URL for the scene creation. Can be empty.\n * @param closeParameters Parameters for the final function to be called\n * during a successful {@link ChunkedSceneLoadSink.close}.\n */\n constructor(\n engine: WonderlandEngine,\n type: SceneType,\n url: string,\n ...closeParameters: any[]\n ) {\n this.#wasm = engine.wasm;\n this.#type = type;\n this.#closeParameters = closeParameters;\n this._loadIndex = this.#wasm._wl_scene_create_chunked_start(\n this.#wasm.tempUTF8(url)\n );\n /* Initial buffer for the header chunk */\n this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex);\n this._resizeBuffer(this.#requested);\n }\n\n private _resizeBuffer(size: number) {\n if (this.#bufferSize > 0) {\n this.#wasm._free(this.#ptr);\n }\n this.#bufferSize = size;\n this.#ptr = size ? this.#wasm._malloc(size) : 0;\n }\n\n private _throwError(reason: string) {\n this.abort();\n throw new Error(reason);\n }\n\n /**\n * Write a single blob of data.\n *\n * @param blob Data to parse\n */\n write(blob: Uint8Array) {\n let read = 0;\n while (read < blob.length) {\n /* Fill the staging buffer */\n const toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset);\n /* **Do not** attempt to create a HEAP8 view here, since the next wasm call might\n * re-allocate the heap, making this view dangling. */\n this.#wasm.HEAPU8.set(\n blob.subarray(read, read + toRead),\n this.#ptr + this.#offset\n );\n this.#offset += toRead;\n read += toRead;\n\n /* Not enough data, wait for more */\n if (this.#requested > this.#offset) continue;\n\n /* Send data. This loads as many chunks as possible and then tells\n * us how much data it's missing, and how much it has read. The\n * read count allows us to move incomplete chunk data to the start\n * of the buffer. This is necessary because the buffer is allocated\n * with just enough data to hold the largest chunk. */\n const readSizePtr = this.#wasm._tempMem;\n const requestedPtr = this.#wasm._tempMem + 4;\n let success: boolean;\n try {\n success = this.#wasm._wl_scene_create_chunked_next(\n this._loadIndex,\n this.#ptr,\n this.#offset,\n readSizePtr,\n requestedPtr\n );\n } catch {\n /* Catch calls to abort(), e.g. via asserts */\n success = false;\n }\n\n if (!success) {\n this._throwError('Chunk parsing failed');\n }\n\n const sentSize = this.#offset;\n const readSize = this.#wasm._tempMemUint32[0];\n this.#requested = this.#wasm._tempMemUint32[1];\n const extraSize = sentSize - readSize;\n\n /* #requested == 0 signals end of .bin file */\n if (extraSize > this.#requested) {\n this._throwError('Unexpected extra data');\n }\n\n /* Not enough data for a chunk, wait for more */\n if (!readSize) continue;\n\n if (extraSize > 0) {\n /* We passed one or more complete chunks plus incomplete extra\n * data for the next chunk. Move it to the buffer start. */\n this.#wasm.HEAPU8.copyWithin(\n this.#ptr,\n this.#ptr + readSize,\n this.#ptr + sentSize\n );\n }\n\n this.#offset = extraSize;\n\n if (this.#firstChunk) {\n /* First chunk is the header. At this point we can query for\n * the required buffer size for parsing the rest of the .bin.\n * The initial buffer is exactly the size of the header chunk\n * so #offset should be 0 here since we sent a complete chunk. */\n this._resizeBuffer(\n this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)\n );\n this.#firstChunk = false;\n }\n }\n }\n\n /** Called when all blobs of data have been written */\n close() {\n if (this.#requested > 0) {\n this._throwError('Unexpected end of data');\n }\n\n this._resizeBuffer(0);\n switch (this.#type) {\n case SceneType.Prefab:\n this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(\n this._loadIndex\n );\n break;\n case SceneType.Main:\n this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex);\n this.sceneIndex = 0;\n break;\n case SceneType.Dependency:\n [this.sceneIndex] = this.#closeParameters;\n this.#wasm._wl_scene_create_chunked_end_queued(\n this._loadIndex,\n this.sceneIndex\n );\n break;\n default:\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n break;\n }\n this._loadIndex = -1;\n }\n\n /** Called when the stream is aborted */\n abort() {\n if (this._loadIndex === -1) return;\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n this._loadIndex = -1;\n this._resizeBuffer(0);\n }\n\n /** Staging buffer size */\n get size() {\n return this.#bufferSize;\n }\n}\n\n/**\n * Wonderland Engine (.bin) scene.\n *\n * Wonderland Engine packages two types of scene:\n * - Activatable scene: Contains objects, components, views, resources, and rendering data\n * - Streamable scene: Contains objects, components, and resources\n *\n * #### Activation\n *\n * Some scenes are **activatable**, they can thus be attached to the renderer\n * to be updated and rendered on the canvas.\n *\n * For more information, have a look at the {@link WonderlandEngine.switchTo} method.\n *\n * #### Instantiation\n *\n * Besides activation, a scene can instantiate the content of another scene.\n *\n * For more information, have a look at the {@link Scene#instantiate} method.\n *\n * @category scene\n */\nexport class Scene extends Prefab {\n /** Called before rendering the scene */\n readonly onPreRender = new Emitter();\n /** Called after the scene has been rendered */\n readonly onPostRender = new Emitter();\n\n /** Ray hit pointer in WASM heap. @hidden */\n private _rayHit: number;\n /** Ray hit. @hidden */\n private _hit: RayHit;\n\n /** @hidden */\n private _environment: Environment;\n\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n /** `this.engine?` is used for testing. */\n this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(this, this._rayHit);\n this._environment = new Environment(this);\n }\n\n /** @overload */\n instantiate(scene: PrefabGLTF): InstantiateGltfResult;\n /**\n * Instantiate `scene` into this instance.\n *\n * Any scene can be instantiated into one another. It's thus possible\n * to instantiate a {@link PrefabGLTF} into this instance, or another\n * {@link Scene} instance.\n *\n * #### Usage\n *\n * ```js\n * const prefabScene = await engine.loadScene('Prefab.bin');\n * // Instantiate `prefabScene` into `scene`\n * engine.scene.instantiate(prefabScene);\n * ```\n *\n * #### Shared Resources\n *\n * Instantiating **does not** duplicate resources. Each instance will\n * reference the same assets stored in the {@link Scene}, e.g.,\n *\n * ```js\n * // `zombie` has one mesh and one material\n * const zombie = await engine.loadScene('Zombie.bin');\n *\n * for (let i = 0; i < 100; ++i) {\n * engine.scene.instantiate(zombie);\n * }\n *\n * console.log(engine.meshes.count) // Prints '1'\n * console.log(engine.materials.count) // Prints '1'\n * ```\n *\n * #### glTF extensions\n *\n * Instantiating a prefab loaded from a .glb automatically retargets the extensions\n * to the created hierarchy:\n *\n * ```js\n * const gltf = await engine.loadGLTF({url: 'Model.glb', extensions: true});\n * const {root, extensions} = engine.scene.instantiate(gltf);\n *\n * // Retrieve Object3D instance from extension nodes list\n * for (const key in extensions.node) {\n * const object3d = engine.scene.wrap(extensions.node[key]);\n * }\n * ```\n *\n * @param scene The scene to instantiate.\n * @returns An object containing the instantiated root {@link Object3D}.\n * When a glTF is instantiated, the result can contain extra metadata.\n * For more information, have a look at the {@link InstantiateResult} type.\n *\n * @since 1.2.0\n */\n instantiate(prefab: Prefab): InstantiateResult;\n instantiate(prefab: Prefab): InstantiateResult {\n if (prefab._index === this._index) {\n throw new Error(\"Can't instantiate scene into itself\");\n }\n\n const wasm = this.engine.wasm;\n const id = wasm._wl_scene_instantiate(prefab._index, this._index);\n\n const result: InstantiateResult = {root: this.wrap(id)};\n if (prefab instanceof PrefabGLTF) {\n const obj = this.wrap(id);\n prefab._processInstantiaton(this, obj, result as InstantiateGltfResult);\n }\n return result;\n }\n\n /** @todo: Add `instantiateBatch` to instantiate multiple chunks in a row. */\n\n /**\n * @todo Provide an API to delete all resources linked to a scene.\n *\n * Example:\n *\n * ```ts\n * const scene = await engine.loadScene('Scene.bin');\n * ...\n * scene.destroy({removeResources: true});\n * ```\n */\n\n /**\n * Destroy this scene and remove it from the engine.\n *\n * @note Destroying a scene **doesn't** remove the materials, meshes,\n * and textures it references in the engine. Those should be cleaned up either by loading\n * another main scene via {@link WonderlandEngine.loadMainScene}, or manually using {@link Mesh.destroy}.\n *\n * @throws If the scene is currently active.\n * */\n destroy() {\n if (this.isActive) {\n throw new Error(\n `Attempt to destroy ${this}, but destroying the active scene is not supported`\n );\n }\n\n /* Store before calling `super.destroy()` since the call\n * might destroy entirely the prototype. */\n const wasm = this.engine.wasm;\n const rayPtr = this._rayHit;\n\n super.destroy();\n\n wasm._free(rayPtr);\n }\n\n /**\n * View components.\n */\n get views(): ViewComponent[] {\n return this._components.components(ViewComponent, false);\n }\n\n /**\n * Active view components.\n */\n get activeViews(): ViewComponent[] {\n return this._components.components(ViewComponent, true);\n }\n\n /**\n * Main view.\n */\n get mainView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_mainView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Left eye view.\n */\n get leftEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_leftView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Right eye view.\n */\n get rightEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_rightView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Set input transformation.\n *\n * @hidden\n */\n _setInputTransformation(\n type: InputType,\n position: Readonly,\n orientation: Readonly\n ) {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(4 * 2 * 4);\n wasm._tempMemFloat.set(position);\n wasm._tempMemFloat.set(orientation, 4);\n wasm._wl_input_set_transformation(this._index, type, wasm._tempMem);\n }\n\n /**\n * Cast a ray through the scene and find intersecting collision components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.scene.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of collision groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Scene}\n * instance and will be reused with the next {@link Scene#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance = 100.0\n ): RayHit {\n this.engine.wasm._wl_scene_ray_cast(\n this._index,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n this._rayHit,\n maxDistance\n );\n return this._hit;\n }\n\n /**\n * Set the background clear color.\n *\n * @param color new clear color (RGBA).\n * @since 0.8.5\n */\n set clearColor(color: number[]) {\n this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]);\n }\n\n /**\n * Set whether to clear the color framebuffer before drawing.\n *\n * This function is useful if an external framework (e.g. an AR tracking\n * framework) is responsible for drawing a camera frame before Wonderland\n * Engine draws the scene on top of it.\n *\n * @param b Whether to enable color clear.\n * @since 0.9.4\n */\n set colorClearEnabled(b: boolean) {\n this.engine.wasm._wl_scene_enableColorClear(b);\n }\n\n /**\n * Load a scene file (.bin).\n *\n * Will replace the currently active scene with the one loaded\n * from given file. It is assumed that JavaScript components required by\n * the new scene were registered in advance.\n *\n * Once the scene is loaded successfully and initialized,\n * {@link WonderlandEngine.onSceneLoaded} is notified.\n *\n * #### ArrayBuffer\n *\n * The `load()` method accepts an in-memory buffer:\n *\n * ```js\n * scene.load({\n * buffer: new ArrayBuffer(...),\n * baseURL: 'https://my-website/assets'\n * })\n * ```\n *\n * @note The `baseURL` is mandatory. It's used to fetch images and languages.\n *\n * Use {@link Scene.setLoadingProgress} to update the loading progress bar\n * when using an ArrayBuffer.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadMainScene} API.\n *\n * @param options Path to the file to load, or an option object.\n * For more information about the options, see the {@link SceneLoadOptions} documentation.\n * @returns Promise that resolves when the scene was loaded.\n */\n async load(options: string | SceneLoadOptions): Promise {\n const engine = this.engine;\n\n /** @todo(2.0.0): Remove this method. */\n let dispatchReadyEvent = false;\n let opts: InMemoryLoadOptions;\n if (isString(options)) {\n opts = await Scene.loadBuffer(options, (bytes: number, size: number) => {\n this.engine.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.engine.setLoadingProgress(bytes / size);\n });\n } else {\n opts = options;\n dispatchReadyEvent = options.dispatchReadyEvent ?? false;\n }\n\n const scene = await engine.loadMainSceneFromBuffer({\n ...opts,\n dispatchReadyEvent,\n });\n /* Do not use `this`, since `loadMainScene` will destroy it.\n * `erasePrototypeOnDestroy` would make this instance unusable. */\n engine.onSceneLoaded.notify();\n return scene;\n }\n\n /**\n * Append a scene file.\n *\n * Loads and parses the file and its images and appends the result\n * to the currently active scene.\n *\n * Supported formats are streamable Wonderland scene files (.bin) and glTF\n * 3D scenes (.gltf, .glb).\n *\n * ```js\n * WL.scene.append(filename).then(root => {\n * // root contains the loaded scene\n * });\n * ```\n *\n * In case the `loadGltfExtensions` option is set to true, the response\n * will be an object containing both the root of the loaded scene and\n * any glTF extensions found on nodes, meshes and the root of the file.\n *\n * ```js\n * WL.scene.append(filename, { loadGltfExtensions: true }).then(({root, extensions}) => {\n * // root contains the loaded scene\n * // extensions.root contains any extensions at the root of glTF document\n * const rootExtensions = extensions.root;\n * // extensions.mesh and extensions.node contain extensions indexed by Object id\n * const childObject = root.children[0];\n * const meshExtensions = root.meshExtensions[childObject.objectId];\n * const nodeExtensions = root.nodeExtensions[childObject.objectId];\n * // extensions.idMapping contains a mapping from glTF node index to Object id\n * });\n * ```\n *\n * If the file to be loaded is located in a subfolder, it might be useful\n * to define the `baseURL` option. This will ensure any bin files\n * referenced by the loaded bin file are loaded at the correct path.\n *\n * ```js\n * WL.scene.append(filename, { baseURL: 'scenes' }).then(({root, extensions}) => {\n * // do stuff\n * });\n * ```\n *\n * @deprecated Use the new {@link Prefab} and {@link Scene} API.\n *\n * @param file The .bin, .gltf or .glb file to append. Should be a URL or\n * an `ArrayBuffer` with the file content.\n * @param options Additional options for loading.\n * @returns Promise that resolves when the scene was appended.\n */\n async append(\n file: string | ArrayBuffer,\n options: Partial = {}\n ): Promise {\n /** @todo(2.0.0): Remove this method. */\n\n const {baseURL = isString(file) ? getBaseUrl(file) : this.baseURL} = options;\n\n const buffer = isString(file) ? await fetchWithProgress(file) : file;\n const data = new Uint8Array(buffer);\n const isBinFile =\n data.byteLength > MAGIC_BIN.length &&\n data\n .subarray(0, MAGIC_BIN.length)\n .every((value, i) => value === MAGIC_BIN.charCodeAt(i));\n\n const scene = isBinFile\n ? this.engine.loadPrefabFromBuffer({buffer, baseURL})\n : this.engine.loadGLTFFromBuffer({\n buffer,\n baseURL,\n extensions: options.loadGltfExtensions,\n });\n\n const result = this.instantiate(scene)!;\n if (scene instanceof PrefabGLTF) {\n if (!scene.extensions) return result.root;\n return {\n root: result.root,\n extensions: {\n ...(result as InstantiateGltfResult).extensions,\n root: scene.extensions.root,\n },\n } as SceneAppendResultWithExtensions;\n }\n\n scene.destroy();\n return result.root;\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @deprecated Use {@link WonderlandEngine.setLoadingProgress}.\n */\n setLoadingProgress(percentage: number) {\n this.engine.setLoadingProgress(percentage);\n }\n\n /**\n * Dispatch an event 'wle-scene-ready' in the document.\n *\n * @note This is used for automatic testing.\n */\n dispatchReadyEvent() {\n document.dispatchEvent(\n new CustomEvent('wle-scene-ready', {\n detail: {filename: this.filename},\n })\n );\n }\n\n /**\n * Set the current material to render the sky.\n *\n * @note The sky needs to be enabled in the editor when creating the scene.\n * For more information, please refer to the background [tutorial](https://wonderlandengine.com/tutorials/background-effect/).\n */\n set skyMaterial(material: Material | null) {\n this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0);\n }\n\n /** Current sky material, or `null` if no sky is set. */\n get skyMaterial(): Material | null {\n const index = this.engine.wasm._wl_scene_get_sky_material(this._index);\n return this.engine.materials.wrap(index);\n }\n\n /**\n * Environment lighting properties.\n *\n * @since 1.2.3\n */\n get environment(): Environment {\n return this._environment;\n }\n\n /**\n * Relative url to the js components bundle\n *\n * Returns `null` if the scene was built without a components bundle.\n */\n get componentsBundle(): string | null {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_componentsBundle(this._index);\n return ptr ? wasm.UTF8ToString(ptr) : null;\n }\n\n /**\n * Reset the scene.\n *\n * This method deletes all used and allocated objects, and components.\n *\n * @deprecated Load a new scene and activate it instead.\n */\n reset() {\n /** @todo(2.0.0): Remove this method. */\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependency(url: string) {\n const sink = new ChunkedSceneLoadSink(\n this.engine,\n SceneType.Dependency,\n url,\n this._index\n );\n const stream = await fetchStreamWithProgress(url);\n return stream.pipeTo(new WritableStream(sink));\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependencies() {\n const wasm = this.engine.wasm;\n\n const count = wasm._wl_scene_queued_bin_count(this._index);\n if (!count) return Promise.resolve();\n\n const urls = new Array(count).fill(0).map((_, i: number) => {\n const ptr = wasm._wl_scene_queued_bin_path(this._index, i);\n const url = wasm.UTF8ToString(ptr);\n return url;\n });\n\n wasm._wl_scene_clear_queued_bin_list(this._index);\n\n return Promise.all(urls.map((url: string) => this._downloadDependency(url)));\n }\n}\n", "import {\n Component,\n ComponentConstructor,\n Object as Object3D,\n Physics,\n I18N,\n MorphTargets,\n Texture,\n Font,\n DestroyedPrefabInstance,\n ParticleEffect,\n} from './wonderland.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {isString} from './utils/object.js';\nimport {APIVersion, Version} from './version.js';\nimport {WASM} from './wasm.js';\nimport {Logger} from './utils/logger.js';\nimport {clamp} from './utils/misc.js';\nimport {MaterialManager} from './resources/material-manager.js';\nimport {MeshManager} from './resources/mesh-manager.js';\nimport {ResourceManager} from './resources/resource.js';\nimport {needsFlipY, TextureManager} from './resources/texture-manager.js';\nimport {LogTag} from './wonderland.js';\nimport {Constructor, ImageLike, ProgressCallback} from './types.js';\nimport {XRSessionState, WebXR} from './webxr.js';\nimport {Prefab, InMemoryLoadOptions, LoadOptions, StreamLoadOptions} from './prefab.js';\nimport {Scene, ActivateOptions, ChunkedSceneLoadSink, SceneType} from './scene.js';\nimport {PrefabGLTF, GLTFOptions} from './scene-gltf.js';\nimport {ArrayBufferSource, onImageReady} from './utils/fetch.js';\n\n/**\n * Ensures that this API is compatible with the given\n * runtime version.\n *\n * We only enforce compatibility for major and minor components, i.e.,\n * the runtime and the API must both be of the form `x.y.*`.\n *\n * @throws If the major or the minor components are different.\n *\n * @param version The target version\n */\nexport function checkRuntimeCompatibility(version: Version) {\n const {major, minor} = version;\n\n let majorDiff = major - APIVersion.major;\n let minorDiff = minor - APIVersion.minor;\n /* Same version, so perfectly compatible. */\n if (!majorDiff && !minorDiff) return;\n\n const error =\n 'checkRuntimeCompatibility(): Version compatibility mismatch:\\n' +\n '\\t\u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*)\\n';\n\n const isRuntimeOlder = majorDiff < 0 || (!majorDiff && minorDiff < 0);\n if (isRuntimeOlder) {\n /* Runtime is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`\n );\n }\n /* API is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a new API version >= ${version.major}.${version.minor}.*`\n );\n}\n\n/**\n * Reload the browser tab.\n *\n * @note This method first ensures the XR session is terminated,\n * to avoid blocking the Oculus Quest page.\n *\n * @param engine The engine instance\n */\nfunction reloadPage(engine: WonderlandEngine) {\n /* End XR session for Oculus Quest blocking reload otherwise */\n const session = engine.xr?.session ?? null;\n if (!session) {\n location.reload();\n return;\n }\n session.end().then(() => location.reload());\n}\n\n/**\n * Main Wonderland Engine instance.\n *\n * Controls the canvas, rendering, and JS <-> WASM communication.\n */\nexport class WonderlandEngine {\n /**\n * {@link Emitter} for WebXR session end events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionEnd.add(() => console.log(\"XR session ended.\"));\n * ```\n */\n get onXRSessionEnd(): Emitter {\n return this.#webxr.onSessionEnd;\n }\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionStart.add((session, mode) => console.log(session, mode));\n * ```\n *\n * By default, this emitter is retained and will automatically call any callback added\n * while a session is already started:\n *\n * ```js\n * // XR session is already active.\n * this.engine.onXRSessionStart.add((session, mode) => {\n * console.log(session, mode); // Triggered immediately.\n * });\n * ```\n */\n get onXRSessionStart(): Emitter<[XRSession, XRSessionMode]> {\n return this.#webxr.onSessionStart;\n }\n\n /**\n * {@link Emitter} for canvas / main framebuffer resize events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onResize.add(() => {\n * const canvas = this.engine.canvas;\n * console.log(`New Size: ${canvas.width}, ${canvas.height}`);\n * });\n * ```\n *\n * @note The size of the canvas is in physical pixels, and is set via {@link WonderlandEngine.resize}.\n */\n readonly onResize: Emitter = new Emitter();\n\n /** Whether AR is supported by the browser. */\n get arSupported(): boolean {\n return this.#webxr.arSupported;\n }\n\n /** Whether VR is supported by the browser. */\n get vrSupported(): boolean {\n return this.#webxr.vrSupported;\n }\n\n /**\n * {@link RetainEmitter} signalling the end of the loading screen.\n *\n * Listeners get notified when the first call to {@link Scene#load()} is\n * invoked. At this point the new scene has not become active, and none of\n * its resources or components are initialized.\n *\n * Compared to {@link onSceneLoaded}, this does not wait for all components\n * to be fully initialized and activated. Any handler added inside\n * {@link Component#init()}, {@link Component#start()} or\n * {@link Component#onActivate()} will be called immediately.\n *\n * Usage:\n *\n * ```js\n * this.engine.onLoadingScreenEnd.add(() => console.log(\"Wait is over!\"));\n * ```\n */\n readonly onLoadingScreenEnd = new RetainEmitter();\n\n /**\n * {@link Emitter} for scene loaded events.\n *\n * Listeners get notified when a call to {@link Scene#load()} finishes. At\n * this point all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneLoaded.add(() => console.log(\"Scene switched!\"));\n * ```\n *\n * @deprecated Use {@link onSceneActivated} instead.\n */\n readonly onSceneLoaded = new Emitter();\n\n /**\n * {@link Emitter} for scene activated events.\n *\n * This listener is notified with the old scene as first parameter, and\n * the new scene as second.\n *\n * This listener is notified after all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneActivated.add((oldScene, newScene) => {\n * console.log(`Scene switch from ${oldScene.filename} to ${newScene.filename}`);\n * });\n * ```\n */\n readonly onSceneActivated = new Emitter<[Scene, Scene]>();\n\n /**\n * Triggered when a hot reload is requested.\n *\n * When using the Wonderland Editor, this will be triggered when packaging\n * the project.\n *\n * @note When {@link autoHotReload} is `true`, the emitter is notified after the\n * scene is reloaded.\n *\n * To customize the hot reload behavior, set the {@link autoHotReload} to `false`,\n * and use this emitter:\n *\n * ```js\n * this.engine.onHotReloadRequest.add(async (filename: string) => {\n * // This handler can be used to re-download a scene, download components,\n * // fetch an API, anything!\n * await this.loadMainScene(filename);\n * });\n * ```\n */\n readonly onHotReloadRequest: Emitter<[string]> = new Emitter();\n\n /**\n * Access to internationalization.\n */\n readonly i18n: I18N = new I18N(this);\n\n /**\n * WebXR related state, `null` if no XR session is active.\n */\n get xr(): XRSessionState | null {\n return this.#webxr.sessionState;\n }\n\n /**\n * If `true`, {@link Texture}, {@link Object3D}, and {@link Component}\n * instances have their prototype erased upon destruction.\n *\n * #### Object\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = engine.scene.addObject();\n * obj.name = 'iamalive';\n * console.log(obj.name); // Prints 'iamalive'\n *\n * obj.destroy();\n * console.log(obj.name); // Throws an error\n * ```\n *\n * #### Component\n *\n * Components will also be affected:\n *\n * ```js\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * alive: Property.bool(true)\n * };\n *\n * start() {\n * this.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * A component is also destroyed if its ancestor gets destroyed:\n *\n * ```js\n * class MyComponent extends Component {\n * ...\n * start() {\n * this.object.parent.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * @note Native components will not be erased if destroyed via object destruction:\n *\n * ```js\n * const mesh = obj.addComponent('mesh');\n * obj.destroy();\n * console.log(mesh.active) // Doesn't throw even if the mesh is destroyed\n * ```\n *\n * @since 1.1.1\n */\n erasePrototypeOnDestroy = false;\n\n /**\n * If `true`, the materials will be wrapped in a proxy to support pre-1.2.0\n * material access, i.e.,\n *\n * ```js\n * const material = new Material(engine, 'Phong Opaque');\n * material.diffuseColor = [1.0, 0.0, 0.0, 1.0];\n * ```\n *\n * If `false`, property accessors will not be available and material\n * properties should be accessed via methods, i.e.,\n *\n * ```js\n * const PhongOpaque = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongOpaque();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ...\n * const diffuse = material.getDiffuseColor();\n * ```\n *\n * When disabled, reading/writing to materials is slightly more efficient on the CPU.\n */\n legacyMaterialSupport = true;\n\n /**\n * If `true`, automatically reloads the scene sent by the editor socket.\n *\n * @note The {@link onHotReloadRequest} emitter is notified **after** the scene is re-loaded.\n *\n * To use custom hot-reload code, set this boolean to `false` and add the reloading code\n *\n */\n autoHotReload = true;\n\n /**\n * If `true`, uncompressed images will be automatically converted\n * to `ImageBitmap` before upload to the GPU.\n *\n * For more information, have a look at the\n * [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) documentation.\n */\n loadUncompressedImagesAsBitmap = false;\n\n /**\n * Scene cache in scene manager.\n *\n * @hidden\n */\n _scenes: (Prefab | null)[] = [];\n\n /**\n * Currently active scene.\n *\n * @hidden\n */\n _scene: Scene;\n\n /** Incremented every time a new main scene is loaded. */\n _mainSceneVersion: number = 0;\n\n /** @hidden */\n private _textures!: TextureManager;\n /** @hidden */\n private _materials!: MaterialManager;\n /** @hidden */\n private _meshes!: MeshManager;\n /** @hidden */\n private _morphTargets!: ResourceManager;\n /** @hidden */\n private _fonts!: ResourceManager;\n /** @hidden */\n private _particleEffects!: ResourceManager;\n /**\n * Current loading uncompressed images.\n *\n * @note Indexed by js image index.\n *\n * @hidden\n */\n private _uncompressedPromises: Promise[] = [];\n\n /**\n * WebAssembly bridge.\n *\n * @hidden\n */\n #wasm: WASM;\n\n /**\n * Physics manager, only available when physx is enabled in the runtime.\n *\n * @hidden\n */\n #physics: Physics | null = null;\n\n /**\n * WebXR library.\n *\n * @hidden\n */\n #webxr: WebXR;\n\n /**\n * Resize observer to track for canvas size changes.\n *\n * @hidden\n */\n #resizeObserver: ResizeObserver | null = null;\n\n /**\n * Whether a components bundle has already been loaded or not.\n *\n * @hidden\n */\n #bundleCache: Set = new Set();\n\n /**\n * Create a new engine instance.\n *\n * @param wasm Wasm bridge instance\n * @param loadingScreen Loading screen .bin file data\n *\n * @hidden\n */\n constructor(wasm: WASM, loadingScreen: ArrayBuffer | null, withRenderer: boolean) {\n this.#wasm = wasm;\n this.#wasm['_setEngine'](this); /* String lookup to bypass private. */\n this.#wasm._loadingScreen = loadingScreen;\n\n const version = this.runtimeVersion;\n let versionString = `${version.major}.${version.minor}.${version.patch}`;\n if (version.rc > 0) {\n versionString += `-rc${version.rc}`;\n }\n this.log.info(LogTag.Engine, 'Wonderland Engine runtime version:', versionString);\n\n this.#webxr = new WebXR(this);\n\n checkRuntimeCompatibility(this.#wasm.runtimeVersion);\n\n /* Setup the error handler. This is used to to manage native errors. */\n this.#wasm._wl_set_error_callback(\n this.#wasm.addFunction((messagePtr: number) => {\n throw new Error(this.#wasm.UTF8ToString(messagePtr));\n }, 'vi')\n );\n\n this.#wasm._wl_application_create();\n\n this.#physics = null;\n\n if (this.#wasm.withPhysX) {\n this.#physics = new Physics(this);\n }\n\n this._init(withRenderer);\n\n this._scene = this._reload(0);\n\n this.canvas.addEventListener(\n 'webglcontextlost',\n (e) => this.log.error(LogTag.Engine, 'Context lost:', e),\n false\n );\n }\n\n /**\n * Start the engine if it's not already running.\n *\n * When using the {@link loadRuntime} function, this method is called\n * automatically.\n */\n start(): void {\n this.wasm._wl_application_start();\n }\n\n /**\n * Register a custom JavaScript component type.\n *\n * You can register a component directly using a class inheriting from {@link Component}:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myParam: {type: Type.Float, default: 42.0},\n * };\n * init() {}\n * start() {}\n * update(dt) {}\n * onActivate() {}\n * onDeactivate() {}\n * onDestroy() {}\n * });\n *\n * // Here, we assume we have an engine already instantiated.\n * // In general, the registration occurs in the `index.js` file in your\n * // final application.\n * engine.registerComponent(MyComponent);\n * ```\n *\n * {@label CLASSES}\n * @param classes Custom component(s) extending {@link Component}.\n *\n * @since 1.0.0\n */\n registerComponent(...classes: ComponentConstructor[]) {\n for (const arg of classes) {\n this.wasm._registerComponent(arg);\n }\n }\n\n /**\n * Register a component bundle\n *\n * The module must be of the form:\n *\n * ```js\n * export default function(engine) {\n * engine.registerComponent(MyComponent);\n * ...\n * }\n * ```\n *\n * Alternatively, you can manually register a component bundle:\n *\n * ```js\n * const registerBundle = (await import(url)).default;\n * registerBundle(engine);\n * ```\n *\n * @param url The URL of the module to register.\n * @param nocache If `true`, force browser to re-download the file.\n */\n async registerBundle(url: string, nocache = false) {\n if (!nocache && this.#bundleCache.has(url)) return;\n this.#bundleCache.add(url);\n\n if (nocache) url += `?t=${Date.now()}`;\n const register = (await import(url)).default;\n if (typeof register !== 'function') {\n throw new Error(\n `The bundle '${url}' doesn't have a default exported registration function`\n );\n }\n register(this);\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @since 1.2.1\n */\n setLoadingProgress(percentage: number) {\n this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1));\n }\n\n /**\n * Switch the current active scene.\n *\n * Once active, the scene will be updated and rendered on the canvas.\n *\n * The currently active scene is accessed via {@link WonderlandEngine.scene}:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * start() {\n * console.log(this.scene === this.engine.scene); // Prints `true`\n * }\n * }\n * ```\n *\n * @note This method will throw if the scene isn't activatable.\n *\n * #### Component Lifecycle\n *\n * Marking a scene as active will:\n * * Call {@link Component#onDeactivate} for all active components of the previous scene\n * * Call {@link Component#onActivate} for all active components of the new scene\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * engine.switchTo(scene);\n * ```\n *\n * @returns A promise that resolves once the scene is ready.\n *\n * @since 1.2.0\n */\n async switchTo(scene: Scene, opts: ActivateOptions = {}) {\n this.wasm._wl_deactivate_activeScene();\n\n /* Switch reference on engine **just** before activating, to allow\n * component to use `this.engine.scene` in `onActivate()`/`start()`. */\n const previous = this.scene;\n this._preactivate(scene);\n\n this.wasm._wl_scene_activate(scene._index);\n\n /* Enable/disable required views */\n this.#webxr.updateViewState(undefined);\n\n /* We loaded new views, update WebXR projection parameters */\n this.#webxr.updateProjectionParams(undefined, undefined);\n\n if (!this.onLoadingScreenEnd.isDataRetained) {\n this.onLoadingScreenEnd.notify();\n }\n\n /* For now, we always automatically download dependencies for\n * the user, i.e., separate textures.bin and languages.bin.\n *\n * In the future, we can eventually expose this in the chunk API\n * to give more control to the user if needed.\n *\n * We do not make the user wait until the textures download is complete. */\n const promise = scene._downloadDependencies();\n\n await this.i18n.setLanguage(this.i18n.languageCode(0));\n\n const {dispatchReadyEvent = false, waitForDependencies = false} = opts;\n\n if (waitForDependencies) await promise;\n\n this.onSceneActivated.notify(previous, scene);\n\n if (dispatchReadyEvent) scene.dispatchReadyEvent();\n }\n\n /**\n * Load the scene from a URL, as the main scene of a new {@link Scene}.\n *\n * #### Usage\n *\n * ```js\n * // The method returns the main scene\n * const scene = await engine.loadMainScene();\n * ```\n *\n * #### Destruction\n *\n * Loading a new main scene entirely resets the state of the engine, and destroys:\n * - All loaded scenes, prefabs, and gltf files\n * - Meshes\n * - Textures\n * - Materials\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback. When setting a custom\n * callback, you need to manually call {@link setLoadingProgress} to\n * get progress updates in the loading screen.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainScene(\n options: LoadOptions & ActivateOptions,\n progress?: ProgressCallback\n ) {\n /**\n * @todo: It's currently possible to put the runtime in a limbo\n * state using hot-reload: Multiple reload requests are sent, and scene loading\n * ends up being interleaved.\n *\n * Add a system to cancel the last loading, if any.\n */\n\n progress ??= (bytes: number, size: number) => {\n this.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.setLoadingProgress(bytes / size);\n };\n\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true, nocache = false} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const {stream, url} = Prefab.validateStreamOptions(options);\n return this._loadMainScene(stream, url, nocache, options as ActivateOptions);\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadMainSceneFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadMainScene}, but loading is done\n * from an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainSceneFromBuffer(options: InMemoryLoadOptions & ActivateOptions) {\n const {nocache = false} = options;\n const {buffer, url} = Prefab.validateBufferOptions(options);\n return this._loadMainScene(buffer, url, nocache, options);\n }\n\n /**\n * Load a {@link Prefab} from a URL.\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadPrefab('Prefab.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n * @note This method is a wrapper around {@link WonderlandEngine.loadPrefabFromBuffer}.\n *\n * @param url The URL pointing to the prefab to load.\n * @param progress Optional progress callback.\n * @returns The loaded {@link Prefab}.\n */\n async loadPrefab(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadPrefabFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadPrefab}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Prefab}.\n */\n loadPrefabFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Load a scene from a URL.\n *\n * At the opposite of {@link WonderlandEngine.loadMainScene}, the scene loaded\n * will be added to the list of existing scenes, and its resources will be made\n * available for other scenes/prefabs/gltf to use.\n *\n * #### Resources Sharing\n *\n * Upon loading, the scene resources are added in the engine, and references\n * to those resources are updated.\n *\n * It's impossible for a scene loaded with this method to import pipelines.\n * Thus, the loaded scene will reference existing pipelines in the main scene,\n * based on their names.\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link Scene}.\n */\n async loadScene(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadSceneFromBuffer(options);\n }\n }\n\n /**\n * Create a glTF scene from a URL.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @note This method is a wrapper around {@link WonderlandEngine.loadGLTFFromBuffer}.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options, optionally including\n * {@link GLTFOptions}. {@link LoadOptions.streamed} is ignored as\n * streamed glTF parsing isn't supported.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n async loadGLTF(opts: LoadOptions & GLTFOptions, progress?: ProgressCallback) {\n const memOptions = await Scene.loadBuffer(opts, progress);\n const options = isString(opts) ? memOptions : {...opts, ...memOptions};\n return this.loadGLTFFromBuffer(options);\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadScene}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @throws If the scene is streamable.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Scene}.\n */\n loadSceneFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadGLTF}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @param options An object containing the buffer and extra glTF metadata.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n loadGLTFFromBuffer(options: InMemoryLoadOptions & GLTFOptions) {\n Scene.validateBufferOptions(options);\n const {buffer, extensions = false} = options;\n\n const wasm = this.wasm;\n\n if (!wasm._wl_glTF_scene_create) {\n throw new Error(\n 'Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings.'\n );\n }\n\n const ptr = wasm.copyBufferToHeap(buffer);\n\n try {\n const index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength);\n const scene = new PrefabGLTF(this, index);\n this._scenes[scene._index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n if (this.runtimeVersion.patch) {\n this._loadUncompressedImages(scene._index);\n }\n return scene;\n } finally {\n /* Catch calls to abort(), e.g. via asserts */\n wasm._free(ptr);\n }\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param typeOrClass A string representing the component typename (e.g., `'cursor-component'`),\n * or a component class (e.g., `CursorComponent`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(typeOrClass: string | ComponentConstructor) {\n return this.#wasm.isRegistered(\n isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName\n );\n }\n\n /**\n * Retrieve the registered component from its type name.\n *\n * @param typename The component {@link Component.TypeName} property\n * @returns The class if a component was registered with given name, `null` otherwise.\n */\n getComponentClass(\n typename: string\n ): ComponentConstructor | null {\n const index = this.wasm._componentTypeIndices[typename];\n if (index === undefined) return null;\n return this.wasm._componentTypes[index] as ComponentConstructor;\n }\n\n /**\n * Resize the canvas and the rendering context.\n *\n * @note The `width` and `height` parameters will be scaled by the\n * `devicePixelRatio` value. By default, the pixel ratio used is\n * [window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n *\n * @param width The width, in CSS pixels.\n * @param height The height, in CSS pixels.\n * @param devicePixelRatio The pixel ratio factor.\n */\n resize(width: number, height: number, devicePixelRatio = window.devicePixelRatio) {\n width = width * devicePixelRatio;\n height = height * devicePixelRatio;\n this.canvas.width = width;\n this.canvas.height = height;\n this.wasm._wl_application_resize(width, height);\n this.onResize.notify();\n }\n\n /**\n * Run the next frame.\n *\n * @param fixedDelta The elapsed time between this frame and the previous one.\n *\n * @note The engine automatically schedules next frames. You should only\n * use this method for testing.\n */\n nextFrame(fixedDelta: number = 0) {\n this.#wasm._wl_nextFrame(fixedDelta);\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.requestSession(mode, features, optionalFeatures);\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.offerSession(mode, features, optionalFeatures);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n * @returns The object\n *\n * @deprecated Use {@link Scene#wrap} instead.\n *\n */\n wrapObject(objectId: number): Object3D {\n return this.scene.wrap(objectId);\n }\n\n toString() {\n return 'engine';\n }\n\n /* Public Getters & Setter */\n\n /** Currently active scene. */\n get scene(): Scene {\n return this._scene;\n }\n\n /**\n * WebAssembly bridge.\n *\n * @note Use with care. This object is used to communicate\n * with the WebAssembly code throughout the api.\n *\n * @hidden\n */\n get wasm(): WASM {\n return this.#wasm;\n }\n\n /**\n * WebXR api.\n *\n * @hidden\n */\n get webxr(): WebXR {\n return this.#webxr;\n }\n\n /** Canvas element that Wonderland Engine renders to. */\n get canvas(): HTMLCanvasElement {\n return this.#wasm.canvas;\n }\n\n /**\n * Current WebXR session or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.session} on the {@link xr}\n * object instead.\n */\n get xrSession(): XRSession | null {\n return this.xr?.session ?? null;\n }\n\n /**\n * Current WebXR frame or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.frame} on the {@link xr}\n * object instead.\n */\n get xrFrame(): XRFrame | null {\n return this.xr?.frame ?? null;\n }\n\n /**\n * Current WebXR base layer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.baseLayer} on the {@link xr}\n * object instead.\n */\n get xrBaseLayer(): XRProjectionLayer | XRWebGLLayer | null {\n return this.xr?.baseLayer ?? null;\n }\n\n /**\n * Current WebXR framebuffer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.framebuffers} on the {@link xr}\n * object instead.\n */\n get xrFramebuffer(): WebGLFramebuffer | null {\n return this.xr?.framebuffers[0] ?? null;\n }\n\n /**\n * WebXR framebuffer scale factor.\n */\n get xrFramebufferScaleFactor() {\n return this.#webxr.framebufferScaleFactor;\n }\n\n set xrFramebufferScaleFactor(value: number) {\n this.#webxr.framebufferScaleFactor = value;\n }\n\n /** Physics manager, only available when physx is enabled in the runtime. */\n get physics() {\n return this.#physics;\n }\n\n /** Texture resources */\n get textures() {\n return this._textures;\n }\n\n /** Material resources */\n get materials() {\n return this._materials;\n }\n\n /** Mesh resources */\n get meshes() {\n return this._meshes;\n }\n\n /** Morph target set resources */\n get morphTargets() {\n return this._morphTargets;\n }\n\n /** Font resources */\n get fonts() {\n return this._fonts;\n }\n\n /** Particle effect resources */\n get particleEffects() {\n return this._particleEffects;\n }\n\n /** Get all uncompressed images. */\n get images(): ImageLike[] {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n result[i] = wasm._images[index];\n }\n return result;\n }\n\n /**\n * Promise that resolve once all uncompressed images are loaded.\n *\n * This is equivalent to calling {@link WonderlandEngine.images}, and wrapping each\n * `load` listener into a promise.\n */\n get imagesPromise(): Promise {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n const loading = this._uncompressedPromises[index];\n result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]);\n }\n return Promise.all(result);\n }\n\n /**\n * `true` if the texture streaming is currently idle, i.e.,\n * not attempting to upload any textures.\n *\n * @hidden\n */\n get isTextureStreamingIdle() {\n return !!this.wasm._wl_renderer_streaming_idle();\n }\n\n /**\n * `true` if reverse-Z rendering is supported and enabled.\n *\n * @hidden\n */\n get isReverseZEnabled() {\n return !!this.wasm._wl_renderer_isReverseZEnabled();\n }\n\n /*\n * Enable or disable the mechanism to automatically resize the canvas.\n *\n * Internally, the engine uses a [ResizeObserver](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * Changing the canvas css will thus automatically be tracked by the engine.\n */\n set autoResizeCanvas(flag: boolean) {\n const state = !!this.#resizeObserver;\n if (state === flag) return;\n\n if (!flag) {\n this.#resizeObserver?.unobserve(this.canvas);\n this.#resizeObserver = null;\n return;\n }\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.canvas) {\n this.resize(entry.contentRect.width, entry.contentRect.height);\n }\n }\n });\n this.#resizeObserver.observe(this.canvas);\n }\n\n /** `true` if the canvas is automatically resized by the engine. */\n get autoResizeCanvas() {\n return this.#resizeObserver !== null;\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n return this.#wasm.runtimeVersion;\n }\n\n /** Engine {@link Logger}. Use it to turn on / off logging. */\n get log(): Logger {\n return this.#wasm._log;\n }\n\n /* Internal-Only Methods */\n\n /**\n * Initialize the engine.\n *\n * @note Should be called after the WebAssembly is fully loaded.\n *\n * @hidden\n */\n _init(withRenderer: boolean): boolean {\n const success = this.#wasm._wl_application_init(withRenderer);\n if (!success) {\n throw new Error(`Failed to initializing Wonderland runtime`);\n }\n\n this.resize(this.canvas.clientWidth, this.canvas.clientHeight);\n return true;\n }\n\n /**\n * Reset the runtime state, including:\n * - Component cache\n * - Images\n * - Callbacks\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _reset() {\n this.wasm.reset();\n this._scenes.length = 0;\n this._scene = this._reload(0);\n this.#bundleCache.clear();\n return this.switchTo(this._scene);\n }\n\n /**\n * Attempt to hot reload the engine.\n *\n * @param filename URL of the file to use for the reload.\n * If `null`, forces a full page reload.\n *\n * @hidden\n */\n async _reloadRequest(filename: string | null) {\n if (filename === null) {\n reloadPage(this);\n return;\n }\n\n try {\n if (this.autoHotReload)\n await this.loadMainScene({url: filename, nocache: true});\n } catch (e) {\n console.error('Hot reload request failed to load main scene, reason:', e);\n setTimeout(() => reloadPage(this), 1000);\n return;\n }\n\n this.onHotReloadRequest.notify(filename);\n }\n\n /**\n * Add an empty scene.\n *\n * @returns The newly created scene\n *\n * @hidden\n */\n _createEmpty(): Scene {\n const wasm = this.wasm;\n const index = wasm._wl_scene_create_empty();\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n return scene;\n }\n\n /** @hidden */\n _destroyScene(instance: Prefab) {\n const wasm = this.wasm;\n wasm._wl_scene_destroy(instance._index);\n\n const index = instance._index;\n (instance._index as number) = -1;\n if (this.erasePrototypeOnDestroy) {\n Object.setPrototypeOf(instance, DestroyedPrefabInstance);\n }\n\n this._scenes[index] = null;\n }\n\n /**\n * Reload the state of the engine with a new main scene.\n *\n * @param index Scene index.\n *\n * @hidden\n */\n private _reload(index: number) {\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n\n this._textures = new TextureManager(this);\n this._materials = new MaterialManager(this);\n this._meshes = new MeshManager(this);\n this._morphTargets = new ResourceManager(this, MorphTargets);\n this._fonts = new ResourceManager(this, Font);\n this._particleEffects = new ResourceManager(this, ParticleEffect);\n this._uncompressedPromises.length = 0;\n\n return scene;\n }\n\n /**\n * Helper to load a main scene from an `ArrayBuffer` or `ReadableStream`.\n *\n * @param data Buffer or stream.\n * @param url Base URL.\n * @param nocache If `true`, force a browser reload of files to download.\n * Only affects components loading for now.\n * @param options Activation options.\n * @returns The loaded main scene.\n *\n * @hidden\n */\n private async _loadMainScene(\n data: ArrayBuffer | ReadableStream,\n url: string,\n nocache: boolean,\n options: ActivateOptions\n ) {\n if (nocache) url += `?t=${Date.now()}`;\n\n const wasm = this.#wasm;\n\n /*\n * - Deactivate currently active scene\n * - Destroy all scenes\n * - Mark all resources as destroyed\n * - Activation of main scene to prevent the runtime to be in limbo\n */\n\n wasm._wl_deactivate_activeScene();\n\n ++this._mainSceneVersion;\n\n /* Only destroy all scene once the current active one is disabled */\n for (let i = this._scenes.length - 1; i >= 0; --i) {\n const scene = this._scenes[i];\n if (scene) scene.destroy();\n }\n\n /* Mark all resources as destroyed */\n this._textures._clear();\n this._materials._clear();\n this._meshes._clear();\n this._morphTargets._clear();\n this._uncompressedPromises.length = 0;\n\n const stream =\n data instanceof ReadableStream\n ? data\n : new ReadableStream(new ArrayBufferSource(data));\n const sink = new ChunkedSceneLoadSink(this, SceneType.Main, url);\n await stream.pipeTo(new WritableStream(sink));\n\n const mainScene = this._reload(sink.sceneIndex);\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(mainScene._index);\n\n /**\n * @todo(2.0.0)\n *\n * Backward compatibility: We need to set this instance reference on the\n * engine **before** component creation occurs, since users have been accessing\n * the scene with `this.engine.scene` in `init()`.\n */\n this._preactivate(mainScene);\n\n const componentsBundle = mainScene.componentsBundle;\n if (componentsBundle) {\n /* Relative URL are resolved from the script that imports, and **not** from\n * the document. We assume that the components bundle is located alongside\n * other resources, relative to the .bin.\n *\n * @note: `componentsBundle` already contains the same baseURL as the .bin. */\n const bundleURL = new URL(componentsBundle, document.baseURI);\n const url = nocache ? bundleURL.href.split('?')[0] : bundleURL.href;\n await this.registerBundle(url, nocache);\n }\n mainScene._initialize();\n\n await this.switchTo(mainScene, options);\n\n return mainScene;\n }\n\n /**\n * Helper to load prefab and activatable scene from an `ArrayBuffer`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private _loadSceneFromBuffer(\n PrefabClass: Constructor,\n options: InMemoryLoadOptions\n ) {\n const {buffer, url} = Scene.validateBufferOptions(options);\n\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n sink.write(new Uint8Array(buffer));\n sink.close();\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Helper to load prefab and activatable scene from a `ReadableStream`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private async _loadSceneFromStream(\n PrefabClass: Constructor,\n options: StreamLoadOptions\n ) {\n const {stream, url} = Scene.validateStreamOptions(options);\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n await stream.pipeTo(new WritableStream(sink));\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Checks if the loaded scene is a prefab and throws an error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedPrefab(scene: Prefab) {\n if (this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a prefab. To load a scene, use loadScene() instead'\n );\n }\n }\n\n /**\n * Checks if the loaded scene is a scene (and not a prefab) and throws an\n * error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedScene(scene: Scene) {\n if (!this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a scene. To load a prefab, use loadPrefab() instead'\n );\n }\n }\n\n /**\n * Set the scene data on the engine, before the activation occurs.\n *\n * @hidden\n */\n private _preactivate(scene: Scene) {\n this._scene = scene;\n /* Update the current active scene in the physx manager */\n if (this.physics) (this.physics._hit._scene as Scene) = scene;\n }\n\n /**\n * Notify the runtime when images are ready to be uploaded.\n *\n * @param sceneIndex Index of the scene where the image originated\n * @hidden\n */\n private _loadUncompressedImages(sceneIndex: number) {\n const mainSceneVersion = this._mainSceneVersion;\n const wasm = this.wasm;\n\n const bitmapOptions: ImageBitmapOptions = {\n colorSpaceConversion: 'none',\n };\n\n const imageCount = wasm._wl_image_count();\n for (let i = 0; i < imageCount; ++i) {\n if (wasm._wl_image_originalScene(i) !== sceneIndex) continue;\n\n const jsImageIndex = wasm._wl_image_get_jsImage_index(i);\n\n const image = wasm._images[jsImageIndex];\n if (!image) continue;\n\n let promise: Promise = onImageReady(image);\n if (this.loadUncompressedImagesAsBitmap) {\n promise = promise.then((img) => createImageBitmap(img, bitmapOptions));\n }\n this._uncompressedPromises[jsImageIndex] = promise\n .then((img) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img));\n }\n })\n .catch((e) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n this.log.error(\n LogTag.Scene,\n 'Failed to load uncompressed image',\n e\n );\n }\n });\n }\n }\n}\n", "/**\n * Assert that the given bit index is less than 32.\n *\n * @param bit The bit to test.\n */\nfunction assert(bit: number): void {\n if (bit >= 32) {\n throw new Error(`BitSet.enable(): Value ${bit} is over 31`);\n }\n}\n\n/**\n * Stores a bit pattern to quickly test if an index is enabled / disabled.\n *\n * This class can store up to **32** different values in the range [0; 31].\n *\n * #### Usage\n *\n * ```js\n * const bitset = new BitSet();\n * bitset.enable(10); // Enable bit at index `10`.\n * console.log(bitset.enabled(10)); // Prints 'true'.\n * ```\n *\n * #### TypeScript\n *\n * The set can be typed over an enum:\n *\n * ```ts\n * enum Tag {\n * First = 0,\n * Second = 1,\n * }\n *\n * const bitset = new BitSet();\n * bitset.enable(Tag.First);\n * ```\n */\nexport class BitSet {\n /** Enabled bits. @hidden */\n private _bits: number = 0;\n\n /**\n * Enable the bit at the given index.\n *\n * @param bits A spread of all the bits to enable.\n * @returns Reference to self (for method chaining).\n */\n enable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits |= (1 << bit) >>> 0;\n }\n return this;\n }\n\n /**\n * Enable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n enableAll() {\n this._bits = ~0;\n return this;\n }\n\n /**\n * Disable the bit at the given index.\n *\n * @param bits A spread of all the bits to disable.\n * @returns Reference to self (for method chaining).\n */\n disable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits &= ~((1 << bit) >>> 0);\n }\n return this;\n }\n\n /**\n * Disable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n disableAll() {\n this._bits = 0;\n return this;\n }\n\n /**\n * Checker whether the bit is set or not.\n *\n * @param bit The bit to check.\n * @returns `true` if it's enabled, `false` otherwise.\n */\n enabled(bit: T) {\n return !!(this._bits & ((1 << bit) >>> 0));\n }\n}\n", "import {BitSet} from './bitset.js';\nimport {Emitter} from './event.js';\n\n/**\n * Logging levels supported by {@link Logger}.\n */\nexport enum LogLevel {\n Info = 0,\n Warn = 1,\n Error = 2,\n}\n\n/**\n * Logging wrapper.\n *\n * This is used to allow turning on/off:\n * - `console.log`\n * - `console.warn`\n * - `console.error`\n *\n * #### Usage\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * // Create a logger with only the \"error\" and \"warn\" levels activated\n * const logger = new Logger(LogLevel.Warn, LogLevel.Error);\n *\n * // Only the \"error\" and \"warn\" levels are activated,\n * // this message isn't logged.\n * logger.info(LogTag.Component, 'This message is shushed')\n *\n * // Prints 'Hello Error!'\n * logger.error(LogTag.Component, 'Hello Error!');\n *\n * // Prints 'Hello Warning!'\n * logger.warn(LogTag.Component, 'Hello Warning!');\n * ```\n *\n * The log levels can be changed at anytime using the {@link BitSet} api:\n *\n * ```js\n * // Enable the \"info\" level\n * logger.levels.enable(LogLevel.Info);\n * * // Disable the \"warn\" level\n * logger.levels.disable(LogLevel.Warn);\n * ```\n *\n * #### Tags\n *\n * In addition, the logger supports tagging messages:\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * const logger = new Logger(LogLevel.Info);\n *\n * logger.tags.disableAll();\n *\n * // All tags are off, this message isn't logged\n * logger.info(LogTag.Component, 'This message is shushed');\n *\n * logger.tags.enable(LogTag.Component);\n * logger.info(LogTag.Component, 'Hello World!') // Prints 'Hello World!'\n * ```\n *\n * The tagging system gives another layer of control to enable / disable\n * some specific logs.\n */\nexport class Logger {\n /**\n * Bitset of enabled levels.\n *\n * @hidden\n */\n levels: BitSet = new BitSet();\n\n /**\n * Bitset of enabled tags.\n *\n * @hidden\n */\n tags: BitSet = new BitSet().enableAll();\n\n /**\n * Notified when an `info`, `warn`, or `error` message is logged.\n *\n * @note The emitter is always notified, even if the logger levels\n * and tags are disabled.\n *\n * @note The message is passed as an array, similar to `console.log`.\n *\n * #### Usage\n *\n * ```js\n * import {LogLevel} from '@wonderlandengine/api';\n *\n * engine.logger.onLog.add((level, messages, tag) => {\n * // Only process error messages\n * if (level !== LogLevel.Error) return;\n *\n * // Only process engine logs\n * if (tag !== LogTag.Engine) return;\n *\n * const str = messages.join(' ');\n * sendAnalytics(str);\n * });\n * ```\n */\n onLog: Emitter<[LogLevel, unknown[], number]> = new Emitter();\n\n /**\n * Create a new logger instance.\n *\n * @param levels Default set of levels to enable.\n */\n constructor(...levels: LogLevel[]) {\n this.levels.enable(...levels);\n }\n\n /**\n * Log the message(s) using `console.log`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n info(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Info) && this.tags.enabled(tag)) {\n console.log(...msg);\n }\n this.onLog.notify(LogLevel.Info, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.warn`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n warn(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Warn) && this.tags.enabled(tag)) {\n console.warn(...msg);\n }\n this.onLog.notify(LogLevel.Warn, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.error`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n error(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Error) && this.tags.enabled(tag)) {\n console.error(...msg);\n }\n this.onLog.notify(LogLevel.Error, msg, tag);\n return this;\n }\n}\n", "import {Version} from './version.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ComponentProperty, Type, defaultPropertyCloner} from './property.js';\nimport {CBORReader, CBORType, getType} from './utils/cbor.js';\nimport {Logger} from './utils/logger.js';\nimport {\n inheritProperties,\n Component,\n ComponentConstructor,\n ComponentProto,\n BrokenComponent,\n AnimationComponent,\n LogTag,\n} from './wonderland.js';\nimport {ImageLike} from './types.js';\nimport {Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {ComponentPropertyDecoder, setupComponentClass} from './component.js';\n\n/**\n * Low-level wrapper to interact with the WebAssembly code.\n *\n * @hidden\n */\nexport class WASM {\n /**\n * Emscripten wasm field.\n *\n * @note This api is meant to be used internally.\n */\n readonly wasm: ArrayBuffer = null!;\n\n /**\n * Emscripten canvas.\n *\n * @note This api is meant to be used internally.\n */\n readonly canvas: HTMLCanvasElement = null!;\n\n /**\n * WebGPU device.\n *\n * @note This api is meant to be used internally.\n */\n readonly preinitializedWebGPUDevice: any = null;\n\n /**\n * Convert a WASM memory view to a JavaScript string.\n *\n * @param ptr Pointer start\n * @param ptrEnd Pointer end\n * @returns JavaScript string\n */\n UTF8ViewToString: (ptr: number, ptrEnd: number) => string;\n\n /** Logger instance. */\n readonly _log: Logger = new Logger();\n\n /** If `true`, logs will not spam the console on error. */\n _deactivate_component_on_error: boolean = false;\n\n /** Temporary memory pointer. */\n _tempMem: number = null!;\n /** Temporary memory size. */\n _tempMemSize: number = 0;\n /** Temporary float memory view. */\n _tempMemFloat: Float32Array = null!;\n /** Temporary int memory view. */\n _tempMemInt: Int32Array = null!;\n /** Temporary uint8 memory view. */\n _tempMemUint8: Uint8Array = null!;\n /** Temporary uint32 memory view. */\n _tempMemUint32: Uint32Array = null!;\n /** Temporary uint16 memory view. */\n _tempMemUint16: Uint16Array = null!;\n\n /** Loading screen .bin file data */\n _loadingScreen: ArrayBuffer | null = null;\n\n /** List of callbacks triggered when the scene is loaded. */\n readonly _sceneLoadedCallback: any[] = [];\n\n /** Image cache. */\n _images: (ImageLike | null)[] = [null];\n\n /** Component instances. */\n private _components: Component[] = null!;\n\n /** Component Type info. */\n _componentTypes: ComponentConstructor[] = [];\n\n /** Index per component type name. */\n _componentTypeIndices: Record = {};\n\n /** Wonderland engine instance. */\n private _engine: WonderlandEngine = null!;\n\n /**\n * `true` if this runtime is using physx.\n *\n * @note This api is meant to be used internally.\n */\n private _withPhysX: boolean = false;\n\n /** Decoder for UTF8 `ArrayBuffer` to JavaScript string. */\n private readonly _utf8Decoder = new TextDecoder('utf8');\n\n /**\n * Registration index of {@link BrokenComponent}.\n *\n * This is used to return dummy instances when a component\n * isn't registered.\n *\n * @hidden\n */\n private readonly _brokenComponentIndex = 0;\n\n /**\n * Create a new instance of the WebAssembly <> API bridge.\n *\n * @param threads `true` if the runtime used has threads support\n */\n constructor(threads: boolean) {\n if (threads) {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.slice(s, e));\n };\n } else {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.subarray(s, e));\n };\n }\n\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n /** We cannot use _tempMem because we are meant to be called before it's initialized */\n const tempBuf = this._malloc(4 * 2);\n const tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4);\n this._wl_runtime_version(tempBuf);\n const version = {\n major: tempVersion[0],\n minor: tempVersion[1],\n patch: tempVersion[2],\n rc: tempVersion[3],\n };\n this._free(tempBuf);\n return version;\n }\n\n /**\n * Reset the cache of the library.\n *\n * @note Should only be called when tearing down the runtime.\n */\n reset() {\n /* Called first to perform cleanup. */\n this._wl_reset();\n\n this._components = null!;\n this._images.length = 1;\n this.allocateTempMemory(1024);\n\n this._componentTypes = [];\n this._componentTypeIndices = {};\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param ctor A string representing the component typename (e.g., `'cursor-component'`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(type: string) {\n return type in this._componentTypeIndices;\n }\n\n /**\n * Register a legacy component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param typeName The name of the component.\n * @param params An object containing the parameters (properties).\n * @param object The object's prototype.\n * @returns The registration index\n */\n _registerComponentLegacy(\n typeName: string,\n params: Record,\n object: ComponentProto\n ) {\n const ctor = class CustomComponent extends Component {};\n ctor.TypeName = typeName;\n ctor.Properties = params;\n Object.assign(ctor.prototype, object);\n return this._registerComponent(ctor);\n }\n\n /**\n * Register a class component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param ctor The class to register.\n * @returns The registration index.\n */\n _registerComponent(ctor: ComponentConstructor) {\n if (!ctor.TypeName) throw new Error('no name provided for component.');\n if (!ctor.prototype._triggerInit) {\n throw new Error(\n `registerComponent(): Component ${ctor.TypeName} must extend Component`\n );\n }\n\n setupComponentClass(ctor);\n\n const typeIndex =\n ctor.TypeName in this._componentTypeIndices\n ? this._componentTypeIndices[ctor.TypeName]\n : this._componentTypes.length;\n this._componentTypes[typeIndex] = ctor;\n this._componentTypeIndices[ctor.TypeName] = typeIndex;\n\n if (ctor === BrokenComponent) return typeIndex;\n\n this._log.info(\n LogTag.Engine,\n 'Registered component',\n ctor.TypeName,\n `(class ${ctor.name})`,\n 'with index',\n typeIndex\n );\n\n if (ctor.onRegister) ctor.onRegister(this._engine);\n\n return typeIndex;\n }\n\n /**\n * Allocate the requested amount of temporary memory\n * in this WASM instance.\n *\n * @param size The number of bytes to allocate\n */\n allocateTempMemory(size: number) {\n this._log.info(LogTag.Engine, 'Allocating temp mem:', size);\n this._tempMemSize = size;\n if (this._tempMem) this._free(this._tempMem);\n this._tempMem = this._malloc(this._tempMemSize);\n this.updateTempMemory();\n }\n\n /**\n * @todo: Delete this and only keep `allocateTempMemory`\n *\n * @param size Number of bytes to allocate\n */\n requireTempMem(size: number) {\n if (this._tempMemSize >= size) return;\n /* Grow in 1kb increments */\n this.allocateTempMemory(Math.ceil(size / 1024) * 1024);\n }\n\n /**\n * Update the temporary memory views. This must be called whenever the\n * temporary memory address changes.\n *\n * @note This api is meant to be used internally.\n */\n updateTempMemory() {\n this._tempMemFloat = new Float32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemInt = new Int32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint32 = new Uint32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint16 = new Uint16Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 1\n );\n this._tempMemUint8 = new Uint8Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize\n );\n }\n\n /**\n * Returns a uint8 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU8(count: number): Uint8Array {\n this.requireTempMem(count);\n return this._tempMemUint8;\n }\n\n /**\n * Returns a uint16 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU16(count: number): Uint16Array {\n this.requireTempMem(count * 2);\n return this._tempMemUint16;\n }\n\n /**\n * Returns a uint32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferU32(count: number): Uint32Array {\n this.requireTempMem(count * 4);\n return this._tempMemUint32;\n }\n\n /**\n * Returns a int32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferI32(count: number): Int32Array {\n this.requireTempMem(count * 4);\n return this._tempMemInt;\n }\n\n /**\n * Returns a float32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferF32(count: number): Float32Array {\n this.requireTempMem(count * 4);\n return this._tempMemFloat;\n }\n\n /**\n * Copy the string into temporary WASM memory and retrieve the pointer.\n *\n * @note This method will compute the strlen and append a `\\0`.\n *\n * @note The result should be used **directly** otherwise it might get\n * overridden by any next call modifying the temporary memory.\n *\n * @param str The string to write to temporary memory\n * @param byteOffset The starting byte offset in the temporary memory at which\n * the string should be written. This is useful when using multiple temporaries.\n * @return The temporary pointer onto the WASM memory\n */\n tempUTF8(str: string, byteOffset = 0): number {\n const strLen = this.lengthBytesUTF8(str) + 1;\n this.requireTempMem(strLen + byteOffset);\n const ptr = this._tempMem + byteOffset;\n this.stringToUTF8(str, ptr, strLen);\n return ptr;\n }\n\n /**\n * Copy the buffer into the WASM heap.\n *\n * @note The returned pointer must be freed.\n *\n * @param buffer The buffer to copy into the heap.\n * @returns An allocated pointer, that must be free after use.\n */\n copyBufferToHeap(buffer: ArrayBuffer): number {\n const size = buffer.byteLength;\n const ptr = this._malloc(size);\n this.HEAPU8.set(new Uint8Array(buffer), ptr);\n return ptr;\n }\n\n /**\n * Returns `true` if the runtime supports physx or not.\n */\n get withPhysX(): boolean {\n return this._withPhysX;\n }\n\n /**\n * Set the engine instance holding this bridge.\n *\n * @note This api is meant to be used internally.\n *\n * @param engine The engine instance.\n */\n protected _setEngine(engine: WonderlandEngine): void {\n this._engine = engine;\n }\n\n /* WebAssembly to JS call bridge. */\n\n protected _wljs_reload(filenamePtr: number) {\n const filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null;\n this._engine._reloadRequest(filename);\n }\n protected _wljs_init(withPhysX: boolean) {\n this._withPhysX = withPhysX;\n\n /* Target memory for JS API functions that return arrays */\n this.allocateTempMemory(1024);\n }\n protected _wljs_scene_switch(index: number) {\n const scene = this._engine._scenes[index] as Scene | null;\n /* Scene can be null during testing with `engine.reset()` */\n this._components = scene?._jsComponents ?? null!;\n }\n protected _wljs_destroy_image(index: number) {\n const img = this._images[index];\n if (!img) return;\n\n this._images[index] = null;\n\n if ((img as HTMLImageElement).src !== undefined) {\n (img as HTMLImageElement).src = '';\n }\n if ((img as HTMLImageElement).onload !== undefined) {\n (img as HTMLImageElement).onload = null;\n }\n if ((img as HTMLImageElement).onerror !== undefined) {\n (img as HTMLImageElement).onerror = null;\n }\n }\n protected _wljs_objects_markDestroyed(\n sceneIndex: number,\n idsPtr: number,\n count: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n const start = idsPtr >>> 1;\n for (let i = 0; i < count; ++i) {\n const id = this.HEAPU16[start + i];\n scene._destroyObject(id);\n }\n }\n protected _wljs_scene_initialize(\n sceneIndex: number,\n idsPtr: number,\n idsEnd: number,\n paramDataPtr: number,\n paramDataEndPtr: number,\n offsetsPtr: number,\n offsetsEndPtr: number\n ) {\n const cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr);\n const offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2);\n const ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1);\n\n const engine = this._engine;\n const scene = engine._scenes[sceneIndex] as Scene;\n const components = scene._jsComponents;\n\n const cbor = new CBORReader(cborEncoded);\n\n let componentsCount = 0;\n {\n const typeInfo = cbor.readTypeInfo();\n if (getType(typeInfo) !== CBORType.Array) {\n this._log.error(LogTag.Engine, 'Parameters data must be an array');\n return;\n }\n componentsCount = cbor.readArrayLength(typeInfo) as number;\n }\n if (componentsCount !== ids.length) {\n this._log.error(\n LogTag.Engine,\n `Parameters set for ${componentsCount} components, but expected ${ids.length}`\n );\n return;\n }\n\n const decoder = new ComponentPropertyDecoder(scene, offsets);\n for (let i = 0; i < componentsCount; ++i) {\n const id = Component._pack(sceneIndex, ids[i]);\n const index = this._wl_get_js_component_index_for_id(id);\n const component = components[index];\n decoder.decode(cbor, component);\n }\n }\n\n protected _wljs_set_component_param_translation(\n scene: number,\n component: number,\n param: number,\n valuePtr: number,\n valueEndPtr: number\n ) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const comp = components[component];\n\n const value = this.UTF8ViewToString(valuePtr, valueEndPtr);\n const ctor = comp.constructor as ComponentConstructor;\n const paramName = ctor._propertyOrder[param];\n (comp as Record)[paramName] = value;\n }\n\n protected _wljs_get_component_type_index(namePtr: number, nameEndPtr: number) {\n const typename = this.UTF8ViewToString(namePtr, nameEndPtr);\n const index = this._componentTypeIndices[typename];\n if (index === undefined) {\n return this._brokenComponentIndex;\n }\n return index;\n }\n protected _wljs_component_create(\n sceneIndex: number,\n index: number,\n id: number,\n type: number,\n object: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n scene._components.createJs(index, id, type, object);\n }\n protected _wljs_component_init(scene: number, component: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const c = components[component];\n c._triggerInit();\n }\n protected _wljs_component_update(component: number, dt: number) {\n const c = this._components[component];\n c._triggerUpdate(dt);\n }\n protected _wljs_component_onActivate(component: number) {\n const c = this._components[component];\n c._triggerOnActivate();\n }\n protected _wljs_component_onDeactivate(component: number) {\n const c = this._components[component];\n c._triggerOnDeactivate();\n }\n protected _wljs_component_markDestroyed(\n sceneIndex: number,\n manager: number,\n componentId: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Prefab;\n scene._destroyComponent(manager, componentId);\n }\n protected _wljs_swap(scene: number, a: number, b: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const componentA = components[a];\n components[a] = components[b];\n components[b] = componentA;\n }\n protected _wljs_copy(\n srcSceneIndex: number,\n srcIndex: number,\n dstSceneIndex: number,\n dstIndex: number,\n offsetsPtr: number,\n copyInfoPtr: number\n ) {\n const srcScene = this._engine._scenes[srcSceneIndex] as Scene;\n const dstScene = this._engine._scenes[dstSceneIndex] as Scene;\n const destComp = dstScene._jsComponents[dstIndex];\n const srcComp = srcScene._jsComponents[srcIndex];\n destComp._copy(srcComp, offsetsPtr, copyInfoPtr);\n }\n /**\n * Forward an animation event to a corresponding\n * {@link AnimationComponent}\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link AnimationComponent.onEvent} instead.\n *\n * @param componentId Component id in the manager\n * @param namePtr Pointer to UTF8 event name\n * @param nameEndPtr Pointer to end of UTF8 event name\n */\n protected _wljs_trigger_animationEvent(\n componentId: number,\n namePtr: number,\n nameEndPtr: number\n ) {\n const scene = this._engine.scene;\n const comp = scene._components.wrapAnimation(componentId);\n const nameStr = this.UTF8ViewToString(namePtr, nameEndPtr);\n comp.onEvent.notify(nameStr);\n }\n}\n\n/* Extends the WASM class with the WebAssembly typings */\n\nexport interface WASM {\n HEAP8: Int8Array;\n HEAPU8: Uint8Array;\n HEAPU16: Uint16Array;\n HEAP16: Int16Array;\n HEAPU32: Uint32Array;\n HEAP32: Int32Array;\n HEAPF32: Float32Array;\n HEAPF64: Float64Array;\n\n GL: {\n framebuffers: WebGLFramebuffer[];\n };\n\n assert: (condition: boolean, msg?: string) => void;\n _free: (ptr: number) => void;\n _malloc: (size: number) => number;\n lengthBytesUTF8: (str: string) => number;\n stringToUTF8: (str: string, outPtr: number, len: number) => void;\n UTF8ToString: (ptr: number) => string;\n addFunction: (func: Function, sig: string) => number;\n removeFunction: (ptr: number) => void;\n\n _wl_runtime_version: (out: number) => void;\n _wl_set_error_callback: (cbPtr: number) => void;\n _wl_application_create: () => void;\n _wl_application_init: (withRenderer: boolean) => boolean;\n _wl_application_start: () => void;\n _wl_application_redraw: () => void;\n _wl_application_resize: (width: number, height: number) => void;\n\n _wl_nextUpdate: (delta: number) => void;\n _wl_nextFrame: (delta: number) => void;\n _wl_reset: () => void;\n _wl_reset_context: () => void;\n _wl_xr_init: (viewCount: number, useLayers: boolean) => void;\n _wl_xr_focus: () => void;\n _wl_xr_blur: () => void;\n _wl_xr_hide: () => void;\n _wl_xr_exit: () => void;\n\n _wl_deactivate_activeScene: () => void;\n\n _wl_renderer_set_mesh_layout: (layout: number) => void;\n _wl_renderer_streaming_idle: () => number;\n _wl_renderer_isReverseZEnabled: () => number;\n\n _wl_load_main_scene: (ptr: number, size: number, url: number) => number;\n _wl_get_images: (out: number, max: number) => number;\n _wl_get_material_definition_count: () => number;\n _wl_get_material_definition_index: (ptr: number) => number;\n\n _wl_scene_get_active: (root: number) => number;\n _wl_scene_create: (ptr: number, size: number, url: number) => number;\n _wl_scene_create_chunked_start: (url: number) => number;\n _wl_scene_create_chunked_buffer_size: (index: number) => number;\n _wl_scene_create_chunked_next: (\n index: number,\n ptr: number,\n size: number,\n readSizePtr: number,\n requiredSizePtr: number\n ) => boolean;\n _wl_scene_create_chunked_abort: (index: number) => void;\n _wl_scene_create_chunked_end_prefab: (index: number) => number;\n _wl_scene_create_chunked_end_main: (index: number) => void;\n _wl_scene_create_chunked_end_queued: (\n index: number,\n dependentSceneIndex: number\n ) => void;\n _wl_scene_create_empty: () => number;\n _wl_scene_initialize: (index: number) => number;\n _wl_scene_destroy: (index: number) => void;\n _wl_scene_instantiate: (src: number, dst: number) => number;\n _wl_scene_activate: (index: number) => void;\n _wl_scene_queued_bin_count: (index: number) => number;\n _wl_scene_queued_bin_path: (sceneIndex: number, index: number) => number;\n _wl_scene_clear_queued_bin_list: (sceneIndex: number) => void;\n _wl_scene_load_queued_bin: (index: number, ptr: number, size: number) => boolean;\n _wl_scene_activatable: (index: number) => boolean;\n _wl_scene_active: (index: number) => boolean;\n _wl_scene_get_baseURL: (index: number) => number;\n _wl_scene_get_filename: (index: number) => number;\n _wl_scene_get_componentsBundle: (index: number) => number;\n\n _wl_scene_get_component_manager_count: (scene: number) => number;\n _wl_scene_get_component_manager_index: (scene: number, ptr: number) => number;\n\n _wl_scene_get_mainView: (scene: number) => number;\n _wl_scene_get_leftView: (scene: number) => number;\n _wl_scene_get_rightView: (scene: number) => number;\n _wl_scene_get_components: (\n scene: number,\n typeIndex: number,\n subTypeIndex: number,\n active: boolean,\n offset: number,\n count: number,\n ptr: number\n ) => number;\n _wl_scene_get_component: (scene: number, typeIndex: number, index: number) => number;\n\n _wl_scene_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n maxDistance: number,\n outPtr: number\n ) => void;\n _wl_scene_add_object: (scene: number, parentId: number) => number;\n _wl_scene_add_objects: (\n scene: number,\n parentId: number,\n count: number,\n componentCountHint: number,\n ptr: number,\n size: number\n ) => number;\n _wl_scene_reserve_objects: (\n scene: number,\n objectCount: number,\n _tempMem: number\n ) => void;\n _wl_scene_set_sky_material: (index: number, id: number) => void;\n _wl_scene_get_sky_material: (index: number) => number;\n _wl_scene_environment_set_intensity: (index: number, intensity: number) => void;\n _wl_scene_environment_get_intensity: (index: number) => number;\n _wl_scene_environment_set_tint: (\n index: number,\n r: number,\n g: number,\n b: number\n ) => void;\n _wl_scene_environment_get_tint: (index: number, ptr: number) => void;\n _wl_scene_environment_set_coefficients: (\n index: number,\n ptr: number,\n count: number\n ) => void;\n _wl_scene_environment_get_coefficients: (index: number, ptr: number) => void;\n _wl_scene_set_clearColor: (r: number, g: number, b: number, a: number) => void;\n _wl_scene_enableColorClear: (b: boolean) => void;\n\n _wl_set_loading_screen_progress: (ratio: number) => void;\n\n _wl_glTF_scene_create: (extensions: boolean, ptr: number, ptrEnd: number) => number;\n _wl_glTF_scene_get_extensions: (index: number) => number;\n _wl_glTF_scene_extensions_gltfIndex_to_id: (\n gltfScene: number,\n destScene: number,\n objectIndex: number,\n gltfIndex: number\n ) => number;\n\n _wl_component_get_object: (manager: number, id: number) => number;\n _wl_component_setActive: (manager: number, id: number, active: boolean) => void;\n _wl_component_isActive: (manager: number, id: number) => number;\n _wl_component_remove: (manager: number, id: number) => void;\n\n _wl_collision_component_get_collider: (id: number) => number;\n _wl_collision_component_set_collider: (id: number, collider: number) => void;\n _wl_collision_component_get_extents: (id: number) => number;\n _wl_collision_component_get_group: (id: number) => number;\n _wl_collision_component_set_group: (id: number, group: number) => void;\n _wl_collision_component_query_overlaps: (\n id: number,\n outPtr: number,\n outCount: number\n ) => number;\n _wl_text_component_get_horizontal_alignment: (id: number) => number;\n _wl_text_component_set_horizontal_alignment: (id: number, alignment: number) => void;\n _wl_text_component_get_vertical_alignment: (id: number) => number;\n _wl_text_component_set_vertical_alignment: (\n id: number,\n verticalAlignment: number\n ) => void;\n _wl_text_component_get_justified: (id: number) => number;\n _wl_text_component_set_justified: (id: number, justified: boolean) => void;\n _wl_text_component_get_character_spacing: (id: number) => number;\n _wl_text_component_set_character_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_line_spacing: (id: number) => number;\n _wl_text_component_set_line_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_effect: (id: number) => number;\n _wl_text_component_get_effectOffset: (id: number, outPtr: number) => void;\n _wl_text_component_set_effect: (id: number, effect: number) => void;\n _wl_text_component_set_effectOffset: (id: number, offsetPtr: number) => void;\n _wl_text_component_get_wrapMode: (id: number) => number;\n _wl_text_component_set_wrapMode: (id: number, mode: number) => void;\n _wl_text_component_get_wrapWidth: (id: number) => number;\n _wl_text_component_set_wrapWidth: (id: number, width: number) => void;\n _wl_text_component_get_text: (id: number) => number;\n _wl_text_component_set_text: (id: number, ptr: number) => void;\n _wl_text_component_set_material: (id: number, materialId: number) => void;\n _wl_text_component_get_material: (id: number) => number;\n _wl_text_component_get_boundingBox: (\n id: number,\n textPtr: number,\n resultPtr: number\n ) => number;\n _wl_view_component_get_projectionType: (id: number) => number;\n _wl_view_component_set_projectionType: (id: number, type: number) => void;\n _wl_view_component_get_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_set_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_remapProjectionMatrix: (\n id: number,\n inverseDepth: boolean,\n depthZeroToOne: boolean\n ) => void;\n _wl_view_component_generate_projectionMatrix: (id: number) => void;\n _wl_view_component_get_near: (id: number) => number;\n _wl_view_component_set_near: (id: number, near: number) => void;\n _wl_view_component_get_far: (id: number) => number;\n _wl_view_component_set_far: (id: number, far: number) => void;\n _wl_view_component_get_fov: (id: number) => number;\n _wl_view_component_set_fov: (id: number, fov: number) => void;\n _wl_view_component_get_viewport: (id: number) => number;\n _wl_view_component_set_viewport: (\n id: number,\n x: number,\n y: number,\n width: number,\n height: number\n ) => void;\n _wl_view_component_get_extent: (id: number) => number;\n _wl_view_component_set_extent: (id: number, fov: number) => void;\n _wl_view_component_set_externalFramebuffer: (id: number, fb: number) => void;\n _wl_input_component_get_type: (id: number) => number;\n _wl_input_component_set_type: (id: number, type: number) => void;\n _wl_input_set_transformation: (sceneIndex: number, type: number, ptr: number) => void;\n _wl_light_component_get_color: (id: number) => number;\n _wl_light_component_get_type: (id: number) => number;\n _wl_light_component_set_type: (id: number, type: number) => void;\n _wl_light_component_get_intensity: (id: number) => number;\n _wl_light_component_set_intensity: (id: number, intensity: number) => void;\n _wl_light_component_get_outerAngle: (id: number) => number;\n _wl_light_component_set_outerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_innerAngle: (id: number) => number;\n _wl_light_component_set_innerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_shadows: (id: number) => number;\n _wl_light_component_set_shadows: (id: number, shadows: boolean) => void;\n _wl_light_component_get_shadowRange: (id: number) => number;\n _wl_light_component_set_shadowRange: (id: number, range: number) => void;\n _wl_light_component_get_shadowBias: (id: number) => number;\n _wl_light_component_set_shadowBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowNormalBias: (id: number) => number;\n _wl_light_component_set_shadowNormalBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowTexelSize: (id: number) => number;\n _wl_light_component_set_shadowTexelSize: (id: number, size: number) => void;\n _wl_light_component_get_cascadeCount: (id: number) => number;\n _wl_light_component_set_cascadeCount: (id: number, count: number) => void;\n _wl_animation_component_get_animation: (id: number) => number;\n _wl_animation_component_set_animation: (id: number, animId: number) => void;\n _wl_animation_component_get_playCount: (id: number) => number;\n _wl_animation_component_set_playCount: (id: number, count: number) => void;\n _wl_animation_component_get_speed: (id: number) => number;\n _wl_animation_component_set_speed: (id: number, speed: number) => void;\n _wl_animation_component_play: (id: number) => void;\n _wl_animation_component_stop: (id: number) => void;\n _wl_animation_component_pause: (id: number) => void;\n _wl_animation_component_state: (id: number) => number;\n _wl_animation_component_getGraphParamValue: (\n id: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_animation_component_setGraphParamValue: (\n id: number,\n paramIndex: number,\n valuePtr: number\n ) => void;\n _wl_animation_component_get_rootMotionMode: (id: number) => number;\n _wl_animation_component_set_rootMotionMode: (id: number, value: number) => void;\n _wl_animation_component_get_rootMotion_translation: (\n id: number,\n outPtr: number\n ) => number;\n _wl_animation_component_get_rootMotion_rotation: (id: number, outPtr: number) => number;\n _wl_animation_component_getGraphParamIndex: (id: number, paramName: number) => number;\n _wl_animation_component_get_iteration: (id: number) => number;\n _wl_animation_component_get_position: (id: number) => number;\n _wl_animation_component_get_duration: (id: number) => number;\n _wl_mesh_component_get_material: (id: number) => number;\n _wl_mesh_component_set_material: (id: number, materialId: number) => void;\n _wl_mesh_component_get_mesh: (id: number) => number;\n _wl_mesh_component_set_mesh: (id: number, meshId: number) => void;\n _wl_mesh_component_get_skin: (id: number) => number;\n _wl_mesh_component_set_skin: (id: number, skinId: number) => void;\n _wl_mesh_component_get_morph_targets: (id: number) => number;\n _wl_mesh_component_set_morph_targets: (id: number, morphTargetSetId: number) => void;\n _wl_mesh_component_get_morph_target_weight: (id: number, index: number) => number;\n _wl_mesh_component_get_morph_target_weights: (id: number, ptr: number) => number;\n _wl_mesh_component_set_morph_target_weight: (\n id: number,\n index: number,\n weight: number\n ) => void;\n _wl_mesh_component_set_morph_target_weights: (\n id: number,\n ptr: number,\n count: number\n ) => void;\n _wl_particleEffect_component_get_particleEffect: (id: number) => number;\n _wl_particleEffect_component_set_particleEffect: (\n id: number,\n particleEffectId: number\n ) => void;\n _wl_physx_component_get_static: (id: number) => number;\n _wl_physx_component_set_static: (id: number, flag: boolean) => void;\n _wl_physx_component_get_kinematic: (id: number) => number;\n _wl_physx_component_set_kinematic: (id: number, kinematic: boolean) => void;\n _wl_physx_component_get_gravity: (id: number) => number;\n _wl_physx_component_set_gravity: (id: number, gravity: boolean) => void;\n _wl_physx_component_get_simulate: (id: number) => number;\n _wl_physx_component_set_simulate: (id: number, simulation: boolean) => void;\n _wl_physx_component_get_allowSimulation: (id: number) => number;\n _wl_physx_component_set_allowSimulation: (id: number, allowSimulation: boolean) => void;\n _wl_physx_component_get_allowQuery: (id: number) => number;\n _wl_physx_component_set_allowQuery: (id: number, allowQuery: boolean) => void;\n _wl_physx_component_get_trigger: (id: number) => number;\n _wl_physx_component_set_trigger: (id: number, trigger: boolean) => void;\n _wl_physx_component_get_shape: (id: number) => number;\n _wl_physx_component_set_shape: (id: number, shape: number) => void;\n _wl_physx_component_get_shape_data: (id: number) => number;\n _wl_physx_component_set_shape_data: (id: number, shapeIndex: number) => void;\n _wl_physx_component_get_extents: (id: number) => number;\n _wl_physx_component_get_staticFriction: (id: number) => number;\n _wl_physx_component_set_staticFriction: (id: number, value: number) => void;\n _wl_physx_component_get_dynamicFriction: (id: number) => number;\n _wl_physx_component_set_dynamicFriction: (id: number, value: number) => void;\n _wl_physx_component_get_bounciness: (id: number) => number;\n _wl_physx_component_set_bounciness: (id: number, value: number) => void;\n _wl_physx_component_get_linearDamping: (id: number) => number;\n _wl_physx_component_set_linearDamping: (id: number, value: number) => void;\n _wl_physx_component_get_angularDamping: (id: number) => number;\n _wl_physx_component_set_angularDamping: (id: number, value: number) => void;\n _wl_physx_component_get_linearVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_linearVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_angularVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_angularVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_groupsMask: (id: number) => number;\n _wl_physx_component_set_groupsMask: (id: number, flags: number) => void;\n _wl_physx_component_get_blocksMask: (id: number) => number;\n _wl_physx_component_set_blocksMask: (id: number, flags: number) => void;\n _wl_physx_component_get_linearLockAxis: (id: number) => number;\n _wl_physx_component_set_linearLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_angularLockAxis: (id: number) => number;\n _wl_physx_component_set_angularLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_mass: (id: number) => number;\n _wl_physx_component_set_mass: (id: number, value: number) => void;\n _wl_physx_component_get_offsetTranslation: (id: number, out: number) => void;\n _wl_physx_component_get_offsetTransform: (id: number) => number;\n _wl_physx_component_set_offsetTranslation: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_set_offsetRotation: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_physx_component_set_sleepOnActivate: (id: number, flag: boolean) => void;\n _wl_physx_component_get_sleepOnActivate: (id: number) => number;\n _wl_physx_component_set_massSpaceInertiaTensor: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_addForce: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean\n ) => void;\n _wl_physx_component_addForceAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean,\n posX: number,\n posY: number,\n posZ: number,\n local: boolean\n ) => void;\n _wl_physx_component_addTorque: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number\n ) => void;\n _wl_physx_component_addCallback: (id: number, otherId: number) => number;\n _wl_physx_component_removeCallback: (id: number, callbackId: number) => number;\n _wl_physx_update_global_pose: (object: number, component: number) => void;\n _wl_physx_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n outPtr: number,\n maxDistance: number\n ) => void;\n _wl_physx_set_collision_callback: (callback: number) => void;\n _wl_mesh_create: (\n indicesPtr: number,\n indicesSize: number,\n indexType: number,\n vertexCount: number,\n skinningType: number\n ) => number;\n _wl_mesh_get_vertexCount: (index: number) => number;\n _wl_mesh_get_indexData: (index: number, outPtr: number, count: number) => number;\n _wl_mesh_update: (index: number) => void;\n _wl_mesh_get_boundingSphere: (index: number, outPtr: number) => void;\n _wl_mesh_get_attribute: (index: number, attribute: number, outPtr: number) => void;\n _wl_mesh_destroy: (index: number) => void;\n _wl_mesh_get_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcStride: number,\n dstFormatSize: number,\n destPtr: number,\n dstSize: number\n ) => void;\n _wl_mesh_set_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcSize: number,\n dstFormatSize: number,\n destPtr: number,\n destStride: number\n ) => void;\n _wl_font_get_emHeight: (index: number) => number;\n _wl_font_get_capHeight: (index: number) => number;\n _wl_font_get_xHeight: (index: number) => number;\n _wl_font_get_outlineSize: (index: number) => number;\n _wl_material_create: (definitionIndex: number) => number;\n _wl_material_get_definition: (index: number) => number;\n _wl_material_definition_get_param_count: (index: number) => number;\n _wl_material_definition_get_param_name: (index: number, paramIndex: number) => number;\n _wl_material_definition_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_pipeline: (index: number) => number;\n _wl_material_clone: (index: number) => number;\n _wl_material_get_param_index: (index: number, namePtr: number) => number;\n _wl_material_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_param_value: (\n index: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_material_set_param_value_uint: (\n index: number,\n paramId: number,\n valueId: number\n ) => void;\n _wl_material_set_param_value_float: (\n index: number,\n paramId: number,\n ptr: number,\n count: number\n ) => void;\n _wl_image_create: (jsImage: number) => number;\n _wl_image_size: (index: number, out: number) => number;\n _wl_image_get_jsImage_index: (index: number) => number;\n _wl_image_compressed: (index: number) => number;\n _wl_image_originalScene: (index: number) => number;\n _wl_image_markDirty: (index: number) => void;\n _wl_image_markReady: (\n index: number,\n width: number,\n height: number,\n flipY: number\n ) => void;\n _wl_image_count: () => number;\n\n _wl_texture_create: (image: number) => number;\n _wl_texture_get_image_index: (index: number) => number;\n _wl_texture_destroy: (id: number) => void;\n\n _wl_renderer_updateImage: (\n imageIndex: number,\n jsImageIndex: number,\n srcWidth: number,\n srcHeight: number,\n xOffset: number,\n yOffset: number,\n flipY: boolean\n ) => number;\n\n _wl_animation_get_duration: (id: number) => number;\n _wl_animation_get_trackCount: (id: number) => number;\n _wl_animation_retargetToSkin: (id: number, targetId: number) => number;\n _wl_animation_retarget: (id: number, ptr: number) => number;\n _wl_particleEffect_clone: (index: number) => number;\n _wl_object_id: (scene: number, index: number) => number;\n _wl_object_index: (id: number) => number;\n _wl_object_name: (id: number) => number;\n _wl_object_set_name: (id: number, ptr: number) => void;\n _wl_object_remove: (id: number) => void;\n _wl_object_markedDestroyed: (id: number) => boolean;\n _wl_object_parent: (id: number) => number;\n _wl_object_get_children_count: (id: number) => number;\n _wl_object_get_children: (id: number, outPtr: number, count: number) => number;\n _wl_object_set_parent: (id: number, parentId: number) => void;\n _wl_object_clone: (id: number, parentId: number) => number;\n _wl_object_reset_scaling: (id: number) => void;\n _wl_object_reset_translation_rotation: (id: number) => void;\n _wl_object_reset_rotation: (id: number) => void;\n _wl_object_reset_translation: (id: number) => void;\n _wl_object_translate: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_obj: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_rotate_axis_angle: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_axis_angle_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_quat: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_rotate_quat_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_scale: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_local: (id: number) => number;\n _wl_object_get_translation_local: (id: number, outPtr: number) => void;\n _wl_object_set_translation_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_get_translation_world: (id: number, outPtr: number) => void;\n _wl_object_set_translation_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_world: (id: number) => number;\n _wl_object_trans_world_to_local: (id: number) => number;\n _wl_object_scaling_local: (id: number) => number;\n _wl_object_scaling_world: (id: number) => number;\n _wl_object_set_scaling_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_set_scaling_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_scaling_world_to_local: (id: number) => number;\n _wl_object_set_rotation_local: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_set_rotation_world: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_transformVectorWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointLocal: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseLocal: (id: number, ptr: number) => number;\n _wl_object_toWorldSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_toObjectSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_lookAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n upX: number,\n upY: number,\n upZ: number\n ) => void;\n _wl_object_set_dirty: (id: number) => void;\n _wl_get_js_component_index: (id: number, outPtr: number, count: number) => number;\n _wl_get_js_component_index_for_id: (id: number) => number;\n _wl_get_component_id: (id: number, managerId: number, index: number) => number;\n _wl_object_get_components: (id: number, outPtr: number, count: number) => number;\n _wl_object_get_component_types: (id: number, outPtr: number, count: number) => void;\n _wl_object_add_js_component: (id: number, typeId: number) => number;\n _wl_object_add_component: (id: number, typeId: number) => number;\n _wl_object_is_changed: (id: number) => number;\n _wl_object_findByName: (\n obj: number,\n name: number,\n indexPtr: number,\n childPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_object_findByNameRecursive: (\n obj: number,\n name: number,\n indexPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_component_manager_name: (scene: number, id: number) => number;\n _wl_skin_get_joint_count: (id: number) => number;\n _wl_skin_joint_ids: (id: number) => number;\n _wl_skin_inverse_bind_transforms: (id: number) => number;\n _wl_skin_inverse_bind_scalings: (id: number) => number;\n _wl_morph_targets_get_target_count: (id: number) => number;\n _wl_morph_targets_get_target_name: (id: number, target: number) => number;\n _wl_morph_targets_get_target_index: (id: number, namePtr: number) => number;\n _wl_morph_target_weights_get_weight: (id: number, target: number) => number;\n _wl_morph_target_weights_set_weight: (\n id: number,\n target: number,\n weight: number\n ) => void;\n _wl_math_cubicHermite: (\n a: number,\n b: number,\n c: number,\n d: number,\n f: number,\n e: number,\n isQuat: boolean\n ) => void;\n _wl_i18n_setLanguage: (ptr: number) => void;\n _wl_i18n_currentLanguage: () => number;\n _wl_i18n_currentLanguageIndex: () => number;\n _wl_i18n_translate: (ptr: number) => number;\n _wl_i18n_languageCount: () => number;\n _wl_i18n_languageIndex: (ptr: number) => number;\n _wl_i18n_languageCode: (index: number) => number;\n _wl_i18n_languageName: (index: number) => number;\n _wl_i18n_languageFile: (index: number) => number;\n}\n\n/*\n * Api <> Runtime compatibility.\n *\n * Some features exposed in the API are only available from a specific\n * runtime version.\n *\n * Every added feature must throw by default. If the runtime loaded\n * has the specific feature, the method will be overwritten by Emscripten\n * upon loading.\n */\n\n/**\n * Throwing function used for features added in a patch version.\n *\n * #### Usage\n *\n * ```ts\n * const requireRuntime1_1_1 = throwInvalidRuntime('1.1.1');\n * WASM.prototype._wl_new_function = requireRuntime1_1_1;\n * ```\n *\n * @param version The version in which the feature was added.\n * @returns A function that will throw when called.\n */\nfunction throwInvalidRuntime(version: string) {\n return function () {\n throw new Error(\n `Feature added in version ${version}.` +\n `\\n\\t\u2192 Please use a Wonderland Engine editor version >= ${version}`\n );\n };\n}\n", "import {threads} from 'wasm-feature-detect';\nimport {WonderlandEngine} from './engine.js';\nimport {XROfferSessionOptions} from './webxr.js';\nimport {LogLevel} from './utils/logger.js';\nimport {WASM} from './wasm.js';\n\nimport {getBaseUrl} from './utils/fetch.js';\n\nexport * from './utils/index.js';\nexport * from './decorators.js';\nexport {NativeComponents} from './component.js';\nexport * from './wonderland.js';\nexport * from './engine.js';\nexport * from './webxr.js';\nexport * from './property.js';\nexport * from './prefab.js';\nexport * from './scene.js';\nexport * from './scene-gltf.js';\nexport * from './resources/resource.js';\nexport * from './resources/material-manager.js';\nexport * from './resources/mesh-manager.js';\nexport {TextureManager} from './resources/texture-manager.js';\nexport * from './types.js';\nexport * from './version.js';\nexport * from './wasm.js';\n\n/** Relative default path for the loading screen. */\nconst LOADING_SCREEN_PATH = 'WonderlandRuntime-LoadingScreen.bin';\n\nfunction loadScript(scriptURL: string): Promise {\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n const node = document.body.appendChild(s);\n s.onload = () => {\n document.body.removeChild(node);\n resolve();\n };\n s.onerror = (e) => {\n document.body.removeChild(node);\n reject(e);\n };\n s.src = scriptURL;\n });\n}\n\n/**\n * Checks for support of WebAssembly features.\n *\n * @returns An object containing booleans for supported features.\n */\nasync function detectFeatures(): Promise<{\n threadsSupported: boolean;\n}> {\n let threadsSupported = await threads();\n if (threadsSupported) {\n if (self.crossOriginIsolated) {\n console.log('WASM Threads is supported');\n } else {\n console.warn(\n 'WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.'\n );\n }\n } else {\n console.warn('WASM Threads is not supported');\n }\n\n threadsSupported = threadsSupported && self.crossOriginIsolated;\n return {\n threadsSupported,\n };\n}\n\n/**\n * Options to forward to {@link loadRuntime}\n */\nexport interface LoadRuntimeOptions {\n /**\n * @deprecated Ignored, SIMD in the runtime is always enabled as it's supported on\n * all modern browsers.\n */\n simd: boolean;\n /**\n * If `true`, forces the runtime to load the threads-compatible version.\n * If `undefined`, performs browser feature detection to check whether threads are supported or not.\n */\n threads: boolean;\n /**\n * If `true`, forces the runtime to load the webgpu-compatible version.\n */\n webgpu: boolean;\n /**\n * If `true`, forces the runtime to load a physx-compatible version.\n *\n * **Note**: If your scene uses physx, you **must** enable this option.\n */\n physx: boolean;\n /**\n * If `true`, forces the runtime to load a loader-compatible version.\n *\n * This option allows to load gltf data at runtime.\n */\n loader: boolean;\n\n /**\n * Whether to instantiate the runtime with a renderer.\n *\n * Disabling this is mostly meant for testing purposes (increased speed).\n *\n * @hidden\n */\n renderer: boolean;\n\n /**\n * Path to the loading screen. If `undefined`, defaults to 'WonderlandRuntime-LoadingScreen.bin'.\n * Beware that these are special .bin files signed by Wonderland. Customizing\n * requires an enterprise license, please reach out for more information.\n */\n loadingScreen: string;\n\n /**\n * Default framebuffer scale factor. This can later be changed using\n * {@link WonderlandEngine.xrFramebufferScaleFactor}\n */\n xrFramebufferScaleFactor: number;\n\n /**\n * Whether to advertise AR/VR session support to the browser.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * If `undefined`, no XR session is automatically offered to the browser.\n *\n * @since 1.1.5\n */\n xrOfferSession: XROfferSessionOptions;\n\n /**\n * Canvas id or element. If this is `undefined`, looks for a canvas with id 'canvas'.\n */\n canvas: string;\n\n /**\n * Logging level(s) to enable.\n *\n * By default, all levels are enabled.\n */\n logs: LogLevel[];\n}\n\n/**\n * Load the runtime using the WASM and JS files.\n *\n * @param runtime The runtime base string, e.g,: `WonderlandRuntime-loader-physx`.\n * @param options Options to modify the loading behaviour.\n *\n * @returns A promise that resolves when the engine is ready to be used.\n */\nexport async function loadRuntime(\n runtime: string,\n options: Partial = {}\n): Promise {\n const baseURL = getBaseUrl(runtime);\n\n const {threadsSupported} = await detectFeatures();\n const {\n threads = threadsSupported,\n webgpu = false,\n physx = false,\n loader = false,\n renderer = true,\n xrFramebufferScaleFactor = 1.0,\n xrOfferSession = null,\n loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH,\n canvas = 'canvas',\n logs = [LogLevel.Info, LogLevel.Warn, LogLevel.Error],\n } = options;\n\n const variant = [];\n if (loader) variant.push('loader');\n if (physx) variant.push('physx');\n if (threads) variant.push('threads');\n if (webgpu) variant.push('webgpu');\n\n const variantStr = variant.join('-');\n\n let filename = runtime;\n if (variantStr) filename = `${filename}-${variantStr}`;\n\n const download = function (\n filename: string,\n errorMessage: string\n ): Promise {\n return fetch(filename)\n .then((r) => {\n if (!r.ok) return Promise.reject(errorMessage);\n return r.arrayBuffer();\n })\n .catch((_) => Promise.reject(errorMessage));\n };\n\n const [wasmData, loadingScreenData] = await Promise.all([\n download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`),\n download(loadingScreen, 'Failed to fetch loading screen file'),\n ]);\n\n const canvasElement = document.getElementById(canvas) as HTMLCanvasElement;\n if (!canvasElement) {\n throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas}'`);\n }\n if (!(canvasElement instanceof HTMLCanvasElement)) {\n throw new Error(`loadRuntime(): HTML element '${canvas}' must be a canvas`);\n }\n\n const wasm = new WASM(threads);\n (wasm.wasm as ArrayBuffer) = wasmData;\n (wasm.canvas as HTMLCanvasElement) = canvasElement;\n wasm._log.levels.enable(...logs);\n\n if (!window._WL) {\n window._WL = {runtimes: {}};\n }\n const runtimes = window._WL.runtimes;\n\n /* Global identifier of this runtime in `window`. */\n const runtimeGlobalId = variantStr ? variantStr : 'default';\n /* Only load the runtime if not previously loaded in the page */\n if (!runtimes[runtimeGlobalId]) {\n await loadScript(`${filename}.js`);\n runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime!;\n window.instantiateWonderlandRuntime = undefined;\n }\n await runtimes[runtimeGlobalId](wasm);\n\n if (webgpu) {\n const WebGPU = (wasm as any).WebGPU;\n const adapter = await (navigator as any).gpu.requestAdapter();\n const adapterId = WebGPU.mgrAdapter.create(adapter);\n const desc = {\n requiredFeatures: ['texture-compression-bc', 'depth32float-stencil8'],\n };\n const device = await adapter.requestDevice(desc);\n const deviceId = WebGPU.mgrDevice.create(adapter);\n (wasm.preinitializedWebGPUDevice as any) = device;\n\n const context = canvasElement.getContext('webgpu')! as any;\n\n context.configure({\n device: device,\n format: (navigator as any).gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n }\n\n const engine = new WonderlandEngine(wasm, loadingScreenData, renderer);\n\n await engine.webxr.init(xrFramebufferScaleFactor, xrOfferSession);\n\n engine.autoResizeCanvas = true;\n engine.start();\n\n return engine;\n}\n", "import { Component, Type } from '@wonderlandengine/api';\n/**\n * 8thwall camera component.\n *\n * Sets up the 8thwall pipeline and retrieves tracking events to place an\n * object at the location of the tracked AR camera / mobile device.\n *\n * Use this for SLAM tracking based on 8thwall.\n *\n * Make sure to enable 8thwall in \"Project Settings\" > \"AR\". See also the\n * [AR Getting Started Guide](/getting-started/quick-start-ar)\n *\n *\n * Currently only supports world-tracking (SLAM) using BACK camera.\n *\n * - remove any occurrences of the old 8thwall-camera component in the editor\n * - Add this component to NonVrCamera\n *\n * IMPORTANT!\n * - until it get's fixed, select 'customIndexHtml' in the project settings\n * - open a generated index.html and crossorigin=\"anonymous\" attribute to the + diff --git a/js/bullet-physics.js b/js/bullet-physics.js index ffeb4a4..4a07772 100644 --- a/js/bullet-physics.js +++ b/js/bullet-physics.js @@ -52,6 +52,9 @@ export class BulletPhysics extends Component { return; } + // Se já marcou ponto, não faz mais nada + if (this.scored) return; + //update position this.object.getPositionWorld(this.position); //deactivate bullet if through the floor @@ -75,17 +78,30 @@ export class BulletPhysics extends Component { let t = overlaps[i].object.getComponent("score-trigger"); if (t && !this.scored) { t.onHit(); + this.scored = true; + state.zombiesKilledInWave++; this.destroyBullet(0); - return; + break; } } } destroyBullet(time) { - if (time == 0) { - this.object.destroy(); + // 1) desativa render e colisão na hora + const meshComp = this.object.getComponent("mesh", 0); + if (meshComp) meshComp.active = false; + if (this.collision) this.collision.active = false; + + // 2) opcional: desativa o próprio objeto pra sair da árvore imediatamente + this.object.active = false; + + // 3) destrói de fato (ou remove da cena) + if (time === 0) { + // remove imediatamente + this.engine.scene.removeObject(this.object); + // ou: this.object.destroy(); } else { setTimeout(() => { - this.object.destroy() + this.engine.scene.removeObject(this.object); }, time); } } diff --git a/js/mouse-spawner.js b/js/mouse-spawner.js index f426c4a..9922fdc 100644 --- a/js/mouse-spawner.js +++ b/js/mouse-spawner.js @@ -38,7 +38,7 @@ export class MouseSpawner extends Component { static onRegister(engine) { engine.registerComponent(ScoreTrigger); engine.registerComponent(HowlerAudioSource); - engine.registerComponent(MouseMover); + // engine.registerComponent(MouseMover); } time = 0; @@ -96,44 +96,57 @@ export class MouseSpawner extends Component { this.object.resetPosition(); } + spawnTarget() { + // cria o objeto no mesmo ponto do spawner const obj = this.engine.scene.addObject(); obj.setTransformLocal(this.object.getTransformWorld(tempQuat2)); - - // Adjust scale to be more reasonable for collision detection + + // --- NOVO: calcula deslocamento aleatório no plano XZ --- + const angle = Math.random() * 2 * Math.PI; + const dist = Math.random() * 5.0; + const dx = Math.cos(angle) * dist; + const dz = Math.sin(angle) * dist; + // aplica ao objeto + obj.translateLocal([dx, 0, dz]); + + // escala, mesh, material etc. obj.scaleLocal([1, 1, 1]); - const mesh = obj.addComponent('mesh'); - mesh.mesh = this.targetMesh; + const mesh = obj.addComponent("mesh"); + mesh.mesh = this.targetMesh; mesh.material = this.targetMaterial; - mesh.active = true; + mesh.active = true; + + // movimento obj.addComponent(MouseMover); - - // Rotate the model to be right side up + + // corrige rotação obj.rotateAxisAngleDegLocal([1, 0, 0], 180); - + + // animação de spawn if (this.spawnAnimation) { const anim = obj.addComponent("animation"); anim.playCount = 1; anim.animation = this.spawnAnimation; - anim.active = true; + anim.active = true; anim.play(); } - - /* Add scoring trigger */ + + // gatilho de pontuação const trigger = this.engine.scene.addObject(obj); trigger.addComponent("collision", { collider: WL.Collider.Sphere, - extents: [1.5, 1.5, 1.5], - group: 1 << 0, - active: true, + extents: [1.5, 1.5, 1.5], + group: 1 << 0, + active: true, }); - trigger.translateLocal([0, 1, 0]); trigger.addComponent(ScoreTrigger, { particles: this.particles }); - + obj.setDirty(); this.targets.push(obj); } + }; diff --git a/js/spawn-mover.js b/js/spawn-mover.js index 37b2229..1bf3901 100644 --- a/js/spawn-mover.js +++ b/js/spawn-mover.js @@ -1,16 +1,3 @@ -/* - Copyright 2021. Futurewei Technologies Inc. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http: www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - import { Component, Type } from "@wonderlandengine/api"; import { vec3, quat2 } from "gl-matrix"; @@ -32,7 +19,7 @@ export class SpawnMover extends Component { this.pointB = [0, 0, 0]; this.moveDuration = 1; - this.speed = 3; + this.speed = 0.2; this.travelDistance = this.moveDuration * this.speed; quat2.getTranslation(this.currentPos, this.object.transformLocal); @@ -42,37 +29,37 @@ export class SpawnMover extends Component { } update(dt) { - if (isNaN(dt)) return; + // if (isNaN(dt)) return; - this.time += dt; - if (this.time >= this.moveDuration) { - this.time -= this.moveDuration; + // this.time += dt; + // if (this.time >= this.moveDuration) { + // this.time -= this.moveDuration; - this.pointA = this.currentPos; - let x = Math.random() * this.travelDistance; - let z = Math.sqrt(Math.pow(this.travelDistance, 2) - Math.pow(x, 2)); + // this.pointA = this.currentPos; + // let x = Math.random() * this.travelDistance; + // let z = Math.sqrt(Math.pow(this.travelDistance, 2) - Math.pow(x, 2)); - let distanceFromOrigin = vec3.length(this.pointA); - if (distanceFromOrigin > 20) { - if (this.pointA[0] >= 14) { - x *= -1; - } - if (this.pointA[2] >= 14) { - z *= -1; - } - } else { - const randomNegative1 = Math.round(Math.random()) * 2 - 1; - const randomNegative2 = Math.round(Math.random()) * 2 - 1; - x *= randomNegative1 - z *= randomNegative2; - } - vec3.add(this.pointB, this.pointA, [x, 0, z]); - } + // let distanceFromOrigin = vec3.length(this.pointA); + // if (distanceFromOrigin > 20) { + // if (this.pointA[0] >= 14) { + // x *= -1; + // } + // if (this.pointA[2] >= 14) { + // z *= -1; + // } + // } else { + // const randomNegative1 = Math.round(Math.random()) * 2 - 1; + // const randomNegative2 = Math.round(Math.random()) * 2 - 1; + // x *= randomNegative1 + // z *= randomNegative2; + // } + // vec3.add(this.pointB, this.pointA, [x, 0, z]); + // } - this.object.resetPosition(); - vec3.lerp(this.currentPos, this.pointA, this.pointB, this.time); - this.object.translateLocal(this.currentPos); + // this.object.resetPosition(); + // vec3.lerp(this.currentPos, this.pointA, this.pointB, this.time); + // this.object.translateLocal(this.currentPos); } }; diff --git a/js/wasd-controls-custom.js b/js/wasd-controls-custom.js index 1ea3083..56221be 100644 --- a/js/wasd-controls-custom.js +++ b/js/wasd-controls-custom.js @@ -1,19 +1,7 @@ -/* - Copyright 2021. Futurewei Technologies Inc. All rights reserved. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http: www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ import { Component, Type } from "@wonderlandengine/api"; import { vec3 } from "gl-matrix"; /** - * Basic movement with W/A/S/D keys. + * Basic movement with W/A/S/D keys, with boundary limits relative to initial center. */ export class WasdControlsCustom extends Component { static TypeName = "wasd-controls-custom"; @@ -21,106 +9,122 @@ export class WasdControlsCustom extends Component { /** Movement speed in m/s. */ speed: { type: Type.Float, default: 0.1 }, /** Object of which the orientation is used to determine forward direction */ - headObject: { type: Type.Object } + headObject: { type: Type.Object }, + /** Maximum distance from center on X and Z axes */ + boundaryLimit: { type: Type.Float, default: 12.0 } } - init() { this.up = false; this.right = false; this.down = false; this.left = false; + // Store initial center position in local space + this.centerPos = vec3.create(); + if (this.headObject) { + this.headObject.getPositionLocal(this.centerPos); + } + window.addEventListener('keydown', this.press.bind(this)); window.addEventListener('keyup', this.release.bind(this)); } update() { + if (!this.headObject) return; + + if (this.up || this.right || this.down || this.left) { + const direction = vec3.create(); - if (this.up || this.right || this.down || this.left /* only move if key is pressed */) { - let direction = [0, 0, 0]; - - let forwardVec = []; - this.object.getForward(forwardVec); /* Get player forward */ - forwardVec[1] = 0; /* Ignore height */ - let backVec = [0, 0, 0]; - - if (forwardVec[2] == 1 /* if z = +1 */) { - forwardVec[2] = this.speed; - backVec = [0, 0, -this.speed]; - } else if (forwardVec[2] == -1 /* if z = -1 */) { - forwardVec[2] = -this.speed; - backVec = [0, 0, this.speed]; - } else /* calculate for all other cases */ { - let angle = vec3.angle([0, 0, -1], forwardVec); /* Get angle relative to -Z */ - - let xPolarity = -1; - let zPolarity = -1; - - if (forwardVec[0] > 0) xPolarity = 1; - if (forwardVec[2] > 0) zPolarity = 1; - - //set x-magnitude for forward and back - forwardVec[0] = xPolarity * Math.abs(Math.sin(angle)) * this.speed; - backVec[0] = -forwardVec[0]; - //set z-magnitude for forward and back - forwardVec[2] = zPolarity * Math.abs(Math.cos(angle)) * this.speed; - backVec[2] = -forwardVec[2]; + // Calculate forward/back vectors + const forward = vec3.fromValues(0,0,0); + this.object.getForward(forward); + forward[1] = 0; + const back = vec3.create(); + + if (vec3.equals(forward, [0, 0, 1])) { + vec3.set(forward, 0, 0, this.speed); + vec3.set(back, 0, 0, -this.speed); + } else if (vec3.equals(forward, [0, 0, -1])) { + vec3.set(forward, 0, 0, -this.speed); + vec3.set(back, 0, 0, this.speed); + } else { + const angleF = vec3.angle([0, 0, -1], forward); + const xPolF = forward[0] > 0 ? 1 : -1; + const zPolF = forward[2] > 0 ? 1 : -1; + forward[0] = xPolF * Math.abs(Math.sin(angleF)) * this.speed; + forward[2] = zPolF * Math.abs(Math.cos(angleF)) * this.speed; + back[0] = -forward[0]; + back[2] = -forward[2]; } - let rightVec = []; - this.object.getRight(rightVec); - rightVec[1] = 0; - let leftVec = [0, 0, 0]; - if (rightVec[0] == 1) { - rightVec[0] = this.speed; - leftVec = [-this.speed, 0, 0]; - } else if (rightVec[0] == -1) { - rightVec[0] = -this.speed; - leftVec = [this.speed, 0, 0]; + + // Calculate right/left vectors + const rightV = vec3.fromValues(0,0,0); + this.object.getRight(rightV); + rightV[1] = 0; + const leftV = vec3.create(); + + if (vec3.equals(rightV, [1, 0, 0])) { + vec3.set(rightV, this.speed, 0, 0); + vec3.set(leftV, -this.speed, 0, 0); + } else if (vec3.equals(rightV, [-1, 0, 0])) { + vec3.set(rightV, -this.speed, 0, 0); + vec3.set(leftV, this.speed, 0, 0); } else { - let angle = vec3.angle([-1, 0, 0], rightVec); - let xPolarity = -1; - let zPolarity = -1; - //set x-magnitude for forward and back - if (rightVec[0] > 0) xPolarity = 1; - rightVec[0] = xPolarity * Math.abs(Math.cos(angle)) * this.speed; - leftVec[0] = -rightVec[0]; - //set z-magnitude for forward and back - if (rightVec[2] > 0) zPolarity = 1; - rightVec[2] = zPolarity * Math.abs(Math.sin(angle)) * this.speed; - leftVec[2] = -rightVec[2]; + const angleR = vec3.angle([-1, 0, 0], rightV); + const xPolR = rightV[0] > 0 ? 1 : -1; + const zPolR = rightV[2] > 0 ? 1 : -1; + rightV[0] = xPolR * Math.abs(Math.cos(angleR)) * this.speed; + rightV[2] = zPolR * Math.abs(Math.sin(angleR)) * this.speed; + leftV[0] = -rightV[0]; + leftV[2] = -rightV[2]; } - if (this.up) vec3.add(direction, direction, forwardVec); - if (this.down) vec3.add(direction, direction, backVec); - if (this.left) vec3.add(direction, direction, leftVec); - if (this.right) vec3.add(direction, direction, rightVec); + if (this.up) vec3.add(direction, direction, forward); + if (this.down) vec3.add(direction, direction, back); + if (this.left) vec3.add(direction, direction, leftV); + if (this.right) vec3.add(direction, direction, rightV); - this.headObject.translate(direction); + // Compute new position and clamp within boundaries + const newPos = vec3.create(); + this.headObject.getPositionLocal(newPos); + vec3.add(newPos, newPos, direction); + + // Clamp X and Z relative to center + const minX = this.centerPos[0] - this.boundaryLimit; + const maxX = this.centerPos[0] + this.boundaryLimit; + const minZ = this.centerPos[2] - this.boundaryLimit; + const maxZ = this.centerPos[2] + this.boundaryLimit; + + newPos[0] = Math.min(Math.max(newPos[0], minX), maxX); + newPos[2] = Math.min(Math.max(newPos[2], minZ), maxZ); + + // Apply clamped position + this.headObject.setPositionLocal(newPos); } } press(e) { if (e.keyCode === 38 /* up */ || e.keyCode === 87 /* w */ || e.keyCode === 90 /* z */) { - this.up = true + this.up = true; } else if (e.keyCode === 39 /* right */ || e.keyCode === 68 /* d */) { - this.right = true + this.right = true; } else if (e.keyCode === 40 /* down */ || e.keyCode === 83 /* s */) { - this.down = true + this.down = true; } else if (e.keyCode === 37 /* left */ || e.keyCode === 65 /* a */ || e.keyCode === 81 /* q */) { - this.left = true + this.left = true; } } release(e) { - if (e.keyCode === 38 /* up */ || e.keyCode === 87 /* w */ || e.keyCode === 90 /* z */) { - this.up = false - } else if (e.keyCode === 39 /* right */ || e.keyCode === 68 /* d */) { - this.right = false - } else if (e.keyCode === 40 /* down */ || e.keyCode === 83 /* s */) { - this.down = false - } else if (e.keyCode === 37 /* left */ || e.keyCode === 65 /* a */ || e.keyCode === 81 /* q */) { - this.left = false + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + this.up = false; + } else if (e.keyCode === 39 || e.keyCode === 68) { + this.right = false; + } else if (e.keyCode === 40 || e.keyCode === 83) { + this.down = false; + } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + this.left = false; } } -}; \ No newline at end of file +}; From 78b0365fb2b8d4532d197eb4c8cd8300e7963882 Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 30 Jun 2025 15:49:26 -0300 Subject: [PATCH 07/10] test --- ...0_06-40-16.wlp => 2025-06-30_07-20-48.wlp} | 79 ++++--- ...0_06-29-36.wlp => 2025-06-30_07-37-52.wlp} | 195 +++++++----------- MouseDefense.wlp | 110 ++-------- deploy/MyWonderland-bundle.js | 109 +++++----- deploy/MyWonderland-bundle.js.map | 4 +- deploy/MyWonderland.bin | Bin 1195260 -> 1195036 bytes deploy/index.html | 4 +- js/wasd-controls-custom.js | 149 ++++++------- 8 files changed, 259 insertions(+), 391 deletions(-) rename .autosave/MouseDefense/{2025-06-30_06-40-16.wlp => 2025-06-30_07-20-48.wlp} (99%) rename .autosave/MouseDefense/{2025-06-30_06-29-36.wlp => 2025-06-30_07-37-52.wlp} (98%) diff --git a/.autosave/MouseDefense/2025-06-30_06-40-16.wlp b/.autosave/MouseDefense/2025-06-30_07-20-48.wlp similarity index 99% rename from .autosave/MouseDefense/2025-06-30_06-40-16.wlp rename to .autosave/MouseDefense/2025-06-30_07-20-48.wlp index 9364f45..ba22971 100644 --- a/.autosave/MouseDefense/2025-06-30_06-40-16.wlp +++ b/.autosave/MouseDefense/2025-06-30_07-20-48.wlp @@ -60,21 +60,16 @@ "active": true } ], - "translation": [ - 2.9769601, - 2.384185791015625e-7, - 2.0148322 + "scaling": [ + 60.0, + 60.0000267, + 60.0000038 ], "rotation": [ -0.707264, 0.0, 0.0, 0.7069494 - ], - "scaling": [ - 60.0, - 60.0000267, - 60.0000038 ] }, "17": { @@ -1691,7 +1686,23 @@ ] }, "970": { - "name": "Scoreboard" + "name": "Scoreboard", + "translation": [ + 0.0, + 0.0123977, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] }, "971": { "name": "ScoreText", @@ -1916,7 +1927,23 @@ "name": "RootNode", "file": "assets\\City Builder Bits\\Building-g15lpKh4li.glb" }, - "name": "Buildings" + "name": "Buildings", + "translation": [ + -2.3702249, + 0.0, + 1.259921 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] }, "1004": { "link": { @@ -1927,12 +1954,12 @@ "translation": [ 12.5629701, -0.0, - 15.9697208 + 16.8205375 ], "rotation": [ 7.549790126404332e-8, 1.0, - 3.139151090181258e-7, + 3.139162174647936e-7, 0.0 ], "scaling": [ @@ -1949,14 +1976,14 @@ "parent": "1003", "translation": [ 7.3093237, - -0.0, - 15.967081 + 0.0, + 16.8178977 ], "rotation": [ 7.549790836947069e-8, 1.0, - -9.735359896012596e-8, - -0.0 + -9.735351369499769e-8, + 0.0 ], "scaling": [ 300.0, @@ -1977,13 +2004,13 @@ ], "translation": [ 1.230983, - 0.0, - 15.9919338 + -0.0, + 16.8427505 ], "rotation": [ 7.549790836947069e-8, 1.0, - -6.715645213262178e-7, + -6.715647486998932e-7, -0.0 ] }, @@ -2000,14 +2027,14 @@ ], "translation": [ -4.250626, - 0.0000101, - 15.9798879 + 0.00001, + 16.8307056 ], "rotation": [ -7.54979225803254e-8, 1.0, - -7.54532436531008e-8, - 0.0 + -7.541544277955836e-8, + -0.0 ] }, "1012": { @@ -2024,12 +2051,12 @@ "translation": [ -8.6320924, -0.0, - 16.0203342 + 16.8711509 ], "rotation": [ -7.549790126404332e-8, 1.0, - 7.549947156348935e-8, + 7.550039526904585e-8, -0.0 ] }, diff --git a/.autosave/MouseDefense/2025-06-30_06-29-36.wlp b/.autosave/MouseDefense/2025-06-30_07-37-52.wlp similarity index 98% rename from .autosave/MouseDefense/2025-06-30_06-29-36.wlp rename to .autosave/MouseDefense/2025-06-30_07-37-52.wlp index 61636e8..b619060 100644 --- a/.autosave/MouseDefense/2025-06-30_06-29-36.wlp +++ b/.autosave/MouseDefense/2025-06-30_07-37-52.wlp @@ -60,21 +60,16 @@ "active": true } ], - "translation": [ - 2.9769601, - 2.384185791015625e-7, - 2.0148322 + "scaling": [ + 60.0, + 60.0000267, + 60.0000038 ], "rotation": [ -0.707264, 0.0, 0.0, 0.7069494 - ], - "scaling": [ - 60.0, - 60.0000267, - 60.0000038 ] }, "17": { @@ -1685,13 +1680,29 @@ 0.7071114 ], "translation": [ - 0.0, - -4.76837158203125e-7, + -22.3248748, + -9.5367431640625e-7, 8.5837488 ] }, "970": { - "name": "Scoreboard" + "name": "Scoreboard", + "translation": [ + 0.0, + 1.2647973, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] }, "971": { "name": "ScoreText", @@ -1916,7 +1927,23 @@ "name": "RootNode", "file": "assets\\City Builder Bits\\Building-g15lpKh4li.glb" }, - "name": "Buildings" + "name": "Buildings", + "translation": [ + -2.3702249, + 0.0, + 1.259921 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] }, "1004": { "link": { @@ -1927,12 +1954,12 @@ "translation": [ 12.5629701, -0.0, - 15.9697208 + 16.8205375 ], "rotation": [ 7.549790126404332e-8, 1.0, - 3.139151090181258e-7, + 3.139162174647936e-7, 0.0 ], "scaling": [ @@ -1949,14 +1976,14 @@ "parent": "1003", "translation": [ 7.3093237, - -0.0, - 15.967081 + 0.0, + 16.8178977 ], "rotation": [ 7.549790836947069e-8, 1.0, - -9.735359896012596e-8, - -0.0 + -9.735351369499769e-8, + 0.0 ], "scaling": [ 300.0, @@ -1977,13 +2004,13 @@ ], "translation": [ 1.230983, - 0.0, - 15.9919338 + -0.0, + 16.8427505 ], "rotation": [ 7.549790836947069e-8, 1.0, - -6.715645213262178e-7, + -6.715647486998932e-7, -0.0 ] }, @@ -2000,14 +2027,14 @@ ], "translation": [ -4.250626, - 0.0000101, - 15.9798879 + 0.00001, + 16.8307056 ], "rotation": [ -7.54979225803254e-8, 1.0, - -7.54532436531008e-8, - 0.0 + -7.541544277955836e-8, + -0.0 ] }, "1012": { @@ -2024,12 +2051,12 @@ "translation": [ -8.6320924, -0.0, - 16.0203342 + 16.8711509 ], "rotation": [ -7.549790126404332e-8, 1.0, - 7.549947156348935e-8, + 7.550039526904585e-8, -0.0 ] }, @@ -2426,90 +2453,6 @@ ], "parent": "1003" }, - "1011": { - "name": "Scoreboard", - "parent": "129", - "translation": [ - 0.0, - -1.75, - -3.9999997 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "772": { - "name": "ScoreText", - "parent": "1011", - "components": [ - { - "type": "text", - "text": { - "text": "Eliminate all 20 rats.", - "effect": "outline" - } - }, - { - "type": "score-display" - } - ], - "translation": [ - 0.0, - 2.3104021, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.5, - 1.5, - 1.5 - ] - }, - "730": { - "name": "Shots", - "parent": "1011", - "components": [ - { - "type": "text", - "text": { - "text": "Shots Fired: 0", - "effect": "outline" - } - }, - { - "type": "shot-counter" - } - ], - "translation": [ - 0.0, - 1.9985342, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.5, - 1.5, - 1.5 - ] - }, "1031": { "link": { "name": "Mouse", @@ -2539,19 +2482,19 @@ "name": "MouseSpawner", "scaling": [ 0.2, - 0.1999794, - 0.1999805 + 0.1999787, + 0.1999798 ], "rotation": [ - 0.7070993, + 0.7070986, 0.0, 0.0, - 0.7071142 + 0.7071149 ], "translation": [ - 6.6769571, - 4.76837158203125e-7, - 9.2442741 + 19.7182445, + 9.5367431640625e-7, + 9.2442646 ] }, "1032": { @@ -2586,19 +2529,19 @@ "name": "MouseSpawner", "scaling": [ 0.2, - 0.1999786, - 0.1999797 + 0.1999776, + 0.1999787 ], "rotation": [ - 0.7070975, + 0.7070955, 0.0, 0.0, - 0.7071159 + 0.7071179 ], "translation": [ - -5.4123487, - -4.76837158203125e-7, - 8.5032005 + 2.1427974, + 0.0, + 14.1278486 ] } }, diff --git a/MouseDefense.wlp b/MouseDefense.wlp index a94d5c5..b619060 100644 --- a/MouseDefense.wlp +++ b/MouseDefense.wlp @@ -1686,7 +1686,23 @@ ] }, "970": { - "name": "Scoreboard" + "name": "Scoreboard", + "translation": [ + 0.0, + 1.2647973, + 0.0 + ], + "rotation": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "scaling": [ + 1.0, + 1.0, + 1.0 + ] }, "971": { "name": "ScoreText", @@ -1964,9 +1980,9 @@ 16.8178977 ], "rotation": [ - 7.549790836947068e-8, + 7.549790836947069e-8, 1.0, - -9.735351369499767e-8, + -9.735351369499769e-8, 0.0 ], "scaling": [ @@ -1992,7 +2008,7 @@ 16.8427505 ], "rotation": [ - 7.549790836947068e-8, + 7.549790836947069e-8, 1.0, -6.715647486998932e-7, -0.0 @@ -2040,7 +2056,7 @@ "rotation": [ -7.549790126404332e-8, 1.0, - 7.550039526904584e-8, + 7.550039526904585e-8, -0.0 ] }, @@ -2437,90 +2453,6 @@ ], "parent": "1003" }, - "1011": { - "name": "Scoreboard", - "parent": "129", - "translation": [ - 0.0, - -1.75, - -3.9999997 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "772": { - "name": "ScoreText", - "parent": "1011", - "components": [ - { - "type": "text", - "text": { - "text": "Eliminate all 20 rats.", - "effect": "outline" - } - }, - { - "type": "score-display" - } - ], - "translation": [ - 0.0, - 2.3104021, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.5, - 1.5, - 1.5 - ] - }, - "730": { - "name": "Shots", - "parent": "1011", - "components": [ - { - "type": "text", - "text": { - "text": "Shots Fired: 0", - "effect": "outline" - } - }, - { - "type": "shot-counter" - } - ], - "translation": [ - 0.0, - 1.9985342, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.5, - 1.5, - 1.5 - ] - }, "1031": { "link": { "name": "Mouse", diff --git a/deploy/MyWonderland-bundle.js b/deploy/MyWonderland-bundle.js index 04fdadc..4b5e131 100644 --- a/deploy/MyWonderland-bundle.js +++ b/deploy/MyWonderland-bundle.js @@ -13783,6 +13783,9 @@ var WasdControlsCustom = class extends Component3 { this.right = false; this.down = false; this.left = false; + this.verticalVelocity = 0; + this.isJumping = false; + this.jumpsRemaining = this.maxJumps + 1; this.centerPos = vec3_exports.create(); if (this.headObject) { this.headObject.getPositionLocal(this.centerPos); @@ -13790,100 +13793,86 @@ var WasdControlsCustom = class extends Component3 { window.addEventListener("keydown", this.press.bind(this)); window.addEventListener("keyup", this.release.bind(this)); } - update() { + update(dt) { if (!this.headObject) return; + const direction2 = vec3_exports.create(); if (this.up || this.right || this.down || this.left) { - const direction2 = vec3_exports.create(); const forward = vec3_exports.fromValues(0, 0, 0); this.object.getForward(forward); forward[1] = 0; - const back = vec3_exports.create(); - if (vec3_exports.equals(forward, [0, 0, 1])) { - vec3_exports.set(forward, 0, 0, this.speed); - vec3_exports.set(back, 0, 0, -this.speed); - } else if (vec3_exports.equals(forward, [0, 0, -1])) { - vec3_exports.set(forward, 0, 0, -this.speed); - vec3_exports.set(back, 0, 0, this.speed); - } else { - const angleF = vec3_exports.angle([0, 0, -1], forward); - const xPolF = forward[0] > 0 ? 1 : -1; - const zPolF = forward[2] > 0 ? 1 : -1; - forward[0] = xPolF * Math.abs(Math.sin(angleF)) * this.speed; - forward[2] = zPolF * Math.abs(Math.cos(angleF)) * this.speed; - back[0] = -forward[0]; - back[2] = -forward[2]; - } + vec3_exports.normalize(forward, forward); + vec3_exports.scale(forward, forward, this.speed); const rightV = vec3_exports.fromValues(0, 0, 0); this.object.getRight(rightV); rightV[1] = 0; - const leftV = vec3_exports.create(); - if (vec3_exports.equals(rightV, [1, 0, 0])) { - vec3_exports.set(rightV, this.speed, 0, 0); - vec3_exports.set(leftV, -this.speed, 0, 0); - } else if (vec3_exports.equals(rightV, [-1, 0, 0])) { - vec3_exports.set(rightV, -this.speed, 0, 0); - vec3_exports.set(leftV, this.speed, 0, 0); - } else { - const angleR = vec3_exports.angle([-1, 0, 0], rightV); - const xPolR = rightV[0] > 0 ? 1 : -1; - const zPolR = rightV[2] > 0 ? 1 : -1; - rightV[0] = xPolR * Math.abs(Math.cos(angleR)) * this.speed; - rightV[2] = zPolR * Math.abs(Math.sin(angleR)) * this.speed; - leftV[0] = -rightV[0]; - leftV[2] = -rightV[2]; - } + vec3_exports.normalize(rightV, rightV); + vec3_exports.scale(rightV, rightV, this.speed); if (this.up) vec3_exports.add(direction2, direction2, forward); if (this.down) - vec3_exports.add(direction2, direction2, back); - if (this.left) - vec3_exports.add(direction2, direction2, leftV); + vec3_exports.sub(direction2, direction2, forward); if (this.right) vec3_exports.add(direction2, direction2, rightV); - const newPos = vec3_exports.create(); - this.headObject.getPositionLocal(newPos); - vec3_exports.add(newPos, newPos, direction2); - const minX = this.centerPos[0] - this.boundaryLimit; - const maxX = this.centerPos[0] + this.boundaryLimit; - const minZ = this.centerPos[2] - this.boundaryLimit; - const maxZ = this.centerPos[2] + this.boundaryLimit; - newPos[0] = Math.min(Math.max(newPos[0], minX), maxX); - newPos[2] = Math.min(Math.max(newPos[2], minZ), maxZ); - this.headObject.setPositionLocal(newPos); + if (this.left) + vec3_exports.sub(direction2, direction2, rightV); + } + const newPos = vec3_exports.create(); + this.headObject.getPositionLocal(newPos); + vec3_exports.add(newPos, newPos, direction2); + this.verticalVelocity -= this.gravity * dt; + newPos[1] += this.verticalVelocity * dt; + if (newPos[1] <= this.groundLevel) { + newPos[1] = this.groundLevel; + this.verticalVelocity = 0; + this.jumpsRemaining = this.maxJumps + 1; + this.isJumping = false; + } else { + this.isJumping = true; } + const minX = this.centerPos[0] - this.boundaryLimit; + const maxX = this.centerPos[0] + this.boundaryLimit; + const minZ = this.centerPos[2] - this.boundaryLimit; + const maxZ = this.centerPos[2] + this.boundaryLimit; + newPos[0] = Math.min(Math.max(newPos[0], minX), maxX); + newPos[2] = Math.min(Math.max(newPos[2], minZ), maxZ); + this.headObject.setPositionLocal(newPos); } press(e) { - if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) this.up = true; - } else if (e.keyCode === 39 || e.keyCode === 68) { + else if (e.keyCode === 39 || e.keyCode === 68) this.right = true; - } else if (e.keyCode === 40 || e.keyCode === 83) { + else if (e.keyCode === 40 || e.keyCode === 83) this.down = true; - } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) this.left = true; + else if (e.keyCode === 32 && this.jumpsRemaining > 0) { + this.verticalVelocity = this.jumpForce; + this.jumpsRemaining--; } } release(e) { - if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) this.up = false; - } else if (e.keyCode === 39 || e.keyCode === 68) { + else if (e.keyCode === 39 || e.keyCode === 68) this.right = false; - } else if (e.keyCode === 40 || e.keyCode === 83) { + else if (e.keyCode === 40 || e.keyCode === 83) this.down = false; - } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { + else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) this.left = false; - } } }; __publicField(WasdControlsCustom, "TypeName", "wasd-controls-custom"); __publicField(WasdControlsCustom, "Properties", { - /** Movement speed in m/s. */ speed: { type: Type.Float, default: 0.1 }, - /** Object of which the orientation is used to determine forward direction */ headObject: { type: Type.Object }, - /** Maximum distance from center on X and Z axes */ - boundaryLimit: { type: Type.Float, default: 12 } + boundaryLimit: { type: Type.Float, default: 12 }, + gravity: { type: Type.Float, default: 9.8 }, + jumpForce: { type: Type.Float, default: 8 }, + groundLevel: { type: Type.Float, default: 0 }, + maxJumps: { type: Type.Int, default: 2 } + // número de pulos extras permitidos no ar }); // js/index.js diff --git a/deploy/MyWonderland-bundle.js.map b/deploy/MyWonderland-bundle.js.map index d1da649..4f5efd4 100644 --- a/deploy/MyWonderland-bundle.js.map +++ b/deploy/MyWonderland-bundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../node_modules/howler/dist/howler.js", "../node_modules/earcut/src/earcut.js", "../node_modules/node_modules/wasm-feature-detect/dist/esm/index.js", "../node_modules/@wonderlandengine/api/src/property.ts", "../node_modules/@wonderlandengine/api/src/decorators.ts", "../node_modules/@wonderlandengine/api/src/utils/object.ts", "../node_modules/@wonderlandengine/api/src/utils/event.ts", "../node_modules/@wonderlandengine/api/src/resources/resource.ts", "../node_modules/@wonderlandengine/api/src/utils/cbor.ts", "../node_modules/@wonderlandengine/api/src/component.ts", "../node_modules/@wonderlandengine/api/src/utils/fetch.ts", "../node_modules/@wonderlandengine/api/src/prefab.ts", "../node_modules/@wonderlandengine/api/src/utils/misc.ts", "../node_modules/@wonderlandengine/api/src/wonderland.ts", "../node_modules/@wonderlandengine/api/src/version.ts", "../node_modules/@wonderlandengine/api/src/resources/material-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/mesh-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/texture-manager.ts", "../node_modules/@wonderlandengine/api/src/webxr.ts", "../node_modules/@wonderlandengine/api/src/scene-gltf.ts", "../node_modules/@wonderlandengine/api/src/scene.ts", "../node_modules/@wonderlandengine/api/src/engine.ts", "../node_modules/@wonderlandengine/api/src/utils/bitset.ts", "../node_modules/@wonderlandengine/api/src/utils/logger.ts", "../node_modules/@wonderlandengine/api/src/wasm.ts", "../node_modules/@wonderlandengine/api/src/index.ts", "../node_modules/@wonderlandengine/components/dist/8thwall-camera.js", "../node_modules/@wonderlandengine/components/dist/utils/webxr.js", "../node_modules/@wonderlandengine/components/dist/anchor.js", "../node_modules/@wonderlandengine/components/dist/cursor-target.js", "../node_modules/gl-matrix/esm/common.js", "../node_modules/gl-matrix/esm/mat3.js", "../node_modules/gl-matrix/esm/mat4.js", "../node_modules/gl-matrix/esm/quat.js", "../node_modules/gl-matrix/esm/vec3.js", "../node_modules/gl-matrix/esm/vec4.js", "../node_modules/gl-matrix/esm/quat2.js", "../node_modules/@wonderlandengine/components/dist/hit-test-location.js", "../node_modules/@wonderlandengine/components/dist/cursor.js", "../node_modules/@wonderlandengine/components/dist/debug-object.js", "../node_modules/@wonderlandengine/components/dist/finger-cursor.js", "../node_modules/@wonderlandengine/components/dist/fixed-foveation.js", "../node_modules/@wonderlandengine/components/dist/hand-tracking.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-listener.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-source.js", "../node_modules/@wonderlandengine/components/dist/utils/utils.js", "../node_modules/@wonderlandengine/components/dist/image-texture.js", "../node_modules/@wonderlandengine/components/dist/mouse-look.js", "../node_modules/@wonderlandengine/components/dist/player-height.js", "../node_modules/@wonderlandengine/components/dist/target-framerate.js", "../node_modules/@wonderlandengine/components/dist/teleport.js", "../node_modules/@wonderlandengine/components/dist/trail.js", "../node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js", "../node_modules/@wonderlandengine/components/dist/video-texture.js", "../node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js", "../node_modules/@wonderlandengine/components/dist/plane-detection.js", "../node_modules/@wonderlandengine/components/dist/vrm.js", "../node_modules/@wonderlandengine/components/dist/wasd-controls.js", "../js/game.js", "../js/bg-music.js", "../js/bullet-physics.js", "../js/bullet-spawner.js", "../js/confetti-particles.js", "../js/hud-control.js", "../js/joystick-movement.js", "../js/mouse-look-custom.js", "../js/mouse-mover.js", "../js/score-trigger.js", "../js/mouse-spawner.js", "../js/play-again-button.js", "../js/player-location.js", "../js/score-display.js", "../js/shot-counter.js", "../js/spawn-mover.js", "../js/teleport-custom.js", "../js/wasd-controls-custom.js", "../js/index.js"], - "sourcesContent": ["/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, \u221E]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspending\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "/**\n * Component property type.\n */\nexport enum Type {\n /**\n * **Native**\n *\n * Property of a native component. Must not be used in custom components.\n *\n * @hidden\n */\n Native = 0,\n\n /**\n * **Bool**:\n *\n * Appears in the editor as a checkbox.\n *\n * Initial value is `false`, unless overridden by the `default` property.\n */\n Bool = 1,\n\n /**\n * **Int**:\n *\n * Appears in the editor as an integer input field.\n *\n * Initial value is `0`, unless overridden by the `default` property.\n */\n Int = 2,\n\n /**\n * **Float**:\n *\n * Appears in the editor as a floating point input field.\n *\n * Initial value is `0.0`, unless overridden by the `default` property.\n */\n Float = 3,\n\n /**\n * **String / Text**:\n *\n * Appears in the editor as a single-line text input field.\n *\n * Initial value is an empty string, unless overridden by the `default`\n * property.\n */\n String = 4,\n\n /**\n * **Enumeration**:\n *\n * Appears in the editor as a dropdown with given values. The additional\n * `values` parameter with selection options is mandatory.\n *\n * The property value is resolved to an **index** into the `values` array.\n *\n * Initial value is the first element in `values`, unless overridden by\n * the `default` property. The `default` value can be a string or an index\n * into `values`.\n *\n * @example\n *\n * ```js\n * camera: {type: Type.Enum, values: ['auto', 'back', 'front'], default: 'auto'},\n * ```\n */\n Enum = 5,\n\n /**\n * **Object reference**:\n *\n * Appears in the editor as an object resource selection dropdown\n * with object picker.\n *\n * Initial value is `null`.\n */\n Object = 6,\n\n /**\n * **Mesh reference**:\n *\n * Appears in the editor as a mesh resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Mesh = 7,\n\n /**\n * **Texture reference**:\n *\n * Appears in the editor as a texture resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Texture = 8,\n\n /**\n * **Material reference**:\n *\n * Appears in the editor as a material resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Material = 9,\n\n /**\n * **Animation reference**:\n *\n * Appears in the editor as an animation resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Animation = 10,\n\n /**\n * **Skin reference**:\n *\n * Appears in the editor as a skin resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Skin = 11,\n\n /**\n * **Color**:\n *\n * Appears in the editor as a color widget.\n *\n * Initial value is `[0.0, 0.0, 0.0, 1.0]`, unless overridden by the\n * `default` property.\n */\n Color = 12,\n\n /**\n * **Vector of two floats**:\n *\n * Appears in the editor as a two-element floating point input field.\n *\n * Initial value is `[0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector2 = 13,\n\n /**\n * **Vector of three floats**:\n *\n * Appears in the editor as a three-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector3 = 14,\n\n /**\n * **Vector of four floats**:\n *\n * Appears in the editor as a four-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector4 = 15,\n\n /**\n * **Array of property**:\n *\n * Appears in the editor as a list of **N** elements.\n *\n * Initial value is `[]`, unless overridden by the `default` property.\n */\n Array = 16,\n\n /**\n * **Class with sub-properties**:\n *\n * Appears in the editor as a nested properties structure.\n *\n * Initial value is `{}`, unless overridden by the `default` property.\n */\n Record = 17,\n\n /**\n * **Particle effect reference**:\n *\n * Appears in the editor as a particle effect resource selection dropdown.\n *\n * Initial value is `null`.\n */\n ParticleEffect = 18,\n\n /** @hidden */\n Count = 19,\n}\n\n/**\n * Cloning interface for component properties.\n *\n * Used for component initialization and cloning.\n */\nexport interface PropertyCloner {\n /**\n * Clone a property value.\n * @param type Type of the property.\n * @param value Value of the property.\n * @returns The cloned value.\n */\n clone(type: Type, value: any): any;\n}\n\n/**\n * Interface describing a record class used in properties.\n *\n * ```ts\n * import {property, PropertyRecord} from '@wonderlandengine/api';\n * class Record implements PropertyRecord {\n * @property.string()\n * string: string;\n * @property.record(SubRecord)\n * subrecord: SubRecord;\n * }\n * ```\n *\n * @note Implementing `PropertyRecord` isn't required.\n */\nexport interface PropertyRecord {\n new (): unknown;\n /** Static properties definition, similar to {@link Component.Properties}. */\n Properties?: Record;\n /** @hidden */\n _propertyOrder?: string[];\n}\n\n/**\n * Default cloner implementation.\n *\n * Clones array-like properties and leaves all other types unchanged.\n */\nexport class DefaultPropertyCloner implements PropertyCloner {\n clone(type: Type, value: any): any {\n switch (type) {\n case Type.Color:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n case Type.Array:\n /** @todo: Array should be deep cloned. */\n return value.slice();\n case Type.Record: {\n if (!value || !value.constructor) return value;\n\n const RecordClass = value.constructor as PropertyRecord;\n const result = new RecordClass() as Record;\n for (const key in RecordClass.Properties) {\n const prop = RecordClass.Properties[key];\n result[key] = this.clone(prop.type, value[key]);\n }\n return result;\n }\n default:\n return value;\n }\n }\n}\n\n/** Default cloner for property values. */\nexport const defaultPropertyCloner = new DefaultPropertyCloner();\n\n/**\n * Custom component property.\n *\n * For more information about component properties, have a look\n * at the {@link Component.Properties} attribute.\n */\nexport interface ComponentProperty {\n /** Property type. */\n type: Type;\n /** Default value, depending on type. */\n default?: any;\n /** Values for {@link Type.Enum} */\n values?: string[];\n /** Record definition, used if the property type is {@link Type.Record}. */\n record?: PropertyRecord;\n element?: ComponentProperty;\n required?: boolean;\n /**\n * Cloner for the property.\n *\n * If not defined, falls back to {@link defaultPropertyCloner}. To prevent\n * any cloning, set a custom cloner that passes the original value back\n * from {@link PropertyCloner.clone}. */\n cloner?: PropertyCloner;\n}\n\n/**\n * Component property namespace.\n *\n * Usage:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myBool: Property.bool(true),\n * myInt: Property.int(42),\n * myString: Property.string('Hello World!'),\n * myMesh: Property.mesh()\n * }\n * }\n * ```\n *\n * It's possible to nest properties using record, and array:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Weapon {\n * static Properties = {\n * damage: Property.float(100.0),\n * fireRate: Property.int(10)\n * }\n * }\n * class Zombie {\n * static Properties = {\n * names: Property.string('Mad Zombie'),\n * animation: Property.animation()\n * }\n * }\n *\n * class Player extends Component {\n * static Properties = {\n * weapon: Property.record(Weapon),\n * zombieTargets: Property.array(Zombie),\n * }\n * }\n * ```\n *\n * For TypeScript users, you can use the decorators instead.\n */\nexport const Property = {\n /**\n * Create an boolean property.\n *\n * @param defaultValue The default value. If not provided, defaults to `false`.\n */\n bool(defaultValue: boolean = false): ComponentProperty {\n return {type: Type.Bool, default: defaultValue};\n },\n\n /**\n * Create an integer property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0`.\n */\n int(defaultValue: number = 0): ComponentProperty {\n return {type: Type.Int, default: defaultValue};\n },\n\n /**\n * Create an float property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0.0`.\n */\n float(defaultValue: number = 0.0): ComponentProperty {\n return {type: Type.Float, default: defaultValue};\n },\n\n /**\n * Create an string property.\n *\n * @param defaultValue The default value. If not provided, defaults to `''`.\n */\n string(defaultValue = ''): ComponentProperty {\n return {type: Type.String, default: defaultValue};\n },\n\n /**\n * Create an enumeration property.\n *\n * @param values The list of values.\n * @param defaultValue The default value. Can be a string or an index into\n * `values`. If not provided, defaults to the first element.\n */\n enum(values: string[], defaultValue?: string | number): ComponentProperty {\n return {type: Type.Enum, values, default: defaultValue};\n },\n\n /** Create an {@link Object3D} reference property. */\n object(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Object, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Mesh} reference property. */\n mesh(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Mesh, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Texture} reference property. */\n texture(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Texture, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Material} reference property. */\n material(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Material, default: null, required: opts?.required ?? false};\n },\n\n /** Create an {@link Animation} reference property. */\n animation(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Animation, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Skin} reference property. */\n skin(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Skin, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link ParticleEffect} reference property. */\n particleEffect(opts?: PropertyReferenceOptions): ComponentProperty {\n return {\n type: Type.ParticleEffect,\n default: null,\n required: opts?.required ?? false,\n };\n },\n\n /**\n * Create a color property.\n *\n * @param r The red component, in the range [0; 1].\n * @param g The green component, in the range [0; 1].\n * @param b The blue component, in the range [0; 1].\n * @param a The alpha component, in the range [0; 1].\n */\n color(r = 0.0, g = 0.0, b = 0.0, a = 1.0): ComponentProperty {\n return {type: Type.Color, default: [r, g, b, a]};\n },\n\n /**\n * Create a two-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n */\n vector2(x = 0.0, y = 0.0): ComponentProperty {\n return {type: Type.Vector2, default: [x, y]};\n },\n\n /**\n * Create a three-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n */\n vector3(x = 0.0, y = 0.0, z = 0.0): ComponentProperty {\n return {type: Type.Vector3, default: [x, y, z]};\n },\n\n /**\n * Create a four-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n * @param w The w component.\n */\n vector4(x = 0.0, y = 0.0, z = 0.0, w = 0.0): ComponentProperty {\n return {type: Type.Vector4, default: [x, y, z, w]};\n },\n\n /**\n * Create a class property.\n *\n * @param definition The template class, containing sub properties.\n */\n record(definition: PropertyRecord): ComponentProperty {\n return {type: Type.Record, record: definition, default: new definition()};\n },\n\n /**\n * Create an unsized array of properties.\n *\n * @note Array properties can only contain a single element type.\n *\n * @param element The element property.\n */\n array(element: ComponentProperty): ComponentProperty {\n /** @todo: Implement ArrayBuffer, which are much faster to decode */\n return {type: Type.Array, element, default: undefined};\n },\n};\n\n/**\n * Options to create a reference property, i.e.,\n * object, mesh, animation, skin, etc...\n */\nexport interface PropertyReferenceOptions {\n /** If `true`, the component will throw if the property isn't initialized. */\n required?: boolean;\n}\n\n/** All the keys that exists on the {@link Property} object. */\nexport type PropertyKeys = keyof typeof Property;\n\n/** Retrieve all the argument types of a {@link Property} function. */\nexport type PropertyArgs = Parameters<(typeof Property)[key]>;\n", "import {Component, ComponentConstructor} from './wonderland.js';\nimport {Property, PropertyArgs, PropertyKeys, ComponentProperty, Type} from './property.js';\n\n/**\n * Decorator for JS component properties.\n *\n * @param data The property description as an object literal\n * @returns A decorator function modifying the `Properties` static\n * attribute\n */\nfunction propertyDecorator(data: ComponentProperty) {\n return function (target: any, propertyKey: string): void {\n const ctor = target.constructor as ComponentConstructor;\n ctor.Properties = ctor.hasOwnProperty('Properties') ? ctor.Properties : {};\n ctor.Properties[propertyKey] = data;\n };\n}\n\n/**\n * Decorator for making a getter enumerable.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @enumerable()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function enumerable() {\n return function (_: any, __: string, descriptor: PropertyDescriptor) {\n descriptor.enumerable = true;\n };\n}\n\n/**\n * Decorator for native properties.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @nativeProperty()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function nativeProperty() {\n return function (\n target: Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n enumerable()(target, propertyKey, descriptor);\n propertyDecorator({type: Type.Native})(target, propertyKey);\n };\n}\n\n/**\n * Property decorators namespace.\n *\n * You can use the decorators to mark a class attribute as\n * a Wonderland Engine property.\n *\n * Usage:\n *\n * ```ts\n * import {Mesh} from '@wonderlandengine/api';\n * import {property} from '@wonderlandengine/api/decorators.js';\n *\n * class MyComponent extends Component {\n * @property.bool(true)\n * myBool!: boolean;\n *\n * @property.int(42)\n * myInt!: number;\n *\n * @property.string('Hello World!')\n * myString!: string;\n *\n * @property.mesh()\n * myMesh!: Mesh;\n * }\n * ```\n *\n * For JavaScript users, please declare the properties statically.\n */\nexport const property = {} as {\n [key in PropertyKeys]: (\n ...args: PropertyArgs\n ) => ReturnType;\n};\n\nfor (const name in Property) {\n /* Assign each property functor to a TypeScript decorator.\n * This code extracts parameters and return type to provide proper\n * typings to the user. */\n property[name as PropertyKeys] = (...args: PropertyArgs) => {\n const functor = Property[name as PropertyKeys] as (\n ...args: unknown[]\n ) => ComponentProperty;\n return propertyDecorator(functor(...args));\n };\n}\n", "import {ImageLike} from '../types.js';\n\n/**\n * Check if a given value is a native string or a `String` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type string literal or `String`, `false` otherwise.\n */\nexport function isString(value: any): value is string {\n if (value === '') return true;\n return value && (typeof value === 'string' || value.constructor === String);\n}\n\n/**\n * Check if a given value is a native number or a `Number` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type number literal or `Number`, `false` otherwise.\n */\nexport function isNumber(value: any): value is number {\n if (value === null || value === undefined) return false;\n return typeof value === 'number' || value.constructor === Number;\n}\n\n/**\n * Check whether a given value is a visual media.\n *\n * @param value The value to check\n * @returns `true` if the `value` is an image, video, or canvas.\n */\nexport function isImageLike(value: any): value is ImageLike {\n return (\n value instanceof HTMLImageElement ||\n value instanceof HTMLVideoElement ||\n value instanceof HTMLCanvasElement\n );\n}\n", "/**\n * Listener callback type, used in {@link Emitter.add}.\n */\nexport type ListenerCallback = (...data: T) => void;\n\n/**\n * Registration options for a listener in an {@link Emitter}.\n */\nexport interface ListenerOptions {\n /**\n * Listener identifier. This is used to find and remove the listener\n * without needing the callback reference.\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * For more information, please look at the {@link Emitter.remove} method.\n */\n id: any | undefined;\n /**\n * If `true`, the listener is automatically removed after it's invoked.\n * Defaults to `false`.\n */\n once: boolean;\n}\n\n/** Internal listener type. */\ntype Listener = ListenerOptions & {\n callback: ListenerCallback;\n};\n\n/** Internal type for transaction. */\nenum TransactionType {\n Addition = 1,\n Removal = 2,\n}\n\n/**\n * Event emitter.\n *\n * This class allows to register listeners that will get notified by the emitter.\n *\n * Usage example:\n *\n * ```js\n * // `onPreRender` is an `Emitter` instance.\n * scene.onPreRender.add(() => console.log('before rendering'));\n * // `onPostRender` is an `Emitter` instance.\n * scene.onPostRender.add(() => console.log('after rendering'));\n * ```\n *\n * You can create your own emitters:\n *\n * ```js\n * import {Emitter} from '@wonderlandengine/api';\n *\n * const emitter = new Emitter();\n * ```\n *\n * You can notify listeners in to your emitter using {@link Emitter.notify}:\n *\n * ```js\n * // Notifies all the listeners.\n * emitter.notify();\n * // Notifies all the listeners with some data.\n * emitter.notify({ myInt: 42, myStr: 'Hello World!' });\n * ```\n *\n * @category event\n */\nexport class Emitter {\n /**\n * List of listeners to trigger when `notify` is called.\n *\n * @hidden\n */\n protected readonly _listeners: Listener[] = [];\n\n /**\n * `true` if the emitter is currently notifying listeners. This\n * is used to defer addition and removal.\n *\n * @hidden\n */\n private _notifying = false;\n\n /**\n * Pending additions / removals, performed during a notification.\n *\n * @hidden\n */\n private readonly _transactions: {\n type: TransactionType;\n data: Listener | ListenerCallback;\n }[] = [];\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Basic usage:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * });\n * ```\n *\n * Automatically remove the listener when an event is received:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * }, {once: true});\n * ```\n *\n * @param listener The callback to register.\n * @param opts The listener options. For more information, please have a look\n * at the {@link ListenerOptions} interface.\n *\n * @returns Reference to self (for method chaining)\n */\n add(listener: ListenerCallback, opts: Partial = {}): this {\n const {once = false, id = undefined} = opts;\n const data = {id, once, callback: listener};\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Addition, data});\n return this;\n }\n this._listeners.push(data);\n return this;\n }\n\n /**\n * Equivalent to {@link Emitter.add}.\n *\n * @param listeners The callback(s) to register.\n * @returns Reference to self (for method chaining).\n *\n * @deprecated Please use {@link Emitter.add} instead.\n */\n push(...listeners: ListenerCallback[]): this {\n for (const cb of listeners) this.add(cb);\n return this;\n }\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Once notified, the listener will be automatically removed.\n *\n * The method is equivalent to calling {@link Emitter.add} with:\n *\n * ```js\n * emitter.add(listener, {once: true});\n * ```\n *\n * @param listener The callback to register.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback) {\n return this.add(listener, {once: true});\n }\n\n /**\n * Remove a registered listener.\n *\n * Usage with a callback:\n *\n * ```js\n * const listener = (data) => console.log(data);\n * emitter.add(listener);\n *\n * // Remove using the callback reference:\n * emitter.remove(listener);\n * ```\n *\n * Usage with an id:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'my-callback'});\n *\n * // Remove using the id:\n * emitter.remove('my-callback');\n * ```\n *\n * Using identifiers, you will need to ensure your value is unique to avoid\n * removing listeners from other libraries, e.g.,:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'non-unique'});\n * // This second listener could be added by a third-party library.\n * emitter.add((data) => console.log('Hello From Library!'), {id: 'non-unique'});\n *\n * // Ho Snap! This also removed the library listener!\n * emitter.remove('non-unique');\n * ```\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * Example:\n *\n * ```js\n * emitter.add(() => console.log('Hello'), {id: {value: 42}});\n * emitter.add(() => console.log('World!'), {id: {value: 42}});\n * emitter.remove({value: 42}); // None of the above listeners match!\n * emitter.notify(); // Prints 'Hello' and 'World!'.\n * ```\n *\n * Here, both emitters have id `{value: 42}`, but the comparison is made by reference. Thus,\n * the `remove()` call has no effect. We can make it work by doing:\n *\n * ```js\n * const id = {value: 42};\n * emitter.add(() => console.log('Hello'), {id});\n * emitter.add(() => console.log('World!'), {id});\n * emitter.remove(id); // Same reference, it works!\n * emitter.notify(); // Doesn't print.\n * ```\n *\n * @param listener The registered callback or a value representing the `id`.\n *\n * @returns Reference to self (for method chaining)\n */\n remove(listener: ListenerCallback | any): this {\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Removal, data: listener});\n return this;\n }\n\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) {\n listeners.splice(i--, 1);\n }\n }\n return this;\n }\n\n /**\n * Check whether the listener is registered.\n *\n * @note This method performs a linear search.\n *\n * * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n *\n * @param listener The registered callback or a value representing the `id`.\n * @returns `true` if the handle is found, `false` otherwise.\n */\n has(listener: ListenerCallback | any): boolean {\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) return true;\n }\n return false;\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note This method ensures all listeners are called even if\n * an exception is thrown. For (possibly) faster notification,\n * please use {@link Emitter.notifyUnsafe}.\n *\n * @param data The data to pass to listener when invoked.\n */\n notify(...data: T): void {\n const listeners = this._listeners;\n\n this._notifying = true;\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n try {\n listener.callback(...data);\n } catch (e) {\n console.error(e);\n }\n }\n this._notifying = false;\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note Because this method doesn't catch exceptions, some listeners\n * will be skipped on a throw. Please use {@link Emitter.notify} for safe\n * notification.\n *\n * @param data The data to pass to listener when invoked.\n */\n notifyUnsafe(...data: T): void {\n const listeners = this._listeners;\n\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n listener.callback(...data);\n }\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Return a promise that will resolve on the next event.\n *\n * @note The promise might never resolve if no event is sent.\n *\n * @returns A promise that resolves with the data passed to\n * {@link Emitter.notify}.\n */\n promise(): Promise {\n return new Promise((res, _) => {\n this.once((...args) => {\n if (args.length > 1) {\n res(args);\n } else {\n res(args[0] as T);\n }\n });\n });\n }\n\n /**\n * Number of listeners.\n *\n * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n */\n get listenerCount() {\n return this._listeners.length;\n }\n\n /** `true` if it has no listeners, `false` otherwise. */\n get isEmpty() {\n return this.listenerCount === 0;\n }\n\n /**\n * Flush all pending transactions.\n *\n * @hidden\n */\n private _flushTransactions() {\n const listeners = this._listeners;\n for (const transaction of this._transactions) {\n if (transaction.type === TransactionType.Addition) {\n listeners.push(transaction.data as Listener);\n } else {\n this.remove(transaction.data as ListenerCallback);\n }\n }\n this._transactions.length = 0;\n }\n}\n\n/**\n * Registration options for a listener in an {@link RetainEmitter}.\n *\n * Those options extend {@link ListenerOptions}.\n */\nexport interface RetainListenerOptions extends ListenerOptions {\n /**\n * If `true`, directly resolves if the emitter retains a value. If `false`,\n * the listener isn't invoked until the next {@link Emitter.notify}.\n *\n * Defaults to `true`.\n */\n immediate: boolean;\n}\n\n/* Dummy value used with RetainEmitter. */\nconst RetainEmitterUndefined: Record = {};\n\n/**\n * Event emitter that retains event data when notified.\n *\n * After a notification happens, subsequent calls to {@link RetainEmitter.add} will get\n * automatically notified.\n *\n * You can use another emitter in order to cancel the last retained event:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n *\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n * ```\n *\n * You can reset the state of the emitter, i.e., making it forget about the\n * last event using:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n *\n * // Reset the state of the emitter.\n * onStart.reset();\n * onStart.add((data) => console.log(data)) // Doesn't print anything.\n * ```\n *\n * For more information about emitters, please have a look at the base {@link Emitter} class.\n *\n * @category event\n */\nexport class RetainEmitter extends Emitter {\n /** Pre-resolved data. @hidden */\n protected _event: T | typeof RetainEmitterUndefined = RetainEmitterUndefined;\n\n /**\n * Emitter target used to reset the state of this emitter.\n *\n * @hidden\n */\n protected readonly _reset: Emitter | undefined;\n\n /** @override */\n add(listener: ListenerCallback, opts?: Partial): this {\n const immediate = opts?.immediate ?? true;\n if (this._event !== RetainEmitterUndefined && immediate) {\n listener(...(this._event as T));\n }\n super.add(listener, opts);\n return this;\n }\n\n /**\n * @override\n *\n * @param listener The callback to register.\n * @param immediate If `true`, directly resolves if the emitter retains a value.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback, immediate?: boolean) {\n return this.add(listener, {once: true, immediate});\n }\n\n /** @override */\n notify(...data: T): void {\n this._event = data;\n super.notify(...data);\n }\n\n /** @override */\n notifyUnsafe(...data: T): void {\n this._event = data;\n super.notifyUnsafe(...data);\n }\n\n /**\n * Reset the state of the emitter.\n *\n * Further call to {@link Emitter.add} will not automatically resolve,\n * until a new call to {@link Emitter.notify} is performed.\n *\n * @returns Reference to self (for method chaining)\n */\n reset(): this {\n this._event = RetainEmitterUndefined;\n return this;\n }\n\n /** Returns the retained data, or `undefined` if no data was retained. */\n get data(): T | undefined {\n return this.isDataRetained ? this._event : undefined;\n }\n\n /** `true` if data is retained from the last event, `false` otherwise. */\n get isDataRetained(): boolean {\n return this._event !== RetainEmitterUndefined;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Prefab} from '../prefab.js';\nimport {Scene} from '../scene.js';\nimport {FirstConstructorParam} from '../types.js';\n\n/** Interface for a resource class */\ntype ResourceConstructor = {\n new (host: FirstConstructorParam, index: number): T;\n};\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nfunction createDestroyedProxy(\n host: FirstConstructorParam,\n type: ResourceConstructor\n) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(\n `Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n set(_, param: string) {\n throw new Error(\n `Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n }\n );\n}\n\n/**\n * Base class for engine resources, such as:\n * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n *\n * @since 1.2.0\n */\nexport abstract class Resource {\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n private readonly _engine: WonderlandEngine;\n\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n this._id = index;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._index === other._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._index <= 0;\n }\n}\n\n/**\n * Base class for scene resources, such as:\n * * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n * - {@link Skin}\n * - {@link Animation}\n *\n * @since 1.2.0\n */\nexport abstract class SceneResource {\n /** @hidden */\n static _pack(scene: number, index: number) {\n return (scene << 22) | index;\n }\n\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n protected readonly _scene: Prefab;\n\n constructor(scene: Prefab, index: number) {\n this._scene = scene;\n this._index = index;\n this._id = SceneResource._pack(scene._index, index);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._id === other._id;\n }\n\n /** Hosting instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._id <= 0;\n }\n}\n\n/**\n * Manager for resources.\n *\n * Resources are accessed via the engine they belong to.\n *\n * @see {@link WonderlandEngine.textures}, {@link WonderlandEngine.meshes},\n * and {@link WonderlandEngine.materials}.\n *\n * @since 1.2.0\n */\nexport class ResourceManager {\n /** @hidden */\n protected readonly _host: FirstConstructorParam;\n /** Cache. @hidden */\n protected readonly _cache: (T | null)[] = [];\n\n /** Resource class. @hidden */\n private readonly _template: ResourceConstructor;\n\n /** Destructor proxy, used if {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`. @hidden */\n private _destructor: {} | null = null;\n\n private readonly _engine: WonderlandEngine;\n\n /**\n * Create a new manager\n *\n * @param host The host containing the managed resources.\n * @param Class The class to instantiate when wrapping an index.\n *\n * @hidden\n */\n constructor(host: FirstConstructorParam, Class: ResourceConstructor) {\n this._host = host;\n this._template = Class;\n this._engine = (host as Prefab).engine ?? host;\n }\n\n /**\n * Wrap the index into a resource instance.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index (if any).\n *\n * @param index The resource index.\n * @returns\n */\n wrap(index: number) {\n if (index <= 0) return null;\n const texture =\n this._cache[index] ??\n (this._cache[index] = new this._template(this._host, index));\n return texture;\n }\n\n /**\n * Retrieve the resource at the given index.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index.\n */\n get(index: number): T | null {\n return this._cache[index] ?? null;\n }\n\n /** Number of textures allocated in the manager. */\n get allocatedCount() {\n return this._cache.length;\n }\n\n /**\n * Number of textures in the manager.\n *\n * @note For performance reasons, avoid calling this method when possible.\n */\n get count() {\n let count = 0;\n for (const res of this._cache) {\n if (res && res.index >= 0) ++count;\n }\n return count;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Destroy the instance.\n *\n * @note This method takes care of the prototype destruction.\n *\n * @hidden\n */\n _destroy(instance: T) {\n const index = instance.index;\n (instance._index as number) = -1;\n (instance._id as number) = -1;\n this._cache[index] = null;\n\n if (!this.engine.erasePrototypeOnDestroy) return;\n\n if (!this._destructor)\n this._destructor = createDestroyedProxy(this._host, this._template);\n Object.setPrototypeOf(instance, this._destructor);\n }\n\n /**\n * Mark all instances as destroyed.\n *\n * @hidden\n */\n _clear() {\n if (!this.engine.erasePrototypeOnDestroy) return;\n for (let i = 0; i < this._cache.length; ++i) {\n const instance = this._cache[i];\n if (instance) this._destroy(instance);\n }\n this._cache.length = 0;\n }\n}\n", "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2016 Patrick Gansterer \n * Copyright (c) 2020-2023 Aaron Huggins \n * Copyright (c) 2024 Wonderland GmbH \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst kCborTagBignum = 2;\nconst kCborTagNegativeBignum = 3;\n/* RFC 8746 Tag values for typed little-endian arrays */\nconst kCborTagUint8 = 64;\nconst kCborTagUint16 = 69;\nconst kCborTagUint32 = 70;\nconst kCborTagUint64 = 71;\nconst kCborTagInt8 = 72;\nconst kCborTagInt16 = 77;\nconst kCborTagInt32 = 78;\nconst kCborTagInt64 = 79;\nconst kCborTagFloat32 = 85;\nconst kCborTagFloat64 = 86;\n\n/**\n * Whether key/value dictionaries should be decoded as objects or as\n * `Map`. The latter is useful if non-string keys or iterating in\n * insertion order are required.\n */\nexport type DictionaryOption = 'object' | 'map';\n\n/** Options for the decoder. */\nexport interface Options {\n /** The dictionary type to use. Defaults to `object`. */\n dictionary?: DictionaryOption;\n}\n\n/** A function to modify tagged values which are encountered during decoding. */\nexport type Tagger = (tag: number | bigint, value: any) => any;\n\n/**\n * Converts a Concise Binary Object Representation (CBOR) buffer into an object.\n *\n * ```js\n * const buffer = new Uint8Array([0xa2, 0x01, 0x02, 0x03, 0x04]).buffer;\n * const decoded = decode(buffer);\n * console.log(decoded); // { \"1\": 2, \"3\": 4 }\n * ```\n *\n * CBOR values can be wrapped in a numeric tag. To handle and possibly\n * transform tagged values, pass a tagger function:\n *\n * ```js\n * const buffer = new Uint8Array([\n * 0xa1, 0x63, 0x75, 0x72, 0x6c, 0xd8, 0x20, 0x70,\n * 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,\n * 0x69, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f\n * ]);\n * const decoded = decode(buffer, (tag, value) => {\n * if (tag === 32) return new URL(value);\n * return value;\n * });\n * console.log(decoded); // { url: URL { href: \"http://site.com/\" } }\n * ```\n *\n * Decoded basic types generally match the equivalent JavaScript types. Byte\n * strings are decoded to Uint8Array.\n *\n * Tagged values are left as-is, with the following exceptions:\n * - Bignum values (byte strings with tag 2 or 3) are decoded to BigInt\n * - Little-endian versions of typed arrays as defined in RFC 8746 are decoded\n * to JavaScript typed arrays\n *\n * @param data A valid CBOR buffer.\n * @param tagger Optional callback for transformation of tagged values.\n * @param options Options for decoding behavior.\n * @returns The CBOR buffer converted to a JavaScript value.\n */\nexport function decode(\n data: Uint8Array,\n tagger: Tagger = (_, value) => value,\n options: Options = {}\n): T {\n const reader = new CBORReader(data);\n reader.tagger = tagger;\n if (options.dictionary) {\n reader.dictionary = options.dictionary;\n }\n\n const ret = reader.decodeItem();\n if (reader.offset !== data.byteLength) {\n throw new Error('CBORError: Remaining bytes');\n }\n return ret;\n}\n\nexport enum CBORType {\n Array = 0,\n Record = 1,\n Constant = 2,\n Native = 3,\n}\n\n/**\n * Check whether the type is an array, a record,\n * or a native type (decodable without recursion).\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The type category.\n */\nexport function getType(typeInfo: number): CBORType {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n switch (majorType) {\n case 4:\n return CBORType.Array;\n case 5:\n return CBORType.Record;\n case 7:\n return CBORType.Constant;\n }\n return CBORType.Native;\n}\n\nexport function isUndefined(type: CBORType, length: number) {\n return type === CBORType.Constant && length === 23;\n}\n\n/**\n * CBOR reader.\n */\nexport class CBORReader {\n dataView: DataView;\n data: Uint8Array;\n offset: number;\n tagger: Tagger = (_, value) => value;\n dictionary: 'object' | 'map' = 'object';\n\n constructor(data: Uint8Array) {\n this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.data = data;\n this.offset = 0;\n }\n\n /* Wonderland extra methods. */\n\n /**\n * Read type information and move the cursor.\n *\n * @note Must be called before reading the value.\n */\n readTypeInfo() {\n return this.readUint8();\n }\n\n /**\n * Read the array length.\n *\n * @note Must not be called if the type is a constant.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The array length.\n */\n readArrayLength(typeInfo: number) {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n const length = this.readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n return length;\n }\n\n /* CBOR original decoding methods. */\n\n /**\n * Recursively read the item.\n *\n * @note This method will recursively allocate arrays and records\n * based the item type.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The decoded value.\n */\n readItem(typeInfo: number, inputLen: number | null = null): any {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n let i;\n\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return this.readFloat16();\n case 26:\n return this.readFloat32();\n case 27:\n return this.readFloat64();\n }\n }\n\n let length = inputLen === null ? this.readLength(additionalInformation) : inputLen;\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n\n switch (majorType) {\n case 0:\n return length;\n case 1:\n if (typeof length === 'number') {\n return -1 - length;\n }\n return -1n - length;\n case 2: {\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n fullArrayLength += length;\n elements.push(this.readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return this.readArrayBuffer(length as number).slice();\n }\n case 3: {\n /* Can't use TextDecoder.decode() because not all browsers\n * support calling it with an underlying SharedArrayBuffer yet.\n * See https://github.com/whatwg/encoding/issues/172 */\n /** @todo Re-evaluate browser support */\n const utf16data: number[] = [];\n if (length < 0) {\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n this.appendUtf16Data(utf16data, length);\n }\n } else {\n this.appendUtf16Data(utf16data, length as number);\n }\n let string = '';\n const DECODE_CHUNK_SIZE = 8192;\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n string += String.fromCharCode.apply(\n null,\n utf16data.slice(i, i + DECODE_CHUNK_SIZE)\n );\n }\n return string;\n }\n case 4: {\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!this.readBreak()) {\n retArray.push(this.decodeItem());\n }\n } else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = this.decodeItem();\n }\n }\n return retArray;\n }\n case 5: {\n if (this.dictionary === 'map') {\n const retMap = new Map();\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (retMap.has(key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retMap.set(key, this.decodeItem());\n }\n return retMap;\n }\n const retObject: any = {};\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (Object.prototype.hasOwnProperty.call(retObject, key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retObject[key] = this.decodeItem();\n }\n return retObject;\n }\n case 6: {\n const value = this.decodeItem();\n const tag = length;\n if (value instanceof Uint8Array) {\n switch (tag) {\n case kCborTagBignum:\n case kCborTagNegativeBignum:\n let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n);\n if (tag == kCborTagNegativeBignum) {\n num = -1n - num;\n }\n return num;\n /* Little-endian typed arrays (RFC 8746) */\n case kCborTagUint8:\n return value;\n case kCborTagInt8:\n return new Int8Array(value.buffer);\n case kCborTagUint16:\n return new Uint16Array(value.buffer);\n case kCborTagInt16:\n return new Int16Array(value.buffer);\n case kCborTagUint32:\n return new Uint32Array(value.buffer);\n case kCborTagInt32:\n return new Int32Array(value.buffer);\n case kCborTagUint64:\n return new BigUint64Array(value.buffer);\n case kCborTagInt64:\n return new BigInt64Array(value.buffer);\n case kCborTagFloat32:\n return new Float32Array(value.buffer);\n case kCborTagFloat64:\n return new Float64Array(value.buffer);\n }\n }\n return this.tagger(tag, value);\n }\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return length as number;\n }\n }\n }\n\n decodeItem(): any {\n const initialByte = this.readUint8();\n return this.readItem(initialByte);\n }\n\n readArrayBuffer(length: number) {\n return this.commitRead(\n length,\n this.data.subarray(this.offset, this.offset + length)\n );\n }\n readFloat16() {\n const POW_2_24 = 5.960464477539063e-8;\n\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = this.readUint16();\n\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n\n if (exponent === 0x7c00) exponent = 0xff << 10;\n else if (exponent !== 0) exponent += (127 - 15) << 10;\n else if (fraction !== 0) return (sign ? -1 : 1) * fraction * POW_2_24;\n\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n readFloat32(): number {\n return this.commitRead(4, this.dataView.getFloat32(this.offset));\n }\n readFloat64(): number {\n return this.commitRead(8, this.dataView.getFloat64(this.offset));\n }\n readUint8(): number {\n return this.commitRead(1, this.data[this.offset]);\n }\n readUint16(): number {\n return this.commitRead(2, this.dataView.getUint16(this.offset));\n }\n readUint32(): number {\n return this.commitRead(4, this.dataView.getUint32(this.offset));\n }\n readUint64(): bigint {\n return this.commitRead(8, this.dataView.getBigUint64(this.offset));\n }\n readBreak(): boolean {\n if (this.data[this.offset] !== 0xff) return false;\n this.offset += 1;\n return true;\n }\n readLength(additionalInformation: number): number | bigint {\n if (additionalInformation < 24) return additionalInformation;\n if (additionalInformation === 24) return this.readUint8();\n if (additionalInformation === 25) return this.readUint16();\n if (additionalInformation === 26) return this.readUint32();\n if (additionalInformation === 27) {\n const integer = this.readUint64();\n if (integer <= Number.MAX_SAFE_INTEGER) return Number(integer);\n return integer;\n }\n if (additionalInformation === 31) return -1;\n throw new Error('CBORError: Invalid length encoding');\n }\n\n readIndefiniteStringLength(majorType: number): number {\n const initialByte = this.readUint8();\n if (initialByte === 0xff) return -1;\n const length = this.readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error('CBORError: Invalid indefinite length element');\n }\n return Number(length);\n }\n appendUtf16Data(utf16data: number[], length: number) {\n for (let i = 0; i < length; ++i) {\n let value = this.readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (this.readUint8() & 0x3f);\n length -= 1;\n } else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 2;\n } else {\n value =\n ((value & 0x07) << 18) |\n ((this.readUint8() & 0x3f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 3;\n }\n }\n\n if (value < 0x10000) {\n utf16data.push(value);\n } else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n\n private commitRead(length: number, value: T): T {\n this.offset += length;\n return value;\n }\n}\n", "import {Prefab} from './prefab.js';\nimport {\n defaultPropertyCloner,\n ComponentProperty,\n Type,\n PropertyRecord,\n} from './property.js';\nimport {\n AnimationComponent,\n BrokenComponent,\n CollisionComponent,\n Component,\n ComponentConstructor,\n DestroyedComponentInstance,\n InputComponent,\n LightComponent,\n MeshComponent,\n Object3D,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n LogTag,\n inheritProperties,\n} from './wonderland.js';\n\nimport {CBORReader, CBORType, getType, isUndefined} from './utils/cbor.js';\n\n/** Native components list */\nexport interface NativeComponents {\n 'collision': CollisionComponent;\n 'text': TextComponent;\n 'view': ViewComponent;\n 'mesh': MeshComponent;\n 'input': InputComponent;\n 'light': LightComponent;\n 'animation': AnimationComponent;\n 'physx': PhysXComponent;\n 'particle-effect': ParticleEffectComponent;\n}\n\n/**\n * Manage all component managers in a scene.\n *\n * @hidden\n */\nexport class ComponentManagers {\n /** Animation manager index. */\n readonly animation: number = -1;\n /** Collision manager index. */\n readonly collision: number = -1;\n /** JavaScript manager index. */\n readonly js: number = -1;\n /** Physx manager index. */\n readonly physx: number = -1;\n /** View manager index. */\n readonly view: number = -1;\n\n /**\n * Component class instances per type to avoid GC.\n *\n * @note Maps the manager index to the list of components.\n *\n * @todo: Refactor ResourceManager and re-use for components.\n */\n private readonly _cache: (Component | null)[][] = [];\n /** Manager index to component class. */\n private readonly _constructors: ComponentConstructor[];\n /* Manager name to the manager index. */\n private readonly _nativeManagers: Map = new Map();\n\n /** Host instance. */\n private readonly _scene: Prefab;\n\n constructor(scene: Prefab) {\n this._scene = scene;\n const wasm = this._scene.engine.wasm;\n\n const native = [\n AnimationComponent,\n CollisionComponent,\n InputComponent,\n LightComponent,\n MeshComponent,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n ];\n this._cache = new Array(native.length);\n this._constructors = new Array(native.length);\n\n for (const Class of native) {\n const ptr = wasm.tempUTF8(Class.TypeName);\n const manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._constructors[manager] = Class;\n this._cache[manager] = [] as Component[];\n this._nativeManagers.set(Class.TypeName, manager);\n }\n\n this.animation = this._nativeManagers.get(AnimationComponent.TypeName)!;\n this.collision = this._nativeManagers.get(CollisionComponent.TypeName)!;\n this.physx = this._nativeManagers.get(PhysXComponent.TypeName)!;\n this.view = this._nativeManagers.get(ViewComponent.TypeName)!;\n\n const ptr = wasm.tempUTF8('js');\n this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._cache[this.js] = [] as Component[];\n }\n\n createJs(index: number, id: number, type: number, object: number) {\n const wasm = this._scene.engine.wasm;\n const ctor = wasm._componentTypes[type];\n if (!ctor) {\n throw new Error(`Type index ${type} isn't registered`);\n }\n\n const log = this._scene.engine.log;\n\n let component = null;\n try {\n component = new ctor(this._scene, this.js, id);\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during instantiation of component ${ctor.TypeName}`\n );\n log.error(LogTag.Component, e);\n component = new BrokenComponent(this._scene);\n }\n component._object = this._scene.wrap(object);\n\n try {\n component.resetProperties();\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during ${component.type} resetProperties() on object ${component.object.name}`\n );\n log.error(LogTag.Component, e);\n }\n\n this._scene._jsComponents[index] = component;\n\n /* Add to cache. This is required because destruction is\n * ID-based and not index-based. */\n this._cache[this.js][id] = component;\n\n return component;\n }\n\n /**\n * Get components of type T.\n *\n * @param type Component class.\n * @returns An array containing all components in this scene.\n */\n components(type: ComponentConstructor, active: boolean): T[] {\n return this.componentsFromTypename(type.TypeName, active) as T[];\n }\n\n /**\n * Similar to {@link getComponents}, but directly from string.\n *\n * @param typename The component `TypeName` attribute.\n */\n componentsFromTypename(typename: string, active: boolean): Component[] {\n const wasm = this._scene.engine.wasm;\n\n const manager = this.getNativeManager(typename) ?? this.js;\n const subTypeIndex =\n manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0;\n\n const maxRead = wasm._tempMemSize / 4;\n const components: Component[] = [];\n let read = 0;\n let offset = 0;\n while (\n (read = wasm._wl_scene_get_components(\n this._scene._index,\n manager,\n subTypeIndex,\n active,\n offset,\n maxRead,\n wasm._tempMem\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n const id = wasm._tempMemUint32[i];\n components.push(this.wrapAny(manager, id) as Component);\n }\n /* Offset by `maxRead` because js components of different types are contiguous.\n * `read` could be less than `maxRead`, and we want to skip all\n * the components already processed. */\n offset += maxRead;\n }\n\n return components;\n }\n\n /**\n * Get component of type T.\n *\n * @note Currently only works for native components, but we will extend this later (and expose it in the API)\n */\n componentAt(type: ComponentConstructor, index: number): T {\n const wasm = this._scene.engine.wasm;\n const manager = this.getNativeManager(type.TypeName)!;\n const id = wasm._wl_scene_get_component(this._scene._index, manager, index);\n return this.wrapAny(manager, id) as T;\n }\n\n /**\n * Retrieve a cached component.\n *\n * @param manager The manager index.\n * @param id The component id.\n * @returns The component if cached, `null` otherwise.\n */\n get(manager: number, id: number) {\n return this._cache[manager][id] ?? null;\n }\n\n /**\n * Wrap the animation.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAnimation(id: number): AnimationComponent {\n return this.wrapNative(this.animation, id) as AnimationComponent;\n }\n\n /**\n * Wrap the collision.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapCollision(id: number): CollisionComponent {\n return this.wrapNative(this.collision, id) as CollisionComponent;\n }\n\n /**\n * Wrap the view.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapView(id: number): ViewComponent {\n return this.wrapNative(this.view, id) as ViewComponent;\n }\n\n /**\n * Wrap the physx.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapPhysx(id: number): PhysXComponent {\n return this.wrapNative(this.physx, id) as PhysXComponent;\n }\n\n /**\n * Retrieves a component instance if it exists, or create and cache\n * a new one.\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link Object3D.addComponent} instead.\n *\n * @param componentType Component manager index\n * @param componentId Component id in the manager\n *\n * @returns JavaScript instance wrapping the native component\n */\n wrapNative(manager: number, id: number) {\n if (id < 0) return null;\n\n const cache = this._cache[manager];\n if (cache[id]) return cache[id];\n\n const scene = this._scene;\n const Class = this._constructors[manager];\n const component = new Class(scene, manager, id);\n cache[id] = component;\n return component;\n }\n\n /**\n * Wrap a native or js component.\n *\n * @throws For JavaScript components that weren't previously cached,\n * since that would be a bug in the runtime / api.\n *\n * @param manager The manager index.\n * @param id The id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAny(manager: number, id: number) {\n if (id < 0) return null;\n\n if (manager === this.js) {\n const found = this._cache[this.js][id];\n if (!found) {\n throw new Error('JS components must always be cached');\n }\n return found.constructor !== BrokenComponent ? found : null;\n }\n\n return this.wrapNative(manager, id);\n }\n\n getNativeManager(name: string): number | null {\n const manager = this._nativeManagers.get(name);\n return manager !== undefined ? manager : null;\n }\n\n /**\n * Perform cleanup upon component destruction.\n *\n * @param instance The instance to destroy.\n *\n * @hidden\n */\n destroy(instance: Component) {\n const localId = instance._localId;\n const manager = instance._manager;\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n (instance._manager as number) = -1;\n\n const erasePrototypeOnDestroy = this._scene.engine.erasePrototypeOnDestroy;\n /* Destroy the prototype of this instance to avoid using a dangling component */\n if (erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedComponentInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating a component with the same id. */\n this._cache[manager][localId] = null;\n }\n\n /** Number of managers **registered** in the scene, i.e., `js`, `names`, etc... */\n get managersCount() {\n return this._scene.engine.wasm._wl_scene_get_component_manager_count(\n this._scene._index\n );\n }\n}\n\nexport function resetComponentProperties(record: Component) {\n const ctor = record.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return;\n for (const name in properties) {\n const property = properties[name];\n const cloner = property.cloner ?? defaultPropertyCloner;\n (record as Record)[name] = cloner.clone(\n property.type,\n property.default\n );\n }\n}\n\nexport function setupComponentClass(ctor: ComponentConstructor | PropertyRecord) {\n inheritProperties(ctor);\n /** @todo: Merge the _setupDefaults and _setPropertyOrder calls with this function. */\n for (const name in ctor.Properties) {\n const prop = ctor.Properties[name];\n let record = null;\n switch (prop.type) {\n case Type.Record:\n record = prop.record;\n break;\n case Type.Array:\n record = prop.element?.record;\n break;\n default:\n break;\n }\n if (record && !record._propertyOrder) setupComponentClass(record);\n }\n _setupDefaults(ctor);\n _setPropertyOrder(ctor);\n}\n\n/**\n * Decode component properties from CBOR encoded data.\n *\n * ## Failure\n *\n * When decoding properties, failures will not be treated as errors. Failures include:\n * - Invalid parameters count\n * - Wrongly defined property\n *\n * When a failure occurs, the cbor reader will be consumed to prevent\n * errors to cascade in the following components.\n */\nexport class ComponentPropertyDecoder {\n scene: Prefab;\n offsets: Uint32Array;\n\n constructor(scene: Prefab, offsets: Uint32Array) {\n this.scene = scene;\n this.offsets = offsets;\n }\n\n decode(cbor: CBORReader, component: Component) {\n const ctor = component.constructor as ComponentConstructor;\n if (!ctor._propertyOrder) setupComponentClass(ctor);\n\n const typeInfo = cbor.readTypeInfo();\n if (ctor === BrokenComponent) {\n return cbor.readItem(typeInfo); /* Consumme the cbor state */\n }\n\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array) {\n this._error(`${component} parameters not encoded as an array.`);\n return cbor.readItem(typeInfo);\n }\n\n const paramNames = ctor._propertyOrder;\n const count = cbor.readArrayLength(typeInfo) as number;\n if (count !== paramNames.length) {\n this._error(\n `${component} has ${count} parameters encoded, but expected ${paramNames.length}`\n );\n return cbor.readItem(typeInfo, count);\n }\n\n for (let j = 0; j < count; ++j) {\n const name = paramNames[j];\n const property = ctor.Properties[name];\n (component as any)[name] = this.decodeProperty(cbor, name, property);\n }\n }\n\n decodeProperty(cbor: CBORReader, name: string, property: ComponentProperty) {\n const typeInfo = cbor.readTypeInfo();\n\n if (property.type === Type.Record) {\n return this.decodeRecordProperty(cbor, name, property, typeInfo);\n } else if (property.type === Type.Array) {\n return this.decodeArrayProperty(cbor, name, property, typeInfo);\n }\n\n let value = cbor.readItem(typeInfo);\n\n /* Default values are sent as undefined to avoid wasting space */\n if (value === undefined) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n value = cloner.clone(property.type, property.default);\n return value;\n }\n /* This skips unset resource parameters as those are sent\n * directly with type null. Offsets for Int and Float types\n * should always be 0. */\n /** @todo CBOR tag to mark resources? Wastes a byte though. */\n if (typeof value === 'number') {\n value += this.offsets[property.type];\n }\n\n const engine = this.scene.engine;\n switch (property.type) {\n case Type.Bool:\n case Type.Int:\n case Type.Float:\n case Type.String:\n case Type.Enum:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n /* Nothing to do */\n return value;\n case Type.Object: {\n const wasm = engine.wasm;\n return value\n ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value))\n : null;\n }\n case Type.Mesh:\n return engine.meshes.wrap(value);\n case Type.Texture:\n return engine.textures.wrap(value);\n case Type.Material:\n return engine.materials.wrap(value);\n case Type.ParticleEffect:\n return engine.particleEffects.wrap(value);\n case Type.Animation:\n return this.scene.animations.wrap(value);\n case Type.Skin:\n return this.scene.skins.wrap(value);\n case Type.Color: {\n /* Colors are sent as Uint8Array. Normalize positive\n * integer values to 0-1. Don't assume any bit size\n * here, could become Uint16Array as well. */\n const max = (1 << (value.BYTES_PER_ELEMENT * 8)) - 1;\n return Float32Array.from(value, (f: number, _) => f / max);\n }\n }\n }\n\n decodeRecordProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Record parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return null;\n }\n const record = property.record;\n if (!record) {\n this._error(`Record parameter '${name}' .record is undefined`);\n cbor.readItem(typeInfo);\n return null;\n }\n\n if (!record._propertyOrder) setupComponentClass(record);\n const propertyOrder = record._propertyOrder as string[];\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n return cloner.clone(property.type, property.default);\n }\n\n const result = new (record as any)();\n if (count !== propertyOrder.length) {\n const propsCount = propertyOrder.length;\n this._error(\n `Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`\n );\n cbor.readItem(typeInfo, count);\n return result;\n }\n const order = record._propertyOrder!;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n const prop = record.Properties![key];\n (result as any)[key] = this.decodeProperty(cbor, key, prop);\n }\n return result;\n }\n\n decodeArrayProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const log = this.scene.engine.log;\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Array parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n if (!property.element) {\n this._error(`Array parameter '${name}' .element property is undefined`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) return [];\n\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n result[i] = this.decodeProperty(cbor, name, property.element);\n }\n return result;\n }\n\n private _error(msg: string) {\n const log = this.scene.engine.log;\n log.error(LogTag.Engine, msg);\n }\n}\n\n/**\n * Default component parameter value per type.\n */\nconst _componentDefaults = new Map([\n [Type.Bool, false],\n [Type.Int, 0],\n [Type.Float, 0.0],\n [Type.String, ''],\n [Type.Enum, undefined],\n [Type.Object, null],\n [Type.Mesh, null],\n [Type.Texture, null],\n [Type.Material, null],\n [Type.Animation, null],\n [Type.Skin, null],\n [Type.ParticleEffect, null],\n [Type.Color, Float32Array.from([0.0, 0.0, 0.0, 1.0])],\n [Type.Vector2, Float32Array.from([0.0, 0.0])],\n [Type.Vector3, Float32Array.from([0.0, 0.0, 0.0])],\n [Type.Vector4, Float32Array.from([0.0, 0.0, 0.0, 0.0])],\n [Type.Record, undefined],\n [Type.Array, []],\n]);\n\n/**\n * Setup the defaults value of the properties on a given\n * component class.\n *\n * @param ctor The component class\n */\nfunction _setupDefaults(ctor: ComponentConstructor | PropertyRecord) {\n for (const name in ctor.Properties) {\n const p = ctor.Properties[name];\n\n if (p.type === Type.Enum) {\n /* Enum default can be a string or an index. Convert to and/or\n * sanity-check the index. */\n if (p.values?.length) {\n /* Don't try to look up the default if the user specified a\n * number or we already converted to one. */\n if (typeof p.default !== 'number') {\n /* If undefined, missing element or wrong type this returns\n * -1 which becomes 0 below. This matches editor behavior. */\n p.default = p.values.indexOf(p.default);\n }\n if (p.default < 0 || p.default >= p.values.length) {\n p.default = 0;\n }\n } else {\n /* There's no index value that makes sense */\n p.default = undefined;\n }\n } else if (\n (p.type === Type.Color ||\n p.type === Type.Vector2 ||\n p.type === Type.Vector3 ||\n p.type === Type.Vector4) &&\n Array.isArray(p.default)\n ) {\n /* Defaults provided by user code are currently always a standard\n * array, but become a typed array on the property */\n p.default = Float32Array.from(p.default);\n } else if (p.type === Type.Record && p.record) {\n p.default = new p.record();\n resetComponentProperties(p.default);\n } else if (p.default === undefined) {\n const cloner = p.cloner ?? defaultPropertyCloner;\n p.default = cloner.clone(p.type, _componentDefaults.get(p.type));\n }\n ctor.prototype[name] = p.default;\n }\n}\n\n/**\n * Determines a fixed order for property attributes used for deserialization.\n *\n * @param ctor The component class\n */\nfunction _setPropertyOrder(ctor: ComponentConstructor | PropertyRecord) {\n ctor._propertyOrder = ctor.hasOwnProperty('Properties')\n ? Object.keys(ctor.Properties!).sort()\n : [];\n}\n", "import {ImageLike, ProgressCallback} from '../types.js';\n\n/**\n * Transformer for {@link TransformStream} that passes read progress to a\n * callback.\n *\n * Invokes the callback for each streamed chunk, and one final time when the\n * stream closes.\n *\n * @hidden\n */\nclass FetchProgressTransformer implements Transformer {\n #progress = 0;\n #callback: ProgressCallback;\n #totalSize: number;\n\n /**\n * Constructor.\n * @param callback Callback that receives the progress.\n * @param totalSize Total size of the data. Pass 0 to indicate that the\n * size is unknown, then the callback will only be called once after\n * all data was transferred.\n */\n constructor(callback: ProgressCallback, totalSize = 0) {\n this.#callback = callback;\n this.#totalSize = totalSize;\n }\n\n transform(chunk: Uint8Array, controller: TransformStreamDefaultController) {\n controller.enqueue(chunk);\n this.#progress += chunk.length;\n if (this.#totalSize > 0) {\n this.#callback(this.#progress, this.#totalSize);\n }\n }\n\n flush() {\n this.#callback(this.#progress, this.#progress);\n }\n}\n\n/**\n * Sink for `WritableStream` that writes data to an `ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSink implements UnderlyingSink {\n #buffer: Uint8Array;\n #offset = 0;\n\n /**\n * Constructor.\n * @param size Initial size of the buffer. If less than the received data,\n * the buffer is dynamically reallocated.\n */\n constructor(size = 0) {\n this.#buffer = new Uint8Array(size);\n }\n\n /** Get the received data as an `ArrayBuffer`. */\n get arrayBuffer() {\n const arrayBuffer = this.#buffer.buffer;\n if (this.#offset < arrayBuffer.byteLength) {\n return arrayBuffer.slice(0, this.#offset);\n }\n return arrayBuffer;\n }\n\n write(chunk: Uint8Array) {\n const newLength = this.#offset + chunk.length;\n if (newLength > this.#buffer.length) {\n const newBuffer = new Uint8Array(\n Math.max(this.#buffer.length * 1.5, newLength)\n );\n newBuffer.set(this.#buffer);\n this.#buffer = newBuffer;\n }\n this.#buffer.set(chunk, this.#offset);\n this.#offset = newLength;\n }\n}\n\n/**\n * Source for `ReadableStream` that reads data from an`ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSource implements UnderlyingSource {\n #buffer: ArrayBuffer;\n\n /**\n * Constructor.\n * @param buffer Buffer to read from.\n */\n constructor(buffer: ArrayBuffer) {\n this.#buffer = buffer;\n }\n\n start(controller: ReadableStreamController) {\n if (this.#buffer.byteLength > 0) {\n controller.enqueue(new Uint8Array(this.#buffer));\n }\n controller.close();\n }\n}\n\n/**\n * Fetch a file as an `ArrayBuffer`, with fetch progress passed to a callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n if (!onProgress || !res.body) return res.arrayBuffer();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n const sink = new ArrayBufferSink(size);\n await res.body\n .pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size)))\n .pipeTo(new WritableStream(sink));\n return sink.arrayBuffer;\n}\n\n/**\n * Fetch a file as a `ReadableStream`, with fetch progress passed to a\n * callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchStreamWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise> {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n const body = res.body ?? new ReadableStream();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n if (!onProgress) return body;\n const stream = body.pipeThrough(\n new TransformStream(new FetchProgressTransformer(onProgress, size))\n );\n return stream;\n}\n\n/**\n * Get parent path from a URL.\n *\n * @param url URL to get the parent from.\n * @returns Parent URL without trailing slash.\n */\nexport function getBaseUrl(url: string): string {\n return url.substring(0, url.lastIndexOf('/'));\n}\n\n/**\n * Get the filename of a url.\n *\n * @param url The url to extract the name from.\n * @returns A string containing the filename. If no filename is found,\n * returns the input string.\n */\nexport function getFilename(url: string): string {\n if (url.endsWith('/')) {\n /* Remove trailing slash. */\n url = url.substring(0, url.lastIndexOf('/'));\n }\n const lastSlash = url.lastIndexOf('/');\n if (lastSlash < 0) return url;\n return url.substring(lastSlash + 1);\n}\n\n/**\n * Promise resolved once the image is ready to be used\n *\n * @param image The image, video, or canvas to wait for.\n * @returns A promise with the image, once it's ready to be used.\n */\nexport function onImageReady(image: T): Promise {\n return new Promise((res, rej) => {\n if (image instanceof HTMLVideoElement) {\n if (image.readyState >= 2) {\n res(image as T);\n return;\n }\n image.addEventListener(\n 'loadeddata',\n () => {\n if (image.readyState >= 2) res(image);\n },\n {once: true}\n );\n return;\n } else if (\n !(image instanceof HTMLImageElement) ||\n (image as HTMLImageElement).complete\n ) {\n res(image);\n return;\n }\n image.addEventListener('load', () => res(image), {once: true});\n image.addEventListener('error', rej, {once: true});\n });\n}\n", "import {ComponentManagers, NativeComponents} from './component.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ResourceManager, SceneResource} from './resources/resource.js';\nimport {ProgressCallback} from './types.js';\nimport {\n fetchStreamWithProgress,\n fetchWithProgress,\n getBaseUrl,\n getFilename,\n onImageReady,\n} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Animation,\n CollisionCallback,\n Component,\n ComponentConstructor,\n DestroyedObjectInstance,\n Object3D,\n Skin,\n} from './wonderland.js';\n\n/** Scene loading options. */\nexport interface SceneLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n}\n\n/** Loading options for in-memory data. */\nexport interface InMemoryLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/**\n * Loading options for streamed data.\n *\n * @hidden\n */\nexport interface StreamLoadOptions {\n /** Stream that transfers the bytes of a `.bin` file. */\n stream: ReadableStream;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n}\n\n/** Options for loading files from a URL. */\nexport interface UrlLoadOptions {\n /** URL to load. */\n url: string;\n /** Signal to abort the file fetch request. */\n signal?: AbortSignal;\n /**\n * Whether to load the file as parts of it are fetched. If `false`,\n * fetches the entire file first before loading. Streamed loading reduces\n * memory usage. If not set, defaults to `true`.\n */\n streamed?: boolean;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/** Options used during loading. */\nexport type LoadOptions = string | (UrlLoadOptions & Partial);\n\n/**\n * Base class for prefabs, scenes, and glTF.\n *\n * For more information have a look at the derived types:\n * - {@link Scene} for Wonderland Engine activatable scenes (.bin)\n * - {@link PrefabGLTF} for glTF scenes\n *\n * #### Resources\n *\n * While **meshes**, **textures**, and **materials** are shared\n * on the {@link WonderlandEngine} instance, a scene comes with:\n * - Animations: Managed using {@link Prefab.animations}\n * - Skins: Managed using {@link Prefab.skins}\n *\n * Those resources are bound to the object hierarchy and are thus required to be\n * per-scene.\n *\n * #### Destruction\n *\n * For now, destroying a scene doesn't automatically remove the resources it\n * references in the engine. For more information, have a look at the\n * {@link Scene.destroy} method.\n *\n * #### Isolation\n *\n * It's forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addChild();\n * const objB = sceneB.addChild();\n * objA.parent = objB; // Throws\n * ```\n *\n * @category scene\n *\n * @since 1.2.0\n */\nexport class Prefab {\n /**\n * Create an object with shape `{url: string}`.\n *\n * - If the parameter is a string, a new object is returned\n * - If the parameter is an object, the same reference is returned\n *\n * @param options The url or options object.\n * @returns An object of the form `{url: string, ...}`.\n *\n * @hidden\n */\n static makeUrlLoadOptions(options: LoadOptions): UrlLoadOptions & Partial {\n return isString(options)\n ? ({url: options} as UrlLoadOptions & Partial)\n : options;\n }\n\n /**\n * Load an `ArrayBuffer` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns An {@link InMemoryLoadOptions} object.\n *\n * @hidden\n */\n static async loadBuffer(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const buffer = await fetchWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, buffer, baseURL, filename};\n }\n\n /**\n * Load a `ReadableStream` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns A {@link StreamLoadOptions} object.\n *\n * @hidden\n */\n static async loadStream(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const stream = await fetchStreamWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, stream, baseURL, filename};\n }\n\n /**\n * Validate the in-memory load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateBufferOptions(options: InMemoryLoadOptions): {\n buffer: ArrayBuffer;\n baseURL: string;\n url: string;\n } {\n const {buffer, baseURL, filename = 'scene.bin'} = options;\n if (!buffer) {\n throw new Error(\"missing 'buffer' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {buffer, baseURL, url};\n }\n\n /**\n * Validate the stream load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateStreamOptions(options: StreamLoadOptions): {\n stream: ReadableStream;\n baseURL: string;\n url: string;\n } {\n const {stream, baseURL, filename = 'scene.bin'} = options;\n if (!stream) {\n throw new Error(\"missing 'stream' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {stream, baseURL, url};\n }\n\n /** Index in the scene manager. @hidden */\n readonly _index;\n /** @hidden */\n protected _engine: WonderlandEngine;\n\n /**\n * Component manager caching to avoid GC.\n *\n * @hidden\n */\n readonly _components: ComponentManagers;\n /**\n * JavaScript components for this scene.\n *\n * This array is moved into the WASM instance upon activation.\n *\n * @hidden\n */\n readonly _jsComponents: Component[] = [];\n\n /**\n * The map is indexed using the physx component id.\n *\n * @hidden\n */\n readonly _pxCallbacks: Map = new Map();\n\n /** @hidden */\n private readonly _animations;\n /** @hidden */\n private readonly _skins;\n\n /**\n * Object class instances to avoid GC.\n *\n * @hidden\n */\n private readonly _objectCache: (Object3D | null)[] = [];\n\n /**\n * `onDestroy()` depth.\n *\n * Multiple components can stack `onDestroy()` calls.\n */\n private _pendingDestroy: number = 0;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n\n this._components = new ComponentManagers(this);\n this._animations = new ResourceManager(this as Prefab, Animation);\n this._skins = new ResourceManager(this as Prefab, Skin);\n }\n\n /**\n * Add a new {@link Object3D} to the root object.\n *\n * See {@link Object3D.addChild} for more information.\n *\n * @returns A new {@link Object3D}.\n */\n addChild() {\n return this.wrap(0).addChild();\n }\n\n /**\n * Add an object to the scene.\n *\n * Alternatively, you can use {@link Prefab.addChild} to add the object\n * to the root, or {@link Object3D.addChild} to add the object to a given parent:\n *\n * ```js\n * const parent = scene.addChild();\n * const child = parent.addChild();\n * // Equivalent using scene.addObject\n * const sibling = scene.addObject(parent);\n * ```\n *\n * @param parent Parent object or `null`.\n * @returns A newly created object.\n */\n addObject(parent: Object3D | null = null): Object3D {\n if (parent?.markedDestroyed) {\n throw new Error(`Failed to add object. ${parent} is marked as destroyed.`);\n }\n this.assertOrigin(parent);\n return (parent ?? this.wrap(0)).addChild();\n }\n\n /**\n * Batch-add objects to the scene.\n *\n * Will provide better performance for adding multiple objects (e.g. > 16)\n * than calling {@link Scene#addObject} repeatedly in a loop.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * convervatively grow the memory in small steps.\n *\n * @experimental This API might change in upcoming versions.\n *\n * @param count Number of objects to add.\n * @param parent Parent object or `null`, default `null`.\n * @param componentCountHint Hint for how many components in total will\n * be added to the created objects afterwards, default `0`.\n * @returns Newly created objects\n */\n addObjects(\n count: number,\n parent: Object3D | null = null,\n componentCountHint: number = 0\n ): Object3D[] {\n const parentId = parent ? parent._id : 0;\n this.engine.wasm.requireTempMem(count * 2);\n const actualCount = this.engine.wasm._wl_scene_add_objects(\n this._index,\n parentId,\n count,\n componentCountHint || 0,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount);\n const wrapper = this.wrap.bind(this);\n const objects = Array.from(ids, wrapper);\n return objects;\n }\n\n /**\n * Pre-allocate memory for a given amount of objects and components.\n *\n * Will provide better performance for adding objects later with {@link Scene#addObject}\n * and {@link Scene#addObjects}.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * conservatively grow the memory in small steps.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * @param objectCount Number of objects to add.\n * @param componentCountPerType Amount of components to\n * allocate for {@link Object3D.addComponent}, e.g. `{mesh: 100, collision: 200, \"my-comp\": 100}`.\n * @since 0.8.10\n */\n reserveObjects(objectCount: number, componentCountPerType: Record) {\n const wasm = this.engine.wasm;\n if (!componentCountPerType) return;\n\n const countsPerTypeIndex = wasm._tempMemInt;\n const managerCount = this._components.managersCount;\n for (let i = 0; i < managerCount; ++i) countsPerTypeIndex[i] = 0;\n\n const names = Object.keys(componentCountPerType);\n for (const name of names) {\n const count = componentCountPerType[name];\n const nativeIndex = this._components.getNativeManager(name);\n countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] +=\n count;\n }\n wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem);\n }\n\n /**\n * Root object's children.\n *\n * See {@link Object3D.getChildren} for more information.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const root = this.wrap(0);\n return root.getChildren(out);\n }\n\n /** @overload */\n getComponents(typeOrClass: K): NativeComponents[K][];\n /** @overload */\n getComponents(typeOrClass: string): Component[];\n /**\n * Get all the components of a given type.\n *\n * #### Usage\n *\n * ```js\n * const meshes = scene.getComponents('mesh');\n * const zombies = scene.getComponents(ZombieComponent);\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, false);\n }\n\n /** @overload */\n getActiveComponents(\n typeOrClass: K\n ): NativeComponents[K][];\n /** @overload */\n getActiveComponents(typeOrClass: string): Component[];\n /**\n * Get all the **active** components of a given type.\n *\n * ```js\n * const zombies = scene.getActiveComponents(ZombieComponent);\n * for(const zombie of zombies) zombie.active = false;\n *\n * const list = scene.getActiveComponents(ZombieComponent);\n * console.log(list.length); // Prints `0`\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getActiveComponents(typeOrClass: ComponentConstructor): T[];\n getActiveComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, true);\n }\n\n /**\n * Top-level objects of this scene.\n *\n * See {@link Object3D.children} for more information.\n *\n * @since 1.2.0\n */\n get children(): Object3D[] {\n const root = this.wrap(0);\n return root.children;\n }\n\n /** The number of children of the root object. */\n get childrenCount(): number {\n const root = this.wrap(0);\n return this.engine.wasm._wl_object_get_children_count(root._id);\n }\n\n /**\n * Search for objects matching the name.\n *\n * See {@link Object3D.findByName} for more information.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the objects of\n * this scene. If `false`, this method will only perform the search in\n * root objects.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n const root = this.wrap(0);\n return root.findByName(name, recursive);\n }\n\n /**\n * Search for all **top-level** objects matching the name.\n *\n * See {@link Object3D.findByNameDirect} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameDirect(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameDirect(name);\n }\n\n /**\n * Search for **all objects** matching the name.\n *\n * See {@link Object3D.findByNameRecursive} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameRecursive(name);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n *\n * @returns The object\n */\n wrap(objectId: number): Object3D {\n const cache = this._objectCache;\n const o = cache[objectId] || (cache[objectId] = new Object3D(this, objectId));\n return o;\n }\n\n /**\n * Destroy the scene.\n *\n * For now, destroying a scene doesn't remove the resources it references. Thus,\n * you will need to reload a main scene to free the memory.\n *\n * For more information about destruction, have a look at the {@link Scene.destroy} method.\n */\n destroy() {\n if (this._pendingDestroy > 0) {\n throw new Error(\"It's forbidden to destroy a scene from onDestroy().\");\n }\n this._pxCallbacks.clear();\n this.engine._destroyScene(this);\n }\n\n /* Public Getters & Setters */\n\n /**\n * `true` if the scene is active, `false` otherwise.\n *\n * Always false for {@link Prefab} and {@link PrefabGLTF}.\n */\n get isActive() {\n return !!this.engine.wasm._wl_scene_active(this._index);\n }\n\n /**\n * Relative directory of the scene that was loaded.\n *\n * This is used for loading any files relative to the scene.\n */\n get baseURL(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_baseURL(this._index);\n if (!ptr) return '';\n\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Filename used when loading the file.\n *\n * If the scenes was loaded from memory and no filename was provided,\n * this accessor will return an empty string.\n */\n get filename(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_filename(this._index);\n if (!ptr) return '';\n return wasm.UTF8ToString(ptr);\n }\n\n /** Animation resources */\n get animations() {\n return this._animations;\n }\n\n /** Skin resources */\n get skins() {\n return this._skins;\n }\n\n /** Hosting engine instance. */\n get engine(): WonderlandEngine {\n return this._engine;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed(): boolean {\n return this._index < 0;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Scene(destroyed)';\n }\n return `Scene('${this.filename}', ${this._index})`;\n }\n\n /**\n * Checks that the input's scene is the same as this instance.\n *\n * It is forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addObject();\n * const objB = sceneA.addObject();\n * objA.parent = objB; // Throws\n * ```\n *\n * @param other Object / component to check.\n *\n * @throws If other's scene isn't the same reference as this.\n */\n assertOrigin(other: Object3D | Component | SceneResource | undefined | null) {\n if (other && (other.scene as Prefab) !== this) {\n throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`);\n }\n }\n\n /**\n * Download components and initialize the scene.\n *\n * @hidden\n */\n _initialize() {\n const wasm = this.engine.wasm;\n /* Initialize component parameters */\n wasm._wl_scene_initialize(this._index);\n }\n\n /**\n * Perform cleanup upon object destruction.\n *\n * @param localId The id to destroy.\n *\n * @hidden\n */\n _destroyObject(localId: number) {\n const instance = this._objectCache[localId];\n if (!instance) return;\n\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n\n /* Destroy the prototype of this instance to avoid using a dangling object */\n if (this.engine.erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedObjectInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating an object with the same id. */\n this._objectCache[localId] = null;\n }\n\n /**\n * Performs JavaScript only destrution of a component.\n *\n * @note Prefer to use this method to manually calling the destruction code,\n * to protect the user from illegal method calls in {@link Component.onDestroy}.\n *\n * @param manager The component manager index.\n * @param id The component id.\n *\n * @hidden\n */\n _destroyComponent(manager: number, id: number) {\n const component = this._components.get(manager, id);\n ++this._pendingDestroy;\n component?._triggerOnDestroy();\n --this._pendingDestroy;\n }\n}\n", "/**\n * Schedule a timeout, resolving in `time` milliseconds.\n *\n * @note `setTimeout` being a macro-task, this method can\n * be use as a debounce call.\n *\n * @param time The time until it resolves, in milliseconds.\n * @returns A promise resolving in `time` ms.\n */\nexport function timeout(time: number): Promise {\n return new Promise((res) => setTimeout(res, time));\n}\n\n/**\n * Clamp the value in the range [min; max].\n *\n * @param val The value to clamp.\n * @param min The minimum value (inclusive).\n * @param max The maximum value (inclusive).\n * @returns The clamped value.\n */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.max(Math.min(max, val), min);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @note The string must be UTF-8.\n *\n * @param str The string to format.\n * @returns The string with the first letter capitalized.\n */\nexport function capitalizeFirstUTF8(str: string) {\n return `${str[0].toUpperCase()}${str.substring(1)}`;\n}\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nexport function createDestroyedProxy(type: string) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(`Cannot read '${param}' of destroyed ${type}`);\n },\n set(_, param: string) {\n throw new Error(`Cannot write '${param}' of destroyed ${type}`);\n },\n }\n );\n}\n", "/**\n * Types\n */\n\nimport {nativeProperty, enumerable} from './decorators.js';\nimport {WonderlandEngine} from './engine.js';\nimport {isImageLike, isNumber, isString} from './utils/object.js';\nimport {Emitter} from './utils/event.js';\nimport {Material} from './resources/material-manager.js';\nimport {\n ComponentProperty,\n PropertyRecord,\n Type,\n defaultPropertyCloner,\n} from './property.js';\nimport {Constructor, ImageLike, NumberArray, TypedArray, TypedArrayCtor} from './types.js';\nimport {Resource, SceneResource} from './resources/resource.js';\nimport {Prefab} from './prefab.js';\nimport {Scene} from './scene.js';\nimport {createDestroyedProxy} from './utils/misc.js';\nimport {NativeComponents, resetComponentProperties} from './component.js';\n\n/**\n * Component constructor type.\n *\n * For more information, please have a look at the {@link Component} class.\n */\nexport type ComponentConstructor = {\n new (scene: Prefab, manager: number, id: number): T;\n} & {\n _isBaseComponent: boolean;\n _propertyOrder: string[];\n TypeName: string;\n Properties: Record;\n InheritProperties?: boolean;\n onRegister?: (engine: WonderlandEngine) => void;\n};\n\n/**\n * Component prototype interface.\n *\n * User component's should have the same structure.\n */\nexport interface ComponentProto {\n /**\n * Triggered after the component instantiation.\n * For more information, please have a look at {@link Component.init}.\n */\n init?: () => void;\n /**\n * Triggered after the component is activated for the first time.\n * For more information, please have a look at {@link Component.start}.\n */\n start?: () => void;\n /**\n * Triggered once per frame.\n * For more information, please have a look at {@link Component.update}.\n *\n * @param dt Delta time, time since last update.\n */\n update?: (dt: number) => void;\n /**\n * Triggered when the component goes from deactivated to activated.\n * For more information, please have a look at {@link Component.onActivate}.\n */\n onActivate?: () => void;\n /**\n * Triggered when the component goes from activated to deactivated.\n * For more information, please have a look at {@link Component.onDeactivate}.\n */\n onDeactivate?: () => void;\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @since 0.9.0\n */\n onDestroy?: () => void;\n}\n\n/**\n * Callback triggered on collision event.\n *\n * @param type Type of the event.\n * @param other Other component that was (un)collided with\n */\nexport type CollisionCallback = (type: CollisionEventType, other: PhysXComponent) => void;\n\n/** @todo Remove at 1.0.0 */\ndeclare const WL: WonderlandEngine;\n\n/**\n * Wonderland Engine API\n * @namespace WL\n */\n\n/**\n * Default set of logging tags used by the API.\n */\nexport enum LogTag {\n /** Initialization, component registration, etc... */\n Engine = 0,\n /** Scene loading */\n Scene = 1,\n /** Component init, update, etc... */\n Component = 2,\n}\n\n/**\n * Collider type enum for {@link CollisionComponent}.\n */\nexport enum Collider {\n /**\n * **Sphere Collider**:\n *\n * Simplest and most performant collision shape. If this type is set on a\n * {@link CollisionComponent}, only the first component of\n * {@link CollisionComponent#extents} will be used to determine the radius.\n */\n Sphere = 0,\n\n /**\n * **Axis Aligned Bounding Box Collider**:\n *\n * Box that is always aligned to XYZ axis. It cannot be rotated but is more\n * efficient than {@link Collider.Box}.\n */\n AxisAlignedBox = 1,\n\n /**\n * **Aligned Bounding Box Collider**:\n *\n * Box that matches the object's rotation and translation correctly. This\n * is the least efficient collider and should only be chosen over\n * {@link Collider.Sphere} and {@link Collider.AxisAlignedBox} if really\n * necessary.\n */\n Box = 2,\n}\n\n/**\n * Alignment type enum for {@link TextComponent}.\n */\nexport enum Alignment {\n /** Text start is at object origin */\n Left = 0,\n\n /** Text center is at object origin */\n Center = 1,\n\n /** Text end is at object origin */\n Right = 2,\n}\n\n/**\n * Vertical alignment type enum for {@link TextComponent}.\n */\nexport enum VerticalAlignment {\n /** Text line is at object origin */\n Line = 0,\n\n /** Text middle is at object origin */\n Middle = 1,\n\n /** Text top is at object origin */\n Top = 2,\n\n /** Text bottom is at object origin */\n Bottom = 3,\n}\n\n/**\n * Justification type enum for {@link TextComponent}.\n *\n * @deprecated Please use {@link VerticalAlignment} instead.\n */\nexport const Justification = VerticalAlignment;\n\n/**\n * Effect type enum for {@link TextComponent}.\n */\nexport enum TextEffect {\n /** Text is rendered normally */\n None = 0,\n\n /** Text is rendered with an outline */\n Outline = 1,\n\n /** Text is rendered with a drop shadow */\n Shadow = 2,\n}\n\n/**\n * Wrap mode enum for {@link TextComponent}.\n *\n * @since 1.2.1\n */\nexport enum TextWrapMode {\n /** Text doesn't wrap automatically, only with explicit newline */\n None = 0,\n\n /** Text wraps at word boundaries */\n Soft = 1,\n\n /** Text wraps anywhere */\n Hard = 2,\n\n /** Text is cut off */\n Clip = 3,\n}\n\n/**\n * Input type enum for {@link InputComponent}.\n */\nexport enum InputType {\n /** Head input */\n Head = 0,\n\n /** Left eye input */\n EyeLeft = 1,\n\n /** Right eye input */\n EyeRight = 2,\n\n /** Left controller input */\n ControllerLeft = 3,\n\n /** Right controller input */\n ControllerRight = 4,\n\n /** Left ray input */\n RayLeft = 5,\n\n /** Right ray input */\n RayRight = 6,\n}\n\n/**\n * Projection type enum for {@link ViewComponent}.\n */\nexport enum ProjectionType {\n /** Perspective projection */\n Perspective = 0,\n\n /** Orthographic projection */\n Orthographic = 1,\n}\n\n/**\n * Light type enum for {@link LightComponent}.\n */\nexport enum LightType {\n /** Point light */\n Point = 0,\n\n /** Spot light */\n Spot = 1,\n\n /** Sun light / Directional light */\n Sun = 2,\n}\n\n/**\n * Animation state of {@link AnimationComponent}.\n */\nexport enum AnimationState {\n /** Animation is currently playing */\n Playing = 0,\n\n /** Animation is paused and will continue at current playback\n * time on {@link AnimationComponent#play} */\n Paused = 1,\n\n /** Animation is stopped */\n Stopped = 2,\n}\n\n/**\n * Root motion mode of {@link AnimationComponent}.\n */\nexport enum RootMotionMode {\n /** Do nothing */\n None = 0,\n /** Move and rotate root with the delta of its motion */\n ApplyToOwner = 1,\n /** Store the motion to be retrieved by a JS script */\n Script = 2,\n}\n\n/**\n * Rigid body force mode for {@link PhysXComponent#addForce} and {@link PhysXComponent#addTorque}.\n *\n * [PhysX API Reference](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxapi/files/structPxForceMode.html)\n */\nexport enum ForceMode {\n /** Apply as force */\n Force = 0,\n\n /** Apply as impulse */\n Impulse = 1,\n\n /** Apply as velocity change, mass dependent */\n VelocityChange = 2,\n\n /** Apply as mass dependent force */\n Acceleration = 3,\n}\n\n/**\n * Collision callback event type.\n */\nexport enum CollisionEventType {\n /** Touch/contact detected, collision */\n Touch = 0,\n\n /** Touch/contact lost, uncollide */\n TouchLost = 1,\n\n /** Touch/contact with trigger detected */\n TriggerTouch = 2,\n\n /** Touch/contact with trigger lost */\n TriggerTouchLost = 3,\n}\n\n/**\n * Rigid body {@link PhysXComponent#shape}.\n *\n * [PhysX SDK Guide](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/Geometry.html#geometry-types).\n */\nexport enum Shape {\n /** No shape. */\n None = 0,\n\n /** Sphere shape. */\n Sphere = 1,\n\n /** Capsule shape. */\n Capsule = 2,\n\n /** Box shape. */\n Box = 3,\n\n /** Plane shape. */\n Plane = 4,\n\n /** Convex mesh shape. */\n ConvexMesh = 5,\n\n /** Triangle mesh shape. */\n TriangleMesh = 6,\n}\n\n/**\n * Mesh attribute enum.\n * @since 0.9.0\n */\nexport enum MeshAttribute {\n /** Position attribute, 3 floats */\n Position = 0,\n\n /** Tangent attribute, 4 floats */\n Tangent = 1,\n\n /** Normal attribute, 3 floats */\n Normal = 2,\n\n /** Texture coordinate attribute, 2 floats */\n TextureCoordinate = 3,\n\n /** Color attribute, 4 floats, RGBA, range `0` to `1` */\n Color = 4,\n\n /** Joint id attribute, 8 unsigned ints */\n JointId = 5,\n\n /** Joint weights attribute, 8 floats */\n JointWeight = 6,\n\n /** Secondary texture coordinate attribute, 2 floats */\n SecondaryTextureCoordinate = 7,\n}\n\n/** Proxy used to override prototypes of destroyed objects. */\nexport const DestroyedObjectInstance = createDestroyedProxy('object');\n/** Proxy used to override prototypes of destroyed components. */\nexport const DestroyedComponentInstance = createDestroyedProxy('component');\n/** Proxy used to override prototypes of destroyed prefabs. */\nexport const DestroyedPrefabInstance = createDestroyedProxy('prefab/scene');\n\n/**\n * Check whether a given shape is a mesh or not.\n *\n * @param shape The shape to check.\n * @returns `true` if the shape is a mesh, `false` if it's a primitive.\n */\nfunction isMeshShape(shape: Shape): boolean {\n return shape === Shape.ConvexMesh || shape === Shape.TriangleMesh;\n}\n\n/**\n * Check whether an object is the {@link Component} class or not,\n *\n * @note This method if foolproof to developers inadvertently using\n * multiple Wonderland Engine API in a bundle.\n *\n * @param value The object to check.\n * @returns `true` if the object is a {@link Component} class, `false` otherwise.\n */\nfunction isBaseComponentClass(\n value: Constructor | null\n): value is ComponentConstructor {\n return (\n !!value &&\n value.hasOwnProperty('_isBaseComponent') &&\n (value as ComponentConstructor)._isBaseComponent\n );\n}\n\n/**\n * Constants.\n */\n\n/**\n * Default world up vector.\n */\nconst UP_VECTOR = [0, 1, 0];\n\nconst SQRT_3 = Math.sqrt(3);\n\n/**\n * Provides access to a component instance of a specified component type.\n *\n * @example\n *\n * This is how you extend this class to create your own custom\n * component:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * };\n * start() {}\n * onActivate() {}\n * onDeactivate() {}\n * update(dt) {}\n * }\n * ```\n *\n * In a component, the scene can be accessed using `this.scene`:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * start() {\n * const obj = this.scene.addObject();\n * }\n * }\n * ```\n */\nexport class Component {\n /**\n * Pack scene index and component id.\n *\n * @param scene Scene index.\n * @param id Component id.\n * @returns The packed id.\n *\n * @hidden\n */\n static _pack(scene: number, id: number) {\n return (scene << 22) | id;\n }\n\n /**\n * `true` for every class inheriting from this class.\n *\n * @note This is a workaround for `instanceof` to prevent issues\n * that could arise when an application ends up using multiple API versions.\n *\n * @hidden\n */\n static readonly _isBaseComponent = true;\n\n /**\n * Fixed order of attributes in the `Properties` array.\n *\n * @note This is used for parameter deserialization and is filled during\n * component registration.\n *\n * @hidden\n */\n static _propertyOrder: string[] = [];\n\n /**\n * Unique identifier for this component class.\n *\n * This is used to register, add, and retrieve components of a given type.\n */\n static TypeName: string;\n\n /**\n * Properties of this component class.\n *\n * Properties are public attributes that can be configured via the\n * Wonderland Editor.\n *\n * Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * myFloat: { type: Type.Float, default: false },\n * myTexture: { type: Type.Texture, default: null },\n * };\n * }\n * ```\n *\n * Properties are automatically added to each component instance, and are\n * accessible like any JS attribute:\n *\n * ```js\n * // Creates a new component and set each properties value:\n * const myComponent = object.addComponent(MyComponent, {\n * myBoolean: true,\n * myFloat: 42.0,\n * myTexture: null\n * });\n *\n * // You can also override the properties on the instance:\n * myComponent.myBoolean = false;\n * myComponent.myFloat = -42.0;\n * ```\n *\n * #### References\n *\n * Reference types (i.e., mesh, object, etc...) can also be listed as **required**:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myObject: Property.object({required: true}),\n * myAnimation: Property.animation({required: true}),\n * myTexture: Property.texture({required: true}),\n * myMesh: Property.mesh({required: true}),\n * }\n * }\n * ```\n *\n * Please note that references are validated **once** before the call to {@link Component.start} only,\n * via the {@link Component.validateProperties} method.\n */\n static Properties: Record;\n\n /**\n * When set to `true`, the child class inherits from the parent\n * properties, as shown in the following example:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Parent extends Component {\n * static TypeName = 'parent';\n * static Properties = {parentName: Property.string('parent')}\n * }\n *\n * class Child extends Parent {\n * static TypeName = 'child';\n * static Properties = {name: Property.string('child')}\n * static InheritProperties = true;\n *\n * start() {\n * // Works because `InheritProperties` is `true`.\n * console.log(`${this.name} inherits from ${this.parentName}`);\n * }\n * }\n * ```\n *\n * @note Properties defined in descendant classes will override properties\n * with the same name defined in ancestor classes.\n *\n * Defaults to `true`.\n */\n static InheritProperties?: boolean;\n\n /**\n * Called when this component class is registered.\n *\n * @example\n *\n * This callback can be used to register dependencies of a component,\n * e.g., component classes that need to be registered in order to add\n * them at runtime with {@link Object3D.addComponent}, independent of whether\n * they are used in the editor.\n *\n * ```js\n * class Spawner extends Component {\n * static TypeName = 'spawner';\n *\n * static onRegister(engine) {\n * engine.registerComponent(SpawnedComponent);\n * }\n *\n * // You can now use addComponent with SpawnedComponent\n * }\n * ```\n *\n * @example\n *\n * This callback can be used to register different implementations of a\n * component depending on client features or API versions.\n *\n * ```js\n * // Properties need to be the same for all implementations!\n * const SharedProperties = {};\n *\n * class Anchor extends Component {\n * static TypeName = 'spawner';\n * static Properties = SharedProperties;\n *\n * static onRegister(engine) {\n * if(navigator.xr === undefined) {\n * /* WebXR unsupported, keep this dummy component *\\/\n * return;\n * }\n * /* WebXR supported! Override already registered dummy implementation\n * * with one depending on hit-test API support *\\/\n * engine.registerComponent(window.HitTestSource === undefined ?\n * AnchorWithoutHitTest : AnchorWithHitTest);\n * }\n *\n * // This one implements no functions\n * }\n * ```\n */\n static onRegister?: (engine: WonderlandEngine) => void;\n\n /**\n * Allows to inherit properties directly inside the editor.\n *\n * @note Do not use directly, prefer using {@link inheritProperties}.\n *\n * @hidden\n */\n static _inheritProperties() {\n inheritProperties(this);\n }\n\n /**\n * Triggered when the component is initialized by the runtime. This method\n * will only be triggered **once** after instantiation.\n *\n * @note During the initialization phase, `this.scene` will not match\n * `engine.scene`, since `engine.scene` references the **active** scene:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * init() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `false`\n * }\n * start() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `true`\n * }\n * }\n * ```\n */\n init?(): void;\n\n /**\n * Triggered when the component is started by the runtime, or activated.\n *\n * You can use that to re-initialize the state of the component.\n */\n start?(): void;\n\n /**\n * Triggered **every frame** by the runtime.\n *\n * You should perform your business logic in this method. Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * class TranslateForwardComponent extends Component {\n * static TypeName = 'translate-forward-component';\n * static Properties = {\n * speed: { type: Type.Float, default: 1.0 }\n * };\n * constructor() {\n * this._forward = new Float32Array([0, 0, 0]);\n * }\n * update(dt) {\n * this.object.getForward(this._forward);\n * this._forward[0] *= this.speed;\n * this._forward[1] *= this.speed;\n * this._forward[2] *= this.speed;\n * this.object.translate(this._forward);\n * }\n * }\n * ```\n *\n * @param delta Elapsed time between this frame and the previous one, in **seconds**.\n */\n update?(delta: number): void;\n\n /**\n * Triggered when the component goes from an inactive state to an active state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), all the components\n * that were previously active will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onActivate?(): void;\n\n /**\n * Triggered when the component goes from an activated state to an inactive state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), the components of\n * the scene getting deactivated will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onDeactivate?(): void;\n\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @note This method will not be triggered for inactive scene being destroyed.\n *\n * @since 0.9.0\n */\n onDestroy?(): void;\n\n /** Manager index. @hidden */\n readonly _manager: number;\n /** Packed id, containing the scene and the local id. @hidden */\n readonly _id: number;\n /** Id relative to the scene component's manager. @hidden */\n readonly _localId: number;\n\n /**\n * Object containing this object.\n *\n * **Note**: This is cached for faster retrieval.\n *\n * @hidden\n */\n _object: Object3D | null;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n\n /**\n * Create a new instance\n *\n * @param engine The engine instance.\n * @param manager Index of the manager.\n * @param id WASM component instance index.\n *\n * @hidden\n */\n constructor(scene: Prefab, manager: number = -1, id: number = -1) {\n this._scene = scene;\n this._manager = manager;\n this._localId = id;\n this._id = Component._pack(scene._index, id);\n this._object = null;\n }\n\n /** Scene this component is part of. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** The name of this component's type */\n get type(): string {\n const ctor = this.constructor as ComponentConstructor;\n return ctor.TypeName;\n }\n\n /** The object this component is attached to. */\n get object(): Object3D {\n if (!this._object) {\n const objectId = this.engine.wasm._wl_component_get_object(\n this._manager,\n this._id\n );\n this._object = this._scene.wrap(objectId);\n }\n return this._object;\n }\n\n /**\n * Set whether this component is active.\n *\n * Activating/deactivating a component comes at a small cost of reordering\n * components in the respective component manager. This function therefore\n * is not a trivial assignment.\n *\n * Does nothing if the component is already activated/deactivated.\n *\n * @param active New active state.\n */\n set active(active: boolean) {\n this.engine.wasm._wl_component_setActive(this._manager, this._id, active);\n }\n\n /** `true` if the component is marked as active and its scene is active. */\n get active(): boolean {\n return this.markedActive && this._scene.isActive;\n }\n\n /**\n * `true` if the component is marked as active in the scene, `false` otherwise.\n *\n * @note At the opposite of {@link Component.active}, this accessor doesn't\n * take into account whether the scene is active or not.\n */\n get markedActive(): boolean {\n return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0;\n }\n\n /**\n * Copy all the properties from `src` into this instance.\n *\n * @note Only properties are copied. If a component needs to\n * copy extra data, it needs to override this method.\n *\n * #### Example\n *\n * ```js\n * class MyComponent extends Component {\n * nonPropertyData = 'Hello World';\n *\n * copy(src) {\n * super.copy(src);\n * this.nonPropertyData = src.nonPropertyData;\n * return this;\n * }\n * }\n * ```\n *\n * @note This method is called by {@link Object3D.clone}. Do not attempt to:\n * - Create new component\n * - Read references to other objects\n *\n * When cloning via {@link Object3D.clone}, this method will be called before\n * {@link Component.start}.\n *\n * @note JavaScript component properties aren't retargeted. Thus, references\n * inside the source object will not be retargeted to the destination object,\n * at the exception of the skin data on {@link MeshComponent} and {@link AnimationComponent}.\n *\n * @param src The source component to copy from.\n *\n * @returns Reference to self (for method chaining).\n */\n copy(src: Record): this {\n const ctor = this.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return this;\n for (const name in properties) {\n const property = properties[name];\n const value = src[name];\n if (value === undefined) continue;\n const cloner = property.cloner ?? defaultPropertyCloner;\n (this as Record)[name] = cloner.clone(property.type, value);\n }\n return this;\n }\n\n /**\n * Remove this component from its objects and destroy it.\n *\n * It is best practice to set the component to `null` after,\n * to ensure it does not get used later.\n *\n * ```js\n * c.destroy();\n * c = null;\n * ```\n * @since 0.9.0\n */\n destroy(): void {\n const manager = this._manager;\n if (manager < 0 || this._id < 0) return;\n\n /* This call will mark the component destroyed,\n * automatically calling `_triggerOnDestroy`. */\n this.engine.wasm._wl_component_remove(manager, this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const componentA = obj.addComponent('mesh');\n * const componentB = obj.addComponent('mesh');\n * const componentC = componentB;\n * console.log(componentA === componentB); // false\n * console.log(componentA === componentA); // true\n * console.log(componentB === componentC); // true\n * ```\n */\n equals(otherComponent: Component | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherComponent) return false;\n return this._manager === otherComponent._manager && this._id === otherComponent._id;\n }\n\n /**\n * Reset the component properties to default.\n *\n * @note This is automatically called during the component instantiation.\n *\n * @returns Reference to self (for method chaining).\n */\n resetProperties(): this {\n resetComponentProperties(this);\n return this;\n }\n\n /** @deprecated Use {@link Component.resetProperties} instead. */\n reset(): this {\n return this.resetProperties();\n }\n\n /**\n * Validate the properties on this instance.\n *\n * @throws If any of the required properties isn't initialized\n * on this instance.\n */\n validateProperties(): void {\n const ctor = this.constructor as ComponentConstructor;\n if (!ctor.Properties) return;\n\n for (const name in ctor.Properties) {\n if (!ctor.Properties[name].required) continue;\n if (!(this as Record)[name]) {\n throw new Error(`Property '${name}' is required but was not initialized`);\n }\n }\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Component(destroyed)';\n }\n return `Component('${this.type}', ${this._localId})`;\n }\n\n /**\n * `true` if the component is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const comp = obj.addComponent('mesh');\n * comp.customParam = 'Hello World!';\n *\n * console.log(comp.isDestroyed); // Prints `false`\n * comp.destroy();\n * console.log(comp.isDestroyed); // Prints `true`\n * console.log(comp.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /** @hidden */\n _copy(src: this, offsetsPtr: number, copyInfoPtr: number) {\n const wasm = this.engine.wasm;\n\n /** @todo: Support retargeting for `Object3D.clone` as well. */\n const offsets = wasm.HEAPU32;\n const offsetsStart = offsetsPtr >>> 2;\n\n const copyInfoStart = copyInfoPtr >>> 1;\n const srcRootIndex = wasm.HEAPU16[copyInfoStart]; /* Defaults to max ushort */\n const srcRootSize = wasm.HEAPU16[copyInfoStart + 1]; /* Defaults to 0 */\n const dstRootIndex = wasm.HEAPU16[copyInfoStart + 2]; /* Defaults to 0 */\n\n const destScene = this._scene;\n\n const ctor = this.constructor as ComponentConstructor;\n for (const name in ctor.Properties) {\n const value = (src as Record)[name];\n if (value === null) {\n (this as Record)[name] = null;\n continue;\n }\n\n const prop = ctor.Properties[name];\n const offset = offsets[offsetsStart + prop.type];\n\n let retargeted = null;\n switch (prop.type) {\n case Type.Object: {\n let index = wasm._wl_object_index((value as Object3D)._id) + offset;\n const dist = index - srcRootIndex;\n if (dist >= 0 && dist <= srcRootSize) {\n /* Only retarget if a reference points into the source hierarchy. */\n index = dstRootIndex + dist;\n }\n const id = wasm._wl_object_id(destScene._index, index);\n retargeted = destScene.wrap(id);\n break;\n }\n case Type.Animation:\n retargeted = destScene.animations.wrap(\n offset + (value as Animation)._index\n );\n break;\n case Type.Skin:\n retargeted = destScene.skins.wrap(offset + (value as Skin)._index);\n break;\n default:\n const cloner = prop.cloner ?? defaultPropertyCloner;\n retargeted = cloner.clone(prop.type, value);\n break;\n }\n (this as Record)[name] = retargeted;\n }\n return this;\n }\n\n /**\n * Trigger the component {@link Component.init} method.\n *\n * @note Use this method instead of directly calling {@link Component.init},\n * because this method creates an handler for the {@link Component.start}.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerInit() {\n if (this.init) {\n try {\n this.init();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} init() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /* Arm onActivate() with the initial start() call */\n const oldActivate = this.onActivate;\n this.onActivate = function () {\n this.onActivate = oldActivate;\n let failed = false;\n try {\n this.validateProperties();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} validateProperties() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n try {\n this.start?.();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} start() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n if (failed) {\n this.active = false;\n return;\n }\n\n if (!this.onActivate) return;\n\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n };\n }\n\n /**\n * Trigger the component {@link Component.update} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerUpdate(dt: number) {\n if (!this.update) return;\n try {\n this.update(dt);\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} update() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n if (this.engine.wasm._deactivate_component_on_error) {\n this.active = false;\n }\n }\n }\n\n /**\n * Trigger the component {@link Component.onActivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnActivate() {\n if (!this.onActivate) return;\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDeactivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDeactivate() {\n if (!this.onDeactivate) return;\n try {\n this.onDeactivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDeactivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDestroy} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDestroy() {\n try {\n if (this.onDestroy) this.onDestroy();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDestroy() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n this._scene._components.destroy(this);\n }\n}\n\n/**\n * Components must be registered before loading / appending a scene.\n *\n * It's possible to end up with a broken component in the following cases:\n *\n * - Component wasn't registered when the scene was loaded\n * - Component instantiation failed\n *\n * This dummy component is thus used as a placeholder by the engine.\n */\nexport class BrokenComponent extends Component {\n static TypeName = '__broken-component__';\n}\n\n/**\n * Merge the ascendant properties of class\n *\n * This method walks the prototype chain, and merges\n * all the properties found in parent components.\n *\n * Example:\n *\n * ```js\n * import {Property, inheritProperties} from '@wonderlandengine/api';\n *\n * class Parent {\n * static Properties = { parentProp: Property.string('parent') };\n * }\n *\n * class Child extends Parent {\n * static Properties = { childProp: Property.string('child') };\n * }\n * inheritProperties(Child);\n * ```\n *\n * @param target The class in which properties should be merged\n *\n * @hidden\n */\nexport function inheritProperties(target: ComponentConstructor | PropertyRecord) {\n const chain: ComponentConstructor[] = [];\n let curr: Constructor | null = target;\n while (curr && !isBaseComponentClass(curr)) {\n const comp = curr as ComponentConstructor;\n\n /* Stop at the first class that doesn't require properties merging */\n const needsMerge = comp.hasOwnProperty('InheritProperties')\n ? comp.InheritProperties\n : true;\n if (!needsMerge) break;\n\n if (comp.hasOwnProperty('Properties')) {\n /* We push properties even if the object isn't deriving from a Component class.\n * This could theoretically lead to issue, when inheriting from another type\n * of component (lit-like elements) but extremely unlikely. */\n chain.push(comp);\n }\n curr = Object.getPrototypeOf(curr);\n }\n\n /* No prototype merge is needed. */\n if (!chain.length || (chain.length === 1 && chain[0] === target)) {\n return;\n }\n\n const merged: Record = {};\n for (let i = chain.length - 1; i >= 0; --i) {\n Object.assign(merged, chain[i].Properties);\n }\n target.Properties = merged;\n}\n\n/**\n * Native collision component.\n *\n * Provides access to a native collision component instance.\n */\nexport class CollisionComponent extends Component {\n /** @override */\n static TypeName = 'collision';\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * Collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the returned vector is used.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** Collision component collider */\n @nativeProperty()\n get collider(): Collider {\n return this.engine.wasm._wl_collision_component_get_collider(this._id);\n }\n\n /**\n * Set collision component collider.\n *\n * @param collider Collider of the collision component.\n */\n set collider(collider: Collider) {\n this.engine.wasm._wl_collision_component_set_collider(this._id, collider);\n }\n\n /**\n * Equivalent to {@link CollisionComponent.getExtents}.\n *\n * @note Prefer to use {@link CollisionComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n }\n\n /**\n * Set collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the passed vector is used.\n *\n * Example:\n *\n * ```js\n * // Spans 1 unit on the x-axis, 2 on the y-axis, 3 on the z-axis.\n * collision.extent = [1, 2, 3];\n * ```\n *\n * @param extents Extents of the collision component, expects a\n * 3 component array.\n */\n set extents(extents: Readonly) {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = extents[0];\n wasm.HEAPF32[ptr + 1] = extents[1];\n wasm.HEAPF32[ptr + 2] = extents[2];\n }\n\n /**\n * Get collision component radius.\n *\n * @note If {@link collider} is not {@link Collider.Sphere}, the returned value\n * corresponds to the radius of a sphere enclosing the shape.\n *\n * Example:\n *\n * ```js\n * sphere.radius = 3.0;\n * console.log(sphere.radius); // 3.0\n *\n * box.extents = [2.0, 2.0, 2.0];\n * console.log(box.radius); // 1.732...\n * ```\n *\n */\n get radius(): number {\n const wasm = this.engine.wasm;\n if (this.collider === Collider.Sphere)\n return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2];\n const extents = new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n const x2 = extents[0] * extents[0];\n const y2 = extents[1] * extents[1];\n const z2 = extents[2] * extents[2];\n return Math.sqrt(x2 + y2 + z2) / 2;\n }\n\n /**\n * Set collision component radius.\n *\n * @param radius Radius of the collision component\n *\n * @note If {@link collider} is not {@link Collider.Sphere},\n * the extents are set to form a square that fits a sphere with the provided radius.\n *\n * Example:\n *\n * ```js\n * aabbCollision.radius = 2.0; // AABB fits a sphere of radius 2.0\n * boxCollision.radius = 3.0; // Box now fits a sphere of radius 3.0, keeping orientation\n * ```\n *\n */\n set radius(radius: number) {\n const length = this.collider === Collider.Sphere ? radius : (2 * radius) / SQRT_3;\n this.extents.set([length, length, length]);\n }\n\n /**\n * Collision component group.\n *\n * The groups is a bitmask that is compared to other components in {@link CollisionComponent#queryOverlaps}\n * or the group in {@link Scene#rayCast}.\n *\n * Colliders that have no common groups will not overlap with each other. If a collider\n * has none of the groups set for {@link Scene#rayCast}, the ray will not hit it.\n *\n * Each bit represents belonging to a group, see example.\n *\n * ```js\n * // c belongs to group 2\n * c.group = (1 << 2);\n *\n * // c belongs to group 0\n * c.group = (1 << 0);\n *\n * // c belongs to group 0 *and* 2\n * c.group = (1 << 0) | (1 << 2);\n *\n * (c.group & (1 << 2)) != 0; // true\n * (c.group & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get group(): number {\n return this.engine.wasm._wl_collision_component_get_group(this._id);\n }\n\n /**\n * Set collision component group.\n *\n * @param group Group mask of the collision component.\n */\n set group(group: number) {\n this.engine.wasm._wl_collision_component_set_group(this._id, group);\n }\n\n /**\n * Query overlapping objects.\n *\n * Usage:\n *\n * ```js\n * const collision = object.getComponent('collision');\n * const overlaps = collision.queryOverlaps();\n * for(const otherCollision of overlaps) {\n * const otherObject = otherCollision.object;\n * console.log(`Collision with object ${otherObject.objectId}`);\n * }\n * ```\n *\n * @returns Collision components overlapping this collider.\n */\n queryOverlaps(): CollisionComponent[] {\n const count = this.engine.wasm._wl_collision_component_query_overlaps(\n this._id,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const overlaps: CollisionComponent[] = new Array(count);\n for (let i = 0; i < count; ++i) {\n const id = this.engine.wasm._tempMemUint16[i];\n overlaps[i] = this._scene._components.wrapCollision(id);\n }\n return overlaps;\n }\n}\n\n/**\n * Native text component\n *\n * Provides access to a native text component instance\n */\nexport class TextComponent extends Component {\n /** @override */\n static TypeName = 'text';\n\n /** Text component alignment. */\n @nativeProperty()\n get alignment(): Alignment {\n return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id);\n }\n\n /**\n * Set text component alignment.\n *\n * @param alignment Alignment for the text component.\n */\n set alignment(alignment: Alignment) {\n this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment);\n }\n\n /**\n * Text component vertical alignment.\n * @since 1.2.0\n */\n @nativeProperty()\n get verticalAlignment(): VerticalAlignment {\n return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id);\n }\n\n /**\n * Set text component vertical alignment.\n *\n * @param verticalAlignment Vertical for the text component.\n * @since 1.2.0\n */\n set verticalAlignment(verticalAlignment: VerticalAlignment) {\n this.engine.wasm._wl_text_component_set_vertical_alignment(\n this._id,\n verticalAlignment\n );\n }\n\n /**\n * Text component justification.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n @nativeProperty()\n get justification() {\n return this.verticalAlignment;\n }\n\n /**\n * Set text component justification.\n *\n * @param justification Justification for the text component.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n set justification(justification: VerticalAlignment) {\n this.verticalAlignment = justification;\n }\n\n /**\n * Whether text is justified horizontally.\n *\n * Aligns text horizontally to both margins by adding space between words.\n *\n * Requires {@link wrapMode} to be {@link TextWrapMode.Soft} or\n * {@link TextWrapMode.Hard} and non-0 {@link wrapWidth}.\n *\n * The last line in a paragraph is never justified and respects\n * {@link alignment}.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get justified(): boolean {\n return !!this.engine.wasm._wl_text_component_get_justified(this._id);\n }\n\n /**\n * Set whether text is justified horizontally.\n *\n * @param justified New justified state for the text component.\n * @since 1.3.0\n */\n set justified(justified: boolean) {\n this.engine.wasm._wl_text_component_set_justified(this._id, justified);\n }\n\n /** Text component character spacing. */\n @nativeProperty()\n get characterSpacing(): number {\n return this.engine.wasm._wl_text_component_get_character_spacing(this._id);\n }\n\n /**\n * Set text component character spacing.\n *\n * @param spacing Character spacing for the text component.\n */\n set characterSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing);\n }\n\n /** Text component line spacing. */\n @nativeProperty()\n get lineSpacing(): number {\n return this.engine.wasm._wl_text_component_get_line_spacing(this._id);\n }\n\n /**\n * Set text component line spacing.\n *\n * @param spacing Line spacing for the text component\n */\n set lineSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing);\n }\n\n /** Text component effect. */\n @nativeProperty()\n get effect(): TextEffect {\n return this.engine.wasm._wl_text_component_get_effect(this._id);\n }\n\n /**\n * Set text component effect.\n *\n * @param effect Effect for the text component\n */\n set effect(effect: TextEffect) {\n this.engine.wasm._wl_text_component_set_effect(this._id, effect);\n }\n\n /**\n * Equivalent to {@link getEffectOffset}.\n *\n * @note Prefer to use {@link getEffectOffset} for performance.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get effectOffset(): Float32Array {\n return this.getEffectOffset();\n }\n\n /**\n * Equivalent to {@link setEffectOffset}.\n *\n * @since 1.3.0\n */\n set effectOffset(offset: Readonly) {\n this.setEffectOffset(offset);\n }\n\n /** @overload */\n getEffectOffset(): Float32Array;\n /**\n * Get text component effect offset.\n *\n * @param out Destination array, expected to have at least 2 elements.\n * @returns The `out` parameter.\n *\n * @since 1.3.0\n */\n getEffectOffset(out: T): T;\n getEffectOffset(out: NumberArray = new Float32Array(2)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n return out;\n }\n\n /**\n * Set text component effect offset.\n *\n * The offset is given as X and Y factors for {@link Font.emHeight}. E.g. a\n * value of 2 in one axis offsets the effect by two font line heights. A\n * positive Y value moves the effect **upwards**.\n *\n * @param offset Array with new offset, expected to have at least 2 elements.\n *\n * @since 1.3.0\n */\n setEffectOffset(offset: Readonly) {\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(offset);\n wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem);\n }\n\n /**\n * Text component line wrap mode.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapMode(): TextWrapMode {\n return this.engine.wasm._wl_text_component_get_wrapMode(this._id);\n }\n\n /**\n * Set text component line wrap mode.\n *\n * @param wrapMode Line wrap mode for the text component.\n * @since 1.2.1\n */\n set wrapMode(wrapMode: TextWrapMode) {\n this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode);\n }\n\n /**\n * Text component line wrap width, in object space.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapWidth(): number {\n return this.engine.wasm._wl_text_component_get_wrapWidth(this._id);\n }\n\n /**\n * Set text component line wrap width.\n *\n * Only takes effect when {@link wrapMode} is something other than\n * {@link TextWrapMode.None}.\n *\n * @param width Line wrap width for the text component, in object space.\n * @since 1.2.1\n */\n set wrapWidth(width: number) {\n this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width);\n }\n\n /** Text component text. */\n @nativeProperty()\n get text(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_text_component_get_text(this._id);\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Set text component text.\n *\n * @param text Text of the text component.\n */\n set text(text: any) {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString()));\n }\n\n /**\n * Set material to render the text with.\n *\n * @param material New material.\n */\n set material(material: Material | null | undefined) {\n const matIndex = material ? material._id : 0;\n this.engine.wasm._wl_text_component_set_material(this._id, matIndex);\n }\n\n /** Material used to render the text. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_text_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** @overload */\n getBoundingBoxForText(text: string): Float32Array;\n /**\n * Axis-aligned bounding box for a given text, in object space.\n *\n * To calculate the size for the currently set text, use\n * {@link getBoundingBox}.\n *\n * Useful for calculating the text size before an update and potentially\n * adjusting the text:\n *\n * ```js\n * let updatedName = 'some very long name';\n * const box = new Float32Array(4);\n * text.getBoundingBoxForText(updatedName, box);\n * const width = box[2] - box[0];\n * if(width > 2.0) {\n * updatedName = updatedName.slice(0, 5) + '...';\n * }\n * text.text = updatedName;\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBoxForText(text: string, out: T): T;\n /** @overload */\n getBoundingBoxForText(\n text: string,\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n /* Offset by 4 floats, output is written to _tempMem */\n const textPtr = wasm.tempUTF8(text, 4 * 4);\n this.engine.wasm._wl_text_component_get_boundingBox(\n this._id,\n textPtr,\n wasm._tempMem\n );\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n getBoundingBox(): Float32Array;\n /**\n * Axis-aligned bounding box, in object space.\n *\n * The bounding box is computed using the current component properties\n * that influence the position and size of the text. The bounding box is\n * affected by alignment, spacing, effect type and the font set in the\n * material.\n *\n * To calculate the size for a different text, use\n * {@link getBoundingBoxForText}.\n *\n * Useful for adjusting text position or scaling:\n *\n * ```js\n * const box = new Float32Array(4);\n * text.getBoundingBox(box);\n * const width = box[2] - box[0];\n * // Make text 1m wide\n * text.object.setScalingLocal([1/width, 1, 1]);\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBox(out: T): T;\n /** @overload */\n getBoundingBox(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n}\n\n/**\n * Native view component.\n *\n * Provides access to a native view component instance.\n */\nexport class ViewComponent extends Component {\n /** @override */\n static TypeName = 'view';\n\n /**\n * Projection type of the view.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get projectionType(): ProjectionType {\n return this.engine.wasm._wl_view_component_get_projectionType(this._id);\n }\n\n /**\n * Set the projection type of the view.\n *\n * @param type New projection type.\n * @since 1.2.2\n */\n set projectionType(type) {\n this.engine.wasm._wl_view_component_set_projectionType(this._id, type);\n }\n\n /** @overload */\n getProjectionMatrix(): Float32Array;\n /**\n * Projection matrix.\n *\n * A 4x4 matrix that transforms from view space to a WebGL-compatible clip\n * space (-1 to 1 on all axes, near plane at -1, far plane at 1).\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the projection matrix reported by the device.\n *\n * @note This is not necessarily the final projection matrix used for\n * rendering. You can use it for unprojecting from screen space coordinates\n * to view space.\n *\n * @param out Destination array/vector, expected to have at least 16 elements.\n * @returns The `out` parameter.\n */\n getProjectionMatrix(out: T): T;\n getProjectionMatrix(out: NumberArray = new Float32Array(16)): NumberArray {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem);\n for (let i = 0; i < 16; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Equivalent to {@link ViewComponent.getProjectionMatrix}.\n *\n * @note Prefer to use {@link ViewComponent.getProjectionMatrix} for performance.\n */\n @enumerable()\n get projectionMatrix(): Float32Array {\n return this.getProjectionMatrix();\n }\n\n /**\n * Override projection matrix for this view.\n *\n * Bypasses the generation of the projection matrix from viewport, fov, near, far.\n *\n * @hidden\n */\n _setProjectionMatrix(v: Readonly) {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._tempMemFloat.set(v);\n wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem);\n }\n\n /**\n * Generate projection matrix from viewport, fov, near, far.\n *\n * Overwrites any projection matrix set manually.\n *\n * @hidden\n */\n _generateProjectionMatrix() {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_generate_projectionMatrix(this._id);\n }\n\n /** ViewComponent near clipping plane value. */\n @nativeProperty()\n get near(): number {\n return this.engine.wasm._wl_view_component_get_near(this._id);\n }\n\n /**\n * Set near clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param near Near depth value.\n */\n set near(near: number) {\n this.engine.wasm._wl_view_component_set_near(this._id, near);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(near, this.far);\n }\n }\n\n /** Far clipping plane value. */\n @nativeProperty()\n get far(): number {\n return this.engine.wasm._wl_view_component_get_far(this._id);\n }\n\n /**\n * Set far clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param far Near depth value.\n */\n set far(far: number) {\n this.engine.wasm._wl_view_component_set_far(this._id, far);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(this.near, far);\n }\n }\n\n /**\n * Get the horizontal field of view for the view, **in degrees**.\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the field of view reported by the device, regardless of the fov\n * that was set.\n */\n @nativeProperty()\n get fov(): number {\n return this.engine.wasm._wl_view_component_get_fov(this._id);\n }\n\n /**\n * Set the horizontal field of view for the view, **in degrees**.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Perspective}.\n *\n * If an XR session is active and this is the left or right eye view, the\n * field of view reported by the device is used and this value is ignored.\n * After the XR session ends, the new value is applied.\n *\n * @param fov Horizontal field of view, **in degrees**.\n */\n set fov(fov) {\n this.engine.wasm._wl_view_component_set_fov(this._id, fov);\n }\n\n /** @overload */\n getViewport(): Int32Array;\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n */\n getViewport(out: T): T;\n getViewport(out: NumberArray = new Int32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_view_component_get_viewport(this._id);\n for (let i = 0; i < 4; ++i) {\n out[i] = wasm.HEAPF32[ptr + i];\n }\n return out;\n }\n\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n */\n @enumerable()\n get viewport(): Int32Array {\n return this.getViewport();\n }\n\n /**\n * Set viewport.\n *\n * @hidden\n */\n _setViewport(x: number, y: number, width: number, height: number) {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_set_viewport(this._id, x, y, width, height);\n }\n\n /**\n * Get the width of the orthographic viewing volume.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get extent(): number {\n return this.engine.wasm._wl_view_component_get_extent(this._id);\n }\n\n /**\n * Set the width of the orthographic viewing volume.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Orthographic}.\n *\n * @param extent New extent.\n * @since 1.2.2\n */\n set extent(extent) {\n this.engine.wasm._wl_view_component_set_extent(this._id, extent);\n }\n}\n\n/**\n * Native input component.\n *\n * Provides access to a native input component instance.\n */\nexport class InputComponent extends Component {\n /** @override */\n static TypeName = 'input';\n\n /** Input component type */\n @nativeProperty()\n get inputType(): InputType {\n return this.engine.wasm._wl_input_component_get_type(this._id);\n }\n\n /**\n * Set input component type.\n *\n * @params New input component type.\n */\n set inputType(type: InputType) {\n this.engine.wasm._wl_input_component_set_type(this._id, type);\n }\n\n /**\n * WebXR Device API input source associated with this input component,\n * if type {@link InputType.ControllerLeft} or {@link InputType.ControllerRight}.\n */\n @enumerable()\n get xrInputSource(): XRInputSource | null {\n const xr = this.engine.xr;\n if (!xr) return null;\n\n for (let inputSource of xr.session.inputSources) {\n if (inputSource.handedness == this.handedness) {\n return inputSource;\n }\n }\n\n return null;\n }\n\n /**\n * 'left', 'right' or `null` depending on the {@link InputComponent#inputType}.\n */\n @enumerable()\n get handedness(): 'left' | 'right' | null {\n const inputType = this.inputType;\n if (\n inputType == InputType.ControllerRight ||\n inputType == InputType.RayRight ||\n inputType == InputType.EyeRight\n )\n return 'right';\n if (\n inputType == InputType.ControllerLeft ||\n inputType == InputType.RayLeft ||\n inputType == InputType.EyeLeft\n )\n return 'left';\n\n return null;\n }\n}\n\n/**\n * Native light component.\n *\n * Provides access to a native light component instance.\n */\nexport class LightComponent extends Component {\n /** @override */\n static TypeName = 'light';\n\n /** @overload */\n getColor(): Float32Array;\n /**\n * Get light color.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n * @since 1.0.0\n */\n getColor(out: T): T;\n getColor(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set light color.\n *\n * @param c New color array/vector, expected to have at least 3 elements.\n * @since 1.0.0\n */\n setColor(c: Readonly): void {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = c[0];\n wasm.HEAPF32[ptr + 1] = c[1];\n wasm.HEAPF32[ptr + 2] = c[2];\n }\n\n /**\n * View on the light color.\n *\n * @note Prefer to use {@link getColor} in performance-critical code.\n */\n @nativeProperty()\n get color(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_light_component_get_color(this._id),\n 3\n );\n }\n\n /**\n * Set light color.\n *\n * @param c Color of the light component.\n *\n * @note Prefer to use {@link setColor} in performance-critical code.\n */\n set color(c: Readonly) {\n this.color.set(c);\n }\n\n /** Light type. */\n @nativeProperty()\n get lightType(): LightType {\n return this.engine.wasm._wl_light_component_get_type(this._id);\n }\n\n /**\n * Set light type.\n *\n * @param lightType Type of the light component.\n */\n set lightType(t: LightType) {\n this.engine.wasm._wl_light_component_set_type(this._id, t);\n }\n\n /**\n * Light intensity.\n * @since 1.0.0\n */\n @nativeProperty()\n get intensity(): number {\n return this.engine.wasm._wl_light_component_get_intensity(this._id);\n }\n\n /**\n * Set light intensity.\n *\n * @param intensity Intensity of the light component.\n * @since 1.0.0\n */\n set intensity(intensity: number) {\n this.engine.wasm._wl_light_component_set_intensity(this._id, intensity);\n }\n\n /**\n * Outer angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get outerAngle(): number {\n return this.engine.wasm._wl_light_component_get_outerAngle(this._id);\n }\n\n /**\n * Set outer angle for spot lights.\n *\n * @param angle Outer angle, in degrees.\n * @since 1.0.0\n */\n set outerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle);\n }\n\n /**\n * Inner angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get innerAngle(): number {\n return this.engine.wasm._wl_light_component_get_innerAngle(this._id);\n }\n\n /**\n * Set inner angle for spot lights.\n *\n * @param angle Inner angle, in degrees.\n * @since 1.0.0\n */\n set innerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle);\n }\n\n /**\n * Whether the light casts shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadows(): boolean {\n return !!this.engine.wasm._wl_light_component_get_shadows(this._id);\n }\n\n /**\n * Set whether the light casts shadows.\n *\n * @param b Whether the light casts shadows.\n * @since 1.0.0\n */\n set shadows(b: boolean) {\n this.engine.wasm._wl_light_component_set_shadows(this._id, b);\n }\n\n /**\n * Range for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowRange(): number {\n return this.engine.wasm._wl_light_component_get_shadowRange(this._id);\n }\n\n /**\n * Set range for shadows.\n *\n * @param range Range for shadows.\n * @since 1.0.0\n */\n set shadowRange(range: number) {\n this.engine.wasm._wl_light_component_set_shadowRange(this._id, range);\n }\n\n /**\n * Bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowBias(this._id);\n }\n\n /**\n * Set bias value for shadows.\n *\n * @param bias Bias for shadows.\n * @since 1.0.0\n */\n set shadowBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias);\n }\n\n /**\n * Normal bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowNormalBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id);\n }\n\n /**\n * Set normal bias value for shadows.\n *\n * @param bias Normal bias for shadows.\n * @since 1.0.0\n */\n set shadowNormalBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias);\n }\n\n /**\n * Texel size for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowTexelSize(): number {\n return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id);\n }\n\n /**\n * Set texel size for shadows.\n *\n * @param size Texel size for shadows.\n * @since 1.0.0\n */\n set shadowTexelSize(size: number) {\n this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size);\n }\n\n /**\n * Cascade count for {@link LightType.Sun} shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get cascadeCount(): number {\n return this.engine.wasm._wl_light_component_get_cascadeCount(this._id);\n }\n\n /**\n * Set cascade count for {@link LightType.Sun} shadows.\n *\n * @param count Cascade count.\n * @since 1.0.0\n */\n set cascadeCount(count: number) {\n this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count);\n }\n}\n\n/**\n * Native animation component.\n *\n * Provides access to a native animation component instance.\n */\nexport class AnimationComponent extends Component {\n /** @override */\n static TypeName = 'animation';\n\n /**\n * Emitter for animation events triggered on this component.\n *\n * The first argument is the name of the event.\n */\n readonly onEvent = new Emitter<[string]>();\n\n /**\n * Set animation to play.\n *\n * Make sure to {@link Animation#retarget} the animation to affect the\n * right objects.\n *\n * @param anim Animation to play.\n */\n set animation(anim: Animation | null | undefined) {\n this.scene.assertOrigin(anim);\n this.engine.wasm._wl_animation_component_set_animation(\n this._id,\n anim ? anim._id : 0\n );\n }\n\n /** Animation set for this component */\n @nativeProperty()\n get animation(): Animation | null {\n const index = this.engine.wasm._wl_animation_component_get_animation(this._id);\n return this._scene.animations.wrap(index);\n }\n\n /**\n * Set play count. Set to `0` to loop indefinitely.\n *\n * @param playCount Number of times to repeat the animation.\n */\n set playCount(playCount: number) {\n this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount);\n }\n\n /** Number of times the animation is played. */\n @nativeProperty()\n get playCount(): number {\n return this.engine.wasm._wl_animation_component_get_playCount(this._id);\n }\n\n /**\n * Set speed. Set to negative values to run the animation backwards.\n *\n * Setting speed has an immediate effect for the current frame's update\n * and will continue with the speed from the current point in the animation.\n *\n * @param speed New speed at which to play the animation.\n * @since 0.8.10\n */\n set speed(speed: number) {\n this.engine.wasm._wl_animation_component_set_speed(this._id, speed);\n }\n\n /**\n * Speed factor at which the animation is played.\n *\n * @since 0.8.10\n */\n @nativeProperty()\n get speed(): number {\n return this.engine.wasm._wl_animation_component_get_speed(this._id);\n }\n\n /** Current playing state of the animation */\n @enumerable()\n get state(): AnimationState {\n return this.engine.wasm._wl_animation_component_state(this._id);\n }\n\n /**\n * How to handle root motion on this component.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n @enumerable()\n get rootMotionMode(): RootMotionMode {\n return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id);\n }\n\n /**\n * Set how to handle root motion.\n *\n * @param mode Mode to handle root motion, see {@link RootMotionMode}.\n * @since 1.2.2\n */\n set rootMotionMode(mode: RootMotionMode) {\n this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode);\n }\n\n /**\n * Current iteration of the animation.\n *\n * If {@link playCount} is not unlimited, the value is in the range from\n * `0` to `playCount`.\n *\n * @since 1.2.3\n */\n get iteration(): number {\n return this.engine.wasm._wl_animation_component_get_iteration(this._id);\n }\n\n /**\n * Current playing position of the animation within the current iteration,\n * in seconds.\n *\n * The value is in the range from `0.0` to {@link AnimationComponent#duration},\n * if playing in reverse, this range is reversed as well.\n *\n * @since 1.2.3\n */\n get position(): number {\n return this.engine.wasm._wl_animation_component_get_position(this._id);\n }\n\n /**\n * Current duration to loop one iteration in seconds, offers a more accurate duration\n * than {@link Animation#duration} when blending multiple animations.\n *\n * @since 1.2.3\n */\n get duration(): number {\n return this.engine.wasm._wl_animation_component_get_duration(this._id);\n }\n\n /**\n * Play animation.\n *\n * If the animation is currently paused, resumes from that position. If the\n * animation is already playing, does nothing.\n *\n * To restart the animation, {@link AnimationComponent#stop} it first.\n */\n play(): void {\n this.engine.wasm._wl_animation_component_play(this._id);\n }\n\n /** Stop animation. */\n stop(): void {\n this.engine.wasm._wl_animation_component_stop(this._id);\n }\n\n /** Pause animation. */\n pause(): void {\n this.engine.wasm._wl_animation_component_pause(this._id);\n }\n\n /**\n * Get the value of a float parameter in the attached graph.\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @since 1.2.0\n */\n getFloatParameter(name: string): number | null {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n }\n\n /**\n * Set the value of a float parameter in the attached graph\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @param value Float value to set.\n * @returns 1 if the parameter was successfully set, 0 on fail.\n * @since 1.2.0\n */\n setFloatParameter(name: string, value: number): void {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._tempMemFloat[0] = value;\n wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem);\n }\n\n /** @overload */\n getRootMotionTranslation(): Float32Array;\n /**\n * Get the root motion translation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity translation.\n *\n * @since 1.2.2\n */\n getRootMotionTranslation(out: T): T;\n getRootMotionTranslation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRootMotionRotation(): Float32Array;\n /**\n * Get the root motion rotation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity rotation.\n *\n * @since 1.2.2\n */\n getRootMotionRotation(out: T): T;\n getRootMotionRotation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n}\n\n/**\n * Native mesh component.\n *\n * Provides access to a native mesh component instance.\n */\nexport class MeshComponent extends Component {\n /** @override */\n static TypeName = 'mesh';\n\n /**\n * Set material to render the mesh with.\n *\n * @param material Material to render the mesh with.\n */\n set material(material: Material | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_material(\n this._id,\n material ? material._id : 0\n );\n }\n\n /** Material used to render the mesh. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_mesh_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** Mesh rendered by this component. */\n @nativeProperty()\n get mesh(): Mesh | null {\n const index = this.engine.wasm._wl_mesh_component_get_mesh(this._id);\n return this.engine.meshes.wrap(index);\n }\n\n /**\n * Set mesh to rendered with this component.\n *\n * @param mesh Mesh rendered by this component.\n */\n set mesh(mesh: Mesh | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0);\n }\n\n /** Skin for this mesh component. */\n @nativeProperty()\n get skin(): Skin | null {\n const index = this.engine.wasm._wl_mesh_component_get_skin(this._id);\n return this._scene.skins.wrap(index);\n }\n\n /**\n * Set skin to transform this mesh component.\n *\n * @param skin Skin to use for rendering skinned meshes.\n */\n set skin(skin: Skin | null | undefined) {\n this.scene.assertOrigin(skin);\n this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0);\n }\n\n /**\n * Morph targets for this mesh component.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargets(): MorphTargets | null {\n const index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id);\n return this.engine.morphTargets.wrap(index);\n }\n\n /**\n * Set morph targets to transform this mesh component.\n *\n * @param morphTargets Morph targets to use for rendering.\n *\n * @since 1.2.0\n */\n set morphTargets(morphTargets: MorphTargets | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_morph_targets(\n this._id,\n morphTargets?._id ?? 0\n );\n }\n\n /**\n * Equivalent to {@link getMorphTargetWeights}.\n *\n * @note Prefer to use {@link getMorphTargetWeights} for performance.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargetWeights(): Float32Array {\n return this.getMorphTargetWeights();\n }\n\n /**\n * Set the morph target weights to transform this mesh component.\n *\n * @param weights New weights.\n *\n * @since 1.2.0\n */\n set morphTargetWeights(weights: Readonly) {\n this.setMorphTargetWeights(weights);\n }\n\n /** @overload */\n getMorphTargetWeights(): Float32Array;\n /**\n * Get morph target weights for this mesh component.\n *\n * @param out Destination array, expected to have at least as many elements\n * as {@link MorphTargets.count}.\n * @returns The `out` parameter.\n *\n * @since 1.2.0\n */\n getMorphTargetWeights(out: T): T;\n getMorphTargetWeights(out?: NumberArray): NumberArray {\n const wasm = this.engine.wasm;\n const count = wasm._wl_mesh_component_get_morph_target_weights(\n this._id,\n wasm._tempMem\n );\n if (!out) {\n out = new Float32Array(count);\n }\n for (let i = 0; i < count; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Get the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @returns The weight.\n *\n * @since 1.2.0\n */\n getMorphTargetWeight(target: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n return this.engine.wasm._wl_mesh_component_get_morph_target_weight(\n this._id,\n target\n );\n }\n\n /**\n * Set morph target weights for this mesh component.\n *\n * @param weights Array of new weights, expected to have at least as many\n * elements as {@link MorphTargets.count}.\n *\n * @since 1.2.0\n */\n setMorphTargetWeights(weights: Readonly) {\n const count = this.morphTargets?.count ?? 0;\n if (weights.length !== count) {\n throw new Error(`Expected ${count} weights but got ${weights.length}`);\n }\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(weights);\n wasm._wl_mesh_component_set_morph_target_weights(\n this._id,\n wasm._tempMem,\n weights.length\n );\n }\n\n /**\n * Set the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @param weight The new weight.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\n setMorphTargetWeight(target: number, weight: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n this.engine.wasm._wl_mesh_component_set_morph_target_weight(\n this._id,\n target,\n weight\n );\n }\n}\n\n/**\n * Native particle effect component.\n *\n * @since 1.4.0\n */\nexport class ParticleEffectComponent extends Component {\n /** @override */\n static TypeName = 'particle-effect';\n\n /** Particle effect used by this component. */\n @nativeProperty()\n get particleEffect(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(\n this._id\n );\n return this.engine.particleEffects.wrap(index);\n }\n\n /**\n * Set particle effect to use with this component.\n *\n * @param particleEffect Particle effect used by this component.\n */\n set particleEffect(particleEffect: ParticleEffect | null | undefined) {\n this.engine.wasm._wl_particleEffect_component_set_particleEffect(\n this._id,\n particleEffect?._id ?? 0\n );\n }\n}\n\n/**\n * Enum for Physics axes locking\n *\n * See {@link PhysXComponent.angularLockAxis} and {@link PhysXComponent.linearLockAxis}.\n */\nexport enum LockAxis {\n /**\n * No axis selected.\n */\n None = 0,\n\n /**\n * **X axis**:\n */\n X = 1 << 0,\n\n /**\n * **Y axis**:\n */\n Y = 1 << 1,\n\n /**\n * **Z axis**:\n */\n Z = 1 << 2,\n}\n\n/**\n * Native physx rigid body component.\n *\n * Provides access to a native mesh component instance.\n * Only available when using physx enabled runtime, see \"Project Settings > Runtime\".\n */\nexport class PhysXComponent extends Component {\n /** @override */\n static TypeName = 'physx';\n\n /** @overload */\n getTranslationOffset(): Float32Array;\n /**\n * Local translation offset.\n *\n * Allows to move a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getTranslationOffset(out: T): T;\n getTranslationOffset(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRotationOffset(): Float32Array;\n /**\n * Local rotation offset represented as a quaternion.\n *\n * Allows to rotate a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getRotationOffset(out: T): T;\n getRotationOffset(out: NumberArray = new Float32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr =\n wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * The shape extents for collision detection.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_physx_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** @overload */\n getLinearVelocity(): Float32Array;\n /**\n * Linear velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLinearVelocity(out: T): T;\n getLinearVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_linearVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getAngularVelocity(): Float32Array;\n /**\n * Angular velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getAngularVelocity(out: T): T;\n getAngularVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_angularVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /**\n * Set whether this rigid body is static.\n *\n * Setting this property only takes effect once the component\n * switches from inactive to active.\n *\n * @param b Whether the rigid body should be static.\n */\n set static(b: boolean) {\n this.engine.wasm._wl_physx_component_set_static(this._id, b);\n }\n\n /**\n * Whether this rigid body is static.\n *\n * This property returns whether the rigid body is *effectively*\n * static. If static property was set while the rigid body was\n * active, it will not take effect until the rigid body is set\n * inactive and active again. Until the component is set inactive,\n * this getter will return whether the rigid body is actually\n * static.\n */\n @nativeProperty()\n get static(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_static(this._id);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getTranslationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getTranslationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get translationOffset(): Float32Array {\n return this.getTranslationOffset();\n }\n\n /**\n * Set the offset translation.\n *\n * The array must be a vector of at least **3** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set translationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetTranslation(\n this._id,\n offset[0],\n offset[1],\n offset[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getRotationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getRotationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get rotationOffset(): Float32Array {\n return this.getRotationOffset();\n }\n\n /**\n * Set the offset rotation.\n *\n * The array must be a quaternion of at least **4** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set rotationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetRotation(\n this._id,\n offset[0],\n offset[1],\n offset[2],\n offset[3]\n );\n }\n\n /**\n * Set whether this rigid body is kinematic.\n *\n * @param b Whether the rigid body should be kinematic.\n */\n set kinematic(b: boolean) {\n this.engine.wasm._wl_physx_component_set_kinematic(this._id, b);\n }\n\n /**\n * Whether this rigid body is kinematic.\n */\n @nativeProperty()\n get kinematic(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id);\n }\n\n /**\n * Set whether this rigid body's gravity is enabled.\n *\n * @param b Whether the rigid body's gravity should be enabled.\n */\n set gravity(b: boolean) {\n this.engine.wasm._wl_physx_component_set_gravity(this._id, b);\n }\n\n /**\n * Whether this rigid body's gravity flag is enabled.\n */\n @nativeProperty()\n get gravity(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_gravity(this._id);\n }\n\n /**\n * Set whether this rigid body's simulate flag is enabled.\n *\n * @param b Whether the rigid body's simulate flag should be enabled.\n */\n set simulate(b: boolean) {\n this.engine.wasm._wl_physx_component_set_simulate(this._id, b);\n }\n\n /**\n * Whether this rigid body's simulate flag is enabled.\n */\n @nativeProperty()\n get simulate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_simulate(this._id);\n }\n\n /**\n * Set whether to allow simulation of this rigid body.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling {@link allowSimulation} while {@link trigger} is enabled\n * will disable {@link trigger}.\n *\n * @param b Whether to allow simulation of this rigid body.\n */\n set allowSimulation(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b);\n }\n\n /**\n * Whether to allow simulation of this rigid body.\n */\n @nativeProperty()\n get allowSimulation(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id);\n }\n\n /**\n * Set whether this rigid body may be queried in ray casts.\n *\n * @param b Whether this rigid body may be queried in ray casts.\n */\n set allowQuery(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b);\n }\n\n /**\n * Whether this rigid body may be queried in ray casts.\n */\n @nativeProperty()\n get allowQuery(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id);\n }\n\n /**\n * Set whether this physics body is a trigger.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling trigger while {@link allowSimulation} is enabled,\n * will disable {@link allowSimulation}.\n *\n * @param b Whether this physics body is a trigger.\n */\n set trigger(b: boolean) {\n this.engine.wasm._wl_physx_component_set_trigger(this._id, b);\n }\n\n /**\n * Whether this physics body is a trigger.\n */\n @nativeProperty()\n get trigger(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_trigger(this._id);\n }\n\n /**\n * Set the shape for collision detection.\n *\n * @param s New shape.\n * @since 0.8.5\n */\n set shape(s: Shape) {\n this.engine.wasm._wl_physx_component_set_shape(this._id, s);\n }\n\n /** The shape for collision detection. */\n @nativeProperty()\n get shape(): Shape {\n return this.engine.wasm._wl_physx_component_get_shape(this._id);\n }\n\n /**\n * Set additional data for the shape.\n *\n * Retrieved only from {@link PhysXComponent#shapeData}.\n * @since 0.8.10\n */\n set shapeData(d) {\n if (d == null || !isMeshShape(this.shape)) return;\n this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index);\n }\n\n /**\n * Additional data for the shape.\n *\n * `null` for {@link Shape} values: `None`, `Sphere`, `Capsule`, `Box`, `Plane`.\n * `{index: n}` for `TriangleMesh` and `ConvexHull`.\n *\n * This data is currently only for passing onto or creating other {@link PhysXComponent}.\n * @since 0.8.10\n */\n @nativeProperty()\n get shapeData(): {\n index: number;\n } | null {\n if (!isMeshShape(this.shape)) return null;\n return {\n index: this.engine.wasm._wl_physx_component_get_shape_data(this._id),\n };\n }\n\n /**\n * Set the shape extents for collision detection.\n *\n * @param e New extents for the shape.\n * @since 0.8.5\n */\n set extents(e: Readonly) {\n this.extents.set(e);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getExtents}.\n *\n * @note Prefer to use {@link PhysXComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n const wasm = this.engine.wasm;\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const ptr = wasm._wl_physx_component_get_extents(this._id);\n return new Float32Array(wasm.HEAPF32.buffer, ptr, 3);\n }\n\n /**\n * Get staticFriction.\n */\n @nativeProperty()\n get staticFriction(): number {\n return this.engine.wasm._wl_physx_component_get_staticFriction(this._id);\n }\n\n /**\n * Set staticFriction.\n * @param v New staticFriction.\n */\n set staticFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v);\n }\n\n /**\n * Get dynamicFriction.\n */\n @nativeProperty()\n get dynamicFriction(): number {\n return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id);\n }\n\n /**\n * Set dynamicFriction\n * @param v New dynamicDamping.\n */\n set dynamicFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v);\n }\n\n /**\n * Get bounciness.\n * @since 0.9.0\n */\n @nativeProperty()\n get bounciness(): number {\n return this.engine.wasm._wl_physx_component_get_bounciness(this._id);\n }\n\n /**\n * Set bounciness.\n * @param v New bounciness.\n * @since 0.9.0\n */\n set bounciness(v: number) {\n this.engine.wasm._wl_physx_component_set_bounciness(this._id, v);\n }\n\n /**\n * Get linearDamping/\n */\n @nativeProperty()\n get linearDamping(): number {\n return this.engine.wasm._wl_physx_component_get_linearDamping(this._id);\n }\n\n /**\n * Set linearDamping.\n * @param v New linearDamping.\n */\n set linearDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v);\n }\n\n /** Get angularDamping. */\n @nativeProperty()\n get angularDamping(): number {\n return this.engine.wasm._wl_physx_component_get_angularDamping(this._id);\n }\n\n /**\n * Set angularDamping.\n * @param v New angularDamping.\n */\n set angularDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v);\n }\n\n /**\n * Set linear velocity.\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New linear velocity.\n */\n set linearVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getLinearVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getLinearVelocity} for performance.\n */\n @nativeProperty()\n get linearVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set angular velocity\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New angular velocity\n */\n set angularVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_angularVelocity(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getAngularVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getAngularVelocity} for performance.\n */\n @nativeProperty()\n get angularVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set the components groups mask.\n *\n * @param flags New flags that need to be set.\n */\n set groupsMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags);\n }\n\n /**\n * Get the components groups mask flags.\n *\n * Each bit represents membership to group, see example.\n *\n * ```js\n * // Assign c to group 2\n * c.groupsMask = (1 << 2);\n *\n * // Assign c to group 0\n * c.groupsMask = (1 << 0);\n *\n * // Assign c to group 0 and 2\n * c.groupsMask = (1 << 0) | (1 << 2);\n *\n * (c.groupsMask & (1 << 2)) != 0; // true\n * (c.groupsMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get groupsMask(): number {\n return this.engine.wasm._wl_physx_component_get_groupsMask(this._id);\n }\n\n /**\n * Set the components blocks mask.\n *\n * @param flags New flags that need to be set.\n */\n set blocksMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags);\n }\n\n /**\n * Get the components blocks mask flags.\n *\n * Each bit represents membership to the block, see example.\n *\n * ```js\n * // Block overlap with any objects in group 2\n * c.blocksMask = (1 << 2);\n *\n * // Block overlap with any objects in group 0\n * c.blocksMask = (1 << 0)\n *\n * // Block overlap with any objects in group 0 and 2\n * c.blocksMask = (1 << 0) | (1 << 2);\n *\n * (c.blocksMask & (1 << 2)) != 0; // true\n * (c.blocksMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get blocksMask(): number {\n return this.engine.wasm._wl_physx_component_get_blocksMask(this._id);\n }\n\n /**\n * Set axes to lock for linear velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * Combine flags with Bitwise OR:\n *\n * ```js\n * body.linearLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.linearLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set linearLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock);\n }\n\n /**\n * Get the linear lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed.\n *\n * ```js\n * if(body.linearLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for linear movement.\n */\n @nativeProperty()\n get linearLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id);\n }\n\n /**\n * Set axes to lock for angular velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * ```js\n * body.angularLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.angularLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set angularLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock);\n }\n\n /**\n * Get the angular lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed:\n *\n * ```js\n * if(body.angularLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for angular movement.\n */\n @nativeProperty()\n get angularLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id);\n }\n\n /**\n * Set mass.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * @param m New mass.\n */\n set mass(m: number) {\n this.engine.wasm._wl_physx_component_set_mass(this._id, m);\n }\n\n /** Mass */\n @nativeProperty()\n get mass(): number {\n return this.engine.wasm._wl_physx_component_get_mass(this._id);\n }\n\n /**\n * Set mass space interia tensor.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New mass space interatia tensor.\n */\n set massSpaceInteriaTensor(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Set the rigid body to sleep upon activation.\n *\n * When asleep, the rigid body will not be simulated until the next contact.\n *\n * @param flag `true` to sleep upon activation.\n *\n * @since 1.1.5\n */\n set sleepOnActivate(flag: boolean) {\n this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag);\n }\n\n /**\n * `true` if the rigid body is set to sleep upon activation, `false` otherwise.\n *\n * @since 1.1.5\n */\n @nativeProperty()\n get sleepOnActivate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id);\n }\n\n /**\n * Apply a force.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n * @param localForce Whether the force vector is in local space, default `false`.\n * @param p Position to apply force at, default is center of mass.\n * @param local Whether position is in local space, default `false`.\n */\n addForce(\n f: Readonly,\n m: ForceMode = ForceMode.Force,\n localForce: boolean = false,\n p?: Readonly,\n local: boolean = false\n ) {\n const wasm = this.engine.wasm;\n if (!p) {\n wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce);\n return;\n }\n wasm._wl_physx_component_addForceAt(\n this._id,\n f[0],\n f[1],\n f[2],\n m,\n localForce,\n p[0],\n p[1],\n p[2],\n local\n );\n }\n\n /**\n * Apply torque.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n */\n addTorque(f: Readonly, m: ForceMode = ForceMode.Force) {\n this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m);\n }\n\n /**\n * Add on collision callback.\n *\n * @param callback Function to call when this rigid body (un)collides with any other.\n *\n * ```js\n * let rigidBody = this.object.getComponent('physx');\n * rigidBody.onCollision(function(type, other) {\n * // Ignore uncollides\n * if(type == CollisionEventType.TouchLost) return;\n *\n * // Take damage on collision with enemies\n * if(other.object.name.startsWith(\"enemy-\")) {\n * this.applyDamage(10);\n * }\n * }.bind(this));\n * ```\n *\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollision(callback: CollisionCallback): number {\n return this.onCollisionWith(this, callback);\n }\n\n /**\n * Add filtered on collision callback.\n *\n * @param otherComp Component for which callbacks will\n * be triggered. If you pass this component, the method is equivalent to.\n * {@link PhysXComponent#onCollision}.\n * @param callback Function to call when this rigid body\n * (un)collides with `otherComp`.\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollisionWith(otherComp: this, callback: CollisionCallback): number {\n const callbacks = this.scene._pxCallbacks;\n if (!callbacks.has(this._id)) {\n callbacks.set(this._id, []);\n }\n callbacks.get(this._id)!.push(callback);\n return this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id);\n }\n\n /**\n * Remove a collision callback added with {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n *\n * @param callbackId Callback id as returned by {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n * @throws When the callback does not belong to the component.\n * @throws When the callback does not exist.\n */\n removeCollisionCallback(callbackId: number): void {\n const r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId);\n const callbacks = this.scene._pxCallbacks;\n /* r is the amount of object to remove from the end of the\n * callbacks array for this object */\n if (r) callbacks.get(this._id)!.splice(-r);\n }\n}\n\n/**\n * Access to the physics scene\n */\nexport class Physics {\n /**\n * Hit.\n * @hidden\n */\n _hit: RayHit;\n\n /**\n * Wonderland Engine instance\n * @hidden\n */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * Ray Hit\n * @hidden\n */\n private _rayHit: number;\n\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n const wasm = engine.wasm;\n this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(engine.scene, this._rayHit);\n\n /* Setup the physics callback. */\n wasm._wl_physx_set_collision_callback(\n wasm.addFunction((a: number, index: number, type: number, b: number) => {\n const physxA = this._engine.scene._components.wrapPhysx(a)!;\n const physxB = this._engine.scene._components.wrapPhysx(b)!;\n /* We assume that the map returns an array. If not,\n * this is an internal engine error. */\n const callbacks = this._engine.scene._pxCallbacks.get(physxA._id)!;\n const callback = callbacks[index];\n callback(type, physxB as PhysXComponent);\n }, 'viiii')\n );\n }\n\n /**\n * Cast a ray through the scene and find intersecting physics components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.physics.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against physics components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of physics groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Physics}\n * instance and will be reused with the next {@link Physics#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance: number = 100.0\n ): RayHit {\n const scene = this._engine.scene._index;\n this._engine.wasm._wl_physx_ray_cast(\n scene,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n maxDistance,\n this._rayHit\n );\n return this._hit;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Mesh index type.\n */\nexport enum MeshIndexType {\n /** Single byte mesh index, range 0-255 */\n UnsignedByte = 1,\n\n /** Two byte mesh index, range 0-65535 */\n UnsignedShort = 2,\n\n /** Four byte mesh index, range 0-4294967295 */\n UnsignedInt = 4,\n}\n\n/**\n * Mesh skinning type.\n */\nexport enum MeshSkinningType {\n /** Not skinned */\n None = 0,\n\n /** Skinned, 4 joints/weight per vertex */\n FourJoints = 1,\n\n /** Skinned, 8 joints/weight per vertex */\n EightJoints = 2,\n}\n\n/**\n * Mesh constructor parameters object.\n *\n * Usage:\n *\n * ```js\n * const mesh = Mesh({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n */\nexport interface MeshParameters {\n /** Number of vertices to allocate. */\n vertexCount: number;\n /** Index data values. */\n indexData: Readonly;\n /** Index type, `null` if not indexed. */\n indexType: MeshIndexType;\n /** Whether the mesh should be skinned. Defaults to not skinned. */\n skinningType: MeshSkinningType;\n}\n\n/**\n * Wrapper around a native mesh data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link MeshManager} class.\n *\n * #### Update\n *\n * To modify a mesh, you get access to a {@link MeshAttributeAccessor} that\n * allows you to modify the content of the buffers:\n *\n * Usage:\n *\n * ```js\n * const mesh = engine.es.create({vertexCount: 3, indexData: [0, 1, 2]});\n * const positions = mesh.attribute(MeshAttribute.Position);\n * ...\n * ```\n *\n * @note Meshes are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Mesh extends Resource {\n /**\n * @deprecated Use {@link MeshManager.create} instead, accessible via {@link WonderlandEngine.meshes}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ...\n * mesh.update();\n * ```\n */\n constructor(engine: WonderlandEngine, params: Partial | number) {\n if (!isNumber(params)) {\n const mesh = engine.meshes.create(params);\n /* `super()` must be called as stated in the specification */\n super(engine, mesh._index);\n return mesh;\n }\n super(engine, params);\n }\n\n /** Number of vertices in this mesh. */\n get vertexCount(): number {\n return this.engine.wasm._wl_mesh_get_vertexCount(this._id);\n }\n\n /** Index data (read-only) or `null` if the mesh is not indexed. */\n get indexData(): Uint8Array | Uint16Array | Uint32Array | null {\n const wasm = this.engine.wasm;\n const tempMem = wasm._tempMem;\n const ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4);\n if (ptr === null) return null;\n\n const indexCount = wasm.HEAPU32[tempMem / 4];\n const indexSize = wasm.HEAPU32[tempMem / 4 + 1];\n switch (indexSize) {\n case MeshIndexType.UnsignedByte:\n return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedShort:\n return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedInt:\n return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount);\n }\n return null;\n }\n\n /**\n * Apply changes to {@link attribute | vertex attributes}.\n *\n * Uploads the updated vertex attributes to the GPU and updates the bounding\n * sphere to match the new vertex positions.\n *\n * Since this is an expensive operation, call it only once you have performed\n * all modifications on a mesh and avoid calling if you did not perform any\n * modifications at all.\n */\n update() {\n this.engine.wasm._wl_mesh_update(this._id);\n }\n\n /** @overload */\n getBoundingSphere(): Float32Array;\n /** @overload */\n getBoundingSphere(out: T): T;\n /**\n * Mesh bounding sphere.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * ```js\n * const sphere = new Float32Array(4);\n * for(...) {\n * mesh.getBoundingSphere(sphere);\n * ...\n * }\n * ```\n *\n * If the position data is changed, call {@link Mesh#update} to update the\n * bounding sphere.\n *\n * @returns Bounding sphere, 0-2 sphere origin, 3 radius.\n */\n getBoundingSphere(out: T | Float32Array): T | Float32Array;\n getBoundingSphere(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n attribute(\n attr: MeshAttribute.Position\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Tangent\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Normal\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.TextureCoordinate\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Color\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointId\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointWeight\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.SecondaryTextureCoordinate\n ): MeshAttributeAccessor | null;\n /**\n * Get an attribute accessor to retrieve or modify data of give attribute.\n *\n * @param attr Attribute to get access to\n * @returns Attribute to get access to or `null`, if mesh does not have this attribute.\n *\n * Call {@link update} for changes to vertex attributes to take effect.\n *\n * If there are no shaders in the scene that use `TextureCoordinate` for example,\n * no meshes will have the `TextureCoordinate` attribute.\n *\n * For flexible reusable components, take this into account that only `Position`\n * is guaranteed to be present at all time.\n */\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null;\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null {\n if (typeof attr != 'number')\n throw new TypeError('Expected number, but got ' + typeof attr);\n\n const wasm = this.engine.wasm;\n const tempMemUint32 = wasm._tempMemUint32;\n wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem);\n if (tempMemUint32[0] == 255) return null;\n\n const arraySize = tempMemUint32[5];\n return new MeshAttributeAccessor(this.engine, {\n attribute: tempMemUint32[0],\n offset: tempMemUint32[1],\n stride: tempMemUint32[2],\n formatSize: tempMemUint32[3],\n componentCount: tempMemUint32[4],\n /* The WASM API returns `0` for a scalar value. We clamp it to 1 as we strictly use it as a multiplier for get/set operations */\n arraySize: arraySize ? arraySize : 1,\n length: this.vertexCount,\n bufferType: (attr !== MeshAttribute.JointId\n ? Float32Array\n : Uint16Array) as TypedArrayCtor,\n });\n }\n\n /**\n * Destroy and free the meshes memory.\n *\n * It is best practice to set the mesh variable to `null` after calling\n * destroy to prevent accidental use:\n *\n * ```js\n * mesh.destroy();\n * mesh = null;\n * ```\n *\n * Accessing the mesh after destruction behaves like accessing an empty\n * mesh.\n *\n * @since 0.9.0\n */\n destroy(): void {\n this.engine.wasm._wl_mesh_destroy(this._id);\n this.engine.meshes._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Mesh(destroyed)';\n }\n return `Mesh(${this._index})`;\n }\n}\n\n/**\n * Options to create a new {@link MeshAttributeAccessor} instance.\n */\ninterface MeshAttributeAccessorOptions {\n attribute: number;\n offset: number;\n stride: number;\n formatSize: number;\n componentCount: number;\n arraySize: number;\n length: number;\n bufferType: T;\n}\n\n/**\n * An iterator over a mesh vertex attribute.\n *\n * Usage:\n *\n * ```js\n * const mesh = this.object.getComponent('mesh').mesh;\n * const positions = mesh.attribute(MeshAttribute.Position);\n *\n * // Equivalent to `new Float32Array(3)`.\n * const temp = positions.createArray();\n *\n * for(let i = 0; i < positions.length; ++i) {\n * // `pos` will reference `temp` and thereby not allocate additional\n * // memory, which would cause a perf spike when collected.\n * const pos = positions.get(i, temp);\n * // Scale position by 2 on x-axis only.\n * pos[0] *= 2.0;\n * positions.set(i, pos);\n * }\n * // We're done modifying, tell the engine to move vertex data to the GPU.\n * mesh.update();\n * ```\n */\nexport class MeshAttributeAccessor {\n /** Max number of elements. */\n readonly length: number = 0;\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Attribute index. @hidden */\n private _attribute: number = -1;\n /** Attribute offset. @hidden */\n private _offset: number = 0;\n /** Attribute stride. @hidden */\n private _stride: number = 0;\n /** Format size native enum. @hidden */\n private _formatSize: number = 0;\n /** Number of components per vertex. @hidden */\n private _componentCount: number = 0;\n /** Number of values per vertex. @hidden */\n private _arraySize: number = 1;\n\n /**\n * Class to instantiate an ArrayBuffer to get/set values.\n */\n private _bufferType: T;\n /**\n * Function to allocate temporary WASM memory. It is cached in the accessor to avoid\n * conditionals during get/set.\n */\n private _tempBufferGetter: (bytes: number) => TypedArray;\n\n /**\n * Create a new instance.\n *\n * @note Please use {@link Mesh.attribute} to create a new instance.\n *\n * @param options Contains information about how to read the data.\n * @note Do not use this constructor. Instead, please use the {@link Mesh.attribute} method.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, options: MeshAttributeAccessorOptions) {\n this._engine = engine;\n\n this._attribute = options.attribute;\n this._offset = options.offset;\n this._stride = options.stride;\n this._formatSize = options.formatSize;\n this._componentCount = options.componentCount;\n this._arraySize = options.arraySize;\n this._bufferType = options.bufferType;\n this.length = options.length;\n\n const wasm = this._engine.wasm;\n this._tempBufferGetter = (\n this._bufferType === Float32Array\n ? wasm.getTempBufferF32.bind(wasm)\n : wasm.getTempBufferU16.bind(wasm)\n ) as () => TypedArray;\n }\n\n /**\n * Create a new TypedArray to hold this attribute's values.\n *\n * This method is useful to create a view to hold the data to\n * pass to {@link get} and {@link set}\n *\n * Example:\n *\n * ```js\n * const vertexCount = 4;\n * const positionAttribute = mesh.attribute(MeshAttribute.Position);\n *\n * // A position has 3 floats per vertex. Thus, positions has length 3 * 4.\n * const positions = positionAttribute.createArray(vertexCount);\n * ```\n *\n * @param count The number of **vertices** expected.\n * @returns A TypedArray with the appropriate format to access the data\n */\n createArray(count = 1): TypedArray {\n count = count > this.length ? this.length : count;\n return new this._bufferType(\n count * this._componentCount * this._arraySize\n ) as TypedArray;\n }\n\n /** @overload */\n get(index: number): TypedArray;\n /**\n * Get attribute element.\n *\n * @param index Index\n * @param out Preallocated array to write into,\n * to avoid garbage, otherwise will allocate a new TypedArray.\n *\n * `out.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `out.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns The `out` parameter\n */\n get(index: number, out: T): T;\n get(index: number, out: NumberArray = this.createArray()): NumberArray {\n if (out.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(out.length, componentCount * this.length);\n\n const dest = this._tempBufferGetter(len);\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const destSize = elementSize * len;\n const srcFormatSize = this._formatSize * this._arraySize;\n const destFormatSize = this._componentCount * elementSize * this._arraySize;\n\n this.engine.wasm._wl_mesh_get_attribute_values(\n this._attribute,\n srcFormatSize,\n this._offset + index * this._stride,\n this._stride,\n destFormatSize,\n dest.byteOffset,\n destSize\n );\n\n for (let i = 0; i < len; ++i) out[i] = dest[i];\n return out;\n }\n\n /**\n * Set attribute element.\n *\n * @param i Index\n * @param v Value to set the element to\n *\n * `v.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `v.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns Reference to self (for method chaining)\n */\n set(i: number, v: Readonly) {\n if (v.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(v.length, componentCount * this.length);\n\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const srcSize = elementSize * len;\n const srcFormatSize = componentCount * elementSize;\n const destFormatSize = this._formatSize * this._arraySize;\n\n const wasm = this.engine.wasm;\n\n /* Unless we are already working with data from WASM heap, we\n * need to copy into temporary memory. */\n if ((v as Float32Array).buffer != wasm.HEAPU8.buffer) {\n const dest = this._tempBufferGetter(len);\n dest.set(v);\n v = dest;\n }\n\n wasm._wl_mesh_set_attribute_values(\n this._attribute,\n srcFormatSize,\n (v as Float32Array).byteOffset,\n srcSize,\n destFormatSize,\n this._offset + i * this._stride,\n this._stride\n );\n\n return this;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Wrapper around a native font resource.\n *\n * @note Fonts are **per-engine**, they can thus be shared by multiple scenes.\n *\n * @since 1.2.0\n */\nexport class Font extends Resource {\n /** Em height in object space. Equivalent to line height. */\n get emHeight(): number {\n return this.engine.wasm._wl_font_get_emHeight(this._id);\n }\n\n /**\n * Cap height in object space. This is the typical height of capital\n * letters. Can be 0 if not defined by the font.\n */\n get capHeight(): number {\n return this.engine.wasm._wl_font_get_capHeight(this._id);\n }\n\n /**\n * X height in object space. This is the typical height of lowercase\n * letters. Can be 0 if not defined by the font.\n */\n get xHeight(): number {\n return this.engine.wasm._wl_font_get_xHeight(this._id);\n }\n\n /**\n * Outline size. This is the factor by which characters are expanded to\n * create the outline effect. Returns 0 if the font was compiled without\n * an outline.\n *\n * @since 1.2.1\n */\n get outlineSize(): number {\n return this.engine.wasm._wl_font_get_outlineSize(this._id);\n }\n}\n\n/**\n * Wrapper around a native particle effect resource.\n *\n * @note Particle effects are **per-engine**, they can thus be shared by\n * multiple scenes.\n *\n * @since 1.4.0\n */\nexport class ParticleEffect extends Resource {\n /**\n * Create a copy of the underlying native particle effect.\n *\n * @returns Particle effect clone.\n */\n clone(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_clone(this._id);\n return this.engine.particleEffects.wrap(index);\n }\n}\n\n/** Temporary canvas */\nlet temp2d: {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} | null = null;\n\n/**\n * Wrapper around a native texture data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link TextureManager} class.\n *\n * @note Textures are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Texture extends Resource {\n /**\n * @deprecated Use {@link TextureManager.create} instead, accessible via\n * {@link WonderlandEngine.textures}:\n *\n * ```js\n * const image = new Image();\n * image.onload = () => {\n * const texture = engine.textures.create(image);\n * };\n * ```\n */\n constructor(engine: WonderlandEngine, param: ImageLike | number) {\n if (isImageLike(param)) {\n const texture = engine.textures.create(param);\n /* `super()` must be called as stated in the specification */\n super(engine, texture._index);\n return texture;\n }\n super(engine, param);\n }\n\n /** Whether this texture is valid. */\n get valid(): boolean {\n return !this.isDestroyed && this.width !== 0 && this.height !== 0;\n }\n\n /**\n * Index in this manager.\n *\n * @deprecated Use {@link Texture.index} instead.\n */\n get id(): number {\n return this.index;\n }\n\n /** Update the texture to match the HTML element (e.g. reflect the current frame of a video). */\n update() {\n const image = this._imageIndex;\n if (!this.valid || !image) return;\n\n this.engine.wasm._wl_image_markDirty(image);\n }\n\n /**\n * Width of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the width used at creation.\n * If the actual element's width changed, it must be read from the element itself.\n */\n get width(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoWidth ?? element.width;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[0];\n }\n\n /**\n * Height of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the height used at creation.\n * If the actual element's height changed, it must be read from the element itself.\n */\n get height(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoHeight ?? element.height;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[1];\n }\n\n /**\n * Returns the html element associated to this texture.\n *\n * @note This accessor will return `null` if the image is compressed.\n */\n get htmlElement(): ImageLike | null {\n const image = this._imageIndex;\n if (!image) return null;\n\n const wasm = this.engine.wasm;\n const jsImageIndex = wasm._wl_image_get_jsImage_index(image);\n\n /* Since the first element is `null`, no need to check for `jsImageIndex` */\n return wasm._images[jsImageIndex];\n }\n\n /**\n * Upload content to the texture to the GPU.\n *\n * Usage:\n *\n * ```js\n * // Size 128x64\n * const image = new Image();\n * texture.updateSubImage(28, 4, 100, 60, 0, 0, image);\n * ```\n *\n * @note The source is cropped if the destination offset and source dimensions\n * are out-of-bounds regarding the texture size.\n *\n * @note Uploading a texture without a source offset is significantly faster.\n *\n * #### ImageBitmap\n *\n * If you need to upload a subregion, it's recommended to use:\n *\n * ```js\n * createImageBitmap(image, sourceX, sourceY, sourceWidth, sourceHeight).then(bitmap => {\n * const destinationX = sourceX;\n * const destinationY = sourceY;\n * texture.updateSubImage(0, 0, sourceWidth, sourceHeight, destinationX, destinationY, bitmap);\n * });\n * ```\n *\n * You could use this method with a `src` offset, but the synchronous implementation\n * uses a temporary 2d canvas, negatively affecting performance for large content.\n *\n * @param srcX Horizontal pixel offset, in the source image.\n * @param srcY Vertical pixel offset, in the source image.\n * @param srcWidth Width of the sub image, in the source image.\n * @param srcHeight Height of the sub image, in the source image\n * @param dstX Horizontal pixel offset, in the destination image.\n * Defaults to `srcX` for backward compatibility with older API versions.\n * @param dstY Vertical pixel offset, in the destination image.\n * Defaults to `srcY` for backward compatibility with older API versions.\n * @param content `Image`, `HTMLCanvasElement`, `HTMLVideoElement`, or `ImageBitmap` to upload.\n * @returns `true` if the update went through, `false` otherwise.\n */\n updateSubImage(\n srcX: number,\n srcY: number,\n srcWidth: number,\n srcHeight: number,\n dstX: number = srcX,\n dstY: number = srcY,\n content?: ImageLike\n ): boolean {\n if (this.isDestroyed) return false;\n\n const image = this._imageIndex;\n if (!image) return false;\n\n let img = content ?? this.htmlElement;\n if (!img) return false;\n\n const isImageBitmap = img instanceof ImageBitmap;\n /* ImageBitmap can't be flipped upon upload to the GPU.\n * Thus, we need to skip flipping the temporary canvas to keep the same behavior\n * when uploading an ImageBitmap and uploading a blitted ImageBitmap. */\n const flipY = !isImageBitmap;\n\n if (srcX || srcY) {\n /* Lazy initialize temp canvas */\n if (!temp2d) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n 'Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D.'\n );\n }\n temp2d = {canvas, ctx};\n }\n temp2d.canvas.width = srcWidth;\n temp2d.canvas.height = srcHeight;\n\n temp2d.ctx.drawImage(\n img,\n srcX,\n isImageBitmap ? img.height - srcY - srcHeight : srcY,\n srcWidth,\n srcHeight,\n 0,\n 0,\n srcWidth,\n srcHeight\n );\n img = temp2d.canvas;\n }\n\n const wasm = this.engine.wasm;\n wasm._images[0] = img;\n\n /* Clamp the width/height to avoid a GL upload error */\n const width = srcWidth - Math.max(srcWidth + dstX - this.width, 0);\n const height = srcHeight - Math.max(srcHeight + dstY - this.height, 0);\n const dstReversedY = this.height - dstY - height;\n\n const ret = wasm._wl_renderer_updateImage(\n image,\n 0,\n width,\n height,\n dstX,\n dstReversedY,\n flipY\n );\n wasm._images[0] = null;\n\n return !!ret;\n }\n\n /**\n * Destroy and free the texture's texture altas space and memory.\n *\n * It is best practice to set the texture variable to `null` after calling\n * destroy to prevent accidental use of the invalid texture:\n *\n * ```js\n * texture.destroy();\n * texture = null;\n * ```\n *\n * @since 0.9.0\n */\n destroy(): void {\n const wasm = this.engine.wasm;\n\n const img = wasm._images[this._imageIndex];\n if (img instanceof ImageBitmap) img.close();\n\n wasm._wl_texture_destroy(this._id);\n this.engine.textures._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Texture(destroyed)';\n }\n return `Texture(${this._index})`;\n }\n\n private get _imageIndex() {\n return this.engine.wasm._wl_texture_get_image_index(this._id);\n }\n}\n\n/**\n * Wrapper around a native animation.\n */\nexport class Animation extends SceneResource {\n /**\n * @param index Index in the manager\n */\n constructor(host: WonderlandEngine | Prefab = WL, index: number) {\n const scene = host instanceof Prefab ? host : host.scene;\n super(scene as Prefab, index);\n }\n\n /** Duration of this animation. */\n get duration(): number {\n return this.engine.wasm._wl_animation_get_duration(this._id);\n }\n\n /** Number of tracks in this animation. */\n get trackCount(): number {\n return this.engine.wasm._wl_animation_get_trackCount(this._id);\n }\n\n /**\n * Clone this animation retargeted to a new set of objects.\n *\n * The clone shares most of the data with the original and is therefore\n * light-weight.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * If retargeting to {@link Skin}, the join names will be used to determine a mapping\n * from the previous skin to the new skin. The source skin will be retrieved from\n * the first track in the animation that targets a joint.\n *\n * @param newTargets New targets per track. Expected to have\n * {@link Animation#trackCount} elements or to be a {@link Skin}.\n * @returns The retargeted clone of this animation.\n */\n retarget(newTargets: Object3D[] | Skin): Animation {\n const wasm = this.engine.wasm;\n if (newTargets instanceof Skin) {\n const index = wasm._wl_animation_retargetToSkin(this._id, newTargets._id);\n return this._scene.animations.wrap(index)!;\n }\n\n if (newTargets.length != this.trackCount) {\n throw Error(\n 'Expected ' +\n this.trackCount.toString() +\n ' targets, but got ' +\n newTargets.length.toString()\n );\n }\n const ptr = wasm._malloc(2 * newTargets.length);\n for (let i = 0; i < newTargets.length; ++i) {\n const object3d = newTargets[i];\n this.scene.assertOrigin(object3d);\n /* Use local id here and **not** packed id, because the WASM\n * takes ownership and reinterprets the ids. */\n wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId;\n }\n const index = wasm._wl_animation_retarget(this._id, ptr);\n wasm._free(ptr);\n\n return this._scene.animations.wrap(index)!;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Animation(destroyed)';\n }\n return `Animation(${this._index})`;\n }\n}\n\n/**\n * Scene graph object.\n *\n * Node in the scene graph or \"entity\". Consists of transformation and a reference\n * to its parent object. Usually holds components and is accessible by components\n * through {@link Component#object}.\n *\n * Objects are stored in a data oriented manner inside WebAssembly memory. This class\n * is a JavaScript API wrapper around this memory for more convenient use in\n * components.\n *\n * Objects can be created and added to a scene through {@link Prefab.addObject}:\n *\n * ```js\n * const parent = scene.addObject();\n * parent.name = 'parent`';\n * const child = scene.addObject(parent);\n * child.name = 'child`';\n * ```\n */\nexport class Object3D {\n /**\n * Packed object id, containing scene index and local id.\n *\n * @hidden\n */\n readonly _id: number = -1;\n /** Object id, relative to the scene manager. @hidden */\n readonly _localId: number = -1;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * @param o Object id to wrap.\n *\n * @deprecated Objects must be obtained via {@link Scene.addObject} or {@link Scene.wrap}:\n *\n * ```js\n * // Create a new object.\n * const obj = scene.addObject();\n *\n * // Wrap an object using its id. The id must be valid.\n * const obj = scene.wrap(0);\n * ```\n *\n * @hidden\n */\n constructor(scene: WonderlandEngine | Prefab, id: number) {\n scene = scene instanceof Prefab ? scene : scene.scene;\n this._localId = id;\n this._id = (scene._index << 22) | id;\n this._scene = scene;\n /** @todo: Remove and only keep getter. */\n this._engine = scene.engine;\n }\n\n /**\n * Name of the object.\n *\n * Useful for identifying objects during debugging.\n */\n get name(): string {\n const wasm = this._engine.wasm;\n return wasm.UTF8ToString(wasm._wl_object_name(this._id));\n }\n\n /**\n * Set the object's name.\n *\n * @param newName The new name to set.\n */\n set name(newName: string) {\n const wasm = this._engine.wasm;\n wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName));\n }\n\n /**\n * Parent of this object or `null` if parented to root.\n */\n get parent(): Object3D | null {\n const p = this._engine.wasm._wl_object_parent(this._id);\n return p === 0 ? null : this._scene.wrap(p);\n }\n\n /**\n * Equivalent to {@link Object3D.getChildren}.\n *\n * @note Prefer to use {@link Object3D.getChildren} for performance.\n */\n get children(): Object3D[] {\n return this.getChildren();\n }\n\n /** The number of children of this object. */\n get childrenCount(): number {\n return this._engine.wasm._wl_object_get_children_count(this._id);\n }\n\n /**\n * Reparent object to given object.\n *\n * @note Reparenting is not trivial and might have a noticeable performance impact.\n *\n * @param newParent New parent or `null` to parent to root\n */\n set parent(newParent: Object3D | undefined | null) {\n if (this.markedDestroyed) {\n const strThis = this.toString();\n const strParent = newParent ? newParent : 'root';\n throw new Error(\n `Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`\n );\n } else if (newParent?.markedDestroyed) {\n const strParent = newParent.toString();\n throw new Error(\n `Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`\n );\n }\n this.scene.assertOrigin(newParent);\n this._engine.wasm._wl_object_set_parent(\n this._id,\n newParent == null ? 0 : newParent._id\n );\n }\n\n /** Local object id in the scene manager. */\n get objectId() {\n return this._localId;\n }\n\n /** Scene instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Add an object as a child of this instance.\n *\n * @returns A newly created object.\n */\n addChild(): Object3D {\n const objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id);\n const obj = this.scene.wrap(objectId);\n return obj;\n }\n\n /**\n * Clone this hierarchy into a new one.\n *\n * Cloning copies the hierarchy structure, object names,\n * as well as components.\n *\n * JavaScript components are cloned using {@link Component.copy}. You can\n * override this method in your components.\n *\n * @param parent The parent for the cloned hierarchy or `null` to clone\n * into the scene root. Defaults to `null`.\n *\n * @returns The clone of this object.\n */\n clone(parent: Object3D | null = null): Object3D {\n this.scene.assertOrigin(parent);\n const engine = this._engine;\n const id = engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0);\n return this._scene.wrap(id);\n }\n\n /**\n * Children of this object.\n *\n * @note Child order is **undefined**. No assumptions should be made\n * about the index of a specific object.\n *\n * If you need to access a specific child of this object, you can\n * use {@link Object3D.findByName}.\n *\n * When the object exists in the scene at editor time, prefer passing it as\n * a component property.\n *\n * @note When providing an output array, only `this.childrenCount` elements will be written.\n * The rest of the array will not be modified by this method.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const childrenCount = this.childrenCount;\n if (childrenCount === 0) return out;\n\n const wasm = this._engine.wasm;\n wasm.requireTempMem(childrenCount * 2);\n\n this._engine.wasm._wl_object_get_children(\n this._id,\n wasm._tempMem,\n wasm._tempMemSize >> 1\n );\n\n for (let i = 0; i < childrenCount; ++i) {\n out[i] = this._scene.wrap(wasm._tempMemUint16[i]);\n }\n return out;\n }\n\n /**\n * Reset local transformation (translation, rotation and scaling) to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetTransform(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /**\n * Reset local position and rotation to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPositionRotation(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPositionRotation} instead. */\n resetTranslationRotation(): this {\n return this.resetPositionRotation();\n }\n\n /**\n * Reset local rotation, keep translation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetRotation(): this {\n this._engine.wasm._wl_object_reset_rotation(this._id);\n return this;\n }\n\n /**\n * Reset local translation, keep rotation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPosition(): this {\n this._engine.wasm._wl_object_reset_translation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPosition} instead. */\n resetTranslation(): this {\n return this.resetPosition();\n }\n\n /**\n * Reset local scaling to identity (``[1.0, 1.0, 1.0]``).\n *\n * @returns Reference to self (for method chaining).\n */\n resetScaling(): this {\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.translateLocal} instead. */\n translate(v: Readonly): this {\n return this.translateLocal(v);\n }\n\n /**\n * Translate object by a vector in the parent's space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateLocal(v: Readonly): this {\n this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in object space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateObject(v: Readonly): this {\n this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in world space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateWorld(v: Readonly): this {\n this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleDegLocal} instead. */\n rotateAxisAngleDeg(a: Readonly, d: number): this {\n this.rotateAxisAngleDegLocal(a, d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleRad}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleRadLocal} instead. */\n rotateAxisAngleRad(a: Readonly, d: number): this {\n return this.rotateAxisAngleRadLocal(a, d);\n }\n\n /**\n * Rotate around given axis by given angle (radians) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in radians.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleDeg}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in object space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @see {@link rotateAxisAngleRadObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (radians) in object space\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param a Vector representing the rotation axis\n * @param d Angle in degrees\n *\n * @see {@link rotateAxisAngleDegObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(\n this._id,\n a[0],\n a[1],\n a[2],\n d\n );\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateLocal} instead. */\n rotate(q: Readonly): this {\n this.rotateLocal(q);\n return this;\n }\n\n /**\n * Rotate by a quaternion.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateLocal(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /**\n * Rotate by a quaternion in object space.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateObject(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.scaleLocal} instead. */\n scale(v: Readonly): this {\n this.scaleLocal(v);\n return this;\n }\n\n /**\n * Scale object by a vector in object space.\n *\n * @param v Vector to scale by.\n *\n * @returns Reference to self (for method chaining).\n */\n scaleLocal(v: Readonly): this {\n this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getPositionLocal(): Float32Array;\n /**\n * Compute local / object space position from transformation.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getPositionLocal(out: T): T;\n getPositionLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_local(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationLocal(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionLocal} instead. */\n getTranslationLocal(out: T): T;\n getTranslationLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionLocal(out);\n }\n\n /** @overload */\n getPositionWorld(): Float32Array;\n /**\n * Compute world space position from transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getPositionWorld(out: T): T;\n getPositionWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_world(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationWorld(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionWorld} instead. */\n getTranslationWorld(out: T): T;\n getTranslationWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionWorld(out);\n }\n\n /**\n * Set local / object space position.\n *\n * Concatenates a new translation dual quaternion onto the existing rotation.\n *\n * @param v New local position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionLocal} instead. */\n setTranslationLocal(v: Readonly): this {\n return this.setPositionLocal(v);\n }\n\n /**\n * Set world space position.\n *\n * Applies the inverse parent transform with a new translation dual quaternion\n * which is concatenated onto the existing rotation.\n *\n * @param v New world position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionWorld} instead. */\n setTranslationWorld(v: Readonly): this {\n return this.setPositionWorld(v);\n }\n\n /** @overload */\n getScalingLocal(): Float32Array;\n /**\n * Local / object space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingLocal(out: T): T;\n getScalingLocal(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set local / object space scaling.\n *\n * @param v New local scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getScalingWorld(): Float32Array;\n /**\n * World space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingWorld(out: T): T;\n getScalingWorld(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set World space scaling.\n *\n * @param v New world scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getRotationLocal(): Float32Array;\n /**\n * Local space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationLocal(out: T): T;\n getRotationLocal(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getRotationWorld(): Float32Array;\n /**\n * World space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationWorld(out: T): T;\n getRotationWorld(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getTransformLocal(): Float32Array;\n /**\n * Local space transformation.\n *\n * @param out Destination array/vector, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformLocal(out: T): T;\n getTransformLocal(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New local transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformLocal(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this.setDirty();\n return this;\n }\n\n /** @overload */\n getTransformWorld(): Float32Array;\n /**\n * World space transformation.\n *\n * @param out Destination array, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformWorld(out: T): T;\n getTransformWorld(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set world space rotation.\n *\n * @param v New world transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformWorld(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n return this;\n }\n\n /**\n * Local space transformation.\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n get transformLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_local(this._id),\n 8\n );\n }\n\n /**\n * Set local transform.\n *\n * @param t Local space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n set transformLocal(t: Readonly) {\n this.transformLocal.set(t);\n this.setDirty();\n }\n\n /**\n * Global / world space transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n get transformWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_world(this._id),\n 8\n );\n }\n\n /**\n * Set world transform.\n *\n * @param t Global / world space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n set transformWorld(t: Readonly) {\n this.transformWorld.set(t);\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n }\n\n /**\n * Local / object space scaling.\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n get scalingLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_local(this._id),\n 3\n );\n }\n\n /**\n * Set local space scaling.\n *\n * @param s Local space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n set scalingLocal(s: Readonly) {\n this.scalingLocal.set(s);\n this.setDirty();\n }\n\n /**\n * Global / world space scaling.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n get scalingWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_world(this._id),\n 3\n );\n }\n\n /**\n * Set world space scaling.\n *\n * @param t World space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n set scalingWorld(s: Readonly) {\n this.scalingWorld.set(s);\n this._engine.wasm._wl_object_scaling_world_to_local(this._id);\n }\n\n /**\n * Local space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n get rotationLocal(): Float32Array {\n return this.transformLocal.subarray(0, 4);\n }\n\n /**\n * Global / world space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n get rotationWorld(): Float32Array {\n return this.transformWorld.subarray(0, 4);\n }\n\n /**\n * Set local space rotation.\n *\n * @param r Local space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n set rotationLocal(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /**\n * Set world space rotation.\n *\n * @param r Global / world space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n set rotationWorld(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /** @deprecated Please use {@link Object3D.getForwardWorld} instead. */\n getForward(out: T): T {\n return this.getForwardWorld(out);\n }\n\n /**\n * Compute the object's forward facing world space vector.\n *\n * The forward vector in object space is along the negative z-axis, i.e.,\n * `[0, 0, -1]`.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getForwardWorld(out: T): T {\n out[0] = 0;\n out[1] = 0;\n out[2] = -1;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getUpWorld} instead. */\n getUp(out: T): T {\n return this.getUpWorld(out);\n }\n\n /**\n * Compute the object's up facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getUpWorld(out: T): T {\n out[0] = 0;\n out[1] = 1;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getRightWorld} instead. */\n getRight(out: T): T {\n return this.getRightWorld(out);\n }\n\n /**\n * Compute the object's right facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getRightWorld(out: T): T {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /**\n * Transform a vector by this object's world transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a vector by this object's local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a point by this object's world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse world transform.\n *\n * @param out Out vector.\n * @param v Vector to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(p);\n wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform an object space dual quaternion into world space.\n *\n * @param out Out transformation.\n * @param q Local space transformation, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toWorldSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into local space.\n *\n * @param out Out transformation\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toLocalSpaceTransform(out: T, q: NumberArray = out): T {\n const p = this.parent;\n if (p) {\n p.toObjectSpaceTransform(out, q);\n return out;\n }\n if (out !== q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = q[4];\n out[5] = q[5];\n out[6] = q[6];\n out[7] = q[7];\n }\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into object space.\n *\n * @param out Out transformation.\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toObjectSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Turn towards / look at target.\n *\n * Rotates the object so that its forward vector faces towards the target\n * position. The `up` vector acts as a hint to uniquely orient the object's\n * up direction. When orienting a view component, the projected `up` vector\n * faces upwards on the viewing plane.\n *\n * @param p Target position to turn towards, in world space.\n * @param up Up vector to align object with, in world space. Default is `[0, 1, 0]`.\n *\n * @returns Reference to self (for method chaining).\n */\n lookAt(p: NumberArray, up: NumberArray = UP_VECTOR): this {\n this._engine.wasm._wl_object_lookAt(\n this._id,\n p[0],\n p[1],\n p[2],\n up[0],\n up[1],\n up[2]\n );\n return this;\n }\n\n /** Destroy the object with all of its components and remove it from the scene */\n destroy(): void {\n if (this._id < 0) return;\n /* This will automatically call `scene._destroyObject` */\n this.engine.wasm._wl_object_remove(this._id);\n }\n\n /**\n * Mark transformation dirty.\n *\n * Causes an eventual recalculation of {@link transformWorld}, either\n * on next {@link getTranslationWorld}, {@link transformWorld} or\n * {@link scalingWorld} or the beginning of next frame, whichever\n * happens first.\n */\n setDirty(): void {\n this._engine.wasm._wl_object_set_dirty(this._id);\n }\n\n /**\n * Disable/enable all components of this object.\n *\n * @param b New state for the components.\n *\n * @since 0.8.5\n */\n set active(b: boolean) {\n const comps = this.getComponents();\n for (let c of comps) {\n c.active = b;\n }\n }\n\n /* `getComponent` overloads for native components. */\n\n /** @overload */\n getComponent(\n type: K,\n index?: number\n ): NativeComponents[K] | null;\n /** @overload */\n getComponent(typeOrClass: string, index?: number): Component | null;\n /**\n * Get a component attached to this object.\n *\n * @param typeOrClass Type name. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field to find the component.\n * @param index=0 Index for component of given type. This can be used to access specific\n * components if the object has multiple components of the same type.\n * @returns The component or `null` if there is no such component on this object\n */\n getComponent(\n typeOrClass: ComponentConstructor,\n index?: number\n ): T | null;\n getComponent(\n typeOrClass: string | ComponentConstructor,\n index: number = 0\n ): Component | null {\n const wasm = this._engine.wasm;\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n\n const scene = this._scene;\n const componentType = wasm._wl_scene_get_component_manager_index(\n scene._index,\n wasm.tempUTF8(type)\n );\n\n if (componentType < 0) {\n /* Not a native component, try js: */\n const typeIndex = wasm._componentTypeIndices[type];\n if (typeIndex === undefined) return null;\n const jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index);\n if (jsIndex < 0) return null;\n\n const component = this._scene._jsComponents[jsIndex];\n return component.constructor !== BrokenComponent ? component : null;\n }\n\n const componentId = wasm._wl_get_component_id(this._id, componentType, index);\n return scene._components.wrapNative(componentType, componentId);\n }\n\n /* `getComponents` overloads for native components. */\n\n /** @overload */\n getComponents(): Component[];\n /** @overload */\n getComponents(type: K): NativeComponents[K][];\n /**\n * @param typeOrClass Type name, pass a falsey value (`undefined` or `null`) to retrieve all.\n * It's also possible to give a class definition. In this case, the method will use the `class.TypeName` field to\n * find the components.\n * @returns All components of given type attached to this object.\n *\n * @note As this function is non-trivial, avoid using it in `update()` repeatedly,\n * but rather store its result in `init()` or `start()`\n * @warning This method will currently return at most 341 components.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(\n typeOrClass?: string | ComponentConstructor | null\n ): T[] {\n const wasm = this._engine.wasm;\n const scene = this._scene;\n\n let manager = null;\n let type = null;\n if (typeOrClass) {\n type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = scene._components.getNativeManager(type);\n manager = nativeManager !== null ? nativeManager : scene._components.js;\n }\n\n const components: Component[] = [];\n const maxComps = Math.floor((wasm._tempMemSize / 3) * 2);\n const componentsCount = wasm._wl_object_get_components(\n this._id,\n wasm._tempMem,\n maxComps\n );\n const offset = 2 * componentsCount;\n wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset, maxComps);\n\n for (let i = 0; i < componentsCount; ++i) {\n const t = wasm._tempMemUint8[i + offset];\n const componentId = wasm._tempMemUint16[i];\n if (manager !== null && t !== manager) continue;\n\n const comp = this._scene._components.wrapAny(t, componentId);\n if (!comp) continue;\n if (type && type !== (comp.constructor as ComponentConstructor).TypeName)\n continue;\n components.push(comp);\n }\n return components as T[];\n }\n\n /* `addComponent` overloads for native components. */\n\n /** @overload */\n addComponent(type: 'collision', params?: Record): CollisionComponent;\n /** @overload */\n addComponent(type: 'text', params?: Record): TextComponent;\n /** @overload */\n addComponent(type: 'view', params?: Record): ViewComponent;\n /** @overload */\n addComponent(type: 'mesh', params?: Record): MeshComponent;\n /** @overload */\n addComponent(type: 'input', params?: Record): InputComponent;\n /** @overload */\n addComponent(type: 'light', params?: Record): LightComponent;\n /** @overload */\n addComponent(type: 'animation', params?: Record): AnimationComponent;\n /** @overload */\n addComponent(type: 'physx', params?: Record): PhysXComponent;\n /** @overload */\n addComponent(\n type: 'particle-effect',\n params?: Record\n ): ParticleEffectComponent;\n /** @overload */\n addComponent(type: string, params?: Record): Component;\n /**\n * Add component of given type to the object.\n *\n * You can use this function to clone components, see the example below.\n *\n * ```js\n * // Clone existing component (since 0.8.10)\n * let original = this.object.getComponent('mesh');\n * otherObject.addComponent('mesh', original);\n * // Create component from parameters\n * this.object.addComponent('mesh', {\n * mesh: someMesh,\n * material: someMaterial,\n * });\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @param params Parameters to initialize properties of the new component,\n * can be another component to copy properties from.\n *\n * @returns The component or `null` if the type was not found\n */\n addComponent(\n typeClass: ComponentConstructor,\n params?: Record\n ): T;\n addComponent(\n typeOrClass: ComponentConstructor | string,\n params?: Record\n ): Component {\n if (this.markedDestroyed) {\n throw new Error(`Failed to add component. ${this} is marked as destroyed.`);\n }\n\n const wasm = this._engine.wasm;\n\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = this._scene._components.getNativeManager(type);\n const isNative = nativeManager !== null;\n const manager = isNative ? nativeManager : this._scene._components.js;\n\n let componentId = -1;\n if (!isNative) {\n /* JavaScript component */\n if (!(type in wasm._componentTypeIndices)) {\n throw new TypeError(\"Unknown component type '\" + type + \"'\");\n }\n componentId = wasm._wl_object_add_js_component(\n this._id,\n wasm._componentTypeIndices[type]\n );\n } else {\n /* native component */\n componentId = wasm._wl_object_add_component(this._id, manager);\n }\n\n const component = this._scene._components.wrapAny(manager, componentId)!;\n\n if (params !== undefined) component.copy(params as Component);\n\n /* Explicitly initialize js components */\n if (!isNative) {\n component._triggerInit();\n /* start() is called through onActivate() */\n }\n\n /* If it was not explicitly requested by the user to leave the component inactive,\n * we activate it as a final step. This invalidates componentIndex! */\n if (!params || !('active' in params && !params.active)) {\n component.active = true;\n }\n\n return component;\n }\n\n /**\n * Search for descendants matching the name.\n *\n * This method is a wrapper around {@link Object3D.findByNameDirect} and\n * {@link Object3D.findByNameRecursive}.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the descendants of this object.\n * If `false`, this method will only perform the search in direct children.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name);\n }\n\n /**\n * Search for all **direct** children matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameDirect(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 2; /* Reserve two ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n buffer[maxCount + 1] = 0; /* child count */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const childCountPtr = bufferPtr + maxCount * 2 + 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2);\n\n const result: Object3D[] = [];\n let read = 0;\n while (\n (read = wasm._wl_object_findByName(\n id,\n namePtr,\n indexPtr,\n childCountPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Search for **all descendants** matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 1; /* Reserve one ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2);\n\n let read = 0;\n const result: Object3D[] = [];\n while (\n (read = wasm._wl_object_findByNameRecursive(\n id,\n namePtr,\n indexPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Whether given object's transformation has changed.\n */\n get changed(): boolean {\n return !!this._engine.wasm._wl_object_is_changed(this._id);\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = scene.addObject();\n * obj.customParam = 'Hello World!';\n *\n * console.log(obj.isDestroyed); // Prints `false`\n * obj.destroy();\n * console.log(obj.isDestroyed); // Prints `true`\n * console.log(obj.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /**\n * `true` if the object is marked as destroyed.\n *\n * This boolean will only ever be `true` when reading objects state\n * from the {@link Component.onDestroy} callback, i.e.,\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n * class CleanupComponent extends Component {\n * onDestroy() {\n * if (this.object.markedDestroyed) {\n * // this object is getting removed\n * } else {\n * // The component is getting destroyed, the object will\n * // still exist after the destruction call\n * }\n * }\n * }\n * ```\n *\n * Certain operations are forbidden when an object is pending destruction:\n * - Reparenting the object via {@link parent}\n * - {@link addComponent}\n * - {@link Scene.addObject}\n * - {@link Scene.destroy}\n */\n get markedDestroyed(): boolean {\n const wasm = this.engine.wasm;\n return !!wasm._wl_object_markedDestroyed(this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const objectA = scene.addObject();\n * const objectB = scene.addObject();\n * const objectC = objectB;\n * console.log(objectA === objectB); // false\n * console.log(objectA === objectA); // true\n * console.log(objectB === objectC); // true\n * ```\n */\n equals(otherObject: Object3D | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherObject) return false;\n return this._id == otherObject._id;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Object3D(destroyed)';\n }\n return `Object3D('${this.name}', ${this._localId})`;\n }\n}\n\n/**\n * Wrapper around a native skin data.\n */\nexport class Skin extends SceneResource {\n /** Amount of joints in this skin. */\n get jointCount() {\n return this.engine.wasm._wl_skin_get_joint_count(this._id);\n }\n\n /** Joints object ids for this skin */\n get jointIds(): Uint16Array {\n const wasm = this.engine.wasm;\n return new Uint16Array(\n wasm.HEAPU16.buffer,\n wasm._wl_skin_joint_ids(this._id),\n this.jointCount\n );\n }\n\n /**\n * Dual quaternions in a flat array of size 8 times {@link jointCount}.\n *\n * Inverse bind transforms of the skin.\n */\n get inverseBindTransforms(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_transforms(this._id),\n 8 * this.jointCount\n );\n }\n\n /**\n * Vectors in a flat array of size 3 times {@link jointCount}.\n *\n * Inverse bind scalings of the skin.\n */\n get inverseBindScalings(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_scalings(this._id),\n 3 * this.jointCount\n );\n }\n}\n\n/**\n * Wrapper around a native set of morph targets.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\nexport class MorphTargets extends Resource {\n /** Amount of targets in this morph target set. */\n get count() {\n return this.engine.wasm._wl_morph_targets_get_target_count(this._id);\n }\n\n /** Returns the name of a given target */\n getTargetName(target: number): string {\n if (target >= this.count) {\n throw new Error(`Index ${target} is out of bounds for ${this.count} targets`);\n }\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target));\n }\n\n /**\n * Get the index for a given target name.\n *\n * Throws if no target with that name exists.\n *\n * @param name Name of the target.\n */\n getTargetIndex(name: string): number {\n const wasm = this.engine.wasm;\n const index = wasm._wl_morph_targets_get_target_index(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing target '${name}'`);\n }\n return index;\n }\n}\n\n/* For backward compatibility with < 1.0.0. */\nexport {Object3D as Object};\n\n/**\n * Ray hit.\n *\n * Result of a {@link Scene.rayCast} or {@link Physics.rayCast}.\n *\n * @note this class wraps internal engine data and should only be created internally.\n */\nexport class RayHit {\n /** Scene instance. @hidden */\n readonly _scene: Scene;\n\n /** Pointer to the memory heap. */\n private _ptr: number;\n\n /**\n * @param ptr Pointer to the ray hits memory.\n */\n constructor(scene: Scene, ptr: number) {\n if ((ptr & 3) !== 0) {\n throw new Error('Misaligned pointer: please report a bug');\n }\n this._scene = scene;\n this._ptr = ptr;\n }\n\n /** @overload */\n getLocations(): Float32Array[];\n /**\n * Array of ray hit locations.\n *\n * #### Usage\n *\n * ```js\n * const hit = engine.physics.rayCast();\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLocations(out: T): T;\n getLocations(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = this._ptr / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const locationPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[locationPtr];\n out[i][1] = wasm.HEAPF32[locationPtr + 1];\n out[i][2] = wasm.HEAPF32[locationPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getNormals(): Float32Array[];\n /**\n * Array of ray hit normals (only when using {@link Physics#rayCast}.\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getNormals(out: T): T;\n getNormals(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const normalPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[normalPtr];\n out[i][1] = wasm.HEAPF32[normalPtr + 1];\n out[i][2] = wasm.HEAPF32[normalPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getDistances(): Float32Array;\n /**\n * Prefer these to recalculating the distance from locations.\n *\n * Distances of array hits to ray origin.\n *\n * @param out Destination array/vector, expected to have at least this.hitCount elements.\n * @returns The `out` parameter.\n */\n getDistances(out: T): T;\n getDistances(out: NumberArray = new Float32Array(this.hitCount)): NumberArray {\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48 * 2) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const distancePtr = alignedPtr + i;\n out[i] = wasm.HEAPF32[distancePtr];\n }\n return out;\n }\n\n /**\n * Array of hit objects.\n *\n * @param out Destination array/vector, expected to have at least `this.hitCount` elements.\n * @returns The `out` parameter.\n */\n getObjects(out: Object3D[] = new Array(this.hitCount)): Object3D[] {\n const HEAPU16 = this.engine.wasm.HEAPU16;\n const alignedPtr = (this._ptr + (48 * 2 + 16)) >> 1;\n for (let i = 0; i < this.hitCount; ++i) {\n out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]);\n }\n return out;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /**\n * Equivalent to {@link RayHit.getLocations}.\n *\n * @note Prefer to use {@link RayHit.getLocations} for performance.\n */\n get locations(): Float32Array[] {\n return this.getLocations();\n }\n\n /**\n * Equivalent to {@link RayHit.getNormals}.\n *\n * @note Prefer to use {@link RayHit.getNormals} for performance.\n */\n get normals(): Float32Array[] {\n return this.getNormals();\n }\n\n /**\n * Equivalent to {@link RayHit.getDistances}.\n *\n * @note Prefer to use {@link RayHit.getDistances} for performance.\n */\n get distances(): Float32Array {\n return this.getDistances();\n }\n\n /**\n * Equivalent to {@link RayHit.getObjects}.\n *\n * @note Prefer to use {@link RayHit.getObjects} for performance.\n */\n get objects(): (Object3D | null)[] {\n /** @todo: Remove at 2.0.0, this is kept for backward compatibility. */\n const objects: (Object3D | null)[] = [null, null, null, null];\n return this.getObjects(objects as Object3D[]);\n }\n\n /** Number of hits (max 4) */\n get hitCount(): number {\n return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4);\n }\n}\n\nclass math {\n /** (Experimental!) Cubic Hermite spline interpolation for vector3 and quaternions.\n *\n * With `f == 0`, `out` will be `b`, if `f == 1`, `out` will be c.\n *\n * Whether a quaternion or vector3 interpolation is intended is determined by\n * length of `a`.\n *\n * @param out Array to write result to.\n * @param a First tangent/handle.\n * @param b First point or quaternion.\n * @param c Second point or quaternion.\n * @param d Second handle.\n * @param f Interpolation factor in [0; 1].\n * @returns The `out` parameter.\n *\n * @since 0.8.6\n */\n static cubicHermite(\n out: T,\n a: Readonly,\n b: Readonly,\n c: Readonly,\n d: Readonly,\n f: number,\n engine: WonderlandEngine = WL\n ) {\n const wasm = engine.wasm;\n wasm._tempMemFloat.subarray(0).set(a);\n wasm._tempMemFloat.subarray(4).set(b);\n wasm._tempMemFloat.subarray(8).set(c);\n wasm._tempMemFloat.subarray(12).set(d);\n\n const isQuat = a.length == 4;\n\n wasm._wl_math_cubicHermite(\n wasm._tempMem + 4 * 16,\n wasm._tempMem + 4 * 0,\n wasm._tempMem + 4 * 4,\n wasm._tempMem + 4 * 8,\n wasm._tempMem + 4 * 12,\n f,\n isQuat\n );\n out[0] = wasm._tempMemFloat[16];\n out[1] = wasm._tempMemFloat[17];\n out[2] = wasm._tempMemFloat[18];\n if (isQuat) out[3] = wasm._tempMemFloat[19];\n return out;\n }\n}\n\nexport {math};\n\n/**\n * Class for accessing internationalization (i18n) features.\n *\n * Allows {@link I18N.onLanguageChanged \"detecting language change\"},\n * {@link I18N.language \"setting the current language\"} or translating\n * {@link I18N.translate \"individual terms\"}.\n *\n * Internationalization works with terms,\n * a string type keyword that is linked to a different text for each language.\n *\n * Internally, string parameters for text and js components are\n * automatically swapped during language change, given they are linked to a term.\n * If manual text swapping is desired, {@link I18N.translate}\n * can be used to retrieve the current translation for any term.\n *\n * You can also use the {@link I18N.onLanguageChanged} to manually update text\n * when a language is changed to for example update a number in a string.\n *\n * @since 1.0.0\n */\nexport class I18N {\n /**\n * {@link Emitter} for language change events.\n *\n * First parameter to a listener is the old language index,\n * second parameter is the new language index.\n *\n * Usage from a within a component:\n *\n * ```js\n * this.engine.i18n.onLanguageChanged.add((oldLanguageIndex, newLanguageIndex) => {\n * const oldLanguage = this.engine.i18n.languageName(oldLanguageIndex);\n * const newLanguage = this.engine.i18n.languageName(newLanguageIndex);\n * console.log(\"Switched from\", oldLanguage, \"to\", newLanguage);\n * });\n * ```\n */\n readonly onLanguageChanged = new Emitter<[number, number]>();\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Previously set language index. @hidden */\n private _prevLanguageIndex: number = -1;\n\n /**\n * Constructor\n */\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @note This is equivalent to {@link I18N.setLanguage}.\n *\n * @param code Language code to switch to\n */\n set language(code: string | null) {\n this.setLanguage(code);\n }\n\n /** Get current language code. */\n get language(): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_currentLanguage();\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get the current language index.\n *\n * This method is more efficient than its equivalent:\n *\n * ```js\n * const index = i18n.languageIndex(i18n.language);\n * ```\n */\n get currentIndex(): number {\n return this._engine.wasm._wl_i18n_currentLanguageIndex();\n }\n\n /** Previous language index. */\n get previousIndex(): number {\n return this._prevLanguageIndex;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @param code The language code.\n * @returns A promise that resolves with the current index code when the\n * language is loaded.\n */\n async setLanguage(code: string | null): Promise {\n if (code == null) return Promise.resolve(this.currentIndex);\n const wasm = this._engine.wasm;\n this._prevLanguageIndex = this.currentIndex;\n wasm._wl_i18n_setLanguage(wasm.tempUTF8(code));\n\n const scene = this.engine.scene;\n\n const filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex));\n const url = `${scene.baseURL}/locale/${filename}`;\n\n await scene._downloadDependency(url);\n\n this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex);\n\n return this.currentIndex;\n }\n\n /**\n * Get translated string for a term for the currently loaded language.\n *\n * @param term Term to translate\n */\n translate(term: string): string | null {\n const wasm = this._engine.wasm;\n const translation = wasm._wl_i18n_translate(wasm.tempUTF8(term));\n if (translation === 0) return null;\n return wasm.UTF8ToString(translation);\n }\n\n /**\n * Get the number of languages in the project.\n *\n */\n languageCount(): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageCount();\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageIndex(code: string): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code));\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageCode(index: number): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_languageCode(index);\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get a language name.\n *\n * @param index Index of the language to get the name from\n */\n languageName(index: number): string | null {\n const wasm = this._engine.wasm;\n const name = wasm._wl_i18n_languageName(index);\n if (name === 0) return null;\n return wasm.UTF8ToString(name);\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Environment lighting properties\n *\n * @since 1.2.3\n */\nexport class Environment {\n /** Scene instance. @hidden */\n private readonly _scene: Scene;\n\n /** Constructor */\n constructor(scene: Scene) {\n this._scene = scene;\n }\n\n /**\n * Get intensity of environment lighting.\n *\n * Incoming environment lighting is multiplied by this factor.\n */\n get intensity() {\n return this._scene.engine.wasm._wl_scene_environment_get_intensity(\n this._scene._index\n );\n }\n\n /**\n * Set intensity of environment lighting.\n *\n * @param intensity New intensity.\n */\n set intensity(intensity: number) {\n this._scene.engine.wasm._wl_scene_environment_set_intensity(\n this._scene._index,\n intensity\n );\n }\n\n /** @overload */\n getTint(): Float32Array;\n /**\n * Get tint for environment lighting.\n *\n * Incoming environment lighting color channels are multiplied by these\n * values.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Tint values - red, green, blue.\n */\n getTint(out: T): T;\n /** @overload */\n getTint(\n out: T | Float32Array = new Float32Array(3)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out as T;\n }\n\n /**\n * Equivalent to {@link getTint}.\n *\n * @note Prefer to use {@link getTint} for performance.\n */\n get tint(): Float32Array {\n return this.getTint();\n }\n\n /**\n * Set tint for environment lighting.\n *\n * @param v New tint value. Expects a 3 component array.\n */\n setTint(v: Readonly) {\n this._scene.engine.wasm._wl_scene_environment_set_tint(\n this._scene._index,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /** Equivalent to {@link setTint}. */\n set tint(v: Readonly) {\n this.setTint(v);\n }\n\n /** @overload */\n getCoefficients(): Float32Array;\n /**\n * Get spherical harmonics coefficients for indirect lighting.\n *\n * These are 9 spherical harmonics coefficients for indirect diffuse\n * lighting.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Spherical harmonics coefficients. Always 27 elements, every\n * consecutive 3 values representing the red, green, blue components of\n * a single coefficient. Unused/empty coefficients at the end can be 0.\n */\n getCoefficients(out: T): T;\n /** @overload */\n getCoefficients(\n out: T | Float32Array = new Float32Array(3 * 9)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(3 * 9 * 4);\n wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem);\n for (let i = 0; i < 3 * 9; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out as T;\n }\n\n /**\n * Equivalent to {@link getCoefficients}.\n *\n * @note Prefer to use {@link getCoefficients} for performance.\n */\n get coefficients(): Float32Array {\n return this.getCoefficients();\n }\n\n /**\n * Set spherical harmonics coefficients for indirect lighting.\n *\n * @note The scene must have been packaged with environment lighting on for\n * this to take effect.\n *\n * @example\n *\n * Coefficients from [WebXR Lighting Estimation](https://www.w3.org/TR/webxr-lighting-estimation-1)\n * can be passed as follows:\n *\n * ```js\n * const probe = await engine.xr.session.requestLightProbe();\n * const estimate = engine.xr.frame.getLightEstimate(probe);\n * scene.environment.coefficients = estimate.sphericalHarmonicsCoefficients;\n * ```\n *\n * @param v A set of spherical harmonics coefficients, every 3 elements\n * constituting the red/green/blue components of a single coefficient.\n * Should be 0, 3, 12 or 27 **array elements**. Passing an empty array\n * disables indirect lighting.\n */\n setCoefficients(v: Readonly) {\n let count = v.length / 3;\n if (count > 9) count = 9;\n else if (count > 4 && count < 9) count = 4;\n else if (count > 1 && count < 4) count = 1;\n const wasm = this._scene.engine.wasm;\n wasm._tempMemFloat.set(v);\n wasm._wl_scene_environment_set_coefficients(\n this._scene._index,\n wasm._tempMem,\n count\n );\n }\n\n /** Equivalent to {@link setCoefficients}. */\n set coefficients(v: Readonly) {\n this.setCoefficients(v);\n }\n}\n", "/**\n * This file is automatically generated.\n *\n * **Do not** modify this file directly, but instead update\n * the 'write-version.mjs' script.\n */\n\n/**\n * Version type following a subset of the Semantic Versioning specification.\n */\nexport type Version = {major: number, minor: number, patch: number, rc: number};\n\n/** Version of this API. */\nexport const APIVersion: Version = {\n major: 1,\n minor: 4,\n patch: 2,\n rc: 0\n};\n", "import {WonderlandEngine} from '../engine.js';\nimport {NumberArray} from '../types.js';\nimport {capitalizeFirstUTF8} from '../utils/misc.js';\nimport {Texture} from '../wonderland.js';\n\nimport {Resource, ResourceManager} from './resource.js';\n\n/**\n * Material parameter type.\n */\nexport enum MaterialParamType {\n /** Unsigned integer parameter type. */\n UnsignedInt = 0,\n /** Integer parameter type. */\n Int = 1,\n /** 16-bit float parameter type. */\n HalfFloat = 2,\n /** Float parameter type. */\n Float = 3,\n /** Sampler resource parameter type, i.e., a {@link Texture}. */\n Sampler = 4,\n /**\n * Font resource parameter type.\n *\n * **Note**: Changing font isn't exposed yet and will raise an error.\n */\n Font = 5,\n}\n\n/**\n * Constructor parameters object for a {@link Material} instance.\n *\n * @deprecated Use {@link MaterialManager#getTemplate} instead:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\nexport interface MaterialParameters {\n /** The name of the pipeline. */\n pipeline: string;\n}\n\n/**\n * Material constructor.\n *\n * Material classes are automatically generated by the runtime based on the\n * loaded scene shaders.\n */\nexport interface MaterialConstructor {\n /**\n * Set of the dynamic parameters that exist on the definition.\n *\n * For instance, the set would contain elements such as `ambientColor`, `diffuseColor`\n * for a Phong material.\n */\n readonly Parameters: Set;\n /**\n * Create a new Material.\n *\n * The material is created from the pipeline associated to the material class.\n *\n * @note Creating material is expensive. Please use {@link Material#clone} to clone a material.\n * @note Do not use this constructor directly with an index, this is reserved for internal purposes.\n */\n new (index?: number): T;\n}\n\n/**\n * Wrapper around a native material.\n *\n * For more information about how to create materials, have a look at the\n * {@link MaterialManager} class.\n *\n * #### Properties\n *\n * The material properties are automatically converted into getters/setters:\n *\n * ```js\n * const material = new PhongMaterial();\n *\n * // Set the `diffuseColor` property\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * console.log(material.getDiffuseColor());\n * ```\n *\n * Getters for non-scalar types have an optional argument to skip an array\n * allocation:\n *\n * ```js\n * const material = new PhongMaterial();\n * const diffuse = [0, 0, 0, 0];\n * material.getDiffuseColor(diffuse);\n * console.log(diffuse) // Prints '[1.0, 1.0, 1.0, 1.0]'\n * ```\n *\n * @note Materials are **per-engine**, they can thus be shared by multiple scenes.\n *\n * #### TypeScript\n *\n * The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * It's then possible to cast the material type using:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const mesh = object.getComponent('mesh');\n * const material = mesh.material as PhongOpaque;\n * material.setDiffuseColor([1, 0, 0, 1]); // Set a red diffuse\n * ```\n *\n * @since 1.2.0\n */\nexport class Material extends Resource {\n /**\n * @deprecated Use {@link MaterialManager#getTemplate} via {@link WonderlandEngine.materials}\n * to create a new material with a given pipeline:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\n constructor(engine: WonderlandEngine, params: number | MaterialParameters) {\n if (typeof params !== 'number') {\n if (!params?.pipeline) throw new Error(\"Missing parameter 'pipeline'\");\n const template = engine.materials.getTemplate(params.pipeline);\n const material = new template();\n super(engine, material._index);\n return material;\n }\n super(engine, params);\n }\n\n /**\n * Check whether a parameter exists on this material.\n *\n * @param name The name to check.\n * @returns `true` if the parameter with name `name` exists on this material,\n * `false` otherwise.\n */\n hasParameter(name: string) {\n const parameters = (this.constructor as MaterialConstructor).Parameters;\n return parameters && parameters.has(name);\n }\n\n /** @deprecated Use {@link pipeline} instead. */\n get shader(): string {\n return this.pipeline;\n }\n\n /** Name of the pipeline used by this material. */\n get pipeline(): string {\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id));\n }\n\n /**\n * Create a copy of the underlying native material.\n *\n * @returns Material clone.\n */\n clone(): Material | null {\n const index = this.engine.wasm._wl_material_clone(this._id);\n return this.engine.materials.wrap(index);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Material(destroyed)';\n }\n return `Material('${this.pipeline}', ${this._index})`;\n }\n\n /**\n * Wrap a native material index.\n *\n * @param engine Engine instance.\n * @param index The index.\n * @returns Material instance or `null` if index <= 0.\n *\n * @deprecated Use the {@link WonderlandEngine.materials} instead.\n */\n static wrap(engine: WonderlandEngine, index: number): Material | null {\n return engine.materials.wrap(index);\n }\n}\n\n/**\n * Manage materials.\n *\n * #### Creation\n *\n * To create a material, first retrieve the class associated to\n * the pipeline using {@link MaterialManager.getTemplate}:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * ```\n *\n * Creating a material is then done using the constructor:\n *\n * ```js\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n */\nexport class MaterialManager extends ResourceManager {\n /** Material classes. @hidden. */\n private readonly _materialTemplates: MaterialConstructor[] = [];\n\n /** @hidden */\n constructor(engine: WonderlandEngine) {\n super(engine, Material);\n this._cacheDefinitions();\n }\n\n /** @override */\n wrap(index: number) {\n if (index <= 0) return null;\n\n const cached = this._cache[index];\n if (cached) return cached;\n\n const wasm = this.engine.wasm;\n const definition = wasm._wl_material_get_definition(index);\n\n const Template = this._materialTemplates[definition];\n const material = new Template(index);\n return this._wrapInstance(material);\n }\n\n /**\n * Get the material class with the given pipeline name.\n *\n * #### Usage\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n *\n * #### TypeScript\n *\n * This method provide a simple way to cast the constructor returned by `getTemplate`:\n *\n * ```ts\n * interface Phong {\n * getAmbientColor(out?: Float32Array): Float32Array;\n * setAmbientColor(value: NumberArray): void;\n * }\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `Phong`\n * ```\n *\n * However, this means manually writing types for each pipeline.\n *\n * Fortunately, The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * Material constructors will then be typed automatically when using a string literal pipeline name:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `PhongOpaque`\n * ```\n *\n * @param pipeline The pipeline name to search for.\n * @returns The material class.\n *\n * @throws `Error` if the material class doesn't exist.\n */\n getTemplate(pipeline: string): MaterialConstructor {\n const wasm = this.engine.wasm;\n const index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline));\n if (!index) {\n throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`);\n }\n return this._materialTemplates[index] as MaterialConstructor;\n }\n\n /**\n * Wrap a material instance.\n *\n * @todo: Remove at 2.0.0.\n *\n * @note Wrapping should only be called once per instance.\n *\n * @param instance The material instance.\n * @returns The new material, wrapped in a proxy.\n */\n _wrapInstance(instance: Material): Material {\n this._cache[instance.index] = instance;\n if (!this.engine.legacyMaterialSupport) return instance;\n\n /** @todo: Remove at 2.0.0. This is kept for backward compatibility. */\n const proxy = new Proxy(instance, {\n get(target: Material, prop: string) {\n if (!target.hasParameter(prop)) {\n return (target as Record)[prop];\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `get${capitalizeFirstUTF8(prop)}`;\n return (target as Record)[name]();\n },\n set(target, prop: string, value) {\n if (!target.hasParameter(prop)) {\n (target as Record)[prop] = value;\n return true;\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `set${capitalizeFirstUTF8(prop)}`;\n (target as Record)[name](value);\n return true;\n },\n });\n this._cache[instance.index] = proxy;\n return proxy;\n }\n\n /**\n * Cache all pipeline definitions.\n *\n * @hidden\n */\n private _cacheDefinitions() {\n const wasm = this.engine.wasm;\n const count = wasm._wl_get_material_definition_count();\n for (let i = 1; i < count; ++i) {\n this._materialTemplates[i] = this._createMaterialTemplate(i);\n }\n }\n\n /**\n * Create a material class from a definition index.\n *\n * @param wasm The WASM instance.\n * @param definitionIndex The definition index to wrap.\n * @returns The material class.\n */\n private _createMaterialTemplate(definitionIndex: number) {\n const engine = this.engine;\n const template = class CustomMaterial extends Material {\n static Parameters: Set = new Set();\n\n constructor(index?: number) {\n index = index ?? engine.wasm._wl_material_create(definitionIndex);\n super(engine, index);\n /** @todo(2.0.0): Unify with Material. We need to wrap in both since materials\n * can be created via the parent class, or via child classes.\n * In addition, wrapping returns a proxy, we want to support Proxy\n * as well as Proxy. */\n return engine.materials._wrapInstance(this);\n }\n };\n\n const wasm = this.engine.wasm;\n const nbParams = wasm._wl_material_definition_get_param_count(definitionIndex);\n for (let index = 0; index < nbParams; ++index) {\n const name = wasm.UTF8ToString(\n wasm._wl_material_definition_get_param_name(definitionIndex, index)\n );\n template.Parameters.add(name);\n\n const t = wasm._wl_material_definition_get_param_type(definitionIndex, index);\n const type = t & 0xff;\n const componentCount = (t >> 8) & 0xff;\n /* metaType could also be extracted using: (t >> 16) & 0xff */\n\n const capitalized = capitalizeFirstUTF8(name);\n const getterId = `get${capitalized}`;\n const setterId = `set${capitalized}`;\n\n const templateProto = template.prototype as Record;\n switch (type) {\n case MaterialParamType.UnsignedInt:\n templateProto[getterId] = uint32Getter(index, componentCount);\n /* For now, it's only possible to set scalar uint values */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.Int:\n templateProto[getterId] = int32Getter(index, componentCount);\n /* For now, it's only possible to set scalar int values. Integer values setter\n * is purposely shared with uint. */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.HalfFloat:\n case MaterialParamType.Float:\n templateProto[getterId] = float32Getter(index, componentCount);\n templateProto[setterId] = float32Setter(index, componentCount);\n break;\n case MaterialParamType.Sampler:\n templateProto[getterId] = samplerGetter(index);\n templateProto[setterId] = samplerSetter(index);\n break;\n case MaterialParamType.Font:\n templateProto[getterId] = fontGetter(index);\n /* For now, setting fonts is not supported */\n break;\n }\n }\n\n return template as MaterialConstructor;\n }\n}\n\n/** @todo: With this implementation, `_wl_material_get_param_value`\n * do not need to check for the parameter type anymore, we could use\n * explicit calls. */\n\nfunction uint32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemUint32[0];\n };\n }\n return function (this: Material, out: NumberArray = new Uint32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemUint32[i];\n }\n return out;\n };\n}\n\nfunction uint32Setter(index: number) {\n return function (this: Material, value: number) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value);\n };\n}\n\nfunction int32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemInt[0];\n };\n }\n return function (this: Material, out: NumberArray = new Int32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemInt[i];\n }\n return out;\n };\n}\n\nfunction float32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n };\n }\n return function (this: Material, out: NumberArray = new Float32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n };\n}\n\nfunction float32Setter(index: number, count: number) {\n return function (this: Material, value: number | NumberArray) {\n const wasm = this.engine.wasm;\n\n let actualCount = 1;\n if (typeof value === 'number') {\n wasm._tempMemFloat[0] = value;\n } else {\n actualCount = value.length;\n for (let i = 0; i < actualCount; ++i) wasm._tempMemFloat[i] = value[i];\n }\n\n if (actualCount < count) {\n throw new Error(`Expected an array ${count} values, got ${actualCount}`);\n }\n\n wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count);\n };\n}\n\nfunction samplerGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.textures.wrap(wasm._tempMemInt[0]);\n };\n}\n\nfunction samplerSetter(index: number) {\n return function (this: Material, value: Texture | null | undefined) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0);\n };\n}\n\nfunction fontGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.fonts.wrap(wasm._tempMemInt[0]);\n };\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Mesh, MeshIndexType, MeshParameters, MeshSkinningType} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\n/**\n * Manage meshes.\n *\n * #### Creation\n *\n * Creating a mesh is done using {@link MeshManager.create}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n *\n * @since 1.2.0\n */\nexport class MeshManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Mesh);\n }\n\n /**\n * Create a new mesh.\n *\n * @param params Vertex and index data. For more information, have a look\n * at the {@link MeshParameters} object.\n */\n create(params: Partial) {\n if (!params.vertexCount) throw new Error(\"Missing parameter 'vertexCount'\");\n\n const wasm = this.engine.wasm;\n\n let indexData = 0;\n let indexType = 0;\n let indexDataSize = 0;\n if (params.indexData) {\n indexType = params.indexType || MeshIndexType.UnsignedShort;\n indexDataSize = params.indexData.length * indexType;\n indexData = wasm._malloc(indexDataSize);\n /* Copy the index data into wasm memory */\n switch (indexType) {\n case MeshIndexType.UnsignedByte:\n wasm.HEAPU8.set(params.indexData, indexData);\n break;\n case MeshIndexType.UnsignedShort:\n wasm.HEAPU16.set(params.indexData, indexData >> 1);\n break;\n case MeshIndexType.UnsignedInt:\n wasm.HEAPU32.set(params.indexData, indexData >> 2);\n break;\n }\n }\n\n const {skinningType = MeshSkinningType.None} = params;\n\n const index = wasm._wl_mesh_create(\n indexData,\n indexDataSize,\n indexType,\n params.vertexCount,\n skinningType\n );\n const instance = new Mesh(this._host, index);\n this._cache[instance.index] = instance;\n return instance;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {ImageLike} from '../types.js';\nimport {Texture} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\nexport function needsFlipY(image: ImageLike) {\n /* WebGL can't flip ImageBitmap on upload.\n * For consistency with WebGPU, disable ImageBitmap flipping entirely and let the user use:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap#options */\n return image instanceof ImageBitmap ? 0 : 1;\n}\n\n/**\n * Manage textures.\n *\n * #### Creation\n *\n * Creating a texture is done using {@link TextureManager.load}:\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * Alternatively, textures can be created directly via a loaded image using\n * {@link TextureManager.create}.\n *\n * @since 1.2.0\n */\nexport class TextureManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Texture);\n }\n\n /**\n * Create a new texture from an image or video.\n *\n * #### Usage\n *\n * ```js\n * const img = new Image();\n * img.load = function(img) {\n * const texture = engine.textures.create(img);\n * };\n * img.src = 'my-image.png';\n * ```\n *\n * @note The media must already be loaded. To automatically\n * load the media and create a texture, use {@link TextureManager.load} instead.\n *\n * @param image Media element to create the texture from.\n * @ret\\urns The new texture with the media content.\n */\n create(image: ImageLike): Texture {\n const wasm = this.engine.wasm;\n\n const jsImageIndex = wasm._images.length;\n wasm._images.push(image);\n\n if (image instanceof HTMLImageElement && !image.complete) {\n throw new Error('image must be ready to create a texture');\n }\n\n const width = (image as HTMLVideoElement).videoWidth ?? image.width;\n const height = (image as HTMLVideoElement).videoHeight ?? image.height;\n\n const imageIndex = wasm._wl_image_create(jsImageIndex);\n wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image));\n\n /* Required because the image isn't a resource by itself, but will eventually be one. */\n const index = wasm._wl_texture_create(imageIndex);\n\n const instance = new Texture(this.engine, index);\n this._cache[instance.index] = instance;\n\n return instance;\n }\n\n /**\n * Load an image from URL as {@link Texture}.\n *\n * #### Usage\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * @param filename URL to load from.\n * @param crossOrigin Cross origin flag for the image object.\n * @returns Loaded texture.\n */\n load(filename: string, crossOrigin?: string): Promise {\n let image = new Image();\n image.crossOrigin = crossOrigin ?? image.crossOrigin;\n image.src = filename;\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(this.create(image));\n };\n image.onerror = function () {\n reject('Failed to load image. Not found or no read access');\n };\n });\n }\n}\n", "import {WASM} from './wasm.js';\nimport {Scene} from './scene.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {WonderlandEngine} from './engine.js';\nimport {InputType, ViewComponent} from './wonderland.js';\n\ntype WebXRFramebuffer = WebGLFramebuffer & {name: number};\ntype WebXRTexture = WebGLTexture & {name: number};\n\n/**\n * Options for {@link LoadRuntimeOptions.xrOfferSession}\n *\n * @since 1.1.5\n */\nexport interface XROfferSessionOptions {\n /**\n * Mode to offer XR session with. If set to `'auto'`, offers a session\n * with the first supported mode in the following order:\n * - VR\n * - AR\n * - inline\n */\n mode: XRSessionMode | 'auto';\n /** Required features for the offered XR session */\n features: string[];\n /** Optional features for the offered XR session */\n optionalFeatures: string[];\n}\n\n/** Properties of a WebXR session */\nexport class XRSessionState {\n /** Wonderland WASM bridge. @hidden */\n readonly #webxr: WebXR;\n\n /** Current WebXR session mode */\n sessionMode: XRSessionMode;\n\n /** Current WebXR session */\n session: XRSession;\n\n /** Current WebXR frame */\n frame: XRFrame | null = null;\n\n /**\n * Constructor.\n *\n * @param wasm Wasm bridge instance\n * @param mode Current XR session mode\n *\n * @hidden\n */\n constructor(webxr: WebXR, mode: XRSessionMode, session: XRSession) {\n this.#webxr = webxr;\n this.sessionMode = mode;\n this.session = session;\n }\n\n /** @overload */\n referenceSpaceForType(type: 'viewer'): XRReferenceSpace;\n /**\n * Get a WebXR reference space of a given reference space type.\n *\n * @param type Type of reference space to get\n * @returns Reference space, or `null` if there's no reference space\n * of the requested type available\n */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null;\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this.#webxr.referenceSpaceForType(type);\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this.#webxr.currentReferenceSpace = refSpace;\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this.#webxr.currentReferenceSpace;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this.#webxr.currentReferenceSpaceType;\n }\n\n /** Current WebXR base layer */\n get baseLayer(): XRProjectionLayer | XRWebGLLayer {\n return this.#webxr.baseLayer!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n return this.#webxr.framebuffers;\n }\n}\n\n/**\n * WebXR API (internal)\n *\n * @hidden\n */\nexport class WebXR {\n /** Wonderland WASM bridge. @hidden */\n readonly #wasm: WASM;\n\n readonly engine: WonderlandEngine;\n\n sessionState: XRSessionState | null = null;\n\n colorFormat: number = 0x8058 /* RGBA8 */;\n depthFormat: number = 0x88f0 /* DEPTH24_STENCIL8 */;\n textureType: XRTextureType = 'texture';\n\n /**\n * {@link Emitter} for WebXR session end events.\n */\n readonly onSessionEnd = new Emitter();\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n */\n readonly onSessionStart: Emitter<[XRSession, XRSessionMode]> = new RetainEmitter<\n [XRSession, XRSessionMode]\n >();\n\n /**\n * {@link Emitter} notified before the first update and rendering on the first frame of a new XR session.\n */\n readonly onSessionFirstFrame: Emitter<[XRSession, XRSessionMode]> = new Emitter<\n [XRSession, XRSessionMode]\n >();\n\n /** Whether AR is supported by the browser. */\n arSupported: boolean = false;\n\n /** Whether VR is supported by the browser. */\n vrSupported: boolean = false;\n\n /**\n * Current WebXR base layer or `null` if no session active.\n */\n baseLayer: XRProjectionLayer | XRWebGLLayer | null = null;\n\n /** WebXR framebuffer scale factor. */\n framebufferScaleFactor: number = 1.0;\n\n private _webglBinding: XRWebGLBinding | null = null;\n\n private _initXR: boolean = false;\n private _inXR: boolean = false;\n\n /** WebXR reference spaces. */\n private _refSpaces: Record = {\n 'viewer': undefined,\n 'local': undefined,\n 'local-floor': undefined,\n 'bounded-floor': undefined,\n 'unbounded': undefined,\n };\n\n /** Current WebXR reference space. */\n private _refSpace: XRReferenceSpace | null = null;\n\n /** Current WebXR reference space type. */\n private _refSpaceType: XRReferenceSpaceType | null = null;\n\n /**\n * Emscripten WebXR framebuffer(s).\n *\n * @note fbo will not get overwritten if we are rendering to the\n * default framebuffer, e.g., when using WebXR emulator.\n */\n private _fbo: number | number[] = 0;\n\n private _allowLayers: boolean = false;\n private _requestAnimationFrameId: any = null;\n\n /**\n * Initial WebXR reference space type. See {@link init} for\n * more information.\n */\n private _initialReferenceSpaceType: XRReferenceSpaceType | null = null;\n\n private _tempPosition: Float32Array = new Float32Array(3);\n private _tempRotation: Float32Array = new Float32Array(4);\n\n private _tempPose(transform: XRRigidTransform) {\n const p = transform.position;\n this._tempPosition[0] = p.x;\n this._tempPosition[1] = p.y;\n this._tempPosition[2] = p.z;\n const o = transform.orientation;\n this._tempRotation[0] = o.x;\n this._tempRotation[1] = o.y;\n this._tempRotation[2] = o.z;\n this._tempRotation[3] = o.w;\n }\n\n /**\n * Constructor.\n *\n * @param engine Engine\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine) {\n this.engine = engine;\n this.#wasm = engine.wasm;\n }\n\n /**\n * Check whether XR is supported and store the result in {@link arSupported} and {@link vrSupported}\n */\n checkXRSupport(): Promise {\n if (typeof navigator === 'undefined') {\n return Promise.resolve(false);\n }\n if (!navigator.xr) {\n const isLocalhost =\n location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n const missingHTTPS = location.protocol !== 'https:' && !isLocalhost;\n console.warn(\n missingHTTPS\n ? 'WebXR is only supported with HTTPS or on localhost!'\n : 'WebXR unsupported in this browser.'\n );\n return Promise.resolve(false);\n }\n /* Those can throw if the application is embedded in an iframe without\n * xr-spatial-tracking permission. navigator.xr will be available, but\n * any access of it will throw. */\n const vrPromise = navigator.xr\n .isSessionSupported('immersive-vr')\n .then((supported) => (this.vrSupported = supported))\n .catch(() => (this.vrSupported = false));\n const arPromise = navigator.xr\n .isSessionSupported('immersive-ar')\n .then((supported) => (this.arSupported = supported))\n .catch(() => (this.arSupported = false));\n\n return Promise.all([vrPromise, arPromise]).then(\n () => this.vrSupported || this.arSupported\n );\n }\n\n /**\n * Initialize WebXR.\n *\n * @hidden\n */\n async init(\n framebufferScaleFactor: number,\n offerSessionOptions: XROfferSessionOptions | null\n ) {\n const supported = await this.checkXRSupport();\n if (!supported) return;\n\n this.framebufferScaleFactor = framebufferScaleFactor;\n\n /* Force the reference space to 'local'/'viewer' for the loading screen\n * to make sure the head input is at the origin. Doing it this way to\n * avoid adding JS components to the loading screen. */\n const onXRStart = () => {\n this._initialReferenceSpaceType = this.currentReferenceSpaceType;\n const newSpace = this._refSpaces['local'] ?? this._refSpaces['viewer']!;\n this.currentReferenceSpace = newSpace;\n };\n\n /* Not once() because the user can enter and exit XR several times\n * during a long loading screen */\n this.onSessionStart.add(onXRStart);\n\n /* This is called before all init()/start()/onActivate() so we avoid\n * overwriting a user-set reference space */\n this.engine.onLoadingScreenEnd.once(() => {\n this.onSessionStart.remove(onXRStart);\n\n if (!this._initialReferenceSpaceType) return;\n\n this.currentReferenceSpace =\n this._refSpaces[this._initialReferenceSpaceType] ??\n this._refSpaces['viewer']!;\n this._initialReferenceSpaceType = null;\n });\n\n if (offerSessionOptions !== null) {\n let mode = offerSessionOptions.mode;\n if (mode == 'auto') {\n if (this.vrSupported) {\n mode = 'immersive-vr';\n } else if (this.arSupported) {\n mode = 'immersive-ar';\n } else {\n mode = 'inline';\n }\n }\n\n const offerSession = () => {\n this.offerSession(\n mode as XRSessionMode,\n offerSessionOptions.features,\n offerSessionOptions.optionalFeatures\n )\n .then(\n /* When the session ends, offer to start a new one again */\n (s) => s.addEventListener('end', offerSession)\n )\n /* The browser may not suppoer offer session, or a previous request\n * was replaced by a new one. Not crucial, but inform the user. */\n .catch(console.warn);\n };\n\n offerSession();\n }\n }\n\n /** Get a WebXR reference space of a given reference space type. */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this._refSpaces[type] ?? null;\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this._refSpace! = refSpace;\n\n this._refSpaceType = null;\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n if (this._refSpaces[type] === refSpace) {\n /* Keep track of reference space type */\n this._refSpaceType = type;\n }\n }\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this._refSpace!;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this._refSpaceType!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n if (!Array.isArray(this._fbo)) {\n return [this.#wasm.GL.framebuffers[this._fbo]];\n }\n return this._fbo.map((id) => this.#wasm.GL.framebuffers[id]);\n }\n\n /**\n * Set main/left/right eye view active according to XR mode.\n *\n * If @param inXR is `true`, disables the main view and enables the left and\n * right view. Otherwise, enables the main view and disables the left and\n * right view.\n *\n * @param inXR Whether an XR session is currently active\n */\n updateViewState(inXR: boolean | undefined) {\n const scene: Scene = this.engine.scene;\n\n inXR = inXR ?? this._inXR;\n\n if (scene.mainView) {\n scene.mainView.active = !inXR;\n }\n\n if (scene.leftEyeView && scene.rightEyeView) {\n /** We always have either no left/right eye views or both. Always enable\n * both since we can't know if this is single-view AR until we get the\n * view count in {@link nextFrame}. There the right eye view is\n * disabled if necessary. */\n scene.leftEyeView.active = inXR;\n scene.rightEyeView.active = inXR;\n }\n }\n\n /**\n * Set projection matrix parameters for the webxr session.\n *\n * @param near Distance of near clipping plane\n * @param far Distance of far clipping plane\n */\n updateProjectionParams(near: number | undefined, far: number | undefined) {\n if (!this.sessionState) return;\n\n const scene = this.engine.scene;\n near ??= scene.leftEyeView!.near;\n far ??= scene.leftEyeView!.far;\n\n /* If reverse-Z is enabled, we need to give WebXR swapped near and far\n * planes so it generates the correct projection matrices. This is\n * explicitly supported by the spec. */\n const reverseZ = !!this.engine.isReverseZEnabled;\n\n this.sessionState!.session.updateRenderState({\n depthNear: reverseZ ? far : near,\n depthFar: reverseZ ? near : far,\n });\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n const options = this.sessionOptions(features, optionalFeatures);\n return navigator.xr!.requestSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n /* @ts-ignore */\n if (!navigator.xr!.offerSession) {\n return Promise.reject('WebXR offerSession() unsupported in this browser.');\n }\n const options = this.sessionOptions(features, optionalFeatures);\n /* @ts-ignore */\n return navigator.xr!.offerSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n async startSession(session: XRSession, mode: XRSessionMode) {\n /* Multiple calls to requestSession will result in the existing\n * session being passed to the callback */\n if (session == this.sessionState?.session) return;\n this.sessionState = new XRSessionState(this, mode, session);\n\n /* React to session ending */\n session.addEventListener('end', () => {\n this.endSession();\n });\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n\n /* Create the base layer */\n let binding = null;\n const isEmulator = 'CustomWebXRPolyfill' in window;\n /* The WebXR emulator doesn't support layers, and will\n * simply throw an exception. Only way of checking seems\n * to be whether the custom polyfill is available */\n if (!isEmulator && 'XRWebGLBinding' in window) {\n binding = this._webglBinding = new XRWebGLBinding(session, gl);\n }\n const useLayers = this._allowLayers && binding;\n if (useLayers) {\n /* Use WebXR Layers */\n const layer = (this.baseLayer = binding!.createProjectionLayer({\n scaleFactor: this.framebufferScaleFactor,\n colorFormat: this.colorFormat,\n depthFormat: this.depthFormat,\n /* Always use 'texture-array' with multiview, otherwise default to it\n * if not set otherwise */\n textureType: !this.textureType ? 'texture-array' : this.textureType,\n }));\n session.updateRenderState({layers: [layer]});\n } else {\n const layer = (this.baseLayer = new XRWebGLLayer(session, gl, {\n framebufferScaleFactor: this.framebufferScaleFactor,\n }));\n session.updateRenderState({baseLayer: layer});\n }\n\n /* Request and cache available spaces. 'viewer' is always available. */\n const promises = [];\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n promises.push(\n session.requestReferenceSpace(type).then((refSpace) => {\n this._refSpaces[type] = refSpace;\n return refSpace;\n })\n );\n }\n\n await Promise.allSettled(promises).then((results) => {\n /* We prefer the reference space automatically in above order */\n for (let i = results.length - 1; i >= 0; --i) {\n const result = results[i];\n if (result.status === 'rejected') continue;\n /* Type is kept track of for the user to test against */\n this._refSpaceType = Object.keys(this._refSpaces)[\n i\n ] as XRReferenceSpaceType;\n this._refSpace = result.value;\n break;\n }\n });\n\n const isVR = mode == 'immersive-vr';\n\n const scene: Scene = this.engine.scene;\n\n if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) {\n console.error(\n `sessionStart(): VR sessions require 1 classic view, a left and a right view`\n );\n return;\n }\n\n this.updateViewState(true);\n\n this.updateProjectionParams(undefined, undefined);\n\n this.onSessionStart.notify(session, this.sessionState!.sessionMode);\n\n this.#wasm._wl_reset_context();\n\n console.log(`WebXR ${isVR ? 'VR' : 'AR'} session started`);\n\n this.sessionState.session.addEventListener('visibilitychange', (event) => {\n switch (event.session.visibilityState) {\n case 'visible':\n this.#wasm._wl_xr_focus();\n case 'visible-blurred':\n this.#wasm._wl_xr_blur();\n case 'hidden':\n this.#wasm._wl_xr_hide();\n }\n });\n\n /* Wait until first frame to call _wl_xr_init() */\n this._initXR = true;\n\n this._requestAnimationFrameId = session.requestAnimationFrame(\n useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)\n );\n }\n\n sessionOptions(\n requiredFeatures: string[],\n optionalFeatures: string[] = []\n ): XRSessionInit {\n if (this._allowLayers && !optionalFeatures.includes('layers')) {\n optionalFeatures.push('layers');\n }\n\n const params: XRSessionInit = {\n requiredFeatures,\n optionalFeatures,\n };\n\n const hasDepthSensing =\n requiredFeatures.includes('depth-sensing') ||\n optionalFeatures.includes('depth-sensing');\n if (hasDepthSensing) {\n params.depthSensing = {\n usagePreference: ['gpu-optimized', 'cpu-optimized'],\n dataFormatPreference: ['float32', 'luminance-alpha'],\n };\n }\n return params;\n }\n\n endSession() {\n this.sessionState!.session.cancelAnimationFrame(this._requestAnimationFrameId);\n this._requestAnimationFrameId = null;\n this.sessionState = null;\n\n this.#wasm._wl_reset_context();\n\n if (this.onSessionStart instanceof RetainEmitter) this.onSessionStart.reset();\n this.onSessionEnd.notify();\n\n console.log('WebXR session ended');\n\n this._inXR = false;\n\n this.updateViewState(false);\n\n const scene: Scene = this.engine.scene;\n\n this.#wasm._wl_xr_exit();\n\n /* Restore projection matrices. They are temporarily overridden in XR and\n * view changes are applied when the session ends. */\n scene.leftEyeView!._generateProjectionMatrix();\n scene.rightEyeView!._generateProjectionMatrix();\n\n /* Meta WebXR emulator doesn't request animation frame. Quest does. */\n this.#wasm._wl_application_redraw();\n }\n\n nextFrame(time: number, frame: XRFrame) {\n this.sessionState!.frame = frame;\n\n const session = frame.session;\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const scene: Scene = this.engine.scene;\n\n if (this._initXR) {\n /* There's no way to tell how many views we have before rendering the first frame,\n * and AR is not a sufficient criteria for one eye (mobile AR, AR headsets) */\n scene.rightEyeView!.active = pose.views.length > 1;\n\n this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer);\n this._initXR = false;\n this._inXR = true;\n\n this.onSessionFirstFrame.notify(session, this.sessionState!.sessionMode);\n }\n\n /* Head transformation */\n this._tempPose(pose.transform);\n scene._setInputTransformation(\n InputType.Head,\n this._tempPosition,\n this._tempRotation\n );\n\n /* Eyes transformations */\n for (let i = 0; i < pose.views.length && i < 2; ++i) {\n const view = pose.views[i];\n const viewIndex = view.eye == 'right' ? 1 : 0;\n this._tempPose(view.transform);\n scene._setInputTransformation(\n InputType.EyeLeft + viewIndex,\n this._tempPosition,\n this._tempRotation\n );\n }\n\n /* Controller transformations */\n for (const inputSource of session.inputSources) {\n let handedness = -1;\n if (inputSource.handedness == 'left') handedness = 0;\n else if (inputSource.handedness == 'right') handedness = 1;\n this._updateInputComponent(\n frame,\n inputSource.gripSpace,\n InputType.ControllerLeft + handedness\n );\n this._updateInputComponent(\n frame,\n inputSource.targetRaySpace,\n InputType.RayLeft + handedness\n );\n }\n\n this.#wasm._wl_nextFrame(0);\n }\n\n nextFrameSingle(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameSingle.bind(this)\n );\n }\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n /* If framebuffer is non-null, compositor is enabled and we bind it.\n * If it's null, we need to avoid this call otherwise the canvas FBO is bound */\n const glLayer = session.renderState.baseLayer!;\n if (glLayer.framebuffer) {\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const id = this._fbo || GL.getNewId(GL.framebuffers);\n (glLayer.framebuffer as WebXRFramebuffer).name = id;\n GL.framebuffers[id] = glLayer.framebuffer;\n this._fbo = id;\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]);\n }\n\n for (let i = 0; i < pose.views.length; ++i) {\n const view = pose.views[i];\n const viewport = glLayer.getViewport(view)!;\n\n let destView: ViewComponent;\n if (view.eye == 'left') {\n destView = this.engine.scene.leftEyeView!;\n } else if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene._components.componentAt(ViewComponent, i);\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n /* Patch projection matrix, currently only needed for reverse-Z.\n * If reverse-Z is enabled, we pass swapped near and far values to\n * updateRenderState(), giving us a matrix with inverted depth. But\n * we still need to map from NDC 1,-1 to 1,0. On WebGPU this won't\n * be necessary. */\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n this._fbo as number\n );\n }\n\n this.nextFrame(time, frame);\n }\n\n nextFrameLayers(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameLayers.bind(this)\n );\n }\n\n const scene: Scene = this.engine.scene;\n\n const pose = frame.getViewerPose(this._refSpace!)!;\n\n const layer = this.baseLayer!;\n const binding = this._webglBinding;\n\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n const createFramebuffer = !this._fbo;\n const textureArray = layer.textureArrayLength == 2;\n\n if (createFramebuffer) {\n if (textureArray) {\n this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)];\n } else {\n /* Both eyes use the same FBO */\n const id = GL.getNewId(GL.framebuffers);\n this._fbo = [id, id];\n }\n this._fbo.forEach((id) => {\n const framebuffer = gl.createFramebuffer() as WebXRFramebuffer;\n GL.framebuffers[id] = framebuffer;\n framebuffer.name = id;\n });\n }\n\n const ids = this._fbo as number[];\n pose.views.forEach((view) => {\n const viewIndex = view.eye == 'right' ? 1 : 0;\n\n const subImage = binding!.getViewSubImage(layer, view);\n const viewport = subImage.viewport;\n\n let destView: ViewComponent;\n if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene.leftEyeView!;\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n ids[viewIndex]\n );\n\n if (!createFramebuffer) return;\n /* Only needs to be done for the first view on when using side-by-side\n * target texture */\n if (!textureArray && viewIndex != 0) return;\n\n /* Make WebXR API created textures known to emscripten */\n const colorTexture = subImage.colorTexture as WebXRTexture;\n const colorImageId = (colorTexture.name =\n colorTexture.name || GL.getNewId(GL.textures));\n GL.textures[colorImageId] = colorTexture;\n\n const depthStencilTexture = subImage.depthStencilTexture as WebXRTexture;\n const depthStencilImageId = (depthStencilTexture.name =\n depthStencilTexture.name || GL.getNewId(GL.textures));\n GL.textures[depthStencilImageId] = depthStencilTexture;\n\n /* Attach textures to framebuffer */\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]);\n\n if (textureArray) {\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n subImage.colorTexture,\n 0,\n subImage.imageIndex\n );\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n subImage.depthStencilTexture,\n 0,\n subImage.imageIndex\n );\n } else {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n subImage.colorTexture,\n 0\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.TEXTURE_2D,\n subImage.depthStencilTexture,\n 0\n );\n }\n\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER)) {\n console.error('Target framebuffer for', view.eye, 'eye is incomplete.');\n }\n });\n\n this.nextFrame(time, frame);\n }\n\n private _updateInputComponent(\n frame: XRFrame,\n space: XRSpace | undefined,\n inputType: InputType\n ) {\n if (!space) return;\n const pose = frame.getPose(space, this._refSpace!);\n if (!pose || Number.isNaN(pose.transform.matrix[0])) return;\n this._tempPose(pose.transform);\n this.engine.scene._setInputTransformation(\n inputType,\n this._tempPosition,\n this._tempRotation\n );\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {InstantiateGltfResult, Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {Object3D} from './wonderland.js';\n\n/** GLTF-specific loading options. */\nexport type GLTFOptions = {\n /** If `true`, extensions will be parsed. */\n extensions?: boolean;\n};\n\n/**\n * Extension data obtained from glTF files.\n */\nexport interface GLTFExtensionsInstance {\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\nexport class GLTFExtensions {\n objectCount: number;\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record = {};\n /**\n * Mesh extension objects. Key is the gltf index, value is JSON\n * data indexed by extension name.\n */\n mesh: Record> = {};\n /**\n * Node extension objects. Key is a glTF index, value is JSON\n * data indexed by extension name.\n */\n node: Record> = {};\n\n constructor(count: number) {\n this.objectCount = count;\n }\n}\n\n/**\n * glTF scene.\n *\n * At the opposite of {@link Scene}, glTF scenes can be instantiated\n * in other scenes but can't:\n * - Be activated\n * - Be the destination of an instantiation\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n *\n * const scene = engine.scene;\n * for (let i = 0; i < 100; ++i) {\n * scene.instantiate(prefab);\n * }\n * ```\n *\n * Since this class inherits from {@link Prefab}, you can use the shared\n * API to modify the glTF before an instantiation:\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n * const zombie = prefab.findByName('Zombie')[0];\n *\n * // The mesh is too small, we scale the root\n * zombie.setScalingWorld([2, 2, 2]);\n * // Add a custom js 'health' component to the root\n * zombie.addComponent('health', {value: 100});\n *\n * // 'Zombie' is wrapped in a new root added during instantiation\n * const {root} = engine.scene.instantiate(prefab);\n * const instanceZombie = root.children[0];\n * console.log(instanceZombie.getScalingWorld()); // Prints '[2, 2, 2]'\n * ```\n *\n * @category scene\n * @since 1.2.0\n */\nexport class PrefabGLTF extends Prefab {\n /**\n * Raw extensions read from the glTF file.\n *\n * The extensions will be mapped to the hierarchy upon instantiation.\n * For more information, have a look at the {@link InstantiateGltfResult} type.\n *\n * @note The glTF must be loaded with `extensions` enabled. If not, this\n * field will be set to `null`. For more information, have a look at the\n * {@link GLTFOptions} type.\n */\n extensions: GLTFExtensions | null = null;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n this.extensions = this._readExtensions();\n }\n\n /**\n * Instantiate the glTF extensions on an active sub scene graph.\n *\n * @param id The root object id.\n * @param result The instantiation object result.\n *\n * @hidden\n */\n _processInstantiaton(dest: Prefab, root: Object3D, result: InstantiateGltfResult) {\n if (!this.extensions) return null;\n\n const wasm = this.engine.wasm;\n\n const count = this.extensions.objectCount;\n const idMapping: number[] = new Array(count);\n\n /** @todo: We need some check to ensure that the gltf layout didn't change to retarget extensions.\n * At least a simple scene graph size check should be required to avoid a segfault. */\n\n const activeRootIndex = wasm._wl_object_index(root._id);\n for (let i = 0; i < count; ++i) {\n const mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(\n this._index,\n dest._index,\n activeRootIndex,\n i\n );\n idMapping[i] = mappedId;\n }\n\n const remapped: GLTFExtensionsInstance = {\n mesh: {},\n node: {},\n idMapping,\n };\n\n for (const gltfIndex in this.extensions.mesh) {\n const id = idMapping[gltfIndex];\n remapped.mesh[id] = this.extensions.mesh[gltfIndex];\n }\n for (const gltfIndex in this.extensions.node) {\n const id = idMapping[gltfIndex];\n remapped.node[id] = this.extensions.node[gltfIndex];\n }\n\n result.extensions = remapped;\n }\n\n /**\n * Unmarshalls gltf extensions.\n *\n * @hidden\n */\n private _readExtensions() {\n const wasm = this.engine.wasm;\n\n const ptr = wasm._wl_glTF_scene_get_extensions(this._index);\n if (!ptr) return null;\n\n let index = ptr / 4;\n const data = wasm.HEAPU32;\n const readString = () => {\n const strPtr = data[index++];\n const strLen = data[index++];\n return wasm.UTF8ViewToString(strPtr, strPtr + strLen);\n };\n\n const objectCount = data[index++];\n const extensions = new GLTFExtensions(objectCount);\n\n const meshExtensionsSize = data[index++];\n for (let i = 0; i < meshExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.mesh[objectId] = JSON.parse(readString());\n }\n const nodeExtensionsSize = data[index++];\n for (let i = 0; i < nodeExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.node[objectId] = JSON.parse(readString());\n }\n const rootExtensionsStr = readString();\n if (rootExtensionsStr) {\n extensions.root = JSON.parse(rootExtensionsStr);\n }\n\n return extensions;\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {WASM} from './wasm.js';\nimport {Emitter} from './utils/event.js';\nimport {fetchStreamWithProgress, fetchWithProgress, getBaseUrl} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Object3D,\n RayHit,\n Environment,\n ViewComponent,\n InputType,\n LogTag,\n} from './wonderland.js';\nimport {NumberArray} from './types.js';\nimport {Material} from './resources/material-manager.js';\nimport {InMemoryLoadOptions, Prefab, SceneLoadOptions} from './prefab.js';\nimport {GLTFExtensionsInstance, PrefabGLTF} from './scene-gltf.js';\n\nexport interface InstantiateResult {\n root: Object3D;\n}\n\nexport interface InstantiateGltfResult extends InstantiateResult {\n extensions: GLTFExtensionsInstance | null;\n}\n\n/** Options for scene activation. */\nexport interface ActivateOptions {\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n /**\n * If `true`, the promise will resolve only once all dependencies are downloaded.\n *\n * If `false`, resolves as soon as possible, e.g., when the lowest\n * resolution textures are available.\n */\n waitForDependencies?: boolean;\n /** @hidden */\n legacyLoaded?: boolean;\n}\n\n/**\n * Legacy gltf extension type.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadGLTF} API.\n */\nexport interface GLTFExtensionsLegacy {\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record>;\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\n/** Options for {@link Scene.append}. */\nexport interface SceneAppendParameters {\n /** Whether to load glTF extension data */\n loadGltfExtensions: boolean;\n baseURL: string | undefined;\n}\n\n/**\n * Result obtained when appending a scene with {@link Scene.append} with gltf extensions.\n */\nexport type SceneAppendResultWithExtensions = {\n root: Object3D | null;\n extensions: GLTFExtensionsLegacy;\n};\n\n/**\n * Result obtained when appending a scene with {@link Scene.append}.\n */\nexport type SceneAppendResult = (Object3D | null) | SceneAppendResultWithExtensions;\n\n/**\n * Constants\n */\n\n/** Magic number for .bin */\nconst MAGIC_BIN = 'WLEV';\n\n/**\n * Scene type to load with {@link ChunkedSceneLoadSink}.\n *\n * @since 1.2.1\n * @hidden\n */\nexport enum SceneType {\n Prefab,\n Main,\n Dependency,\n}\n\n/**\n * Sink for `WritableStream` that loads the data as a .bin file.\n *\n * Data is loaded chunk by chunk to minimize the total WASM allocation size.\n *\n * @since 1.2.1\n * @hidden\n */\nexport class ChunkedSceneLoadSink implements UnderlyingSink {\n readonly #wasm: WASM;\n readonly #type: SceneType;\n readonly #closeParameters: any[];\n #offset = 0;\n #requested = 0;\n #firstChunk = true;\n\n _loadIndex = -1;\n sceneIndex = -1;\n\n /** Pointer to the staging buffer. */\n #ptr: number = 0;\n /** Staging buffer size, in **bytes**. */\n #bufferSize: number = 0;\n\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Prefab, url: string);\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Main, url: string);\n /** @overload */\n constructor(\n engine: WonderlandEngine,\n type: SceneType.Dependency,\n url: string,\n dependentSceneIndex: number\n );\n /**\n * Constructor\n * @param engine Engine instance\n * @param type Type of scene to load\n * @param url URL for the scene creation. Can be empty.\n * @param closeParameters Parameters for the final function to be called\n * during a successful {@link ChunkedSceneLoadSink.close}.\n */\n constructor(\n engine: WonderlandEngine,\n type: SceneType,\n url: string,\n ...closeParameters: any[]\n ) {\n this.#wasm = engine.wasm;\n this.#type = type;\n this.#closeParameters = closeParameters;\n this._loadIndex = this.#wasm._wl_scene_create_chunked_start(\n this.#wasm.tempUTF8(url)\n );\n /* Initial buffer for the header chunk */\n this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex);\n this._resizeBuffer(this.#requested);\n }\n\n private _resizeBuffer(size: number) {\n if (this.#bufferSize > 0) {\n this.#wasm._free(this.#ptr);\n }\n this.#bufferSize = size;\n this.#ptr = size ? this.#wasm._malloc(size) : 0;\n }\n\n private _throwError(reason: string) {\n this.abort();\n throw new Error(reason);\n }\n\n /**\n * Write a single blob of data.\n *\n * @param blob Data to parse\n */\n write(blob: Uint8Array) {\n let read = 0;\n while (read < blob.length) {\n /* Fill the staging buffer */\n const toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset);\n /* **Do not** attempt to create a HEAP8 view here, since the next wasm call might\n * re-allocate the heap, making this view dangling. */\n this.#wasm.HEAPU8.set(\n blob.subarray(read, read + toRead),\n this.#ptr + this.#offset\n );\n this.#offset += toRead;\n read += toRead;\n\n /* Not enough data, wait for more */\n if (this.#requested > this.#offset) continue;\n\n /* Send data. This loads as many chunks as possible and then tells\n * us how much data it's missing, and how much it has read. The\n * read count allows us to move incomplete chunk data to the start\n * of the buffer. This is necessary because the buffer is allocated\n * with just enough data to hold the largest chunk. */\n const readSizePtr = this.#wasm._tempMem;\n const requestedPtr = this.#wasm._tempMem + 4;\n let success: boolean;\n try {\n success = this.#wasm._wl_scene_create_chunked_next(\n this._loadIndex,\n this.#ptr,\n this.#offset,\n readSizePtr,\n requestedPtr\n );\n } catch {\n /* Catch calls to abort(), e.g. via asserts */\n success = false;\n }\n\n if (!success) {\n this._throwError('Chunk parsing failed');\n }\n\n const sentSize = this.#offset;\n const readSize = this.#wasm._tempMemUint32[0];\n this.#requested = this.#wasm._tempMemUint32[1];\n const extraSize = sentSize - readSize;\n\n /* #requested == 0 signals end of .bin file */\n if (extraSize > this.#requested) {\n this._throwError('Unexpected extra data');\n }\n\n /* Not enough data for a chunk, wait for more */\n if (!readSize) continue;\n\n if (extraSize > 0) {\n /* We passed one or more complete chunks plus incomplete extra\n * data for the next chunk. Move it to the buffer start. */\n this.#wasm.HEAPU8.copyWithin(\n this.#ptr,\n this.#ptr + readSize,\n this.#ptr + sentSize\n );\n }\n\n this.#offset = extraSize;\n\n if (this.#firstChunk) {\n /* First chunk is the header. At this point we can query for\n * the required buffer size for parsing the rest of the .bin.\n * The initial buffer is exactly the size of the header chunk\n * so #offset should be 0 here since we sent a complete chunk. */\n this._resizeBuffer(\n this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)\n );\n this.#firstChunk = false;\n }\n }\n }\n\n /** Called when all blobs of data have been written */\n close() {\n if (this.#requested > 0) {\n this._throwError('Unexpected end of data');\n }\n\n this._resizeBuffer(0);\n switch (this.#type) {\n case SceneType.Prefab:\n this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(\n this._loadIndex\n );\n break;\n case SceneType.Main:\n this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex);\n this.sceneIndex = 0;\n break;\n case SceneType.Dependency:\n [this.sceneIndex] = this.#closeParameters;\n this.#wasm._wl_scene_create_chunked_end_queued(\n this._loadIndex,\n this.sceneIndex\n );\n break;\n default:\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n break;\n }\n this._loadIndex = -1;\n }\n\n /** Called when the stream is aborted */\n abort() {\n if (this._loadIndex === -1) return;\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n this._loadIndex = -1;\n this._resizeBuffer(0);\n }\n\n /** Staging buffer size */\n get size() {\n return this.#bufferSize;\n }\n}\n\n/**\n * Wonderland Engine (.bin) scene.\n *\n * Wonderland Engine packages two types of scene:\n * - Activatable scene: Contains objects, components, views, resources, and rendering data\n * - Streamable scene: Contains objects, components, and resources\n *\n * #### Activation\n *\n * Some scenes are **activatable**, they can thus be attached to the renderer\n * to be updated and rendered on the canvas.\n *\n * For more information, have a look at the {@link WonderlandEngine.switchTo} method.\n *\n * #### Instantiation\n *\n * Besides activation, a scene can instantiate the content of another scene.\n *\n * For more information, have a look at the {@link Scene#instantiate} method.\n *\n * @category scene\n */\nexport class Scene extends Prefab {\n /** Called before rendering the scene */\n readonly onPreRender = new Emitter();\n /** Called after the scene has been rendered */\n readonly onPostRender = new Emitter();\n\n /** Ray hit pointer in WASM heap. @hidden */\n private _rayHit: number;\n /** Ray hit. @hidden */\n private _hit: RayHit;\n\n /** @hidden */\n private _environment: Environment;\n\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n /** `this.engine?` is used for testing. */\n this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(this, this._rayHit);\n this._environment = new Environment(this);\n }\n\n /** @overload */\n instantiate(scene: PrefabGLTF): InstantiateGltfResult;\n /**\n * Instantiate `scene` into this instance.\n *\n * Any scene can be instantiated into one another. It's thus possible\n * to instantiate a {@link PrefabGLTF} into this instance, or another\n * {@link Scene} instance.\n *\n * #### Usage\n *\n * ```js\n * const prefabScene = await engine.loadScene('Prefab.bin');\n * // Instantiate `prefabScene` into `scene`\n * engine.scene.instantiate(prefabScene);\n * ```\n *\n * #### Shared Resources\n *\n * Instantiating **does not** duplicate resources. Each instance will\n * reference the same assets stored in the {@link Scene}, e.g.,\n *\n * ```js\n * // `zombie` has one mesh and one material\n * const zombie = await engine.loadScene('Zombie.bin');\n *\n * for (let i = 0; i < 100; ++i) {\n * engine.scene.instantiate(zombie);\n * }\n *\n * console.log(engine.meshes.count) // Prints '1'\n * console.log(engine.materials.count) // Prints '1'\n * ```\n *\n * #### glTF extensions\n *\n * Instantiating a prefab loaded from a .glb automatically retargets the extensions\n * to the created hierarchy:\n *\n * ```js\n * const gltf = await engine.loadGLTF({url: 'Model.glb', extensions: true});\n * const {root, extensions} = engine.scene.instantiate(gltf);\n *\n * // Retrieve Object3D instance from extension nodes list\n * for (const key in extensions.node) {\n * const object3d = engine.scene.wrap(extensions.node[key]);\n * }\n * ```\n *\n * @param scene The scene to instantiate.\n * @returns An object containing the instantiated root {@link Object3D}.\n * When a glTF is instantiated, the result can contain extra metadata.\n * For more information, have a look at the {@link InstantiateResult} type.\n *\n * @since 1.2.0\n */\n instantiate(prefab: Prefab): InstantiateResult;\n instantiate(prefab: Prefab): InstantiateResult {\n if (prefab._index === this._index) {\n throw new Error(\"Can't instantiate scene into itself\");\n }\n\n const wasm = this.engine.wasm;\n const id = wasm._wl_scene_instantiate(prefab._index, this._index);\n\n const result: InstantiateResult = {root: this.wrap(id)};\n if (prefab instanceof PrefabGLTF) {\n const obj = this.wrap(id);\n prefab._processInstantiaton(this, obj, result as InstantiateGltfResult);\n }\n return result;\n }\n\n /** @todo: Add `instantiateBatch` to instantiate multiple chunks in a row. */\n\n /**\n * @todo Provide an API to delete all resources linked to a scene.\n *\n * Example:\n *\n * ```ts\n * const scene = await engine.loadScene('Scene.bin');\n * ...\n * scene.destroy({removeResources: true});\n * ```\n */\n\n /**\n * Destroy this scene and remove it from the engine.\n *\n * @note Destroying a scene **doesn't** remove the materials, meshes,\n * and textures it references in the engine. Those should be cleaned up either by loading\n * another main scene via {@link WonderlandEngine.loadMainScene}, or manually using {@link Mesh.destroy}.\n *\n * @throws If the scene is currently active.\n * */\n destroy() {\n if (this.isActive) {\n throw new Error(\n `Attempt to destroy ${this}, but destroying the active scene is not supported`\n );\n }\n\n /* Store before calling `super.destroy()` since the call\n * might destroy entirely the prototype. */\n const wasm = this.engine.wasm;\n const rayPtr = this._rayHit;\n\n super.destroy();\n\n wasm._free(rayPtr);\n }\n\n /**\n * View components.\n */\n get views(): ViewComponent[] {\n return this._components.components(ViewComponent, false);\n }\n\n /**\n * Active view components.\n */\n get activeViews(): ViewComponent[] {\n return this._components.components(ViewComponent, true);\n }\n\n /**\n * Main view.\n */\n get mainView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_mainView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Left eye view.\n */\n get leftEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_leftView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Right eye view.\n */\n get rightEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_rightView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Set input transformation.\n *\n * @hidden\n */\n _setInputTransformation(\n type: InputType,\n position: Readonly,\n orientation: Readonly\n ) {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(4 * 2 * 4);\n wasm._tempMemFloat.set(position);\n wasm._tempMemFloat.set(orientation, 4);\n wasm._wl_input_set_transformation(this._index, type, wasm._tempMem);\n }\n\n /**\n * Cast a ray through the scene and find intersecting collision components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.scene.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of collision groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Scene}\n * instance and will be reused with the next {@link Scene#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance = 100.0\n ): RayHit {\n this.engine.wasm._wl_scene_ray_cast(\n this._index,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n this._rayHit,\n maxDistance\n );\n return this._hit;\n }\n\n /**\n * Set the background clear color.\n *\n * @param color new clear color (RGBA).\n * @since 0.8.5\n */\n set clearColor(color: number[]) {\n this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]);\n }\n\n /**\n * Set whether to clear the color framebuffer before drawing.\n *\n * This function is useful if an external framework (e.g. an AR tracking\n * framework) is responsible for drawing a camera frame before Wonderland\n * Engine draws the scene on top of it.\n *\n * @param b Whether to enable color clear.\n * @since 0.9.4\n */\n set colorClearEnabled(b: boolean) {\n this.engine.wasm._wl_scene_enableColorClear(b);\n }\n\n /**\n * Load a scene file (.bin).\n *\n * Will replace the currently active scene with the one loaded\n * from given file. It is assumed that JavaScript components required by\n * the new scene were registered in advance.\n *\n * Once the scene is loaded successfully and initialized,\n * {@link WonderlandEngine.onSceneLoaded} is notified.\n *\n * #### ArrayBuffer\n *\n * The `load()` method accepts an in-memory buffer:\n *\n * ```js\n * scene.load({\n * buffer: new ArrayBuffer(...),\n * baseURL: 'https://my-website/assets'\n * })\n * ```\n *\n * @note The `baseURL` is mandatory. It's used to fetch images and languages.\n *\n * Use {@link Scene.setLoadingProgress} to update the loading progress bar\n * when using an ArrayBuffer.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadMainScene} API.\n *\n * @param options Path to the file to load, or an option object.\n * For more information about the options, see the {@link SceneLoadOptions} documentation.\n * @returns Promise that resolves when the scene was loaded.\n */\n async load(options: string | SceneLoadOptions): Promise {\n const engine = this.engine;\n\n /** @todo(2.0.0): Remove this method. */\n let dispatchReadyEvent = false;\n let opts: InMemoryLoadOptions;\n if (isString(options)) {\n opts = await Scene.loadBuffer(options, (bytes: number, size: number) => {\n this.engine.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.engine.setLoadingProgress(bytes / size);\n });\n } else {\n opts = options;\n dispatchReadyEvent = options.dispatchReadyEvent ?? false;\n }\n\n const scene = await engine.loadMainSceneFromBuffer({\n ...opts,\n dispatchReadyEvent,\n });\n /* Do not use `this`, since `loadMainScene` will destroy it.\n * `erasePrototypeOnDestroy` would make this instance unusable. */\n engine.onSceneLoaded.notify();\n return scene;\n }\n\n /**\n * Append a scene file.\n *\n * Loads and parses the file and its images and appends the result\n * to the currently active scene.\n *\n * Supported formats are streamable Wonderland scene files (.bin) and glTF\n * 3D scenes (.gltf, .glb).\n *\n * ```js\n * WL.scene.append(filename).then(root => {\n * // root contains the loaded scene\n * });\n * ```\n *\n * In case the `loadGltfExtensions` option is set to true, the response\n * will be an object containing both the root of the loaded scene and\n * any glTF extensions found on nodes, meshes and the root of the file.\n *\n * ```js\n * WL.scene.append(filename, { loadGltfExtensions: true }).then(({root, extensions}) => {\n * // root contains the loaded scene\n * // extensions.root contains any extensions at the root of glTF document\n * const rootExtensions = extensions.root;\n * // extensions.mesh and extensions.node contain extensions indexed by Object id\n * const childObject = root.children[0];\n * const meshExtensions = root.meshExtensions[childObject.objectId];\n * const nodeExtensions = root.nodeExtensions[childObject.objectId];\n * // extensions.idMapping contains a mapping from glTF node index to Object id\n * });\n * ```\n *\n * If the file to be loaded is located in a subfolder, it might be useful\n * to define the `baseURL` option. This will ensure any bin files\n * referenced by the loaded bin file are loaded at the correct path.\n *\n * ```js\n * WL.scene.append(filename, { baseURL: 'scenes' }).then(({root, extensions}) => {\n * // do stuff\n * });\n * ```\n *\n * @deprecated Use the new {@link Prefab} and {@link Scene} API.\n *\n * @param file The .bin, .gltf or .glb file to append. Should be a URL or\n * an `ArrayBuffer` with the file content.\n * @param options Additional options for loading.\n * @returns Promise that resolves when the scene was appended.\n */\n async append(\n file: string | ArrayBuffer,\n options: Partial = {}\n ): Promise {\n /** @todo(2.0.0): Remove this method. */\n\n const {baseURL = isString(file) ? getBaseUrl(file) : this.baseURL} = options;\n\n const buffer = isString(file) ? await fetchWithProgress(file) : file;\n const data = new Uint8Array(buffer);\n const isBinFile =\n data.byteLength > MAGIC_BIN.length &&\n data\n .subarray(0, MAGIC_BIN.length)\n .every((value, i) => value === MAGIC_BIN.charCodeAt(i));\n\n const scene = isBinFile\n ? this.engine.loadPrefabFromBuffer({buffer, baseURL})\n : this.engine.loadGLTFFromBuffer({\n buffer,\n baseURL,\n extensions: options.loadGltfExtensions,\n });\n\n const result = this.instantiate(scene)!;\n if (scene instanceof PrefabGLTF) {\n if (!scene.extensions) return result.root;\n return {\n root: result.root,\n extensions: {\n ...(result as InstantiateGltfResult).extensions,\n root: scene.extensions.root,\n },\n } as SceneAppendResultWithExtensions;\n }\n\n scene.destroy();\n return result.root;\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @deprecated Use {@link WonderlandEngine.setLoadingProgress}.\n */\n setLoadingProgress(percentage: number) {\n this.engine.setLoadingProgress(percentage);\n }\n\n /**\n * Dispatch an event 'wle-scene-ready' in the document.\n *\n * @note This is used for automatic testing.\n */\n dispatchReadyEvent() {\n document.dispatchEvent(\n new CustomEvent('wle-scene-ready', {\n detail: {filename: this.filename},\n })\n );\n }\n\n /**\n * Set the current material to render the sky.\n *\n * @note The sky needs to be enabled in the editor when creating the scene.\n * For more information, please refer to the background [tutorial](https://wonderlandengine.com/tutorials/background-effect/).\n */\n set skyMaterial(material: Material | null) {\n this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0);\n }\n\n /** Current sky material, or `null` if no sky is set. */\n get skyMaterial(): Material | null {\n const index = this.engine.wasm._wl_scene_get_sky_material(this._index);\n return this.engine.materials.wrap(index);\n }\n\n /**\n * Environment lighting properties.\n *\n * @since 1.2.3\n */\n get environment(): Environment {\n return this._environment;\n }\n\n /**\n * Relative url to the js components bundle\n *\n * Returns `null` if the scene was built without a components bundle.\n */\n get componentsBundle(): string | null {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_componentsBundle(this._index);\n return ptr ? wasm.UTF8ToString(ptr) : null;\n }\n\n /**\n * Reset the scene.\n *\n * This method deletes all used and allocated objects, and components.\n *\n * @deprecated Load a new scene and activate it instead.\n */\n reset() {\n /** @todo(2.0.0): Remove this method. */\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependency(url: string) {\n const sink = new ChunkedSceneLoadSink(\n this.engine,\n SceneType.Dependency,\n url,\n this._index\n );\n const stream = await fetchStreamWithProgress(url);\n return stream.pipeTo(new WritableStream(sink));\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependencies() {\n const wasm = this.engine.wasm;\n\n const count = wasm._wl_scene_queued_bin_count(this._index);\n if (!count) return Promise.resolve();\n\n const urls = new Array(count).fill(0).map((_, i: number) => {\n const ptr = wasm._wl_scene_queued_bin_path(this._index, i);\n const url = wasm.UTF8ToString(ptr);\n return url;\n });\n\n wasm._wl_scene_clear_queued_bin_list(this._index);\n\n return Promise.all(urls.map((url: string) => this._downloadDependency(url)));\n }\n}\n", "import {\n Component,\n ComponentConstructor,\n Object as Object3D,\n Physics,\n I18N,\n MorphTargets,\n Texture,\n Font,\n DestroyedPrefabInstance,\n ParticleEffect,\n} from './wonderland.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {isString} from './utils/object.js';\nimport {APIVersion, Version} from './version.js';\nimport {WASM} from './wasm.js';\nimport {Logger} from './utils/logger.js';\nimport {clamp} from './utils/misc.js';\nimport {MaterialManager} from './resources/material-manager.js';\nimport {MeshManager} from './resources/mesh-manager.js';\nimport {ResourceManager} from './resources/resource.js';\nimport {needsFlipY, TextureManager} from './resources/texture-manager.js';\nimport {LogTag} from './wonderland.js';\nimport {Constructor, ImageLike, ProgressCallback} from './types.js';\nimport {XRSessionState, WebXR} from './webxr.js';\nimport {Prefab, InMemoryLoadOptions, LoadOptions, StreamLoadOptions} from './prefab.js';\nimport {Scene, ActivateOptions, ChunkedSceneLoadSink, SceneType} from './scene.js';\nimport {PrefabGLTF, GLTFOptions} from './scene-gltf.js';\nimport {ArrayBufferSource, onImageReady} from './utils/fetch.js';\n\n/**\n * Ensures that this API is compatible with the given\n * runtime version.\n *\n * We only enforce compatibility for major and minor components, i.e.,\n * the runtime and the API must both be of the form `x.y.*`.\n *\n * @throws If the major or the minor components are different.\n *\n * @param version The target version\n */\nexport function checkRuntimeCompatibility(version: Version) {\n const {major, minor} = version;\n\n let majorDiff = major - APIVersion.major;\n let minorDiff = minor - APIVersion.minor;\n /* Same version, so perfectly compatible. */\n if (!majorDiff && !minorDiff) return;\n\n const error =\n 'checkRuntimeCompatibility(): Version compatibility mismatch:\\n' +\n '\\t\u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*)\\n';\n\n const isRuntimeOlder = majorDiff < 0 || (!majorDiff && minorDiff < 0);\n if (isRuntimeOlder) {\n /* Runtime is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`\n );\n }\n /* API is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a new API version >= ${version.major}.${version.minor}.*`\n );\n}\n\n/**\n * Reload the browser tab.\n *\n * @note This method first ensures the XR session is terminated,\n * to avoid blocking the Oculus Quest page.\n *\n * @param engine The engine instance\n */\nfunction reloadPage(engine: WonderlandEngine) {\n /* End XR session for Oculus Quest blocking reload otherwise */\n const session = engine.xr?.session ?? null;\n if (!session) {\n location.reload();\n return;\n }\n session.end().then(() => location.reload());\n}\n\n/**\n * Main Wonderland Engine instance.\n *\n * Controls the canvas, rendering, and JS <-> WASM communication.\n */\nexport class WonderlandEngine {\n /**\n * {@link Emitter} for WebXR session end events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionEnd.add(() => console.log(\"XR session ended.\"));\n * ```\n */\n get onXRSessionEnd(): Emitter {\n return this.#webxr.onSessionEnd;\n }\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionStart.add((session, mode) => console.log(session, mode));\n * ```\n *\n * By default, this emitter is retained and will automatically call any callback added\n * while a session is already started:\n *\n * ```js\n * // XR session is already active.\n * this.engine.onXRSessionStart.add((session, mode) => {\n * console.log(session, mode); // Triggered immediately.\n * });\n * ```\n */\n get onXRSessionStart(): Emitter<[XRSession, XRSessionMode]> {\n return this.#webxr.onSessionStart;\n }\n\n /**\n * {@link Emitter} for canvas / main framebuffer resize events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onResize.add(() => {\n * const canvas = this.engine.canvas;\n * console.log(`New Size: ${canvas.width}, ${canvas.height}`);\n * });\n * ```\n *\n * @note The size of the canvas is in physical pixels, and is set via {@link WonderlandEngine.resize}.\n */\n readonly onResize: Emitter = new Emitter();\n\n /** Whether AR is supported by the browser. */\n get arSupported(): boolean {\n return this.#webxr.arSupported;\n }\n\n /** Whether VR is supported by the browser. */\n get vrSupported(): boolean {\n return this.#webxr.vrSupported;\n }\n\n /**\n * {@link RetainEmitter} signalling the end of the loading screen.\n *\n * Listeners get notified when the first call to {@link Scene#load()} is\n * invoked. At this point the new scene has not become active, and none of\n * its resources or components are initialized.\n *\n * Compared to {@link onSceneLoaded}, this does not wait for all components\n * to be fully initialized and activated. Any handler added inside\n * {@link Component#init()}, {@link Component#start()} or\n * {@link Component#onActivate()} will be called immediately.\n *\n * Usage:\n *\n * ```js\n * this.engine.onLoadingScreenEnd.add(() => console.log(\"Wait is over!\"));\n * ```\n */\n readonly onLoadingScreenEnd = new RetainEmitter();\n\n /**\n * {@link Emitter} for scene loaded events.\n *\n * Listeners get notified when a call to {@link Scene#load()} finishes. At\n * this point all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneLoaded.add(() => console.log(\"Scene switched!\"));\n * ```\n *\n * @deprecated Use {@link onSceneActivated} instead.\n */\n readonly onSceneLoaded = new Emitter();\n\n /**\n * {@link Emitter} for scene activated events.\n *\n * This listener is notified with the old scene as first parameter, and\n * the new scene as second.\n *\n * This listener is notified after all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneActivated.add((oldScene, newScene) => {\n * console.log(`Scene switch from ${oldScene.filename} to ${newScene.filename}`);\n * });\n * ```\n */\n readonly onSceneActivated = new Emitter<[Scene, Scene]>();\n\n /**\n * Triggered when a hot reload is requested.\n *\n * When using the Wonderland Editor, this will be triggered when packaging\n * the project.\n *\n * @note When {@link autoHotReload} is `true`, the emitter is notified after the\n * scene is reloaded.\n *\n * To customize the hot reload behavior, set the {@link autoHotReload} to `false`,\n * and use this emitter:\n *\n * ```js\n * this.engine.onHotReloadRequest.add(async (filename: string) => {\n * // This handler can be used to re-download a scene, download components,\n * // fetch an API, anything!\n * await this.loadMainScene(filename);\n * });\n * ```\n */\n readonly onHotReloadRequest: Emitter<[string]> = new Emitter();\n\n /**\n * Access to internationalization.\n */\n readonly i18n: I18N = new I18N(this);\n\n /**\n * WebXR related state, `null` if no XR session is active.\n */\n get xr(): XRSessionState | null {\n return this.#webxr.sessionState;\n }\n\n /**\n * If `true`, {@link Texture}, {@link Object3D}, and {@link Component}\n * instances have their prototype erased upon destruction.\n *\n * #### Object\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = engine.scene.addObject();\n * obj.name = 'iamalive';\n * console.log(obj.name); // Prints 'iamalive'\n *\n * obj.destroy();\n * console.log(obj.name); // Throws an error\n * ```\n *\n * #### Component\n *\n * Components will also be affected:\n *\n * ```js\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * alive: Property.bool(true)\n * };\n *\n * start() {\n * this.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * A component is also destroyed if its ancestor gets destroyed:\n *\n * ```js\n * class MyComponent extends Component {\n * ...\n * start() {\n * this.object.parent.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * @note Native components will not be erased if destroyed via object destruction:\n *\n * ```js\n * const mesh = obj.addComponent('mesh');\n * obj.destroy();\n * console.log(mesh.active) // Doesn't throw even if the mesh is destroyed\n * ```\n *\n * @since 1.1.1\n */\n erasePrototypeOnDestroy = false;\n\n /**\n * If `true`, the materials will be wrapped in a proxy to support pre-1.2.0\n * material access, i.e.,\n *\n * ```js\n * const material = new Material(engine, 'Phong Opaque');\n * material.diffuseColor = [1.0, 0.0, 0.0, 1.0];\n * ```\n *\n * If `false`, property accessors will not be available and material\n * properties should be accessed via methods, i.e.,\n *\n * ```js\n * const PhongOpaque = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongOpaque();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ...\n * const diffuse = material.getDiffuseColor();\n * ```\n *\n * When disabled, reading/writing to materials is slightly more efficient on the CPU.\n */\n legacyMaterialSupport = true;\n\n /**\n * If `true`, automatically reloads the scene sent by the editor socket.\n *\n * @note The {@link onHotReloadRequest} emitter is notified **after** the scene is re-loaded.\n *\n * To use custom hot-reload code, set this boolean to `false` and add the reloading code\n *\n */\n autoHotReload = true;\n\n /**\n * If `true`, uncompressed images will be automatically converted\n * to `ImageBitmap` before upload to the GPU.\n *\n * For more information, have a look at the\n * [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) documentation.\n */\n loadUncompressedImagesAsBitmap = false;\n\n /**\n * Scene cache in scene manager.\n *\n * @hidden\n */\n _scenes: (Prefab | null)[] = [];\n\n /**\n * Currently active scene.\n *\n * @hidden\n */\n _scene: Scene;\n\n /** Incremented every time a new main scene is loaded. */\n _mainSceneVersion: number = 0;\n\n /** @hidden */\n private _textures!: TextureManager;\n /** @hidden */\n private _materials!: MaterialManager;\n /** @hidden */\n private _meshes!: MeshManager;\n /** @hidden */\n private _morphTargets!: ResourceManager;\n /** @hidden */\n private _fonts!: ResourceManager;\n /** @hidden */\n private _particleEffects!: ResourceManager;\n /**\n * Current loading uncompressed images.\n *\n * @note Indexed by js image index.\n *\n * @hidden\n */\n private _uncompressedPromises: Promise[] = [];\n\n /**\n * WebAssembly bridge.\n *\n * @hidden\n */\n #wasm: WASM;\n\n /**\n * Physics manager, only available when physx is enabled in the runtime.\n *\n * @hidden\n */\n #physics: Physics | null = null;\n\n /**\n * WebXR library.\n *\n * @hidden\n */\n #webxr: WebXR;\n\n /**\n * Resize observer to track for canvas size changes.\n *\n * @hidden\n */\n #resizeObserver: ResizeObserver | null = null;\n\n /**\n * Whether a components bundle has already been loaded or not.\n *\n * @hidden\n */\n #bundleCache: Set = new Set();\n\n /**\n * Create a new engine instance.\n *\n * @param wasm Wasm bridge instance\n * @param loadingScreen Loading screen .bin file data\n *\n * @hidden\n */\n constructor(wasm: WASM, loadingScreen: ArrayBuffer | null, withRenderer: boolean) {\n this.#wasm = wasm;\n this.#wasm['_setEngine'](this); /* String lookup to bypass private. */\n this.#wasm._loadingScreen = loadingScreen;\n\n const version = this.runtimeVersion;\n let versionString = `${version.major}.${version.minor}.${version.patch}`;\n if (version.rc > 0) {\n versionString += `-rc${version.rc}`;\n }\n this.log.info(LogTag.Engine, 'Wonderland Engine runtime version:', versionString);\n\n this.#webxr = new WebXR(this);\n\n checkRuntimeCompatibility(this.#wasm.runtimeVersion);\n\n /* Setup the error handler. This is used to to manage native errors. */\n this.#wasm._wl_set_error_callback(\n this.#wasm.addFunction((messagePtr: number) => {\n throw new Error(this.#wasm.UTF8ToString(messagePtr));\n }, 'vi')\n );\n\n this.#wasm._wl_application_create();\n\n this.#physics = null;\n\n if (this.#wasm.withPhysX) {\n this.#physics = new Physics(this);\n }\n\n this._init(withRenderer);\n\n this._scene = this._reload(0);\n\n this.canvas.addEventListener(\n 'webglcontextlost',\n (e) => this.log.error(LogTag.Engine, 'Context lost:', e),\n false\n );\n }\n\n /**\n * Start the engine if it's not already running.\n *\n * When using the {@link loadRuntime} function, this method is called\n * automatically.\n */\n start(): void {\n this.wasm._wl_application_start();\n }\n\n /**\n * Register a custom JavaScript component type.\n *\n * You can register a component directly using a class inheriting from {@link Component}:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myParam: {type: Type.Float, default: 42.0},\n * };\n * init() {}\n * start() {}\n * update(dt) {}\n * onActivate() {}\n * onDeactivate() {}\n * onDestroy() {}\n * });\n *\n * // Here, we assume we have an engine already instantiated.\n * // In general, the registration occurs in the `index.js` file in your\n * // final application.\n * engine.registerComponent(MyComponent);\n * ```\n *\n * {@label CLASSES}\n * @param classes Custom component(s) extending {@link Component}.\n *\n * @since 1.0.0\n */\n registerComponent(...classes: ComponentConstructor[]) {\n for (const arg of classes) {\n this.wasm._registerComponent(arg);\n }\n }\n\n /**\n * Register a component bundle\n *\n * The module must be of the form:\n *\n * ```js\n * export default function(engine) {\n * engine.registerComponent(MyComponent);\n * ...\n * }\n * ```\n *\n * Alternatively, you can manually register a component bundle:\n *\n * ```js\n * const registerBundle = (await import(url)).default;\n * registerBundle(engine);\n * ```\n *\n * @param url The URL of the module to register.\n * @param nocache If `true`, force browser to re-download the file.\n */\n async registerBundle(url: string, nocache = false) {\n if (!nocache && this.#bundleCache.has(url)) return;\n this.#bundleCache.add(url);\n\n if (nocache) url += `?t=${Date.now()}`;\n const register = (await import(url)).default;\n if (typeof register !== 'function') {\n throw new Error(\n `The bundle '${url}' doesn't have a default exported registration function`\n );\n }\n register(this);\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @since 1.2.1\n */\n setLoadingProgress(percentage: number) {\n this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1));\n }\n\n /**\n * Switch the current active scene.\n *\n * Once active, the scene will be updated and rendered on the canvas.\n *\n * The currently active scene is accessed via {@link WonderlandEngine.scene}:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * start() {\n * console.log(this.scene === this.engine.scene); // Prints `true`\n * }\n * }\n * ```\n *\n * @note This method will throw if the scene isn't activatable.\n *\n * #### Component Lifecycle\n *\n * Marking a scene as active will:\n * * Call {@link Component#onDeactivate} for all active components of the previous scene\n * * Call {@link Component#onActivate} for all active components of the new scene\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * engine.switchTo(scene);\n * ```\n *\n * @returns A promise that resolves once the scene is ready.\n *\n * @since 1.2.0\n */\n async switchTo(scene: Scene, opts: ActivateOptions = {}) {\n this.wasm._wl_deactivate_activeScene();\n\n /* Switch reference on engine **just** before activating, to allow\n * component to use `this.engine.scene` in `onActivate()`/`start()`. */\n const previous = this.scene;\n this._preactivate(scene);\n\n this.wasm._wl_scene_activate(scene._index);\n\n /* Enable/disable required views */\n this.#webxr.updateViewState(undefined);\n\n /* We loaded new views, update WebXR projection parameters */\n this.#webxr.updateProjectionParams(undefined, undefined);\n\n if (!this.onLoadingScreenEnd.isDataRetained) {\n this.onLoadingScreenEnd.notify();\n }\n\n /* For now, we always automatically download dependencies for\n * the user, i.e., separate textures.bin and languages.bin.\n *\n * In the future, we can eventually expose this in the chunk API\n * to give more control to the user if needed.\n *\n * We do not make the user wait until the textures download is complete. */\n const promise = scene._downloadDependencies();\n\n await this.i18n.setLanguage(this.i18n.languageCode(0));\n\n const {dispatchReadyEvent = false, waitForDependencies = false} = opts;\n\n if (waitForDependencies) await promise;\n\n this.onSceneActivated.notify(previous, scene);\n\n if (dispatchReadyEvent) scene.dispatchReadyEvent();\n }\n\n /**\n * Load the scene from a URL, as the main scene of a new {@link Scene}.\n *\n * #### Usage\n *\n * ```js\n * // The method returns the main scene\n * const scene = await engine.loadMainScene();\n * ```\n *\n * #### Destruction\n *\n * Loading a new main scene entirely resets the state of the engine, and destroys:\n * - All loaded scenes, prefabs, and gltf files\n * - Meshes\n * - Textures\n * - Materials\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback. When setting a custom\n * callback, you need to manually call {@link setLoadingProgress} to\n * get progress updates in the loading screen.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainScene(\n options: LoadOptions & ActivateOptions,\n progress?: ProgressCallback\n ) {\n /**\n * @todo: It's currently possible to put the runtime in a limbo\n * state using hot-reload: Multiple reload requests are sent, and scene loading\n * ends up being interleaved.\n *\n * Add a system to cancel the last loading, if any.\n */\n\n progress ??= (bytes: number, size: number) => {\n this.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.setLoadingProgress(bytes / size);\n };\n\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true, nocache = false} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const {stream, url} = Prefab.validateStreamOptions(options);\n return this._loadMainScene(stream, url, nocache, options as ActivateOptions);\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadMainSceneFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadMainScene}, but loading is done\n * from an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainSceneFromBuffer(options: InMemoryLoadOptions & ActivateOptions) {\n const {nocache = false} = options;\n const {buffer, url} = Prefab.validateBufferOptions(options);\n return this._loadMainScene(buffer, url, nocache, options);\n }\n\n /**\n * Load a {@link Prefab} from a URL.\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadPrefab('Prefab.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n * @note This method is a wrapper around {@link WonderlandEngine.loadPrefabFromBuffer}.\n *\n * @param url The URL pointing to the prefab to load.\n * @param progress Optional progress callback.\n * @returns The loaded {@link Prefab}.\n */\n async loadPrefab(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadPrefabFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadPrefab}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Prefab}.\n */\n loadPrefabFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Load a scene from a URL.\n *\n * At the opposite of {@link WonderlandEngine.loadMainScene}, the scene loaded\n * will be added to the list of existing scenes, and its resources will be made\n * available for other scenes/prefabs/gltf to use.\n *\n * #### Resources Sharing\n *\n * Upon loading, the scene resources are added in the engine, and references\n * to those resources are updated.\n *\n * It's impossible for a scene loaded with this method to import pipelines.\n * Thus, the loaded scene will reference existing pipelines in the main scene,\n * based on their names.\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link Scene}.\n */\n async loadScene(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadSceneFromBuffer(options);\n }\n }\n\n /**\n * Create a glTF scene from a URL.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @note This method is a wrapper around {@link WonderlandEngine.loadGLTFFromBuffer}.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options, optionally including\n * {@link GLTFOptions}. {@link LoadOptions.streamed} is ignored as\n * streamed glTF parsing isn't supported.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n async loadGLTF(opts: LoadOptions & GLTFOptions, progress?: ProgressCallback) {\n const memOptions = await Scene.loadBuffer(opts, progress);\n const options = isString(opts) ? memOptions : {...opts, ...memOptions};\n return this.loadGLTFFromBuffer(options);\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadScene}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @throws If the scene is streamable.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Scene}.\n */\n loadSceneFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadGLTF}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @param options An object containing the buffer and extra glTF metadata.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n loadGLTFFromBuffer(options: InMemoryLoadOptions & GLTFOptions) {\n Scene.validateBufferOptions(options);\n const {buffer, extensions = false} = options;\n\n const wasm = this.wasm;\n\n if (!wasm._wl_glTF_scene_create) {\n throw new Error(\n 'Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings.'\n );\n }\n\n const ptr = wasm.copyBufferToHeap(buffer);\n\n try {\n const index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength);\n const scene = new PrefabGLTF(this, index);\n this._scenes[scene._index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n if (this.runtimeVersion.patch) {\n this._loadUncompressedImages(scene._index);\n }\n return scene;\n } finally {\n /* Catch calls to abort(), e.g. via asserts */\n wasm._free(ptr);\n }\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param typeOrClass A string representing the component typename (e.g., `'cursor-component'`),\n * or a component class (e.g., `CursorComponent`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(typeOrClass: string | ComponentConstructor) {\n return this.#wasm.isRegistered(\n isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName\n );\n }\n\n /**\n * Retrieve the registered component from its type name.\n *\n * @param typename The component {@link Component.TypeName} property\n * @returns The class if a component was registered with given name, `null` otherwise.\n */\n getComponentClass(\n typename: string\n ): ComponentConstructor | null {\n const index = this.wasm._componentTypeIndices[typename];\n if (index === undefined) return null;\n return this.wasm._componentTypes[index] as ComponentConstructor;\n }\n\n /**\n * Resize the canvas and the rendering context.\n *\n * @note The `width` and `height` parameters will be scaled by the\n * `devicePixelRatio` value. By default, the pixel ratio used is\n * [window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n *\n * @param width The width, in CSS pixels.\n * @param height The height, in CSS pixels.\n * @param devicePixelRatio The pixel ratio factor.\n */\n resize(width: number, height: number, devicePixelRatio = window.devicePixelRatio) {\n width = width * devicePixelRatio;\n height = height * devicePixelRatio;\n this.canvas.width = width;\n this.canvas.height = height;\n this.wasm._wl_application_resize(width, height);\n this.onResize.notify();\n }\n\n /**\n * Run the next frame.\n *\n * @param fixedDelta The elapsed time between this frame and the previous one.\n *\n * @note The engine automatically schedules next frames. You should only\n * use this method for testing.\n */\n nextFrame(fixedDelta: number = 0) {\n this.#wasm._wl_nextFrame(fixedDelta);\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.requestSession(mode, features, optionalFeatures);\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.offerSession(mode, features, optionalFeatures);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n * @returns The object\n *\n * @deprecated Use {@link Scene#wrap} instead.\n *\n */\n wrapObject(objectId: number): Object3D {\n return this.scene.wrap(objectId);\n }\n\n toString() {\n return 'engine';\n }\n\n /* Public Getters & Setter */\n\n /** Currently active scene. */\n get scene(): Scene {\n return this._scene;\n }\n\n /**\n * WebAssembly bridge.\n *\n * @note Use with care. This object is used to communicate\n * with the WebAssembly code throughout the api.\n *\n * @hidden\n */\n get wasm(): WASM {\n return this.#wasm;\n }\n\n /**\n * WebXR api.\n *\n * @hidden\n */\n get webxr(): WebXR {\n return this.#webxr;\n }\n\n /** Canvas element that Wonderland Engine renders to. */\n get canvas(): HTMLCanvasElement {\n return this.#wasm.canvas;\n }\n\n /**\n * Current WebXR session or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.session} on the {@link xr}\n * object instead.\n */\n get xrSession(): XRSession | null {\n return this.xr?.session ?? null;\n }\n\n /**\n * Current WebXR frame or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.frame} on the {@link xr}\n * object instead.\n */\n get xrFrame(): XRFrame | null {\n return this.xr?.frame ?? null;\n }\n\n /**\n * Current WebXR base layer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.baseLayer} on the {@link xr}\n * object instead.\n */\n get xrBaseLayer(): XRProjectionLayer | XRWebGLLayer | null {\n return this.xr?.baseLayer ?? null;\n }\n\n /**\n * Current WebXR framebuffer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.framebuffers} on the {@link xr}\n * object instead.\n */\n get xrFramebuffer(): WebGLFramebuffer | null {\n return this.xr?.framebuffers[0] ?? null;\n }\n\n /**\n * WebXR framebuffer scale factor.\n */\n get xrFramebufferScaleFactor() {\n return this.#webxr.framebufferScaleFactor;\n }\n\n set xrFramebufferScaleFactor(value: number) {\n this.#webxr.framebufferScaleFactor = value;\n }\n\n /** Physics manager, only available when physx is enabled in the runtime. */\n get physics() {\n return this.#physics;\n }\n\n /** Texture resources */\n get textures() {\n return this._textures;\n }\n\n /** Material resources */\n get materials() {\n return this._materials;\n }\n\n /** Mesh resources */\n get meshes() {\n return this._meshes;\n }\n\n /** Morph target set resources */\n get morphTargets() {\n return this._morphTargets;\n }\n\n /** Font resources */\n get fonts() {\n return this._fonts;\n }\n\n /** Particle effect resources */\n get particleEffects() {\n return this._particleEffects;\n }\n\n /** Get all uncompressed images. */\n get images(): ImageLike[] {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n result[i] = wasm._images[index];\n }\n return result;\n }\n\n /**\n * Promise that resolve once all uncompressed images are loaded.\n *\n * This is equivalent to calling {@link WonderlandEngine.images}, and wrapping each\n * `load` listener into a promise.\n */\n get imagesPromise(): Promise {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n const loading = this._uncompressedPromises[index];\n result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]);\n }\n return Promise.all(result);\n }\n\n /**\n * `true` if the texture streaming is currently idle, i.e.,\n * not attempting to upload any textures.\n *\n * @hidden\n */\n get isTextureStreamingIdle() {\n return !!this.wasm._wl_renderer_streaming_idle();\n }\n\n /**\n * `true` if reverse-Z rendering is supported and enabled.\n *\n * @hidden\n */\n get isReverseZEnabled() {\n return !!this.wasm._wl_renderer_isReverseZEnabled();\n }\n\n /*\n * Enable or disable the mechanism to automatically resize the canvas.\n *\n * Internally, the engine uses a [ResizeObserver](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * Changing the canvas css will thus automatically be tracked by the engine.\n */\n set autoResizeCanvas(flag: boolean) {\n const state = !!this.#resizeObserver;\n if (state === flag) return;\n\n if (!flag) {\n this.#resizeObserver?.unobserve(this.canvas);\n this.#resizeObserver = null;\n return;\n }\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.canvas) {\n this.resize(entry.contentRect.width, entry.contentRect.height);\n }\n }\n });\n this.#resizeObserver.observe(this.canvas);\n }\n\n /** `true` if the canvas is automatically resized by the engine. */\n get autoResizeCanvas() {\n return this.#resizeObserver !== null;\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n return this.#wasm.runtimeVersion;\n }\n\n /** Engine {@link Logger}. Use it to turn on / off logging. */\n get log(): Logger {\n return this.#wasm._log;\n }\n\n /* Internal-Only Methods */\n\n /**\n * Initialize the engine.\n *\n * @note Should be called after the WebAssembly is fully loaded.\n *\n * @hidden\n */\n _init(withRenderer: boolean): boolean {\n const success = this.#wasm._wl_application_init(withRenderer);\n if (!success) {\n throw new Error(`Failed to initializing Wonderland runtime`);\n }\n\n this.resize(this.canvas.clientWidth, this.canvas.clientHeight);\n return true;\n }\n\n /**\n * Reset the runtime state, including:\n * - Component cache\n * - Images\n * - Callbacks\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _reset() {\n this.wasm.reset();\n this._scenes.length = 0;\n this._scene = this._reload(0);\n this.#bundleCache.clear();\n return this.switchTo(this._scene);\n }\n\n /**\n * Attempt to hot reload the engine.\n *\n * @param filename URL of the file to use for the reload.\n * If `null`, forces a full page reload.\n *\n * @hidden\n */\n async _reloadRequest(filename: string | null) {\n if (filename === null) {\n reloadPage(this);\n return;\n }\n\n try {\n if (this.autoHotReload)\n await this.loadMainScene({url: filename, nocache: true});\n } catch (e) {\n console.error('Hot reload request failed to load main scene, reason:', e);\n setTimeout(() => reloadPage(this), 1000);\n return;\n }\n\n this.onHotReloadRequest.notify(filename);\n }\n\n /**\n * Add an empty scene.\n *\n * @returns The newly created scene\n *\n * @hidden\n */\n _createEmpty(): Scene {\n const wasm = this.wasm;\n const index = wasm._wl_scene_create_empty();\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n return scene;\n }\n\n /** @hidden */\n _destroyScene(instance: Prefab) {\n const wasm = this.wasm;\n wasm._wl_scene_destroy(instance._index);\n\n const index = instance._index;\n (instance._index as number) = -1;\n if (this.erasePrototypeOnDestroy) {\n Object.setPrototypeOf(instance, DestroyedPrefabInstance);\n }\n\n this._scenes[index] = null;\n }\n\n /**\n * Reload the state of the engine with a new main scene.\n *\n * @param index Scene index.\n *\n * @hidden\n */\n private _reload(index: number) {\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n\n this._textures = new TextureManager(this);\n this._materials = new MaterialManager(this);\n this._meshes = new MeshManager(this);\n this._morphTargets = new ResourceManager(this, MorphTargets);\n this._fonts = new ResourceManager(this, Font);\n this._particleEffects = new ResourceManager(this, ParticleEffect);\n this._uncompressedPromises.length = 0;\n\n return scene;\n }\n\n /**\n * Helper to load a main scene from an `ArrayBuffer` or `ReadableStream`.\n *\n * @param data Buffer or stream.\n * @param url Base URL.\n * @param nocache If `true`, force a browser reload of files to download.\n * Only affects components loading for now.\n * @param options Activation options.\n * @returns The loaded main scene.\n *\n * @hidden\n */\n private async _loadMainScene(\n data: ArrayBuffer | ReadableStream,\n url: string,\n nocache: boolean,\n options: ActivateOptions\n ) {\n if (nocache) url += `?t=${Date.now()}`;\n\n const wasm = this.#wasm;\n\n /*\n * - Deactivate currently active scene\n * - Destroy all scenes\n * - Mark all resources as destroyed\n * - Activation of main scene to prevent the runtime to be in limbo\n */\n\n wasm._wl_deactivate_activeScene();\n\n ++this._mainSceneVersion;\n\n /* Only destroy all scene once the current active one is disabled */\n for (let i = this._scenes.length - 1; i >= 0; --i) {\n const scene = this._scenes[i];\n if (scene) scene.destroy();\n }\n\n /* Mark all resources as destroyed */\n this._textures._clear();\n this._materials._clear();\n this._meshes._clear();\n this._morphTargets._clear();\n this._uncompressedPromises.length = 0;\n\n const stream =\n data instanceof ReadableStream\n ? data\n : new ReadableStream(new ArrayBufferSource(data));\n const sink = new ChunkedSceneLoadSink(this, SceneType.Main, url);\n await stream.pipeTo(new WritableStream(sink));\n\n const mainScene = this._reload(sink.sceneIndex);\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(mainScene._index);\n\n /**\n * @todo(2.0.0)\n *\n * Backward compatibility: We need to set this instance reference on the\n * engine **before** component creation occurs, since users have been accessing\n * the scene with `this.engine.scene` in `init()`.\n */\n this._preactivate(mainScene);\n\n const componentsBundle = mainScene.componentsBundle;\n if (componentsBundle) {\n /* Relative URL are resolved from the script that imports, and **not** from\n * the document. We assume that the components bundle is located alongside\n * other resources, relative to the .bin.\n *\n * @note: `componentsBundle` already contains the same baseURL as the .bin. */\n const bundleURL = new URL(componentsBundle, document.baseURI);\n const url = nocache ? bundleURL.href.split('?')[0] : bundleURL.href;\n await this.registerBundle(url, nocache);\n }\n mainScene._initialize();\n\n await this.switchTo(mainScene, options);\n\n return mainScene;\n }\n\n /**\n * Helper to load prefab and activatable scene from an `ArrayBuffer`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private _loadSceneFromBuffer(\n PrefabClass: Constructor,\n options: InMemoryLoadOptions\n ) {\n const {buffer, url} = Scene.validateBufferOptions(options);\n\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n sink.write(new Uint8Array(buffer));\n sink.close();\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Helper to load prefab and activatable scene from a `ReadableStream`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private async _loadSceneFromStream(\n PrefabClass: Constructor,\n options: StreamLoadOptions\n ) {\n const {stream, url} = Scene.validateStreamOptions(options);\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n await stream.pipeTo(new WritableStream(sink));\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Checks if the loaded scene is a prefab and throws an error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedPrefab(scene: Prefab) {\n if (this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a prefab. To load a scene, use loadScene() instead'\n );\n }\n }\n\n /**\n * Checks if the loaded scene is a scene (and not a prefab) and throws an\n * error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedScene(scene: Scene) {\n if (!this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a scene. To load a prefab, use loadPrefab() instead'\n );\n }\n }\n\n /**\n * Set the scene data on the engine, before the activation occurs.\n *\n * @hidden\n */\n private _preactivate(scene: Scene) {\n this._scene = scene;\n /* Update the current active scene in the physx manager */\n if (this.physics) (this.physics._hit._scene as Scene) = scene;\n }\n\n /**\n * Notify the runtime when images are ready to be uploaded.\n *\n * @param sceneIndex Index of the scene where the image originated\n * @hidden\n */\n private _loadUncompressedImages(sceneIndex: number) {\n const mainSceneVersion = this._mainSceneVersion;\n const wasm = this.wasm;\n\n const bitmapOptions: ImageBitmapOptions = {\n colorSpaceConversion: 'none',\n };\n\n const imageCount = wasm._wl_image_count();\n for (let i = 0; i < imageCount; ++i) {\n if (wasm._wl_image_originalScene(i) !== sceneIndex) continue;\n\n const jsImageIndex = wasm._wl_image_get_jsImage_index(i);\n\n const image = wasm._images[jsImageIndex];\n if (!image) continue;\n\n let promise: Promise = onImageReady(image);\n if (this.loadUncompressedImagesAsBitmap) {\n promise = promise.then((img) => createImageBitmap(img, bitmapOptions));\n }\n this._uncompressedPromises[jsImageIndex] = promise\n .then((img) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img));\n }\n })\n .catch((e) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n this.log.error(\n LogTag.Scene,\n 'Failed to load uncompressed image',\n e\n );\n }\n });\n }\n }\n}\n", "/**\n * Assert that the given bit index is less than 32.\n *\n * @param bit The bit to test.\n */\nfunction assert(bit: number): void {\n if (bit >= 32) {\n throw new Error(`BitSet.enable(): Value ${bit} is over 31`);\n }\n}\n\n/**\n * Stores a bit pattern to quickly test if an index is enabled / disabled.\n *\n * This class can store up to **32** different values in the range [0; 31].\n *\n * #### Usage\n *\n * ```js\n * const bitset = new BitSet();\n * bitset.enable(10); // Enable bit at index `10`.\n * console.log(bitset.enabled(10)); // Prints 'true'.\n * ```\n *\n * #### TypeScript\n *\n * The set can be typed over an enum:\n *\n * ```ts\n * enum Tag {\n * First = 0,\n * Second = 1,\n * }\n *\n * const bitset = new BitSet();\n * bitset.enable(Tag.First);\n * ```\n */\nexport class BitSet {\n /** Enabled bits. @hidden */\n private _bits: number = 0;\n\n /**\n * Enable the bit at the given index.\n *\n * @param bits A spread of all the bits to enable.\n * @returns Reference to self (for method chaining).\n */\n enable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits |= (1 << bit) >>> 0;\n }\n return this;\n }\n\n /**\n * Enable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n enableAll() {\n this._bits = ~0;\n return this;\n }\n\n /**\n * Disable the bit at the given index.\n *\n * @param bits A spread of all the bits to disable.\n * @returns Reference to self (for method chaining).\n */\n disable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits &= ~((1 << bit) >>> 0);\n }\n return this;\n }\n\n /**\n * Disable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n disableAll() {\n this._bits = 0;\n return this;\n }\n\n /**\n * Checker whether the bit is set or not.\n *\n * @param bit The bit to check.\n * @returns `true` if it's enabled, `false` otherwise.\n */\n enabled(bit: T) {\n return !!(this._bits & ((1 << bit) >>> 0));\n }\n}\n", "import {BitSet} from './bitset.js';\nimport {Emitter} from './event.js';\n\n/**\n * Logging levels supported by {@link Logger}.\n */\nexport enum LogLevel {\n Info = 0,\n Warn = 1,\n Error = 2,\n}\n\n/**\n * Logging wrapper.\n *\n * This is used to allow turning on/off:\n * - `console.log`\n * - `console.warn`\n * - `console.error`\n *\n * #### Usage\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * // Create a logger with only the \"error\" and \"warn\" levels activated\n * const logger = new Logger(LogLevel.Warn, LogLevel.Error);\n *\n * // Only the \"error\" and \"warn\" levels are activated,\n * // this message isn't logged.\n * logger.info(LogTag.Component, 'This message is shushed')\n *\n * // Prints 'Hello Error!'\n * logger.error(LogTag.Component, 'Hello Error!');\n *\n * // Prints 'Hello Warning!'\n * logger.warn(LogTag.Component, 'Hello Warning!');\n * ```\n *\n * The log levels can be changed at anytime using the {@link BitSet} api:\n *\n * ```js\n * // Enable the \"info\" level\n * logger.levels.enable(LogLevel.Info);\n * * // Disable the \"warn\" level\n * logger.levels.disable(LogLevel.Warn);\n * ```\n *\n * #### Tags\n *\n * In addition, the logger supports tagging messages:\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * const logger = new Logger(LogLevel.Info);\n *\n * logger.tags.disableAll();\n *\n * // All tags are off, this message isn't logged\n * logger.info(LogTag.Component, 'This message is shushed');\n *\n * logger.tags.enable(LogTag.Component);\n * logger.info(LogTag.Component, 'Hello World!') // Prints 'Hello World!'\n * ```\n *\n * The tagging system gives another layer of control to enable / disable\n * some specific logs.\n */\nexport class Logger {\n /**\n * Bitset of enabled levels.\n *\n * @hidden\n */\n levels: BitSet = new BitSet();\n\n /**\n * Bitset of enabled tags.\n *\n * @hidden\n */\n tags: BitSet = new BitSet().enableAll();\n\n /**\n * Notified when an `info`, `warn`, or `error` message is logged.\n *\n * @note The emitter is always notified, even if the logger levels\n * and tags are disabled.\n *\n * @note The message is passed as an array, similar to `console.log`.\n *\n * #### Usage\n *\n * ```js\n * import {LogLevel} from '@wonderlandengine/api';\n *\n * engine.logger.onLog.add((level, messages, tag) => {\n * // Only process error messages\n * if (level !== LogLevel.Error) return;\n *\n * // Only process engine logs\n * if (tag !== LogTag.Engine) return;\n *\n * const str = messages.join(' ');\n * sendAnalytics(str);\n * });\n * ```\n */\n onLog: Emitter<[LogLevel, unknown[], number]> = new Emitter();\n\n /**\n * Create a new logger instance.\n *\n * @param levels Default set of levels to enable.\n */\n constructor(...levels: LogLevel[]) {\n this.levels.enable(...levels);\n }\n\n /**\n * Log the message(s) using `console.log`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n info(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Info) && this.tags.enabled(tag)) {\n console.log(...msg);\n }\n this.onLog.notify(LogLevel.Info, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.warn`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n warn(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Warn) && this.tags.enabled(tag)) {\n console.warn(...msg);\n }\n this.onLog.notify(LogLevel.Warn, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.error`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n error(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Error) && this.tags.enabled(tag)) {\n console.error(...msg);\n }\n this.onLog.notify(LogLevel.Error, msg, tag);\n return this;\n }\n}\n", "import {Version} from './version.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ComponentProperty, Type, defaultPropertyCloner} from './property.js';\nimport {CBORReader, CBORType, getType} from './utils/cbor.js';\nimport {Logger} from './utils/logger.js';\nimport {\n inheritProperties,\n Component,\n ComponentConstructor,\n ComponentProto,\n BrokenComponent,\n AnimationComponent,\n LogTag,\n} from './wonderland.js';\nimport {ImageLike} from './types.js';\nimport {Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {ComponentPropertyDecoder, setupComponentClass} from './component.js';\n\n/**\n * Low-level wrapper to interact with the WebAssembly code.\n *\n * @hidden\n */\nexport class WASM {\n /**\n * Emscripten wasm field.\n *\n * @note This api is meant to be used internally.\n */\n readonly wasm: ArrayBuffer = null!;\n\n /**\n * Emscripten canvas.\n *\n * @note This api is meant to be used internally.\n */\n readonly canvas: HTMLCanvasElement = null!;\n\n /**\n * WebGPU device.\n *\n * @note This api is meant to be used internally.\n */\n readonly preinitializedWebGPUDevice: any = null;\n\n /**\n * Convert a WASM memory view to a JavaScript string.\n *\n * @param ptr Pointer start\n * @param ptrEnd Pointer end\n * @returns JavaScript string\n */\n UTF8ViewToString: (ptr: number, ptrEnd: number) => string;\n\n /** Logger instance. */\n readonly _log: Logger = new Logger();\n\n /** If `true`, logs will not spam the console on error. */\n _deactivate_component_on_error: boolean = false;\n\n /** Temporary memory pointer. */\n _tempMem: number = null!;\n /** Temporary memory size. */\n _tempMemSize: number = 0;\n /** Temporary float memory view. */\n _tempMemFloat: Float32Array = null!;\n /** Temporary int memory view. */\n _tempMemInt: Int32Array = null!;\n /** Temporary uint8 memory view. */\n _tempMemUint8: Uint8Array = null!;\n /** Temporary uint32 memory view. */\n _tempMemUint32: Uint32Array = null!;\n /** Temporary uint16 memory view. */\n _tempMemUint16: Uint16Array = null!;\n\n /** Loading screen .bin file data */\n _loadingScreen: ArrayBuffer | null = null;\n\n /** List of callbacks triggered when the scene is loaded. */\n readonly _sceneLoadedCallback: any[] = [];\n\n /** Image cache. */\n _images: (ImageLike | null)[] = [null];\n\n /** Component instances. */\n private _components: Component[] = null!;\n\n /** Component Type info. */\n _componentTypes: ComponentConstructor[] = [];\n\n /** Index per component type name. */\n _componentTypeIndices: Record = {};\n\n /** Wonderland engine instance. */\n private _engine: WonderlandEngine = null!;\n\n /**\n * `true` if this runtime is using physx.\n *\n * @note This api is meant to be used internally.\n */\n private _withPhysX: boolean = false;\n\n /** Decoder for UTF8 `ArrayBuffer` to JavaScript string. */\n private readonly _utf8Decoder = new TextDecoder('utf8');\n\n /**\n * Registration index of {@link BrokenComponent}.\n *\n * This is used to return dummy instances when a component\n * isn't registered.\n *\n * @hidden\n */\n private readonly _brokenComponentIndex = 0;\n\n /**\n * Create a new instance of the WebAssembly <> API bridge.\n *\n * @param threads `true` if the runtime used has threads support\n */\n constructor(threads: boolean) {\n if (threads) {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.slice(s, e));\n };\n } else {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.subarray(s, e));\n };\n }\n\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n /** We cannot use _tempMem because we are meant to be called before it's initialized */\n const tempBuf = this._malloc(4 * 2);\n const tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4);\n this._wl_runtime_version(tempBuf);\n const version = {\n major: tempVersion[0],\n minor: tempVersion[1],\n patch: tempVersion[2],\n rc: tempVersion[3],\n };\n this._free(tempBuf);\n return version;\n }\n\n /**\n * Reset the cache of the library.\n *\n * @note Should only be called when tearing down the runtime.\n */\n reset() {\n /* Called first to perform cleanup. */\n this._wl_reset();\n\n this._components = null!;\n this._images.length = 1;\n this.allocateTempMemory(1024);\n\n this._componentTypes = [];\n this._componentTypeIndices = {};\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param ctor A string representing the component typename (e.g., `'cursor-component'`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(type: string) {\n return type in this._componentTypeIndices;\n }\n\n /**\n * Register a legacy component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param typeName The name of the component.\n * @param params An object containing the parameters (properties).\n * @param object The object's prototype.\n * @returns The registration index\n */\n _registerComponentLegacy(\n typeName: string,\n params: Record,\n object: ComponentProto\n ) {\n const ctor = class CustomComponent extends Component {};\n ctor.TypeName = typeName;\n ctor.Properties = params;\n Object.assign(ctor.prototype, object);\n return this._registerComponent(ctor);\n }\n\n /**\n * Register a class component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param ctor The class to register.\n * @returns The registration index.\n */\n _registerComponent(ctor: ComponentConstructor) {\n if (!ctor.TypeName) throw new Error('no name provided for component.');\n if (!ctor.prototype._triggerInit) {\n throw new Error(\n `registerComponent(): Component ${ctor.TypeName} must extend Component`\n );\n }\n\n setupComponentClass(ctor);\n\n const typeIndex =\n ctor.TypeName in this._componentTypeIndices\n ? this._componentTypeIndices[ctor.TypeName]\n : this._componentTypes.length;\n this._componentTypes[typeIndex] = ctor;\n this._componentTypeIndices[ctor.TypeName] = typeIndex;\n\n if (ctor === BrokenComponent) return typeIndex;\n\n this._log.info(\n LogTag.Engine,\n 'Registered component',\n ctor.TypeName,\n `(class ${ctor.name})`,\n 'with index',\n typeIndex\n );\n\n if (ctor.onRegister) ctor.onRegister(this._engine);\n\n return typeIndex;\n }\n\n /**\n * Allocate the requested amount of temporary memory\n * in this WASM instance.\n *\n * @param size The number of bytes to allocate\n */\n allocateTempMemory(size: number) {\n this._log.info(LogTag.Engine, 'Allocating temp mem:', size);\n this._tempMemSize = size;\n if (this._tempMem) this._free(this._tempMem);\n this._tempMem = this._malloc(this._tempMemSize);\n this.updateTempMemory();\n }\n\n /**\n * @todo: Delete this and only keep `allocateTempMemory`\n *\n * @param size Number of bytes to allocate\n */\n requireTempMem(size: number) {\n if (this._tempMemSize >= size) return;\n /* Grow in 1kb increments */\n this.allocateTempMemory(Math.ceil(size / 1024) * 1024);\n }\n\n /**\n * Update the temporary memory views. This must be called whenever the\n * temporary memory address changes.\n *\n * @note This api is meant to be used internally.\n */\n updateTempMemory() {\n this._tempMemFloat = new Float32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemInt = new Int32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint32 = new Uint32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint16 = new Uint16Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 1\n );\n this._tempMemUint8 = new Uint8Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize\n );\n }\n\n /**\n * Returns a uint8 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU8(count: number): Uint8Array {\n this.requireTempMem(count);\n return this._tempMemUint8;\n }\n\n /**\n * Returns a uint16 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU16(count: number): Uint16Array {\n this.requireTempMem(count * 2);\n return this._tempMemUint16;\n }\n\n /**\n * Returns a uint32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferU32(count: number): Uint32Array {\n this.requireTempMem(count * 4);\n return this._tempMemUint32;\n }\n\n /**\n * Returns a int32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferI32(count: number): Int32Array {\n this.requireTempMem(count * 4);\n return this._tempMemInt;\n }\n\n /**\n * Returns a float32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferF32(count: number): Float32Array {\n this.requireTempMem(count * 4);\n return this._tempMemFloat;\n }\n\n /**\n * Copy the string into temporary WASM memory and retrieve the pointer.\n *\n * @note This method will compute the strlen and append a `\\0`.\n *\n * @note The result should be used **directly** otherwise it might get\n * overridden by any next call modifying the temporary memory.\n *\n * @param str The string to write to temporary memory\n * @param byteOffset The starting byte offset in the temporary memory at which\n * the string should be written. This is useful when using multiple temporaries.\n * @return The temporary pointer onto the WASM memory\n */\n tempUTF8(str: string, byteOffset = 0): number {\n const strLen = this.lengthBytesUTF8(str) + 1;\n this.requireTempMem(strLen + byteOffset);\n const ptr = this._tempMem + byteOffset;\n this.stringToUTF8(str, ptr, strLen);\n return ptr;\n }\n\n /**\n * Copy the buffer into the WASM heap.\n *\n * @note The returned pointer must be freed.\n *\n * @param buffer The buffer to copy into the heap.\n * @returns An allocated pointer, that must be free after use.\n */\n copyBufferToHeap(buffer: ArrayBuffer): number {\n const size = buffer.byteLength;\n const ptr = this._malloc(size);\n this.HEAPU8.set(new Uint8Array(buffer), ptr);\n return ptr;\n }\n\n /**\n * Returns `true` if the runtime supports physx or not.\n */\n get withPhysX(): boolean {\n return this._withPhysX;\n }\n\n /**\n * Set the engine instance holding this bridge.\n *\n * @note This api is meant to be used internally.\n *\n * @param engine The engine instance.\n */\n protected _setEngine(engine: WonderlandEngine): void {\n this._engine = engine;\n }\n\n /* WebAssembly to JS call bridge. */\n\n protected _wljs_reload(filenamePtr: number) {\n const filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null;\n this._engine._reloadRequest(filename);\n }\n protected _wljs_init(withPhysX: boolean) {\n this._withPhysX = withPhysX;\n\n /* Target memory for JS API functions that return arrays */\n this.allocateTempMemory(1024);\n }\n protected _wljs_scene_switch(index: number) {\n const scene = this._engine._scenes[index] as Scene | null;\n /* Scene can be null during testing with `engine.reset()` */\n this._components = scene?._jsComponents ?? null!;\n }\n protected _wljs_destroy_image(index: number) {\n const img = this._images[index];\n if (!img) return;\n\n this._images[index] = null;\n\n if ((img as HTMLImageElement).src !== undefined) {\n (img as HTMLImageElement).src = '';\n }\n if ((img as HTMLImageElement).onload !== undefined) {\n (img as HTMLImageElement).onload = null;\n }\n if ((img as HTMLImageElement).onerror !== undefined) {\n (img as HTMLImageElement).onerror = null;\n }\n }\n protected _wljs_objects_markDestroyed(\n sceneIndex: number,\n idsPtr: number,\n count: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n const start = idsPtr >>> 1;\n for (let i = 0; i < count; ++i) {\n const id = this.HEAPU16[start + i];\n scene._destroyObject(id);\n }\n }\n protected _wljs_scene_initialize(\n sceneIndex: number,\n idsPtr: number,\n idsEnd: number,\n paramDataPtr: number,\n paramDataEndPtr: number,\n offsetsPtr: number,\n offsetsEndPtr: number\n ) {\n const cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr);\n const offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2);\n const ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1);\n\n const engine = this._engine;\n const scene = engine._scenes[sceneIndex] as Scene;\n const components = scene._jsComponents;\n\n const cbor = new CBORReader(cborEncoded);\n\n let componentsCount = 0;\n {\n const typeInfo = cbor.readTypeInfo();\n if (getType(typeInfo) !== CBORType.Array) {\n this._log.error(LogTag.Engine, 'Parameters data must be an array');\n return;\n }\n componentsCount = cbor.readArrayLength(typeInfo) as number;\n }\n if (componentsCount !== ids.length) {\n this._log.error(\n LogTag.Engine,\n `Parameters set for ${componentsCount} components, but expected ${ids.length}`\n );\n return;\n }\n\n const decoder = new ComponentPropertyDecoder(scene, offsets);\n for (let i = 0; i < componentsCount; ++i) {\n const id = Component._pack(sceneIndex, ids[i]);\n const index = this._wl_get_js_component_index_for_id(id);\n const component = components[index];\n decoder.decode(cbor, component);\n }\n }\n\n protected _wljs_set_component_param_translation(\n scene: number,\n component: number,\n param: number,\n valuePtr: number,\n valueEndPtr: number\n ) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const comp = components[component];\n\n const value = this.UTF8ViewToString(valuePtr, valueEndPtr);\n const ctor = comp.constructor as ComponentConstructor;\n const paramName = ctor._propertyOrder[param];\n (comp as Record)[paramName] = value;\n }\n\n protected _wljs_get_component_type_index(namePtr: number, nameEndPtr: number) {\n const typename = this.UTF8ViewToString(namePtr, nameEndPtr);\n const index = this._componentTypeIndices[typename];\n if (index === undefined) {\n return this._brokenComponentIndex;\n }\n return index;\n }\n protected _wljs_component_create(\n sceneIndex: number,\n index: number,\n id: number,\n type: number,\n object: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n scene._components.createJs(index, id, type, object);\n }\n protected _wljs_component_init(scene: number, component: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const c = components[component];\n c._triggerInit();\n }\n protected _wljs_component_update(component: number, dt: number) {\n const c = this._components[component];\n c._triggerUpdate(dt);\n }\n protected _wljs_component_onActivate(component: number) {\n const c = this._components[component];\n c._triggerOnActivate();\n }\n protected _wljs_component_onDeactivate(component: number) {\n const c = this._components[component];\n c._triggerOnDeactivate();\n }\n protected _wljs_component_markDestroyed(\n sceneIndex: number,\n manager: number,\n componentId: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Prefab;\n scene._destroyComponent(manager, componentId);\n }\n protected _wljs_swap(scene: number, a: number, b: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const componentA = components[a];\n components[a] = components[b];\n components[b] = componentA;\n }\n protected _wljs_copy(\n srcSceneIndex: number,\n srcIndex: number,\n dstSceneIndex: number,\n dstIndex: number,\n offsetsPtr: number,\n copyInfoPtr: number\n ) {\n const srcScene = this._engine._scenes[srcSceneIndex] as Scene;\n const dstScene = this._engine._scenes[dstSceneIndex] as Scene;\n const destComp = dstScene._jsComponents[dstIndex];\n const srcComp = srcScene._jsComponents[srcIndex];\n destComp._copy(srcComp, offsetsPtr, copyInfoPtr);\n }\n /**\n * Forward an animation event to a corresponding\n * {@link AnimationComponent}\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link AnimationComponent.onEvent} instead.\n *\n * @param componentId Component id in the manager\n * @param namePtr Pointer to UTF8 event name\n * @param nameEndPtr Pointer to end of UTF8 event name\n */\n protected _wljs_trigger_animationEvent(\n componentId: number,\n namePtr: number,\n nameEndPtr: number\n ) {\n const scene = this._engine.scene;\n const comp = scene._components.wrapAnimation(componentId);\n const nameStr = this.UTF8ViewToString(namePtr, nameEndPtr);\n comp.onEvent.notify(nameStr);\n }\n}\n\n/* Extends the WASM class with the WebAssembly typings */\n\nexport interface WASM {\n HEAP8: Int8Array;\n HEAPU8: Uint8Array;\n HEAPU16: Uint16Array;\n HEAP16: Int16Array;\n HEAPU32: Uint32Array;\n HEAP32: Int32Array;\n HEAPF32: Float32Array;\n HEAPF64: Float64Array;\n\n GL: {\n framebuffers: WebGLFramebuffer[];\n };\n\n assert: (condition: boolean, msg?: string) => void;\n _free: (ptr: number) => void;\n _malloc: (size: number) => number;\n lengthBytesUTF8: (str: string) => number;\n stringToUTF8: (str: string, outPtr: number, len: number) => void;\n UTF8ToString: (ptr: number) => string;\n addFunction: (func: Function, sig: string) => number;\n removeFunction: (ptr: number) => void;\n\n _wl_runtime_version: (out: number) => void;\n _wl_set_error_callback: (cbPtr: number) => void;\n _wl_application_create: () => void;\n _wl_application_init: (withRenderer: boolean) => boolean;\n _wl_application_start: () => void;\n _wl_application_redraw: () => void;\n _wl_application_resize: (width: number, height: number) => void;\n\n _wl_nextUpdate: (delta: number) => void;\n _wl_nextFrame: (delta: number) => void;\n _wl_reset: () => void;\n _wl_reset_context: () => void;\n _wl_xr_init: (viewCount: number, useLayers: boolean) => void;\n _wl_xr_focus: () => void;\n _wl_xr_blur: () => void;\n _wl_xr_hide: () => void;\n _wl_xr_exit: () => void;\n\n _wl_deactivate_activeScene: () => void;\n\n _wl_renderer_set_mesh_layout: (layout: number) => void;\n _wl_renderer_streaming_idle: () => number;\n _wl_renderer_isReverseZEnabled: () => number;\n\n _wl_load_main_scene: (ptr: number, size: number, url: number) => number;\n _wl_get_images: (out: number, max: number) => number;\n _wl_get_material_definition_count: () => number;\n _wl_get_material_definition_index: (ptr: number) => number;\n\n _wl_scene_get_active: (root: number) => number;\n _wl_scene_create: (ptr: number, size: number, url: number) => number;\n _wl_scene_create_chunked_start: (url: number) => number;\n _wl_scene_create_chunked_buffer_size: (index: number) => number;\n _wl_scene_create_chunked_next: (\n index: number,\n ptr: number,\n size: number,\n readSizePtr: number,\n requiredSizePtr: number\n ) => boolean;\n _wl_scene_create_chunked_abort: (index: number) => void;\n _wl_scene_create_chunked_end_prefab: (index: number) => number;\n _wl_scene_create_chunked_end_main: (index: number) => void;\n _wl_scene_create_chunked_end_queued: (\n index: number,\n dependentSceneIndex: number\n ) => void;\n _wl_scene_create_empty: () => number;\n _wl_scene_initialize: (index: number) => number;\n _wl_scene_destroy: (index: number) => void;\n _wl_scene_instantiate: (src: number, dst: number) => number;\n _wl_scene_activate: (index: number) => void;\n _wl_scene_queued_bin_count: (index: number) => number;\n _wl_scene_queued_bin_path: (sceneIndex: number, index: number) => number;\n _wl_scene_clear_queued_bin_list: (sceneIndex: number) => void;\n _wl_scene_load_queued_bin: (index: number, ptr: number, size: number) => boolean;\n _wl_scene_activatable: (index: number) => boolean;\n _wl_scene_active: (index: number) => boolean;\n _wl_scene_get_baseURL: (index: number) => number;\n _wl_scene_get_filename: (index: number) => number;\n _wl_scene_get_componentsBundle: (index: number) => number;\n\n _wl_scene_get_component_manager_count: (scene: number) => number;\n _wl_scene_get_component_manager_index: (scene: number, ptr: number) => number;\n\n _wl_scene_get_mainView: (scene: number) => number;\n _wl_scene_get_leftView: (scene: number) => number;\n _wl_scene_get_rightView: (scene: number) => number;\n _wl_scene_get_components: (\n scene: number,\n typeIndex: number,\n subTypeIndex: number,\n active: boolean,\n offset: number,\n count: number,\n ptr: number\n ) => number;\n _wl_scene_get_component: (scene: number, typeIndex: number, index: number) => number;\n\n _wl_scene_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n maxDistance: number,\n outPtr: number\n ) => void;\n _wl_scene_add_object: (scene: number, parentId: number) => number;\n _wl_scene_add_objects: (\n scene: number,\n parentId: number,\n count: number,\n componentCountHint: number,\n ptr: number,\n size: number\n ) => number;\n _wl_scene_reserve_objects: (\n scene: number,\n objectCount: number,\n _tempMem: number\n ) => void;\n _wl_scene_set_sky_material: (index: number, id: number) => void;\n _wl_scene_get_sky_material: (index: number) => number;\n _wl_scene_environment_set_intensity: (index: number, intensity: number) => void;\n _wl_scene_environment_get_intensity: (index: number) => number;\n _wl_scene_environment_set_tint: (\n index: number,\n r: number,\n g: number,\n b: number\n ) => void;\n _wl_scene_environment_get_tint: (index: number, ptr: number) => void;\n _wl_scene_environment_set_coefficients: (\n index: number,\n ptr: number,\n count: number\n ) => void;\n _wl_scene_environment_get_coefficients: (index: number, ptr: number) => void;\n _wl_scene_set_clearColor: (r: number, g: number, b: number, a: number) => void;\n _wl_scene_enableColorClear: (b: boolean) => void;\n\n _wl_set_loading_screen_progress: (ratio: number) => void;\n\n _wl_glTF_scene_create: (extensions: boolean, ptr: number, ptrEnd: number) => number;\n _wl_glTF_scene_get_extensions: (index: number) => number;\n _wl_glTF_scene_extensions_gltfIndex_to_id: (\n gltfScene: number,\n destScene: number,\n objectIndex: number,\n gltfIndex: number\n ) => number;\n\n _wl_component_get_object: (manager: number, id: number) => number;\n _wl_component_setActive: (manager: number, id: number, active: boolean) => void;\n _wl_component_isActive: (manager: number, id: number) => number;\n _wl_component_remove: (manager: number, id: number) => void;\n\n _wl_collision_component_get_collider: (id: number) => number;\n _wl_collision_component_set_collider: (id: number, collider: number) => void;\n _wl_collision_component_get_extents: (id: number) => number;\n _wl_collision_component_get_group: (id: number) => number;\n _wl_collision_component_set_group: (id: number, group: number) => void;\n _wl_collision_component_query_overlaps: (\n id: number,\n outPtr: number,\n outCount: number\n ) => number;\n _wl_text_component_get_horizontal_alignment: (id: number) => number;\n _wl_text_component_set_horizontal_alignment: (id: number, alignment: number) => void;\n _wl_text_component_get_vertical_alignment: (id: number) => number;\n _wl_text_component_set_vertical_alignment: (\n id: number,\n verticalAlignment: number\n ) => void;\n _wl_text_component_get_justified: (id: number) => number;\n _wl_text_component_set_justified: (id: number, justified: boolean) => void;\n _wl_text_component_get_character_spacing: (id: number) => number;\n _wl_text_component_set_character_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_line_spacing: (id: number) => number;\n _wl_text_component_set_line_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_effect: (id: number) => number;\n _wl_text_component_get_effectOffset: (id: number, outPtr: number) => void;\n _wl_text_component_set_effect: (id: number, effect: number) => void;\n _wl_text_component_set_effectOffset: (id: number, offsetPtr: number) => void;\n _wl_text_component_get_wrapMode: (id: number) => number;\n _wl_text_component_set_wrapMode: (id: number, mode: number) => void;\n _wl_text_component_get_wrapWidth: (id: number) => number;\n _wl_text_component_set_wrapWidth: (id: number, width: number) => void;\n _wl_text_component_get_text: (id: number) => number;\n _wl_text_component_set_text: (id: number, ptr: number) => void;\n _wl_text_component_set_material: (id: number, materialId: number) => void;\n _wl_text_component_get_material: (id: number) => number;\n _wl_text_component_get_boundingBox: (\n id: number,\n textPtr: number,\n resultPtr: number\n ) => number;\n _wl_view_component_get_projectionType: (id: number) => number;\n _wl_view_component_set_projectionType: (id: number, type: number) => void;\n _wl_view_component_get_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_set_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_remapProjectionMatrix: (\n id: number,\n inverseDepth: boolean,\n depthZeroToOne: boolean\n ) => void;\n _wl_view_component_generate_projectionMatrix: (id: number) => void;\n _wl_view_component_get_near: (id: number) => number;\n _wl_view_component_set_near: (id: number, near: number) => void;\n _wl_view_component_get_far: (id: number) => number;\n _wl_view_component_set_far: (id: number, far: number) => void;\n _wl_view_component_get_fov: (id: number) => number;\n _wl_view_component_set_fov: (id: number, fov: number) => void;\n _wl_view_component_get_viewport: (id: number) => number;\n _wl_view_component_set_viewport: (\n id: number,\n x: number,\n y: number,\n width: number,\n height: number\n ) => void;\n _wl_view_component_get_extent: (id: number) => number;\n _wl_view_component_set_extent: (id: number, fov: number) => void;\n _wl_view_component_set_externalFramebuffer: (id: number, fb: number) => void;\n _wl_input_component_get_type: (id: number) => number;\n _wl_input_component_set_type: (id: number, type: number) => void;\n _wl_input_set_transformation: (sceneIndex: number, type: number, ptr: number) => void;\n _wl_light_component_get_color: (id: number) => number;\n _wl_light_component_get_type: (id: number) => number;\n _wl_light_component_set_type: (id: number, type: number) => void;\n _wl_light_component_get_intensity: (id: number) => number;\n _wl_light_component_set_intensity: (id: number, intensity: number) => void;\n _wl_light_component_get_outerAngle: (id: number) => number;\n _wl_light_component_set_outerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_innerAngle: (id: number) => number;\n _wl_light_component_set_innerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_shadows: (id: number) => number;\n _wl_light_component_set_shadows: (id: number, shadows: boolean) => void;\n _wl_light_component_get_shadowRange: (id: number) => number;\n _wl_light_component_set_shadowRange: (id: number, range: number) => void;\n _wl_light_component_get_shadowBias: (id: number) => number;\n _wl_light_component_set_shadowBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowNormalBias: (id: number) => number;\n _wl_light_component_set_shadowNormalBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowTexelSize: (id: number) => number;\n _wl_light_component_set_shadowTexelSize: (id: number, size: number) => void;\n _wl_light_component_get_cascadeCount: (id: number) => number;\n _wl_light_component_set_cascadeCount: (id: number, count: number) => void;\n _wl_animation_component_get_animation: (id: number) => number;\n _wl_animation_component_set_animation: (id: number, animId: number) => void;\n _wl_animation_component_get_playCount: (id: number) => number;\n _wl_animation_component_set_playCount: (id: number, count: number) => void;\n _wl_animation_component_get_speed: (id: number) => number;\n _wl_animation_component_set_speed: (id: number, speed: number) => void;\n _wl_animation_component_play: (id: number) => void;\n _wl_animation_component_stop: (id: number) => void;\n _wl_animation_component_pause: (id: number) => void;\n _wl_animation_component_state: (id: number) => number;\n _wl_animation_component_getGraphParamValue: (\n id: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_animation_component_setGraphParamValue: (\n id: number,\n paramIndex: number,\n valuePtr: number\n ) => void;\n _wl_animation_component_get_rootMotionMode: (id: number) => number;\n _wl_animation_component_set_rootMotionMode: (id: number, value: number) => void;\n _wl_animation_component_get_rootMotion_translation: (\n id: number,\n outPtr: number\n ) => number;\n _wl_animation_component_get_rootMotion_rotation: (id: number, outPtr: number) => number;\n _wl_animation_component_getGraphParamIndex: (id: number, paramName: number) => number;\n _wl_animation_component_get_iteration: (id: number) => number;\n _wl_animation_component_get_position: (id: number) => number;\n _wl_animation_component_get_duration: (id: number) => number;\n _wl_mesh_component_get_material: (id: number) => number;\n _wl_mesh_component_set_material: (id: number, materialId: number) => void;\n _wl_mesh_component_get_mesh: (id: number) => number;\n _wl_mesh_component_set_mesh: (id: number, meshId: number) => void;\n _wl_mesh_component_get_skin: (id: number) => number;\n _wl_mesh_component_set_skin: (id: number, skinId: number) => void;\n _wl_mesh_component_get_morph_targets: (id: number) => number;\n _wl_mesh_component_set_morph_targets: (id: number, morphTargetSetId: number) => void;\n _wl_mesh_component_get_morph_target_weight: (id: number, index: number) => number;\n _wl_mesh_component_get_morph_target_weights: (id: number, ptr: number) => number;\n _wl_mesh_component_set_morph_target_weight: (\n id: number,\n index: number,\n weight: number\n ) => void;\n _wl_mesh_component_set_morph_target_weights: (\n id: number,\n ptr: number,\n count: number\n ) => void;\n _wl_particleEffect_component_get_particleEffect: (id: number) => number;\n _wl_particleEffect_component_set_particleEffect: (\n id: number,\n particleEffectId: number\n ) => void;\n _wl_physx_component_get_static: (id: number) => number;\n _wl_physx_component_set_static: (id: number, flag: boolean) => void;\n _wl_physx_component_get_kinematic: (id: number) => number;\n _wl_physx_component_set_kinematic: (id: number, kinematic: boolean) => void;\n _wl_physx_component_get_gravity: (id: number) => number;\n _wl_physx_component_set_gravity: (id: number, gravity: boolean) => void;\n _wl_physx_component_get_simulate: (id: number) => number;\n _wl_physx_component_set_simulate: (id: number, simulation: boolean) => void;\n _wl_physx_component_get_allowSimulation: (id: number) => number;\n _wl_physx_component_set_allowSimulation: (id: number, allowSimulation: boolean) => void;\n _wl_physx_component_get_allowQuery: (id: number) => number;\n _wl_physx_component_set_allowQuery: (id: number, allowQuery: boolean) => void;\n _wl_physx_component_get_trigger: (id: number) => number;\n _wl_physx_component_set_trigger: (id: number, trigger: boolean) => void;\n _wl_physx_component_get_shape: (id: number) => number;\n _wl_physx_component_set_shape: (id: number, shape: number) => void;\n _wl_physx_component_get_shape_data: (id: number) => number;\n _wl_physx_component_set_shape_data: (id: number, shapeIndex: number) => void;\n _wl_physx_component_get_extents: (id: number) => number;\n _wl_physx_component_get_staticFriction: (id: number) => number;\n _wl_physx_component_set_staticFriction: (id: number, value: number) => void;\n _wl_physx_component_get_dynamicFriction: (id: number) => number;\n _wl_physx_component_set_dynamicFriction: (id: number, value: number) => void;\n _wl_physx_component_get_bounciness: (id: number) => number;\n _wl_physx_component_set_bounciness: (id: number, value: number) => void;\n _wl_physx_component_get_linearDamping: (id: number) => number;\n _wl_physx_component_set_linearDamping: (id: number, value: number) => void;\n _wl_physx_component_get_angularDamping: (id: number) => number;\n _wl_physx_component_set_angularDamping: (id: number, value: number) => void;\n _wl_physx_component_get_linearVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_linearVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_angularVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_angularVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_groupsMask: (id: number) => number;\n _wl_physx_component_set_groupsMask: (id: number, flags: number) => void;\n _wl_physx_component_get_blocksMask: (id: number) => number;\n _wl_physx_component_set_blocksMask: (id: number, flags: number) => void;\n _wl_physx_component_get_linearLockAxis: (id: number) => number;\n _wl_physx_component_set_linearLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_angularLockAxis: (id: number) => number;\n _wl_physx_component_set_angularLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_mass: (id: number) => number;\n _wl_physx_component_set_mass: (id: number, value: number) => void;\n _wl_physx_component_get_offsetTranslation: (id: number, out: number) => void;\n _wl_physx_component_get_offsetTransform: (id: number) => number;\n _wl_physx_component_set_offsetTranslation: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_set_offsetRotation: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_physx_component_set_sleepOnActivate: (id: number, flag: boolean) => void;\n _wl_physx_component_get_sleepOnActivate: (id: number) => number;\n _wl_physx_component_set_massSpaceInertiaTensor: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_addForce: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean\n ) => void;\n _wl_physx_component_addForceAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean,\n posX: number,\n posY: number,\n posZ: number,\n local: boolean\n ) => void;\n _wl_physx_component_addTorque: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number\n ) => void;\n _wl_physx_component_addCallback: (id: number, otherId: number) => number;\n _wl_physx_component_removeCallback: (id: number, callbackId: number) => number;\n _wl_physx_update_global_pose: (object: number, component: number) => void;\n _wl_physx_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n outPtr: number,\n maxDistance: number\n ) => void;\n _wl_physx_set_collision_callback: (callback: number) => void;\n _wl_mesh_create: (\n indicesPtr: number,\n indicesSize: number,\n indexType: number,\n vertexCount: number,\n skinningType: number\n ) => number;\n _wl_mesh_get_vertexCount: (index: number) => number;\n _wl_mesh_get_indexData: (index: number, outPtr: number, count: number) => number;\n _wl_mesh_update: (index: number) => void;\n _wl_mesh_get_boundingSphere: (index: number, outPtr: number) => void;\n _wl_mesh_get_attribute: (index: number, attribute: number, outPtr: number) => void;\n _wl_mesh_destroy: (index: number) => void;\n _wl_mesh_get_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcStride: number,\n dstFormatSize: number,\n destPtr: number,\n dstSize: number\n ) => void;\n _wl_mesh_set_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcSize: number,\n dstFormatSize: number,\n destPtr: number,\n destStride: number\n ) => void;\n _wl_font_get_emHeight: (index: number) => number;\n _wl_font_get_capHeight: (index: number) => number;\n _wl_font_get_xHeight: (index: number) => number;\n _wl_font_get_outlineSize: (index: number) => number;\n _wl_material_create: (definitionIndex: number) => number;\n _wl_material_get_definition: (index: number) => number;\n _wl_material_definition_get_param_count: (index: number) => number;\n _wl_material_definition_get_param_name: (index: number, paramIndex: number) => number;\n _wl_material_definition_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_pipeline: (index: number) => number;\n _wl_material_clone: (index: number) => number;\n _wl_material_get_param_index: (index: number, namePtr: number) => number;\n _wl_material_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_param_value: (\n index: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_material_set_param_value_uint: (\n index: number,\n paramId: number,\n valueId: number\n ) => void;\n _wl_material_set_param_value_float: (\n index: number,\n paramId: number,\n ptr: number,\n count: number\n ) => void;\n _wl_image_create: (jsImage: number) => number;\n _wl_image_size: (index: number, out: number) => number;\n _wl_image_get_jsImage_index: (index: number) => number;\n _wl_image_compressed: (index: number) => number;\n _wl_image_originalScene: (index: number) => number;\n _wl_image_markDirty: (index: number) => void;\n _wl_image_markReady: (\n index: number,\n width: number,\n height: number,\n flipY: number\n ) => void;\n _wl_image_count: () => number;\n\n _wl_texture_create: (image: number) => number;\n _wl_texture_get_image_index: (index: number) => number;\n _wl_texture_destroy: (id: number) => void;\n\n _wl_renderer_updateImage: (\n imageIndex: number,\n jsImageIndex: number,\n srcWidth: number,\n srcHeight: number,\n xOffset: number,\n yOffset: number,\n flipY: boolean\n ) => number;\n\n _wl_animation_get_duration: (id: number) => number;\n _wl_animation_get_trackCount: (id: number) => number;\n _wl_animation_retargetToSkin: (id: number, targetId: number) => number;\n _wl_animation_retarget: (id: number, ptr: number) => number;\n _wl_particleEffect_clone: (index: number) => number;\n _wl_object_id: (scene: number, index: number) => number;\n _wl_object_index: (id: number) => number;\n _wl_object_name: (id: number) => number;\n _wl_object_set_name: (id: number, ptr: number) => void;\n _wl_object_remove: (id: number) => void;\n _wl_object_markedDestroyed: (id: number) => boolean;\n _wl_object_parent: (id: number) => number;\n _wl_object_get_children_count: (id: number) => number;\n _wl_object_get_children: (id: number, outPtr: number, count: number) => number;\n _wl_object_set_parent: (id: number, parentId: number) => void;\n _wl_object_clone: (id: number, parentId: number) => number;\n _wl_object_reset_scaling: (id: number) => void;\n _wl_object_reset_translation_rotation: (id: number) => void;\n _wl_object_reset_rotation: (id: number) => void;\n _wl_object_reset_translation: (id: number) => void;\n _wl_object_translate: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_obj: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_rotate_axis_angle: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_axis_angle_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_quat: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_rotate_quat_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_scale: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_local: (id: number) => number;\n _wl_object_get_translation_local: (id: number, outPtr: number) => void;\n _wl_object_set_translation_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_get_translation_world: (id: number, outPtr: number) => void;\n _wl_object_set_translation_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_world: (id: number) => number;\n _wl_object_trans_world_to_local: (id: number) => number;\n _wl_object_scaling_local: (id: number) => number;\n _wl_object_scaling_world: (id: number) => number;\n _wl_object_set_scaling_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_set_scaling_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_scaling_world_to_local: (id: number) => number;\n _wl_object_set_rotation_local: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_set_rotation_world: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_transformVectorWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointLocal: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseLocal: (id: number, ptr: number) => number;\n _wl_object_toWorldSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_toObjectSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_lookAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n upX: number,\n upY: number,\n upZ: number\n ) => void;\n _wl_object_set_dirty: (id: number) => void;\n _wl_get_js_component_index: (id: number, outPtr: number, count: number) => number;\n _wl_get_js_component_index_for_id: (id: number) => number;\n _wl_get_component_id: (id: number, managerId: number, index: number) => number;\n _wl_object_get_components: (id: number, outPtr: number, count: number) => number;\n _wl_object_get_component_types: (id: number, outPtr: number, count: number) => void;\n _wl_object_add_js_component: (id: number, typeId: number) => number;\n _wl_object_add_component: (id: number, typeId: number) => number;\n _wl_object_is_changed: (id: number) => number;\n _wl_object_findByName: (\n obj: number,\n name: number,\n indexPtr: number,\n childPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_object_findByNameRecursive: (\n obj: number,\n name: number,\n indexPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_component_manager_name: (scene: number, id: number) => number;\n _wl_skin_get_joint_count: (id: number) => number;\n _wl_skin_joint_ids: (id: number) => number;\n _wl_skin_inverse_bind_transforms: (id: number) => number;\n _wl_skin_inverse_bind_scalings: (id: number) => number;\n _wl_morph_targets_get_target_count: (id: number) => number;\n _wl_morph_targets_get_target_name: (id: number, target: number) => number;\n _wl_morph_targets_get_target_index: (id: number, namePtr: number) => number;\n _wl_morph_target_weights_get_weight: (id: number, target: number) => number;\n _wl_morph_target_weights_set_weight: (\n id: number,\n target: number,\n weight: number\n ) => void;\n _wl_math_cubicHermite: (\n a: number,\n b: number,\n c: number,\n d: number,\n f: number,\n e: number,\n isQuat: boolean\n ) => void;\n _wl_i18n_setLanguage: (ptr: number) => void;\n _wl_i18n_currentLanguage: () => number;\n _wl_i18n_currentLanguageIndex: () => number;\n _wl_i18n_translate: (ptr: number) => number;\n _wl_i18n_languageCount: () => number;\n _wl_i18n_languageIndex: (ptr: number) => number;\n _wl_i18n_languageCode: (index: number) => number;\n _wl_i18n_languageName: (index: number) => number;\n _wl_i18n_languageFile: (index: number) => number;\n}\n\n/*\n * Api <> Runtime compatibility.\n *\n * Some features exposed in the API are only available from a specific\n * runtime version.\n *\n * Every added feature must throw by default. If the runtime loaded\n * has the specific feature, the method will be overwritten by Emscripten\n * upon loading.\n */\n\n/**\n * Throwing function used for features added in a patch version.\n *\n * #### Usage\n *\n * ```ts\n * const requireRuntime1_1_1 = throwInvalidRuntime('1.1.1');\n * WASM.prototype._wl_new_function = requireRuntime1_1_1;\n * ```\n *\n * @param version The version in which the feature was added.\n * @returns A function that will throw when called.\n */\nfunction throwInvalidRuntime(version: string) {\n return function () {\n throw new Error(\n `Feature added in version ${version}.` +\n `\\n\\t\u2192 Please use a Wonderland Engine editor version >= ${version}`\n );\n };\n}\n", "import {threads} from 'wasm-feature-detect';\nimport {WonderlandEngine} from './engine.js';\nimport {XROfferSessionOptions} from './webxr.js';\nimport {LogLevel} from './utils/logger.js';\nimport {WASM} from './wasm.js';\n\nimport {getBaseUrl} from './utils/fetch.js';\n\nexport * from './utils/index.js';\nexport * from './decorators.js';\nexport {NativeComponents} from './component.js';\nexport * from './wonderland.js';\nexport * from './engine.js';\nexport * from './webxr.js';\nexport * from './property.js';\nexport * from './prefab.js';\nexport * from './scene.js';\nexport * from './scene-gltf.js';\nexport * from './resources/resource.js';\nexport * from './resources/material-manager.js';\nexport * from './resources/mesh-manager.js';\nexport {TextureManager} from './resources/texture-manager.js';\nexport * from './types.js';\nexport * from './version.js';\nexport * from './wasm.js';\n\n/** Relative default path for the loading screen. */\nconst LOADING_SCREEN_PATH = 'WonderlandRuntime-LoadingScreen.bin';\n\nfunction loadScript(scriptURL: string): Promise {\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n const node = document.body.appendChild(s);\n s.onload = () => {\n document.body.removeChild(node);\n resolve();\n };\n s.onerror = (e) => {\n document.body.removeChild(node);\n reject(e);\n };\n s.src = scriptURL;\n });\n}\n\n/**\n * Checks for support of WebAssembly features.\n *\n * @returns An object containing booleans for supported features.\n */\nasync function detectFeatures(): Promise<{\n threadsSupported: boolean;\n}> {\n let threadsSupported = await threads();\n if (threadsSupported) {\n if (self.crossOriginIsolated) {\n console.log('WASM Threads is supported');\n } else {\n console.warn(\n 'WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.'\n );\n }\n } else {\n console.warn('WASM Threads is not supported');\n }\n\n threadsSupported = threadsSupported && self.crossOriginIsolated;\n return {\n threadsSupported,\n };\n}\n\n/**\n * Options to forward to {@link loadRuntime}\n */\nexport interface LoadRuntimeOptions {\n /**\n * @deprecated Ignored, SIMD in the runtime is always enabled as it's supported on\n * all modern browsers.\n */\n simd: boolean;\n /**\n * If `true`, forces the runtime to load the threads-compatible version.\n * If `undefined`, performs browser feature detection to check whether threads are supported or not.\n */\n threads: boolean;\n /**\n * If `true`, forces the runtime to load the webgpu-compatible version.\n */\n webgpu: boolean;\n /**\n * If `true`, forces the runtime to load a physx-compatible version.\n *\n * **Note**: If your scene uses physx, you **must** enable this option.\n */\n physx: boolean;\n /**\n * If `true`, forces the runtime to load a loader-compatible version.\n *\n * This option allows to load gltf data at runtime.\n */\n loader: boolean;\n\n /**\n * Whether to instantiate the runtime with a renderer.\n *\n * Disabling this is mostly meant for testing purposes (increased speed).\n *\n * @hidden\n */\n renderer: boolean;\n\n /**\n * Path to the loading screen. If `undefined`, defaults to 'WonderlandRuntime-LoadingScreen.bin'.\n * Beware that these are special .bin files signed by Wonderland. Customizing\n * requires an enterprise license, please reach out for more information.\n */\n loadingScreen: string;\n\n /**\n * Default framebuffer scale factor. This can later be changed using\n * {@link WonderlandEngine.xrFramebufferScaleFactor}\n */\n xrFramebufferScaleFactor: number;\n\n /**\n * Whether to advertise AR/VR session support to the browser.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * If `undefined`, no XR session is automatically offered to the browser.\n *\n * @since 1.1.5\n */\n xrOfferSession: XROfferSessionOptions;\n\n /**\n * Canvas id or element. If this is `undefined`, looks for a canvas with id 'canvas'.\n */\n canvas: string;\n\n /**\n * Logging level(s) to enable.\n *\n * By default, all levels are enabled.\n */\n logs: LogLevel[];\n}\n\n/**\n * Load the runtime using the WASM and JS files.\n *\n * @param runtime The runtime base string, e.g,: `WonderlandRuntime-loader-physx`.\n * @param options Options to modify the loading behaviour.\n *\n * @returns A promise that resolves when the engine is ready to be used.\n */\nexport async function loadRuntime(\n runtime: string,\n options: Partial = {}\n): Promise {\n const baseURL = getBaseUrl(runtime);\n\n const {threadsSupported} = await detectFeatures();\n const {\n threads = threadsSupported,\n webgpu = false,\n physx = false,\n loader = false,\n renderer = true,\n xrFramebufferScaleFactor = 1.0,\n xrOfferSession = null,\n loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH,\n canvas = 'canvas',\n logs = [LogLevel.Info, LogLevel.Warn, LogLevel.Error],\n } = options;\n\n const variant = [];\n if (loader) variant.push('loader');\n if (physx) variant.push('physx');\n if (threads) variant.push('threads');\n if (webgpu) variant.push('webgpu');\n\n const variantStr = variant.join('-');\n\n let filename = runtime;\n if (variantStr) filename = `${filename}-${variantStr}`;\n\n const download = function (\n filename: string,\n errorMessage: string\n ): Promise {\n return fetch(filename)\n .then((r) => {\n if (!r.ok) return Promise.reject(errorMessage);\n return r.arrayBuffer();\n })\n .catch((_) => Promise.reject(errorMessage));\n };\n\n const [wasmData, loadingScreenData] = await Promise.all([\n download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`),\n download(loadingScreen, 'Failed to fetch loading screen file'),\n ]);\n\n const canvasElement = document.getElementById(canvas) as HTMLCanvasElement;\n if (!canvasElement) {\n throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas}'`);\n }\n if (!(canvasElement instanceof HTMLCanvasElement)) {\n throw new Error(`loadRuntime(): HTML element '${canvas}' must be a canvas`);\n }\n\n const wasm = new WASM(threads);\n (wasm.wasm as ArrayBuffer) = wasmData;\n (wasm.canvas as HTMLCanvasElement) = canvasElement;\n wasm._log.levels.enable(...logs);\n\n if (!window._WL) {\n window._WL = {runtimes: {}};\n }\n const runtimes = window._WL.runtimes;\n\n /* Global identifier of this runtime in `window`. */\n const runtimeGlobalId = variantStr ? variantStr : 'default';\n /* Only load the runtime if not previously loaded in the page */\n if (!runtimes[runtimeGlobalId]) {\n await loadScript(`${filename}.js`);\n runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime!;\n window.instantiateWonderlandRuntime = undefined;\n }\n await runtimes[runtimeGlobalId](wasm);\n\n if (webgpu) {\n const WebGPU = (wasm as any).WebGPU;\n const adapter = await (navigator as any).gpu.requestAdapter();\n const adapterId = WebGPU.mgrAdapter.create(adapter);\n const desc = {\n requiredFeatures: ['texture-compression-bc', 'depth32float-stencil8'],\n };\n const device = await adapter.requestDevice(desc);\n const deviceId = WebGPU.mgrDevice.create(adapter);\n (wasm.preinitializedWebGPUDevice as any) = device;\n\n const context = canvasElement.getContext('webgpu')! as any;\n\n context.configure({\n device: device,\n format: (navigator as any).gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n }\n\n const engine = new WonderlandEngine(wasm, loadingScreenData, renderer);\n\n await engine.webxr.init(xrFramebufferScaleFactor, xrOfferSession);\n\n engine.autoResizeCanvas = true;\n engine.start();\n\n return engine;\n}\n", "import { Component, Type } from '@wonderlandengine/api';\n/**\n * 8thwall camera component.\n *\n * Sets up the 8thwall pipeline and retrieves tracking events to place an\n * object at the location of the tracked AR camera / mobile device.\n *\n * Use this for SLAM tracking based on 8thwall.\n *\n * Make sure to enable 8thwall in \"Project Settings\" > \"AR\". See also the\n * [AR Getting Started Guide](/getting-started/quick-start-ar)\n *\n *\n * Currently only supports world-tracking (SLAM) using BACK camera.\n *\n * - remove any occurrences of the old 8thwall-camera component in the editor\n * - Add this component to NonVrCamera\n *\n * IMPORTANT!\n * - until it get's fixed, select 'customIndexHtml' in the project settings\n * - open a generated index.html and crossorigin=\"anonymous\" attribute to the + diff --git a/js/wasd-controls-custom.js b/js/wasd-controls-custom.js index 56221be..983531d 100644 --- a/js/wasd-controls-custom.js +++ b/js/wasd-controls-custom.js @@ -1,17 +1,16 @@ import { Component, Type } from "@wonderlandengine/api"; import { vec3 } from "gl-matrix"; -/** - * Basic movement with W/A/S/D keys, with boundary limits relative to initial center. - */ + export class WasdControlsCustom extends Component { static TypeName = "wasd-controls-custom"; static Properties = { - /** Movement speed in m/s. */ speed: { type: Type.Float, default: 0.1 }, - /** Object of which the orientation is used to determine forward direction */ headObject: { type: Type.Object }, - /** Maximum distance from center on X and Z axes */ - boundaryLimit: { type: Type.Float, default: 12.0 } + boundaryLimit: { type: Type.Float, default: 12.0 }, + gravity: { type: Type.Float, default: 9.8 }, + jumpForce: { type: Type.Float, default: 8.0 }, + groundLevel: { type: Type.Float, default: 0.0 }, + maxJumps: { type: Type.Int, default: 2 } // número de pulos extras permitidos no ar } init() { @@ -20,7 +19,10 @@ export class WasdControlsCustom extends Component { this.down = false; this.left = false; - // Store initial center position in local space + this.verticalVelocity = 0; + this.isJumping = false; + this.jumpsRemaining = this.maxJumps + 1; // 1 do chão + extras + this.centerPos = vec3.create(); if (this.headObject) { this.headObject.getPositionLocal(this.centerPos); @@ -30,101 +32,76 @@ export class WasdControlsCustom extends Component { window.addEventListener('keyup', this.release.bind(this)); } - update() { + update(dt) { if (!this.headObject) return; - if (this.up || this.right || this.down || this.left) { - const direction = vec3.create(); + const direction = vec3.create(); - // Calculate forward/back vectors - const forward = vec3.fromValues(0,0,0); + // Movimento horizontal + if (this.up || this.right || this.down || this.left) { + const forward = vec3.fromValues(0, 0, 0); this.object.getForward(forward); forward[1] = 0; - const back = vec3.create(); - - if (vec3.equals(forward, [0, 0, 1])) { - vec3.set(forward, 0, 0, this.speed); - vec3.set(back, 0, 0, -this.speed); - } else if (vec3.equals(forward, [0, 0, -1])) { - vec3.set(forward, 0, 0, -this.speed); - vec3.set(back, 0, 0, this.speed); - } else { - const angleF = vec3.angle([0, 0, -1], forward); - const xPolF = forward[0] > 0 ? 1 : -1; - const zPolF = forward[2] > 0 ? 1 : -1; - forward[0] = xPolF * Math.abs(Math.sin(angleF)) * this.speed; - forward[2] = zPolF * Math.abs(Math.cos(angleF)) * this.speed; - back[0] = -forward[0]; - back[2] = -forward[2]; - } - - // Calculate right/left vectors - const rightV = vec3.fromValues(0,0,0); + vec3.normalize(forward, forward); + vec3.scale(forward, forward, this.speed); + + const rightV = vec3.fromValues(0, 0, 0); this.object.getRight(rightV); rightV[1] = 0; - const leftV = vec3.create(); - - if (vec3.equals(rightV, [1, 0, 0])) { - vec3.set(rightV, this.speed, 0, 0); - vec3.set(leftV, -this.speed, 0, 0); - } else if (vec3.equals(rightV, [-1, 0, 0])) { - vec3.set(rightV, -this.speed, 0, 0); - vec3.set(leftV, this.speed, 0, 0); - } else { - const angleR = vec3.angle([-1, 0, 0], rightV); - const xPolR = rightV[0] > 0 ? 1 : -1; - const zPolR = rightV[2] > 0 ? 1 : -1; - rightV[0] = xPolR * Math.abs(Math.cos(angleR)) * this.speed; - rightV[2] = zPolR * Math.abs(Math.sin(angleR)) * this.speed; - leftV[0] = -rightV[0]; - leftV[2] = -rightV[2]; - } - - if (this.up) vec3.add(direction, direction, forward); - if (this.down) vec3.add(direction, direction, back); - if (this.left) vec3.add(direction, direction, leftV); - if (this.right) vec3.add(direction, direction, rightV); + vec3.normalize(rightV, rightV); + vec3.scale(rightV, rightV, this.speed); - // Compute new position and clamp within boundaries - const newPos = vec3.create(); - this.headObject.getPositionLocal(newPos); - vec3.add(newPos, newPos, direction); + if (this.up) vec3.add(direction, direction, forward); + if (this.down) vec3.sub(direction, direction, forward); + if (this.right) vec3.add(direction, direction, rightV); + if (this.left) vec3.sub(direction, direction, rightV); + } - // Clamp X and Z relative to center - const minX = this.centerPos[0] - this.boundaryLimit; - const maxX = this.centerPos[0] + this.boundaryLimit; - const minZ = this.centerPos[2] - this.boundaryLimit; - const maxZ = this.centerPos[2] + this.boundaryLimit; + const newPos = vec3.create(); + this.headObject.getPositionLocal(newPos); + vec3.add(newPos, newPos, direction); + + // Gravidade + this.verticalVelocity -= this.gravity * dt; + newPos[1] += this.verticalVelocity * dt; + + // Chegou no chão + if (newPos[1] <= this.groundLevel) { + newPos[1] = this.groundLevel; + this.verticalVelocity = 0; + this.jumpsRemaining = this.maxJumps + 1; // reset ao tocar o chão + this.isJumping = false; + } else { + this.isJumping = true; + } - newPos[0] = Math.min(Math.max(newPos[0], minX), maxX); - newPos[2] = Math.min(Math.max(newPos[2], minZ), maxZ); + // Clamping X/Z + const minX = this.centerPos[0] - this.boundaryLimit; + const maxX = this.centerPos[0] + this.boundaryLimit; + const minZ = this.centerPos[2] - this.boundaryLimit; + const maxZ = this.centerPos[2] + this.boundaryLimit; + newPos[0] = Math.min(Math.max(newPos[0], minX), maxX); + newPos[2] = Math.min(Math.max(newPos[2], minZ), maxZ); - // Apply clamped position - this.headObject.setPositionLocal(newPos); - } + this.headObject.setPositionLocal(newPos); } press(e) { - if (e.keyCode === 38 /* up */ || e.keyCode === 87 /* w */ || e.keyCode === 90 /* z */) { - this.up = true; - } else if (e.keyCode === 39 /* right */ || e.keyCode === 68 /* d */) { - this.right = true; - } else if (e.keyCode === 40 /* down */ || e.keyCode === 83 /* s */) { - this.down = true; - } else if (e.keyCode === 37 /* left */ || e.keyCode === 65 /* a */ || e.keyCode === 81 /* q */) { - this.left = true; + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) this.up = true; + else if (e.keyCode === 39 || e.keyCode === 68) this.right = true; + else if (e.keyCode === 40 || e.keyCode === 83) this.down = true; + else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) this.left = true; + else if (e.keyCode === 32 && this.jumpsRemaining > 0) { + // Executa o pulo imediatamente se houver pulos disponíveis + this.verticalVelocity = this.jumpForce; + this.jumpsRemaining--; } } release(e) { - if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) { - this.up = false; - } else if (e.keyCode === 39 || e.keyCode === 68) { - this.right = false; - } else if (e.keyCode === 40 || e.keyCode === 83) { - this.down = false; - } else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) { - this.left = false; - } + if (e.keyCode === 38 || e.keyCode === 87 || e.keyCode === 90) this.up = false; + else if (e.keyCode === 39 || e.keyCode === 68) this.right = false; + else if (e.keyCode === 40 || e.keyCode === 83) this.down = false; + else if (e.keyCode === 37 || e.keyCode === 65 || e.keyCode === 81) this.left = false; } }; From fcc0cd9849bd68114672830f9447d26bd12e83ce Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 30 Jun 2025 17:09:38 -0300 Subject: [PATCH 08/10] adding points --- .../MouseDefense/2025-06-30_06-59-28.wlp | 7374 ----------------- ...0_07-37-52.wlp => 2025-06-30_16-41-52.wlp} | 12 +- ...0_07-20-48.wlp => 2025-06-30_16-52-32.wlp} | 155 +- MouseDefense.wlp | 71 +- deploy/MyWonderland-bundle.js | 57 +- deploy/MyWonderland-bundle.js.map | 6 +- deploy/MyWonderland.bin | Bin 1195036 -> 1172012 bytes deploy/index.html | 7 +- js/bullet-physics.js | 13 +- js/game.js | 15 +- js/index.js | 2 - js/mouse-mover.js | 2 +- js/score-trigger.js | 73 +- 13 files changed, 134 insertions(+), 7653 deletions(-) delete mode 100644 .autosave/MouseDefense/2025-06-30_06-59-28.wlp rename .autosave/MouseDefense/{2025-06-30_07-37-52.wlp => 2025-06-30_16-41-52.wlp} (99%) rename .autosave/MouseDefense/{2025-06-30_07-20-48.wlp => 2025-06-30_16-52-32.wlp} (98%) diff --git a/.autosave/MouseDefense/2025-06-30_06-59-28.wlp b/.autosave/MouseDefense/2025-06-30_06-59-28.wlp deleted file mode 100644 index c7b5e6e..0000000 --- a/.autosave/MouseDefense/2025-06-30_06-59-28.wlp +++ /dev/null @@ -1,7374 +0,0 @@ -{ - "objects": { - "14": { - "name": "Player", - "components": [ - { - "type": "bg-music" - }, - { - "type": "player-location" - }, - { - "type": "fixed-foveation", - "fixed-foveation": { - "fixedFoveation": 1.0 - } - } - ], - "translation": [ - 0.0, - 0.0, - 4.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 0.9999998, - 1.0, - 0.9999998 - ] - }, - "15": { - "name": "FloorPlane", - "components": [ - { - "type": "mesh", - "mesh": { - "mesh": "12", - "material": "540" - }, - "active": true - }, - { - "type": "collision", - "collision": { - "collider": "aabb", - "aabb": { - "extents": [ - 16.0, - -0.1, - 16.0 - ] - }, - "groups": 4 - }, - "active": true - } - ], - "translation": [ - 2.9769601, - 2.384185791015625e-7, - 2.0148322 - ], - "rotation": [ - -0.707264, - 0.0, - 0.0, - 0.7069494 - ], - "scaling": [ - 60.0, - 60.0000267, - 60.0000038 - ] - }, - "17": { - "name": "NonVrCamera", - "parent": "205", - "components": [ - { - "type": "view" - }, - { - "type": "wasd-controls-custom", - "wasd-controls-custom": { - "speed": 0.1, - "headObject": "14" - }, - "active": true - }, - { - "type": "mouse-look-custom", - "mouse-look-custom": { - "pointerLockOnClick": true, - "requireMouseDown": false, - "bulletMesh": "9", - "bulletMaterial": "20", - "bulletSpeed": 5.0 - } - } - ], - "translation": [ - 0.0, - 0.0, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "18": { - "name": "EyeLeft", - "parent": "205", - "components": [ - { - "type": "view" - }, - { - "type": "input", - "input": { - "type": "eye left" - } - }, - { - "type": "howler-audio-listener" - } - ], - "translation": [ - 0.0, - 0.0, - -2.384185791015625e-7 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "19": { - "name": "EyeRight", - "parent": "205", - "components": [ - { - "type": "view" - }, - { - "type": "input", - "input": { - "type": "eye right" - } - } - ], - "translation": [ - 0.0, - 0.0, - -2.384185791015625e-7 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "21": { - "name": "Sunlight", - "components": [ - { - "type": "light", - "light": { - "type": "sun", - "color": [ - 1.0, - 0.8839215, - 0.4196078 - ], - "shadows": true, - "cascadeCount": 3, - "shadowRange": 50.0, - "intensity": 1.0 - } - } - ], - "parent": "501", - "translation": [ - -0.0000013, - 3.0000147, - 8.8421812 - ], - "rotation": [ - 0.2330272, - -0.2990215, - 0.1749209, - 0.9086732 - ], - "scaling": [ - 0.9999998, - 0.9999994, - 0.9999992 - ] - }, - "53": { - "link": { - "name": "root", - "file": "models\\oculus-touch-v2-left.glb" - }, - "parent": "130", - "name": "ControllerModelLeft", - "translation": [ - -0.0117514, - 0.0008869, - 0.0161192 - ], - "scaling": [ - 0.9999998, - 0.9999998, - 0.9999997 - ] - }, - "54": { - "link": { - "name": "controller this.destroyBullet(0)); this.destroyBullet(0); break; } @@ -13356,7 +13361,23 @@ var ScoreTrigger = class extends Component3 { volume: 1.9 }); } - onHit() { + onHit(callback) { + if (typeof callback === "function") { + this.particles.setTransformWorld( + this.object.getTransformWorld(tempQuat23) + ); + this.particles.getComponent("confetti-particles").burst(); + state.zombiesKilledInWave++; + state.zombieCount++; + const elementPontos = document.getElementById("pontos-test"); + if (elementPontos) { + elementPontos.innerHTML = state.zombieCount; + } + state.despawnTarget(this.object.parent); + callback(); + } else { + console.log("Nenhum callback fornecido."); + } this.particles.setTransformWorld(this.object.getTransformWorld(tempQuat23)); this.particles.getComponent("confetti-particles").burst(); state.despawnTarget(this.object.parent); @@ -13587,29 +13608,6 @@ var ShotCounter = class extends Component3 { __publicField(ShotCounter, "TypeName", "shot-counter"); __publicField(ShotCounter, "Properties", {}); -// js/spawn-mover.js -var SpawnMover = class extends Component3 { - init() { - this.time = 0; - this.currentPos = [0, 0, 0]; - this.pointA = [0, 0, 0]; - this.pointB = [0, 0, 0]; - this.moveDuration = 1; - this.speed = 0.2; - this.travelDistance = this.moveDuration * this.speed; - quat2_exports.getTranslation(this.currentPos, this.object.transformLocal); - vec3_exports.add(this.pointA, this.pointA, this.currentPos); - vec3_exports.add(this.pointB, this.currentPos, [0, 0, 1.5]); - } - update(dt) { - } -}; -__publicField(SpawnMover, "TypeName", "spawn-mover"); -__publicField(SpawnMover, "Properties", { - speed: { type: Type.Float, default: 1 } - // targetObject: {type: Type.Object}, -}); - // js/teleport-custom.js var TeleportCustom = class extends Component3 { init() { @@ -13944,7 +13942,6 @@ engine.registerComponent(PlayAgainButton); engine.registerComponent(PlayerLocation); engine.registerComponent(ScoreDisplay); engine.registerComponent(ShotCounter); -engine.registerComponent(SpawnMover); engine.registerComponent(TeleportCustom); engine.registerComponent(WasdControlsCustom); engine.scene.load(`${Constants.ProjectName}.bin`); diff --git a/deploy/MyWonderland-bundle.js.map b/deploy/MyWonderland-bundle.js.map index 4f5efd4..207328f 100644 --- a/deploy/MyWonderland-bundle.js.map +++ b/deploy/MyWonderland-bundle.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/howler/dist/howler.js", "../node_modules/earcut/src/earcut.js", "../node_modules/node_modules/wasm-feature-detect/dist/esm/index.js", "../node_modules/@wonderlandengine/api/src/property.ts", "../node_modules/@wonderlandengine/api/src/decorators.ts", "../node_modules/@wonderlandengine/api/src/utils/object.ts", "../node_modules/@wonderlandengine/api/src/utils/event.ts", "../node_modules/@wonderlandengine/api/src/resources/resource.ts", "../node_modules/@wonderlandengine/api/src/utils/cbor.ts", "../node_modules/@wonderlandengine/api/src/component.ts", "../node_modules/@wonderlandengine/api/src/utils/fetch.ts", "../node_modules/@wonderlandengine/api/src/prefab.ts", "../node_modules/@wonderlandengine/api/src/utils/misc.ts", "../node_modules/@wonderlandengine/api/src/wonderland.ts", "../node_modules/@wonderlandengine/api/src/version.ts", "../node_modules/@wonderlandengine/api/src/resources/material-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/mesh-manager.ts", "../node_modules/@wonderlandengine/api/src/resources/texture-manager.ts", "../node_modules/@wonderlandengine/api/src/webxr.ts", "../node_modules/@wonderlandengine/api/src/scene-gltf.ts", "../node_modules/@wonderlandengine/api/src/scene.ts", "../node_modules/@wonderlandengine/api/src/engine.ts", "../node_modules/@wonderlandengine/api/src/utils/bitset.ts", "../node_modules/@wonderlandengine/api/src/utils/logger.ts", "../node_modules/@wonderlandengine/api/src/wasm.ts", "../node_modules/@wonderlandengine/api/src/index.ts", "../node_modules/@wonderlandengine/components/dist/8thwall-camera.js", "../node_modules/@wonderlandengine/components/dist/utils/webxr.js", "../node_modules/@wonderlandengine/components/dist/anchor.js", "../node_modules/@wonderlandengine/components/dist/cursor-target.js", "../node_modules/gl-matrix/esm/common.js", "../node_modules/gl-matrix/esm/mat3.js", "../node_modules/gl-matrix/esm/mat4.js", "../node_modules/gl-matrix/esm/quat.js", "../node_modules/gl-matrix/esm/vec3.js", "../node_modules/gl-matrix/esm/vec4.js", "../node_modules/gl-matrix/esm/quat2.js", "../node_modules/@wonderlandengine/components/dist/hit-test-location.js", "../node_modules/@wonderlandengine/components/dist/cursor.js", "../node_modules/@wonderlandengine/components/dist/debug-object.js", "../node_modules/@wonderlandengine/components/dist/finger-cursor.js", "../node_modules/@wonderlandengine/components/dist/fixed-foveation.js", "../node_modules/@wonderlandengine/components/dist/hand-tracking.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-listener.js", "../node_modules/@wonderlandengine/components/dist/howler-audio-source.js", "../node_modules/@wonderlandengine/components/dist/utils/utils.js", "../node_modules/@wonderlandengine/components/dist/image-texture.js", "../node_modules/@wonderlandengine/components/dist/mouse-look.js", "../node_modules/@wonderlandengine/components/dist/player-height.js", "../node_modules/@wonderlandengine/components/dist/target-framerate.js", "../node_modules/@wonderlandengine/components/dist/teleport.js", "../node_modules/@wonderlandengine/components/dist/trail.js", "../node_modules/@wonderlandengine/components/dist/two-joint-ik-solver.js", "../node_modules/@wonderlandengine/components/dist/video-texture.js", "../node_modules/@wonderlandengine/components/dist/vr-mode-active-switch.js", "../node_modules/@wonderlandengine/components/dist/plane-detection.js", "../node_modules/@wonderlandengine/components/dist/vrm.js", "../node_modules/@wonderlandengine/components/dist/wasd-controls.js", "../js/game.js", "../js/bg-music.js", "../js/bullet-physics.js", "../js/bullet-spawner.js", "../js/confetti-particles.js", "../js/hud-control.js", "../js/joystick-movement.js", "../js/mouse-look-custom.js", "../js/mouse-mover.js", "../js/score-trigger.js", "../js/mouse-spawner.js", "../js/play-again-button.js", "../js/player-location.js", "../js/score-display.js", "../js/shot-counter.js", "../js/spawn-mover.js", "../js/teleport-custom.js", "../js/wasd-controls-custom.js", "../js/index.js"], - "sourcesContent": ["/*!\n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/([0-6].)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.3\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, \u221E]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspending\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "/**\n * Component property type.\n */\nexport enum Type {\n /**\n * **Native**\n *\n * Property of a native component. Must not be used in custom components.\n *\n * @hidden\n */\n Native = 0,\n\n /**\n * **Bool**:\n *\n * Appears in the editor as a checkbox.\n *\n * Initial value is `false`, unless overridden by the `default` property.\n */\n Bool = 1,\n\n /**\n * **Int**:\n *\n * Appears in the editor as an integer input field.\n *\n * Initial value is `0`, unless overridden by the `default` property.\n */\n Int = 2,\n\n /**\n * **Float**:\n *\n * Appears in the editor as a floating point input field.\n *\n * Initial value is `0.0`, unless overridden by the `default` property.\n */\n Float = 3,\n\n /**\n * **String / Text**:\n *\n * Appears in the editor as a single-line text input field.\n *\n * Initial value is an empty string, unless overridden by the `default`\n * property.\n */\n String = 4,\n\n /**\n * **Enumeration**:\n *\n * Appears in the editor as a dropdown with given values. The additional\n * `values` parameter with selection options is mandatory.\n *\n * The property value is resolved to an **index** into the `values` array.\n *\n * Initial value is the first element in `values`, unless overridden by\n * the `default` property. The `default` value can be a string or an index\n * into `values`.\n *\n * @example\n *\n * ```js\n * camera: {type: Type.Enum, values: ['auto', 'back', 'front'], default: 'auto'},\n * ```\n */\n Enum = 5,\n\n /**\n * **Object reference**:\n *\n * Appears in the editor as an object resource selection dropdown\n * with object picker.\n *\n * Initial value is `null`.\n */\n Object = 6,\n\n /**\n * **Mesh reference**:\n *\n * Appears in the editor as a mesh resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Mesh = 7,\n\n /**\n * **Texture reference**:\n *\n * Appears in the editor as a texture resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Texture = 8,\n\n /**\n * **Material reference**:\n *\n * Appears in the editor as a material resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Material = 9,\n\n /**\n * **Animation reference**:\n *\n * Appears in the editor as an animation resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Animation = 10,\n\n /**\n * **Skin reference**:\n *\n * Appears in the editor as a skin resource selection dropdown.\n *\n * Initial value is `null`.\n */\n Skin = 11,\n\n /**\n * **Color**:\n *\n * Appears in the editor as a color widget.\n *\n * Initial value is `[0.0, 0.0, 0.0, 1.0]`, unless overridden by the\n * `default` property.\n */\n Color = 12,\n\n /**\n * **Vector of two floats**:\n *\n * Appears in the editor as a two-element floating point input field.\n *\n * Initial value is `[0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector2 = 13,\n\n /**\n * **Vector of three floats**:\n *\n * Appears in the editor as a three-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector3 = 14,\n\n /**\n * **Vector of four floats**:\n *\n * Appears in the editor as a four-element floating point input field.\n *\n * Initial value is `[0.0, 0.0, 0.0, 0.0]`, unless overridden by the\n * `default` property.\n */\n Vector4 = 15,\n\n /**\n * **Array of property**:\n *\n * Appears in the editor as a list of **N** elements.\n *\n * Initial value is `[]`, unless overridden by the `default` property.\n */\n Array = 16,\n\n /**\n * **Class with sub-properties**:\n *\n * Appears in the editor as a nested properties structure.\n *\n * Initial value is `{}`, unless overridden by the `default` property.\n */\n Record = 17,\n\n /**\n * **Particle effect reference**:\n *\n * Appears in the editor as a particle effect resource selection dropdown.\n *\n * Initial value is `null`.\n */\n ParticleEffect = 18,\n\n /** @hidden */\n Count = 19,\n}\n\n/**\n * Cloning interface for component properties.\n *\n * Used for component initialization and cloning.\n */\nexport interface PropertyCloner {\n /**\n * Clone a property value.\n * @param type Type of the property.\n * @param value Value of the property.\n * @returns The cloned value.\n */\n clone(type: Type, value: any): any;\n}\n\n/**\n * Interface describing a record class used in properties.\n *\n * ```ts\n * import {property, PropertyRecord} from '@wonderlandengine/api';\n * class Record implements PropertyRecord {\n * @property.string()\n * string: string;\n * @property.record(SubRecord)\n * subrecord: SubRecord;\n * }\n * ```\n *\n * @note Implementing `PropertyRecord` isn't required.\n */\nexport interface PropertyRecord {\n new (): unknown;\n /** Static properties definition, similar to {@link Component.Properties}. */\n Properties?: Record;\n /** @hidden */\n _propertyOrder?: string[];\n}\n\n/**\n * Default cloner implementation.\n *\n * Clones array-like properties and leaves all other types unchanged.\n */\nexport class DefaultPropertyCloner implements PropertyCloner {\n clone(type: Type, value: any): any {\n switch (type) {\n case Type.Color:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n case Type.Array:\n /** @todo: Array should be deep cloned. */\n return value.slice();\n case Type.Record: {\n if (!value || !value.constructor) return value;\n\n const RecordClass = value.constructor as PropertyRecord;\n const result = new RecordClass() as Record;\n for (const key in RecordClass.Properties) {\n const prop = RecordClass.Properties[key];\n result[key] = this.clone(prop.type, value[key]);\n }\n return result;\n }\n default:\n return value;\n }\n }\n}\n\n/** Default cloner for property values. */\nexport const defaultPropertyCloner = new DefaultPropertyCloner();\n\n/**\n * Custom component property.\n *\n * For more information about component properties, have a look\n * at the {@link Component.Properties} attribute.\n */\nexport interface ComponentProperty {\n /** Property type. */\n type: Type;\n /** Default value, depending on type. */\n default?: any;\n /** Values for {@link Type.Enum} */\n values?: string[];\n /** Record definition, used if the property type is {@link Type.Record}. */\n record?: PropertyRecord;\n element?: ComponentProperty;\n required?: boolean;\n /**\n * Cloner for the property.\n *\n * If not defined, falls back to {@link defaultPropertyCloner}. To prevent\n * any cloning, set a custom cloner that passes the original value back\n * from {@link PropertyCloner.clone}. */\n cloner?: PropertyCloner;\n}\n\n/**\n * Component property namespace.\n *\n * Usage:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myBool: Property.bool(true),\n * myInt: Property.int(42),\n * myString: Property.string('Hello World!'),\n * myMesh: Property.mesh()\n * }\n * }\n * ```\n *\n * It's possible to nest properties using record, and array:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Weapon {\n * static Properties = {\n * damage: Property.float(100.0),\n * fireRate: Property.int(10)\n * }\n * }\n * class Zombie {\n * static Properties = {\n * names: Property.string('Mad Zombie'),\n * animation: Property.animation()\n * }\n * }\n *\n * class Player extends Component {\n * static Properties = {\n * weapon: Property.record(Weapon),\n * zombieTargets: Property.array(Zombie),\n * }\n * }\n * ```\n *\n * For TypeScript users, you can use the decorators instead.\n */\nexport const Property = {\n /**\n * Create an boolean property.\n *\n * @param defaultValue The default value. If not provided, defaults to `false`.\n */\n bool(defaultValue: boolean = false): ComponentProperty {\n return {type: Type.Bool, default: defaultValue};\n },\n\n /**\n * Create an integer property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0`.\n */\n int(defaultValue: number = 0): ComponentProperty {\n return {type: Type.Int, default: defaultValue};\n },\n\n /**\n * Create an float property.\n *\n * @param defaultValue The default value. If not provided, defaults to `0.0`.\n */\n float(defaultValue: number = 0.0): ComponentProperty {\n return {type: Type.Float, default: defaultValue};\n },\n\n /**\n * Create an string property.\n *\n * @param defaultValue The default value. If not provided, defaults to `''`.\n */\n string(defaultValue = ''): ComponentProperty {\n return {type: Type.String, default: defaultValue};\n },\n\n /**\n * Create an enumeration property.\n *\n * @param values The list of values.\n * @param defaultValue The default value. Can be a string or an index into\n * `values`. If not provided, defaults to the first element.\n */\n enum(values: string[], defaultValue?: string | number): ComponentProperty {\n return {type: Type.Enum, values, default: defaultValue};\n },\n\n /** Create an {@link Object3D} reference property. */\n object(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Object, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Mesh} reference property. */\n mesh(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Mesh, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Texture} reference property. */\n texture(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Texture, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Material} reference property. */\n material(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Material, default: null, required: opts?.required ?? false};\n },\n\n /** Create an {@link Animation} reference property. */\n animation(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Animation, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link Skin} reference property. */\n skin(opts?: PropertyReferenceOptions): ComponentProperty {\n return {type: Type.Skin, default: null, required: opts?.required ?? false};\n },\n\n /** Create a {@link ParticleEffect} reference property. */\n particleEffect(opts?: PropertyReferenceOptions): ComponentProperty {\n return {\n type: Type.ParticleEffect,\n default: null,\n required: opts?.required ?? false,\n };\n },\n\n /**\n * Create a color property.\n *\n * @param r The red component, in the range [0; 1].\n * @param g The green component, in the range [0; 1].\n * @param b The blue component, in the range [0; 1].\n * @param a The alpha component, in the range [0; 1].\n */\n color(r = 0.0, g = 0.0, b = 0.0, a = 1.0): ComponentProperty {\n return {type: Type.Color, default: [r, g, b, a]};\n },\n\n /**\n * Create a two-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n */\n vector2(x = 0.0, y = 0.0): ComponentProperty {\n return {type: Type.Vector2, default: [x, y]};\n },\n\n /**\n * Create a three-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n */\n vector3(x = 0.0, y = 0.0, z = 0.0): ComponentProperty {\n return {type: Type.Vector3, default: [x, y, z]};\n },\n\n /**\n * Create a four-element vector property.\n *\n * @param x The x component.\n * @param y The y component.\n * @param z The z component.\n * @param w The w component.\n */\n vector4(x = 0.0, y = 0.0, z = 0.0, w = 0.0): ComponentProperty {\n return {type: Type.Vector4, default: [x, y, z, w]};\n },\n\n /**\n * Create a class property.\n *\n * @param definition The template class, containing sub properties.\n */\n record(definition: PropertyRecord): ComponentProperty {\n return {type: Type.Record, record: definition, default: new definition()};\n },\n\n /**\n * Create an unsized array of properties.\n *\n * @note Array properties can only contain a single element type.\n *\n * @param element The element property.\n */\n array(element: ComponentProperty): ComponentProperty {\n /** @todo: Implement ArrayBuffer, which are much faster to decode */\n return {type: Type.Array, element, default: undefined};\n },\n};\n\n/**\n * Options to create a reference property, i.e.,\n * object, mesh, animation, skin, etc...\n */\nexport interface PropertyReferenceOptions {\n /** If `true`, the component will throw if the property isn't initialized. */\n required?: boolean;\n}\n\n/** All the keys that exists on the {@link Property} object. */\nexport type PropertyKeys = keyof typeof Property;\n\n/** Retrieve all the argument types of a {@link Property} function. */\nexport type PropertyArgs = Parameters<(typeof Property)[key]>;\n", "import {Component, ComponentConstructor} from './wonderland.js';\nimport {Property, PropertyArgs, PropertyKeys, ComponentProperty, Type} from './property.js';\n\n/**\n * Decorator for JS component properties.\n *\n * @param data The property description as an object literal\n * @returns A decorator function modifying the `Properties` static\n * attribute\n */\nfunction propertyDecorator(data: ComponentProperty) {\n return function (target: any, propertyKey: string): void {\n const ctor = target.constructor as ComponentConstructor;\n ctor.Properties = ctor.hasOwnProperty('Properties') ? ctor.Properties : {};\n ctor.Properties[propertyKey] = data;\n };\n}\n\n/**\n * Decorator for making a getter enumerable.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @enumerable()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function enumerable() {\n return function (_: any, __: string, descriptor: PropertyDescriptor) {\n descriptor.enumerable = true;\n };\n}\n\n/**\n * Decorator for native properties.\n *\n * Usage:\n *\n * ```ts\n * class MyClass {\n * @nativeProperty()\n * get projectionMatrix(): Float32Array { ... }\n * }\n * ```\n */\nexport function nativeProperty() {\n return function (\n target: Component,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n enumerable()(target, propertyKey, descriptor);\n propertyDecorator({type: Type.Native})(target, propertyKey);\n };\n}\n\n/**\n * Property decorators namespace.\n *\n * You can use the decorators to mark a class attribute as\n * a Wonderland Engine property.\n *\n * Usage:\n *\n * ```ts\n * import {Mesh} from '@wonderlandengine/api';\n * import {property} from '@wonderlandengine/api/decorators.js';\n *\n * class MyComponent extends Component {\n * @property.bool(true)\n * myBool!: boolean;\n *\n * @property.int(42)\n * myInt!: number;\n *\n * @property.string('Hello World!')\n * myString!: string;\n *\n * @property.mesh()\n * myMesh!: Mesh;\n * }\n * ```\n *\n * For JavaScript users, please declare the properties statically.\n */\nexport const property = {} as {\n [key in PropertyKeys]: (\n ...args: PropertyArgs\n ) => ReturnType;\n};\n\nfor (const name in Property) {\n /* Assign each property functor to a TypeScript decorator.\n * This code extracts parameters and return type to provide proper\n * typings to the user. */\n property[name as PropertyKeys] = (...args: PropertyArgs) => {\n const functor = Property[name as PropertyKeys] as (\n ...args: unknown[]\n ) => ComponentProperty;\n return propertyDecorator(functor(...args));\n };\n}\n", "import {ImageLike} from '../types.js';\n\n/**\n * Check if a given value is a native string or a `String` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type string literal or `String`, `false` otherwise.\n */\nexport function isString(value: any): value is string {\n if (value === '') return true;\n return value && (typeof value === 'string' || value.constructor === String);\n}\n\n/**\n * Check if a given value is a native number or a `Number` instance.\n *\n * @param value The value to check.\n * @returns `true` if the `value` has type number literal or `Number`, `false` otherwise.\n */\nexport function isNumber(value: any): value is number {\n if (value === null || value === undefined) return false;\n return typeof value === 'number' || value.constructor === Number;\n}\n\n/**\n * Check whether a given value is a visual media.\n *\n * @param value The value to check\n * @returns `true` if the `value` is an image, video, or canvas.\n */\nexport function isImageLike(value: any): value is ImageLike {\n return (\n value instanceof HTMLImageElement ||\n value instanceof HTMLVideoElement ||\n value instanceof HTMLCanvasElement\n );\n}\n", "/**\n * Listener callback type, used in {@link Emitter.add}.\n */\nexport type ListenerCallback = (...data: T) => void;\n\n/**\n * Registration options for a listener in an {@link Emitter}.\n */\nexport interface ListenerOptions {\n /**\n * Listener identifier. This is used to find and remove the listener\n * without needing the callback reference.\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * For more information, please look at the {@link Emitter.remove} method.\n */\n id: any | undefined;\n /**\n * If `true`, the listener is automatically removed after it's invoked.\n * Defaults to `false`.\n */\n once: boolean;\n}\n\n/** Internal listener type. */\ntype Listener = ListenerOptions & {\n callback: ListenerCallback;\n};\n\n/** Internal type for transaction. */\nenum TransactionType {\n Addition = 1,\n Removal = 2,\n}\n\n/**\n * Event emitter.\n *\n * This class allows to register listeners that will get notified by the emitter.\n *\n * Usage example:\n *\n * ```js\n * // `onPreRender` is an `Emitter` instance.\n * scene.onPreRender.add(() => console.log('before rendering'));\n * // `onPostRender` is an `Emitter` instance.\n * scene.onPostRender.add(() => console.log('after rendering'));\n * ```\n *\n * You can create your own emitters:\n *\n * ```js\n * import {Emitter} from '@wonderlandengine/api';\n *\n * const emitter = new Emitter();\n * ```\n *\n * You can notify listeners in to your emitter using {@link Emitter.notify}:\n *\n * ```js\n * // Notifies all the listeners.\n * emitter.notify();\n * // Notifies all the listeners with some data.\n * emitter.notify({ myInt: 42, myStr: 'Hello World!' });\n * ```\n *\n * @category event\n */\nexport class Emitter {\n /**\n * List of listeners to trigger when `notify` is called.\n *\n * @hidden\n */\n protected readonly _listeners: Listener[] = [];\n\n /**\n * `true` if the emitter is currently notifying listeners. This\n * is used to defer addition and removal.\n *\n * @hidden\n */\n private _notifying = false;\n\n /**\n * Pending additions / removals, performed during a notification.\n *\n * @hidden\n */\n private readonly _transactions: {\n type: TransactionType;\n data: Listener | ListenerCallback;\n }[] = [];\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Basic usage:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * });\n * ```\n *\n * Automatically remove the listener when an event is received:\n *\n * ```js\n * emitter.add((data) => {\n * console.log('event received!');\n * console.log(data);\n * }, {once: true});\n * ```\n *\n * @param listener The callback to register.\n * @param opts The listener options. For more information, please have a look\n * at the {@link ListenerOptions} interface.\n *\n * @returns Reference to self (for method chaining)\n */\n add(listener: ListenerCallback, opts: Partial = {}): this {\n const {once = false, id = undefined} = opts;\n const data = {id, once, callback: listener};\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Addition, data});\n return this;\n }\n this._listeners.push(data);\n return this;\n }\n\n /**\n * Equivalent to {@link Emitter.add}.\n *\n * @param listeners The callback(s) to register.\n * @returns Reference to self (for method chaining).\n *\n * @deprecated Please use {@link Emitter.add} instead.\n */\n push(...listeners: ListenerCallback[]): this {\n for (const cb of listeners) this.add(cb);\n return this;\n }\n\n /**\n * Register a new listener to be triggered on {@link Emitter.notify}.\n *\n * Once notified, the listener will be automatically removed.\n *\n * The method is equivalent to calling {@link Emitter.add} with:\n *\n * ```js\n * emitter.add(listener, {once: true});\n * ```\n *\n * @param listener The callback to register.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback) {\n return this.add(listener, {once: true});\n }\n\n /**\n * Remove a registered listener.\n *\n * Usage with a callback:\n *\n * ```js\n * const listener = (data) => console.log(data);\n * emitter.add(listener);\n *\n * // Remove using the callback reference:\n * emitter.remove(listener);\n * ```\n *\n * Usage with an id:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'my-callback'});\n *\n * // Remove using the id:\n * emitter.remove('my-callback');\n * ```\n *\n * Using identifiers, you will need to ensure your value is unique to avoid\n * removing listeners from other libraries, e.g.,:\n *\n * ```js\n * emitter.add((data) => console.log(data), {id: 'non-unique'});\n * // This second listener could be added by a third-party library.\n * emitter.add((data) => console.log('Hello From Library!'), {id: 'non-unique'});\n *\n * // Ho Snap! This also removed the library listener!\n * emitter.remove('non-unique');\n * ```\n *\n * The identifier can be any type. However, remember that the comparison will be\n * by-value for primitive types (string, number), but by reference for objects.\n *\n * Example:\n *\n * ```js\n * emitter.add(() => console.log('Hello'), {id: {value: 42}});\n * emitter.add(() => console.log('World!'), {id: {value: 42}});\n * emitter.remove({value: 42}); // None of the above listeners match!\n * emitter.notify(); // Prints 'Hello' and 'World!'.\n * ```\n *\n * Here, both emitters have id `{value: 42}`, but the comparison is made by reference. Thus,\n * the `remove()` call has no effect. We can make it work by doing:\n *\n * ```js\n * const id = {value: 42};\n * emitter.add(() => console.log('Hello'), {id});\n * emitter.add(() => console.log('World!'), {id});\n * emitter.remove(id); // Same reference, it works!\n * emitter.notify(); // Doesn't print.\n * ```\n *\n * @param listener The registered callback or a value representing the `id`.\n *\n * @returns Reference to self (for method chaining)\n */\n remove(listener: ListenerCallback | any): this {\n if (this._notifying) {\n this._transactions.push({type: TransactionType.Removal, data: listener});\n return this;\n }\n\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) {\n listeners.splice(i--, 1);\n }\n }\n return this;\n }\n\n /**\n * Check whether the listener is registered.\n *\n * @note This method performs a linear search.\n *\n * * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n *\n * @param listener The registered callback or a value representing the `id`.\n * @returns `true` if the handle is found, `false` otherwise.\n */\n has(listener: ListenerCallback | any): boolean {\n const listeners = this._listeners;\n for (let i = 0; i < listeners.length; ++i) {\n const target = listeners[i];\n if (target.callback === listener || target.id === listener) return true;\n }\n return false;\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note This method ensures all listeners are called even if\n * an exception is thrown. For (possibly) faster notification,\n * please use {@link Emitter.notifyUnsafe}.\n *\n * @param data The data to pass to listener when invoked.\n */\n notify(...data: T): void {\n const listeners = this._listeners;\n\n this._notifying = true;\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n try {\n listener.callback(...data);\n } catch (e) {\n console.error(e);\n }\n }\n this._notifying = false;\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Notify listeners with the given data object.\n *\n * @note Because this method doesn't catch exceptions, some listeners\n * will be skipped on a throw. Please use {@link Emitter.notify} for safe\n * notification.\n *\n * @param data The data to pass to listener when invoked.\n */\n notifyUnsafe(...data: T): void {\n const listeners = this._listeners;\n\n for (let i = 0; i < listeners.length; ++i) {\n const listener = listeners[i];\n if (listener.once) listeners.splice(i--, 1);\n listener.callback(...data);\n }\n\n /* Process deferred additions & removals */\n this._flushTransactions();\n }\n\n /**\n * Return a promise that will resolve on the next event.\n *\n * @note The promise might never resolve if no event is sent.\n *\n * @returns A promise that resolves with the data passed to\n * {@link Emitter.notify}.\n */\n promise(): Promise {\n return new Promise((res, _) => {\n this.once((...args) => {\n if (args.length > 1) {\n res(args);\n } else {\n res(args[0] as T);\n }\n });\n });\n }\n\n /**\n * Number of listeners.\n *\n * @note Doesn't account for pending listeners, i.e.,\n * listeners added / removed during a notification.\n */\n get listenerCount() {\n return this._listeners.length;\n }\n\n /** `true` if it has no listeners, `false` otherwise. */\n get isEmpty() {\n return this.listenerCount === 0;\n }\n\n /**\n * Flush all pending transactions.\n *\n * @hidden\n */\n private _flushTransactions() {\n const listeners = this._listeners;\n for (const transaction of this._transactions) {\n if (transaction.type === TransactionType.Addition) {\n listeners.push(transaction.data as Listener);\n } else {\n this.remove(transaction.data as ListenerCallback);\n }\n }\n this._transactions.length = 0;\n }\n}\n\n/**\n * Registration options for a listener in an {@link RetainEmitter}.\n *\n * Those options extend {@link ListenerOptions}.\n */\nexport interface RetainListenerOptions extends ListenerOptions {\n /**\n * If `true`, directly resolves if the emitter retains a value. If `false`,\n * the listener isn't invoked until the next {@link Emitter.notify}.\n *\n * Defaults to `true`.\n */\n immediate: boolean;\n}\n\n/* Dummy value used with RetainEmitter. */\nconst RetainEmitterUndefined: Record = {};\n\n/**\n * Event emitter that retains event data when notified.\n *\n * After a notification happens, subsequent calls to {@link RetainEmitter.add} will get\n * automatically notified.\n *\n * You can use another emitter in order to cancel the last retained event:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n *\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n * ```\n *\n * You can reset the state of the emitter, i.e., making it forget about the\n * last event using:\n *\n * ```js\n * import {Emitter, RetainedEmitter} from '@wonderlandengine/api';\n *\n * const onStart = new RetainedEmitter();\n * onStart.notify(42);\n * onStart.add((data) => console.log(data)) // Prints '42'.\n *\n * // Reset the state of the emitter.\n * onStart.reset();\n * onStart.add((data) => console.log(data)) // Doesn't print anything.\n * ```\n *\n * For more information about emitters, please have a look at the base {@link Emitter} class.\n *\n * @category event\n */\nexport class RetainEmitter extends Emitter {\n /** Pre-resolved data. @hidden */\n protected _event: T | typeof RetainEmitterUndefined = RetainEmitterUndefined;\n\n /**\n * Emitter target used to reset the state of this emitter.\n *\n * @hidden\n */\n protected readonly _reset: Emitter | undefined;\n\n /** @override */\n add(listener: ListenerCallback, opts?: Partial): this {\n const immediate = opts?.immediate ?? true;\n if (this._event !== RetainEmitterUndefined && immediate) {\n listener(...(this._event as T));\n }\n super.add(listener, opts);\n return this;\n }\n\n /**\n * @override\n *\n * @param listener The callback to register.\n * @param immediate If `true`, directly resolves if the emitter retains a value.\n *\n * @returns Reference to self (for method chaining).\n */\n once(listener: ListenerCallback, immediate?: boolean) {\n return this.add(listener, {once: true, immediate});\n }\n\n /** @override */\n notify(...data: T): void {\n this._event = data;\n super.notify(...data);\n }\n\n /** @override */\n notifyUnsafe(...data: T): void {\n this._event = data;\n super.notifyUnsafe(...data);\n }\n\n /**\n * Reset the state of the emitter.\n *\n * Further call to {@link Emitter.add} will not automatically resolve,\n * until a new call to {@link Emitter.notify} is performed.\n *\n * @returns Reference to self (for method chaining)\n */\n reset(): this {\n this._event = RetainEmitterUndefined;\n return this;\n }\n\n /** Returns the retained data, or `undefined` if no data was retained. */\n get data(): T | undefined {\n return this.isDataRetained ? this._event : undefined;\n }\n\n /** `true` if data is retained from the last event, `false` otherwise. */\n get isDataRetained(): boolean {\n return this._event !== RetainEmitterUndefined;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Prefab} from '../prefab.js';\nimport {Scene} from '../scene.js';\nimport {FirstConstructorParam} from '../types.js';\n\n/** Interface for a resource class */\ntype ResourceConstructor = {\n new (host: FirstConstructorParam, index: number): T;\n};\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nfunction createDestroyedProxy(\n host: FirstConstructorParam,\n type: ResourceConstructor\n) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(\n `Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n set(_, param: string) {\n throw new Error(\n `Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`\n );\n },\n }\n );\n}\n\n/**\n * Base class for engine resources, such as:\n * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n *\n * @since 1.2.0\n */\nexport abstract class Resource {\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n private readonly _engine: WonderlandEngine;\n\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n this._id = index;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._index === other._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._index <= 0;\n }\n}\n\n/**\n * Base class for scene resources, such as:\n * * - {@link Texture}\n * - {@link Mesh}\n * - {@link Material}\n * - {@link Skin}\n * - {@link Animation}\n *\n * @since 1.2.0\n */\nexport abstract class SceneResource {\n /** @hidden */\n static _pack(scene: number, index: number) {\n return (scene << 22) | index;\n }\n\n /** Relative index in the host. @hidden */\n readonly _index: number = -1;\n /** For compatibility with SceneResource. @hidden */\n readonly _id: number = -1;\n /** @hidden */\n protected readonly _scene: Prefab;\n\n constructor(scene: Prefab, index: number) {\n this._scene = scene;\n this._index = index;\n this._id = SceneResource._pack(scene._index, index);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecated Use JavaScript reference comparison instead:\n *\n * ```js\n * const meshA = engine.meshes.create({vertexCount: 1});\n * const meshB = engine.meshes.create({vertexCount: 1});\n * const meshC = meshB;\n * console.log(meshA === meshB); // false\n * console.log(meshA === meshA); // true\n * console.log(meshB === meshC); // true\n * ```\n */\n equals(other: this | undefined | null): boolean {\n if (!other) return false;\n return this._id === other._id;\n }\n\n /** Hosting instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** Index of this resource in the {@link Scene}'s manager. */\n get index() {\n return this._index;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed() {\n return this._id <= 0;\n }\n}\n\n/**\n * Manager for resources.\n *\n * Resources are accessed via the engine they belong to.\n *\n * @see {@link WonderlandEngine.textures}, {@link WonderlandEngine.meshes},\n * and {@link WonderlandEngine.materials}.\n *\n * @since 1.2.0\n */\nexport class ResourceManager {\n /** @hidden */\n protected readonly _host: FirstConstructorParam;\n /** Cache. @hidden */\n protected readonly _cache: (T | null)[] = [];\n\n /** Resource class. @hidden */\n private readonly _template: ResourceConstructor;\n\n /** Destructor proxy, used if {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`. @hidden */\n private _destructor: {} | null = null;\n\n private readonly _engine: WonderlandEngine;\n\n /**\n * Create a new manager\n *\n * @param host The host containing the managed resources.\n * @param Class The class to instantiate when wrapping an index.\n *\n * @hidden\n */\n constructor(host: FirstConstructorParam, Class: ResourceConstructor) {\n this._host = host;\n this._template = Class;\n this._engine = (host as Prefab).engine ?? host;\n }\n\n /**\n * Wrap the index into a resource instance.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index (if any).\n *\n * @param index The resource index.\n * @returns\n */\n wrap(index: number) {\n if (index <= 0) return null;\n const texture =\n this._cache[index] ??\n (this._cache[index] = new this._template(this._host, index));\n return texture;\n }\n\n /**\n * Retrieve the resource at the given index.\n *\n * @note The index is relative to the host, i.e., doesn't pack the host index.\n */\n get(index: number): T | null {\n return this._cache[index] ?? null;\n }\n\n /** Number of textures allocated in the manager. */\n get allocatedCount() {\n return this._cache.length;\n }\n\n /**\n * Number of textures in the manager.\n *\n * @note For performance reasons, avoid calling this method when possible.\n */\n get count() {\n let count = 0;\n for (const res of this._cache) {\n if (res && res.index >= 0) ++count;\n }\n return count;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Destroy the instance.\n *\n * @note This method takes care of the prototype destruction.\n *\n * @hidden\n */\n _destroy(instance: T) {\n const index = instance.index;\n (instance._index as number) = -1;\n (instance._id as number) = -1;\n this._cache[index] = null;\n\n if (!this.engine.erasePrototypeOnDestroy) return;\n\n if (!this._destructor)\n this._destructor = createDestroyedProxy(this._host, this._template);\n Object.setPrototypeOf(instance, this._destructor);\n }\n\n /**\n * Mark all instances as destroyed.\n *\n * @hidden\n */\n _clear() {\n if (!this.engine.erasePrototypeOnDestroy) return;\n for (let i = 0; i < this._cache.length; ++i) {\n const instance = this._cache[i];\n if (instance) this._destroy(instance);\n }\n this._cache.length = 0;\n }\n}\n", "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2016 Patrick Gansterer \n * Copyright (c) 2020-2023 Aaron Huggins \n * Copyright (c) 2024 Wonderland GmbH \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst kCborTagBignum = 2;\nconst kCborTagNegativeBignum = 3;\n/* RFC 8746 Tag values for typed little-endian arrays */\nconst kCborTagUint8 = 64;\nconst kCborTagUint16 = 69;\nconst kCborTagUint32 = 70;\nconst kCborTagUint64 = 71;\nconst kCborTagInt8 = 72;\nconst kCborTagInt16 = 77;\nconst kCborTagInt32 = 78;\nconst kCborTagInt64 = 79;\nconst kCborTagFloat32 = 85;\nconst kCborTagFloat64 = 86;\n\n/**\n * Whether key/value dictionaries should be decoded as objects or as\n * `Map`. The latter is useful if non-string keys or iterating in\n * insertion order are required.\n */\nexport type DictionaryOption = 'object' | 'map';\n\n/** Options for the decoder. */\nexport interface Options {\n /** The dictionary type to use. Defaults to `object`. */\n dictionary?: DictionaryOption;\n}\n\n/** A function to modify tagged values which are encountered during decoding. */\nexport type Tagger = (tag: number | bigint, value: any) => any;\n\n/**\n * Converts a Concise Binary Object Representation (CBOR) buffer into an object.\n *\n * ```js\n * const buffer = new Uint8Array([0xa2, 0x01, 0x02, 0x03, 0x04]).buffer;\n * const decoded = decode(buffer);\n * console.log(decoded); // { \"1\": 2, \"3\": 4 }\n * ```\n *\n * CBOR values can be wrapped in a numeric tag. To handle and possibly\n * transform tagged values, pass a tagger function:\n *\n * ```js\n * const buffer = new Uint8Array([\n * 0xa1, 0x63, 0x75, 0x72, 0x6c, 0xd8, 0x20, 0x70,\n * 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73,\n * 0x69, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f\n * ]);\n * const decoded = decode(buffer, (tag, value) => {\n * if (tag === 32) return new URL(value);\n * return value;\n * });\n * console.log(decoded); // { url: URL { href: \"http://site.com/\" } }\n * ```\n *\n * Decoded basic types generally match the equivalent JavaScript types. Byte\n * strings are decoded to Uint8Array.\n *\n * Tagged values are left as-is, with the following exceptions:\n * - Bignum values (byte strings with tag 2 or 3) are decoded to BigInt\n * - Little-endian versions of typed arrays as defined in RFC 8746 are decoded\n * to JavaScript typed arrays\n *\n * @param data A valid CBOR buffer.\n * @param tagger Optional callback for transformation of tagged values.\n * @param options Options for decoding behavior.\n * @returns The CBOR buffer converted to a JavaScript value.\n */\nexport function decode(\n data: Uint8Array,\n tagger: Tagger = (_, value) => value,\n options: Options = {}\n): T {\n const reader = new CBORReader(data);\n reader.tagger = tagger;\n if (options.dictionary) {\n reader.dictionary = options.dictionary;\n }\n\n const ret = reader.decodeItem();\n if (reader.offset !== data.byteLength) {\n throw new Error('CBORError: Remaining bytes');\n }\n return ret;\n}\n\nexport enum CBORType {\n Array = 0,\n Record = 1,\n Constant = 2,\n Native = 3,\n}\n\n/**\n * Check whether the type is an array, a record,\n * or a native type (decodable without recursion).\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The type category.\n */\nexport function getType(typeInfo: number): CBORType {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n switch (majorType) {\n case 4:\n return CBORType.Array;\n case 5:\n return CBORType.Record;\n case 7:\n return CBORType.Constant;\n }\n return CBORType.Native;\n}\n\nexport function isUndefined(type: CBORType, length: number) {\n return type === CBORType.Constant && length === 23;\n}\n\n/**\n * CBOR reader.\n */\nexport class CBORReader {\n dataView: DataView;\n data: Uint8Array;\n offset: number;\n tagger: Tagger = (_, value) => value;\n dictionary: 'object' | 'map' = 'object';\n\n constructor(data: Uint8Array) {\n this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);\n this.data = data;\n this.offset = 0;\n }\n\n /* Wonderland extra methods. */\n\n /**\n * Read type information and move the cursor.\n *\n * @note Must be called before reading the value.\n */\n readTypeInfo() {\n return this.readUint8();\n }\n\n /**\n * Read the array length.\n *\n * @note Must not be called if the type is a constant.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The array length.\n */\n readArrayLength(typeInfo: number) {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n const length = this.readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n return length;\n }\n\n /* CBOR original decoding methods. */\n\n /**\n * Recursively read the item.\n *\n * @note This method will recursively allocate arrays and records\n * based the item type.\n *\n * @param typeInfo Type information obtained using `readTypeInfo`.\n * @returns The decoded value.\n */\n readItem(typeInfo: number, inputLen: number | null = null): any {\n const majorType = typeInfo >> 5;\n const additionalInformation = typeInfo & 0x1f;\n let i;\n\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return this.readFloat16();\n case 26:\n return this.readFloat32();\n case 27:\n return this.readFloat64();\n }\n }\n\n let length = inputLen === null ? this.readLength(additionalInformation) : inputLen;\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error('CBORError: Invalid length');\n }\n\n switch (majorType) {\n case 0:\n return length;\n case 1:\n if (typeof length === 'number') {\n return -1 - length;\n }\n return -1n - length;\n case 2: {\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n fullArrayLength += length;\n elements.push(this.readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return this.readArrayBuffer(length as number).slice();\n }\n case 3: {\n /* Can't use TextDecoder.decode() because not all browsers\n * support calling it with an underlying SharedArrayBuffer yet.\n * See https://github.com/whatwg/encoding/issues/172 */\n /** @todo Re-evaluate browser support */\n const utf16data: number[] = [];\n if (length < 0) {\n while ((length = this.readIndefiniteStringLength(majorType)) >= 0) {\n this.appendUtf16Data(utf16data, length);\n }\n } else {\n this.appendUtf16Data(utf16data, length as number);\n }\n let string = '';\n const DECODE_CHUNK_SIZE = 8192;\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n string += String.fromCharCode.apply(\n null,\n utf16data.slice(i, i + DECODE_CHUNK_SIZE)\n );\n }\n return string;\n }\n case 4: {\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!this.readBreak()) {\n retArray.push(this.decodeItem());\n }\n } else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = this.decodeItem();\n }\n }\n return retArray;\n }\n case 5: {\n if (this.dictionary === 'map') {\n const retMap = new Map();\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (retMap.has(key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retMap.set(key, this.decodeItem());\n }\n return retMap;\n }\n const retObject: any = {};\n for (i = 0; i < length || (length < 0 && !this.readBreak()); ++i) {\n const key = this.decodeItem();\n if (Object.prototype.hasOwnProperty.call(retObject, key)) {\n throw new Error('CBORError: Duplicate key encountered');\n }\n retObject[key] = this.decodeItem();\n }\n return retObject;\n }\n case 6: {\n const value = this.decodeItem();\n const tag = length;\n if (value instanceof Uint8Array) {\n switch (tag) {\n case kCborTagBignum:\n case kCborTagNegativeBignum:\n let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n);\n if (tag == kCborTagNegativeBignum) {\n num = -1n - num;\n }\n return num;\n /* Little-endian typed arrays (RFC 8746) */\n case kCborTagUint8:\n return value;\n case kCborTagInt8:\n return new Int8Array(value.buffer);\n case kCborTagUint16:\n return new Uint16Array(value.buffer);\n case kCborTagInt16:\n return new Int16Array(value.buffer);\n case kCborTagUint32:\n return new Uint32Array(value.buffer);\n case kCborTagInt32:\n return new Int32Array(value.buffer);\n case kCborTagUint64:\n return new BigUint64Array(value.buffer);\n case kCborTagInt64:\n return new BigInt64Array(value.buffer);\n case kCborTagFloat32:\n return new Float32Array(value.buffer);\n case kCborTagFloat64:\n return new Float64Array(value.buffer);\n }\n }\n return this.tagger(tag, value);\n }\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return length as number;\n }\n }\n }\n\n decodeItem(): any {\n const initialByte = this.readUint8();\n return this.readItem(initialByte);\n }\n\n readArrayBuffer(length: number) {\n return this.commitRead(\n length,\n this.data.subarray(this.offset, this.offset + length)\n );\n }\n readFloat16() {\n const POW_2_24 = 5.960464477539063e-8;\n\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = this.readUint16();\n\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n\n if (exponent === 0x7c00) exponent = 0xff << 10;\n else if (exponent !== 0) exponent += (127 - 15) << 10;\n else if (fraction !== 0) return (sign ? -1 : 1) * fraction * POW_2_24;\n\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n readFloat32(): number {\n return this.commitRead(4, this.dataView.getFloat32(this.offset));\n }\n readFloat64(): number {\n return this.commitRead(8, this.dataView.getFloat64(this.offset));\n }\n readUint8(): number {\n return this.commitRead(1, this.data[this.offset]);\n }\n readUint16(): number {\n return this.commitRead(2, this.dataView.getUint16(this.offset));\n }\n readUint32(): number {\n return this.commitRead(4, this.dataView.getUint32(this.offset));\n }\n readUint64(): bigint {\n return this.commitRead(8, this.dataView.getBigUint64(this.offset));\n }\n readBreak(): boolean {\n if (this.data[this.offset] !== 0xff) return false;\n this.offset += 1;\n return true;\n }\n readLength(additionalInformation: number): number | bigint {\n if (additionalInformation < 24) return additionalInformation;\n if (additionalInformation === 24) return this.readUint8();\n if (additionalInformation === 25) return this.readUint16();\n if (additionalInformation === 26) return this.readUint32();\n if (additionalInformation === 27) {\n const integer = this.readUint64();\n if (integer <= Number.MAX_SAFE_INTEGER) return Number(integer);\n return integer;\n }\n if (additionalInformation === 31) return -1;\n throw new Error('CBORError: Invalid length encoding');\n }\n\n readIndefiniteStringLength(majorType: number): number {\n const initialByte = this.readUint8();\n if (initialByte === 0xff) return -1;\n const length = this.readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error('CBORError: Invalid indefinite length element');\n }\n return Number(length);\n }\n appendUtf16Data(utf16data: number[], length: number) {\n for (let i = 0; i < length; ++i) {\n let value = this.readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (this.readUint8() & 0x3f);\n length -= 1;\n } else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 2;\n } else {\n value =\n ((value & 0x07) << 18) |\n ((this.readUint8() & 0x3f) << 12) |\n ((this.readUint8() & 0x3f) << 6) |\n (this.readUint8() & 0x3f);\n length -= 3;\n }\n }\n\n if (value < 0x10000) {\n utf16data.push(value);\n } else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n\n private commitRead(length: number, value: T): T {\n this.offset += length;\n return value;\n }\n}\n", "import {Prefab} from './prefab.js';\nimport {\n defaultPropertyCloner,\n ComponentProperty,\n Type,\n PropertyRecord,\n} from './property.js';\nimport {\n AnimationComponent,\n BrokenComponent,\n CollisionComponent,\n Component,\n ComponentConstructor,\n DestroyedComponentInstance,\n InputComponent,\n LightComponent,\n MeshComponent,\n Object3D,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n LogTag,\n inheritProperties,\n} from './wonderland.js';\n\nimport {CBORReader, CBORType, getType, isUndefined} from './utils/cbor.js';\n\n/** Native components list */\nexport interface NativeComponents {\n 'collision': CollisionComponent;\n 'text': TextComponent;\n 'view': ViewComponent;\n 'mesh': MeshComponent;\n 'input': InputComponent;\n 'light': LightComponent;\n 'animation': AnimationComponent;\n 'physx': PhysXComponent;\n 'particle-effect': ParticleEffectComponent;\n}\n\n/**\n * Manage all component managers in a scene.\n *\n * @hidden\n */\nexport class ComponentManagers {\n /** Animation manager index. */\n readonly animation: number = -1;\n /** Collision manager index. */\n readonly collision: number = -1;\n /** JavaScript manager index. */\n readonly js: number = -1;\n /** Physx manager index. */\n readonly physx: number = -1;\n /** View manager index. */\n readonly view: number = -1;\n\n /**\n * Component class instances per type to avoid GC.\n *\n * @note Maps the manager index to the list of components.\n *\n * @todo: Refactor ResourceManager and re-use for components.\n */\n private readonly _cache: (Component | null)[][] = [];\n /** Manager index to component class. */\n private readonly _constructors: ComponentConstructor[];\n /* Manager name to the manager index. */\n private readonly _nativeManagers: Map = new Map();\n\n /** Host instance. */\n private readonly _scene: Prefab;\n\n constructor(scene: Prefab) {\n this._scene = scene;\n const wasm = this._scene.engine.wasm;\n\n const native = [\n AnimationComponent,\n CollisionComponent,\n InputComponent,\n LightComponent,\n MeshComponent,\n PhysXComponent,\n TextComponent,\n ViewComponent,\n ParticleEffectComponent,\n ];\n this._cache = new Array(native.length);\n this._constructors = new Array(native.length);\n\n for (const Class of native) {\n const ptr = wasm.tempUTF8(Class.TypeName);\n const manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._constructors[manager] = Class;\n this._cache[manager] = [] as Component[];\n this._nativeManagers.set(Class.TypeName, manager);\n }\n\n this.animation = this._nativeManagers.get(AnimationComponent.TypeName)!;\n this.collision = this._nativeManagers.get(CollisionComponent.TypeName)!;\n this.physx = this._nativeManagers.get(PhysXComponent.TypeName)!;\n this.view = this._nativeManagers.get(ViewComponent.TypeName)!;\n\n const ptr = wasm.tempUTF8('js');\n this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr);\n this._cache[this.js] = [] as Component[];\n }\n\n createJs(index: number, id: number, type: number, object: number) {\n const wasm = this._scene.engine.wasm;\n const ctor = wasm._componentTypes[type];\n if (!ctor) {\n throw new Error(`Type index ${type} isn't registered`);\n }\n\n const log = this._scene.engine.log;\n\n let component = null;\n try {\n component = new ctor(this._scene, this.js, id);\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during instantiation of component ${ctor.TypeName}`\n );\n log.error(LogTag.Component, e);\n component = new BrokenComponent(this._scene);\n }\n component._object = this._scene.wrap(object);\n\n try {\n component.resetProperties();\n } catch (e) {\n log.error(\n LogTag.Component,\n `Exception during ${component.type} resetProperties() on object ${component.object.name}`\n );\n log.error(LogTag.Component, e);\n }\n\n this._scene._jsComponents[index] = component;\n\n /* Add to cache. This is required because destruction is\n * ID-based and not index-based. */\n this._cache[this.js][id] = component;\n\n return component;\n }\n\n /**\n * Get components of type T.\n *\n * @param type Component class.\n * @returns An array containing all components in this scene.\n */\n components(type: ComponentConstructor, active: boolean): T[] {\n return this.componentsFromTypename(type.TypeName, active) as T[];\n }\n\n /**\n * Similar to {@link getComponents}, but directly from string.\n *\n * @param typename The component `TypeName` attribute.\n */\n componentsFromTypename(typename: string, active: boolean): Component[] {\n const wasm = this._scene.engine.wasm;\n\n const manager = this.getNativeManager(typename) ?? this.js;\n const subTypeIndex =\n manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0;\n\n const maxRead = wasm._tempMemSize / 4;\n const components: Component[] = [];\n let read = 0;\n let offset = 0;\n while (\n (read = wasm._wl_scene_get_components(\n this._scene._index,\n manager,\n subTypeIndex,\n active,\n offset,\n maxRead,\n wasm._tempMem\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n const id = wasm._tempMemUint32[i];\n components.push(this.wrapAny(manager, id) as Component);\n }\n /* Offset by `maxRead` because js components of different types are contiguous.\n * `read` could be less than `maxRead`, and we want to skip all\n * the components already processed. */\n offset += maxRead;\n }\n\n return components;\n }\n\n /**\n * Get component of type T.\n *\n * @note Currently only works for native components, but we will extend this later (and expose it in the API)\n */\n componentAt(type: ComponentConstructor, index: number): T {\n const wasm = this._scene.engine.wasm;\n const manager = this.getNativeManager(type.TypeName)!;\n const id = wasm._wl_scene_get_component(this._scene._index, manager, index);\n return this.wrapAny(manager, id) as T;\n }\n\n /**\n * Retrieve a cached component.\n *\n * @param manager The manager index.\n * @param id The component id.\n * @returns The component if cached, `null` otherwise.\n */\n get(manager: number, id: number) {\n return this._cache[manager][id] ?? null;\n }\n\n /**\n * Wrap the animation.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAnimation(id: number): AnimationComponent {\n return this.wrapNative(this.animation, id) as AnimationComponent;\n }\n\n /**\n * Wrap the collision.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapCollision(id: number): CollisionComponent {\n return this.wrapNative(this.collision, id) as CollisionComponent;\n }\n\n /**\n * Wrap the view.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapView(id: number): ViewComponent {\n return this.wrapNative(this.view, id) as ViewComponent;\n }\n\n /**\n * Wrap the physx.\n *\n * @param id Id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapPhysx(id: number): PhysXComponent {\n return this.wrapNative(this.physx, id) as PhysXComponent;\n }\n\n /**\n * Retrieves a component instance if it exists, or create and cache\n * a new one.\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link Object3D.addComponent} instead.\n *\n * @param componentType Component manager index\n * @param componentId Component id in the manager\n *\n * @returns JavaScript instance wrapping the native component\n */\n wrapNative(manager: number, id: number) {\n if (id < 0) return null;\n\n const cache = this._cache[manager];\n if (cache[id]) return cache[id];\n\n const scene = this._scene;\n const Class = this._constructors[manager];\n const component = new Class(scene, manager, id);\n cache[id] = component;\n return component;\n }\n\n /**\n * Wrap a native or js component.\n *\n * @throws For JavaScript components that weren't previously cached,\n * since that would be a bug in the runtime / api.\n *\n * @param manager The manager index.\n * @param id The id to wrap.\n * @returns The previous instance if it was cached, or a new one.\n */\n wrapAny(manager: number, id: number) {\n if (id < 0) return null;\n\n if (manager === this.js) {\n const found = this._cache[this.js][id];\n if (!found) {\n throw new Error('JS components must always be cached');\n }\n return found.constructor !== BrokenComponent ? found : null;\n }\n\n return this.wrapNative(manager, id);\n }\n\n getNativeManager(name: string): number | null {\n const manager = this._nativeManagers.get(name);\n return manager !== undefined ? manager : null;\n }\n\n /**\n * Perform cleanup upon component destruction.\n *\n * @param instance The instance to destroy.\n *\n * @hidden\n */\n destroy(instance: Component) {\n const localId = instance._localId;\n const manager = instance._manager;\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n (instance._manager as number) = -1;\n\n const erasePrototypeOnDestroy = this._scene.engine.erasePrototypeOnDestroy;\n /* Destroy the prototype of this instance to avoid using a dangling component */\n if (erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedComponentInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating a component with the same id. */\n this._cache[manager][localId] = null;\n }\n\n /** Number of managers **registered** in the scene, i.e., `js`, `names`, etc... */\n get managersCount() {\n return this._scene.engine.wasm._wl_scene_get_component_manager_count(\n this._scene._index\n );\n }\n}\n\nexport function resetComponentProperties(record: Component) {\n const ctor = record.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return;\n for (const name in properties) {\n const property = properties[name];\n const cloner = property.cloner ?? defaultPropertyCloner;\n (record as Record)[name] = cloner.clone(\n property.type,\n property.default\n );\n }\n}\n\nexport function setupComponentClass(ctor: ComponentConstructor | PropertyRecord) {\n inheritProperties(ctor);\n /** @todo: Merge the _setupDefaults and _setPropertyOrder calls with this function. */\n for (const name in ctor.Properties) {\n const prop = ctor.Properties[name];\n let record = null;\n switch (prop.type) {\n case Type.Record:\n record = prop.record;\n break;\n case Type.Array:\n record = prop.element?.record;\n break;\n default:\n break;\n }\n if (record && !record._propertyOrder) setupComponentClass(record);\n }\n _setupDefaults(ctor);\n _setPropertyOrder(ctor);\n}\n\n/**\n * Decode component properties from CBOR encoded data.\n *\n * ## Failure\n *\n * When decoding properties, failures will not be treated as errors. Failures include:\n * - Invalid parameters count\n * - Wrongly defined property\n *\n * When a failure occurs, the cbor reader will be consumed to prevent\n * errors to cascade in the following components.\n */\nexport class ComponentPropertyDecoder {\n scene: Prefab;\n offsets: Uint32Array;\n\n constructor(scene: Prefab, offsets: Uint32Array) {\n this.scene = scene;\n this.offsets = offsets;\n }\n\n decode(cbor: CBORReader, component: Component) {\n const ctor = component.constructor as ComponentConstructor;\n if (!ctor._propertyOrder) setupComponentClass(ctor);\n\n const typeInfo = cbor.readTypeInfo();\n if (ctor === BrokenComponent) {\n return cbor.readItem(typeInfo); /* Consumme the cbor state */\n }\n\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array) {\n this._error(`${component} parameters not encoded as an array.`);\n return cbor.readItem(typeInfo);\n }\n\n const paramNames = ctor._propertyOrder;\n const count = cbor.readArrayLength(typeInfo) as number;\n if (count !== paramNames.length) {\n this._error(\n `${component} has ${count} parameters encoded, but expected ${paramNames.length}`\n );\n return cbor.readItem(typeInfo, count);\n }\n\n for (let j = 0; j < count; ++j) {\n const name = paramNames[j];\n const property = ctor.Properties[name];\n (component as any)[name] = this.decodeProperty(cbor, name, property);\n }\n }\n\n decodeProperty(cbor: CBORReader, name: string, property: ComponentProperty) {\n const typeInfo = cbor.readTypeInfo();\n\n if (property.type === Type.Record) {\n return this.decodeRecordProperty(cbor, name, property, typeInfo);\n } else if (property.type === Type.Array) {\n return this.decodeArrayProperty(cbor, name, property, typeInfo);\n }\n\n let value = cbor.readItem(typeInfo);\n\n /* Default values are sent as undefined to avoid wasting space */\n if (value === undefined) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n value = cloner.clone(property.type, property.default);\n return value;\n }\n /* This skips unset resource parameters as those are sent\n * directly with type null. Offsets for Int and Float types\n * should always be 0. */\n /** @todo CBOR tag to mark resources? Wastes a byte though. */\n if (typeof value === 'number') {\n value += this.offsets[property.type];\n }\n\n const engine = this.scene.engine;\n switch (property.type) {\n case Type.Bool:\n case Type.Int:\n case Type.Float:\n case Type.String:\n case Type.Enum:\n case Type.Vector2:\n case Type.Vector3:\n case Type.Vector4:\n /* Nothing to do */\n return value;\n case Type.Object: {\n const wasm = engine.wasm;\n return value\n ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value))\n : null;\n }\n case Type.Mesh:\n return engine.meshes.wrap(value);\n case Type.Texture:\n return engine.textures.wrap(value);\n case Type.Material:\n return engine.materials.wrap(value);\n case Type.ParticleEffect:\n return engine.particleEffects.wrap(value);\n case Type.Animation:\n return this.scene.animations.wrap(value);\n case Type.Skin:\n return this.scene.skins.wrap(value);\n case Type.Color: {\n /* Colors are sent as Uint8Array. Normalize positive\n * integer values to 0-1. Don't assume any bit size\n * here, could become Uint16Array as well. */\n const max = (1 << (value.BYTES_PER_ELEMENT * 8)) - 1;\n return Float32Array.from(value, (f: number, _) => f / max);\n }\n }\n }\n\n decodeRecordProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Record parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return null;\n }\n const record = property.record;\n if (!record) {\n this._error(`Record parameter '${name}' .record is undefined`);\n cbor.readItem(typeInfo);\n return null;\n }\n\n if (!record._propertyOrder) setupComponentClass(record);\n const propertyOrder = record._propertyOrder as string[];\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) {\n const cloner = property.cloner ?? defaultPropertyCloner;\n return cloner.clone(property.type, property.default);\n }\n\n const result = new (record as any)();\n if (count !== propertyOrder.length) {\n const propsCount = propertyOrder.length;\n this._error(\n `Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`\n );\n cbor.readItem(typeInfo, count);\n return result;\n }\n const order = record._propertyOrder!;\n for (let i = 0; i < order.length; ++i) {\n const key = order[i];\n const prop = record.Properties![key];\n (result as any)[key] = this.decodeProperty(cbor, key, prop);\n }\n return result;\n }\n\n decodeArrayProperty(\n cbor: CBORReader,\n name: string,\n property: ComponentProperty,\n typeInfo: number\n ) {\n const log = this.scene.engine.log;\n const cborType = getType(typeInfo);\n if (cborType !== CBORType.Array && cborType !== CBORType.Constant) {\n /* For memory/performance reason, records are serialized as arrays,\n * since keys aren't needed during the decoding phase. */\n this._error(`Array parameter '${name}' not serialized as an array`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n if (!property.element) {\n this._error(`Array parameter '${name}' .element property is undefined`);\n cbor.readItem(typeInfo);\n return [];\n }\n\n const count = cbor.readArrayLength(typeInfo) as number;\n if (isUndefined(cborType, count)) return [];\n\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n result[i] = this.decodeProperty(cbor, name, property.element);\n }\n return result;\n }\n\n private _error(msg: string) {\n const log = this.scene.engine.log;\n log.error(LogTag.Engine, msg);\n }\n}\n\n/**\n * Default component parameter value per type.\n */\nconst _componentDefaults = new Map([\n [Type.Bool, false],\n [Type.Int, 0],\n [Type.Float, 0.0],\n [Type.String, ''],\n [Type.Enum, undefined],\n [Type.Object, null],\n [Type.Mesh, null],\n [Type.Texture, null],\n [Type.Material, null],\n [Type.Animation, null],\n [Type.Skin, null],\n [Type.ParticleEffect, null],\n [Type.Color, Float32Array.from([0.0, 0.0, 0.0, 1.0])],\n [Type.Vector2, Float32Array.from([0.0, 0.0])],\n [Type.Vector3, Float32Array.from([0.0, 0.0, 0.0])],\n [Type.Vector4, Float32Array.from([0.0, 0.0, 0.0, 0.0])],\n [Type.Record, undefined],\n [Type.Array, []],\n]);\n\n/**\n * Setup the defaults value of the properties on a given\n * component class.\n *\n * @param ctor The component class\n */\nfunction _setupDefaults(ctor: ComponentConstructor | PropertyRecord) {\n for (const name in ctor.Properties) {\n const p = ctor.Properties[name];\n\n if (p.type === Type.Enum) {\n /* Enum default can be a string or an index. Convert to and/or\n * sanity-check the index. */\n if (p.values?.length) {\n /* Don't try to look up the default if the user specified a\n * number or we already converted to one. */\n if (typeof p.default !== 'number') {\n /* If undefined, missing element or wrong type this returns\n * -1 which becomes 0 below. This matches editor behavior. */\n p.default = p.values.indexOf(p.default);\n }\n if (p.default < 0 || p.default >= p.values.length) {\n p.default = 0;\n }\n } else {\n /* There's no index value that makes sense */\n p.default = undefined;\n }\n } else if (\n (p.type === Type.Color ||\n p.type === Type.Vector2 ||\n p.type === Type.Vector3 ||\n p.type === Type.Vector4) &&\n Array.isArray(p.default)\n ) {\n /* Defaults provided by user code are currently always a standard\n * array, but become a typed array on the property */\n p.default = Float32Array.from(p.default);\n } else if (p.type === Type.Record && p.record) {\n p.default = new p.record();\n resetComponentProperties(p.default);\n } else if (p.default === undefined) {\n const cloner = p.cloner ?? defaultPropertyCloner;\n p.default = cloner.clone(p.type, _componentDefaults.get(p.type));\n }\n ctor.prototype[name] = p.default;\n }\n}\n\n/**\n * Determines a fixed order for property attributes used for deserialization.\n *\n * @param ctor The component class\n */\nfunction _setPropertyOrder(ctor: ComponentConstructor | PropertyRecord) {\n ctor._propertyOrder = ctor.hasOwnProperty('Properties')\n ? Object.keys(ctor.Properties!).sort()\n : [];\n}\n", "import {ImageLike, ProgressCallback} from '../types.js';\n\n/**\n * Transformer for {@link TransformStream} that passes read progress to a\n * callback.\n *\n * Invokes the callback for each streamed chunk, and one final time when the\n * stream closes.\n *\n * @hidden\n */\nclass FetchProgressTransformer implements Transformer {\n #progress = 0;\n #callback: ProgressCallback;\n #totalSize: number;\n\n /**\n * Constructor.\n * @param callback Callback that receives the progress.\n * @param totalSize Total size of the data. Pass 0 to indicate that the\n * size is unknown, then the callback will only be called once after\n * all data was transferred.\n */\n constructor(callback: ProgressCallback, totalSize = 0) {\n this.#callback = callback;\n this.#totalSize = totalSize;\n }\n\n transform(chunk: Uint8Array, controller: TransformStreamDefaultController) {\n controller.enqueue(chunk);\n this.#progress += chunk.length;\n if (this.#totalSize > 0) {\n this.#callback(this.#progress, this.#totalSize);\n }\n }\n\n flush() {\n this.#callback(this.#progress, this.#progress);\n }\n}\n\n/**\n * Sink for `WritableStream` that writes data to an `ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSink implements UnderlyingSink {\n #buffer: Uint8Array;\n #offset = 0;\n\n /**\n * Constructor.\n * @param size Initial size of the buffer. If less than the received data,\n * the buffer is dynamically reallocated.\n */\n constructor(size = 0) {\n this.#buffer = new Uint8Array(size);\n }\n\n /** Get the received data as an `ArrayBuffer`. */\n get arrayBuffer() {\n const arrayBuffer = this.#buffer.buffer;\n if (this.#offset < arrayBuffer.byteLength) {\n return arrayBuffer.slice(0, this.#offset);\n }\n return arrayBuffer;\n }\n\n write(chunk: Uint8Array) {\n const newLength = this.#offset + chunk.length;\n if (newLength > this.#buffer.length) {\n const newBuffer = new Uint8Array(\n Math.max(this.#buffer.length * 1.5, newLength)\n );\n newBuffer.set(this.#buffer);\n this.#buffer = newBuffer;\n }\n this.#buffer.set(chunk, this.#offset);\n this.#offset = newLength;\n }\n}\n\n/**\n * Source for `ReadableStream` that reads data from an`ArrayBuffer`.\n *\n * @hidden\n */\nexport class ArrayBufferSource implements UnderlyingSource {\n #buffer: ArrayBuffer;\n\n /**\n * Constructor.\n * @param buffer Buffer to read from.\n */\n constructor(buffer: ArrayBuffer) {\n this.#buffer = buffer;\n }\n\n start(controller: ReadableStreamController) {\n if (this.#buffer.byteLength > 0) {\n controller.enqueue(new Uint8Array(this.#buffer));\n }\n controller.close();\n }\n}\n\n/**\n * Fetch a file as an `ArrayBuffer`, with fetch progress passed to a callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n if (!onProgress || !res.body) return res.arrayBuffer();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n const sink = new ArrayBufferSink(size);\n await res.body\n .pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size)))\n .pipeTo(new WritableStream(sink));\n return sink.arrayBuffer;\n}\n\n/**\n * Fetch a file as a `ReadableStream`, with fetch progress passed to a\n * callback.\n *\n * @param path Path of the file to fetch.\n * @param onProgress Callback receiving the current fetch progress and total\n * size, in bytes. Also called a final time on completion.\n * @param signal Abort signal passed to `fetch()`.\n * @returns Promise that resolves when the fetch successfully completes.\n */\nexport async function fetchStreamWithProgress(\n path: string,\n onProgress?: ProgressCallback,\n signal?: AbortSignal\n): Promise> {\n const res = await fetch(path, {signal});\n if (!res.ok) throw res.statusText;\n const body = res.body ?? new ReadableStream();\n let size = Number(res.headers.get('Content-Length') ?? 0);\n if (Number.isNaN(size)) size = 0;\n if (!onProgress) return body;\n const stream = body.pipeThrough(\n new TransformStream(new FetchProgressTransformer(onProgress, size))\n );\n return stream;\n}\n\n/**\n * Get parent path from a URL.\n *\n * @param url URL to get the parent from.\n * @returns Parent URL without trailing slash.\n */\nexport function getBaseUrl(url: string): string {\n return url.substring(0, url.lastIndexOf('/'));\n}\n\n/**\n * Get the filename of a url.\n *\n * @param url The url to extract the name from.\n * @returns A string containing the filename. If no filename is found,\n * returns the input string.\n */\nexport function getFilename(url: string): string {\n if (url.endsWith('/')) {\n /* Remove trailing slash. */\n url = url.substring(0, url.lastIndexOf('/'));\n }\n const lastSlash = url.lastIndexOf('/');\n if (lastSlash < 0) return url;\n return url.substring(lastSlash + 1);\n}\n\n/**\n * Promise resolved once the image is ready to be used\n *\n * @param image The image, video, or canvas to wait for.\n * @returns A promise with the image, once it's ready to be used.\n */\nexport function onImageReady(image: T): Promise {\n return new Promise((res, rej) => {\n if (image instanceof HTMLVideoElement) {\n if (image.readyState >= 2) {\n res(image as T);\n return;\n }\n image.addEventListener(\n 'loadeddata',\n () => {\n if (image.readyState >= 2) res(image);\n },\n {once: true}\n );\n return;\n } else if (\n !(image instanceof HTMLImageElement) ||\n (image as HTMLImageElement).complete\n ) {\n res(image);\n return;\n }\n image.addEventListener('load', () => res(image), {once: true});\n image.addEventListener('error', rej, {once: true});\n });\n}\n", "import {ComponentManagers, NativeComponents} from './component.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ResourceManager, SceneResource} from './resources/resource.js';\nimport {ProgressCallback} from './types.js';\nimport {\n fetchStreamWithProgress,\n fetchWithProgress,\n getBaseUrl,\n getFilename,\n onImageReady,\n} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Animation,\n CollisionCallback,\n Component,\n ComponentConstructor,\n DestroyedObjectInstance,\n Object3D,\n Skin,\n} from './wonderland.js';\n\n/** Scene loading options. */\nexport interface SceneLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n}\n\n/** Loading options for in-memory data. */\nexport interface InMemoryLoadOptions {\n /** An in-memory buffer, containing the bytes of a `.bin` file. */\n buffer: ArrayBuffer;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/**\n * Loading options for streamed data.\n *\n * @hidden\n */\nexport interface StreamLoadOptions {\n /** Stream that transfers the bytes of a `.bin` file. */\n stream: ReadableStream;\n /** Path from which resources are resolved (images, languages, etc...). */\n baseURL: string;\n /** Name of the file. This is the same that will be retrieved via {@link Scene#filename} */\n filename?: string;\n}\n\n/** Options for loading files from a URL. */\nexport interface UrlLoadOptions {\n /** URL to load. */\n url: string;\n /** Signal to abort the file fetch request. */\n signal?: AbortSignal;\n /**\n * Whether to load the file as parts of it are fetched. If `false`,\n * fetches the entire file first before loading. Streamed loading reduces\n * memory usage. If not set, defaults to `true`.\n */\n streamed?: boolean;\n /**\n * Force to re-download the components bundle, and not use the version from cache.\n *\n * If not set, defaults to `false`.\n *\n * @note For now, this setting only affects the main scene loading.\n */\n nocache?: boolean;\n}\n\n/** Options used during loading. */\nexport type LoadOptions = string | (UrlLoadOptions & Partial);\n\n/**\n * Base class for prefabs, scenes, and glTF.\n *\n * For more information have a look at the derived types:\n * - {@link Scene} for Wonderland Engine activatable scenes (.bin)\n * - {@link PrefabGLTF} for glTF scenes\n *\n * #### Resources\n *\n * While **meshes**, **textures**, and **materials** are shared\n * on the {@link WonderlandEngine} instance, a scene comes with:\n * - Animations: Managed using {@link Prefab.animations}\n * - Skins: Managed using {@link Prefab.skins}\n *\n * Those resources are bound to the object hierarchy and are thus required to be\n * per-scene.\n *\n * #### Destruction\n *\n * For now, destroying a scene doesn't automatically remove the resources it\n * references in the engine. For more information, have a look at the\n * {@link Scene.destroy} method.\n *\n * #### Isolation\n *\n * It's forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addChild();\n * const objB = sceneB.addChild();\n * objA.parent = objB; // Throws\n * ```\n *\n * @category scene\n *\n * @since 1.2.0\n */\nexport class Prefab {\n /**\n * Create an object with shape `{url: string}`.\n *\n * - If the parameter is a string, a new object is returned\n * - If the parameter is an object, the same reference is returned\n *\n * @param options The url or options object.\n * @returns An object of the form `{url: string, ...}`.\n *\n * @hidden\n */\n static makeUrlLoadOptions(options: LoadOptions): UrlLoadOptions & Partial {\n return isString(options)\n ? ({url: options} as UrlLoadOptions & Partial)\n : options;\n }\n\n /**\n * Load an `ArrayBuffer` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns An {@link InMemoryLoadOptions} object.\n *\n * @hidden\n */\n static async loadBuffer(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const buffer = await fetchWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, buffer, baseURL, filename};\n }\n\n /**\n * Load a `ReadableStream` using fetch.\n *\n * @param opts The url or options.\n * @param progress Progress callback\n * @returns A {@link StreamLoadOptions} object.\n *\n * @hidden\n */\n static async loadStream(\n options: LoadOptions,\n progress?: ProgressCallback\n ): Promise {\n const opts = Prefab.makeUrlLoadOptions(options);\n const stream = await fetchStreamWithProgress(opts.url, progress, opts.signal);\n const baseURL = getBaseUrl(opts.url);\n const filename = getFilename(opts.url);\n return {...opts, stream, baseURL, filename};\n }\n\n /**\n * Validate the in-memory load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateBufferOptions(options: InMemoryLoadOptions): {\n buffer: ArrayBuffer;\n baseURL: string;\n url: string;\n } {\n const {buffer, baseURL, filename = 'scene.bin'} = options;\n if (!buffer) {\n throw new Error(\"missing 'buffer' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {buffer, baseURL, url};\n }\n\n /**\n * Validate the stream load options.\n *\n * @param options Options to validate.\n * @returns Validated options object.\n *\n * @hidden\n */\n static validateStreamOptions(options: StreamLoadOptions): {\n stream: ReadableStream;\n baseURL: string;\n url: string;\n } {\n const {stream, baseURL, filename = 'scene.bin'} = options;\n if (!stream) {\n throw new Error(\"missing 'stream' in options\");\n }\n if (!isString(baseURL)) {\n throw new Error(\"missing 'baseURL' in options\");\n }\n const url = baseURL ? `${baseURL}/${filename}` : filename;\n return {stream, baseURL, url};\n }\n\n /** Index in the scene manager. @hidden */\n readonly _index;\n /** @hidden */\n protected _engine: WonderlandEngine;\n\n /**\n * Component manager caching to avoid GC.\n *\n * @hidden\n */\n readonly _components: ComponentManagers;\n /**\n * JavaScript components for this scene.\n *\n * This array is moved into the WASM instance upon activation.\n *\n * @hidden\n */\n readonly _jsComponents: Component[] = [];\n\n /**\n * The map is indexed using the physx component id.\n *\n * @hidden\n */\n readonly _pxCallbacks: Map = new Map();\n\n /** @hidden */\n private readonly _animations;\n /** @hidden */\n private readonly _skins;\n\n /**\n * Object class instances to avoid GC.\n *\n * @hidden\n */\n private readonly _objectCache: (Object3D | null)[] = [];\n\n /**\n * `onDestroy()` depth.\n *\n * Multiple components can stack `onDestroy()` calls.\n */\n private _pendingDestroy: number = 0;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n this._engine = engine;\n this._index = index;\n\n this._components = new ComponentManagers(this);\n this._animations = new ResourceManager(this as Prefab, Animation);\n this._skins = new ResourceManager(this as Prefab, Skin);\n }\n\n /**\n * Add a new {@link Object3D} to the root object.\n *\n * See {@link Object3D.addChild} for more information.\n *\n * @returns A new {@link Object3D}.\n */\n addChild() {\n return this.wrap(0).addChild();\n }\n\n /**\n * Add an object to the scene.\n *\n * Alternatively, you can use {@link Prefab.addChild} to add the object\n * to the root, or {@link Object3D.addChild} to add the object to a given parent:\n *\n * ```js\n * const parent = scene.addChild();\n * const child = parent.addChild();\n * // Equivalent using scene.addObject\n * const sibling = scene.addObject(parent);\n * ```\n *\n * @param parent Parent object or `null`.\n * @returns A newly created object.\n */\n addObject(parent: Object3D | null = null): Object3D {\n if (parent?.markedDestroyed) {\n throw new Error(`Failed to add object. ${parent} is marked as destroyed.`);\n }\n this.assertOrigin(parent);\n return (parent ?? this.wrap(0)).addChild();\n }\n\n /**\n * Batch-add objects to the scene.\n *\n * Will provide better performance for adding multiple objects (e.g. > 16)\n * than calling {@link Scene#addObject} repeatedly in a loop.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * convervatively grow the memory in small steps.\n *\n * @experimental This API might change in upcoming versions.\n *\n * @param count Number of objects to add.\n * @param parent Parent object or `null`, default `null`.\n * @param componentCountHint Hint for how many components in total will\n * be added to the created objects afterwards, default `0`.\n * @returns Newly created objects\n */\n addObjects(\n count: number,\n parent: Object3D | null = null,\n componentCountHint: number = 0\n ): Object3D[] {\n const parentId = parent ? parent._id : 0;\n this.engine.wasm.requireTempMem(count * 2);\n const actualCount = this.engine.wasm._wl_scene_add_objects(\n this._index,\n parentId,\n count,\n componentCountHint || 0,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount);\n const wrapper = this.wrap.bind(this);\n const objects = Array.from(ids, wrapper);\n return objects;\n }\n\n /**\n * Pre-allocate memory for a given amount of objects and components.\n *\n * Will provide better performance for adding objects later with {@link Scene#addObject}\n * and {@link Scene#addObjects}.\n *\n * By providing upfront information of how many objects will be required,\n * the engine is able to batch-allocate the required memory rather than\n * conservatively grow the memory in small steps.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * @param objectCount Number of objects to add.\n * @param componentCountPerType Amount of components to\n * allocate for {@link Object3D.addComponent}, e.g. `{mesh: 100, collision: 200, \"my-comp\": 100}`.\n * @since 0.8.10\n */\n reserveObjects(objectCount: number, componentCountPerType: Record) {\n const wasm = this.engine.wasm;\n if (!componentCountPerType) return;\n\n const countsPerTypeIndex = wasm._tempMemInt;\n const managerCount = this._components.managersCount;\n for (let i = 0; i < managerCount; ++i) countsPerTypeIndex[i] = 0;\n\n const names = Object.keys(componentCountPerType);\n for (const name of names) {\n const count = componentCountPerType[name];\n const nativeIndex = this._components.getNativeManager(name);\n countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] +=\n count;\n }\n wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem);\n }\n\n /**\n * Root object's children.\n *\n * See {@link Object3D.getChildren} for more information.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const root = this.wrap(0);\n return root.getChildren(out);\n }\n\n /** @overload */\n getComponents(typeOrClass: K): NativeComponents[K][];\n /** @overload */\n getComponents(typeOrClass: string): Component[];\n /**\n * Get all the components of a given type.\n *\n * #### Usage\n *\n * ```js\n * const meshes = scene.getComponents('mesh');\n * const zombies = scene.getComponents(ZombieComponent);\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, false);\n }\n\n /** @overload */\n getActiveComponents(\n typeOrClass: K\n ): NativeComponents[K][];\n /** @overload */\n getActiveComponents(typeOrClass: string): Component[];\n /**\n * Get all the **active** components of a given type.\n *\n * ```js\n * const zombies = scene.getActiveComponents(ZombieComponent);\n * for(const zombie of zombies) zombie.active = false;\n *\n * const list = scene.getActiveComponents(ZombieComponent);\n * console.log(list.length); // Prints `0`\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @returns An array containing all components in this scene.\n * Returns an empty array if the component isn't registered.\n */\n getActiveComponents(typeOrClass: ComponentConstructor): T[];\n getActiveComponents(typeOrClass: ComponentConstructor | string): Component[] {\n const typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n return this._components.componentsFromTypename(typename, true);\n }\n\n /**\n * Top-level objects of this scene.\n *\n * See {@link Object3D.children} for more information.\n *\n * @since 1.2.0\n */\n get children(): Object3D[] {\n const root = this.wrap(0);\n return root.children;\n }\n\n /** The number of children of the root object. */\n get childrenCount(): number {\n const root = this.wrap(0);\n return this.engine.wasm._wl_object_get_children_count(root._id);\n }\n\n /**\n * Search for objects matching the name.\n *\n * See {@link Object3D.findByName} for more information.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the objects of\n * this scene. If `false`, this method will only perform the search in\n * root objects.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n const root = this.wrap(0);\n return root.findByName(name, recursive);\n }\n\n /**\n * Search for all **top-level** objects matching the name.\n *\n * See {@link Object3D.findByNameDirect} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameDirect(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameDirect(name);\n }\n\n /**\n * Search for **all objects** matching the name.\n *\n * See {@link Object3D.findByNameRecursive} for more information.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.2.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const root = this.wrap(0);\n return root.findByNameRecursive(name);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n *\n * @returns The object\n */\n wrap(objectId: number): Object3D {\n const cache = this._objectCache;\n const o = cache[objectId] || (cache[objectId] = new Object3D(this, objectId));\n return o;\n }\n\n /**\n * Destroy the scene.\n *\n * For now, destroying a scene doesn't remove the resources it references. Thus,\n * you will need to reload a main scene to free the memory.\n *\n * For more information about destruction, have a look at the {@link Scene.destroy} method.\n */\n destroy() {\n if (this._pendingDestroy > 0) {\n throw new Error(\"It's forbidden to destroy a scene from onDestroy().\");\n }\n this._pxCallbacks.clear();\n this.engine._destroyScene(this);\n }\n\n /* Public Getters & Setters */\n\n /**\n * `true` if the scene is active, `false` otherwise.\n *\n * Always false for {@link Prefab} and {@link PrefabGLTF}.\n */\n get isActive() {\n return !!this.engine.wasm._wl_scene_active(this._index);\n }\n\n /**\n * Relative directory of the scene that was loaded.\n *\n * This is used for loading any files relative to the scene.\n */\n get baseURL(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_baseURL(this._index);\n if (!ptr) return '';\n\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Filename used when loading the file.\n *\n * If the scenes was loaded from memory and no filename was provided,\n * this accessor will return an empty string.\n */\n get filename(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_filename(this._index);\n if (!ptr) return '';\n return wasm.UTF8ToString(ptr);\n }\n\n /** Animation resources */\n get animations() {\n return this._animations;\n }\n\n /** Skin resources */\n get skins() {\n return this._skins;\n }\n\n /** Hosting engine instance. */\n get engine(): WonderlandEngine {\n return this._engine;\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a class attribute / method will throw.\n */\n get isDestroyed(): boolean {\n return this._index < 0;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Scene(destroyed)';\n }\n return `Scene('${this.filename}', ${this._index})`;\n }\n\n /**\n * Checks that the input's scene is the same as this instance.\n *\n * It is forbidden to mix objects and components from different scenes, e.g.,\n *\n * ```js\n * const objA = sceneA.addObject();\n * const objB = sceneA.addObject();\n * objA.parent = objB; // Throws\n * ```\n *\n * @param other Object / component to check.\n *\n * @throws If other's scene isn't the same reference as this.\n */\n assertOrigin(other: Object3D | Component | SceneResource | undefined | null) {\n if (other && (other.scene as Prefab) !== this) {\n throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`);\n }\n }\n\n /**\n * Download components and initialize the scene.\n *\n * @hidden\n */\n _initialize() {\n const wasm = this.engine.wasm;\n /* Initialize component parameters */\n wasm._wl_scene_initialize(this._index);\n }\n\n /**\n * Perform cleanup upon object destruction.\n *\n * @param localId The id to destroy.\n *\n * @hidden\n */\n _destroyObject(localId: number) {\n const instance = this._objectCache[localId];\n if (!instance) return;\n\n (instance._id as number) = -1;\n (instance._localId as number) = -1;\n\n /* Destroy the prototype of this instance to avoid using a dangling object */\n if (this.engine.erasePrototypeOnDestroy && instance) {\n Object.setPrototypeOf(instance, DestroyedObjectInstance);\n }\n\n /* Remove from the cache to avoid side-effects when\n * re-creating an object with the same id. */\n this._objectCache[localId] = null;\n }\n\n /**\n * Performs JavaScript only destrution of a component.\n *\n * @note Prefer to use this method to manually calling the destruction code,\n * to protect the user from illegal method calls in {@link Component.onDestroy}.\n *\n * @param manager The component manager index.\n * @param id The component id.\n *\n * @hidden\n */\n _destroyComponent(manager: number, id: number) {\n const component = this._components.get(manager, id);\n ++this._pendingDestroy;\n component?._triggerOnDestroy();\n --this._pendingDestroy;\n }\n}\n", "/**\n * Schedule a timeout, resolving in `time` milliseconds.\n *\n * @note `setTimeout` being a macro-task, this method can\n * be use as a debounce call.\n *\n * @param time The time until it resolves, in milliseconds.\n * @returns A promise resolving in `time` ms.\n */\nexport function timeout(time: number): Promise {\n return new Promise((res) => setTimeout(res, time));\n}\n\n/**\n * Clamp the value in the range [min; max].\n *\n * @param val The value to clamp.\n * @param min The minimum value (inclusive).\n * @param max The maximum value (inclusive).\n * @returns The clamped value.\n */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.max(Math.min(max, val), min);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @note The string must be UTF-8.\n *\n * @param str The string to format.\n * @returns The string with the first letter capitalized.\n */\nexport function capitalizeFirstUTF8(str: string) {\n return `${str[0].toUpperCase()}${str.substring(1)}`;\n}\n\n/**\n * Create a proxy throwing destroyed errors upon access.\n *\n * @param type The type to display upon error\n * @returns The proxy instance\n */\nexport function createDestroyedProxy(type: string) {\n return new Proxy(\n {},\n {\n get(_, param: string) {\n if (param === 'isDestroyed') return true;\n throw new Error(`Cannot read '${param}' of destroyed ${type}`);\n },\n set(_, param: string) {\n throw new Error(`Cannot write '${param}' of destroyed ${type}`);\n },\n }\n );\n}\n", "/**\n * Types\n */\n\nimport {nativeProperty, enumerable} from './decorators.js';\nimport {WonderlandEngine} from './engine.js';\nimport {isImageLike, isNumber, isString} from './utils/object.js';\nimport {Emitter} from './utils/event.js';\nimport {Material} from './resources/material-manager.js';\nimport {\n ComponentProperty,\n PropertyRecord,\n Type,\n defaultPropertyCloner,\n} from './property.js';\nimport {Constructor, ImageLike, NumberArray, TypedArray, TypedArrayCtor} from './types.js';\nimport {Resource, SceneResource} from './resources/resource.js';\nimport {Prefab} from './prefab.js';\nimport {Scene} from './scene.js';\nimport {createDestroyedProxy} from './utils/misc.js';\nimport {NativeComponents, resetComponentProperties} from './component.js';\n\n/**\n * Component constructor type.\n *\n * For more information, please have a look at the {@link Component} class.\n */\nexport type ComponentConstructor = {\n new (scene: Prefab, manager: number, id: number): T;\n} & {\n _isBaseComponent: boolean;\n _propertyOrder: string[];\n TypeName: string;\n Properties: Record;\n InheritProperties?: boolean;\n onRegister?: (engine: WonderlandEngine) => void;\n};\n\n/**\n * Component prototype interface.\n *\n * User component's should have the same structure.\n */\nexport interface ComponentProto {\n /**\n * Triggered after the component instantiation.\n * For more information, please have a look at {@link Component.init}.\n */\n init?: () => void;\n /**\n * Triggered after the component is activated for the first time.\n * For more information, please have a look at {@link Component.start}.\n */\n start?: () => void;\n /**\n * Triggered once per frame.\n * For more information, please have a look at {@link Component.update}.\n *\n * @param dt Delta time, time since last update.\n */\n update?: (dt: number) => void;\n /**\n * Triggered when the component goes from deactivated to activated.\n * For more information, please have a look at {@link Component.onActivate}.\n */\n onActivate?: () => void;\n /**\n * Triggered when the component goes from activated to deactivated.\n * For more information, please have a look at {@link Component.onDeactivate}.\n */\n onDeactivate?: () => void;\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @since 0.9.0\n */\n onDestroy?: () => void;\n}\n\n/**\n * Callback triggered on collision event.\n *\n * @param type Type of the event.\n * @param other Other component that was (un)collided with\n */\nexport type CollisionCallback = (type: CollisionEventType, other: PhysXComponent) => void;\n\n/** @todo Remove at 1.0.0 */\ndeclare const WL: WonderlandEngine;\n\n/**\n * Wonderland Engine API\n * @namespace WL\n */\n\n/**\n * Default set of logging tags used by the API.\n */\nexport enum LogTag {\n /** Initialization, component registration, etc... */\n Engine = 0,\n /** Scene loading */\n Scene = 1,\n /** Component init, update, etc... */\n Component = 2,\n}\n\n/**\n * Collider type enum for {@link CollisionComponent}.\n */\nexport enum Collider {\n /**\n * **Sphere Collider**:\n *\n * Simplest and most performant collision shape. If this type is set on a\n * {@link CollisionComponent}, only the first component of\n * {@link CollisionComponent#extents} will be used to determine the radius.\n */\n Sphere = 0,\n\n /**\n * **Axis Aligned Bounding Box Collider**:\n *\n * Box that is always aligned to XYZ axis. It cannot be rotated but is more\n * efficient than {@link Collider.Box}.\n */\n AxisAlignedBox = 1,\n\n /**\n * **Aligned Bounding Box Collider**:\n *\n * Box that matches the object's rotation and translation correctly. This\n * is the least efficient collider and should only be chosen over\n * {@link Collider.Sphere} and {@link Collider.AxisAlignedBox} if really\n * necessary.\n */\n Box = 2,\n}\n\n/**\n * Alignment type enum for {@link TextComponent}.\n */\nexport enum Alignment {\n /** Text start is at object origin */\n Left = 0,\n\n /** Text center is at object origin */\n Center = 1,\n\n /** Text end is at object origin */\n Right = 2,\n}\n\n/**\n * Vertical alignment type enum for {@link TextComponent}.\n */\nexport enum VerticalAlignment {\n /** Text line is at object origin */\n Line = 0,\n\n /** Text middle is at object origin */\n Middle = 1,\n\n /** Text top is at object origin */\n Top = 2,\n\n /** Text bottom is at object origin */\n Bottom = 3,\n}\n\n/**\n * Justification type enum for {@link TextComponent}.\n *\n * @deprecated Please use {@link VerticalAlignment} instead.\n */\nexport const Justification = VerticalAlignment;\n\n/**\n * Effect type enum for {@link TextComponent}.\n */\nexport enum TextEffect {\n /** Text is rendered normally */\n None = 0,\n\n /** Text is rendered with an outline */\n Outline = 1,\n\n /** Text is rendered with a drop shadow */\n Shadow = 2,\n}\n\n/**\n * Wrap mode enum for {@link TextComponent}.\n *\n * @since 1.2.1\n */\nexport enum TextWrapMode {\n /** Text doesn't wrap automatically, only with explicit newline */\n None = 0,\n\n /** Text wraps at word boundaries */\n Soft = 1,\n\n /** Text wraps anywhere */\n Hard = 2,\n\n /** Text is cut off */\n Clip = 3,\n}\n\n/**\n * Input type enum for {@link InputComponent}.\n */\nexport enum InputType {\n /** Head input */\n Head = 0,\n\n /** Left eye input */\n EyeLeft = 1,\n\n /** Right eye input */\n EyeRight = 2,\n\n /** Left controller input */\n ControllerLeft = 3,\n\n /** Right controller input */\n ControllerRight = 4,\n\n /** Left ray input */\n RayLeft = 5,\n\n /** Right ray input */\n RayRight = 6,\n}\n\n/**\n * Projection type enum for {@link ViewComponent}.\n */\nexport enum ProjectionType {\n /** Perspective projection */\n Perspective = 0,\n\n /** Orthographic projection */\n Orthographic = 1,\n}\n\n/**\n * Light type enum for {@link LightComponent}.\n */\nexport enum LightType {\n /** Point light */\n Point = 0,\n\n /** Spot light */\n Spot = 1,\n\n /** Sun light / Directional light */\n Sun = 2,\n}\n\n/**\n * Animation state of {@link AnimationComponent}.\n */\nexport enum AnimationState {\n /** Animation is currently playing */\n Playing = 0,\n\n /** Animation is paused and will continue at current playback\n * time on {@link AnimationComponent#play} */\n Paused = 1,\n\n /** Animation is stopped */\n Stopped = 2,\n}\n\n/**\n * Root motion mode of {@link AnimationComponent}.\n */\nexport enum RootMotionMode {\n /** Do nothing */\n None = 0,\n /** Move and rotate root with the delta of its motion */\n ApplyToOwner = 1,\n /** Store the motion to be retrieved by a JS script */\n Script = 2,\n}\n\n/**\n * Rigid body force mode for {@link PhysXComponent#addForce} and {@link PhysXComponent#addTorque}.\n *\n * [PhysX API Reference](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxapi/files/structPxForceMode.html)\n */\nexport enum ForceMode {\n /** Apply as force */\n Force = 0,\n\n /** Apply as impulse */\n Impulse = 1,\n\n /** Apply as velocity change, mass dependent */\n VelocityChange = 2,\n\n /** Apply as mass dependent force */\n Acceleration = 3,\n}\n\n/**\n * Collision callback event type.\n */\nexport enum CollisionEventType {\n /** Touch/contact detected, collision */\n Touch = 0,\n\n /** Touch/contact lost, uncollide */\n TouchLost = 1,\n\n /** Touch/contact with trigger detected */\n TriggerTouch = 2,\n\n /** Touch/contact with trigger lost */\n TriggerTouchLost = 3,\n}\n\n/**\n * Rigid body {@link PhysXComponent#shape}.\n *\n * [PhysX SDK Guide](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/Geometry.html#geometry-types).\n */\nexport enum Shape {\n /** No shape. */\n None = 0,\n\n /** Sphere shape. */\n Sphere = 1,\n\n /** Capsule shape. */\n Capsule = 2,\n\n /** Box shape. */\n Box = 3,\n\n /** Plane shape. */\n Plane = 4,\n\n /** Convex mesh shape. */\n ConvexMesh = 5,\n\n /** Triangle mesh shape. */\n TriangleMesh = 6,\n}\n\n/**\n * Mesh attribute enum.\n * @since 0.9.0\n */\nexport enum MeshAttribute {\n /** Position attribute, 3 floats */\n Position = 0,\n\n /** Tangent attribute, 4 floats */\n Tangent = 1,\n\n /** Normal attribute, 3 floats */\n Normal = 2,\n\n /** Texture coordinate attribute, 2 floats */\n TextureCoordinate = 3,\n\n /** Color attribute, 4 floats, RGBA, range `0` to `1` */\n Color = 4,\n\n /** Joint id attribute, 8 unsigned ints */\n JointId = 5,\n\n /** Joint weights attribute, 8 floats */\n JointWeight = 6,\n\n /** Secondary texture coordinate attribute, 2 floats */\n SecondaryTextureCoordinate = 7,\n}\n\n/** Proxy used to override prototypes of destroyed objects. */\nexport const DestroyedObjectInstance = createDestroyedProxy('object');\n/** Proxy used to override prototypes of destroyed components. */\nexport const DestroyedComponentInstance = createDestroyedProxy('component');\n/** Proxy used to override prototypes of destroyed prefabs. */\nexport const DestroyedPrefabInstance = createDestroyedProxy('prefab/scene');\n\n/**\n * Check whether a given shape is a mesh or not.\n *\n * @param shape The shape to check.\n * @returns `true` if the shape is a mesh, `false` if it's a primitive.\n */\nfunction isMeshShape(shape: Shape): boolean {\n return shape === Shape.ConvexMesh || shape === Shape.TriangleMesh;\n}\n\n/**\n * Check whether an object is the {@link Component} class or not,\n *\n * @note This method if foolproof to developers inadvertently using\n * multiple Wonderland Engine API in a bundle.\n *\n * @param value The object to check.\n * @returns `true` if the object is a {@link Component} class, `false` otherwise.\n */\nfunction isBaseComponentClass(\n value: Constructor | null\n): value is ComponentConstructor {\n return (\n !!value &&\n value.hasOwnProperty('_isBaseComponent') &&\n (value as ComponentConstructor)._isBaseComponent\n );\n}\n\n/**\n * Constants.\n */\n\n/**\n * Default world up vector.\n */\nconst UP_VECTOR = [0, 1, 0];\n\nconst SQRT_3 = Math.sqrt(3);\n\n/**\n * Provides access to a component instance of a specified component type.\n *\n * @example\n *\n * This is how you extend this class to create your own custom\n * component:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * };\n * start() {}\n * onActivate() {}\n * onDeactivate() {}\n * update(dt) {}\n * }\n * ```\n *\n * In a component, the scene can be accessed using `this.scene`:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * start() {\n * const obj = this.scene.addObject();\n * }\n * }\n * ```\n */\nexport class Component {\n /**\n * Pack scene index and component id.\n *\n * @param scene Scene index.\n * @param id Component id.\n * @returns The packed id.\n *\n * @hidden\n */\n static _pack(scene: number, id: number) {\n return (scene << 22) | id;\n }\n\n /**\n * `true` for every class inheriting from this class.\n *\n * @note This is a workaround for `instanceof` to prevent issues\n * that could arise when an application ends up using multiple API versions.\n *\n * @hidden\n */\n static readonly _isBaseComponent = true;\n\n /**\n * Fixed order of attributes in the `Properties` array.\n *\n * @note This is used for parameter deserialization and is filled during\n * component registration.\n *\n * @hidden\n */\n static _propertyOrder: string[] = [];\n\n /**\n * Unique identifier for this component class.\n *\n * This is used to register, add, and retrieve components of a given type.\n */\n static TypeName: string;\n\n /**\n * Properties of this component class.\n *\n * Properties are public attributes that can be configured via the\n * Wonderland Editor.\n *\n * Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myBoolean: { type: Type.Boolean, default: false },\n * myFloat: { type: Type.Float, default: false },\n * myTexture: { type: Type.Texture, default: null },\n * };\n * }\n * ```\n *\n * Properties are automatically added to each component instance, and are\n * accessible like any JS attribute:\n *\n * ```js\n * // Creates a new component and set each properties value:\n * const myComponent = object.addComponent(MyComponent, {\n * myBoolean: true,\n * myFloat: 42.0,\n * myTexture: null\n * });\n *\n * // You can also override the properties on the instance:\n * myComponent.myBoolean = false;\n * myComponent.myFloat = -42.0;\n * ```\n *\n * #### References\n *\n * Reference types (i.e., mesh, object, etc...) can also be listed as **required**:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component {\n * static Properties = {\n * myObject: Property.object({required: true}),\n * myAnimation: Property.animation({required: true}),\n * myTexture: Property.texture({required: true}),\n * myMesh: Property.mesh({required: true}),\n * }\n * }\n * ```\n *\n * Please note that references are validated **once** before the call to {@link Component.start} only,\n * via the {@link Component.validateProperties} method.\n */\n static Properties: Record;\n\n /**\n * When set to `true`, the child class inherits from the parent\n * properties, as shown in the following example:\n *\n * ```js\n * import {Component, Property} from '@wonderlandengine/api';\n *\n * class Parent extends Component {\n * static TypeName = 'parent';\n * static Properties = {parentName: Property.string('parent')}\n * }\n *\n * class Child extends Parent {\n * static TypeName = 'child';\n * static Properties = {name: Property.string('child')}\n * static InheritProperties = true;\n *\n * start() {\n * // Works because `InheritProperties` is `true`.\n * console.log(`${this.name} inherits from ${this.parentName}`);\n * }\n * }\n * ```\n *\n * @note Properties defined in descendant classes will override properties\n * with the same name defined in ancestor classes.\n *\n * Defaults to `true`.\n */\n static InheritProperties?: boolean;\n\n /**\n * Called when this component class is registered.\n *\n * @example\n *\n * This callback can be used to register dependencies of a component,\n * e.g., component classes that need to be registered in order to add\n * them at runtime with {@link Object3D.addComponent}, independent of whether\n * they are used in the editor.\n *\n * ```js\n * class Spawner extends Component {\n * static TypeName = 'spawner';\n *\n * static onRegister(engine) {\n * engine.registerComponent(SpawnedComponent);\n * }\n *\n * // You can now use addComponent with SpawnedComponent\n * }\n * ```\n *\n * @example\n *\n * This callback can be used to register different implementations of a\n * component depending on client features or API versions.\n *\n * ```js\n * // Properties need to be the same for all implementations!\n * const SharedProperties = {};\n *\n * class Anchor extends Component {\n * static TypeName = 'spawner';\n * static Properties = SharedProperties;\n *\n * static onRegister(engine) {\n * if(navigator.xr === undefined) {\n * /* WebXR unsupported, keep this dummy component *\\/\n * return;\n * }\n * /* WebXR supported! Override already registered dummy implementation\n * * with one depending on hit-test API support *\\/\n * engine.registerComponent(window.HitTestSource === undefined ?\n * AnchorWithoutHitTest : AnchorWithHitTest);\n * }\n *\n * // This one implements no functions\n * }\n * ```\n */\n static onRegister?: (engine: WonderlandEngine) => void;\n\n /**\n * Allows to inherit properties directly inside the editor.\n *\n * @note Do not use directly, prefer using {@link inheritProperties}.\n *\n * @hidden\n */\n static _inheritProperties() {\n inheritProperties(this);\n }\n\n /**\n * Triggered when the component is initialized by the runtime. This method\n * will only be triggered **once** after instantiation.\n *\n * @note During the initialization phase, `this.scene` will not match\n * `engine.scene`, since `engine.scene` references the **active** scene:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * init() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `false`\n * }\n * start() {\n * const activeScene = this.engine.scene;\n * console.log(this.scene === activeScene); // Prints `true`\n * }\n * }\n * ```\n */\n init?(): void;\n\n /**\n * Triggered when the component is started by the runtime, or activated.\n *\n * You can use that to re-initialize the state of the component.\n */\n start?(): void;\n\n /**\n * Triggered **every frame** by the runtime.\n *\n * You should perform your business logic in this method. Example:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * class TranslateForwardComponent extends Component {\n * static TypeName = 'translate-forward-component';\n * static Properties = {\n * speed: { type: Type.Float, default: 1.0 }\n * };\n * constructor() {\n * this._forward = new Float32Array([0, 0, 0]);\n * }\n * update(dt) {\n * this.object.getForward(this._forward);\n * this._forward[0] *= this.speed;\n * this._forward[1] *= this.speed;\n * this._forward[2] *= this.speed;\n * this.object.translate(this._forward);\n * }\n * }\n * ```\n *\n * @param delta Elapsed time between this frame and the previous one, in **seconds**.\n */\n update?(delta: number): void;\n\n /**\n * Triggered when the component goes from an inactive state to an active state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), all the components\n * that were previously active will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onActivate?(): void;\n\n /**\n * Triggered when the component goes from an activated state to an inactive state.\n *\n * @note When using ({@link WonderlandEngine.switchTo}), the components of\n * the scene getting deactivated will trigger this method.\n *\n * @note You can manually activate or deactivate a component using: {@link Component.active:setter}.\n */\n onDeactivate?(): void;\n\n /**\n * Triggered when the component is removed from its object.\n * For more information, please have a look at {@link Component.onDestroy}.\n *\n * @note This method will not be triggered for inactive scene being destroyed.\n *\n * @since 0.9.0\n */\n onDestroy?(): void;\n\n /** Manager index. @hidden */\n readonly _manager: number;\n /** Packed id, containing the scene and the local id. @hidden */\n readonly _id: number;\n /** Id relative to the scene component's manager. @hidden */\n readonly _localId: number;\n\n /**\n * Object containing this object.\n *\n * **Note**: This is cached for faster retrieval.\n *\n * @hidden\n */\n _object: Object3D | null;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n\n /**\n * Create a new instance\n *\n * @param engine The engine instance.\n * @param manager Index of the manager.\n * @param id WASM component instance index.\n *\n * @hidden\n */\n constructor(scene: Prefab, manager: number = -1, id: number = -1) {\n this._scene = scene;\n this._manager = manager;\n this._localId = id;\n this._id = Component._pack(scene._index, id);\n this._object = null;\n }\n\n /** Scene this component is part of. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /** The name of this component's type */\n get type(): string {\n const ctor = this.constructor as ComponentConstructor;\n return ctor.TypeName;\n }\n\n /** The object this component is attached to. */\n get object(): Object3D {\n if (!this._object) {\n const objectId = this.engine.wasm._wl_component_get_object(\n this._manager,\n this._id\n );\n this._object = this._scene.wrap(objectId);\n }\n return this._object;\n }\n\n /**\n * Set whether this component is active.\n *\n * Activating/deactivating a component comes at a small cost of reordering\n * components in the respective component manager. This function therefore\n * is not a trivial assignment.\n *\n * Does nothing if the component is already activated/deactivated.\n *\n * @param active New active state.\n */\n set active(active: boolean) {\n this.engine.wasm._wl_component_setActive(this._manager, this._id, active);\n }\n\n /** `true` if the component is marked as active and its scene is active. */\n get active(): boolean {\n return this.markedActive && this._scene.isActive;\n }\n\n /**\n * `true` if the component is marked as active in the scene, `false` otherwise.\n *\n * @note At the opposite of {@link Component.active}, this accessor doesn't\n * take into account whether the scene is active or not.\n */\n get markedActive(): boolean {\n return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0;\n }\n\n /**\n * Copy all the properties from `src` into this instance.\n *\n * @note Only properties are copied. If a component needs to\n * copy extra data, it needs to override this method.\n *\n * #### Example\n *\n * ```js\n * class MyComponent extends Component {\n * nonPropertyData = 'Hello World';\n *\n * copy(src) {\n * super.copy(src);\n * this.nonPropertyData = src.nonPropertyData;\n * return this;\n * }\n * }\n * ```\n *\n * @note This method is called by {@link Object3D.clone}. Do not attempt to:\n * - Create new component\n * - Read references to other objects\n *\n * When cloning via {@link Object3D.clone}, this method will be called before\n * {@link Component.start}.\n *\n * @note JavaScript component properties aren't retargeted. Thus, references\n * inside the source object will not be retargeted to the destination object,\n * at the exception of the skin data on {@link MeshComponent} and {@link AnimationComponent}.\n *\n * @param src The source component to copy from.\n *\n * @returns Reference to self (for method chaining).\n */\n copy(src: Record): this {\n const ctor = this.constructor as ComponentConstructor;\n const properties = ctor.Properties;\n if (!properties) return this;\n for (const name in properties) {\n const property = properties[name];\n const value = src[name];\n if (value === undefined) continue;\n const cloner = property.cloner ?? defaultPropertyCloner;\n (this as Record)[name] = cloner.clone(property.type, value);\n }\n return this;\n }\n\n /**\n * Remove this component from its objects and destroy it.\n *\n * It is best practice to set the component to `null` after,\n * to ensure it does not get used later.\n *\n * ```js\n * c.destroy();\n * c = null;\n * ```\n * @since 0.9.0\n */\n destroy(): void {\n const manager = this._manager;\n if (manager < 0 || this._id < 0) return;\n\n /* This call will mark the component destroyed,\n * automatically calling `_triggerOnDestroy`. */\n this.engine.wasm._wl_component_remove(manager, this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const componentA = obj.addComponent('mesh');\n * const componentB = obj.addComponent('mesh');\n * const componentC = componentB;\n * console.log(componentA === componentB); // false\n * console.log(componentA === componentA); // true\n * console.log(componentB === componentC); // true\n * ```\n */\n equals(otherComponent: Component | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherComponent) return false;\n return this._manager === otherComponent._manager && this._id === otherComponent._id;\n }\n\n /**\n * Reset the component properties to default.\n *\n * @note This is automatically called during the component instantiation.\n *\n * @returns Reference to self (for method chaining).\n */\n resetProperties(): this {\n resetComponentProperties(this);\n return this;\n }\n\n /** @deprecated Use {@link Component.resetProperties} instead. */\n reset(): this {\n return this.resetProperties();\n }\n\n /**\n * Validate the properties on this instance.\n *\n * @throws If any of the required properties isn't initialized\n * on this instance.\n */\n validateProperties(): void {\n const ctor = this.constructor as ComponentConstructor;\n if (!ctor.Properties) return;\n\n for (const name in ctor.Properties) {\n if (!ctor.Properties[name].required) continue;\n if (!(this as Record)[name]) {\n throw new Error(`Property '${name}' is required but was not initialized`);\n }\n }\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Component(destroyed)';\n }\n return `Component('${this.type}', ${this._localId})`;\n }\n\n /**\n * `true` if the component is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const comp = obj.addComponent('mesh');\n * comp.customParam = 'Hello World!';\n *\n * console.log(comp.isDestroyed); // Prints `false`\n * comp.destroy();\n * console.log(comp.isDestroyed); // Prints `true`\n * console.log(comp.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /** @hidden */\n _copy(src: this, offsetsPtr: number, copyInfoPtr: number) {\n const wasm = this.engine.wasm;\n\n /** @todo: Support retargeting for `Object3D.clone` as well. */\n const offsets = wasm.HEAPU32;\n const offsetsStart = offsetsPtr >>> 2;\n\n const copyInfoStart = copyInfoPtr >>> 1;\n const srcRootIndex = wasm.HEAPU16[copyInfoStart]; /* Defaults to max ushort */\n const srcRootSize = wasm.HEAPU16[copyInfoStart + 1]; /* Defaults to 0 */\n const dstRootIndex = wasm.HEAPU16[copyInfoStart + 2]; /* Defaults to 0 */\n\n const destScene = this._scene;\n\n const ctor = this.constructor as ComponentConstructor;\n for (const name in ctor.Properties) {\n const value = (src as Record)[name];\n if (value === null) {\n (this as Record)[name] = null;\n continue;\n }\n\n const prop = ctor.Properties[name];\n const offset = offsets[offsetsStart + prop.type];\n\n let retargeted = null;\n switch (prop.type) {\n case Type.Object: {\n let index = wasm._wl_object_index((value as Object3D)._id) + offset;\n const dist = index - srcRootIndex;\n if (dist >= 0 && dist <= srcRootSize) {\n /* Only retarget if a reference points into the source hierarchy. */\n index = dstRootIndex + dist;\n }\n const id = wasm._wl_object_id(destScene._index, index);\n retargeted = destScene.wrap(id);\n break;\n }\n case Type.Animation:\n retargeted = destScene.animations.wrap(\n offset + (value as Animation)._index\n );\n break;\n case Type.Skin:\n retargeted = destScene.skins.wrap(offset + (value as Skin)._index);\n break;\n default:\n const cloner = prop.cloner ?? defaultPropertyCloner;\n retargeted = cloner.clone(prop.type, value);\n break;\n }\n (this as Record)[name] = retargeted;\n }\n return this;\n }\n\n /**\n * Trigger the component {@link Component.init} method.\n *\n * @note Use this method instead of directly calling {@link Component.init},\n * because this method creates an handler for the {@link Component.start}.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerInit() {\n if (this.init) {\n try {\n this.init();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} init() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /* Arm onActivate() with the initial start() call */\n const oldActivate = this.onActivate;\n this.onActivate = function () {\n this.onActivate = oldActivate;\n let failed = false;\n try {\n this.validateProperties();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} validateProperties() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n try {\n this.start?.();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} start() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n failed = true;\n }\n\n if (failed) {\n this.active = false;\n return;\n }\n\n if (!this.onActivate) return;\n\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n };\n }\n\n /**\n * Trigger the component {@link Component.update} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerUpdate(dt: number) {\n if (!this.update) return;\n try {\n this.update(dt);\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} update() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n if (this.engine.wasm._deactivate_component_on_error) {\n this.active = false;\n }\n }\n }\n\n /**\n * Trigger the component {@link Component.onActivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnActivate() {\n if (!this.onActivate) return;\n try {\n this.onActivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onActivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDeactivate} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDeactivate() {\n if (!this.onDeactivate) return;\n try {\n this.onDeactivate();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDeactivate() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n }\n\n /**\n * Trigger the component {@link Component.onDestroy} method.\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _triggerOnDestroy() {\n try {\n if (this.onDestroy) this.onDestroy();\n } catch (e) {\n this.engine.log.error(\n LogTag.Component,\n `Exception during ${this.type} onDestroy() on object ${this.object.name}`\n );\n this.engine.log.error(LogTag.Component, e);\n }\n this._scene._components.destroy(this);\n }\n}\n\n/**\n * Components must be registered before loading / appending a scene.\n *\n * It's possible to end up with a broken component in the following cases:\n *\n * - Component wasn't registered when the scene was loaded\n * - Component instantiation failed\n *\n * This dummy component is thus used as a placeholder by the engine.\n */\nexport class BrokenComponent extends Component {\n static TypeName = '__broken-component__';\n}\n\n/**\n * Merge the ascendant properties of class\n *\n * This method walks the prototype chain, and merges\n * all the properties found in parent components.\n *\n * Example:\n *\n * ```js\n * import {Property, inheritProperties} from '@wonderlandengine/api';\n *\n * class Parent {\n * static Properties = { parentProp: Property.string('parent') };\n * }\n *\n * class Child extends Parent {\n * static Properties = { childProp: Property.string('child') };\n * }\n * inheritProperties(Child);\n * ```\n *\n * @param target The class in which properties should be merged\n *\n * @hidden\n */\nexport function inheritProperties(target: ComponentConstructor | PropertyRecord) {\n const chain: ComponentConstructor[] = [];\n let curr: Constructor | null = target;\n while (curr && !isBaseComponentClass(curr)) {\n const comp = curr as ComponentConstructor;\n\n /* Stop at the first class that doesn't require properties merging */\n const needsMerge = comp.hasOwnProperty('InheritProperties')\n ? comp.InheritProperties\n : true;\n if (!needsMerge) break;\n\n if (comp.hasOwnProperty('Properties')) {\n /* We push properties even if the object isn't deriving from a Component class.\n * This could theoretically lead to issue, when inheriting from another type\n * of component (lit-like elements) but extremely unlikely. */\n chain.push(comp);\n }\n curr = Object.getPrototypeOf(curr);\n }\n\n /* No prototype merge is needed. */\n if (!chain.length || (chain.length === 1 && chain[0] === target)) {\n return;\n }\n\n const merged: Record = {};\n for (let i = chain.length - 1; i >= 0; --i) {\n Object.assign(merged, chain[i].Properties);\n }\n target.Properties = merged;\n}\n\n/**\n * Native collision component.\n *\n * Provides access to a native collision component instance.\n */\nexport class CollisionComponent extends Component {\n /** @override */\n static TypeName = 'collision';\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * Collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the returned vector is used.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** Collision component collider */\n @nativeProperty()\n get collider(): Collider {\n return this.engine.wasm._wl_collision_component_get_collider(this._id);\n }\n\n /**\n * Set collision component collider.\n *\n * @param collider Collider of the collision component.\n */\n set collider(collider: Collider) {\n this.engine.wasm._wl_collision_component_set_collider(this._id, collider);\n }\n\n /**\n * Equivalent to {@link CollisionComponent.getExtents}.\n *\n * @note Prefer to use {@link CollisionComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n }\n\n /**\n * Set collision component extents.\n *\n * If {@link collider} returns {@link Collider.Sphere}, only the first\n * component of the passed vector is used.\n *\n * Example:\n *\n * ```js\n * // Spans 1 unit on the x-axis, 2 on the y-axis, 3 on the z-axis.\n * collision.extent = [1, 2, 3];\n * ```\n *\n * @param extents Extents of the collision component, expects a\n * 3 component array.\n */\n set extents(extents: Readonly) {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_collision_component_get_extents(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = extents[0];\n wasm.HEAPF32[ptr + 1] = extents[1];\n wasm.HEAPF32[ptr + 2] = extents[2];\n }\n\n /**\n * Get collision component radius.\n *\n * @note If {@link collider} is not {@link Collider.Sphere}, the returned value\n * corresponds to the radius of a sphere enclosing the shape.\n *\n * Example:\n *\n * ```js\n * sphere.radius = 3.0;\n * console.log(sphere.radius); // 3.0\n *\n * box.extents = [2.0, 2.0, 2.0];\n * console.log(box.radius); // 1.732...\n * ```\n *\n */\n get radius(): number {\n const wasm = this.engine.wasm;\n if (this.collider === Collider.Sphere)\n return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2];\n const extents = new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_collision_component_get_extents(this._id),\n 3\n );\n const x2 = extents[0] * extents[0];\n const y2 = extents[1] * extents[1];\n const z2 = extents[2] * extents[2];\n return Math.sqrt(x2 + y2 + z2) / 2;\n }\n\n /**\n * Set collision component radius.\n *\n * @param radius Radius of the collision component\n *\n * @note If {@link collider} is not {@link Collider.Sphere},\n * the extents are set to form a square that fits a sphere with the provided radius.\n *\n * Example:\n *\n * ```js\n * aabbCollision.radius = 2.0; // AABB fits a sphere of radius 2.0\n * boxCollision.radius = 3.0; // Box now fits a sphere of radius 3.0, keeping orientation\n * ```\n *\n */\n set radius(radius: number) {\n const length = this.collider === Collider.Sphere ? radius : (2 * radius) / SQRT_3;\n this.extents.set([length, length, length]);\n }\n\n /**\n * Collision component group.\n *\n * The groups is a bitmask that is compared to other components in {@link CollisionComponent#queryOverlaps}\n * or the group in {@link Scene#rayCast}.\n *\n * Colliders that have no common groups will not overlap with each other. If a collider\n * has none of the groups set for {@link Scene#rayCast}, the ray will not hit it.\n *\n * Each bit represents belonging to a group, see example.\n *\n * ```js\n * // c belongs to group 2\n * c.group = (1 << 2);\n *\n * // c belongs to group 0\n * c.group = (1 << 0);\n *\n * // c belongs to group 0 *and* 2\n * c.group = (1 << 0) | (1 << 2);\n *\n * (c.group & (1 << 2)) != 0; // true\n * (c.group & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get group(): number {\n return this.engine.wasm._wl_collision_component_get_group(this._id);\n }\n\n /**\n * Set collision component group.\n *\n * @param group Group mask of the collision component.\n */\n set group(group: number) {\n this.engine.wasm._wl_collision_component_set_group(this._id, group);\n }\n\n /**\n * Query overlapping objects.\n *\n * Usage:\n *\n * ```js\n * const collision = object.getComponent('collision');\n * const overlaps = collision.queryOverlaps();\n * for(const otherCollision of overlaps) {\n * const otherObject = otherCollision.object;\n * console.log(`Collision with object ${otherObject.objectId}`);\n * }\n * ```\n *\n * @returns Collision components overlapping this collider.\n */\n queryOverlaps(): CollisionComponent[] {\n const count = this.engine.wasm._wl_collision_component_query_overlaps(\n this._id,\n this.engine.wasm._tempMem,\n this.engine.wasm._tempMemSize >> 1\n );\n const overlaps: CollisionComponent[] = new Array(count);\n for (let i = 0; i < count; ++i) {\n const id = this.engine.wasm._tempMemUint16[i];\n overlaps[i] = this._scene._components.wrapCollision(id);\n }\n return overlaps;\n }\n}\n\n/**\n * Native text component\n *\n * Provides access to a native text component instance\n */\nexport class TextComponent extends Component {\n /** @override */\n static TypeName = 'text';\n\n /** Text component alignment. */\n @nativeProperty()\n get alignment(): Alignment {\n return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id);\n }\n\n /**\n * Set text component alignment.\n *\n * @param alignment Alignment for the text component.\n */\n set alignment(alignment: Alignment) {\n this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment);\n }\n\n /**\n * Text component vertical alignment.\n * @since 1.2.0\n */\n @nativeProperty()\n get verticalAlignment(): VerticalAlignment {\n return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id);\n }\n\n /**\n * Set text component vertical alignment.\n *\n * @param verticalAlignment Vertical for the text component.\n * @since 1.2.0\n */\n set verticalAlignment(verticalAlignment: VerticalAlignment) {\n this.engine.wasm._wl_text_component_set_vertical_alignment(\n this._id,\n verticalAlignment\n );\n }\n\n /**\n * Text component justification.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n @nativeProperty()\n get justification() {\n return this.verticalAlignment;\n }\n\n /**\n * Set text component justification.\n *\n * @param justification Justification for the text component.\n *\n * @deprecated Please use {@link TextComponent.verticalAlignment} instead.\n */\n set justification(justification: VerticalAlignment) {\n this.verticalAlignment = justification;\n }\n\n /**\n * Whether text is justified horizontally.\n *\n * Aligns text horizontally to both margins by adding space between words.\n *\n * Requires {@link wrapMode} to be {@link TextWrapMode.Soft} or\n * {@link TextWrapMode.Hard} and non-0 {@link wrapWidth}.\n *\n * The last line in a paragraph is never justified and respects\n * {@link alignment}.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get justified(): boolean {\n return !!this.engine.wasm._wl_text_component_get_justified(this._id);\n }\n\n /**\n * Set whether text is justified horizontally.\n *\n * @param justified New justified state for the text component.\n * @since 1.3.0\n */\n set justified(justified: boolean) {\n this.engine.wasm._wl_text_component_set_justified(this._id, justified);\n }\n\n /** Text component character spacing. */\n @nativeProperty()\n get characterSpacing(): number {\n return this.engine.wasm._wl_text_component_get_character_spacing(this._id);\n }\n\n /**\n * Set text component character spacing.\n *\n * @param spacing Character spacing for the text component.\n */\n set characterSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing);\n }\n\n /** Text component line spacing. */\n @nativeProperty()\n get lineSpacing(): number {\n return this.engine.wasm._wl_text_component_get_line_spacing(this._id);\n }\n\n /**\n * Set text component line spacing.\n *\n * @param spacing Line spacing for the text component\n */\n set lineSpacing(spacing: number) {\n this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing);\n }\n\n /** Text component effect. */\n @nativeProperty()\n get effect(): TextEffect {\n return this.engine.wasm._wl_text_component_get_effect(this._id);\n }\n\n /**\n * Set text component effect.\n *\n * @param effect Effect for the text component\n */\n set effect(effect: TextEffect) {\n this.engine.wasm._wl_text_component_set_effect(this._id, effect);\n }\n\n /**\n * Equivalent to {@link getEffectOffset}.\n *\n * @note Prefer to use {@link getEffectOffset} for performance.\n *\n * @since 1.3.0\n */\n @nativeProperty()\n get effectOffset(): Float32Array {\n return this.getEffectOffset();\n }\n\n /**\n * Equivalent to {@link setEffectOffset}.\n *\n * @since 1.3.0\n */\n set effectOffset(offset: Readonly) {\n this.setEffectOffset(offset);\n }\n\n /** @overload */\n getEffectOffset(): Float32Array;\n /**\n * Get text component effect offset.\n *\n * @param out Destination array, expected to have at least 2 elements.\n * @returns The `out` parameter.\n *\n * @since 1.3.0\n */\n getEffectOffset(out: T): T;\n getEffectOffset(out: NumberArray = new Float32Array(2)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n return out;\n }\n\n /**\n * Set text component effect offset.\n *\n * The offset is given as X and Y factors for {@link Font.emHeight}. E.g. a\n * value of 2 in one axis offsets the effect by two font line heights. A\n * positive Y value moves the effect **upwards**.\n *\n * @param offset Array with new offset, expected to have at least 2 elements.\n *\n * @since 1.3.0\n */\n setEffectOffset(offset: Readonly) {\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(offset);\n wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem);\n }\n\n /**\n * Text component line wrap mode.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapMode(): TextWrapMode {\n return this.engine.wasm._wl_text_component_get_wrapMode(this._id);\n }\n\n /**\n * Set text component line wrap mode.\n *\n * @param wrapMode Line wrap mode for the text component.\n * @since 1.2.1\n */\n set wrapMode(wrapMode: TextWrapMode) {\n this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode);\n }\n\n /**\n * Text component line wrap width, in object space.\n * @since 1.2.1\n */\n @nativeProperty()\n get wrapWidth(): number {\n return this.engine.wasm._wl_text_component_get_wrapWidth(this._id);\n }\n\n /**\n * Set text component line wrap width.\n *\n * Only takes effect when {@link wrapMode} is something other than\n * {@link TextWrapMode.None}.\n *\n * @param width Line wrap width for the text component, in object space.\n * @since 1.2.1\n */\n set wrapWidth(width: number) {\n this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width);\n }\n\n /** Text component text. */\n @nativeProperty()\n get text(): string {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_text_component_get_text(this._id);\n return wasm.UTF8ToString(ptr);\n }\n\n /**\n * Set text component text.\n *\n * @param text Text of the text component.\n */\n set text(text: any) {\n const wasm = this.engine.wasm;\n wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString()));\n }\n\n /**\n * Set material to render the text with.\n *\n * @param material New material.\n */\n set material(material: Material | null | undefined) {\n const matIndex = material ? material._id : 0;\n this.engine.wasm._wl_text_component_set_material(this._id, matIndex);\n }\n\n /** Material used to render the text. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_text_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** @overload */\n getBoundingBoxForText(text: string): Float32Array;\n /**\n * Axis-aligned bounding box for a given text, in object space.\n *\n * To calculate the size for the currently set text, use\n * {@link getBoundingBox}.\n *\n * Useful for calculating the text size before an update and potentially\n * adjusting the text:\n *\n * ```js\n * let updatedName = 'some very long name';\n * const box = new Float32Array(4);\n * text.getBoundingBoxForText(updatedName, box);\n * const width = box[2] - box[0];\n * if(width > 2.0) {\n * updatedName = updatedName.slice(0, 5) + '...';\n * }\n * text.text = updatedName;\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBoxForText(text: string, out: T): T;\n /** @overload */\n getBoundingBoxForText(\n text: string,\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n /* Offset by 4 floats, output is written to _tempMem */\n const textPtr = wasm.tempUTF8(text, 4 * 4);\n this.engine.wasm._wl_text_component_get_boundingBox(\n this._id,\n textPtr,\n wasm._tempMem\n );\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n getBoundingBox(): Float32Array;\n /**\n * Axis-aligned bounding box, in object space.\n *\n * The bounding box is computed using the current component properties\n * that influence the position and size of the text. The bounding box is\n * affected by alignment, spacing, effect type and the font set in the\n * material.\n *\n * To calculate the size for a different text, use\n * {@link getBoundingBoxForText}.\n *\n * Useful for adjusting text position or scaling:\n *\n * ```js\n * const box = new Float32Array(4);\n * text.getBoundingBox(box);\n * const width = box[2] - box[0];\n * // Make text 1m wide\n * text.object.setScalingLocal([1/width, 1, 1]);\n * ```\n *\n * @param text Text string to calculate the bounding box for.\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * @returns Bounding box - left, bottom, right, top.\n */\n getBoundingBox(out: T): T;\n /** @overload */\n getBoundingBox(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n}\n\n/**\n * Native view component.\n *\n * Provides access to a native view component instance.\n */\nexport class ViewComponent extends Component {\n /** @override */\n static TypeName = 'view';\n\n /**\n * Projection type of the view.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get projectionType(): ProjectionType {\n return this.engine.wasm._wl_view_component_get_projectionType(this._id);\n }\n\n /**\n * Set the projection type of the view.\n *\n * @param type New projection type.\n * @since 1.2.2\n */\n set projectionType(type) {\n this.engine.wasm._wl_view_component_set_projectionType(this._id, type);\n }\n\n /** @overload */\n getProjectionMatrix(): Float32Array;\n /**\n * Projection matrix.\n *\n * A 4x4 matrix that transforms from view space to a WebGL-compatible clip\n * space (-1 to 1 on all axes, near plane at -1, far plane at 1).\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the projection matrix reported by the device.\n *\n * @note This is not necessarily the final projection matrix used for\n * rendering. You can use it for unprojecting from screen space coordinates\n * to view space.\n *\n * @param out Destination array/vector, expected to have at least 16 elements.\n * @returns The `out` parameter.\n */\n getProjectionMatrix(out: T): T;\n getProjectionMatrix(out: NumberArray = new Float32Array(16)): NumberArray {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem);\n for (let i = 0; i < 16; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Equivalent to {@link ViewComponent.getProjectionMatrix}.\n *\n * @note Prefer to use {@link ViewComponent.getProjectionMatrix} for performance.\n */\n @enumerable()\n get projectionMatrix(): Float32Array {\n return this.getProjectionMatrix();\n }\n\n /**\n * Override projection matrix for this view.\n *\n * Bypasses the generation of the projection matrix from viewport, fov, near, far.\n *\n * @hidden\n */\n _setProjectionMatrix(v: Readonly) {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(16 * 4);\n wasm._tempMemFloat.set(v);\n wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem);\n }\n\n /**\n * Generate projection matrix from viewport, fov, near, far.\n *\n * Overwrites any projection matrix set manually.\n *\n * @hidden\n */\n _generateProjectionMatrix() {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_generate_projectionMatrix(this._id);\n }\n\n /** ViewComponent near clipping plane value. */\n @nativeProperty()\n get near(): number {\n return this.engine.wasm._wl_view_component_get_near(this._id);\n }\n\n /**\n * Set near clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param near Near depth value.\n */\n set near(near: number) {\n this.engine.wasm._wl_view_component_set_near(this._id, near);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(near, this.far);\n }\n }\n\n /** Far clipping plane value. */\n @nativeProperty()\n get far(): number {\n return this.engine.wasm._wl_view_component_get_far(this._id);\n }\n\n /**\n * Set far clipping plane distance for the view.\n *\n * If an XR session is active, the change will apply in the\n * following frame, otherwise the change is immediate.\n *\n * @param far Near depth value.\n */\n set far(far: number) {\n this.engine.wasm._wl_view_component_set_far(this._id, far);\n /* Projection parameters must be updated for WebXR as well */\n if (this.engine.xr && this.scene.isActive && this.active) {\n this.engine.webxr.updateProjectionParams(this.near, far);\n }\n }\n\n /**\n * Get the horizontal field of view for the view, **in degrees**.\n *\n * If an XR session is active and this is the left or right eye view, this\n * returns the field of view reported by the device, regardless of the fov\n * that was set.\n */\n @nativeProperty()\n get fov(): number {\n return this.engine.wasm._wl_view_component_get_fov(this._id);\n }\n\n /**\n * Set the horizontal field of view for the view, **in degrees**.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Perspective}.\n *\n * If an XR session is active and this is the left or right eye view, the\n * field of view reported by the device is used and this value is ignored.\n * After the XR session ends, the new value is applied.\n *\n * @param fov Horizontal field of view, **in degrees**.\n */\n set fov(fov) {\n this.engine.wasm._wl_view_component_set_fov(this._id, fov);\n }\n\n /** @overload */\n getViewport(): Int32Array;\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n */\n getViewport(out: T): T;\n getViewport(out: NumberArray = new Int32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_view_component_get_viewport(this._id);\n for (let i = 0; i < 4; ++i) {\n out[i] = wasm.HEAPF32[ptr + i];\n }\n return out;\n }\n\n /**\n * Get viewport of the view of the form: [x, y, width, height].\n */\n @enumerable()\n get viewport(): Int32Array {\n return this.getViewport();\n }\n\n /**\n * Set viewport.\n *\n * @hidden\n */\n _setViewport(x: number, y: number, width: number, height: number) {\n const wasm = this._scene.engine.wasm;\n wasm._wl_view_component_set_viewport(this._id, x, y, width, height);\n }\n\n /**\n * Get the width of the orthographic viewing volume.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n get extent(): number {\n return this.engine.wasm._wl_view_component_get_extent(this._id);\n }\n\n /**\n * Set the width of the orthographic viewing volume.\n *\n * Only has an effect if {@link projectionType} is\n * {@link ProjectionType.Orthographic}.\n *\n * @param extent New extent.\n * @since 1.2.2\n */\n set extent(extent) {\n this.engine.wasm._wl_view_component_set_extent(this._id, extent);\n }\n}\n\n/**\n * Native input component.\n *\n * Provides access to a native input component instance.\n */\nexport class InputComponent extends Component {\n /** @override */\n static TypeName = 'input';\n\n /** Input component type */\n @nativeProperty()\n get inputType(): InputType {\n return this.engine.wasm._wl_input_component_get_type(this._id);\n }\n\n /**\n * Set input component type.\n *\n * @params New input component type.\n */\n set inputType(type: InputType) {\n this.engine.wasm._wl_input_component_set_type(this._id, type);\n }\n\n /**\n * WebXR Device API input source associated with this input component,\n * if type {@link InputType.ControllerLeft} or {@link InputType.ControllerRight}.\n */\n @enumerable()\n get xrInputSource(): XRInputSource | null {\n const xr = this.engine.xr;\n if (!xr) return null;\n\n for (let inputSource of xr.session.inputSources) {\n if (inputSource.handedness == this.handedness) {\n return inputSource;\n }\n }\n\n return null;\n }\n\n /**\n * 'left', 'right' or `null` depending on the {@link InputComponent#inputType}.\n */\n @enumerable()\n get handedness(): 'left' | 'right' | null {\n const inputType = this.inputType;\n if (\n inputType == InputType.ControllerRight ||\n inputType == InputType.RayRight ||\n inputType == InputType.EyeRight\n )\n return 'right';\n if (\n inputType == InputType.ControllerLeft ||\n inputType == InputType.RayLeft ||\n inputType == InputType.EyeLeft\n )\n return 'left';\n\n return null;\n }\n}\n\n/**\n * Native light component.\n *\n * Provides access to a native light component instance.\n */\nexport class LightComponent extends Component {\n /** @override */\n static TypeName = 'light';\n\n /** @overload */\n getColor(): Float32Array;\n /**\n * Get light color.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n * @since 1.0.0\n */\n getColor(out: T): T;\n getColor(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set light color.\n *\n * @param c New color array/vector, expected to have at least 3 elements.\n * @since 1.0.0\n */\n setColor(c: Readonly): void {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_light_component_get_color(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = c[0];\n wasm.HEAPF32[ptr + 1] = c[1];\n wasm.HEAPF32[ptr + 2] = c[2];\n }\n\n /**\n * View on the light color.\n *\n * @note Prefer to use {@link getColor} in performance-critical code.\n */\n @nativeProperty()\n get color(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_light_component_get_color(this._id),\n 3\n );\n }\n\n /**\n * Set light color.\n *\n * @param c Color of the light component.\n *\n * @note Prefer to use {@link setColor} in performance-critical code.\n */\n set color(c: Readonly) {\n this.color.set(c);\n }\n\n /** Light type. */\n @nativeProperty()\n get lightType(): LightType {\n return this.engine.wasm._wl_light_component_get_type(this._id);\n }\n\n /**\n * Set light type.\n *\n * @param lightType Type of the light component.\n */\n set lightType(t: LightType) {\n this.engine.wasm._wl_light_component_set_type(this._id, t);\n }\n\n /**\n * Light intensity.\n * @since 1.0.0\n */\n @nativeProperty()\n get intensity(): number {\n return this.engine.wasm._wl_light_component_get_intensity(this._id);\n }\n\n /**\n * Set light intensity.\n *\n * @param intensity Intensity of the light component.\n * @since 1.0.0\n */\n set intensity(intensity: number) {\n this.engine.wasm._wl_light_component_set_intensity(this._id, intensity);\n }\n\n /**\n * Outer angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get outerAngle(): number {\n return this.engine.wasm._wl_light_component_get_outerAngle(this._id);\n }\n\n /**\n * Set outer angle for spot lights.\n *\n * @param angle Outer angle, in degrees.\n * @since 1.0.0\n */\n set outerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle);\n }\n\n /**\n * Inner angle for spot lights, in degrees.\n * @since 1.0.0\n */\n @nativeProperty()\n get innerAngle(): number {\n return this.engine.wasm._wl_light_component_get_innerAngle(this._id);\n }\n\n /**\n * Set inner angle for spot lights.\n *\n * @param angle Inner angle, in degrees.\n * @since 1.0.0\n */\n set innerAngle(angle: number) {\n this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle);\n }\n\n /**\n * Whether the light casts shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadows(): boolean {\n return !!this.engine.wasm._wl_light_component_get_shadows(this._id);\n }\n\n /**\n * Set whether the light casts shadows.\n *\n * @param b Whether the light casts shadows.\n * @since 1.0.0\n */\n set shadows(b: boolean) {\n this.engine.wasm._wl_light_component_set_shadows(this._id, b);\n }\n\n /**\n * Range for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowRange(): number {\n return this.engine.wasm._wl_light_component_get_shadowRange(this._id);\n }\n\n /**\n * Set range for shadows.\n *\n * @param range Range for shadows.\n * @since 1.0.0\n */\n set shadowRange(range: number) {\n this.engine.wasm._wl_light_component_set_shadowRange(this._id, range);\n }\n\n /**\n * Bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowBias(this._id);\n }\n\n /**\n * Set bias value for shadows.\n *\n * @param bias Bias for shadows.\n * @since 1.0.0\n */\n set shadowBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias);\n }\n\n /**\n * Normal bias value for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowNormalBias(): number {\n return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id);\n }\n\n /**\n * Set normal bias value for shadows.\n *\n * @param bias Normal bias for shadows.\n * @since 1.0.0\n */\n set shadowNormalBias(bias: number) {\n this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias);\n }\n\n /**\n * Texel size for shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get shadowTexelSize(): number {\n return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id);\n }\n\n /**\n * Set texel size for shadows.\n *\n * @param size Texel size for shadows.\n * @since 1.0.0\n */\n set shadowTexelSize(size: number) {\n this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size);\n }\n\n /**\n * Cascade count for {@link LightType.Sun} shadows.\n * @since 1.0.0\n */\n @nativeProperty()\n get cascadeCount(): number {\n return this.engine.wasm._wl_light_component_get_cascadeCount(this._id);\n }\n\n /**\n * Set cascade count for {@link LightType.Sun} shadows.\n *\n * @param count Cascade count.\n * @since 1.0.0\n */\n set cascadeCount(count: number) {\n this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count);\n }\n}\n\n/**\n * Native animation component.\n *\n * Provides access to a native animation component instance.\n */\nexport class AnimationComponent extends Component {\n /** @override */\n static TypeName = 'animation';\n\n /**\n * Emitter for animation events triggered on this component.\n *\n * The first argument is the name of the event.\n */\n readonly onEvent = new Emitter<[string]>();\n\n /**\n * Set animation to play.\n *\n * Make sure to {@link Animation#retarget} the animation to affect the\n * right objects.\n *\n * @param anim Animation to play.\n */\n set animation(anim: Animation | null | undefined) {\n this.scene.assertOrigin(anim);\n this.engine.wasm._wl_animation_component_set_animation(\n this._id,\n anim ? anim._id : 0\n );\n }\n\n /** Animation set for this component */\n @nativeProperty()\n get animation(): Animation | null {\n const index = this.engine.wasm._wl_animation_component_get_animation(this._id);\n return this._scene.animations.wrap(index);\n }\n\n /**\n * Set play count. Set to `0` to loop indefinitely.\n *\n * @param playCount Number of times to repeat the animation.\n */\n set playCount(playCount: number) {\n this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount);\n }\n\n /** Number of times the animation is played. */\n @nativeProperty()\n get playCount(): number {\n return this.engine.wasm._wl_animation_component_get_playCount(this._id);\n }\n\n /**\n * Set speed. Set to negative values to run the animation backwards.\n *\n * Setting speed has an immediate effect for the current frame's update\n * and will continue with the speed from the current point in the animation.\n *\n * @param speed New speed at which to play the animation.\n * @since 0.8.10\n */\n set speed(speed: number) {\n this.engine.wasm._wl_animation_component_set_speed(this._id, speed);\n }\n\n /**\n * Speed factor at which the animation is played.\n *\n * @since 0.8.10\n */\n @nativeProperty()\n get speed(): number {\n return this.engine.wasm._wl_animation_component_get_speed(this._id);\n }\n\n /** Current playing state of the animation */\n @enumerable()\n get state(): AnimationState {\n return this.engine.wasm._wl_animation_component_state(this._id);\n }\n\n /**\n * How to handle root motion on this component.\n *\n * @since 1.2.2\n */\n @nativeProperty()\n @enumerable()\n get rootMotionMode(): RootMotionMode {\n return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id);\n }\n\n /**\n * Set how to handle root motion.\n *\n * @param mode Mode to handle root motion, see {@link RootMotionMode}.\n * @since 1.2.2\n */\n set rootMotionMode(mode: RootMotionMode) {\n this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode);\n }\n\n /**\n * Current iteration of the animation.\n *\n * If {@link playCount} is not unlimited, the value is in the range from\n * `0` to `playCount`.\n *\n * @since 1.2.3\n */\n get iteration(): number {\n return this.engine.wasm._wl_animation_component_get_iteration(this._id);\n }\n\n /**\n * Current playing position of the animation within the current iteration,\n * in seconds.\n *\n * The value is in the range from `0.0` to {@link AnimationComponent#duration},\n * if playing in reverse, this range is reversed as well.\n *\n * @since 1.2.3\n */\n get position(): number {\n return this.engine.wasm._wl_animation_component_get_position(this._id);\n }\n\n /**\n * Current duration to loop one iteration in seconds, offers a more accurate duration\n * than {@link Animation#duration} when blending multiple animations.\n *\n * @since 1.2.3\n */\n get duration(): number {\n return this.engine.wasm._wl_animation_component_get_duration(this._id);\n }\n\n /**\n * Play animation.\n *\n * If the animation is currently paused, resumes from that position. If the\n * animation is already playing, does nothing.\n *\n * To restart the animation, {@link AnimationComponent#stop} it first.\n */\n play(): void {\n this.engine.wasm._wl_animation_component_play(this._id);\n }\n\n /** Stop animation. */\n stop(): void {\n this.engine.wasm._wl_animation_component_stop(this._id);\n }\n\n /** Pause animation. */\n pause(): void {\n this.engine.wasm._wl_animation_component_pause(this._id);\n }\n\n /**\n * Get the value of a float parameter in the attached graph.\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @since 1.2.0\n */\n getFloatParameter(name: string): number | null {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n }\n\n /**\n * Set the value of a float parameter in the attached graph\n * Throws if the parameter is missing.\n *\n * @param name Name of the parameter.\n * @param value Float value to set.\n * @returns 1 if the parameter was successfully set, 0 on fail.\n * @since 1.2.0\n */\n setFloatParameter(name: string, value: number): void {\n const wasm = this.engine.wasm;\n const index = wasm._wl_animation_component_getGraphParamIndex(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing parameter '${name}'`);\n }\n wasm._tempMemFloat[0] = value;\n wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem);\n }\n\n /** @overload */\n getRootMotionTranslation(): Float32Array;\n /**\n * Get the root motion translation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity translation.\n *\n * @since 1.2.2\n */\n getRootMotionTranslation(out: T): T;\n getRootMotionTranslation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRootMotionRotation(): Float32Array;\n /**\n * Get the root motion rotation in **local space** calculated for the current frame.\n *\n * @note If {@link AnimationComponent.rootMotionMode} is not\n * set to {@link RootMotionMode.Script} this will always return an identity rotation.\n *\n * @since 1.2.2\n */\n getRootMotionRotation(out: T): T;\n getRootMotionRotation(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n}\n\n/**\n * Native mesh component.\n *\n * Provides access to a native mesh component instance.\n */\nexport class MeshComponent extends Component {\n /** @override */\n static TypeName = 'mesh';\n\n /**\n * Set material to render the mesh with.\n *\n * @param material Material to render the mesh with.\n */\n set material(material: Material | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_material(\n this._id,\n material ? material._id : 0\n );\n }\n\n /** Material used to render the mesh. */\n @nativeProperty()\n get material(): Material | null {\n const index = this.engine.wasm._wl_mesh_component_get_material(this._id);\n return this.engine.materials.wrap(index);\n }\n\n /** Mesh rendered by this component. */\n @nativeProperty()\n get mesh(): Mesh | null {\n const index = this.engine.wasm._wl_mesh_component_get_mesh(this._id);\n return this.engine.meshes.wrap(index);\n }\n\n /**\n * Set mesh to rendered with this component.\n *\n * @param mesh Mesh rendered by this component.\n */\n set mesh(mesh: Mesh | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0);\n }\n\n /** Skin for this mesh component. */\n @nativeProperty()\n get skin(): Skin | null {\n const index = this.engine.wasm._wl_mesh_component_get_skin(this._id);\n return this._scene.skins.wrap(index);\n }\n\n /**\n * Set skin to transform this mesh component.\n *\n * @param skin Skin to use for rendering skinned meshes.\n */\n set skin(skin: Skin | null | undefined) {\n this.scene.assertOrigin(skin);\n this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0);\n }\n\n /**\n * Morph targets for this mesh component.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargets(): MorphTargets | null {\n const index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id);\n return this.engine.morphTargets.wrap(index);\n }\n\n /**\n * Set morph targets to transform this mesh component.\n *\n * @param morphTargets Morph targets to use for rendering.\n *\n * @since 1.2.0\n */\n set morphTargets(morphTargets: MorphTargets | null | undefined) {\n this.engine.wasm._wl_mesh_component_set_morph_targets(\n this._id,\n morphTargets?._id ?? 0\n );\n }\n\n /**\n * Equivalent to {@link getMorphTargetWeights}.\n *\n * @note Prefer to use {@link getMorphTargetWeights} for performance.\n *\n * @since 1.2.0\n */\n @nativeProperty()\n get morphTargetWeights(): Float32Array {\n return this.getMorphTargetWeights();\n }\n\n /**\n * Set the morph target weights to transform this mesh component.\n *\n * @param weights New weights.\n *\n * @since 1.2.0\n */\n set morphTargetWeights(weights: Readonly) {\n this.setMorphTargetWeights(weights);\n }\n\n /** @overload */\n getMorphTargetWeights(): Float32Array;\n /**\n * Get morph target weights for this mesh component.\n *\n * @param out Destination array, expected to have at least as many elements\n * as {@link MorphTargets.count}.\n * @returns The `out` parameter.\n *\n * @since 1.2.0\n */\n getMorphTargetWeights(out: T): T;\n getMorphTargetWeights(out?: NumberArray): NumberArray {\n const wasm = this.engine.wasm;\n const count = wasm._wl_mesh_component_get_morph_target_weights(\n this._id,\n wasm._tempMem\n );\n if (!out) {\n out = new Float32Array(count);\n }\n for (let i = 0; i < count; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n }\n\n /**\n * Get the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @returns The weight.\n *\n * @since 1.2.0\n */\n getMorphTargetWeight(target: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n return this.engine.wasm._wl_mesh_component_get_morph_target_weight(\n this._id,\n target\n );\n }\n\n /**\n * Set morph target weights for this mesh component.\n *\n * @param weights Array of new weights, expected to have at least as many\n * elements as {@link MorphTargets.count}.\n *\n * @since 1.2.0\n */\n setMorphTargetWeights(weights: Readonly) {\n const count = this.morphTargets?.count ?? 0;\n if (weights.length !== count) {\n throw new Error(`Expected ${count} weights but got ${weights.length}`);\n }\n const wasm = this.engine.wasm;\n wasm._tempMemFloat.set(weights);\n wasm._wl_mesh_component_set_morph_target_weights(\n this._id,\n wasm._tempMem,\n weights.length\n );\n }\n\n /**\n * Set the weight of a single morph target.\n *\n * @param target Index of the morph target.\n * @param weight The new weight.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\n setMorphTargetWeight(target: number, weight: number) {\n const count = this.morphTargets?.count ?? 0;\n if (target >= count) {\n throw new Error(`Index ${target} is out of bounds for ${count} targets`);\n }\n this.engine.wasm._wl_mesh_component_set_morph_target_weight(\n this._id,\n target,\n weight\n );\n }\n}\n\n/**\n * Native particle effect component.\n *\n * @since 1.4.0\n */\nexport class ParticleEffectComponent extends Component {\n /** @override */\n static TypeName = 'particle-effect';\n\n /** Particle effect used by this component. */\n @nativeProperty()\n get particleEffect(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(\n this._id\n );\n return this.engine.particleEffects.wrap(index);\n }\n\n /**\n * Set particle effect to use with this component.\n *\n * @param particleEffect Particle effect used by this component.\n */\n set particleEffect(particleEffect: ParticleEffect | null | undefined) {\n this.engine.wasm._wl_particleEffect_component_set_particleEffect(\n this._id,\n particleEffect?._id ?? 0\n );\n }\n}\n\n/**\n * Enum for Physics axes locking\n *\n * See {@link PhysXComponent.angularLockAxis} and {@link PhysXComponent.linearLockAxis}.\n */\nexport enum LockAxis {\n /**\n * No axis selected.\n */\n None = 0,\n\n /**\n * **X axis**:\n */\n X = 1 << 0,\n\n /**\n * **Y axis**:\n */\n Y = 1 << 1,\n\n /**\n * **Z axis**:\n */\n Z = 1 << 2,\n}\n\n/**\n * Native physx rigid body component.\n *\n * Provides access to a native mesh component instance.\n * Only available when using physx enabled runtime, see \"Project Settings > Runtime\".\n */\nexport class PhysXComponent extends Component {\n /** @override */\n static TypeName = 'physx';\n\n /** @overload */\n getTranslationOffset(): Float32Array;\n /**\n * Local translation offset.\n *\n * Allows to move a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getTranslationOffset(out: T): T;\n getTranslationOffset(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getRotationOffset(): Float32Array;\n /**\n * Local rotation offset represented as a quaternion.\n *\n * Allows to rotate a physx component without creating a new object in the hierarchy.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @returns The `out` parameter.\n *\n * @since 1.1.1\n */\n getRotationOffset(out: T): T;\n getRotationOffset(out: NumberArray = new Float32Array(4)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr =\n wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /** @overload */\n getExtents(): Float32Array;\n /**\n * The shape extents for collision detection.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getExtents(out: T): T;\n getExtents(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_physx_component_get_extents(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /** @overload */\n getLinearVelocity(): Float32Array;\n /**\n * Linear velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLinearVelocity(out: T): T;\n getLinearVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_linearVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getAngularVelocity(): Float32Array;\n /**\n * Angular velocity or `[0, 0, 0]` if the component is not active.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getAngularVelocity(out: T): T;\n getAngularVelocity(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this.engine.wasm;\n const tempMemFloat = wasm._tempMemFloat;\n wasm._wl_physx_component_get_angularVelocity(\n this._id,\n wasm._tempMem\n ); /* Align F32 */\n out[0] = tempMemFloat[0];\n out[1] = tempMemFloat[1];\n out[2] = tempMemFloat[2];\n return out;\n }\n\n /**\n * Set whether this rigid body is static.\n *\n * Setting this property only takes effect once the component\n * switches from inactive to active.\n *\n * @param b Whether the rigid body should be static.\n */\n set static(b: boolean) {\n this.engine.wasm._wl_physx_component_set_static(this._id, b);\n }\n\n /**\n * Whether this rigid body is static.\n *\n * This property returns whether the rigid body is *effectively*\n * static. If static property was set while the rigid body was\n * active, it will not take effect until the rigid body is set\n * inactive and active again. Until the component is set inactive,\n * this getter will return whether the rigid body is actually\n * static.\n */\n @nativeProperty()\n get static(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_static(this._id);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getTranslationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getTranslationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get translationOffset(): Float32Array {\n return this.getTranslationOffset();\n }\n\n /**\n * Set the offset translation.\n *\n * The array must be a vector of at least **3** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set translationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetTranslation(\n this._id,\n offset[0],\n offset[1],\n offset[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getRotationOffset}.\n *\n * Gives a quick view of the offset in a debugger.\n *\n * @note Prefer to use {@link PhysXComponent.getRotationOffset} for performance.\n *\n * @since 1.1.1\n */\n @nativeProperty()\n get rotationOffset(): Float32Array {\n return this.getRotationOffset();\n }\n\n /**\n * Set the offset rotation.\n *\n * The array must be a quaternion of at least **4** elements.\n *\n * @note The component must be re-activated to apply the change.\n *\n * @since 1.1.1\n */\n set rotationOffset(offset: ArrayLike) {\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_set_offsetRotation(\n this._id,\n offset[0],\n offset[1],\n offset[2],\n offset[3]\n );\n }\n\n /**\n * Set whether this rigid body is kinematic.\n *\n * @param b Whether the rigid body should be kinematic.\n */\n set kinematic(b: boolean) {\n this.engine.wasm._wl_physx_component_set_kinematic(this._id, b);\n }\n\n /**\n * Whether this rigid body is kinematic.\n */\n @nativeProperty()\n get kinematic(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id);\n }\n\n /**\n * Set whether this rigid body's gravity is enabled.\n *\n * @param b Whether the rigid body's gravity should be enabled.\n */\n set gravity(b: boolean) {\n this.engine.wasm._wl_physx_component_set_gravity(this._id, b);\n }\n\n /**\n * Whether this rigid body's gravity flag is enabled.\n */\n @nativeProperty()\n get gravity(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_gravity(this._id);\n }\n\n /**\n * Set whether this rigid body's simulate flag is enabled.\n *\n * @param b Whether the rigid body's simulate flag should be enabled.\n */\n set simulate(b: boolean) {\n this.engine.wasm._wl_physx_component_set_simulate(this._id, b);\n }\n\n /**\n * Whether this rigid body's simulate flag is enabled.\n */\n @nativeProperty()\n get simulate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_simulate(this._id);\n }\n\n /**\n * Set whether to allow simulation of this rigid body.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling {@link allowSimulation} while {@link trigger} is enabled\n * will disable {@link trigger}.\n *\n * @param b Whether to allow simulation of this rigid body.\n */\n set allowSimulation(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b);\n }\n\n /**\n * Whether to allow simulation of this rigid body.\n */\n @nativeProperty()\n get allowSimulation(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id);\n }\n\n /**\n * Set whether this rigid body may be queried in ray casts.\n *\n * @param b Whether this rigid body may be queried in ray casts.\n */\n set allowQuery(b: boolean) {\n this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b);\n }\n\n /**\n * Whether this rigid body may be queried in ray casts.\n */\n @nativeProperty()\n get allowQuery(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id);\n }\n\n /**\n * Set whether this physics body is a trigger.\n *\n * {@link allowSimulation} and {@link trigger} can not be enabled at the\n * same time. Enabling trigger while {@link allowSimulation} is enabled,\n * will disable {@link allowSimulation}.\n *\n * @param b Whether this physics body is a trigger.\n */\n set trigger(b: boolean) {\n this.engine.wasm._wl_physx_component_set_trigger(this._id, b);\n }\n\n /**\n * Whether this physics body is a trigger.\n */\n @nativeProperty()\n get trigger(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_trigger(this._id);\n }\n\n /**\n * Set the shape for collision detection.\n *\n * @param s New shape.\n * @since 0.8.5\n */\n set shape(s: Shape) {\n this.engine.wasm._wl_physx_component_set_shape(this._id, s);\n }\n\n /** The shape for collision detection. */\n @nativeProperty()\n get shape(): Shape {\n return this.engine.wasm._wl_physx_component_get_shape(this._id);\n }\n\n /**\n * Set additional data for the shape.\n *\n * Retrieved only from {@link PhysXComponent#shapeData}.\n * @since 0.8.10\n */\n set shapeData(d) {\n if (d == null || !isMeshShape(this.shape)) return;\n this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index);\n }\n\n /**\n * Additional data for the shape.\n *\n * `null` for {@link Shape} values: `None`, `Sphere`, `Capsule`, `Box`, `Plane`.\n * `{index: n}` for `TriangleMesh` and `ConvexHull`.\n *\n * This data is currently only for passing onto or creating other {@link PhysXComponent}.\n * @since 0.8.10\n */\n @nativeProperty()\n get shapeData(): {\n index: number;\n } | null {\n if (!isMeshShape(this.shape)) return null;\n return {\n index: this.engine.wasm._wl_physx_component_get_shape_data(this._id),\n };\n }\n\n /**\n * Set the shape extents for collision detection.\n *\n * @param e New extents for the shape.\n * @since 0.8.5\n */\n set extents(e: Readonly) {\n this.extents.set(e);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getExtents}.\n *\n * @note Prefer to use {@link PhysXComponent.getExtents} for performance.\n */\n @nativeProperty()\n get extents(): Float32Array {\n const wasm = this.engine.wasm;\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const ptr = wasm._wl_physx_component_get_extents(this._id);\n return new Float32Array(wasm.HEAPF32.buffer, ptr, 3);\n }\n\n /**\n * Get staticFriction.\n */\n @nativeProperty()\n get staticFriction(): number {\n return this.engine.wasm._wl_physx_component_get_staticFriction(this._id);\n }\n\n /**\n * Set staticFriction.\n * @param v New staticFriction.\n */\n set staticFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v);\n }\n\n /**\n * Get dynamicFriction.\n */\n @nativeProperty()\n get dynamicFriction(): number {\n return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id);\n }\n\n /**\n * Set dynamicFriction\n * @param v New dynamicDamping.\n */\n set dynamicFriction(v: number) {\n this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v);\n }\n\n /**\n * Get bounciness.\n * @since 0.9.0\n */\n @nativeProperty()\n get bounciness(): number {\n return this.engine.wasm._wl_physx_component_get_bounciness(this._id);\n }\n\n /**\n * Set bounciness.\n * @param v New bounciness.\n * @since 0.9.0\n */\n set bounciness(v: number) {\n this.engine.wasm._wl_physx_component_set_bounciness(this._id, v);\n }\n\n /**\n * Get linearDamping/\n */\n @nativeProperty()\n get linearDamping(): number {\n return this.engine.wasm._wl_physx_component_get_linearDamping(this._id);\n }\n\n /**\n * Set linearDamping.\n * @param v New linearDamping.\n */\n set linearDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v);\n }\n\n /** Get angularDamping. */\n @nativeProperty()\n get angularDamping(): number {\n return this.engine.wasm._wl_physx_component_get_angularDamping(this._id);\n }\n\n /**\n * Set angularDamping.\n * @param v New angularDamping.\n */\n set angularDamping(v: number) {\n this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v);\n }\n\n /**\n * Set linear velocity.\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New linear velocity.\n */\n set linearVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]);\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getLinearVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getLinearVelocity} for performance.\n */\n @nativeProperty()\n get linearVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set angular velocity\n *\n * [PhysX Manual - \"Velocity\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#velocity)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New angular velocity\n */\n set angularVelocity(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_angularVelocity(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Equivalent to {@link PhysXComponent.getAngularVelocity}.\n *\n * @note Prefer to use {@link PhysXComponent.getAngularVelocity} for performance.\n */\n @nativeProperty()\n get angularVelocity(): Float32Array {\n /** @todo: Break at 2.0.0. Do not allow modifying memory in-place. */\n const wasm = this.engine.wasm;\n wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem);\n return new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3);\n }\n\n /**\n * Set the components groups mask.\n *\n * @param flags New flags that need to be set.\n */\n set groupsMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags);\n }\n\n /**\n * Get the components groups mask flags.\n *\n * Each bit represents membership to group, see example.\n *\n * ```js\n * // Assign c to group 2\n * c.groupsMask = (1 << 2);\n *\n * // Assign c to group 0\n * c.groupsMask = (1 << 0);\n *\n * // Assign c to group 0 and 2\n * c.groupsMask = (1 << 0) | (1 << 2);\n *\n * (c.groupsMask & (1 << 2)) != 0; // true\n * (c.groupsMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get groupsMask(): number {\n return this.engine.wasm._wl_physx_component_get_groupsMask(this._id);\n }\n\n /**\n * Set the components blocks mask.\n *\n * @param flags New flags that need to be set.\n */\n set blocksMask(flags: number) {\n this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags);\n }\n\n /**\n * Get the components blocks mask flags.\n *\n * Each bit represents membership to the block, see example.\n *\n * ```js\n * // Block overlap with any objects in group 2\n * c.blocksMask = (1 << 2);\n *\n * // Block overlap with any objects in group 0\n * c.blocksMask = (1 << 0)\n *\n * // Block overlap with any objects in group 0 and 2\n * c.blocksMask = (1 << 0) | (1 << 2);\n *\n * (c.blocksMask & (1 << 2)) != 0; // true\n * (c.blocksMask & (1 << 7)) != 0; // false\n * ```\n */\n @nativeProperty()\n get blocksMask(): number {\n return this.engine.wasm._wl_physx_component_get_blocksMask(this._id);\n }\n\n /**\n * Set axes to lock for linear velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * Combine flags with Bitwise OR:\n *\n * ```js\n * body.linearLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.linearLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set linearLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock);\n }\n\n /**\n * Get the linear lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed.\n *\n * ```js\n * if(body.linearLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for linear movement.\n */\n @nativeProperty()\n get linearLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id);\n }\n\n /**\n * Set axes to lock for angular velocity.\n *\n * @param lock The Axis that needs to be set.\n *\n * ```js\n * body.angularLockAxis = LockAxis.X | LockAxis.Y; // x and y set\n * body.angularLockAxis = LockAxis.X; // y unset\n * ```\n *\n * @note This has no effect if the component is static.\n */\n set angularLockAxis(lock: LockAxis) {\n this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock);\n }\n\n /**\n * Get the angular lock axes flags.\n *\n * To get the state of a specific flag, Bitwise AND with the LockAxis needed:\n *\n * ```js\n * if(body.angularLockAxis & LockAxis.Y) {\n * console.log(\"The Y flag was set!\");\n * }\n * ```\n *\n * @return axes that are currently locked for angular movement.\n */\n @nativeProperty()\n get angularLockAxis(): LockAxis {\n return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id);\n }\n\n /**\n * Set mass.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * @param m New mass.\n */\n set mass(m: number) {\n this.engine.wasm._wl_physx_component_set_mass(this._id, m);\n }\n\n /** Mass */\n @nativeProperty()\n get mass(): number {\n return this.engine.wasm._wl_physx_component_get_mass(this._id);\n }\n\n /**\n * Set mass space interia tensor.\n *\n * [PhysX Manual - \"Mass Properties\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#mass-properties)\n *\n * Has no effect, if the component is not active.\n *\n * @param v New mass space interatia tensor.\n */\n set massSpaceInteriaTensor(v: Readonly) {\n this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(\n this._id,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /**\n * Set the rigid body to sleep upon activation.\n *\n * When asleep, the rigid body will not be simulated until the next contact.\n *\n * @param flag `true` to sleep upon activation.\n *\n * @since 1.1.5\n */\n set sleepOnActivate(flag: boolean) {\n this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag);\n }\n\n /**\n * `true` if the rigid body is set to sleep upon activation, `false` otherwise.\n *\n * @since 1.1.5\n */\n @nativeProperty()\n get sleepOnActivate(): boolean {\n return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id);\n }\n\n /**\n * Apply a force.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n * @param localForce Whether the force vector is in local space, default `false`.\n * @param p Position to apply force at, default is center of mass.\n * @param local Whether position is in local space, default `false`.\n */\n addForce(\n f: Readonly,\n m: ForceMode = ForceMode.Force,\n localForce: boolean = false,\n p?: Readonly,\n local: boolean = false\n ) {\n const wasm = this.engine.wasm;\n if (!p) {\n wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce);\n return;\n }\n wasm._wl_physx_component_addForceAt(\n this._id,\n f[0],\n f[1],\n f[2],\n m,\n localForce,\n p[0],\n p[1],\n p[2],\n local\n );\n }\n\n /**\n * Apply torque.\n *\n * [PhysX Manual - \"Applying Forces and Torques\"](https://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/RigidBodyDynamics.html#applying-forces-and-torques)\n *\n * Has no effect, if the component is not active.\n *\n * @param f Force vector.\n * @param m Force mode, see {@link ForceMode}, default `Force`.\n */\n addTorque(f: Readonly, m: ForceMode = ForceMode.Force) {\n this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m);\n }\n\n /**\n * Add on collision callback.\n *\n * @param callback Function to call when this rigid body (un)collides with any other.\n *\n * ```js\n * let rigidBody = this.object.getComponent('physx');\n * rigidBody.onCollision(function(type, other) {\n * // Ignore uncollides\n * if(type == CollisionEventType.TouchLost) return;\n *\n * // Take damage on collision with enemies\n * if(other.object.name.startsWith(\"enemy-\")) {\n * this.applyDamage(10);\n * }\n * }.bind(this));\n * ```\n *\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollision(callback: CollisionCallback): number {\n return this.onCollisionWith(this, callback);\n }\n\n /**\n * Add filtered on collision callback.\n *\n * @param otherComp Component for which callbacks will\n * be triggered. If you pass this component, the method is equivalent to.\n * {@link PhysXComponent#onCollision}.\n * @param callback Function to call when this rigid body\n * (un)collides with `otherComp`.\n * @returns Id of the new callback for use with {@link PhysXComponent#removeCollisionCallback}.\n */\n onCollisionWith(otherComp: this, callback: CollisionCallback): number {\n const callbacks = this.scene._pxCallbacks;\n if (!callbacks.has(this._id)) {\n callbacks.set(this._id, []);\n }\n callbacks.get(this._id)!.push(callback);\n return this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id);\n }\n\n /**\n * Remove a collision callback added with {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n *\n * @param callbackId Callback id as returned by {@link PhysXComponent#onCollision} or {@link PhysXComponent#onCollisionWith}.\n * @throws When the callback does not belong to the component.\n * @throws When the callback does not exist.\n */\n removeCollisionCallback(callbackId: number): void {\n const r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId);\n const callbacks = this.scene._pxCallbacks;\n /* r is the amount of object to remove from the end of the\n * callbacks array for this object */\n if (r) callbacks.get(this._id)!.splice(-r);\n }\n}\n\n/**\n * Access to the physics scene\n */\nexport class Physics {\n /**\n * Hit.\n * @hidden\n */\n _hit: RayHit;\n\n /**\n * Wonderland Engine instance\n * @hidden\n */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * Ray Hit\n * @hidden\n */\n private _rayHit: number;\n\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n const wasm = engine.wasm;\n this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(engine.scene, this._rayHit);\n\n /* Setup the physics callback. */\n wasm._wl_physx_set_collision_callback(\n wasm.addFunction((a: number, index: number, type: number, b: number) => {\n const physxA = this._engine.scene._components.wrapPhysx(a)!;\n const physxB = this._engine.scene._components.wrapPhysx(b)!;\n /* We assume that the map returns an array. If not,\n * this is an internal engine error. */\n const callbacks = this._engine.scene._pxCallbacks.get(physxA._id)!;\n const callback = callbacks[index];\n callback(type, physxB as PhysXComponent);\n }, 'viiii')\n );\n }\n\n /**\n * Cast a ray through the scene and find intersecting physics components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.physics.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against physics components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of physics groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Physics}\n * instance and will be reused with the next {@link Physics#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance: number = 100.0\n ): RayHit {\n const scene = this._engine.scene._index;\n this._engine.wasm._wl_physx_ray_cast(\n scene,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n maxDistance,\n this._rayHit\n );\n return this._hit;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Mesh index type.\n */\nexport enum MeshIndexType {\n /** Single byte mesh index, range 0-255 */\n UnsignedByte = 1,\n\n /** Two byte mesh index, range 0-65535 */\n UnsignedShort = 2,\n\n /** Four byte mesh index, range 0-4294967295 */\n UnsignedInt = 4,\n}\n\n/**\n * Mesh skinning type.\n */\nexport enum MeshSkinningType {\n /** Not skinned */\n None = 0,\n\n /** Skinned, 4 joints/weight per vertex */\n FourJoints = 1,\n\n /** Skinned, 8 joints/weight per vertex */\n EightJoints = 2,\n}\n\n/**\n * Mesh constructor parameters object.\n *\n * Usage:\n *\n * ```js\n * const mesh = Mesh({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n */\nexport interface MeshParameters {\n /** Number of vertices to allocate. */\n vertexCount: number;\n /** Index data values. */\n indexData: Readonly;\n /** Index type, `null` if not indexed. */\n indexType: MeshIndexType;\n /** Whether the mesh should be skinned. Defaults to not skinned. */\n skinningType: MeshSkinningType;\n}\n\n/**\n * Wrapper around a native mesh data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link MeshManager} class.\n *\n * #### Update\n *\n * To modify a mesh, you get access to a {@link MeshAttributeAccessor} that\n * allows you to modify the content of the buffers:\n *\n * Usage:\n *\n * ```js\n * const mesh = engine.es.create({vertexCount: 3, indexData: [0, 1, 2]});\n * const positions = mesh.attribute(MeshAttribute.Position);\n * ...\n * ```\n *\n * @note Meshes are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Mesh extends Resource {\n /**\n * @deprecated Use {@link MeshManager.create} instead, accessible via {@link WonderlandEngine.meshes}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ...\n * mesh.update();\n * ```\n */\n constructor(engine: WonderlandEngine, params: Partial | number) {\n if (!isNumber(params)) {\n const mesh = engine.meshes.create(params);\n /* `super()` must be called as stated in the specification */\n super(engine, mesh._index);\n return mesh;\n }\n super(engine, params);\n }\n\n /** Number of vertices in this mesh. */\n get vertexCount(): number {\n return this.engine.wasm._wl_mesh_get_vertexCount(this._id);\n }\n\n /** Index data (read-only) or `null` if the mesh is not indexed. */\n get indexData(): Uint8Array | Uint16Array | Uint32Array | null {\n const wasm = this.engine.wasm;\n const tempMem = wasm._tempMem;\n const ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4);\n if (ptr === null) return null;\n\n const indexCount = wasm.HEAPU32[tempMem / 4];\n const indexSize = wasm.HEAPU32[tempMem / 4 + 1];\n switch (indexSize) {\n case MeshIndexType.UnsignedByte:\n return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedShort:\n return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount);\n case MeshIndexType.UnsignedInt:\n return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount);\n }\n return null;\n }\n\n /**\n * Apply changes to {@link attribute | vertex attributes}.\n *\n * Uploads the updated vertex attributes to the GPU and updates the bounding\n * sphere to match the new vertex positions.\n *\n * Since this is an expensive operation, call it only once you have performed\n * all modifications on a mesh and avoid calling if you did not perform any\n * modifications at all.\n */\n update() {\n this.engine.wasm._wl_mesh_update(this._id);\n }\n\n /** @overload */\n getBoundingSphere(): Float32Array;\n /** @overload */\n getBoundingSphere(out: T): T;\n /**\n * Mesh bounding sphere.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n *\n * ```js\n * const sphere = new Float32Array(4);\n * for(...) {\n * mesh.getBoundingSphere(sphere);\n * ...\n * }\n * ```\n *\n * If the position data is changed, call {@link Mesh#update} to update the\n * bounding sphere.\n *\n * @returns Bounding sphere, 0-2 sphere origin, 3 radius.\n */\n getBoundingSphere(out: T | Float32Array): T | Float32Array;\n getBoundingSphere(\n out: T | Float32Array = new Float32Array(4)\n ): T | Float32Array {\n const wasm = this.engine.wasm;\n this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n return out as T;\n }\n\n /** @overload */\n attribute(\n attr: MeshAttribute.Position\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Tangent\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Normal\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.TextureCoordinate\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.Color\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointId\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.JointWeight\n ): MeshAttributeAccessor | null;\n /** @overload */\n attribute(\n attr: MeshAttribute.SecondaryTextureCoordinate\n ): MeshAttributeAccessor | null;\n /**\n * Get an attribute accessor to retrieve or modify data of give attribute.\n *\n * @param attr Attribute to get access to\n * @returns Attribute to get access to or `null`, if mesh does not have this attribute.\n *\n * Call {@link update} for changes to vertex attributes to take effect.\n *\n * If there are no shaders in the scene that use `TextureCoordinate` for example,\n * no meshes will have the `TextureCoordinate` attribute.\n *\n * For flexible reusable components, take this into account that only `Position`\n * is guaranteed to be present at all time.\n */\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null;\n attribute(attr: MeshAttribute): MeshAttributeAccessor | null {\n if (typeof attr != 'number')\n throw new TypeError('Expected number, but got ' + typeof attr);\n\n const wasm = this.engine.wasm;\n const tempMemUint32 = wasm._tempMemUint32;\n wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem);\n if (tempMemUint32[0] == 255) return null;\n\n const arraySize = tempMemUint32[5];\n return new MeshAttributeAccessor(this.engine, {\n attribute: tempMemUint32[0],\n offset: tempMemUint32[1],\n stride: tempMemUint32[2],\n formatSize: tempMemUint32[3],\n componentCount: tempMemUint32[4],\n /* The WASM API returns `0` for a scalar value. We clamp it to 1 as we strictly use it as a multiplier for get/set operations */\n arraySize: arraySize ? arraySize : 1,\n length: this.vertexCount,\n bufferType: (attr !== MeshAttribute.JointId\n ? Float32Array\n : Uint16Array) as TypedArrayCtor,\n });\n }\n\n /**\n * Destroy and free the meshes memory.\n *\n * It is best practice to set the mesh variable to `null` after calling\n * destroy to prevent accidental use:\n *\n * ```js\n * mesh.destroy();\n * mesh = null;\n * ```\n *\n * Accessing the mesh after destruction behaves like accessing an empty\n * mesh.\n *\n * @since 0.9.0\n */\n destroy(): void {\n this.engine.wasm._wl_mesh_destroy(this._id);\n this.engine.meshes._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Mesh(destroyed)';\n }\n return `Mesh(${this._index})`;\n }\n}\n\n/**\n * Options to create a new {@link MeshAttributeAccessor} instance.\n */\ninterface MeshAttributeAccessorOptions {\n attribute: number;\n offset: number;\n stride: number;\n formatSize: number;\n componentCount: number;\n arraySize: number;\n length: number;\n bufferType: T;\n}\n\n/**\n * An iterator over a mesh vertex attribute.\n *\n * Usage:\n *\n * ```js\n * const mesh = this.object.getComponent('mesh').mesh;\n * const positions = mesh.attribute(MeshAttribute.Position);\n *\n * // Equivalent to `new Float32Array(3)`.\n * const temp = positions.createArray();\n *\n * for(let i = 0; i < positions.length; ++i) {\n * // `pos` will reference `temp` and thereby not allocate additional\n * // memory, which would cause a perf spike when collected.\n * const pos = positions.get(i, temp);\n * // Scale position by 2 on x-axis only.\n * pos[0] *= 2.0;\n * positions.set(i, pos);\n * }\n * // We're done modifying, tell the engine to move vertex data to the GPU.\n * mesh.update();\n * ```\n */\nexport class MeshAttributeAccessor {\n /** Max number of elements. */\n readonly length: number = 0;\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Attribute index. @hidden */\n private _attribute: number = -1;\n /** Attribute offset. @hidden */\n private _offset: number = 0;\n /** Attribute stride. @hidden */\n private _stride: number = 0;\n /** Format size native enum. @hidden */\n private _formatSize: number = 0;\n /** Number of components per vertex. @hidden */\n private _componentCount: number = 0;\n /** Number of values per vertex. @hidden */\n private _arraySize: number = 1;\n\n /**\n * Class to instantiate an ArrayBuffer to get/set values.\n */\n private _bufferType: T;\n /**\n * Function to allocate temporary WASM memory. It is cached in the accessor to avoid\n * conditionals during get/set.\n */\n private _tempBufferGetter: (bytes: number) => TypedArray;\n\n /**\n * Create a new instance.\n *\n * @note Please use {@link Mesh.attribute} to create a new instance.\n *\n * @param options Contains information about how to read the data.\n * @note Do not use this constructor. Instead, please use the {@link Mesh.attribute} method.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, options: MeshAttributeAccessorOptions) {\n this._engine = engine;\n\n this._attribute = options.attribute;\n this._offset = options.offset;\n this._stride = options.stride;\n this._formatSize = options.formatSize;\n this._componentCount = options.componentCount;\n this._arraySize = options.arraySize;\n this._bufferType = options.bufferType;\n this.length = options.length;\n\n const wasm = this._engine.wasm;\n this._tempBufferGetter = (\n this._bufferType === Float32Array\n ? wasm.getTempBufferF32.bind(wasm)\n : wasm.getTempBufferU16.bind(wasm)\n ) as () => TypedArray;\n }\n\n /**\n * Create a new TypedArray to hold this attribute's values.\n *\n * This method is useful to create a view to hold the data to\n * pass to {@link get} and {@link set}\n *\n * Example:\n *\n * ```js\n * const vertexCount = 4;\n * const positionAttribute = mesh.attribute(MeshAttribute.Position);\n *\n * // A position has 3 floats per vertex. Thus, positions has length 3 * 4.\n * const positions = positionAttribute.createArray(vertexCount);\n * ```\n *\n * @param count The number of **vertices** expected.\n * @returns A TypedArray with the appropriate format to access the data\n */\n createArray(count = 1): TypedArray {\n count = count > this.length ? this.length : count;\n return new this._bufferType(\n count * this._componentCount * this._arraySize\n ) as TypedArray;\n }\n\n /** @overload */\n get(index: number): TypedArray;\n /**\n * Get attribute element.\n *\n * @param index Index\n * @param out Preallocated array to write into,\n * to avoid garbage, otherwise will allocate a new TypedArray.\n *\n * `out.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `out.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns The `out` parameter\n */\n get(index: number, out: T): T;\n get(index: number, out: NumberArray = this.createArray()): NumberArray {\n if (out.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(out.length, componentCount * this.length);\n\n const dest = this._tempBufferGetter(len);\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const destSize = elementSize * len;\n const srcFormatSize = this._formatSize * this._arraySize;\n const destFormatSize = this._componentCount * elementSize * this._arraySize;\n\n this.engine.wasm._wl_mesh_get_attribute_values(\n this._attribute,\n srcFormatSize,\n this._offset + index * this._stride,\n this._stride,\n destFormatSize,\n dest.byteOffset,\n destSize\n );\n\n for (let i = 0; i < len; ++i) out[i] = dest[i];\n return out;\n }\n\n /**\n * Set attribute element.\n *\n * @param i Index\n * @param v Value to set the element to\n *\n * `v.length` needs to be a multiple of the attributes component count, see\n * {@link MeshAttribute}. If `v.length` is more than one multiple, it will be\n * filled with the next n attribute elements, which can reduce overhead\n * of this call.\n *\n * @returns Reference to self (for method chaining)\n */\n set(i: number, v: Readonly) {\n if (v.length % this._componentCount !== 0) {\n throw new Error(\n `out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`\n );\n }\n\n /* Maximum number of values supported by the accessor, to avoid an out-of-bound access */\n const componentCount = this._componentCount * this._arraySize;\n const len = Math.min(v.length, componentCount * this.length);\n\n const elementSize = this._bufferType.BYTES_PER_ELEMENT;\n const srcSize = elementSize * len;\n const srcFormatSize = componentCount * elementSize;\n const destFormatSize = this._formatSize * this._arraySize;\n\n const wasm = this.engine.wasm;\n\n /* Unless we are already working with data from WASM heap, we\n * need to copy into temporary memory. */\n if ((v as Float32Array).buffer != wasm.HEAPU8.buffer) {\n const dest = this._tempBufferGetter(len);\n dest.set(v);\n v = dest;\n }\n\n wasm._wl_mesh_set_attribute_values(\n this._attribute,\n srcFormatSize,\n (v as Float32Array).byteOffset,\n srcSize,\n destFormatSize,\n this._offset + i * this._stride,\n this._stride\n );\n\n return this;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Wrapper around a native font resource.\n *\n * @note Fonts are **per-engine**, they can thus be shared by multiple scenes.\n *\n * @since 1.2.0\n */\nexport class Font extends Resource {\n /** Em height in object space. Equivalent to line height. */\n get emHeight(): number {\n return this.engine.wasm._wl_font_get_emHeight(this._id);\n }\n\n /**\n * Cap height in object space. This is the typical height of capital\n * letters. Can be 0 if not defined by the font.\n */\n get capHeight(): number {\n return this.engine.wasm._wl_font_get_capHeight(this._id);\n }\n\n /**\n * X height in object space. This is the typical height of lowercase\n * letters. Can be 0 if not defined by the font.\n */\n get xHeight(): number {\n return this.engine.wasm._wl_font_get_xHeight(this._id);\n }\n\n /**\n * Outline size. This is the factor by which characters are expanded to\n * create the outline effect. Returns 0 if the font was compiled without\n * an outline.\n *\n * @since 1.2.1\n */\n get outlineSize(): number {\n return this.engine.wasm._wl_font_get_outlineSize(this._id);\n }\n}\n\n/**\n * Wrapper around a native particle effect resource.\n *\n * @note Particle effects are **per-engine**, they can thus be shared by\n * multiple scenes.\n *\n * @since 1.4.0\n */\nexport class ParticleEffect extends Resource {\n /**\n * Create a copy of the underlying native particle effect.\n *\n * @returns Particle effect clone.\n */\n clone(): ParticleEffect | null {\n const index = this.engine.wasm._wl_particleEffect_clone(this._id);\n return this.engine.particleEffects.wrap(index);\n }\n}\n\n/** Temporary canvas */\nlet temp2d: {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n} | null = null;\n\n/**\n * Wrapper around a native texture data.\n *\n * For more information about how to create meshes, have a look at the\n * {@link TextureManager} class.\n *\n * @note Textures are **per-engine**, they can thus be shared by multiple scenes.\n */\nexport class Texture extends Resource {\n /**\n * @deprecated Use {@link TextureManager.create} instead, accessible via\n * {@link WonderlandEngine.textures}:\n *\n * ```js\n * const image = new Image();\n * image.onload = () => {\n * const texture = engine.textures.create(image);\n * };\n * ```\n */\n constructor(engine: WonderlandEngine, param: ImageLike | number) {\n if (isImageLike(param)) {\n const texture = engine.textures.create(param);\n /* `super()` must be called as stated in the specification */\n super(engine, texture._index);\n return texture;\n }\n super(engine, param);\n }\n\n /** Whether this texture is valid. */\n get valid(): boolean {\n return !this.isDestroyed && this.width !== 0 && this.height !== 0;\n }\n\n /**\n * Index in this manager.\n *\n * @deprecated Use {@link Texture.index} instead.\n */\n get id(): number {\n return this.index;\n }\n\n /** Update the texture to match the HTML element (e.g. reflect the current frame of a video). */\n update() {\n const image = this._imageIndex;\n if (!this.valid || !image) return;\n\n this.engine.wasm._wl_image_markDirty(image);\n }\n\n /**\n * Width of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the width used at creation.\n * If the actual element's width changed, it must be read from the element itself.\n */\n get width(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoWidth ?? element.width;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[0];\n }\n\n /**\n * Height of the texture.\n *\n * @note If the texture has an {@link htmlElement}, this is the height used at creation.\n * If the actual element's height changed, it must be read from the element itself.\n */\n get height(): number {\n const element = this.htmlElement;\n if (element) {\n /** @todo(1.5.0): Remove, the size should be entirely read from the wasm. */\n return (element as HTMLVideoElement).videoHeight ?? element.height;\n }\n const wasm = this.engine.wasm;\n wasm._wl_image_size(this._imageIndex, wasm._tempMem);\n return wasm._tempMemUint32[1];\n }\n\n /**\n * Returns the html element associated to this texture.\n *\n * @note This accessor will return `null` if the image is compressed.\n */\n get htmlElement(): ImageLike | null {\n const image = this._imageIndex;\n if (!image) return null;\n\n const wasm = this.engine.wasm;\n const jsImageIndex = wasm._wl_image_get_jsImage_index(image);\n\n /* Since the first element is `null`, no need to check for `jsImageIndex` */\n return wasm._images[jsImageIndex];\n }\n\n /**\n * Upload content to the texture to the GPU.\n *\n * Usage:\n *\n * ```js\n * // Size 128x64\n * const image = new Image();\n * texture.updateSubImage(28, 4, 100, 60, 0, 0, image);\n * ```\n *\n * @note The source is cropped if the destination offset and source dimensions\n * are out-of-bounds regarding the texture size.\n *\n * @note Uploading a texture without a source offset is significantly faster.\n *\n * #### ImageBitmap\n *\n * If you need to upload a subregion, it's recommended to use:\n *\n * ```js\n * createImageBitmap(image, sourceX, sourceY, sourceWidth, sourceHeight).then(bitmap => {\n * const destinationX = sourceX;\n * const destinationY = sourceY;\n * texture.updateSubImage(0, 0, sourceWidth, sourceHeight, destinationX, destinationY, bitmap);\n * });\n * ```\n *\n * You could use this method with a `src` offset, but the synchronous implementation\n * uses a temporary 2d canvas, negatively affecting performance for large content.\n *\n * @param srcX Horizontal pixel offset, in the source image.\n * @param srcY Vertical pixel offset, in the source image.\n * @param srcWidth Width of the sub image, in the source image.\n * @param srcHeight Height of the sub image, in the source image\n * @param dstX Horizontal pixel offset, in the destination image.\n * Defaults to `srcX` for backward compatibility with older API versions.\n * @param dstY Vertical pixel offset, in the destination image.\n * Defaults to `srcY` for backward compatibility with older API versions.\n * @param content `Image`, `HTMLCanvasElement`, `HTMLVideoElement`, or `ImageBitmap` to upload.\n * @returns `true` if the update went through, `false` otherwise.\n */\n updateSubImage(\n srcX: number,\n srcY: number,\n srcWidth: number,\n srcHeight: number,\n dstX: number = srcX,\n dstY: number = srcY,\n content?: ImageLike\n ): boolean {\n if (this.isDestroyed) return false;\n\n const image = this._imageIndex;\n if (!image) return false;\n\n let img = content ?? this.htmlElement;\n if (!img) return false;\n\n const isImageBitmap = img instanceof ImageBitmap;\n /* ImageBitmap can't be flipped upon upload to the GPU.\n * Thus, we need to skip flipping the temporary canvas to keep the same behavior\n * when uploading an ImageBitmap and uploading a blitted ImageBitmap. */\n const flipY = !isImageBitmap;\n\n if (srcX || srcY) {\n /* Lazy initialize temp canvas */\n if (!temp2d) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error(\n 'Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D.'\n );\n }\n temp2d = {canvas, ctx};\n }\n temp2d.canvas.width = srcWidth;\n temp2d.canvas.height = srcHeight;\n\n temp2d.ctx.drawImage(\n img,\n srcX,\n isImageBitmap ? img.height - srcY - srcHeight : srcY,\n srcWidth,\n srcHeight,\n 0,\n 0,\n srcWidth,\n srcHeight\n );\n img = temp2d.canvas;\n }\n\n const wasm = this.engine.wasm;\n wasm._images[0] = img;\n\n /* Clamp the width/height to avoid a GL upload error */\n const width = srcWidth - Math.max(srcWidth + dstX - this.width, 0);\n const height = srcHeight - Math.max(srcHeight + dstY - this.height, 0);\n const dstReversedY = this.height - dstY - height;\n\n const ret = wasm._wl_renderer_updateImage(\n image,\n 0,\n width,\n height,\n dstX,\n dstReversedY,\n flipY\n );\n wasm._images[0] = null;\n\n return !!ret;\n }\n\n /**\n * Destroy and free the texture's texture altas space and memory.\n *\n * It is best practice to set the texture variable to `null` after calling\n * destroy to prevent accidental use of the invalid texture:\n *\n * ```js\n * texture.destroy();\n * texture = null;\n * ```\n *\n * @since 0.9.0\n */\n destroy(): void {\n const wasm = this.engine.wasm;\n\n const img = wasm._images[this._imageIndex];\n if (img instanceof ImageBitmap) img.close();\n\n wasm._wl_texture_destroy(this._id);\n this.engine.textures._destroy(this);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Texture(destroyed)';\n }\n return `Texture(${this._index})`;\n }\n\n private get _imageIndex() {\n return this.engine.wasm._wl_texture_get_image_index(this._id);\n }\n}\n\n/**\n * Wrapper around a native animation.\n */\nexport class Animation extends SceneResource {\n /**\n * @param index Index in the manager\n */\n constructor(host: WonderlandEngine | Prefab = WL, index: number) {\n const scene = host instanceof Prefab ? host : host.scene;\n super(scene as Prefab, index);\n }\n\n /** Duration of this animation. */\n get duration(): number {\n return this.engine.wasm._wl_animation_get_duration(this._id);\n }\n\n /** Number of tracks in this animation. */\n get trackCount(): number {\n return this.engine.wasm._wl_animation_get_trackCount(this._id);\n }\n\n /**\n * Clone this animation retargeted to a new set of objects.\n *\n * The clone shares most of the data with the original and is therefore\n * light-weight.\n *\n * **Experimental:** This API might change in upcoming versions.\n *\n * If retargeting to {@link Skin}, the join names will be used to determine a mapping\n * from the previous skin to the new skin. The source skin will be retrieved from\n * the first track in the animation that targets a joint.\n *\n * @param newTargets New targets per track. Expected to have\n * {@link Animation#trackCount} elements or to be a {@link Skin}.\n * @returns The retargeted clone of this animation.\n */\n retarget(newTargets: Object3D[] | Skin): Animation {\n const wasm = this.engine.wasm;\n if (newTargets instanceof Skin) {\n const index = wasm._wl_animation_retargetToSkin(this._id, newTargets._id);\n return this._scene.animations.wrap(index)!;\n }\n\n if (newTargets.length != this.trackCount) {\n throw Error(\n 'Expected ' +\n this.trackCount.toString() +\n ' targets, but got ' +\n newTargets.length.toString()\n );\n }\n const ptr = wasm._malloc(2 * newTargets.length);\n for (let i = 0; i < newTargets.length; ++i) {\n const object3d = newTargets[i];\n this.scene.assertOrigin(object3d);\n /* Use local id here and **not** packed id, because the WASM\n * takes ownership and reinterprets the ids. */\n wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId;\n }\n const index = wasm._wl_animation_retarget(this._id, ptr);\n wasm._free(ptr);\n\n return this._scene.animations.wrap(index)!;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Animation(destroyed)';\n }\n return `Animation(${this._index})`;\n }\n}\n\n/**\n * Scene graph object.\n *\n * Node in the scene graph or \"entity\". Consists of transformation and a reference\n * to its parent object. Usually holds components and is accessible by components\n * through {@link Component#object}.\n *\n * Objects are stored in a data oriented manner inside WebAssembly memory. This class\n * is a JavaScript API wrapper around this memory for more convenient use in\n * components.\n *\n * Objects can be created and added to a scene through {@link Prefab.addObject}:\n *\n * ```js\n * const parent = scene.addObject();\n * parent.name = 'parent`';\n * const child = scene.addObject(parent);\n * child.name = 'child`';\n * ```\n */\nexport class Object3D {\n /**\n * Packed object id, containing scene index and local id.\n *\n * @hidden\n */\n readonly _id: number = -1;\n /** Object id, relative to the scene manager. @hidden */\n readonly _localId: number = -1;\n\n /** Scene instance. @hidden */\n protected readonly _scene: Prefab;\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /**\n * @param o Object id to wrap.\n *\n * @deprecated Objects must be obtained via {@link Scene.addObject} or {@link Scene.wrap}:\n *\n * ```js\n * // Create a new object.\n * const obj = scene.addObject();\n *\n * // Wrap an object using its id. The id must be valid.\n * const obj = scene.wrap(0);\n * ```\n *\n * @hidden\n */\n constructor(scene: WonderlandEngine | Prefab, id: number) {\n scene = scene instanceof Prefab ? scene : scene.scene;\n this._localId = id;\n this._id = (scene._index << 22) | id;\n this._scene = scene;\n /** @todo: Remove and only keep getter. */\n this._engine = scene.engine;\n }\n\n /**\n * Name of the object.\n *\n * Useful for identifying objects during debugging.\n */\n get name(): string {\n const wasm = this._engine.wasm;\n return wasm.UTF8ToString(wasm._wl_object_name(this._id));\n }\n\n /**\n * Set the object's name.\n *\n * @param newName The new name to set.\n */\n set name(newName: string) {\n const wasm = this._engine.wasm;\n wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName));\n }\n\n /**\n * Parent of this object or `null` if parented to root.\n */\n get parent(): Object3D | null {\n const p = this._engine.wasm._wl_object_parent(this._id);\n return p === 0 ? null : this._scene.wrap(p);\n }\n\n /**\n * Equivalent to {@link Object3D.getChildren}.\n *\n * @note Prefer to use {@link Object3D.getChildren} for performance.\n */\n get children(): Object3D[] {\n return this.getChildren();\n }\n\n /** The number of children of this object. */\n get childrenCount(): number {\n return this._engine.wasm._wl_object_get_children_count(this._id);\n }\n\n /**\n * Reparent object to given object.\n *\n * @note Reparenting is not trivial and might have a noticeable performance impact.\n *\n * @param newParent New parent or `null` to parent to root\n */\n set parent(newParent: Object3D | undefined | null) {\n if (this.markedDestroyed) {\n const strThis = this.toString();\n const strParent = newParent ? newParent : 'root';\n throw new Error(\n `Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`\n );\n } else if (newParent?.markedDestroyed) {\n const strParent = newParent.toString();\n throw new Error(\n `Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`\n );\n }\n this.scene.assertOrigin(newParent);\n this._engine.wasm._wl_object_set_parent(\n this._id,\n newParent == null ? 0 : newParent._id\n );\n }\n\n /** Local object id in the scene manager. */\n get objectId() {\n return this._localId;\n }\n\n /** Scene instance. */\n get scene() {\n return this._scene;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n\n /**\n * Add an object as a child of this instance.\n *\n * @returns A newly created object.\n */\n addChild(): Object3D {\n const objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id);\n const obj = this.scene.wrap(objectId);\n return obj;\n }\n\n /**\n * Clone this hierarchy into a new one.\n *\n * Cloning copies the hierarchy structure, object names,\n * as well as components.\n *\n * JavaScript components are cloned using {@link Component.copy}. You can\n * override this method in your components.\n *\n * @param parent The parent for the cloned hierarchy or `null` to clone\n * into the scene root. Defaults to `null`.\n *\n * @returns The clone of this object.\n */\n clone(parent: Object3D | null = null): Object3D {\n this.scene.assertOrigin(parent);\n const engine = this._engine;\n const id = engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0);\n return this._scene.wrap(id);\n }\n\n /**\n * Children of this object.\n *\n * @note Child order is **undefined**. No assumptions should be made\n * about the index of a specific object.\n *\n * If you need to access a specific child of this object, you can\n * use {@link Object3D.findByName}.\n *\n * When the object exists in the scene at editor time, prefer passing it as\n * a component property.\n *\n * @note When providing an output array, only `this.childrenCount` elements will be written.\n * The rest of the array will not be modified by this method.\n *\n * @param out Destination array, expected to have at least `this.childrenCount` elements.\n * @returns The `out` parameter.\n */\n getChildren(out: Object3D[] = new Array(this.childrenCount)): Object3D[] {\n const childrenCount = this.childrenCount;\n if (childrenCount === 0) return out;\n\n const wasm = this._engine.wasm;\n wasm.requireTempMem(childrenCount * 2);\n\n this._engine.wasm._wl_object_get_children(\n this._id,\n wasm._tempMem,\n wasm._tempMemSize >> 1\n );\n\n for (let i = 0; i < childrenCount; ++i) {\n out[i] = this._scene.wrap(wasm._tempMemUint16[i]);\n }\n return out;\n }\n\n /**\n * Reset local transformation (translation, rotation and scaling) to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetTransform(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /**\n * Reset local position and rotation to identity.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPositionRotation(): this {\n this._engine.wasm._wl_object_reset_translation_rotation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPositionRotation} instead. */\n resetTranslationRotation(): this {\n return this.resetPositionRotation();\n }\n\n /**\n * Reset local rotation, keep translation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetRotation(): this {\n this._engine.wasm._wl_object_reset_rotation(this._id);\n return this;\n }\n\n /**\n * Reset local translation, keep rotation.\n *\n * @note To reset both rotation and translation, prefer\n * {@link resetTranslationRotation}.\n *\n * @returns Reference to self (for method chaining).\n */\n resetPosition(): this {\n this._engine.wasm._wl_object_reset_translation(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.resetPosition} instead. */\n resetTranslation(): this {\n return this.resetPosition();\n }\n\n /**\n * Reset local scaling to identity (``[1.0, 1.0, 1.0]``).\n *\n * @returns Reference to self (for method chaining).\n */\n resetScaling(): this {\n this._engine.wasm._wl_object_reset_scaling(this._id);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.translateLocal} instead. */\n translate(v: Readonly): this {\n return this.translateLocal(v);\n }\n\n /**\n * Translate object by a vector in the parent's space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateLocal(v: Readonly): this {\n this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in object space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateObject(v: Readonly): this {\n this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /**\n * Translate object by a vector in world space.\n *\n * @param v Vector to translate by.\n *\n * @returns Reference to self (for method chaining).\n */\n translateWorld(v: Readonly): this {\n this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleDegLocal} instead. */\n rotateAxisAngleDeg(a: Readonly, d: number): this {\n this.rotateAxisAngleDegLocal(a, d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleRad}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateAxisAngleRadLocal} instead. */\n rotateAxisAngleRad(a: Readonly, d: number): this {\n return this.rotateAxisAngleRadLocal(a, d);\n }\n\n /**\n * Rotate around given axis by given angle (radians) in local space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in radians.\n *\n * @note If the object is translated the rotation will be around\n * the parent. To rotate around the object origin, use\n * {@link rotateAxisAngleDegObject}\n *\n * @see {@link rotateAxisAngleDeg}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadLocal(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (degrees) in object space.\n *\n * @param a Vector representing the rotation axis.\n * @param d Angle in degrees.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @see {@link rotateAxisAngleRadObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleDegObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d);\n return this;\n }\n\n /**\n * Rotate around given axis by given angle (radians) in object space\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param a Vector representing the rotation axis\n * @param d Angle in degrees\n *\n * @see {@link rotateAxisAngleDegObject}\n *\n * @returns Reference to self (for method chaining).\n */\n rotateAxisAngleRadObject(a: Readonly, d: number): this {\n this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(\n this._id,\n a[0],\n a[1],\n a[2],\n d\n );\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.rotateLocal} instead. */\n rotate(q: Readonly): this {\n this.rotateLocal(q);\n return this;\n }\n\n /**\n * Rotate by a quaternion.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateLocal(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /**\n * Rotate by a quaternion in object space.\n *\n * Equivalent to prepending a rotation quaternion to the object's\n * local transformation.\n *\n * @param q the Quaternion to rotate by.\n *\n * @returns Reference to self (for method chaining).\n */\n rotateObject(q: Readonly): this {\n this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.scaleLocal} instead. */\n scale(v: Readonly): this {\n this.scaleLocal(v);\n return this;\n }\n\n /**\n * Scale object by a vector in object space.\n *\n * @param v Vector to scale by.\n *\n * @returns Reference to self (for method chaining).\n */\n scaleLocal(v: Readonly): this {\n this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getPositionLocal(): Float32Array;\n /**\n * Compute local / object space position from transformation.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getPositionLocal(out: T): T;\n getPositionLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_local(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationLocal(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionLocal} instead. */\n getTranslationLocal(out: T): T;\n getTranslationLocal(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionLocal(out);\n }\n\n /** @overload */\n getPositionWorld(): Float32Array;\n /**\n * Compute world space position from transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getPositionWorld(out: T): T;\n getPositionWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n const wasm = this._engine.wasm;\n /* Translation is different than rotation & scaling.\n * We can't simply read the memory. */\n wasm._wl_object_get_translation_world(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /** @overload */\n getTranslationWorld(): Float32Array;\n /** @deprecated Please use {@link Object3D.getPositionWorld} instead. */\n getTranslationWorld(out: T): T;\n getTranslationWorld(out: NumberArray = new Float32Array(3)): NumberArray {\n return this.getPositionWorld(out);\n }\n\n /**\n * Set local / object space position.\n *\n * Concatenates a new translation dual quaternion onto the existing rotation.\n *\n * @param v New local position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionLocal} instead. */\n setTranslationLocal(v: Readonly): this {\n return this.setPositionLocal(v);\n }\n\n /**\n * Set world space position.\n *\n * Applies the inverse parent transform with a new translation dual quaternion\n * which is concatenated onto the existing rotation.\n *\n * @param v New world position array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setPositionWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @deprecated Please use {@link Object3D.setPositionWorld} instead. */\n setTranslationWorld(v: Readonly): this {\n return this.setPositionWorld(v);\n }\n\n /** @overload */\n getScalingLocal(): Float32Array;\n /**\n * Local / object space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingLocal(out: T): T;\n getScalingLocal(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set local / object space scaling.\n *\n * @param v New local scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getScalingWorld(): Float32Array;\n /**\n * World space scaling.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getScalingWorld(out: T): T;\n getScalingWorld(out: NumberArray = new Float32Array(3)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_scaling_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n return out;\n }\n\n /**\n * Set World space scaling.\n *\n * @param v New world scaling array/vector, expected to have at least 3 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setScalingWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]);\n return this;\n }\n\n /** @overload */\n getRotationLocal(): Float32Array;\n /**\n * Local space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationLocal(out: T): T;\n getRotationLocal(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationLocal(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getRotationWorld(): Float32Array;\n /**\n * World space rotation.\n *\n * @param out Destination array/vector, expected to have at least 4 elements.\n * @return The `out` parameter.\n *\n * @since 1.0.0\n */\n getRotationWorld(out: T): T;\n getRotationWorld(out: NumberArray = new Float32Array(4)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n /* The first 4 floats represent the rotation quaternion. */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New world rotation array/vector, expected to have at least 4 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setRotationWorld(v: Readonly): this {\n this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]);\n return this;\n }\n\n /** @overload */\n getTransformLocal(): Float32Array;\n /**\n * Local space transformation.\n *\n * @param out Destination array/vector, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformLocal(out: T): T;\n getTransformLocal(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set local space rotation.\n *\n * @param v New local transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformLocal(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_local(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this.setDirty();\n return this;\n }\n\n /** @overload */\n getTransformWorld(): Float32Array;\n /**\n * World space transformation.\n *\n * @param out Destination array, expected to have at least 8 elements.\n * @return The `out` parameter.\n */\n getTransformWorld(out: T): T;\n getTransformWorld(out: NumberArray = new Float32Array(8)) {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n out[0] = wasm.HEAPF32[ptr];\n out[1] = wasm.HEAPF32[ptr + 1];\n out[2] = wasm.HEAPF32[ptr + 2];\n out[3] = wasm.HEAPF32[ptr + 3];\n out[4] = wasm.HEAPF32[ptr + 4];\n out[5] = wasm.HEAPF32[ptr + 5];\n out[6] = wasm.HEAPF32[ptr + 6];\n out[7] = wasm.HEAPF32[ptr + 7];\n return out;\n }\n\n /**\n * Set world space rotation.\n *\n * @param v New world transform array, expected to have at least 8 elements.\n *\n * @returns Reference to self (for method chaining).\n */\n setTransformWorld(v: Readonly): this {\n const wasm = this._engine.wasm;\n const ptr = wasm._wl_object_trans_world(this._id) / 4; /* Align F32 */\n wasm.HEAPF32[ptr] = v[0];\n wasm.HEAPF32[ptr + 1] = v[1];\n wasm.HEAPF32[ptr + 2] = v[2];\n wasm.HEAPF32[ptr + 3] = v[3];\n wasm.HEAPF32[ptr + 4] = v[4];\n wasm.HEAPF32[ptr + 5] = v[5];\n wasm.HEAPF32[ptr + 6] = v[6];\n wasm.HEAPF32[ptr + 7] = v[7];\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n return this;\n }\n\n /**\n * Local space transformation.\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n get transformLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_local(this._id),\n 8\n );\n }\n\n /**\n * Set local transform.\n *\n * @param t Local space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformLocal} and\n * {@link Object3D.getTransformLocal} instead.\n */\n set transformLocal(t: Readonly) {\n this.transformLocal.set(t);\n this.setDirty();\n }\n\n /**\n * Global / world space transformation.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n get transformWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_trans_world(this._id),\n 8\n );\n }\n\n /**\n * Set world transform.\n *\n * @param t Global / world space transformation.\n *\n * @since 0.8.5\n *\n * @deprecated Please use {@link Object3D.setTransformWorld} and\n * {@link Object3D.getTransformWorld} instead.\n */\n set transformWorld(t: Readonly) {\n this.transformWorld.set(t);\n this._engine.wasm._wl_object_trans_world_to_local(this._id);\n }\n\n /**\n * Local / object space scaling.\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n get scalingLocal(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_local(this._id),\n 3\n );\n }\n\n /**\n * Set local space scaling.\n *\n * @param s Local space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingLocal} and\n * {@link Object3D.getScalingLocal} instead.\n */\n set scalingLocal(s: Readonly) {\n this.scalingLocal.set(s);\n this.setDirty();\n }\n\n /**\n * Global / world space scaling.\n *\n * May recompute transformations of the hierarchy of this object,\n * if they were changed by JavaScript components this frame.\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n get scalingWorld(): Float32Array {\n const wasm = this._engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_object_scaling_world(this._id),\n 3\n );\n }\n\n /**\n * Set world space scaling.\n *\n * @param t World space scaling.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.setScalingWorld} and\n * {@link Object3D.getScalingWorld} instead.\n */\n set scalingWorld(s: Readonly) {\n this.scalingWorld.set(s);\n this._engine.wasm._wl_object_scaling_world_to_local(this._id);\n }\n\n /**\n * Local space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n get rotationLocal(): Float32Array {\n return this.transformLocal.subarray(0, 4);\n }\n\n /**\n * Global / world space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n get rotationWorld(): Float32Array {\n return this.transformWorld.subarray(0, 4);\n }\n\n /**\n * Set local space rotation.\n *\n * @param r Local space rotation\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationLocal} and\n * {@link Object3D.setRotationLocal} instead.\n */\n set rotationLocal(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /**\n * Set world space rotation.\n *\n * @param r Global / world space rotation.\n *\n * @since 0.8.7\n *\n * @deprecated Please use {@link Object3D.getRotationWorld} and\n * {@link Object3D.setRotationWorld} instead.\n */\n set rotationWorld(r: Readonly) {\n this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]);\n }\n\n /** @deprecated Please use {@link Object3D.getForwardWorld} instead. */\n getForward(out: T): T {\n return this.getForwardWorld(out);\n }\n\n /**\n * Compute the object's forward facing world space vector.\n *\n * The forward vector in object space is along the negative z-axis, i.e.,\n * `[0, 0, -1]`.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getForwardWorld(out: T): T {\n out[0] = 0;\n out[1] = 0;\n out[2] = -1;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getUpWorld} instead. */\n getUp(out: T): T {\n return this.getUpWorld(out);\n }\n\n /**\n * Compute the object's up facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getUpWorld(out: T): T {\n out[0] = 0;\n out[1] = 1;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /** @deprecated Please use {@link Object3D.getRightWorld} instead. */\n getRight(out: T): T {\n return this.getRightWorld(out);\n }\n\n /**\n * Compute the object's right facing world space vector.\n *\n * @param out Destination array/vector, expected to have at least 3 elements.\n * @return The `out` parameter.\n */\n getRightWorld(out: T): T {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n this.transformVectorWorld(out);\n return out;\n }\n\n /**\n * Transform a vector by this object's world transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a vector by this object's local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out;\n }\n\n /**\n * Transform a point by this object's world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse world transform.\n *\n * @param out Out vector.\n * @param v Vector to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseWorld(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a vector by this object's inverse local transform.\n *\n * @param out Out vector\n * @param v Vector to transform, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformVectorInverseLocal(out: T, v: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = v[0];\n wasm._tempMemFloat[1] = v[1];\n wasm._tempMemFloat[2] = v[2];\n wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse world transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseWorld(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat[0] = p[0];\n wasm._tempMemFloat[1] = p[1];\n wasm._tempMemFloat[2] = p[2];\n wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform a point by this object's inverse local transform.\n *\n * @param out Out point.\n * @param p Point to transform, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n transformPointInverseLocal(out: T, p: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(p);\n wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n\n return out;\n }\n\n /**\n * Transform an object space dual quaternion into world space.\n *\n * @param out Out transformation.\n * @param q Local space transformation, default `out`.\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toWorldSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into local space.\n *\n * @param out Out transformation\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toLocalSpaceTransform(out: T, q: NumberArray = out): T {\n const p = this.parent;\n if (p) {\n p.toObjectSpaceTransform(out, q);\n return out;\n }\n if (out !== q) {\n out[0] = q[0];\n out[1] = q[1];\n out[2] = q[2];\n out[3] = q[3];\n out[4] = q[4];\n out[5] = q[5];\n out[6] = q[6];\n out[7] = q[7];\n }\n return out;\n }\n\n /**\n * Transform a world space dual quaternion into object space.\n *\n * @param out Out transformation.\n * @param q World space transformation, default `out`\n * @return The `out` parameter.\n *\n * @since 0.8.7\n */\n toObjectSpaceTransform(out: T, q: NumberArray = out): T {\n const wasm = this._engine.wasm;\n wasm._tempMemFloat.set(q);\n wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n out[3] = wasm._tempMemFloat[3];\n\n out[4] = wasm._tempMemFloat[4];\n out[5] = wasm._tempMemFloat[5];\n out[6] = wasm._tempMemFloat[6];\n out[7] = wasm._tempMemFloat[7];\n\n return out;\n }\n\n /**\n * Turn towards / look at target.\n *\n * Rotates the object so that its forward vector faces towards the target\n * position. The `up` vector acts as a hint to uniquely orient the object's\n * up direction. When orienting a view component, the projected `up` vector\n * faces upwards on the viewing plane.\n *\n * @param p Target position to turn towards, in world space.\n * @param up Up vector to align object with, in world space. Default is `[0, 1, 0]`.\n *\n * @returns Reference to self (for method chaining).\n */\n lookAt(p: NumberArray, up: NumberArray = UP_VECTOR): this {\n this._engine.wasm._wl_object_lookAt(\n this._id,\n p[0],\n p[1],\n p[2],\n up[0],\n up[1],\n up[2]\n );\n return this;\n }\n\n /** Destroy the object with all of its components and remove it from the scene */\n destroy(): void {\n if (this._id < 0) return;\n /* This will automatically call `scene._destroyObject` */\n this.engine.wasm._wl_object_remove(this._id);\n }\n\n /**\n * Mark transformation dirty.\n *\n * Causes an eventual recalculation of {@link transformWorld}, either\n * on next {@link getTranslationWorld}, {@link transformWorld} or\n * {@link scalingWorld} or the beginning of next frame, whichever\n * happens first.\n */\n setDirty(): void {\n this._engine.wasm._wl_object_set_dirty(this._id);\n }\n\n /**\n * Disable/enable all components of this object.\n *\n * @param b New state for the components.\n *\n * @since 0.8.5\n */\n set active(b: boolean) {\n const comps = this.getComponents();\n for (let c of comps) {\n c.active = b;\n }\n }\n\n /* `getComponent` overloads for native components. */\n\n /** @overload */\n getComponent(\n type: K,\n index?: number\n ): NativeComponents[K] | null;\n /** @overload */\n getComponent(typeOrClass: string, index?: number): Component | null;\n /**\n * Get a component attached to this object.\n *\n * @param typeOrClass Type name. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field to find the component.\n * @param index=0 Index for component of given type. This can be used to access specific\n * components if the object has multiple components of the same type.\n * @returns The component or `null` if there is no such component on this object\n */\n getComponent(\n typeOrClass: ComponentConstructor,\n index?: number\n ): T | null;\n getComponent(\n typeOrClass: string | ComponentConstructor,\n index: number = 0\n ): Component | null {\n const wasm = this._engine.wasm;\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n\n const scene = this._scene;\n const componentType = wasm._wl_scene_get_component_manager_index(\n scene._index,\n wasm.tempUTF8(type)\n );\n\n if (componentType < 0) {\n /* Not a native component, try js: */\n const typeIndex = wasm._componentTypeIndices[type];\n if (typeIndex === undefined) return null;\n const jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index);\n if (jsIndex < 0) return null;\n\n const component = this._scene._jsComponents[jsIndex];\n return component.constructor !== BrokenComponent ? component : null;\n }\n\n const componentId = wasm._wl_get_component_id(this._id, componentType, index);\n return scene._components.wrapNative(componentType, componentId);\n }\n\n /* `getComponents` overloads for native components. */\n\n /** @overload */\n getComponents(): Component[];\n /** @overload */\n getComponents(type: K): NativeComponents[K][];\n /**\n * @param typeOrClass Type name, pass a falsey value (`undefined` or `null`) to retrieve all.\n * It's also possible to give a class definition. In this case, the method will use the `class.TypeName` field to\n * find the components.\n * @returns All components of given type attached to this object.\n *\n * @note As this function is non-trivial, avoid using it in `update()` repeatedly,\n * but rather store its result in `init()` or `start()`\n * @warning This method will currently return at most 341 components.\n */\n getComponents(typeOrClass: ComponentConstructor): T[];\n getComponents(\n typeOrClass?: string | ComponentConstructor | null\n ): T[] {\n const wasm = this._engine.wasm;\n const scene = this._scene;\n\n let manager = null;\n let type = null;\n if (typeOrClass) {\n type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = scene._components.getNativeManager(type);\n manager = nativeManager !== null ? nativeManager : scene._components.js;\n }\n\n const components: Component[] = [];\n const maxComps = Math.floor((wasm._tempMemSize / 3) * 2);\n const componentsCount = wasm._wl_object_get_components(\n this._id,\n wasm._tempMem,\n maxComps\n );\n const offset = 2 * componentsCount;\n wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset, maxComps);\n\n for (let i = 0; i < componentsCount; ++i) {\n const t = wasm._tempMemUint8[i + offset];\n const componentId = wasm._tempMemUint16[i];\n if (manager !== null && t !== manager) continue;\n\n const comp = this._scene._components.wrapAny(t, componentId);\n if (!comp) continue;\n if (type && type !== (comp.constructor as ComponentConstructor).TypeName)\n continue;\n components.push(comp);\n }\n return components as T[];\n }\n\n /* `addComponent` overloads for native components. */\n\n /** @overload */\n addComponent(type: 'collision', params?: Record): CollisionComponent;\n /** @overload */\n addComponent(type: 'text', params?: Record): TextComponent;\n /** @overload */\n addComponent(type: 'view', params?: Record): ViewComponent;\n /** @overload */\n addComponent(type: 'mesh', params?: Record): MeshComponent;\n /** @overload */\n addComponent(type: 'input', params?: Record): InputComponent;\n /** @overload */\n addComponent(type: 'light', params?: Record): LightComponent;\n /** @overload */\n addComponent(type: 'animation', params?: Record): AnimationComponent;\n /** @overload */\n addComponent(type: 'physx', params?: Record): PhysXComponent;\n /** @overload */\n addComponent(\n type: 'particle-effect',\n params?: Record\n ): ParticleEffectComponent;\n /** @overload */\n addComponent(type: string, params?: Record): Component;\n /**\n * Add component of given type to the object.\n *\n * You can use this function to clone components, see the example below.\n *\n * ```js\n * // Clone existing component (since 0.8.10)\n * let original = this.object.getComponent('mesh');\n * otherObject.addComponent('mesh', original);\n * // Create component from parameters\n * this.object.addComponent('mesh', {\n * mesh: someMesh,\n * material: someMaterial,\n * });\n * ```\n *\n * @param typeOrClass Typename to create a component of. Can be native or\n * custom JavaScript component type. It's also possible to give a class definition.\n * In this case, the method will use the `class.TypeName` field.\n * @param params Parameters to initialize properties of the new component,\n * can be another component to copy properties from.\n *\n * @returns The component or `null` if the type was not found\n */\n addComponent(\n typeClass: ComponentConstructor,\n params?: Record\n ): T;\n addComponent(\n typeOrClass: ComponentConstructor | string,\n params?: Record\n ): Component {\n if (this.markedDestroyed) {\n throw new Error(`Failed to add component. ${this} is marked as destroyed.`);\n }\n\n const wasm = this._engine.wasm;\n\n const type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName;\n const nativeManager = this._scene._components.getNativeManager(type);\n const isNative = nativeManager !== null;\n const manager = isNative ? nativeManager : this._scene._components.js;\n\n let componentId = -1;\n if (!isNative) {\n /* JavaScript component */\n if (!(type in wasm._componentTypeIndices)) {\n throw new TypeError(\"Unknown component type '\" + type + \"'\");\n }\n componentId = wasm._wl_object_add_js_component(\n this._id,\n wasm._componentTypeIndices[type]\n );\n } else {\n /* native component */\n componentId = wasm._wl_object_add_component(this._id, manager);\n }\n\n const component = this._scene._components.wrapAny(manager, componentId)!;\n\n if (params !== undefined) component.copy(params as Component);\n\n /* Explicitly initialize js components */\n if (!isNative) {\n component._triggerInit();\n /* start() is called through onActivate() */\n }\n\n /* If it was not explicitly requested by the user to leave the component inactive,\n * we activate it as a final step. This invalidates componentIndex! */\n if (!params || !('active' in params && !params.active)) {\n component.active = true;\n }\n\n return component;\n }\n\n /**\n * Search for descendants matching the name.\n *\n * This method is a wrapper around {@link Object3D.findByNameDirect} and\n * {@link Object3D.findByNameRecursive}.\n *\n * @param name The name to search for.\n * @param recursive If `true`, the method will look at all the descendants of this object.\n * If `false`, this method will only perform the search in direct children.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByName(name: string, recursive = false): Object3D[] {\n return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name);\n }\n\n /**\n * Search for all **direct** children matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameDirect(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 2; /* Reserve two ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n buffer[maxCount + 1] = 0; /* child count */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const childCountPtr = bufferPtr + maxCount * 2 + 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2);\n\n const result: Object3D[] = [];\n let read = 0;\n while (\n (read = wasm._wl_object_findByName(\n id,\n namePtr,\n indexPtr,\n childCountPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Search for **all descendants** matching the name.\n *\n * @note Even though this method is heavily optimized, it does perform\n * a linear search to find the objects. Do not use in a hot path.\n *\n * @param name The name to search for.\n * @returns An array of {@link Object3D} matching the name.\n *\n * @since 1.1.0\n */\n findByNameRecursive(name: string): Object3D[] {\n const wasm = this._engine.wasm;\n const id = this._id;\n\n /* Divide by 4 to get half as many ushort as possible */\n const tempSizeU16 = wasm._tempMemSize >> 2;\n const maxCount = tempSizeU16 - 1; /* Reserve one ushort */\n\n const buffer = wasm._tempMemUint16;\n buffer[maxCount] = 0; /* Index offset */\n\n const bufferPtr = wasm._tempMem;\n const indexPtr = bufferPtr + maxCount * 2;\n const namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2);\n\n let read = 0;\n const result: Object3D[] = [];\n while (\n (read = wasm._wl_object_findByNameRecursive(\n id,\n namePtr,\n indexPtr,\n bufferPtr,\n maxCount\n ))\n ) {\n for (let i = 0; i < read; ++i) {\n result.push(this._scene.wrap(buffer[i]));\n }\n }\n\n return result;\n }\n\n /**\n * Whether given object's transformation has changed.\n */\n get changed(): boolean {\n return !!this._engine.wasm._wl_object_is_changed(this._id);\n }\n\n /**\n * `true` if the object is destroyed, `false` otherwise.\n *\n * If {@link WonderlandEngine.erasePrototypeOnDestroy} is `true`,\n * reading a custom property will not work:\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = scene.addObject();\n * obj.customParam = 'Hello World!';\n *\n * console.log(obj.isDestroyed); // Prints `false`\n * obj.destroy();\n * console.log(obj.isDestroyed); // Prints `true`\n * console.log(obj.customParam); // Throws an error\n * ```\n *\n * @since 1.1.1\n */\n get isDestroyed(): boolean {\n return this._id < 0;\n }\n\n /**\n * `true` if the object is marked as destroyed.\n *\n * This boolean will only ever be `true` when reading objects state\n * from the {@link Component.onDestroy} callback, i.e.,\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n * class CleanupComponent extends Component {\n * onDestroy() {\n * if (this.object.markedDestroyed) {\n * // this object is getting removed\n * } else {\n * // The component is getting destroyed, the object will\n * // still exist after the destruction call\n * }\n * }\n * }\n * ```\n *\n * Certain operations are forbidden when an object is pending destruction:\n * - Reparenting the object via {@link parent}\n * - {@link addComponent}\n * - {@link Scene.addObject}\n * - {@link Scene.destroy}\n */\n get markedDestroyed(): boolean {\n const wasm = this.engine.wasm;\n return !!wasm._wl_object_markedDestroyed(this._id);\n }\n\n /**\n * Checks equality by comparing ids and **not** the JavaScript reference.\n *\n * @deprecate Use JavaScript reference comparison instead:\n *\n * ```js\n * const objectA = scene.addObject();\n * const objectB = scene.addObject();\n * const objectC = objectB;\n * console.log(objectA === objectB); // false\n * console.log(objectA === objectA); // true\n * console.log(objectB === objectC); // true\n * ```\n */\n equals(otherObject: Object3D | undefined | null): boolean {\n /** @todo(2.0.0): Remove this method. */\n if (!otherObject) return false;\n return this._id == otherObject._id;\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Object3D(destroyed)';\n }\n return `Object3D('${this.name}', ${this._localId})`;\n }\n}\n\n/**\n * Wrapper around a native skin data.\n */\nexport class Skin extends SceneResource {\n /** Amount of joints in this skin. */\n get jointCount() {\n return this.engine.wasm._wl_skin_get_joint_count(this._id);\n }\n\n /** Joints object ids for this skin */\n get jointIds(): Uint16Array {\n const wasm = this.engine.wasm;\n return new Uint16Array(\n wasm.HEAPU16.buffer,\n wasm._wl_skin_joint_ids(this._id),\n this.jointCount\n );\n }\n\n /**\n * Dual quaternions in a flat array of size 8 times {@link jointCount}.\n *\n * Inverse bind transforms of the skin.\n */\n get inverseBindTransforms(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_transforms(this._id),\n 8 * this.jointCount\n );\n }\n\n /**\n * Vectors in a flat array of size 3 times {@link jointCount}.\n *\n * Inverse bind scalings of the skin.\n */\n get inverseBindScalings(): Float32Array {\n const wasm = this.engine.wasm;\n return new Float32Array(\n wasm.HEAPF32.buffer,\n wasm._wl_skin_inverse_bind_scalings(this._id),\n 3 * this.jointCount\n );\n }\n}\n\n/**\n * Wrapper around a native set of morph targets.\n *\n * ## Usage\n *\n * ```js\n * const mesh = object.getComponent('mesh');\n * const mouthTarget = mesh.morphTargets.getTargetIndex('mouth');\n * mesh.setMorphTargetWeight(mouthTarget, 0.5);\n * ```\n *\n * @since 1.2.0\n */\nexport class MorphTargets extends Resource {\n /** Amount of targets in this morph target set. */\n get count() {\n return this.engine.wasm._wl_morph_targets_get_target_count(this._id);\n }\n\n /** Returns the name of a given target */\n getTargetName(target: number): string {\n if (target >= this.count) {\n throw new Error(`Index ${target} is out of bounds for ${this.count} targets`);\n }\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target));\n }\n\n /**\n * Get the index for a given target name.\n *\n * Throws if no target with that name exists.\n *\n * @param name Name of the target.\n */\n getTargetIndex(name: string): number {\n const wasm = this.engine.wasm;\n const index = wasm._wl_morph_targets_get_target_index(\n this._id,\n wasm.tempUTF8(name)\n );\n if (index === -1) {\n throw Error(`Missing target '${name}'`);\n }\n return index;\n }\n}\n\n/* For backward compatibility with < 1.0.0. */\nexport {Object3D as Object};\n\n/**\n * Ray hit.\n *\n * Result of a {@link Scene.rayCast} or {@link Physics.rayCast}.\n *\n * @note this class wraps internal engine data and should only be created internally.\n */\nexport class RayHit {\n /** Scene instance. @hidden */\n readonly _scene: Scene;\n\n /** Pointer to the memory heap. */\n private _ptr: number;\n\n /**\n * @param ptr Pointer to the ray hits memory.\n */\n constructor(scene: Scene, ptr: number) {\n if ((ptr & 3) !== 0) {\n throw new Error('Misaligned pointer: please report a bug');\n }\n this._scene = scene;\n this._ptr = ptr;\n }\n\n /** @overload */\n getLocations(): Float32Array[];\n /**\n * Array of ray hit locations.\n *\n * #### Usage\n *\n * ```js\n * const hit = engine.physics.rayCast();\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getLocations(out: T): T;\n getLocations(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = this._ptr / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const locationPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[locationPtr];\n out[i][1] = wasm.HEAPF32[locationPtr + 1];\n out[i][2] = wasm.HEAPF32[locationPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getNormals(): Float32Array[];\n /**\n * Array of ray hit normals (only when using {@link Physics#rayCast}.\n *\n * @param out Destination array of arrays/vectors, expected to have at least\n * `this.hitCount` elements. Each array is expected to have at least 3 elements.\n * @returns The `out` parameter.\n */\n getNormals(out: T): T;\n getNormals(out?: NumberArray[]): NumberArray[] {\n out = out ?? Array.from({length: this.hitCount}, () => new Float32Array(3));\n\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const normalPtr = alignedPtr + 3 * i;\n out[i][0] = wasm.HEAPF32[normalPtr];\n out[i][1] = wasm.HEAPF32[normalPtr + 1];\n out[i][2] = wasm.HEAPF32[normalPtr + 2];\n }\n return out;\n }\n\n /** @overload */\n getDistances(): Float32Array;\n /**\n * Prefer these to recalculating the distance from locations.\n *\n * Distances of array hits to ray origin.\n *\n * @param out Destination array/vector, expected to have at least this.hitCount elements.\n * @returns The `out` parameter.\n */\n getDistances(out: T): T;\n getDistances(out: NumberArray = new Float32Array(this.hitCount)): NumberArray {\n const wasm = this.engine.wasm;\n const alignedPtr = (this._ptr + 48 * 2) / 4; /* Align F32 */\n for (let i = 0; i < this.hitCount; ++i) {\n const distancePtr = alignedPtr + i;\n out[i] = wasm.HEAPF32[distancePtr];\n }\n return out;\n }\n\n /**\n * Array of hit objects.\n *\n * @param out Destination array/vector, expected to have at least `this.hitCount` elements.\n * @returns The `out` parameter.\n */\n getObjects(out: Object3D[] = new Array(this.hitCount)): Object3D[] {\n const HEAPU16 = this.engine.wasm.HEAPU16;\n const alignedPtr = (this._ptr + (48 * 2 + 16)) >> 1;\n for (let i = 0; i < this.hitCount; ++i) {\n out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]);\n }\n return out;\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._scene.engine;\n }\n\n /**\n * Equivalent to {@link RayHit.getLocations}.\n *\n * @note Prefer to use {@link RayHit.getLocations} for performance.\n */\n get locations(): Float32Array[] {\n return this.getLocations();\n }\n\n /**\n * Equivalent to {@link RayHit.getNormals}.\n *\n * @note Prefer to use {@link RayHit.getNormals} for performance.\n */\n get normals(): Float32Array[] {\n return this.getNormals();\n }\n\n /**\n * Equivalent to {@link RayHit.getDistances}.\n *\n * @note Prefer to use {@link RayHit.getDistances} for performance.\n */\n get distances(): Float32Array {\n return this.getDistances();\n }\n\n /**\n * Equivalent to {@link RayHit.getObjects}.\n *\n * @note Prefer to use {@link RayHit.getObjects} for performance.\n */\n get objects(): (Object3D | null)[] {\n /** @todo: Remove at 2.0.0, this is kept for backward compatibility. */\n const objects: (Object3D | null)[] = [null, null, null, null];\n return this.getObjects(objects as Object3D[]);\n }\n\n /** Number of hits (max 4) */\n get hitCount(): number {\n return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4);\n }\n}\n\nclass math {\n /** (Experimental!) Cubic Hermite spline interpolation for vector3 and quaternions.\n *\n * With `f == 0`, `out` will be `b`, if `f == 1`, `out` will be c.\n *\n * Whether a quaternion or vector3 interpolation is intended is determined by\n * length of `a`.\n *\n * @param out Array to write result to.\n * @param a First tangent/handle.\n * @param b First point or quaternion.\n * @param c Second point or quaternion.\n * @param d Second handle.\n * @param f Interpolation factor in [0; 1].\n * @returns The `out` parameter.\n *\n * @since 0.8.6\n */\n static cubicHermite(\n out: T,\n a: Readonly,\n b: Readonly,\n c: Readonly,\n d: Readonly,\n f: number,\n engine: WonderlandEngine = WL\n ) {\n const wasm = engine.wasm;\n wasm._tempMemFloat.subarray(0).set(a);\n wasm._tempMemFloat.subarray(4).set(b);\n wasm._tempMemFloat.subarray(8).set(c);\n wasm._tempMemFloat.subarray(12).set(d);\n\n const isQuat = a.length == 4;\n\n wasm._wl_math_cubicHermite(\n wasm._tempMem + 4 * 16,\n wasm._tempMem + 4 * 0,\n wasm._tempMem + 4 * 4,\n wasm._tempMem + 4 * 8,\n wasm._tempMem + 4 * 12,\n f,\n isQuat\n );\n out[0] = wasm._tempMemFloat[16];\n out[1] = wasm._tempMemFloat[17];\n out[2] = wasm._tempMemFloat[18];\n if (isQuat) out[3] = wasm._tempMemFloat[19];\n return out;\n }\n}\n\nexport {math};\n\n/**\n * Class for accessing internationalization (i18n) features.\n *\n * Allows {@link I18N.onLanguageChanged \"detecting language change\"},\n * {@link I18N.language \"setting the current language\"} or translating\n * {@link I18N.translate \"individual terms\"}.\n *\n * Internationalization works with terms,\n * a string type keyword that is linked to a different text for each language.\n *\n * Internally, string parameters for text and js components are\n * automatically swapped during language change, given they are linked to a term.\n * If manual text swapping is desired, {@link I18N.translate}\n * can be used to retrieve the current translation for any term.\n *\n * You can also use the {@link I18N.onLanguageChanged} to manually update text\n * when a language is changed to for example update a number in a string.\n *\n * @since 1.0.0\n */\nexport class I18N {\n /**\n * {@link Emitter} for language change events.\n *\n * First parameter to a listener is the old language index,\n * second parameter is the new language index.\n *\n * Usage from a within a component:\n *\n * ```js\n * this.engine.i18n.onLanguageChanged.add((oldLanguageIndex, newLanguageIndex) => {\n * const oldLanguage = this.engine.i18n.languageName(oldLanguageIndex);\n * const newLanguage = this.engine.i18n.languageName(newLanguageIndex);\n * console.log(\"Switched from\", oldLanguage, \"to\", newLanguage);\n * });\n * ```\n */\n readonly onLanguageChanged = new Emitter<[number, number]>();\n\n /** Wonderland Engine instance. @hidden */\n protected readonly _engine: WonderlandEngine;\n\n /** Previously set language index. @hidden */\n private _prevLanguageIndex: number = -1;\n\n /**\n * Constructor\n */\n constructor(engine: WonderlandEngine) {\n this._engine = engine;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @note This is equivalent to {@link I18N.setLanguage}.\n *\n * @param code Language code to switch to\n */\n set language(code: string | null) {\n this.setLanguage(code);\n }\n\n /** Get current language code. */\n get language(): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_currentLanguage();\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get the current language index.\n *\n * This method is more efficient than its equivalent:\n *\n * ```js\n * const index = i18n.languageIndex(i18n.language);\n * ```\n */\n get currentIndex(): number {\n return this._engine.wasm._wl_i18n_currentLanguageIndex();\n }\n\n /** Previous language index. */\n get previousIndex(): number {\n return this._prevLanguageIndex;\n }\n\n /**\n * Set current language and apply translations to linked text parameters.\n *\n * @param code The language code.\n * @returns A promise that resolves with the current index code when the\n * language is loaded.\n */\n async setLanguage(code: string | null): Promise {\n if (code == null) return Promise.resolve(this.currentIndex);\n const wasm = this._engine.wasm;\n this._prevLanguageIndex = this.currentIndex;\n wasm._wl_i18n_setLanguage(wasm.tempUTF8(code));\n\n const scene = this.engine.scene;\n\n const filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex));\n const url = `${scene.baseURL}/locale/${filename}`;\n\n await scene._downloadDependency(url);\n\n this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex);\n\n return this.currentIndex;\n }\n\n /**\n * Get translated string for a term for the currently loaded language.\n *\n * @param term Term to translate\n */\n translate(term: string): string | null {\n const wasm = this._engine.wasm;\n const translation = wasm._wl_i18n_translate(wasm.tempUTF8(term));\n if (translation === 0) return null;\n return wasm.UTF8ToString(translation);\n }\n\n /**\n * Get the number of languages in the project.\n *\n */\n languageCount(): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageCount();\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageIndex(code: string): number {\n const wasm = this._engine.wasm;\n return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code));\n }\n\n /**\n * Get a language code.\n *\n * @param index Index of the language to get the code from\n */\n languageCode(index: number): string | null {\n const wasm = this._engine.wasm;\n const code = wasm._wl_i18n_languageCode(index);\n if (code === 0) return null;\n return wasm.UTF8ToString(code);\n }\n\n /**\n * Get a language name.\n *\n * @param index Index of the language to get the name from\n */\n languageName(index: number): string | null {\n const wasm = this._engine.wasm;\n const name = wasm._wl_i18n_languageName(index);\n if (name === 0) return null;\n return wasm.UTF8ToString(name);\n }\n\n /** Hosting engine instance. */\n get engine() {\n return this._engine;\n }\n}\n\n/**\n * Environment lighting properties\n *\n * @since 1.2.3\n */\nexport class Environment {\n /** Scene instance. @hidden */\n private readonly _scene: Scene;\n\n /** Constructor */\n constructor(scene: Scene) {\n this._scene = scene;\n }\n\n /**\n * Get intensity of environment lighting.\n *\n * Incoming environment lighting is multiplied by this factor.\n */\n get intensity() {\n return this._scene.engine.wasm._wl_scene_environment_get_intensity(\n this._scene._index\n );\n }\n\n /**\n * Set intensity of environment lighting.\n *\n * @param intensity New intensity.\n */\n set intensity(intensity: number) {\n this._scene.engine.wasm._wl_scene_environment_set_intensity(\n this._scene._index,\n intensity\n );\n }\n\n /** @overload */\n getTint(): Float32Array;\n /**\n * Get tint for environment lighting.\n *\n * Incoming environment lighting color channels are multiplied by these\n * values.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Tint values - red, green, blue.\n */\n getTint(out: T): T;\n /** @overload */\n getTint(\n out: T | Float32Array = new Float32Array(3)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem);\n out[0] = wasm._tempMemFloat[0];\n out[1] = wasm._tempMemFloat[1];\n out[2] = wasm._tempMemFloat[2];\n return out as T;\n }\n\n /**\n * Equivalent to {@link getTint}.\n *\n * @note Prefer to use {@link getTint} for performance.\n */\n get tint(): Float32Array {\n return this.getTint();\n }\n\n /**\n * Set tint for environment lighting.\n *\n * @param v New tint value. Expects a 3 component array.\n */\n setTint(v: Readonly) {\n this._scene.engine.wasm._wl_scene_environment_set_tint(\n this._scene._index,\n v[0],\n v[1],\n v[2]\n );\n }\n\n /** Equivalent to {@link setTint}. */\n set tint(v: Readonly) {\n this.setTint(v);\n }\n\n /** @overload */\n getCoefficients(): Float32Array;\n /**\n * Get spherical harmonics coefficients for indirect lighting.\n *\n * These are 9 spherical harmonics coefficients for indirect diffuse\n * lighting.\n *\n * @param out Preallocated array to write into, to avoid garbage,\n * otherwise will allocate a new Float32Array.\n * @returns Spherical harmonics coefficients. Always 27 elements, every\n * consecutive 3 values representing the red, green, blue components of\n * a single coefficient. Unused/empty coefficients at the end can be 0.\n */\n getCoefficients(out: T): T;\n /** @overload */\n getCoefficients(\n out: T | Float32Array = new Float32Array(3 * 9)\n ): T | Float32Array {\n const wasm = this._scene.engine.wasm;\n wasm.requireTempMem(3 * 9 * 4);\n wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem);\n for (let i = 0; i < 3 * 9; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out as T;\n }\n\n /**\n * Equivalent to {@link getCoefficients}.\n *\n * @note Prefer to use {@link getCoefficients} for performance.\n */\n get coefficients(): Float32Array {\n return this.getCoefficients();\n }\n\n /**\n * Set spherical harmonics coefficients for indirect lighting.\n *\n * @note The scene must have been packaged with environment lighting on for\n * this to take effect.\n *\n * @example\n *\n * Coefficients from [WebXR Lighting Estimation](https://www.w3.org/TR/webxr-lighting-estimation-1)\n * can be passed as follows:\n *\n * ```js\n * const probe = await engine.xr.session.requestLightProbe();\n * const estimate = engine.xr.frame.getLightEstimate(probe);\n * scene.environment.coefficients = estimate.sphericalHarmonicsCoefficients;\n * ```\n *\n * @param v A set of spherical harmonics coefficients, every 3 elements\n * constituting the red/green/blue components of a single coefficient.\n * Should be 0, 3, 12 or 27 **array elements**. Passing an empty array\n * disables indirect lighting.\n */\n setCoefficients(v: Readonly) {\n let count = v.length / 3;\n if (count > 9) count = 9;\n else if (count > 4 && count < 9) count = 4;\n else if (count > 1 && count < 4) count = 1;\n const wasm = this._scene.engine.wasm;\n wasm._tempMemFloat.set(v);\n wasm._wl_scene_environment_set_coefficients(\n this._scene._index,\n wasm._tempMem,\n count\n );\n }\n\n /** Equivalent to {@link setCoefficients}. */\n set coefficients(v: Readonly) {\n this.setCoefficients(v);\n }\n}\n", "/**\n * This file is automatically generated.\n *\n * **Do not** modify this file directly, but instead update\n * the 'write-version.mjs' script.\n */\n\n/**\n * Version type following a subset of the Semantic Versioning specification.\n */\nexport type Version = {major: number, minor: number, patch: number, rc: number};\n\n/** Version of this API. */\nexport const APIVersion: Version = {\n major: 1,\n minor: 4,\n patch: 2,\n rc: 0\n};\n", "import {WonderlandEngine} from '../engine.js';\nimport {NumberArray} from '../types.js';\nimport {capitalizeFirstUTF8} from '../utils/misc.js';\nimport {Texture} from '../wonderland.js';\n\nimport {Resource, ResourceManager} from './resource.js';\n\n/**\n * Material parameter type.\n */\nexport enum MaterialParamType {\n /** Unsigned integer parameter type. */\n UnsignedInt = 0,\n /** Integer parameter type. */\n Int = 1,\n /** 16-bit float parameter type. */\n HalfFloat = 2,\n /** Float parameter type. */\n Float = 3,\n /** Sampler resource parameter type, i.e., a {@link Texture}. */\n Sampler = 4,\n /**\n * Font resource parameter type.\n *\n * **Note**: Changing font isn't exposed yet and will raise an error.\n */\n Font = 5,\n}\n\n/**\n * Constructor parameters object for a {@link Material} instance.\n *\n * @deprecated Use {@link MaterialManager#getTemplate} instead:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\nexport interface MaterialParameters {\n /** The name of the pipeline. */\n pipeline: string;\n}\n\n/**\n * Material constructor.\n *\n * Material classes are automatically generated by the runtime based on the\n * loaded scene shaders.\n */\nexport interface MaterialConstructor {\n /**\n * Set of the dynamic parameters that exist on the definition.\n *\n * For instance, the set would contain elements such as `ambientColor`, `diffuseColor`\n * for a Phong material.\n */\n readonly Parameters: Set;\n /**\n * Create a new Material.\n *\n * The material is created from the pipeline associated to the material class.\n *\n * @note Creating material is expensive. Please use {@link Material#clone} to clone a material.\n * @note Do not use this constructor directly with an index, this is reserved for internal purposes.\n */\n new (index?: number): T;\n}\n\n/**\n * Wrapper around a native material.\n *\n * For more information about how to create materials, have a look at the\n * {@link MaterialManager} class.\n *\n * #### Properties\n *\n * The material properties are automatically converted into getters/setters:\n *\n * ```js\n * const material = new PhongMaterial();\n *\n * // Set the `diffuseColor` property\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * console.log(material.getDiffuseColor());\n * ```\n *\n * Getters for non-scalar types have an optional argument to skip an array\n * allocation:\n *\n * ```js\n * const material = new PhongMaterial();\n * const diffuse = [0, 0, 0, 0];\n * material.getDiffuseColor(diffuse);\n * console.log(diffuse) // Prints '[1.0, 1.0, 1.0, 1.0]'\n * ```\n *\n * @note Materials are **per-engine**, they can thus be shared by multiple scenes.\n *\n * #### TypeScript\n *\n * The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * It's then possible to cast the material type using:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const mesh = object.getComponent('mesh');\n * const material = mesh.material as PhongOpaque;\n * material.setDiffuseColor([1, 0, 0, 1]); // Set a red diffuse\n * ```\n *\n * @since 1.2.0\n */\nexport class Material extends Resource {\n /**\n * @deprecated Use {@link MaterialManager#getTemplate} via {@link WonderlandEngine.materials}\n * to create a new material with a given pipeline:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1, 0, 0]);\n * ```\n */\n constructor(engine: WonderlandEngine, params: number | MaterialParameters) {\n if (typeof params !== 'number') {\n if (!params?.pipeline) throw new Error(\"Missing parameter 'pipeline'\");\n const template = engine.materials.getTemplate(params.pipeline);\n const material = new template();\n super(engine, material._index);\n return material;\n }\n super(engine, params);\n }\n\n /**\n * Check whether a parameter exists on this material.\n *\n * @param name The name to check.\n * @returns `true` if the parameter with name `name` exists on this material,\n * `false` otherwise.\n */\n hasParameter(name: string) {\n const parameters = (this.constructor as MaterialConstructor).Parameters;\n return parameters && parameters.has(name);\n }\n\n /** @deprecated Use {@link pipeline} instead. */\n get shader(): string {\n return this.pipeline;\n }\n\n /** Name of the pipeline used by this material. */\n get pipeline(): string {\n const wasm = this.engine.wasm;\n return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id));\n }\n\n /**\n * Create a copy of the underlying native material.\n *\n * @returns Material clone.\n */\n clone(): Material | null {\n const index = this.engine.wasm._wl_material_clone(this._id);\n return this.engine.materials.wrap(index);\n }\n\n toString() {\n if (this.isDestroyed) {\n return 'Material(destroyed)';\n }\n return `Material('${this.pipeline}', ${this._index})`;\n }\n\n /**\n * Wrap a native material index.\n *\n * @param engine Engine instance.\n * @param index The index.\n * @returns Material instance or `null` if index <= 0.\n *\n * @deprecated Use the {@link WonderlandEngine.materials} instead.\n */\n static wrap(engine: WonderlandEngine, index: number): Material | null {\n return engine.materials.wrap(index);\n }\n}\n\n/**\n * Manage materials.\n *\n * #### Creation\n *\n * To create a material, first retrieve the class associated to\n * the pipeline using {@link MaterialManager.getTemplate}:\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * ```\n *\n * Creating a material is then done using the constructor:\n *\n * ```js\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n */\nexport class MaterialManager extends ResourceManager {\n /** Material classes. @hidden. */\n private readonly _materialTemplates: MaterialConstructor[] = [];\n\n /** @hidden */\n constructor(engine: WonderlandEngine) {\n super(engine, Material);\n this._cacheDefinitions();\n }\n\n /** @override */\n wrap(index: number) {\n if (index <= 0) return null;\n\n const cached = this._cache[index];\n if (cached) return cached;\n\n const wasm = this.engine.wasm;\n const definition = wasm._wl_material_get_definition(index);\n\n const Template = this._materialTemplates[definition];\n const material = new Template(index);\n return this._wrapInstance(material);\n }\n\n /**\n * Get the material class with the given pipeline name.\n *\n * #### Usage\n *\n * ```js\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongMaterial();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ```\n *\n * #### TypeScript\n *\n * This method provide a simple way to cast the constructor returned by `getTemplate`:\n *\n * ```ts\n * interface Phong {\n * getAmbientColor(out?: Float32Array): Float32Array;\n * setAmbientColor(value: NumberArray): void;\n * }\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `Phong`\n * ```\n *\n * However, this means manually writing types for each pipeline.\n *\n * Fortunately, The Wonderland Editor can automatically generate material definitions (.d.ts)\n * from the project pipelines.\n *\n * To enable the generation, go to the `Project Settings > JavaScript` panel and\n * set `materialDefinitions` to a path, e.g., `materials.d.ts`.\n *\n * Material constructors will then be typed automatically when using a string literal pipeline name:\n *\n * ```ts\n * // Note the `.js` instead of `.d.ts`\n * import {PhongOpaque} from './materials.js';\n *\n * const PhongMaterial = engine.materials.getTemplate('Phong Opaque');\n * const mat = new PhongMaterial(); // `mat` is of type `PhongOpaque`\n * ```\n *\n * @param pipeline The pipeline name to search for.\n * @returns The material class.\n *\n * @throws `Error` if the material class doesn't exist.\n */\n getTemplate(pipeline: string): MaterialConstructor {\n const wasm = this.engine.wasm;\n const index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline));\n if (!index) {\n throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`);\n }\n return this._materialTemplates[index] as MaterialConstructor;\n }\n\n /**\n * Wrap a material instance.\n *\n * @todo: Remove at 2.0.0.\n *\n * @note Wrapping should only be called once per instance.\n *\n * @param instance The material instance.\n * @returns The new material, wrapped in a proxy.\n */\n _wrapInstance(instance: Material): Material {\n this._cache[instance.index] = instance;\n if (!this.engine.legacyMaterialSupport) return instance;\n\n /** @todo: Remove at 2.0.0. This is kept for backward compatibility. */\n const proxy = new Proxy(instance, {\n get(target: Material, prop: string) {\n if (!target.hasParameter(prop)) {\n return (target as Record)[prop];\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `get${capitalizeFirstUTF8(prop)}`;\n return (target as Record)[name]();\n },\n set(target, prop: string, value) {\n if (!target.hasParameter(prop)) {\n (target as Record)[prop] = value;\n return true;\n }\n /** This is slow, but users should migrate to `getParam` */\n const name = `set${capitalizeFirstUTF8(prop)}`;\n (target as Record)[name](value);\n return true;\n },\n });\n this._cache[instance.index] = proxy;\n return proxy;\n }\n\n /**\n * Cache all pipeline definitions.\n *\n * @hidden\n */\n private _cacheDefinitions() {\n const wasm = this.engine.wasm;\n const count = wasm._wl_get_material_definition_count();\n for (let i = 1; i < count; ++i) {\n this._materialTemplates[i] = this._createMaterialTemplate(i);\n }\n }\n\n /**\n * Create a material class from a definition index.\n *\n * @param wasm The WASM instance.\n * @param definitionIndex The definition index to wrap.\n * @returns The material class.\n */\n private _createMaterialTemplate(definitionIndex: number) {\n const engine = this.engine;\n const template = class CustomMaterial extends Material {\n static Parameters: Set = new Set();\n\n constructor(index?: number) {\n index = index ?? engine.wasm._wl_material_create(definitionIndex);\n super(engine, index);\n /** @todo(2.0.0): Unify with Material. We need to wrap in both since materials\n * can be created via the parent class, or via child classes.\n * In addition, wrapping returns a proxy, we want to support Proxy\n * as well as Proxy. */\n return engine.materials._wrapInstance(this);\n }\n };\n\n const wasm = this.engine.wasm;\n const nbParams = wasm._wl_material_definition_get_param_count(definitionIndex);\n for (let index = 0; index < nbParams; ++index) {\n const name = wasm.UTF8ToString(\n wasm._wl_material_definition_get_param_name(definitionIndex, index)\n );\n template.Parameters.add(name);\n\n const t = wasm._wl_material_definition_get_param_type(definitionIndex, index);\n const type = t & 0xff;\n const componentCount = (t >> 8) & 0xff;\n /* metaType could also be extracted using: (t >> 16) & 0xff */\n\n const capitalized = capitalizeFirstUTF8(name);\n const getterId = `get${capitalized}`;\n const setterId = `set${capitalized}`;\n\n const templateProto = template.prototype as Record;\n switch (type) {\n case MaterialParamType.UnsignedInt:\n templateProto[getterId] = uint32Getter(index, componentCount);\n /* For now, it's only possible to set scalar uint values */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.Int:\n templateProto[getterId] = int32Getter(index, componentCount);\n /* For now, it's only possible to set scalar int values. Integer values setter\n * is purposely shared with uint. */\n templateProto[setterId] = uint32Setter(index);\n break;\n case MaterialParamType.HalfFloat:\n case MaterialParamType.Float:\n templateProto[getterId] = float32Getter(index, componentCount);\n templateProto[setterId] = float32Setter(index, componentCount);\n break;\n case MaterialParamType.Sampler:\n templateProto[getterId] = samplerGetter(index);\n templateProto[setterId] = samplerSetter(index);\n break;\n case MaterialParamType.Font:\n templateProto[getterId] = fontGetter(index);\n /* For now, setting fonts is not supported */\n break;\n }\n }\n\n return template as MaterialConstructor;\n }\n}\n\n/** @todo: With this implementation, `_wl_material_get_param_value`\n * do not need to check for the parameter type anymore, we could use\n * explicit calls. */\n\nfunction uint32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemUint32[0];\n };\n }\n return function (this: Material, out: NumberArray = new Uint32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemUint32[i];\n }\n return out;\n };\n}\n\nfunction uint32Setter(index: number) {\n return function (this: Material, value: number) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value);\n };\n}\n\nfunction int32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemInt[0];\n };\n }\n return function (this: Material, out: NumberArray = new Int32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemInt[i];\n }\n return out;\n };\n}\n\nfunction float32Getter(index: number, count: number) {\n if (count === 1) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return wasm._tempMemFloat[0];\n };\n }\n return function (this: Material, out: NumberArray = new Float32Array(count)) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n for (let i = 0; i < out.length; ++i) {\n out[i] = wasm._tempMemFloat[i];\n }\n return out;\n };\n}\n\nfunction float32Setter(index: number, count: number) {\n return function (this: Material, value: number | NumberArray) {\n const wasm = this.engine.wasm;\n\n let actualCount = 1;\n if (typeof value === 'number') {\n wasm._tempMemFloat[0] = value;\n } else {\n actualCount = value.length;\n for (let i = 0; i < actualCount; ++i) wasm._tempMemFloat[i] = value[i];\n }\n\n if (actualCount < count) {\n throw new Error(`Expected an array ${count} values, got ${actualCount}`);\n }\n\n wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count);\n };\n}\n\nfunction samplerGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.textures.wrap(wasm._tempMemInt[0]);\n };\n}\n\nfunction samplerSetter(index: number) {\n return function (this: Material, value: Texture | null | undefined) {\n const wasm = this.engine.wasm;\n wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0);\n };\n}\n\nfunction fontGetter(index: number) {\n return function (this: Material) {\n const wasm = this.engine.wasm;\n wasm._wl_material_get_param_value(this._id, index, wasm._tempMem);\n return this.engine.fonts.wrap(wasm._tempMemInt[0]);\n };\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {Mesh, MeshIndexType, MeshParameters, MeshSkinningType} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\n/**\n * Manage meshes.\n *\n * #### Creation\n *\n * Creating a mesh is done using {@link MeshManager.create}:\n *\n * ```js\n * const mesh = engine.meshes.create({vertexCount: 3, indexData: [0, 1, 2]});\n * ```\n *\n * @since 1.2.0\n */\nexport class MeshManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Mesh);\n }\n\n /**\n * Create a new mesh.\n *\n * @param params Vertex and index data. For more information, have a look\n * at the {@link MeshParameters} object.\n */\n create(params: Partial) {\n if (!params.vertexCount) throw new Error(\"Missing parameter 'vertexCount'\");\n\n const wasm = this.engine.wasm;\n\n let indexData = 0;\n let indexType = 0;\n let indexDataSize = 0;\n if (params.indexData) {\n indexType = params.indexType || MeshIndexType.UnsignedShort;\n indexDataSize = params.indexData.length * indexType;\n indexData = wasm._malloc(indexDataSize);\n /* Copy the index data into wasm memory */\n switch (indexType) {\n case MeshIndexType.UnsignedByte:\n wasm.HEAPU8.set(params.indexData, indexData);\n break;\n case MeshIndexType.UnsignedShort:\n wasm.HEAPU16.set(params.indexData, indexData >> 1);\n break;\n case MeshIndexType.UnsignedInt:\n wasm.HEAPU32.set(params.indexData, indexData >> 2);\n break;\n }\n }\n\n const {skinningType = MeshSkinningType.None} = params;\n\n const index = wasm._wl_mesh_create(\n indexData,\n indexDataSize,\n indexType,\n params.vertexCount,\n skinningType\n );\n const instance = new Mesh(this._host, index);\n this._cache[instance.index] = instance;\n return instance;\n }\n}\n", "import {WonderlandEngine} from '../engine.js';\nimport {ImageLike} from '../types.js';\nimport {Texture} from '../wonderland.js';\n\nimport {ResourceManager} from './resource.js';\n\nexport function needsFlipY(image: ImageLike) {\n /* WebGL can't flip ImageBitmap on upload.\n * For consistency with WebGPU, disable ImageBitmap flipping entirely and let the user use:\n * https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap#options */\n return image instanceof ImageBitmap ? 0 : 1;\n}\n\n/**\n * Manage textures.\n *\n * #### Creation\n *\n * Creating a texture is done using {@link TextureManager.load}:\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * Alternatively, textures can be created directly via a loaded image using\n * {@link TextureManager.create}.\n *\n * @since 1.2.0\n */\nexport class TextureManager extends ResourceManager {\n constructor(engine: WonderlandEngine) {\n super(engine, Texture);\n }\n\n /**\n * Create a new texture from an image or video.\n *\n * #### Usage\n *\n * ```js\n * const img = new Image();\n * img.load = function(img) {\n * const texture = engine.textures.create(img);\n * };\n * img.src = 'my-image.png';\n * ```\n *\n * @note The media must already be loaded. To automatically\n * load the media and create a texture, use {@link TextureManager.load} instead.\n *\n * @param image Media element to create the texture from.\n * @ret\\urns The new texture with the media content.\n */\n create(image: ImageLike): Texture {\n const wasm = this.engine.wasm;\n\n const jsImageIndex = wasm._images.length;\n wasm._images.push(image);\n\n if (image instanceof HTMLImageElement && !image.complete) {\n throw new Error('image must be ready to create a texture');\n }\n\n const width = (image as HTMLVideoElement).videoWidth ?? image.width;\n const height = (image as HTMLVideoElement).videoHeight ?? image.height;\n\n const imageIndex = wasm._wl_image_create(jsImageIndex);\n wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image));\n\n /* Required because the image isn't a resource by itself, but will eventually be one. */\n const index = wasm._wl_texture_create(imageIndex);\n\n const instance = new Texture(this.engine, index);\n this._cache[instance.index] = instance;\n\n return instance;\n }\n\n /**\n * Load an image from URL as {@link Texture}.\n *\n * #### Usage\n *\n * ```js\n * const texture = await engine.textures.load('my-image.png');\n * ```\n *\n * @param filename URL to load from.\n * @param crossOrigin Cross origin flag for the image object.\n * @returns Loaded texture.\n */\n load(filename: string, crossOrigin?: string): Promise {\n let image = new Image();\n image.crossOrigin = crossOrigin ?? image.crossOrigin;\n image.src = filename;\n return new Promise((resolve, reject) => {\n image.onload = () => {\n resolve(this.create(image));\n };\n image.onerror = function () {\n reject('Failed to load image. Not found or no read access');\n };\n });\n }\n}\n", "import {WASM} from './wasm.js';\nimport {Scene} from './scene.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {WonderlandEngine} from './engine.js';\nimport {InputType, ViewComponent} from './wonderland.js';\n\ntype WebXRFramebuffer = WebGLFramebuffer & {name: number};\ntype WebXRTexture = WebGLTexture & {name: number};\n\n/**\n * Options for {@link LoadRuntimeOptions.xrOfferSession}\n *\n * @since 1.1.5\n */\nexport interface XROfferSessionOptions {\n /**\n * Mode to offer XR session with. If set to `'auto'`, offers a session\n * with the first supported mode in the following order:\n * - VR\n * - AR\n * - inline\n */\n mode: XRSessionMode | 'auto';\n /** Required features for the offered XR session */\n features: string[];\n /** Optional features for the offered XR session */\n optionalFeatures: string[];\n}\n\n/** Properties of a WebXR session */\nexport class XRSessionState {\n /** Wonderland WASM bridge. @hidden */\n readonly #webxr: WebXR;\n\n /** Current WebXR session mode */\n sessionMode: XRSessionMode;\n\n /** Current WebXR session */\n session: XRSession;\n\n /** Current WebXR frame */\n frame: XRFrame | null = null;\n\n /**\n * Constructor.\n *\n * @param wasm Wasm bridge instance\n * @param mode Current XR session mode\n *\n * @hidden\n */\n constructor(webxr: WebXR, mode: XRSessionMode, session: XRSession) {\n this.#webxr = webxr;\n this.sessionMode = mode;\n this.session = session;\n }\n\n /** @overload */\n referenceSpaceForType(type: 'viewer'): XRReferenceSpace;\n /**\n * Get a WebXR reference space of a given reference space type.\n *\n * @param type Type of reference space to get\n * @returns Reference space, or `null` if there's no reference space\n * of the requested type available\n */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null;\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this.#webxr.referenceSpaceForType(type);\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this.#webxr.currentReferenceSpace = refSpace;\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this.#webxr.currentReferenceSpace;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this.#webxr.currentReferenceSpaceType;\n }\n\n /** Current WebXR base layer */\n get baseLayer(): XRProjectionLayer | XRWebGLLayer {\n return this.#webxr.baseLayer!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n return this.#webxr.framebuffers;\n }\n}\n\n/**\n * WebXR API (internal)\n *\n * @hidden\n */\nexport class WebXR {\n /** Wonderland WASM bridge. @hidden */\n readonly #wasm: WASM;\n\n readonly engine: WonderlandEngine;\n\n sessionState: XRSessionState | null = null;\n\n colorFormat: number = 0x8058 /* RGBA8 */;\n depthFormat: number = 0x88f0 /* DEPTH24_STENCIL8 */;\n textureType: XRTextureType = 'texture';\n\n /**\n * {@link Emitter} for WebXR session end events.\n */\n readonly onSessionEnd = new Emitter();\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n */\n readonly onSessionStart: Emitter<[XRSession, XRSessionMode]> = new RetainEmitter<\n [XRSession, XRSessionMode]\n >();\n\n /**\n * {@link Emitter} notified before the first update and rendering on the first frame of a new XR session.\n */\n readonly onSessionFirstFrame: Emitter<[XRSession, XRSessionMode]> = new Emitter<\n [XRSession, XRSessionMode]\n >();\n\n /** Whether AR is supported by the browser. */\n arSupported: boolean = false;\n\n /** Whether VR is supported by the browser. */\n vrSupported: boolean = false;\n\n /**\n * Current WebXR base layer or `null` if no session active.\n */\n baseLayer: XRProjectionLayer | XRWebGLLayer | null = null;\n\n /** WebXR framebuffer scale factor. */\n framebufferScaleFactor: number = 1.0;\n\n private _webglBinding: XRWebGLBinding | null = null;\n\n private _initXR: boolean = false;\n private _inXR: boolean = false;\n\n /** WebXR reference spaces. */\n private _refSpaces: Record = {\n 'viewer': undefined,\n 'local': undefined,\n 'local-floor': undefined,\n 'bounded-floor': undefined,\n 'unbounded': undefined,\n };\n\n /** Current WebXR reference space. */\n private _refSpace: XRReferenceSpace | null = null;\n\n /** Current WebXR reference space type. */\n private _refSpaceType: XRReferenceSpaceType | null = null;\n\n /**\n * Emscripten WebXR framebuffer(s).\n *\n * @note fbo will not get overwritten if we are rendering to the\n * default framebuffer, e.g., when using WebXR emulator.\n */\n private _fbo: number | number[] = 0;\n\n private _allowLayers: boolean = false;\n private _requestAnimationFrameId: any = null;\n\n /**\n * Initial WebXR reference space type. See {@link init} for\n * more information.\n */\n private _initialReferenceSpaceType: XRReferenceSpaceType | null = null;\n\n private _tempPosition: Float32Array = new Float32Array(3);\n private _tempRotation: Float32Array = new Float32Array(4);\n\n private _tempPose(transform: XRRigidTransform) {\n const p = transform.position;\n this._tempPosition[0] = p.x;\n this._tempPosition[1] = p.y;\n this._tempPosition[2] = p.z;\n const o = transform.orientation;\n this._tempRotation[0] = o.x;\n this._tempRotation[1] = o.y;\n this._tempRotation[2] = o.z;\n this._tempRotation[3] = o.w;\n }\n\n /**\n * Constructor.\n *\n * @param engine Engine\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine) {\n this.engine = engine;\n this.#wasm = engine.wasm;\n }\n\n /**\n * Check whether XR is supported and store the result in {@link arSupported} and {@link vrSupported}\n */\n checkXRSupport(): Promise {\n if (typeof navigator === 'undefined') {\n return Promise.resolve(false);\n }\n if (!navigator.xr) {\n const isLocalhost =\n location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n const missingHTTPS = location.protocol !== 'https:' && !isLocalhost;\n console.warn(\n missingHTTPS\n ? 'WebXR is only supported with HTTPS or on localhost!'\n : 'WebXR unsupported in this browser.'\n );\n return Promise.resolve(false);\n }\n /* Those can throw if the application is embedded in an iframe without\n * xr-spatial-tracking permission. navigator.xr will be available, but\n * any access of it will throw. */\n const vrPromise = navigator.xr\n .isSessionSupported('immersive-vr')\n .then((supported) => (this.vrSupported = supported))\n .catch(() => (this.vrSupported = false));\n const arPromise = navigator.xr\n .isSessionSupported('immersive-ar')\n .then((supported) => (this.arSupported = supported))\n .catch(() => (this.arSupported = false));\n\n return Promise.all([vrPromise, arPromise]).then(\n () => this.vrSupported || this.arSupported\n );\n }\n\n /**\n * Initialize WebXR.\n *\n * @hidden\n */\n async init(\n framebufferScaleFactor: number,\n offerSessionOptions: XROfferSessionOptions | null\n ) {\n const supported = await this.checkXRSupport();\n if (!supported) return;\n\n this.framebufferScaleFactor = framebufferScaleFactor;\n\n /* Force the reference space to 'local'/'viewer' for the loading screen\n * to make sure the head input is at the origin. Doing it this way to\n * avoid adding JS components to the loading screen. */\n const onXRStart = () => {\n this._initialReferenceSpaceType = this.currentReferenceSpaceType;\n const newSpace = this._refSpaces['local'] ?? this._refSpaces['viewer']!;\n this.currentReferenceSpace = newSpace;\n };\n\n /* Not once() because the user can enter and exit XR several times\n * during a long loading screen */\n this.onSessionStart.add(onXRStart);\n\n /* This is called before all init()/start()/onActivate() so we avoid\n * overwriting a user-set reference space */\n this.engine.onLoadingScreenEnd.once(() => {\n this.onSessionStart.remove(onXRStart);\n\n if (!this._initialReferenceSpaceType) return;\n\n this.currentReferenceSpace =\n this._refSpaces[this._initialReferenceSpaceType] ??\n this._refSpaces['viewer']!;\n this._initialReferenceSpaceType = null;\n });\n\n if (offerSessionOptions !== null) {\n let mode = offerSessionOptions.mode;\n if (mode == 'auto') {\n if (this.vrSupported) {\n mode = 'immersive-vr';\n } else if (this.arSupported) {\n mode = 'immersive-ar';\n } else {\n mode = 'inline';\n }\n }\n\n const offerSession = () => {\n this.offerSession(\n mode as XRSessionMode,\n offerSessionOptions.features,\n offerSessionOptions.optionalFeatures\n )\n .then(\n /* When the session ends, offer to start a new one again */\n (s) => s.addEventListener('end', offerSession)\n )\n /* The browser may not suppoer offer session, or a previous request\n * was replaced by a new one. Not crucial, but inform the user. */\n .catch(console.warn);\n };\n\n offerSession();\n }\n }\n\n /** Get a WebXR reference space of a given reference space type. */\n referenceSpaceForType(type: XRReferenceSpaceType): XRReferenceSpace | null {\n return this._refSpaces[type] ?? null;\n }\n\n /** Set current reference space type used for retrieving eye, head, hand and joint poses */\n set currentReferenceSpace(refSpace: XRReferenceSpace) {\n this._refSpace! = refSpace;\n\n this._refSpaceType = null;\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n if (this._refSpaces[type] === refSpace) {\n /* Keep track of reference space type */\n this._refSpaceType = type;\n }\n }\n }\n\n /** Current reference space type used for retrieving eye, head, hand and joint poses */\n get currentReferenceSpace(): XRReferenceSpace {\n return this._refSpace!;\n }\n\n /** Current WebXR reference space type or `null` if not a default reference space */\n get currentReferenceSpaceType(): XRReferenceSpaceType {\n return this._refSpaceType!;\n }\n\n /** Current WebXR framebuffer */\n get framebuffers(): WebGLFramebuffer[] {\n if (!Array.isArray(this._fbo)) {\n return [this.#wasm.GL.framebuffers[this._fbo]];\n }\n return this._fbo.map((id) => this.#wasm.GL.framebuffers[id]);\n }\n\n /**\n * Set main/left/right eye view active according to XR mode.\n *\n * If @param inXR is `true`, disables the main view and enables the left and\n * right view. Otherwise, enables the main view and disables the left and\n * right view.\n *\n * @param inXR Whether an XR session is currently active\n */\n updateViewState(inXR: boolean | undefined) {\n const scene: Scene = this.engine.scene;\n\n inXR = inXR ?? this._inXR;\n\n if (scene.mainView) {\n scene.mainView.active = !inXR;\n }\n\n if (scene.leftEyeView && scene.rightEyeView) {\n /** We always have either no left/right eye views or both. Always enable\n * both since we can't know if this is single-view AR until we get the\n * view count in {@link nextFrame}. There the right eye view is\n * disabled if necessary. */\n scene.leftEyeView.active = inXR;\n scene.rightEyeView.active = inXR;\n }\n }\n\n /**\n * Set projection matrix parameters for the webxr session.\n *\n * @param near Distance of near clipping plane\n * @param far Distance of far clipping plane\n */\n updateProjectionParams(near: number | undefined, far: number | undefined) {\n if (!this.sessionState) return;\n\n const scene = this.engine.scene;\n near ??= scene.leftEyeView!.near;\n far ??= scene.leftEyeView!.far;\n\n /* If reverse-Z is enabled, we need to give WebXR swapped near and far\n * planes so it generates the correct projection matrices. This is\n * explicitly supported by the spec. */\n const reverseZ = !!this.engine.isReverseZEnabled;\n\n this.sessionState!.session.updateRenderState({\n depthNear: reverseZ ? far : near,\n depthFar: reverseZ ? near : far,\n });\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n const options = this.sessionOptions(features, optionalFeatures);\n return navigator.xr!.requestSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n /* @ts-ignore */\n if (!navigator.xr!.offerSession) {\n return Promise.reject('WebXR offerSession() unsupported in this browser.');\n }\n const options = this.sessionOptions(features, optionalFeatures);\n /* @ts-ignore */\n return navigator.xr!.offerSession(mode, options).then(async (s) => {\n /* Ensure our context can handle WebXR rendering */\n const gl = this.engine.canvas.getContext('webgl2')!;\n await gl.makeXRCompatible();\n this.startSession(s, mode);\n return s;\n });\n }\n\n async startSession(session: XRSession, mode: XRSessionMode) {\n /* Multiple calls to requestSession will result in the existing\n * session being passed to the callback */\n if (session == this.sessionState?.session) return;\n this.sessionState = new XRSessionState(this, mode, session);\n\n /* React to session ending */\n session.addEventListener('end', () => {\n this.endSession();\n });\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n\n /* Create the base layer */\n let binding = null;\n const isEmulator = 'CustomWebXRPolyfill' in window;\n /* The WebXR emulator doesn't support layers, and will\n * simply throw an exception. Only way of checking seems\n * to be whether the custom polyfill is available */\n if (!isEmulator && 'XRWebGLBinding' in window) {\n binding = this._webglBinding = new XRWebGLBinding(session, gl);\n }\n const useLayers = this._allowLayers && binding;\n if (useLayers) {\n /* Use WebXR Layers */\n const layer = (this.baseLayer = binding!.createProjectionLayer({\n scaleFactor: this.framebufferScaleFactor,\n colorFormat: this.colorFormat,\n depthFormat: this.depthFormat,\n /* Always use 'texture-array' with multiview, otherwise default to it\n * if not set otherwise */\n textureType: !this.textureType ? 'texture-array' : this.textureType,\n }));\n session.updateRenderState({layers: [layer]});\n } else {\n const layer = (this.baseLayer = new XRWebGLLayer(session, gl, {\n framebufferScaleFactor: this.framebufferScaleFactor,\n }));\n session.updateRenderState({baseLayer: layer});\n }\n\n /* Request and cache available spaces. 'viewer' is always available. */\n const promises = [];\n for (const type of Object.keys(this._refSpaces) as XRReferenceSpaceType[]) {\n promises.push(\n session.requestReferenceSpace(type).then((refSpace) => {\n this._refSpaces[type] = refSpace;\n return refSpace;\n })\n );\n }\n\n await Promise.allSettled(promises).then((results) => {\n /* We prefer the reference space automatically in above order */\n for (let i = results.length - 1; i >= 0; --i) {\n const result = results[i];\n if (result.status === 'rejected') continue;\n /* Type is kept track of for the user to test against */\n this._refSpaceType = Object.keys(this._refSpaces)[\n i\n ] as XRReferenceSpaceType;\n this._refSpace = result.value;\n break;\n }\n });\n\n const isVR = mode == 'immersive-vr';\n\n const scene: Scene = this.engine.scene;\n\n if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) {\n console.error(\n `sessionStart(): VR sessions require 1 classic view, a left and a right view`\n );\n return;\n }\n\n this.updateViewState(true);\n\n this.updateProjectionParams(undefined, undefined);\n\n this.onSessionStart.notify(session, this.sessionState!.sessionMode);\n\n this.#wasm._wl_reset_context();\n\n console.log(`WebXR ${isVR ? 'VR' : 'AR'} session started`);\n\n this.sessionState.session.addEventListener('visibilitychange', (event) => {\n switch (event.session.visibilityState) {\n case 'visible':\n this.#wasm._wl_xr_focus();\n case 'visible-blurred':\n this.#wasm._wl_xr_blur();\n case 'hidden':\n this.#wasm._wl_xr_hide();\n }\n });\n\n /* Wait until first frame to call _wl_xr_init() */\n this._initXR = true;\n\n this._requestAnimationFrameId = session.requestAnimationFrame(\n useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)\n );\n }\n\n sessionOptions(\n requiredFeatures: string[],\n optionalFeatures: string[] = []\n ): XRSessionInit {\n if (this._allowLayers && !optionalFeatures.includes('layers')) {\n optionalFeatures.push('layers');\n }\n\n const params: XRSessionInit = {\n requiredFeatures,\n optionalFeatures,\n };\n\n const hasDepthSensing =\n requiredFeatures.includes('depth-sensing') ||\n optionalFeatures.includes('depth-sensing');\n if (hasDepthSensing) {\n params.depthSensing = {\n usagePreference: ['gpu-optimized', 'cpu-optimized'],\n dataFormatPreference: ['float32', 'luminance-alpha'],\n };\n }\n return params;\n }\n\n endSession() {\n this.sessionState!.session.cancelAnimationFrame(this._requestAnimationFrameId);\n this._requestAnimationFrameId = null;\n this.sessionState = null;\n\n this.#wasm._wl_reset_context();\n\n if (this.onSessionStart instanceof RetainEmitter) this.onSessionStart.reset();\n this.onSessionEnd.notify();\n\n console.log('WebXR session ended');\n\n this._inXR = false;\n\n this.updateViewState(false);\n\n const scene: Scene = this.engine.scene;\n\n this.#wasm._wl_xr_exit();\n\n /* Restore projection matrices. They are temporarily overridden in XR and\n * view changes are applied when the session ends. */\n scene.leftEyeView!._generateProjectionMatrix();\n scene.rightEyeView!._generateProjectionMatrix();\n\n /* Meta WebXR emulator doesn't request animation frame. Quest does. */\n this.#wasm._wl_application_redraw();\n }\n\n nextFrame(time: number, frame: XRFrame) {\n this.sessionState!.frame = frame;\n\n const session = frame.session;\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const scene: Scene = this.engine.scene;\n\n if (this._initXR) {\n /* There's no way to tell how many views we have before rendering the first frame,\n * and AR is not a sufficient criteria for one eye (mobile AR, AR headsets) */\n scene.rightEyeView!.active = pose.views.length > 1;\n\n this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer);\n this._initXR = false;\n this._inXR = true;\n\n this.onSessionFirstFrame.notify(session, this.sessionState!.sessionMode);\n }\n\n /* Head transformation */\n this._tempPose(pose.transform);\n scene._setInputTransformation(\n InputType.Head,\n this._tempPosition,\n this._tempRotation\n );\n\n /* Eyes transformations */\n for (let i = 0; i < pose.views.length && i < 2; ++i) {\n const view = pose.views[i];\n const viewIndex = view.eye == 'right' ? 1 : 0;\n this._tempPose(view.transform);\n scene._setInputTransformation(\n InputType.EyeLeft + viewIndex,\n this._tempPosition,\n this._tempRotation\n );\n }\n\n /* Controller transformations */\n for (const inputSource of session.inputSources) {\n let handedness = -1;\n if (inputSource.handedness == 'left') handedness = 0;\n else if (inputSource.handedness == 'right') handedness = 1;\n this._updateInputComponent(\n frame,\n inputSource.gripSpace,\n InputType.ControllerLeft + handedness\n );\n this._updateInputComponent(\n frame,\n inputSource.targetRaySpace,\n InputType.RayLeft + handedness\n );\n }\n\n this.#wasm._wl_nextFrame(0);\n }\n\n nextFrameSingle(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameSingle.bind(this)\n );\n }\n\n const pose = frame.getViewerPose(this._refSpace!);\n if (!pose) return;\n\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n /* If framebuffer is non-null, compositor is enabled and we bind it.\n * If it's null, we need to avoid this call otherwise the canvas FBO is bound */\n const glLayer = session.renderState.baseLayer!;\n if (glLayer.framebuffer) {\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const id = this._fbo || GL.getNewId(GL.framebuffers);\n (glLayer.framebuffer as WebXRFramebuffer).name = id;\n GL.framebuffers[id] = glLayer.framebuffer;\n this._fbo = id;\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]);\n }\n\n for (let i = 0; i < pose.views.length; ++i) {\n const view = pose.views[i];\n const viewport = glLayer.getViewport(view)!;\n\n let destView: ViewComponent;\n if (view.eye == 'left') {\n destView = this.engine.scene.leftEyeView!;\n } else if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene._components.componentAt(ViewComponent, i);\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n /* Patch projection matrix, currently only needed for reverse-Z.\n * If reverse-Z is enabled, we pass swapped near and far values to\n * updateRenderState(), giving us a matrix with inverted depth. But\n * we still need to map from NDC 1,-1 to 1,0. On WebGPU this won't\n * be necessary. */\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n this._fbo as number\n );\n }\n\n this.nextFrame(time, frame);\n }\n\n nextFrameLayers(time: number, frame: XRFrame) {\n const session = frame.session;\n /* Request next frame */\n if (this.sessionState != null) {\n this._requestAnimationFrameId = session.requestAnimationFrame(\n this.nextFrameLayers.bind(this)\n );\n }\n\n const scene: Scene = this.engine.scene;\n\n const pose = frame.getViewerPose(this._refSpace!)!;\n\n const layer = this.baseLayer!;\n const binding = this._webglBinding;\n\n /* Make sure that FRAMEBUFFER_BINDING returns a valid value.\n * For that we create an id in the emscripten object tables\n * and add the framebuffer */\n const gl = this.engine.canvas.getContext('webgl2')!;\n const GL = this.#wasm.GL as any;\n\n const createFramebuffer = !this._fbo;\n const textureArray = layer.textureArrayLength == 2;\n\n if (createFramebuffer) {\n if (textureArray) {\n this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)];\n } else {\n /* Both eyes use the same FBO */\n const id = GL.getNewId(GL.framebuffers);\n this._fbo = [id, id];\n }\n this._fbo.forEach((id) => {\n const framebuffer = gl.createFramebuffer() as WebXRFramebuffer;\n GL.framebuffers[id] = framebuffer;\n framebuffer.name = id;\n });\n }\n\n const ids = this._fbo as number[];\n pose.views.forEach((view) => {\n const viewIndex = view.eye == 'right' ? 1 : 0;\n\n const subImage = binding!.getViewSubImage(layer, view);\n const viewport = subImage.viewport;\n\n let destView: ViewComponent;\n if (view.eye == 'right') {\n destView = this.engine.scene.rightEyeView!;\n } else {\n destView = this.engine.scene.leftEyeView!;\n }\n destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height);\n destView._setProjectionMatrix(view.projectionMatrix);\n const ndcDepthIsZeroToOne = false;\n this.#wasm._wl_view_component_remapProjectionMatrix(\n destView._id,\n this.engine.isReverseZEnabled,\n ndcDepthIsZeroToOne\n );\n this.#wasm._wl_view_component_set_externalFramebuffer(\n destView._id,\n ids[viewIndex]\n );\n\n if (!createFramebuffer) return;\n /* Only needs to be done for the first view on when using side-by-side\n * target texture */\n if (!textureArray && viewIndex != 0) return;\n\n /* Make WebXR API created textures known to emscripten */\n const colorTexture = subImage.colorTexture as WebXRTexture;\n const colorImageId = (colorTexture.name =\n colorTexture.name || GL.getNewId(GL.textures));\n GL.textures[colorImageId] = colorTexture;\n\n const depthStencilTexture = subImage.depthStencilTexture as WebXRTexture;\n const depthStencilImageId = (depthStencilTexture.name =\n depthStencilTexture.name || GL.getNewId(GL.textures));\n GL.textures[depthStencilImageId] = depthStencilTexture;\n\n /* Attach textures to framebuffer */\n gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]);\n\n if (textureArray) {\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n subImage.colorTexture,\n 0,\n subImage.imageIndex\n );\n /* @ts-ignore */\n gl.framebufferTextureLayer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n subImage.depthStencilTexture,\n 0,\n subImage.imageIndex\n );\n } else {\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n subImage.colorTexture,\n 0\n );\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.TEXTURE_2D,\n subImage.depthStencilTexture,\n 0\n );\n }\n\n if (!gl.checkFramebufferStatus(gl.FRAMEBUFFER)) {\n console.error('Target framebuffer for', view.eye, 'eye is incomplete.');\n }\n });\n\n this.nextFrame(time, frame);\n }\n\n private _updateInputComponent(\n frame: XRFrame,\n space: XRSpace | undefined,\n inputType: InputType\n ) {\n if (!space) return;\n const pose = frame.getPose(space, this._refSpace!);\n if (!pose || Number.isNaN(pose.transform.matrix[0])) return;\n this._tempPose(pose.transform);\n this.engine.scene._setInputTransformation(\n inputType,\n this._tempPosition,\n this._tempRotation\n );\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {InstantiateGltfResult, Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {Object3D} from './wonderland.js';\n\n/** GLTF-specific loading options. */\nexport type GLTFOptions = {\n /** If `true`, extensions will be parsed. */\n extensions?: boolean;\n};\n\n/**\n * Extension data obtained from glTF files.\n */\nexport interface GLTFExtensionsInstance {\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\nexport class GLTFExtensions {\n objectCount: number;\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record = {};\n /**\n * Mesh extension objects. Key is the gltf index, value is JSON\n * data indexed by extension name.\n */\n mesh: Record> = {};\n /**\n * Node extension objects. Key is a glTF index, value is JSON\n * data indexed by extension name.\n */\n node: Record> = {};\n\n constructor(count: number) {\n this.objectCount = count;\n }\n}\n\n/**\n * glTF scene.\n *\n * At the opposite of {@link Scene}, glTF scenes can be instantiated\n * in other scenes but can't:\n * - Be activated\n * - Be the destination of an instantiation\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n *\n * const scene = engine.scene;\n * for (let i = 0; i < 100; ++i) {\n * scene.instantiate(prefab);\n * }\n * ```\n *\n * Since this class inherits from {@link Prefab}, you can use the shared\n * API to modify the glTF before an instantiation:\n *\n * ```js\n * const prefab = await engine.loadGLTF('Zombie.glb');\n * const zombie = prefab.findByName('Zombie')[0];\n *\n * // The mesh is too small, we scale the root\n * zombie.setScalingWorld([2, 2, 2]);\n * // Add a custom js 'health' component to the root\n * zombie.addComponent('health', {value: 100});\n *\n * // 'Zombie' is wrapped in a new root added during instantiation\n * const {root} = engine.scene.instantiate(prefab);\n * const instanceZombie = root.children[0];\n * console.log(instanceZombie.getScalingWorld()); // Prints '[2, 2, 2]'\n * ```\n *\n * @category scene\n * @since 1.2.0\n */\nexport class PrefabGLTF extends Prefab {\n /**\n * Raw extensions read from the glTF file.\n *\n * The extensions will be mapped to the hierarchy upon instantiation.\n * For more information, have a look at the {@link InstantiateGltfResult} type.\n *\n * @note The glTF must be loaded with `extensions` enabled. If not, this\n * field will be set to `null`. For more information, have a look at the\n * {@link GLTFOptions} type.\n */\n extensions: GLTFExtensions | null = null;\n\n /**\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n this.extensions = this._readExtensions();\n }\n\n /**\n * Instantiate the glTF extensions on an active sub scene graph.\n *\n * @param id The root object id.\n * @param result The instantiation object result.\n *\n * @hidden\n */\n _processInstantiaton(dest: Prefab, root: Object3D, result: InstantiateGltfResult) {\n if (!this.extensions) return null;\n\n const wasm = this.engine.wasm;\n\n const count = this.extensions.objectCount;\n const idMapping: number[] = new Array(count);\n\n /** @todo: We need some check to ensure that the gltf layout didn't change to retarget extensions.\n * At least a simple scene graph size check should be required to avoid a segfault. */\n\n const activeRootIndex = wasm._wl_object_index(root._id);\n for (let i = 0; i < count; ++i) {\n const mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(\n this._index,\n dest._index,\n activeRootIndex,\n i\n );\n idMapping[i] = mappedId;\n }\n\n const remapped: GLTFExtensionsInstance = {\n mesh: {},\n node: {},\n idMapping,\n };\n\n for (const gltfIndex in this.extensions.mesh) {\n const id = idMapping[gltfIndex];\n remapped.mesh[id] = this.extensions.mesh[gltfIndex];\n }\n for (const gltfIndex in this.extensions.node) {\n const id = idMapping[gltfIndex];\n remapped.node[id] = this.extensions.node[gltfIndex];\n }\n\n result.extensions = remapped;\n }\n\n /**\n * Unmarshalls gltf extensions.\n *\n * @hidden\n */\n private _readExtensions() {\n const wasm = this.engine.wasm;\n\n const ptr = wasm._wl_glTF_scene_get_extensions(this._index);\n if (!ptr) return null;\n\n let index = ptr / 4;\n const data = wasm.HEAPU32;\n const readString = () => {\n const strPtr = data[index++];\n const strLen = data[index++];\n return wasm.UTF8ViewToString(strPtr, strPtr + strLen);\n };\n\n const objectCount = data[index++];\n const extensions = new GLTFExtensions(objectCount);\n\n const meshExtensionsSize = data[index++];\n for (let i = 0; i < meshExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.mesh[objectId] = JSON.parse(readString());\n }\n const nodeExtensionsSize = data[index++];\n for (let i = 0; i < nodeExtensionsSize; ++i) {\n const objectId = data[index++];\n extensions.node[objectId] = JSON.parse(readString());\n }\n const rootExtensionsStr = readString();\n if (rootExtensionsStr) {\n extensions.root = JSON.parse(rootExtensionsStr);\n }\n\n return extensions;\n }\n}\n", "import {WonderlandEngine} from './engine.js';\nimport {WASM} from './wasm.js';\nimport {Emitter} from './utils/event.js';\nimport {fetchStreamWithProgress, fetchWithProgress, getBaseUrl} from './utils/fetch.js';\nimport {isString} from './utils/object.js';\nimport {\n Object3D,\n RayHit,\n Environment,\n ViewComponent,\n InputType,\n LogTag,\n} from './wonderland.js';\nimport {NumberArray} from './types.js';\nimport {Material} from './resources/material-manager.js';\nimport {InMemoryLoadOptions, Prefab, SceneLoadOptions} from './prefab.js';\nimport {GLTFExtensionsInstance, PrefabGLTF} from './scene-gltf.js';\n\nexport interface InstantiateResult {\n root: Object3D;\n}\n\nexport interface InstantiateGltfResult extends InstantiateResult {\n extensions: GLTFExtensionsInstance | null;\n}\n\n/** Options for scene activation. */\nexport interface ActivateOptions {\n /** If `true`, dispatches a ready event in the document. */\n dispatchReadyEvent?: boolean;\n /**\n * If `true`, the promise will resolve only once all dependencies are downloaded.\n *\n * If `false`, resolves as soon as possible, e.g., when the lowest\n * resolution textures are available.\n */\n waitForDependencies?: boolean;\n /** @hidden */\n legacyLoaded?: boolean;\n}\n\n/**\n * Legacy gltf extension type.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadGLTF} API.\n */\nexport interface GLTFExtensionsLegacy {\n /** glTF root extensions object. JSON data indexed by extension name. */\n root: Record>;\n /**\n * Mesh extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n mesh: Record>>;\n /**\n * Node extension objects. Key is {@link Object3D.objectId}, value is JSON\n * data indexed by extension name.\n */\n node: Record>>;\n /** Remapping from glTF node index to {@link Object3D.objectId}. */\n idMapping: number[];\n}\n\n/** Options for {@link Scene.append}. */\nexport interface SceneAppendParameters {\n /** Whether to load glTF extension data */\n loadGltfExtensions: boolean;\n baseURL: string | undefined;\n}\n\n/**\n * Result obtained when appending a scene with {@link Scene.append} with gltf extensions.\n */\nexport type SceneAppendResultWithExtensions = {\n root: Object3D | null;\n extensions: GLTFExtensionsLegacy;\n};\n\n/**\n * Result obtained when appending a scene with {@link Scene.append}.\n */\nexport type SceneAppendResult = (Object3D | null) | SceneAppendResultWithExtensions;\n\n/**\n * Constants\n */\n\n/** Magic number for .bin */\nconst MAGIC_BIN = 'WLEV';\n\n/**\n * Scene type to load with {@link ChunkedSceneLoadSink}.\n *\n * @since 1.2.1\n * @hidden\n */\nexport enum SceneType {\n Prefab,\n Main,\n Dependency,\n}\n\n/**\n * Sink for `WritableStream` that loads the data as a .bin file.\n *\n * Data is loaded chunk by chunk to minimize the total WASM allocation size.\n *\n * @since 1.2.1\n * @hidden\n */\nexport class ChunkedSceneLoadSink implements UnderlyingSink {\n readonly #wasm: WASM;\n readonly #type: SceneType;\n readonly #closeParameters: any[];\n #offset = 0;\n #requested = 0;\n #firstChunk = true;\n\n _loadIndex = -1;\n sceneIndex = -1;\n\n /** Pointer to the staging buffer. */\n #ptr: number = 0;\n /** Staging buffer size, in **bytes**. */\n #bufferSize: number = 0;\n\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Prefab, url: string);\n /** @overload */\n constructor(engine: WonderlandEngine, type: SceneType.Main, url: string);\n /** @overload */\n constructor(\n engine: WonderlandEngine,\n type: SceneType.Dependency,\n url: string,\n dependentSceneIndex: number\n );\n /**\n * Constructor\n * @param engine Engine instance\n * @param type Type of scene to load\n * @param url URL for the scene creation. Can be empty.\n * @param closeParameters Parameters for the final function to be called\n * during a successful {@link ChunkedSceneLoadSink.close}.\n */\n constructor(\n engine: WonderlandEngine,\n type: SceneType,\n url: string,\n ...closeParameters: any[]\n ) {\n this.#wasm = engine.wasm;\n this.#type = type;\n this.#closeParameters = closeParameters;\n this._loadIndex = this.#wasm._wl_scene_create_chunked_start(\n this.#wasm.tempUTF8(url)\n );\n /* Initial buffer for the header chunk */\n this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex);\n this._resizeBuffer(this.#requested);\n }\n\n private _resizeBuffer(size: number) {\n if (this.#bufferSize > 0) {\n this.#wasm._free(this.#ptr);\n }\n this.#bufferSize = size;\n this.#ptr = size ? this.#wasm._malloc(size) : 0;\n }\n\n private _throwError(reason: string) {\n this.abort();\n throw new Error(reason);\n }\n\n /**\n * Write a single blob of data.\n *\n * @param blob Data to parse\n */\n write(blob: Uint8Array) {\n let read = 0;\n while (read < blob.length) {\n /* Fill the staging buffer */\n const toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset);\n /* **Do not** attempt to create a HEAP8 view here, since the next wasm call might\n * re-allocate the heap, making this view dangling. */\n this.#wasm.HEAPU8.set(\n blob.subarray(read, read + toRead),\n this.#ptr + this.#offset\n );\n this.#offset += toRead;\n read += toRead;\n\n /* Not enough data, wait for more */\n if (this.#requested > this.#offset) continue;\n\n /* Send data. This loads as many chunks as possible and then tells\n * us how much data it's missing, and how much it has read. The\n * read count allows us to move incomplete chunk data to the start\n * of the buffer. This is necessary because the buffer is allocated\n * with just enough data to hold the largest chunk. */\n const readSizePtr = this.#wasm._tempMem;\n const requestedPtr = this.#wasm._tempMem + 4;\n let success: boolean;\n try {\n success = this.#wasm._wl_scene_create_chunked_next(\n this._loadIndex,\n this.#ptr,\n this.#offset,\n readSizePtr,\n requestedPtr\n );\n } catch {\n /* Catch calls to abort(), e.g. via asserts */\n success = false;\n }\n\n if (!success) {\n this._throwError('Chunk parsing failed');\n }\n\n const sentSize = this.#offset;\n const readSize = this.#wasm._tempMemUint32[0];\n this.#requested = this.#wasm._tempMemUint32[1];\n const extraSize = sentSize - readSize;\n\n /* #requested == 0 signals end of .bin file */\n if (extraSize > this.#requested) {\n this._throwError('Unexpected extra data');\n }\n\n /* Not enough data for a chunk, wait for more */\n if (!readSize) continue;\n\n if (extraSize > 0) {\n /* We passed one or more complete chunks plus incomplete extra\n * data for the next chunk. Move it to the buffer start. */\n this.#wasm.HEAPU8.copyWithin(\n this.#ptr,\n this.#ptr + readSize,\n this.#ptr + sentSize\n );\n }\n\n this.#offset = extraSize;\n\n if (this.#firstChunk) {\n /* First chunk is the header. At this point we can query for\n * the required buffer size for parsing the rest of the .bin.\n * The initial buffer is exactly the size of the header chunk\n * so #offset should be 0 here since we sent a complete chunk. */\n this._resizeBuffer(\n this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)\n );\n this.#firstChunk = false;\n }\n }\n }\n\n /** Called when all blobs of data have been written */\n close() {\n if (this.#requested > 0) {\n this._throwError('Unexpected end of data');\n }\n\n this._resizeBuffer(0);\n switch (this.#type) {\n case SceneType.Prefab:\n this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(\n this._loadIndex\n );\n break;\n case SceneType.Main:\n this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex);\n this.sceneIndex = 0;\n break;\n case SceneType.Dependency:\n [this.sceneIndex] = this.#closeParameters;\n this.#wasm._wl_scene_create_chunked_end_queued(\n this._loadIndex,\n this.sceneIndex\n );\n break;\n default:\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n break;\n }\n this._loadIndex = -1;\n }\n\n /** Called when the stream is aborted */\n abort() {\n if (this._loadIndex === -1) return;\n this.#wasm._wl_scene_create_chunked_abort(this._loadIndex);\n this._loadIndex = -1;\n this._resizeBuffer(0);\n }\n\n /** Staging buffer size */\n get size() {\n return this.#bufferSize;\n }\n}\n\n/**\n * Wonderland Engine (.bin) scene.\n *\n * Wonderland Engine packages two types of scene:\n * - Activatable scene: Contains objects, components, views, resources, and rendering data\n * - Streamable scene: Contains objects, components, and resources\n *\n * #### Activation\n *\n * Some scenes are **activatable**, they can thus be attached to the renderer\n * to be updated and rendered on the canvas.\n *\n * For more information, have a look at the {@link WonderlandEngine.switchTo} method.\n *\n * #### Instantiation\n *\n * Besides activation, a scene can instantiate the content of another scene.\n *\n * For more information, have a look at the {@link Scene#instantiate} method.\n *\n * @category scene\n */\nexport class Scene extends Prefab {\n /** Called before rendering the scene */\n readonly onPreRender = new Emitter();\n /** Called after the scene has been rendered */\n readonly onPostRender = new Emitter();\n\n /** Ray hit pointer in WASM heap. @hidden */\n private _rayHit: number;\n /** Ray hit. @hidden */\n private _hit: RayHit;\n\n /** @hidden */\n private _environment: Environment;\n\n constructor(engine: WonderlandEngine, index: number) {\n super(engine, index);\n /** `this.engine?` is used for testing. */\n this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4);\n this._hit = new RayHit(this, this._rayHit);\n this._environment = new Environment(this);\n }\n\n /** @overload */\n instantiate(scene: PrefabGLTF): InstantiateGltfResult;\n /**\n * Instantiate `scene` into this instance.\n *\n * Any scene can be instantiated into one another. It's thus possible\n * to instantiate a {@link PrefabGLTF} into this instance, or another\n * {@link Scene} instance.\n *\n * #### Usage\n *\n * ```js\n * const prefabScene = await engine.loadScene('Prefab.bin');\n * // Instantiate `prefabScene` into `scene`\n * engine.scene.instantiate(prefabScene);\n * ```\n *\n * #### Shared Resources\n *\n * Instantiating **does not** duplicate resources. Each instance will\n * reference the same assets stored in the {@link Scene}, e.g.,\n *\n * ```js\n * // `zombie` has one mesh and one material\n * const zombie = await engine.loadScene('Zombie.bin');\n *\n * for (let i = 0; i < 100; ++i) {\n * engine.scene.instantiate(zombie);\n * }\n *\n * console.log(engine.meshes.count) // Prints '1'\n * console.log(engine.materials.count) // Prints '1'\n * ```\n *\n * #### glTF extensions\n *\n * Instantiating a prefab loaded from a .glb automatically retargets the extensions\n * to the created hierarchy:\n *\n * ```js\n * const gltf = await engine.loadGLTF({url: 'Model.glb', extensions: true});\n * const {root, extensions} = engine.scene.instantiate(gltf);\n *\n * // Retrieve Object3D instance from extension nodes list\n * for (const key in extensions.node) {\n * const object3d = engine.scene.wrap(extensions.node[key]);\n * }\n * ```\n *\n * @param scene The scene to instantiate.\n * @returns An object containing the instantiated root {@link Object3D}.\n * When a glTF is instantiated, the result can contain extra metadata.\n * For more information, have a look at the {@link InstantiateResult} type.\n *\n * @since 1.2.0\n */\n instantiate(prefab: Prefab): InstantiateResult;\n instantiate(prefab: Prefab): InstantiateResult {\n if (prefab._index === this._index) {\n throw new Error(\"Can't instantiate scene into itself\");\n }\n\n const wasm = this.engine.wasm;\n const id = wasm._wl_scene_instantiate(prefab._index, this._index);\n\n const result: InstantiateResult = {root: this.wrap(id)};\n if (prefab instanceof PrefabGLTF) {\n const obj = this.wrap(id);\n prefab._processInstantiaton(this, obj, result as InstantiateGltfResult);\n }\n return result;\n }\n\n /** @todo: Add `instantiateBatch` to instantiate multiple chunks in a row. */\n\n /**\n * @todo Provide an API to delete all resources linked to a scene.\n *\n * Example:\n *\n * ```ts\n * const scene = await engine.loadScene('Scene.bin');\n * ...\n * scene.destroy({removeResources: true});\n * ```\n */\n\n /**\n * Destroy this scene and remove it from the engine.\n *\n * @note Destroying a scene **doesn't** remove the materials, meshes,\n * and textures it references in the engine. Those should be cleaned up either by loading\n * another main scene via {@link WonderlandEngine.loadMainScene}, or manually using {@link Mesh.destroy}.\n *\n * @throws If the scene is currently active.\n * */\n destroy() {\n if (this.isActive) {\n throw new Error(\n `Attempt to destroy ${this}, but destroying the active scene is not supported`\n );\n }\n\n /* Store before calling `super.destroy()` since the call\n * might destroy entirely the prototype. */\n const wasm = this.engine.wasm;\n const rayPtr = this._rayHit;\n\n super.destroy();\n\n wasm._free(rayPtr);\n }\n\n /**\n * View components.\n */\n get views(): ViewComponent[] {\n return this._components.components(ViewComponent, false);\n }\n\n /**\n * Active view components.\n */\n get activeViews(): ViewComponent[] {\n return this._components.components(ViewComponent, true);\n }\n\n /**\n * Main view.\n */\n get mainView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_mainView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Left eye view.\n */\n get leftEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_leftView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Right eye view.\n */\n get rightEyeView(): ViewComponent | null {\n const id = this.engine.wasm._wl_scene_get_rightView(this._index);\n return this._components.wrapView(id);\n }\n\n /**\n * Set input transformation.\n *\n * @hidden\n */\n _setInputTransformation(\n type: InputType,\n position: Readonly,\n orientation: Readonly\n ) {\n const wasm = this.engine.wasm;\n wasm.requireTempMem(4 * 2 * 4);\n wasm._tempMemFloat.set(position);\n wasm._tempMemFloat.set(orientation, 4);\n wasm._wl_input_set_transformation(this._index, type, wasm._tempMem);\n }\n\n /**\n * Cast a ray through the scene and find intersecting collision components.\n *\n * The resulting ray hit will contain **up to 4** closest ray hits,\n * sorted by increasing distance.\n *\n * Example:\n *\n * ```js\n * const hit = engine.scene.rayCast(\n * [0, 0, 0],\n * [0, 0, 1],\n * 1 << 0 | 1 << 4, // Only check against components in groups 0 and 4\n * 25\n * );\n * if (hit.hitCount > 0) {\n * const locations = hit.getLocations();\n * console.log(`Object hit at: ${locations[0][0]}, ${locations[0][1]}, ${locations[0][2]}`);\n * }\n * ```\n *\n * @param o Ray origin.\n * @param d Ray direction.\n * @param groupMask Bitmask of collision groups to filter by: only objects\n * that are part of given groups are considered for the raycast.\n * @param maxDistance Maximum **inclusive** hit distance. Defaults to `100`.\n *\n * @returns The {@link RayHit} instance, cached by this class.\n *\n * @note The returned {@link RayHit} object is owned by the {@link Scene}\n * instance and will be reused with the next {@link Scene#rayCast} call.\n */\n rayCast(\n o: Readonly,\n d: Readonly,\n groupMask: number,\n maxDistance = 100.0\n ): RayHit {\n this.engine.wasm._wl_scene_ray_cast(\n this._index,\n o[0],\n o[1],\n o[2],\n d[0],\n d[1],\n d[2],\n groupMask,\n this._rayHit,\n maxDistance\n );\n return this._hit;\n }\n\n /**\n * Set the background clear color.\n *\n * @param color new clear color (RGBA).\n * @since 0.8.5\n */\n set clearColor(color: number[]) {\n this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]);\n }\n\n /**\n * Set whether to clear the color framebuffer before drawing.\n *\n * This function is useful if an external framework (e.g. an AR tracking\n * framework) is responsible for drawing a camera frame before Wonderland\n * Engine draws the scene on top of it.\n *\n * @param b Whether to enable color clear.\n * @since 0.9.4\n */\n set colorClearEnabled(b: boolean) {\n this.engine.wasm._wl_scene_enableColorClear(b);\n }\n\n /**\n * Load a scene file (.bin).\n *\n * Will replace the currently active scene with the one loaded\n * from given file. It is assumed that JavaScript components required by\n * the new scene were registered in advance.\n *\n * Once the scene is loaded successfully and initialized,\n * {@link WonderlandEngine.onSceneLoaded} is notified.\n *\n * #### ArrayBuffer\n *\n * The `load()` method accepts an in-memory buffer:\n *\n * ```js\n * scene.load({\n * buffer: new ArrayBuffer(...),\n * baseURL: 'https://my-website/assets'\n * })\n * ```\n *\n * @note The `baseURL` is mandatory. It's used to fetch images and languages.\n *\n * Use {@link Scene.setLoadingProgress} to update the loading progress bar\n * when using an ArrayBuffer.\n *\n * @deprecated Use the new {@link WonderlandEngine.loadMainScene} API.\n *\n * @param options Path to the file to load, or an option object.\n * For more information about the options, see the {@link SceneLoadOptions} documentation.\n * @returns Promise that resolves when the scene was loaded.\n */\n async load(options: string | SceneLoadOptions): Promise {\n const engine = this.engine;\n\n /** @todo(2.0.0): Remove this method. */\n let dispatchReadyEvent = false;\n let opts: InMemoryLoadOptions;\n if (isString(options)) {\n opts = await Scene.loadBuffer(options, (bytes: number, size: number) => {\n this.engine.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.engine.setLoadingProgress(bytes / size);\n });\n } else {\n opts = options;\n dispatchReadyEvent = options.dispatchReadyEvent ?? false;\n }\n\n const scene = await engine.loadMainSceneFromBuffer({\n ...opts,\n dispatchReadyEvent,\n });\n /* Do not use `this`, since `loadMainScene` will destroy it.\n * `erasePrototypeOnDestroy` would make this instance unusable. */\n engine.onSceneLoaded.notify();\n return scene;\n }\n\n /**\n * Append a scene file.\n *\n * Loads and parses the file and its images and appends the result\n * to the currently active scene.\n *\n * Supported formats are streamable Wonderland scene files (.bin) and glTF\n * 3D scenes (.gltf, .glb).\n *\n * ```js\n * WL.scene.append(filename).then(root => {\n * // root contains the loaded scene\n * });\n * ```\n *\n * In case the `loadGltfExtensions` option is set to true, the response\n * will be an object containing both the root of the loaded scene and\n * any glTF extensions found on nodes, meshes and the root of the file.\n *\n * ```js\n * WL.scene.append(filename, { loadGltfExtensions: true }).then(({root, extensions}) => {\n * // root contains the loaded scene\n * // extensions.root contains any extensions at the root of glTF document\n * const rootExtensions = extensions.root;\n * // extensions.mesh and extensions.node contain extensions indexed by Object id\n * const childObject = root.children[0];\n * const meshExtensions = root.meshExtensions[childObject.objectId];\n * const nodeExtensions = root.nodeExtensions[childObject.objectId];\n * // extensions.idMapping contains a mapping from glTF node index to Object id\n * });\n * ```\n *\n * If the file to be loaded is located in a subfolder, it might be useful\n * to define the `baseURL` option. This will ensure any bin files\n * referenced by the loaded bin file are loaded at the correct path.\n *\n * ```js\n * WL.scene.append(filename, { baseURL: 'scenes' }).then(({root, extensions}) => {\n * // do stuff\n * });\n * ```\n *\n * @deprecated Use the new {@link Prefab} and {@link Scene} API.\n *\n * @param file The .bin, .gltf or .glb file to append. Should be a URL or\n * an `ArrayBuffer` with the file content.\n * @param options Additional options for loading.\n * @returns Promise that resolves when the scene was appended.\n */\n async append(\n file: string | ArrayBuffer,\n options: Partial = {}\n ): Promise {\n /** @todo(2.0.0): Remove this method. */\n\n const {baseURL = isString(file) ? getBaseUrl(file) : this.baseURL} = options;\n\n const buffer = isString(file) ? await fetchWithProgress(file) : file;\n const data = new Uint8Array(buffer);\n const isBinFile =\n data.byteLength > MAGIC_BIN.length &&\n data\n .subarray(0, MAGIC_BIN.length)\n .every((value, i) => value === MAGIC_BIN.charCodeAt(i));\n\n const scene = isBinFile\n ? this.engine.loadPrefabFromBuffer({buffer, baseURL})\n : this.engine.loadGLTFFromBuffer({\n buffer,\n baseURL,\n extensions: options.loadGltfExtensions,\n });\n\n const result = this.instantiate(scene)!;\n if (scene instanceof PrefabGLTF) {\n if (!scene.extensions) return result.root;\n return {\n root: result.root,\n extensions: {\n ...(result as InstantiateGltfResult).extensions,\n root: scene.extensions.root,\n },\n } as SceneAppendResultWithExtensions;\n }\n\n scene.destroy();\n return result.root;\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @deprecated Use {@link WonderlandEngine.setLoadingProgress}.\n */\n setLoadingProgress(percentage: number) {\n this.engine.setLoadingProgress(percentage);\n }\n\n /**\n * Dispatch an event 'wle-scene-ready' in the document.\n *\n * @note This is used for automatic testing.\n */\n dispatchReadyEvent() {\n document.dispatchEvent(\n new CustomEvent('wle-scene-ready', {\n detail: {filename: this.filename},\n })\n );\n }\n\n /**\n * Set the current material to render the sky.\n *\n * @note The sky needs to be enabled in the editor when creating the scene.\n * For more information, please refer to the background [tutorial](https://wonderlandengine.com/tutorials/background-effect/).\n */\n set skyMaterial(material: Material | null) {\n this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0);\n }\n\n /** Current sky material, or `null` if no sky is set. */\n get skyMaterial(): Material | null {\n const index = this.engine.wasm._wl_scene_get_sky_material(this._index);\n return this.engine.materials.wrap(index);\n }\n\n /**\n * Environment lighting properties.\n *\n * @since 1.2.3\n */\n get environment(): Environment {\n return this._environment;\n }\n\n /**\n * Relative url to the js components bundle\n *\n * Returns `null` if the scene was built without a components bundle.\n */\n get componentsBundle(): string | null {\n const wasm = this.engine.wasm;\n const ptr = wasm._wl_scene_get_componentsBundle(this._index);\n return ptr ? wasm.UTF8ToString(ptr) : null;\n }\n\n /**\n * Reset the scene.\n *\n * This method deletes all used and allocated objects, and components.\n *\n * @deprecated Load a new scene and activate it instead.\n */\n reset() {\n /** @todo(2.0.0): Remove this method. */\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependency(url: string) {\n const sink = new ChunkedSceneLoadSink(\n this.engine,\n SceneType.Dependency,\n url,\n this._index\n );\n const stream = await fetchStreamWithProgress(url);\n return stream.pipeTo(new WritableStream(sink));\n }\n\n /**\n * Download and apply queued dependency files (.bin).\n *\n * @hidden\n */\n async _downloadDependencies() {\n const wasm = this.engine.wasm;\n\n const count = wasm._wl_scene_queued_bin_count(this._index);\n if (!count) return Promise.resolve();\n\n const urls = new Array(count).fill(0).map((_, i: number) => {\n const ptr = wasm._wl_scene_queued_bin_path(this._index, i);\n const url = wasm.UTF8ToString(ptr);\n return url;\n });\n\n wasm._wl_scene_clear_queued_bin_list(this._index);\n\n return Promise.all(urls.map((url: string) => this._downloadDependency(url)));\n }\n}\n", "import {\n Component,\n ComponentConstructor,\n Object as Object3D,\n Physics,\n I18N,\n MorphTargets,\n Texture,\n Font,\n DestroyedPrefabInstance,\n ParticleEffect,\n} from './wonderland.js';\n\nimport {Emitter, RetainEmitter} from './utils/event.js';\nimport {isString} from './utils/object.js';\nimport {APIVersion, Version} from './version.js';\nimport {WASM} from './wasm.js';\nimport {Logger} from './utils/logger.js';\nimport {clamp} from './utils/misc.js';\nimport {MaterialManager} from './resources/material-manager.js';\nimport {MeshManager} from './resources/mesh-manager.js';\nimport {ResourceManager} from './resources/resource.js';\nimport {needsFlipY, TextureManager} from './resources/texture-manager.js';\nimport {LogTag} from './wonderland.js';\nimport {Constructor, ImageLike, ProgressCallback} from './types.js';\nimport {XRSessionState, WebXR} from './webxr.js';\nimport {Prefab, InMemoryLoadOptions, LoadOptions, StreamLoadOptions} from './prefab.js';\nimport {Scene, ActivateOptions, ChunkedSceneLoadSink, SceneType} from './scene.js';\nimport {PrefabGLTF, GLTFOptions} from './scene-gltf.js';\nimport {ArrayBufferSource, onImageReady} from './utils/fetch.js';\n\n/**\n * Ensures that this API is compatible with the given\n * runtime version.\n *\n * We only enforce compatibility for major and minor components, i.e.,\n * the runtime and the API must both be of the form `x.y.*`.\n *\n * @throws If the major or the minor components are different.\n *\n * @param version The target version\n */\nexport function checkRuntimeCompatibility(version: Version) {\n const {major, minor} = version;\n\n let majorDiff = major - APIVersion.major;\n let minorDiff = minor - APIVersion.minor;\n /* Same version, so perfectly compatible. */\n if (!majorDiff && !minorDiff) return;\n\n const error =\n 'checkRuntimeCompatibility(): Version compatibility mismatch:\\n' +\n '\\t\u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*)\\n';\n\n const isRuntimeOlder = majorDiff < 0 || (!majorDiff && minorDiff < 0);\n if (isRuntimeOlder) {\n /* Runtime is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`\n );\n }\n /* API is out of date. */\n throw new Error(\n `${error}\\t\u2192 Please use a new API version >= ${version.major}.${version.minor}.*`\n );\n}\n\n/**\n * Reload the browser tab.\n *\n * @note This method first ensures the XR session is terminated,\n * to avoid blocking the Oculus Quest page.\n *\n * @param engine The engine instance\n */\nfunction reloadPage(engine: WonderlandEngine) {\n /* End XR session for Oculus Quest blocking reload otherwise */\n const session = engine.xr?.session ?? null;\n if (!session) {\n location.reload();\n return;\n }\n session.end().then(() => location.reload());\n}\n\n/**\n * Main Wonderland Engine instance.\n *\n * Controls the canvas, rendering, and JS <-> WASM communication.\n */\nexport class WonderlandEngine {\n /**\n * {@link Emitter} for WebXR session end events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionEnd.add(() => console.log(\"XR session ended.\"));\n * ```\n */\n get onXRSessionEnd(): Emitter {\n return this.#webxr.onSessionEnd;\n }\n\n /**\n * {@link RetainEmitter} for WebXR session start events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onXRSessionStart.add((session, mode) => console.log(session, mode));\n * ```\n *\n * By default, this emitter is retained and will automatically call any callback added\n * while a session is already started:\n *\n * ```js\n * // XR session is already active.\n * this.engine.onXRSessionStart.add((session, mode) => {\n * console.log(session, mode); // Triggered immediately.\n * });\n * ```\n */\n get onXRSessionStart(): Emitter<[XRSession, XRSessionMode]> {\n return this.#webxr.onSessionStart;\n }\n\n /**\n * {@link Emitter} for canvas / main framebuffer resize events.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onResize.add(() => {\n * const canvas = this.engine.canvas;\n * console.log(`New Size: ${canvas.width}, ${canvas.height}`);\n * });\n * ```\n *\n * @note The size of the canvas is in physical pixels, and is set via {@link WonderlandEngine.resize}.\n */\n readonly onResize: Emitter = new Emitter();\n\n /** Whether AR is supported by the browser. */\n get arSupported(): boolean {\n return this.#webxr.arSupported;\n }\n\n /** Whether VR is supported by the browser. */\n get vrSupported(): boolean {\n return this.#webxr.vrSupported;\n }\n\n /**\n * {@link RetainEmitter} signalling the end of the loading screen.\n *\n * Listeners get notified when the first call to {@link Scene#load()} is\n * invoked. At this point the new scene has not become active, and none of\n * its resources or components are initialized.\n *\n * Compared to {@link onSceneLoaded}, this does not wait for all components\n * to be fully initialized and activated. Any handler added inside\n * {@link Component#init()}, {@link Component#start()} or\n * {@link Component#onActivate()} will be called immediately.\n *\n * Usage:\n *\n * ```js\n * this.engine.onLoadingScreenEnd.add(() => console.log(\"Wait is over!\"));\n * ```\n */\n readonly onLoadingScreenEnd = new RetainEmitter();\n\n /**\n * {@link Emitter} for scene loaded events.\n *\n * Listeners get notified when a call to {@link Scene#load()} finishes. At\n * this point all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneLoaded.add(() => console.log(\"Scene switched!\"));\n * ```\n *\n * @deprecated Use {@link onSceneActivated} instead.\n */\n readonly onSceneLoaded = new Emitter();\n\n /**\n * {@link Emitter} for scene activated events.\n *\n * This listener is notified with the old scene as first parameter, and\n * the new scene as second.\n *\n * This listener is notified after all resources are loaded and all components had their\n * {@link Component#init()} as well as (if active)\n * {@link Component#start()} and {@link Component#onActivate()} methods\n * called.\n *\n * Usage from within a component:\n *\n * ```js\n * this.engine.onSceneActivated.add((oldScene, newScene) => {\n * console.log(`Scene switch from ${oldScene.filename} to ${newScene.filename}`);\n * });\n * ```\n */\n readonly onSceneActivated = new Emitter<[Scene, Scene]>();\n\n /**\n * Triggered when a hot reload is requested.\n *\n * When using the Wonderland Editor, this will be triggered when packaging\n * the project.\n *\n * @note When {@link autoHotReload} is `true`, the emitter is notified after the\n * scene is reloaded.\n *\n * To customize the hot reload behavior, set the {@link autoHotReload} to `false`,\n * and use this emitter:\n *\n * ```js\n * this.engine.onHotReloadRequest.add(async (filename: string) => {\n * // This handler can be used to re-download a scene, download components,\n * // fetch an API, anything!\n * await this.loadMainScene(filename);\n * });\n * ```\n */\n readonly onHotReloadRequest: Emitter<[string]> = new Emitter();\n\n /**\n * Access to internationalization.\n */\n readonly i18n: I18N = new I18N(this);\n\n /**\n * WebXR related state, `null` if no XR session is active.\n */\n get xr(): XRSessionState | null {\n return this.#webxr.sessionState;\n }\n\n /**\n * If `true`, {@link Texture}, {@link Object3D}, and {@link Component}\n * instances have their prototype erased upon destruction.\n *\n * #### Object\n *\n * ```js\n * engine.erasePrototypeOnDestroy = true;\n *\n * const obj = engine.scene.addObject();\n * obj.name = 'iamalive';\n * console.log(obj.name); // Prints 'iamalive'\n *\n * obj.destroy();\n * console.log(obj.name); // Throws an error\n * ```\n *\n * #### Component\n *\n * Components will also be affected:\n *\n * ```js\n * class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * alive: Property.bool(true)\n * };\n *\n * start() {\n * this.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * A component is also destroyed if its ancestor gets destroyed:\n *\n * ```js\n * class MyComponent extends Component {\n * ...\n * start() {\n * this.object.parent.destroy();\n * console.log(this.alive) // Throws an error\n * }\n * }\n * ```\n *\n * @note Native components will not be erased if destroyed via object destruction:\n *\n * ```js\n * const mesh = obj.addComponent('mesh');\n * obj.destroy();\n * console.log(mesh.active) // Doesn't throw even if the mesh is destroyed\n * ```\n *\n * @since 1.1.1\n */\n erasePrototypeOnDestroy = false;\n\n /**\n * If `true`, the materials will be wrapped in a proxy to support pre-1.2.0\n * material access, i.e.,\n *\n * ```js\n * const material = new Material(engine, 'Phong Opaque');\n * material.diffuseColor = [1.0, 0.0, 0.0, 1.0];\n * ```\n *\n * If `false`, property accessors will not be available and material\n * properties should be accessed via methods, i.e.,\n *\n * ```js\n * const PhongOpaque = engine.materials.getTemplate('Phong Opaque');\n * const material = new PhongOpaque();\n * material.setDiffuseColor([1.0, 0.0, 0.0, 1.0]);\n * ...\n * const diffuse = material.getDiffuseColor();\n * ```\n *\n * When disabled, reading/writing to materials is slightly more efficient on the CPU.\n */\n legacyMaterialSupport = true;\n\n /**\n * If `true`, automatically reloads the scene sent by the editor socket.\n *\n * @note The {@link onHotReloadRequest} emitter is notified **after** the scene is re-loaded.\n *\n * To use custom hot-reload code, set this boolean to `false` and add the reloading code\n *\n */\n autoHotReload = true;\n\n /**\n * If `true`, uncompressed images will be automatically converted\n * to `ImageBitmap` before upload to the GPU.\n *\n * For more information, have a look at the\n * [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap) documentation.\n */\n loadUncompressedImagesAsBitmap = false;\n\n /**\n * Scene cache in scene manager.\n *\n * @hidden\n */\n _scenes: (Prefab | null)[] = [];\n\n /**\n * Currently active scene.\n *\n * @hidden\n */\n _scene: Scene;\n\n /** Incremented every time a new main scene is loaded. */\n _mainSceneVersion: number = 0;\n\n /** @hidden */\n private _textures!: TextureManager;\n /** @hidden */\n private _materials!: MaterialManager;\n /** @hidden */\n private _meshes!: MeshManager;\n /** @hidden */\n private _morphTargets!: ResourceManager;\n /** @hidden */\n private _fonts!: ResourceManager;\n /** @hidden */\n private _particleEffects!: ResourceManager;\n /**\n * Current loading uncompressed images.\n *\n * @note Indexed by js image index.\n *\n * @hidden\n */\n private _uncompressedPromises: Promise[] = [];\n\n /**\n * WebAssembly bridge.\n *\n * @hidden\n */\n #wasm: WASM;\n\n /**\n * Physics manager, only available when physx is enabled in the runtime.\n *\n * @hidden\n */\n #physics: Physics | null = null;\n\n /**\n * WebXR library.\n *\n * @hidden\n */\n #webxr: WebXR;\n\n /**\n * Resize observer to track for canvas size changes.\n *\n * @hidden\n */\n #resizeObserver: ResizeObserver | null = null;\n\n /**\n * Whether a components bundle has already been loaded or not.\n *\n * @hidden\n */\n #bundleCache: Set = new Set();\n\n /**\n * Create a new engine instance.\n *\n * @param wasm Wasm bridge instance\n * @param loadingScreen Loading screen .bin file data\n *\n * @hidden\n */\n constructor(wasm: WASM, loadingScreen: ArrayBuffer | null, withRenderer: boolean) {\n this.#wasm = wasm;\n this.#wasm['_setEngine'](this); /* String lookup to bypass private. */\n this.#wasm._loadingScreen = loadingScreen;\n\n const version = this.runtimeVersion;\n let versionString = `${version.major}.${version.minor}.${version.patch}`;\n if (version.rc > 0) {\n versionString += `-rc${version.rc}`;\n }\n this.log.info(LogTag.Engine, 'Wonderland Engine runtime version:', versionString);\n\n this.#webxr = new WebXR(this);\n\n checkRuntimeCompatibility(this.#wasm.runtimeVersion);\n\n /* Setup the error handler. This is used to to manage native errors. */\n this.#wasm._wl_set_error_callback(\n this.#wasm.addFunction((messagePtr: number) => {\n throw new Error(this.#wasm.UTF8ToString(messagePtr));\n }, 'vi')\n );\n\n this.#wasm._wl_application_create();\n\n this.#physics = null;\n\n if (this.#wasm.withPhysX) {\n this.#physics = new Physics(this);\n }\n\n this._init(withRenderer);\n\n this._scene = this._reload(0);\n\n this.canvas.addEventListener(\n 'webglcontextlost',\n (e) => this.log.error(LogTag.Engine, 'Context lost:', e),\n false\n );\n }\n\n /**\n * Start the engine if it's not already running.\n *\n * When using the {@link loadRuntime} function, this method is called\n * automatically.\n */\n start(): void {\n this.wasm._wl_application_start();\n }\n\n /**\n * Register a custom JavaScript component type.\n *\n * You can register a component directly using a class inheriting from {@link Component}:\n *\n * ```js\n * import { Component, Type } from '@wonderlandengine/api';\n *\n * export class MyComponent extends Component {\n * static TypeName = 'my-component';\n * static Properties = {\n * myParam: {type: Type.Float, default: 42.0},\n * };\n * init() {}\n * start() {}\n * update(dt) {}\n * onActivate() {}\n * onDeactivate() {}\n * onDestroy() {}\n * });\n *\n * // Here, we assume we have an engine already instantiated.\n * // In general, the registration occurs in the `index.js` file in your\n * // final application.\n * engine.registerComponent(MyComponent);\n * ```\n *\n * {@label CLASSES}\n * @param classes Custom component(s) extending {@link Component}.\n *\n * @since 1.0.0\n */\n registerComponent(...classes: ComponentConstructor[]) {\n for (const arg of classes) {\n this.wasm._registerComponent(arg);\n }\n }\n\n /**\n * Register a component bundle\n *\n * The module must be of the form:\n *\n * ```js\n * export default function(engine) {\n * engine.registerComponent(MyComponent);\n * ...\n * }\n * ```\n *\n * Alternatively, you can manually register a component bundle:\n *\n * ```js\n * const registerBundle = (await import(url)).default;\n * registerBundle(engine);\n * ```\n *\n * @param url The URL of the module to register.\n * @param nocache If `true`, force browser to re-download the file.\n */\n async registerBundle(url: string, nocache = false) {\n if (!nocache && this.#bundleCache.has(url)) return;\n this.#bundleCache.add(url);\n\n if (nocache) url += `?t=${Date.now()}`;\n const register = (await import(url)).default;\n if (typeof register !== 'function') {\n throw new Error(\n `The bundle '${url}' doesn't have a default exported registration function`\n );\n }\n register(this);\n }\n\n /**\n * Update the loading screen progress bar.\n *\n * @param value Current loading percentage, in the range [0; 1].\n *\n * @since 1.2.1\n */\n setLoadingProgress(percentage: number) {\n this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1));\n }\n\n /**\n * Switch the current active scene.\n *\n * Once active, the scene will be updated and rendered on the canvas.\n *\n * The currently active scene is accessed via {@link WonderlandEngine.scene}:\n *\n * ```js\n * import {Component} from '@wonderlandengine/api';\n *\n * class MyComponent extends Component{\n * start() {\n * console.log(this.scene === this.engine.scene); // Prints `true`\n * }\n * }\n * ```\n *\n * @note This method will throw if the scene isn't activatable.\n *\n * #### Component Lifecycle\n *\n * Marking a scene as active will:\n * * Call {@link Component#onDeactivate} for all active components of the previous scene\n * * Call {@link Component#onActivate} for all active components of the new scene\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * engine.switchTo(scene);\n * ```\n *\n * @returns A promise that resolves once the scene is ready.\n *\n * @since 1.2.0\n */\n async switchTo(scene: Scene, opts: ActivateOptions = {}) {\n this.wasm._wl_deactivate_activeScene();\n\n /* Switch reference on engine **just** before activating, to allow\n * component to use `this.engine.scene` in `onActivate()`/`start()`. */\n const previous = this.scene;\n this._preactivate(scene);\n\n this.wasm._wl_scene_activate(scene._index);\n\n /* Enable/disable required views */\n this.#webxr.updateViewState(undefined);\n\n /* We loaded new views, update WebXR projection parameters */\n this.#webxr.updateProjectionParams(undefined, undefined);\n\n if (!this.onLoadingScreenEnd.isDataRetained) {\n this.onLoadingScreenEnd.notify();\n }\n\n /* For now, we always automatically download dependencies for\n * the user, i.e., separate textures.bin and languages.bin.\n *\n * In the future, we can eventually expose this in the chunk API\n * to give more control to the user if needed.\n *\n * We do not make the user wait until the textures download is complete. */\n const promise = scene._downloadDependencies();\n\n await this.i18n.setLanguage(this.i18n.languageCode(0));\n\n const {dispatchReadyEvent = false, waitForDependencies = false} = opts;\n\n if (waitForDependencies) await promise;\n\n this.onSceneActivated.notify(previous, scene);\n\n if (dispatchReadyEvent) scene.dispatchReadyEvent();\n }\n\n /**\n * Load the scene from a URL, as the main scene of a new {@link Scene}.\n *\n * #### Usage\n *\n * ```js\n * // The method returns the main scene\n * const scene = await engine.loadMainScene();\n * ```\n *\n * #### Destruction\n *\n * Loading a new main scene entirely resets the state of the engine, and destroys:\n * - All loaded scenes, prefabs, and gltf files\n * - Meshes\n * - Textures\n * - Materials\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback. When setting a custom\n * callback, you need to manually call {@link setLoadingProgress} to\n * get progress updates in the loading screen.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainScene(\n options: LoadOptions & ActivateOptions,\n progress?: ProgressCallback\n ) {\n /**\n * @todo: It's currently possible to put the runtime in a limbo\n * state using hot-reload: Multiple reload requests are sent, and scene loading\n * ends up being interleaved.\n *\n * Add a system to cancel the last loading, if any.\n */\n\n progress ??= (bytes: number, size: number) => {\n this.log.info(LogTag.Scene, `Scene downloading: ${bytes} / ${size}`);\n this.setLoadingProgress(bytes / size);\n };\n\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true, nocache = false} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const {stream, url} = Prefab.validateStreamOptions(options);\n return this._loadMainScene(stream, url, nocache, options as ActivateOptions);\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadMainSceneFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadMainScene}, but loading is done\n * from an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns The main scene of the new {@link Scene}.\n */\n async loadMainSceneFromBuffer(options: InMemoryLoadOptions & ActivateOptions) {\n const {nocache = false} = options;\n const {buffer, url} = Prefab.validateBufferOptions(options);\n return this._loadMainScene(buffer, url, nocache, options);\n }\n\n /**\n * Load a {@link Prefab} from a URL.\n *\n * #### Usage\n *\n * ```js\n * const prefab = await engine.loadPrefab('Prefab.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n * @note This method is a wrapper around {@link WonderlandEngine.loadPrefabFromBuffer}.\n *\n * @param url The URL pointing to the prefab to load.\n * @param progress Optional progress callback.\n * @returns The loaded {@link Prefab}.\n */\n async loadPrefab(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadPrefabFromBuffer(options);\n }\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadPrefab}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Prefab}.\n */\n loadPrefabFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Prefab, options);\n this._validateLoadedPrefab(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Load a scene from a URL.\n *\n * At the opposite of {@link WonderlandEngine.loadMainScene}, the scene loaded\n * will be added to the list of existing scenes, and its resources will be made\n * available for other scenes/prefabs/gltf to use.\n *\n * #### Resources Sharing\n *\n * Upon loading, the scene resources are added in the engine, and references\n * to those resources are updated.\n *\n * It's impossible for a scene loaded with this method to import pipelines.\n * Thus, the loaded scene will reference existing pipelines in the main scene,\n * based on their names.\n *\n * #### Usage\n *\n * ```js\n * const scene = await engine.loadScene('Scene.bin');\n * ```\n *\n * @note This method can only load Wonderland Engine `.bin` files.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link Scene}.\n */\n async loadScene(options: LoadOptions, progress?: ProgressCallback) {\n const opts = Prefab.makeUrlLoadOptions(options);\n const {streamed = true} = opts;\n if (streamed) {\n const options = await Scene.loadStream(opts, progress);\n const scene = await this._loadSceneFromStream(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n } else {\n const options = await Scene.loadBuffer(opts, progress);\n return this.loadSceneFromBuffer(options);\n }\n }\n\n /**\n * Create a glTF scene from a URL.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @note This method is a wrapper around {@link WonderlandEngine.loadGLTFFromBuffer}.\n *\n * @param options The URL pointing to the scene to load or an object\n * holding additional loading options, optionally including\n * {@link GLTFOptions}. {@link LoadOptions.streamed} is ignored as\n * streamed glTF parsing isn't supported.\n * @param progress Optional progress callback.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n async loadGLTF(opts: LoadOptions & GLTFOptions, progress?: ProgressCallback) {\n const memOptions = await Scene.loadBuffer(opts, progress);\n const options = isString(opts) ? memOptions : {...opts, ...memOptions};\n return this.loadGLTFFromBuffer(options);\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadScene}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @throws If the scene is streamable.\n *\n * @param options An object containing the buffer and extra metadata.\n * @returns A new loaded {@link Scene}.\n */\n loadSceneFromBuffer(options: InMemoryLoadOptions) {\n const scene = this._loadSceneFromBuffer(Scene, options);\n this._validateLoadedScene(scene);\n scene._initialize();\n return scene;\n }\n\n /**\n * Similar to {@link WonderlandEngine.loadGLTF}, but loading is done from\n * an `ArrayBuffer`.\n *\n * @note Loading glTF files requires `enableRuntimeGltf` to be checked in\n * the editor Project Settings.\n *\n * @param options An object containing the buffer and extra glTF metadata.\n * @returns A new loaded {@link PrefabGLTF}.\n */\n loadGLTFFromBuffer(options: InMemoryLoadOptions & GLTFOptions) {\n Scene.validateBufferOptions(options);\n const {buffer, extensions = false} = options;\n\n const wasm = this.wasm;\n\n if (!wasm._wl_glTF_scene_create) {\n throw new Error(\n 'Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings.'\n );\n }\n\n const ptr = wasm.copyBufferToHeap(buffer);\n\n try {\n const index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength);\n const scene = new PrefabGLTF(this, index);\n this._scenes[scene._index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n if (this.runtimeVersion.patch) {\n this._loadUncompressedImages(scene._index);\n }\n return scene;\n } finally {\n /* Catch calls to abort(), e.g. via asserts */\n wasm._free(ptr);\n }\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param typeOrClass A string representing the component typename (e.g., `'cursor-component'`),\n * or a component class (e.g., `CursorComponent`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(typeOrClass: string | ComponentConstructor) {\n return this.#wasm.isRegistered(\n isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName\n );\n }\n\n /**\n * Retrieve the registered component from its type name.\n *\n * @param typename The component {@link Component.TypeName} property\n * @returns The class if a component was registered with given name, `null` otherwise.\n */\n getComponentClass(\n typename: string\n ): ComponentConstructor | null {\n const index = this.wasm._componentTypeIndices[typename];\n if (index === undefined) return null;\n return this.wasm._componentTypes[index] as ComponentConstructor;\n }\n\n /**\n * Resize the canvas and the rendering context.\n *\n * @note The `width` and `height` parameters will be scaled by the\n * `devicePixelRatio` value. By default, the pixel ratio used is\n * [window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio).\n *\n * @param width The width, in CSS pixels.\n * @param height The height, in CSS pixels.\n * @param devicePixelRatio The pixel ratio factor.\n */\n resize(width: number, height: number, devicePixelRatio = window.devicePixelRatio) {\n width = width * devicePixelRatio;\n height = height * devicePixelRatio;\n this.canvas.width = width;\n this.canvas.height = height;\n this.wasm._wl_application_resize(width, height);\n this.onResize.notify();\n }\n\n /**\n * Run the next frame.\n *\n * @param fixedDelta The elapsed time between this frame and the previous one.\n *\n * @note The engine automatically schedules next frames. You should only\n * use this method for testing.\n */\n nextFrame(fixedDelta: number = 0) {\n this.#wasm._wl_nextFrame(fixedDelta);\n }\n\n /**\n * Request an XR session.\n *\n * @note Please use this call instead of directly calling `navigator.xr.requestSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n */\n requestXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.requestSession(mode, features, optionalFeatures);\n }\n\n /**\n * Offer an XR session.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * @note Please use this call instead of directly calling `navigator.xr.offerSession()`.\n * Wonderland Engine requires to be aware that a session is started, and this\n * is done through this call.\n *\n * @param mode The XR mode.\n * @param features An array of required features, e.g., `['local-floor', 'hit-test']`.\n * @param optionalFeatures An array of optional features, e.g., `['bounded-floor', 'depth-sensing']`.\n * @returns A promise resolving with the `XRSession`, a string error message otherwise.\n *\n * @since 1.1.5\n */\n offerXRSession(\n mode: XRSessionMode,\n features: string[],\n optionalFeatures: string[] = []\n ): Promise {\n return this.#webxr.offerSession(mode, features, optionalFeatures);\n }\n\n /**\n * Wrap an object ID using {@link Object}.\n *\n * @note This method performs caching and will return the same\n * instance on subsequent calls.\n *\n * @param objectId ID of the object to create.\n * @returns The object\n *\n * @deprecated Use {@link Scene#wrap} instead.\n *\n */\n wrapObject(objectId: number): Object3D {\n return this.scene.wrap(objectId);\n }\n\n toString() {\n return 'engine';\n }\n\n /* Public Getters & Setter */\n\n /** Currently active scene. */\n get scene(): Scene {\n return this._scene;\n }\n\n /**\n * WebAssembly bridge.\n *\n * @note Use with care. This object is used to communicate\n * with the WebAssembly code throughout the api.\n *\n * @hidden\n */\n get wasm(): WASM {\n return this.#wasm;\n }\n\n /**\n * WebXR api.\n *\n * @hidden\n */\n get webxr(): WebXR {\n return this.#webxr;\n }\n\n /** Canvas element that Wonderland Engine renders to. */\n get canvas(): HTMLCanvasElement {\n return this.#wasm.canvas;\n }\n\n /**\n * Current WebXR session or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.session} on the {@link xr}\n * object instead.\n */\n get xrSession(): XRSession | null {\n return this.xr?.session ?? null;\n }\n\n /**\n * Current WebXR frame or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.frame} on the {@link xr}\n * object instead.\n */\n get xrFrame(): XRFrame | null {\n return this.xr?.frame ?? null;\n }\n\n /**\n * Current WebXR base layer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.baseLayer} on the {@link xr}\n * object instead.\n */\n get xrBaseLayer(): XRProjectionLayer | XRWebGLLayer | null {\n return this.xr?.baseLayer ?? null;\n }\n\n /**\n * Current WebXR framebuffer or `null` if no session active.\n *\n * @deprecated Use {@link XRSessionState.framebuffers} on the {@link xr}\n * object instead.\n */\n get xrFramebuffer(): WebGLFramebuffer | null {\n return this.xr?.framebuffers[0] ?? null;\n }\n\n /**\n * WebXR framebuffer scale factor.\n */\n get xrFramebufferScaleFactor() {\n return this.#webxr.framebufferScaleFactor;\n }\n\n set xrFramebufferScaleFactor(value: number) {\n this.#webxr.framebufferScaleFactor = value;\n }\n\n /** Physics manager, only available when physx is enabled in the runtime. */\n get physics() {\n return this.#physics;\n }\n\n /** Texture resources */\n get textures() {\n return this._textures;\n }\n\n /** Material resources */\n get materials() {\n return this._materials;\n }\n\n /** Mesh resources */\n get meshes() {\n return this._meshes;\n }\n\n /** Morph target set resources */\n get morphTargets() {\n return this._morphTargets;\n }\n\n /** Font resources */\n get fonts() {\n return this._fonts;\n }\n\n /** Particle effect resources */\n get particleEffects() {\n return this._particleEffects;\n }\n\n /** Get all uncompressed images. */\n get images(): ImageLike[] {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n result[i] = wasm._images[index];\n }\n return result;\n }\n\n /**\n * Promise that resolve once all uncompressed images are loaded.\n *\n * This is equivalent to calling {@link WonderlandEngine.images}, and wrapping each\n * `load` listener into a promise.\n */\n get imagesPromise(): Promise {\n const wasm = this.wasm;\n const max = wasm._tempMemSize >> 1;\n const count = wasm._wl_get_images(wasm._tempMem, max);\n const result = new Array(count);\n for (let i = 0; i < count; ++i) {\n const index = wasm._tempMemUint16[i];\n const loading = this._uncompressedPromises[index];\n result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]);\n }\n return Promise.all(result);\n }\n\n /**\n * `true` if the texture streaming is currently idle, i.e.,\n * not attempting to upload any textures.\n *\n * @hidden\n */\n get isTextureStreamingIdle() {\n return !!this.wasm._wl_renderer_streaming_idle();\n }\n\n /**\n * `true` if reverse-Z rendering is supported and enabled.\n *\n * @hidden\n */\n get isReverseZEnabled() {\n return !!this.wasm._wl_renderer_isReverseZEnabled();\n }\n\n /*\n * Enable or disable the mechanism to automatically resize the canvas.\n *\n * Internally, the engine uses a [ResizeObserver](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * Changing the canvas css will thus automatically be tracked by the engine.\n */\n set autoResizeCanvas(flag: boolean) {\n const state = !!this.#resizeObserver;\n if (state === flag) return;\n\n if (!flag) {\n this.#resizeObserver?.unobserve(this.canvas);\n this.#resizeObserver = null;\n return;\n }\n this.#resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === this.canvas) {\n this.resize(entry.contentRect.width, entry.contentRect.height);\n }\n }\n });\n this.#resizeObserver.observe(this.canvas);\n }\n\n /** `true` if the canvas is automatically resized by the engine. */\n get autoResizeCanvas() {\n return this.#resizeObserver !== null;\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n return this.#wasm.runtimeVersion;\n }\n\n /** Engine {@link Logger}. Use it to turn on / off logging. */\n get log(): Logger {\n return this.#wasm._log;\n }\n\n /* Internal-Only Methods */\n\n /**\n * Initialize the engine.\n *\n * @note Should be called after the WebAssembly is fully loaded.\n *\n * @hidden\n */\n _init(withRenderer: boolean): boolean {\n const success = this.#wasm._wl_application_init(withRenderer);\n if (!success) {\n throw new Error(`Failed to initializing Wonderland runtime`);\n }\n\n this.resize(this.canvas.clientWidth, this.canvas.clientHeight);\n return true;\n }\n\n /**\n * Reset the runtime state, including:\n * - Component cache\n * - Images\n * - Callbacks\n *\n * @note This api is meant to be used internally.\n *\n * @hidden\n */\n _reset() {\n this.wasm.reset();\n this._scenes.length = 0;\n this._scene = this._reload(0);\n this.#bundleCache.clear();\n return this.switchTo(this._scene);\n }\n\n /**\n * Attempt to hot reload the engine.\n *\n * @param filename URL of the file to use for the reload.\n * If `null`, forces a full page reload.\n *\n * @hidden\n */\n async _reloadRequest(filename: string | null) {\n if (filename === null) {\n reloadPage(this);\n return;\n }\n\n try {\n if (this.autoHotReload)\n await this.loadMainScene({url: filename, nocache: true});\n } catch (e) {\n console.error('Hot reload request failed to load main scene, reason:', e);\n setTimeout(() => reloadPage(this), 1000);\n return;\n }\n\n this.onHotReloadRequest.notify(filename);\n }\n\n /**\n * Add an empty scene.\n *\n * @returns The newly created scene\n *\n * @hidden\n */\n _createEmpty(): Scene {\n const wasm = this.wasm;\n const index = wasm._wl_scene_create_empty();\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n return scene;\n }\n\n /** @hidden */\n _destroyScene(instance: Prefab) {\n const wasm = this.wasm;\n wasm._wl_scene_destroy(instance._index);\n\n const index = instance._index;\n (instance._index as number) = -1;\n if (this.erasePrototypeOnDestroy) {\n Object.setPrototypeOf(instance, DestroyedPrefabInstance);\n }\n\n this._scenes[index] = null;\n }\n\n /**\n * Reload the state of the engine with a new main scene.\n *\n * @param index Scene index.\n *\n * @hidden\n */\n private _reload(index: number) {\n const scene = new Scene(this, index);\n this._scenes[index] = scene;\n\n this._textures = new TextureManager(this);\n this._materials = new MaterialManager(this);\n this._meshes = new MeshManager(this);\n this._morphTargets = new ResourceManager(this, MorphTargets);\n this._fonts = new ResourceManager(this, Font);\n this._particleEffects = new ResourceManager(this, ParticleEffect);\n this._uncompressedPromises.length = 0;\n\n return scene;\n }\n\n /**\n * Helper to load a main scene from an `ArrayBuffer` or `ReadableStream`.\n *\n * @param data Buffer or stream.\n * @param url Base URL.\n * @param nocache If `true`, force a browser reload of files to download.\n * Only affects components loading for now.\n * @param options Activation options.\n * @returns The loaded main scene.\n *\n * @hidden\n */\n private async _loadMainScene(\n data: ArrayBuffer | ReadableStream,\n url: string,\n nocache: boolean,\n options: ActivateOptions\n ) {\n if (nocache) url += `?t=${Date.now()}`;\n\n const wasm = this.#wasm;\n\n /*\n * - Deactivate currently active scene\n * - Destroy all scenes\n * - Mark all resources as destroyed\n * - Activation of main scene to prevent the runtime to be in limbo\n */\n\n wasm._wl_deactivate_activeScene();\n\n ++this._mainSceneVersion;\n\n /* Only destroy all scene once the current active one is disabled */\n for (let i = this._scenes.length - 1; i >= 0; --i) {\n const scene = this._scenes[i];\n if (scene) scene.destroy();\n }\n\n /* Mark all resources as destroyed */\n this._textures._clear();\n this._materials._clear();\n this._meshes._clear();\n this._morphTargets._clear();\n this._uncompressedPromises.length = 0;\n\n const stream =\n data instanceof ReadableStream\n ? data\n : new ReadableStream(new ArrayBufferSource(data));\n const sink = new ChunkedSceneLoadSink(this, SceneType.Main, url);\n await stream.pipeTo(new WritableStream(sink));\n\n const mainScene = this._reload(sink.sceneIndex);\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(mainScene._index);\n\n /**\n * @todo(2.0.0)\n *\n * Backward compatibility: We need to set this instance reference on the\n * engine **before** component creation occurs, since users have been accessing\n * the scene with `this.engine.scene` in `init()`.\n */\n this._preactivate(mainScene);\n\n const componentsBundle = mainScene.componentsBundle;\n if (componentsBundle) {\n /* Relative URL are resolved from the script that imports, and **not** from\n * the document. We assume that the components bundle is located alongside\n * other resources, relative to the .bin.\n *\n * @note: `componentsBundle` already contains the same baseURL as the .bin. */\n const bundleURL = new URL(componentsBundle, document.baseURI);\n const url = nocache ? bundleURL.href.split('?')[0] : bundleURL.href;\n await this.registerBundle(url, nocache);\n }\n mainScene._initialize();\n\n await this.switchTo(mainScene, options);\n\n return mainScene;\n }\n\n /**\n * Helper to load prefab and activatable scene from an `ArrayBuffer`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private _loadSceneFromBuffer(\n PrefabClass: Constructor,\n options: InMemoryLoadOptions\n ) {\n const {buffer, url} = Scene.validateBufferOptions(options);\n\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n sink.write(new Uint8Array(buffer));\n sink.close();\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Helper to load prefab and activatable scene from a `ReadableStream`.\n *\n * @param PrefabClass Scene constructor.\n * @param options Loading options.\n * @returns The loaded prefab.\n *\n * @hidden\n */\n private async _loadSceneFromStream(\n PrefabClass: Constructor,\n options: StreamLoadOptions\n ) {\n const {stream, url} = Scene.validateStreamOptions(options);\n const sink = new ChunkedSceneLoadSink(this, SceneType.Prefab, url);\n await stream.pipeTo(new WritableStream(sink));\n const index = sink.sceneIndex;\n\n /* The scene was successfully loaded on the wasm side, we need to\n * add it to the scene cache, since the wasm might read it. */\n const scene = new PrefabClass(this, index);\n this._scenes[index] = scene;\n /* Start downloading uncompressed textures as soon as possible */\n this._loadUncompressedImages(scene._index);\n\n return scene;\n }\n\n /**\n * Checks if the loaded scene is a prefab and throws an error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedPrefab(scene: Prefab) {\n if (this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a prefab. To load a scene, use loadScene() instead'\n );\n }\n }\n\n /**\n * Checks if the loaded scene is a scene (and not a prefab) and throws an\n * error if not.\n *\n * @param scene The loaded scene\n *\n * @hidden\n */\n private _validateLoadedScene(scene: Scene) {\n if (!this.wasm._wl_scene_activatable(scene._index)) {\n this.wasm._wl_scene_destroy(scene._index);\n throw new Error(\n 'File is not a scene. To load a prefab, use loadPrefab() instead'\n );\n }\n }\n\n /**\n * Set the scene data on the engine, before the activation occurs.\n *\n * @hidden\n */\n private _preactivate(scene: Scene) {\n this._scene = scene;\n /* Update the current active scene in the physx manager */\n if (this.physics) (this.physics._hit._scene as Scene) = scene;\n }\n\n /**\n * Notify the runtime when images are ready to be uploaded.\n *\n * @param sceneIndex Index of the scene where the image originated\n * @hidden\n */\n private _loadUncompressedImages(sceneIndex: number) {\n const mainSceneVersion = this._mainSceneVersion;\n const wasm = this.wasm;\n\n const bitmapOptions: ImageBitmapOptions = {\n colorSpaceConversion: 'none',\n };\n\n const imageCount = wasm._wl_image_count();\n for (let i = 0; i < imageCount; ++i) {\n if (wasm._wl_image_originalScene(i) !== sceneIndex) continue;\n\n const jsImageIndex = wasm._wl_image_get_jsImage_index(i);\n\n const image = wasm._images[jsImageIndex];\n if (!image) continue;\n\n let promise: Promise = onImageReady(image);\n if (this.loadUncompressedImagesAsBitmap) {\n promise = promise.then((img) => createImageBitmap(img, bitmapOptions));\n }\n this._uncompressedPromises[jsImageIndex] = promise\n .then((img) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img));\n }\n })\n .catch((e) => {\n /* Discard the promise if the main scene has been reloaded */\n if (this._mainSceneVersion === mainSceneVersion) {\n this.log.error(\n LogTag.Scene,\n 'Failed to load uncompressed image',\n e\n );\n }\n });\n }\n }\n}\n", "/**\n * Assert that the given bit index is less than 32.\n *\n * @param bit The bit to test.\n */\nfunction assert(bit: number): void {\n if (bit >= 32) {\n throw new Error(`BitSet.enable(): Value ${bit} is over 31`);\n }\n}\n\n/**\n * Stores a bit pattern to quickly test if an index is enabled / disabled.\n *\n * This class can store up to **32** different values in the range [0; 31].\n *\n * #### Usage\n *\n * ```js\n * const bitset = new BitSet();\n * bitset.enable(10); // Enable bit at index `10`.\n * console.log(bitset.enabled(10)); // Prints 'true'.\n * ```\n *\n * #### TypeScript\n *\n * The set can be typed over an enum:\n *\n * ```ts\n * enum Tag {\n * First = 0,\n * Second = 1,\n * }\n *\n * const bitset = new BitSet();\n * bitset.enable(Tag.First);\n * ```\n */\nexport class BitSet {\n /** Enabled bits. @hidden */\n private _bits: number = 0;\n\n /**\n * Enable the bit at the given index.\n *\n * @param bits A spread of all the bits to enable.\n * @returns Reference to self (for method chaining).\n */\n enable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits |= (1 << bit) >>> 0;\n }\n return this;\n }\n\n /**\n * Enable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n enableAll() {\n this._bits = ~0;\n return this;\n }\n\n /**\n * Disable the bit at the given index.\n *\n * @param bits A spread of all the bits to disable.\n * @returns Reference to self (for method chaining).\n */\n disable(...bits: T[]) {\n for (const bit of bits) {\n assert(bit);\n /* Casts the result to an unsigned integer */\n this._bits &= ~((1 << bit) >>> 0);\n }\n return this;\n }\n\n /**\n * Disable all bits.\n *\n * @returns Reference to self (for method chaining).\n */\n disableAll() {\n this._bits = 0;\n return this;\n }\n\n /**\n * Checker whether the bit is set or not.\n *\n * @param bit The bit to check.\n * @returns `true` if it's enabled, `false` otherwise.\n */\n enabled(bit: T) {\n return !!(this._bits & ((1 << bit) >>> 0));\n }\n}\n", "import {BitSet} from './bitset.js';\nimport {Emitter} from './event.js';\n\n/**\n * Logging levels supported by {@link Logger}.\n */\nexport enum LogLevel {\n Info = 0,\n Warn = 1,\n Error = 2,\n}\n\n/**\n * Logging wrapper.\n *\n * This is used to allow turning on/off:\n * - `console.log`\n * - `console.warn`\n * - `console.error`\n *\n * #### Usage\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * // Create a logger with only the \"error\" and \"warn\" levels activated\n * const logger = new Logger(LogLevel.Warn, LogLevel.Error);\n *\n * // Only the \"error\" and \"warn\" levels are activated,\n * // this message isn't logged.\n * logger.info(LogTag.Component, 'This message is shushed')\n *\n * // Prints 'Hello Error!'\n * logger.error(LogTag.Component, 'Hello Error!');\n *\n * // Prints 'Hello Warning!'\n * logger.warn(LogTag.Component, 'Hello Warning!');\n * ```\n *\n * The log levels can be changed at anytime using the {@link BitSet} api:\n *\n * ```js\n * // Enable the \"info\" level\n * logger.levels.enable(LogLevel.Info);\n * * // Disable the \"warn\" level\n * logger.levels.disable(LogLevel.Warn);\n * ```\n *\n * #### Tags\n *\n * In addition, the logger supports tagging messages:\n *\n * ```js\n * import {Logger, LogLevel, LogTag} from '@wonderlandengine/api';\n *\n * const logger = new Logger(LogLevel.Info);\n *\n * logger.tags.disableAll();\n *\n * // All tags are off, this message isn't logged\n * logger.info(LogTag.Component, 'This message is shushed');\n *\n * logger.tags.enable(LogTag.Component);\n * logger.info(LogTag.Component, 'Hello World!') // Prints 'Hello World!'\n * ```\n *\n * The tagging system gives another layer of control to enable / disable\n * some specific logs.\n */\nexport class Logger {\n /**\n * Bitset of enabled levels.\n *\n * @hidden\n */\n levels: BitSet = new BitSet();\n\n /**\n * Bitset of enabled tags.\n *\n * @hidden\n */\n tags: BitSet = new BitSet().enableAll();\n\n /**\n * Notified when an `info`, `warn`, or `error` message is logged.\n *\n * @note The emitter is always notified, even if the logger levels\n * and tags are disabled.\n *\n * @note The message is passed as an array, similar to `console.log`.\n *\n * #### Usage\n *\n * ```js\n * import {LogLevel} from '@wonderlandengine/api';\n *\n * engine.logger.onLog.add((level, messages, tag) => {\n * // Only process error messages\n * if (level !== LogLevel.Error) return;\n *\n * // Only process engine logs\n * if (tag !== LogTag.Engine) return;\n *\n * const str = messages.join(' ');\n * sendAnalytics(str);\n * });\n * ```\n */\n onLog: Emitter<[LogLevel, unknown[], number]> = new Emitter();\n\n /**\n * Create a new logger instance.\n *\n * @param levels Default set of levels to enable.\n */\n constructor(...levels: LogLevel[]) {\n this.levels.enable(...levels);\n }\n\n /**\n * Log the message(s) using `console.log`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n info(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Info) && this.tags.enabled(tag)) {\n console.log(...msg);\n }\n this.onLog.notify(LogLevel.Info, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.warn`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n warn(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Warn) && this.tags.enabled(tag)) {\n console.warn(...msg);\n }\n this.onLog.notify(LogLevel.Warn, msg, tag);\n return this;\n }\n\n /**\n * Log the message(s) using `console.error`.\n *\n * @param tag Tag represented by a positive integer.\n * @param msg A spread of message to log.\n * @returns Reference to self (for method chaining).\n */\n error(tag: number, ...msg: unknown[]): this {\n if (this.levels.enabled(LogLevel.Error) && this.tags.enabled(tag)) {\n console.error(...msg);\n }\n this.onLog.notify(LogLevel.Error, msg, tag);\n return this;\n }\n}\n", "import {Version} from './version.js';\nimport {WonderlandEngine} from './engine.js';\nimport {ComponentProperty, Type, defaultPropertyCloner} from './property.js';\nimport {CBORReader, CBORType, getType} from './utils/cbor.js';\nimport {Logger} from './utils/logger.js';\nimport {\n inheritProperties,\n Component,\n ComponentConstructor,\n ComponentProto,\n BrokenComponent,\n AnimationComponent,\n LogTag,\n} from './wonderland.js';\nimport {ImageLike} from './types.js';\nimport {Scene} from './scene.js';\nimport {Prefab} from './prefab.js';\nimport {ComponentPropertyDecoder, setupComponentClass} from './component.js';\n\n/**\n * Low-level wrapper to interact with the WebAssembly code.\n *\n * @hidden\n */\nexport class WASM {\n /**\n * Emscripten wasm field.\n *\n * @note This api is meant to be used internally.\n */\n readonly wasm: ArrayBuffer = null!;\n\n /**\n * Emscripten canvas.\n *\n * @note This api is meant to be used internally.\n */\n readonly canvas: HTMLCanvasElement = null!;\n\n /**\n * WebGPU device.\n *\n * @note This api is meant to be used internally.\n */\n readonly preinitializedWebGPUDevice: any = null;\n\n /**\n * Convert a WASM memory view to a JavaScript string.\n *\n * @param ptr Pointer start\n * @param ptrEnd Pointer end\n * @returns JavaScript string\n */\n UTF8ViewToString: (ptr: number, ptrEnd: number) => string;\n\n /** Logger instance. */\n readonly _log: Logger = new Logger();\n\n /** If `true`, logs will not spam the console on error. */\n _deactivate_component_on_error: boolean = false;\n\n /** Temporary memory pointer. */\n _tempMem: number = null!;\n /** Temporary memory size. */\n _tempMemSize: number = 0;\n /** Temporary float memory view. */\n _tempMemFloat: Float32Array = null!;\n /** Temporary int memory view. */\n _tempMemInt: Int32Array = null!;\n /** Temporary uint8 memory view. */\n _tempMemUint8: Uint8Array = null!;\n /** Temporary uint32 memory view. */\n _tempMemUint32: Uint32Array = null!;\n /** Temporary uint16 memory view. */\n _tempMemUint16: Uint16Array = null!;\n\n /** Loading screen .bin file data */\n _loadingScreen: ArrayBuffer | null = null;\n\n /** List of callbacks triggered when the scene is loaded. */\n readonly _sceneLoadedCallback: any[] = [];\n\n /** Image cache. */\n _images: (ImageLike | null)[] = [null];\n\n /** Component instances. */\n private _components: Component[] = null!;\n\n /** Component Type info. */\n _componentTypes: ComponentConstructor[] = [];\n\n /** Index per component type name. */\n _componentTypeIndices: Record = {};\n\n /** Wonderland engine instance. */\n private _engine: WonderlandEngine = null!;\n\n /**\n * `true` if this runtime is using physx.\n *\n * @note This api is meant to be used internally.\n */\n private _withPhysX: boolean = false;\n\n /** Decoder for UTF8 `ArrayBuffer` to JavaScript string. */\n private readonly _utf8Decoder = new TextDecoder('utf8');\n\n /**\n * Registration index of {@link BrokenComponent}.\n *\n * This is used to return dummy instances when a component\n * isn't registered.\n *\n * @hidden\n */\n private readonly _brokenComponentIndex = 0;\n\n /**\n * Create a new instance of the WebAssembly <> API bridge.\n *\n * @param threads `true` if the runtime used has threads support\n */\n constructor(threads: boolean) {\n if (threads) {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.slice(s, e));\n };\n } else {\n this.UTF8ViewToString = (s: number, e: number) => {\n if (!s) return '';\n return this._utf8Decoder.decode(this.HEAPU8.subarray(s, e));\n };\n }\n\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /** Retrieves the runtime version. */\n get runtimeVersion(): Version {\n /** We cannot use _tempMem because we are meant to be called before it's initialized */\n const tempBuf = this._malloc(4 * 2);\n const tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4);\n this._wl_runtime_version(tempBuf);\n const version = {\n major: tempVersion[0],\n minor: tempVersion[1],\n patch: tempVersion[2],\n rc: tempVersion[3],\n };\n this._free(tempBuf);\n return version;\n }\n\n /**\n * Reset the cache of the library.\n *\n * @note Should only be called when tearing down the runtime.\n */\n reset() {\n /* Called first to perform cleanup. */\n this._wl_reset();\n\n this._components = null!;\n this._images.length = 1;\n this.allocateTempMemory(1024);\n\n this._componentTypes = [];\n this._componentTypeIndices = {};\n (this._brokenComponentIndex as number) = this._registerComponent(BrokenComponent);\n }\n\n /**\n * Checks whether the given component is registered or not.\n *\n * @param ctor A string representing the component typename (e.g., `'cursor-component'`).\n * @returns `true` if the component is registered, `false` otherwise.\n */\n isRegistered(type: string) {\n return type in this._componentTypeIndices;\n }\n\n /**\n * Register a legacy component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param typeName The name of the component.\n * @param params An object containing the parameters (properties).\n * @param object The object's prototype.\n * @returns The registration index\n */\n _registerComponentLegacy(\n typeName: string,\n params: Record,\n object: ComponentProto\n ) {\n const ctor = class CustomComponent extends Component {};\n ctor.TypeName = typeName;\n ctor.Properties = params;\n Object.assign(ctor.prototype, object);\n return this._registerComponent(ctor);\n }\n\n /**\n * Register a class component in this Emscripten instance.\n *\n * @note This api is meant to be used internally.\n *\n * @param ctor The class to register.\n * @returns The registration index.\n */\n _registerComponent(ctor: ComponentConstructor) {\n if (!ctor.TypeName) throw new Error('no name provided for component.');\n if (!ctor.prototype._triggerInit) {\n throw new Error(\n `registerComponent(): Component ${ctor.TypeName} must extend Component`\n );\n }\n\n setupComponentClass(ctor);\n\n const typeIndex =\n ctor.TypeName in this._componentTypeIndices\n ? this._componentTypeIndices[ctor.TypeName]\n : this._componentTypes.length;\n this._componentTypes[typeIndex] = ctor;\n this._componentTypeIndices[ctor.TypeName] = typeIndex;\n\n if (ctor === BrokenComponent) return typeIndex;\n\n this._log.info(\n LogTag.Engine,\n 'Registered component',\n ctor.TypeName,\n `(class ${ctor.name})`,\n 'with index',\n typeIndex\n );\n\n if (ctor.onRegister) ctor.onRegister(this._engine);\n\n return typeIndex;\n }\n\n /**\n * Allocate the requested amount of temporary memory\n * in this WASM instance.\n *\n * @param size The number of bytes to allocate\n */\n allocateTempMemory(size: number) {\n this._log.info(LogTag.Engine, 'Allocating temp mem:', size);\n this._tempMemSize = size;\n if (this._tempMem) this._free(this._tempMem);\n this._tempMem = this._malloc(this._tempMemSize);\n this.updateTempMemory();\n }\n\n /**\n * @todo: Delete this and only keep `allocateTempMemory`\n *\n * @param size Number of bytes to allocate\n */\n requireTempMem(size: number) {\n if (this._tempMemSize >= size) return;\n /* Grow in 1kb increments */\n this.allocateTempMemory(Math.ceil(size / 1024) * 1024);\n }\n\n /**\n * Update the temporary memory views. This must be called whenever the\n * temporary memory address changes.\n *\n * @note This api is meant to be used internally.\n */\n updateTempMemory() {\n this._tempMemFloat = new Float32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemInt = new Int32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint32 = new Uint32Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 2\n );\n this._tempMemUint16 = new Uint16Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize >> 1\n );\n this._tempMemUint8 = new Uint8Array(\n this.HEAP8.buffer,\n this._tempMem,\n this._tempMemSize\n );\n }\n\n /**\n * Returns a uint8 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU8(count: number): Uint8Array {\n this.requireTempMem(count);\n return this._tempMemUint8;\n }\n\n /**\n * Returns a uint16 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required\n * @returns A {@link TypedArray} over the WASM memory\n */\n getTempBufferU16(count: number): Uint16Array {\n this.requireTempMem(count * 2);\n return this._tempMemUint16;\n }\n\n /**\n * Returns a uint32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferU32(count: number): Uint32Array {\n this.requireTempMem(count * 4);\n return this._tempMemUint32;\n }\n\n /**\n * Returns a int32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferI32(count: number): Int32Array {\n this.requireTempMem(count * 4);\n return this._tempMemInt;\n }\n\n /**\n * Returns a float32 buffer view on temporary WASM memory.\n *\n * **Note**: this method might allocate if the requested memory is bigger\n * than the current temporary memory allocated.\n *\n * @param count The number of **elements** required.\n * @returns A {@link TypedArray} over the WASM memory.\n */\n getTempBufferF32(count: number): Float32Array {\n this.requireTempMem(count * 4);\n return this._tempMemFloat;\n }\n\n /**\n * Copy the string into temporary WASM memory and retrieve the pointer.\n *\n * @note This method will compute the strlen and append a `\\0`.\n *\n * @note The result should be used **directly** otherwise it might get\n * overridden by any next call modifying the temporary memory.\n *\n * @param str The string to write to temporary memory\n * @param byteOffset The starting byte offset in the temporary memory at which\n * the string should be written. This is useful when using multiple temporaries.\n * @return The temporary pointer onto the WASM memory\n */\n tempUTF8(str: string, byteOffset = 0): number {\n const strLen = this.lengthBytesUTF8(str) + 1;\n this.requireTempMem(strLen + byteOffset);\n const ptr = this._tempMem + byteOffset;\n this.stringToUTF8(str, ptr, strLen);\n return ptr;\n }\n\n /**\n * Copy the buffer into the WASM heap.\n *\n * @note The returned pointer must be freed.\n *\n * @param buffer The buffer to copy into the heap.\n * @returns An allocated pointer, that must be free after use.\n */\n copyBufferToHeap(buffer: ArrayBuffer): number {\n const size = buffer.byteLength;\n const ptr = this._malloc(size);\n this.HEAPU8.set(new Uint8Array(buffer), ptr);\n return ptr;\n }\n\n /**\n * Returns `true` if the runtime supports physx or not.\n */\n get withPhysX(): boolean {\n return this._withPhysX;\n }\n\n /**\n * Set the engine instance holding this bridge.\n *\n * @note This api is meant to be used internally.\n *\n * @param engine The engine instance.\n */\n protected _setEngine(engine: WonderlandEngine): void {\n this._engine = engine;\n }\n\n /* WebAssembly to JS call bridge. */\n\n protected _wljs_reload(filenamePtr: number) {\n const filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null;\n this._engine._reloadRequest(filename);\n }\n protected _wljs_init(withPhysX: boolean) {\n this._withPhysX = withPhysX;\n\n /* Target memory for JS API functions that return arrays */\n this.allocateTempMemory(1024);\n }\n protected _wljs_scene_switch(index: number) {\n const scene = this._engine._scenes[index] as Scene | null;\n /* Scene can be null during testing with `engine.reset()` */\n this._components = scene?._jsComponents ?? null!;\n }\n protected _wljs_destroy_image(index: number) {\n const img = this._images[index];\n if (!img) return;\n\n this._images[index] = null;\n\n if ((img as HTMLImageElement).src !== undefined) {\n (img as HTMLImageElement).src = '';\n }\n if ((img as HTMLImageElement).onload !== undefined) {\n (img as HTMLImageElement).onload = null;\n }\n if ((img as HTMLImageElement).onerror !== undefined) {\n (img as HTMLImageElement).onerror = null;\n }\n }\n protected _wljs_objects_markDestroyed(\n sceneIndex: number,\n idsPtr: number,\n count: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n const start = idsPtr >>> 1;\n for (let i = 0; i < count; ++i) {\n const id = this.HEAPU16[start + i];\n scene._destroyObject(id);\n }\n }\n protected _wljs_scene_initialize(\n sceneIndex: number,\n idsPtr: number,\n idsEnd: number,\n paramDataPtr: number,\n paramDataEndPtr: number,\n offsetsPtr: number,\n offsetsEndPtr: number\n ) {\n const cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr);\n const offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2);\n const ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1);\n\n const engine = this._engine;\n const scene = engine._scenes[sceneIndex] as Scene;\n const components = scene._jsComponents;\n\n const cbor = new CBORReader(cborEncoded);\n\n let componentsCount = 0;\n {\n const typeInfo = cbor.readTypeInfo();\n if (getType(typeInfo) !== CBORType.Array) {\n this._log.error(LogTag.Engine, 'Parameters data must be an array');\n return;\n }\n componentsCount = cbor.readArrayLength(typeInfo) as number;\n }\n if (componentsCount !== ids.length) {\n this._log.error(\n LogTag.Engine,\n `Parameters set for ${componentsCount} components, but expected ${ids.length}`\n );\n return;\n }\n\n const decoder = new ComponentPropertyDecoder(scene, offsets);\n for (let i = 0; i < componentsCount; ++i) {\n const id = Component._pack(sceneIndex, ids[i]);\n const index = this._wl_get_js_component_index_for_id(id);\n const component = components[index];\n decoder.decode(cbor, component);\n }\n }\n\n protected _wljs_set_component_param_translation(\n scene: number,\n component: number,\n param: number,\n valuePtr: number,\n valueEndPtr: number\n ) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const comp = components[component];\n\n const value = this.UTF8ViewToString(valuePtr, valueEndPtr);\n const ctor = comp.constructor as ComponentConstructor;\n const paramName = ctor._propertyOrder[param];\n (comp as Record)[paramName] = value;\n }\n\n protected _wljs_get_component_type_index(namePtr: number, nameEndPtr: number) {\n const typename = this.UTF8ViewToString(namePtr, nameEndPtr);\n const index = this._componentTypeIndices[typename];\n if (index === undefined) {\n return this._brokenComponentIndex;\n }\n return index;\n }\n protected _wljs_component_create(\n sceneIndex: number,\n index: number,\n id: number,\n type: number,\n object: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Scene;\n scene._components.createJs(index, id, type, object);\n }\n protected _wljs_component_init(scene: number, component: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const c = components[component];\n c._triggerInit();\n }\n protected _wljs_component_update(component: number, dt: number) {\n const c = this._components[component];\n c._triggerUpdate(dt);\n }\n protected _wljs_component_onActivate(component: number) {\n const c = this._components[component];\n c._triggerOnActivate();\n }\n protected _wljs_component_onDeactivate(component: number) {\n const c = this._components[component];\n c._triggerOnDeactivate();\n }\n protected _wljs_component_markDestroyed(\n sceneIndex: number,\n manager: number,\n componentId: number\n ) {\n const scene = this._engine._scenes[sceneIndex] as Prefab;\n scene._destroyComponent(manager, componentId);\n }\n protected _wljs_swap(scene: number, a: number, b: number) {\n const components = (this._engine._scenes[scene] as Scene)._jsComponents;\n const componentA = components[a];\n components[a] = components[b];\n components[b] = componentA;\n }\n protected _wljs_copy(\n srcSceneIndex: number,\n srcIndex: number,\n dstSceneIndex: number,\n dstIndex: number,\n offsetsPtr: number,\n copyInfoPtr: number\n ) {\n const srcScene = this._engine._scenes[srcSceneIndex] as Scene;\n const dstScene = this._engine._scenes[dstSceneIndex] as Scene;\n const destComp = dstScene._jsComponents[dstIndex];\n const srcComp = srcScene._jsComponents[srcIndex];\n destComp._copy(srcComp, offsetsPtr, copyInfoPtr);\n }\n /**\n * Forward an animation event to a corresponding\n * {@link AnimationComponent}\n *\n * @note This api is meant to be used internally. Please have a look at\n * {@link AnimationComponent.onEvent} instead.\n *\n * @param componentId Component id in the manager\n * @param namePtr Pointer to UTF8 event name\n * @param nameEndPtr Pointer to end of UTF8 event name\n */\n protected _wljs_trigger_animationEvent(\n componentId: number,\n namePtr: number,\n nameEndPtr: number\n ) {\n const scene = this._engine.scene;\n const comp = scene._components.wrapAnimation(componentId);\n const nameStr = this.UTF8ViewToString(namePtr, nameEndPtr);\n comp.onEvent.notify(nameStr);\n }\n}\n\n/* Extends the WASM class with the WebAssembly typings */\n\nexport interface WASM {\n HEAP8: Int8Array;\n HEAPU8: Uint8Array;\n HEAPU16: Uint16Array;\n HEAP16: Int16Array;\n HEAPU32: Uint32Array;\n HEAP32: Int32Array;\n HEAPF32: Float32Array;\n HEAPF64: Float64Array;\n\n GL: {\n framebuffers: WebGLFramebuffer[];\n };\n\n assert: (condition: boolean, msg?: string) => void;\n _free: (ptr: number) => void;\n _malloc: (size: number) => number;\n lengthBytesUTF8: (str: string) => number;\n stringToUTF8: (str: string, outPtr: number, len: number) => void;\n UTF8ToString: (ptr: number) => string;\n addFunction: (func: Function, sig: string) => number;\n removeFunction: (ptr: number) => void;\n\n _wl_runtime_version: (out: number) => void;\n _wl_set_error_callback: (cbPtr: number) => void;\n _wl_application_create: () => void;\n _wl_application_init: (withRenderer: boolean) => boolean;\n _wl_application_start: () => void;\n _wl_application_redraw: () => void;\n _wl_application_resize: (width: number, height: number) => void;\n\n _wl_nextUpdate: (delta: number) => void;\n _wl_nextFrame: (delta: number) => void;\n _wl_reset: () => void;\n _wl_reset_context: () => void;\n _wl_xr_init: (viewCount: number, useLayers: boolean) => void;\n _wl_xr_focus: () => void;\n _wl_xr_blur: () => void;\n _wl_xr_hide: () => void;\n _wl_xr_exit: () => void;\n\n _wl_deactivate_activeScene: () => void;\n\n _wl_renderer_set_mesh_layout: (layout: number) => void;\n _wl_renderer_streaming_idle: () => number;\n _wl_renderer_isReverseZEnabled: () => number;\n\n _wl_load_main_scene: (ptr: number, size: number, url: number) => number;\n _wl_get_images: (out: number, max: number) => number;\n _wl_get_material_definition_count: () => number;\n _wl_get_material_definition_index: (ptr: number) => number;\n\n _wl_scene_get_active: (root: number) => number;\n _wl_scene_create: (ptr: number, size: number, url: number) => number;\n _wl_scene_create_chunked_start: (url: number) => number;\n _wl_scene_create_chunked_buffer_size: (index: number) => number;\n _wl_scene_create_chunked_next: (\n index: number,\n ptr: number,\n size: number,\n readSizePtr: number,\n requiredSizePtr: number\n ) => boolean;\n _wl_scene_create_chunked_abort: (index: number) => void;\n _wl_scene_create_chunked_end_prefab: (index: number) => number;\n _wl_scene_create_chunked_end_main: (index: number) => void;\n _wl_scene_create_chunked_end_queued: (\n index: number,\n dependentSceneIndex: number\n ) => void;\n _wl_scene_create_empty: () => number;\n _wl_scene_initialize: (index: number) => number;\n _wl_scene_destroy: (index: number) => void;\n _wl_scene_instantiate: (src: number, dst: number) => number;\n _wl_scene_activate: (index: number) => void;\n _wl_scene_queued_bin_count: (index: number) => number;\n _wl_scene_queued_bin_path: (sceneIndex: number, index: number) => number;\n _wl_scene_clear_queued_bin_list: (sceneIndex: number) => void;\n _wl_scene_load_queued_bin: (index: number, ptr: number, size: number) => boolean;\n _wl_scene_activatable: (index: number) => boolean;\n _wl_scene_active: (index: number) => boolean;\n _wl_scene_get_baseURL: (index: number) => number;\n _wl_scene_get_filename: (index: number) => number;\n _wl_scene_get_componentsBundle: (index: number) => number;\n\n _wl_scene_get_component_manager_count: (scene: number) => number;\n _wl_scene_get_component_manager_index: (scene: number, ptr: number) => number;\n\n _wl_scene_get_mainView: (scene: number) => number;\n _wl_scene_get_leftView: (scene: number) => number;\n _wl_scene_get_rightView: (scene: number) => number;\n _wl_scene_get_components: (\n scene: number,\n typeIndex: number,\n subTypeIndex: number,\n active: boolean,\n offset: number,\n count: number,\n ptr: number\n ) => number;\n _wl_scene_get_component: (scene: number, typeIndex: number, index: number) => number;\n\n _wl_scene_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n maxDistance: number,\n outPtr: number\n ) => void;\n _wl_scene_add_object: (scene: number, parentId: number) => number;\n _wl_scene_add_objects: (\n scene: number,\n parentId: number,\n count: number,\n componentCountHint: number,\n ptr: number,\n size: number\n ) => number;\n _wl_scene_reserve_objects: (\n scene: number,\n objectCount: number,\n _tempMem: number\n ) => void;\n _wl_scene_set_sky_material: (index: number, id: number) => void;\n _wl_scene_get_sky_material: (index: number) => number;\n _wl_scene_environment_set_intensity: (index: number, intensity: number) => void;\n _wl_scene_environment_get_intensity: (index: number) => number;\n _wl_scene_environment_set_tint: (\n index: number,\n r: number,\n g: number,\n b: number\n ) => void;\n _wl_scene_environment_get_tint: (index: number, ptr: number) => void;\n _wl_scene_environment_set_coefficients: (\n index: number,\n ptr: number,\n count: number\n ) => void;\n _wl_scene_environment_get_coefficients: (index: number, ptr: number) => void;\n _wl_scene_set_clearColor: (r: number, g: number, b: number, a: number) => void;\n _wl_scene_enableColorClear: (b: boolean) => void;\n\n _wl_set_loading_screen_progress: (ratio: number) => void;\n\n _wl_glTF_scene_create: (extensions: boolean, ptr: number, ptrEnd: number) => number;\n _wl_glTF_scene_get_extensions: (index: number) => number;\n _wl_glTF_scene_extensions_gltfIndex_to_id: (\n gltfScene: number,\n destScene: number,\n objectIndex: number,\n gltfIndex: number\n ) => number;\n\n _wl_component_get_object: (manager: number, id: number) => number;\n _wl_component_setActive: (manager: number, id: number, active: boolean) => void;\n _wl_component_isActive: (manager: number, id: number) => number;\n _wl_component_remove: (manager: number, id: number) => void;\n\n _wl_collision_component_get_collider: (id: number) => number;\n _wl_collision_component_set_collider: (id: number, collider: number) => void;\n _wl_collision_component_get_extents: (id: number) => number;\n _wl_collision_component_get_group: (id: number) => number;\n _wl_collision_component_set_group: (id: number, group: number) => void;\n _wl_collision_component_query_overlaps: (\n id: number,\n outPtr: number,\n outCount: number\n ) => number;\n _wl_text_component_get_horizontal_alignment: (id: number) => number;\n _wl_text_component_set_horizontal_alignment: (id: number, alignment: number) => void;\n _wl_text_component_get_vertical_alignment: (id: number) => number;\n _wl_text_component_set_vertical_alignment: (\n id: number,\n verticalAlignment: number\n ) => void;\n _wl_text_component_get_justified: (id: number) => number;\n _wl_text_component_set_justified: (id: number, justified: boolean) => void;\n _wl_text_component_get_character_spacing: (id: number) => number;\n _wl_text_component_set_character_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_line_spacing: (id: number) => number;\n _wl_text_component_set_line_spacing: (id: number, spacing: number) => void;\n _wl_text_component_get_effect: (id: number) => number;\n _wl_text_component_get_effectOffset: (id: number, outPtr: number) => void;\n _wl_text_component_set_effect: (id: number, effect: number) => void;\n _wl_text_component_set_effectOffset: (id: number, offsetPtr: number) => void;\n _wl_text_component_get_wrapMode: (id: number) => number;\n _wl_text_component_set_wrapMode: (id: number, mode: number) => void;\n _wl_text_component_get_wrapWidth: (id: number) => number;\n _wl_text_component_set_wrapWidth: (id: number, width: number) => void;\n _wl_text_component_get_text: (id: number) => number;\n _wl_text_component_set_text: (id: number, ptr: number) => void;\n _wl_text_component_set_material: (id: number, materialId: number) => void;\n _wl_text_component_get_material: (id: number) => number;\n _wl_text_component_get_boundingBox: (\n id: number,\n textPtr: number,\n resultPtr: number\n ) => number;\n _wl_view_component_get_projectionType: (id: number) => number;\n _wl_view_component_set_projectionType: (id: number, type: number) => void;\n _wl_view_component_get_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_set_projectionMatrix: (id: number, ptr: number) => void;\n _wl_view_component_remapProjectionMatrix: (\n id: number,\n inverseDepth: boolean,\n depthZeroToOne: boolean\n ) => void;\n _wl_view_component_generate_projectionMatrix: (id: number) => void;\n _wl_view_component_get_near: (id: number) => number;\n _wl_view_component_set_near: (id: number, near: number) => void;\n _wl_view_component_get_far: (id: number) => number;\n _wl_view_component_set_far: (id: number, far: number) => void;\n _wl_view_component_get_fov: (id: number) => number;\n _wl_view_component_set_fov: (id: number, fov: number) => void;\n _wl_view_component_get_viewport: (id: number) => number;\n _wl_view_component_set_viewport: (\n id: number,\n x: number,\n y: number,\n width: number,\n height: number\n ) => void;\n _wl_view_component_get_extent: (id: number) => number;\n _wl_view_component_set_extent: (id: number, fov: number) => void;\n _wl_view_component_set_externalFramebuffer: (id: number, fb: number) => void;\n _wl_input_component_get_type: (id: number) => number;\n _wl_input_component_set_type: (id: number, type: number) => void;\n _wl_input_set_transformation: (sceneIndex: number, type: number, ptr: number) => void;\n _wl_light_component_get_color: (id: number) => number;\n _wl_light_component_get_type: (id: number) => number;\n _wl_light_component_set_type: (id: number, type: number) => void;\n _wl_light_component_get_intensity: (id: number) => number;\n _wl_light_component_set_intensity: (id: number, intensity: number) => void;\n _wl_light_component_get_outerAngle: (id: number) => number;\n _wl_light_component_set_outerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_innerAngle: (id: number) => number;\n _wl_light_component_set_innerAngle: (id: number, angle: number) => void;\n _wl_light_component_get_shadows: (id: number) => number;\n _wl_light_component_set_shadows: (id: number, shadows: boolean) => void;\n _wl_light_component_get_shadowRange: (id: number) => number;\n _wl_light_component_set_shadowRange: (id: number, range: number) => void;\n _wl_light_component_get_shadowBias: (id: number) => number;\n _wl_light_component_set_shadowBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowNormalBias: (id: number) => number;\n _wl_light_component_set_shadowNormalBias: (id: number, bias: number) => void;\n _wl_light_component_get_shadowTexelSize: (id: number) => number;\n _wl_light_component_set_shadowTexelSize: (id: number, size: number) => void;\n _wl_light_component_get_cascadeCount: (id: number) => number;\n _wl_light_component_set_cascadeCount: (id: number, count: number) => void;\n _wl_animation_component_get_animation: (id: number) => number;\n _wl_animation_component_set_animation: (id: number, animId: number) => void;\n _wl_animation_component_get_playCount: (id: number) => number;\n _wl_animation_component_set_playCount: (id: number, count: number) => void;\n _wl_animation_component_get_speed: (id: number) => number;\n _wl_animation_component_set_speed: (id: number, speed: number) => void;\n _wl_animation_component_play: (id: number) => void;\n _wl_animation_component_stop: (id: number) => void;\n _wl_animation_component_pause: (id: number) => void;\n _wl_animation_component_state: (id: number) => number;\n _wl_animation_component_getGraphParamValue: (\n id: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_animation_component_setGraphParamValue: (\n id: number,\n paramIndex: number,\n valuePtr: number\n ) => void;\n _wl_animation_component_get_rootMotionMode: (id: number) => number;\n _wl_animation_component_set_rootMotionMode: (id: number, value: number) => void;\n _wl_animation_component_get_rootMotion_translation: (\n id: number,\n outPtr: number\n ) => number;\n _wl_animation_component_get_rootMotion_rotation: (id: number, outPtr: number) => number;\n _wl_animation_component_getGraphParamIndex: (id: number, paramName: number) => number;\n _wl_animation_component_get_iteration: (id: number) => number;\n _wl_animation_component_get_position: (id: number) => number;\n _wl_animation_component_get_duration: (id: number) => number;\n _wl_mesh_component_get_material: (id: number) => number;\n _wl_mesh_component_set_material: (id: number, materialId: number) => void;\n _wl_mesh_component_get_mesh: (id: number) => number;\n _wl_mesh_component_set_mesh: (id: number, meshId: number) => void;\n _wl_mesh_component_get_skin: (id: number) => number;\n _wl_mesh_component_set_skin: (id: number, skinId: number) => void;\n _wl_mesh_component_get_morph_targets: (id: number) => number;\n _wl_mesh_component_set_morph_targets: (id: number, morphTargetSetId: number) => void;\n _wl_mesh_component_get_morph_target_weight: (id: number, index: number) => number;\n _wl_mesh_component_get_morph_target_weights: (id: number, ptr: number) => number;\n _wl_mesh_component_set_morph_target_weight: (\n id: number,\n index: number,\n weight: number\n ) => void;\n _wl_mesh_component_set_morph_target_weights: (\n id: number,\n ptr: number,\n count: number\n ) => void;\n _wl_particleEffect_component_get_particleEffect: (id: number) => number;\n _wl_particleEffect_component_set_particleEffect: (\n id: number,\n particleEffectId: number\n ) => void;\n _wl_physx_component_get_static: (id: number) => number;\n _wl_physx_component_set_static: (id: number, flag: boolean) => void;\n _wl_physx_component_get_kinematic: (id: number) => number;\n _wl_physx_component_set_kinematic: (id: number, kinematic: boolean) => void;\n _wl_physx_component_get_gravity: (id: number) => number;\n _wl_physx_component_set_gravity: (id: number, gravity: boolean) => void;\n _wl_physx_component_get_simulate: (id: number) => number;\n _wl_physx_component_set_simulate: (id: number, simulation: boolean) => void;\n _wl_physx_component_get_allowSimulation: (id: number) => number;\n _wl_physx_component_set_allowSimulation: (id: number, allowSimulation: boolean) => void;\n _wl_physx_component_get_allowQuery: (id: number) => number;\n _wl_physx_component_set_allowQuery: (id: number, allowQuery: boolean) => void;\n _wl_physx_component_get_trigger: (id: number) => number;\n _wl_physx_component_set_trigger: (id: number, trigger: boolean) => void;\n _wl_physx_component_get_shape: (id: number) => number;\n _wl_physx_component_set_shape: (id: number, shape: number) => void;\n _wl_physx_component_get_shape_data: (id: number) => number;\n _wl_physx_component_set_shape_data: (id: number, shapeIndex: number) => void;\n _wl_physx_component_get_extents: (id: number) => number;\n _wl_physx_component_get_staticFriction: (id: number) => number;\n _wl_physx_component_set_staticFriction: (id: number, value: number) => void;\n _wl_physx_component_get_dynamicFriction: (id: number) => number;\n _wl_physx_component_set_dynamicFriction: (id: number, value: number) => void;\n _wl_physx_component_get_bounciness: (id: number) => number;\n _wl_physx_component_set_bounciness: (id: number, value: number) => void;\n _wl_physx_component_get_linearDamping: (id: number) => number;\n _wl_physx_component_set_linearDamping: (id: number, value: number) => void;\n _wl_physx_component_get_angularDamping: (id: number) => number;\n _wl_physx_component_set_angularDamping: (id: number, value: number) => void;\n _wl_physx_component_get_linearVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_linearVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_angularVelocity: (id: number, ptr: number) => number;\n _wl_physx_component_set_angularVelocity: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_get_groupsMask: (id: number) => number;\n _wl_physx_component_set_groupsMask: (id: number, flags: number) => void;\n _wl_physx_component_get_blocksMask: (id: number) => number;\n _wl_physx_component_set_blocksMask: (id: number, flags: number) => void;\n _wl_physx_component_get_linearLockAxis: (id: number) => number;\n _wl_physx_component_set_linearLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_angularLockAxis: (id: number) => number;\n _wl_physx_component_set_angularLockAxis: (id: number, lock: number) => void;\n _wl_physx_component_get_mass: (id: number) => number;\n _wl_physx_component_set_mass: (id: number, value: number) => void;\n _wl_physx_component_get_offsetTranslation: (id: number, out: number) => void;\n _wl_physx_component_get_offsetTransform: (id: number) => number;\n _wl_physx_component_set_offsetTranslation: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_set_offsetRotation: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_physx_component_set_sleepOnActivate: (id: number, flag: boolean) => void;\n _wl_physx_component_get_sleepOnActivate: (id: number) => number;\n _wl_physx_component_set_massSpaceInertiaTensor: (\n id: number,\n x: number,\n y: number,\n z: number\n ) => void;\n _wl_physx_component_addForce: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean\n ) => void;\n _wl_physx_component_addForceAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number,\n localForce: boolean,\n posX: number,\n posY: number,\n posZ: number,\n local: boolean\n ) => void;\n _wl_physx_component_addTorque: (\n id: number,\n x: number,\n y: number,\n z: number,\n mode: number\n ) => void;\n _wl_physx_component_addCallback: (id: number, otherId: number) => number;\n _wl_physx_component_removeCallback: (id: number, callbackId: number) => number;\n _wl_physx_update_global_pose: (object: number, component: number) => void;\n _wl_physx_ray_cast: (\n scene: number,\n x: number,\n y: number,\n z: number,\n dx: number,\n dy: number,\n dz: number,\n groupMask: number,\n outPtr: number,\n maxDistance: number\n ) => void;\n _wl_physx_set_collision_callback: (callback: number) => void;\n _wl_mesh_create: (\n indicesPtr: number,\n indicesSize: number,\n indexType: number,\n vertexCount: number,\n skinningType: number\n ) => number;\n _wl_mesh_get_vertexCount: (index: number) => number;\n _wl_mesh_get_indexData: (index: number, outPtr: number, count: number) => number;\n _wl_mesh_update: (index: number) => void;\n _wl_mesh_get_boundingSphere: (index: number, outPtr: number) => void;\n _wl_mesh_get_attribute: (index: number, attribute: number, outPtr: number) => void;\n _wl_mesh_destroy: (index: number) => void;\n _wl_mesh_get_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcStride: number,\n dstFormatSize: number,\n destPtr: number,\n dstSize: number\n ) => void;\n _wl_mesh_set_attribute_values: (\n attribute: number,\n srcFormatSize: number,\n srcPtr: number,\n srcSize: number,\n dstFormatSize: number,\n destPtr: number,\n destStride: number\n ) => void;\n _wl_font_get_emHeight: (index: number) => number;\n _wl_font_get_capHeight: (index: number) => number;\n _wl_font_get_xHeight: (index: number) => number;\n _wl_font_get_outlineSize: (index: number) => number;\n _wl_material_create: (definitionIndex: number) => number;\n _wl_material_get_definition: (index: number) => number;\n _wl_material_definition_get_param_count: (index: number) => number;\n _wl_material_definition_get_param_name: (index: number, paramIndex: number) => number;\n _wl_material_definition_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_pipeline: (index: number) => number;\n _wl_material_clone: (index: number) => number;\n _wl_material_get_param_index: (index: number, namePtr: number) => number;\n _wl_material_get_param_type: (index: number, paramIndex: number) => number;\n _wl_material_get_param_value: (\n index: number,\n paramIndex: number,\n outPtr: number\n ) => number;\n _wl_material_set_param_value_uint: (\n index: number,\n paramId: number,\n valueId: number\n ) => void;\n _wl_material_set_param_value_float: (\n index: number,\n paramId: number,\n ptr: number,\n count: number\n ) => void;\n _wl_image_create: (jsImage: number) => number;\n _wl_image_size: (index: number, out: number) => number;\n _wl_image_get_jsImage_index: (index: number) => number;\n _wl_image_compressed: (index: number) => number;\n _wl_image_originalScene: (index: number) => number;\n _wl_image_markDirty: (index: number) => void;\n _wl_image_markReady: (\n index: number,\n width: number,\n height: number,\n flipY: number\n ) => void;\n _wl_image_count: () => number;\n\n _wl_texture_create: (image: number) => number;\n _wl_texture_get_image_index: (index: number) => number;\n _wl_texture_destroy: (id: number) => void;\n\n _wl_renderer_updateImage: (\n imageIndex: number,\n jsImageIndex: number,\n srcWidth: number,\n srcHeight: number,\n xOffset: number,\n yOffset: number,\n flipY: boolean\n ) => number;\n\n _wl_animation_get_duration: (id: number) => number;\n _wl_animation_get_trackCount: (id: number) => number;\n _wl_animation_retargetToSkin: (id: number, targetId: number) => number;\n _wl_animation_retarget: (id: number, ptr: number) => number;\n _wl_particleEffect_clone: (index: number) => number;\n _wl_object_id: (scene: number, index: number) => number;\n _wl_object_index: (id: number) => number;\n _wl_object_name: (id: number) => number;\n _wl_object_set_name: (id: number, ptr: number) => void;\n _wl_object_remove: (id: number) => void;\n _wl_object_markedDestroyed: (id: number) => boolean;\n _wl_object_parent: (id: number) => number;\n _wl_object_get_children_count: (id: number) => number;\n _wl_object_get_children: (id: number, outPtr: number, count: number) => number;\n _wl_object_set_parent: (id: number, parentId: number) => void;\n _wl_object_clone: (id: number, parentId: number) => number;\n _wl_object_reset_scaling: (id: number) => void;\n _wl_object_reset_translation_rotation: (id: number) => void;\n _wl_object_reset_rotation: (id: number) => void;\n _wl_object_reset_translation: (id: number) => void;\n _wl_object_translate: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_obj: (id: number, x: number, y: number, z: number) => void;\n _wl_object_translate_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_rotate_axis_angle: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_axis_angle_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n deg: number\n ) => void;\n _wl_object_rotate_axis_angle_rad_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n rad: number\n ) => void;\n _wl_object_rotate_quat: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_rotate_quat_obj: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_scale: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_local: (id: number) => number;\n _wl_object_get_translation_local: (id: number, outPtr: number) => void;\n _wl_object_set_translation_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_get_translation_world: (id: number, outPtr: number) => void;\n _wl_object_set_translation_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_trans_world: (id: number) => number;\n _wl_object_trans_world_to_local: (id: number) => number;\n _wl_object_scaling_local: (id: number) => number;\n _wl_object_scaling_world: (id: number) => number;\n _wl_object_set_scaling_local: (id: number, x: number, y: number, z: number) => void;\n _wl_object_set_scaling_world: (id: number, x: number, y: number, z: number) => void;\n _wl_object_scaling_world_to_local: (id: number) => number;\n _wl_object_set_rotation_local: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_set_rotation_world: (\n id: number,\n x: number,\n y: number,\n z: number,\n w: number\n ) => void;\n _wl_object_transformVectorWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointLocal: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformVectorInverseLocal: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseWorld: (id: number, ptr: number) => number;\n _wl_object_transformPointInverseLocal: (id: number, ptr: number) => number;\n _wl_object_toWorldSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_toObjectSpaceTransform: (id: number, ptr: number) => number;\n _wl_object_lookAt: (\n id: number,\n x: number,\n y: number,\n z: number,\n upX: number,\n upY: number,\n upZ: number\n ) => void;\n _wl_object_set_dirty: (id: number) => void;\n _wl_get_js_component_index: (id: number, outPtr: number, count: number) => number;\n _wl_get_js_component_index_for_id: (id: number) => number;\n _wl_get_component_id: (id: number, managerId: number, index: number) => number;\n _wl_object_get_components: (id: number, outPtr: number, count: number) => number;\n _wl_object_get_component_types: (id: number, outPtr: number, count: number) => void;\n _wl_object_add_js_component: (id: number, typeId: number) => number;\n _wl_object_add_component: (id: number, typeId: number) => number;\n _wl_object_is_changed: (id: number) => number;\n _wl_object_findByName: (\n obj: number,\n name: number,\n indexPtr: number,\n childPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_object_findByNameRecursive: (\n obj: number,\n name: number,\n indexPtr: number,\n outPtr: number,\n count: number\n ) => number;\n _wl_component_manager_name: (scene: number, id: number) => number;\n _wl_skin_get_joint_count: (id: number) => number;\n _wl_skin_joint_ids: (id: number) => number;\n _wl_skin_inverse_bind_transforms: (id: number) => number;\n _wl_skin_inverse_bind_scalings: (id: number) => number;\n _wl_morph_targets_get_target_count: (id: number) => number;\n _wl_morph_targets_get_target_name: (id: number, target: number) => number;\n _wl_morph_targets_get_target_index: (id: number, namePtr: number) => number;\n _wl_morph_target_weights_get_weight: (id: number, target: number) => number;\n _wl_morph_target_weights_set_weight: (\n id: number,\n target: number,\n weight: number\n ) => void;\n _wl_math_cubicHermite: (\n a: number,\n b: number,\n c: number,\n d: number,\n f: number,\n e: number,\n isQuat: boolean\n ) => void;\n _wl_i18n_setLanguage: (ptr: number) => void;\n _wl_i18n_currentLanguage: () => number;\n _wl_i18n_currentLanguageIndex: () => number;\n _wl_i18n_translate: (ptr: number) => number;\n _wl_i18n_languageCount: () => number;\n _wl_i18n_languageIndex: (ptr: number) => number;\n _wl_i18n_languageCode: (index: number) => number;\n _wl_i18n_languageName: (index: number) => number;\n _wl_i18n_languageFile: (index: number) => number;\n}\n\n/*\n * Api <> Runtime compatibility.\n *\n * Some features exposed in the API are only available from a specific\n * runtime version.\n *\n * Every added feature must throw by default. If the runtime loaded\n * has the specific feature, the method will be overwritten by Emscripten\n * upon loading.\n */\n\n/**\n * Throwing function used for features added in a patch version.\n *\n * #### Usage\n *\n * ```ts\n * const requireRuntime1_1_1 = throwInvalidRuntime('1.1.1');\n * WASM.prototype._wl_new_function = requireRuntime1_1_1;\n * ```\n *\n * @param version The version in which the feature was added.\n * @returns A function that will throw when called.\n */\nfunction throwInvalidRuntime(version: string) {\n return function () {\n throw new Error(\n `Feature added in version ${version}.` +\n `\\n\\t\u2192 Please use a Wonderland Engine editor version >= ${version}`\n );\n };\n}\n", "import {threads} from 'wasm-feature-detect';\nimport {WonderlandEngine} from './engine.js';\nimport {XROfferSessionOptions} from './webxr.js';\nimport {LogLevel} from './utils/logger.js';\nimport {WASM} from './wasm.js';\n\nimport {getBaseUrl} from './utils/fetch.js';\n\nexport * from './utils/index.js';\nexport * from './decorators.js';\nexport {NativeComponents} from './component.js';\nexport * from './wonderland.js';\nexport * from './engine.js';\nexport * from './webxr.js';\nexport * from './property.js';\nexport * from './prefab.js';\nexport * from './scene.js';\nexport * from './scene-gltf.js';\nexport * from './resources/resource.js';\nexport * from './resources/material-manager.js';\nexport * from './resources/mesh-manager.js';\nexport {TextureManager} from './resources/texture-manager.js';\nexport * from './types.js';\nexport * from './version.js';\nexport * from './wasm.js';\n\n/** Relative default path for the loading screen. */\nconst LOADING_SCREEN_PATH = 'WonderlandRuntime-LoadingScreen.bin';\n\nfunction loadScript(scriptURL: string): Promise {\n return new Promise((resolve, reject) => {\n const s = document.createElement('script');\n const node = document.body.appendChild(s);\n s.onload = () => {\n document.body.removeChild(node);\n resolve();\n };\n s.onerror = (e) => {\n document.body.removeChild(node);\n reject(e);\n };\n s.src = scriptURL;\n });\n}\n\n/**\n * Checks for support of WebAssembly features.\n *\n * @returns An object containing booleans for supported features.\n */\nasync function detectFeatures(): Promise<{\n threadsSupported: boolean;\n}> {\n let threadsSupported = await threads();\n if (threadsSupported) {\n if (self.crossOriginIsolated) {\n console.log('WASM Threads is supported');\n } else {\n console.warn(\n 'WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.'\n );\n }\n } else {\n console.warn('WASM Threads is not supported');\n }\n\n threadsSupported = threadsSupported && self.crossOriginIsolated;\n return {\n threadsSupported,\n };\n}\n\n/**\n * Options to forward to {@link loadRuntime}\n */\nexport interface LoadRuntimeOptions {\n /**\n * @deprecated Ignored, SIMD in the runtime is always enabled as it's supported on\n * all modern browsers.\n */\n simd: boolean;\n /**\n * If `true`, forces the runtime to load the threads-compatible version.\n * If `undefined`, performs browser feature detection to check whether threads are supported or not.\n */\n threads: boolean;\n /**\n * If `true`, forces the runtime to load the webgpu-compatible version.\n */\n webgpu: boolean;\n /**\n * If `true`, forces the runtime to load a physx-compatible version.\n *\n * **Note**: If your scene uses physx, you **must** enable this option.\n */\n physx: boolean;\n /**\n * If `true`, forces the runtime to load a loader-compatible version.\n *\n * This option allows to load gltf data at runtime.\n */\n loader: boolean;\n\n /**\n * Whether to instantiate the runtime with a renderer.\n *\n * Disabling this is mostly meant for testing purposes (increased speed).\n *\n * @hidden\n */\n renderer: boolean;\n\n /**\n * Path to the loading screen. If `undefined`, defaults to 'WonderlandRuntime-LoadingScreen.bin'.\n * Beware that these are special .bin files signed by Wonderland. Customizing\n * requires an enterprise license, please reach out for more information.\n */\n loadingScreen: string;\n\n /**\n * Default framebuffer scale factor. This can later be changed using\n * {@link WonderlandEngine.xrFramebufferScaleFactor}\n */\n xrFramebufferScaleFactor: number;\n\n /**\n * Whether to advertise AR/VR session support to the browser.\n *\n * Adds an interactive UI element to the browser interface to start an XR\n * session. Browser support is optional, so it's advised to still allow\n * requesting a session with a UI element on the website itself.\n *\n * If `undefined`, no XR session is automatically offered to the browser.\n *\n * @since 1.1.5\n */\n xrOfferSession: XROfferSessionOptions;\n\n /**\n * Canvas id or element. If this is `undefined`, looks for a canvas with id 'canvas'.\n */\n canvas: string;\n\n /**\n * Logging level(s) to enable.\n *\n * By default, all levels are enabled.\n */\n logs: LogLevel[];\n}\n\n/**\n * Load the runtime using the WASM and JS files.\n *\n * @param runtime The runtime base string, e.g,: `WonderlandRuntime-loader-physx`.\n * @param options Options to modify the loading behaviour.\n *\n * @returns A promise that resolves when the engine is ready to be used.\n */\nexport async function loadRuntime(\n runtime: string,\n options: Partial = {}\n): Promise {\n const baseURL = getBaseUrl(runtime);\n\n const {threadsSupported} = await detectFeatures();\n const {\n threads = threadsSupported,\n webgpu = false,\n physx = false,\n loader = false,\n renderer = true,\n xrFramebufferScaleFactor = 1.0,\n xrOfferSession = null,\n loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH,\n canvas = 'canvas',\n logs = [LogLevel.Info, LogLevel.Warn, LogLevel.Error],\n } = options;\n\n const variant = [];\n if (loader) variant.push('loader');\n if (physx) variant.push('physx');\n if (threads) variant.push('threads');\n if (webgpu) variant.push('webgpu');\n\n const variantStr = variant.join('-');\n\n let filename = runtime;\n if (variantStr) filename = `${filename}-${variantStr}`;\n\n const download = function (\n filename: string,\n errorMessage: string\n ): Promise {\n return fetch(filename)\n .then((r) => {\n if (!r.ok) return Promise.reject(errorMessage);\n return r.arrayBuffer();\n })\n .catch((_) => Promise.reject(errorMessage));\n };\n\n const [wasmData, loadingScreenData] = await Promise.all([\n download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`),\n download(loadingScreen, 'Failed to fetch loading screen file'),\n ]);\n\n const canvasElement = document.getElementById(canvas) as HTMLCanvasElement;\n if (!canvasElement) {\n throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas}'`);\n }\n if (!(canvasElement instanceof HTMLCanvasElement)) {\n throw new Error(`loadRuntime(): HTML element '${canvas}' must be a canvas`);\n }\n\n const wasm = new WASM(threads);\n (wasm.wasm as ArrayBuffer) = wasmData;\n (wasm.canvas as HTMLCanvasElement) = canvasElement;\n wasm._log.levels.enable(...logs);\n\n if (!window._WL) {\n window._WL = {runtimes: {}};\n }\n const runtimes = window._WL.runtimes;\n\n /* Global identifier of this runtime in `window`. */\n const runtimeGlobalId = variantStr ? variantStr : 'default';\n /* Only load the runtime if not previously loaded in the page */\n if (!runtimes[runtimeGlobalId]) {\n await loadScript(`${filename}.js`);\n runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime!;\n window.instantiateWonderlandRuntime = undefined;\n }\n await runtimes[runtimeGlobalId](wasm);\n\n if (webgpu) {\n const WebGPU = (wasm as any).WebGPU;\n const adapter = await (navigator as any).gpu.requestAdapter();\n const adapterId = WebGPU.mgrAdapter.create(adapter);\n const desc = {\n requiredFeatures: ['texture-compression-bc', 'depth32float-stencil8'],\n };\n const device = await adapter.requestDevice(desc);\n const deviceId = WebGPU.mgrDevice.create(adapter);\n (wasm.preinitializedWebGPUDevice as any) = device;\n\n const context = canvasElement.getContext('webgpu')! as any;\n\n context.configure({\n device: device,\n format: (navigator as any).gpu.getPreferredCanvasFormat(),\n alphaMode: 'premultiplied',\n });\n }\n\n const engine = new WonderlandEngine(wasm, loadingScreenData, renderer);\n\n await engine.webxr.init(xrFramebufferScaleFactor, xrOfferSession);\n\n engine.autoResizeCanvas = true;\n engine.start();\n\n return engine;\n}\n", "import { Component, Type } from '@wonderlandengine/api';\n/**\n * 8thwall camera component.\n *\n * Sets up the 8thwall pipeline and retrieves tracking events to place an\n * object at the location of the tracked AR camera / mobile device.\n *\n * Use this for SLAM tracking based on 8thwall.\n *\n * Make sure to enable 8thwall in \"Project Settings\" > \"AR\". See also the\n * [AR Getting Started Guide](/getting-started/quick-start-ar)\n *\n *\n * Currently only supports world-tracking (SLAM) using BACK camera.\n *\n * - remove any occurrences of the old 8thwall-camera component in the editor\n * - Add this component to NonVrCamera\n *\n * IMPORTANT!\n * - until it get's fixed, select 'customIndexHtml' in the project settings\n * - open a generated index.html and crossorigin=\"anonymous\" attribute to the + +

  • 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/deploy/sfx/sheep-short.mp3 b/deploy/sfx/sheep-short.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5b7483be7c46457ef42fe258f96dda0bb5e68b5a GIT binary patch literal 448139 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

  • sY|0Ww;@4oS!ti(j|Tvd=AbuKM_r7IgY=b-PWd6YZydaRaow7iB(M zl9OKe=!0#M*_)4${A@HL!n}g_%11d`gVLnGgk6<|7GAtkn0{X$RWxhLZa#WAzYWSF zL$Skh@}zDozMLs601{6)#(-H>&uEmuR!4#yXI1W7}Sb2RhyTqgNl>rHY z|INgS<+{(>)-=K<=qPT$KPsFr-}jn8YE2qpaFpSd;{i9#qz>b$oqs`97P6I((;?FC zW3Kbw`a}(uDz(%`?s_+1(7ozkA`_E5KPR)o|NK8LIJUHb3kUbd`>uMy;%j}CK>Y%c zUtu@BkjtiF$v!eg{gzBz8GRW3q^jIPtp%o;=F3?3X;I-no-eXF<_cdhxlzF*#n~~e z0gBgeT^6v8(#XqKZOW-ckpFSX#W0yez|93ZEjdmc<&_W@#h<3W=tiClYE9zTocBu( zWn_qoMUhL4byq$<2rutTM#&OeB4(!2){6FbOb)}QefKXc?c)tK*b@p>i+g?>3L=qdLny;VmBLI(h?Fy^Bo;>Rdl!o4?RxbOu3 zv+1qx&0$+@tm0))w>5;g@d&sp3!iuQPfKs7Jg2X<^7#(tnl2^w_nPE{cyFG?R+j&F z-So)$RE?we>8id=$C!q%8C!_6#M`(*GE=!x%mu+z8xqT5{|Bt!ruo45$I&qOIMpC2 zP88-WsDI=QkfZpEM@UR@vC7n29@mPMr7q!rs+#y^IC|!USd_Z_O@K!?N6)CmhFFJ$GSULZ)RUq3UL+FBK6a1$)GiO>_dtmnu;ZtWy zqs4A>rm(FKX9clBc@!I)pM_o$NHx@Ck#e~@ugiWf3B|%2bejC%dNr43gKmXQ>VX@lyVos9I#YqmzEf>hWdy9~hDU$6Z^VlGD2Il$&N(21`b8e=!7eX>T zsvbXD@Y2klO{;SRQeV(=jl4yXGu?1FE|+gMAQ)cbPWc5;0w$n4(Hb`wIsTjIjyKLodxo3{uHR+;lk*r|Z6~hi zx`J*<(F{R7ICX7fEJhE4sqhdoXGJT<+*L^Z=U-HOaWGO;DpRY zyIig*lLpte-`8=vB=H90$xRJx!`UkL@p&yb$bG!5G?(P$hk=t(pR#(DUgao^aC(bL zeG=G{SLBku%_`r2$zO43@7~p!A%Lw%)iZ_Qs2OV|vvU(7br*r?^-gz{xmm=(LcQD$ z<0mTU9q%ygV1MvHzdjCTq+tc}hu!Ivs5#eB5+Z=v)cAf8wNaWVrNPy>R*p(2BBJ#; zOlTOI@eqcleq8+S%QJns7gT!)ImQ*G;0+jf|Ae%9edLBdi=g_1Rab_*C@SAow^Ws# zGnGZo+&br$OM6L@fb+ZJrW&uec~9~nOkEAdQkkx;@b^MW;$<79Fw^<@t3eV%f#CD` zm-6uR{J8`HPJ!$+xeKy06dVZEyO`77v$oJzia7 zyXd4KK%^6Z+`nDX9FX{3d?11u^LCqVdrsGuuDeu{ZHKKFF}8+PX4>2>t!!&i9{FW< zEjhTDPjW1A%rK`fHqF}n!w~XxhmL&fDcGlZ{Sm{{$y5E68^hbQ+&IOLVverpBw$a! z8c~+Tl@vYqzy3ooE7q)Q!$cWd^eEF`9)h%yCe`ZT0lfqLi+T<*T4=alK*BR|m#TAi z=b8%#^VFji{xk$P?ruJdzjtA8_onOf#xc56xmv)nXKNKtiuiH?Sn}eR%YuDpSYNVD zv40HFftJL{(qsyYo5cd>$Bw&QJBzgyS~QLtfAI@BQCy|>akRsOf-RK}zS|g8 zrQkZLbUQ0;`_y_Fi518MKi`XEBTuAGJ}eSad?mgV6$(tCk0t!>a0+qwB_Rr2AHEh9 zpsCdY<6$xyZ`X61P90`IHTUj)-B%5@fA$2ps)V8vhi#S zZO!(MAVyV#N*~VmPlolsYtv&y`L*Uax9)ZPWoaNY0`Q1}z`EVxGl#@%1 z1$v89EJ?~c_E)MtOM)Y16tXPP(GLJ>W1VWU${f?;1A;6}AEJM4BcR>((%*AfuKi-}-)g>w5)yB@R*TKCHp6qYGWIX%#u=<($Kc8J6vGv(S zcFb2R+YX3}m3DVe9~{91M{xzjCL&5h*1P_f|JQ`g4({*RPEfxf5n>c_L`|NgM>mYh zOB*FHQ5W%f;%fJM)bjIxZz!=UBk!(=7)gfT4slg?i7BQJB|7Ef%B$4;W@99;HJ59{ zz&RDyD_*^wNJ+vh{S)zMQL5RW`q)nB)JLbF#ztIfsIfN1*jyp0P)@ajkt~RUTSoOj zqKm^bYpqJXVk;gj$bX)&Dy)0*aq@DSH^A+#{zIRB+brr;QbI4&0L~E=YgK@ZVI#bV zfW{p1TfqDe?!Wh-N%frM?9vO&5Tj%hwPY~=7(pGDM(df@PGy?(P6D6FDb=v5KMtQx zS^D!Xhif-wMpdfvUG>eC8)MTLk83q1CuTT=l36MP zAAtZlnyDi(`wRc|li7#l0gW_6)^wuUHuiF7zJS_0*!eI?OZrf0l00+e(K)@5FVJF= zpQ5NmF4Tc$f`T4bGs|m>pPD$lzkv7OZ$cv`EAk|+MNof79%h6&P#&!^j~6E96uYf6w}d}=nt6ut;MLVLa6AC` zkIwyh+Rr-RR#lKnFu^Gem(Ral0pDM;&D5kGi1fif%NYJycV3XyaCXmy>MM~xT+q;n zIuiOSXVUg`p}N=SV@d{l^+h&A-O3*$H4DRzKa>9=8)2A%clCrQ!yM?PA{YTC-TS1} z!}(9-?H~s4P_ztblB@F({L&g1V%0<*tpo%2-(5O)VgSr;vALMaO&gQO*{jLjH_4O_ zDH3-Z0<1VH>PM7An@+JsjNsL)cQ=P-iYo0JFYNw>Sb;gT9eYCZ@saMB)K&jhUGMtj zNwDFfhA!>p-ZIH}cFr!=FZZewvQhu7vDZmP!poSIi5ae5I%$1pc8!j*$-PxJ zn=4`YtRD^3Rw9!%0S-?kB!SPVP9^C((5In4(xr&H*d655r zI--PD5+~aM#bj5o8t*Dds;_{NGb#)TcnB0pXSV|7m8<|v`~2(74q&u zHGOG24vjs2uAkywoXUZIw@D-(_yGV$*A?kxNl8p; znzF0M$>H|fA(vjvd+=R-`3~bW&~Y<@%{jWp>$tn;{eQgQoB3;%DFWiV!eu8;TJikT z(Rp*??0dWEo#;&nJ{daZL<_O=Fu+DPHI)m>ZsJ@o#>Msx=gVr4We7i*^`J+!e+PWOFn~IUjny+no7^Pg6e9;#xK~g=!{1Tfd%Rj=*AiA&MqEnN z-=<(kf>K89j^ISfrs!#^kuT6*?-iF$Ic;~?6fKRpO1gY?PV+SX#r_%m>1 zmGyLYU+K5D6lRX)rSxuOiSfZO6RS z-;2I5FkJZ%ooY4j}x@C6ze4{9j&=+f! zy+60h2#GY#acT;TRTc`aqDICSln7w+eS(hNN;ngD;D1oRfQxIWhXWUkEs7(8_ZK4} z6QzUt!7$2R>}vx0QbpD)+bQHxRPh_fGZ7Yxp2JAPrlygIU;Jb1>B9+cZ-nX#Fm8y( zzx>R|T}k=)ME4WeK|G=>vX^utl89v~U2M$wEzf2i?KSdq9p9WaTg8Dmv33O)Zoi-eK&&Z@YsFXvR zH_9=NV${eSSLt{8Ob=uJ?K2wVO>@douM(Zz$nNLoe*GA6tKF}bIYr>+uhPzLC!Hd z%x5)-f7O?Lr{w*kn`D~I*Sm2_!bMHTv5%rt$R#(xsW7-C-DbJy_*v%5hw%>&ddmsg z558aHvmf|_^$$GkK>rBTU$$QwlV`h8i)CeICS4)kBNl9DFWO8ws^zfD$a3MPE=y)N zB(Si&-L(h`oSXFL6EO+nAEz_LQvvV?+P}@xeS8?A446}sgDl1Dl6fdt0S_W~YD3zo zeC{;Gv;-r*GRcrqTij6-|ORTy7Mbk+km0bnxTWDx7NnlKDimkO4u%LYKGI>zGG;rupu zfB(RDay=R61M07R3OfliGB*SDN4$ZPz(VJb1i-{wdij-zf;88Z+DLkehOK*t=Jh-o zqPX&B8H|n$lfhVvT*T8MFHAY-R zcR$p9yHsHVLlA~;G%0C}ZB*(z-_(PaCEWJKLU>?bRW7S5c+3Xz6?Mm%?=Dz-8R3t_ z1A&V#zG+-vKS9;~17>7t{A2rbYK`p@zI0>J1OGDt+b@`Bd=pLNd1x9K0u(^ZYN{YX z{a<@v382w|?ns`fVjKy6q-@Y=#sc~yFhv1tR?05FTT0D8*-Xhr$A8T#LJdSjg zN#J2oXqK-&haXX0^H$Vu$#6=~d=PZ?C+;n;JI;c%TjsnAXg_^>gdcoA;_v3dYfw>O^0;>7WLdp#y%l|loQeWgW0rfON-g!vt&>ND zmOWokG}hw#pXw6n`@;$?`xb1xDlNzp3pdL0Bnn$^{Oh9ABg;SBTC$O&6sANl{=5B` z=ooB9NNZ&wLVPmW(_<2*i7Ixs3Vt6H9E%cpfE1)<)MBcWgg-?rm)p6L-1P3-SGUxU zA$^ZC?Rcb2>4P$ecl`~vEk55CzA~P_`7UbomzPv|mt09Cz?To_XF&gVqYw1U#CaAq zNMQYdBHv?a=j)HUVBj2?Q@#7Hr#3DM-i^;b{XFdX{-2HAiSLYoGQ#8=iF4v~eI2eD_SvW~ z>j@8EUo)?7kG@1-!AYg|3bl!oJ98^_vu%P$xmz-Cb+G;1yQpVZYei|i!l^CYbR|RX z{eRyW$E@C`|GDtN&!|4s+{7#8`hN%hhu;qB;63pFBBs-D(bXM5Hrs>xWnBrzQ8+8` z{uT6qODeK8?v~ZXc6CDZm!r?VNqMmGYO;>O+%z19OQ^*5?|cH2aXKIE{<@rjI;eQ{ z!bm!2b@ndRFn0c(*dwD_Fen)1srgB1q^GTWQYCAOLnQZYYK)1(Wg|1~83vrQCFaQW zy^-dpYbRb$z9*vtFox1090EJy3*!(Hyt`x28FW^vGn2EZnstBNOJ)w$buK92B^n%QsFlaXA{>5Acuhx@ za4L`Z*Ais?;Ye9~a?20Ulp$6O>IF0p^AifVcv>(*};sg1;{Nr4m@gklw5F?_y zRq0bd5)~pG86N`}2vBeZhI?F(3jDZZmFG9UI?g?|sJ|GA;3wMtf*dgoo#DB!{O`mF zPD=5o0hzP#Ao&CAd!w&l;ziYBrmt=)4DB=?1yh~|C!)6}Kam+Xp%z?hC`6>ngvW)Z zW$XJ_m;E@(-!lf28@;)_Tj>7o*8Y?I%QM2Kxk$njiZzhV*!PUnGotub#<#x&S!nMo ze0ByWgC= ze)XtwANF02q-nnif$6MUe`2PUhto$`Eypo3E^8d>}tyr^Y<^%nL zN-B7|A$w0)m6KfS&4FS%2>{6H;-4Jc{!TfJ!VBs*v|o56vB0{64NDD9Ql*X>^yK;A z+W+Ft`LCs#{hBfsX(-@UOxoY%JIW||_|uBPxM{PRJ-?CiC<%yQ>0BjGwOJBwm+#`O z#G*a3ON0&4rTb`8McF?~WH{|^g7xfTAlMC!XZupJt71!GDjUw#b&Y!#9(INCWGLjy zv)hKF#NaQ%^BXgECAxr6%;Eetcz>D1+N{SZjd0S4G?2cI%=EU1&-JX=0+u?10AQPT zO--4CrSrQ|I31(&+|j97U;6tqdZ~~ByzftYDT2IBJu20_SnysG<4=EF+|1X1h0jAj zKiRplW3~CIeZctgutdhQ7`D&I?c%L5i8pNg zTFQqF<(fF|T3bHSX3pPV9n6%j5EX^ooef3@gYmWXR~e)?owy_cpaEYI`C?ZIj|2as zfbCzrpnel>i@V5}h9d(={4u>a^Z?!%SR#YxR}|A=;z=%+*)r=mwpOBov|UBR-Iu$F z$^v=*<><}m*#6_uciZ85U;NI@{8(162aL_EuCzUiI8jIZ8@kY162|bHj5OmqX&8cm zk=437I|Uv{NT@*beR&#g69Ruk&!N6bI>GTIU*>5|>pGxGv1QjXI ze82P~ojqWe@%rN9c7hId0m_L z_{$TdE_Lcg=fyIeR_!TH=xpnM+V@J&m~&oH{*Nq+2uLLk9xcs>luD{2KVAx zKv&X=wZ42s4gW{{D6{5{!zkBCgF(g~!XzrZ4o!QTXIt_3jh0#q>R~$L_xy>*9b3e= zL`DEo$SQpCF#dts-k!zy1FC)VJxs&x3EgvBjhDPzVH;n(itWBHA;)M;=#0n$d*t zOiy5%l9*4@k(X|X3y0JFMb1U?ifXJ1>IszD2UVv}s5AmCS((n`_{wWOO!t2Jd|~|K zV=%JRiq+EFS3+Mqxus*_|JVP4Zuf8=+Rse}>o*F3>~&E%(7!M_h<}j({2*j=nfFy@ zv$f?-X;es-e$0{J*lJd>(wA{p9=PhVVu|sMey^YXBwZrLtR%j>nE1Daf%&snSaIs% z+5L-T7!*!&NLzI;LTV_7hrnMhCKo@{V}r>TsMw3Y6V~}L3QfdSiPJA$nvdg@F7{%# z$M>~}SM>Ge<+u-PIg`y`6@4ca)fqft8~b;!Fm^v97O#%#m^xkcK}66s2?h=%&CT(3uQOWQAWg)l?R1Q5A2${`KB;{DZt0b7YJ;Zmc`Z zTCw4(7*C3dqWtzP^&9(ah2)-%>}J2(C<0jQqvXY?li?^?aQ% z@XvU^I?*rUBqQGTsEycV%7l9c?DR^m@c+KwHNN2*G;Zra|I1ebKsp;Kj*#5x7W9R# z*aSetXzBtl-y^4pi^>}cVVw0R9tk#mG@ar!f{X$eR^gt zlsR-7z9xB(!PqCg-jcokaF1yTK(SOSS{FQBmg%~7LjnH5cIbEcM8AyhgC2=@=ZvXo zM7+kj_^=;#!q-;jrd8q#S*@G}r7fS)UK9$4e{y;mM$oQ!`8fl5;@cp@3F@KmfZ~4Y z2r3yLe!ukX0X9%Sj#LDmzj%ThfW(0M5v87Fb1?rX0RTavwql2udf;9vdAQwH+J2Wrdzgxoa09>wPl{@Ijn3(B*B`aFU;Tzm5Ftm6Ip=&h zU$(iwD*TYR&l;_I=ie3VbVOm%!@qZ01UCOYX7WB~rCVy3eP zJe8IjTlWi6oO9Q+ew}ZZP3cC){)Zn+jUVEwcEkSJgVn(ax7Y1{Z(162r>A|IY$e_OV?Z9gm!VDj3N1bPk#ssH5#S4KJAKou>b1{T!L);;1%pP=gyZe*X_SP zE*!eS*iR!u`6@AsQ8KQo0k+avf{NLRp3z0&za5lnXBvNX7-ax?!9Asm&pzBVde)*@ zv~ntl+}(NE%Aois@zvX$n-28u42#T)R`1Z~jIe*}KR-<&@TNc%1TcbeXT}`HKV*9r zV-C)5cXE-9so;|bQWc!PB6tIqKoJ1?KZeKyNtccO&E`;C?~;}qs`5|C=z4}oYL_Z3 z@_ULBuT_r0z0(_@=dQ{L9XTzFLYpQ_8suNU&EWpla-I>kZl={^o9ZjU`m5DWL}SK< zL%`5D&+V&z`c0>oP))2?b(^1jQf2s(UmQxZ>ow^vW=6h{TofGL zY+Cd>lU+s1BgD;DEU~s(D5lg5gCBNVsQ=~9_dH<#pVSHRlW90z zFn_9_0QJ|3Kz=Ma4FxzXmS#$GPH1VQO^dbHfS+&NQJ(gi84slo;}%_8^#u-yGR>{# zoOVr)#_F0p0gSoBMT?V?-hV$`e|RCy{rUY=&s{U=J(7@a)YVO)@idu8ygns~B51x% zk2#~-FyJGmD1w}{c)(`>1?RWH`kxDLOy$Re=NHJ&2kVEEkz(W!5J#rJMKsr@ zZ#}L~@D2S`lKyKeQzuUG4oUZSX?>)un}8c@Wy%g$;REkWg7XH78LENnoJ&_{q`3%R@lH5Ni5bW=v8C_JjS0 zA+F&X8B!+?XuqU582@@^aRg5iSU=ER0U#lFAe?CVMov|pY-|Nd^SsNoqVR2)dz>yM zq5|9sulKxQF~@3`{Ur>jgQ(*lT6AXkSmW= zo;|#zdSioO`QZBgsHyldLfQ^7a#@3JvbgZS_?h6ecHO`QVCcqy`~a9gPk{QlJ*Wf! zOP~QU`BF0$GyMkmy;B-OR2G>R!N&uw6IcZ>EHV#-$4`3<|F*aGZ*9Dl@c(G~?m(*l z@Bi23y4Rl93|(AYvukB!Tzl^=WM_v+(zw^&dt9RIt*(rubuPkG-z7hJc#?U1#epP1Nx#W=7~+N;(>GcM(e;Gx6r# zasAP)CH;?I<-It6MA$;H!p3zXl%AEWXY)s}{vvXY#De=*tSb&~T-^XQmo2zI;Avn8 zet*4i034xzp|rSaOH-kISjsMJ#DUt=?2e2_G|zVv?RV?e4Vd&As?Xky??^fTR`?QiQQ|nM;`PBdQm*cLN5fPSSkGBMn z@$RP71^i41=FypGI{gUR0@YrpL;6{9JOauXS8}eacTYT3Vv8{q=R^`??->?Ce6Z#a z8pVWCCB2s0aoxF_`TEw@$(zcP20C^-ZUbQt9cf>6H?-hc`~mfI|8k$c-!WE@f13e( zzmfqU|9~gP3h$2fgaVbcRVMtB0^AoEBDic2j+EE??!ygl*(}wJXl7bZxFpgYHHCL! zBjtjae%AZ&Bbv>CIJ0qEwf0xPK72Ue8d>}6-nQ9@WQL-kE=0zI&pRoQPrcgUQ;j*N z3-sL6|2nNK^+&6}rTM=uRpd(QmEb@5D9f*8H$%QVPS+H4OGz>;qy;MS^nJj|7f$j? zX;(mX5~K*nMNQ*@@KqK(d%yUDZd#KOCIcJ-aIoM8=XY+lm{F8BU;uH)f%tFo(kkNy zjPiIy*jc1+ePsqhTeyfExr~zIHQIHMI+I)vwRiK!Che~loz!e&vSoQ~a||^&{v6#R zw;rFnyE%Tujl{hiFyb8(02y#OmCE`;pB! zR#HY5fxPL))eGL=$vM`@p!O~C?m$%>pjzDrgDFbMfI{8XCX18^zpbkN05AL zJ7!Vi$E$_wCloPa#98u#+Jnun%*3qPO4rE=ZYdSA?aQ8Jn`M`XFuh4gi>ek^ z_IMUk&yNuYlUEQP>I%z(X-8t9s&bAP$gKKNy}D;Xx7OO9HQnT~&yIhPqJZYUffDXr z#8a95(VD+6{r)>yCQ~-h5-6!r*-U1uXZjIf{Osm5k$~}FSpYD8g8s8;Z(T(&#h8Hk zgI64oIX!zQtiq|S6;pQSp^KzM`<~uRfSAbdfjf0tK}yAS7z(<_QNoph_qjV7g+{BG zIAMbw?@cdkpDb54lF3Ib@;Szy*%Vk4R%RsBybNaXi1@@~m*a)98Fgd+*DE<}2A6pY z;vH_nxEW|2(8%Zuny7n2FNUqM4RqzJ-ulTyX_4mN?mhi_JofT@YY_GNN%b_Vp^s0z zqi_&O;LLv@2hB8dH=8gfVEyjK2jZ8%aw!e$zZrq}vjM=XeWQW0yGL8rOmcklz7EbU z+nC^vmTbhaFL*$%N9eMA{S$xL``pBvIp^M(^03IRnb&sY<8M#xme-|s=dGm&A&u!B z_Qh-QHcc|dp1!eh??gl=b$rYIct0a#bXokGe3XKO4Pf-Gh)r7Oxu866M9mE3#`=<) za%()10`jxoMQ z17JthvQ1Um*i-)bz9az7FI9yc;#4*9^E&#h%))Hgv@lq_^fCJ0vDK~P#`-j_3S5~g z1$T+$YZ@V~=5})%ES=ir=zNctd}8_mg}-in_yP)xTE%H93->dfV<~sk43j8x7+3QQ z1I}wTw9hwHUp391&hYX&=4&t%)>v-pW|Y*Mwf}Tu{3TtU23%5HA=%!1@8_NHXbLsM zqZ8}94FZl*Pu}nt0&PvIXZ8o(*^m%@Sk|F|1m0MTe19ayB- z=%@n~Ez7v{#0Fqt5xumwMQUYfPweDizf^zci?(DnwJDT8?7pEaC13^EE8969`PCjz z{|vfXc%qdhVqpWtD~^u8*EJi(D)t}}_ zW4B+@rfd^pzrL^1wt8rgpTC~{LkNv`6~eLPmF4-rvMV+@pVY}weUqd%`Sn(_U%jVoY%t^s*lCX0v*edt+9JdDHL(nrQQxi{KR9uM>;o6} zg*+Q69Ml@l@Pqjqi-j>w6qZS#E(=3}qSlE7`A@E5j9?zXepOb#y2=KZ!B$kBzKM`^ zdGhsYS|xa~LNS8NV*4h3s|}}~6}w=nH7%@I`A6e#uv$zkyKDN^y8#G?6Cu_>O~OlX zDhR`0W7e;P*OuWNm(yQtf}(u%!t|Jcx_IFa%7g8corA%7*dfp3-oZ0{WI_l-0AgZaZagS8*Q4WKWt zD^sNursh?!j(b5O8Yfg>_qmcN%xN=+51ZCPICZbF%=5DFfyU>*MwhcSayfc))Q z)&iS@*GqC>n@p?u2>OgTwPRm{oPB^@A>vbMGiBxF5ss|2 zGTejZ@00W`zOqBs1D?;K!&8%oHK9AmKN zm%=stpc+A&C}4@Id6}~BX5J6}vo42k<=^t`(^>qmGATFJ{g$3yl$PoK^)J{vPLj0 zgYw$9fvw^82?UNl55lo$GQpNpmvgE3h@ZL8(C0}GtvfcUmObSD+*$?ZcSl?@Vxy*- zoydP2o))8u|1&O06{XKQX;7!N$bB(S$Hgk=4G_3-Gwu9<-l`!BL^F05+0R8o=!vZ| zrd-=WjPWs!<=wAhL?cwbS9M(FYLi7j_~+pIM)Cy*N7yHZix0(AT7M#-40?sAt7Nj3 z*M~}Ep%g0+a<)GJ<`1K^^V?#~fh_KIL{$;Aew(6glMKqj91ik_q?J7}qQhF&QC-tw zl#gL}Wl^!V8eVl>FedJbjBlEHu&_fJijl`R^JH8JD&Kf8dSI*;YLP3JDp!zrTizi{ zM)A^5Ttp5)^GukcQ6cIa=Fq$Rzb$b?6~e9Z+LJaNq$Z7!9@7iV2Q$=yR!l`iS)b)+ zx<(n9n|r~z5wc6Pi^csRzT7S5B?Y_gG3<|ZOFn~q7!7IPz#qVy0Xe(B1LJ==o#Xa8 z8$F`ClLX?26JLAQK&>%Gi5{eVLiwT$-MDC49M+i?nv#zBo*M5Kj242g>)WNiV^GiC zx-l^%y7gu9(S@D<_R#|mO!X`0d9nWleW^8v=KtO!lcxq3Iy9w*5P%U6XU2wqx^86B z2#sInMFpmB-Iv#4GI)A}!;4LPu?r}fyIc5U^!AO)?3cg4k`00Wfe}iU`{&EOQZCd> zm~S!X_EBqC$9uW?P6E)yN`N1#{p^47bD43*FVmn3QU1G37RI6XN!YupT99Z47sTyz zCF3sKFivMzF;Q(8;8c=rSH7O|sLFMb;aSNfsWPunco7%1*y(LFAa(wCoxy=19e;o9 z0TOY=#qLdQf~5@X0kSQp?}wf4j4Vx<(h3V@5Gy2H%Qp)X(p@g7cs?}C#HPMgfH~dL z-HjR{ChxpC_&KV!AVRQbT6W~sb=~s~SvbF*|E8a{%43QtR#I%5nx>Hk3n2bNh-Ya? z*%serSn%V^mURQW^ia`1wMqJ-1eo((-lG$-v4Ak$y|0b#mq2at5 zSHb&7jAcRvX`dcf3%o+1ELbdBoOENGo=gVt`ONaBwKJ)U2e60swroz(49gR`!R z)?UqSi(<35g0_ZSDZ9$jZ(vMEn}LwKsFjsGa}h6X;OsA$1)X;r)uT=tu5ci z54HJtD2C~&XJc*f{%rLll~RsLrAnIkqd|75CR;__?sKidQ{_W7pSaFZu_+;%xbmq8 zTVLl7s6yUgV92863_tFmgK2&{nR}FVwT>tPL+Ibuy^@&ck1>W{zVI_z2A(lSE|u$n=Ef$nZicRCZ-m1>_-xSsg< zTbL{4vG9Kz<;n@4?n3c%FCYQ;M3GfCV|Lx~y3<&t6wrHe0YfU&Ucs~dRWN`4$~5Cg zz*Mnl){#K{8htOrfT}o)Gy4;{NJA$XGC~GuUc@u`q>5L=ExgaA`hS=JtdrgHD&q1+ z)m_TJ9IAzPugsD@Yof9P)7_p`|CpO zDR=vjH zWfcKz@fwh4)i?iLLd<#=c=YiP+}_U{ro`tLCEv7MDhN7=)iLoc)vSx#bUF7ta_-ZV z8xvL4pA6pGkLvfX^PS%o)NrEEF@X4&aB*11u4L_MD9MRGmgTXc`@oR=@w3W@F@l3d z%11Y6^kI?e{SR%EO$+2z242E*UNM8Z9t)GJ>c8ErTxjAavbAQSDx_0D_=qYlnwqSH zG>8Aa-z7FHYjbxC)@}lc2lO8UO_w-gcZk`k|8pe;-oL0f;BRe`t@yz~*fZq3XFAs5 zHbYt(gGow?`>U%X>V3uj)9|-L!`CB^?vZW0m;n^MY4IbDyV|cPYZ9FN1S+fOtg*1Y zeFuLWA;O80Vtb@t6B?k7<=4&CuB|hByG^JMn>EK7K}{AsMegdT-wu0?*9mm}%66OB zl!atCyyGJ4+VZ<~Y!z}^*KRb^+;d-G z{B@$iagW!=zinP}>$V=fRz}WwGWoxK$~YGSx=VhL6gJN-kZo+H@+*+B9J+GfJ?UYD z@)N~pB3&0#zUuMQ^FZpi^;@pvX3r$KJA1%#0!u(zQmyBDAO;8s(v^s9$~?OHAm0M9&ClxMCpy4L>7a5HUUY zPHh7yK}CrJC^p*YBwv=-Q5V_wvl?o9#kzY`QX;u7Ckd)Kn2h!!zT07BI&24rvO>G& z>y!>-CH~nT2P|(WK1x!!;Yjr2EfIWKVCx;ggUkb!kK(9iDJmx`V&+f%hdTb?gm-Qm z&nL+Set$6{C|HS{cNHNp#3I2HAR&|L%wwvi{YFq{MiNtFBiWr)jNkls%COb@QmI)J`y?5a7?#CD!r+;n=!Oc%I6* zB@4B@P46hi*@2OwhsA!3W4zPBtas;6L^g$8r5sBKeL&hL-G{mevrc7dK7w6dID&D^ z1vrT5Vd0NQ86*SHPdT{X&r36PuR2Me;Rg# zijJl5e0z@Kx~W(=gf`_!KB6Tjw*aK5XPjYA_o~C!3ir%2yP9Ggv)*0U;d0D~s%#Q9 zHjH%ke(?tr%#Qy_as{$>*AX$G{?YC0-Zk_l`xbDI)BImjxPc!ssmbj(aXr?%S<6!a zw_b=Ar;+F2F5CAqytonhOdd6S@1%Ar-r1`{X_sX4`q+#qO=>T{P6#^(J@?fQ%y(;= zIx`#?0{EUx&V=6nWk4+DqB+JOEK?K^@;udMfn4__NA1Iex(afzbS2h7u8k z(`y^o5_?I;@HJc(A*-O@9IGH>fTCzK@k(0h%uC{f(h&k85=*uD=?~-vd7p9O?GCD9 zueD|DXa0HBHRQ-;q4R6!U1(?iPgLxEL#2!h(pV?|6A1t}9v4FY(IBOwnJB$za)$ELeW@rxdn{k3;BsWk7XZ|6||^y~%iSLG$Mh+Eu&XPgJBE((E3$SC7O)nik5iTaRNB@ICfA zSI7=9Ed#)xAgSj-sjJX;{TFS4k)1NBUa7iLkFc|}|G-(Co2n);OW=~vdgeDv9hOie zbL&>KcVFS2mL48<_z7S3^bZ#|PamHfCRgOvFu(%Czb!H;lX+#cl9!B(p6O-#2h48K?Wb?U8fl@h7{#+9H^~lwFVUx|=FKZuBQd zp-t9E;*KqH4i89KQ%K#BZx9U@b3e?(hFwRAElF+pOZ?&pnrG9(BHAUq*AMIWDQt*@0m9 z&5J|fk=LgwgL%V-Jwai2!0Ch(bxAPK{I~OMGdZ2)fg(Nzs-U-M0YBbQnXzx(OHSha z*>pXo?yENK_a#{g%VT|IMtlsqBquAM&6~d;Dpsi2TKgNW-0JA~={AT1rjPM9#yXcd z>(yn??2kJ*WV2h1kp=bpl87iuA^kKBef<_moDNvOfcBTWY8HdnnMPgqy1pU1*~K4b zqQSMGWtY;@{gQKZT->s()g`DVmLHSPY^Q!r&Q!;Z3@CE=cR^WD&2OLu94Mix&42< z%G5c^yBK&>5|wObxn%3fdYI|twKyyw0)7HSiuiM<>(B552U~0opnkz^mU0lkh>*Tp zsC@!7Y+wJ>{>Wq`n;@3}k8`in5Tf|%mrD&FWF?mpZ(QK-r_2ztHWx)OwVRk0^RwP| zwd?N48OSp?)b<%&tWHia4%sxir77y1P0?aF^n@KK8XbCkLd5}Ye=fmlT5(=PgYg>cndlZE8tG_ z8na|^$X$JZzurvRq*GxPtKF0FOr{9{j11$M$&_GQShu6i?>&Q*)#fPZhJ4 zGh_p8Go3GCeq;7WT1Tv4M|@$LA-Q9VwzwgKF&FoxSRhggHyeZkn|_8K8sW2I0K>jqz|{Gcy^3It z(bwc@W#{NsZ(aB4Qj2$JQEUEkMbj7bc!5fv*!vP+!Xn4!z3VLMS+YL#W#HJx(djH- z=C!hEA{qyWnri!Pm!`oC^uj(hEwAMN?axCG-mr`tesd>*`h8`f{*k_ozRs>{KMCx= zk+RB??JxAii}%WT(x@>aH!{4X)Re9JqAuc@6&wP`vr`6V*0&`#J~`2J;4{ff$95A< z$(q+=KDJON6;{+W*0i=GEFO>JjSPVBC6py|vvwh^olCn-2VPzcGd?;r+2Q`_hgQV- z&B`rWAI!9WE#73R+Vwkm=Y#s+wrIqv*KV?A*qZ_a0~4dA(fTEs^)>}izE2b2oTLb! zu*&m4wLgps-2VsrS8S?mt94}<5kb8<1=~t6{#&2+->TB};>|p&hzV8a`^P@*rb^!o z54$z|uGuT^!B0!LrA3k_VnjEx{Up8Xef7-fLh*|*2`!yQ9UUg2iI4hCFBq$oFX_Ok zrP0)&UM^I7N8T`(tAu_k9hJ{wWh@xhP4UUy8t-y{h>9Dx=oOB%}%+s9N_1<}Dh;SOm}RU%>g}5v%QXn#?F`_f{DS zEeQ8L?O*lnnt)E-pZy62d?u$)7&&iUh;*>qywTjFc-esW~c z^bW2s*V=N;Ty?!~Nj=ECF`o>rTUa^3+`oSL-~*4Ge6o?T5RNZHUy#~T=!F5ppd@Y5 zgQU5>j<9M5F4ZBydbq=k*qkg@#)x&tg3p(%*s?jPb9V#spk`JWg)_GrC%G94Hsu(0 z@VURBL)``d&cI;6gYUwb|KkqcGh1(G8aN=_JG0b$MDzg{7jS=TnqkYi33 zVkr9`VI@_z@^M zATpiw4wbjEZaZ(ygE0^rTyT>)_eKn*Bt#X*yTh{0I5_KrBmQs*Q?VEjk!?3FWtYzp z@poFhG&e81wxsd1^1|iwGHM}+xVG93XQ`;&8+$vo1*AsT3RGY>09!Z2Ta^!;;g37$ zMcQpAu)bge`=1yw6x>45_H_Tj0*pVTsw`ZKMOsM{l~utIbn8>CH&4Aq?R@=wn)<-k zdwK8v=$AO?ta@J7_!zZmKRsru64JKMg?yDpEOc_Z6u5&f@;inmvm9eWsiPo(TW}JN zNGpeNXim)xV5aS$KyO*rQgv6cX3=*J)si6blb(60Z!?{4N%r@=xa~}m6U!k$@b{&# z9?t5mC;jr~!qJ0!lqCyFD48Rcf11f=YaZ~ zAbvuUul8pHBiu;C(PeSrv?}BC5#`VGuSwO#=m~2zP|~>Q!YV(qd3^mzhCOt&P}#4h zS;3rpF7F{cfBRv?bWPRNUx)VRGj#A9@jFgz`^ zQl2}Wp=ai}rTa9;birQvOE?n$W?lPTkOwys!>y4JOI5Lr>i1AGvef+nr~m+UPzSDA zbU5U!{{!y7O)^aQZAT&5K>q>XFPz%ZIspapS0{L2iB(B(tm^xR^1XtrUanIYoU^Cw z^;CS!z0YBM7ogW}`u|#Xpl#7*YMl&l-p%`bJP|=-;h-0Fi0mDIph6QYSWr=m0?MI4 zgaPM;5Cg7+on4JwrM?x@zJ`i{;ts2esG#Q(t=yL7a3eu|CrW!%IlDeh$JBtXrdxk0;P-2m%?|88m#}HpWl4$& z!b>iDR#mwZbx!j)LRQd4O!=2sbZP4I_2bXQ6Rq^t^j!SsTv;`I*BIpUp7Qo9cFyU1 z6RWxy8kjV$$K{69zc6JBD|`DS;p)VM)#Q6~2H4hCC688#iWM*W3 z9Zh4!@j&5s%I_0OyU4Qt`OimATlZb&e~8tjELAZS?31=<4VTfr326WQs^rEAB_+ZO zTm0vyucf+|RUMg)xxXyvYp?VAEj;O2NuvEMy>>15IaZ;yL+_})P2fZLCp_DweQFyG zmE+v83AfojGTBMuhLzZm7cfDD+^4)ke%o)tTVp$&66f;qhi7H8Mnt{m6TQ6X4&WwONKB=U+5PSctZzXw@5xR)QdoM9BZ<73)hcASwzAfG1aYCtq+bJ-re;=gQUY~Dy__yAh`9m+BkMw8= zTKUjh_?w{cU!;;D^64bSCz6vKRk}E{IwI%8DSn!mLssr7caVRZb@kN$g<-pRYf*xJ zhy@JnKNFJVD0H(^AUi_&G9wHApP#cc#Ak<3z1A)uZ92djV@;#nhY(cSe=}bFXbY-0 zf4DB7WrL>lrKwD#Lf7*uUJ~}S=o8q&5ygx>k}*=glz0-Lr>V5svgV|$jGI;pggz9sj_oWxD9t`-+$#0Bz6myTHsvSZy3 zr}m(LsEGZa{WqCswlif)5Sn#3RnY&@=C+B1K%y3`0>qzpPMQmb8ZO~$Wb(TbmEwB5 zY)~3oLmOl3T{6YuJD{6TMq6kx>mrSa+_z1=HRl(}Zrkq!kzE&!F^@jk{YuB`yAZ5n zkOW+5g$(DZWQLX$s|0X!9ax0F@^iACY2Qs?QB8`Mucn04LClrMBRO9zyq>>S-=$mE zl++f}uIKZFw>8W_xIMb1(b$`}0_&g&)Cw5_!f_kr4zfCD_;Ck6IBfsdzs*vm7Jvu3 zID-9$eKQ#N{X!*+UE*Z6lHeHNqb7ceiBEjaKjPuTa7`-}p!n=MCZ^2QBOv6NZ1^hE zqE#2|FgMtw8_u`AC5F<*|mg5nz?WOs6lk?Ujg z)R5@QS`&Nz6{-WAOg&1j9v$x`DCycw+^R=YIKCvGtp2%R!}Um)=X*=kfS*C}=A9bT^OKp!9lMUAQ1 zfhR}a?c*2z-2Kz{pMAVn|Fx+^S28ByhIm!}Y4t0_qYGgUkemxgg`Djlg7xD8^LPN0 zy8|tse{ntMyMH2cU(;KPBx6jROC!AAdEeGu{A_RM3ZYfIa+qZ=akbV%V z*V!o?Ys+#U-oEvPd9+WMccBVjH5GYVncL*t=MI{$FNoAC(qpOI73SLa#^iH94QU4? z)bPpV7n+DgKd*z?c~rBb>2zQPZZUDaBAO%2_cxwDzGNe($XIb`2cF9Ql#>%)9zd_W zS=@R3t3O@;7Xo!RB2oEzzGN;f>x?BG!?^?hM{?)?tWFw&eHCXkHQ3aoHgRJPhNII3 zCC>aGda%Uyu2BiI57v)h{1MWd(zOKp=V1TY1I&NYTwkbvZASdyxo>_sy)maiTi^QI ztzZ1s52-jP&l}d7K5BmvMViAMJ->H!?}+T0DH+>i6#qWzystXr`L6Z08WJt{j>WTz zYECaB;83amK$x~acCP#BCr4h@-MimF;ug5HftzmmSYkk6WcVk?9i*+D#??wO)YQsB za=FiQs3<{Z`&?i&uj<7e?9Q;5m{1U2lPZU0t{2C92Xcy^1~_EloY{`yEdlfYEXi$l zeP%h^1mPrb|3MJMpC8PSW`WQd@0HeB#RMkj2oSVG8FE;-<9*;>&fPjDJD0PLW<6F` zEKG8P!@R`I+CJqtNOHpLI^C&T67I;~{AD@%4*~e5pcJiP%x0P!Uf434PO*?ILoN=k z3k-Cof(`}-q;fpIu$aY8+NMbCVcN`_hJlm6x1th|cK73|4`jHtysL+puQkf?Fk${u z13p-Q9Tg1R&am|U|NGAyj8=ZT##}7!VErW`tj}wHIYD(e#1f4ES!GF<(LBv5zf*2K z&KKv<14)B!w0%pX*Mv~4${@=}s5sE61O|^m!GdYj;f+6mEf3u%n18F9@!ly@K#Ws- z_Q;2dpmuTuu9U{d=5Xa1E5J4$&{$;|(3&~geDN)-FUo!_mtuGIYMw8%0E!msy!^-R zL&f;Pefh0``1@sbb9L#3pRxvLbKevv)Qi);_!4dlH~;{A46?^vDX9~4YJV_)>*2Iq zUE`w$^S3h8CIWtR8H}Gz`@MbA=y7FrHdy2M!&RHtk$NmShBFgv(_!Wg(gY|uDvz51{jyt zbHwTBVJ5esR7Dx6xMZjG_P}#F0AdjojV)siTOHC`-6uHX+W7KaM(x(n6-O$i|9HEZ zp@Ocm=zR&QFV*)i&JZWLwNDC>l!n)PGFcaZr-D8E7F-I#+=K3@U(>pQlV?8w(~TyL zPMy79;9!cu!A}xn0_G1P7?=P&O~a)IqxMf!ULX5WE4A>2BfAfVKD3=b@&G6&m0sG;o)E>KdlE}-(S%$ zzo5O=u*U2ZrmojjryCI{MWrl{`Tlwva6;th0&(sXeJ%sv(Q|`U#agVCTW(g}@o^;v z2m$vRyiNOg)q3IdTL_;Q(ZednO12;@2c(Ri^>)ENfNnLL6X~=n>0-geVTYwdd5Kyjgt5 z*Fw7~jJI%h_>S0nk5YCXQRSkc0EkHVK{>(xhlHN;4#9Q}g1iuUp4Indbf7|pFqnD% zu~_l#1W5DgJQ>?%+jn##-gbu;AwvecI$g5IHfck#U!D6#cX>i9^5>EpZjE#jti)Mu z_aeLckA6LVTn(J3z-c%`C8jsgo&ElvjI!JOneF_B1OwO#W>#t1o0N^Q+Imv+;&|u!SPJRMx* zrKkA=1@aO3*n-v-LOCd*@Wtxslqg3F4Gx-fb9@>631lyIpSG6nxS}44$;YYl(orAl zXzfeIwHvfqi7y36t~evUp*o@tGrf_}^gX3ToD$CRbt99xO(6Gy*>=H}A~@f-DCCm> zZDEU4nLw&d0(Gv|P@P`EqqF%tm_PhROkKs0=o!KO)p{C0&0MWpTct}ffp}oS`zeY+ z;l|Zm8znmVz0tOb_upqeTViwwNi)b@vl|l^HWz=^XU;|O%s)^}bdnK%AcB@vq11uC z4%j?GTt(b7pcpiu=DzrX;x-rM@4SKlK>>jl71k6%$%#oG!QlBe`Kdz&eaY_{^-t&? z&!Zj`=xK4!rz=#XJDptWir_AbDqy8XP{3}C;h)wq#?+B_e%*Weqrv1dkFcXDkO-XqvTNkb<-`lvpoN8mu#;qtTK;eLdQsMXPx;EaPX9M(tVT1gc;u%LQg3O z{}-w#N_c{`N^k?`r-WmH%a&S*PyQs75yI6&8g9s{YE)QiwUu3jC5WTl{iC%8@1#W9 zkCX2wUXi62r=h>|pMBTvJ5<}fThWNFncLncyk6QQBAPw9Ji@R^&E6_esmW9aiN}U zqmcjOk7AEBhxG4?X@l{zOgqLgdy&9U;^!nr9bWXIc+&^XPV?Sp@0ul7S9Vt3oe%$h zlnMZVqN1lVF-6Uao?6C4Zh~R^O)BNbCyqQV0L~=Q{|7rK4^~ho4NKowHrJl|kWvi_ zJZZ6hlM8nY{&IDkT)DTcSB6R(?04RsIFh%Gq`c(8gjb;Zj4XE+nc$^JrTFfUHukrf zcobV8(?eBKo8}vz)-@(__@BzIOR3@PDSkw9s4w$d2^uaEhuZ)($X`koCn{T8Hh?va zS%0vWrL$SpIbP+Rqx|g^K~!@0V4xv(SPZ&#>|(Tov*NmfKFz+J4r6 z(vdYiHT$Sn`QADO@?yTSg^Khv>elm_=qt}kf}Zb&E!s+0Sb@AenbY`@xuo-UyaK8H z@N(Z#fm8efOrhTNCY03N7*K!YH^@IsbyETZUh|VAAucS5Rd9@)oFHG^`hR%0zrQ&= zA1RlIw3cN_dt=rf&?y9^xbBGW?UhUaar|(Ezep*K**DgqV20V!<0w?9U<2ZXMyXD&m@LYoD+`=Fk5Z_6dX@A6}e4sD)@u!i&(jyR++b$QUS#+Q_~m`Cke=c#RY zd=B_BZ2Uq7?c(O6^i4rN^i%s|GebQYPyHXmip{r(9EIo-E`j*nv8EJu>>pL(HZ~kj z1dP|c5PHU$8Lr9FkFJuzZC_@Yo33vJTYt!DR=(QMj|;xGcbqB@VH^ghvjA`}>MFW} zInwvV7hg^!VPz^W{`!>Xec90P1>_Ec-Glt0m}i`VJ3bN7YKdmf2a7( zfzYe;Z#8$BLpaI`%&yT;>e>Wg-~?Zs8K@rw^7l^HxyHC1OFwI5=@Z$tRa-s=RKW~9 za{s)Sm%6W^Rd!H(O@D$ogd;%Lg$6icl^3%U6>^S>ld7Q7s(?|f#%IvLbu@1%i^FrK zb=AmU$mBBJRZ6Y5OB&zFVuj52*3{pXnUcxnOsV>FfiR4IKZ~RcjItu8uH_*O`}iwt z`X?%T-tzZBx3N!}?wuU@H$Of$zp6zoBBu#eIXcDf41@;InbhxMh={TpuInb0x;F(b zB~}aKY(V~*ggD?h=hjoO1%~Vb$JGH*jcup=j+_7G|@pDAN4{setS_~JZ zXvDB!1nIl9zv;B03KDE61XVVOzwacci4ci#cYa=5{N??6d%{<)II-w*aOBlyp01)l zcB!gV9~K{uY3B@{_1}DP2SIf240ka&1V|Yo;{i~)T>$;32Wy8%lEC|4GfGu1-b|W8nRm+&W!2ebsV3l?IORD$tZDHzqUe zP=2%i^IHFqbKwGjPC^3Z0M~WgDyl5v<0FzT7L`g9uVoRK3|=khzu|3eoWRptzPVdU zEVXn<(klAbF!J}e&hj+IcSK<=^fSWx-YRaDBHsK}`uVf|Lj-WpNq5TM zrOLX3#`0nTSe2(n4a(Ea9=xAofda3;-Fii?JdQSs6}|OTeTPKsV64$L{Eqo+$w@`p zuXBsfZOnDonI3K{hkjk0_0rk>CXI)O#w(Tu35@x2iIkPu+L=Acvf7v6 zx6-l-&ipu8WF!^4k-$0`Fk<@OPTkr5!%f_wr;yRQ7`F!t3A|s{0;sDr)Y89BF2a--kp+hw>pi+@2VG!4_v7t;4BZwb`1Zd;dQS`*C2I@F>k{b>%r@K-0n(1|!;6O}?7-|T( zPX8=KP^8}5TK5@Maf)%L6p1?}ZZqPB`uAG#-`AluHkE5eP-17iGThlEUrC)CKjkHfE+yD#C_ zx%%e1`68%TN|^mq)exygD@9FI5>KBRLihH}y$96w&9XF3@jKuS$5o7sVdvK9a7rQc zSb(N8LJY(|sEDfokO0u7fdl{M90&e5Ay1xee*+uOkmt04e7`xV2vz#Cn< zpsdbfr1%|8k|VBtbMX_Rf0~w)aea6E#m-BosjYL{S)vZtycxevi%~^~c=>0LDxMWrM!nVQS*u$1fhP`^cTFgjv2nqmb>7&tUGE{??aAjDxG~kYkQbQxZ zfNmsaAeC}$yn;c)+|+{eQMAl;0ZzZ6wZ(_AwM9`@F*3M!Gc7Dv8Gdyw&wQ&tejah} zq=5p7bixkaGOnTgF8}WSC85O21G@|MSjX&&bCkaOjXrh-yLpDuc9$D&Kj^hT9MPi{ z@HQH>@k41V>4eqvJU=Yji{6Udl2I!OYP1u5AmrhWGoglXB{#eTHw(yMC_aln82n+O z%&-K_xiBW21D0A4pc#ymkR%Qa>Vo(CZb?A38vL^HsjPbAgj1ZT&@;I~d&+9&}D_xbg^%_+y>|DOH{++mbwfjTn;itNb0#sI9V4hck8XfL=2>AMqh9qO;! zxE$-LePEYo9HTGxBUfc4lKPTbjat=)salEdsr~uzhh{7z#`FeHm{vgl#{$$P`ZAI) zkt8g5Kc1BY*e>vA{;*^EpQ*tF(omAN~;1Z@IF)SNo5s7;p|N#BAj@epQPx zXW@nOtYB;`kQy&>@q?H%hw;TK0U^U1tS>G`eN}|P&r>uM1xy-|0u9=!MXiUWMpK0^ zQhw?a7(@KFl&kLSC!5~a_`dx5q`@!x@v|ntnV$4aY1DRoqmNUb=VBI0P^jC?Bhj^K zGS3%AGrbe|vhox^0ys3`IptqHWOh@s0R4x0MMH{S21l&`tYC>a;ME9MZ0bFRQoYcp z!>_;02TiUtJAeL`_Z}0jW@GdN*f)>jA@? zP(Ec$q}Od#bmm5^?pT|hjMSy3;}?=5a&aC{Cnf?Cv&-1$6uPm7hg#oD? zk#C3_dx1_j=+HuR92>VZ$X{w_K21Y#0tqSMN!vccypXk!B5sS)`ss>O{Is}33EtsG zdh8(!po9eD54=oYS-%AW*1zEWG62}QbMM4uJ@xTc$BrSd{SklJ=Nxp;R#K(vWrduE z8=LwVpIyz9<==t}UQ#CCYEJ}7YruJzE05mQ3cl}nNZ#)WTXp$0kYfah_9E5j=lFSL zE~#9)p2~b!P1NpFU7D&)B?(4pV&*3D&PCx5Nx6iotmf+)=)VE?kLsH=Sq&-NZm3!= z+qT_N=@=wW{z=|B7KhZ;Oxzx#ki2**+2148HulM7ZCAlKY!;%-> z$ReI{>&EuKPTbYTs(LEmziN!K&(Lhs&skQ^|He+n ztvPAA0NKF>Q@&I)4R7PY^10_FhhB@v27I+iv?KhSkvh$#E*kUX6CTOmDNrsQZ+KR2 z0Zq}V{XzVXI7}#Muw!gEkiQzde;hNFL(4#LMj-!;B^1C~h_S{$RCq9*bG`39-%^Zy zhWlGX?^4>%h711dlA;Y3QEjp#56-*zU5RY7!7|)>6nXiQ-O0=6zx{0-$o~NHcY*vBIJCv7 z|2UW{h^CE_tbvCl@cnvVpUuJy$Ee5i^b)9Nid+0%?wQPCakg~A9(w>t%;edX-6k@u zCf8T*zwForWx6Dci1bIl)cz4b&iVVpck*hTfTb0Hq$|HB+CA85EX?oTU;3BrO`C{( z9?f?9waJxsbT%NDS(y4UR(sUuDPz$6TV3N9tI$WCb^nE!a(DVisyPIdT9e0r7k-Xd zbI#nbl{WUu5#>SRkZ1e1VEsPKJ>>`P-y+IxtOQU3FiGRn`U|HMQzQWL=NGwmTS5(F zF(SE+^$x_|JPw>1Y|_JA_`0CF-eH#1{FJ!2)!xD9^E&(5< zf1G1y?#I3uey+*%Z-*crFszqSu zes^TWtNDA?rKQq8$c+oe^NwDNF&9J~ZG2D?QiK>*Iz~)dK{Axl_EPm9A9aN_4icJg zt*1AOs+Tq--!$DjFEuUa|FLu({#3tT{By61i;IhEQZ53F=<~;QJ5W-)p8|{Jnq?t`N%w z2c{SVRj)|cUSh&}$1lv+nR_pH$+zlATB@d>*fDI9!jP)CdQreNIP zJU;!~-0}T5<#hR(lj^_YAIGxEG}WpQu+IURWr0CdcCGaL1nS$1N?b^r$HH z{>5u7E_%XwrflrNJI>3j6IKR^$faXd3SWm?`H$~?KeRr)LUf)z`S@6!62gOWFL|N^ z+$Q}m{vM>k7I^;jXaNTn@cxFVidBRDeP)nC0$4v($635+;I@sVUc*f$>W`U-N|u>M zQc^QxU7Gb3?a0*`c=FRO8hRHPzHqAHZr`+;qH25Ab{AVi>{e+i~YYZkkYoZV9|M@53dtX8SJ}`a;AkGNRjU-2d`iC9pIMZ+kpbrNWUa8E1s>1~wtICg| z&qOW?$1leAkQ!V> z{BebNI?$zAG+xzhA~gMX$$I|w?H1ytJ?6h{(?Ys|FRySb1G#ky=lTQS{as=<+lpta zW^e%Yhe7?-%`^WpXPm`Z{RXmanEGPgk@jSjsOfPbe)8~**-7(tQ3<5ABi?{pF$(x~ z3bJwG=M6b`!)6ZAY~t2_j)315=7NGB*MqoAGGlTgL`Y&KX{Tv4nKQg}>Tjz{7`+xqc^QcBCoAPWdWWZ3vf_FxfYD*g8ewl|e zWtN4b7-TO%xhIQ-m`gm5%b`ueX7PM_o()J$II{28xO_leX&$hI(0AKu_Vb@4FbuqrPmS=$d0gJP+3<64d^O$p zQSp8N(M0LqmS*sks?xZVJ3^`6oyXS$Q-E{*NpSzSgKBOo9;=4}WLi@1O_nT0tovO_0D{<{KKg z-|%`72#1Ww^^Z5-9T3AdkLoOsO&GOsl%R+ON;_pGHhiU3US9kHlP78B;Zs4$*u|fl z>}d#*eKu>AaF>)@a|6@WBZKywuAPN-LJQ$3C@JQ0!(NtBNivH{=6!RxYie^2Lbgn;n>K}&Z1)S#-Dmw`64~E zf3ef1YRHmJK)%M(N{YxR*sr3RJYH)OoBXB*R~K)P6zuRs7l(D4F28FD?~*w3@yD^5 z0jQO~kPGo|+3isRQSzG$o4&=G3{qarPVKpYd@4m=OG4iI`UNlEd?(ymbVK~M4(=%E zs<{^?dZS>{8KT3gevhtLvzWMa%KPv6apz}%1yIw+Dff5&sQ*9z`D}k2^ly^Dfah-n z2laFAiz`3xK;tbS1-N|#KzEC`h?PrjKBA4TF!er$alZcr=1(K#+pR4O26guSfb|0k^snJ@15`l$Lo^P6@r={M zn)k<^6vc($FQQ{1u7xDvWJD1)Cb7Y-9d!~kIfI^M?eRST<>Yudx zg$6(D?==1Gj2BmdzN)2iOsqdb(nBf3H-=zZHYcyGH4=`j=2M`$3(^g9uB3?M>-IkL zfp1GyrH1+FRBfXD?648J@*YW=C)!mlx9ywT!)BDC&|K<|5vnl&d5>Iop8I+K3lHD> zN24nYRy?5os?nK#DIh8a`rl#C^q;}_jr>0MMd15yDx!1}6UBu0R3=B=!-PF-!&0t4 z{&gj5V{GBNJKn%V8_o0l>a+i%)ITWyVQ%jo4dz}b) zi?K5%mR~lDt|<2Aj9+FW?=z~e*KFcu=C&4Cj<$&|5X>C!4^AxkCGn-Al%N-_DgBuF zbSm^%A?WqMG_kP^0tGmBF}Wbttwc*34;DFJp?1% z3Lz5?6!OzQsxql-xyuns^qcfC;uwcvjnGk?2?>l-E#tcqT=H+77^H5G$N{&VZCYEy z*JaIu11}xl2Xz;}g}oqp0-}saRedb`syNA0jZ7&OhYTAnFB%u%Q*C&C8djuUXfedr zIFf~aXi<5L#N2gOIwHwmP%bFnE#W(${f$ipS1UHw~?uRKGAI1uzaHnw$4liCzZ%* zKH5})2yO@06T1~g#mOR0vGD+f_ zsh?(fZ?O0SdB_L^MuLEJevn?Wv|qA#_u^m^X0cy^K$CRm2Jpx*id}pgl~88;et1eF zn=~fWc~B$4JAEQrmWe6~_rm49?UBpfn!la-U39TIIobDFGU3-OH8mC((lNe!?j6ev8bxjwIGorUjHU{x#u793s|gBd|s=2{o)*hl|(w|9j@YL#GS+ zr>~&!7Av>V0NIK%Sbw@=wIkW+IxsLmN;SaC$SaVQiXOWx!Hg{?ONkoH2qtSm zLGgRL-zQ*Hz6vJN0}iBY>O+ce^cT7FoZh^c{7AG+tN(aF%qCj()R4iW##c1019li8 zG@NwYh6&E@kMwyi%gmTjI{E;QUMq_RyS#1ChelpvxRr6i=wv#O&kPS)c)&*HDERU52(Ny^YNR=F*eCn-mbWyY?P+Oa1CQk+jIja*0fAwY!WygSgUgJseHc;rY}CGxh~gvai_#Ovo&kQoo6(=d zW0$=G)Om*WUqoGaH9xIUPUa!+33%wa46cn~71UBPQk}xVkt{3-K%6`{Q}R_4 z@x1=Q`5mz9X>YLAG2n7o{8kyrVXC11a1TKTq)&tTQFjR$DL7d}qf5ns-OikgBhmN9Dc?$!NX^tC-RP(&1}c*VlPS%9ibYZt zv8oJ`LG?)0TygOkY=d#IFWB2Di5g#|w1%s#80lFZpXAX~m^lYM$xb)DBxq{Xzuo*9 zFlOkPm{UB6{aPBvzkeF=uZtg|jdh1HKByawUV;cH|5v|#=Q#I&M6H1Hx3mAt_{_f* z#J{-C_$S8o<9`)-96s%?{)z@EE{}y&RA+V>7X)vLPe{rm8scdMty{yZ7;Uoc9XU^H zUJ6*Suz3B^9C~||>&sO|Wt*aaN-zb8)Qv<`J9IpS&!- zl8N|#%0i|)E4;zm{>#OgdM8u8MxuuQp$8_I{T+!-|sf@_J%nb zs&;#;FKqt$S^VJt+skm~-$9^5gYOThzgnU%0s2Q{^>Hge8V=A4*3zV~40;=%^8W7q zn3?{mtAi{6LWI{w`>85(jdTgSZbs}A6%7nuKg;-Y@jxDOeECt#*KExX_NUG#9J;4C zL2C$r`%V`3sxoss&{*eJgt4i1TH>WdQ++yViHX9X9}~~4dex0x#Qq5|F{Xxy)&S}p z%k8X#Q!>r-@L2E3Vb)O^fjv$cGJW_^LP47}>~6OZ>x^Dn_4;D0 z_43!pj3MjkPm(5?7wD&o=%+MK!ib+Dx)y?kD8fpzp{B4+46GrW<)5D%Z_eBmDG8&6 zd~$DbNH8+b+j(INy@E!YebTS)W|U#pFCFxpS%Ixk2qs7ck7g_jPGBFDF0S@{ixuVF zJ|yFNYXY$bVCD|!CuKJ%&iT(|P(RTBr56F>r-YX*ep?LWIBO9Q{~c6@<{MX+P?HQe zEF_FV9nb)Fz@H(0(Kg)ZcjL@JG8H<5Drdwqb^<+{s&7<~5ZF{4ga!R35DWg~aaaeg zwQ+;&Axp;yDxtV}HYGUMgB!2pH5p)}CbnXt)Z}(LDrzGJj%_iBc^wGUuAGK}-~2H9 zrP5_-lEH6X_QVmzh2yJ7$B;1%H0KMq{Sp04%{Q6G(UnFLx5M#cz)wg6msOPG|MTB( zix`Giu|$u=6t7ToaIl8VgQ-a~5h_ zb>PPV0GW-KyY<2*jmoPRm$I76{;DGw_Yw0qca+6)|E~p3t3M$BieV-D;LQI{&r%GmpW$kt|LGVDb(e-5e(|3i?XJXSlTSTY z66AS~+B=?Gj}-j$++94XkBwC|-*FgjcemRPkaoMMLIwa1EBHG$e4fiV3hD3~**ou1 z)dIh>?~w92?lK%U^s9-YxaDu$svL~%>hR0DcvN z-HuJ^CS179vtZM!&Qd?<&>E!1thVh~m6&oZ|JBz3d87D{%eV|27nWKC`J0-?O0$l| zHOL&WW*~)=S!j{rTG<$7|I7cMbh>ByxAcVQ?0Xa>0~l9@7?=-U3p!Ic#)EjQ4)q-> zdP@)Eqkm|aSoKeCJ_J=iFrFoO|I^0vN>J@fd%#Dg z!R0spJ?IvowLfIbrpfQr@`5Z+YvZ-8`3rut8~gnCB!$iL_AT&>WiL4?YBb%U@i>`l zy1N`9Q%^Qu#cWWlw7IhIDYNoD*MK@Zik{CuLI3ODbi)y}4%{ew>D)a%5>06-C6K?3 zR*$eY9)mHSa&lPM&prsP-abBgQkwe-fBc8yC7bl`Utw}SR7YWJ=1YIBs$aWl|M4H^ zhoSa%hy&<;>KQ6$CC<#pGOyLrGsP@uWYYGj;qs&a6mAoB=mEr_6zen008rc3~-5-JkBeB}9nba_{@21E}{Q51yqI`$@J6~2`2!r5%#AA1rB z&X9sRqKe$~zw;kK=|XnE_h%)CCjdPECQ-~lNiSRrIzKU12b0k$DAu6hyfql<=_K6d zp-+XpD2?q#&l9qqMCVY}2dvph1lCNj%F`(Z+M!v-0TP+D(L^!YdYB={eV3y3#E1su z#YijkU>#xJ0U2Up#g5C0b?_$i?Jh=eXe$=I_^78cXLlDpxVzo;(ID^d(b0$Fqk@m` zj(<@#w`>3stP55S;5^JM@i}O+A2Lky7`@lWUN=v zVRk^J+e@*~H$TtVO=K#48gW_tu2wck9-chWU=1k37?&WHL&`%>C;O~|!8Nn-QuL%K zUV`Kb&F6tss#h_-cpCGY5Lt7fB&sAqC+S&{8EJRdg5V;Dl&M4+xwuI?axMGs_$S@+ zvgVT3u6GC6)PdEK^q}+j0l!%~GY?vf9+>~XLH?wsm9k81i8Idf%)bu-@Kt;YxtA0- zi;fk5@Bdh4en8jW8c)u#(ujzFtiX52byeHpI{XGtiNU*HIbzJn!57H!4)lIN)&qd= zmHSI?-eo$#*+y_g7;r0%E|Tbpax^Y9NJ%SZ@unP7u;laH4R7_ErF<;lp64phW`J@<%A(M|o^iDf1=bvsqNG>se$FsCB{T6zD>>BdoZ`WyKL%ZbgWil=f3Bv}b zbNzN0&hHJIp5P8EmL9A>-5>zjuDTfcYXSlEKQ&(}q20##+Vy^UsmoZ~MB}7J?b%zS zu+StJ+`nP<62%n^Thl0_|0ZKHYd*@ToTIcjUCqpWJ)fQ8rX9;^&c6bXJp9K|0P0sQ z7u|p3nVmUDBs~&$Sfu`w;u_bgh)1sn3P};m1OZa*uvE11T$%AVCMW4kBOaA9Cz1xj zZ{3aY-uxR#fpa_5T92Vv;j>0_mryv*%RaFXN|tU5_c%L$@co=%7^&Eh#DVq0+=C4| z%{pDV*j!ye9rp~_!vRcGs?b3jiu}1dk^#@M(>vda>RpSe-)-zom2a+;l+X?qkJ8DW z*b%5aID7nADkB6-ty*)QB4UQ_k_gREm#ujp1V;D<(}mCQB;0u{S)XiGNlNRe{n^BY zjaIHLiy}jdzg%VMxqHb%O!Wg^sU(|QGZNk^AL4)YEoNXvdi3xhuEzf8r*>zuVL0MI`R2PmUU26fqt zweOMo9c|<(2Ir^a|1HUU}t`l~=|NUV~)tk^1^L*jiaX?DT0U7Q@r*M9M!TqUA zqaVoV#u-5U@U!_d_Np8|`2HAy{3S;m5TedmKBY^iJVT>}yP+~P`Asd?A$jVnM&)!( z`jeDb?vsDN<1@-nL!aKe;`5;xq_L5zc8&?X@;sro=sbN9w)52=dh2JNCCMV@(Yv|0 zm3u7HLh*#>4!oD@<(My>rrOI_`@1OW= zg_G`_J`W`xR`!`xKl!4+#J1em_&&%Qh8YonN_e~1%hr=pJ^NlfA#{21jZQODhtIxC z()~dt-NXwu6v~NT5b&wUZRT56(LxERcyfNOyH#B+|33Z|E-Ltba`&MG8UVhkY?&Z8 zhtNM&|Lb4&mg#jt{`ndTC+h$Q=RbXd+Oefkb=M$hY&rl~g%=~pwBx_8X^5;vcD(E@ z#M*WoJrwbbEnxkU_eSYu=%>c!may-qLzk+i#YzNNI3C|<*(X|FX*uA2Z1#QW>Gi)l zDY}=kbehUmc5hAUFBeh5{w6F(3Dh8kF>BD$aSkCf?67UzfG%~coWpe}J*kyVcBn~xc_u?@aZ;ukl)H{~y$`TnhH!BoMm zER$C^BlLZaX9kWxaCGSYNE0IA3*fjIo&#{@hT|%soM=Z^lO@rNA$oP7<~kG49LxXp zA8>m|>}Fd#m_>SAj(UK`S^X~s^5=2-5YBEm3=l-68RUzk$CHyjdRqPb$5%U6Dm*c2Ga zEvDjd&|!=hLQW%D6wX z+GOhXBt3KxQ=N-%0_x=?~ z^y8_C{(g(K%9^p$)PFE=14xJQL12!n=Yluk(gpR6_(1KS!b7O|^ZSeYd5PQj&kk!V zh`*zG!21gi#vpjQ!TP803_l&}<6Zq?wLztEQ`?6+JEvdBCZ4Y)>V>|Ns0c3y9VX*+i7)Zz?3dcTCag z#7p7BDDiN;Yq;!Bey2!=VL(@SR1qfw2hHVlp3F~kkAA36-@C;v3w_kF5%q#tQ(3yO zA97@Q()rGg((?fFgkmlZPi1!ge}VZk&8R=L!8(41KeB-M%QZ*IYF2)N1>_>37sTHy zA7H;iNGa1^^^kwQIC-L7nRZ73j*fnO4JGV{dMfll-)1HbaJ2e<)Of&alrE8^@T25$ z6NP(AWzMblhXp0J8F2 zKOCHYma-TO#en>i6)hx74~V}B%H9JJv~@_>y2kzJ~v;JY0pAn*>IXK#r-v# zE6F4&JT}`Wp-P&aMn_?mb_H7}I!r&Epih7{-RaEo?EmtAlEpxKLxMm@U^(|s#5*d* z=4zwQ_tH9D@;}Hg1TGShd*K( zHh*#Iw$LfXl>hiwej^Bd?Hx8GYDHt*6~w+8eA! z3_y0%Z3Ky?!&PwpOd#k)Skf()P~TB8WCLy0^%;#_FH~4{h!5%=HXg}Yc8xl&^?c#? zzjfh&@j_x^G+n`crY-LhenMIrKo+|O`F+hpv71K?*&3;?%;C_D@M9K&MV7~?x%^fI zmkEzbd8k}0It3|D14I&>So#G$KK&PeJxcHTng0<`=Hep=(UMjc0sZ6P>JgTOOSy=C zh?zJlh1;CV|7|kk?hU#x^7gX$It3ONAc)@)ATX#DKb%0EF>oOfK1G zC#hD9u6Siu6o7``7c37M&o*B2e@;R83B()OYVhoc72>}q>M@hOyrj(h(bU?$xjMO1 zMN~s1O!VX*qp8BJgLUH5IYGRPB{G&I@2(VWWCV<+yF~hCdqu#ru%76@rAy7cMu{HfSSDe@Ob}_ zW6|05F2e+-yEF{JmZAu&6G67V`ltYn0J z>l+^GJG+63rq1NU!=xNzycY_BO2lKjF?h#M{k%|hT*AvDQAY(y50je1F@E=i0TUz! z4Up(sXOemTiZx^)2U)O#+O`l>5u5_4s3KvtmKAXAYA7q0_jOn17?iaB>Rz0rSh_;^ z>dp75=r=Uc->(mqgf{jprUq~XwGb8z)kDo*8bH9`~vA`RvOxcsY$q!6PR7%heS zw1DDS{FFGqW6%pJ3FFSNk|PW5Z)&c9{D1KL!TecWW>>TL9!p+|Q*=r}NTqYS4gYw)F*Jyh>btpNW z@g^%Bz-1K2lca`)QsU751%W&~zhT-J#)3(|#120rNh%5VOWv|^NxvSK8@<%79rubE zBW+C%!Oh41{(U|7OCQomIR_i=Zr5mcvhcyn8&}B;@cuvlaefn2vs+tQ2ylLN9>15e zTnvvhP7TVG{T)GrHtJ6psxL!~yjtQ`+Ox5W^H<&Z8iw@H zWsGK=ArIlAH+{fVc_{Qt-gLus=O!aJ9*u;m*I1D z!$?V5s=A|B@iQR!Ve`6vNpbJ4f_=&f$!|c zz7K5Ao)C}e{{8f6`8?VAv`z*9NF;|92N}i?eB!hetE&nG2{;t)`%&1aY0||+)<}m1 z!D1$(P92aTlqBjW)nuf`&5smyVY1WhsP2f^rk#5lxf7t{`LMsHEdg-WNOX9tbi;2n z`WsDgNi-*~hPhuv9G2dXnkRwpoc{y%FO#gJ5?f&X-~i5_<4HjMx-0x8nt&FV|6|uk z8I68QIFF;i{gpAu8lyKuLo32%#PCLb|Gl5fGx! zm517beIzMeL9(Do&x}wxfBrG$YO_G@4i7~SIzO&fNNjv~{CC~(uU_&gbB33*&qwHK z>8(%@3IO2Hl+E=bcc9Fk`d-+me?hX9jtQvZPYi$Jkmh^8)HpiVAwXK@gyUOYPVuO= z^p9J*FplR66jp3~9wtZWFOPEk@78uVGxX_Z0*Sf6XeLy`$f}Z)+0O=2r^W*>#_>UF z_3a;j+9ElNADq7tQF^Oe$^<%W^yhm?5Y0L}5%RhLKrMpBv87HOX?1^Hjg;QHD6qii zcU?vBQa-brZDayz#OPhwYI7_1)<30Gn@O6+GNIha^14b63_xO&-}`G)oLM1!tJbn;=oT5M5pCT|g zl>P?ymo-IH#mPbbhH8XWAz1%_BXZkUaywk|)r(~|1HQjwg7c>CyM$O zO4$OkgXf;5TC9ulc;ZjN1fo+=5D)m2os4)CCn8xU!hnVVjB7L0%}94MCT_+yV8CL;5mOA|KJmGBt}#&x(bee#-swRLA8zOC94B0Ey?!i}HO^ zk}iU+a9yqlp|D%ArR#14^^Sp)-g%eTw;_A^JpFMreVqbaiC5zpGfbub@OqF-Bu#PE zb9uAR2G86HV#YpQ+y0zR-C0Oof-vmid5a?e4nHeZt#dm=v>~o3S$SX>DXNa`EEg zE<=8Ee@R110EG~qL4lz=Twn2iJyMt7*6g~Bj#AO)`8?;#z7f~#6q7lA)a=d9(X)bK zq`UYn-!pOOQ4f0ewZnFjC(Tmm)X*huoNx#w?7#cFL~pbekI`bpg7|L{iN=(^7!w50RT%cgsi=SHVp`7{_7r$kOHiS7DB99lG?ku&qN z9D-m-Ao*wUgZ^c2=?qr|F|zaokpIRF?qBFyKCe^W)&Kwe6QU1KetL7g8zZA-80HaPKFO!=>jQ(f7YEl*-!*=-Jh>6` zdEo;l*?Q9vJ^S1~ZQ{{~Cg< z0~(A!${57I`mp9_{K+WblF?N@7DU2ut)4f7IJdbOgD_q!ud9b8y_;P>Qa#xPKcSgv zMUj(1+1@0M5yK#MXiQVz^$L? zj8A!Hqo)$Cn-|cO7VXzZjD=f8I;xP_a{8GEE6E-Qamlu3nZfk9NOYgpn{)m_-TCWT zRn>SLIx;0h~X8{AaAXST)8u&KM{pfP9$r)Jv-B z8_`q{x?%n{+uTr#H&xTxZbrUFmE1erh1Ux_FQ(=Nx@Mz1@0129ppz5^^HIp)goh7K zI=@zbpC*2;uI}NTd$l4HPS?Mc#jd3O=1t;^WOIx+u;M=Wu5ORl>Gf<|f|qe^&C}(E zf!k#dX6?TJ6aJ$#*4tHkH>G|jSoE(jzmt;TOjmG~ATe}olN82-oq_0G@OX1s?f?0| zH%m7vOpC#Q`#b0J6D?zqf7L_K$KgTtC?J~kQA?{NTs=*C%f*hQ#>7PZ6*V?a+TBhQ z#9NlU#^qm@QZ}nuw6k{dZw39M(GrNiN4D*w(zit{Ui)~WIJOP3z>>mY#`O9I^%KZ) zBX?|w76raaOXoReCBY-%`5lanI3{qw;fUQ{~HsuK5KM?MmOzRIDNp8p6ZHFZ?!+td+Gd< zk~=h$ahhlGlb`b^&-vT995{$yYvh9bPxKqW5Vu4)iUL%>^Idq#kgO*9M*-9J+we6? zWnZY`%R?qpW82W`FD&ntKDA6fJRx@eu{^2zT`Lxh1qmEvpRM_bv~F$m9I}kL3~$*v z9B4L+jp>%Pl1wh%B@tkO-fyB+fD0ks8Eh17I&}N3UzkDg%(p%y2PE|B{s|q~Sx(&j zi0y;OUg@PGe;by0o%pkW_>CB^SP6ll`$&yRN$YP*Q~5QV#}DkS(vEa*XyZWq6v?s% z?q67f`xlNl6JQk!zIuoKl=N7x9cM)8-p<%={yW?74XB#owK*h>^xPefdlFf|$#&@I z{hDtdJ4tyCB6BZrScSHo8XOWwW{3Vh3^>*O+~9L`Ts^D*4Z!{1v?$3N&wJ1$BkNZkL6PE|`+nVD2LJ=OV(#6TlZ6wbyys`yz>p=##M9b*f_k*7Trb<2* zEnh;z6qXJ{9jaLMdGfunRD;`U>c)+AQNF()i1ak@8yVQ+y<#I^M!0L6)aDcx2`>|} zAE=23GezG>c-Zz>)*`rTq(hlW zW0_WQz1b2K2IJA~O$V2s-y4XQU5lXk$Gcrl1-^CaVZ<<^4OXa0i$vEUC@E0c$&{9o zA&*8*l^h0HHOsy4j&b=tpM5j>QvbUs4MvJ9s)ILT72X{Pi43lcy;RbYbB5!8BR6P? z#_#xv<)C?Ag_F|{eO+-LIx4s6(DeV`-@SR{2*^Jtpzz@Q8GQdS3Lt;DkMN)VKuvR0 z)}V;E-w`tuYD;4QAstAS=4DcpaKt`#L<#H)tyfKP`HuK!6qZmtz7fsN&>|bF^YrLY zG@F=p&;Mz);^VGr8d5S$_|A}^gXYsgJ(!33;9CJTU+M~}0^7TvQjNUKG_3ygjNtz#s;#Tp4t44Wm z%Ba{YE`8bOWHPGZ?>9#$>`tvqC&aR3aCLUrG@lUd9^1conA#we{I#4J|B0`0r?pF$z*mI+(W3*w({U&SgN}fAeyOS-8zX%of2VUL~ z(8UqLUy^+T0Sw})Ra(GT{n}f@(bxUnEYIVxh|91%WK`S&S~_n&{zD?F>vCE{%0Q_k zx<5K~nwB!>`e?_6)%R`vW(Vl|uB#uV_sz8^WtrpHR_>F_*(R^8*=F%-2(jWEom?V4 z#Y0FnS^n?8iSzrwHc~|fuF0)L&jss2G|kk({@o4GfIebuDbW;gDvrkILm=Zk@Y}|2 zwM(#Fm#sg+4F`?JWOVi1r3EF4f#2>+2EW#^$?#8p*eDO4f&@K@RAfzy~0vZd=R1w^vc`!c2I@dV%oc~D{dB*>*qSXS|w7~i^ zoG}S-7hI}`85Dn2Pj9?GOxVB)T{=mT=zhP?VzIZI$s&fr zHt2ulO((vGhTo5R;!U79_wNAf{~o3($9R?ydTb73fEQ#?T1hhoYh=w%QtDNS9Q4)KDWXrr}}FQ&+I&Hsx$!LZp?#IH8;FQDYRkL zcJ=<+qL1vtWE@R*-EZl5Y#Lc{X+!-`_?`XX@|nFqMPuR4tx2pvVI9}6;;H(L=w2~N zkDZhX!RMYsQ5J(dNq@-X%)@aI$Bb>@v6r;Uu&noU)IYk#UPl;t_-x>HOnaB9hJ6Q- zCM|$lXjoo;(eVACC-H4qe8-iC>2rqZ)N(g+rPt^PFerWeqibe;SzPR-iPzsa>Ac^B z#Zx%8Wk)DmK19EmSI+JaNql&ET$kzoA++H`ef#VMhmcc;_4R->_pD4+YgZI}goa=1=y_myPQjCr=Uno8z z*Ua<1)J5OjUoel`ep~xJm!4L-lg-eie;7sy25OmDO=gpF+zS>HtS~wK*!6e$MRC?i z*dNH<@$5&@rA<)&rqiI+$zVh#JL+yb+_o;PutsXifx_OZRQWc+7jTe834j0>Q?1h{2+e!0-+BP zl#oP$`V|Q9|9YZ&y-b0-&X5ET?oZ+FI*~5l4>GnIV)xmeN%)goSww%z*NLzTtiD95bELQPp-Y>`FlU?%z9oC)!9iPw}dEPZ*Tmuubs zwfU-Deq7tze@6%H2mW2zP`*huPGKCq*m?g8)(;gl?;Jt=kpZW%>jvUqb+@JX&^`nW zu>O1r2Q*!CV%1eq@N1t2=?wM+=jkd6}3)jx5)mCGHS)=G*O@+gibVn9~JF8A~F8-pYKCj1lnj_+3was zbJ&NV!n5-yhwLpe>4E$2btpgp4F}_QmjmkuXY3jO2i$-0XMt>S(lNhb%@auCbzKaBn%xwhypP?^vaU}K{2oBMp*V3W-{C5AC3=dSTh ze(l8+qoZz7#09@cR}Ve@Dj;5468FuaXdU#VFm69Xie=?2eh|NYk1}xFV69^S_m>e4 zVE-O_g}=@brwjIv;5d_gO$R^tn~kYE99;ZgoXnC5OBHipCBYO8)O|~GpK#+B9}`eG z48p!e3kf7f_PCc|HP(_&D(Cmxl6_8;!cKo+g@c7HRyZ9Pg=k4fFWKtY*oS&jl{S(^ z(ZHj>e1u{m0z~SLy{qvg~Y4vZOW!>e!dSqJKt{{B6 z@DUWj1*EhEfckKMZNfSJ0`~9Yh%skSzY&QC_s7Bdb5K=+zn%oE9*#caKPJF8NZ-z`o>e%!lY?<2oB2chGB>cgdHbu5_T1uvPiJ?7(bt@4Zu9I-k?Vl4(G5<$^6u<1XsUCjP(kpGS^q zZy|RXu^PLsVE@9SEA~9sonQ#^XTo8?osi3+#m*&dg^rRaucCmmpl|*WHa5QtBRn3A z%QXzs6=b61F0Oww$@RlX zPFV4a@y@Uq`OV`nuG1SU=-fh2ttoLN)*td~rEjom#{GXZeQ6++|M&JiV`j`S7!1Zf z7`qs2$TIe^Wvp3i>=D@$EymcF?1U(LNQG3i+Oua*MInS%MMYoDbMt%tUV33JXU=^- z=RTk7T$kKn7XH)RfVl+hg&K8{A5-dClV{-R1TPF0NN%?>VR3r=D)?<~YquAD-hZ|% zYvClr>*4dke_nA@CUrBc75Kpcq31t@r&JE{$8U|Z4c|K84p0>(ca>%Rc}y+~%fXY#W;^|rHZwm&z5 z`^1syhOhbRnXhe5X$Xv7^Jvp>lW%*I+3)Wg!kxfuefHCyAfH`@8}~- zC1tpTSlf?dJ6`3(XUUu=p5L0ku`|=8BJKPbk91UoI4*p4aI-p&w{RxbE0=Zn4)UdPgv)BD)i1YR=RwKm+XaQU6%nY$0q zYH|nSlDd0_zRgK|_%nIz`K(JEgE9T>zh{Nmsv&~heVW=K{}w#Ix-ixsP`E`NstgJ2 ze-QPSVE%ymr9dSKPXm@k2E47j8{Ie$HTY9I%!Rk!W0XF8PPO7CX}NbH>uKac7o# z-4%gKA}N^ol%Tyme>{0@IWQNQny|8++Y4jj1HN9 z3k&c7LZ0adGDi5=5i!UemI`hZ(wPm)iC25We>;4;nIfp5Irppmr*U^;j~K*O23M7{ zmSrr(d;XsDTgKbyGq|wSRMnxgcVAy{{QP&JMdU_!;7+3%=Vf|*4=%s{ApgPmS8#yO zFSx%$0`(_B{W_s5N(uyjniH7vd%T^Oi&xu2 zwQKZ?C8zh(XRXhE9XM@FWXj!c{FXQOeE-wK?Z3CG!#fL#Nrtd$qIJIh4`&v(@G-7> z=7h)qHV$duoYvo)>am?NiPnSHu~nw4XO9cb5C8UM;cOMUmid-Uyz#j{9C|gEW~=|w ziG{KE>+<|V#-LvIgk<}NE8sM#ka%Wf9em|#0%5F`dLgc)Na{}`l$`N2n+Y;48WH= zg-^k{%`rwvV#!%U*TaUMDvYmG4vC03waE~lID^-Bz{<43Lf^df#8Tm>CNz1Bll6>k zU>S!&z_ChkK3-BgL9q1n->L4oAD)4a9i@u^yN*}$8zzRQ{SUPWF& zi5nn!E z0ApSz875!zKR$=~L)&^MWHq?PHO_K4Y^z2{%w z_e+kL&9d?uH)FVe7N5G)yX4Bp&n{zFU+dmmPKFs9{HzqitzoS-yAM>j4%MjPlQoRes)pZ zDT*gF2YQ#EMVVbnYrWcG5SGjZ+y^vSj}k7d=#m-#p6{IgzA@kW1exmm4Bowbi)rF@ zBmLU>zB~gKCgCOlR6MV&-|Q`mZKdh~C>%)!#-i{@BpEJcG##L#GHX zm+4cD!Z8p}XC?YtYe<1Y#3{{n4` zhJ3Xo&PlD*;8M0)x0KRRQ)n<$?4@;0nR%(ZD?*Z1*mSCMIRvDiXeT*+=b9&~6OkAI z*pH6fUCx0SXBZ;%Fr|R^88Tc9D1IQczG5kp>150qK!+P&!Dw`0Yf>>i1Hd48As#2vo^nHR%ZTg4nL20Zu7dSE2of$&f&RLXO7jV zc(!4l%*yxV+&9}>pCo1b!LS3x7%v@{gu}Qs7H9Ns!9g-`F z;+ePmOwxpcw(KomZJjb(xL3{Co4XMh3lDqnA$k+s<Lsw z;Dt%eBvE$yFbf-kJwrOkH-aGYp2rTY2j8I95+wAH04Y$k9Mu8`c_6TJh^(E)^BKpnZ0*el_(A@|E_S#F#ZTqJ zC&MGoLsF>f%HaMu$$(xwGn&a>6O^cO+)*^CEld8PY9o1V_pFR^EeA_CeoMXCNiCxA zdgxDCw=*i-27f6HrjNi2V_-MP=mCvZhq#+1;Ax=pnG`^QLjfY;ReF**|M)$ekij) zA8G-4B;oHH<9Fu%?M|ks++^t5Vf;b<8@F9d0PZx`VzNm@8q*6aP(K00Z%#j)-wqec z2uO<)s%tU@*#Z?FnsND^b#5U{caiWa*57dFpM>8q;F#>!@^vmfYmv7z*11RnG`>W_ zGyudHQpvQaPBNf3DI7yZ0LgqmWHyClROD`y@rqbzpX_wLc>gh}aq9ly$#eX-SW4YW zcSJQ*iiNe$k8Y$>t$NgJ_waL&`qTd@=a{UCke($|_^ocXq5)F?hOhh+!|A2G^}qZN zTgD7`f&3q?ie#Sy{SY5(qnn`qm?8bd%$FK=P{g0&a(Z#864u?^eoOJ&gEu-cg);XB zc-y+{EgVPt)+sLpip~Grs=jUUP6h+s8rTs5gzuPtZYNybR_nBgG75L((d!`F{&Yyw zwbB5pb=9BG)<2ByUejkc?EdxL>m>h^8}+t*nGp_Zg9gGc#^ARc9Fn^^rkWyt@81l> zbPdE?tMn6=X_StI43xDmC*T6$;{i)khj3c)A%0re62}Nw|2wgrwSU09pR! z$u*!8++g0rc|mPIHBd~B#l}x21~=vcBtoD0h#hx56RE+o+f#-1JuaPmp|HQ8cJo_J z5>+Phd}>^=dUmL$UDzo=>$J*;Z||xCGwYeiTDw~UnI=0WoTr_JXLV%d*zP;DH?iR3 zFX}TH{_p+$;QV5>HqTU6;ieYOM4L0ckg-;mBKU*+pJK7{W;R=)Z0rreny7AYl-mRmP>Ie_tc{lwzv@;264_xI)#pJx=dUDFeLi zU4)mV+CqVZcubI?BI}qTtQK7nqwHW#yoX@-^YD9m$ykNJN))+Z)XytTdh}1$COGQL zgn&$R&t0YpzoqLpR#+UVkHJhF~ThWuIWd*NK;zk%X}P4t8Esl8<~8H)43*nYv(^VJmM` z!%c8-Ge~WWytd7w(oC=9-n%G;t%61!5#yTuG)`y~1E1?w85-j0I-WSZqdt1R$P$C?AVe z(lH-5wnq)7bim*cu_KP;2-GK^51nghR*OnPQ;%(RwQ5J<fwK?+qCyJpP;$8wnu+0Do874`%_S%MCL&b>YDy1F&uqnjO^j0_u^UI&;Y)-rSRU0TTZ@gvk7uC##mHkP4z&MB{ZeXYu0Y&A=V40D!spoXK=Hb5c%o z6&1<{cOhY9xbfB*OCco+$0v^2l7dSP=ZBzvwTcWl|KShitf=z^`NJv3r}XR46q-%^ zbpX`=A!X)~r?3h3o)0VCs7<=Q?<1vZf&P%BMy;j+m#LDt23s|FcZBsfZ%+xQ#`7NL zZcuP%Ly3rv^34A4HLe8z7`ZldR)T~~H3o{Lm{dE1?&}eH$g_3wEng;#Ql6-@2yBh- z-oH%!FsC|F0Yk8~yWFkKg2^(z$qh#32Xk~jwr0L~9HzMta^n-DfFb*z9>gY|gt3Q? zk01Tt{v+tWECkMPxhP=&j7Nk0XJ&#;GOUGY2N9#?rUI?F|KzOdktO)v5kjdCTYyGt z*@@6D1HPPH;n>z=x&>OdE4FH^wk2KJfc*EdeNV{e$sZ_Op6u7}p4yPE z1;!sVu&`x)E2p0I=ywr9A_14M`{QGQ*RkiIHw)W7=NNm3_sfp% zVm98QqR3A+|BqECemSG5sYJg}ym!vd5Q*DMgZhI;81@Xoc}Cyj0YU_|G=St0W%>>`2>A%RQODMD zYlXTV3K1FcdpL{cisfqgJ_)n-6evQ@etR~Dr##2KH>#efWbrgNQ&Rs z(`)6c`k&4XQP>@N$7xt03WQjuU%j?w(;1%XN(kziGBvOuTr}iSO(NHIa_ZXHuJDO2 zQnYGMYF%T!`->&kz^r9uhOKX^SBepgWmNC{yPFRmMw6kgfq)1T^?&m#$kr%kB0x+C z$w8V6#X(h=|C};PY3`v~r+9YKke#8SB`7iF>H#+dM<2vEci%%IpXms+`Cgwp^mGrm z;nOH0^Vf^1joMsxT|2?%r0p!9<_KkAI7IdC&bfJdkpPlsJWu2ZYiqhwa@Du&RCv{9 zHt7t>`MUR<0icGx3M8d&N&c^Y*jmC+Ha-&xe}4mb&fumN zv2mT3& zGzqvbLO#i1RK9a;H(LSuv0+|Mjl@slC` zKys3{pggDPNIvb9%0|SUeaoW}{kbtOzqs+P4vfp4OKXp(Bp4bT=ly}aY?ocl7``7A z50m)`JP`pEW$4>x8^y;H(;f&eu}A8-zoK(zFazQN*Qs;14&fhvw+=hQ)dQc8b9k&9 zqIu{~_fWOt_dWk!z0uQU#@N5H*C_5s16bxT5T9`JLHxn_e>-k6V2KCACDvYnMu{_j zxA*^8<4?3id;p-$k}ndooLt?B11UFh3Y!8#_1O$o0(A^WbEoY{Y2)+z>mkdP)6N#B$-}Q$ahS+f1r-d9=?;03EBC{H5|unJcDwOe?AX}|3{U=- zItA|^$;LKTln2AK)&ZlI#?-Uh z+>V}P8lXE4&&wr45Ai2%4G7J8epYekHW=tsQ{ZF92cK%&rV(vYB)W@oU>3(Z_!^g9 z&np|h9ZCqFw9-Gy*~Ex^+}&~Ynf&8^_E&M!n$jNy|V0uTm{&4xpe2&N5o7s%&4s8~#PwqlamOB}JkH$cYf$xbTrncBzazKNOyS z5hn%5C8Wf8%3|nJPsPIg8SBq(H>6FNoYA8ig&cpGA?IsgJHEYyaxgTmyDRa({s-~` zYme{;m6GEJ3%Zb?enl{aKMervlce$yL||Tg;a98&7n6(j>$^r(knFx~(VBKQKj;9!^fYr651W=-Ui6CH9RD%a^>6yTEq8yO?r z_(HBr#q#4N>-CTzQOpNC?JaO`v5|Qw^x37}RINV47}@ldeK=09HtL1|V+Y^{PjkRr zQJ!<^X?`-jlwUbHqQT9?j!KNQ>a}7ytUsXt<5R4|A^vVuO;;+wO!KDjX99o?vtK?8 z51{qoV_ioe?BriBN)7N0Kbqwf(|z}hCVWPgXBV9>x~RU|`UiS$Td>>_Dx^TL;OD{e zmg^V3S?JH&cN9L8ZsDZL%oNO$Q|ALJw4>`d4V%wcJK!dFFBf!OhMAmiJTGf~!kFsT z@=kI%H*-}#yzam6?{@dTeqxbXj@u`}4*r3h<5ks8k0x6&_a8`mSvn>_Y$}!RMY0DU z>d(Ld$V1*4gf{^2#qSn?_~9egPW&k}z#mCS;LQQfEnJ&s?K)Oogl*t|#DVNGo?|X5 zYlz(&b`@^wy}moxeT ztrYyX2tOiK@gN`T@Wn&es#f!H)^c#d;22dwqMUWs{o}9L^t&!<4Pw_dNN+F6_Dlrm zw8sZ1J5SWMo`;=?WO;KxAeaX7+rxt&FoB)QLg6y!J6H{0US*mYGhOjL-tyij_T{(|9$t_k+eH2{bv`R z@8yAi6r5iq=B1c^z5h}dwo~C1U(UO9{_ob=hWqjcb80c~A9Id;7~akyGUatmyW1tY zAUuFTc#elcpKi%_LY;%3=#I#b{`J>d53N(-bU+_`n?CrdYG|;`z8LZ2Os&#qLRJPB z6&+`^DeH0bfAt6Q2se`q#vfO?LF}yoOf&6WaldK6DWqfqR}OIV7<+^_m8Is+Ny6h( zzz2NEFkMDqO>*O`%Bx>OV>k30vK7I5k>8HSHW814a1}>;USHB@zC+Woa4yG>y9Qba z**!7R$l;zD7tJP>e{8#OdPl<$&`+8h6ZIM=^v=|?iYc;pb?@5!=%yvNz1X|^Gtf$3 zM8{co&raUZCkYgux2m=zbS#fmQGSAKec!9=Ca^bD?u<(RdEDXtHJJa|{7%WbivTWu zmjvQxj4U1X!pQx0i3dps%dx)q24f+c#dteLVFc zjA`P|bk6kz>`}(uk#eO`cPCU5=o1pPpla-^TTN4=)8-X(phiMr7Wp&Y_qn?}wT(_E z6@F-*ku@XMV_J`&6w6j{CJn>*8CU;&d-$lR*+{@`&{wXg3`H9|AzahBTlT4AEtaHXFIdB>nR~lvqE>rF5G5e4bN!z3 zauzOG!C2vZfY+(LE(6AYrp!`6JRNYHC=uRMGI_QfayX7|Ezuu4Czk4HlOMp=XPCfy+TFb^aH7}gH%wv72=5;FY5*pU<`SCDIWFwSl zG>HE~&4yM9X){t=0z8f(FW&gL+^2VG_1=rQAyZMl5b>gaZM`|r&$_Eqn|GSA^2EfP ziek~DA$z10_mA(=ufEcST{*9m*~Rv{C2ID>p?@yu|2x2Yh@T^Vw;8NICKo+}|0@9S z9?8BLSyaG+kDhu7g%2FW%VikNhtS6@vMs|kEYnKrT13|vFWx=Dgrq`;_e>d;a@!DbHt2In;-db5=D&ygcjyzfN8DUB65NU~h52R%OKix+Q~evg`W_zLnS# z?+r6hE;xuk2Ye!k!(~I7OygZDi2?l3aAzYAESUec%(X*_RA77P3jA#xFIR1>?JLHg zx(YPF-U*dq{_!KzO>4a7v{o>i;MB(cI2lbGbBE3B@09&qiOzY^kQ|N`^f!zw6s9*l zH@KXjdS_I<|K?=Om*|~xAri-?kckk|l|6!4c5i5D^xth3+PK#B{HTsJk-xdM_XCU5 zI2|N-3>}Rj>1r7AEi{i-!3O?DXm^(4t0=``(v-CHj=w^P+u{D2AOH;&Jgh%lkhGaD zG+`p|1(i2bi$50ZtoerocX2N%Xb zHU8EMLhu*xSBS^KQIEkY4NGm79dspR>IG*d&F@&;as2IflA9Ngh2UjtBXCO&Zh0?` z-VTmd>wWU{OWACduttB|#^j4z@CW_Z5$1oGoBp zTvkSrL)&wyHLQt?FAn050w7mmSVR`%`(_0uM0&4`5xA$arO_FN%( z1LV3Zvv4cT$J@2XRsCykzPnWS^>+La&ZSa?t4^V{Pk=G)j8lhFp7JN-AM%(fQ_`5% zcLLaa+t?`sn-Ebu<15}iQWV&JP3#ps49{W7?*N?U>Aon`!cGsPWEGvZQu_T<%7?BU z?>Q#AX!r5lepFX=j_6Y(mS|#Uj>DXcZ0d>`oNcaDn0Dk&!YA`%oEiD;M{J=hqe~m4KiE2vSsLZlGk)L}qdF$&{zd7kz$njlwI7?H?vTkBpa6 z{|aNy)?u#mxffSm-1*AO7>Z zRoWk1bx0|v{LC|jXC9jk z_>+%N{xNRP6`sF*5Y~HL=g(i6x?UiOUMmMIQ{31&yL&e@vZ{9zLXnU?B+9s-zo6p~ zKLF|Fc2)%IC)Nvf5P!sHF#cfvIHdY9f#(-in>^Ok_4$rsT~owJ3I4@^2CTC*ue$%P zV}?~CZsS76pWL;ilrAP#m2duxe<`T8nxjfDWNU@3ZmR+G_?FdDlz0a3J(vWtd&&08>z+;re?^@DeIfA$da1-yL{PSf9YELhOu5!?2&LzAI7)s z&uEuDb|y(Fdy`|KVq@?ct(A z6q0205<6FP4c;Lzd=xqbfxiNaIx*_}9ky*%R@uMc{U_|H=LJyd&5P|>5@Wx%V68)u zp=FLu)a1vwQ>%=lSAR?1{_smiaw(5|Wlk@$U&8mllhDO1DX5=CPmMlPmH&!jcL8Q4 ztT*73+m~~4I1A~t>P<8Mj9)5GcW;!$r^u8L3!r-WOJ)=g8stTLQ>N$9FPA??1SMK< z9>gCBK%v;#gZ>js+gJhXKVs1yeAxtm6U;Zc5qO}m-+GI1H8&-m<#s4Q06t{KQw2Y! zpC~!aDK%N^`Thyc@?mC1ZDYHIeVf>{*4=Pjd`#i>ZU1u5i`OIXT=xqX13l84! znRWf+Ip!x`NqVw03GNo0{lH0#hT(Ez4^diX5@$0iH;Gst8v()Qr&-l>Bj`$PN zf86>1Kfm`t{0I5p>9PXiHyf~Z0^eVdR$%=Hh(Kdj3a!(ttl|-jzd)pSf(=b!j>k#S z&)$MKJUlJ|6-j!Y_UW!jJ|XetQvd;C2ddtw{dHqDnoCU=`63#(uaNiSsM<{*$KbIj>BMHttaZSd03)hIr`I#(O(LCYnNN!?Lrt{Y(5`+bzjlG|O9mf9;Fj zK{Nmoq`~(p<&{qJMVW@53y$;&Q#;$njS~F-J-<)59S{0vP7-Rn6A8fU^@GcLX+)Qm%doPHPUO4&$DMgi7X;1%j&iG||CK1h#ONC zfXw+bzcB(?PHFO;t+3;TgsUeuFPA2b;+fn@3e0RQ1`0$J^d62oK?)-@?Uw849hisX z;WOu5MS8zzd++`HpUlc>iu8(eP}?t5+h%Z(A)vGdgMAiY5-6G@J?GkE_t~W`oDS_wEm;ft#2oGv);W6&$GrP z2CEBv%5%kpS2O=oHJ7}Op{2;N#Q&m0mzBmpu`#AyUeUpCQnu^H8YC}_uxeWm>o+>dLq39t*hwCe80DO`VH9r zfCHw6_{D-i&wB*YBkw9%?-B*yz`EYR8=^7~VBe3O5;Ey{&iHq)6IiTeQD2;0aUqXh zexvp_n92QX$W+xoanf<8B`-fHLj6c7uajY@`PqD!=OfH-a#d`#(meOm3gW-Gt>*{$ z)gcq^9IgS`-vGB+Fd9KmM_iC=uxLKc+B@Z0{NVGhjD{J`6LqyT+>ZUwzrYYO5rlcYo5p#bw`)TMkCK2p>-yF{ z#p9h)Y7(0XsfLM<$bh{gkfUM>B+?D711vNIEH2UO+&*d=dUw+HtDiClUV7Je>g#sg zUIADx#$X1bp#u*PS-x}_H9G(O`Z;!q0U?b{PFm!xSf}k{0%u1|QkV>gh=3uT*CjcB zNHm94myM;jet#PN-6>(MH5%LJ;f+>`JG$_7UiECcute9#nz-E?o97`kfJ6j1@rn3H zdt)}L&xXwo`9Ib)h%1}xDxnjN?P~C@L_?6<{>S;tXn=W&G&hV0kS72pAE?2?#QCLV z$IqpzCyFYSLjQABd4X9*4%oFaP$8kQSEA!~>b+#xK9WPbF8tdVHIH?7RX4+Ec3Yjv z-4YhpAOTzrSvq5Ok%EsWH4JN+$i^nGjaky2tOwCKqP|FnjA|WtaCh6P(Hq-5i8*e4 zTQ^5zF~fT^^v~*;9L?QR9zGxnSQ!?GWDz3eP=6q_;;d06rUdDkG@K?Ln+vCLadqxK9<8`XuRDBqy;FC{- z1k=2jDrvrw`s{}5KJl&x2WFvDB25}9*(pU)@e@i#ZjjgkW7F|LWC{C`0G_CK#3{~i zX);gAkOa1q)Yg$)Ppfges#Hf zZ!B@Rq*4gBcz43!_Je}PL;nt!_^s0{E&&Qu7;o45mJUK3PSLf$SwdK}XRao7W~P#R zZVn4rveQ{JZ+&*ZobB+t4F}Z;^P<9zj|APZ8f-5!a4#^BNd2&JI`1!)VkCDFAtQf; z>7ffHREWV~m{i^HByo}zCssau8n}G)w?fZ??%m1zkQ~5H24CC!hMCGGPZ3I$w1x6L zzb1*8_6uVg91}S?OI5peEE&8X)o0vtYs`&t)`7vh20!bwAVBp>_;TFFPG@j1;qF2F z{oq^PY*U{Qo){j__KE}iWk!ZfzBJMaaDM*1m=^F^s5IJ%SStb?Y!#qq&E;_%%85fdo9N-V5ZH01-4@;TjvEoRYj<`4+cl1PJ zaZsom!n3nGlcIcSkf^RF5`}v!YsO&wm;oT^XyHT@FX8!JhTpSF?Z`_!d-_^`<)8%y zELc`O!dh#J`lw8#XBEaE3_ld_Se5*)H6wF+tmuwre#iG7EqhqF+G8OumGL(tDj$DE zw+Cyxc%YbsDtcV6kt6=Q(gfbIL@$sq7`~+;WrNHxj6)(UypRy}h(}AxLMukpG>`sm zPBLE?n}{W~AK<@C+lu5kK3Gh|@RFQE;j#cc)5E$B7J_#_(62)RFdYG^gQj!n#6xaM zRPp@@S=Kjvt9|p=LfTK$f+=N1y2%}~LSJ89(${57Fz$frDkQJ_fI_#SMzZGF=Ol+# zdbDItVe%stp~Wh4zK8VroVFQV+Qzj)`^7XJg;Brt#*q`>EFT@2eC4G+i{1mnXd6ii0Ob^;WDi36`$UEoqT`Fjuj2UCHqb==4>xIc@j zI8DWQ14x*)GIPxtfC8xie2RhO^om>TnBE90HB}MwN+BC|grB)FmnHeL)JwnSu&a4r z2*n#^_lmoPC54A|C+f%zofN$j(Rpi93rSuH(y7rd&OZBxejA`S1g({w8q2!CkY4-(6I7cTFWo#ylB0{Z=i}f+ z8i3Fy1v3o8_{eR4T5r*iy#RA%l2wH(I@i75h~6G)&6WJ2b@gVDND8ba-BVJGVlJ81 z1GIZ4v{&HMmp@io_=o355ucWqw0_HM9_m^$HOiq?$Az{L;SQb&lB zxsw>|?G++Re(IOuAIA-_jjZ*oKUtc009F)NI!r#Fv^VTz`zXAeGp9Y}7>{d;_(A?e z(Za*=7F}yR7*3!_EyN0fTF*ZcM6B(UfK>ePs$o7k`*~6!JK)BxN8t~W9(;>4&ppN5 zy0>pQjs^h8bd}!+;r#FB-!UD1(_BQTxyq4jFV~inKMlf;z+y2Yyz~FX2K9yZM!RN` zm6Fn#eLNEc`7iuhx-nbzEO#|&ET3(d3zAr-N%&i|WwC1dqHKiXd8Gw!7smXehdm5K z>A`DvTih>H`gjao>zzh3!t|^db!O4obZU;c>sCBF!0%5B_t3W4UE{U@_a8MQ%pv9& zUxg-OU#C8(Kl7}Zt@)vqvSOUtg{~Y4eV_Ys@6@?ZQxaE~kPe!xLMra|DO|%&J-o$* zKAlzbP2a))3CJvqP)S=Dzp7R9teb1F>Bu?wC1(triwzn;GS!n4qZT`rR!pj3v$BS? zeH^fO{Q27jv-Z^*toZwu73)vRKM)+k@lI{`FUE)AOFreA>IxxdJunmAZ(Bu z^zYyg<*q2gMi|1)@b)Ha1kXitP=9ZshV4ZXibEh5L&(sT`Q27@yQziW`1U%F_s`y| z7UZLso?el#mXElrJRK83Vg(k#@B;vS>V}5svMUNhH&!*^fq`uCk%Yx<2P>km&{5B7 z!-j@GrIGL}C-I?%7dtZt3!{?*-w!C|T%y#!t5kkmaPqHewY$ln@l3gb!yXnm!tN;( zmx?Z0UN<+ZyNz@pMepA@deh)~SWR293DXy^Svjr1`!UbI#+lH_zRxWJ-I_1|H0(ygv*2!Ba)gHzJjYag zn*iiH`yu}LuyuYbgAH(h@F4#|{$Zk}GIMhe=znxV?41rAp_FBmmuramu6^rdq4&$y zZ=zvo#3fcX5Wd6GSyP)+eUU}ySWE$$NT>vmY6Ocbpty2n{l@b;7?aKH^oiWXVI%Ek3FTv_%HAr3!HdPU z^OEyo%w~NmK0Y>hD9e3S$aJSQ_zJWM$&3*3NWOH6`ONZR{x|^PnnKo|2l`#qq`Bw@ zCNjlFNrBiyGJ!gaEfC>X;408_uo-|GN>UsJ43d_*FYyOQ2}6<}UGnJ;3yQuJ>nt0j zd#c!>o&fko37wDDB!oqsdU!PN-S(-`^Dp0dt2xZ{fdY&^yAR zfHNIP!OKhx59S-&8Xod*Eok8yd?5djKOD0dH4}XcLLN8;>gNQ~44}@Hpnr#I0QZ;R z73XUdwDfn=>so=4@O5|I{4CdLIW&z#g4AC_7v>EJeD2Ki#Ag=b6il)1S8NoPtL24Zk8sw=ntyqngns8`Wf(sZky;j#5%~1e9frk0{un^R z75OYc{%trXKIu<18j{)@E!U*eg*2pJt(wzu81bFmO9sUw7}{e9ATVH?5gN zOZ46?sL?>C_eI1{8vG73#|X!KEnruUho}Oa2~G53ze|IEYD-`8nAv~2bG+_EA4ZO( zr&Jv9ao;j_K=72?kYFDv?d7l578$*Hz4NZVbzox zf0_YgP7KtKWf9bdq&OVY4cwI6T(NTIxMm>6ZKLKscD3i+PgtVc%EjjaKj(9gJ9>SM z{3$j@9qZ?rgOY604X-tER(@;>0a|Smpc%QsYvw2z z%5Hu|gkdQ^M@hBlx53C5r;ok2ng2%aOh@cq(2hH~@WVYqxA4}_T_3$`$Mp>XK!*>e zH7B74{Mi}#Ogq3Y7auOqJ-YN+d5G(P|A}H6cw!^R{1iW6KzH^WBf`Z699>~c07kNb z-HCg9m4e6fYIDk5k+~IVL6RhJcbZBQjA`=~YwMcM<{Dn>$ZJYPu(r!zf5z}!)c+E_ zHgY3cbxB9F`ZgY0Jb(VoTdKm)N!q^QeU2jfpjaxC#94s9N(rSz?Z%$5!Suy64+WuB^))9DW`pxgzB*L#7$?Ia>b>&P+mT2A6{l$)_nUb z_K2>k@nQX?Sq-t~FR$SwhyN~G-F9Rnkl;9IGp|YNQT75EYGmXemBfu^ld$N< z?x}Rs?TNn8b}!X_zwg25_bF`E2l3|v!ew|Z2RAswLH)F^zTY6^PJdPD770NAfA~3A z7$GNfZX9F!!|-;0fBsXg`^^12Zf^m9+F^cbWGY`)T&A6pwtbzW{Q%m~tYA1MqyTX# z4ePvyVtb5XH%}$32!<+rnW$Y|<*{2YKl^6RB+;@zAkECkbGK(`eE!3R8{8b;@bNlH zYKIts&;$kh!&TkUoRjRjQ4OX!n-Ext(S>X!ZVt1qE7u8_hg`KD$@>Pp#ww?c5Ad@k zh3)bUv!cmF?g~)9G?@t*YJUXue>{l4*pnJI$#kBa`v^)LYIRt|d;|Ymad9ToaJ;(u zwU>0$g@C8G{bHCbnHE9PGxMD&^`$FfmHis#dg^L;MXNgoH=T3Pk96jzKbIj{3vn1{ z;-?^2S8<(+fW)q$K7q1()d7Bx|G&>Q9$Y?nG%1Ny_C64H7fA~4XR!bC$AKRxm=N0 zS$4dWi2n|5utGMDbEel-{`fri@K*cTQpaA64`H?LRnQHDfHVdwk4QDKMk}PoJh+Cj z)4fhI{Z@p#cAQIGQH!NQ;r2u2#;yJ?h5Y7QP*KwC363U&4 z_J=)naCpeLQbGO@KMmYpurg2JZU&#me~A7KBMFcU#jcdlBzd-8<7D^@=4HhAmL)p=-!fG=O>sz?Wp=q z(wz$5UBR`^=V-@WueK^&3X70q7{Rq6ko9SfcI8qQy!HF_m7~-x<9KDw*7Rf!ipvln z_vlHK;HLGLh;c4Nx`h9}+zYM7#kMcwLP=RTI>`Yk&&GStFfvHvSmyzLkpH~JJq*5o zEpjau4uJk&%+4l9Q^5Uq66l{bLSR!-v4y;1LME=}ME|#8@@MisAyG1(A9Xzy==zo6 zD)(FQs+!xg-l8axnUQCXpIH*XrvhiJAX;V$bSdR+MAPzu*d95Yo*s@j);BP~Mp@{V z<&D@}QR4R~I0LPcxQZGzyF>n%)PmL@CG z_)Vjpgvm5_-k|rLxGAQIGHuUPuDz)L!_Phi>Q`8S{Q2n+(7%alt^o260nmS^@

    q?6p@R?g^NXg5f^?DIY?YMNaPxEm21RRt`Qfm5jjO% zI7Q?dap4+~gT#e{M6MB6xkg;&8gZ3t#D!}_ei0Xb5qU>kct_+Hap4z{cf^HvM1B!h z`9-Mmi@5NM$SLB&DI(X13)hI8A}*XFa*eofjmR(J!Y?A1i3^vBTqCY>jkwA+;wsmO z3)hI8A}*XFa*eofjmSab!a*X}h^t&9u5yjI$~EFD*N6+(h@2uWoFa0KxNwcgLE^$e zBG-tkTqBx8IY?YMNaP)Hm3PEd-Vqnx5jjO%I7Q?Oap4P* zcf^HvL~arnZW4J%TzE(18gbzok%PpAgG8Opcc@bQA z5#;}HmH)$q|3m%;7ybr$K3wJbpzwU?ISqxwL%t9fz7TmkTzEU=3vuBKkw?UZM?}sK z7tRlPDO`9dJ4g>iK zKNuhR28zlzQ2sC9fY_xXSTK17TzCcKZgJsmk^8}g`$4?#2O}fjfD7M%JOo8}2;`9b z=pSNyT=0Ejrd+rO#96rT^oT2Q;U|!jz=e}Q-US!l1^EM9_ygo8aN#GAx4?zBKu!V| zP6D|Kif|Q(C2`>=sE90p=ZTrf5APZZ&w5PRjqPatl~g}0!N z6XLL3xC+FD6~VsAN%#?y#QRX?A^eD2VuC0<1a-_4%R}KLkmJFH<3XN=B0LS^{)+Gr z$SY8US3tgjB7B4Y*GW*h0YBoQf_n-dfINX>;R%o%@FSLpn=8TxP#;%)EH#%`w@2M4 zrPyr3ocJ= znq19)dA&MLh;efjqyG^bYL2WPN5rxf6)XQSj);$Q!N-YxbCoCX1R|_Xl;HtIMm8 zrEY_|3^8af7&P(aAMIBkOFj095p%(a)#t9hC#dfy#G|>2NB`&tb$_bwGwS<^x=+;S zOB|UCj!cZ03r0*Vm4t{ z44QZ=7rd3&8CP*+E;uqVXf7BuabB+Cyj*ZzV$EE|nz>-j#C*A6zQmNdV9LaQx!}LV zm$~4}#FV*U%EYO;ic@pJsfj^z!JvtubHUJwHFLq5iDh%avWd%c!R3iHbHSR4FLM=N z=7KL1Q|5vx6Km#zH4{@t6;tMdDHC@_!JUaOqlzzc6<i^tOdOdDj!b-+3%*R;nG5br ze3=WrOq`Spc1*09t5`Evv1Tq%p{W#Y*E2S;w5#Z|1C3)W10nXC9R7krsG zG8Y_~_%auKnYc3-+*v&qh%a-&mx(EJ!Ia6V_%TM*V}V#R7p$2$GFNfrAN3P!=7Kd7 zQ|2nB{NsFyBXhx#)%~VEcVfp}uw!D%KhBXjGFNeAuHwi);#M7>#FV*U%EXaTaAfs( zCyvZj9Qnt!CdSPL<5tH8abzwyvO2DaDRUK5{t=VJl(~v2|A=Q|%BW(>KgNQ3><~NV zf*liU=7Kd7N9HPy%mqg#cFa}mm|ahzOqr{gG8asl_!<{{jrcMb ze3_UseZlfCQzmxI1v@6D%mq^>*31QKCa%o|*Cr0j1&1Zpj6Ya2KIVdz6Km#zH4}&B zg2NJP=7Kd7FGj(Oi3@YVg^5jb!KR5vbHSsDHKSn7#FtUFlFM-T*aMHaA#tID3~DeYZUyNxHA{rnHVt_jF`AH3hqp-83k)5rpyIX zCf3XaYbFNG1%oCojDiajQ%1p*i5sF|&BUNlFlb`U#BhGFW)!TMSU(r6pSUv$?o6B! z1*0Us%mrU2?#u;uCLYZNk0zGN1#2ee%LRibuF6&1nX9-nS8-=9xHGY4E?6@$WiFU9 zac30VnbG}7Yv%%E*Bh`7&I3QnwT;dOj+GF;>%p{Wp(@2Z6@x_1$QRC%mrU2 z?#u;uRv(wRGgonE^0fcu&g3m{;Vr1^S09(SGYalZtQiGsCXS4PBNLBC!J~-_qhQU% zpiwYrV$CR6GcjcpOj%u?xHAgwtd1G=btk@zD!z;=zKklq{Nr7O`h5cN6jbqL6nt6z zj*ECM3LZ_|83lJHzKnt|6GukDk%>X0V9>;9P;g}8%P9CV@n}@>XcRn}SThRNOe`1$ z3s$#*I5G;3tgeT69||5#90~<@CT53%O%wb6aV+9iD7Z5*BUG_wRIz3hteN;S3cgI- z83lJH){KHR6JJIZUq%&QM!}bfBctHR#Ewz0W8#S@m@=_26zrIoG76@we!rwXE-`Bq z%vyczh#jL~$Le=(#I;dyZDPkL*s=Ou9I;mv?3I`@3Z_il83lL#U;RdW8C8541z#qn zjDjf>J4V5di94g<&cvEgux8@OC^$0lWfXjw7&Hn7O-vb8Oc@1JCXP(=2mH&Ci7%tz z%fzEm@Mv`z;*}`)GVw|jOqtj{3U*I?83kV^j!fT_{L7JvFQeeg>Nr%#9ZSThRNOneyyUncI1f;$sOM!}JZ zHKSn7#EVhzV&cvyxHIu(RPkjLe3_Uss+ckgrc4|e1xF@cjDi;vQ%1p*iC?4O*Xr@8 zz81utQE+GVxK>{y;@2qnwfY*Vubp~Kso%A#?}6&~uIhW2I?mPae%0IOlUFNw>8){2 z6FWFl=bCc7nC@SNcF^|3Nu_SrR6GK9V0~w*68tR-<%xFC?c^S%t4kK<&ZTucU3w_D zucu>EPx`iEUy_n_zb(z3Y6nlg)>8~;W#G`kc2Kj~Y$g4dWZW{z4jvUr%FBx>SUB7c z!be*wyFRr-yM1=>F(+JEu4#w+#@j<))+EI^GYRj_w1 zO;+p;+vC<3PH?ATV(}w~RygFG6GSziU;J%d8=QZ^30xk}QrZP{w~v#G$mdY28Uz6_-JY=y}TyPOKcJ6gem2KTn-t&|i0y432m!?yW8Qb5|osN z@99{(=H5}tk7i;WYR{~s2g)S5El#EOEG+n-Oo&fI<1N(AUC)%FkFBugJv*3r36&n> zv+?#4+CS=mQXZ3oUrJqWGR@i<{|OTz-~{eQT0ych&_~>5ci5qD0(d-2fu4zfd-fjYY6% zKx{D7#GWC=aXp@c|GcDkl%{FE7l`MRXW)P+KQ5xrEqJf1O$Q_t+ zt4~|BqqUV^$Ieyqe@?|kXaQU9UQ&t%W}>l=IVAa9S4MPggAwJXuwcor%AD$1`0E5y zz=7kH;W1fgHP;lTjMgZtzP7^K(=32iuvWsd+Fb6B_5Sm|>*4foWvfM$PARr0I1 zz_%$DFtzQu;saOc`>DUoz$RZQ9#bzB`>r(y&uZ?<6->t3wJjj$(c0p+IVtGh*A#9w zbt`u37K5!*OkmCS!Ns>ylki2n84NgWuk_cn#*ed1pwzIM^3*sP%X%4AmbrQ+9_My2 zhOV)aCra=1 zMC?A&0wSXRR?=Q2qwP@(2%COLF}c|i&wsUmwiB(DbqC{dn%)dDA3awJ{afKLeW?74 z=ZZz0Se(_=972-~c=?ie%%B4|G7Y2tFayo|r%L3j)_7$!tv|2dsaStY$DLn{X|9!< zN)MMb3><3$AM4y!g8xjyN7+U&z<*5{4{Z&=y8T_H-?$i@^1uL`yYJnf zp^3y_X)SlNG84WlP(qI&qblb$WYk;b!>15*cQ&SVs*SkyfJnSQ#037>UX71yq(kjL zhVZrDNX2@Y4$JD9!Yrq^#omRH$j_O8e`r4?t#KH_eIwYvzC`gb3B^XC#!#is`QP>> z_5}1dH3A#ewmMDJb9n7=7b#?L_Oof`Y{DS<8UQx`LEwesPw zKD5B_GBZfu89{4hwjdAL99$Ml{FKrHr_MEl!LA|P>`5ZlOt*j{18@GKP76HpyE#0% z9Ll99u~;jK*8VQg@|_L|C{vuw@07|jP9S>#{g}wZZ~E^>gNXZCc$_+m!irMmFI z9#NPaZ34HG>+-VSW3X8rGq||B9`DYh@WKHz2(*^?x;I*!-`oN={T<0&!=rFwPfIvt z9Lfv-jG|kfB{-FP@ka$Q_^71?7~b{elP^c$p7C_A=n%;LM$2fOLHC(gS{~I`!fXEK zP#<*s>a`dw7;Xt@7{`01X|dNX3wTBjm8BGcAvAWhJzMal-=cA(chxedx^&`;Bef{c zH-m9SZTY1R(YS+~L-$5${Kn(vIBFt|*{RKWxt{K;T`XaWa|`}8Hy-28SU|FomOE@t zz+=lz;mwi8-1es!+*;cNl;8|LKP(2V|D?6(Gh+AvmsqS5YXW5>lKH61@o3{>205$) zKe{mz8*MU$yiIL*>oLvI_dfNNL3>{7sul}qoZf!blfSD87!gkWxipDixv0ZO#YQkL zwi#dOrlYkGjG);BcfRZv;HP~?(C=Lr-m8%2#;IinPdr=lNu?SbNAsmvrnKStZJMGt z#i9G=c6`g93=J~Op>dCfnE6Rgk-`f%|)v$$5Pn+`npOUcMRU0Te;m^NqkHfz=*}%AQ z7W`&h60Y~K1yd(eUVmy!EZjxwZvSJ?pU`v8dmB6O?c&Feu1>|L=WW4;o-wvuO2V*} zwh%u5jWY9HJdV3<3sHM)xLe;?oEd8iAv+9tsT_yvrrSd1%vVa1e+%@QW(PNqn((@X zDQHS-PuE*u!(T6tMguoHm=|WisUPuao*i8Jlh(s^O~vFR_AoQ6OzGXb1y1{H565{8 zUUVcCqb@tbrmK&X8=d0uHjG6BjRzpTRj+=_gUFp+yeX7u1ELkK<@T{zFU#)q1HVOKOYo{mzUZ?);~I~ znGu00pY34%H6MO+VkDlpVhhJEIdEV9XnZ@v9%>|b^V=EGc(a-<9PSj%H$8|#FIqc0 zu5kjNY7&FS*X*j)V|6@%FF&lqS)Ux>rAZh+>luOfBOD?1zJ~AV7K=51vw_@Rk^D@L z7<@L`7B){x=ZB>PynMw0OzyPiHglsf_p$?=El%LRVF?&`-453M8OaSo6L8BITj(4n z@q$&!cy_rh^d26;1HUJu#aBBxx|{JmZ{soOy$zW3ZOlQ}3iF%UL$iQ}{A5uY=1+Ho zn*V6H89g&hksV>*TR;AKd}~a7=mh?|qImhqG)(^437XBT%Ucd>g;vZNyk;Bng6hdQ z?yoVE{3{2!<16$&?atCnv zJ%fLF-V)!naDwsMBY4v`I_$s53Dm#+6x@JcTor{o7dgV9RbE`NjKcHpoS;d78NW`? z3J*>|8s8M>h!<6rK zu*uC`<8GaS)_>bUs9$I4)Z%!&y37s+pP!^DUY?4BF5AK#=T%{Dty0j6@~ND$tHU;| zPRCeFM~KS2sj=ZVcK9U28G;-9yib1K8gB+U!|ZYEG=D`WqSc=caJb}%=HyRF z=)2htik9t`V$5PNe2)Xz{CQ7WOyjG2fgK$Fyi+>8FBYd$4tTsgN1Edqhed}S;A_`C z5Y7nA>u{)UhxJ z-_~}8?k?HVrmS4VI<9cZiI=__fd;o`!)cBVb$6AqLw)McmufoNs-LbbQssC z0o84pUy<=?v>T`G8u}`{jCKA8>=|uCQjM1D~7LR@Yae~vI z{WW__n&X@~Rgb04Wz?~x-mi|U*N2QGk>l(d9W9C6C%obB8jqBHx*_ ze3B&cf+rqZ!bI-lbjnr|`A+HR>^}zj-$?rPOq;PCi0+Rku@Zd`}7|*UJ|*_mPLk=c=qn|Y`i4$pnZGC zOCk?i)Mkw&a-YqqTP2YbEi&9Gi5!O(7!DJ8(DpAoB#{TDj4zc$zH?~%Z<5G^)W3bC z{Y?`2&KNi$i5y|B<#tKrIBrc!C6Nc+?yE>553)PHN)q`_&c+^+$b<0JH;u?~QoPqn zA`hA?b(KUOG}-ZiM&v$DFFQyg_vtZcog{Lc*#pPz7kSXg=f^c74|2{pRxEO#ZlBLc zBKO&TWVa-8x>E)FC6W8Q8u+^;@}1rISR?Y9kr%T1)P5xFuu%KP+I!b|W^afaYszMfpV! zLzYpiCGM|h0on77nN-q})~_;$QqT8N*t;ZbJCpLDYo;{6Um{NV(-dO8K1n7;ap>CJ z3_2fnVw)|KF?z8n_+GPQlZ#?-L<18rzGuQ>YQ*9#%J08<#@vj>uA?lVq`+7;8r(64X9{{UR{r ziNLXstHI4|nsaO;;B|WwNZ(hBP1qKWD+6dQMElNcT}&|AP`;z?s{v0^Sy}JKXh`om z@>=(1>E&VQnq>+#*152v*D}U(GoWd6*vRZAxY*AOOj>xdM?oR@hY{txs^1=H{$0}K zMB>szCa`d%5p#27*#D*xsP~%|)MN$5Vff~Tag{Q0e^@Y==~{fS#T3{VXSRP11sXp7(DFzS4+d+m`ZIj=$?Vx#n9X5D>3O4Rb&ktXWSOIH+cc;<3h@IV8(YjQ8KgJ#&gc-2<1L85} zpgp~Bw_@Gi#^RSv_VCw6E7rFOy=Uk}?~OY)Wpyp0uy+T0kUNI6!3j|qWMKy$$wBP? z&rzuLvV(U`8Ze~%z1C#PgL+Hs;^Am|A7~3}>Iboz4P!9BuPx+Hie$w+66fgb!DVFv zd&B8m8ry^OwHUU(RxI}UVhf?Wnz2S*BXOITBNY0@v28UYalH|})1Iqkqo2lNN{TI5 z4GU&(@5bRkZ^}34rm_&qP4>TYfO&Ni*@ut>9NW~s%CXe-IGLof>*@3^qRaudUDC0g zU*d5KVmm}lk)%Sh~h=Gqe9)Nz6}UN&q&YAU`Q?*y$oX0kdDqw&_) zdXUAF*|*jaIIxxzOn;KeHc-Cy>U%wSv0rBLuMyZa)CshIxUun5qw!&iBb>S6!CXzF z@p~uAt(5BQ(&kufG{O;@-KoK zfb~v^$3Ywa_kMLOspshE7r%hzG^vHX?lc1RTp!De$FXzK_PBFlBgommg>}!c#9F^J z0`)v0>iIp+UF*(@=DFcv3;?xHb;Y0)|K(}`ruOr%n3v;+Pj&NHZ!XG@kM6;f_J*P1 z6<<*MTI#twVkbUlt>)Fi)qnYddXA3f{2Dv!Rvl9Z_=9uF2j+Cn2~E6wKs|?s+9m7M zXggP(%MT}QZ_zQ{k=9Lrb0DCiAAb00YNsoy@l7s{rJf5#?We5`oXCIl+rH22Xo(k= z&GrKITpx5^KU}iJPcOMRFSXA$r1Tdqu1iLvcWi}4Q|uk-S!FH}wPWTM{F#e$&ph>r zElvk~)zbsi^N^?=uucJAxo8^(U1a{*F{q_)z}54ds9mz`wI8@>gX_>D7EF9$y1Ykj&0Z#FBa*7|&(Ok4=XW$VgVn#imj5;QBR575AVf8gt*Q366>V8&_NA*}!_our5tBh;a z^;M5$bw8;4S>1=~F{O@Gb^NHug*pz^F{AE(_1IUB7xi^i_rLlcq8_K}I8l#lb-by^ zk^0)H?>WbsTJZMPPkDat+EB4Q%Bw!TpR|F+ZeNsHub%MxQ|dzhx;1$H^-g$9Q>Su& zw=Q#d+?5)Ygt zD%<1V_ZiR7)q-cMl9a?b9dLb6E$IHTiP9@z0A^kw#+UVbSlH1H*v7gRNIUl{0|xX( zt(yf5Zaq3o86ATs=sj)4amDubJ!u*T^MPpH#vHEJnknV|S5HviQIe=XWa2W(ENeL8 zPew4+&_xm3i@OwQjBbp;8Y`+n(ZJsnk9)b;y{sm5$zH0w-8Kl@`_cS|#vhcd67mEN z)qt=qPnGB`J@LA&IrLk8Kym&w0DsOhg4Kt-6dT)NxTC)Tye`}>+5WdZr@>)O;pO4D z>()2DpCnSM*yO>bHvRS5JT8 zv*%hsMR}k9u3bevA_np{U6w@uS8R)G+V;j^NnEdr{T0`-cExq1-->Hpv40_5$N6*} zE9&?A@48nUcf=bF&Y<}cEBgP-6j#hncc{EBqRxtI^!2~}6~_|SsA5~}k9?^KTRm<$ zUqBqQV*7267yP1S4LA@qLlN6b=|V|tM^TwantC{{mNiuD7r(72FZS2JVZb7v(6`o$ zYCy$y==G(1-dnTE@}f)})st~M1Wo_`w@k=_dU(Fjy0ZMO`=Pj@ZOzK^qRbFF7ZJA= z?HAjJMwl`Y4}C}0X3l=;c+|c+%v^9y67lmcAOVXVJNfcADn?qf96! zHz2?Q93u?)o&V~;`SGq|(kT;L_A`P-_l$UKjU2pq$rzd+pQId{OwXwE&0*IBB@FcO z_-K$hG>kH0qMktSrIIM~)ytNNjUB=13miH2o}RS34wCY~P~o+aZ5yS`_rgrJp~@r~02!(7HEPD>Q@w{xzA{{Ax*6|gmWG!UJn?n$%tw7gb)` zrGH+@&+oeHTu+WKoxXFIcE+hNo#t#k{lkenwcazv>a6@bhhKNqA22Y=*L9rjs%;t+ zq+Q!0U$)Kj|!8L$zbq{2i{0@1^U0?GJ5I_Xh{s&F!X}YIsrG!Nyg4 zX?0)S*IB=m8bsx30~U|c{nepX>G>v`!k0ZCtK-pL2V(8_9!TudSa*7xxxV@3&)UL9 z^GhH54AoBvo_rv1Wq#?6lY{i*7p0UgK5wtj8bq){@S3>lC3vGOG_JT^*Ldlx_t+lYZolg>8(1r>k>RBmKvVysL%Q5jCNh(p(=j#0w5a-J)qHn&{Wu ztfMnA(dx2R`{{@B*(IG;nCi-}x72qkpISQir#{-b9S7on4uyZp57^oxFA0fhA+R>pHi&sx>M2EnKzO<}*Pu;M`N3}D8152OHh}5ngG(^{MSubsL8-MMD zU;FE}*{{%^f2q;-!;w0xx!d5+3!XZwqgvhBChpp6?}zA~E}f(`UTj*5mwM`64LGfh zY;&t*&Kqyt$uylVr{|TD;Unde)GY&a3tn&4ew%dVz}nNpbnP>yYCk4rm)hLvrt5I& zh&E$nPHFD6d|mtIgTt#wyOiWD9IH#;>mRNOcF`XxiqU;s;9u(5H=*=!?l9fuZ@SW~ z4h{92Hb(1AFO`HtKu+l})=%fUXOVVn8$11#eu28%TmRP1&X3n$Nw}u9JM&08VMHgr zPwX@8O?(<&K0R3NVBvspYF* zv7?~$)pm_8>X@Pa`K*7mVMn6%gQu63ek{19m72BD_vxuA)ps=3jawR|cPo2d`m&^! zZcgwZy$05nhR)0je>em_C=r?9o5C3CQynavfdirN6&ZUJ9 zd+9U!9W3p!&A7DL)_0{%_ju^r?RC)k&i+`s;)bI>W4gQU(yHP56Q8Z5kfhBo>I0dq>vEEqzSW-C(hj41bWP67+PO!+mY!*yrQ6j0acTb>4@x^$kJZh5 zq$xFsHPpw|ZL3TFe!0}4WzW)^?>g#+tT|lTb=$_$!4bK-yMZR!a>tXU@2>RJJqUr) zGa+Y7d!}{M^}(AAnfTPO3spVk|;Sx0WpA> zMO4HDiUAb~BJAlx42Tg>F$WBQIiLb6`tAE!=Q%I;kF(bIuU4&^+A}@XHCI(%-Mdnf z4jhU@HLe^Hk**;2YX#7{ViW0J;E2zoO|VSKmu#P+jEwSK zgZwzyJYs|$(qW8$*&NvFoC#fNCiLPX6V8L@>Cm_N8!OLeK+m?ug6iBY^zJ+tlKvwN z=2;wJFWC6g71<0>@h&>;q9~Ngz9yGWzokD*&EQ7aRT9%zP3J{=!^R3dV4tp|o-H%M z_**nwDN!T`a%*X$T?Xh1^)sW&I`qA3EF3b?<%Cx>P?3p_AXB-FJ5xa(H^`h~OKYv6 z=#BzvMi$VME|y@UHvugwAF>;iHWLBWB%JHxPfxUNC01QAc=1{cJaRLoe>awsQ)i=L zs40=StC!KJzyMHJPa%&t-K8Q~!r--|ikW}k1K)j&hirlQB=65g(!L}Hl%IrF8dp%+vuGvR6Ci;McGKXwD^Ode&a*sr*U*>FE5{@qe)!^Y&3G#K+7%MRqo=sRv zzLqVfIZs1Lr!!*^nwpL;-8T{4zc-k^@FWDE4~$^=Vp?aFfmctSYKgs9!r^?+MRBPK zwAI>;zB`?Y9=i-ce4Q9EdZd9~^A3`v%qPqaPCQ=MQ6S??zOey@nRvIthg!S}BPN=O zsIyHRZCs<*Kz5se2i6<|9xZu`rv#8nz1=3QPjwyZR^mL6iN%W3EnXOtF zGO&vXH)&v^+gx0ICzgmh>Y@IVw^VS;app`)5XuV8z*MU@%tlEwY#0v1`MYgtcrT?+ z?Xt8fRhL@prQ;O`ma4^?&{aL*XyD*Phjv$S4i;tL=4oEs6VLatT8nbAYS7W}omvU= zFgO=&OvTve!3)Vakt{s3$%3;vhL4ne&&GLyTHG4%hYVelgC!{sSd;zV8MZbH(Br-eiutW(Cz(X!>bq_9=B{`a-UMUcjps!A@DQ6>nt}FcK_dQUvJ$#0 zP&eQSF3ORqYk>GKk{_o)rJaW)0dzt^EJbe}8{LXr=={y^$%nx}bTFu8*9RMtGZ!;(-j`$S!bd(}QT~xSjat&~ zw?Xhz`3>E${5V@FstsG#=wYU51M8NU45T88-mRWT10B8SoZ1v9{WOzWan^8koHD_U zF`?xp$Q50k1#hco(_Xa!?&*;nNGq>l7Z+F%zst#R`=A|lHjMz+mdm6lbv$)9&jFNX z8OI-+*b|qt;5^yRsBvZ# z-0EniauJQxMb8HwDnwGHvo%z&ECLn=H&c;C*XYiAcZjHXMR}lx4m`Dn_@5P2F1M4m zzwm~mzi%_2BeqZ};UtKNXrS%-J(Qj72KFV@^rhWkY91DmhJEo=_GJvj znst%azqF{`#!!$o2*8&zTd2%PJDIhlgYv!P!^q!e5U8O9o>yh?r;HRxFDa(K0>05@ z?_42a$2_>LDS{-Qg=-Jw_3h*l(grMdP#@K?8h&aHk&E6Y5guf+;4uBxXMOZY(~ zkbsDjHZ$q!JUF#^F6`fNs3q-~5pZ=};Ec2ybK6!1Tu;cuG~;eIW1KzA8WFp8Jju%4qd4m4&rO4;h$A8wD1Q&>&6urb5w|BUOyofGrjTs=sR`> zKR*;b%0N@OrG`}7mShCIV`d$=K$o$Rzy@XFkF*zD-gF?@ADU@m ze^sy~!2+WqEE%a^^Ra3!??mylkI16GE73xwkxpH3kuB5~2c31z%nU;}_|O*#V4Xk{ zHyt8>whz)94TO zNyGHF+9$5u{y@l7dPQY~rxQVG9`-5~!XMNBu)hlY@!E_gdT~uP+3+O@HP$|+cJsC9 zj5Yy`8E{7Botaei*92H`@dkYwp@%*>v+;W57kWEo3O0TV2h)mM^oe~fTe>rO=jr7Qa@2Fx6EZGa9D@$&V~D8* zP70lZkF;&+`~pK5X?slHJQD^1u|)WGY9G~oq{ups#z0T)DcU^w4%2U-2e$p9X!!j# z(Hn_})SZ=d%cKbQcSi(R`0k{$i#E~6&*Ol9$y%B&-+rS-V=2_D^ITz^M&`wAByQwOFBEI$6MR(JS ztP*^s@LL$oYnC7@vJ~4|X5wYBJQ}SOgz=qwXzt-gIy$SG$jy7rN=%Kz!8tO}cvY8e zBQ6*^;0xL3_cDS@f78%E{>-XOH7c__3-`&LAxd+HS{4e#q5iX6I8b|?Yks4G+qR;C zW_ruuqhW$u$~d^~-c7ouTO2oBzD_i@OQZC*rTAo(D-mm+g;ggEal54f-KP+Pc|nKh zxVAQSv?>cfgb0zbvcM^4Fia4@jLoZP=0#ramXpAd8-ncC%c*F&IfHKh9?jZ5o(4s` zwb6HW3mJbelzJG(Bfm`!EfbjtQQhV!;Za0CrSy=|6&Bd}<0E-j8jG)>p6)ZW=M??4 zMti;y`ggR2tbJ#QPckHNT-SBtdom2P!n^6rIlW9A_d9vvyq1igu zfH}s|sJ~W~7%S8hG0zCp_;ieUvfw6hc#(vAPDqpPoB32oEFC`vP9?!Vmk|Gk322hD zk=fMZgzXoW;G9cSNx^JwY}=uRORu$YW4g`o`0+htiCr1Jb}9@e3k5Q9U9EHhHyXD6 zxl0oc*wD}qL7;M~k}fRXOI?{z@a{fNcX=ZH=HmenD+c zdxKl@QM&VDE4`8L3o|+m={fCl?6jR3xaH0@+RoX-&J&BonCUOrM<+e$`{Fdb`_X_( z4EoV=iOCrImy3HYwTuE z{?5WLyDaF>i52Wt2Oeg8w~tzUQfA+bCg6fiZ>WB3FeDOKEyhWL~)6<*?XIySMwjviL6N=f^>m4om&!tiC zkPANA)Wh|5vB1$hRV-}leP+h5`OB+tPMS;inT=QGzWCyYAyr$g%d#%3nv9ryjKTnL|F zaPGmT8m6H*6Si{HsbI=C658MgvrB%nANkKQhNm;&N$XPjb*B(sN?Q((E?Lpl+SX7O ztORlM0$7)og0Sz1H~h*;=GK4UgMw;L=zO6>1$OIj&)(01Nq1D}#A^g5T~fzcZYAtg zqpRd#NF+|bwu_BV0J!{K9bY{#=cdn3g{bm$nw{9pdcFbpJun9!Nj9)u!M8|;U<7hn zPP1*sH%OsVB;MFNjdjj`&(Y7w#x+ioG_JFQT)sW`j!fx zl{09>A|uwJCmkF;-H6bm3^we7C8!)!hCY{a_R|6@@KKuvRo#7Dz3Jm%qk=d5og~7N zur%0e;YqyGKd@Fsre`O*;GuWYSZ-gyN^ST|8+bLvoSs~+;};hk&XUHk zrXyT)y$nniccUrenimKPpzehUI!V;$KG@OavLaD)kF(bmHZ(?>?;F3x@OH zM=o{{bFTN2FLYzDKaycVYNpTQd|)naGt_41i`t{ClpLO_5T&_i-&0Ek9wsi3p|_r7 z!k!Uzk}bQQRf$dmqLM^MM9iay_Dn*j{nk*DuTI$yA^4`}4(aPwr(657aM$J&OhAwj?NQ0W*7w&K z#rYf9IUB;T>1GeH(A&!@Pmsh9ub0D~oo%d@aXn-7BpcQ~Yh^8T!tta-2T_$*pwaqS zC>gYq8Bv`^U2Y^HcXc7Fk&qSOfT}l&7%UR+6F!Wk_ zpVWLG$DW!iiQ%KJQ2#)My<(aMhQaA{=JQDIqQ?LZ$?BMAw2Yg39ANVqbvzco)6g>s zzpLVZ|1;d^(pL|1A^cZ?*+9X zwd|kt91JhN$CQ)TT+8D*D8HbSsn+jkSvEHVdt*JRNcE)_nUHX-XL|^#INNgc(0y!@5N&1=D&?> zj$|hKL|IZ1jn;GX^po-a+4b~m=M7eKI2+6D7BMsOzp!TGbMRWgCZ;m!7JD}+7q=YA zV?Hc=%{{ot22HL^#sFCfVz1Rshd)N($*G?h_54)4ksv~sqdz$u;f)+#{Wv`9Hc8Ss zL|0xj!M!yypnkKR?l}{H1>PG;@#82YV(lcobg$w2p=f+?_B4=?FNUF{*v(~VdQAp zYclPX4+M9{klFox}VnrrH}?MFK5!adqrH$(lmIl7eT*vY-8@O&V~Tacp}+Q z$mw003XQsgqVsPA!dtgMN3}+f|1NTQwaG;s)8L>Smy$;7mWa z&7g}7Qb8bSGP^=nhQ3^u4gHI*6TXE-)Ym5f+GchV;dSe%V1qv_7hVhz>d~xUs4lDv z4`(k;Zl#wWM#HUMW%h|fE@KlXwUDa@VHm{wCU0ACfkf?9MVHzn>fOx1sxO7C z&$D2>GtfutX4G>|mIUK(o40g#o*ffV9*CW#pXq}yqO{n@4e!*7pm^&yHg(to4+V_F z+qj0+Y755j<^43vdK}UI=!Frve7K@tk__nb(Z_2u;f>a0*gROy_Ey{d>lxpiiiAD~ znU=^k*U7=MaEO~Qi@WvaT_Tt~9>8-Y%^$Rd&)NQv=wU&fzPuu1$8hY}@-u6w*xWTV z>%vNS&{V=I=@igEohiV5CQVMr=g3)DYM6h*>} zA&;+zJ-dG@nh4v#*mwFjaS{$!Kcm%d^I=2iM|wZo6b<-alczcl*tv-TIH>vgU-v)u z+1+Hml1l?$spS*`-l1EGaE}X`L=KVMHz(P*LpeC4{+zQ<^$PVlvJmHeR>bFfkFmG^ zq@tN)EZuGTor>)YKqRJM1Q!&v+Cx-K zY*A&0C|)|ci7Y|~Ox!AmyMv3F+)bxQ`e-cvOi5<4?xth;TyuIzwwtjx%En)FCQ_y0 z2b^UO)abUNP?|S21&vQ#YyM@{%>DT>7qdpra67X@=-$k99D5ISL1py2^I{rl6o+H) ze_iBB`ckl%^_Gsq;AQW*nzx$hn*A|&Q`iC$|0v^B&0)qt7D?6la6Bu@P~BOcu;YU; zu07()8m{9&+;(})+jx?6h*y%ys=;_~_$cXdNr$LrRXVd~4!Mx}g)x?>p*zK5ao3Nh z%-L;jbW>Xz_9sqf^gHXhli6JS7JY(zYzw6Z3X$mWbrsS2J&7tm;?-VKvlsqzUM=sR zUa@GAX6=9F4W|>>BckKDEk(KbbX_Hz9`L(GcU~_3(=T1J$%dI9kd0HvhjP!g&SNTC zbMd6-WCSmFCS1fG4=8j|rOrmuEai^7Cr+ncnUp?o%gf)%HScz5-j+4^kbLd~;d3g4`4t%YTrRz!~ z=ET*SMIxI5kY{jxEQ)ZO@4R z@O2t=F@-P6_FnLT}wKI&&ngIMOr!Xl! zpGmZCAZ&P5!d%_v0v@r_@bPW{b4#(8yU->Fij7}0y&bCTg=;x5Kd^zBsBnP}ehi0; zuji1DeqGc~m{l-ZgZ)c{L8k?ldStyZYh|NMo=!7k7s?Eb^1M5!Yioa64YTLKO- zzR{^L)3e4()rfC(HrQ$0b~O;dVw_Fb$$A{fYR`PmEh%HjKNG%~t<@#RT8TfX=Bc>?x{C)V8F8 zecG-TcZYm3HYblx)qpF9WbkhN5P<<>JZ`{`C4X;|u{pndZYG}F(8e`uFe8;0tnoni zMEKloO~9m&q%P$3SJ*Hz_MMK6^G#xLtmT;;xc2D?Gj{Hbjrp;D#>Vql4EcZEr$EO| zdboz4`)z(CoZ8<`wZ*?NKh8(MDvu8O=GA?s@n!@l%HO2vZacZygKP{ z6coK`p}S0lXEUqK@-3P3Y1MbhRl7ccjQs5m5 z?b^-cszWsC6bpli?ITP*-*FOU9t+Q7*RXqrYRQ#^Sg>gHflrVA5HrW~%tet4ET57m zRK*HGmhDES;I<#Q6_1dQpMSG%_HGa#DGCpESP=b#HjvsU3)z)!Bz?dV^6ce7ifmXDx z>9Lr6ELIfbM#{XEHFg9q#ZPi_>6VlLF&)G8@z)M2VALF}F!32Mk(=83Wl(+!@?-i1hQPVw+!Z z^9Ir&p>ietedZOnpg(2NZp?+LMLJAEWg`8@=LVk7nLVlWAD|JSDUVEmb= zZ@I8WU^gdU{0^(IgZI7Mwv9u_XN=V||LCK5dJpkC|B?4^-Ny0!ANzegx#?3kyJc4n za7Rl1C3kGkf%EqFn2gD#2E{!2tmZvt@`2rkg*-V$;~pdXro!+lPd;dOkGIBJW$-p8 z2cEsU%anvnWX8&ZbtEcS_50 z(#GqH56$lTm%K@FGkFremt@w3gVT;S1`SGyUST4%HRO>OjlIMm&IhbyJIO@;U4&o4 z7t#&eNKMpR#!Vs$a?T^^nW0GXwIZQBjS~4vT~@|xB``|DVAR#zVk+eYmT%lhz^OR0 z{CfhF%2hFW*YZfyAZ|LU9n zh%sUw=vW8oQmF12rGkFmDg@qu&%CNFHxsctCI*?RlIH<%PF+J(p#; zT}l;p-dRl?_8Oq6<_x@X{SdkI>?=L>%?TB1d&zYd6%5!u3lq#8i9n?!&PjK`7j=`! zgrz&_Ky^IsT<%V~_SsNdiDa}1{6qL_x6nr~oUo^44p_Zvqn{1tpoWwP8Cc3vztkvf z%J3qsmzJ|3t?3ZcF$ol7+^Acp1r&%kkiAB;Fwjm5X3jWEmh5b#AHVp3;ih0hBL}I- zTTd8wO&F|tUr|q$rI5+v?Jit6o8}Fy0MSGaNs7>+b$O}KGFg!5%^9V!lYJmt+l`D* z;o$nqGr>yg8Ry}k0gtPb2|uflEPAN{Wi4tra(Em(55;?&BH^#nMdekTGV=(-;23~Ew&K~`rSW=(S%6L5eOZUe5z%J35q;i!BPI8(K zU#9?s)Lv!RB+kXnGV;*AcN0rI9ne*znPlFr;?yVbxO3K}qrH=2~}+Vg*5Zg7g#l(jV;e+(<3pWAeD{$b4!?IDoxDLr5t>hrp!#~*{^-_ zMJ_4{edk2zSN%s;;mND@qw0^u?&FpY=0b$o6Yln+DsKJ5Tu?TC!et7pxD7n{o9Poy z>Hp|g8~i`}*^<57E60y>pWe@fv9gs)6Z_Ba4)A_=-CJe)&$tEf#%*qP4jfz3!(?i_ z|Cek#QJmRv`zYt=^<3nJH7s#nagd`jn2XbS`a|7EImdYVs6X}pt8bANXaBMPN56?D z|JP=9lmxTIrIvH_DzBazBY*c-U1Y-hHtA2?!#U;okbRz;1O3;wa=MD<{70|H(;wyO zdwF_Ao<3UgAv>6t1F~Vo|B~xHA2R=3`-NxY{KsmM<(FJ+-Ce`I9le%$9?0v>Ed96K z8NHVMuRidv{eSGw^X$j!H|{Iutg_s|dGotbM|U|BtMGY>2(j^Iy;NA1FOc%D(!e?D3{^27?dC<)#(b zkX6NqA@95FDvKAqhM5In`Q(U5Dt=?~*x!3&h-OV1PA@WK)wg;Rv7hN^-qFITmYJzt zQG@|TX zNZpsjg7mbfK*;`mC*E7fVFwj>_N#C)RkX;>3?4J*?*L+f;OjVIcNm1eS6^l|t1FpL_p?E6`e)YLE`U+omJXQ7 zM`M8vNtTHDBu<~I_p_9!%Zs7m^m{2|t=W_W+FlN>r) zNAmOiae-3}F;z?;LJ4VTZfe39pLjyVYgeGw_eO3(P9#}ko`PFlrVz)T;JSk1Y}}SU zo-7EPsU3ba7yWXanN=EHM5s*_cW+gP?M=00J=Y0~kG~#rd($0ujfE!&(<@)?pYJJ4;c`o zSwdg&#z&bqKAVNT>0;jai15ZoT~1_4zK1yc4t0kbRYf|UH@5S5W2<-IaJ|>|!!%Mh z0a}j;ll4XAv^gvuJWLB~d!`BE#An`6_$Y?t&G7@p>gVLHy?R}XdlXE~=^%?sy3brO z%K*bvcM=|(N%x#fg$ryHqt={H=ZD3C<^CuV7Mn@_(O=@}Uo@)JOciZ<*{uet|c{x_l+VS*hemc_KLanUG&y<3U2!6|~rLPAhL-_}&fx ztHu6w#PtucnC}P6Rwy+a1$&d(f*FwUWjpuf)xFHUfgG3~@4(nA-(h0SmV?HAN$h$x z#C&W0Oq8zs<5K|*X7}9)sIa|7<`=jS^@I9QZK@8FCLPi4XtD+K`l+C1@|*L}{u61@ z3W64sd_$$7T)6ispBr=9gN82702luB78At;`rmjc%88_lc`>k!7X!SxN&h=H->jSr z`Oj?d@OXYYpYw_6@y)}~XnCyVt^0p(2|!_!Vp{u+CHuCo#N+wGOtPyKSfx7Pr>P7H zn)jTOf7%2t$jyfH9$D~ESAh(O?`FmedPBAEIH;KQoa1)W1w1vRLH68oX8D;c&|WZs z^hTF40xMFXZgK{1{#3Faj62wei-V~8YiUpvrD0&3zUD0+pM{DlDZlZA3w8 z@lx7<#s&XAjbrX<^l^_RpHak^~$f~RboVGitz5M~w2ZQ<0usZg~4Dfhd2D*WBQn(PW5YEB2zfE?1oNwwR|~BUVci2WIgYM5(4yVX z-cw&QsvIB*lDe&Cr7&GBdGHB?nC7%SlT4sg_ zK)kIFL~lLFoQ$@IMdFj7^r{yvmXIdLSEqu)@j0yf__>5SWPz!q9P8_14FOw~0DkOg zRy0q6)t$v;yvuCH%S{x1Mtgv|L_bq znv5Ca8gB#J1{84rwOhPzy7yiM$V6%w69nOT=9e%9LeSVZ(=mQJZn3L{M8(g(wBJ7;PGP!Fk@t40c zD4y8JIQnK{LdX(w7f7KAOdlDGvu;p{iffumdc*?4DJ^5a$} zC>(gs_D9WTI@9;m8N&jBwNgQu&qlEp$_3 zbQiD01Gz{a4XBc34>NI2^JzAGi!-y3n}b)r)vyY_CH_HO6!pFf! z+XhxgJ{x^KM;P1FZ@FD>B&knwHePs^z(m1#sysCt<5zs*D#}=qv%K}0jq53Qeyuq6 zOm@c!?M+NazBImS=JokM@-gADsU*)b4OenjG5kx_>Du8;>@s&}pXzzy&~;%no^g(m z)DJ-O`mZ!Vg`enDgkgkjC+*WzVmilXqd>nr$#kX630oy>@UX&gpFHM0$;O^(BJ`%y z1GarDZx2G?VtSPF_K@?|-?&ksbfDxB=i@U6G%}XQu)initC_+0Yf}ZaEA?V0btGY- z-!|&BcO_jlUK@?4Ebt6wIdllxA*x6Tn|ryzx5jWCX20Qt_*SIN3~`nk7G_=Z1oD$HCKd^NQ-G08JLPjW&fV%w|G`lv zJRFrHe1r3M!8G`-X@$0j6iLUE$?zu78dC#BiIhaiq1`44rY@DaN1L8I;UTh*-d!IKtJOA_his7u$?$q; zP9V>D%8Kku1@Gs1bjiq_mf1T9te=-io>3K)tn&c{lO5!|&K**<*%79f&!%rPrNHNu zIykJ}MU|=+pi;F8loZNfQ=~YI3M<3jCMztu;l-R+cuziQ8{oES0w`B_j&XhxMPG`h z;ffVonj=PRu)9_P6({$R=d-KXljnlL&pMwN@0p1?@AV-lw4PbNC>z(Oer1FP1#y3! z6)s+Pf}RyUN?i|5!NYEb_^n`sUg^`p@=yFYz4tnObaxs?9MiJ8e}<%dRo z9W-(H2{qZ|0Ixr+r?XxR(Mn}k&~TAMCv^w3n%~Yy$Bx4;JuOsK6NY2<`WUo)Ar{!4 zWcam(uq{Ox+X6K~^T1BJM*0$!>hOnEXLqxnN3PKzxk$WMc8NXcCWCIjoKX44Ep~ml zJPs3kZ2Gp1b$NA%y~K;9+^+3(_Jnp;{bV8@m|w%*(DJ35#-(G(AAJfvrnuR78m6`i z(95@%;i&;-yuIy4vsP#^wOF2lbv$CDx?uuiU6PBNukE35HXiQE^V2&_3^$hZR5h=Sko?|)M`aP^Y}u>&wjFg-+#6ED;U7!_5~?GqY&G123N!#-ukB>GD;Xcz@DYrcC?@yP#Pe_vaBfq*+OhiVVl+yr;rqRj_p{x8|XZQf{U7f+lA9mopXL`=9k zLSDYeVBFsNVSeL5&IQ5ouz!~;mhUViJ9)g4A|Y@5<+GT`+zThM2Fdu{u@)U4gWXB38Iufo!2H4%7NhPi;P?3}Apc6lVmN#jUmLus9dr^hD8r9QTCedKG zYdo(nIG<*;r-RIn2Bz=w3wBvVHu&scNsfzSeDx%j)l5Z+!t%&ZsD z!b?U8aPe*>4QIY^X8BBnmiP8JHF%UsT@eQv!ZlxEJB^5ec(gNFFIUzo_V-A z6P_2aKauJ6R|2g89qq2{cz! zkZpBJC~j;3qlqUN7-x$UrcXtOPj<~cd5&niRt^gV_Y%iKBh>Pd$EE2?P}rx0oJD+S zm~I5c)8=AoTpY74RvQer4A8%p(y-^=VP?M`kJD54lQHH^rkl%D@KzP?+=19!I3u3U zz6`z36$dBK8&}V{A21QZwjLny90{5o5r^MPYMJ9RM5*=pEZ$zLpDhPvC1_7YHdZQa zp=$596NAqYIPLi++I+W^)O1JSXmH3ecVo&jx*dnn86FU+|V z2PM-3XkWSs3|vrxQb8WC*L4}p9ae&ixsFuXiqLCvDIj#Zo}D-#2$~!(xV8HPkK1fW zUqnWOuzdni+TF$O^hm`8LlZDznJO;U5Jgp;1UlYa5H2or0Ud`7`s%bA3F}FMZrv<; zW|s~<_&yPii7Vru_`~!y=tDk@0E1W_-_Gwc*L>I?9xrGhf9;P_vM?O>f9fHQ_2R6h zlNYq@e?_pWh?MT}0#o-VB*lI^S*W!PCVGldmw;)=xt0x&OoT}NlVr{;jsqC)c}_bn zw^Mgj2e_=Zg?{M}gyhFDppw`~&x~3znt#6#4=n~IZhxmDmwbqvurT%ux?pO=1j46iIkj#HLV&De0wR(eENiOc%cRPClugVv<>PEBrtbI)D5fO*l_B9=ECBA zMeMZ{J~Tb=gXxndVb4K1EZ8rDoO|}@yigvCr=DRta_5tyk}oO8ED#H|_H&n=xJ!dd z!*Qz6YO-N<88x$s!ekZRUg>p;ctKwt6}vZ*3+`6buG)BB)YW&-m?{g8b``(jg;5(9Ez$Q?W_-II)6}GmL}f1qICZo*KF# zI0O2BFDK)aRJaFhB0xTC3n|`EMuxotz;(-UQmI%=w>UV#xS-qg1+P~%J>R97x$1~X z)8*hp=^2h)FmEro;~M7lw0vg4)JS}F=sJC%L1}8)WSluc4@{(l(8k>h&+u6@CwudV z)!}(0nD^fEZ>=Q$fgEx?FA2^+6=lC~oyL%3xp3mM1m1tyNgWp(!ksOK7|rYX6h!&( zYU^U={9dFvtX!#&Y71h{ zB2>Rk1Ts3!fwSifk=JFwV{Je2+VhvZPVk~g&po|AkFqt&>Lig8kZ%=eNQE@KVgBxOXdQP?LxL^&OrY^9C&+*4~Rt{ zasK203wgP$z~el-K1d8Ez1z(c&2)$7+fR@TEn_fNm4R^nqvU9!ELp>gU-6=KM90e- zyfntc(pC=K*XN^3U)Ax-r>XEVN)mEg zcTosDoM=L%x++P^q4{KgcnrMSH-|hjnnfjMrSq_DD`)AI8K{(P4l`tgX;N1vnhT9G z-FM5#nk&5ZD4Q;N>v9*F@-++se%)uk?|4Q&IR?S{z4OS6Ya*<^ooYK2OOinxEg!2!H`L&B=<9ZiVxYSJ+>7F6+9xHLbh7>t^;yt@)aVE_D zrcC#2Ji--s4}mJ9e!`!0rlmGH0LmBqAVSlm>D3S)C`tZFbB_IHt$6!-l(wqUuM!-h zl{HExukeJ>k(q>ZL=p;KIKdwOLh|YBAu_BH0oKN&pfsguh@N(#V0h&L1o*0Lpz<6!G0FF0i2z|7>nB!-L!C?}WEjlRR= zpZ$J65A*h*K5t`uwn=iA+~M(4T@R3T7d6S2NwM%Z<`47vYbJOG^3w`7liWaic&;x7 zuaZZZcONq0c8UP?dYVS6wVlA|h7i0CJV2(K8Bkhpn0~j&_@fI*@@Zc zpYoTdXq>WovL$zcDM#u@MU zNP&9^GBGbW`dqr_&{)Un7j_FtuTu#m=YSEhKu`p+;DO{+Vh|QOF zke5e<={jDo_#CfS+~4iMXdKVQ#H>iedxL%?G$S4N<@qpSSE9+_gEaJipvL@iyTP9G z&OxQgZcN597ZR16jvCz!jK&gqwx%r?Qw5PD-M|NljXr3^>tnfYe9v5!&%vc{rZaZO z`C+HM4^FT0Vyw@O674>3oYOBz=8lghvY3i`y|t)-85*as;<)a;Wq342Pr2>-$X>L$|g4baR^)yi=7! zx1~7pYwIP zx9@$ue)s;jUhB0x?Y+<5>+HRr_j(>9c8N_T{a8(rsNaR{c{!DId*>*w=NwS<-Gz5> zJ8fZj(}zu2kVv<4?3C4G+|4R1?eAm$>~~u$k!D#Y-P<2W)@zmu&xb}r^_d3v%Y75md;CsLnYtHtMmeZ@B8AbQ#Hn^<{fmef$UCw+WxNsG?Rk{h7?32o>5 z8*>xl7-bmR((~pOiWaGdMX2rsI?5j$eAIuZ=y*DY%34$?TdMnyyZ;c4R%p_*&W?1s zya&zfVn`?3Wr_OJpNV6ALuhXQF=Ex({ychqBXV{*C#Ajc;Tm@gD7t>Gbl2}2o8B^% zK2+S0mThq3zrCAMX@n6Qn-<5X7o`fnjt*>0*GYWmwCTd(iyrG|Hs875-0%Ov)) z4!OVZsz>ju`Md2u&sBAzqsQ@@FYn+LhLX{7Le znFr;0&o!t9p6&G3)L|d*4Wry6UsO_+}k|iaB~`+(Q7IO^q9s|>gP+`X0a3=GntpP9VjYp z{E^Jhgz;mqUoyQzf25+`L-}ysKWt{JBsnuQi5pH0mfmJtF!4E=Z?Tspt-1T9hudrL zWisZ!lQf)^xC-Xd(|8JX30O-h&mJ`SY7tXRz>g23x*wDA$So!!(oP z6|1lOU|->PEFuj>Q7;4jXSOeYn3^dS_zdIol0UI6zt2g&FOvBm`z-0f+4Itxt5ewL zZjl9I(!Y__Ami2$Sm*E zVKO&cRUqAS6jF5uQr$Czcb>v`?(-72&)$*FnI&?&TD?WqYNa&q&U`lH$0QmstiI%1 zsmXu64WQD}chZ4;ExyRapRBXCN=J3mSvbanKhrl#i#uWsqJ4e3Ra>9!G#SkM6lv4` zHGiaYi2;1Wv045Oz_O|pO$;}Z{?%2Pgm>(r_;h5v28)1{l8lc+i_9J^2*dp?f6 zzMDQB4)i6L)cf-5^uaWLT`gMp&Q7#64WaPM<)WtcW4Z6-MC!7(n|SPW1@o9GlxH|i z?h`dm_8JgMO@n{4nxpOVb^Ma)tdA~p>~1U9#5iTPLQk$+*H`x6lt^a9u7d4ZAy0Wa zlwF74QXSpA;a3h_5nc(%tn#`9VE-3;*Fwh8MYhXv*v?&PfWQ39V7*Or}Gku0Tk zPvVMQ7VN}2UGW|3T}@eQ)^}zX?y;i-|1{Z=O;o;NA(KM+rm)s*?F3C)xHFJvdEJyM z=R1hQ4W{tIi;Y=A;#B@TuZQA|6K9iiO?dOop44RYajAH8FW$Sj1xpcU(=D3reyJxN9Jr6sglIageMvF! z#za27be}w|<{~CHoJ19`7K->stL5w<198L!*1S<`xkgSRiGl&_XY*`j>*RM*?)#~{ z#=g3&-tsQ=OtvSZh12DWJsQzHKTm!!EmwN?Wf!w%F<8@bP)UVeJo}0vwHR5Ot+@P{ zHFzA(1K=q(X#`L%d}Gw28_wQ`>(VCpMmPAz`JDoZU>a|Z*yx2**gx z;TZeT~ZlB8HTWW`|NVWOkfBL{~1CUgc9lfrnM?JNIT&M zZ^8}26H+WZ;j5P$UEl`kHVk1J453x>G&%yik_x+0y&q`rK{S6ha-~?Y<`mmn7RrNb))Apgddcml zC-a>@?J4mex{ z=ikagyk!RC93>h?mG|RskVz3Yg`ePk2;Cf$hR2Q;kfJ+ zm?<}F3lFsUuh@R}UA_n%%Ez8FA#)hN02seyw_!rJ*LyKwUXaS>i7J~{+^D8-gxQON z*)w)MCh~9X7khVy@PvAYL?%pNI830)bfwaCvx7MHdMfvxsw*1g>xtOfQ+eh2I^+ox z7z`8mD~p5!T;EE#z7N}LQ5js{O}M_C6$`~{_`TWidzl&Cgba^Y4<4`jxVmOaUHT30 z_o<$nfCHp@bp@O*PZe)78CW8s4;w9bvw7c`vZl_tsRD2gGp1I z`#(PIf48gO%O>M=8(m&M}kVX-FsvsnM% zHmsDWvQqC}E)~gY_j0n^Pto*6DCq_FKi+v%ny9i*W=CsL5!_BIxSi4QcZJLPk#u$A zHYrHookpx`LPLL>u|663;y#Si56ovyzqM2Nyz+Lr4c7$kBvAY9Ki+9p=L%69#>o%H z=}*sdViN4l<|uz&vstOQ1j}?4mZ|vRWYHYP$sfk4@!XXn8V)KP4(ff6=|bh2X23Oh z{7M(oV40r5GOY+(B&Mi+)L4y`;t?EFE*uo>lPFNzr}UlUg}2%}h4+~yRK}?(j8o5a zKcTWHJ77_IboC>*2l~{vc8mnGL^w1DZKBp4Js@VmGR=o&Ds1E@ z{=o2zh2eqK5h|P^BZK9+vyFr zbE~XEOfL`Ndh-`3+PMBv-cdW8@iq^YRUYQ>S6OU?nK=P7bNK2xp|Ui!U}A4E5` zu`v=;DSJj!>L>hto= zGo@)|W2i2iOd6a_tA5&47f$9SoJ`{rdZIw>VUCwZ%THitc27*<1Fn9TpQ=5~K>z-V zD(f=Wt)obUrTGm@b0OMMid4Io$A1sW&0%TA!qS-b_mI}B&CJ9eY0_A=<*+krDNj+m znyXze$fjyblQyP~RApvHrSFt+z3?_LFy;|IoKCmUdRh!UFyKPbn`@_JL!@%r4AIKKK z&+LMqxvpr-X29Vbgu{ug-%tux`4ob%Ax%WA{tt5Z7v4P!^*THVBf!!KnGF|=* z_hJwCQmN=A`@zhtfSKtqyq{jk&0&E9t<@_`=K_Nx?iA z;sqBGFK9orx2SS5<~a-HDjTze5z1=@`MFy(SgZT zPU*rG|9l2xGZDsS%(PWHsJIVH(;JqiPJctDvNQ#-G>%C& zOb^~B4Bn>wp`B8dr75w~R;Y~4JQ$nrT@JAzSel)%H2SAbus9f-Kp2~f{)Z%$s|kgx z**W5aqM6#y^nDnMOn|z=9InP>-)qGcwYPCJ|E}Dqwj#UUYsjP2mPWtMC^-i%NDD5= zVvbO>hrKC*y{VjNBlm$3nhhhAqL?nLyv<%{qtf8bR{oJwF$%nB~(kfX~ZEt28WV1dnHi0lU1G1J%K59$T|MWw- zrrOy2{#=u9hvjgF<?Sw62r8GuG-$5+P+-jptd))O7&SQxEg)9nkTT(Du-hRhjaDy6G>%k z0%2@EXnL?3YCm(h|1?%f*c;820Ze6eroifKW|>T7Z_;6JTCQMpyUNmJCXf@1&CcJ&`O^Av z^bsb<0VW5=hHPMLj=)~oPMI9C#p63ockL!$Mav!y^F^X8?JPO997{+G9h=cNMSekTLn$3&7$rOg?GYroV zk2L(PC8fgK)NJ%zyn(|x1c&2P+ko=mg4)6b?b6O>{%UXYO>Ze%2Ul|uuExf%Ay@gC zUhp$8Hf#cnO-~pb-3hh$4OkirSeozYzt|c0oDJ|fdk1vmL*Z(o;cA>WuVS-dY3jq$ z)aq257s1#F7@OHg)=I%@S9AB<6=|;8(%fHtO4_P6Hsb3tDOBxhHe6fII>6Of!qo(K z*dtwlt62@JK=9~hfvU&~#BVQHGc(!gnmb#NN9;WREdZDcBY zlMQ=QcbhR&8Jp8EHl|0mC{L(eM{my<5e)k=0`}u(et)L&Hev8KWBngVBjIiQ|9KmB z9Ns1l-XexR;gka57Un z8MB57G!cGAF)K_F^AI`ALXAW@T+IS6AJRZ<^e3KWyAC-dZo|)XhM#fYc~+RIU5%IW zg`&#mT$p3eRBk5&ZfE(c2Fwqx<|16p$$C4aj&L;_;cB+E+lFWRmm(FeCNc7l@PVt* zhO4>0ajv9_DfdQ9xz6+sA``J=7sQUUhCUL19@k?5@HPSNu(0qp0^TO<{4enft|kbs z=6$fes0}|84L`G}lLifh!`TUk14|=SS(=CL+awKG8VQ!hNIO%kLp-Gr@swLyg|ZJ^ zO$=O(yZ0qY7p~?rTupPm2ErAVMgdE6efc5zDLhOcc$m-!jajPN+bC{ZvU(Ryg*IHx zn4;!v2rP{yERFGHBbEuL)B{e*eT^>br*<`tZ6C>B5Eq+`xLCoaNU;~L#t*Kh)vXd~ zF3i<_n5)79Jd?rLJo#sAm_CfnEf^c_&`9bGW3vjzrq`ZANE*4*nN29~BTEX{sBUp7YV zaLkQO*-*8^nZIv~2!_4+0ekaVu|*`nG4Hf!BpgmE9L|kN%cY@eZ=-XqKyCtuGXoAsXF#m5R$B{~ro+Sl zI2y%y6OGa5d?0HEw5JWu~?|dS1gsUznWcFgY39ZYx%(9Zr|v2DBgErV+f&>F%*4 z;Ba=p;iQd>CTG|i57?VeFO10%@%KiEzYiYUMg9uUlL*h_H2l3#*_)%VH(eYX2$j8g z1bcIM<3_Ox#zqUqCIETN?A7*W{_whV`t@3A4&va=3=fEb@HxBSbJ|YKkyQ@I01l_- zV^3$5!|{Z}*;=w)R=JuAxSG%!*}C9EY(jw4LYtqr4D8#tT_hk<-*%VA9AZC=CM z=yr)^`f4Y0_V7A(0w$*oOip&qW^5oFjwKw9pI0LL2tN}6KV$!J5jzaqvm3Uj!w*9q z4R6y0-bS-)65F+=i^znpC|;YxGSoh2Z@s4cD~!!k7@L`547G)^*%@+L>D=CpTEWb? z{WCLk8fIp0*(5~|pFp|?V{-z=M(Q}4vS4rQU~jyBhEgs}&QF*eom0WW3{K_=oQ$Qy zi@afM2*zf`x*{7e)0nPF=h^E&V|U*TukCJx|z;Aif^&oq12l4ru(R2DmPW0z>^2}`r! zpQWMaur%jPn=8u$hmjZj%sTj)%zk6Y5UyqgTun@~G`S<3%o8}7$!UJh3Rs#+ur!6X z0>6We$QEYi${0g&7w+f_+>ztTT&2p`G=Z_{qgR{vg{3KhrP=vWhu?#f@r9F#y%H&W zVQKcj(%f9)!pCC1=n%|I*D`IXQtfKo&(D(u{7ee`jJD$|rUf(e6K19;dnOBpnK=(L zGrG$g zMIro5I{Zw*LOVcsE^b1wW$ zGW^V!N=JB@X7DhIO;+LyoQxKnOnB}hu@bK1BV0#EgE}k@ zPR1KfX0H1+Q4C{q5ys}s>1)CiPG$m}%)^_jMH>7}I{eI?6=mWF%*-U1nJX8xB$b(& z2s86>W?if`o=RCTGn;=DiiK($vtBt(%!Zjc0W-6#!&UJYmZmi?17Ad;b;EXtkf&^1@rxhoAWYKXVRw z<-fr^e}{RtdT~%}sS(6a!_vI_@kOXC%_>+LFZNd)g_$XXnTe~fNsnP>mcz^}@~%Zo zU}kb*W*n4HL>HKumM}AWLw<^Am>HcNN#gv&6SAG!%ygPiA%B3AnFuFSI%u<)13$A8 zekN0%Dyq!PN!|702t3SOc$m_#&B7W^<{g|&MCoLa4L>8n&s0wOE2~^hF~xZ$J)|c_!&?58NCI0iWvBrM({Ihzw60EVP+b`%*5}lB_*mY z&Hb1?iZ(DaH(+K?_unXggr)I=rO|wmE=R!0bbymt6#PzZ13$A5erEfSG2$%DOa{!% zpy97YA)L%tIGJHVUxfmGrWAh0ZAyiRf|)6Snd!6my4Z+0&#Q1UpWMsDQ#hHHx83FI z<7!LO)lO#5l|Q06Y)lqxjMHQ-ngcWA2s5MU=0;25WJbWrz{3#1!<>hQ$r*>W8F0&W zr(BT72aQuSfS>saKQlfYHCfm=F+<6#fu0awE{;A)1#)hJ%p;T|v^^*wuw-a`_3Yq*Z9 za2+SshVrlQ9+~hSyttdJG9C^v9<8iW=0sV#Xcn;$M*Fm)$vZSYQ z9q=Bs0N!IKyhru8TlJV7%m$gmY?Q%lz++Gcc#Q4v7>n=B7b=h84UYkXK`Mh`1B2mL zsYyR!GakTZD0S1taCnRgcnlZ}s%9{#%3#2I&~|u_yYL=*Zu9Od1`GyF1viGN(1NK5*p$c{ zsZB-vs~7nyJ5dvMV#$gRLS-r}VJZf5Gu}z3mw=-{t-^nf0=|M&zM?67MdH(;yd$hgV^|TG3Z^m@CtxZ9 ze_8O!Fck-2Dtwym7pGw=?!Z*QQBXBU!K*n6R^=#QRQNdeM03o&cJWLT8L`af~r{yQDrSgYj#i!_>)4Hrp@Vg>rEdz z{j@o){JtT76*r(x$;fB@IXpjp9@cjsnM@tG(eX;>sXRQZmuQlD+GTa|G=9|Lq~slN z&LvWe!!zp{7S-#xOY@WNJZf=Mer{~0i+5-(KCoF3kLcjzGD~MN-{+VtuKYRaBJE1# zmStY-vfgQz@sGN)J$UBn@3F)=?E7ohCoY_hZFh26-MABPcdr}KyLm1P>O}B_LoY?3 z?Lilhy4LioMGqczDkHy!(G>c#XuNQ}Sd{#YcWz|IRAd)5t9oY zs9CTsKUe;kwXA$ArZ(!uw~l(syz1z&-$reD%4-ELK6^sCyJwbTEw_n*OAbhTHg@M1tgOh& z!&U4#kjRf%Es^~Dm5Y&oyt#4dI&pSKP3pNnkS|@fPAdN9LJs#$dF90oBK^G^CDm`i zf4pBVojG8^to)L=%daug&DqW5`H#}2Q*J3VFs>CFIQAMFS7Ri-8a#)!F51Q>$Bm}b zX&sn*_a#DWSqw!kYc2IC-6hJK#8C42JuK&tH=EUP968m=XO4g8NImvNB7e|6rgvwt zYBseZaQ1k&hT#>^%mH@Np6vGBrsX8oow&w6u} z>8}3CTHrVA(Kr)n?#V0`Tw%-K%(bDAW(Dj}azj45krU7QID##0w3zALjN;qUYooqN zO@7#|1NAF2}SOrj@DJw z9+1r<6n$Bvpz&O*OBCP0^4WZiUCIX~Vcg$(6T4x5kQuhQ#QJ~Aln&*N;fDe`^C?RL z*!$6T{Do5>jL0#zsH8x&k7>gLpRQ*s|8$~B6=S&LjaVrp?vmK2*O}`co+bIV=}KuU zQ+S8rjioaIcJk}c7=AeWn)B9WyI85wUDoCFXt{0MQT*sTiDzxCBe#gL<;~mM^UubM zMWU`XZ?iX?Q=9E##lvl=t9O~*$?Ppw)f&NF8(DFrJ`lI`6*Q}D2v5_QD~?{gBa~R5 z<$h<27-$|TFW8{PH>X_@*YX*qM>OE=3o1p}q1HS%-I*VLVMcXlZekNX9r(5~Ju=+% z5IHa1_-yNz^tsnudAjdzrm20 zoCR}yJDe=DN<~B2h3#lRmGbSU$V*(iv2_0^DxSB6)x2xUt}f+tY;bFy8F@)E-19={ z+#b${KQ@$KpL!|I6o>Om{sv-rZ5y)s>O#!2jo2EHM25>9<=PHbVtjH0X}Xk%^T~y> zcE|2CZkQGCF;Q3atBfKm&un(@P=Qz+X-tbcbfcylOGVG5fz;@BE^Bl1r`W$E6m!M0 zGWybc5%=7krZ&1HYG!4LvMaV^U1-DeJ=%x^ldlW?ts{8sbwe8Q;I8mHY)`dKyV9CS z6G}Z?D148%Cj%D?a%d`8RZH6M%o0I*6()<*P*TG+rdonv6BOz8*ohQ zHQFR!xe&>hMUO@b=5zT9lN~DVo2Y>Offs7a;e)6;;GN%S#A6 zF17eLjZTyp+kazLtYT3Tm1R7YYRa9s%dyY)ZYusHQL z4Ma;;)jus}GK-vCi|JX!(|7H?Y?1bJmY?cJpO25?!DEtyiR%IJ%nvnNVkaqIUL7Rb zTLtoOI!x*Pt~M!)LU{dhZ&_~wY)Fb5PaO74q?JAq&PPV`_ZfS|GK3iswb?#wpUZoea4Yr5Eecej?j={+~v+HAJy-M<0X({v+M{-~!eMm(W8 z>XW6n68>LWaiw>6%&kR;D;rwyXWy7=dsel5`|A;`s$Vy~6|36be_yM-w0oAk`Q4s0 zGyN(n&N1SH8ak4#L46)}?+Y{N+L4}_WH6UTCVbw?Ui8*%uGqQ#7yGtkAT@lZe^5KI zlEvQ*p;u;e*$(u7M}LE;EcWqTW4`CP3(tGomRn9Z#JX*?#yYEF<~F_;?;rP@RSq1H zr|Id*8@zAKPdu}8IHYUBSC8@H6<2fYU+5&Tw$YRM_)hcL)~|`Izy$L`ziu+yivIlf z!Fx;^J}WO|VhBGNslhw`x+!eX{|o)|{EJ0ze7*-hzr2eH|Lf{TF4nPPf}a^b<=cTNS?x4(&erW{JF0d&Aj(nSa=QL z2JcR`dx0p z?U9q~)|>sETDwVn&(LAPGxv{1ev!%#B=IV2%PG+St#_v>Ob zH@~n)IJ_;Fe4d8UubD4df%atfwR{3Ktv4Mt+$J);2NC3n+?f@pv+c*;YDYJ2EBH%l zeW2#zF#2urnGKffvJY)y=~3HNthmN8cCW`cI-b>%T^xRrb-Ef(xvx@K)98sT{7M`p zaaZ>7`Ua+))t`2EuEniKU(8#RA49owcCu@a8nW(>Cebp}IJSS30e5{_#+G{8lV`iZ z{6W?;wy@@AmU?tH%gKJP3|bY>&8~Fe9|OC)q&Ye8yF;gNU*Bhn0W^Zm=-7%o+&?1D zrgh-ES-peWf1Tt}$`rn4atcpemm-ZEpQ!8}@scrRIFIr3kuL8r%FFza%pVuk5UTre z^O6+)U_+!-!)OFA?{t@C_ta)MpF(v$zu3x;tI zr>E>vnIrqOHidtB7a+M6r7BdP>DV`x2LxuZvHjzC!7f9|(s`qZa-G8Wo_VhPvu%_x zI*`QQgddf1g_dZQk;vC<`D`{4c$d&(V#aCdePy9 zP5GUyiVP|`!j?)q}>#WbLTPT z8e_gTx+i_OHJ=&J6?x755-86)gN<*{LM#hQqE+AGCDl0}-7SUs9?6vMJZdOZ*VRH? zSCI``Fx58M*yg$J8)*aTqMfPHN_Z_xXUTmMNEH84IBl&bm(H6=Nzp6+b3M2RCQz*} z>B4zyJ?R1ZQ_vrCr~xN4PYN7s!B%e8=lAaW(RKaBisXnx%w@y`3edVl(#*`fN9&U)tWF!|-KCI)y&FTpKbx>o`RCY!!&tZb;ywG@Csn$vZ%rGb zx}&zN3BPu7yKvisHM_AU4)qk>=$GikRp(@8>|}cKEMELHjAtiSM$zdnb4C3EEk5d? zFO~Q8W>Lepu{6Z#?=MObvrlbdl^(IQ@#P4)eoh_UW5{6IeXy}Guf3PK1V>ZL4h-Bvhc31+`PRd^?dPKcB!i?X0}eE z%I7y_gUQR-&5}4u2skg#S-2VVm&U(Jrp7%BWY1U!me6MkyUH1KL zPjAk;(E2Yu>A+xfsv~=e13SIx}pucUUDfK$C)O}OwVg58}v-P~( z=9q(Ow|<|GeJ9s5C>gmtv_Pd5=T3=`7LtT|C{b*+*>9K+SurSkg;B zAVl^Y5wC-JlI#z{?)Y5M&kwoFLIzOojXCi2b!hTAJJ!rTiB|83aJqSDBwK`7ib>`( zrG6g=W*aq?`tFz|515}TZLgR{V-_VToby|;o;#DM-|$T3rRL+i`eb3OTEvt z^LjG_9E%N(<(8`zn*vwq)$Fgl_`PS|26NFcDpC5KC=>^dDqoSRBdC>$3dv} z(*ye%miJRi2r}dc$9vPb?BfS>4mRZJVcw+7`zfpXbI~89-JT@bnNIaBku*a)(5j}LYKgqwoW2G7v9w|MTSpffJUdGYYKZ(H zUuKI2^RJ857i;l~-$z8-Rc;izsVzHI`B-SAhtafS&1sfVce?u^lqI<9(x4|jXxg4! zmeuY7tMEK6N>jagT-O?W>i)yxhl@LM?7U!)Oiu{&Ed&0m-(MK>AkULxz0{Rw07baA&jc`H`OX*qtl1e6#uqj`{k)D*CT=Uzu78(*fxu;xrY2k za}UaW>cSgguA)F}M?Ep*@hNp9tBI4v*_cdrwq+cBZ(mdH;Qfx(ND86*n!UuDuOHd= z>tXaKWs~w?d0V~=a~q>GmPgdE9hYMtv~h1GW28iw<=}_48BxJP)^hDXN|u7wniX z!u~|@&Ns%1)$Q+!h_o(TyF{NNYu2D$I|lRm-3E%s8keP7F4MTBNRaH`=*lU+6M0O@ zDp93Pg+j#4Bre=x` z{MV^*;)lM!*fBPNJKQ#Ao`bE$JtH^nvB{iFBEJjUC;j=Zx<}ZaN4Da(T@*LIvK`+o zqlVGOTy)yOG!o|vmj8|7x?g$uC%GVHoYF8`98vJK3d>XbN)Crzx7&%)i`= zrk`v^N5w3*wT46oyIaXrpW)fsme%j^5kudtk{s?$p*CK7M2mMRl0#55iI*1i6AdeP>>` zwIl!3WVt+e;b)e1pfL|9ZB5o|hj2&v8|yoNs`yw#gO7JT$$IFZR`g4E{$+YP+xt1gE_2u>_IYVH zd1Xl~DTdeQ3sHZ`>02L~yw`%yA977>&#|H|l|LoNzTRTkp~>Wbehr(ZUxPOE^`hIx z59C|cYsAV!vDD*6q|4~1E$BqEK4efTnB9aH^sR#(S%Xomn+ODZG}0{K3szb%`l_gYs~qB1`YXM*v@Z(mVCZ# z18%WIlkQ(=#Ya7A&hN(;h@$Rx{QB8usF{6ETqtbMOUaPFhxqag-!qB{ubR_OUmG6g zdySa~I@08I_PpEkOof-#88PC#H_1wtGQ>UxOH+8f6}H%9@Aro z=(#hL8?QUcmaaW02F;tm3lw{u$5$*9f2S>Akz2>|UN6@OgBP1v=**Gad2>A)AK=Sh zX*r57)3e2wcH?>MXAj{tVX-*Wa2=abZwxm~o1^@ydrn#BNeW*%WP=F#eT=QO3FA%2 zj1p4(ahD9#neKNYL(UJ0mdk6U@VB$dq&H71q-zODJZk?hQTekQKlkuAJN3DzxL5Fi z?U@?J_3tfVLn?;SSJbuGvR03KO&>^+Tdyl4k5@4L-|qBs?NQd)thqE@^Pc$GVH6*~ zss`KnBAM>@o2$&LC0NjrNNUtl!zDqh4R?9jiERFEWEV|s`MqCVXiVQ>VrW4J{`ZYD z{nGoYj8EIb7G)HQxU8XkeV86!_R5nc=nfXct=qAn`SEnmdx+>AcbOe17(ubRUB&s6 zUs>Sveqwa(Al|D^KeoE4SlmMH~Ns~}nASdQcSzPwj7ht&;U zSHimNKOwrW5Ns0p)5MI9v?RGBPjU|zC!FlaEZC0w&PowYW7?8nn;~z)RfHk zr_lDqS>j9NTG11=Eu06O5KftgSPBJlC+|n%?t;4t^D`rOfm@*n3*RNE8{#%ye+l2< zlgz=!op*buNtY)mq_W*X++6-3M}=DQHs5-X&oUcU_q47wt5*^^h2Lg_ENfEj5uCa= z7p!iY2`%~6mC`HM%DYyZ@b=~d=t}DstX19T!ZoNjZAlMe#x^!Ivujr>GXEo)jxv+~ zK1imQe_PTX3twSm$;o-jUg7d|AT6KyP#E}r5kvB=QESGSin0FkUC#|HR=*2b478wj z%Vw~Z{?3%SRg2tQ2MNOjUoyWwTU;C&L0*x^#l}%DgtfOBPa0!IpUtO<4m(v(f@}%zx6O*+C9&K zcYWWVZ@GR>9BcK0QQ1$HQo32}TH;Nvnm*h+QAea~*QeWCym_mXHqz+w2E4)9TD;@; zZL;xm)Et_+f&G2_lvQdCp*MzkOlS3D7ChXKSB73?--2uN8x6bj@u$L>+}4htyU>Zp z2b*!7lJhJkyd$5#vV_&xq|e91Ir1>mYto{`KP<;KgnKP`%e9wMHiQORa{BWRBYiJ@r_~?je{lQc0A25cGsSL-Q zNxEE|`kb|GfN|WY4PQBkKYV>vOgkrw zfm@fc@grU7m$xy+8pZQqWor?>GeWGde~FFP^(L1Cw}p9v4)d5hj&${u;_Fv??qcXj zKMG6pmBZd3&*22=#hu|i)*we{Zyv=i>W<}!+ZAHd6ikaM`8F`r`_ z?-E!R#j~3oWk%^b+`+g5`L-$-9<$CcJ~@JX504f{Yc%IiM)jbHQG?(w0(rwOHK>E# zSE=UGJM3k}Xz`#Q*08->BSz9vR$e+9&sXDJO1fNR)`eqf+8J}cB(*o4p4m}st)s^c zJ|OqqNaTbzwBntv+lcrs5(OEyz-ahVRo2$bY#rv}>`-jrr_D|Wd zVGBg?!2&7r0UW7Kg=lurlcjX_r>+e@fSeqZqPvGtfcuhGUxD^#JP+q(LC-Jw{Uc_&s`HaGK`FHzT@wHQ1^SQgu z2}SN_spstk?ot*ee9Zc@xf>GsIG@hah+p;izBPK>@mUL+*046q{Sn5$DqaXD>lEI1 z+yH5XahiN*{y5(D@kzzR)@Lym4&*0e8p`Vz>CuXFU3r;RXE@Tiic!yP`PJht>U?q(Ui>LQ7b6EeD+Ds#T3>}$vnpM9(oqA2-?^kY>*QW*w-R3?#c(kQB zenXdR#}432wJSuQvTY*Xcq|`%eXiL0W(_O9J($eoPvm%rIJ z_eLbuv*gvUs{%y;zj#KIzC5fiVj7!p&t^SH!)6tWoN2)A8~9P}t>&_4d(^5;ZckCI zZwl?g8r=TN4RLKr54t&PDf{6$f(jh>vL(l?S^564sIzpOHLF<0qU|EdGB;k>)>pE= zK3;Ua+iRgQT0`1%$dj~e8}qu}=4@hDXX@R{mbbmWg$;-pLK<=zn{as)t1&2^j$b!r z^Ge#wE?;@AvB8*Z=e#RlhH)-!HFEoAXv@3NZ_u~ulP559BBQ`GkzuTU-4$HIdBjUQ>o`~cRd0@i3he=5!WKh}uthBcZ2 zYXnEcsvMDC!~xbB)@TW=k;{`dOl6Sn!yp+id#sFxDN?``^;>d4u5v`?9unI%-d=p}s7(hKi}${=lmK^oGmKpcTJngeSz z<>Lsk64uB7)@Vz5ZR)MIMizK?^@k~%0#nq+s2g=tTciGEhNRKp4m%8kq@(OX(_xL4 zkJ44t#k!qHSR)fyBke9xv=-JV57wx(B#eAujc&pk9SP`6li-Wq!51}db4dik9p%9t z*~YY?Ao!xy@I}v@0_iW@(PFrx9L&Qsg)bWT&ll0%u*OpUKVL+(c3gAb244hIMAEC!WzZ7b`u$}MkTODT6axFl{I=Dc}dn+TcdT445hbfYxLFMfQ7>vwSqNr zwQR#w*68grN7-+pF7tpXvV|$iNG_DBtdYKh6^n#Hs&p<9cMlb?C9p;dVU1vln939- z!4z5E{K-_-XbG%Q^Npp<6$Z&12B~6O7P}8?)DG5Yk4GD}7uLuS)+p+_A&-DH8VqYx z%d{(3S)&=SMy46v`7!vSFYOGS{f@WidT>Ww;f{WO)Z~BQi%!88_3)U@X2Bh`gF6}+ ziQ3xmMZ@8XW;kF?1>Dh#@FGRfn<2a%e9aIts4bqfFop~JG zkv`nfiM5Q|!ySG6=Z<(2xTE24M@yqe^RqBThA>5&%k8+z3;lu@niFu0?SnhI3U{Pq z5yKa!PjG1uo0MlB!JEJxErUDKF^T0lutt+$jl#o&c`*#qFc>7omNt9wul)msna76S9j_4^I5zG&%%#S0?&)+U4R1TNY11{x{dvlru=hGg}XN&1b zN`wW{SY9kvq+b;`;Bb84aM~Hvr_g&}m?0bvtP#D1HHw2Z;;npX102gPI2JLlQnoO=Q_fgw3R z{G?DhkYjKlupgqze!z+dl@&PvE7ClAqEPveIQWpyCKXi31LNTY;{k(#^_LH& zzc3iN%@V00Y{p&K444g4nT_r+8+Lskii_|S@8K(Kh76(v7>PMB68z*?Y6>Iq3r50Y z-(_(fM&bjE#GRiZ)CJ~YD$E0n1bM+oFc=B=2U7WmkMIxh9#rK$1}sY#D#NfBh9T}y z0}}8FL*NsZZPup;@CoJc2_GZ1NTW*tIU{E6`%arUOu`MA1n&D?tb$co39A6ZAXJ9o zah+FA7j#U8x!Na0<)0HOZ*Ugg;CY`^`69f*MtFnBKohzNZ_pjyKv-+jPsD0$q1+7VU?3R@f~^*e%!(x()kr3HHOtC|;->!ZA36S*NxLl{YvJZxAzln@ER4 zI1Y!9zGA-|iTJ)A;`?1=9mEvG_irM;?>YIQyc_nQ1optXRvn6l)7!RbyfCS~S18~U zX2K@~-cyQuFbVHr626sZi}i39|BJor0E;4N+K7S*CJ+M%ilU$h<_z0q!ib6l5k&+6 z5d}pN!~mFcz?^f=Il^?C!>O1(GsZLLod0Tuo`F>ky}R%3zwg_99<8nJ>gww1o|>tC zn^}82ck$^%Id%xo4{XEp19(1x@$(5zcs}7O{@r6uJh$ME=N5*KUr70xgd=z+!8m3z zJ&$J<;_$4()YbV|emtLW9?vHrhQ$Pi7-9YTD7-DB9^Y>w|@vOo?JgYG3KnNR$ zXBal)8HUNnaqmpT5Jm1&~&o_3N@++-{XA;`snFJGz9R$yK zB;pwl$eow)a~k*YoJK&83#2=qLwJkl5H_rEgBN(Nz!A?C%zN1YHsE=K7fG#X`ZEcy z=M`dQ@N7Ulo()L99@4K9JSRZkrkxW=zm|;VR|9??U@e{pNZ)Vzz6Rqy!X7*u@EFeq zq_-!%PY#uEgjIM>paPx~NdLXWvSYLWo;_HAXAkh40Ib7v0?Xuc0>IA+nBzGCGrLeQ z$8!Rg@SH$;-2Z34uk2nCUgEh6Lp*nZSihnlv3?L(e_-%<+7!>6xZ;@;#Os0M^-mD5 z-!P;dv_)Lr7IAsR>w)9-(-E(~P{afBBSvqI82$7|TL{PK?Gd9dS!WUPLyX=LG5Y*D z8k0GQl~+Zq++oN@l7v`!PsGX%S3M==5i4(iSb32SEny8}<#iA%KfARv<@os9d3QMW zO*!^m7_sl#i8i=rK7bh_CXRSI<#_tQ=|Q!dkKH6KN8H>7ar2Q0Tku`&-PwA?$36B3 zz#Tkekb-9nymC20eZ-?rARhhBuLAyFdTmw*@#tRo9*UQUL61TVx~`@q6hjR96=Klw zIUT_kacT|X)cyUjE#lF^h)1XY?zf;E-HjM@HpHMOB|SL+3s8wG3c|1L8t%j zk=u-|z-QH+h$&m^^7h-Jo+T! z(OW;3V;qn6L_E4@Qb{%y@#TYOn6=E ztke4;I(s%)ia2sk#F49$de9Ov;%$f#d*I(VSfpXW3mq?!K*XJMBJMnG`B>tQc(fzp z(O2foAVm;g?v2>-C%t5eW6-S-gGTI_aO}7aV#lS!-;lD17cWP=c+rjWgyY3U5HFtj zYc^Pd81ys5pwB0lp~nz!Esc1qeoF%R5l2pxabzNJu2ySF zLByA9Bffmu{}EY(m~wl>lmngeLp0*l9*9$q*jF63BThXJaq8XoND8nNchb?r0)%Qk$NSHp4naKz;kr#7I+5NnP^toc~$!}J2;%ZW0+ zOa;Ddw8@gyL`?Z0V#;}^B+*2~nk^7(9`&RO%Y&HmXT+47j(@ zdEM7{QWeCPJ0iXu{L4(r@#WcwFC&gj1&-`l=&I&d#G0og)?DLwcw#7G&3h1QuAHl< zv={N^Vu&wGE^|mI;>husi+4LZlB`2~c^l%(OYd$ZO%Qh`h&w0lD-696U(SX2^4#YI zAU9&i^$|O6*VzPyA=W$*v1aRdHwZ(lIX_~}?`smUM65XuvF62>TEKI}mpjP#GIT|J zxjEv?BMbG0<%lC6K^!?WS39sntl0*!=Ge#p_%eM6{_fdP8qgsQLJ?nHDdWp<^k%g> zgAiY~8t(yKh$9Cej(l@e7z{*wIUMn2#GOIl&WJB->L9+Xhxl?p_zh`R8or$H^{%FG z8m2sRXh|xt=EgN0tZM6CH8V$GI|lF2*7k&h#eyy@sEG6-?xT!dGk9GM9mdC@gP=72cz2gH#PJ7xkqUOn*(?Shzc1H_c4 zwz6Rp5l0@5IC7bzluC$|Z$_-VQScR5i#ych;jFL zJ&SToIX7a;QO2j}Jj9VtAdXym&siFP_;O3cm(MTH#vUT39FLgts%_brA7aWY5mUZb z(2Q|R`4M8u)5;fQ98*4nm~!xq5-cSRQ$ByVI6ID*@?pf3jiPMWL&UgmA;wMY4v|pA zjuR0(zQ|1A17gkD5o;co*BIOoN3M-H@|QKk$vMQ4>)Y*@2F=<++9Gybz4p2~-El8h zFJ8uu8}vvZ8xa>Cinws_{Su(>VGkV;r*^qFlN3zDl$$Ixf`CvIQ~aA&4n2@SaP25Nn=^SaVoCJe!2L zwlU(`GxnPjPsCyKAPzf!M2hqVvF6i=H6vCI94nuHXTEdcmkkKVnpYs!JZ30ju!zHU zZyHDuYi1m4c15iDltp=V9`WLCh!-yj$j8PaE<6Bn;YXJy(zb|A8(uy}>h1bM%@L1& zk9c(VoVKhXV$Ed`YYy67fxSh1`4-~K0n@Wlj!iE|Y})_TlO#*Tf`bqXUXz1TU&N`a zSm`-+vnYY@n7T|qAeQ~XpgEn1nDRx$lv_q7({;Op*(AiB_wRc}d#2&ewV$}M#fS-R zLQF7p@FF@p4ZogTFh6;Kxbr&1ovYiGgq?^H2O~!8zhN(_fw(iinS~w4a}_3tH3MSJ zU4EHHx*?|g1Tp11y^@J7V$HUQHE)P;keZ}n(5J_lOO+58wnAKZ>t|2G5L3>9nDQ+A zQ?;9jHSa^LdEYP~QxJnbgc!7w=Ps!-V$F9DYku(CVofQ;ni*ovgEqV;9P8hPSikSU zINAwu=iG=p@9IC7=DKy8WY6Wzy13mS2IDU|n;^d2s^wndgt&7*#GP058$sS89$g>t z=xsIMlctC@+alKdsL>wM7BT1@h(Y^2)`t^_J0C^dIa+$E>6V5&pO|D%?;Oah8Hc#D zRp156ap$~yY-eC}Pkf5reMfSqh3FjywW!WW=E1Bx2A75QE;lI49IWOxXZ2<=ZjqNE5`Pmm(f* zetINHMtr#u;>&mSY#;^k=pe+S(|?~6a+j1r+<6e<&R1SEAbSvBevA0B-Qj^+j&1HsZ(~5Jz@i;lWBF9=#v& zXwYxXY!GW6fmm~5$~zj181x#%p!E;uU{7B!k*pDG{@n2-zAqWytB;tnpKmc%3UTB? zh$HKpZl>80clJTtIpRPd-HBN9F~pjCP5YJVBfcDg_;M5TQ_?iVm)9Y_+-BS(>W}zx zImDN@>W!s45MMrm_;S4k?)y0j(Y%c~JzwyyP+E<=2IH{#0$ zM;xNf5HszDm}$?QLV6xvin+MyJ=qR0bw;k1^%AvkBtPlK(?8LB*Phz?w%c zb0z|74k#C$=!5w3D#VxXx*9Wk#GSJt?woyyF(ZgI`ykf5FOjw28|o@JN7Xt$#Np5+!8V6Ird*jQN)X55ij2EKaO-n9JxE<$ju+mBtdDIb#=3+gr(ug zLu#HOwGcb5h1hX?H8c2nxiDBGraZzcEb)9AuD$W%VB&_@@d3n+YaYl0rPJ``;s?jm zJ&3)&MC^6IfMtYZ%A*le-myEGOhepx7~;-73aug)5nuj{_;SOWNrdCeEf8Nm{KlBn zQ}JcO@#P+fFX!6yLTZSZa%IGnBh3ux7Q~KUAa;DVi5;7Vxbs-Vom&)hr5tPSgIM#0 zvE5jaTl<`25J#?6HlAHVe0eS6%i-^h*jmJ(Du|8-X~oFXG612UKK9h%Y}weED6tCmV}+^i;&73p^Z1*CCEP2XW-xZda2yz8sDC za`Z+!sVid2&k<7|7u}YgMC^VwV)xBU=AvH*kwZy zKzzBenTpI5GjzpYq1qoiuXuBzHBx+tbdZdf_@%>ue+8vY}KF7l9F^H2rn;|_L8wedX z-J&OE-;hjO&Bwoo#J`7nHl5b3aZ*#eWGuV-IR$?cxHm+vil+td+R;Th0$|a;sbs;K z-PG`bK3s3z4ss`6kY>%dfp%l+Lxo~5q?R5MiBAlJj>~pPZN~7HVM!5)mTJ(H!KZBPgY@b=1S!1?J#J+WT~{H%NhD$nGam8v7F9wpP_kIFb<|( zJSY{L63O%%O~t=WJ|ewc>A@Ng&kIX>o|PVjhO+ierx91v$@I0;OwCh|IC$D~gJc-d znG}tSfwzwMyV=ntnUlLOIdhG$(U`lA$=QYGdpl0L@hFnb={=QXFR@CR`^EURz1 zu&NtsQjbH$*t6}7me}pjR_vQWk0`)|9YPWm}udVmj` z^5DK?w|74s64{M))>|SOoY+s#5A4Q>?L4V%$3|@Wb!+BddyG_kWH=lelSn6Yo*=c_ z5y>t00UML;6Ryy%KhHZNgM9(i6Asxl{QzfCDn!3ZJ;_D=`;Bgo< zc3CJ@x&MqT`qB~hF1#<@d>BBwACCdwh!v7?#7s@yfH+7DUM)3$5D)G0?{j{kXPuPi zx(OVzX$3Eyn^Jg?Li+jyLiLXYsG;X;qJOMCcy6mhBWkpjriR$DLe=ZR?ZaO*P0sbj zvxqfG?Bq9^fW7hfXF#6Wu zHaT}Xki7^#qS?~-gC>XD3TaWbSQv-7Ui3>h7Gyo1%#$3LRbmzPNpL5TtybP;67Qo%p5KjA4J_+*N0aF z`;sNO^kLj!{N1hIK2YnDA)EQ-tFwJmPmsErYN8M4gUzG%kxIq!-2#a%agQMo?lrzf zH*B|{n~(JYw-y8GKK+47^?OId#{u}a-}4tG&bVg*4VPD9%~~9#t(+}k^U?~eid`}_ z9v%c0*ZfM&%ax|Rc8nlCGaX@j|BB#c{X{c2sT%nIitpQXdZaPFRs~+MYOrt80Zr+< zhET`8Eo{iI&+d;sP4?4z`0V@(Z5qGUxrJ3XXqx;k@xc>&DaV0$7>d7^mwUA}z8l>h zI@T%2N}k$IgVvOVsA&ZyJCkZKC9yipncI(@&bdt!W$a99*6+#I1g9iDTDgkcoo*s| z=c@tu%Un>=3D2y2oJO9S?IK<9{W8`UrqD%q9caBr5saA4q;Bg=(q9p)N=!UThb}*t z^x{T6R%2`-Ham1G$-ggw`i*bK%AYV|x%O0LLrjXW0-ul4ODC$bkB)`d%0{Q?=7kB= znKof-Bl9xN0#DLmS8Eo1J{P;&(~GQo(2C`aH)amY5@^HLP1wdf`PkJ2OYkpPk!@Xf zl=fKLhBS|E#g637!~9LEvBKlb*z5|YsrRj5(0hBHj@fHSpB(MSvd=%Osl2x$Y1FS1 zn;brelyAO;Y#EO4_gOucus55?%lrM<_Wr+Uele{??7Q@2nzfVY!=8?GlhH^Ljc3mb z9dLyAt~tTsTmiUw zz9fvkl;GUTHl9^Iu}I@U!^y|P_&%|O9Bk##F=WChj7>2GY2@9(^i~f1U7&>{NJ2v= zdh>oK7PIFfJ^r{MdC{r{oB68)7++gJDy(o}mAmGJMwRZ9U+)#5{qzIiLxo69soSO4 zoVyJn#>kzy=@nq*zMRx}>@Z<3V_aGBt&OQ&t9#Tbsvetr;yHMlqBLp_c57ynL}mzs+uFnDiKW=< zTZid`Pc~q%H5aSZATK-L+>3aH;&YvmEvse_3w>7^(3koPG@Bx9pb0T#%jy(hvGd(w z#_J^N)#fUVJk%J<;XUtgwqHm!zkIN}A^uMN#DcImwn9>Lv1H=s(G_OoEC^kl&y!{) z@cN0X1nv6lCFkx~!D=%H2!56i{GYueU$>M8y1f9j|MfMof1ejD8Ww}dizaY9LeeZX z?3A?cdK{F%vtm|7ts&mn4w`o%Y`_*DV&YT^>?Yy)P~U}`(>n> z^ec#{|d~s%~sm2P6(@1;xc`DFPqe?QD^opD24i--jQ_VYiTy_b$Qm~^DcU6YzW)1 z{URM=Z79`R96&dpaAAFei?S1EJW2SZTC5kwhIQpj!+-*Kt|7Jnd)5`$#cJKi?bs4f zaxnhgME_sNa2E~C*kFuvb&TBE?u>s|0_?tFXYzi22{02N>>oij4Q2L?#{X03Dm2 zCeec?k`HzKz{C`PPuq4Hxp%59F?=&T>22A5tj~o(w6*|YWJ9-k?f09Y%w}!EsR=FVNi9OpGV8A-`Fek6@ z`A3s~6zx%YGQRiMpN%lskMB9CjlUTN>Hy?XNdLoPB3D+H!W|T7vk}` z&Y`*sZA)^(MSPYkJf(<}{|R4ch0kw;iuBivSYimZ@cAwINUZZ3%;9G5pGwM=FGz11 z^nqIVJm&posiw+rdW7I}T9H9Zq`|}RH;M6itZb8W&i)_Dz({-^JM`IEGigCI%rYBD zO%o1i{5*Xj=XE{S-+zwgZcty++d2lWuPq=g=(3Prv2F)-o}Z(`rXJNKWs8G$t7b|^ zJB%l9yN1Kv!UJha816sK4Fl-6%PGgpQKZ2Ib9lJ8E;HC~NJFcYhR*})u|*Gq@bA}W z5znV9Xj^f*|H*YE!h~o->AvwI&4L2Yj%D77@DiFIjhmT8og4k39}fsiB`bpv9Xf~ z{owvd6N%5mEhENAMQyjx0r(8|s7@97wCrb1BtEA-&6Wp zX6rd-wsXyczVP_LS6aBr5>2yf!K_5DIV7dpB0AuBBlh({KJXbdm4-iP#C%`n1B-oA z==E~pEG42Hy>M=!a#?72r5ie_2!EGqb^`#dnJ}(9$Y^9_#(+_A2 z@Hw_aTtCTT^j`92e;8!j674*_(O%N@WEkl89p~))HV0gt&<%tZuJBa_NyRTQM19)6f$1R7@4x>|PAJaxxpdDgTOk{8E!$-nWA0Nw`XC zoM^)e?rcW8guNqsa@&-Djga&^H_qDV!IEEF`_olsi z8M5iKJlKX>t>})S-fYFfN3{Lg@wDEerSxuFKj@*^O<&KkW&JdD$fV8AEcl2&3mQC? zj56O#Ju7r%W}V(pi$#gj(WS=Bym1@m|Dl3(`(q@tJ~)nsCx4JqhV^0dkB88g-p?hs z9{Fh_eBbY}H}jL)%+F6}M#r+T?QbQ*S!1@cWgAxf`O~Dg2EJ_BSNsj8svD%rUEb1M zAKJr(-Q{WWg~v25)D?csv!9mh+>jd8>jM#es?b5DuaT>ME#T?9Q}kBZns|;P1ngcO zpk6)JQh%3l=z6*goirdpa_gT9qR)D>id>bztze&*9?5yT5qo*JCONgHf^>3be>UfO6f~YNinf|Q zRidM#K=1k}>NRbnl>M+b^HuZGlP6TsBj z!|2er#n`-l;czV5c={^WK)T$u29)tF$A+zrpplya&NeN_G^O!32Zn7TD-UD+d z6)L@&RL_OE|E8`q&U+K-f3F8~c3GX&WX>k?+x;FaShF>;->w35GWyx)(6GdiigodC zp2{+-2@jK2-UoQ+RE~{mkWISmj&o&i#Ad$UBIysv!wTQ^VpRuSNV+vA3id<{Bp**_ zr<3Zp1tXFj+E`oBdF7(v)vXaU=k*EFi8ggCoU)cCFA0b4oh@nhxohc% zo#D{m$$}m=w3o(w>5u2OE7IC{*0}zLKJetW9sM-+1${lG15EO@rRz68pw1IJ!ugc4 zbi9?lWNtA4hFo!=MaSd2SjaMJb2Sfj8&s6pd~5=7D;#M~Fk^XkG>4+Ss?#^Et?+MG zT_EU$1MPg|i&PJD9ODr+$%7hgHB&J6DU7*Kqseb1W6XE%VZPJ5hADf2c}+OxHGVy- z)6STigkWw``mr}zg}F~x%zbkA{UA+kg>T})9Or|z*KhI!K!%$rtA4p10#pBk80JK$UJapFcHEavV7}Al(mSVBX?cO` z=>p6ZbDx=*`=ku)OBZ0iGZFKh+oSf;nwZzD!@OqwGIPc-Cu)T`(UjgktQzJ)Uq63! zuHDp=-R)+o@xwd_^BPtM^O`WsYeIbj*(1z@o?srd@mL?`hk4Mb>;sc>4-aCsFvlr@ zIZoZ)(JXiDXxd`YqC`(;OSTE~pmLZ84cRe*w!+*e33H$E)=#8anEQ0X+~&*uEN-Z3ZIjX6>FsRcETnByd1 zjx&)Sr+F|BnvZ#qU!8Jbg?UhC%!6vx?+KeR-?@YN&RpD^Jdb%$H_U@D-+>00@7%?F zC)B(rSYp025%V3)5kSHm;V|Y1?{CzDvY6wn#vG^qqX?*lc~Aq)gRbCvjh12_g}IOEvINo;bDs^E`vl;a%rVEAggMTg1WV?NdC*GCgAT22LtQWr`UUf# zwzq;=cFcXc%efEa#oVWgocq8G%zf-J_t`qU6V$}qXE)|PnD2ndcLrOHq{T6>*@Ah^ zZE}j1$9(4=<~#n+Z%gwr$C-mU&aCMs8lD?kU~ah9&P2oWojsWERKL`R4a0nA4CXua z>g8qbnC}>QSb^&eBX$h)oowM&FfZmjEi$kqJi>hE`0$*JV7_w|^PTFK6Ovpp-w8dr zNb{zF6G_2bW;y0EVRr|Umzd+&V2-m?3a7?L+*t+8gDyR8NZ(_QGZAx~?AI31e3;_| zV2;zJ(tVouegWEDKLAcQ&d2&-&f<(Y%iNu2tOw>SuS!4G*bf~;mtqdp0CT8fl_I5& zw@R^Hm(sbP%ocN&)tIxq?2wOLz#Jz4bDV`{4y-%oFTt3< z%*k1hmBSpz2XmbIffbyqV(!xebDvO)%d{-!EbB36c^4^3exCx8c401)uM2?%n7?>o z{_=IE5mY(6kC62M^9?T1y7)|PfzRZp-{ob^Fb|rFd5|T>{4@A$Z@Qoa?9SE;R$^XL z4)dDiiRGYVhlLvJodotKN5ILn9LMwFGO`2nnlYHyoVD?X3!es3f6RA0+)IEv<~YwV z$0^(D9;uDF`1El(U0&vs43<_k004U1Aa5}bO2j;9_>s~Oi22cC%#R}Lgn%jLK@TwxYP`b)-%IVv zwqp+aabW;Ci1|)D<~xVKmWF|t6D`G@XxAA}Is|hcU(9`Ojtzkcm>-2;ezd4O=1rIf z-NHQRaaVxxm-Ql+=01azOxAPo%!C4*@Z!$$m=NwNv$U} zX)@+G9oJ}>mBk(D;;Z3FoAEvVb4C{=gE8NExuXTUeC;LefVs@9C{tF!VJ!8;ed&pL zqFB8<7f3zKgD&23V@3UMQE$vs9H#&~=dg%IV*a9s=Sb>(D9aXOj^o_F5_{~0??J&F zXMN9-Z0t5e))(`a#gX1LE~Py?hk1>mWjk8u-62{Qa~X>@1F6FtLv|nYmm}V-rIZF8 zm>=dZANQP3`jkJMMPklUq*-qo)6S5&U@r4?jfDh`9atgEL7Hc)o>b++QwcDCk#J5_z<@bhG+4lEQPA z5&LPW4Flq2z89f%&@NY~fO*g( z`(WDEy9Jm$%mt!!XCGGQpeH`49;u zd$yzDrF`k>_C073%w^`buPe22-%Gz>{<7>9OG^zC1w+ z-r0*)o;siGC=)NW$la4|aac+B^&T!Qf7+S#wYW_D9tKLoM$}{HJ?)@>7Zd5skfJOE z8nZ87n-PnRW!b{@wb;WiKBTyvJ2PpYogMZXNUq;t^cVN8Eb3`tGT5af(|Dhu+j|cu z&(`C6riNJ1%Kayhf!z%>6C1~~aZN{SPL+wKSA$|$c#j*-<$Ab4Rms-!H`FZ5QTX@KLjJRWZrWKAyE= z6E*&ey0HG(@7g}GQl+O2S*LO~taF{3(uS}oW-v`(%Dppzw0G>zhSljq7LswqdYcuD zU*y7yI$D#^Yn9-uKK_lFz60sYoLJ>uj%=7;X=&?J{Ov&M!xHRTBt=Z@%mNRrBYLYx zk;S?2H&bd9hD7rya=V`oROt7SZZGCSvNa8X>(BPke8XCh$T4-;nc8K*YFJm|SjGU~ zq3i|yZq+7bMqoZ&{Gn8PkvEC2*$;xYZcCzvzo!fH;CuDGs*pu9+S7n`F|fVf zJx#lg5#YOI9RAipYho7P1z4vflF-_fJiNVDbM0UpEbi%|SsZXzv%6#*RNdg9p~u=# zx1}*)U*k5nJ&Gkh`$vH6<}!47O9Di zH~DJT7phgC#be2Iq81+fl?zH$C~TU)l3dpN}C+&!OosBA{z&cC1rNq zrx#bXh5x4Sdk2iAC2(99a9saQ-;0llVRZ-W&~#}VNDRDU*xaBOJAb1wByvY<=Cz_V znO-V4xwE>rV_;!=U^A#mixGHKB9 zHKcmM2)GiKLZ=VAPvgfmg1oW!X_daTT7Acx zb~2qRO|M^{O&%v>&&H_OJ3oB2W{RNWPj7{V@1yGTMNGtJOK!7RRa3UOO9NmFiQJ(fJt z7CLQgPnsX;!!EusAlFZ}p{vftu(9(mXsoXoB-VQs$ClmNp&8+LonF0Mkp=cMgUU@V z(h^}oY|3#fa(}-Ut9B@b-YvG8ysF=tO{|oU9rd;(4rME_UR7!{_UW1AX|;n+9@ddH z8M=bnJ=ssjJnG2ieV9gb)Tr*%Ho6;2czl>%ujmUa?Yoc%Z|;+(efvWFK~2(gMRm_t=dvX^7$nm zEbW$ShF#KQ&uaPtv|q2ux71Opguj=<-(h>L^ha8`a7V_!pSpOG?oSM5347;D4QijH zcXNcY+WY2f8shgm_?^paw^^QO`!$|f++3g;bM`$A9P7t&99$v!l)IidwnRLea3ME% z^;<`$HgjR8v*&>IAI{SE3|O8+D>PN@t|yK{nY~9!?r1&C2ppSwvu-B}0-1O(u^pZb zTsFr93RS;NPQ0qb3fryMRJ@oQ0%x^J?KkMd6_Wh8Gb~%OMpJ0s71AJEXV^L28}gVR zrZa0%QawjM*w-Z=;y8As;IQkYnqzt9yUQE~PP{|v;%^I@b~r;ye)a;N=AUT2S$)WA zr@m0vqdm)d4KiS_wnnmUdUL20^E_$t z6BE{Kq#Zc4{X+ds`mjd{D>ZHW8sIqkY1yuA4lG3?)@->$ZUX7jT#v&t#d->fpr6=zJx%e~>X7d&r%w*_ABWzstvJ`dy_gG@KSJ*pW?W^pM=Nvt@48 zi?JMaPdm-4RfDxWUX?9);K~*~&}aP$E}-6HeIeJm2lUGqKic49EigM*iH#_FElJPu zCMll1Bl8&7o_szqi>%IN0n-|2nDLcPiL6QyxHh>Z3yYghThBIyfb9*Kjd^}Jo1+Ar zos)-sSY^z{x6hC75--8V7Y%?G^|mEFocWTDxR9H9;Ch>l>&@+66f4vtH$B?AFFl$) z2U~_~Pj5G{;2R61QMgt+<63Qc8Q(XMZ4s&aq9e0-Qrp>~-DGmfHj0hB)KKFY+?wd9 z&JVhEpt}xqaX=Rbba6lz2Xt{j7YB54Ko@M&0$VyZ&|8zwY|i#Q|L$(8U2=9MHu9T^!KG0bLyUx5k0~<5rLYxWBBU zIzQ;vf$lo^Z;Jze)jsnd-ADeb`q%0C-@u>#=sNq+cA2fCA8r3{ea_L@t;^GNd73Uy z)5QT@9MHu9T^!KG0bLx>#Q|L$(8U2=9QZrqz<=BRnr=Kg+~9u!H~9a0pZNdw_bNJj z{@mY}>innkAAcVC(RJ|uH7@Dw(mhxIozK;}^`={Iy7l(Y?dSAym_ZJgawGri^v}kj zKk7g2e*dVRe_K24aqD>9eL!~~_~-5ey6f-z*WaeHDH?u%)KQ%ubn8I94s`M2`|(2O zm*4k`!`*qBy4PD09sPYj{Lyvvqx+9KIo*Es&+J$0*2}+Rz5LO*p=`# ztLIs_Z}|KBhQdF8)bBs~J^`KF&%G~S=P#YVe&+WTbn8X8UUci_$A6DRcfIJY7v1%u zyIyp0Ko%V`vey(Eb->d1U&JP?{)2)O5 zj&)E$uaX}Bd`lhE$_33#F01lXHQ&*nRXfL2%PQyznw9(?trz2yX(hCjf3&Gwn%+-h zTp8P|eiZeBW@TSya-v*N?fyi0X8NHE=o(eKac)t>i1 z%d6`_w)@ZO`?Kx;I(uZl%A?}fi{QoeBly3YX4Su_7gXCmQ7))<{ol*;_{TqjI;O=Z zK}ESX74?FOdcg}S$^{kWf@W1N>ID_;1kI{k)N51i_M$$sa_xE{Curu^O;+f5zq_2T3;y}5XtuOcH$Y^Kg z^52)s%#NQe|8`vq`vm=d|7tt!`rmJ-ZQqZMTeSODUi2rZwmm<}Yq!se|GwVL?G*At zZ)Q}M6MC|u!XH`7W$aJxh2Q_>k4iJ%XVUBCPj;E};`uV;^NuQ?S-t3A)C)c{J)-`{ zsPNDK7pnRrb3gNu2|4vTlgIm?;zfTyO11r&SvzgHALqq*<(2v4?PU4vdinKopo;HN zt~oo_=Ev+!rsY%RL9MY%Sw>J$2fy)rNRi~B|PM`r#L<)R-!wcD%x$@)}Y^e<>u^*`%B zF|LeM*!f4P@Td0pMY+(c&5LqDg&%~R;I;J%c~LH?DE~f9zpnZE=Ic)QnbYs_-}k@J zFWXsO(Ic0Ob+1x+9NbFYk61@)y|`{T@{t|a7?()DUe)VH*em8w@V`g-xV}FQ;a{1i zAHUH5GnBXgJ$X?tX!`3{w9_6(db@>vg7Ws-@`6v_E;G6GdbIoJeENE>m-9mI_vrWJ zgk7SYo}MA<;vWP2W~Em=jmms}y#lE`uQ%lX;fKrd^(s?dpC3zPIU%p=DUP+-QHIB3 zb^KfpAA=RH2VSqPD}z*hR;W>y7k0|!1+bj=S0J^2PPr`xX_VWbhu?V#w@1<|Ihp4nz$`olFz^Vom07v|IhuQ^4z02Qaviy@P4=i|8P0}Nzcpk%k}eGS&p~o zyiECe;j4(-#@DqT{^K*oZR35YdWC*Yxn8+m_9(K*bB*$Rb5DGa7jl{D<@LhO0(vH# zMP5+Z{>*t<&Lq`pJ!~cXk+EED|8wO+U*jf zy~=CrmwC}n^>aqQiuujT-mLU|tN;7!ROnIdmdBYnFUBS01TSc@)GsD_f{Jn>pB0tm zGqX#(T$@+z7X1pUZBIr%{c{Fy!LLGo9m%USJr(U#%2(F6a$F17BS)#s>eX_2eVV3e zQs-Z++srAqM9A~@h4hNzYUi|AD&=-qq(+DT1m)VfUitGamG499dMJk0>7ivNsWf9b zx0=_>lxyU2{3GN9FWSr0G)*5LaZ!{N)H1c)6nWm>6zf#`%v1GR=$WV5k)Cpkxdr@V zs#g$O%eD$n)F{hFuBn4_Lz*vcYJuS~ff3)I8ylkMlf~2T#`dxv{y*=NuYSF>|I<@h zFOMAGuTL%hPP;!>F0M<_udrXcoY(W~UdUxlgWGmk^EchdVs=*f%< z{h8JOe)+f8fh?a{xw;<3dJ|M`r`G>bUg#54*7Lpl2e0Axj~}J{{vzLRc&w1)Z2IUKg4zY`;^C5{!!x&kJM`173JTPvv+q+!l;F>;87XhY*DWvQRMo?^sPgJKWcl=RV*l^=#wqWoh;gLf zkKubTd?!ZU(UAM$yBgdFynnH8Fwe5>Bld|E2!{; zI!^6*L%gcExpHH5D$?f_4Y3rBexCXi3jC^{(rLUL! zm2nsDFPT@Vu;{O(d|c`65%VO<1+Ps-{m)S@&HIx--%>te*`DuH(Jpg2E|K0p8F{rm z|HiL2c^)|xS6{|*A;;~JuTGirJudmW<-N&y^!IroFQ|~us895h8I`Yl9vy@pZ7S@M z%hhpZ-AtDfb-TE#^Dud}o|fF&<$b=jB~+j!W>}ZdtB4mUDT|i*lK&@?4s0 z6qNVKc|kL_<9p_^ezC7E+HpJiM_z66c+>Nup0}6BCEF$2C)=r(e`~ksN3<7IF6S$Z zqYCmkWGngqd=%UZ@_0Cv*PzOC3AtSLgWzQ<_T72Q^yA{3tWWl{EGPOCw76c0R5{U) z;7cfW$@MBP+au&unpwHfpOFfEnNd}*=s(p=v{v?)N=3P#+V$3{6(#fp&FJrM`_XQ% z&5M4@rE1LFj&iAjs(#@gnSR?YqkXEqa)0Xl2tBf2_&kd1flGedpYXffPRzTYs$L-{ z{GIu@c|Wogrs3xs2^qIqh=Mudw_3 zJbw<5uQ&NV`tA6{`Vj2}6?(O)sLzU8rwXX+<6E9<)~>fsn=wvpa86`utH_D^vZ>nj z^!_Qz{b-wNKd08niS;P+!q2>%%ZYlKm*qvdZR$w*80}NF$|L8VvB5I#1KV`tv`Za% zSv{3Q)J1Mf*4 zjWt@sTXB87mQy|^K33U!ZmnDpKobu@gLAD+R1wP%!xQBD3_4S0`jYf z%d2sP&l@l2ANl|9QQjLb7c`aq9r-_3FYHwN6a9Wm`E~lOoajGudF^&GFWUVq75)5N zyPsX(>bex`OzuxD|D(LnCsXx4sNNU2=JfZ8^t`x^zgN$rf++u<9QQkq2&M7r;Bll3 ze&=z3#~IZ>+Sl`s^VXQc{r@a@y?$FY09~e9C>v^$1?vf5d%JAm(=lEW|DCbY|yq=;8Yu^8SfTMR|J4cN~O1d7n$oCq+4@qF-T8W>m<1pQftGFb-|G%=C(K zA+ODgazRCXW>m=i9Ocs7|MDljU*vMxPu%Z(e&pRunaaFXYFoKp-k-{BKZxrSdc-^k zUY`Ao^_h+HN6XXO&->GEC+fA!1uyDrr`LF4|>Azt>*q`8_K1<>W&6(NUcrbnD=M`8tsC=bWi%WO_gF zyG?pNmBn}=?*MXnD?BUBdA?uId457xE|)29p_X$leYxQOC>8yQ_JSAV5q64t!3(O& z3%doC$CX*VXfN~%Il=$al+Q+bKMVV`=|64fKh?kR!#~x(u3zo}-E)U-9q879?mGDA z;()jhsLwGR(fjA@(ZvH@JkYH_-Swx71G+e%ivzkipo;^#IG~FIx;UVV1G+fyZ;S&1 zKM?!ng8uA!7J9VX34NJSZTZZ2pVGDg8RV+ylD%i*6n0)`9Li z(8U2=9MHu9T^!KG0bLx>#Q|L$(8U2=9MHu9T^!KG0bLx>#Q|L$(8U2=9MHu9T^!KG z0bLx>#Q|L$(8U2=9MHu9T^!KGf&Z;IkV`Lj>VR|W8R_N1Zz`V)OH^Jh&nRbv?Tt}R zP;EWDoPR`nZEA$AxrDJ^p49$0&p(3a`uIoa5#@r)?ek!3<5Wpb`A1OgdclkKnYGK4 zswH!~#W-@~$bQdH+Wrvj1Qqqdf0UZ2Wy$?xeE@^ZZ_ulkvns`Dr2QQMv^onoN< z%9qZvw4UCtxBa2T#djLPZyVDY+!h^G_!!n7985+k^1WZiK%CZ?}oU z>*);y(U#N40R!OW&=AF*N$oA+YLi2Xe3zhdP`Tz>h2MCi63lg;r||n$)`Y%m5)^*c z>tLwpaZ<4-_F*rm-`YvDW!w5xn~#M?gPwztW^H6-Dt~upW9U*eKxt2ogn-GmJxcon zGfF|9oiYwP=B))y-IUsc+#s^AK3U0Nyjy}uCx6`t)@^i6oz6^1*lPoXhxm%GBu!@Bt%WEn2X}5Pu=nm!M#wh(6>Bqo0 z`c;vCwj=^_Z;VpvwcEGJ9|%o`-Bs#6DtCp@sC5cIvO^2FHL98755FjH7-e5d;Va&+ z5B1ykR`^v@gJ8Y;Wu^UzExo{av!}v;x!M!TTX#};&kgyY?fjccdynL{u=Sv&!bewZ z29EW;75?&*dN8SBjKY^R>;Z3*M=1J?L;T>^KtrXzrBfJ;D>F~2zvIvs90D&X{;?U< zA7)>kpzym3SAjvNXDjV}bLN3&&+jU{w*R#Ge5FEQ;?sjlf4@%X19S9qDtxU=Euh5o zCW=1Cd7WT#zK2SE!XppZ+oFvMZ^TS(}#S&?6GBLZID z>8a?e-aQtM^(w85Put#+aRIQ?_?05Rs(nlFnb=6tSKv%(xazY_;cIm*2MOiXc-X0f z1!!E3D)lu}io=9@dllZ|oH-o#I;QZ>pB-SN!7_!nUS|Vz@eYOWP}BjMoLH{#m$$mW zl(K4kyK349MsEpG>Zk5&25X*sD*WvuO(6V&ufj_YT%dqg7lpU#+X%)M>#Xpd2Izw( z=SPJP+)xJU%-^E${iard{O4vVe70U?;A63^3Lom)4B98RQTXDAYry^ZjD7v$ue@tJM07fyKbJ))A%t^o3&J+w!o&k6q^lXI#oD zyv5LxaN=!}!kYw?gR2^Kz5?Dig*c10O8u>r#?X79zrx$TvxP1BHz|DX+?C+z6ZF3UAlf4mRc8sPLb{UBIkKSB0OM(+lR`D6jBw zmW?3acy)fYE(-aC!@KN~v7uv(KIRzBH-ksL) zrE4vPpIoyMY$~Zi3Mw1@VubDE!f#*`eFmcM4y=nmc$^tf}xdk2=D{ z&?O4*P^ciRI;Z;Uz(aR<;#N(m58BiUB5KrA_{3HHVakfp%KF~*q9s^VSD&v-%xwUp z$MjU>4UPLj(0r=M>rZuqPpj4YL+!(jpm<7%xv{346pL7Ll z=Bn^(A{v03rkBDeb#wvaLF#%6UtAZO^@>&MH_RFU#XNl!d+b;B1fLGU%JtqTe*|na zj#v1suE(t6gVmb85HR2urN8di;=un%f)cMTe~g2Nrh^rJdW$HSY+F9l{{0*yp@4l0 zrCz&#Z9Xgewd?T- z`NJ^-;NI~7MP51?2^O#FEA`s#v*PDhj)I)OIVkP_?D)0Y4=d6ayz;C0miGNd`+hOb zHWsLF4P|_%jzmF9CmY4S#3Au;dGxzFYEGXqzt`@6!liH+QhuV+{%VIRsXa4wB`S5{%7s|tNZ_}^<_1ltm^-6d$Q{9&)TcqUYq~f{*-xl@~J;C$FHMLsHTAE0IPEAlUW zBH@^SGlkc-r_D@vST?J=(!Sg}S7_f@eO}AY_YXncKTH@K0k3QHQS{kc_5puQK82_H zeqiuAr=ri%JP792NKxv2mjptot2Y(C(Eb4MOnI*GQ>@%z?I=*%&%53kihew-)MvN$ zftT^>{`$0EL&2xPMy3AwjxdO-HA~^O>;236Lk{VSQok%D5H9Y$t?*rD;{H;#mkNKT zc}LiBQeUyBa9jsip3_L-&-nVn=CSz{-v5ao3}}=?;bW_I1M{F|ioS*Q!{FnCxe9;L zw>#7~AE)r{d;KBu@q2~Wp0A_k{bBmSIm+{e)#WfKVmC8WdF}RpH$Qh}FKF1=>kr#^ zWpq0jcUH|0t4{WZu+AS9eV4NbL75xs`l@$27;Kdr<=N%fu8dsHnS)>zmt@~8b zpWHM6CTx7I@Wzb;V9gu>ejK+@^xX<~gP0~n;nyB%iFl!!A7{t>_gT99H+#h%V3wxvRDElbdw@-d zpJwU~(^USQK^VB4oUe>8ae^n9?QvA}S7_r7uFKW+bh@@1>?*3pKl75^!1=8jKPKCE zg^1NE-mx!dTX=Q7graZJuinsSq58aeWPD4wyx&Es|Jo=N3=eNr>^V9x6c)bUtngiP zbcGF9)+_w`s8&$CY<;DD-dC=0q@tR?7Yb|%8zR;H_wdc3FgIwE(thB_=8(hGO=u9Z>a#eosc;mP&Z%J{X{YvTgZknpj% z(%-6kQ4kbWQsHYxyFn>Cbv=j})zAxn*d%IZ_Shg#s>3Vin zs*kFNb%#-_BQ%E_mP+-J&Bj=my}h8~uQM0BK!?gZmHwqWAz*b{#S>4A3WL!bXDjtn zoVtOJjk-Ry`3`$p!-Nm&e%sXcUBSy{tzEkSZ&jB7@I9}_=S7ZT@Nklf&$+Ja2xl5)Q|y~@vO75S zAEnqgE~zhc>3&%8FWcD%iU#FS>KBF~9yn{L!pC-O1V)2Zyhneh4}30WuIRtpv@}!+ z+ph4v_tbzQv6B@3^sL6PYf6B^pY2~8ymO6Hcw=QIykw@i(X z>+>{+2FE=VeJ6?(flen+DZI9RZGGDHS@9v3!LY~jSH(Zt`ytxx4ZHV-$tBeNf9?8~ z>tkW7gPAg3?fTh0gQ0As`aIC~aW9x=-&*NkTmJm`j<9OKI{(`BPL;ZXZJZjfjd4Hx zLc0C%PtWUsk>zN`f7<@4voQj^AN5xHKhq~1BI-?1_y@;2g6}asrG2G!{o!_Pb${2? zr4{UasK&dY3;(aZ^MHzK*%CG;41kD$1TzLyk^vCuuG)YE0YN}O$r;2%kgS4;f{I{5 z3b=h5c*WQ)RSLe)! z7kMgd`|oM?2b%-O+4T6!U`SRJJwIIv9eTJa7O=Qno^CrT)#dd7`vz;-_ zdY{6|t}1@uXz`UT@8YwGaBik(e!7nVCM-;5C)_+8G9S7Oh9zJ_f+(S&!KGkz+z3D6o{3TaQhK_CH1I z$!iYG{-;v3|CyX@5BtB1>T`a-ALJ#A)|)QH0pJ)U+W+mE9Smj5F0lE(uZRX2)4{Av z`_rMLNpO5qCVPHLmrv`PZVz1_y8k@%ykM1?4BJ0+`}?1Y1;u?G*!nHt#X`p}qVb%L zAO2w)Bt#u$7K=^{4eomrtjsW!m28@V_h5`uw}; z>G*VeXt}NUbol=?xvlol^`+zgXJtBnTK;$E|J2kM8sCfN7rMN=wcx!C}$j*EB${aZeu zw^OvfqV+?|w7t{eX^W=7qqhUu`juRt0U`cd+4*7Yy!n7W4q)wx&To2;MA&}*E4$zA zabgA}y%43R%X_88?B}0tB~4>toyJNwoUWf%mMu)(FWNuT`k>{kWz%5l zo(fiQpZ@O*^RtH4m2c4cS-*$E^IQ8zz zrl-RnjA3|+MP+PxbbrzPeHTG-rv_dgv@%WcJ{!|C%Pdc6CG^B!tGrRP8TJcu4o>GQU>&S%=159s-gKHsC~ zLwdhX&v$L@-|77?Js;BNPxO36pLfvn7ro#1Xto5W{jS)pMDV<4^AAs0n|K=ioFF)3 zcd^ohslWX3j&rSK4s`Yo1Yfy&c0Syn7YO*=VKltkLhh(C70!qnLoh#PfSZr4K>_Z{ z=*rp&aD0~+J3oz44uW7;(RpS2v3Br%kS!bT)WHWzK6YT`Y$*r0{kR{t3=^Co%$D{8 z|4~_JW>ybWm*&nr=3)gaj}62RuOyQ?ZP?@s9V)YtPxS;MH;vSR#*V$QV~aXgeP77k zIA#cFrrY78RvmGD^Eob8Q5(iDRl{A9)NoJN=iI}uHQ|w~74GRFg`cRM;>r#f0qcuQ z@Zy+`cwPN!E*#Z{k*|$$*i0!re0(Oi_r#G9G~ON`UUwZm=~l-XxlbPwYnb!3x25Ru znXUgI&%ZwbhCk_oPfgiL>K9*P4Y*JaAL+V|$jkN`!r?PqJn!>)gpX=)`ZrlX`N!@! zw@~oR=t8I&OhW3o{aC@7iM5gg+}S639%dZj27Nf{tp4(|CW6J0@pyDVf3l_;`qdR? z3>wUaw=6LSjU#sW?HVak{-HO{VC<;PhQ}6jf#VW@H_Z_|gIv7D7Cv@1#wYhzko@TO z((Q3Mtq!Tli}9w1T}hsgcMpflDbw+TZx!gx)>Q7UbOpHOpMj6a2%gdH(;o<#pK`G0 z@>Eiv$LXU%6J_G$g965sw$}_f4m3Pl%GQ^*H`;z_`}B!(g4vsIqt&^BGviqShH&iR zH8kwxHB@A>6Uilez^|(Zkfv?$KkcuV!;GQhq`~;0dIJf67d{Cd#pz<>_6xWQXTmwO zzSi}c2%RjtWBcO^N&M0kZczH=1+r98A+r9<-q2(+60aXS5^vrJh_*-CUTJ%_Fp+{q zi5u{izWuPmsU(qnv#UziL`6Ix;VLL{N#>D>U@q@Pa>|+ zio*gSc>E#M=lww<)8ps*`_sUAD?u=-Ajo(0;@qURyk=FWgOd$Z7(MJGAx3g?aK@f&2PLhtC~=#}F#*h0ei_O!vvin(v$ zhjs2akuz_4zM$uaup<}-uM$14cplvk`gKag+rOSczjC`H`|@CjNSTB7+#W#6pywNU ze#sf;1jaw#qQmO3=*;M$oS~*#P&&VmwU?BS`jF>lfUi7%frfY*bLjD(9`EJvTYyST zR~$5^nv_qE|9h=Xq34V5X#M%`B%F?48g2=*bfs}j-(w`)%!C8Gmkq$nogbivWGBwR zp{B4d`UmoJ6EH$CbIjqavox+Qzf9uO;TjJC46LQFm9gNAXS5#z?Qy-Z(xR6n{l5%}~eQ|rt=`@mC@mmk__0{l8O*L%2#GNZEHxky}=#7up z_QvI%J8I5zpAPPXlTVKMhy3aJn64k4K2KH`E`7AXtL=ZG5BDZ= z+DcFB%V?${EEuVXH}_K{eLli-1Ps`zgNt{x!-~>l;ywQ*m$5Z z!$WA`?~bpCebDxr^imI6j$wRIP73cXI&Dn*2VEYWKW#sB|IzVj|DemG+tcm20lYO3 zop0_Ps1IA!Ct;&&)yRHBv~gp@2=J2+!Y>OSkoFyO#Zcfo2(Mpp2;D!^pF7xH6UuE5 zvi?u+heqg(fDw0tvGWtbGsHJL#=z%=4)}@bF(fy`#JEOpBs?x1itFBNLq5YY(2S23 zus!D^3X(s7W=bF7-uP?*a|V4td++W?eP>m1H)Ua1=&pg^A3KOlhih_|IxzRQes#yU z7S(X&6LPrpd_>P@qg94O^6CJr=(PtOUeXm^j_wNkC#B*c5g*Xzt%ZnQAI#nM5Z5=( z$Ih4L<9$DtqE#>V;DMvlv94Y^POkg%59^II?OqVNHU{tQ*A*Lu^g~X{)%co86~0@z zi0J5m_Yl|}YlrRJI%Bu|BJK@*7ssD1##cgJFt|fN||iAGSkWB?w1`U#R-Y|0%q zu@RqjXuy4!A13MNs4Bwt7DrrmX%zOI0?0h$6Mj7ShHn(U zN3vm>T&3nAaBj_7tbJ!9>R8{0Tbw!!e8<@0n+JQ6{+jyP9X9DIvG%Q<)*r@42I7`o zxv0;$T$GaB8C>uN+{NiWO5e2*^-}2#qbwru9{FlyU6hKpm%YMfO67RfvtBsscPDh= zqbxMFF2_e@n^9o7HwvpA0T1)_@zLAIkb-v-nsG`N3eKOv(mR$Bo#g-W1-bpHXyVSN z-2N{gbF+^6!G@mB=-u`%$cfh(MTKxcZOl0|veR)Sw|oQ2;n;&ryJN_*T^cGj?auh9 z3w+t|2xXst$^Cxd9@lE29jF->qdlvqp`062QN&6&P{?jT6OuM^XQ^-CdQ7kZj!`k1 zuTzBH?o&s7Vr;?ru_@lLxIMSmgLd4ASs$?f+Cx~i=S#HfNg4{=s{lqjMd$g+p)&AW z`xUFN?Z*Z}By<0gXWkyyS-;{=JpKr~t**hpZ!6;m?YpC_5rbjF#Yy5`M@kVowS+_F9`mLzvVo`ecr^9-=@cKK*c{CPh7Q(dthY>ch!#wxNqsp#t+D6 zc-wr8-v(82oYZqUKSvINONB<*@PiIs+rx%yZ`cP0l%?YOYfWg+!NFWFpW(22vNisy zE7(&!c`pym4b!m9{h#RbrGqGd;W_eyZ=&%#1WZ|8S6}9R7J{=4zCSk4as}-PqVsr} zZ(NYeiozz|mBhb(gpPt-4#MXnTab3|+Hu<)!r@VK0$blPazPMyZ6=!TZbp8i_p=jP zEI@v3H=HLUcm_l7XF?amLPCqk|1+j|z=zycv^6`MluzsTLQN=aekJ1ji=G6*w%4Nf z)ntB~0co5qZ2jI^hr+4@g0YX^-ba};q1#dsuNbv22m+R0W8+`#5e_dtCbDv{VmRcU z70Eqa4dLG8HLQJyH$;Q<2Eo}8KmWeFI8eJ^w0~OT*#qubK4jx>G&6(s%`vRJjX4jA z*AYE03(B#AnXCQS@Ehmj!FO>j(FH&Ml7Y4`GG6q&rg7X{2&q}mhEEKOhwZ(tv9g}I z9az2-@!L5XX0S3kmd(GF;bFTqj%DSlg)v}yL$EjJm#1eG4ZY@Tv-)`YB@T)QiQa!i zkJmamUSPjQaQ4AZzjf|BxTYey-|2c|E~rH>X6qNKG9L<_n!=_ zqDHgz-_~w4RQ=3h2ZLzr39YMKW3J^VW#&0T93Z1sng6<8+uEDdJh_`nDx^Ee?c=kh^St1~T5Dd%ZJT z{{7#cu)L!zD-ZDXh1TCc+4$R64rSiIk&9dNhYNmlPXZmOp=^EIDxVHdO_&YWw3f5^ zci1xx8h4hna@2Ys7?szKtxuw~J9KGKVdXP&-tg#*sQ%4a!Qehs#IqffW1e5G7V+h@ ze@7UGLBd4A*%;qCdR+E{w6qUw`Ogmd!sBV*S$R-F62z4WSbu)}oG=quW17g;XM(LA zJh~?G2eZ{-@M%^Go1Sj}-k>>PTwwh#!|C{SfgX@EQ?Pd6m%sC&Hv}e&&VT6m8x$hI zuVFTuf8bhsh}bRS<@WBH2|48(+3>PWkuXEwm6fMQID)IOG21>m|NAnYka7`I_1hpd7k)QxX2%CB z)gU;FZnOGQ89W^}_#~mmD#83nr>AAQyzImB&~xlsT%ms#?OQYywH2REPsd*#is6m6 zh=0A2U=Bq}v)TU0o?{3%RYmhv#>(lid9L6ri?7W9-)ZpdXC>P{gEK)ewfZV6*ZOlH z%2;&XJV0{_d^b|YlXv+O9l2S~2IGsO`)aMPjKOAN3hr~xjeE{QX56{q{XtgC7q7g$ zAIUDyM(BmYxjlsK zHOI4bdXPG2xH-Vp4Wj!W!{3@i$?(y5V}E7T^U@CPv+YLkOLs9gx-_5rAZQ|IS$Zgx zZWG<-8Tq;cY}FFIPo(8oUyw~a$(DcZ$rLDy67ks@k6mF&sw!r%aZ;b?dIfk;R)kk- zrX!AWCHIMX7r2?}gFERA#&GZm(kbM?xJWrXXw`G{p~F({JUe&Lzq%fkE*peK{pf`3 zXJz7;6=`^J?+E<%wLgAaWDRRJoI~4JEk{Sr88UYF*Y_V34rlK7tTkZ$apw#U%nysh z4)T}DZ)N6Ypq%W9&3&&E+4t~VIJGR5``P&ru>tk>;SlmWoVDk3UuMDF-6<&c(^;a= zF7u~@TKICb1_|Er6Y*dU{8SaJW%>3Jy($`xy&TG>Kc->@zqbUi`dVD-0gXdM=lPe8 zPX$fga&$a3iKKZmI120!A~yYjbM9b%Q#5|YhRgzcErc@4>qz}m-+P1Cm^WzN_~}H> z=`$0C&x=ELQRzhH`kH`-WfX4A97N;~pbksjGVl)bbmXK*d;~T4+P{<)~ zl+6PujBG;X1s72LO*tep7(qWPb3Dy4lhoh{32@U=xOiG@$OmW_*A81y-9w@pIL$3^09d8!_KHx zy`J;=nk9rD(8cn~9nkAfg<9Y3hvzKd%D1+>mN}Mhj(0je*<@5t^*7{(+N+O^C9)uYOezW44tq+kCn*jnI&4S zZVWray5JQhA5oz9KJKPl3XqZMjeB_5;w`)x+$|Tr;xpqO;uBZX(W31pT(`6BK&3Sv zKWz=dO7*o|S8scG8&QN7=B1&E7CqGYy)!fz)S!6nEVR=t%~*NXAZYcmz|qg^P{W4> zXmM*5epTp!TeP zBV{j2+h7h2Qw;Fb+r5#A-!ks$c0<6dXD{4wbSpB;*^AunN`u_qBN%`o}99?wwu_;WxIup;16Rh!9C2^pW zeiv+Bumf2&x}iC$BVkiFeVmoG4(SX@LY4C#;GCSLxGp0Me_pr%?a2*=?L9@~*9PO4 zIP3Ode89Q|t(ldHUe4+S+0!@Uz{(;dH=+;~YYzq^<=MDeZW~&95~JuVKd@xw@cs?sah(*xvbTmnkhCKXnwE>=@2*1YzqW(zc4Kgm(kPtAQ^Z-m z$}sQKUJN!-$adf+ZkA^kSi8#&zgjs6Pv2F8EDW{b^)@r?*nb5&+^`h&(H#Q5N5io~ z@Ih1%-Wj=0><*PRYjBmzM`RnXinJUD0$!AY4+RPK3@*w2V9S=}_)g><(w`@F;-J*( zJMnG)_(P9}ZOPvQ;$YVT(fe)NnvaIfG6gSN(euA&9mj$3mkf4%bCipM&m(};?f<1d zbbaak+NvL&zAd?}{Jwsh1(S?c{>%2Xm7XqtUGLdoF=z#wpW~saaLiD|Q`7NjnJ$l( zYZb!aYD5~Fzx}hBFl4G1dU|RXv5}X-6XAOEWmFKe2<0E`fqGW?f>On4#ElRztensU zh_0Q%J$3UFneTdJPk~#nwxj(Am!jvJhj2ssa$w9U(fV%rr9jw{F0e&@f5-Qagvc)5 zZ29J$nfDFrCbIU~aNh>H-fV}L9(P7vjT*UwPhP@P`YpxZvpsRY2`^CB(qMS|t_Ce? znL*009iR)TO1?PPAOwA#VTi2O4guNvG1wsV28tiO4t2^%BmQU-4*5^!<7;tJ4%tieA-}jvhDbLoh^`+y}GMzsyw-uib|F4$!s7?l#cfD~- zSQTkw(r;^KKAy_@Z>)4Qoc*YUx<`hR`JA3#xx9&>*g-J&^7R#GW;c*Wb;L&i~&n z|K0k~@x%SXApW!9ESYaFA&wD{_-Z<94|M$h?)r~P_J^1+Z`k^+=sOD*DXwGXw(57d zI1HTp1?&>Py?OT|LEg}bO`lpA3TKN2tQtR@mJ2UyLXqzQ)*p9`ngi+2C$j0k42XeE z@B6Ycy?+_DSqBuxti|Soc5zo_4CFRF?E~*B%CPkbf&KSPF@(D z?p8A1UR|dMvAebL;sj|N_4OyRt7Y!*9{h=_bW72@##Hp3+ZE;jXmrL52+!Wermvmh1uq@C zvGI2#%z_IeM7)mIY()t0y@jog9w7C9G0Y6y*TmpEovq3Eb$`(eP`)F|uTHfaI9__g z=113uuJ7oRK7ihd?(fj!$=qfGn2?)*M~>m|MWv*c1S^Ak-xRF3vHXWwO@4uuL(GITl4FZqE!T#-dK z-UDIzZcl7?U$AERWXqffsO`ox&Ot9vm_j9y;())?i z8*boitpvQJ3gbyn`(nEP>Gsp@qwPaOj(HxtqZm!l+>73??vGrf?R|3LeuL!R|cq}=Z+@y~f9 zJ>c$Y8GIqQnZ)5e_JqYZHz9>_aU}meNzC^xHa1`t6@h(qr|MM$x z$V0&xl#^%&g&A@<|6v3PS27(BRbTD#3HcsG-r`=4n;w+mh}v{wuhV>P;8o+9=lNcO zF*T;kTfF<^I(#xn@XT&`7jw8$AI6S1wN_5B*-Reyju-65hpukMn;&K4dFmk~PEGz5 zoanO!SN+N)vQfr$d{+M&Zk?-7k(|kDGpT`woMQJ(i7;BD}hOXh#{AIPOG=zmV z;*@pzu4F43RHqFY#Z?tUE5E{ezrEwAvD z6D8O))r`oQw~BH9s9o6c@HQe>pS*`RE?kWZkFFvzZ^029F{Bt@cUwzjU5`3Et#};{ z{jh?_?|RF@zL!BbXJ-(RPaEsO2qzs}StGbZ+u=S3+8t2D&v}0s&A*;sDn}*(@3oxB zU!Kf^IpJ2MZT$YE{jDw8&N2!5mW*TbyRj8uYUKh_H-2uPmTSS)v`u*3vs0uD_kM;j z{dN*QTq&^6giDh^t=5E%&w0qaKTKM{uJP0NkMx8^W4p8ArYd%jUNR1+%@N!=l&@pn z=j}HXk7yZ2?BigCGW3tVfdhZbkn>iPyT(v5WFTJuq=AGxD-8i3cN;v}S#Zbo1g`($CM>(Nju2IT{)A`fu*DY(!A*FB@s}HRKj6d?qSh@F14kUL@#T|N{A$@Y! zXAnFYa}?_uN)vesuRAy;KVjqlsvHmH1E=6g`}S~cS7mZ8T=9o@ny1hMl||g5ch`)= zixAvNh`|<1S8@lLVBSXv)RQCOG~Zl##t$6qqtUxL{%Bl(4kz|pFq{tYLf76KkoX~{#^Bks3>V!J zyz^sD?j+dyLK`1cDj@c*Vd)45P0pe5nS%4;3mKLW((?xznRJDuPYQ8>U&2NKLb zy>8h7uhR!+tP(IISU&v9@x9!8c{`vU|QH|BM5+V9wl~QTQ%cA7uO4 z!RH%akY~Ri{>>64>29q$!-R3+#SJLdg7Aw%O(`3-^n z7Ob~{zCTs*_{DZ2XA%Zh#$nV7)E9NqpUB{;)DG3l(TIaC^LQ<(ABz4O5qicndWJ zM|e2=Gjg{}A$bIUafazbMfa61UI>P!X*&^Obqtz6Dth$PRwI9xD z)nJ~#=nlt|(o0BvwyraRSx5D7uWR>+Oy}<(Zv@X3#^3=8w@A3vs%daGx`O=8x3~4o z`f1B!Lw0;@UNa4xd_~~{<~l&4qUd>NzhC|!r}C0be^|>5GPi}|#dq9E`&U?az=>BP z{$gc}0W3N-7q<%UzroN`xoF_PASE&YgXfhnH z&JZvxUICV{GBTKL&)IMbm^aN5XFJN1I@A5XBFPx;AR~M^P0;3r1GFLGdN}^=Tt(ui zZ!(0}hn?`X{RKpBCuuj$5ru#bZlK@fB8CMk>Gf3&{o{#n-{046;Z zJnP`ccRTJ4dEZ4mOrM>>(Es!~HouCFKA`wkbbd(pm#TsVX_lS()|^ z+8>tW+dzG^3mc!dAGNgzHX5Yh(B2MYJejRJ0Vd@6u<>boTyLufa?b0q_rz61zr8w) zgBvZP=O?s%=NXtl%ZG9J_HJJ^_oBl;_&YrwyciV-P3f`7{HiYctx>|E=f`%nli^}i z6H@D7jjnEZ%c;qk4!T7lC{0K3je=R)VQ^|_A9QK(6H-6vo&gXwHU;eppFni(#=QSg zVTU2QJxs7(q{ox}E1Y0KkFHqd#Ap(q_NN);dNAz$GAv&wSYy%to#z(`nhkDj{|4^} zhT9iJ{q0c_2E)8W=WFzRBzpdDmY)XB3wUgP^mvhVMvIyMZ1AOl57E*+N4fO)MUQXv zeIa^0qwjan_haetjxL{;>HO*Ok(TNEWwd|O_e<#eA$0rb_;mY@^%)6G_lM%h!H8+_ zV0Sg!KW+Jk+X7{VXNZZg^i-A$QK~YHS)^fo=N;-tkj? z^DYkCeh80Jo`S7He7NiLWWmBZ14}1;MNXGI(e9vkSkZqiUJ@?Yulo!zfXm<1@Pi$j zQA%J6`t`mQ&rGPtUQWwM9qleP;vHWb@Q9ZOh&;H{XRNK-fKMzFoL6;9d5^!Zc#VG* z3)UZ9<{5%|%3$oa;SD;{j?0zTl7l6E{c*dqX822q8cJiXOjmhy!TIfWA^RW;ROzP* z&*nPey4kN$TzV1mne!7%^?i;z%%4NbTbMB$KCVe;^+m6j=<$sXHy@k;0kML+$^7wk zTfi4QHtjV2X|fqPXgZ;kBzZ9Gwi4H$lEHrHAh$kf6l4S={Hue2uh?>T2$+w`#%t`X zk!?#~Zr*NZc=PxsQa>v=46`paR3~zsw>=SyTr}zHVW>v55h}tg`=sjZg3xr4T0XK zwXD8)KSQCbx}fj)?SFDe4KgOI!sV84Nt}xeU#~S@#Mf)Mgv0%!1U7xnS1$bC9ffO4 z1Uj^z;R>gnL_GW*XxvAIepie~|Hkm}AjZQlXZZA2Vto3~z0CcZ_1D<^do#TIIWgXSH^W2k z6XT)n6vAQTn?yE#9K*w>t{3s}1q|;VCdRveVtDoZ<04)?g5lk{V!Zo3hIik%NW{CZ zXZZMhF+P4T!@oO=@$bVKK0Q#3Pan+i?z6;rcNd0-pQS9~;R_l5-Cdl2r@r6%km1|= z3>Nj*5r&6fB*w$j=L57q4rlmxPci=e8^hOYi1GDP8UDSO82`?Hp8iJcd3r9x%SWn; zc==YsC0Mu#e%}m;4RBJ&xfABEH6{S4{R5^KQM^l`*(=({jF~QG5=m08Vu(TUSRckvt$~0xRtYV8pFSz z5#!%W*AIn5HM#hgw_yLB!SL_raz*^R6T?rJit*FxYlC6*6w!HB3d6^LdoJSRs~JAN z8}rf~e&6!{qsKRTJjgZ(1NX_PZ2jaJ9)5`!4?mQ-4{$^5KEQqEeuI_R{f5U3FE14; z82be!{&l}f^P;rAcQZVElo$_h!tnE5XAAbG|13W`J)egU5aZ$by!=KnUY?G>hvDCM ziSh6L3?CmO#>eyd`A9K-zAgV8$lMPIuM*u4;PdoxVm$o@=Dt9l*nNR|hM!+9#?RCB zt7Yyl)U6Wi{rK$!{h%J0Z{MHc>r=(}`sWO< zKU0j?&t`c0eg6S(|9AO%T7PZrPuDZN{4X(Ho=*RVmwzebHOOYr}=oAujljfPsMn7nt!MHc$&XAWcYeFF}|MW^=V$7=IQx7{v0tLpXTY?Y9Af` z@0Q!rcU$GPm7Wf#WtyL-`FNUt|HI3h2zhxv4=*Fe!~fy$J%#)|&BxO`JfD|O6XWG+ zKAz^`bs1jXNQ{^Nf8pbwi}CRjnfLd{WsBb5|A&va7V`0YetsUq&pQkG`L_6YKL1`L z#=q0NJfDYe731OgeDg~o-+Y$gn`xe&=HEe3{TDH=Np8gMS zf1Tm&gBjlb4AH6KR-~&&%226^O-_^eyWgRPeEeQ9K7Ihh$G;Ks@n?iQyfnkZk7syznz!Kd^UoQ6 z-j(6!xePx)g5l$RgnYau!^d}Lc=-839=@94;hUNJ4bzzW4c(dh4bPeT4SYUcL5z>* z^FiwWgbz|;`1l75A5Y)+_`}P`i1G3r8D8Fk;pHb#yu2>M%k%Gp3}o(uycFICp?Uc~ zyvrRSPfzpz@j~9;gW>(X8Q!1f>-jwVHim}}6!P$Y_q@3$5I@3yC{{Aj+O&&QjK@$oc|$>-&He}k8&%m2Ier{mLdTf9BZ*Yo-L(PI2O zpKo8x@a=gF-`>LT?eb#0eG|jm(|o-+|DM3`?=;U(^Ya}kKAz_9|1K|2x1Y~5CyDX$ ze4gGxjHjpd|DToV@@e@$n?IeN&%>W)c=+=X0v?{`=Kn@&&L4_)4WwM^HCF0ZZdw&K(L zdt348@V_hn-TKmeJI&|Q<@5P=M=`!Vjp5nPi1F-v-d#?Ncc=Mvns4Xx(eD{P-B!q_ z(|kLf{~x~HgyGvW7`~m}ztH(9F}(Y|f5N-x33>NFJi9H!vma)7cA9q==i#Fn9-h`O zpLhTIAMoxp-%j)9G|x`+@AQ06^TaeC|A&8H_b>Q&ns0B5hi{92r}rN;f6nLO-54HT zm*L@c86N%*@BU{!E6zLH{0F@Izgo}H<^AE?y9oJqKL6fRjDP>byH6ML?tl34*+PDu z=G$rh{SO~Mh~eYUF?{?V-aS>wyVLpoGyc7W;onPz{5#FN(>(kFig*9a@bDpGJUq>} z(|q_Jp51}r-Q^kHotFRb?*YtxSXt&iEWQ4x`F46gM%$w}&u-7~?DTrRt^TI#L${Z1 z-y}aLxFORKmsSYgx#G*5?+$pwMZ6yZW_G-K01OCSi54%_A!p#nFGj%oK>_S}xSu2Q zK9_V|BvW~mJYW0W%M<*%w8LrTp+vr_7YL^N=c6N&1$@!O>BG~p?^!*PpZ6**bWu;nqiyeSRxMh`*=_y^ zUuek3N`>*{OuzHjzEGiD&fM48Oyd6<{vO}5$j9CT1PqT|`?vVirc=27xH^eH`hhZ> zcD#s_jlD_ysaFTX)9nXvoZMIdzJ#b5*P9zb z^tGk9OM*U$PxBizU*i|52!6+T_@lQi$9u#@mHgS`Nhr}e=5EuWF}vDfwBQ71iYxmWN`gvaye!|^oH_iI*L4}*I%Men=t zn&}1U_M-bh9Fzo#r_6*bA7A5teLi7jH4o%^9r^bxrx+Qo%tU0gutul^~XY@Q)_Qa@bhg&lZq}9 zIq%y<*!1KJ3Z1%@$kma|{pk(8aF=kwGxQ(lrh-L(IovRDE-5dvy92z4zl&0O3i!YA zUUr~8=qoz1~TU4j1kZgK^!BNga<$O=+M1$Kc4^J>t<41vF? z%!`4GUUl4qc%)E=e;tp?SK33;)ixkip^EQch$eDRi!cbgE#i$02F63^oqKG5t=#DX4o=6APK1B~$f@xK%{PDUnlSGd zn;H)afjhWmeaeabU8s%&nWqQ1y4~xEOs{YAPsG6OQv%k8uW$PM-1PVCUo>06$9_)u zbGCqgpB8NfFXX*(?e$}%j`a8CtC{DUPqg2lO8piR-m|Y8@OaNr;C>C#-sN@EVH-!_ z8~pOWUkL@BIMMw8`g_t(neU-B`3ii6AAh=%8T6Rvh4ohp#`w0rS5JTMenGuIbX0mp z>cY=&%o<;q8T^Bl?=N$Qj2nWxJ^XO``_zBe-X!t=>Ms&~Nc6$?E75-veTa0y|4X6| zi9W`xSWz%kv`?qv_I{cQ-Jg`|7#jY>u_;mT`Y$ELO z%lVh>q2vEo%iTN0LV!{|H+#)Lzi%hAI~MAXZ{wb8u_JBV)IR}s$a1;-fBgOkUorWX?TK#r z{jdCZKD;jP%-Vl?i!ZzxS%{W*>PO-B<+>>KYtt*{U_0fNEiISB>Ir(LtFzAdl1)##6KkVAh8E=4M^-k zTpRz>#|L_UUQ_N1zS}er|DTcE5JZRnPj8Q;eiHxt|H=O(_A0SgiM@(zKw=N#+K`M7 z5_^!?gSZAH_8_he$@n0#2Z=q1Yd~TT;@Xgm4-$Kj*n_wRB=#V#4axW*u?LAgh-*M% z58~R8j1Llfkl2H`1|;?%t_{ifAhC!4PJ3vJ|EKxq|7v^vyY~xdzMsAiKtF${`TBo% zd)ng5X?~pM&HuOY#dQDtyZb|upJaUf?;Kwx_9wAFiT#OdKw=N#+K`M75_^!?gSZAH z_8_he$@n0#2Z=q1Yd~TT;@Xgm4-$Kj*n_wRB=#V#4axW*u?LAgh-*M%58~R8j1Llf zkl2H`1|;?%t_{ifAh8FDJ&0>SVh`flkcSVh`flkcAqBk8dF1 z$=Bz?yA_Ms@7)e+P6CZnI^+Vl&X{s>nZ)}(%7W!IzeV9|Vr zt(D z{Q3@Bz{#}7F8-a!Z+&W|;Ov~=Y`B?~6wHfgW#xfVUE$QlMqK?7ZK4`!_&EmNSckbrAS?UG_PgL;r8{f(Im;-ZsV9x4xY<^`a;ShB)mZatD z*S61axcws&7xcA9(mw}q6XqL2C$q(P!N~ih%@cx#fxTT4_Cnt1nNdH~@O2>A-kyQg ztz}7`)e&}ZeKo>!18hkAD+%$?e#aG7U)tKUp&&1lEsq|5G~dR9ibo9_-+Yw~d?zkmF2;L`}*zbEEj~WMwy)xMFsLrOK=GX}vX}l$6tn{A(yl4$J+-E@&tQp@b{5G|e z)DL4P_)uJf^rH5V__xp6KwbGQ6#nHJk(Zu{h1l2*Y<)wQtAgH(OKg4#<()t_{WB{c zI_(Z)S_@H3Y7$9vSg9X0zRJhBhf;_flG+h6WIkZu&w}rJ7mk+&uaw)kw@WK&^LCRF zuxVQo-c!7f#8c))Dezq>vX`Fg zePLJ4aDN_e(3UND%nGamP=@3z%dekqLw?{Gun?<+({%dZx05U zg>twh_Z^XS%Cx}xoIBQCT8}nleBcDcVzA8VgM+(YC*f(Sb3s>c1#3SS>|#0L4!VaB9sHv}vR>a`jh(*iLJ4^e8_xZ@w>@=OYK{ z!}74ysP3c<+HXJLllTnoze|S5m#6js$1VBT^yo)Y{=zP!pkqKZe$l*~$emvIg~^{X z@sFv|NPDI}dNX_s1V}sKN84&hxaK`mc=@CwZt;CVWXJvOz~pWfZvS)-x*6FIl|3F0 zvu`S3U#lt-K1@XxZU^ncCA}}8R{L6R@Af@m)vQhUh0$*kJ|tZo{4eC=$&JoX^-0)z%^D)# zyzK&>^*!)X^=i^52H&THukJ1q#_x~H_HJNsMHTCgwHEsHU*}`mzC8USVZvQEHhufy zf$-tT16HQv4<8c)F&F#%%kcV}p0IS6VC>@8NBg`dT($g!9FjJW`p)B8L*r|Gym`4Q z$z!tbXmAQm!g($Ne|oGN39l5q*!*exE~|@!7cZZ&_IPA_0F?K*gaRiHCBOL&3<8{34R#D3b6w?|fnUqHke?NZTH#0L5KO_*XQPz)J^i`C0Bi^=F1vd@`o2zeZln1x3cNO z=jiTUWPg&BZ?k`@!LI}tUZ%AiiC<8>&0vMK9PoeRryu&**DyVIZN*g8&m{dXMz1?B zrtDk9=~2!P&;KD)u2mUR-6uMZ#2?i`ri}R;beZ4y;a4ZGFdX@*SLK*Pb)@}2ne-V~ zck3n#(|__=T4veXkJs(SClcRz=dUvP8=tTV^BX_?4f_v60(`mA;u%#u@wNO~s$``yDLWhYnVZ;pZRk zcCdK2&dzG7ZxJN@)HBVae|?SM?a|pu#(SFrztY&?JDgXOPW(v^mOkC}7kYfu<)?4& z{ZZG$q(?EoU3}Tfr+W$WH+VC@@#SAXc9-|a(5tjKpunadGNHTv4vp!0{P6Z8rt9_W z;at*Qm|k;2_Y!^|t1`dw!&QFnHkN17bA{>Ol#hhd0b@YJ#E8`Ia@|=@%gs1!?Xj1@Cc&LI=2iUsjS`c1YnEQCC?C3j z_)A53B0BKN5^WnJ=)Yrr^Nros53YDp-<9Y;GS;{1MNSfQefXSd4^#i#B;Lu@zE#I2 zPbc#H?Bt5s>JK?BzXa*kjyyJga5k-C?P3{{{^(g*s9ir9Y7?4C`Ogjg3-(!QXGSl(0K0_=5l zBB_6${M@4rtyb0d73PxkHgQ*v{(5t!V%;T8Qa-0$2+r&o2JPfCN&3z~@jO!>5BxZC z6-l4D>M7@OOxAy1u?Hq*55{iLMkEvV;gRgI~xm@g<_s;=4Cy!AwdO^_a`|FPQr)!Zf*IJ)2-slTn4FYi>2gK4okK|aRsMad^XhHziuz`V)WZ?r2Hnv|7ruq@H9<~NO_uf z&Q?g>68YcFG2@CT0a|vgVxQ3ea?2B| ze48y%zR>?}`pqw2!T8@jq5rL9{I4M=iTCFHbEZAS|KKs>e|?<={>)aH}lkOmxU&n_hffwU{HA4SuSWsWl zNiC-OfYASb-fk{eV*Jlp=zqr<|Kl{d@G2MFBlWlO@&(HOa5dw9w}t-KdDoQ+7smfO z3jJ?2<9|OHp9?GeOy>X3j4x_2{&y-v;D4<)vK*uM0Tnxi{?{&ec!dVze@lh_7sB|T zu0j;g@`xJI|7C?(IL!E8Z=wI~R;lK!Vf+sZ{V(*=*osWX|2hi&FN^WNwe>dDi|-4@ z=Pi$Ousq{`{YCx<%8dW{3;jk2cUNlE?I(&h|#`m$=itH577 zdTi#7wn^lreSAs!*UhuGTv4ZpqhjjK=!>jBpwn@!l3R|O$@)#Ia*ILMkhkckr67HK z)uV@oS|##kFu(Ehzj3R&+^tN9vpeeqN$7M9=W zzPWNFQ~qLM`OcoT#{BYo3(M!v?ahl-^b;OrlJ(zDwUvk0@yoIjlrLqnYP2R(ez>sw z%eShH`Q;Z0%jdU&Uv4{Q-TdeO;_K)0)cU#DzpC8#_OObKFM|1(Nzc3EQFzGri0n~* z`m%I2eg69WfN=fZo%x;r_n-CqxnsO?{`!6EKd#>e`jav_EM7jdeplz$@z4H&Dc_hX ypVVKn|B&oI`1U8+e@ONplKqEd{~_6bNcJE6`9QM&knBGs`wz+f=1.4.0 <1.5.0", + "@wonderlandengine/components": "^1.0.3", + "gl-matrix": "^3.4.3" + } + }, + "node_modules/@types/earcut": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", + "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" + }, + "node_modules/@types/webxr": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.1.tgz", + "integrity": "sha512-xlFXPfgJR5vIuDefhaHuUM9uUgvPaXB6GKdXy2gdEh8gBWQZ2ul24AJz3foUd8NNKlSTQuWYJpCb1/pL81m1KQ==" + }, + "node_modules/@wonderlandengine/api": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@wonderlandengine/api/-/api-1.4.2.tgz", + "integrity": "sha512-l9BER6npfjokcEquZbz5rPSCxoaxHlbGvLfUfgZIX2Rmv+z7vOso/e6jLezH9wmZ+PjF1o3fGuRtdwPDdC3kgg==", + "dependencies": { + "@types/webxr": "^0.5.0" + } + }, + "node_modules/@wonderlandengine/components": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wonderlandengine/components/-/components-1.0.3.tgz", + "integrity": "sha512-Swp8Lh1Arwm+V4y3IUL2WcXiIJWb8QeRS40d1/kmIjAIcXLQnv6SBv6zoVgXVVZAg3gb6eHxb8+1RGwEHPtihA==", + "dependencies": { + "@types/earcut": "^2.1.1", + "@types/webxr": "^0.5.0", + "earcut": "^2.2.4", + "gl-matrix": "^3.3.0", + "howler": "^2.2.1" + }, + "peerDependencies": { + "@wonderlandengine/api": "^1.0.0" + } + }, + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "node_modules/howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" + } }, - "node_modules/@types/earcut": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", - "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" - }, - "node_modules/@types/webxr": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.1.tgz", - "integrity": "sha512-xlFXPfgJR5vIuDefhaHuUM9uUgvPaXB6GKdXy2gdEh8gBWQZ2ul24AJz3foUd8NNKlSTQuWYJpCb1/pL81m1KQ==" - }, - "node_modules/@wonderlandengine/api": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@wonderlandengine/api/-/api-1.0.0.tgz", - "integrity": "sha512-aqjeIgNTa823quW/QYhrTlo6gRMgY9ZT1Q+Oh48K1AFzljb1eo6qb53h1989BKkTIZ5kFhKpltQRt/NBR88dxg==", - "dependencies": { - "@types/webxr": "^0.5.0", - "wasm-feature-detect": "^1.3.0" - } - }, - "node_modules/@wonderlandengine/components": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wonderlandengine/components/-/components-1.0.3.tgz", - "integrity": "sha512-Swp8Lh1Arwm+V4y3IUL2WcXiIJWb8QeRS40d1/kmIjAIcXLQnv6SBv6zoVgXVVZAg3gb6eHxb8+1RGwEHPtihA==", - "dependencies": { - "@types/earcut": "^2.1.1", - "@types/webxr": "^0.5.0", - "earcut": "^2.2.4", - "gl-matrix": "^3.3.0", - "howler": "^2.2.1" - }, - "peerDependencies": { - "@wonderlandengine/api": "^1.0.0" - } - }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, - "node_modules/gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" - }, - "node_modules/howler": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", - "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" - }, - "node_modules/wasm-feature-detect": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.5.1.tgz", - "integrity": "sha512-GHr23qmuehNXHY4902/hJ6EV5sUANIJC3R/yMfQ7hWDg3nfhlcJfnIL96R2ohpIwa62araN6aN4bLzzzq5GXkg==" - } - }, - "dependencies": { - "@types/earcut": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", - "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" - }, - "@types/webxr": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.1.tgz", - "integrity": "sha512-xlFXPfgJR5vIuDefhaHuUM9uUgvPaXB6GKdXy2gdEh8gBWQZ2ul24AJz3foUd8NNKlSTQuWYJpCb1/pL81m1KQ==" - }, - "@wonderlandengine/api": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@wonderlandengine/api/-/api-1.0.0.tgz", - "integrity": "sha512-aqjeIgNTa823quW/QYhrTlo6gRMgY9ZT1Q+Oh48K1AFzljb1eo6qb53h1989BKkTIZ5kFhKpltQRt/NBR88dxg==", - "requires": { - "@types/webxr": "^0.5.0", - "wasm-feature-detect": "^1.3.0" - } - }, - "@wonderlandengine/components": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wonderlandengine/components/-/components-1.0.3.tgz", - "integrity": "sha512-Swp8Lh1Arwm+V4y3IUL2WcXiIJWb8QeRS40d1/kmIjAIcXLQnv6SBv6zoVgXVVZAg3gb6eHxb8+1RGwEHPtihA==", - "requires": { - "@types/earcut": "^2.1.1", - "@types/webxr": "^0.5.0", - "earcut": "^2.2.4", - "gl-matrix": "^3.3.0", - "howler": "^2.2.1" - } - }, - "earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, - "gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" - }, - "howler": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", - "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" - }, - "wasm-feature-detect": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.5.1.tgz", - "integrity": "sha512-GHr23qmuehNXHY4902/hJ6EV5sUANIJC3R/yMfQ7hWDg3nfhlcJfnIL96R2ohpIwa62araN6aN4bLzzzq5GXkg==" + "dependencies": { + "@types/earcut": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.1.tgz", + "integrity": "sha512-w8oigUCDjElRHRRrMvn/spybSMyX8MTkKA5Dv+tS1IE/TgmNZPqUYtvYBXGY8cieSE66gm+szeK+bnbxC2xHTQ==" + }, + "@types/webxr": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.1.tgz", + "integrity": "sha512-xlFXPfgJR5vIuDefhaHuUM9uUgvPaXB6GKdXy2gdEh8gBWQZ2ul24AJz3foUd8NNKlSTQuWYJpCb1/pL81m1KQ==" + }, + "@wonderlandengine/api": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@wonderlandengine/api/-/api-1.4.2.tgz", + "integrity": "sha512-l9BER6npfjokcEquZbz5rPSCxoaxHlbGvLfUfgZIX2Rmv+z7vOso/e6jLezH9wmZ+PjF1o3fGuRtdwPDdC3kgg==", + "requires": { + "@types/webxr": "^0.5.0" + } + }, + "@wonderlandengine/components": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wonderlandengine/components/-/components-1.0.3.tgz", + "integrity": "sha512-Swp8Lh1Arwm+V4y3IUL2WcXiIJWb8QeRS40d1/kmIjAIcXLQnv6SBv6zoVgXVVZAg3gb6eHxb8+1RGwEHPtihA==", + "requires": { + "@types/earcut": "^2.1.1", + "@types/webxr": "^0.5.0", + "earcut": "^2.2.4", + "gl-matrix": "^3.3.0", + "howler": "^2.2.1" + } + }, + "earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" + } } - } } diff --git a/package.json b/package.json index ad18f0a..9709cca 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,19 @@ { - "name": "MyWonderland", - "version": "1.0.0", - "description": "My Wonderland project", - "main": "js/index.js", - "type": "module", - "module": "js/index.js", - "keywords": [ - "wonderland-engine" - ], - "dependencies": { - "@wonderlandengine/api": "^1.0.0", - "@wonderlandengine/components": "^1.0.3", - "gl-matrix": "^3.4.3" - } -} + "name": "MyWonderland", + "version": "1.0.0", + "description": "My Wonderland project", + "main": "js/index.js", + "type": "module", + "module": "js/index.js", + "keywords": [ + "wonderland-engine" + ], + "dependencies": { + "@wonderlandengine/api": ">=1.4.0 <1.5.0", + "@wonderlandengine/components": "^1.0.3", + "gl-matrix": "^3.4.3" + }, + "overrides": { + "@wonderlandengine/api": "$@wonderlandengine/api" + } +} \ No newline at end of file From d08d6a771877242a950b0bb76748a6dd931dc016 Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 26 May 2025 08:40:22 -0300 Subject: [PATCH 02/10] .. --- ...6_06-33-52.wlp => 2025-05-26_08-16-16.wlp} | 10 +- ...6_06-23-12.wlp => 2025-05-26_08-26-56.wlp} | 1434 +--------------- ...6_06-12-32.wlp => 2025-05-26_08-37-36.wlp} | 1435 +---------------- MouseDefense.wlp | 10 +- js/game.js | 112 +- js/joystick-movement.js | 229 ++- js/mouse-mover.js | 19 +- js/mouse-spawner.js | 46 +- js/play-again-button.js | 28 +- 9 files changed, 363 insertions(+), 2960 deletions(-) rename .autosave/MouseDefense/{2025-05-26_06-33-52.wlp => 2025-05-26_08-16-16.wlp} (99%) rename .autosave/MouseDefense/{2025-05-26_06-23-12.wlp => 2025-05-26_08-26-56.wlp} (83%) rename .autosave/MouseDefense/{2025-05-26_06-12-32.wlp => 2025-05-26_08-37-36.wlp} (83%) diff --git a/.autosave/MouseDefense/2025-05-26_06-33-52.wlp b/.autosave/MouseDefense/2025-05-26_08-16-16.wlp similarity index 99% rename from .autosave/MouseDefense/2025-05-26_06-33-52.wlp rename to .autosave/MouseDefense/2025-05-26_08-16-16.wlp index 9325865..3353da0 100644 --- a/.autosave/MouseDefense/2025-05-26_06-33-52.wlp +++ b/.autosave/MouseDefense/2025-05-26_08-16-16.wlp @@ -626,9 +626,15 @@ "type": "joystick-movement", "joystick-movement": { "headObject": "14", - "blowForce": 20.0, + "blowForce": 5.0, "cursorObject": "126", - "friction": 0.0099999 + "friction": 0.5, + "turnAngle": 60.0, + "gravity": 10.0, + "moveSpeed": 2.0, + "horizontalForceMultiplier": 20.0, + "maxBlowDuration": 1.0, + "turnSpeedMultiplier": 5.0 } } ], diff --git a/.autosave/MouseDefense/2025-05-26_06-23-12.wlp b/.autosave/MouseDefense/2025-05-26_08-26-56.wlp similarity index 83% rename from .autosave/MouseDefense/2025-05-26_06-23-12.wlp rename to .autosave/MouseDefense/2025-05-26_08-26-56.wlp index 8cd59ac..9dd24af 100644 --- a/.autosave/MouseDefense/2025-05-26_06-23-12.wlp +++ b/.autosave/MouseDefense/2025-05-26_08-26-56.wlp @@ -626,9 +626,15 @@ "type": "joystick-movement", "joystick-movement": { "headObject": "14", - "blowForce": 20.0, + "blowForce": 5.0, "cursorObject": "126", - "friction": 0.0099999 + "friction": 0.5, + "turnAngle": 60.0, + "gravity": 10.0, + "moveSpeed": 2.0, + "horizontalForceMultiplier": 10.0, + "maxBlowDuration": 1.0, + "turnSpeedMultiplier": 5.0 } } ], @@ -1645,1023 +1651,85 @@ 1.0000044 ] }, - "699": { - "link": { - "name": "Cube.026", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "WaterTower", - "translation": [ - -5.419394, - 0.3026272, - -0.8202095 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.2407757, - 1.2407757, - 1.2407757 - ] - }, - "700": { - "link": { - "name": "Point", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "TractorHeadlightRight", - "translation": [ - 5.6185212, - 1.3393497, - 8.9924983 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "701": { - "link": { - "name": "Point.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "TractorHeadlightLeft", - "translation": [ - 5.6185212, - 1.3393497, - 9.4431333 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "702": { - "link": { - "name": "Plane.006", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "773", - "name": "PumpkinVineLeaves", - "translation": [ - -0.4718652, - 0.5391851, - -6.4565482 - ], - "rotation": [ - -0.0213863, - 0.9675652, - 0.0508077, - 0.2465334 - ], - "scaling": [ - 0.2075943, - 0.2520672, - 0.2063785 - ] - }, - "703": { - "link": { - "name": "pumpkin.010", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.3891673, - 0.4141739, - -6.5523791 - ], - "rotation": [ - 0.0, - 0.0224933, - 0.0, - 0.9997469 - ], - "scaling": [ - 0.4692581, - 0.3512383, - 0.4279142 - ] - }, - "704": { - "link": { - "name": "pumpkin.009", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -3.5295698, - 0.5458946, - -0.9555708 - ], - "rotation": [ - 0.0, - 0.0224933, - 0.0, - 0.9997469 - ], - "scaling": [ - 0.4692581, - 0.3512383, - 0.4279142 - ] - }, - "705": { - "link": { - "name": "pumpkin.008", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - 0.2540399, - 0.4415422, - -5.6276788 - ], - "rotation": [ - -0.0798495, - 0.014406, - 0.2554356, - 0.9634153 - ], - "scaling": [ - 0.5572981, - 0.416226, - 0.5121909 - ] - }, - "706": { - "link": { - "name": "pumpkin.007", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - 0.3039036, - 0.4012694, - -6.6975131 - ], - "rotation": [ - 0.0618792, - -0.2048855, - 0.2287753, - 0.9496603 - ], - "scaling": [ - 0.588871, - 0.4582025, - 0.5824025 - ] - }, - "707": { - "link": { - "name": "pumpkin.006", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -0.0205751, - 0.4121693, - -7.7113966 - ], - "rotation": [ - 0.1514884, - 0.2607719, - 0.059134, - 0.9516052 - ], - "scaling": [ - 0.4468672, - 0.3446162, - 0.4621649 - ] - }, - "708": { - "link": { - "name": "pumpkin.005", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.4596736, - 0.4169574, - -7.5403347 - ], - "rotation": [ - 0.0, - 0.6670249, - 0.0, - 0.7450354 - ], - "scaling": [ - 0.3819873, - 0.3437192, - 0.5035256 - ] - }, - "709": { - "link": { - "name": "pumpkin.004", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.3891669, - 0.4141815, - -6.5523777 - ], - "rotation": [ - 0.0, - 0.8883404, - 0.0, - -0.4591855 - ], - "scaling": [ - 0.411621, - 0.3512383, - 0.4911786 - ] - }, - "710": { - "link": { - "name": "pumpkin.003", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.3350408, - 0.4258176, - -5.4807019 - ], - "rotation": [ - 0.0, - 0.1535455, - 0.0, - 0.9881415 - ], - "scaling": [ - 0.4599973, - 0.3512383, - 0.4380787 - ] - }, - "711": { - "link": { - "name": "pumpkin.002", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -2.8067207, - 0.4059532, - -5.2884325 - ], - "rotation": [ - -0.21887, - -0.2617262, - 0.113845, - 0.9330779 - ], - "scaling": [ - 0.4752866, - 0.3560046, - 0.4957126 - ] - }, - "712": { - "link": { - "name": "pumpkin.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -2.8850717, - 0.4029689, - -6.5024399 - ], - "rotation": [ - -0.0942712, - 0.1582353, - -0.1461971, - 0.9719572 - ], - "scaling": [ - 0.5149735, - 0.3880096, - 0.4938088 - ] - }, - "713": { - "link": { - "name": "Cube.037", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "773", - "name": "Pumpkin Fence", - "translation": [ - -1.351263, - 0.5781677, - -6.6009268 - ], - "rotation": [ - 0.0, - 0.0246876, - 0.0, - 0.9996952 - ], - "scaling": [ - 2.3152415, - 0.3288573, - 1.9948958 - ] - }, - "714": { - "link": { - "name": "trailer", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - 11.1894445, - 0.5359038, - 5.3859648 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -2.821300029154372e-7 - ], - "scaling": [ - 0.6909136, - 0.6909136, - 0.6909136 - ] - }, - "715": { - "link": { - "name": "tractor", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "components": [ - {}, - {}, - {}, - {}, - { - "active": true - } - ], - "translation": [ - 7.2058782, - 0.3364669, - 9.1988658 - ], - "rotation": [ - 0.0745263, - 0.0745263, - -0.7031683, - 0.7031685 - ], - "scaling": [ - 0.134567, - 0.0297375, - 0.1345667 - ] - }, - "716": { - "link": { - "name": "bucket", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - -5.5501799, - 0.3381958, - -4.4091949 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 0.3741787, - 0.3274115, - 0.3741787 - ] - }, - "717": { - "link": { - "name": "Cube.023", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "Pitchfork", - "translation": [ - 11.8490447, - 0.2465551, - 3.5529367 - ], - "rotation": [ - -0.0728215, - 0.0, - 0.0, - 0.997345 - ], - "scaling": [ - 0.3019917, - 0.4218724, - 0.4037756 - ] - }, - "718": { - "link": { - "name": "object1", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "Pitchfork2", - "translation": [ - 10.0508546, - 1.4798431, - 5.7027797 - ], - "rotation": [ - 0.3935806, - 0.5874473, - -0.5874472, - 0.3935805 - ], - "scaling": [ - 0.4138227, - 0.4323694, - 0.4138227 - ] - }, - "719": { - "link": { - "name": "Cube.022", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6109657, - 0.2762187, - 11.6062784 - ], - "rotation": [ - 0.0, - -0.0143454, - 0.0, - 0.9998971 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "720": { - "link": { - "name": "Cube.021", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6113204, - 0.2762086, - 9.7595958 - ], - "rotation": [ - 0.0, - -0.0314836, - 0.0, - 0.9995042 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312987 - ] - }, - "721": { - "link": { - "name": "Cube.020", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6111564, - 0.2762086, - 7.9045352 - ], - "rotation": [ - 0.0, - -0.0314836, - 0.0, - 0.9995042 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312987 - ] - }, - "722": { - "link": { - "name": "Cube.018", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.3883485, - 2.2766273, - 11.7103004 - ], - "rotation": [ - 0.0, - 0.0279077, - 0.0, - 0.9996104 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "723": { - "link": { - "name": "Cube.017", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6082048, - 1.2692325, - 9.7596302 - ], - "rotation": [ - 0.0, - 0.0279077, - 0.0, - 0.9996104 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "724": { - "link": { - "name": "Cube.016", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.8265104, - 1.2692532, - 11.5931024 - ], - "rotation": [ - 0.0, - 0.0450385, - 0.0, - 0.9989852 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "725": { - "link": { - "name": "Cylinder.018", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -5.933855, - 0.099243, - -6.1150646 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "726": { - "link": { - "name": "Cube.029", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "776", - "name": "CarrotDirt", - "translation": [ - -6.9375376, - 0.35749, - -7.412661 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.6863609, - 0.0383789, - 1.9874788 - ] - }, - "727": { - "link": { - "name": "Cube.028", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "776", - "name": "CarrotFence", - "translation": [ - -6.9202075, - 0.5781676, - -7.2648162 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.550662, - 0.3288573, - 2.159311 - ] - }, - "728": { - "link": { - "name": "straw", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.5794181, - 3.2796792, - 11.5928668 - ], - "rotation": [ - 0.0, - 0.3981962, - 0.0, - 0.9173002 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "729": { - "link": { - "name": "wheelbarrow", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - 9.7177839, - 0.2942818, - 2.8514757 - ], - "rotation": [ - 0.5, - -0.5, - 0.5, - 0.5 - ], - "scaling": [ - 0.0202197, - 0.1378781, - 0.0202197 - ] - }, "730": { "link": { "name": "windmill", "file": "models\\farm\\uploads_files_2156679_farm.gltf" }, - "parent": "772", - "translation": [ - 12.466111, - 0.3682987, - 2.1683902 - ], - "rotation": [ - 0.6676304, - -0.232959, - 0.2329592, - 0.6676298 - ], - "scaling": [ - 0.0419736, - 0.4500716, - 0.0055594 - ] - }, - "731": { - "link": { - "name": "object3", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "GateFence", - "translation": [ - 2.4648766, - 0.4939031, - 15.2204427 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.629207417863654e-7 - ], - "scaling": [ - 0.2333862, - 2.5509233, - 0.3531371 - ] - }, - "732": { - "link": { - "name": "Cube.014", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "FarmFences", - "components": [ - { - "mesh": { - "material": "521" - } - }, - { - "active": true - } - ], - "translation": [ - 2.6194677, - 1.097275, - 1.3452991 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.6292079862978428e-7 - ], - "scaling": [ - 0.2452231, - 2.4336197, - 0.4567871 - ] - }, - "742": { - "link": { - "name": "plant1", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -7.83151, - 0.2688744, - 12.8934106 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "743": { - "link": { - "name": "Cube.012", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -6.3789262, - 0.2794474, - 12.8086948 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "744": { - "link": { - "name": "Cube.011", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -4.8770589, - 0.2794491, - 12.8087034 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "745": { - "link": { - "name": "Cube.010", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -3.1605782, - 0.2794491, - 12.8086938 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "746": { - "link": { - "name": "Cube.009", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -1.4093488, - 0.2794491, - 12.8087081 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "747": { - "link": { - "name": "Cube.008", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -1.4093575, - 0.2794491, - 11.0508842 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "748": { - "link": { - "name": "Cube.007", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", + "parent": "772", "translation": [ - -3.1605854, - 0.2794491, - 11.0508747 + 14.3795557, + 0.3683118, + -13.9868984 ], "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 + 0.6247548, + -0.3311828, + 0.3311842, + 0.624753 ], "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 + 0.0419736, + 0.4500722, + 0.0055593 ] }, - "749": { + "731": { "link": { - "name": "Cube.005", + "name": "object3", "file": "models\\farm\\uploads_files_2156679_farm.gltf" }, - "parent": "775", + "parent": "772", + "name": "GateFence", "translation": [ - -4.8770523, - 0.2794491, - 11.0508785 + 2.4648766, + 0.4939031, + 15.2204427 ], "rotation": [ 0.0, - 0.5783444, + 1.0, 0.0, - 0.8157926 + -1.629207417863654e-7 ], "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 + 0.2333862, + 2.5509233, + 0.3531371 ] }, - "750": { + "732": { "link": { - "name": "Cube.004", + "name": "Cube.014", "file": "models\\farm\\uploads_files_2156679_farm.gltf" }, - "parent": "775", + "parent": "772", + "name": "FarmFences", + "components": [ + { + "mesh": { + "material": "521" + } + }, + { + "active": true + } + ], "translation": [ - -6.3789319, - 0.2794491, - 11.0508804 + 2.6194677, + 1.097275, + 1.3452991 ], "rotation": [ 0.0, - 0.5783444, + 1.0, 0.0, - 0.8157926 + -1.6292079862978428e-7 ], "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 + 0.2452231, + 2.4336197, + 0.4567871 ] }, "751": { @@ -2712,308 +1780,6 @@ 0.3531371 ] }, - "754": { - "link": { - "name": "farm_house", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "FarmHouse", - "translation": [ - 8.2236309, - 0.251125, - -4.5196342 - ], - "rotation": [ - 0.0, - 0.0, - 0.7071068, - 0.7071067 - ], - "scaling": [ - 0.8280438, - 0.1469551, - 0.0699099 - ] - }, - "756": { - "link": { - "name": "Cube.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -7.8881816, - 0.2794491, - 10.9587659 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "757": { - "link": { - "name": "pumpkin", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -2.8940696, - 0.4068011, - -7.4910988 - ], - "rotation": [ - -0.0333203, - -0.4002722, - -0.0650627, - 0.9134761 - ], - "scaling": [ - 0.4672923, - 0.3900653, - 0.5341917 - ] - }, - "758": { - "link": { - "name": "Cube.002", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "777", - "name": "Corn Fence", - "translation": [ - -5.0149707, - 0.633682, - 11.665802 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 3.4159474, - 0.4943152, - 2.7420175 - ] - }, - "759": { - "link": { - "name": "Cube.038", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "777", - "name": "Corn Dirt", - "translation": [ - -3.4776201, - 0.5781676, - 3.8960065 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 2.3113181, - 0.3288573, - 2.1849279 - ] - }, - "761": { - "link": { - "name": "Cylinder.009", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -5.933876, - 0.0992655, - -7.456952 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "762": { - "link": { - "name": "Cylinder.010", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -5.9338593, - 0.0992569, - -8.4776973 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "763": { - "link": { - "name": "Cylinder.011", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -6.9821476, - 0.0992735, - -8.4776954 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "764": { - "link": { - "name": "Cylinder.012", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -6.9821391, - 0.0992366, - -7.4454765 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "765": { - "link": { - "name": "Cylinder.013", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -6.9821195, - 0.0992562, - -6.1792936 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "766": { - "link": { - "name": "Cylinder.014", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -8.0280981, - 0.0992773, - -8.4776954 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "767": { - "link": { - "name": "Cylinder.015", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -8.0281286, - 0.0992444, - -7.4454784 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "768": { - "link": { - "name": "Cylinder.016", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -8.0280971, - 0.0992449, - -6.1792888 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, "772": { "name": "Farm", "components": [ @@ -3038,66 +1804,6 @@ 1.0 ] }, - "773": { - "name": "PumpkinPatch", - "parent": "772", - "translation": [ - -0.0000029, - -8.943723628362933e-8, - 0.0000017 - ], - "rotation": [ - 0.0, - -0.0270951, - 0.0, - 0.9996328 - ], - "scaling": [ - 0.9980559, - 1.0000001, - 1.0955884 - ] - }, - "775": { - "name": "Corn", - "parent": "777", - "translation": [ - 0.0, - 0.0, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "776": { - "name": "CarrotPatch", - "parent": "772" - }, - "777": { - "name": "CornPatch", - "parent": "772" - }, - "778": { - "name": "HayBales", - "parent": "772" - }, - "779": { - "name": "Pumpkins", - "parent": "773" - }, - "780": { - "name": "Carrots", - "parent": "776" - }, "909": { "link": { "name": "Mouse", @@ -3257,38 +1963,6 @@ }, "parent": "983" }, - "988": { - "name": "Game Logo", - "components": [ - { - "type": "mesh", - "mesh": { - "mesh": "12", - "material": "903" - }, - "active": true - }, - { - "type": "game-logo" - } - ], - "translation": [ - 0.0, - 3.5986759, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, "999": { "name": "horizontal crosshair", "parent": "1001", @@ -4767,7 +3441,7 @@ }, "importScaling": 100.0, "simplify": true, - "simplifyTarget": 0.1 + "simplifyTarget": 0.5 } }, "textures": { diff --git a/.autosave/MouseDefense/2025-05-26_06-12-32.wlp b/.autosave/MouseDefense/2025-05-26_08-37-36.wlp similarity index 83% rename from .autosave/MouseDefense/2025-05-26_06-12-32.wlp rename to .autosave/MouseDefense/2025-05-26_08-37-36.wlp index 9894818..0efa238 100644 --- a/.autosave/MouseDefense/2025-05-26_06-12-32.wlp +++ b/.autosave/MouseDefense/2025-05-26_08-37-36.wlp @@ -626,8 +626,15 @@ "type": "joystick-movement", "joystick-movement": { "headObject": "14", - "blowForce": 2.0, - "cursorObject": "126" + "blowForce": 5.0, + "cursorObject": "126", + "friction": 0.5, + "turnAngle": 60.0, + "gravity": 20.0, + "moveSpeed": 2.0, + "horizontalForceMultiplier": 10.0, + "maxBlowDuration": 1.0, + "turnSpeedMultiplier": 5.0 } } ], @@ -1644,1023 +1651,85 @@ 1.0000044 ] }, - "699": { - "link": { - "name": "Cube.026", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "WaterTower", - "translation": [ - -5.419394, - 0.3026272, - -0.8202095 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.2407757, - 1.2407757, - 1.2407757 - ] - }, - "700": { - "link": { - "name": "Point", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "TractorHeadlightRight", - "translation": [ - 5.6185212, - 1.3393497, - 8.9924983 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "701": { - "link": { - "name": "Point.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "TractorHeadlightLeft", - "translation": [ - 5.6185212, - 1.3393497, - 9.4431333 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "702": { - "link": { - "name": "Plane.006", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "773", - "name": "PumpkinVineLeaves", - "translation": [ - -0.4718652, - 0.5391851, - -6.4565482 - ], - "rotation": [ - -0.0213863, - 0.9675652, - 0.0508077, - 0.2465334 - ], - "scaling": [ - 0.2075943, - 0.2520672, - 0.2063785 - ] - }, - "703": { - "link": { - "name": "pumpkin.010", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.3891673, - 0.4141739, - -6.5523791 - ], - "rotation": [ - 0.0, - 0.0224933, - 0.0, - 0.9997469 - ], - "scaling": [ - 0.4692581, - 0.3512383, - 0.4279142 - ] - }, - "704": { - "link": { - "name": "pumpkin.009", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -3.5295698, - 0.5458946, - -0.9555708 - ], - "rotation": [ - 0.0, - 0.0224933, - 0.0, - 0.9997469 - ], - "scaling": [ - 0.4692581, - 0.3512383, - 0.4279142 - ] - }, - "705": { - "link": { - "name": "pumpkin.008", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - 0.2540399, - 0.4415422, - -5.6276788 - ], - "rotation": [ - -0.0798495, - 0.014406, - 0.2554356, - 0.9634153 - ], - "scaling": [ - 0.5572981, - 0.416226, - 0.5121909 - ] - }, - "706": { - "link": { - "name": "pumpkin.007", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - 0.3039036, - 0.4012694, - -6.6975131 - ], - "rotation": [ - 0.0618792, - -0.2048855, - 0.2287753, - 0.9496603 - ], - "scaling": [ - 0.588871, - 0.4582025, - 0.5824025 - ] - }, - "707": { - "link": { - "name": "pumpkin.006", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -0.0205751, - 0.4121693, - -7.7113966 - ], - "rotation": [ - 0.1514884, - 0.2607719, - 0.059134, - 0.9516052 - ], - "scaling": [ - 0.4468672, - 0.3446162, - 0.4621649 - ] - }, - "708": { - "link": { - "name": "pumpkin.005", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.4596736, - 0.4169574, - -7.5403347 - ], - "rotation": [ - 0.0, - 0.6670249, - 0.0, - 0.7450354 - ], - "scaling": [ - 0.3819873, - 0.3437192, - 0.5035256 - ] - }, - "709": { - "link": { - "name": "pumpkin.004", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.3891669, - 0.4141815, - -6.5523777 - ], - "rotation": [ - 0.0, - 0.8883404, - 0.0, - -0.4591855 - ], - "scaling": [ - 0.411621, - 0.3512383, - 0.4911786 - ] - }, - "710": { - "link": { - "name": "pumpkin.003", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -1.3350408, - 0.4258176, - -5.4807019 - ], - "rotation": [ - 0.0, - 0.1535455, - 0.0, - 0.9881415 - ], - "scaling": [ - 0.4599973, - 0.3512383, - 0.4380787 - ] - }, - "711": { - "link": { - "name": "pumpkin.002", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -2.8067207, - 0.4059532, - -5.2884325 - ], - "rotation": [ - -0.21887, - -0.2617262, - 0.113845, - 0.9330779 - ], - "scaling": [ - 0.4752866, - 0.3560046, - 0.4957126 - ] - }, - "712": { - "link": { - "name": "pumpkin.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -2.8850717, - 0.4029689, - -6.5024399 - ], - "rotation": [ - -0.0942712, - 0.1582353, - -0.1461971, - 0.9719572 - ], - "scaling": [ - 0.5149735, - 0.3880096, - 0.4938088 - ] - }, - "713": { - "link": { - "name": "Cube.037", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "773", - "name": "Pumpkin Fence", - "translation": [ - -1.351263, - 0.5781677, - -6.6009268 - ], - "rotation": [ - 0.0, - 0.0246876, - 0.0, - 0.9996952 - ], - "scaling": [ - 2.3152415, - 0.3288573, - 1.9948958 - ] - }, - "714": { - "link": { - "name": "trailer", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - 11.1894445, - 0.5359038, - 5.3859648 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -2.821300029154372e-7 - ], - "scaling": [ - 0.6909136, - 0.6909136, - 0.6909136 - ] - }, - "715": { - "link": { - "name": "tractor", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "components": [ - {}, - {}, - {}, - {}, - { - "active": true - } - ], - "translation": [ - 7.2058782, - 0.3364669, - 9.1988658 - ], - "rotation": [ - 0.0745263, - 0.0745263, - -0.7031683, - 0.7031685 - ], - "scaling": [ - 0.134567, - 0.0297375, - 0.1345667 - ] - }, - "716": { - "link": { - "name": "bucket", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - -5.5501799, - 0.3381958, - -4.4091949 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 0.3741787, - 0.3274115, - 0.3741787 - ] - }, - "717": { - "link": { - "name": "Cube.023", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "Pitchfork", - "translation": [ - 11.8490447, - 0.2465551, - 3.5529367 - ], - "rotation": [ - -0.0728215, - 0.0, - 0.0, - 0.997345 - ], - "scaling": [ - 0.3019917, - 0.4218724, - 0.4037756 - ] - }, - "718": { - "link": { - "name": "object1", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "Pitchfork2", - "translation": [ - 10.0508546, - 1.4798431, - 5.7027797 - ], - "rotation": [ - 0.3935806, - 0.5874473, - -0.5874472, - 0.3935805 - ], - "scaling": [ - 0.4138227, - 0.4323694, - 0.4138227 - ] - }, - "719": { - "link": { - "name": "Cube.022", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6109657, - 0.2762187, - 11.6062784 - ], - "rotation": [ - 0.0, - -0.0143454, - 0.0, - 0.9998971 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "720": { - "link": { - "name": "Cube.021", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6113204, - 0.2762086, - 9.7595958 - ], - "rotation": [ - 0.0, - -0.0314836, - 0.0, - 0.9995042 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312987 - ] - }, - "721": { - "link": { - "name": "Cube.020", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6111564, - 0.2762086, - 7.9045352 - ], - "rotation": [ - 0.0, - -0.0314836, - 0.0, - 0.9995042 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312987 - ] - }, - "722": { - "link": { - "name": "Cube.018", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.3883485, - 2.2766273, - 11.7103004 - ], - "rotation": [ - 0.0, - 0.0279077, - 0.0, - 0.9996104 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "723": { - "link": { - "name": "Cube.017", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.6082048, - 1.2692325, - 9.7596302 - ], - "rotation": [ - 0.0, - 0.0279077, - 0.0, - 0.9996104 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "724": { - "link": { - "name": "Cube.016", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.8265104, - 1.2692532, - 11.5931024 - ], - "rotation": [ - 0.0, - 0.0450385, - 0.0, - 0.9989852 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "725": { - "link": { - "name": "Cylinder.018", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -5.933855, - 0.099243, - -6.1150646 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "726": { - "link": { - "name": "Cube.029", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "776", - "name": "CarrotDirt", - "translation": [ - -6.9375376, - 0.35749, - -7.412661 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.6863609, - 0.0383789, - 1.9874788 - ] - }, - "727": { - "link": { - "name": "Cube.028", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "776", - "name": "CarrotFence", - "translation": [ - -6.9202075, - 0.5781676, - -7.2648162 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.550662, - 0.3288573, - 2.159311 - ] - }, - "728": { - "link": { - "name": "straw", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "778", - "translation": [ - 11.5794181, - 3.2796792, - 11.5928668 - ], - "rotation": [ - 0.0, - 0.3981962, - 0.0, - 0.9173002 - ], - "scaling": [ - 0.1436073, - 0.0393138, - 1.0312993 - ] - }, - "729": { - "link": { - "name": "wheelbarrow", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "translation": [ - 9.7177839, - 0.2942818, - 2.8514757 - ], - "rotation": [ - 0.5, - -0.5, - 0.5, - 0.5 - ], - "scaling": [ - 0.0202197, - 0.1378781, - 0.0202197 - ] - }, "730": { "link": { "name": "windmill", "file": "models\\farm\\uploads_files_2156679_farm.gltf" }, - "parent": "772", - "translation": [ - 12.466111, - 0.3682987, - 2.1683902 - ], - "rotation": [ - 0.6676304, - -0.232959, - 0.2329592, - 0.6676298 - ], - "scaling": [ - 0.0419736, - 0.4500716, - 0.0055594 - ] - }, - "731": { - "link": { - "name": "object3", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "GateFence", - "translation": [ - 2.4648766, - 0.4939031, - 15.2204427 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.629207417863654e-7 - ], - "scaling": [ - 0.2333862, - 2.5509233, - 0.3531371 - ] - }, - "732": { - "link": { - "name": "Cube.014", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "FarmFences", - "components": [ - { - "mesh": { - "material": "521" - } - }, - { - "active": true - } - ], - "translation": [ - 2.6194677, - 1.097275, - 1.3452991 - ], - "rotation": [ - 0.0, - 1.0, - 0.0, - -1.6292079862978428e-7 - ], - "scaling": [ - 0.2452231, - 2.4336197, - 0.4567871 - ] - }, - "742": { - "link": { - "name": "plant1", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -7.83151, - 0.2688744, - 12.8934106 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "743": { - "link": { - "name": "Cube.012", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -6.3789262, - 0.2794474, - 12.8086948 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "744": { - "link": { - "name": "Cube.011", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -4.8770589, - 0.2794491, - 12.8087034 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "745": { - "link": { - "name": "Cube.010", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -3.1605782, - 0.2794491, - 12.8086938 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "746": { - "link": { - "name": "Cube.009", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -1.4093488, - 0.2794491, - 12.8087081 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "747": { - "link": { - "name": "Cube.008", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -1.4093575, - 0.2794491, - 11.0508842 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "748": { - "link": { - "name": "Cube.007", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", + "parent": "772", "translation": [ - -3.1605854, - 0.2794491, - 11.0508747 + 14.3795557, + 0.3683118, + -13.9868984 ], "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 + 0.6247548, + -0.3311828, + 0.3311842, + 0.624753 ], "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 + 0.0419736, + 0.4500722, + 0.0055593 ] }, - "749": { + "731": { "link": { - "name": "Cube.005", + "name": "object3", "file": "models\\farm\\uploads_files_2156679_farm.gltf" }, - "parent": "775", + "parent": "772", + "name": "GateFence", "translation": [ - -4.8770523, - 0.2794491, - 11.0508785 + 2.4648766, + 0.4939031, + 15.2204427 ], "rotation": [ 0.0, - 0.5783444, + 1.0, 0.0, - 0.8157926 + -1.629207417863654e-7 ], "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 + 0.2333862, + 2.5509233, + 0.3531371 ] }, - "750": { + "732": { "link": { - "name": "Cube.004", + "name": "Cube.014", "file": "models\\farm\\uploads_files_2156679_farm.gltf" }, - "parent": "775", + "parent": "772", + "name": "FarmFences", + "components": [ + { + "mesh": { + "material": "521" + } + }, + { + "active": true + } + ], "translation": [ - -6.3789319, - 0.2794491, - 11.0508804 + 2.6194677, + 1.097275, + 1.3452991 ], "rotation": [ 0.0, - 0.5783444, + 1.0, 0.0, - 0.8157926 + -1.6292079862978428e-7 ], "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 + 0.2452231, + 2.4336197, + 0.4567871 ] }, "751": { @@ -2711,308 +1780,6 @@ 0.3531371 ] }, - "754": { - "link": { - "name": "farm_house", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "772", - "name": "FarmHouse", - "translation": [ - 8.2236309, - 0.251125, - -4.5196342 - ], - "rotation": [ - 0.0, - 0.0, - 0.7071068, - 0.7071067 - ], - "scaling": [ - 0.8280438, - 0.1469551, - 0.0699099 - ] - }, - "756": { - "link": { - "name": "Cube.001", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "775", - "translation": [ - -7.8881816, - 0.2794491, - 10.9587659 - ], - "rotation": [ - 0.0, - 0.5783444, - 0.0, - 0.8157926 - ], - "scaling": [ - 0.1439124, - 0.0212622, - 0.2819215 - ] - }, - "757": { - "link": { - "name": "pumpkin", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "779", - "translation": [ - -2.8940696, - 0.4068011, - -7.4910988 - ], - "rotation": [ - -0.0333203, - -0.4002722, - -0.0650627, - 0.9134761 - ], - "scaling": [ - 0.4672923, - 0.3900653, - 0.5341917 - ] - }, - "758": { - "link": { - "name": "Cube.002", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "777", - "name": "Corn Fence", - "translation": [ - -5.0149707, - 0.633682, - 11.665802 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 3.4159474, - 0.4943152, - 2.7420175 - ] - }, - "759": { - "link": { - "name": "Cube.038", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "777", - "name": "Corn Dirt", - "translation": [ - -3.4776201, - 0.5781676, - 3.8960065 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 2.3113181, - 0.3288573, - 2.1849279 - ] - }, - "761": { - "link": { - "name": "Cylinder.009", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -5.933876, - 0.0992655, - -7.456952 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "762": { - "link": { - "name": "Cylinder.010", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -5.9338593, - 0.0992569, - -8.4776973 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "763": { - "link": { - "name": "Cylinder.011", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -6.9821476, - 0.0992735, - -8.4776954 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "764": { - "link": { - "name": "Cylinder.012", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -6.9821391, - 0.0992366, - -7.4454765 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "765": { - "link": { - "name": "Cylinder.013", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -6.9821195, - 0.0992562, - -6.1792936 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "766": { - "link": { - "name": "Cylinder.014", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -8.0280981, - 0.0992773, - -8.4776954 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "767": { - "link": { - "name": "Cylinder.015", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -8.0281286, - 0.0992444, - -7.4454784 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, - "768": { - "link": { - "name": "Cylinder.016", - "file": "models\\farm\\uploads_files_2156679_farm.gltf" - }, - "parent": "780", - "translation": [ - -8.0280971, - 0.0992449, - -6.1792888 - ], - "rotation": [ - -0.0695482, - 0.8938706, - 0.4170604, - 0.1490603 - ], - "scaling": [ - 0.0068971, - 0.0031377, - 0.0087054 - ] - }, "772": { "name": "Farm", "components": [ @@ -3037,66 +1804,6 @@ 1.0 ] }, - "773": { - "name": "PumpkinPatch", - "parent": "772", - "translation": [ - -0.0000029, - -8.943723628362933e-8, - 0.0000017 - ], - "rotation": [ - 0.0, - -0.0270951, - 0.0, - 0.9996328 - ], - "scaling": [ - 0.9980559, - 1.0000001, - 1.0955884 - ] - }, - "775": { - "name": "Corn", - "parent": "777", - "translation": [ - 0.0, - 0.0, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, - "776": { - "name": "CarrotPatch", - "parent": "772" - }, - "777": { - "name": "CornPatch", - "parent": "772" - }, - "778": { - "name": "HayBales", - "parent": "772" - }, - "779": { - "name": "Pumpkins", - "parent": "773" - }, - "780": { - "name": "Carrots", - "parent": "776" - }, "909": { "link": { "name": "Mouse", @@ -3256,38 +1963,6 @@ }, "parent": "983" }, - "988": { - "name": "Game Logo", - "components": [ - { - "type": "mesh", - "mesh": { - "mesh": "12", - "material": "903" - }, - "active": true - }, - { - "type": "game-logo" - } - ], - "translation": [ - 0.0, - 3.5986759, - 0.0 - ], - "rotation": [ - 0.0, - 0.0, - 0.0, - 1.0 - ], - "scaling": [ - 1.0, - 1.0, - 1.0 - ] - }, "999": { "name": "horizontal crosshair", "parent": "1001", @@ -4766,7 +3441,7 @@ }, "importScaling": 100.0, "simplify": true, - "simplifyTarget": 0.1 + "simplifyTarget": 0.5 } }, "textures": { diff --git a/MouseDefense.wlp b/MouseDefense.wlp index 9325865..0efa238 100644 --- a/MouseDefense.wlp +++ b/MouseDefense.wlp @@ -626,9 +626,15 @@ "type": "joystick-movement", "joystick-movement": { "headObject": "14", - "blowForce": 20.0, + "blowForce": 5.0, "cursorObject": "126", - "friction": 0.0099999 + "friction": 0.5, + "turnAngle": 60.0, + "gravity": 20.0, + "moveSpeed": 2.0, + "horizontalForceMultiplier": 10.0, + "maxBlowDuration": 1.0, + "turnSpeedMultiplier": 5.0 } } ], diff --git a/js/game.js b/js/game.js index b737f26..ba55348 100644 --- a/js/game.js +++ b/js/game.js @@ -1,10 +1,9 @@ - export const state = { shotCount: 0, /* Global function used to update the score display */ updateCounter: null, updateScore: null, - gameOver: false, + gameOver: true, score: 0, resetButton: null, bgMusic: null, @@ -21,51 +20,106 @@ export const state = { despawnTarget: null, firstShot: false, launch: null, + paused: false, + + // Wave system properties + currentWave: 1, + zombiesKilledInWave: 0, + waveProperties: { + baseZombies: 10, // Starting number of zombies in wave 1 + zombiesIncrease: 5, // How many more zombies per wave + baseSpeed: 1.5, // Starting speed in wave 1 + speedIncreasePercent: 10 // Speed increase percentage per wave + }, + + getCurrentWave() { + return this.currentWave; + }, + + getWaveZombieCount() { + return this.waveProperties.baseZombies + + (this.currentWave - 1) * this.waveProperties.zombiesIncrease; + }, + + getWaveSpeed() { + const speedMultiplier = 1 + ((this.currentWave - 1) * this.waveProperties.speedIncreasePercent / 100); + return this.waveProperties.baseSpeed * speedMultiplier; + }, + + zombieKilled() { + this.zombiesKilledInWave++; + this.incrementScore(); + + // Check if wave is complete + if (this.zombiesKilledInWave >= this.getWaveZombieCount()) { + this.nextWave(); + } + }, + + nextWave() { + this.currentWave++; + this.zombiesKilledInWave = 0; + this.updateScore(`Wave ${this.currentWave} - Zombies: ${this.mouseSpawner.targets.length}`); + + // Update max targets for the new wave + if (this.mouseSpawner) { + this.mouseSpawner.maxTargets = this.getWaveZombieCount(); + } + }, incrementScore() { ++this.score; + this.updateScore(`Wave ${this.currentWave} - Zombies: ${this.mouseSpawner.targets.length}`); + }, - let scoreString = ""; - if (this.maxTargets != this.score) { - scoreString = `${this.score} rats down, ${(this.maxTargets - this.score)} left`; - } + loseGame() { + console.log("Game Over triggered"); + this.gameOver = true; - else { - scoreString = "Congrats, you got all the rats!"; - this.victoryMusic.play(); - // this.bgMusic.stop(); - this.mouseSound.stop(); - this.resetButton.unhide(); - this.gameOver = true; + // Stop music first + if (this.mouseSound) { + this.mouseSound.stop(); } - this.updateScore(scoreString); - }, + // Clear all existing zombies + if (this.mouseSpawner) { + this.mouseSpawner.reset(); + } + // Show reset button and ensure it's visible + if (this.resetButton) { + console.log("Showing reset button"); + this.resetButton.unhide(); + // Force button to be visible + this.resetButton.object.children[0].getComponent("mesh").active = true; + this.resetButton.object.children[1].getComponent("text").active = true; + this.resetButton.active = true; + } else { + console.log("Reset button not found!"); + } - loseGame() { - this.gameOver = true; - // this.bgMusic.stop(); - this.mouseSound.stop(); - this.resetButton.unhide(); - this.updateScore("You lost! Game Over!"); - this.mouseSpawner.targets = []; - - console.log( "state", this ); + // Update score display + this.updateScore(`Game Over! You survived ${this.currentWave} waves and eliminated ${this.score} zombies!`); }, restart() { - this.mouseSpawner.targets = []; - this.mouseSpawner.reset(); + if (this.mouseSpawner) { + this.mouseSpawner.reset(); + } this.victoryMusic.stop(); - // this.bgMusic.play(); this.gameOver = false; this.shotCount = 0; this.score = 0; - this.targetsSpawned = 0; + this.currentWave = 1; + this.zombiesKilledInWave = 0; + + // Reset max targets for wave 1 + if (this.mouseSpawner) { + this.mouseSpawner.maxTargets = this.getWaveZombieCount(); + } this.updateCounter(); - this.updateScore(`Eliminate all ${this.maxTargets} rats.`); + this.updateScore("Wave 1 - Zombies: 0"); } }; diff --git a/js/joystick-movement.js b/js/joystick-movement.js index 0545535..0d28716 100644 --- a/js/joystick-movement.js +++ b/js/joystick-movement.js @@ -1,116 +1,3 @@ -// import { Component, Type } from "@wonderlandengine/api"; -// import { vec3 } from "gl-matrix"; - -// /** -// * Basic movement with W/A/S/D keys and VR 'leafblower' push on trigger (left hand). -// * Fluid push with acceleration/deceleration, ground and gravity constraints. -// * Retains original cursor-based direction retrieval for leafblower. -// */ -// export class JoystickMovement extends Component { -// static TypeName = "joystick-movement"; -// static Properties = { -// moveSpeed: { type: Type.Float, default: 0.1 }, -// turnAngle: { type: Type.Float, default: 30.0 }, -// headObject: { type: Type.Object }, -// blowForce: { type: Type.Float, default: 2.0 }, -// friction: { type: Type.Float, default: 0.4 }, -// gravity: { type: Type.Float, default: 4.0 }, -// cursorObject: { type: Type.Object } -// } - -// init() { -// this.lastTime = Date.now(); -// this.velocity = vec3.fromValues(0, 0, 0); -// this.gamepadLeft = null; -// this.session = null; -// this.lastBlowTime = 0; -// } - -// start() { -// this.headObject = this.headObject || this.object; -// this.engine.onXRSessionStart.push(this.setupVREvents.bind(this)); -// } - -// update() { -// const now = Date.now(); -// const dt = (now - this.lastTime) / 1000; -// this.lastTime = now; - -// // Movement via left joystick -// if (this.gamepadLeft?.axes) { -// const x = this.gamepadLeft.axes[2]; -// const y = this.gamepadLeft.axes[3]; -// let dir = vec3.fromValues(0, 0, 0); -// let angle = 0; -// if (y < -0.1) dir[2] = -1; -// else if (y > 0.1) dir[2] = 1; -// if (x > 0.1) angle = -this.turnAngle; -// else if (x < -0.1) angle = this.turnAngle; - -// if (Math.abs(y) > Math.abs(x)) { -// vec3.normalize(dir, dir); -// vec3.scale(dir, dir, this.moveSpeed * dt); -// vec3.transformQuat(dir, dir, this.headObject.transformWorld); -// this.headObject.translate(dir); -// } else if (Math.abs(x) > 0.1) { -// this.headObject.rotateAxisAngleDegObject([0, 1, 0], angle * dt); -// } -// } - -// // Gravity -// const pos = this.headObject.getTranslationWorld(); -// if (pos[1] > 0) this.velocity[1] -= this.gravity * dt; - -// // Apply velocity -// const deltaV = vec3.clone(this.velocity); -// vec3.scale(deltaV, deltaV, dt); -// this.headObject.translate(deltaV); - -// // Ground clamp -// const newPos = this.headObject.getTranslationWorld(); -// if (newPos[1] < 0) { -// newPos[1] = 0; -// this.headObject.setTranslationWorld(newPos); -// this.velocity[1] = 0; -// } - -// // Friction horizontal -// this.velocity[0] *= this.friction; -// this.velocity[2] *= this.friction; -// } - -// setupVREvents(session) { -// this.session = session; -// session.addEventListener('end', () => { this.gamepadLeft = null; this.session = null; }); -// for (const src of session.inputSources || []) if (src.handedness === 'left') this.gamepadLeft = src.gamepad; -// session.addEventListener('inputsourceschange', e => { -// for (const src of e.added || []) if (src.handedness === 'left') this.gamepadLeft = src.gamepad; -// }); -// session.addEventListener('selectstart', this.onTriggerDown.bind(this)); -// } - -// onTriggerDown(event) { -// const src = event.inputSource; -// if (src.handedness !== 'left' || !this.gamepadLeft) return; -// const now = Date.now(); -// if (now - this.lastBlowTime < 300) return; - -// // Retrieve original cursor-based forward -// if (!this.cursorObject) return; -// const cursor = this.cursorObject.getComponent('cursor'); -// if (!cursor) return; -// const rayObj = cursor.cursorRayObject || cursor.object; -// const dir = vec3.create(); -// rayObj.getForward(dir); - -// // Add impulse opposite direction -// vec3.normalize(dir, dir); -// vec3.scale(dir, dir, -this.blowForce); -// vec3.add(this.velocity, this.velocity, dir); -// this.lastBlowTime = now; -// } -// } - import { Component, Type } from "@wonderlandengine/api"; import { vec3 } from "gl-matrix"; @@ -125,10 +12,15 @@ export class JoystickMovement extends Component { moveSpeed: { type: Type.Float, default: 0.1 }, // speed for joystick movement turnAngle: { type: Type.Float, default: 30.0 }, // turning speed deg/s headObject: { type: Type.Object }, // object to move/rotate - blowForce: { type: Type.Float, default: 5.0 }, // impulse magnitude (m/s) - friction: { type: Type.Float, default: 0.8 }, // horizontal damping [0-1] + blowForce: { type: Type.Float, default: 1.0 }, // impulse magnitude (m/s) + friction: { type: Type.Float, default: 0.95 }, // horizontal damping [0-1] gravity: { type: Type.Float, default: 9.81 }, // gravity m/s² - cursorObject: { type: Type.Object } // object containing `cursor` component + cursorObject: { type: Type.Object }, // object containing `cursor` component + blowDelay: { type: Type.Float, default: 0.5 }, // delay between blows in seconds + turnSpeedMultiplier: { type: Type.Float, default: 1.0 }, // multiplier for turn speed + maxAirJumps: { type: Type.Int, default: 3 }, // maximum number of air jumps + horizontalForceMultiplier: { type: Type.Float, default: 10.0 }, // multiplier for horizontal force + maxBlowDuration: { type: Type.Float, default: 3.0 } // maximum continuous blow duration in seconds } init() { @@ -137,6 +29,11 @@ export class JoystickMovement extends Component { this.gamepadLeft = null; this.session = null; this.lastBlowTime = 0; + this.continuousBlow = false; + this.isGrounded = true; + this.remainingAirJumps = this.maxAirJumps; + this.blowStartTime = 0; + this.currentBlowDuration = 0; } start() { @@ -149,6 +46,16 @@ export class JoystickMovement extends Component { const dt = (now - this.lastTime) / 1000; // convert ms to seconds this.lastTime = now; + // Check if player is grounded + const worldPos = this.headObject.getTranslationWorld(); + const wasGrounded = this.isGrounded; + this.isGrounded = worldPos[1] <= 0.01; // Consider grounded if very close to ground + + // Reset air jumps when touching ground + if (!wasGrounded && this.isGrounded) { + this.remainingAirJumps = this.maxAirJumps; + } + // Joystick: forward/back movement and rotation if (this.gamepadLeft?.axes) { const x = this.gamepadLeft.axes[2]; @@ -159,8 +66,10 @@ export class JoystickMovement extends Component { // determine desired direction if (y < -0.1) dir[2] = -1; else if (y > 0.1) dir[2] = 1; - if (x > 0.1) angle = -this.turnAngle; - else if (x < -0.1) angle = this.turnAngle; + + // Apply turn speed multiplier to rotation + if (x > 0.1) angle = -this.turnAngle * this.turnSpeedMultiplier; + else if (x < -0.1) angle = this.turnAngle * this.turnSpeedMultiplier; // move or turn if (Math.abs(y) > Math.abs(x)) { @@ -173,9 +82,31 @@ export class JoystickMovement extends Component { } } + // Handle continuous blow + if (this.continuousBlow && this.gamepadLeft?.buttons[0].pressed) { + if (this.blowStartTime === 0) { + this.blowStartTime = now; + this.currentBlowDuration = 0; + } + + this.currentBlowDuration = (now - this.blowStartTime) / 1000; + + if (this.currentBlowDuration <= this.maxBlowDuration && + (this.isGrounded || this.remainingAirJumps > 0)) { + this.applyBlowForce(); + + // Add continuous haptic feedback + if (this.gamepadLeft.hapticActuators) { + this.gamepadLeft.hapticActuators[0].pulse(0.3, 50); + } + } + } else { + this.blowStartTime = 0; + this.currentBlowDuration = 0; + } + // apply gravity to vertical velocity - const worldPos = this.headObject.getTranslationWorld(); - if (worldPos[1] > 0) { + if (!this.isGrounded) { this.velocity[1] -= this.gravity * dt; } @@ -190,11 +121,14 @@ export class JoystickMovement extends Component { newPos[1] = 0; this.headObject.setTranslationWorld(newPos); this.velocity[1] = 0; + this.isGrounded = true; + this.remainingAirJumps = this.maxAirJumps; } - // horizontal friction - this.velocity[0] *= this.friction; - this.velocity[2] *= this.friction; + // horizontal friction - smoother deceleration + const friction = Math.pow(this.friction, dt * 60); // Scale friction with frame rate + this.velocity[0] *= friction; + this.velocity[2] *= friction; } setupVREvents(session) { @@ -209,15 +143,36 @@ export class JoystickMovement extends Component { } }); session.addEventListener('selectstart', this.onTriggerDown.bind(this)); + session.addEventListener('selectend', this.onTriggerUp.bind(this)); } onTriggerDown(event) { const src = event.inputSource; if (src.handedness !== 'left' || !this.gamepadLeft) return; - const now = Date.now(); - if (now - this.lastBlowTime < 300) return; + + this.continuousBlow = true; + this.blowStartTime = Date.now(); + this.currentBlowDuration = 0; + + // Only apply initial blow if grounded or has remaining air jumps + if (this.isGrounded || this.remainingAirJumps > 0) { + this.applyBlowForce(); + if (!this.isGrounded) { + this.remainingAirJumps--; + } + } + } + + onTriggerUp(event) { + const src = event.inputSource; + if (src.handedness !== 'left') return; + + this.continuousBlow = false; + this.blowStartTime = 0; + this.currentBlowDuration = 0; + } - // get cursor forward (including y) for fluid directional impulse + applyBlowForce() { if (!this.cursorObject) return; const cursor = this.cursorObject.getComponent('cursor'); if (!cursor) return; @@ -225,11 +180,25 @@ export class JoystickMovement extends Component { const dir = vec3.create(); rayObj.getForward(dir); + // Normalize the direction vector vec3.normalize(dir, dir); - // add impulse opposite to pointing direction - vec3.scale(dir, dir, -this.blowForce); - vec3.add(this.velocity, this.velocity, dir); - this.lastBlowTime = now; + // Calculate the horizontal component (XZ plane) + const horizontalDir = vec3.fromValues(dir[0], 0, dir[2]); + vec3.normalize(horizontalDir, horizontalDir); + + // Calculate the vertical component + const verticalDir = vec3.fromValues(0, dir[1], 0); + + // Combine horizontal and vertical components with different weights + const finalDir = vec3.create(); + vec3.scale(horizontalDir, horizontalDir, this.horizontalForceMultiplier); // Increased horizontal force + vec3.scale(verticalDir, verticalDir, 1.0); // Keep vertical force as is + vec3.add(finalDir, horizontalDir, verticalDir); + vec3.normalize(finalDir, finalDir); + + // Apply the impulse in the opposite direction + vec3.scale(finalDir, finalDir, -this.blowForce); + vec3.add(this.velocity, this.velocity, finalDir); } } diff --git a/js/mouse-mover.js b/js/mouse-mover.js index 85c148f..6165ec6 100644 --- a/js/mouse-mover.js +++ b/js/mouse-mover.js @@ -20,7 +20,7 @@ import { state } from "./game"; export class MouseMover extends Component { static TypeName = "mouse-mover"; static Properties = { - speed: { type: Type.Float, default: 1.5 }, + baseSpeed: { type: Type.Float, default: 1.5 } }; init() { @@ -31,18 +31,19 @@ export class MouseMover extends Component { if (isNaN(dt)) return; if(state.gameOver || state.paused) return; // skip if game is over or paused + // Get current speed from wave system + const currentSpeed = state.getWaveSpeed(); + // get current and player positions const currentPos = vec3.create(); this.object.getPositionLocal(currentPos); const playerPos = state.getPlayerLocation(); - - - // Se a current position is close enough to the player position, set state.gameOver to true - if (vec3.dist(currentPos, playerPos) < 0.1 && !this.gameOver) { - console.log("Mouse reached player, game over"); + // Check if zombie is close enough to player to trigger game over + if (vec3.dist(currentPos, playerPos) < 0.5) { + console.log("Zombie reached player, game over"); state.loseGame(); - return; // stop moving if close enough + return; } // compute direction vector in XZ plane @@ -54,8 +55,8 @@ export class MouseMover extends Component { if (vec3.len(dir) < 0.01) return; // already at player vec3.normalize(dir, dir); - // move towards player - const moveVec = vec3.scale(vec3.create(), dir, this.speed * dt); + // move towards player with wave-adjusted speed + const moveVec = vec3.scale(vec3.create(), dir, currentSpeed * dt); // update position vec3.add(currentPos, currentPos, moveVec); this.object.setPositionLocal(currentPos); diff --git a/js/mouse-spawner.js b/js/mouse-spawner.js index c208d2e..f426c4a 100644 --- a/js/mouse-spawner.js +++ b/js/mouse-spawner.js @@ -27,10 +27,10 @@ export class MouseSpawner extends Component { targetMesh: { type: Type.Mesh }, targetMaterial: { type: Type.Material }, spawnAnimation: { type: Type.Animation }, - maxTargets: { type: Type.Int, default: 20 }, particles: { type: Type.Object }, - spawnIntervalCeiling: { type: Type.Float, default: 3.0 }, - spawnIntervalFloor: { type: Type.Float, default: 1.0 }, + initialSpawnInterval: { type: Type.Float, default: 2.0 }, + minSpawnInterval: { type: Type.Float, default: 0.5 }, + spawnIntervalDecreaseRate: { type: Type.Float, default: 0.95 }, bulletMesh: { type: Type.Mesh }, bulletMaterial: { type: Type.Material }, }; @@ -42,8 +42,9 @@ export class MouseSpawner extends Component { } time = 0; - spawnInterval = 3; + spawnInterval = 2.0; targets = []; + waveNumber = 1; init() { state.despawnTarget = function (obj) { @@ -59,28 +60,27 @@ export class MouseSpawner extends Component { start() { state.mouseSpawner = this; - // state.mouseSound = this.object.addComponent(HowlerAudioSource, { - // src: "sfx/critter-40645.mp3", - // loop: true, - // volume: 1.0, - // }); - - state.maxTargets = this.maxTargets; - state.updateScore(`Eliminate all ${state.maxTargets} rats.`); - this.spawnInterval = this.spawnIntervalCeiling; + this.spawnInterval = this.initialSpawnInterval; this.spawnTarget(); } update(dt) { + if (state.gameOver || state.paused) return; + this.time += dt; - if (state.targetsSpawned >= this.maxTargets) return; - if (this.time >= this.spawnInterval) { this.time = 0; this.spawnTarget(); - //gradually increases spawn interval until it hits the floor - if (this.spawnInterval > this.spawnIntervalFloor) { - this.spawnInterval *= .8; + + // Decrease spawn interval until it hits the minimum + if (this.spawnInterval > this.minSpawnInterval) { + this.spawnInterval *= this.spawnIntervalDecreaseRate; + } + + // Increase wave number every 10 zombies + if (this.targets.length % 10 === 0) { + this.waveNumber++; + state.updateScore(`Wave ${this.waveNumber} - Zombies: ${this.targets.length}`); } } } @@ -90,6 +90,9 @@ export class MouseSpawner extends Component { this.targets[i].destroy(); } this.targets = []; + this.waveNumber = 1; + this.spawnInterval = this.initialSpawnInterval; + this.time = 0; this.object.resetPosition(); } @@ -120,20 +123,17 @@ export class MouseSpawner extends Component { const trigger = this.engine.scene.addObject(obj); trigger.addComponent("collision", { collider: WL.Collider.Sphere, - extents: [1.5, 1.5, 1.5], // Increased collision extents to match new scale + extents: [1.5, 1.5, 1.5], group: 1 << 0, active: true, }); - trigger.translateLocal([0, 1, 0]); // Adjusted height for new scale + trigger.translateLocal([0, 1, 0]); trigger.addComponent(ScoreTrigger, { particles: this.particles }); obj.setDirty(); - - state.targetsSpawned++; this.targets.push(obj); - // state.mouseSound.play(); } }; diff --git a/js/play-again-button.js b/js/play-again-button.js index 9089d2d..500f91b 100644 --- a/js/play-again-button.js +++ b/js/play-again-button.js @@ -35,33 +35,51 @@ export class PlayAgainButton extends Component { }); state.resetButton = this; - this.hide(); + this.unhide(); } restart() { + console.log("Restarting game"); state.restart(); this.hide(); } hide() { - this.object.children[0].getComponent("mesh").active = false; - this.object.children[1].getComponent("text").active = false; + console.log("Hiding button"); + if (this.object.children[0]) { + const mesh = this.object.children[0].getComponent("mesh"); + if (mesh) mesh.active = false; + } + if (this.object.children[1]) { + const text = this.object.children[1].getComponent("text"); + if (text) text.active = false; + } this.active = false; } unhide() { - this.object.children[0].getComponent("mesh").active = true; - this.object.children[1].getComponent("text").active = true; + console.log("Unhiding button"); + if (this.object.children[0]) { + const mesh = this.object.children[0].getComponent("mesh"); + if (mesh) mesh.active = true; + } + if (this.object.children[1]) { + const text = this.object.children[1].getComponent("text"); + if (text) text.active = true; + } this.active = true; } update(dt) { + if (!this.active) return; + let overlaps = this.collision.queryOverlaps(); for (let i = 0; i < overlaps.length; ++i) { let p = overlaps[i].object.getComponent("bullet-physics"); if (p) { this.restart(); this.soundPop.play(); + break; } } } From 9a69ab97eaf3789f02ea00837c96951cd90df093 Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 26 May 2025 08:49:13 -0300 Subject: [PATCH 03/10] . --- ...6_08-16-16.wlp => 2025-05-26_08-48-16.wlp} | 9 +++--- MouseDefense.wlp | 2 +- js/game.js | 30 ++++++++++++++----- js/mouse-mover.js | 4 +-- 4 files changed, 29 insertions(+), 16 deletions(-) rename .autosave/MouseDefense/{2025-05-26_08-16-16.wlp => 2025-05-26_08-48-16.wlp} (99%) diff --git a/.autosave/MouseDefense/2025-05-26_08-16-16.wlp b/.autosave/MouseDefense/2025-05-26_08-48-16.wlp similarity index 99% rename from .autosave/MouseDefense/2025-05-26_08-16-16.wlp rename to .autosave/MouseDefense/2025-05-26_08-48-16.wlp index 3353da0..1499f52 100644 --- a/.autosave/MouseDefense/2025-05-26_08-16-16.wlp +++ b/.autosave/MouseDefense/2025-05-26_08-48-16.wlp @@ -630,11 +630,12 @@ "cursorObject": "126", "friction": 0.5, "turnAngle": 60.0, - "gravity": 10.0, + "gravity": 20.0, "moveSpeed": 2.0, - "horizontalForceMultiplier": 20.0, - "maxBlowDuration": 1.0, - "turnSpeedMultiplier": 5.0 + "horizontalForceMultiplier": 10.0, + "maxBlowDuration": 0.5, + "turnSpeedMultiplier": 5.0, + "maxAirJumps": 2 } } ], diff --git a/MouseDefense.wlp b/MouseDefense.wlp index 0efa238..86745f0 100644 --- a/MouseDefense.wlp +++ b/MouseDefense.wlp @@ -633,7 +633,7 @@ "gravity": 20.0, "moveSpeed": 2.0, "horizontalForceMultiplier": 10.0, - "maxBlowDuration": 1.0, + "maxBlowDuration": 0.5, "turnSpeedMultiplier": 5.0 } } diff --git a/js/game.js b/js/game.js index ba55348..1453274 100644 --- a/js/game.js +++ b/js/game.js @@ -29,7 +29,7 @@ export const state = { baseZombies: 10, // Starting number of zombies in wave 1 zombiesIncrease: 5, // How many more zombies per wave baseSpeed: 1.5, // Starting speed in wave 1 - speedIncreasePercent: 10 // Speed increase percentage per wave + speedIncreasePercent: 20 // Speed increase percentage per wave (increased to 20%) }, getCurrentWave() { @@ -46,30 +46,44 @@ export const state = { return this.waveProperties.baseSpeed * speedMultiplier; }, + getRemainingZombies() { + return this.getWaveZombieCount() - this.zombiesKilledInWave; + }, + + updateWaveDisplay() { + const remaining = this.getRemainingZombies(); + const nextWaveZombies = this.waveProperties.baseZombies + + (this.currentWave) * this.waveProperties.zombiesIncrease; + this.updateScore( + `Wave ${this.currentWave} - Remaining: ${remaining} zombies - Next Wave: ${nextWaveZombies} zombies` + ); + }, + zombieKilled() { this.zombiesKilledInWave++; - this.incrementScore(); + this.score++; // Check if wave is complete if (this.zombiesKilledInWave >= this.getWaveZombieCount()) { this.nextWave(); + } else { + this.updateWaveDisplay(); } }, nextWave() { this.currentWave++; this.zombiesKilledInWave = 0; - this.updateScore(`Wave ${this.currentWave} - Zombies: ${this.mouseSpawner.targets.length}`); // Update max targets for the new wave if (this.mouseSpawner) { this.mouseSpawner.maxTargets = this.getWaveZombieCount(); } - }, - incrementScore() { - ++this.score; - this.updateScore(`Wave ${this.currentWave} - Zombies: ${this.mouseSpawner.targets.length}`); + // Update display with new wave info + this.updateWaveDisplay(); + + console.log(`Starting Wave ${this.currentWave} - Speed multiplier: ${1 + ((this.currentWave - 1) * this.waveProperties.speedIncreasePercent / 100)}`); }, loseGame() { @@ -120,6 +134,6 @@ export const state = { } this.updateCounter(); - this.updateScore("Wave 1 - Zombies: 0"); + this.updateWaveDisplay(); } }; diff --git a/js/mouse-mover.js b/js/mouse-mover.js index 6165ec6..4b9c556 100644 --- a/js/mouse-mover.js +++ b/js/mouse-mover.js @@ -19,9 +19,7 @@ import { state } from "./game"; */ export class MouseMover extends Component { static TypeName = "mouse-mover"; - static Properties = { - baseSpeed: { type: Type.Float, default: 1.5 } - }; + static Properties = {}; init() { // nothing needed here for direct follow From 765a16f69d938fb1f8e1a44bb98c4c4542ab9135 Mon Sep 17 00:00:00 2001 From: chicogborba Date: Mon, 26 May 2025 16:01:25 -0300 Subject: [PATCH 04/10] deploy --- .gitignore | 1 - MouseDefense.wlp | 3 +- deploy/989.webp | Bin 0 -> 166370 bytes deploy/MyWonderland-bundle.js | 13990 ++++++++++++++++ deploy/MyWonderland-bundle.js.map | 7 + deploy/MyWonderland-textures.bin | Bin 0 -> 1369124 bytes deploy/MyWonderland.bin | Bin 0 -> 1170160 bytes deploy/WonderlandRuntime-LoadingScreen.bin | Bin 0 -> 205560 bytes deploy/WonderlandRuntime-threads.js | 21 + deploy/WonderlandRuntime-threads.wasm | Bin 0 -> 1774916 bytes deploy/WonderlandRuntime.js | 9 + deploy/WonderlandRuntime.wasm | Bin 0 -> 1745801 bytes deploy/index.html | 132 + deploy/music/happy-funny-kids-111912.mp3 | Bin 0 -> 2497724 bytes deploy/music/level-win-6416.mp3 | Bin 0 -> 47664 bytes .../9mm-pistol-shoot-short-reverb-7152.mp3 | Bin 0 -> 47647 bytes deploy/sfx/click.wav | Bin 0 -> 11254 bytes deploy/sfx/cows-short.mp3 | Bin 0 -> 408587 bytes deploy/sfx/critter-40645.mp3 | Bin 0 -> 112320 bytes deploy/sfx/ducks-short.mp3 | Bin 0 -> 1070027 bytes deploy/sfx/high-pitched-aha-103125.mp3 | Bin 0 -> 13374 bytes ...orts_breathing_hackney_city_farm-73959.mp3 | Bin 0 -> 450720 bytes deploy/sfx/pop-94319.mp3 | Bin 0 -> 12480 bytes deploy/sfx/punch-boxing-02wav-14897.mp3 | Bin 0 -> 26880 bytes deploy/sfx/sheep-short.mp3 | Bin 0 -> 448139 bytes deploy/sfx/unclick.wav | Bin 0 -> 8106 bytes js/game.js | 33 +- 27 files changed, 14183 insertions(+), 13 deletions(-) create mode 100644 deploy/989.webp create mode 100644 deploy/MyWonderland-bundle.js create mode 100644 deploy/MyWonderland-bundle.js.map create mode 100644 deploy/MyWonderland-textures.bin create mode 100644 deploy/MyWonderland.bin create mode 100644 deploy/WonderlandRuntime-LoadingScreen.bin create mode 100644 deploy/WonderlandRuntime-threads.js create mode 100644 deploy/WonderlandRuntime-threads.wasm create mode 100644 deploy/WonderlandRuntime.js create mode 100644 deploy/WonderlandRuntime.wasm create mode 100644 deploy/index.html create mode 100644 deploy/music/happy-funny-kids-111912.mp3 create mode 100644 deploy/music/level-win-6416.mp3 create mode 100644 deploy/sfx/9mm-pistol-shoot-short-reverb-7152.mp3 create mode 100644 deploy/sfx/click.wav create mode 100644 deploy/sfx/cows-short.mp3 create mode 100644 deploy/sfx/critter-40645.mp3 create mode 100644 deploy/sfx/ducks-short.mp3 create mode 100644 deploy/sfx/high-pitched-aha-103125.mp3 create mode 100644 deploy/sfx/pig_grunts_snorts_breathing_hackney_city_farm-73959.mp3 create mode 100644 deploy/sfx/pop-94319.mp3 create mode 100644 deploy/sfx/punch-boxing-02wav-14897.mp3 create mode 100644 deploy/sfx/sheep-short.mp3 create mode 100644 deploy/sfx/unclick.wav diff --git a/.gitignore b/.gitignore index 545e3c7..c715d3f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # Wonderland cache/ -deploy/ node_modules/ ssl/ .editor/ diff --git a/MouseDefense.wlp b/MouseDefense.wlp index 86745f0..1499f52 100644 --- a/MouseDefense.wlp +++ b/MouseDefense.wlp @@ -634,7 +634,8 @@ "moveSpeed": 2.0, "horizontalForceMultiplier": 10.0, "maxBlowDuration": 0.5, - "turnSpeedMultiplier": 5.0 + "turnSpeedMultiplier": 5.0, + "maxAirJumps": 2 } } ], diff --git a/deploy/989.webp b/deploy/989.webp new file mode 100644 index 0000000000000000000000000000000000000000..a16688cc17a1054be3c6ae4e85bcfc125f855243 GIT binary patch literal 166370 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 &i}m@* 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 literal 0 HcmV?d00001 diff --git a/deploy/MyWonderland-bundle.js b/deploy/MyWonderland-bundle.js new file mode 100644 index 0000000..71a398b --- /dev/null +++ b/deploy/MyWonderland-bundle.js @@ -0,0 +1,13990 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +var __accessCheck = (obj, member, msg) => { + if (!member.has(obj)) + throw TypeError("Cannot " + msg); +}; +var __privateGet = (obj, member, getter) => { + __accessCheck(obj, member, "read from private field"); + return getter ? getter.call(obj) : member.get(obj); +}; +var __privateAdd = (obj, member, value) => { + if (member.has(obj)) + throw TypeError("Cannot add the same private member more than once"); + member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +}; +var __privateMethod = (obj, member, method) => { + __accessCheck(obj, member, "access private method"); + return method; +}; + +// node_modules/howler/dist/howler.js +var require_howler = __commonJS({ + "node_modules/howler/dist/howler.js"(exports) { + (function() { + "use strict"; + var HowlerGlobal2 = function() { + this.init(); + }; + HowlerGlobal2.prototype = { + /** + * Initialize the global Howler object. + * @return {Howler} + */ + init: function() { + var self2 = this || Howler2; + self2._counter = 1e3; + self2._html5AudioPool = []; + self2.html5PoolSize = 10; + self2._codecs = {}; + self2._howls = []; + self2._muted = false; + self2._volume = 1; + self2._canPlayEvent = "canplaythrough"; + self2._navigator = typeof window !== "undefined" && window.navigator ? window.navigator : null; + self2.masterGain = null; + self2.noAudio = false; + self2.usingWebAudio = true; + self2.autoSuspend = true; + self2.ctx = null; + self2.autoUnlock = true; + self2._setup(); + return self2; + }, + /** + * Get/set the global volume for all sounds. + * @param {Float} vol Volume from 0.0 to 1.0. + * @return {Howler/Float} Returns self or current volume. + */ + volume: function(vol) { + var self2 = this || Howler2; + vol = parseFloat(vol); + if (!self2.ctx) { + setupAudioContext(); + } + if (typeof vol !== "undefined" && vol >= 0 && vol <= 1) { + self2._volume = vol; + if (self2._muted) { + return self2; + } + if (self2.usingWebAudio) { + self2.masterGain.gain.setValueAtTime(vol, Howler2.ctx.currentTime); + } + for (var i = 0; i < self2._howls.length; i++) { + if (!self2._howls[i]._webAudio) { + var ids = self2._howls[i]._getSoundIds(); + for (var j = 0; j < ids.length; j++) { + var sound = self2._howls[i]._soundById(ids[j]); + if (sound && sound._node) { + sound._node.volume = sound._volume * vol; + } + } + } + } + return self2; + } + return self2._volume; + }, + /** + * Handle muting and unmuting globally. + * @param {Boolean} muted Is muted or not. + */ + mute: function(muted) { + var self2 = this || Howler2; + if (!self2.ctx) { + setupAudioContext(); + } + self2._muted = muted; + if (self2.usingWebAudio) { + self2.masterGain.gain.setValueAtTime(muted ? 0 : self2._volume, Howler2.ctx.currentTime); + } + for (var i = 0; i < self2._howls.length; i++) { + if (!self2._howls[i]._webAudio) { + var ids = self2._howls[i]._getSoundIds(); + for (var j = 0; j < ids.length; j++) { + var sound = self2._howls[i]._soundById(ids[j]); + if (sound && sound._node) { + sound._node.muted = muted ? true : sound._muted; + } + } + } + } + return self2; + }, + /** + * Handle stopping all sounds globally. + */ + stop: function() { + var self2 = this || Howler2; + for (var i = 0; i < self2._howls.length; i++) { + self2._howls[i].stop(); + } + return self2; + }, + /** + * Unload and destroy all currently loaded Howl objects. + * @return {Howler} + */ + unload: function() { + var self2 = this || Howler2; + for (var i = self2._howls.length - 1; i >= 0; i--) { + self2._howls[i].unload(); + } + if (self2.usingWebAudio && self2.ctx && typeof self2.ctx.close !== "undefined") { + self2.ctx.close(); + self2.ctx = null; + setupAudioContext(); + } + return self2; + }, + /** + * Check for codec support of specific extension. + * @param {String} ext Audio file extention. + * @return {Boolean} + */ + codecs: function(ext) { + return (this || Howler2)._codecs[ext.replace(/^x-/, "")]; + }, + /** + * Setup various state values for global tracking. + * @return {Howler} + */ + _setup: function() { + var self2 = this || Howler2; + self2.state = self2.ctx ? self2.ctx.state || "suspended" : "suspended"; + self2._autoSuspend(); + if (!self2.usingWebAudio) { + if (typeof Audio !== "undefined") { + try { + var test = new Audio(); + if (typeof test.oncanplaythrough === "undefined") { + self2._canPlayEvent = "canplay"; + } + } catch (e) { + self2.noAudio = true; + } + } else { + self2.noAudio = true; + } + } + try { + var test = new Audio(); + if (test.muted) { + self2.noAudio = true; + } + } catch (e) { + } + if (!self2.noAudio) { + self2._setupCodecs(); + } + return self2; + }, + /** + * Check for browser support for various codecs and cache the results. + * @return {Howler} + */ + _setupCodecs: function() { + var self2 = this || Howler2; + var audioTest = null; + try { + audioTest = typeof Audio !== "undefined" ? new Audio() : null; + } catch (err) { + return self2; + } + if (!audioTest || typeof audioTest.canPlayType !== "function") { + return self2; + } + var mpegTest = audioTest.canPlayType("audio/mpeg;").replace(/^no$/, ""); + var ua = self2._navigator ? self2._navigator.userAgent : ""; + var checkOpera = ua.match(/OPR\/([0-6].)/g); + var isOldOpera = checkOpera && parseInt(checkOpera[0].split("/")[1], 10) < 33; + var checkSafari = ua.indexOf("Safari") !== -1 && ua.indexOf("Chrome") === -1; + var safariVersion = ua.match(/Version\/(.*?) /); + var isOldSafari = checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15; + self2._codecs = { + mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType("audio/mp3;").replace(/^no$/, ""))), + mpeg: !!mpegTest, + opus: !!audioTest.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""), + ogg: !!audioTest.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), + oga: !!audioTest.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), + wav: !!(audioTest.canPlayType('audio/wav; codecs="1"') || audioTest.canPlayType("audio/wav")).replace(/^no$/, ""), + aac: !!audioTest.canPlayType("audio/aac;").replace(/^no$/, ""), + caf: !!audioTest.canPlayType("audio/x-caf;").replace(/^no$/, ""), + m4a: !!(audioTest.canPlayType("audio/x-m4a;") || audioTest.canPlayType("audio/m4a;") || audioTest.canPlayType("audio/aac;")).replace(/^no$/, ""), + m4b: !!(audioTest.canPlayType("audio/x-m4b;") || audioTest.canPlayType("audio/m4b;") || audioTest.canPlayType("audio/aac;")).replace(/^no$/, ""), + mp4: !!(audioTest.canPlayType("audio/x-mp4;") || audioTest.canPlayType("audio/mp4;") || audioTest.canPlayType("audio/aac;")).replace(/^no$/, ""), + weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, "")), + webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/, "")), + dolby: !!audioTest.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/, ""), + flac: !!(audioTest.canPlayType("audio/x-flac;") || audioTest.canPlayType("audio/flac;")).replace(/^no$/, "") + }; + return self2; + }, + /** + * Some browsers/devices will only allow audio to be played after a user interaction. + * Attempt to automatically unlock audio on the first user interaction. + * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/ + * @return {Howler} + */ + _unlockAudio: function() { + var self2 = this || Howler2; + if (self2._audioUnlocked || !self2.ctx) { + return; + } + self2._audioUnlocked = false; + self2.autoUnlock = false; + if (!self2._mobileUnloaded && self2.ctx.sampleRate !== 44100) { + self2._mobileUnloaded = true; + self2.unload(); + } + self2._scratchBuffer = self2.ctx.createBuffer(1, 1, 22050); + var unlock = function(e) { + while (self2._html5AudioPool.length < self2.html5PoolSize) { + try { + var audioNode = new Audio(); + audioNode._unlocked = true; + self2._releaseHtml5Audio(audioNode); + } catch (e2) { + self2.noAudio = true; + break; + } + } + for (var i = 0; i < self2._howls.length; i++) { + if (!self2._howls[i]._webAudio) { + var ids = self2._howls[i]._getSoundIds(); + for (var j = 0; j < ids.length; j++) { + var sound = self2._howls[i]._soundById(ids[j]); + if (sound && sound._node && !sound._node._unlocked) { + sound._node._unlocked = true; + sound._node.load(); + } + } + } + } + self2._autoResume(); + var source = self2.ctx.createBufferSource(); + source.buffer = self2._scratchBuffer; + source.connect(self2.ctx.destination); + if (typeof source.start === "undefined") { + source.noteOn(0); + } else { + source.start(0); + } + if (typeof self2.ctx.resume === "function") { + self2.ctx.resume(); + } + source.onended = function() { + source.disconnect(0); + self2._audioUnlocked = true; + document.removeEventListener("touchstart", unlock, true); + document.removeEventListener("touchend", unlock, true); + document.removeEventListener("click", unlock, true); + document.removeEventListener("keydown", unlock, true); + for (var i2 = 0; i2 < self2._howls.length; i2++) { + self2._howls[i2]._emit("unlock"); + } + }; + }; + document.addEventListener("touchstart", unlock, true); + document.addEventListener("touchend", unlock, true); + document.addEventListener("click", unlock, true); + document.addEventListener("keydown", unlock, true); + return self2; + }, + /** + * Get an unlocked HTML5 Audio object from the pool. If none are left, + * return a new Audio object and throw a warning. + * @return {Audio} HTML5 Audio object. + */ + _obtainHtml5Audio: function() { + var self2 = this || Howler2; + if (self2._html5AudioPool.length) { + return self2._html5AudioPool.pop(); + } + var testPlay = new Audio().play(); + if (testPlay && typeof Promise !== "undefined" && (testPlay instanceof Promise || typeof testPlay.then === "function")) { + testPlay.catch(function() { + console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object."); + }); + } + return new Audio(); + }, + /** + * Return an activated HTML5 Audio object to the pool. + * @return {Howler} + */ + _releaseHtml5Audio: function(audio) { + var self2 = this || Howler2; + if (audio._unlocked) { + self2._html5AudioPool.push(audio); + } + return self2; + }, + /** + * Automatically suspend the Web Audio AudioContext after no sound has played for 30 seconds. + * This saves processing/energy and fixes various browser-specific bugs with audio getting stuck. + * @return {Howler} + */ + _autoSuspend: function() { + var self2 = this; + if (!self2.autoSuspend || !self2.ctx || typeof self2.ctx.suspend === "undefined" || !Howler2.usingWebAudio) { + return; + } + for (var i = 0; i < self2._howls.length; i++) { + if (self2._howls[i]._webAudio) { + for (var j = 0; j < self2._howls[i]._sounds.length; j++) { + if (!self2._howls[i]._sounds[j]._paused) { + return self2; + } + } + } + } + if (self2._suspendTimer) { + clearTimeout(self2._suspendTimer); + } + self2._suspendTimer = setTimeout(function() { + if (!self2.autoSuspend) { + return; + } + self2._suspendTimer = null; + self2.state = "suspending"; + var handleSuspension = function() { + self2.state = "suspended"; + if (self2._resumeAfterSuspend) { + delete self2._resumeAfterSuspend; + self2._autoResume(); + } + }; + self2.ctx.suspend().then(handleSuspension, handleSuspension); + }, 3e4); + return self2; + }, + /** + * Automatically resume the Web Audio AudioContext when a new sound is played. + * @return {Howler} + */ + _autoResume: function() { + var self2 = this; + if (!self2.ctx || typeof self2.ctx.resume === "undefined" || !Howler2.usingWebAudio) { + return; + } + if (self2.state === "running" && self2.ctx.state !== "interrupted" && self2._suspendTimer) { + clearTimeout(self2._suspendTimer); + self2._suspendTimer = null; + } else if (self2.state === "suspended" || self2.state === "running" && self2.ctx.state === "interrupted") { + self2.ctx.resume().then(function() { + self2.state = "running"; + for (var i = 0; i < self2._howls.length; i++) { + self2._howls[i]._emit("resume"); + } + }); + if (self2._suspendTimer) { + clearTimeout(self2._suspendTimer); + self2._suspendTimer = null; + } + } else if (self2.state === "suspending") { + self2._resumeAfterSuspend = true; + } + return self2; + } + }; + var Howler2 = new HowlerGlobal2(); + var Howl2 = function(o) { + var self2 = this; + if (!o.src || o.src.length === 0) { + console.error("An array of source files must be passed with any new Howl."); + return; + } + self2.init(o); + }; + Howl2.prototype = { + /** + * Initialize a new Howl group object. + * @param {Object} o Passed in properties for this group. + * @return {Howl} + */ + init: function(o) { + var self2 = this; + if (!Howler2.ctx) { + setupAudioContext(); + } + self2._autoplay = o.autoplay || false; + self2._format = typeof o.format !== "string" ? o.format : [o.format]; + self2._html5 = o.html5 || false; + self2._muted = o.mute || false; + self2._loop = o.loop || false; + self2._pool = o.pool || 5; + self2._preload = typeof o.preload === "boolean" || o.preload === "metadata" ? o.preload : true; + self2._rate = o.rate || 1; + self2._sprite = o.sprite || {}; + self2._src = typeof o.src !== "string" ? o.src : [o.src]; + self2._volume = o.volume !== void 0 ? o.volume : 1; + self2._xhr = { + method: o.xhr && o.xhr.method ? o.xhr.method : "GET", + headers: o.xhr && o.xhr.headers ? o.xhr.headers : null, + withCredentials: o.xhr && o.xhr.withCredentials ? o.xhr.withCredentials : false + }; + self2._duration = 0; + self2._state = "unloaded"; + self2._sounds = []; + self2._endTimers = {}; + self2._queue = []; + self2._playLock = false; + self2._onend = o.onend ? [{ fn: o.onend }] : []; + self2._onfade = o.onfade ? [{ fn: o.onfade }] : []; + self2._onload = o.onload ? [{ fn: o.onload }] : []; + self2._onloaderror = o.onloaderror ? [{ fn: o.onloaderror }] : []; + self2._onplayerror = o.onplayerror ? [{ fn: o.onplayerror }] : []; + self2._onpause = o.onpause ? [{ fn: o.onpause }] : []; + self2._onplay = o.onplay ? [{ fn: o.onplay }] : []; + self2._onstop = o.onstop ? [{ fn: o.onstop }] : []; + self2._onmute = o.onmute ? [{ fn: o.onmute }] : []; + self2._onvolume = o.onvolume ? [{ fn: o.onvolume }] : []; + self2._onrate = o.onrate ? [{ fn: o.onrate }] : []; + self2._onseek = o.onseek ? [{ fn: o.onseek }] : []; + self2._onunlock = o.onunlock ? [{ fn: o.onunlock }] : []; + self2._onresume = []; + self2._webAudio = Howler2.usingWebAudio && !self2._html5; + if (typeof Howler2.ctx !== "undefined" && Howler2.ctx && Howler2.autoUnlock) { + Howler2._unlockAudio(); + } + Howler2._howls.push(self2); + if (self2._autoplay) { + self2._queue.push({ + event: "play", + action: function() { + self2.play(); + } + }); + } + if (self2._preload && self2._preload !== "none") { + self2.load(); + } + return self2; + }, + /** + * Load the audio file. + * @return {Howler} + */ + load: function() { + var self2 = this; + var url = null; + if (Howler2.noAudio) { + self2._emit("loaderror", null, "No audio support."); + return; + } + if (typeof self2._src === "string") { + self2._src = [self2._src]; + } + for (var i = 0; i < self2._src.length; i++) { + var ext, str5; + if (self2._format && self2._format[i]) { + ext = self2._format[i]; + } else { + str5 = self2._src[i]; + if (typeof str5 !== "string") { + self2._emit("loaderror", null, "Non-string found in selected audio sources - ignoring."); + continue; + } + ext = /^data:audio\/([^;,]+);/i.exec(str5); + if (!ext) { + ext = /\.([^.]+)$/.exec(str5.split("?", 1)[0]); + } + if (ext) { + ext = ext[1].toLowerCase(); + } + } + if (!ext) { + console.warn('No file extension was found. Consider using the "format" property or specify an extension.'); + } + if (ext && Howler2.codecs(ext)) { + url = self2._src[i]; + break; + } + } + if (!url) { + self2._emit("loaderror", null, "No codec support for selected audio sources."); + return; + } + self2._src = url; + self2._state = "loading"; + if (window.location.protocol === "https:" && url.slice(0, 5) === "http:") { + self2._html5 = true; + self2._webAudio = false; + } + new Sound2(self2); + if (self2._webAudio) { + loadBuffer(self2); + } + return self2; + }, + /** + * Play a sound or resume previous playback. + * @param {String/Number} sprite Sprite name for sprite playback or sound id to continue previous. + * @param {Boolean} internal Internal Use: true prevents event firing. + * @return {Number} Sound ID. + */ + play: function(sprite, internal) { + var self2 = this; + var id = null; + if (typeof sprite === "number") { + id = sprite; + sprite = null; + } else if (typeof sprite === "string" && self2._state === "loaded" && !self2._sprite[sprite]) { + return null; + } else if (typeof sprite === "undefined") { + sprite = "__default"; + if (!self2._playLock) { + var num = 0; + for (var i = 0; i < self2._sounds.length; i++) { + if (self2._sounds[i]._paused && !self2._sounds[i]._ended) { + num++; + id = self2._sounds[i]._id; + } + } + if (num === 1) { + sprite = null; + } else { + id = null; + } + } + } + var sound = id ? self2._soundById(id) : self2._inactiveSound(); + if (!sound) { + return null; + } + if (id && !sprite) { + sprite = sound._sprite || "__default"; + } + if (self2._state !== "loaded") { + sound._sprite = sprite; + sound._ended = false; + var soundId = sound._id; + self2._queue.push({ + event: "play", + action: function() { + self2.play(soundId); + } + }); + return soundId; + } + if (id && !sound._paused) { + if (!internal) { + self2._loadQueue("play"); + } + return sound._id; + } + if (self2._webAudio) { + Howler2._autoResume(); + } + var seek = Math.max(0, sound._seek > 0 ? sound._seek : self2._sprite[sprite][0] / 1e3); + var duration = Math.max(0, (self2._sprite[sprite][0] + self2._sprite[sprite][1]) / 1e3 - seek); + var timeout2 = duration * 1e3 / Math.abs(sound._rate); + var start = self2._sprite[sprite][0] / 1e3; + var stop = (self2._sprite[sprite][0] + self2._sprite[sprite][1]) / 1e3; + sound._sprite = sprite; + sound._ended = false; + var setParams = function() { + sound._paused = false; + sound._seek = seek; + sound._start = start; + sound._stop = stop; + sound._loop = !!(sound._loop || self2._sprite[sprite][2]); + }; + if (seek >= stop) { + self2._ended(sound); + return; + } + var node = sound._node; + if (self2._webAudio) { + var playWebAudio = function() { + self2._playLock = false; + setParams(); + self2._refreshBuffer(sound); + var vol = sound._muted || self2._muted ? 0 : sound._volume; + node.gain.setValueAtTime(vol, Howler2.ctx.currentTime); + sound._playStart = Howler2.ctx.currentTime; + if (typeof node.bufferSource.start === "undefined") { + sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration); + } else { + sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration); + } + if (timeout2 !== Infinity) { + self2._endTimers[sound._id] = setTimeout(self2._ended.bind(self2, sound), timeout2); + } + if (!internal) { + setTimeout(function() { + self2._emit("play", sound._id); + self2._loadQueue(); + }, 0); + } + }; + if (Howler2.state === "running" && Howler2.ctx.state !== "interrupted") { + playWebAudio(); + } else { + self2._playLock = true; + self2.once("resume", playWebAudio); + self2._clearTimer(sound._id); + } + } else { + var playHtml5 = function() { + node.currentTime = seek; + node.muted = sound._muted || self2._muted || Howler2._muted || node.muted; + node.volume = sound._volume * Howler2.volume(); + node.playbackRate = sound._rate; + try { + var play = node.play(); + if (play && typeof Promise !== "undefined" && (play instanceof Promise || typeof play.then === "function")) { + self2._playLock = true; + setParams(); + play.then(function() { + self2._playLock = false; + node._unlocked = true; + if (!internal) { + self2._emit("play", sound._id); + } else { + self2._loadQueue(); + } + }).catch(function() { + self2._playLock = false; + self2._emit("playerror", sound._id, "Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."); + sound._ended = true; + sound._paused = true; + }); + } else if (!internal) { + self2._playLock = false; + setParams(); + self2._emit("play", sound._id); + } + node.playbackRate = sound._rate; + if (node.paused) { + self2._emit("playerror", sound._id, "Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."); + return; + } + if (sprite !== "__default" || sound._loop) { + self2._endTimers[sound._id] = setTimeout(self2._ended.bind(self2, sound), timeout2); + } else { + self2._endTimers[sound._id] = function() { + self2._ended(sound); + node.removeEventListener("ended", self2._endTimers[sound._id], false); + }; + node.addEventListener("ended", self2._endTimers[sound._id], false); + } + } catch (err) { + self2._emit("playerror", sound._id, err); + } + }; + if (node.src === "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA") { + node.src = self2._src; + node.load(); + } + var loadedNoReadyState = window && window.ejecta || !node.readyState && Howler2._navigator.isCocoonJS; + if (node.readyState >= 3 || loadedNoReadyState) { + playHtml5(); + } else { + self2._playLock = true; + self2._state = "loading"; + var listener = function() { + self2._state = "loaded"; + playHtml5(); + node.removeEventListener(Howler2._canPlayEvent, listener, false); + }; + node.addEventListener(Howler2._canPlayEvent, listener, false); + self2._clearTimer(sound._id); + } + } + return sound._id; + }, + /** + * Pause playback and save current position. + * @param {Number} id The sound ID (empty to pause all in group). + * @return {Howl} + */ + pause: function(id) { + var self2 = this; + if (self2._state !== "loaded" || self2._playLock) { + self2._queue.push({ + event: "pause", + action: function() { + self2.pause(id); + } + }); + return self2; + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + self2._clearTimer(ids[i]); + var sound = self2._soundById(ids[i]); + if (sound && !sound._paused) { + sound._seek = self2.seek(ids[i]); + sound._rateSeek = 0; + sound._paused = true; + self2._stopFade(ids[i]); + if (sound._node) { + if (self2._webAudio) { + if (!sound._node.bufferSource) { + continue; + } + if (typeof sound._node.bufferSource.stop === "undefined") { + sound._node.bufferSource.noteOff(0); + } else { + sound._node.bufferSource.stop(0); + } + self2._cleanBuffer(sound._node); + } else if (!isNaN(sound._node.duration) || sound._node.duration === Infinity) { + sound._node.pause(); + } + } + } + if (!arguments[1]) { + self2._emit("pause", sound ? sound._id : null); + } + } + return self2; + }, + /** + * Stop playback and reset to start. + * @param {Number} id The sound ID (empty to stop all in group). + * @param {Boolean} internal Internal Use: true prevents event firing. + * @return {Howl} + */ + stop: function(id, internal) { + var self2 = this; + if (self2._state !== "loaded" || self2._playLock) { + self2._queue.push({ + event: "stop", + action: function() { + self2.stop(id); + } + }); + return self2; + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + self2._clearTimer(ids[i]); + var sound = self2._soundById(ids[i]); + if (sound) { + sound._seek = sound._start || 0; + sound._rateSeek = 0; + sound._paused = true; + sound._ended = true; + self2._stopFade(ids[i]); + if (sound._node) { + if (self2._webAudio) { + if (sound._node.bufferSource) { + if (typeof sound._node.bufferSource.stop === "undefined") { + sound._node.bufferSource.noteOff(0); + } else { + sound._node.bufferSource.stop(0); + } + self2._cleanBuffer(sound._node); + } + } else if (!isNaN(sound._node.duration) || sound._node.duration === Infinity) { + sound._node.currentTime = sound._start || 0; + sound._node.pause(); + if (sound._node.duration === Infinity) { + self2._clearSound(sound._node); + } + } + } + if (!internal) { + self2._emit("stop", sound._id); + } + } + } + return self2; + }, + /** + * Mute/unmute a single sound or all sounds in this Howl group. + * @param {Boolean} muted Set to true to mute and false to unmute. + * @param {Number} id The sound ID to update (omit to mute/unmute all). + * @return {Howl} + */ + mute: function(muted, id) { + var self2 = this; + if (self2._state !== "loaded" || self2._playLock) { + self2._queue.push({ + event: "mute", + action: function() { + self2.mute(muted, id); + } + }); + return self2; + } + if (typeof id === "undefined") { + if (typeof muted === "boolean") { + self2._muted = muted; + } else { + return self2._muted; + } + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + var sound = self2._soundById(ids[i]); + if (sound) { + sound._muted = muted; + if (sound._interval) { + self2._stopFade(sound._id); + } + if (self2._webAudio && sound._node) { + sound._node.gain.setValueAtTime(muted ? 0 : sound._volume, Howler2.ctx.currentTime); + } else if (sound._node) { + sound._node.muted = Howler2._muted ? true : muted; + } + self2._emit("mute", sound._id); + } + } + return self2; + }, + /** + * Get/set the volume of this sound or of the Howl group. This method can optionally take 0, 1 or 2 arguments. + * volume() -> Returns the group's volume value. + * volume(id) -> Returns the sound id's current volume. + * volume(vol) -> Sets the volume of all sounds in this Howl group. + * volume(vol, id) -> Sets the volume of passed sound id. + * @return {Howl/Number} Returns self or current volume. + */ + volume: function() { + var self2 = this; + var args = arguments; + var vol, id; + if (args.length === 0) { + return self2._volume; + } else if (args.length === 1 || args.length === 2 && typeof args[1] === "undefined") { + var ids = self2._getSoundIds(); + var index = ids.indexOf(args[0]); + if (index >= 0) { + id = parseInt(args[0], 10); + } else { + vol = parseFloat(args[0]); + } + } else if (args.length >= 2) { + vol = parseFloat(args[0]); + id = parseInt(args[1], 10); + } + var sound; + if (typeof vol !== "undefined" && vol >= 0 && vol <= 1) { + if (self2._state !== "loaded" || self2._playLock) { + self2._queue.push({ + event: "volume", + action: function() { + self2.volume.apply(self2, args); + } + }); + return self2; + } + if (typeof id === "undefined") { + self2._volume = vol; + } + id = self2._getSoundIds(id); + for (var i = 0; i < id.length; i++) { + sound = self2._soundById(id[i]); + if (sound) { + sound._volume = vol; + if (!args[2]) { + self2._stopFade(id[i]); + } + if (self2._webAudio && sound._node && !sound._muted) { + sound._node.gain.setValueAtTime(vol, Howler2.ctx.currentTime); + } else if (sound._node && !sound._muted) { + sound._node.volume = vol * Howler2.volume(); + } + self2._emit("volume", sound._id); + } + } + } else { + sound = id ? self2._soundById(id) : self2._sounds[0]; + return sound ? sound._volume : 0; + } + return self2; + }, + /** + * Fade a currently playing sound between two volumes (if no id is passed, all sounds will fade). + * @param {Number} from The value to fade from (0.0 to 1.0). + * @param {Number} to The volume to fade to (0.0 to 1.0). + * @param {Number} len Time in milliseconds to fade. + * @param {Number} id The sound id (omit to fade all sounds). + * @return {Howl} + */ + fade: function(from, to, len4, id) { + var self2 = this; + if (self2._state !== "loaded" || self2._playLock) { + self2._queue.push({ + event: "fade", + action: function() { + self2.fade(from, to, len4, id); + } + }); + return self2; + } + from = Math.min(Math.max(0, parseFloat(from)), 1); + to = Math.min(Math.max(0, parseFloat(to)), 1); + len4 = parseFloat(len4); + self2.volume(from, id); + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + var sound = self2._soundById(ids[i]); + if (sound) { + if (!id) { + self2._stopFade(ids[i]); + } + if (self2._webAudio && !sound._muted) { + var currentTime = Howler2.ctx.currentTime; + var end = currentTime + len4 / 1e3; + sound._volume = from; + sound._node.gain.setValueAtTime(from, currentTime); + sound._node.gain.linearRampToValueAtTime(to, end); + } + self2._startFadeInterval(sound, from, to, len4, ids[i], typeof id === "undefined"); + } + } + return self2; + }, + /** + * Starts the internal interval to fade a sound. + * @param {Object} sound Reference to sound to fade. + * @param {Number} from The value to fade from (0.0 to 1.0). + * @param {Number} to The volume to fade to (0.0 to 1.0). + * @param {Number} len Time in milliseconds to fade. + * @param {Number} id The sound id to fade. + * @param {Boolean} isGroup If true, set the volume on the group. + */ + _startFadeInterval: function(sound, from, to, len4, id, isGroup) { + var self2 = this; + var vol = from; + var diff = to - from; + var steps = Math.abs(diff / 0.01); + var stepLen = Math.max(4, steps > 0 ? len4 / steps : len4); + var lastTick = Date.now(); + sound._fadeTo = to; + sound._interval = setInterval(function() { + var tick = (Date.now() - lastTick) / len4; + lastTick = Date.now(); + vol += diff * tick; + vol = Math.round(vol * 100) / 100; + if (diff < 0) { + vol = Math.max(to, vol); + } else { + vol = Math.min(to, vol); + } + if (self2._webAudio) { + sound._volume = vol; + } else { + self2.volume(vol, sound._id, true); + } + if (isGroup) { + self2._volume = vol; + } + if (to < from && vol <= to || to > from && vol >= to) { + clearInterval(sound._interval); + sound._interval = null; + sound._fadeTo = null; + self2.volume(to, sound._id); + self2._emit("fade", sound._id); + } + }, stepLen); + }, + /** + * Internal method that stops the currently playing fade when + * a new fade starts, volume is changed or the sound is stopped. + * @param {Number} id The sound id. + * @return {Howl} + */ + _stopFade: function(id) { + var self2 = this; + var sound = self2._soundById(id); + if (sound && sound._interval) { + if (self2._webAudio) { + sound._node.gain.cancelScheduledValues(Howler2.ctx.currentTime); + } + clearInterval(sound._interval); + sound._interval = null; + self2.volume(sound._fadeTo, id); + sound._fadeTo = null; + self2._emit("fade", id); + } + return self2; + }, + /** + * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments. + * loop() -> Returns the group's loop value. + * loop(id) -> Returns the sound id's loop value. + * loop(loop) -> Sets the loop value for all sounds in this Howl group. + * loop(loop, id) -> Sets the loop value of passed sound id. + * @return {Howl/Boolean} Returns self or current loop value. + */ + loop: function() { + var self2 = this; + var args = arguments; + var loop, id, sound; + if (args.length === 0) { + return self2._loop; + } else if (args.length === 1) { + if (typeof args[0] === "boolean") { + loop = args[0]; + self2._loop = loop; + } else { + sound = self2._soundById(parseInt(args[0], 10)); + return sound ? sound._loop : false; + } + } else if (args.length === 2) { + loop = args[0]; + id = parseInt(args[1], 10); + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + sound = self2._soundById(ids[i]); + if (sound) { + sound._loop = loop; + if (self2._webAudio && sound._node && sound._node.bufferSource) { + sound._node.bufferSource.loop = loop; + if (loop) { + sound._node.bufferSource.loopStart = sound._start || 0; + sound._node.bufferSource.loopEnd = sound._stop; + if (self2.playing(ids[i])) { + self2.pause(ids[i], true); + self2.play(ids[i], true); + } + } + } + } + } + return self2; + }, + /** + * Get/set the playback rate of a sound. This method can optionally take 0, 1 or 2 arguments. + * rate() -> Returns the first sound node's current playback rate. + * rate(id) -> Returns the sound id's current playback rate. + * rate(rate) -> Sets the playback rate of all sounds in this Howl group. + * rate(rate, id) -> Sets the playback rate of passed sound id. + * @return {Howl/Number} Returns self or the current playback rate. + */ + rate: function() { + var self2 = this; + var args = arguments; + var rate, id; + if (args.length === 0) { + id = self2._sounds[0]._id; + } else if (args.length === 1) { + var ids = self2._getSoundIds(); + var index = ids.indexOf(args[0]); + if (index >= 0) { + id = parseInt(args[0], 10); + } else { + rate = parseFloat(args[0]); + } + } else if (args.length === 2) { + rate = parseFloat(args[0]); + id = parseInt(args[1], 10); + } + var sound; + if (typeof rate === "number") { + if (self2._state !== "loaded" || self2._playLock) { + self2._queue.push({ + event: "rate", + action: function() { + self2.rate.apply(self2, args); + } + }); + return self2; + } + if (typeof id === "undefined") { + self2._rate = rate; + } + id = self2._getSoundIds(id); + for (var i = 0; i < id.length; i++) { + sound = self2._soundById(id[i]); + if (sound) { + if (self2.playing(id[i])) { + sound._rateSeek = self2.seek(id[i]); + sound._playStart = self2._webAudio ? Howler2.ctx.currentTime : sound._playStart; + } + sound._rate = rate; + if (self2._webAudio && sound._node && sound._node.bufferSource) { + sound._node.bufferSource.playbackRate.setValueAtTime(rate, Howler2.ctx.currentTime); + } else if (sound._node) { + sound._node.playbackRate = rate; + } + var seek = self2.seek(id[i]); + var duration = (self2._sprite[sound._sprite][0] + self2._sprite[sound._sprite][1]) / 1e3 - seek; + var timeout2 = duration * 1e3 / Math.abs(sound._rate); + if (self2._endTimers[id[i]] || !sound._paused) { + self2._clearTimer(id[i]); + self2._endTimers[id[i]] = setTimeout(self2._ended.bind(self2, sound), timeout2); + } + self2._emit("rate", sound._id); + } + } + } else { + sound = self2._soundById(id); + return sound ? sound._rate : self2._rate; + } + return self2; + }, + /** + * Get/set the seek position of a sound. This method can optionally take 0, 1 or 2 arguments. + * seek() -> Returns the first sound node's current seek position. + * seek(id) -> Returns the sound id's current seek position. + * seek(seek) -> Sets the seek position of the first sound node. + * seek(seek, id) -> Sets the seek position of passed sound id. + * @return {Howl/Number} Returns self or the current seek position. + */ + seek: function() { + var self2 = this; + var args = arguments; + var seek, id; + if (args.length === 0) { + if (self2._sounds.length) { + id = self2._sounds[0]._id; + } + } else if (args.length === 1) { + var ids = self2._getSoundIds(); + var index = ids.indexOf(args[0]); + if (index >= 0) { + id = parseInt(args[0], 10); + } else if (self2._sounds.length) { + id = self2._sounds[0]._id; + seek = parseFloat(args[0]); + } + } else if (args.length === 2) { + seek = parseFloat(args[0]); + id = parseInt(args[1], 10); + } + if (typeof id === "undefined") { + return 0; + } + if (typeof seek === "number" && (self2._state !== "loaded" || self2._playLock)) { + self2._queue.push({ + event: "seek", + action: function() { + self2.seek.apply(self2, args); + } + }); + return self2; + } + var sound = self2._soundById(id); + if (sound) { + if (typeof seek === "number" && seek >= 0) { + var playing = self2.playing(id); + if (playing) { + self2.pause(id, true); + } + sound._seek = seek; + sound._ended = false; + self2._clearTimer(id); + if (!self2._webAudio && sound._node && !isNaN(sound._node.duration)) { + sound._node.currentTime = seek; + } + var seekAndEmit = function() { + if (playing) { + self2.play(id, true); + } + self2._emit("seek", id); + }; + if (playing && !self2._webAudio) { + var emitSeek = function() { + if (!self2._playLock) { + seekAndEmit(); + } else { + setTimeout(emitSeek, 0); + } + }; + setTimeout(emitSeek, 0); + } else { + seekAndEmit(); + } + } else { + if (self2._webAudio) { + var realTime = self2.playing(id) ? Howler2.ctx.currentTime - sound._playStart : 0; + var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0; + return sound._seek + (rateSeek + realTime * Math.abs(sound._rate)); + } else { + return sound._node.currentTime; + } + } + } + return self2; + }, + /** + * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not. + * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked. + * @return {Boolean} True if playing and false if not. + */ + playing: function(id) { + var self2 = this; + if (typeof id === "number") { + var sound = self2._soundById(id); + return sound ? !sound._paused : false; + } + for (var i = 0; i < self2._sounds.length; i++) { + if (!self2._sounds[i]._paused) { + return true; + } + } + return false; + }, + /** + * Get the duration of this sound. Passing a sound id will return the sprite duration. + * @param {Number} id The sound id to check. If none is passed, return full source duration. + * @return {Number} Audio duration in seconds. + */ + duration: function(id) { + var self2 = this; + var duration = self2._duration; + var sound = self2._soundById(id); + if (sound) { + duration = self2._sprite[sound._sprite][1] / 1e3; + } + return duration; + }, + /** + * Returns the current loaded state of this Howl. + * @return {String} 'unloaded', 'loading', 'loaded' + */ + state: function() { + return this._state; + }, + /** + * Unload and destroy the current Howl object. + * This will immediately stop all sound instances attached to this group. + */ + unload: function() { + var self2 = this; + var sounds = self2._sounds; + for (var i = 0; i < sounds.length; i++) { + if (!sounds[i]._paused) { + self2.stop(sounds[i]._id); + } + if (!self2._webAudio) { + self2._clearSound(sounds[i]._node); + sounds[i]._node.removeEventListener("error", sounds[i]._errorFn, false); + sounds[i]._node.removeEventListener(Howler2._canPlayEvent, sounds[i]._loadFn, false); + sounds[i]._node.removeEventListener("ended", sounds[i]._endFn, false); + Howler2._releaseHtml5Audio(sounds[i]._node); + } + delete sounds[i]._node; + self2._clearTimer(sounds[i]._id); + } + var index = Howler2._howls.indexOf(self2); + if (index >= 0) { + Howler2._howls.splice(index, 1); + } + var remCache = true; + for (i = 0; i < Howler2._howls.length; i++) { + if (Howler2._howls[i]._src === self2._src || self2._src.indexOf(Howler2._howls[i]._src) >= 0) { + remCache = false; + break; + } + } + if (cache && remCache) { + delete cache[self2._src]; + } + Howler2.noAudio = false; + self2._state = "unloaded"; + self2._sounds = []; + self2 = null; + return null; + }, + /** + * Listen to a custom event. + * @param {String} event Event name. + * @param {Function} fn Listener to call. + * @param {Number} id (optional) Only listen to events for this sound. + * @param {Number} once (INTERNAL) Marks event to fire only once. + * @return {Howl} + */ + on: function(event, fn, id, once) { + var self2 = this; + var events = self2["_on" + event]; + if (typeof fn === "function") { + events.push(once ? { id, fn, once } : { id, fn }); + } + return self2; + }, + /** + * Remove a custom event. Call without parameters to remove all events. + * @param {String} event Event name. + * @param {Function} fn Listener to remove. Leave empty to remove all. + * @param {Number} id (optional) Only remove events for this sound. + * @return {Howl} + */ + off: function(event, fn, id) { + var self2 = this; + var events = self2["_on" + event]; + var i = 0; + if (typeof fn === "number") { + id = fn; + fn = null; + } + if (fn || id) { + for (i = 0; i < events.length; i++) { + var isId = id === events[i].id; + if (fn === events[i].fn && isId || !fn && isId) { + events.splice(i, 1); + break; + } + } + } else if (event) { + self2["_on" + event] = []; + } else { + var keys = Object.keys(self2); + for (i = 0; i < keys.length; i++) { + if (keys[i].indexOf("_on") === 0 && Array.isArray(self2[keys[i]])) { + self2[keys[i]] = []; + } + } + } + return self2; + }, + /** + * Listen to a custom event and remove it once fired. + * @param {String} event Event name. + * @param {Function} fn Listener to call. + * @param {Number} id (optional) Only listen to events for this sound. + * @return {Howl} + */ + once: function(event, fn, id) { + var self2 = this; + self2.on(event, fn, id, 1); + return self2; + }, + /** + * Emit all events of a specific type and pass the sound id. + * @param {String} event Event name. + * @param {Number} id Sound ID. + * @param {Number} msg Message to go with event. + * @return {Howl} + */ + _emit: function(event, id, msg) { + var self2 = this; + var events = self2["_on" + event]; + for (var i = events.length - 1; i >= 0; i--) { + if (!events[i].id || events[i].id === id || event === "load") { + setTimeout(function(fn) { + fn.call(this, id, msg); + }.bind(self2, events[i].fn), 0); + if (events[i].once) { + self2.off(event, events[i].fn, events[i].id); + } + } + } + self2._loadQueue(event); + return self2; + }, + /** + * Queue of actions initiated before the sound has loaded. + * These will be called in sequence, with the next only firing + * after the previous has finished executing (even if async like play). + * @return {Howl} + */ + _loadQueue: function(event) { + var self2 = this; + if (self2._queue.length > 0) { + var task = self2._queue[0]; + if (task.event === event) { + self2._queue.shift(); + self2._loadQueue(); + } + if (!event) { + task.action(); + } + } + return self2; + }, + /** + * Fired when playback ends at the end of the duration. + * @param {Sound} sound The sound object to work with. + * @return {Howl} + */ + _ended: function(sound) { + var self2 = this; + var sprite = sound._sprite; + if (!self2._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) { + setTimeout(self2._ended.bind(self2, sound), 100); + return self2; + } + var loop = !!(sound._loop || self2._sprite[sprite][2]); + self2._emit("end", sound._id); + if (!self2._webAudio && loop) { + self2.stop(sound._id, true).play(sound._id); + } + if (self2._webAudio && loop) { + self2._emit("play", sound._id); + sound._seek = sound._start || 0; + sound._rateSeek = 0; + sound._playStart = Howler2.ctx.currentTime; + var timeout2 = (sound._stop - sound._start) * 1e3 / Math.abs(sound._rate); + self2._endTimers[sound._id] = setTimeout(self2._ended.bind(self2, sound), timeout2); + } + if (self2._webAudio && !loop) { + sound._paused = true; + sound._ended = true; + sound._seek = sound._start || 0; + sound._rateSeek = 0; + self2._clearTimer(sound._id); + self2._cleanBuffer(sound._node); + Howler2._autoSuspend(); + } + if (!self2._webAudio && !loop) { + self2.stop(sound._id, true); + } + return self2; + }, + /** + * Clear the end timer for a sound playback. + * @param {Number} id The sound ID. + * @return {Howl} + */ + _clearTimer: function(id) { + var self2 = this; + if (self2._endTimers[id]) { + if (typeof self2._endTimers[id] !== "function") { + clearTimeout(self2._endTimers[id]); + } else { + var sound = self2._soundById(id); + if (sound && sound._node) { + sound._node.removeEventListener("ended", self2._endTimers[id], false); + } + } + delete self2._endTimers[id]; + } + return self2; + }, + /** + * Return the sound identified by this ID, or return null. + * @param {Number} id Sound ID + * @return {Object} Sound object or null. + */ + _soundById: function(id) { + var self2 = this; + for (var i = 0; i < self2._sounds.length; i++) { + if (id === self2._sounds[i]._id) { + return self2._sounds[i]; + } + } + return null; + }, + /** + * Return an inactive sound from the pool or create a new one. + * @return {Sound} Sound playback object. + */ + _inactiveSound: function() { + var self2 = this; + self2._drain(); + for (var i = 0; i < self2._sounds.length; i++) { + if (self2._sounds[i]._ended) { + return self2._sounds[i].reset(); + } + } + return new Sound2(self2); + }, + /** + * Drain excess inactive sounds from the pool. + */ + _drain: function() { + var self2 = this; + var limit = self2._pool; + var cnt = 0; + var i = 0; + if (self2._sounds.length < limit) { + return; + } + for (i = 0; i < self2._sounds.length; i++) { + if (self2._sounds[i]._ended) { + cnt++; + } + } + for (i = self2._sounds.length - 1; i >= 0; i--) { + if (cnt <= limit) { + return; + } + if (self2._sounds[i]._ended) { + if (self2._webAudio && self2._sounds[i]._node) { + self2._sounds[i]._node.disconnect(0); + } + self2._sounds.splice(i, 1); + cnt--; + } + } + }, + /** + * Get all ID's from the sounds pool. + * @param {Number} id Only return one ID if one is passed. + * @return {Array} Array of IDs. + */ + _getSoundIds: function(id) { + var self2 = this; + if (typeof id === "undefined") { + var ids = []; + for (var i = 0; i < self2._sounds.length; i++) { + ids.push(self2._sounds[i]._id); + } + return ids; + } else { + return [id]; + } + }, + /** + * Load the sound back into the buffer source. + * @param {Sound} sound The sound object to work with. + * @return {Howl} + */ + _refreshBuffer: function(sound) { + var self2 = this; + sound._node.bufferSource = Howler2.ctx.createBufferSource(); + sound._node.bufferSource.buffer = cache[self2._src]; + if (sound._panner) { + sound._node.bufferSource.connect(sound._panner); + } else { + sound._node.bufferSource.connect(sound._node); + } + sound._node.bufferSource.loop = sound._loop; + if (sound._loop) { + sound._node.bufferSource.loopStart = sound._start || 0; + sound._node.bufferSource.loopEnd = sound._stop || 0; + } + sound._node.bufferSource.playbackRate.setValueAtTime(sound._rate, Howler2.ctx.currentTime); + return self2; + }, + /** + * Prevent memory leaks by cleaning up the buffer source after playback. + * @param {Object} node Sound's audio node containing the buffer source. + * @return {Howl} + */ + _cleanBuffer: function(node) { + var self2 = this; + var isIOS = Howler2._navigator && Howler2._navigator.vendor.indexOf("Apple") >= 0; + if (Howler2._scratchBuffer && node.bufferSource) { + node.bufferSource.onended = null; + node.bufferSource.disconnect(0); + if (isIOS) { + try { + node.bufferSource.buffer = Howler2._scratchBuffer; + } catch (e) { + } + } + } + node.bufferSource = null; + return self2; + }, + /** + * Set the source to a 0-second silence to stop any downloading (except in IE). + * @param {Object} node Audio node to clear. + */ + _clearSound: function(node) { + var checkIE = /MSIE |Trident\//.test(Howler2._navigator && Howler2._navigator.userAgent); + if (!checkIE) { + node.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"; + } + } + }; + var Sound2 = function(howl) { + this._parent = howl; + this.init(); + }; + Sound2.prototype = { + /** + * Initialize a new Sound object. + * @return {Sound} + */ + init: function() { + var self2 = this; + var parent = self2._parent; + self2._muted = parent._muted; + self2._loop = parent._loop; + self2._volume = parent._volume; + self2._rate = parent._rate; + self2._seek = 0; + self2._paused = true; + self2._ended = true; + self2._sprite = "__default"; + self2._id = ++Howler2._counter; + parent._sounds.push(self2); + self2.create(); + return self2; + }, + /** + * Create and setup a new sound object, whether HTML5 Audio or Web Audio. + * @return {Sound} + */ + create: function() { + var self2 = this; + var parent = self2._parent; + var volume = Howler2._muted || self2._muted || self2._parent._muted ? 0 : self2._volume; + if (parent._webAudio) { + self2._node = typeof Howler2.ctx.createGain === "undefined" ? Howler2.ctx.createGainNode() : Howler2.ctx.createGain(); + self2._node.gain.setValueAtTime(volume, Howler2.ctx.currentTime); + self2._node.paused = true; + self2._node.connect(Howler2.masterGain); + } else if (!Howler2.noAudio) { + self2._node = Howler2._obtainHtml5Audio(); + self2._errorFn = self2._errorListener.bind(self2); + self2._node.addEventListener("error", self2._errorFn, false); + self2._loadFn = self2._loadListener.bind(self2); + self2._node.addEventListener(Howler2._canPlayEvent, self2._loadFn, false); + self2._endFn = self2._endListener.bind(self2); + self2._node.addEventListener("ended", self2._endFn, false); + self2._node.src = parent._src; + self2._node.preload = parent._preload === true ? "auto" : parent._preload; + self2._node.volume = volume * Howler2.volume(); + self2._node.load(); + } + return self2; + }, + /** + * Reset the parameters of this sound to the original state (for recycle). + * @return {Sound} + */ + reset: function() { + var self2 = this; + var parent = self2._parent; + self2._muted = parent._muted; + self2._loop = parent._loop; + self2._volume = parent._volume; + self2._rate = parent._rate; + self2._seek = 0; + self2._rateSeek = 0; + self2._paused = true; + self2._ended = true; + self2._sprite = "__default"; + self2._id = ++Howler2._counter; + return self2; + }, + /** + * HTML5 Audio error listener callback. + */ + _errorListener: function() { + var self2 = this; + self2._parent._emit("loaderror", self2._id, self2._node.error ? self2._node.error.code : 0); + self2._node.removeEventListener("error", self2._errorFn, false); + }, + /** + * HTML5 Audio canplaythrough listener callback. + */ + _loadListener: function() { + var self2 = this; + var parent = self2._parent; + parent._duration = Math.ceil(self2._node.duration * 10) / 10; + if (Object.keys(parent._sprite).length === 0) { + parent._sprite = { __default: [0, parent._duration * 1e3] }; + } + if (parent._state !== "loaded") { + parent._state = "loaded"; + parent._emit("load"); + parent._loadQueue(); + } + self2._node.removeEventListener(Howler2._canPlayEvent, self2._loadFn, false); + }, + /** + * HTML5 Audio ended listener callback. + */ + _endListener: function() { + var self2 = this; + var parent = self2._parent; + if (parent._duration === Infinity) { + parent._duration = Math.ceil(self2._node.duration * 10) / 10; + if (parent._sprite.__default[1] === Infinity) { + parent._sprite.__default[1] = parent._duration * 1e3; + } + parent._ended(self2); + } + self2._node.removeEventListener("ended", self2._endFn, false); + } + }; + var cache = {}; + var loadBuffer = function(self2) { + var url = self2._src; + if (cache[url]) { + self2._duration = cache[url].duration; + loadSound(self2); + return; + } + if (/^data:[^;]+;base64,/.test(url)) { + var data = atob(url.split(",")[1]); + var dataView = new Uint8Array(data.length); + for (var i = 0; i < data.length; ++i) { + dataView[i] = data.charCodeAt(i); + } + decodeAudioData(dataView.buffer, self2); + } else { + var xhr = new XMLHttpRequest(); + xhr.open(self2._xhr.method, url, true); + xhr.withCredentials = self2._xhr.withCredentials; + xhr.responseType = "arraybuffer"; + if (self2._xhr.headers) { + Object.keys(self2._xhr.headers).forEach(function(key) { + xhr.setRequestHeader(key, self2._xhr.headers[key]); + }); + } + xhr.onload = function() { + var code = (xhr.status + "")[0]; + if (code !== "0" && code !== "2" && code !== "3") { + self2._emit("loaderror", null, "Failed loading audio file with status: " + xhr.status + "."); + return; + } + decodeAudioData(xhr.response, self2); + }; + xhr.onerror = function() { + if (self2._webAudio) { + self2._html5 = true; + self2._webAudio = false; + self2._sounds = []; + delete cache[url]; + self2.load(); + } + }; + safeXhrSend(xhr); + } + }; + var safeXhrSend = function(xhr) { + try { + xhr.send(); + } catch (e) { + xhr.onerror(); + } + }; + var decodeAudioData = function(arraybuffer, self2) { + var error = function() { + self2._emit("loaderror", null, "Decoding audio data failed."); + }; + var success = function(buffer) { + if (buffer && self2._sounds.length > 0) { + cache[self2._src] = buffer; + loadSound(self2, buffer); + } else { + error(); + } + }; + if (typeof Promise !== "undefined" && Howler2.ctx.decodeAudioData.length === 1) { + Howler2.ctx.decodeAudioData(arraybuffer).then(success).catch(error); + } else { + Howler2.ctx.decodeAudioData(arraybuffer, success, error); + } + }; + var loadSound = function(self2, buffer) { + if (buffer && !self2._duration) { + self2._duration = buffer.duration; + } + if (Object.keys(self2._sprite).length === 0) { + self2._sprite = { __default: [0, self2._duration * 1e3] }; + } + if (self2._state !== "loaded") { + self2._state = "loaded"; + self2._emit("load"); + self2._loadQueue(); + } + }; + var setupAudioContext = function() { + if (!Howler2.usingWebAudio) { + return; + } + try { + if (typeof AudioContext !== "undefined") { + Howler2.ctx = new AudioContext(); + } else if (typeof webkitAudioContext !== "undefined") { + Howler2.ctx = new webkitAudioContext(); + } else { + Howler2.usingWebAudio = false; + } + } catch (e) { + Howler2.usingWebAudio = false; + } + if (!Howler2.ctx) { + Howler2.usingWebAudio = false; + } + var iOS = /iP(hone|od|ad)/.test(Howler2._navigator && Howler2._navigator.platform); + var appVersion = Howler2._navigator && Howler2._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/); + var version = appVersion ? parseInt(appVersion[1], 10) : null; + if (iOS && version && version < 9) { + var safari = /safari/.test(Howler2._navigator && Howler2._navigator.userAgent.toLowerCase()); + if (Howler2._navigator && !safari) { + Howler2.usingWebAudio = false; + } + } + if (Howler2.usingWebAudio) { + Howler2.masterGain = typeof Howler2.ctx.createGain === "undefined" ? Howler2.ctx.createGainNode() : Howler2.ctx.createGain(); + Howler2.masterGain.gain.setValueAtTime(Howler2._muted ? 0 : Howler2._volume, Howler2.ctx.currentTime); + Howler2.masterGain.connect(Howler2.ctx.destination); + } + Howler2._setup(); + }; + if (typeof define === "function" && define.amd) { + define([], function() { + return { + Howler: Howler2, + Howl: Howl2 + }; + }); + } + if (typeof exports !== "undefined") { + exports.Howler = Howler2; + exports.Howl = Howl2; + } + if (typeof global !== "undefined") { + global.HowlerGlobal = HowlerGlobal2; + global.Howler = Howler2; + global.Howl = Howl2; + global.Sound = Sound2; + } else if (typeof window !== "undefined") { + window.HowlerGlobal = HowlerGlobal2; + window.Howler = Howler2; + window.Howl = Howl2; + window.Sound = Sound2; + } + })(); + (function() { + "use strict"; + HowlerGlobal.prototype._pos = [0, 0, 0]; + HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0]; + HowlerGlobal.prototype.stereo = function(pan) { + var self2 = this; + if (!self2.ctx || !self2.ctx.listener) { + return self2; + } + for (var i = self2._howls.length - 1; i >= 0; i--) { + self2._howls[i].stereo(pan); + } + return self2; + }; + HowlerGlobal.prototype.pos = function(x, y, z) { + var self2 = this; + if (!self2.ctx || !self2.ctx.listener) { + return self2; + } + y = typeof y !== "number" ? self2._pos[1] : y; + z = typeof z !== "number" ? self2._pos[2] : z; + if (typeof x === "number") { + self2._pos = [x, y, z]; + if (typeof self2.ctx.listener.positionX !== "undefined") { + self2.ctx.listener.positionX.setTargetAtTime(self2._pos[0], Howler.ctx.currentTime, 0.1); + self2.ctx.listener.positionY.setTargetAtTime(self2._pos[1], Howler.ctx.currentTime, 0.1); + self2.ctx.listener.positionZ.setTargetAtTime(self2._pos[2], Howler.ctx.currentTime, 0.1); + } else { + self2.ctx.listener.setPosition(self2._pos[0], self2._pos[1], self2._pos[2]); + } + } else { + return self2._pos; + } + return self2; + }; + HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) { + var self2 = this; + if (!self2.ctx || !self2.ctx.listener) { + return self2; + } + var or = self2._orientation; + y = typeof y !== "number" ? or[1] : y; + z = typeof z !== "number" ? or[2] : z; + xUp = typeof xUp !== "number" ? or[3] : xUp; + yUp = typeof yUp !== "number" ? or[4] : yUp; + zUp = typeof zUp !== "number" ? or[5] : zUp; + if (typeof x === "number") { + self2._orientation = [x, y, z, xUp, yUp, zUp]; + if (typeof self2.ctx.listener.forwardX !== "undefined") { + self2.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1); + self2.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1); + self2.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1); + self2.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1); + self2.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1); + self2.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1); + } else { + self2.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp); + } + } else { + return or; + } + return self2; + }; + Howl.prototype.init = function(_super) { + return function(o) { + var self2 = this; + self2._orientation = o.orientation || [1, 0, 0]; + self2._stereo = o.stereo || null; + self2._pos = o.pos || null; + self2._pannerAttr = { + coneInnerAngle: typeof o.coneInnerAngle !== "undefined" ? o.coneInnerAngle : 360, + coneOuterAngle: typeof o.coneOuterAngle !== "undefined" ? o.coneOuterAngle : 360, + coneOuterGain: typeof o.coneOuterGain !== "undefined" ? o.coneOuterGain : 0, + distanceModel: typeof o.distanceModel !== "undefined" ? o.distanceModel : "inverse", + maxDistance: typeof o.maxDistance !== "undefined" ? o.maxDistance : 1e4, + panningModel: typeof o.panningModel !== "undefined" ? o.panningModel : "HRTF", + refDistance: typeof o.refDistance !== "undefined" ? o.refDistance : 1, + rolloffFactor: typeof o.rolloffFactor !== "undefined" ? o.rolloffFactor : 1 + }; + self2._onstereo = o.onstereo ? [{ fn: o.onstereo }] : []; + self2._onpos = o.onpos ? [{ fn: o.onpos }] : []; + self2._onorientation = o.onorientation ? [{ fn: o.onorientation }] : []; + return _super.call(this, o); + }; + }(Howl.prototype.init); + Howl.prototype.stereo = function(pan, id) { + var self2 = this; + if (!self2._webAudio) { + return self2; + } + if (self2._state !== "loaded") { + self2._queue.push({ + event: "stereo", + action: function() { + self2.stereo(pan, id); + } + }); + return self2; + } + var pannerType = typeof Howler.ctx.createStereoPanner === "undefined" ? "spatial" : "stereo"; + if (typeof id === "undefined") { + if (typeof pan === "number") { + self2._stereo = pan; + self2._pos = [pan, 0, 0]; + } else { + return self2._stereo; + } + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + var sound = self2._soundById(ids[i]); + if (sound) { + if (typeof pan === "number") { + sound._stereo = pan; + sound._pos = [pan, 0, 0]; + if (sound._node) { + sound._pannerAttr.panningModel = "equalpower"; + if (!sound._panner || !sound._panner.pan) { + setupPanner(sound, pannerType); + } + if (pannerType === "spatial") { + if (typeof sound._panner.positionX !== "undefined") { + sound._panner.positionX.setValueAtTime(pan, Howler.ctx.currentTime); + sound._panner.positionY.setValueAtTime(0, Howler.ctx.currentTime); + sound._panner.positionZ.setValueAtTime(0, Howler.ctx.currentTime); + } else { + sound._panner.setPosition(pan, 0, 0); + } + } else { + sound._panner.pan.setValueAtTime(pan, Howler.ctx.currentTime); + } + } + self2._emit("stereo", sound._id); + } else { + return sound._stereo; + } + } + } + return self2; + }; + Howl.prototype.pos = function(x, y, z, id) { + var self2 = this; + if (!self2._webAudio) { + return self2; + } + if (self2._state !== "loaded") { + self2._queue.push({ + event: "pos", + action: function() { + self2.pos(x, y, z, id); + } + }); + return self2; + } + y = typeof y !== "number" ? 0 : y; + z = typeof z !== "number" ? -0.5 : z; + if (typeof id === "undefined") { + if (typeof x === "number") { + self2._pos = [x, y, z]; + } else { + return self2._pos; + } + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + var sound = self2._soundById(ids[i]); + if (sound) { + if (typeof x === "number") { + sound._pos = [x, y, z]; + if (sound._node) { + if (!sound._panner || sound._panner.pan) { + setupPanner(sound, "spatial"); + } + if (typeof sound._panner.positionX !== "undefined") { + sound._panner.positionX.setValueAtTime(x, Howler.ctx.currentTime); + sound._panner.positionY.setValueAtTime(y, Howler.ctx.currentTime); + sound._panner.positionZ.setValueAtTime(z, Howler.ctx.currentTime); + } else { + sound._panner.setPosition(x, y, z); + } + } + self2._emit("pos", sound._id); + } else { + return sound._pos; + } + } + } + return self2; + }; + Howl.prototype.orientation = function(x, y, z, id) { + var self2 = this; + if (!self2._webAudio) { + return self2; + } + if (self2._state !== "loaded") { + self2._queue.push({ + event: "orientation", + action: function() { + self2.orientation(x, y, z, id); + } + }); + return self2; + } + y = typeof y !== "number" ? self2._orientation[1] : y; + z = typeof z !== "number" ? self2._orientation[2] : z; + if (typeof id === "undefined") { + if (typeof x === "number") { + self2._orientation = [x, y, z]; + } else { + return self2._orientation; + } + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + var sound = self2._soundById(ids[i]); + if (sound) { + if (typeof x === "number") { + sound._orientation = [x, y, z]; + if (sound._node) { + if (!sound._panner) { + if (!sound._pos) { + sound._pos = self2._pos || [0, 0, -0.5]; + } + setupPanner(sound, "spatial"); + } + if (typeof sound._panner.orientationX !== "undefined") { + sound._panner.orientationX.setValueAtTime(x, Howler.ctx.currentTime); + sound._panner.orientationY.setValueAtTime(y, Howler.ctx.currentTime); + sound._panner.orientationZ.setValueAtTime(z, Howler.ctx.currentTime); + } else { + sound._panner.setOrientation(x, y, z); + } + } + self2._emit("orientation", sound._id); + } else { + return sound._orientation; + } + } + } + return self2; + }; + Howl.prototype.pannerAttr = function() { + var self2 = this; + var args = arguments; + var o, id, sound; + if (!self2._webAudio) { + return self2; + } + if (args.length === 0) { + return self2._pannerAttr; + } else if (args.length === 1) { + if (typeof args[0] === "object") { + o = args[0]; + if (typeof id === "undefined") { + if (!o.pannerAttr) { + o.pannerAttr = { + coneInnerAngle: o.coneInnerAngle, + coneOuterAngle: o.coneOuterAngle, + coneOuterGain: o.coneOuterGain, + distanceModel: o.distanceModel, + maxDistance: o.maxDistance, + refDistance: o.refDistance, + rolloffFactor: o.rolloffFactor, + panningModel: o.panningModel + }; + } + self2._pannerAttr = { + coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== "undefined" ? o.pannerAttr.coneInnerAngle : self2._coneInnerAngle, + coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== "undefined" ? o.pannerAttr.coneOuterAngle : self2._coneOuterAngle, + coneOuterGain: typeof o.pannerAttr.coneOuterGain !== "undefined" ? o.pannerAttr.coneOuterGain : self2._coneOuterGain, + distanceModel: typeof o.pannerAttr.distanceModel !== "undefined" ? o.pannerAttr.distanceModel : self2._distanceModel, + maxDistance: typeof o.pannerAttr.maxDistance !== "undefined" ? o.pannerAttr.maxDistance : self2._maxDistance, + refDistance: typeof o.pannerAttr.refDistance !== "undefined" ? o.pannerAttr.refDistance : self2._refDistance, + rolloffFactor: typeof o.pannerAttr.rolloffFactor !== "undefined" ? o.pannerAttr.rolloffFactor : self2._rolloffFactor, + panningModel: typeof o.pannerAttr.panningModel !== "undefined" ? o.pannerAttr.panningModel : self2._panningModel + }; + } + } else { + sound = self2._soundById(parseInt(args[0], 10)); + return sound ? sound._pannerAttr : self2._pannerAttr; + } + } else if (args.length === 2) { + o = args[0]; + id = parseInt(args[1], 10); + } + var ids = self2._getSoundIds(id); + for (var i = 0; i < ids.length; i++) { + sound = self2._soundById(ids[i]); + if (sound) { + var pa = sound._pannerAttr; + pa = { + coneInnerAngle: typeof o.coneInnerAngle !== "undefined" ? o.coneInnerAngle : pa.coneInnerAngle, + coneOuterAngle: typeof o.coneOuterAngle !== "undefined" ? o.coneOuterAngle : pa.coneOuterAngle, + coneOuterGain: typeof o.coneOuterGain !== "undefined" ? o.coneOuterGain : pa.coneOuterGain, + distanceModel: typeof o.distanceModel !== "undefined" ? o.distanceModel : pa.distanceModel, + maxDistance: typeof o.maxDistance !== "undefined" ? o.maxDistance : pa.maxDistance, + refDistance: typeof o.refDistance !== "undefined" ? o.refDistance : pa.refDistance, + rolloffFactor: typeof o.rolloffFactor !== "undefined" ? o.rolloffFactor : pa.rolloffFactor, + panningModel: typeof o.panningModel !== "undefined" ? o.panningModel : pa.panningModel + }; + var panner = sound._panner; + if (panner) { + panner.coneInnerAngle = pa.coneInnerAngle; + panner.coneOuterAngle = pa.coneOuterAngle; + panner.coneOuterGain = pa.coneOuterGain; + panner.distanceModel = pa.distanceModel; + panner.maxDistance = pa.maxDistance; + panner.refDistance = pa.refDistance; + panner.rolloffFactor = pa.rolloffFactor; + panner.panningModel = pa.panningModel; + } else { + if (!sound._pos) { + sound._pos = self2._pos || [0, 0, -0.5]; + } + setupPanner(sound, "spatial"); + } + } + } + return self2; + }; + Sound.prototype.init = function(_super) { + return function() { + var self2 = this; + var parent = self2._parent; + self2._orientation = parent._orientation; + self2._stereo = parent._stereo; + self2._pos = parent._pos; + self2._pannerAttr = parent._pannerAttr; + _super.call(this); + if (self2._stereo) { + parent.stereo(self2._stereo); + } else if (self2._pos) { + parent.pos(self2._pos[0], self2._pos[1], self2._pos[2], self2._id); + } + }; + }(Sound.prototype.init); + Sound.prototype.reset = function(_super) { + return function() { + var self2 = this; + var parent = self2._parent; + self2._orientation = parent._orientation; + self2._stereo = parent._stereo; + self2._pos = parent._pos; + self2._pannerAttr = parent._pannerAttr; + if (self2._stereo) { + parent.stereo(self2._stereo); + } else if (self2._pos) { + parent.pos(self2._pos[0], self2._pos[1], self2._pos[2], self2._id); + } else if (self2._panner) { + self2._panner.disconnect(0); + self2._panner = void 0; + parent._refreshBuffer(self2); + } + return _super.call(this); + }; + }(Sound.prototype.reset); + var setupPanner = function(sound, type) { + type = type || "spatial"; + if (type === "spatial") { + sound._panner = Howler.ctx.createPanner(); + sound._panner.coneInnerAngle = sound._pannerAttr.coneInnerAngle; + sound._panner.coneOuterAngle = sound._pannerAttr.coneOuterAngle; + sound._panner.coneOuterGain = sound._pannerAttr.coneOuterGain; + sound._panner.distanceModel = sound._pannerAttr.distanceModel; + sound._panner.maxDistance = sound._pannerAttr.maxDistance; + sound._panner.refDistance = sound._pannerAttr.refDistance; + sound._panner.rolloffFactor = sound._pannerAttr.rolloffFactor; + sound._panner.panningModel = sound._pannerAttr.panningModel; + if (typeof sound._panner.positionX !== "undefined") { + sound._panner.positionX.setValueAtTime(sound._pos[0], Howler.ctx.currentTime); + sound._panner.positionY.setValueAtTime(sound._pos[1], Howler.ctx.currentTime); + sound._panner.positionZ.setValueAtTime(sound._pos[2], Howler.ctx.currentTime); + } else { + sound._panner.setPosition(sound._pos[0], sound._pos[1], sound._pos[2]); + } + if (typeof sound._panner.orientationX !== "undefined") { + sound._panner.orientationX.setValueAtTime(sound._orientation[0], Howler.ctx.currentTime); + sound._panner.orientationY.setValueAtTime(sound._orientation[1], Howler.ctx.currentTime); + sound._panner.orientationZ.setValueAtTime(sound._orientation[2], Howler.ctx.currentTime); + } else { + sound._panner.setOrientation(sound._orientation[0], sound._orientation[1], sound._orientation[2]); + } + } else { + sound._panner = Howler.ctx.createStereoPanner(); + sound._panner.pan.setValueAtTime(sound._stereo, Howler.ctx.currentTime); + } + sound._panner.connect(sound._node); + if (!sound._paused) { + sound._parent.pause(sound._id, true).play(sound._id, true); + } + }; + })(); + } +}); + +// node_modules/earcut/src/earcut.js +var require_earcut = __commonJS({ + "node_modules/earcut/src/earcut.js"(exports, module) { + "use strict"; + module.exports = earcut2; + module.exports.default = earcut2; + function earcut2(data, holeIndices, dim) { + dim = dim || 2; + var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data.length, outerNode = linkedList(data, 0, outerLen, dim, true), triangles = []; + if (!outerNode || outerNode.next === outerNode.prev) + return triangles; + var minX, minY, maxX, maxY, x, y, invSize; + if (hasHoles) + outerNode = eliminateHoles(data, holeIndices, outerNode, dim); + if (data.length > 80 * dim) { + minX = maxX = data[0]; + minY = maxY = data[1]; + for (var i = dim; i < outerLen; i += dim) { + x = data[i]; + y = data[i + 1]; + if (x < minX) + minX = x; + if (y < minY) + minY = y; + if (x > maxX) + maxX = x; + if (y > maxY) + maxY = y; + } + invSize = Math.max(maxX - minX, maxY - minY); + invSize = invSize !== 0 ? 32767 / invSize : 0; + } + earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0); + return triangles; + } + function linkedList(data, start, end, dim, clockwise) { + var i, last; + if (clockwise === signedArea(data, start, end, dim) > 0) { + for (i = start; i < end; i += dim) + last = insertNode(i, data[i], data[i + 1], last); + } else { + for (i = end - dim; i >= start; i -= dim) + last = insertNode(i, data[i], data[i + 1], last); + } + if (last && equals6(last, last.next)) { + removeNode(last); + last = last.next; + } + return last; + } + function filterPoints(start, end) { + if (!start) + return start; + if (!end) + end = start; + var p = start, again; + do { + again = false; + if (!p.steiner && (equals6(p, p.next) || area(p.prev, p, p.next) === 0)) { + removeNode(p); + p = end = p.prev; + if (p === p.next) + break; + again = true; + } else { + p = p.next; + } + } while (again || p !== end); + return end; + } + function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { + if (!ear) + return; + if (!pass && invSize) + indexCurve(ear, minX, minY, invSize); + var stop = ear, prev, next; + while (ear.prev !== ear.next) { + prev = ear.prev; + next = ear.next; + if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { + triangles.push(prev.i / dim | 0); + triangles.push(ear.i / dim | 0); + triangles.push(next.i / dim | 0); + removeNode(ear); + ear = next.next; + stop = next.next; + continue; + } + ear = next; + if (ear === stop) { + if (!pass) { + earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); + } else if (pass === 1) { + ear = cureLocalIntersections(filterPoints(ear), triangles, dim); + earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); + } else if (pass === 2) { + splitEarcut(ear, triangles, dim, minX, minY, invSize); + } + break; + } + } + } + function isEar(ear) { + var a = ear.prev, b = ear, c = ear.next; + if (area(a, b, c) >= 0) + return false; + var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy; + var p = c.next; + while (p !== a) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) + return false; + p = p.next; + } + return true; + } + function isEarHashed(ear, minX, minY, invSize) { + var a = ear.prev, b = ear, c = ear.next; + if (area(a, b, c) >= 0) + return false; + var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y; + var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy; + var minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize); + var p = ear.prevZ, n = ear.nextZ; + while (p && p.z >= minZ && n && n.z <= maxZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) + return false; + p = p.prevZ; + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) + return false; + n = n.nextZ; + } + while (p && p.z >= minZ) { + if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c && pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) + return false; + p = p.prevZ; + } + while (n && n.z <= maxZ) { + if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c && pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) + return false; + n = n.nextZ; + } + return true; + } + function cureLocalIntersections(start, triangles, dim) { + var p = start; + do { + var a = p.prev, b = p.next.next; + if (!equals6(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) { + triangles.push(a.i / dim | 0); + triangles.push(p.i / dim | 0); + triangles.push(b.i / dim | 0); + removeNode(p); + removeNode(p.next); + p = start = b; + } + p = p.next; + } while (p !== start); + return filterPoints(p); + } + function splitEarcut(start, triangles, dim, minX, minY, invSize) { + var a = start; + do { + var b = a.next.next; + while (b !== a.prev) { + if (a.i !== b.i && isValidDiagonal(a, b)) { + var c = splitPolygon(a, b); + a = filterPoints(a, a.next); + c = filterPoints(c, c.next); + earcutLinked(a, triangles, dim, minX, minY, invSize, 0); + earcutLinked(c, triangles, dim, minX, minY, invSize, 0); + return; + } + b = b.next; + } + a = a.next; + } while (a !== start); + } + function eliminateHoles(data, holeIndices, outerNode, dim) { + var queue = [], i, len4, start, end, list; + for (i = 0, len4 = holeIndices.length; i < len4; i++) { + start = holeIndices[i] * dim; + end = i < len4 - 1 ? holeIndices[i + 1] * dim : data.length; + list = linkedList(data, start, end, dim, false); + if (list === list.next) + list.steiner = true; + queue.push(getLeftmost(list)); + } + queue.sort(compareX); + for (i = 0; i < queue.length; i++) { + outerNode = eliminateHole(queue[i], outerNode); + } + return outerNode; + } + function compareX(a, b) { + return a.x - b.x; + } + function eliminateHole(hole, outerNode) { + var bridge = findHoleBridge(hole, outerNode); + if (!bridge) { + return outerNode; + } + var bridgeReverse = splitPolygon(bridge, hole); + filterPoints(bridgeReverse, bridgeReverse.next); + return filterPoints(bridge, bridge.next); + } + function findHoleBridge(hole, outerNode) { + var p = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m; + do { + if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) { + var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y); + if (x <= hx && x > qx) { + qx = x; + m = p.x < p.next.x ? p : p.next; + if (x === hx) + return m; + } + } + p = p.next; + } while (p !== outerNode); + if (!m) + return null; + var stop = m, mx = m.x, my = m.y, tanMin = Infinity, tan; + p = m; + do { + if (hx >= p.x && p.x >= mx && hx !== p.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) { + tan = Math.abs(hy - p.y) / (hx - p.x); + if (locallyInside(p, hole) && (tan < tanMin || tan === tanMin && (p.x > m.x || p.x === m.x && sectorContainsSector(m, p)))) { + m = p; + tanMin = tan; + } + } + p = p.next; + } while (p !== stop); + return m; + } + function sectorContainsSector(m, p) { + return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0; + } + function indexCurve(start, minX, minY, invSize) { + var p = start; + do { + if (p.z === 0) + p.z = zOrder(p.x, p.y, minX, minY, invSize); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + } while (p !== start); + p.prevZ.nextZ = null; + p.prevZ = null; + sortLinked(p); + } + function sortLinked(list) { + var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; + do { + p = list; + list = null; + tail = null; + numMerges = 0; + while (p) { + numMerges++; + q = p; + pSize = 0; + for (i = 0; i < inSize; i++) { + pSize++; + q = q.nextZ; + if (!q) + break; + } + qSize = inSize; + while (pSize > 0 || qSize > 0 && q) { + if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) { + e = p; + p = p.nextZ; + pSize--; + } else { + e = q; + q = q.nextZ; + qSize--; + } + if (tail) + tail.nextZ = e; + else + list = e; + e.prevZ = tail; + tail = e; + } + p = q; + } + tail.nextZ = null; + inSize *= 2; + } while (numMerges > 1); + return list; + } + function zOrder(x, y, minX, minY, invSize) { + x = (x - minX) * invSize | 0; + y = (y - minY) * invSize | 0; + x = (x | x << 8) & 16711935; + x = (x | x << 4) & 252645135; + x = (x | x << 2) & 858993459; + x = (x | x << 1) & 1431655765; + y = (y | y << 8) & 16711935; + y = (y | y << 4) & 252645135; + y = (y | y << 2) & 858993459; + y = (y | y << 1) & 1431655765; + return x | y << 1; + } + function getLeftmost(start) { + var p = start, leftmost = start; + do { + if (p.x < leftmost.x || p.x === leftmost.x && p.y < leftmost.y) + leftmost = p; + p = p.next; + } while (p !== start); + return leftmost; + } + function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { + return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py); + } + function isValidDiagonal(a, b) { + return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges + (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible + (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors + equals6(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); + } + function area(p, q, r) { + return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y); + } + function equals6(p1, p2) { + return p1.x === p2.x && p1.y === p2.y; + } + function intersects(p1, q1, p2, q2) { + var o1 = sign(area(p1, q1, p2)); + var o2 = sign(area(p1, q1, q2)); + var o3 = sign(area(p2, q2, p1)); + var o4 = sign(area(p2, q2, q1)); + if (o1 !== o2 && o3 !== o4) + return true; + if (o1 === 0 && onSegment(p1, p2, q1)) + return true; + if (o2 === 0 && onSegment(p1, q2, q1)) + return true; + if (o3 === 0 && onSegment(p2, p1, q2)) + return true; + if (o4 === 0 && onSegment(p2, q1, q2)) + return true; + return false; + } + function onSegment(p, q, r) { + return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y); + } + function sign(num) { + return num > 0 ? 1 : num < 0 ? -1 : 0; + } + function intersectsPolygon(a, b) { + var p = a; + do { + if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && intersects(p, p.next, a, b)) + return true; + p = p.next; + } while (p !== a); + return false; + } + function locallyInside(a, b) { + return area(a.prev, a, a.next) < 0 ? area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 : area(a, b, a.prev) < 0 || area(a, a.next, b) < 0; + } + function middleInside(a, b) { + var p = a, inside = false, px = (a.x + b.x) / 2, py = (a.y + b.y) / 2; + do { + if (p.y > py !== p.next.y > py && p.next.y !== p.y && px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x) + inside = !inside; + p = p.next; + } while (p !== a); + return inside; + } + function splitPolygon(a, b) { + var a2 = new Node(a.i, a.x, a.y), b2 = new Node(b.i, b.x, b.y), an = a.next, bp = b.prev; + a.next = b; + b.prev = a; + a2.next = an; + an.prev = a2; + b2.next = a2; + a2.prev = b2; + bp.next = b2; + b2.prev = bp; + return b2; + } + function insertNode(i, x, y, last) { + var p = new Node(i, x, y); + if (!last) { + p.prev = p; + p.next = p; + } else { + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + } + return p; + } + function removeNode(p) { + p.next.prev = p.prev; + p.prev.next = p.next; + if (p.prevZ) + p.prevZ.nextZ = p.nextZ; + if (p.nextZ) + p.nextZ.prevZ = p.prevZ; + } + function Node(i, x, y) { + this.i = i; + this.x = x; + this.y = y; + this.prev = null; + this.next = null; + this.z = 0; + this.prevZ = null; + this.nextZ = null; + this.steiner = false; + } + earcut2.deviation = function(data, holeIndices, dim, triangles) { + var hasHoles = holeIndices && holeIndices.length; + var outerLen = hasHoles ? holeIndices[0] * dim : data.length; + var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim)); + if (hasHoles) { + for (var i = 0, len4 = holeIndices.length; i < len4; i++) { + var start = holeIndices[i] * dim; + var end = i < len4 - 1 ? holeIndices[i + 1] * dim : data.length; + polygonArea -= Math.abs(signedArea(data, start, end, dim)); + } + } + var trianglesArea = 0; + for (i = 0; i < triangles.length; i += 3) { + var a = triangles[i] * dim; + var b = triangles[i + 1] * dim; + var c = triangles[i + 2] * dim; + trianglesArea += Math.abs( + (data[a] - data[c]) * (data[b + 1] - data[a + 1]) - (data[a] - data[b]) * (data[c + 1] - data[a + 1]) + ); + } + return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea); + }; + function signedArea(data, start, end, dim) { + var sum = 0; + for (var i = start, j = end - dim; i < end; i += dim) { + sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]); + j = i; + } + return sum; + } + earcut2.flatten = function(data) { + var dim = data[0][0].length, result = { vertices: [], holes: [], dimensions: dim }, holeIndex = 0; + for (var i = 0; i < data.length; i++) { + for (var j = 0; j < data[i].length; j++) { + for (var d = 0; d < dim; d++) + result.vertices.push(data[i][j][d]); + } + if (i > 0) { + holeIndex += data[i - 1].length; + result.holes.push(holeIndex); + } + } + return result; + }; + } +}); + +// node_modules/@wonderlandengine/api/dist/index.js +var dist_exports = {}; +__export(dist_exports, { + APIVersion: () => APIVersion, + Alignment: () => Alignment, + Animation: () => Animation, + AnimationComponent: () => AnimationComponent, + AnimationState: () => AnimationState, + ArrayBufferSink: () => ArrayBufferSink, + ArrayBufferSource: () => ArrayBufferSource, + BitSet: () => BitSet, + BrokenComponent: () => BrokenComponent, + CBORReader: () => CBORReader, + CBORType: () => CBORType, + ChunkedSceneLoadSink: () => ChunkedSceneLoadSink, + Collider: () => Collider, + CollisionComponent: () => CollisionComponent, + CollisionEventType: () => CollisionEventType, + Component: () => Component3, + DefaultPropertyCloner: () => DefaultPropertyCloner, + DestroyedComponentInstance: () => DestroyedComponentInstance, + DestroyedObjectInstance: () => DestroyedObjectInstance, + DestroyedPrefabInstance: () => DestroyedPrefabInstance, + Emitter: () => Emitter, + Environment: () => Environment, + Font: () => Font, + ForceMode: () => ForceMode, + GLTFExtensions: () => GLTFExtensions, + I18N: () => I18N, + InputComponent: () => InputComponent, + InputType: () => InputType, + Justification: () => Justification, + LightComponent: () => LightComponent, + LightType: () => LightType, + LockAxis: () => LockAxis, + LogLevel: () => LogLevel, + LogTag: () => LogTag, + Logger: () => Logger, + Material: () => Material, + MaterialManager: () => MaterialManager, + MaterialParamType: () => MaterialParamType, + Mesh: () => Mesh, + MeshAttribute: () => MeshAttribute, + MeshAttributeAccessor: () => MeshAttributeAccessor, + MeshComponent: () => MeshComponent, + MeshIndexType: () => MeshIndexType, + MeshManager: () => MeshManager, + MeshSkinningType: () => MeshSkinningType, + MorphTargets: () => MorphTargets, + Object: () => Object3D2, + Object3D: () => Object3D2, + ParticleEffect: () => ParticleEffect, + ParticleEffectComponent: () => ParticleEffectComponent, + PhysXComponent: () => PhysXComponent, + Physics: () => Physics, + Prefab: () => Prefab, + PrefabGLTF: () => PrefabGLTF, + ProjectionType: () => ProjectionType, + Property: () => Property, + RayHit: () => RayHit, + Resource: () => Resource, + ResourceManager: () => ResourceManager, + RetainEmitter: () => RetainEmitter, + RootMotionMode: () => RootMotionMode, + Scene: () => Scene, + SceneResource: () => SceneResource, + SceneType: () => SceneType, + Shape: () => Shape, + Skin: () => Skin, + TextComponent: () => TextComponent, + TextEffect: () => TextEffect, + TextWrapMode: () => TextWrapMode, + Texture: () => Texture, + TextureManager: () => TextureManager, + Type: () => Type, + VerticalAlignment: () => VerticalAlignment, + ViewComponent: () => ViewComponent, + WASM: () => WASM, + WebXR: () => WebXR, + WonderlandEngine: () => WonderlandEngine, + XRSessionState: () => XRSessionState, + capitalizeFirstUTF8: () => capitalizeFirstUTF8, + checkRuntimeCompatibility: () => checkRuntimeCompatibility, + clamp: () => clamp, + createDestroyedProxy: () => createDestroyedProxy2, + decode: () => decode, + defaultPropertyCloner: () => defaultPropertyCloner, + enumerable: () => enumerable, + fetchStreamWithProgress: () => fetchStreamWithProgress, + fetchWithProgress: () => fetchWithProgress, + getBaseUrl: () => getBaseUrl, + getFilename: () => getFilename, + getType: () => getType, + inheritProperties: () => inheritProperties, + isImageLike: () => isImageLike, + isNumber: () => isNumber, + isString: () => isString, + isUndefined: () => isUndefined, + loadRuntime: () => loadRuntime, + math: () => math, + nativeProperty: () => nativeProperty, + onImageReady: () => onImageReady, + property: () => property, + timeout: () => timeout +}); +var __defProp2 = Object.defineProperty; +var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; +var __decorateClass = (decorators, target, key, kind) => { + for (var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc2(target, key) : target, i = decorators.length - 1, decorator; i >= 0; i--) + (decorator = decorators[i]) && (result = (kind ? decorator(target, key, result) : decorator(result)) || result); + return kind && result && __defProp2(target, key, result), result; +}; +var threads = () => (async (e) => { + try { + return typeof MessageChannel < "u" && new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)), WebAssembly.validate(e); + } catch { + return false; + } +})(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 5, 4, 1, 3, 1, 1, 10, 11, 1, 9, 0, 65, 0, 254, 16, 2, 0, 26, 11])); +var Type = ((Type2) => (Type2[Type2.Native = 0] = "Native", Type2[Type2.Bool = 1] = "Bool", Type2[Type2.Int = 2] = "Int", Type2[Type2.Float = 3] = "Float", Type2[Type2.String = 4] = "String", Type2[Type2.Enum = 5] = "Enum", Type2[Type2.Object = 6] = "Object", Type2[Type2.Mesh = 7] = "Mesh", Type2[Type2.Texture = 8] = "Texture", Type2[Type2.Material = 9] = "Material", Type2[Type2.Animation = 10] = "Animation", Type2[Type2.Skin = 11] = "Skin", Type2[Type2.Color = 12] = "Color", Type2[Type2.Vector2 = 13] = "Vector2", Type2[Type2.Vector3 = 14] = "Vector3", Type2[Type2.Vector4 = 15] = "Vector4", Type2[Type2.Array = 16] = "Array", Type2[Type2.Record = 17] = "Record", Type2[Type2.ParticleEffect = 18] = "ParticleEffect", Type2[Type2.Count = 19] = "Count", Type2))(Type || {}); +var DefaultPropertyCloner = class { + clone(type, value) { + switch (type) { + case 12: + case 13: + case 14: + case 15: + case 16: + return value.slice(); + case 17: { + if (!value || !value.constructor) + return value; + let RecordClass = value.constructor, result = new RecordClass(); + for (let key in RecordClass.Properties) { + let prop = RecordClass.Properties[key]; + result[key] = this.clone(prop.type, value[key]); + } + return result; + } + default: + return value; + } + } +}; +var defaultPropertyCloner = new DefaultPropertyCloner(); +var Property = { bool(defaultValue = false) { + return { type: 1, default: defaultValue }; +}, int(defaultValue = 0) { + return { type: 2, default: defaultValue }; +}, float(defaultValue = 0) { + return { type: 3, default: defaultValue }; +}, string(defaultValue = "") { + return { type: 4, default: defaultValue }; +}, enum(values, defaultValue) { + return { type: 5, values, default: defaultValue }; +}, object(opts) { + return { type: 6, default: null, required: opts?.required ?? false }; +}, mesh(opts) { + return { type: 7, default: null, required: opts?.required ?? false }; +}, texture(opts) { + return { type: 8, default: null, required: opts?.required ?? false }; +}, material(opts) { + return { type: 9, default: null, required: opts?.required ?? false }; +}, animation(opts) { + return { type: 10, default: null, required: opts?.required ?? false }; +}, skin(opts) { + return { type: 11, default: null, required: opts?.required ?? false }; +}, particleEffect(opts) { + return { type: 18, default: null, required: opts?.required ?? false }; +}, color(r = 0, g = 0, b = 0, a = 1) { + return { type: 12, default: [r, g, b, a] }; +}, vector2(x = 0, y = 0) { + return { type: 13, default: [x, y] }; +}, vector3(x = 0, y = 0, z = 0) { + return { type: 14, default: [x, y, z] }; +}, vector4(x = 0, y = 0, z = 0, w = 0) { + return { type: 15, default: [x, y, z, w] }; +}, record(definition) { + return { type: 17, record: definition, default: new definition() }; +}, array(element) { + return { type: 16, element, default: void 0 }; +} }; +function propertyDecorator(data) { + return function(target, propertyKey) { + let ctor = target.constructor; + ctor.Properties = ctor.hasOwnProperty("Properties") ? ctor.Properties : {}, ctor.Properties[propertyKey] = data; + }; +} +function enumerable() { + return function(_, __, descriptor) { + descriptor.enumerable = true; + }; +} +function nativeProperty() { + return function(target, propertyKey, descriptor) { + enumerable()(target, propertyKey, descriptor), propertyDecorator({ type: 0 })(target, propertyKey); + }; +} +var property = {}; +for (let name in Property) + property[name] = (...args) => { + let functor = Property[name]; + return propertyDecorator(functor(...args)); + }; +function isString(value) { + return value === "" ? true : value && (typeof value == "string" || value.constructor === String); +} +function isNumber(value) { + return value == null ? false : typeof value == "number" || value.constructor === Number; +} +function isImageLike(value) { + return value instanceof HTMLImageElement || value instanceof HTMLVideoElement || value instanceof HTMLCanvasElement; +} +var Emitter = class { + _listeners = []; + _notifying = false; + _transactions = []; + add(listener, opts = {}) { + let { once = false, id = void 0 } = opts, data = { id, once, callback: listener }; + return this._notifying ? (this._transactions.push({ type: 1, data }), this) : (this._listeners.push(data), this); + } + push(...listeners) { + for (let cb of listeners) + this.add(cb); + return this; + } + once(listener) { + return this.add(listener, { once: true }); + } + remove(listener) { + if (this._notifying) + return this._transactions.push({ type: 2, data: listener }), this; + let listeners = this._listeners; + for (let i = 0; i < listeners.length; ++i) { + let target = listeners[i]; + (target.callback === listener || target.id === listener) && listeners.splice(i--, 1); + } + return this; + } + has(listener) { + let listeners = this._listeners; + for (let i = 0; i < listeners.length; ++i) { + let target = listeners[i]; + if (target.callback === listener || target.id === listener) + return true; + } + return false; + } + notify(...data) { + let listeners = this._listeners; + this._notifying = true; + for (let i = 0; i < listeners.length; ++i) { + let listener = listeners[i]; + listener.once && listeners.splice(i--, 1); + try { + listener.callback(...data); + } catch (e) { + console.error(e); + } + } + this._notifying = false, this._flushTransactions(); + } + notifyUnsafe(...data) { + let listeners = this._listeners; + for (let i = 0; i < listeners.length; ++i) { + let listener = listeners[i]; + listener.once && listeners.splice(i--, 1), listener.callback(...data); + } + this._flushTransactions(); + } + promise() { + return new Promise((res, _) => { + this.once((...args) => { + args.length > 1 ? res(args) : res(args[0]); + }); + }); + } + get listenerCount() { + return this._listeners.length; + } + get isEmpty() { + return this.listenerCount === 0; + } + _flushTransactions() { + let listeners = this._listeners; + for (let transaction of this._transactions) + transaction.type === 1 ? listeners.push(transaction.data) : this.remove(transaction.data); + this._transactions.length = 0; + } +}; +var RetainEmitterUndefined = {}; +var RetainEmitter = class extends Emitter { + _event = RetainEmitterUndefined; + _reset; + add(listener, opts) { + let immediate = opts?.immediate ?? true; + return this._event !== RetainEmitterUndefined && immediate && listener(...this._event), super.add(listener, opts), this; + } + once(listener, immediate) { + return this.add(listener, { once: true, immediate }); + } + notify(...data) { + this._event = data, super.notify(...data); + } + notifyUnsafe(...data) { + this._event = data, super.notifyUnsafe(...data); + } + reset() { + return this._event = RetainEmitterUndefined, this; + } + get data() { + return this.isDataRetained ? this._event : void 0; + } + get isDataRetained() { + return this._event !== RetainEmitterUndefined; + } +}; +function createDestroyedProxy(host, type) { + return new Proxy({}, { get(_, param) { + if (param === "isDestroyed") + return true; + throw new Error(`Cannot read '${param}' of destroyed '${type.name}' resource from ${host}`); + }, set(_, param) { + throw new Error(`Cannot write '${param}' of destroyed '${type.name}' resource from ${host}`); + } }); +} +var Resource = class { + _index = -1; + _id = -1; + _engine; + constructor(engine2, index) { + this._engine = engine2, this._index = index, this._id = index; + } + get engine() { + return this._engine; + } + get index() { + return this._index; + } + equals(other) { + return other ? this._index === other._index : false; + } + get isDestroyed() { + return this._index <= 0; + } +}; +var SceneResource = class _SceneResource { + static _pack(scene, index) { + return scene << 22 | index; + } + _index = -1; + _id = -1; + _scene; + constructor(scene, index) { + this._scene = scene, this._index = index, this._id = _SceneResource._pack(scene._index, index); + } + equals(other) { + return other ? this._id === other._id : false; + } + get scene() { + return this._scene; + } + get engine() { + return this._scene.engine; + } + get index() { + return this._index; + } + get isDestroyed() { + return this._id <= 0; + } +}; +var ResourceManager = class { + _host; + _cache = []; + _template; + _destructor = null; + _engine; + constructor(host, Class) { + this._host = host, this._template = Class, this._engine = host.engine ?? host; + } + wrap(index) { + return index <= 0 ? null : this._cache[index] ?? (this._cache[index] = new this._template(this._host, index)); + } + get(index) { + return this._cache[index] ?? null; + } + get allocatedCount() { + return this._cache.length; + } + get count() { + let count = 0; + for (let res of this._cache) + res && res.index >= 0 && ++count; + return count; + } + get engine() { + return this._engine; + } + _destroy(instance) { + let index = instance.index; + instance._index = -1, instance._id = -1, this._cache[index] = null, this.engine.erasePrototypeOnDestroy && (this._destructor || (this._destructor = createDestroyedProxy(this._host, this._template)), Object.setPrototypeOf(instance, this._destructor)); + } + _clear() { + if (this.engine.erasePrototypeOnDestroy) { + for (let i = 0; i < this._cache.length; ++i) { + let instance = this._cache[i]; + instance && this._destroy(instance); + } + this._cache.length = 0; + } + } +}; +function decode(data, tagger = (_, value) => value, options = {}) { + let reader = new CBORReader(data); + reader.tagger = tagger, options.dictionary && (reader.dictionary = options.dictionary); + let ret = reader.decodeItem(); + if (reader.offset !== data.byteLength) + throw new Error("CBORError: Remaining bytes"); + return ret; +} +var CBORType = ((CBORType2) => (CBORType2[CBORType2.Array = 0] = "Array", CBORType2[CBORType2.Record = 1] = "Record", CBORType2[CBORType2.Constant = 2] = "Constant", CBORType2[CBORType2.Native = 3] = "Native", CBORType2))(CBORType || {}); +function getType(typeInfo) { + let majorType = typeInfo >> 5, additionalInformation = typeInfo & 31; + switch (majorType) { + case 4: + return 0; + case 5: + return 1; + case 7: + return 2; + } + return 3; +} +function isUndefined(type, length5) { + return type === 2 && length5 === 23; +} +var CBORReader = class { + dataView; + data; + offset; + tagger = (_, value) => value; + dictionary = "object"; + constructor(data) { + this.dataView = new DataView(data.buffer, data.byteOffset, data.byteLength), this.data = data, this.offset = 0; + } + readTypeInfo() { + return this.readUint8(); + } + readArrayLength(typeInfo) { + let majorType = typeInfo >> 5, additionalInformation = typeInfo & 31, length5 = this.readLength(additionalInformation); + if (length5 < 0 && (majorType < 2 || 6 < majorType)) + throw new Error("CBORError: Invalid length"); + return length5; + } + readItem(typeInfo, inputLen = null) { + let majorType = typeInfo >> 5, additionalInformation = typeInfo & 31, i; + if (majorType === 7) + switch (additionalInformation) { + case 25: + return this.readFloat16(); + case 26: + return this.readFloat32(); + case 27: + return this.readFloat64(); + } + let length5 = inputLen === null ? this.readLength(additionalInformation) : inputLen; + if (length5 < 0 && (majorType < 2 || 6 < majorType)) + throw new Error("CBORError: Invalid length"); + switch (majorType) { + case 0: + return length5; + case 1: + return typeof length5 == "number" ? -1 - length5 : -1n - length5; + case 2: { + if (length5 < 0) { + let elements = [], fullArrayLength = 0; + for (; (length5 = this.readIndefiniteStringLength(majorType)) >= 0; ) + fullArrayLength += length5, elements.push(this.readArrayBuffer(length5)); + let fullArray = new Uint8Array(fullArrayLength), fullArrayOffset = 0; + for (i = 0; i < elements.length; ++i) + fullArray.set(elements[i], fullArrayOffset), fullArrayOffset += elements[i].length; + return fullArray; + } + return this.readArrayBuffer(length5).slice(); + } + case 3: { + let utf16data = []; + if (length5 < 0) + for (; (length5 = this.readIndefiniteStringLength(majorType)) >= 0; ) + this.appendUtf16Data(utf16data, length5); + else + this.appendUtf16Data(utf16data, length5); + let string = "", DECODE_CHUNK_SIZE = 8192; + for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) + string += String.fromCharCode.apply(null, utf16data.slice(i, i + DECODE_CHUNK_SIZE)); + return string; + } + case 4: { + let retArray; + if (length5 < 0) + for (retArray = []; !this.readBreak(); ) + retArray.push(this.decodeItem()); + else + for (retArray = new Array(length5), i = 0; i < length5; ++i) + retArray[i] = this.decodeItem(); + return retArray; + } + case 5: { + if (this.dictionary === "map") { + let retMap = /* @__PURE__ */ new Map(); + for (i = 0; i < length5 || length5 < 0 && !this.readBreak(); ++i) { + let key = this.decodeItem(); + if (retMap.has(key)) + throw new Error("CBORError: Duplicate key encountered"); + retMap.set(key, this.decodeItem()); + } + return retMap; + } + let retObject = {}; + for (i = 0; i < length5 || length5 < 0 && !this.readBreak(); ++i) { + let key = this.decodeItem(); + if (Object.prototype.hasOwnProperty.call(retObject, key)) + throw new Error("CBORError: Duplicate key encountered"); + retObject[key] = this.decodeItem(); + } + return retObject; + } + case 6: { + let value = this.decodeItem(), tag = length5; + if (value instanceof Uint8Array) + switch (tag) { + case 2: + case 3: + let num = value.reduce((acc, n) => (acc << 8n) + BigInt(n), 0n); + return tag == 3 && (num = -1n - num), num; + case 64: + return value; + case 72: + return new Int8Array(value.buffer); + case 69: + return new Uint16Array(value.buffer); + case 77: + return new Int16Array(value.buffer); + case 70: + return new Uint32Array(value.buffer); + case 78: + return new Int32Array(value.buffer); + case 71: + return new BigUint64Array(value.buffer); + case 79: + return new BigInt64Array(value.buffer); + case 85: + return new Float32Array(value.buffer); + case 86: + return new Float64Array(value.buffer); + } + return this.tagger(tag, value); + } + case 7: + switch (length5) { + case 20: + return false; + case 21: + return true; + case 22: + return null; + case 23: + return; + default: + return length5; + } + } + } + decodeItem() { + let initialByte = this.readUint8(); + return this.readItem(initialByte); + } + readArrayBuffer(length5) { + return this.commitRead(length5, this.data.subarray(this.offset, this.offset + length5)); + } + readFloat16() { + let POW_2_24 = 5960464477539063e-23, tempArrayBuffer = new ArrayBuffer(4), tempDataView = new DataView(tempArrayBuffer), value = this.readUint16(), sign = value & 32768, exponent = value & 31744, fraction = value & 1023; + if (exponent === 31744) + exponent = 261120; + else if (exponent !== 0) + exponent += 114688; + else if (fraction !== 0) + return (sign ? -1 : 1) * fraction * POW_2_24; + return tempDataView.setUint32(0, sign << 16 | exponent << 13 | fraction << 13), tempDataView.getFloat32(0); + } + readFloat32() { + return this.commitRead(4, this.dataView.getFloat32(this.offset)); + } + readFloat64() { + return this.commitRead(8, this.dataView.getFloat64(this.offset)); + } + readUint8() { + return this.commitRead(1, this.data[this.offset]); + } + readUint16() { + return this.commitRead(2, this.dataView.getUint16(this.offset)); + } + readUint32() { + return this.commitRead(4, this.dataView.getUint32(this.offset)); + } + readUint64() { + return this.commitRead(8, this.dataView.getBigUint64(this.offset)); + } + readBreak() { + return this.data[this.offset] !== 255 ? false : (this.offset += 1, true); + } + readLength(additionalInformation) { + if (additionalInformation < 24) + return additionalInformation; + if (additionalInformation === 24) + return this.readUint8(); + if (additionalInformation === 25) + return this.readUint16(); + if (additionalInformation === 26) + return this.readUint32(); + if (additionalInformation === 27) { + let integer = this.readUint64(); + return integer <= Number.MAX_SAFE_INTEGER ? Number(integer) : integer; + } + if (additionalInformation === 31) + return -1; + throw new Error("CBORError: Invalid length encoding"); + } + readIndefiniteStringLength(majorType) { + let initialByte = this.readUint8(); + if (initialByte === 255) + return -1; + let length5 = this.readLength(initialByte & 31); + if (length5 < 0 || initialByte >> 5 !== majorType) + throw new Error("CBORError: Invalid indefinite length element"); + return Number(length5); + } + appendUtf16Data(utf16data, length5) { + for (let i = 0; i < length5; ++i) { + let value = this.readUint8(); + value & 128 && (value < 224 ? (value = (value & 31) << 6 | this.readUint8() & 63, length5 -= 1) : value < 240 ? (value = (value & 15) << 12 | (this.readUint8() & 63) << 6 | this.readUint8() & 63, length5 -= 2) : (value = (value & 7) << 18 | (this.readUint8() & 63) << 12 | (this.readUint8() & 63) << 6 | this.readUint8() & 63, length5 -= 3)), value < 65536 ? utf16data.push(value) : (value -= 65536, utf16data.push(55296 | value >> 10), utf16data.push(56320 | value & 1023)); + } + } + commitRead(length5, value) { + return this.offset += length5, value; + } +}; +var ComponentManagers = class { + animation = -1; + collision = -1; + js = -1; + physx = -1; + view = -1; + _cache = []; + _constructors; + _nativeManagers = /* @__PURE__ */ new Map(); + _scene; + constructor(scene) { + this._scene = scene; + let wasm = this._scene.engine.wasm, native = [AnimationComponent, CollisionComponent, InputComponent, LightComponent, MeshComponent, PhysXComponent, TextComponent, ViewComponent, ParticleEffectComponent]; + this._cache = new Array(native.length), this._constructors = new Array(native.length); + for (let Class of native) { + let ptr2 = wasm.tempUTF8(Class.TypeName), manager = wasm._wl_scene_get_component_manager_index(scene._index, ptr2); + this._constructors[manager] = Class, this._cache[manager] = [], this._nativeManagers.set(Class.TypeName, manager); + } + this.animation = this._nativeManagers.get(AnimationComponent.TypeName), this.collision = this._nativeManagers.get(CollisionComponent.TypeName), this.physx = this._nativeManagers.get(PhysXComponent.TypeName), this.view = this._nativeManagers.get(ViewComponent.TypeName); + let ptr = wasm.tempUTF8("js"); + this.js = wasm._wl_scene_get_component_manager_index(scene._index, ptr), this._cache[this.js] = []; + } + createJs(index, id, type, object) { + let ctor = this._scene.engine.wasm._componentTypes[type]; + if (!ctor) + throw new Error(`Type index ${type} isn't registered`); + let log = this._scene.engine.log, component = null; + try { + component = new ctor(this._scene, this.js, id); + } catch (e) { + log.error(2, `Exception during instantiation of component ${ctor.TypeName}`), log.error(2, e), component = new BrokenComponent(this._scene); + } + component._object = this._scene.wrap(object); + try { + component.resetProperties(); + } catch (e) { + log.error(2, `Exception during ${component.type} resetProperties() on object ${component.object.name}`), log.error(2, e); + } + return this._scene._jsComponents[index] = component, this._cache[this.js][id] = component, component; + } + components(type, active) { + return this.componentsFromTypename(type.TypeName, active); + } + componentsFromTypename(typename, active) { + let wasm = this._scene.engine.wasm, manager = this.getNativeManager(typename) ?? this.js, subTypeIndex = manager === this.js ? wasm._componentTypeIndices[typename] ?? 0 : 0, maxRead = wasm._tempMemSize / 4, components = [], read = 0, offset2 = 0; + for (; read = wasm._wl_scene_get_components(this._scene._index, manager, subTypeIndex, active, offset2, maxRead, wasm._tempMem); ) { + for (let i = 0; i < read; ++i) { + let id = wasm._tempMemUint32[i]; + components.push(this.wrapAny(manager, id)); + } + offset2 += maxRead; + } + return components; + } + componentAt(type, index) { + let wasm = this._scene.engine.wasm, manager = this.getNativeManager(type.TypeName), id = wasm._wl_scene_get_component(this._scene._index, manager, index); + return this.wrapAny(manager, id); + } + get(manager, id) { + return this._cache[manager][id] ?? null; + } + wrapAnimation(id) { + return this.wrapNative(this.animation, id); + } + wrapCollision(id) { + return this.wrapNative(this.collision, id); + } + wrapView(id) { + return this.wrapNative(this.view, id); + } + wrapPhysx(id) { + return this.wrapNative(this.physx, id); + } + wrapNative(manager, id) { + if (id < 0) + return null; + let cache = this._cache[manager]; + if (cache[id]) + return cache[id]; + let scene = this._scene, Class = this._constructors[manager], component = new Class(scene, manager, id); + return cache[id] = component, component; + } + wrapAny(manager, id) { + if (id < 0) + return null; + if (manager === this.js) { + let found = this._cache[this.js][id]; + if (!found) + throw new Error("JS components must always be cached"); + return found.constructor !== BrokenComponent ? found : null; + } + return this.wrapNative(manager, id); + } + getNativeManager(name) { + let manager = this._nativeManagers.get(name); + return manager !== void 0 ? manager : null; + } + destroy(instance) { + let localId = instance._localId, manager = instance._manager; + instance._id = -1, instance._localId = -1, instance._manager = -1, this._scene.engine.erasePrototypeOnDestroy && instance && Object.setPrototypeOf(instance, DestroyedComponentInstance), this._cache[manager][localId] = null; + } + get managersCount() { + return this._scene.engine.wasm._wl_scene_get_component_manager_count(this._scene._index); + } +}; +function resetComponentProperties(record) { + let properties = record.constructor.Properties; + if (properties) + for (let name in properties) { + let property2 = properties[name], cloner = property2.cloner ?? defaultPropertyCloner; + record[name] = cloner.clone(property2.type, property2.default); + } +} +function setupComponentClass(ctor) { + inheritProperties(ctor); + for (let name in ctor.Properties) { + let prop = ctor.Properties[name], record = null; + switch (prop.type) { + case 17: + record = prop.record; + break; + case 16: + record = prop.element?.record; + break; + default: + break; + } + record && !record._propertyOrder && setupComponentClass(record); + } + _setupDefaults(ctor), _setPropertyOrder(ctor); +} +var ComponentPropertyDecoder = class { + scene; + offsets; + constructor(scene, offsets) { + this.scene = scene, this.offsets = offsets; + } + decode(cbor, component) { + let ctor = component.constructor; + ctor._propertyOrder || setupComponentClass(ctor); + let typeInfo = cbor.readTypeInfo(); + if (ctor === BrokenComponent) + return cbor.readItem(typeInfo); + if (getType(typeInfo) !== 0) + return this._error(`${component} parameters not encoded as an array.`), cbor.readItem(typeInfo); + let paramNames = ctor._propertyOrder, count = cbor.readArrayLength(typeInfo); + if (count !== paramNames.length) + return this._error(`${component} has ${count} parameters encoded, but expected ${paramNames.length}`), cbor.readItem(typeInfo, count); + for (let j = 0; j < count; ++j) { + let name = paramNames[j], property2 = ctor.Properties[name]; + component[name] = this.decodeProperty(cbor, name, property2); + } + } + decodeProperty(cbor, name, property2) { + let typeInfo = cbor.readTypeInfo(); + if (property2.type === 17) + return this.decodeRecordProperty(cbor, name, property2, typeInfo); + if (property2.type === 16) + return this.decodeArrayProperty(cbor, name, property2, typeInfo); + let value = cbor.readItem(typeInfo); + if (value === void 0) + return value = (property2.cloner ?? defaultPropertyCloner).clone(property2.type, property2.default), value; + typeof value == "number" && (value += this.offsets[property2.type]); + let engine2 = this.scene.engine; + switch (property2.type) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 13: + case 14: + case 15: + return value; + case 6: { + let wasm = engine2.wasm; + return value ? this.scene.wrap(wasm._wl_object_id(this.scene._index, value)) : null; + } + case 7: + return engine2.meshes.wrap(value); + case 8: + return engine2.textures.wrap(value); + case 9: + return engine2.materials.wrap(value); + case 18: + return engine2.particleEffects.wrap(value); + case 10: + return this.scene.animations.wrap(value); + case 11: + return this.scene.skins.wrap(value); + case 12: { + let max2 = (1 << value.BYTES_PER_ELEMENT * 8) - 1; + return Float32Array.from(value, (f, _) => f / max2); + } + } + } + decodeRecordProperty(cbor, name, property2, typeInfo) { + let cborType = getType(typeInfo); + if (cborType !== 0 && cborType !== 2) + return this._error(`Record parameter '${name}' not serialized as an array`), cbor.readItem(typeInfo), null; + let record = property2.record; + if (!record) + return this._error(`Record parameter '${name}' .record is undefined`), cbor.readItem(typeInfo), null; + record._propertyOrder || setupComponentClass(record); + let propertyOrder = record._propertyOrder, count = cbor.readArrayLength(typeInfo); + if (isUndefined(cborType, count)) + return (property2.cloner ?? defaultPropertyCloner).clone(property2.type, property2.default); + let result = new record(); + if (count !== propertyOrder.length) { + let propsCount = propertyOrder.length; + return this._error(`Record parameter ${name} has ${count} sub-parameters encoded, but expected ${propsCount}`), cbor.readItem(typeInfo, count), result; + } + let order = record._propertyOrder; + for (let i = 0; i < order.length; ++i) { + let key = order[i], prop = record.Properties[key]; + result[key] = this.decodeProperty(cbor, key, prop); + } + return result; + } + decodeArrayProperty(cbor, name, property2, typeInfo) { + let log = this.scene.engine.log, cborType = getType(typeInfo); + if (cborType !== 0 && cborType !== 2) + return this._error(`Array parameter '${name}' not serialized as an array`), cbor.readItem(typeInfo), []; + if (!property2.element) + return this._error(`Array parameter '${name}' .element property is undefined`), cbor.readItem(typeInfo), []; + let count = cbor.readArrayLength(typeInfo); + if (isUndefined(cborType, count)) + return []; + let result = new Array(count); + for (let i = 0; i < count; ++i) + result[i] = this.decodeProperty(cbor, name, property2.element); + return result; + } + _error(msg) { + this.scene.engine.log.error(0, msg); + } +}; +var _componentDefaults = /* @__PURE__ */ new Map([[1, false], [2, 0], [3, 0], [4, ""], [5, void 0], [6, null], [7, null], [8, null], [9, null], [10, null], [11, null], [18, null], [12, Float32Array.from([0, 0, 0, 1])], [13, Float32Array.from([0, 0])], [14, Float32Array.from([0, 0, 0])], [15, Float32Array.from([0, 0, 0, 0])], [17, void 0], [16, []]]); +function _setupDefaults(ctor) { + for (let name in ctor.Properties) { + let p = ctor.Properties[name]; + if (p.type === 5) + p.values?.length ? (typeof p.default != "number" && (p.default = p.values.indexOf(p.default)), (p.default < 0 || p.default >= p.values.length) && (p.default = 0)) : p.default = void 0; + else if ((p.type === 12 || p.type === 13 || p.type === 14 || p.type === 15) && Array.isArray(p.default)) + p.default = Float32Array.from(p.default); + else if (p.type === 17 && p.record) + p.default = new p.record(), resetComponentProperties(p.default); + else if (p.default === void 0) { + let cloner = p.cloner ?? defaultPropertyCloner; + p.default = cloner.clone(p.type, _componentDefaults.get(p.type)); + } + ctor.prototype[name] = p.default; + } +} +function _setPropertyOrder(ctor) { + ctor._propertyOrder = ctor.hasOwnProperty("Properties") ? Object.keys(ctor.Properties).sort() : []; +} +var FetchProgressTransformer = class { + #progress = 0; + #callback; + #totalSize; + constructor(callback, totalSize = 0) { + this.#callback = callback, this.#totalSize = totalSize; + } + transform(chunk, controller) { + controller.enqueue(chunk), this.#progress += chunk.length, this.#totalSize > 0 && this.#callback(this.#progress, this.#totalSize); + } + flush() { + this.#callback(this.#progress, this.#progress); + } +}; +var ArrayBufferSink = class { + #buffer; + #offset = 0; + constructor(size = 0) { + this.#buffer = new Uint8Array(size); + } + get arrayBuffer() { + let arrayBuffer = this.#buffer.buffer; + return this.#offset < arrayBuffer.byteLength ? arrayBuffer.slice(0, this.#offset) : arrayBuffer; + } + write(chunk) { + let newLength = this.#offset + chunk.length; + if (newLength > this.#buffer.length) { + let newBuffer = new Uint8Array(Math.max(this.#buffer.length * 1.5, newLength)); + newBuffer.set(this.#buffer), this.#buffer = newBuffer; + } + this.#buffer.set(chunk, this.#offset), this.#offset = newLength; + } +}; +var ArrayBufferSource = class { + #buffer; + constructor(buffer) { + this.#buffer = buffer; + } + start(controller) { + this.#buffer.byteLength > 0 && controller.enqueue(new Uint8Array(this.#buffer)), controller.close(); + } +}; +async function fetchWithProgress(path, onProgress, signal) { + let res = await fetch(path, { signal }); + if (!res.ok) + throw res.statusText; + if (!onProgress || !res.body) + return res.arrayBuffer(); + let size = Number(res.headers.get("Content-Length") ?? 0); + Number.isNaN(size) && (size = 0); + let sink = new ArrayBufferSink(size); + return await res.body.pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size))).pipeTo(new WritableStream(sink)), sink.arrayBuffer; +} +async function fetchStreamWithProgress(path, onProgress, signal) { + let res = await fetch(path, { signal }); + if (!res.ok) + throw res.statusText; + let body = res.body ?? new ReadableStream(), size = Number(res.headers.get("Content-Length") ?? 0); + return Number.isNaN(size) && (size = 0), onProgress ? body.pipeThrough(new TransformStream(new FetchProgressTransformer(onProgress, size))) : body; +} +function getBaseUrl(url) { + return url.substring(0, url.lastIndexOf("/")); +} +function getFilename(url) { + url.endsWith("/") && (url = url.substring(0, url.lastIndexOf("/"))); + let lastSlash = url.lastIndexOf("/"); + return lastSlash < 0 ? url : url.substring(lastSlash + 1); +} +function onImageReady(image) { + return new Promise((res, rej) => { + if (image instanceof HTMLVideoElement) { + if (image.readyState >= 2) { + res(image); + return; + } + image.addEventListener("loadeddata", () => { + image.readyState >= 2 && res(image); + }, { once: true }); + return; + } else if (!(image instanceof HTMLImageElement) || image.complete) { + res(image); + return; + } + image.addEventListener("load", () => res(image), { once: true }), image.addEventListener("error", rej, { once: true }); + }); +} +var Prefab = class _Prefab { + static makeUrlLoadOptions(options) { + return isString(options) ? { url: options } : options; + } + static async loadBuffer(options, progress) { + let opts = _Prefab.makeUrlLoadOptions(options), buffer = await fetchWithProgress(opts.url, progress, opts.signal), baseURL = getBaseUrl(opts.url), filename = getFilename(opts.url); + return { ...opts, buffer, baseURL, filename }; + } + static async loadStream(options, progress) { + let opts = _Prefab.makeUrlLoadOptions(options), stream = await fetchStreamWithProgress(opts.url, progress, opts.signal), baseURL = getBaseUrl(opts.url), filename = getFilename(opts.url); + return { ...opts, stream, baseURL, filename }; + } + static validateBufferOptions(options) { + let { buffer, baseURL, filename = "scene.bin" } = options; + if (!buffer) + throw new Error("missing 'buffer' in options"); + if (!isString(baseURL)) + throw new Error("missing 'baseURL' in options"); + let url = baseURL ? `${baseURL}/${filename}` : filename; + return { buffer, baseURL, url }; + } + static validateStreamOptions(options) { + let { stream, baseURL, filename = "scene.bin" } = options; + if (!stream) + throw new Error("missing 'stream' in options"); + if (!isString(baseURL)) + throw new Error("missing 'baseURL' in options"); + let url = baseURL ? `${baseURL}/${filename}` : filename; + return { stream, baseURL, url }; + } + _index; + _engine; + _components; + _jsComponents = []; + _pxCallbacks = /* @__PURE__ */ new Map(); + _animations; + _skins; + _objectCache = []; + _pendingDestroy = 0; + constructor(engine2, index) { + this._engine = engine2, this._index = index, this._components = new ComponentManagers(this), this._animations = new ResourceManager(this, Animation), this._skins = new ResourceManager(this, Skin); + } + addChild() { + return this.wrap(0).addChild(); + } + addObject(parent = null) { + if (parent?.markedDestroyed) + throw new Error(`Failed to add object. ${parent} is marked as destroyed.`); + return this.assertOrigin(parent), (parent ?? this.wrap(0)).addChild(); + } + addObjects(count, parent = null, componentCountHint = 0) { + let parentId = parent ? parent._id : 0; + this.engine.wasm.requireTempMem(count * 2); + let actualCount = this.engine.wasm._wl_scene_add_objects(this._index, parentId, count, componentCountHint || 0, this.engine.wasm._tempMem, this.engine.wasm._tempMemSize >> 1), ids = this.engine.wasm._tempMemUint16.subarray(0, actualCount), wrapper = this.wrap.bind(this); + return Array.from(ids, wrapper); + } + reserveObjects(objectCount, componentCountPerType) { + let wasm = this.engine.wasm; + if (!componentCountPerType) + return; + let countsPerTypeIndex = wasm._tempMemInt, managerCount = this._components.managersCount; + for (let i = 0; i < managerCount; ++i) + countsPerTypeIndex[i] = 0; + let names = Object.keys(componentCountPerType); + for (let name of names) { + let count = componentCountPerType[name], nativeIndex = this._components.getNativeManager(name); + countsPerTypeIndex[nativeIndex !== null ? nativeIndex : this._components.js] += count; + } + wasm._wl_scene_reserve_objects(this._index, objectCount, wasm._tempMem); + } + getChildren(out = new Array(this.childrenCount)) { + return this.wrap(0).getChildren(out); + } + getComponents(typeOrClass) { + let typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName; + return this._components.componentsFromTypename(typename, false); + } + getActiveComponents(typeOrClass) { + let typename = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName; + return this._components.componentsFromTypename(typename, true); + } + get children() { + return this.wrap(0).children; + } + get childrenCount() { + let root = this.wrap(0); + return this.engine.wasm._wl_object_get_children_count(root._id); + } + findByName(name, recursive = false) { + return this.wrap(0).findByName(name, recursive); + } + findByNameDirect(name) { + return this.wrap(0).findByNameDirect(name); + } + findByNameRecursive(name) { + return this.wrap(0).findByNameRecursive(name); + } + wrap(objectId) { + let cache = this._objectCache; + return cache[objectId] || (cache[objectId] = new Object3D2(this, objectId)); + } + destroy() { + if (this._pendingDestroy > 0) + throw new Error("It's forbidden to destroy a scene from onDestroy()."); + this._pxCallbacks.clear(), this.engine._destroyScene(this); + } + get isActive() { + return !!this.engine.wasm._wl_scene_active(this._index); + } + get baseURL() { + let wasm = this.engine.wasm, ptr = wasm._wl_scene_get_baseURL(this._index); + return ptr ? wasm.UTF8ToString(ptr) : ""; + } + get filename() { + let wasm = this.engine.wasm, ptr = wasm._wl_scene_get_filename(this._index); + return ptr ? wasm.UTF8ToString(ptr) : ""; + } + get animations() { + return this._animations; + } + get skins() { + return this._skins; + } + get engine() { + return this._engine; + } + get isDestroyed() { + return this._index < 0; + } + toString() { + return this.isDestroyed ? "Scene(destroyed)" : `Scene('${this.filename}', ${this._index})`; + } + assertOrigin(other) { + if (other && other.scene !== this) + throw new Error(`Attempt to use ${other} from ${other.scene} in ${this}`); + } + _initialize() { + this.engine.wasm._wl_scene_initialize(this._index); + } + _destroyObject(localId) { + let instance = this._objectCache[localId]; + instance && (instance._id = -1, instance._localId = -1, this.engine.erasePrototypeOnDestroy && instance && Object.setPrototypeOf(instance, DestroyedObjectInstance), this._objectCache[localId] = null); + } + _destroyComponent(manager, id) { + let component = this._components.get(manager, id); + ++this._pendingDestroy, component?._triggerOnDestroy(), --this._pendingDestroy; + } +}; +function timeout(time) { + return new Promise((res) => setTimeout(res, time)); +} +function clamp(val, min2, max2) { + return Math.max(Math.min(max2, val), min2); +} +function capitalizeFirstUTF8(str5) { + return `${str5[0].toUpperCase()}${str5.substring(1)}`; +} +function createDestroyedProxy2(type) { + return new Proxy({}, { get(_, param) { + if (param === "isDestroyed") + return true; + throw new Error(`Cannot read '${param}' of destroyed ${type}`); + }, set(_, param) { + throw new Error(`Cannot write '${param}' of destroyed ${type}`); + } }); +} +var LogTag = ((LogTag2) => (LogTag2[LogTag2.Engine = 0] = "Engine", LogTag2[LogTag2.Scene = 1] = "Scene", LogTag2[LogTag2.Component = 2] = "Component", LogTag2))(LogTag || {}); +var Collider = ((Collider2) => (Collider2[Collider2.Sphere = 0] = "Sphere", Collider2[Collider2.AxisAlignedBox = 1] = "AxisAlignedBox", Collider2[Collider2.Box = 2] = "Box", Collider2))(Collider || {}); +var Alignment = ((Alignment2) => (Alignment2[Alignment2.Left = 0] = "Left", Alignment2[Alignment2.Center = 1] = "Center", Alignment2[Alignment2.Right = 2] = "Right", Alignment2))(Alignment || {}); +var VerticalAlignment = ((VerticalAlignment2) => (VerticalAlignment2[VerticalAlignment2.Line = 0] = "Line", VerticalAlignment2[VerticalAlignment2.Middle = 1] = "Middle", VerticalAlignment2[VerticalAlignment2.Top = 2] = "Top", VerticalAlignment2[VerticalAlignment2.Bottom = 3] = "Bottom", VerticalAlignment2))(VerticalAlignment || {}); +var Justification = VerticalAlignment; +var TextEffect = ((TextEffect2) => (TextEffect2[TextEffect2.None = 0] = "None", TextEffect2[TextEffect2.Outline = 1] = "Outline", TextEffect2[TextEffect2.Shadow = 2] = "Shadow", TextEffect2))(TextEffect || {}); +var TextWrapMode = ((TextWrapMode2) => (TextWrapMode2[TextWrapMode2.None = 0] = "None", TextWrapMode2[TextWrapMode2.Soft = 1] = "Soft", TextWrapMode2[TextWrapMode2.Hard = 2] = "Hard", TextWrapMode2[TextWrapMode2.Clip = 3] = "Clip", TextWrapMode2))(TextWrapMode || {}); +var InputType = ((InputType3) => (InputType3[InputType3.Head = 0] = "Head", InputType3[InputType3.EyeLeft = 1] = "EyeLeft", InputType3[InputType3.EyeRight = 2] = "EyeRight", InputType3[InputType3.ControllerLeft = 3] = "ControllerLeft", InputType3[InputType3.ControllerRight = 4] = "ControllerRight", InputType3[InputType3.RayLeft = 5] = "RayLeft", InputType3[InputType3.RayRight = 6] = "RayRight", InputType3))(InputType || {}); +var ProjectionType = ((ProjectionType2) => (ProjectionType2[ProjectionType2.Perspective = 0] = "Perspective", ProjectionType2[ProjectionType2.Orthographic = 1] = "Orthographic", ProjectionType2))(ProjectionType || {}); +var LightType = ((LightType2) => (LightType2[LightType2.Point = 0] = "Point", LightType2[LightType2.Spot = 1] = "Spot", LightType2[LightType2.Sun = 2] = "Sun", LightType2))(LightType || {}); +var AnimationState = ((AnimationState2) => (AnimationState2[AnimationState2.Playing = 0] = "Playing", AnimationState2[AnimationState2.Paused = 1] = "Paused", AnimationState2[AnimationState2.Stopped = 2] = "Stopped", AnimationState2))(AnimationState || {}); +var RootMotionMode = ((RootMotionMode2) => (RootMotionMode2[RootMotionMode2.None = 0] = "None", RootMotionMode2[RootMotionMode2.ApplyToOwner = 1] = "ApplyToOwner", RootMotionMode2[RootMotionMode2.Script = 2] = "Script", RootMotionMode2))(RootMotionMode || {}); +var ForceMode = ((ForceMode2) => (ForceMode2[ForceMode2.Force = 0] = "Force", ForceMode2[ForceMode2.Impulse = 1] = "Impulse", ForceMode2[ForceMode2.VelocityChange = 2] = "VelocityChange", ForceMode2[ForceMode2.Acceleration = 3] = "Acceleration", ForceMode2))(ForceMode || {}); +var CollisionEventType = ((CollisionEventType2) => (CollisionEventType2[CollisionEventType2.Touch = 0] = "Touch", CollisionEventType2[CollisionEventType2.TouchLost = 1] = "TouchLost", CollisionEventType2[CollisionEventType2.TriggerTouch = 2] = "TriggerTouch", CollisionEventType2[CollisionEventType2.TriggerTouchLost = 3] = "TriggerTouchLost", CollisionEventType2))(CollisionEventType || {}); +var Shape = ((Shape2) => (Shape2[Shape2.None = 0] = "None", Shape2[Shape2.Sphere = 1] = "Sphere", Shape2[Shape2.Capsule = 2] = "Capsule", Shape2[Shape2.Box = 3] = "Box", Shape2[Shape2.Plane = 4] = "Plane", Shape2[Shape2.ConvexMesh = 5] = "ConvexMesh", Shape2[Shape2.TriangleMesh = 6] = "TriangleMesh", Shape2))(Shape || {}); +var MeshAttribute = ((MeshAttribute2) => (MeshAttribute2[MeshAttribute2.Position = 0] = "Position", MeshAttribute2[MeshAttribute2.Tangent = 1] = "Tangent", MeshAttribute2[MeshAttribute2.Normal = 2] = "Normal", MeshAttribute2[MeshAttribute2.TextureCoordinate = 3] = "TextureCoordinate", MeshAttribute2[MeshAttribute2.Color = 4] = "Color", MeshAttribute2[MeshAttribute2.JointId = 5] = "JointId", MeshAttribute2[MeshAttribute2.JointWeight = 6] = "JointWeight", MeshAttribute2[MeshAttribute2.SecondaryTextureCoordinate = 7] = "SecondaryTextureCoordinate", MeshAttribute2))(MeshAttribute || {}); +var DestroyedObjectInstance = createDestroyedProxy2("object"); +var DestroyedComponentInstance = createDestroyedProxy2("component"); +var DestroyedPrefabInstance = createDestroyedProxy2("prefab/scene"); +function isMeshShape(shape) { + return shape === 5 || shape === 6; +} +function isBaseComponentClass(value) { + return !!value && value.hasOwnProperty("_isBaseComponent") && value._isBaseComponent; +} +var UP_VECTOR = [0, 1, 0]; +var SQRT_3 = Math.sqrt(3); +var _a; +var Component3 = (_a = class { + static _pack(scene, id) { + return scene << 22 | id; + } + static _inheritProperties() { + inheritProperties(this); + } + _manager; + _id; + _localId; + _object; + _scene; + constructor(scene, manager = -1, id = -1) { + this._scene = scene, this._manager = manager, this._localId = id, this._id = _a._pack(scene._index, id), this._object = null; + } + get scene() { + return this._scene; + } + get engine() { + return this._scene.engine; + } + get type() { + return this.constructor.TypeName; + } + get object() { + if (!this._object) { + let objectId = this.engine.wasm._wl_component_get_object(this._manager, this._id); + this._object = this._scene.wrap(objectId); + } + return this._object; + } + set active(active) { + this.engine.wasm._wl_component_setActive(this._manager, this._id, active); + } + get active() { + return this.markedActive && this._scene.isActive; + } + get markedActive() { + return this.engine.wasm._wl_component_isActive(this._manager, this._id) != 0; + } + copy(src) { + let properties = this.constructor.Properties; + if (!properties) + return this; + for (let name in properties) { + let property2 = properties[name], value = src[name]; + if (value === void 0) + continue; + let cloner = property2.cloner ?? defaultPropertyCloner; + this[name] = cloner.clone(property2.type, value); + } + return this; + } + destroy() { + let manager = this._manager; + manager < 0 || this._id < 0 || this.engine.wasm._wl_component_remove(manager, this._id); + } + equals(otherComponent) { + return otherComponent ? this._manager === otherComponent._manager && this._id === otherComponent._id : false; + } + resetProperties() { + return resetComponentProperties(this), this; + } + reset() { + return this.resetProperties(); + } + validateProperties() { + let ctor = this.constructor; + if (ctor.Properties) { + for (let name in ctor.Properties) + if (ctor.Properties[name].required && !this[name]) + throw new Error(`Property '${name}' is required but was not initialized`); + } + } + toString() { + return this.isDestroyed ? "Component(destroyed)" : `Component('${this.type}', ${this._localId})`; + } + get isDestroyed() { + return this._id < 0; + } + _copy(src, offsetsPtr, copyInfoPtr) { + let wasm = this.engine.wasm, offsets = wasm.HEAPU32, offsetsStart = offsetsPtr >>> 2, copyInfoStart = copyInfoPtr >>> 1, srcRootIndex = wasm.HEAPU16[copyInfoStart], srcRootSize = wasm.HEAPU16[copyInfoStart + 1], dstRootIndex = wasm.HEAPU16[copyInfoStart + 2], destScene = this._scene, ctor = this.constructor; + for (let name in ctor.Properties) { + let value = src[name]; + if (value === null) { + this[name] = null; + continue; + } + let prop = ctor.Properties[name], offset2 = offsets[offsetsStart + prop.type], retargeted = null; + switch (prop.type) { + case 6: { + let index = wasm._wl_object_index(value._id) + offset2, dist2 = index - srcRootIndex; + dist2 >= 0 && dist2 <= srcRootSize && (index = dstRootIndex + dist2); + let id = wasm._wl_object_id(destScene._index, index); + retargeted = destScene.wrap(id); + break; + } + case 10: + retargeted = destScene.animations.wrap(offset2 + value._index); + break; + case 11: + retargeted = destScene.skins.wrap(offset2 + value._index); + break; + default: + retargeted = (prop.cloner ?? defaultPropertyCloner).clone(prop.type, value); + break; + } + this[name] = retargeted; + } + return this; + } + _triggerInit() { + if (this.init) + try { + this.init(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} init() on object ${this.object.name}`), this.engine.log.error(2, e); + } + let oldActivate = this.onActivate; + this.onActivate = function() { + this.onActivate = oldActivate; + let failed = false; + try { + this.validateProperties(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} validateProperties() on object ${this.object.name}`), this.engine.log.error(2, e), failed = true; + } + try { + this.start?.(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} start() on object ${this.object.name}`), this.engine.log.error(2, e), failed = true; + } + if (failed) { + this.active = false; + return; + } + if (this.onActivate) + try { + this.onActivate(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} onActivate() on object ${this.object.name}`), this.engine.log.error(2, e); + } + }; + } + _triggerUpdate(dt) { + if (this.update) + try { + this.update(dt); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} update() on object ${this.object.name}`), this.engine.log.error(2, e), this.engine.wasm._deactivate_component_on_error && (this.active = false); + } + } + _triggerOnActivate() { + if (this.onActivate) + try { + this.onActivate(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} onActivate() on object ${this.object.name}`), this.engine.log.error(2, e); + } + } + _triggerOnDeactivate() { + if (this.onDeactivate) + try { + this.onDeactivate(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} onDeactivate() on object ${this.object.name}`), this.engine.log.error(2, e); + } + } + _triggerOnDestroy() { + try { + this.onDestroy && this.onDestroy(); + } catch (e) { + this.engine.log.error(2, `Exception during ${this.type} onDestroy() on object ${this.object.name}`), this.engine.log.error(2, e); + } + this._scene._components.destroy(this); + } +}, __publicField(_a, "_isBaseComponent", true), __publicField(_a, "_propertyOrder", []), __publicField(_a, "TypeName"), __publicField(_a, "Properties"), __publicField(_a, "InheritProperties"), __publicField(_a, "onRegister"), _a); +var _a2; +var BrokenComponent = (_a2 = class extends Component3 { +}, __publicField(_a2, "TypeName", "__broken-component__"), _a2); +function inheritProperties(target) { + let chain = [], curr = target; + for (; curr && !isBaseComponentClass(curr); ) { + let comp = curr; + if (!(comp.hasOwnProperty("InheritProperties") ? comp.InheritProperties : true)) + break; + comp.hasOwnProperty("Properties") && chain.push(comp), curr = Object.getPrototypeOf(curr); + } + if (!chain.length || chain.length === 1 && chain[0] === target) + return; + let merged = {}; + for (let i = chain.length - 1; i >= 0; --i) + Object.assign(merged, chain[i].Properties); + target.Properties = merged; +} +var _a3; +var CollisionComponent = (_a3 = class extends Component3 { + getExtents(out = new Float32Array(3)) { + let wasm = this.engine.wasm, ptr = wasm._wl_collision_component_get_extents(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out; + } + get collider() { + return this.engine.wasm._wl_collision_component_get_collider(this._id); + } + set collider(collider) { + this.engine.wasm._wl_collision_component_set_collider(this._id, collider); + } + get extents() { + let wasm = this.engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_collision_component_get_extents(this._id), 3); + } + set extents(extents) { + let wasm = this.engine.wasm, ptr = wasm._wl_collision_component_get_extents(this._id) / 4; + wasm.HEAPF32[ptr] = extents[0], wasm.HEAPF32[ptr + 1] = extents[1], wasm.HEAPF32[ptr + 2] = extents[2]; + } + get radius() { + let wasm = this.engine.wasm; + if (this.collider === 0) + return wasm.HEAPF32[wasm._wl_collision_component_get_extents(this._id) >> 2]; + let extents = new Float32Array(wasm.HEAPF32.buffer, wasm._wl_collision_component_get_extents(this._id), 3), x2 = extents[0] * extents[0], y2 = extents[1] * extents[1], z2 = extents[2] * extents[2]; + return Math.sqrt(x2 + y2 + z2) / 2; + } + set radius(radius) { + let length5 = this.collider === 0 ? radius : 2 * radius / SQRT_3; + this.extents.set([length5, length5, length5]); + } + get group() { + return this.engine.wasm._wl_collision_component_get_group(this._id); + } + set group(group) { + this.engine.wasm._wl_collision_component_set_group(this._id, group); + } + queryOverlaps() { + let count = this.engine.wasm._wl_collision_component_query_overlaps(this._id, this.engine.wasm._tempMem, this.engine.wasm._tempMemSize >> 1), overlaps = new Array(count); + for (let i = 0; i < count; ++i) { + let id = this.engine.wasm._tempMemUint16[i]; + overlaps[i] = this._scene._components.wrapCollision(id); + } + return overlaps; + } +}, __publicField(_a3, "TypeName", "collision"), _a3); +__decorateClass([nativeProperty()], CollisionComponent.prototype, "collider", 1), __decorateClass([nativeProperty()], CollisionComponent.prototype, "extents", 1), __decorateClass([nativeProperty()], CollisionComponent.prototype, "group", 1); +var _a4; +var TextComponent = (_a4 = class extends Component3 { + get alignment() { + return this.engine.wasm._wl_text_component_get_horizontal_alignment(this._id); + } + set alignment(alignment) { + this.engine.wasm._wl_text_component_set_horizontal_alignment(this._id, alignment); + } + get verticalAlignment() { + return this.engine.wasm._wl_text_component_get_vertical_alignment(this._id); + } + set verticalAlignment(verticalAlignment) { + this.engine.wasm._wl_text_component_set_vertical_alignment(this._id, verticalAlignment); + } + get justification() { + return this.verticalAlignment; + } + set justification(justification) { + this.verticalAlignment = justification; + } + get justified() { + return !!this.engine.wasm._wl_text_component_get_justified(this._id); + } + set justified(justified) { + this.engine.wasm._wl_text_component_set_justified(this._id, justified); + } + get characterSpacing() { + return this.engine.wasm._wl_text_component_get_character_spacing(this._id); + } + set characterSpacing(spacing) { + this.engine.wasm._wl_text_component_set_character_spacing(this._id, spacing); + } + get lineSpacing() { + return this.engine.wasm._wl_text_component_get_line_spacing(this._id); + } + set lineSpacing(spacing) { + this.engine.wasm._wl_text_component_set_line_spacing(this._id, spacing); + } + get effect() { + return this.engine.wasm._wl_text_component_get_effect(this._id); + } + set effect(effect) { + this.engine.wasm._wl_text_component_set_effect(this._id, effect); + } + get effectOffset() { + return this.getEffectOffset(); + } + set effectOffset(offset2) { + this.setEffectOffset(offset2); + } + getEffectOffset(out = new Float32Array(2)) { + let wasm = this.engine.wasm; + return wasm._wl_text_component_get_effectOffset(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out; + } + setEffectOffset(offset2) { + let wasm = this.engine.wasm; + wasm._tempMemFloat.set(offset2), wasm._wl_text_component_set_effectOffset(this._id, wasm._tempMem); + } + get wrapMode() { + return this.engine.wasm._wl_text_component_get_wrapMode(this._id); + } + set wrapMode(wrapMode) { + this.engine.wasm._wl_text_component_set_wrapMode(this._id, wrapMode); + } + get wrapWidth() { + return this.engine.wasm._wl_text_component_get_wrapWidth(this._id); + } + set wrapWidth(width) { + this.engine.wasm._wl_text_component_set_wrapWidth(this._id, width); + } + get text() { + let wasm = this.engine.wasm, ptr = wasm._wl_text_component_get_text(this._id); + return wasm.UTF8ToString(ptr); + } + set text(text) { + let wasm = this.engine.wasm; + wasm._wl_text_component_set_text(this._id, wasm.tempUTF8(text.toString())); + } + set material(material) { + let matIndex = material ? material._id : 0; + this.engine.wasm._wl_text_component_set_material(this._id, matIndex); + } + get material() { + let index = this.engine.wasm._wl_text_component_get_material(this._id); + return this.engine.materials.wrap(index); + } + getBoundingBoxForText(text, out = new Float32Array(4)) { + let wasm = this.engine.wasm, textPtr = wasm.tempUTF8(text, 4 * 4); + return this.engine.wasm._wl_text_component_get_boundingBox(this._id, textPtr, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out[3] = wasm._tempMemFloat[3], out; + } + getBoundingBox(out = new Float32Array(4)) { + let wasm = this.engine.wasm; + return this.engine.wasm._wl_text_component_get_boundingBox(this._id, 0, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out[3] = wasm._tempMemFloat[3], out; + } +}, __publicField(_a4, "TypeName", "text"), _a4); +__decorateClass([nativeProperty()], TextComponent.prototype, "alignment", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "verticalAlignment", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "justification", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "justified", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "characterSpacing", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "lineSpacing", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "effect", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "effectOffset", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "wrapMode", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "wrapWidth", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "text", 1), __decorateClass([nativeProperty()], TextComponent.prototype, "material", 1); +var _a5; +var ViewComponent = (_a5 = class extends Component3 { + get projectionType() { + return this.engine.wasm._wl_view_component_get_projectionType(this._id); + } + set projectionType(type) { + this.engine.wasm._wl_view_component_set_projectionType(this._id, type); + } + getProjectionMatrix(out = new Float32Array(16)) { + let wasm = this.engine.wasm; + wasm.requireTempMem(16 * 4), wasm._wl_view_component_get_projectionMatrix(this._id, wasm._tempMem); + for (let i = 0; i < 16; ++i) + out[i] = wasm._tempMemFloat[i]; + return out; + } + get projectionMatrix() { + return this.getProjectionMatrix(); + } + _setProjectionMatrix(v) { + let wasm = this._scene.engine.wasm; + wasm.requireTempMem(16 * 4), wasm._tempMemFloat.set(v), wasm._wl_view_component_set_projectionMatrix(this._id, wasm._tempMem); + } + _generateProjectionMatrix() { + this._scene.engine.wasm._wl_view_component_generate_projectionMatrix(this._id); + } + get near() { + return this.engine.wasm._wl_view_component_get_near(this._id); + } + set near(near) { + this.engine.wasm._wl_view_component_set_near(this._id, near), this.engine.xr && this.scene.isActive && this.active && this.engine.webxr.updateProjectionParams(near, this.far); + } + get far() { + return this.engine.wasm._wl_view_component_get_far(this._id); + } + set far(far) { + this.engine.wasm._wl_view_component_set_far(this._id, far), this.engine.xr && this.scene.isActive && this.active && this.engine.webxr.updateProjectionParams(this.near, far); + } + get fov() { + return this.engine.wasm._wl_view_component_get_fov(this._id); + } + set fov(fov) { + this.engine.wasm._wl_view_component_set_fov(this._id, fov); + } + getViewport(out = new Int32Array(4)) { + let wasm = this.engine.wasm, ptr = wasm._wl_view_component_get_viewport(this._id); + for (let i = 0; i < 4; ++i) + out[i] = wasm.HEAPF32[ptr + i]; + return out; + } + get viewport() { + return this.getViewport(); + } + _setViewport(x, y, width, height) { + this._scene.engine.wasm._wl_view_component_set_viewport(this._id, x, y, width, height); + } + get extent() { + return this.engine.wasm._wl_view_component_get_extent(this._id); + } + set extent(extent) { + this.engine.wasm._wl_view_component_set_extent(this._id, extent); + } +}, __publicField(_a5, "TypeName", "view"), _a5); +__decorateClass([nativeProperty()], ViewComponent.prototype, "projectionType", 1), __decorateClass([enumerable()], ViewComponent.prototype, "projectionMatrix", 1), __decorateClass([nativeProperty()], ViewComponent.prototype, "near", 1), __decorateClass([nativeProperty()], ViewComponent.prototype, "far", 1), __decorateClass([nativeProperty()], ViewComponent.prototype, "fov", 1), __decorateClass([enumerable()], ViewComponent.prototype, "viewport", 1), __decorateClass([nativeProperty()], ViewComponent.prototype, "extent", 1); +var _a6; +var InputComponent = (_a6 = class extends Component3 { + get inputType() { + return this.engine.wasm._wl_input_component_get_type(this._id); + } + set inputType(type) { + this.engine.wasm._wl_input_component_set_type(this._id, type); + } + get xrInputSource() { + let xr = this.engine.xr; + if (!xr) + return null; + for (let inputSource of xr.session.inputSources) + if (inputSource.handedness == this.handedness) + return inputSource; + return null; + } + get handedness() { + let inputType = this.inputType; + return inputType == 4 || inputType == 6 || inputType == 2 ? "right" : inputType == 3 || inputType == 5 || inputType == 1 ? "left" : null; + } +}, __publicField(_a6, "TypeName", "input"), _a6); +__decorateClass([nativeProperty()], InputComponent.prototype, "inputType", 1), __decorateClass([enumerable()], InputComponent.prototype, "xrInputSource", 1), __decorateClass([enumerable()], InputComponent.prototype, "handedness", 1); +var _a7; +var LightComponent = (_a7 = class extends Component3 { + getColor(out = new Float32Array(3)) { + let wasm = this.engine.wasm, ptr = wasm._wl_light_component_get_color(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out; + } + setColor(c) { + let wasm = this.engine.wasm, ptr = wasm._wl_light_component_get_color(this._id) / 4; + wasm.HEAPF32[ptr] = c[0], wasm.HEAPF32[ptr + 1] = c[1], wasm.HEAPF32[ptr + 2] = c[2]; + } + get color() { + let wasm = this.engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_light_component_get_color(this._id), 3); + } + set color(c) { + this.color.set(c); + } + get lightType() { + return this.engine.wasm._wl_light_component_get_type(this._id); + } + set lightType(t) { + this.engine.wasm._wl_light_component_set_type(this._id, t); + } + get intensity() { + return this.engine.wasm._wl_light_component_get_intensity(this._id); + } + set intensity(intensity) { + this.engine.wasm._wl_light_component_set_intensity(this._id, intensity); + } + get outerAngle() { + return this.engine.wasm._wl_light_component_get_outerAngle(this._id); + } + set outerAngle(angle2) { + this.engine.wasm._wl_light_component_set_outerAngle(this._id, angle2); + } + get innerAngle() { + return this.engine.wasm._wl_light_component_get_innerAngle(this._id); + } + set innerAngle(angle2) { + this.engine.wasm._wl_light_component_set_innerAngle(this._id, angle2); + } + get shadows() { + return !!this.engine.wasm._wl_light_component_get_shadows(this._id); + } + set shadows(b) { + this.engine.wasm._wl_light_component_set_shadows(this._id, b); + } + get shadowRange() { + return this.engine.wasm._wl_light_component_get_shadowRange(this._id); + } + set shadowRange(range) { + this.engine.wasm._wl_light_component_set_shadowRange(this._id, range); + } + get shadowBias() { + return this.engine.wasm._wl_light_component_get_shadowBias(this._id); + } + set shadowBias(bias) { + this.engine.wasm._wl_light_component_set_shadowBias(this._id, bias); + } + get shadowNormalBias() { + return this.engine.wasm._wl_light_component_get_shadowNormalBias(this._id); + } + set shadowNormalBias(bias) { + this.engine.wasm._wl_light_component_set_shadowNormalBias(this._id, bias); + } + get shadowTexelSize() { + return this.engine.wasm._wl_light_component_get_shadowTexelSize(this._id); + } + set shadowTexelSize(size) { + this.engine.wasm._wl_light_component_set_shadowTexelSize(this._id, size); + } + get cascadeCount() { + return this.engine.wasm._wl_light_component_get_cascadeCount(this._id); + } + set cascadeCount(count) { + this.engine.wasm._wl_light_component_set_cascadeCount(this._id, count); + } +}, __publicField(_a7, "TypeName", "light"), _a7); +__decorateClass([nativeProperty()], LightComponent.prototype, "color", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "lightType", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "intensity", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "outerAngle", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "innerAngle", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "shadows", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "shadowRange", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "shadowBias", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "shadowNormalBias", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "shadowTexelSize", 1), __decorateClass([nativeProperty()], LightComponent.prototype, "cascadeCount", 1); +var _a8; +var AnimationComponent = (_a8 = class extends Component3 { + onEvent = new Emitter(); + set animation(anim) { + this.scene.assertOrigin(anim), this.engine.wasm._wl_animation_component_set_animation(this._id, anim ? anim._id : 0); + } + get animation() { + let index = this.engine.wasm._wl_animation_component_get_animation(this._id); + return this._scene.animations.wrap(index); + } + set playCount(playCount) { + this.engine.wasm._wl_animation_component_set_playCount(this._id, playCount); + } + get playCount() { + return this.engine.wasm._wl_animation_component_get_playCount(this._id); + } + set speed(speed) { + this.engine.wasm._wl_animation_component_set_speed(this._id, speed); + } + get speed() { + return this.engine.wasm._wl_animation_component_get_speed(this._id); + } + get state() { + return this.engine.wasm._wl_animation_component_state(this._id); + } + get rootMotionMode() { + return this.engine.wasm._wl_animation_component_get_rootMotionMode(this._id); + } + set rootMotionMode(mode) { + this.engine.wasm._wl_animation_component_set_rootMotionMode(this._id, mode); + } + get iteration() { + return this.engine.wasm._wl_animation_component_get_iteration(this._id); + } + get position() { + return this.engine.wasm._wl_animation_component_get_position(this._id); + } + get duration() { + return this.engine.wasm._wl_animation_component_get_duration(this._id); + } + play() { + this.engine.wasm._wl_animation_component_play(this._id); + } + stop() { + this.engine.wasm._wl_animation_component_stop(this._id); + } + pause() { + this.engine.wasm._wl_animation_component_pause(this._id); + } + getFloatParameter(name) { + let wasm = this.engine.wasm, index = wasm._wl_animation_component_getGraphParamIndex(this._id, wasm.tempUTF8(name)); + if (index === -1) + throw Error(`Missing parameter '${name}'`); + return wasm._wl_animation_component_getGraphParamValue(this._id, index, wasm._tempMem), wasm._tempMemFloat[0]; + } + setFloatParameter(name, value) { + let wasm = this.engine.wasm, index = wasm._wl_animation_component_getGraphParamIndex(this._id, wasm.tempUTF8(name)); + if (index === -1) + throw Error(`Missing parameter '${name}'`); + wasm._tempMemFloat[0] = value, wasm._wl_animation_component_setGraphParamValue(this._id, index, wasm._tempMem); + } + getRootMotionTranslation(out = new Float32Array(3)) { + let wasm = this.engine.wasm; + return wasm._wl_animation_component_get_rootMotion_translation(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + getRootMotionRotation(out = new Float32Array(3)) { + let wasm = this.engine.wasm; + return wasm._wl_animation_component_get_rootMotion_rotation(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } +}, __publicField(_a8, "TypeName", "animation"), _a8); +__decorateClass([nativeProperty()], AnimationComponent.prototype, "animation", 1), __decorateClass([nativeProperty()], AnimationComponent.prototype, "playCount", 1), __decorateClass([nativeProperty()], AnimationComponent.prototype, "speed", 1), __decorateClass([enumerable()], AnimationComponent.prototype, "state", 1), __decorateClass([nativeProperty(), enumerable()], AnimationComponent.prototype, "rootMotionMode", 1); +var _a9; +var MeshComponent = (_a9 = class extends Component3 { + set material(material) { + this.engine.wasm._wl_mesh_component_set_material(this._id, material ? material._id : 0); + } + get material() { + let index = this.engine.wasm._wl_mesh_component_get_material(this._id); + return this.engine.materials.wrap(index); + } + get mesh() { + let index = this.engine.wasm._wl_mesh_component_get_mesh(this._id); + return this.engine.meshes.wrap(index); + } + set mesh(mesh) { + this.engine.wasm._wl_mesh_component_set_mesh(this._id, mesh?._id ?? 0); + } + get skin() { + let index = this.engine.wasm._wl_mesh_component_get_skin(this._id); + return this._scene.skins.wrap(index); + } + set skin(skin) { + this.scene.assertOrigin(skin), this.engine.wasm._wl_mesh_component_set_skin(this._id, skin ? skin._id : 0); + } + get morphTargets() { + let index = this.engine.wasm._wl_mesh_component_get_morph_targets(this._id); + return this.engine.morphTargets.wrap(index); + } + set morphTargets(morphTargets) { + this.engine.wasm._wl_mesh_component_set_morph_targets(this._id, morphTargets?._id ?? 0); + } + get morphTargetWeights() { + return this.getMorphTargetWeights(); + } + set morphTargetWeights(weights) { + this.setMorphTargetWeights(weights); + } + getMorphTargetWeights(out) { + let wasm = this.engine.wasm, count = wasm._wl_mesh_component_get_morph_target_weights(this._id, wasm._tempMem); + out || (out = new Float32Array(count)); + for (let i = 0; i < count; ++i) + out[i] = wasm._tempMemFloat[i]; + return out; + } + getMorphTargetWeight(target) { + let count = this.morphTargets?.count ?? 0; + if (target >= count) + throw new Error(`Index ${target} is out of bounds for ${count} targets`); + return this.engine.wasm._wl_mesh_component_get_morph_target_weight(this._id, target); + } + setMorphTargetWeights(weights) { + let count = this.morphTargets?.count ?? 0; + if (weights.length !== count) + throw new Error(`Expected ${count} weights but got ${weights.length}`); + let wasm = this.engine.wasm; + wasm._tempMemFloat.set(weights), wasm._wl_mesh_component_set_morph_target_weights(this._id, wasm._tempMem, weights.length); + } + setMorphTargetWeight(target, weight) { + let count = this.morphTargets?.count ?? 0; + if (target >= count) + throw new Error(`Index ${target} is out of bounds for ${count} targets`); + this.engine.wasm._wl_mesh_component_set_morph_target_weight(this._id, target, weight); + } +}, __publicField(_a9, "TypeName", "mesh"), _a9); +__decorateClass([nativeProperty()], MeshComponent.prototype, "material", 1), __decorateClass([nativeProperty()], MeshComponent.prototype, "mesh", 1), __decorateClass([nativeProperty()], MeshComponent.prototype, "skin", 1), __decorateClass([nativeProperty()], MeshComponent.prototype, "morphTargets", 1), __decorateClass([nativeProperty()], MeshComponent.prototype, "morphTargetWeights", 1); +var _a10; +var ParticleEffectComponent = (_a10 = class extends Component3 { + get particleEffect() { + let index = this.engine.wasm._wl_particleEffect_component_get_particleEffect(this._id); + return this.engine.particleEffects.wrap(index); + } + set particleEffect(particleEffect) { + this.engine.wasm._wl_particleEffect_component_set_particleEffect(this._id, particleEffect?._id ?? 0); + } +}, __publicField(_a10, "TypeName", "particle-effect"), _a10); +__decorateClass([nativeProperty()], ParticleEffectComponent.prototype, "particleEffect", 1); +var LockAxis = ((LockAxis2) => (LockAxis2[LockAxis2.None = 0] = "None", LockAxis2[LockAxis2.X = 1] = "X", LockAxis2[LockAxis2.Y = 2] = "Y", LockAxis2[LockAxis2.Z = 4] = "Z", LockAxis2))(LockAxis || {}); +var _a11; +var PhysXComponent = (_a11 = class extends Component3 { + getTranslationOffset(out = new Float32Array(3)) { + let wasm = this.engine.wasm; + return wasm._wl_physx_component_get_offsetTranslation(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + getRotationOffset(out = new Float32Array(4)) { + let wasm = this.engine.wasm, ptr = wasm._wl_physx_component_get_offsetTransform(this._id) >> 2; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out[3] = wasm.HEAPF32[ptr + 3], out; + } + getExtents(out = new Float32Array(3)) { + let wasm = this.engine.wasm, ptr = wasm._wl_physx_component_get_extents(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out; + } + getLinearVelocity(out = new Float32Array(3)) { + let wasm = this.engine.wasm, tempMemFloat = wasm._tempMemFloat; + return wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem), out[0] = tempMemFloat[0], out[1] = tempMemFloat[1], out[2] = tempMemFloat[2], out; + } + getAngularVelocity(out = new Float32Array(3)) { + let wasm = this.engine.wasm, tempMemFloat = wasm._tempMemFloat; + return wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem), out[0] = tempMemFloat[0], out[1] = tempMemFloat[1], out[2] = tempMemFloat[2], out; + } + set static(b) { + this.engine.wasm._wl_physx_component_set_static(this._id, b); + } + get static() { + return !!this.engine.wasm._wl_physx_component_get_static(this._id); + } + get translationOffset() { + return this.getTranslationOffset(); + } + set translationOffset(offset2) { + this.engine.wasm._wl_physx_component_set_offsetTranslation(this._id, offset2[0], offset2[1], offset2[2]); + } + get rotationOffset() { + return this.getRotationOffset(); + } + set rotationOffset(offset2) { + this.engine.wasm._wl_physx_component_set_offsetRotation(this._id, offset2[0], offset2[1], offset2[2], offset2[3]); + } + set kinematic(b) { + this.engine.wasm._wl_physx_component_set_kinematic(this._id, b); + } + get kinematic() { + return !!this.engine.wasm._wl_physx_component_get_kinematic(this._id); + } + set gravity(b) { + this.engine.wasm._wl_physx_component_set_gravity(this._id, b); + } + get gravity() { + return !!this.engine.wasm._wl_physx_component_get_gravity(this._id); + } + set simulate(b) { + this.engine.wasm._wl_physx_component_set_simulate(this._id, b); + } + get simulate() { + return !!this.engine.wasm._wl_physx_component_get_simulate(this._id); + } + set allowSimulation(b) { + this.engine.wasm._wl_physx_component_set_allowSimulation(this._id, b); + } + get allowSimulation() { + return !!this.engine.wasm._wl_physx_component_get_allowSimulation(this._id); + } + set allowQuery(b) { + this.engine.wasm._wl_physx_component_set_allowQuery(this._id, b); + } + get allowQuery() { + return !!this.engine.wasm._wl_physx_component_get_allowQuery(this._id); + } + set trigger(b) { + this.engine.wasm._wl_physx_component_set_trigger(this._id, b); + } + get trigger() { + return !!this.engine.wasm._wl_physx_component_get_trigger(this._id); + } + set shape(s) { + this.engine.wasm._wl_physx_component_set_shape(this._id, s); + } + get shape() { + return this.engine.wasm._wl_physx_component_get_shape(this._id); + } + set shapeData(d) { + d == null || !isMeshShape(this.shape) || this.engine.wasm._wl_physx_component_set_shape_data(this._id, d.index); + } + get shapeData() { + return isMeshShape(this.shape) ? { index: this.engine.wasm._wl_physx_component_get_shape_data(this._id) } : null; + } + set extents(e) { + this.extents.set(e); + } + get extents() { + let wasm = this.engine.wasm, ptr = wasm._wl_physx_component_get_extents(this._id); + return new Float32Array(wasm.HEAPF32.buffer, ptr, 3); + } + get staticFriction() { + return this.engine.wasm._wl_physx_component_get_staticFriction(this._id); + } + set staticFriction(v) { + this.engine.wasm._wl_physx_component_set_staticFriction(this._id, v); + } + get dynamicFriction() { + return this.engine.wasm._wl_physx_component_get_dynamicFriction(this._id); + } + set dynamicFriction(v) { + this.engine.wasm._wl_physx_component_set_dynamicFriction(this._id, v); + } + get bounciness() { + return this.engine.wasm._wl_physx_component_get_bounciness(this._id); + } + set bounciness(v) { + this.engine.wasm._wl_physx_component_set_bounciness(this._id, v); + } + get linearDamping() { + return this.engine.wasm._wl_physx_component_get_linearDamping(this._id); + } + set linearDamping(v) { + this.engine.wasm._wl_physx_component_set_linearDamping(this._id, v); + } + get angularDamping() { + return this.engine.wasm._wl_physx_component_get_angularDamping(this._id); + } + set angularDamping(v) { + this.engine.wasm._wl_physx_component_set_angularDamping(this._id, v); + } + set linearVelocity(v) { + this.engine.wasm._wl_physx_component_set_linearVelocity(this._id, v[0], v[1], v[2]); + } + get linearVelocity() { + let wasm = this.engine.wasm; + return wasm._wl_physx_component_get_linearVelocity(this._id, wasm._tempMem), new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3); + } + set angularVelocity(v) { + this.engine.wasm._wl_physx_component_set_angularVelocity(this._id, v[0], v[1], v[2]); + } + get angularVelocity() { + let wasm = this.engine.wasm; + return wasm._wl_physx_component_get_angularVelocity(this._id, wasm._tempMem), new Float32Array(wasm.HEAPF32.buffer, wasm._tempMem, 3); + } + set groupsMask(flags) { + this.engine.wasm._wl_physx_component_set_groupsMask(this._id, flags); + } + get groupsMask() { + return this.engine.wasm._wl_physx_component_get_groupsMask(this._id); + } + set blocksMask(flags) { + this.engine.wasm._wl_physx_component_set_blocksMask(this._id, flags); + } + get blocksMask() { + return this.engine.wasm._wl_physx_component_get_blocksMask(this._id); + } + set linearLockAxis(lock) { + this.engine.wasm._wl_physx_component_set_linearLockAxis(this._id, lock); + } + get linearLockAxis() { + return this.engine.wasm._wl_physx_component_get_linearLockAxis(this._id); + } + set angularLockAxis(lock) { + this.engine.wasm._wl_physx_component_set_angularLockAxis(this._id, lock); + } + get angularLockAxis() { + return this.engine.wasm._wl_physx_component_get_angularLockAxis(this._id); + } + set mass(m) { + this.engine.wasm._wl_physx_component_set_mass(this._id, m); + } + get mass() { + return this.engine.wasm._wl_physx_component_get_mass(this._id); + } + set massSpaceInteriaTensor(v) { + this.engine.wasm._wl_physx_component_set_massSpaceInertiaTensor(this._id, v[0], v[1], v[2]); + } + set sleepOnActivate(flag) { + this.engine.wasm._wl_physx_component_set_sleepOnActivate(this._id, flag); + } + get sleepOnActivate() { + return !!this.engine.wasm._wl_physx_component_get_sleepOnActivate(this._id); + } + addForce(f, m = 0, localForce = false, p, local = false) { + let wasm = this.engine.wasm; + if (!p) { + wasm._wl_physx_component_addForce(this._id, f[0], f[1], f[2], m, localForce); + return; + } + wasm._wl_physx_component_addForceAt(this._id, f[0], f[1], f[2], m, localForce, p[0], p[1], p[2], local); + } + addTorque(f, m = 0) { + this.engine.wasm._wl_physx_component_addTorque(this._id, f[0], f[1], f[2], m); + } + onCollision(callback) { + return this.onCollisionWith(this, callback); + } + onCollisionWith(otherComp, callback) { + let callbacks = this.scene._pxCallbacks; + return callbacks.has(this._id) || callbacks.set(this._id, []), callbacks.get(this._id).push(callback), this.engine.wasm._wl_physx_component_addCallback(this._id, otherComp._id); + } + removeCollisionCallback(callbackId) { + let r = this.engine.wasm._wl_physx_component_removeCallback(this._id, callbackId), callbacks = this.scene._pxCallbacks; + r && callbacks.get(this._id).splice(-r); + } +}, __publicField(_a11, "TypeName", "physx"), _a11); +__decorateClass([nativeProperty()], PhysXComponent.prototype, "static", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "translationOffset", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "rotationOffset", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "kinematic", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "gravity", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "simulate", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "allowSimulation", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "allowQuery", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "trigger", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "shape", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "shapeData", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "extents", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "staticFriction", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "dynamicFriction", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "bounciness", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "linearDamping", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "angularDamping", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "linearVelocity", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "angularVelocity", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "groupsMask", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "blocksMask", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "linearLockAxis", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "angularLockAxis", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "mass", 1), __decorateClass([nativeProperty()], PhysXComponent.prototype, "sleepOnActivate", 1); +var Physics = class { + _hit; + _engine; + _rayHit; + constructor(engine2) { + this._engine = engine2; + let wasm = engine2.wasm; + this._rayHit = wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4), this._hit = new RayHit(engine2.scene, this._rayHit), wasm._wl_physx_set_collision_callback(wasm.addFunction((a, index, type, b) => { + let physxA = this._engine.scene._components.wrapPhysx(a), physxB = this._engine.scene._components.wrapPhysx(b), callback = this._engine.scene._pxCallbacks.get(physxA._id)[index]; + callback(type, physxB); + }, "viiii")); + } + rayCast(o, d, groupMask, maxDistance = 100) { + let scene = this._engine.scene._index; + return this._engine.wasm._wl_physx_ray_cast(scene, o[0], o[1], o[2], d[0], d[1], d[2], groupMask, maxDistance, this._rayHit), this._hit; + } + get engine() { + return this._engine; + } +}; +var MeshIndexType = ((MeshIndexType2) => (MeshIndexType2[MeshIndexType2.UnsignedByte = 1] = "UnsignedByte", MeshIndexType2[MeshIndexType2.UnsignedShort = 2] = "UnsignedShort", MeshIndexType2[MeshIndexType2.UnsignedInt = 4] = "UnsignedInt", MeshIndexType2))(MeshIndexType || {}); +var MeshSkinningType = ((MeshSkinningType2) => (MeshSkinningType2[MeshSkinningType2.None = 0] = "None", MeshSkinningType2[MeshSkinningType2.FourJoints = 1] = "FourJoints", MeshSkinningType2[MeshSkinningType2.EightJoints = 2] = "EightJoints", MeshSkinningType2))(MeshSkinningType || {}); +var Mesh = class extends Resource { + constructor(engine2, params) { + if (!isNumber(params)) { + let mesh = engine2.meshes.create(params); + return super(engine2, mesh._index), mesh; + } + super(engine2, params); + } + get vertexCount() { + return this.engine.wasm._wl_mesh_get_vertexCount(this._id); + } + get indexData() { + let wasm = this.engine.wasm, tempMem = wasm._tempMem, ptr = wasm._wl_mesh_get_indexData(this._id, tempMem, tempMem + 4); + if (ptr === null) + return null; + let indexCount = wasm.HEAPU32[tempMem / 4]; + switch (wasm.HEAPU32[tempMem / 4 + 1]) { + case 1: + return new Uint8Array(wasm.HEAPU8.buffer, ptr, indexCount); + case 2: + return new Uint16Array(wasm.HEAPU16.buffer, ptr, indexCount); + case 4: + return new Uint32Array(wasm.HEAPU32.buffer, ptr, indexCount); + } + return null; + } + update() { + this.engine.wasm._wl_mesh_update(this._id); + } + getBoundingSphere(out = new Float32Array(4)) { + let wasm = this.engine.wasm; + return this.engine.wasm._wl_mesh_get_boundingSphere(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out[3] = wasm._tempMemFloat[3], out; + } + attribute(attr) { + if (typeof attr != "number") + throw new TypeError("Expected number, but got " + typeof attr); + let wasm = this.engine.wasm, tempMemUint32 = wasm._tempMemUint32; + if (wasm._wl_mesh_get_attribute(this._id, attr, wasm._tempMem), tempMemUint32[0] == 255) + return null; + let arraySize = tempMemUint32[5]; + return new MeshAttributeAccessor(this.engine, { attribute: tempMemUint32[0], offset: tempMemUint32[1], stride: tempMemUint32[2], formatSize: tempMemUint32[3], componentCount: tempMemUint32[4], arraySize: arraySize || 1, length: this.vertexCount, bufferType: attr !== 5 ? Float32Array : Uint16Array }); + } + destroy() { + this.engine.wasm._wl_mesh_destroy(this._id), this.engine.meshes._destroy(this); + } + toString() { + return this.isDestroyed ? "Mesh(destroyed)" : `Mesh(${this._index})`; + } +}; +var MeshAttributeAccessor = class { + length = 0; + _engine; + _attribute = -1; + _offset = 0; + _stride = 0; + _formatSize = 0; + _componentCount = 0; + _arraySize = 1; + _bufferType; + _tempBufferGetter; + constructor(engine2, options) { + this._engine = engine2, this._attribute = options.attribute, this._offset = options.offset, this._stride = options.stride, this._formatSize = options.formatSize, this._componentCount = options.componentCount, this._arraySize = options.arraySize, this._bufferType = options.bufferType, this.length = options.length; + let wasm = this._engine.wasm; + this._tempBufferGetter = this._bufferType === Float32Array ? wasm.getTempBufferF32.bind(wasm) : wasm.getTempBufferU16.bind(wasm); + } + createArray(count = 1) { + return count = count > this.length ? this.length : count, new this._bufferType(count * this._componentCount * this._arraySize); + } + get(index, out = this.createArray()) { + if (out.length % this._componentCount !== 0) + throw new Error(`out.length, ${out.length} is not a multiple of the attribute vector components, ${this._componentCount}`); + let componentCount = this._componentCount * this._arraySize, len4 = Math.min(out.length, componentCount * this.length), dest = this._tempBufferGetter(len4), elementSize = this._bufferType.BYTES_PER_ELEMENT, destSize = elementSize * len4, srcFormatSize = this._formatSize * this._arraySize, destFormatSize = this._componentCount * elementSize * this._arraySize; + this.engine.wasm._wl_mesh_get_attribute_values(this._attribute, srcFormatSize, this._offset + index * this._stride, this._stride, destFormatSize, dest.byteOffset, destSize); + for (let i = 0; i < len4; ++i) + out[i] = dest[i]; + return out; + } + set(i, v) { + if (v.length % this._componentCount !== 0) + throw new Error(`out.length, ${v.length} is not a multiple of the attribute vector components, ${this._componentCount}`); + let componentCount = this._componentCount * this._arraySize, len4 = Math.min(v.length, componentCount * this.length), elementSize = this._bufferType.BYTES_PER_ELEMENT, srcSize = elementSize * len4, srcFormatSize = componentCount * elementSize, destFormatSize = this._formatSize * this._arraySize, wasm = this.engine.wasm; + if (v.buffer != wasm.HEAPU8.buffer) { + let dest = this._tempBufferGetter(len4); + dest.set(v), v = dest; + } + return wasm._wl_mesh_set_attribute_values(this._attribute, srcFormatSize, v.byteOffset, srcSize, destFormatSize, this._offset + i * this._stride, this._stride), this; + } + get engine() { + return this._engine; + } +}; +var Font = class extends Resource { + get emHeight() { + return this.engine.wasm._wl_font_get_emHeight(this._id); + } + get capHeight() { + return this.engine.wasm._wl_font_get_capHeight(this._id); + } + get xHeight() { + return this.engine.wasm._wl_font_get_xHeight(this._id); + } + get outlineSize() { + return this.engine.wasm._wl_font_get_outlineSize(this._id); + } +}; +var ParticleEffect = class extends Resource { + clone() { + let index = this.engine.wasm._wl_particleEffect_clone(this._id); + return this.engine.particleEffects.wrap(index); + } +}; +var temp2d = null; +var Texture = class extends Resource { + constructor(engine2, param) { + if (isImageLike(param)) { + let texture = engine2.textures.create(param); + return super(engine2, texture._index), texture; + } + super(engine2, param); + } + get valid() { + return !this.isDestroyed && this.width !== 0 && this.height !== 0; + } + get id() { + return this.index; + } + update() { + let image = this._imageIndex; + !this.valid || !image || this.engine.wasm._wl_image_markDirty(image); + } + get width() { + let element = this.htmlElement; + if (element) + return element.videoWidth ?? element.width; + let wasm = this.engine.wasm; + return wasm._wl_image_size(this._imageIndex, wasm._tempMem), wasm._tempMemUint32[0]; + } + get height() { + let element = this.htmlElement; + if (element) + return element.videoHeight ?? element.height; + let wasm = this.engine.wasm; + return wasm._wl_image_size(this._imageIndex, wasm._tempMem), wasm._tempMemUint32[1]; + } + get htmlElement() { + let image = this._imageIndex; + if (!image) + return null; + let wasm = this.engine.wasm, jsImageIndex = wasm._wl_image_get_jsImage_index(image); + return wasm._images[jsImageIndex]; + } + updateSubImage(srcX, srcY, srcWidth, srcHeight, dstX = srcX, dstY = srcY, content) { + if (this.isDestroyed) + return false; + let image = this._imageIndex; + if (!image) + return false; + let img = content ?? this.htmlElement; + if (!img) + return false; + let isImageBitmap = img instanceof ImageBitmap, flipY = !isImageBitmap; + if (srcX || srcY) { + if (!temp2d) { + let canvas2 = document.createElement("canvas"), ctx = canvas2.getContext("2d"); + if (!ctx) + throw new Error("Texture.updateSubImage(): Failed to obtain CanvasRenderingContext2D."); + temp2d = { canvas: canvas2, ctx }; + } + temp2d.canvas.width = srcWidth, temp2d.canvas.height = srcHeight, temp2d.ctx.drawImage(img, srcX, isImageBitmap ? img.height - srcY - srcHeight : srcY, srcWidth, srcHeight, 0, 0, srcWidth, srcHeight), img = temp2d.canvas; + } + let wasm = this.engine.wasm; + wasm._images[0] = img; + let width = srcWidth - Math.max(srcWidth + dstX - this.width, 0), height = srcHeight - Math.max(srcHeight + dstY - this.height, 0), dstReversedY = this.height - dstY - height, ret = wasm._wl_renderer_updateImage(image, 0, width, height, dstX, dstReversedY, flipY); + return wasm._images[0] = null, !!ret; + } + destroy() { + let wasm = this.engine.wasm, img = wasm._images[this._imageIndex]; + img instanceof ImageBitmap && img.close(), wasm._wl_texture_destroy(this._id), this.engine.textures._destroy(this); + } + toString() { + return this.isDestroyed ? "Texture(destroyed)" : `Texture(${this._index})`; + } + get _imageIndex() { + return this.engine.wasm._wl_texture_get_image_index(this._id); + } +}; +var Animation = class extends SceneResource { + constructor(host = WL, index) { + let scene = host instanceof Prefab ? host : host.scene; + super(scene, index); + } + get duration() { + return this.engine.wasm._wl_animation_get_duration(this._id); + } + get trackCount() { + return this.engine.wasm._wl_animation_get_trackCount(this._id); + } + retarget(newTargets) { + let wasm = this.engine.wasm; + if (newTargets instanceof Skin) { + let index2 = wasm._wl_animation_retargetToSkin(this._id, newTargets._id); + return this._scene.animations.wrap(index2); + } + if (newTargets.length != this.trackCount) + throw Error("Expected " + this.trackCount.toString() + " targets, but got " + newTargets.length.toString()); + let ptr = wasm._malloc(2 * newTargets.length); + for (let i = 0; i < newTargets.length; ++i) { + let object3d = newTargets[i]; + this.scene.assertOrigin(object3d), wasm.HEAPU16[(ptr >>> 1) + i] = newTargets[i].objectId; + } + let index = wasm._wl_animation_retarget(this._id, ptr); + return wasm._free(ptr), this._scene.animations.wrap(index); + } + toString() { + return this.isDestroyed ? "Animation(destroyed)" : `Animation(${this._index})`; + } +}; +var Object3D2 = class { + _id = -1; + _localId = -1; + _scene; + _engine; + constructor(scene, id) { + scene = scene instanceof Prefab ? scene : scene.scene, this._localId = id, this._id = scene._index << 22 | id, this._scene = scene, this._engine = scene.engine; + } + get name() { + let wasm = this._engine.wasm; + return wasm.UTF8ToString(wasm._wl_object_name(this._id)); + } + set name(newName) { + let wasm = this._engine.wasm; + wasm._wl_object_set_name(this._id, wasm.tempUTF8(newName)); + } + get parent() { + let p = this._engine.wasm._wl_object_parent(this._id); + return p === 0 ? null : this._scene.wrap(p); + } + get children() { + return this.getChildren(); + } + get childrenCount() { + return this._engine.wasm._wl_object_get_children_count(this._id); + } + set parent(newParent) { + if (this.markedDestroyed) { + let strThis = this.toString(), strParent = newParent || "root"; + throw new Error(`Failed to attach ${strThis} to ${strParent}. ${strThis} is marked as destroyed.`); + } else if (newParent?.markedDestroyed) { + let strParent = newParent.toString(); + throw new Error(`Failed to attach ${this} to ${strParent}. ${strParent} is marked as destroyed.`); + } + this.scene.assertOrigin(newParent), this._engine.wasm._wl_object_set_parent(this._id, newParent == null ? 0 : newParent._id); + } + get objectId() { + return this._localId; + } + get scene() { + return this._scene; + } + get engine() { + return this._engine; + } + addChild() { + let objectId = this.engine.wasm._wl_scene_add_object(this.scene._index, this._id); + return this.scene.wrap(objectId); + } + clone(parent = null) { + this.scene.assertOrigin(parent); + let id = this._engine.wasm._wl_object_clone(this._id, parent ? parent._id : 0); + return this._scene.wrap(id); + } + getChildren(out = new Array(this.childrenCount)) { + let childrenCount = this.childrenCount; + if (childrenCount === 0) + return out; + let wasm = this._engine.wasm; + wasm.requireTempMem(childrenCount * 2), this._engine.wasm._wl_object_get_children(this._id, wasm._tempMem, wasm._tempMemSize >> 1); + for (let i = 0; i < childrenCount; ++i) + out[i] = this._scene.wrap(wasm._tempMemUint16[i]); + return out; + } + resetTransform() { + return this._engine.wasm._wl_object_reset_translation_rotation(this._id), this._engine.wasm._wl_object_reset_scaling(this._id), this; + } + resetPositionRotation() { + return this._engine.wasm._wl_object_reset_translation_rotation(this._id), this; + } + resetTranslationRotation() { + return this.resetPositionRotation(); + } + resetRotation() { + return this._engine.wasm._wl_object_reset_rotation(this._id), this; + } + resetPosition() { + return this._engine.wasm._wl_object_reset_translation(this._id), this; + } + resetTranslation() { + return this.resetPosition(); + } + resetScaling() { + return this._engine.wasm._wl_object_reset_scaling(this._id), this; + } + translate(v) { + return this.translateLocal(v); + } + translateLocal(v) { + return this._engine.wasm._wl_object_translate(this._id, v[0], v[1], v[2]), this; + } + translateObject(v) { + return this._engine.wasm._wl_object_translate_obj(this._id, v[0], v[1], v[2]), this; + } + translateWorld(v) { + return this._engine.wasm._wl_object_translate_world(this._id, v[0], v[1], v[2]), this; + } + rotateAxisAngleDeg(a, d) { + return this.rotateAxisAngleDegLocal(a, d), this; + } + rotateAxisAngleDegLocal(a, d) { + return this._engine.wasm._wl_object_rotate_axis_angle(this._id, a[0], a[1], a[2], d), this; + } + rotateAxisAngleRad(a, d) { + return this.rotateAxisAngleRadLocal(a, d); + } + rotateAxisAngleRadLocal(a, d) { + return this._engine.wasm._wl_object_rotate_axis_angle_rad(this._id, a[0], a[1], a[2], d), this; + } + rotateAxisAngleDegObject(a, d) { + return this._engine.wasm._wl_object_rotate_axis_angle_obj(this._id, a[0], a[1], a[2], d), this; + } + rotateAxisAngleRadObject(a, d) { + return this._engine.wasm._wl_object_rotate_axis_angle_rad_obj(this._id, a[0], a[1], a[2], d), this; + } + rotate(q) { + return this.rotateLocal(q), this; + } + rotateLocal(q) { + return this._engine.wasm._wl_object_rotate_quat(this._id, q[0], q[1], q[2], q[3]), this; + } + rotateObject(q) { + return this._engine.wasm._wl_object_rotate_quat_obj(this._id, q[0], q[1], q[2], q[3]), this; + } + scale(v) { + return this.scaleLocal(v), this; + } + scaleLocal(v) { + return this._engine.wasm._wl_object_scale(this._id, v[0], v[1], v[2]), this; + } + getPositionLocal(out = new Float32Array(3)) { + let wasm = this._engine.wasm; + return wasm._wl_object_get_translation_local(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + getTranslationLocal(out = new Float32Array(3)) { + return this.getPositionLocal(out); + } + getPositionWorld(out = new Float32Array(3)) { + let wasm = this._engine.wasm; + return wasm._wl_object_get_translation_world(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + getTranslationWorld(out = new Float32Array(3)) { + return this.getPositionWorld(out); + } + setPositionLocal(v) { + return this._engine.wasm._wl_object_set_translation_local(this._id, v[0], v[1], v[2]), this; + } + setTranslationLocal(v) { + return this.setPositionLocal(v); + } + setPositionWorld(v) { + return this._engine.wasm._wl_object_set_translation_world(this._id, v[0], v[1], v[2]), this; + } + setTranslationWorld(v) { + return this.setPositionWorld(v); + } + getScalingLocal(out = new Float32Array(3)) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_scaling_local(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out; + } + setScalingLocal(v) { + return this._engine.wasm._wl_object_set_scaling_local(this._id, v[0], v[1], v[2]), this; + } + getScalingWorld(out = new Float32Array(3)) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_scaling_world(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out; + } + setScalingWorld(v) { + return this._engine.wasm._wl_object_set_scaling_world(this._id, v[0], v[1], v[2]), this; + } + getRotationLocal(out = new Float32Array(4)) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_trans_local(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out[3] = wasm.HEAPF32[ptr + 3], out; + } + setRotationLocal(v) { + return this._engine.wasm._wl_object_set_rotation_local(this._id, v[0], v[1], v[2], v[3]), this; + } + getRotationWorld(out = new Float32Array(4)) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_trans_world(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out[3] = wasm.HEAPF32[ptr + 3], out; + } + setRotationWorld(v) { + return this._engine.wasm._wl_object_set_rotation_world(this._id, v[0], v[1], v[2], v[3]), this; + } + getTransformLocal(out = new Float32Array(8)) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_trans_local(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out[3] = wasm.HEAPF32[ptr + 3], out[4] = wasm.HEAPF32[ptr + 4], out[5] = wasm.HEAPF32[ptr + 5], out[6] = wasm.HEAPF32[ptr + 6], out[7] = wasm.HEAPF32[ptr + 7], out; + } + setTransformLocal(v) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_trans_local(this._id) / 4; + return wasm.HEAPF32[ptr] = v[0], wasm.HEAPF32[ptr + 1] = v[1], wasm.HEAPF32[ptr + 2] = v[2], wasm.HEAPF32[ptr + 3] = v[3], wasm.HEAPF32[ptr + 4] = v[4], wasm.HEAPF32[ptr + 5] = v[5], wasm.HEAPF32[ptr + 6] = v[6], wasm.HEAPF32[ptr + 7] = v[7], this.setDirty(), this; + } + getTransformWorld(out = new Float32Array(8)) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_trans_world(this._id) / 4; + return out[0] = wasm.HEAPF32[ptr], out[1] = wasm.HEAPF32[ptr + 1], out[2] = wasm.HEAPF32[ptr + 2], out[3] = wasm.HEAPF32[ptr + 3], out[4] = wasm.HEAPF32[ptr + 4], out[5] = wasm.HEAPF32[ptr + 5], out[6] = wasm.HEAPF32[ptr + 6], out[7] = wasm.HEAPF32[ptr + 7], out; + } + setTransformWorld(v) { + let wasm = this._engine.wasm, ptr = wasm._wl_object_trans_world(this._id) / 4; + return wasm.HEAPF32[ptr] = v[0], wasm.HEAPF32[ptr + 1] = v[1], wasm.HEAPF32[ptr + 2] = v[2], wasm.HEAPF32[ptr + 3] = v[3], wasm.HEAPF32[ptr + 4] = v[4], wasm.HEAPF32[ptr + 5] = v[5], wasm.HEAPF32[ptr + 6] = v[6], wasm.HEAPF32[ptr + 7] = v[7], this._engine.wasm._wl_object_trans_world_to_local(this._id), this; + } + get transformLocal() { + let wasm = this._engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_object_trans_local(this._id), 8); + } + set transformLocal(t) { + this.transformLocal.set(t), this.setDirty(); + } + get transformWorld() { + let wasm = this._engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_object_trans_world(this._id), 8); + } + set transformWorld(t) { + this.transformWorld.set(t), this._engine.wasm._wl_object_trans_world_to_local(this._id); + } + get scalingLocal() { + let wasm = this._engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_object_scaling_local(this._id), 3); + } + set scalingLocal(s) { + this.scalingLocal.set(s), this.setDirty(); + } + get scalingWorld() { + let wasm = this._engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_object_scaling_world(this._id), 3); + } + set scalingWorld(s) { + this.scalingWorld.set(s), this._engine.wasm._wl_object_scaling_world_to_local(this._id); + } + get rotationLocal() { + return this.transformLocal.subarray(0, 4); + } + get rotationWorld() { + return this.transformWorld.subarray(0, 4); + } + set rotationLocal(r) { + this._engine.wasm._wl_object_set_rotation_local(this._id, r[0], r[1], r[2], r[3]); + } + set rotationWorld(r) { + this._engine.wasm._wl_object_set_rotation_world(this._id, r[0], r[1], r[2], r[3]); + } + getForward(out) { + return this.getForwardWorld(out); + } + getForwardWorld(out) { + return out[0] = 0, out[1] = 0, out[2] = -1, this.transformVectorWorld(out), out; + } + getUp(out) { + return this.getUpWorld(out); + } + getUpWorld(out) { + return out[0] = 0, out[1] = 1, out[2] = 0, this.transformVectorWorld(out), out; + } + getRight(out) { + return this.getRightWorld(out); + } + getRightWorld(out) { + return out[0] = 1, out[1] = 0, out[2] = 0, this.transformVectorWorld(out), out; + } + transformVectorWorld(out, v = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = v[0], wasm._tempMemFloat[1] = v[1], wasm._tempMemFloat[2] = v[2], wasm._wl_object_transformVectorWorld(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformVectorLocal(out, v = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = v[0], wasm._tempMemFloat[1] = v[1], wasm._tempMemFloat[2] = v[2], wasm._wl_object_transformVectorLocal(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformPointWorld(out, p = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = p[0], wasm._tempMemFloat[1] = p[1], wasm._tempMemFloat[2] = p[2], wasm._wl_object_transformPointWorld(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformPointLocal(out, p = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = p[0], wasm._tempMemFloat[1] = p[1], wasm._tempMemFloat[2] = p[2], wasm._wl_object_transformPointLocal(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformVectorInverseWorld(out, v = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = v[0], wasm._tempMemFloat[1] = v[1], wasm._tempMemFloat[2] = v[2], wasm._wl_object_transformVectorInverseWorld(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformVectorInverseLocal(out, v = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = v[0], wasm._tempMemFloat[1] = v[1], wasm._tempMemFloat[2] = v[2], wasm._wl_object_transformVectorInverseLocal(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformPointInverseWorld(out, p = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat[0] = p[0], wasm._tempMemFloat[1] = p[1], wasm._tempMemFloat[2] = p[2], wasm._wl_object_transformPointInverseWorld(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + transformPointInverseLocal(out, p = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat.set(p), wasm._wl_object_transformPointInverseLocal(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + toWorldSpaceTransform(out, q = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat.set(q), wasm._wl_object_toWorldSpaceTransform(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out[3] = wasm._tempMemFloat[3], out[4] = wasm._tempMemFloat[4], out[5] = wasm._tempMemFloat[5], out[6] = wasm._tempMemFloat[6], out[7] = wasm._tempMemFloat[7], out; + } + toLocalSpaceTransform(out, q = out) { + let p = this.parent; + return p ? (p.toObjectSpaceTransform(out, q), out) : (out !== q && (out[0] = q[0], out[1] = q[1], out[2] = q[2], out[3] = q[3], out[4] = q[4], out[5] = q[5], out[6] = q[6], out[7] = q[7]), out); + } + toObjectSpaceTransform(out, q = out) { + let wasm = this._engine.wasm; + return wasm._tempMemFloat.set(q), wasm._wl_object_toObjectSpaceTransform(this._id, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out[3] = wasm._tempMemFloat[3], out[4] = wasm._tempMemFloat[4], out[5] = wasm._tempMemFloat[5], out[6] = wasm._tempMemFloat[6], out[7] = wasm._tempMemFloat[7], out; + } + lookAt(p, up = UP_VECTOR) { + return this._engine.wasm._wl_object_lookAt(this._id, p[0], p[1], p[2], up[0], up[1], up[2]), this; + } + destroy() { + this._id < 0 || this.engine.wasm._wl_object_remove(this._id); + } + setDirty() { + this._engine.wasm._wl_object_set_dirty(this._id); + } + set active(b) { + let comps = this.getComponents(); + for (let c of comps) + c.active = b; + } + getComponent(typeOrClass, index = 0) { + let wasm = this._engine.wasm, type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName, scene = this._scene, componentType = wasm._wl_scene_get_component_manager_index(scene._index, wasm.tempUTF8(type)); + if (componentType < 0) { + let typeIndex = wasm._componentTypeIndices[type]; + if (typeIndex === void 0) + return null; + let jsIndex = wasm._wl_get_js_component_index(this._id, typeIndex, index); + if (jsIndex < 0) + return null; + let component = this._scene._jsComponents[jsIndex]; + return component.constructor !== BrokenComponent ? component : null; + } + let componentId = wasm._wl_get_component_id(this._id, componentType, index); + return scene._components.wrapNative(componentType, componentId); + } + getComponents(typeOrClass) { + let wasm = this._engine.wasm, scene = this._scene, manager = null, type = null; + if (typeOrClass) { + type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName; + let nativeManager = scene._components.getNativeManager(type); + manager = nativeManager !== null ? nativeManager : scene._components.js; + } + let components = [], maxComps = Math.floor(wasm._tempMemSize / 3 * 2), componentsCount = wasm._wl_object_get_components(this._id, wasm._tempMem, maxComps), offset2 = 2 * componentsCount; + wasm._wl_object_get_component_types(this._id, wasm._tempMem + offset2, maxComps); + for (let i = 0; i < componentsCount; ++i) { + let t = wasm._tempMemUint8[i + offset2], componentId = wasm._tempMemUint16[i]; + if (manager !== null && t !== manager) + continue; + let comp = this._scene._components.wrapAny(t, componentId); + comp && (type && type !== comp.constructor.TypeName || components.push(comp)); + } + return components; + } + addComponent(typeOrClass, params) { + if (this.markedDestroyed) + throw new Error(`Failed to add component. ${this} is marked as destroyed.`); + let wasm = this._engine.wasm, type = isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName, nativeManager = this._scene._components.getNativeManager(type), isNative = nativeManager !== null, manager = isNative ? nativeManager : this._scene._components.js, componentId = -1; + if (isNative) + componentId = wasm._wl_object_add_component(this._id, manager); + else { + if (!(type in wasm._componentTypeIndices)) + throw new TypeError("Unknown component type '" + type + "'"); + componentId = wasm._wl_object_add_js_component(this._id, wasm._componentTypeIndices[type]); + } + let component = this._scene._components.wrapAny(manager, componentId); + return params !== void 0 && component.copy(params), isNative || component._triggerInit(), (!params || !("active" in params && !params.active)) && (component.active = true), component; + } + findByName(name, recursive = false) { + return recursive ? this.findByNameRecursive(name) : this.findByNameDirect(name); + } + findByNameDirect(name) { + let wasm = this._engine.wasm, id = this._id, maxCount = (wasm._tempMemSize >> 2) - 2, buffer = wasm._tempMemUint16; + buffer[maxCount] = 0, buffer[maxCount + 1] = 0; + let bufferPtr = wasm._tempMem, indexPtr = bufferPtr + maxCount * 2, childCountPtr = bufferPtr + maxCount * 2 + 2, namePtr = wasm.tempUTF8(name, (maxCount + 2) * 2), result = [], read = 0; + for (; read = wasm._wl_object_findByName(id, namePtr, indexPtr, childCountPtr, bufferPtr, maxCount); ) + for (let i = 0; i < read; ++i) + result.push(this._scene.wrap(buffer[i])); + return result; + } + findByNameRecursive(name) { + let wasm = this._engine.wasm, id = this._id, maxCount = (wasm._tempMemSize >> 2) - 1, buffer = wasm._tempMemUint16; + buffer[maxCount] = 0; + let bufferPtr = wasm._tempMem, indexPtr = bufferPtr + maxCount * 2, namePtr = wasm.tempUTF8(name, (maxCount + 1) * 2), read = 0, result = []; + for (; read = wasm._wl_object_findByNameRecursive(id, namePtr, indexPtr, bufferPtr, maxCount); ) + for (let i = 0; i < read; ++i) + result.push(this._scene.wrap(buffer[i])); + return result; + } + get changed() { + return !!this._engine.wasm._wl_object_is_changed(this._id); + } + get isDestroyed() { + return this._id < 0; + } + get markedDestroyed() { + return !!this.engine.wasm._wl_object_markedDestroyed(this._id); + } + equals(otherObject) { + return otherObject ? this._id == otherObject._id : false; + } + toString() { + return this.isDestroyed ? "Object3D(destroyed)" : `Object3D('${this.name}', ${this._localId})`; + } +}; +var Skin = class extends SceneResource { + get jointCount() { + return this.engine.wasm._wl_skin_get_joint_count(this._id); + } + get jointIds() { + let wasm = this.engine.wasm; + return new Uint16Array(wasm.HEAPU16.buffer, wasm._wl_skin_joint_ids(this._id), this.jointCount); + } + get inverseBindTransforms() { + let wasm = this.engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_skin_inverse_bind_transforms(this._id), 8 * this.jointCount); + } + get inverseBindScalings() { + let wasm = this.engine.wasm; + return new Float32Array(wasm.HEAPF32.buffer, wasm._wl_skin_inverse_bind_scalings(this._id), 3 * this.jointCount); + } +}; +var MorphTargets = class extends Resource { + get count() { + return this.engine.wasm._wl_morph_targets_get_target_count(this._id); + } + getTargetName(target) { + if (target >= this.count) + throw new Error(`Index ${target} is out of bounds for ${this.count} targets`); + let wasm = this.engine.wasm; + return wasm.UTF8ToString(wasm._wl_morph_targets_get_target_name(this._id, target)); + } + getTargetIndex(name) { + let wasm = this.engine.wasm, index = wasm._wl_morph_targets_get_target_index(this._id, wasm.tempUTF8(name)); + if (index === -1) + throw Error(`Missing target '${name}'`); + return index; + } +}; +var RayHit = class { + _scene; + _ptr; + constructor(scene, ptr) { + if (ptr & 3) + throw new Error("Misaligned pointer: please report a bug"); + this._scene = scene, this._ptr = ptr; + } + getLocations(out) { + out = out ?? Array.from({ length: this.hitCount }, () => new Float32Array(3)); + let wasm = this.engine.wasm, alignedPtr = this._ptr / 4; + for (let i = 0; i < this.hitCount; ++i) { + let locationPtr = alignedPtr + 3 * i; + out[i][0] = wasm.HEAPF32[locationPtr], out[i][1] = wasm.HEAPF32[locationPtr + 1], out[i][2] = wasm.HEAPF32[locationPtr + 2]; + } + return out; + } + getNormals(out) { + out = out ?? Array.from({ length: this.hitCount }, () => new Float32Array(3)); + let wasm = this.engine.wasm, alignedPtr = (this._ptr + 48) / 4; + for (let i = 0; i < this.hitCount; ++i) { + let normalPtr = alignedPtr + 3 * i; + out[i][0] = wasm.HEAPF32[normalPtr], out[i][1] = wasm.HEAPF32[normalPtr + 1], out[i][2] = wasm.HEAPF32[normalPtr + 2]; + } + return out; + } + getDistances(out = new Float32Array(this.hitCount)) { + let wasm = this.engine.wasm, alignedPtr = (this._ptr + 48 * 2) / 4; + for (let i = 0; i < this.hitCount; ++i) { + let distancePtr = alignedPtr + i; + out[i] = wasm.HEAPF32[distancePtr]; + } + return out; + } + getObjects(out = new Array(this.hitCount)) { + let HEAPU16 = this.engine.wasm.HEAPU16, alignedPtr = this._ptr + (48 * 2 + 16) >> 1; + for (let i = 0; i < this.hitCount; ++i) + out[i] = this._scene.wrap(HEAPU16[alignedPtr + i]); + return out; + } + get engine() { + return this._scene.engine; + } + get locations() { + return this.getLocations(); + } + get normals() { + return this.getNormals(); + } + get distances() { + return this.getDistances(); + } + get objects() { + let objects = [null, null, null, null]; + return this.getObjects(objects); + } + get hitCount() { + return Math.min(this.engine.wasm.HEAPU32[this._ptr / 4 + 30], 4); + } +}; +var math = class { + static cubicHermite(out, a, b, c, d, f, engine2 = WL) { + let wasm = engine2.wasm; + wasm._tempMemFloat.subarray(0).set(a), wasm._tempMemFloat.subarray(4).set(b), wasm._tempMemFloat.subarray(8).set(c), wasm._tempMemFloat.subarray(12).set(d); + let isQuat = a.length == 4; + return wasm._wl_math_cubicHermite(wasm._tempMem + 4 * 16, wasm._tempMem + 4 * 0, wasm._tempMem + 4 * 4, wasm._tempMem + 4 * 8, wasm._tempMem + 4 * 12, f, isQuat), out[0] = wasm._tempMemFloat[16], out[1] = wasm._tempMemFloat[17], out[2] = wasm._tempMemFloat[18], isQuat && (out[3] = wasm._tempMemFloat[19]), out; + } +}; +var I18N = class { + onLanguageChanged = new Emitter(); + _engine; + _prevLanguageIndex = -1; + constructor(engine2) { + this._engine = engine2; + } + set language(code) { + this.setLanguage(code); + } + get language() { + let wasm = this._engine.wasm, code = wasm._wl_i18n_currentLanguage(); + return code === 0 ? null : wasm.UTF8ToString(code); + } + get currentIndex() { + return this._engine.wasm._wl_i18n_currentLanguageIndex(); + } + get previousIndex() { + return this._prevLanguageIndex; + } + async setLanguage(code) { + if (code == null) + return Promise.resolve(this.currentIndex); + let wasm = this._engine.wasm; + this._prevLanguageIndex = this.currentIndex, wasm._wl_i18n_setLanguage(wasm.tempUTF8(code)); + let scene = this.engine.scene, filename = wasm.UTF8ToString(wasm._wl_i18n_languageFile(this.currentIndex)), url = `${scene.baseURL}/locale/${filename}`; + return await scene._downloadDependency(url), this.onLanguageChanged.notify(this._prevLanguageIndex, this.currentIndex), this.currentIndex; + } + translate(term) { + let wasm = this._engine.wasm, translation = wasm._wl_i18n_translate(wasm.tempUTF8(term)); + return translation === 0 ? null : wasm.UTF8ToString(translation); + } + languageCount() { + return this._engine.wasm._wl_i18n_languageCount(); + } + languageIndex(code) { + let wasm = this._engine.wasm; + return wasm._wl_i18n_languageIndex(wasm.tempUTF8(code)); + } + languageCode(index) { + let wasm = this._engine.wasm, code = wasm._wl_i18n_languageCode(index); + return code === 0 ? null : wasm.UTF8ToString(code); + } + languageName(index) { + let wasm = this._engine.wasm, name = wasm._wl_i18n_languageName(index); + return name === 0 ? null : wasm.UTF8ToString(name); + } + get engine() { + return this._engine; + } +}; +var Environment = class { + _scene; + constructor(scene) { + this._scene = scene; + } + get intensity() { + return this._scene.engine.wasm._wl_scene_environment_get_intensity(this._scene._index); + } + set intensity(intensity) { + this._scene.engine.wasm._wl_scene_environment_set_intensity(this._scene._index, intensity); + } + getTint(out = new Float32Array(3)) { + let wasm = this._scene.engine.wasm; + return wasm._wl_scene_environment_get_tint(this._scene._index, wasm._tempMem), out[0] = wasm._tempMemFloat[0], out[1] = wasm._tempMemFloat[1], out[2] = wasm._tempMemFloat[2], out; + } + get tint() { + return this.getTint(); + } + setTint(v) { + this._scene.engine.wasm._wl_scene_environment_set_tint(this._scene._index, v[0], v[1], v[2]); + } + set tint(v) { + this.setTint(v); + } + getCoefficients(out = new Float32Array(3 * 9)) { + let wasm = this._scene.engine.wasm; + wasm.requireTempMem(3 * 9 * 4), wasm._wl_scene_environment_get_coefficients(this._scene._index, wasm._tempMem); + for (let i = 0; i < 3 * 9; ++i) + out[i] = wasm._tempMemFloat[i]; + return out; + } + get coefficients() { + return this.getCoefficients(); + } + setCoefficients(v) { + let count = v.length / 3; + count > 9 ? count = 9 : count > 4 && count < 9 ? count = 4 : count > 1 && count < 4 && (count = 1); + let wasm = this._scene.engine.wasm; + wasm._tempMemFloat.set(v), wasm._wl_scene_environment_set_coefficients(this._scene._index, wasm._tempMem, count); + } + set coefficients(v) { + this.setCoefficients(v); + } +}; +var APIVersion = { major: 1, minor: 4, patch: 2, rc: 0 }; +var MaterialParamType = ((MaterialParamType2) => (MaterialParamType2[MaterialParamType2.UnsignedInt = 0] = "UnsignedInt", MaterialParamType2[MaterialParamType2.Int = 1] = "Int", MaterialParamType2[MaterialParamType2.HalfFloat = 2] = "HalfFloat", MaterialParamType2[MaterialParamType2.Float = 3] = "Float", MaterialParamType2[MaterialParamType2.Sampler = 4] = "Sampler", MaterialParamType2[MaterialParamType2.Font = 5] = "Font", MaterialParamType2))(MaterialParamType || {}); +var Material = class extends Resource { + constructor(engine2, params) { + if (typeof params != "number") { + if (!params?.pipeline) + throw new Error("Missing parameter 'pipeline'"); + let template = engine2.materials.getTemplate(params.pipeline), material = new template(); + return super(engine2, material._index), material; + } + super(engine2, params); + } + hasParameter(name) { + let parameters = this.constructor.Parameters; + return parameters && parameters.has(name); + } + get shader() { + return this.pipeline; + } + get pipeline() { + let wasm = this.engine.wasm; + return wasm.UTF8ToString(wasm._wl_material_get_pipeline(this._id)); + } + clone() { + let index = this.engine.wasm._wl_material_clone(this._id); + return this.engine.materials.wrap(index); + } + toString() { + return this.isDestroyed ? "Material(destroyed)" : `Material('${this.pipeline}', ${this._index})`; + } + static wrap(engine2, index) { + return engine2.materials.wrap(index); + } +}; +var MaterialManager = class extends ResourceManager { + _materialTemplates = []; + constructor(engine2) { + super(engine2, Material), this._cacheDefinitions(); + } + wrap(index) { + if (index <= 0) + return null; + let cached = this._cache[index]; + if (cached) + return cached; + let definition = this.engine.wasm._wl_material_get_definition(index), Template = this._materialTemplates[definition], material = new Template(index); + return this._wrapInstance(material); + } + getTemplate(pipeline) { + let wasm = this.engine.wasm, index = wasm._wl_get_material_definition_index(wasm.tempUTF8(pipeline)); + if (!index) + throw new Error(`Pipeline '${pipeline}' doesn't exist in the scene`); + return this._materialTemplates[index]; + } + _wrapInstance(instance) { + if (this._cache[instance.index] = instance, !this.engine.legacyMaterialSupport) + return instance; + let proxy = new Proxy(instance, { get(target, prop) { + if (!target.hasParameter(prop)) + return target[prop]; + let name = `get${capitalizeFirstUTF8(prop)}`; + return target[name](); + }, set(target, prop, value) { + if (!target.hasParameter(prop)) + return target[prop] = value, true; + let name = `set${capitalizeFirstUTF8(prop)}`; + return target[name](value), true; + } }); + return this._cache[instance.index] = proxy, proxy; + } + _cacheDefinitions() { + let count = this.engine.wasm._wl_get_material_definition_count(); + for (let i = 1; i < count; ++i) + this._materialTemplates[i] = this._createMaterialTemplate(i); + } + _createMaterialTemplate(definitionIndex) { + let engine2 = this.engine, template = class extends Material { + static Parameters = /* @__PURE__ */ new Set(); + constructor(index) { + return index = index ?? engine2.wasm._wl_material_create(definitionIndex), super(engine2, index), engine2.materials._wrapInstance(this); + } + }, wasm = this.engine.wasm, nbParams = wasm._wl_material_definition_get_param_count(definitionIndex); + for (let index = 0; index < nbParams; ++index) { + let name = wasm.UTF8ToString(wasm._wl_material_definition_get_param_name(definitionIndex, index)); + template.Parameters.add(name); + let t = wasm._wl_material_definition_get_param_type(definitionIndex, index), type = t & 255, componentCount = t >> 8 & 255, capitalized = capitalizeFirstUTF8(name), getterId = `get${capitalized}`, setterId = `set${capitalized}`, templateProto = template.prototype; + switch (type) { + case 0: + templateProto[getterId] = uint32Getter(index, componentCount), templateProto[setterId] = uint32Setter(index); + break; + case 1: + templateProto[getterId] = int32Getter(index, componentCount), templateProto[setterId] = uint32Setter(index); + break; + case 2: + case 3: + templateProto[getterId] = float32Getter(index, componentCount), templateProto[setterId] = float32Setter(index, componentCount); + break; + case 4: + templateProto[getterId] = samplerGetter(index), templateProto[setterId] = samplerSetter(index); + break; + case 5: + templateProto[getterId] = fontGetter(index); + break; + } + } + return template; + } +}; +function uint32Getter(index, count) { + return count === 1 ? function() { + let wasm = this.engine.wasm; + return wasm._wl_material_get_param_value(this._id, index, wasm._tempMem), wasm._tempMemUint32[0]; + } : function(out = new Uint32Array(count)) { + let wasm = this.engine.wasm; + wasm._wl_material_get_param_value(this._id, index, wasm._tempMem); + for (let i = 0; i < out.length; ++i) + out[i] = wasm._tempMemUint32[i]; + return out; + }; +} +function uint32Setter(index) { + return function(value) { + this.engine.wasm._wl_material_set_param_value_uint(this._id, index, value); + }; +} +function int32Getter(index, count) { + return count === 1 ? function() { + let wasm = this.engine.wasm; + return wasm._wl_material_get_param_value(this._id, index, wasm._tempMem), wasm._tempMemInt[0]; + } : function(out = new Int32Array(count)) { + let wasm = this.engine.wasm; + wasm._wl_material_get_param_value(this._id, index, wasm._tempMem); + for (let i = 0; i < out.length; ++i) + out[i] = wasm._tempMemInt[i]; + return out; + }; +} +function float32Getter(index, count) { + return count === 1 ? function() { + let wasm = this.engine.wasm; + return wasm._wl_material_get_param_value(this._id, index, wasm._tempMem), wasm._tempMemFloat[0]; + } : function(out = new Float32Array(count)) { + let wasm = this.engine.wasm; + wasm._wl_material_get_param_value(this._id, index, wasm._tempMem); + for (let i = 0; i < out.length; ++i) + out[i] = wasm._tempMemFloat[i]; + return out; + }; +} +function float32Setter(index, count) { + return function(value) { + let wasm = this.engine.wasm, actualCount = 1; + if (typeof value == "number") + wasm._tempMemFloat[0] = value; + else { + actualCount = value.length; + for (let i = 0; i < actualCount; ++i) + wasm._tempMemFloat[i] = value[i]; + } + if (actualCount < count) + throw new Error(`Expected an array ${count} values, got ${actualCount}`); + wasm._wl_material_set_param_value_float(this._id, index, wasm._tempMem, count); + }; +} +function samplerGetter(index) { + return function() { + let wasm = this.engine.wasm; + return wasm._wl_material_get_param_value(this._id, index, wasm._tempMem), this.engine.textures.wrap(wasm._tempMemInt[0]); + }; +} +function samplerSetter(index) { + return function(value) { + this.engine.wasm._wl_material_set_param_value_uint(this._id, index, value?._id ?? 0); + }; +} +function fontGetter(index) { + return function() { + let wasm = this.engine.wasm; + return wasm._wl_material_get_param_value(this._id, index, wasm._tempMem), this.engine.fonts.wrap(wasm._tempMemInt[0]); + }; +} +var MeshManager = class extends ResourceManager { + constructor(engine2) { + super(engine2, Mesh); + } + create(params) { + if (!params.vertexCount) + throw new Error("Missing parameter 'vertexCount'"); + let wasm = this.engine.wasm, indexData = 0, indexType = 0, indexDataSize = 0; + if (params.indexData) + switch (indexType = params.indexType || 2, indexDataSize = params.indexData.length * indexType, indexData = wasm._malloc(indexDataSize), indexType) { + case 1: + wasm.HEAPU8.set(params.indexData, indexData); + break; + case 2: + wasm.HEAPU16.set(params.indexData, indexData >> 1); + break; + case 4: + wasm.HEAPU32.set(params.indexData, indexData >> 2); + break; + } + let { skinningType = 0 } = params, index = wasm._wl_mesh_create(indexData, indexDataSize, indexType, params.vertexCount, skinningType), instance = new Mesh(this._host, index); + return this._cache[instance.index] = instance, instance; + } +}; +function needsFlipY(image) { + return image instanceof ImageBitmap ? 0 : 1; +} +var TextureManager = class extends ResourceManager { + constructor(engine2) { + super(engine2, Texture); + } + create(image) { + let wasm = this.engine.wasm, jsImageIndex = wasm._images.length; + if (wasm._images.push(image), image instanceof HTMLImageElement && !image.complete) + throw new Error("image must be ready to create a texture"); + let width = image.videoWidth ?? image.width, height = image.videoHeight ?? image.height, imageIndex = wasm._wl_image_create(jsImageIndex); + wasm._wl_image_markReady(imageIndex, width, height, needsFlipY(image)); + let index = wasm._wl_texture_create(imageIndex), instance = new Texture(this.engine, index); + return this._cache[instance.index] = instance, instance; + } + load(filename, crossOrigin) { + let image = new Image(); + return image.crossOrigin = crossOrigin ?? image.crossOrigin, image.src = filename, new Promise((resolve, reject) => { + image.onload = () => { + resolve(this.create(image)); + }, image.onerror = function() { + reject("Failed to load image. Not found or no read access"); + }; + }); + } +}; +var XRSessionState = class { + #webxr; + sessionMode; + session; + frame = null; + constructor(webxr, mode, session) { + this.#webxr = webxr, this.sessionMode = mode, this.session = session; + } + referenceSpaceForType(type) { + return this.#webxr.referenceSpaceForType(type); + } + set currentReferenceSpace(refSpace) { + this.#webxr.currentReferenceSpace = refSpace; + } + get currentReferenceSpace() { + return this.#webxr.currentReferenceSpace; + } + get currentReferenceSpaceType() { + return this.#webxr.currentReferenceSpaceType; + } + get baseLayer() { + return this.#webxr.baseLayer; + } + get framebuffers() { + return this.#webxr.framebuffers; + } +}; +var WebXR = class { + #wasm; + engine; + sessionState = null; + colorFormat = 32856; + depthFormat = 35056; + textureType = "texture"; + onSessionEnd = new Emitter(); + onSessionStart = new RetainEmitter(); + onSessionFirstFrame = new Emitter(); + arSupported = false; + vrSupported = false; + baseLayer = null; + framebufferScaleFactor = 1; + _webglBinding = null; + _initXR = false; + _inXR = false; + _refSpaces = { viewer: void 0, local: void 0, "local-floor": void 0, "bounded-floor": void 0, unbounded: void 0 }; + _refSpace = null; + _refSpaceType = null; + _fbo = 0; + _allowLayers = false; + _requestAnimationFrameId = null; + _initialReferenceSpaceType = null; + _tempPosition = new Float32Array(3); + _tempRotation = new Float32Array(4); + _tempPose(transform) { + let p = transform.position; + this._tempPosition[0] = p.x, this._tempPosition[1] = p.y, this._tempPosition[2] = p.z; + let o = transform.orientation; + this._tempRotation[0] = o.x, this._tempRotation[1] = o.y, this._tempRotation[2] = o.z, this._tempRotation[3] = o.w; + } + constructor(engine2) { + this.engine = engine2, this.#wasm = engine2.wasm; + } + checkXRSupport() { + if (typeof navigator > "u") + return Promise.resolve(false); + if (!navigator.xr) { + let isLocalhost = location.hostname === "localhost" || location.hostname === "127.0.0.1", missingHTTPS = location.protocol !== "https:" && !isLocalhost; + return console.warn(missingHTTPS ? "WebXR is only supported with HTTPS or on localhost!" : "WebXR unsupported in this browser."), Promise.resolve(false); + } + let vrPromise = navigator.xr.isSessionSupported("immersive-vr").then((supported) => this.vrSupported = supported).catch(() => this.vrSupported = false), arPromise = navigator.xr.isSessionSupported("immersive-ar").then((supported) => this.arSupported = supported).catch(() => this.arSupported = false); + return Promise.all([vrPromise, arPromise]).then(() => this.vrSupported || this.arSupported); + } + async init(framebufferScaleFactor, offerSessionOptions) { + if (!await this.checkXRSupport()) + return; + this.framebufferScaleFactor = framebufferScaleFactor; + let onXRStart = () => { + this._initialReferenceSpaceType = this.currentReferenceSpaceType; + let newSpace = this._refSpaces.local ?? this._refSpaces.viewer; + this.currentReferenceSpace = newSpace; + }; + if (this.onSessionStart.add(onXRStart), this.engine.onLoadingScreenEnd.once(() => { + this.onSessionStart.remove(onXRStart), this._initialReferenceSpaceType && (this.currentReferenceSpace = this._refSpaces[this._initialReferenceSpaceType] ?? this._refSpaces.viewer, this._initialReferenceSpaceType = null); + }), offerSessionOptions !== null) { + let mode = offerSessionOptions.mode; + mode == "auto" && (this.vrSupported ? mode = "immersive-vr" : this.arSupported ? mode = "immersive-ar" : mode = "inline"); + let offerSession = () => { + this.offerSession(mode, offerSessionOptions.features, offerSessionOptions.optionalFeatures).then((s) => s.addEventListener("end", offerSession)).catch(console.warn); + }; + offerSession(); + } + } + referenceSpaceForType(type) { + return this._refSpaces[type] ?? null; + } + set currentReferenceSpace(refSpace) { + this._refSpace = refSpace, this._refSpaceType = null; + for (let type of Object.keys(this._refSpaces)) + this._refSpaces[type] === refSpace && (this._refSpaceType = type); + } + get currentReferenceSpace() { + return this._refSpace; + } + get currentReferenceSpaceType() { + return this._refSpaceType; + } + get framebuffers() { + return Array.isArray(this._fbo) ? this._fbo.map((id) => this.#wasm.GL.framebuffers[id]) : [this.#wasm.GL.framebuffers[this._fbo]]; + } + updateViewState(inXR) { + let scene = this.engine.scene; + inXR = inXR ?? this._inXR, scene.mainView && (scene.mainView.active = !inXR), scene.leftEyeView && scene.rightEyeView && (scene.leftEyeView.active = inXR, scene.rightEyeView.active = inXR); + } + updateProjectionParams(near, far) { + if (!this.sessionState) + return; + let scene = this.engine.scene; + near ??= scene.leftEyeView.near, far ??= scene.leftEyeView.far; + let reverseZ = !!this.engine.isReverseZEnabled; + this.sessionState.session.updateRenderState({ depthNear: reverseZ ? far : near, depthFar: reverseZ ? near : far }); + } + requestSession(mode, features, optionalFeatures = []) { + let options = this.sessionOptions(features, optionalFeatures); + return navigator.xr.requestSession(mode, options).then(async (s) => (await this.engine.canvas.getContext("webgl2").makeXRCompatible(), this.startSession(s, mode), s)); + } + offerSession(mode, features, optionalFeatures = []) { + if (!navigator.xr.offerSession) + return Promise.reject("WebXR offerSession() unsupported in this browser."); + let options = this.sessionOptions(features, optionalFeatures); + return navigator.xr.offerSession(mode, options).then(async (s) => (await this.engine.canvas.getContext("webgl2").makeXRCompatible(), this.startSession(s, mode), s)); + } + async startSession(session, mode) { + if (session == this.sessionState?.session) + return; + this.sessionState = new XRSessionState(this, mode, session), session.addEventListener("end", () => { + this.endSession(); + }); + let gl = this.engine.canvas.getContext("webgl2"), binding = null; + !("CustomWebXRPolyfill" in window) && "XRWebGLBinding" in window && (binding = this._webglBinding = new XRWebGLBinding(session, gl)); + let useLayers = this._allowLayers && binding; + if (useLayers) { + let layer = this.baseLayer = binding.createProjectionLayer({ scaleFactor: this.framebufferScaleFactor, colorFormat: this.colorFormat, depthFormat: this.depthFormat, textureType: this.textureType ? this.textureType : "texture-array" }); + session.updateRenderState({ layers: [layer] }); + } else { + let layer = this.baseLayer = new XRWebGLLayer(session, gl, { framebufferScaleFactor: this.framebufferScaleFactor }); + session.updateRenderState({ baseLayer: layer }); + } + let promises = []; + for (let type of Object.keys(this._refSpaces)) + promises.push(session.requestReferenceSpace(type).then((refSpace) => (this._refSpaces[type] = refSpace, refSpace))); + await Promise.allSettled(promises).then((results) => { + for (let i = results.length - 1; i >= 0; --i) { + let result = results[i]; + if (result.status !== "rejected") { + this._refSpaceType = Object.keys(this._refSpaces)[i], this._refSpace = result.value; + break; + } + } + }); + let isVR = mode == "immersive-vr", scene = this.engine.scene; + if (isVR && (!scene.leftEyeView || !scene.rightEyeView)) { + console.error("sessionStart(): VR sessions require 1 classic view, a left and a right view"); + return; + } + this.updateViewState(true), this.updateProjectionParams(void 0, void 0), this.onSessionStart.notify(session, this.sessionState.sessionMode), this.#wasm._wl_reset_context(), console.log(`WebXR ${isVR ? "VR" : "AR"} session started`), this.sessionState.session.addEventListener("visibilitychange", (event) => { + switch (event.session.visibilityState) { + case "visible": + this.#wasm._wl_xr_focus(); + case "visible-blurred": + this.#wasm._wl_xr_blur(); + case "hidden": + this.#wasm._wl_xr_hide(); + } + }), this._initXR = true, this._requestAnimationFrameId = session.requestAnimationFrame(useLayers ? this.nextFrameLayers.bind(this) : this.nextFrameSingle.bind(this)); + } + sessionOptions(requiredFeatures, optionalFeatures = []) { + this._allowLayers && !optionalFeatures.includes("layers") && optionalFeatures.push("layers"); + let params = { requiredFeatures, optionalFeatures }; + return (requiredFeatures.includes("depth-sensing") || optionalFeatures.includes("depth-sensing")) && (params.depthSensing = { usagePreference: ["gpu-optimized", "cpu-optimized"], dataFormatPreference: ["float32", "luminance-alpha"] }), params; + } + endSession() { + this.sessionState.session.cancelAnimationFrame(this._requestAnimationFrameId), this._requestAnimationFrameId = null, this.sessionState = null, this.#wasm._wl_reset_context(), this.onSessionStart instanceof RetainEmitter && this.onSessionStart.reset(), this.onSessionEnd.notify(), console.log("WebXR session ended"), this._inXR = false, this.updateViewState(false); + let scene = this.engine.scene; + this.#wasm._wl_xr_exit(), scene.leftEyeView._generateProjectionMatrix(), scene.rightEyeView._generateProjectionMatrix(), this.#wasm._wl_application_redraw(); + } + nextFrame(time, frame) { + this.sessionState.frame = frame; + let session = frame.session, pose = frame.getViewerPose(this._refSpace); + if (!pose) + return; + let scene = this.engine.scene; + this._initXR && (scene.rightEyeView.active = pose.views.length > 1, this.#wasm._wl_xr_init(pose.views.length, !this.baseLayer), this._initXR = false, this._inXR = true, this.onSessionFirstFrame.notify(session, this.sessionState.sessionMode)), this._tempPose(pose.transform), scene._setInputTransformation(0, this._tempPosition, this._tempRotation); + for (let i = 0; i < pose.views.length && i < 2; ++i) { + let view = pose.views[i], viewIndex = view.eye == "right" ? 1 : 0; + this._tempPose(view.transform), scene._setInputTransformation(1 + viewIndex, this._tempPosition, this._tempRotation); + } + for (let inputSource of session.inputSources) { + let handedness = -1; + inputSource.handedness == "left" ? handedness = 0 : inputSource.handedness == "right" && (handedness = 1), this._updateInputComponent(frame, inputSource.gripSpace, 3 + handedness), this._updateInputComponent(frame, inputSource.targetRaySpace, 5 + handedness); + } + this.#wasm._wl_nextFrame(0); + } + nextFrameSingle(time, frame) { + let session = frame.session; + this.sessionState != null && (this._requestAnimationFrameId = session.requestAnimationFrame(this.nextFrameSingle.bind(this))); + let pose = frame.getViewerPose(this._refSpace); + if (!pose) + return; + let gl = this.engine.canvas.getContext("webgl2"), GL = this.#wasm.GL, glLayer = session.renderState.baseLayer; + if (glLayer.framebuffer) { + let id = this._fbo || GL.getNewId(GL.framebuffers); + glLayer.framebuffer.name = id, GL.framebuffers[id] = glLayer.framebuffer, this._fbo = id, gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[id]); + } + for (let i = 0; i < pose.views.length; ++i) { + let view = pose.views[i], viewport = glLayer.getViewport(view), destView; + view.eye == "left" ? destView = this.engine.scene.leftEyeView : view.eye == "right" ? destView = this.engine.scene.rightEyeView : destView = this.engine.scene._components.componentAt(ViewComponent, i), destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height), destView._setProjectionMatrix(view.projectionMatrix), this.#wasm._wl_view_component_remapProjectionMatrix(destView._id, this.engine.isReverseZEnabled, false), this.#wasm._wl_view_component_set_externalFramebuffer(destView._id, this._fbo); + } + this.nextFrame(time, frame); + } + nextFrameLayers(time, frame) { + let session = frame.session; + this.sessionState != null && (this._requestAnimationFrameId = session.requestAnimationFrame(this.nextFrameLayers.bind(this))); + let scene = this.engine.scene, pose = frame.getViewerPose(this._refSpace), layer = this.baseLayer, binding = this._webglBinding, gl = this.engine.canvas.getContext("webgl2"), GL = this.#wasm.GL, createFramebuffer = !this._fbo, textureArray = layer.textureArrayLength == 2; + if (createFramebuffer) { + if (textureArray) + this._fbo = [GL.getNewId(GL.framebuffers), GL.getNewId(GL.framebuffers)]; + else { + let id = GL.getNewId(GL.framebuffers); + this._fbo = [id, id]; + } + this._fbo.forEach((id) => { + let framebuffer = gl.createFramebuffer(); + GL.framebuffers[id] = framebuffer, framebuffer.name = id; + }); + } + let ids = this._fbo; + pose.views.forEach((view) => { + let viewIndex = view.eye == "right" ? 1 : 0, subImage = binding.getViewSubImage(layer, view), viewport = subImage.viewport, destView; + if (view.eye == "right" ? destView = this.engine.scene.rightEyeView : destView = this.engine.scene.leftEyeView, destView._setViewport(viewport.x, viewport.y, viewport.width, viewport.height), destView._setProjectionMatrix(view.projectionMatrix), this.#wasm._wl_view_component_remapProjectionMatrix(destView._id, this.engine.isReverseZEnabled, false), this.#wasm._wl_view_component_set_externalFramebuffer(destView._id, ids[viewIndex]), !createFramebuffer || !textureArray && viewIndex != 0) + return; + let colorTexture = subImage.colorTexture, colorImageId = colorTexture.name = colorTexture.name || GL.getNewId(GL.textures); + GL.textures[colorImageId] = colorTexture; + let depthStencilTexture = subImage.depthStencilTexture, depthStencilImageId = depthStencilTexture.name = depthStencilTexture.name || GL.getNewId(GL.textures); + GL.textures[depthStencilImageId] = depthStencilTexture, gl.bindFramebuffer(gl.FRAMEBUFFER, GL.framebuffers[ids[viewIndex]]), textureArray ? (gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, subImage.colorTexture, 0, subImage.imageIndex), gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, subImage.depthStencilTexture, 0, subImage.imageIndex)) : (gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, subImage.colorTexture, 0), gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.TEXTURE_2D, subImage.depthStencilTexture, 0)), gl.checkFramebufferStatus(gl.FRAMEBUFFER) || console.error("Target framebuffer for", view.eye, "eye is incomplete."); + }), this.nextFrame(time, frame); + } + _updateInputComponent(frame, space, inputType) { + if (!space) + return; + let pose = frame.getPose(space, this._refSpace); + !pose || Number.isNaN(pose.transform.matrix[0]) || (this._tempPose(pose.transform), this.engine.scene._setInputTransformation(inputType, this._tempPosition, this._tempRotation)); + } +}; +var GLTFExtensions = class { + objectCount; + root = {}; + mesh = {}; + node = {}; + constructor(count) { + this.objectCount = count; + } +}; +var PrefabGLTF = class extends Prefab { + extensions = null; + constructor(engine2, index) { + super(engine2, index), this.extensions = this._readExtensions(); + } + _processInstantiaton(dest, root, result) { + if (!this.extensions) + return null; + let wasm = this.engine.wasm, count = this.extensions.objectCount, idMapping = new Array(count), activeRootIndex = wasm._wl_object_index(root._id); + for (let i = 0; i < count; ++i) { + let mappedId = wasm._wl_glTF_scene_extensions_gltfIndex_to_id(this._index, dest._index, activeRootIndex, i); + idMapping[i] = mappedId; + } + let remapped = { mesh: {}, node: {}, idMapping }; + for (let gltfIndex in this.extensions.mesh) { + let id = idMapping[gltfIndex]; + remapped.mesh[id] = this.extensions.mesh[gltfIndex]; + } + for (let gltfIndex in this.extensions.node) { + let id = idMapping[gltfIndex]; + remapped.node[id] = this.extensions.node[gltfIndex]; + } + result.extensions = remapped; + } + _readExtensions() { + let wasm = this.engine.wasm, ptr = wasm._wl_glTF_scene_get_extensions(this._index); + if (!ptr) + return null; + let index = ptr / 4, data = wasm.HEAPU32, readString = () => { + let strPtr = data[index++], strLen = data[index++]; + return wasm.UTF8ViewToString(strPtr, strPtr + strLen); + }, objectCount = data[index++], extensions = new GLTFExtensions(objectCount), meshExtensionsSize = data[index++]; + for (let i = 0; i < meshExtensionsSize; ++i) { + let objectId = data[index++]; + extensions.mesh[objectId] = JSON.parse(readString()); + } + let nodeExtensionsSize = data[index++]; + for (let i = 0; i < nodeExtensionsSize; ++i) { + let objectId = data[index++]; + extensions.node[objectId] = JSON.parse(readString()); + } + let rootExtensionsStr = readString(); + return rootExtensionsStr && (extensions.root = JSON.parse(rootExtensionsStr)), extensions; + } +}; +var MAGIC_BIN = "WLEV"; +var SceneType = ((SceneType2) => (SceneType2[SceneType2.Prefab = 0] = "Prefab", SceneType2[SceneType2.Main = 1] = "Main", SceneType2[SceneType2.Dependency = 2] = "Dependency", SceneType2))(SceneType || {}); +var ChunkedSceneLoadSink = class { + #wasm; + #type; + #closeParameters; + #offset = 0; + #requested = 0; + #firstChunk = true; + _loadIndex = -1; + sceneIndex = -1; + #ptr = 0; + #bufferSize = 0; + constructor(engine2, type, url, ...closeParameters) { + this.#wasm = engine2.wasm, this.#type = type, this.#closeParameters = closeParameters, this._loadIndex = this.#wasm._wl_scene_create_chunked_start(this.#wasm.tempUTF8(url)), this.#requested = this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex), this._resizeBuffer(this.#requested); + } + _resizeBuffer(size) { + this.#bufferSize > 0 && this.#wasm._free(this.#ptr), this.#bufferSize = size, this.#ptr = size ? this.#wasm._malloc(size) : 0; + } + _throwError(reason) { + throw this.abort(), new Error(reason); + } + write(blob) { + let read = 0; + for (; read < blob.length; ) { + let toRead = Math.min(blob.length - read, this.#bufferSize - this.#offset); + if (this.#wasm.HEAPU8.set(blob.subarray(read, read + toRead), this.#ptr + this.#offset), this.#offset += toRead, read += toRead, this.#requested > this.#offset) + continue; + let readSizePtr = this.#wasm._tempMem, requestedPtr = this.#wasm._tempMem + 4, success; + try { + success = this.#wasm._wl_scene_create_chunked_next(this._loadIndex, this.#ptr, this.#offset, readSizePtr, requestedPtr); + } catch { + success = false; + } + success || this._throwError("Chunk parsing failed"); + let sentSize = this.#offset, readSize = this.#wasm._tempMemUint32[0]; + this.#requested = this.#wasm._tempMemUint32[1]; + let extraSize = sentSize - readSize; + extraSize > this.#requested && this._throwError("Unexpected extra data"), readSize && (extraSize > 0 && this.#wasm.HEAPU8.copyWithin(this.#ptr, this.#ptr + readSize, this.#ptr + sentSize), this.#offset = extraSize, this.#firstChunk && (this._resizeBuffer(this.#wasm._wl_scene_create_chunked_buffer_size(this._loadIndex)), this.#firstChunk = false)); + } + } + close() { + switch (this.#requested > 0 && this._throwError("Unexpected end of data"), this._resizeBuffer(0), this.#type) { + case 0: + this.sceneIndex = this.#wasm._wl_scene_create_chunked_end_prefab(this._loadIndex); + break; + case 1: + this.#wasm._wl_scene_create_chunked_end_main(this._loadIndex), this.sceneIndex = 0; + break; + case 2: + [this.sceneIndex] = this.#closeParameters, this.#wasm._wl_scene_create_chunked_end_queued(this._loadIndex, this.sceneIndex); + break; + default: + this.#wasm._wl_scene_create_chunked_abort(this._loadIndex); + break; + } + this._loadIndex = -1; + } + abort() { + this._loadIndex !== -1 && (this.#wasm._wl_scene_create_chunked_abort(this._loadIndex), this._loadIndex = -1, this._resizeBuffer(0)); + } + get size() { + return this.#bufferSize; + } +}; +var Scene = class _Scene extends Prefab { + onPreRender = new Emitter(); + onPostRender = new Emitter(); + _rayHit; + _hit; + _environment; + constructor(engine2, index) { + super(engine2, index), this._rayHit = this.engine?.wasm._malloc(4 * (3 * 4 + 3 * 4 + 4 + 2) + 4), this._hit = new RayHit(this, this._rayHit), this._environment = new Environment(this); + } + instantiate(prefab) { + if (prefab._index === this._index) + throw new Error("Can't instantiate scene into itself"); + let id = this.engine.wasm._wl_scene_instantiate(prefab._index, this._index), result = { root: this.wrap(id) }; + if (prefab instanceof PrefabGLTF) { + let obj = this.wrap(id); + prefab._processInstantiaton(this, obj, result); + } + return result; + } + destroy() { + if (this.isActive) + throw new Error(`Attempt to destroy ${this}, but destroying the active scene is not supported`); + let wasm = this.engine.wasm, rayPtr = this._rayHit; + super.destroy(), wasm._free(rayPtr); + } + get views() { + return this._components.components(ViewComponent, false); + } + get activeViews() { + return this._components.components(ViewComponent, true); + } + get mainView() { + let id = this.engine.wasm._wl_scene_get_mainView(this._index); + return this._components.wrapView(id); + } + get leftEyeView() { + let id = this.engine.wasm._wl_scene_get_leftView(this._index); + return this._components.wrapView(id); + } + get rightEyeView() { + let id = this.engine.wasm._wl_scene_get_rightView(this._index); + return this._components.wrapView(id); + } + _setInputTransformation(type, position, orientation) { + let wasm = this.engine.wasm; + wasm.requireTempMem(4 * 2 * 4), wasm._tempMemFloat.set(position), wasm._tempMemFloat.set(orientation, 4), wasm._wl_input_set_transformation(this._index, type, wasm._tempMem); + } + rayCast(o, d, groupMask, maxDistance = 100) { + return this.engine.wasm._wl_scene_ray_cast(this._index, o[0], o[1], o[2], d[0], d[1], d[2], groupMask, this._rayHit, maxDistance), this._hit; + } + set clearColor(color) { + this.engine.wasm._wl_scene_set_clearColor(color[0], color[1], color[2], color[3]); + } + set colorClearEnabled(b) { + this.engine.wasm._wl_scene_enableColorClear(b); + } + async load(options) { + let engine2 = this.engine, dispatchReadyEvent = false, opts; + isString(options) ? opts = await _Scene.loadBuffer(options, (bytes, size) => { + this.engine.log.info(1, `Scene downloading: ${bytes} / ${size}`), this.engine.setLoadingProgress(bytes / size); + }) : (opts = options, dispatchReadyEvent = options.dispatchReadyEvent ?? false); + let scene = await engine2.loadMainSceneFromBuffer({ ...opts, dispatchReadyEvent }); + return engine2.onSceneLoaded.notify(), scene; + } + async append(file, options = {}) { + let { baseURL = isString(file) ? getBaseUrl(file) : this.baseURL } = options, buffer = isString(file) ? await fetchWithProgress(file) : file, data = new Uint8Array(buffer), scene = data.byteLength > MAGIC_BIN.length && data.subarray(0, MAGIC_BIN.length).every((value, i) => value === MAGIC_BIN.charCodeAt(i)) ? this.engine.loadPrefabFromBuffer({ buffer, baseURL }) : this.engine.loadGLTFFromBuffer({ buffer, baseURL, extensions: options.loadGltfExtensions }), result = this.instantiate(scene); + return scene instanceof PrefabGLTF ? scene.extensions ? { root: result.root, extensions: { ...result.extensions, root: scene.extensions.root } } : result.root : (scene.destroy(), result.root); + } + setLoadingProgress(percentage) { + this.engine.setLoadingProgress(percentage); + } + dispatchReadyEvent() { + document.dispatchEvent(new CustomEvent("wle-scene-ready", { detail: { filename: this.filename } })); + } + set skyMaterial(material) { + this.engine.wasm._wl_scene_set_sky_material(this._index, material?._id ?? 0); + } + get skyMaterial() { + let index = this.engine.wasm._wl_scene_get_sky_material(this._index); + return this.engine.materials.wrap(index); + } + get environment() { + return this._environment; + } + get componentsBundle() { + let wasm = this.engine.wasm, ptr = wasm._wl_scene_get_componentsBundle(this._index); + return ptr ? wasm.UTF8ToString(ptr) : null; + } + reset() { + } + async _downloadDependency(url) { + let sink = new ChunkedSceneLoadSink(this.engine, 2, url, this._index); + return (await fetchStreamWithProgress(url)).pipeTo(new WritableStream(sink)); + } + async _downloadDependencies() { + let wasm = this.engine.wasm, count = wasm._wl_scene_queued_bin_count(this._index); + if (!count) + return Promise.resolve(); + let urls = new Array(count).fill(0).map((_, i) => { + let ptr = wasm._wl_scene_queued_bin_path(this._index, i); + return wasm.UTF8ToString(ptr); + }); + return wasm._wl_scene_clear_queued_bin_list(this._index), Promise.all(urls.map((url) => this._downloadDependency(url))); + } +}; +function checkRuntimeCompatibility(version) { + let { major, minor } = version, majorDiff = major - APIVersion.major, minorDiff = minor - APIVersion.minor; + if (!majorDiff && !minorDiff) + return; + let error = `checkRuntimeCompatibility(): Version compatibility mismatch: + \u2192 API and runtime compatibility is enforced on a patch level (versions x.y.*) +`; + throw majorDiff < 0 || !majorDiff && minorDiff < 0 ? new Error(`${error} \u2192 Please use a Wonderland Engine editor version >= ${APIVersion.major}.${APIVersion.minor}.*`) : new Error(`${error} \u2192 Please use a new API version >= ${version.major}.${version.minor}.*`); +} +function reloadPage(engine2) { + let session = engine2.xr?.session ?? null; + if (!session) { + location.reload(); + return; + } + session.end().then(() => location.reload()); +} +var WonderlandEngine = class { + get onXRSessionEnd() { + return this.#webxr.onSessionEnd; + } + get onXRSessionStart() { + return this.#webxr.onSessionStart; + } + onResize = new Emitter(); + get arSupported() { + return this.#webxr.arSupported; + } + get vrSupported() { + return this.#webxr.vrSupported; + } + onLoadingScreenEnd = new RetainEmitter(); + onSceneLoaded = new Emitter(); + onSceneActivated = new Emitter(); + onHotReloadRequest = new Emitter(); + i18n = new I18N(this); + get xr() { + return this.#webxr.sessionState; + } + erasePrototypeOnDestroy = false; + legacyMaterialSupport = true; + autoHotReload = true; + loadUncompressedImagesAsBitmap = false; + _scenes = []; + _scene; + _mainSceneVersion = 0; + _textures; + _materials; + _meshes; + _morphTargets; + _fonts; + _particleEffects; + _uncompressedPromises = []; + #wasm; + #physics = null; + #webxr; + #resizeObserver = null; + #bundleCache = /* @__PURE__ */ new Set(); + constructor(wasm, loadingScreen, withRenderer) { + this.#wasm = wasm, this.#wasm._setEngine(this), this.#wasm._loadingScreen = loadingScreen; + let version = this.runtimeVersion, versionString = `${version.major}.${version.minor}.${version.patch}`; + version.rc > 0 && (versionString += `-rc${version.rc}`), this.log.info(0, "Wonderland Engine runtime version:", versionString), this.#webxr = new WebXR(this), checkRuntimeCompatibility(this.#wasm.runtimeVersion), this.#wasm._wl_set_error_callback(this.#wasm.addFunction((messagePtr) => { + throw new Error(this.#wasm.UTF8ToString(messagePtr)); + }, "vi")), this.#wasm._wl_application_create(), this.#physics = null, this.#wasm.withPhysX && (this.#physics = new Physics(this)), this._init(withRenderer), this._scene = this._reload(0), this.canvas.addEventListener("webglcontextlost", (e) => this.log.error(0, "Context lost:", e), false); + } + start() { + this.wasm._wl_application_start(); + } + registerComponent(...classes) { + for (let arg of classes) + this.wasm._registerComponent(arg); + } + async registerBundle(url, nocache = false) { + if (!nocache && this.#bundleCache.has(url)) + return; + this.#bundleCache.add(url), nocache && (url += `?t=${Date.now()}`); + let register = (await import(url)).default; + if (typeof register != "function") + throw new Error(`The bundle '${url}' doesn't have a default exported registration function`); + register(this); + } + setLoadingProgress(percentage) { + this.wasm._wl_set_loading_screen_progress(clamp(percentage, 0, 1)); + } + async switchTo(scene, opts = {}) { + this.wasm._wl_deactivate_activeScene(); + let previous = this.scene; + this._preactivate(scene), this.wasm._wl_scene_activate(scene._index), this.#webxr.updateViewState(void 0), this.#webxr.updateProjectionParams(void 0, void 0), this.onLoadingScreenEnd.isDataRetained || this.onLoadingScreenEnd.notify(); + let promise = scene._downloadDependencies(); + await this.i18n.setLanguage(this.i18n.languageCode(0)); + let { dispatchReadyEvent = false, waitForDependencies = false } = opts; + waitForDependencies && await promise, this.onSceneActivated.notify(previous, scene), dispatchReadyEvent && scene.dispatchReadyEvent(); + } + async loadMainScene(options, progress) { + progress ??= (bytes, size) => { + this.log.info(1, `Scene downloading: ${bytes} / ${size}`), this.setLoadingProgress(bytes / size); + }; + let opts = Prefab.makeUrlLoadOptions(options), { streamed = true, nocache = false } = opts; + if (streamed) { + let options2 = await Scene.loadStream(opts, progress), { stream, url } = Prefab.validateStreamOptions(options2); + return this._loadMainScene(stream, url, nocache, options2); + } else { + let options2 = await Scene.loadBuffer(opts, progress); + return this.loadMainSceneFromBuffer(options2); + } + } + async loadMainSceneFromBuffer(options) { + let { nocache = false } = options, { buffer, url } = Prefab.validateBufferOptions(options); + return this._loadMainScene(buffer, url, nocache, options); + } + async loadPrefab(options, progress) { + let opts = Prefab.makeUrlLoadOptions(options), { streamed = true } = opts; + if (streamed) { + let options2 = await Scene.loadStream(opts, progress), scene = await this._loadSceneFromStream(Prefab, options2); + return this._validateLoadedPrefab(scene), scene._initialize(), scene; + } else { + let options2 = await Scene.loadBuffer(opts, progress); + return this.loadPrefabFromBuffer(options2); + } + } + loadPrefabFromBuffer(options) { + let scene = this._loadSceneFromBuffer(Prefab, options); + return this._validateLoadedPrefab(scene), scene._initialize(), scene; + } + async loadScene(options, progress) { + let opts = Prefab.makeUrlLoadOptions(options), { streamed = true } = opts; + if (streamed) { + let options2 = await Scene.loadStream(opts, progress), scene = await this._loadSceneFromStream(Scene, options2); + return this._validateLoadedScene(scene), scene._initialize(), scene; + } else { + let options2 = await Scene.loadBuffer(opts, progress); + return this.loadSceneFromBuffer(options2); + } + } + async loadGLTF(opts, progress) { + let memOptions = await Scene.loadBuffer(opts, progress), options = isString(opts) ? memOptions : { ...opts, ...memOptions }; + return this.loadGLTFFromBuffer(options); + } + loadSceneFromBuffer(options) { + let scene = this._loadSceneFromBuffer(Scene, options); + return this._validateLoadedScene(scene), scene._initialize(), scene; + } + loadGLTFFromBuffer(options) { + Scene.validateBufferOptions(options); + let { buffer, extensions = false } = options, wasm = this.wasm; + if (!wasm._wl_glTF_scene_create) + throw new Error("Loading .gltf files requires `enableRuntimeGltf` to be checked in the editor Project Settings."); + let ptr = wasm.copyBufferToHeap(buffer); + try { + let index = wasm._wl_glTF_scene_create(extensions, ptr, buffer.byteLength), scene = new PrefabGLTF(this, index); + return this._scenes[scene._index] = scene, this.runtimeVersion.patch && this._loadUncompressedImages(scene._index), scene; + } finally { + wasm._free(ptr); + } + } + isRegistered(typeOrClass) { + return this.#wasm.isRegistered(isString(typeOrClass) ? typeOrClass : typeOrClass.TypeName); + } + getComponentClass(typename) { + let index = this.wasm._componentTypeIndices[typename]; + return index === void 0 ? null : this.wasm._componentTypes[index]; + } + resize(width, height, devicePixelRatio = window.devicePixelRatio) { + width = width * devicePixelRatio, height = height * devicePixelRatio, this.canvas.width = width, this.canvas.height = height, this.wasm._wl_application_resize(width, height), this.onResize.notify(); + } + nextFrame(fixedDelta = 0) { + this.#wasm._wl_nextFrame(fixedDelta); + } + requestXRSession(mode, features, optionalFeatures = []) { + return this.#webxr.requestSession(mode, features, optionalFeatures); + } + offerXRSession(mode, features, optionalFeatures = []) { + return this.#webxr.offerSession(mode, features, optionalFeatures); + } + wrapObject(objectId) { + return this.scene.wrap(objectId); + } + toString() { + return "engine"; + } + get scene() { + return this._scene; + } + get wasm() { + return this.#wasm; + } + get webxr() { + return this.#webxr; + } + get canvas() { + return this.#wasm.canvas; + } + get xrSession() { + return this.xr?.session ?? null; + } + get xrFrame() { + return this.xr?.frame ?? null; + } + get xrBaseLayer() { + return this.xr?.baseLayer ?? null; + } + get xrFramebuffer() { + return this.xr?.framebuffers[0] ?? null; + } + get xrFramebufferScaleFactor() { + return this.#webxr.framebufferScaleFactor; + } + set xrFramebufferScaleFactor(value) { + this.#webxr.framebufferScaleFactor = value; + } + get physics() { + return this.#physics; + } + get textures() { + return this._textures; + } + get materials() { + return this._materials; + } + get meshes() { + return this._meshes; + } + get morphTargets() { + return this._morphTargets; + } + get fonts() { + return this._fonts; + } + get particleEffects() { + return this._particleEffects; + } + get images() { + let wasm = this.wasm, max2 = wasm._tempMemSize >> 1, count = wasm._wl_get_images(wasm._tempMem, max2), result = new Array(count); + for (let i = 0; i < count; ++i) { + let index = wasm._tempMemUint16[i]; + result[i] = wasm._images[index]; + } + return result; + } + get imagesPromise() { + let wasm = this.wasm, max2 = wasm._tempMemSize >> 1, count = wasm._wl_get_images(wasm._tempMem, max2), result = new Array(count); + for (let i = 0; i < count; ++i) { + let index = wasm._tempMemUint16[i], loading = this._uncompressedPromises[index]; + result[i] = (loading ?? Promise.resolve()).then(() => wasm._images[index]); + } + return Promise.all(result); + } + get isTextureStreamingIdle() { + return !!this.wasm._wl_renderer_streaming_idle(); + } + get isReverseZEnabled() { + return !!this.wasm._wl_renderer_isReverseZEnabled(); + } + set autoResizeCanvas(flag) { + if (!!this.#resizeObserver !== flag) { + if (!flag) { + this.#resizeObserver?.unobserve(this.canvas), this.#resizeObserver = null; + return; + } + this.#resizeObserver = new ResizeObserver((entries) => { + for (let entry of entries) + entry.target === this.canvas && this.resize(entry.contentRect.width, entry.contentRect.height); + }), this.#resizeObserver.observe(this.canvas); + } + } + get autoResizeCanvas() { + return this.#resizeObserver !== null; + } + get runtimeVersion() { + return this.#wasm.runtimeVersion; + } + get log() { + return this.#wasm._log; + } + _init(withRenderer) { + if (!this.#wasm._wl_application_init(withRenderer)) + throw new Error("Failed to initializing Wonderland runtime"); + return this.resize(this.canvas.clientWidth, this.canvas.clientHeight), true; + } + _reset() { + return this.wasm.reset(), this._scenes.length = 0, this._scene = this._reload(0), this.#bundleCache.clear(), this.switchTo(this._scene); + } + async _reloadRequest(filename) { + if (filename === null) { + reloadPage(this); + return; + } + try { + this.autoHotReload && await this.loadMainScene({ url: filename, nocache: true }); + } catch (e) { + console.error("Hot reload request failed to load main scene, reason:", e), setTimeout(() => reloadPage(this), 1e3); + return; + } + this.onHotReloadRequest.notify(filename); + } + _createEmpty() { + let index = this.wasm._wl_scene_create_empty(), scene = new Scene(this, index); + return this._scenes[index] = scene, scene; + } + _destroyScene(instance) { + this.wasm._wl_scene_destroy(instance._index); + let index = instance._index; + instance._index = -1, this.erasePrototypeOnDestroy && Object.setPrototypeOf(instance, DestroyedPrefabInstance), this._scenes[index] = null; + } + _reload(index) { + let scene = new Scene(this, index); + return this._scenes[index] = scene, this._textures = new TextureManager(this), this._materials = new MaterialManager(this), this._meshes = new MeshManager(this), this._morphTargets = new ResourceManager(this, MorphTargets), this._fonts = new ResourceManager(this, Font), this._particleEffects = new ResourceManager(this, ParticleEffect), this._uncompressedPromises.length = 0, scene; + } + async _loadMainScene(data, url, nocache, options) { + nocache && (url += `?t=${Date.now()}`), this.#wasm._wl_deactivate_activeScene(), ++this._mainSceneVersion; + for (let i = this._scenes.length - 1; i >= 0; --i) { + let scene = this._scenes[i]; + scene && scene.destroy(); + } + this._textures._clear(), this._materials._clear(), this._meshes._clear(), this._morphTargets._clear(), this._uncompressedPromises.length = 0; + let stream = data instanceof ReadableStream ? data : new ReadableStream(new ArrayBufferSource(data)), sink = new ChunkedSceneLoadSink(this, 1, url); + await stream.pipeTo(new WritableStream(sink)); + let mainScene = this._reload(sink.sceneIndex); + this._loadUncompressedImages(mainScene._index), this._preactivate(mainScene); + let componentsBundle = mainScene.componentsBundle; + if (componentsBundle) { + let bundleURL = new URL(componentsBundle, document.baseURI), url2 = nocache ? bundleURL.href.split("?")[0] : bundleURL.href; + await this.registerBundle(url2, nocache); + } + return mainScene._initialize(), await this.switchTo(mainScene, options), mainScene; + } + _loadSceneFromBuffer(PrefabClass, options) { + let { buffer, url } = Scene.validateBufferOptions(options), sink = new ChunkedSceneLoadSink(this, 0, url); + sink.write(new Uint8Array(buffer)), sink.close(); + let index = sink.sceneIndex, scene = new PrefabClass(this, index); + return this._scenes[index] = scene, this._loadUncompressedImages(scene._index), scene; + } + async _loadSceneFromStream(PrefabClass, options) { + let { stream, url } = Scene.validateStreamOptions(options), sink = new ChunkedSceneLoadSink(this, 0, url); + await stream.pipeTo(new WritableStream(sink)); + let index = sink.sceneIndex, scene = new PrefabClass(this, index); + return this._scenes[index] = scene, this._loadUncompressedImages(scene._index), scene; + } + _validateLoadedPrefab(scene) { + if (this.wasm._wl_scene_activatable(scene._index)) + throw this.wasm._wl_scene_destroy(scene._index), new Error("File is not a prefab. To load a scene, use loadScene() instead"); + } + _validateLoadedScene(scene) { + if (!this.wasm._wl_scene_activatable(scene._index)) + throw this.wasm._wl_scene_destroy(scene._index), new Error("File is not a scene. To load a prefab, use loadPrefab() instead"); + } + _preactivate(scene) { + this._scene = scene, this.physics && (this.physics._hit._scene = scene); + } + _loadUncompressedImages(sceneIndex) { + let mainSceneVersion = this._mainSceneVersion, wasm = this.wasm, bitmapOptions = { colorSpaceConversion: "none" }, imageCount = wasm._wl_image_count(); + for (let i = 0; i < imageCount; ++i) { + if (wasm._wl_image_originalScene(i) !== sceneIndex) + continue; + let jsImageIndex = wasm._wl_image_get_jsImage_index(i), image = wasm._images[jsImageIndex]; + if (!image) + continue; + let promise = onImageReady(image); + this.loadUncompressedImagesAsBitmap && (promise = promise.then((img) => createImageBitmap(img, bitmapOptions))), this._uncompressedPromises[jsImageIndex] = promise.then((img) => { + this._mainSceneVersion === mainSceneVersion && wasm._wl_image_markReady(i, img.width, img.height, needsFlipY(img)); + }).catch((e) => { + this._mainSceneVersion === mainSceneVersion && this.log.error(1, "Failed to load uncompressed image", e); + }); + } + } +}; +function assert(bit) { + if (bit >= 32) + throw new Error(`BitSet.enable(): Value ${bit} is over 31`); +} +var BitSet = class { + _bits = 0; + enable(...bits) { + for (let bit of bits) + assert(bit), this._bits |= 1 << bit >>> 0; + return this; + } + enableAll() { + return this._bits = -1, this; + } + disable(...bits) { + for (let bit of bits) + assert(bit), this._bits &= ~(1 << bit >>> 0); + return this; + } + disableAll() { + return this._bits = 0, this; + } + enabled(bit) { + return !!(this._bits & 1 << bit >>> 0); + } +}; +var LogLevel = ((LogLevel2) => (LogLevel2[LogLevel2.Info = 0] = "Info", LogLevel2[LogLevel2.Warn = 1] = "Warn", LogLevel2[LogLevel2.Error = 2] = "Error", LogLevel2))(LogLevel || {}); +var Logger = class { + levels = new BitSet(); + tags = new BitSet().enableAll(); + onLog = new Emitter(); + constructor(...levels) { + this.levels.enable(...levels); + } + info(tag, ...msg) { + return this.levels.enabled(0) && this.tags.enabled(tag) && console.log(...msg), this.onLog.notify(0, msg, tag), this; + } + warn(tag, ...msg) { + return this.levels.enabled(1) && this.tags.enabled(tag) && console.warn(...msg), this.onLog.notify(1, msg, tag), this; + } + error(tag, ...msg) { + return this.levels.enabled(2) && this.tags.enabled(tag) && console.error(...msg), this.onLog.notify(2, msg, tag), this; + } +}; +var WASM = class { + wasm = null; + canvas = null; + preinitializedWebGPUDevice = null; + UTF8ViewToString; + _log = new Logger(); + _deactivate_component_on_error = false; + _tempMem = null; + _tempMemSize = 0; + _tempMemFloat = null; + _tempMemInt = null; + _tempMemUint8 = null; + _tempMemUint32 = null; + _tempMemUint16 = null; + _loadingScreen = null; + _sceneLoadedCallback = []; + _images = [null]; + _components = null; + _componentTypes = []; + _componentTypeIndices = {}; + _engine = null; + _withPhysX = false; + _utf8Decoder = new TextDecoder("utf8"); + _brokenComponentIndex = 0; + constructor(threads2) { + threads2 ? this.UTF8ViewToString = (s, e) => s ? this._utf8Decoder.decode(this.HEAPU8.slice(s, e)) : "" : this.UTF8ViewToString = (s, e) => s ? this._utf8Decoder.decode(this.HEAPU8.subarray(s, e)) : "", this._brokenComponentIndex = this._registerComponent(BrokenComponent); + } + get runtimeVersion() { + let tempBuf = this._malloc(8), tempVersion = new Uint16Array(this.HEAP8.buffer, tempBuf, 4); + this._wl_runtime_version(tempBuf); + let version = { major: tempVersion[0], minor: tempVersion[1], patch: tempVersion[2], rc: tempVersion[3] }; + return this._free(tempBuf), version; + } + reset() { + this._wl_reset(), this._components = null, this._images.length = 1, this.allocateTempMemory(1024), this._componentTypes = [], this._componentTypeIndices = {}, this._brokenComponentIndex = this._registerComponent(BrokenComponent); + } + isRegistered(type) { + return type in this._componentTypeIndices; + } + _registerComponentLegacy(typeName, params, object) { + let ctor = class extends Component3 { + }; + return ctor.TypeName = typeName, ctor.Properties = params, Object.assign(ctor.prototype, object), this._registerComponent(ctor); + } + _registerComponent(ctor) { + if (!ctor.TypeName) + throw new Error("no name provided for component."); + if (!ctor.prototype._triggerInit) + throw new Error(`registerComponent(): Component ${ctor.TypeName} must extend Component`); + setupComponentClass(ctor); + let typeIndex = ctor.TypeName in this._componentTypeIndices ? this._componentTypeIndices[ctor.TypeName] : this._componentTypes.length; + return this._componentTypes[typeIndex] = ctor, this._componentTypeIndices[ctor.TypeName] = typeIndex, ctor === BrokenComponent || (this._log.info(0, "Registered component", ctor.TypeName, `(class ${ctor.name})`, "with index", typeIndex), ctor.onRegister && ctor.onRegister(this._engine)), typeIndex; + } + allocateTempMemory(size) { + this._log.info(0, "Allocating temp mem:", size), this._tempMemSize = size, this._tempMem && this._free(this._tempMem), this._tempMem = this._malloc(this._tempMemSize), this.updateTempMemory(); + } + requireTempMem(size) { + this._tempMemSize >= size || this.allocateTempMemory(Math.ceil(size / 1024) * 1024); + } + updateTempMemory() { + this._tempMemFloat = new Float32Array(this.HEAP8.buffer, this._tempMem, this._tempMemSize >> 2), this._tempMemInt = new Int32Array(this.HEAP8.buffer, this._tempMem, this._tempMemSize >> 2), this._tempMemUint32 = new Uint32Array(this.HEAP8.buffer, this._tempMem, this._tempMemSize >> 2), this._tempMemUint16 = new Uint16Array(this.HEAP8.buffer, this._tempMem, this._tempMemSize >> 1), this._tempMemUint8 = new Uint8Array(this.HEAP8.buffer, this._tempMem, this._tempMemSize); + } + getTempBufferU8(count) { + return this.requireTempMem(count), this._tempMemUint8; + } + getTempBufferU16(count) { + return this.requireTempMem(count * 2), this._tempMemUint16; + } + getTempBufferU32(count) { + return this.requireTempMem(count * 4), this._tempMemUint32; + } + getTempBufferI32(count) { + return this.requireTempMem(count * 4), this._tempMemInt; + } + getTempBufferF32(count) { + return this.requireTempMem(count * 4), this._tempMemFloat; + } + tempUTF8(str5, byteOffset = 0) { + let strLen = this.lengthBytesUTF8(str5) + 1; + this.requireTempMem(strLen + byteOffset); + let ptr = this._tempMem + byteOffset; + return this.stringToUTF8(str5, ptr, strLen), ptr; + } + copyBufferToHeap(buffer) { + let size = buffer.byteLength, ptr = this._malloc(size); + return this.HEAPU8.set(new Uint8Array(buffer), ptr), ptr; + } + get withPhysX() { + return this._withPhysX; + } + _setEngine(engine2) { + this._engine = engine2; + } + _wljs_reload(filenamePtr) { + let filename = filenamePtr ? this.UTF8ToString(filenamePtr) : null; + this._engine._reloadRequest(filename); + } + _wljs_init(withPhysX) { + this._withPhysX = withPhysX, this.allocateTempMemory(1024); + } + _wljs_scene_switch(index) { + let scene = this._engine._scenes[index]; + this._components = scene?._jsComponents ?? null; + } + _wljs_destroy_image(index) { + let img = this._images[index]; + img && (this._images[index] = null, img.src !== void 0 && (img.src = ""), img.onload !== void 0 && (img.onload = null), img.onerror !== void 0 && (img.onerror = null)); + } + _wljs_objects_markDestroyed(sceneIndex, idsPtr, count) { + let scene = this._engine._scenes[sceneIndex], start = idsPtr >>> 1; + for (let i = 0; i < count; ++i) { + let id = this.HEAPU16[start + i]; + scene._destroyObject(id); + } + } + _wljs_scene_initialize(sceneIndex, idsPtr, idsEnd, paramDataPtr, paramDataEndPtr, offsetsPtr, offsetsEndPtr) { + let cborEncoded = this.HEAPU8.subarray(paramDataPtr, paramDataEndPtr), offsets = this.HEAPU32.subarray(offsetsPtr >>> 2, offsetsEndPtr >>> 2), ids = this.HEAPU16.subarray(idsPtr >>> 1, idsEnd >>> 1), scene = this._engine._scenes[sceneIndex], components = scene._jsComponents, cbor = new CBORReader(cborEncoded), componentsCount = 0; + { + let typeInfo = cbor.readTypeInfo(); + if (getType(typeInfo) !== 0) { + this._log.error(0, "Parameters data must be an array"); + return; + } + componentsCount = cbor.readArrayLength(typeInfo); + } + if (componentsCount !== ids.length) { + this._log.error(0, `Parameters set for ${componentsCount} components, but expected ${ids.length}`); + return; + } + let decoder = new ComponentPropertyDecoder(scene, offsets); + for (let i = 0; i < componentsCount; ++i) { + let id = Component3._pack(sceneIndex, ids[i]), index = this._wl_get_js_component_index_for_id(id), component = components[index]; + decoder.decode(cbor, component); + } + } + _wljs_set_component_param_translation(scene, component, param, valuePtr, valueEndPtr) { + let comp = this._engine._scenes[scene]._jsComponents[component], value = this.UTF8ViewToString(valuePtr, valueEndPtr), paramName = comp.constructor._propertyOrder[param]; + comp[paramName] = value; + } + _wljs_get_component_type_index(namePtr, nameEndPtr) { + let typename = this.UTF8ViewToString(namePtr, nameEndPtr), index = this._componentTypeIndices[typename]; + return index === void 0 ? this._brokenComponentIndex : index; + } + _wljs_component_create(sceneIndex, index, id, type, object) { + this._engine._scenes[sceneIndex]._components.createJs(index, id, type, object); + } + _wljs_component_init(scene, component) { + this._engine._scenes[scene]._jsComponents[component]._triggerInit(); + } + _wljs_component_update(component, dt) { + this._components[component]._triggerUpdate(dt); + } + _wljs_component_onActivate(component) { + this._components[component]._triggerOnActivate(); + } + _wljs_component_onDeactivate(component) { + this._components[component]._triggerOnDeactivate(); + } + _wljs_component_markDestroyed(sceneIndex, manager, componentId) { + this._engine._scenes[sceneIndex]._destroyComponent(manager, componentId); + } + _wljs_swap(scene, a, b) { + let components = this._engine._scenes[scene]._jsComponents, componentA = components[a]; + components[a] = components[b], components[b] = componentA; + } + _wljs_copy(srcSceneIndex, srcIndex, dstSceneIndex, dstIndex, offsetsPtr, copyInfoPtr) { + let srcScene = this._engine._scenes[srcSceneIndex], destComp = this._engine._scenes[dstSceneIndex]._jsComponents[dstIndex], srcComp = srcScene._jsComponents[srcIndex]; + destComp._copy(srcComp, offsetsPtr, copyInfoPtr); + } + _wljs_trigger_animationEvent(componentId, namePtr, nameEndPtr) { + let comp = this._engine.scene._components.wrapAnimation(componentId), nameStr = this.UTF8ViewToString(namePtr, nameEndPtr); + comp.onEvent.notify(nameStr); + } +}; +var LOADING_SCREEN_PATH = "WonderlandRuntime-LoadingScreen.bin"; +function loadScript(scriptURL) { + return new Promise((resolve, reject) => { + let s = document.createElement("script"), node = document.body.appendChild(s); + s.onload = () => { + document.body.removeChild(node), resolve(); + }, s.onerror = (e) => { + document.body.removeChild(node), reject(e); + }, s.src = scriptURL; + }); +} +async function detectFeatures() { + let threadsSupported = await threads(); + return threadsSupported ? self.crossOriginIsolated ? console.log("WASM Threads is supported") : console.warn("WASM Threads is supported, but the page is not crossOriginIsolated, therefore thread support is disabled.") : console.warn("WASM Threads is not supported"), threadsSupported = threadsSupported && self.crossOriginIsolated, { threadsSupported }; +} +async function loadRuntime(runtime, options = {}) { + let baseURL = getBaseUrl(runtime), { threadsSupported } = await detectFeatures(), { threads: threads2 = threadsSupported, webgpu = false, physx = false, loader = false, renderer = true, xrFramebufferScaleFactor = 1, xrOfferSession = null, loadingScreen = baseURL ? `${baseURL}/${LOADING_SCREEN_PATH}` : LOADING_SCREEN_PATH, canvas: canvas2 = "canvas", logs = [0, 1, 2] } = options, variant = []; + loader && variant.push("loader"), physx && variant.push("physx"), threads2 && variant.push("threads"), webgpu && variant.push("webgpu"); + let variantStr = variant.join("-"), filename = runtime; + variantStr && (filename = `${filename}-${variantStr}`); + let download = function(filename2, errorMessage) { + return fetch(filename2).then((r) => r.ok ? r.arrayBuffer() : Promise.reject(errorMessage)).catch((_) => Promise.reject(errorMessage)); + }, [wasmData, loadingScreenData] = await Promise.all([download(`${filename}.wasm`, `Failed to fetch runtime .wasm file: ${filename}`), download(loadingScreen, "Failed to fetch loading screen file")]), canvasElement = document.getElementById(canvas2); + if (!canvasElement) + throw new Error(`loadRuntime(): Failed to find canvas with id '${canvas2}'`); + if (!(canvasElement instanceof HTMLCanvasElement)) + throw new Error(`loadRuntime(): HTML element '${canvas2}' must be a canvas`); + let wasm = new WASM(threads2); + wasm.wasm = wasmData, wasm.canvas = canvasElement, wasm._log.levels.enable(...logs), window._WL || (window._WL = { runtimes: {} }); + let runtimes = window._WL.runtimes, runtimeGlobalId = variantStr || "default"; + if (runtimes[runtimeGlobalId] || (await loadScript(`${filename}.js`), runtimes[runtimeGlobalId] = window.instantiateWonderlandRuntime, window.instantiateWonderlandRuntime = void 0), await runtimes[runtimeGlobalId](wasm), webgpu) { + let WebGPU = wasm.WebGPU, adapter = await navigator.gpu.requestAdapter(), adapterId = WebGPU.mgrAdapter.create(adapter), desc = { requiredFeatures: ["texture-compression-bc", "depth32float-stencil8"] }, device = await adapter.requestDevice(desc), deviceId = WebGPU.mgrDevice.create(adapter); + wasm.preinitializedWebGPUDevice = device, canvasElement.getContext("webgpu").configure({ device, format: navigator.gpu.getPreferredCanvasFormat(), alphaMode: "premultiplied" }); + } + let engine2 = new WonderlandEngine(wasm, loadingScreenData, renderer); + return await engine2.webxr.init(xrFramebufferScaleFactor, xrOfferSession), engine2.autoResizeCanvas = true, engine2.start(), engine2; +} + +// node_modules/@wonderlandengine/components/dist/8thwall-camera.js +var ARCamera8thwall = class extends Component3 { + /* 8thwall camera pipeline module name */ + name = "wonderland-engine-8thwall-camera"; + started = false; + view = null; + // cache camera + position = [0, 0, 0]; + // cache 8thwall cam position + rotation = [0, 0, 0, -1]; + // cache 8thwall cam rotation + glTextureRenderer = null; + // cache XR8.GlTextureRenderer.pipelineModule + promptForDeviceMotion() { + return new Promise(async (resolve, reject) => { + window.dispatchEvent(new Event("8thwall-request-user-interaction")); + window.addEventListener("8thwall-safe-to-request-permissions", async () => { + try { + const motionEvent = await DeviceMotionEvent.requestPermission(); + resolve(motionEvent); + } catch (exception) { + reject(exception); + } + }); + }); + } + async getPermissions() { + if (DeviceMotionEvent && DeviceMotionEvent.requestPermission) { + try { + const result = await DeviceMotionEvent.requestPermission(); + if (result !== "granted") { + throw new Error("MotionEvent"); + } + } catch (exception) { + if (exception.name === "NotAllowedError") { + const motionEvent = await this.promptForDeviceMotion(); + if (motionEvent !== "granted") { + throw new Error("MotionEvent"); + } + } else { + throw new Error("MotionEvent"); + } + } + } + try { + const stream = await navigator.mediaDevices.getUserMedia({ + video: true, + audio: true + }); + stream.getTracks().forEach((track) => { + track.stop(); + }); + } catch (exception) { + throw new Error("Camera"); + } + } + init() { + this.view = this.object.getComponent("view"); + this.onUpdate = this.onUpdate.bind(this); + this.onAttach = this.onAttach.bind(this); + this.onException = this.onException.bind(this); + this.onCameraStatusChange = this.onCameraStatusChange.bind(this); + } + async start() { + this.view = this.object.getComponent("view"); + if (!this.useCustomUIOverlays) { + OverlaysHandler.init(); + } + try { + await this.getPermissions(); + } catch (error) { + window.dispatchEvent(new CustomEvent("8thwall-permission-fail", { detail: error })); + return; + } + await this.waitForXR8(); + XR8.XrController.configure({ + disableWorldTracking: false + }); + this.glTextureRenderer = XR8.GlTextureRenderer.pipelineModule(); + XR8.addCameraPipelineModules([ + this.glTextureRenderer, + XR8.XrController.pipelineModule(), + this + ]); + const config = { + cameraConfig: { + direction: XR8.XrConfig.camera().BACK + }, + canvas: Module.canvas, + allowedDevices: XR8.XrConfig.device().ANY, + ownRunLoop: false + }; + XR8.run(config); + } + /** + * @private + * 8thwall pipeline function + */ + onAttach(params) { + this.started = true; + this.engine.scene.colorClearEnabled = false; + const gl = Module.ctx; + const rot = this.object.rotationWorld; + const pos = this.object.getTranslationWorld([]); + this.position = Array.from(pos); + this.rotation = Array.from(rot); + XR8.XrController.updateCameraProjectionMatrix({ + origin: { x: pos[0], y: pos[1], z: pos[2] }, + facing: { x: rot[0], y: rot[1], z: rot[2], w: rot[3] }, + cam: { + pixelRectWidth: Module.canvas.width, + pixelRectHeight: Module.canvas.height, + nearClipPlane: this.view.near, + farClipPlane: this.view.far + } + }); + this.engine.scene.onPreRender.push(() => { + gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null); + XR8.runPreRender(Date.now()); + XR8.runRender(); + }); + this.engine.scene.onPostRender.push(() => { + XR8.runPostRender(Date.now()); + }); + } + /** + * @private + * 8thwall pipeline function + */ + onCameraStatusChange(e) { + if (e && e.status === "failed") { + this.onException(new Error(`Camera failed with status: ${e.status}`)); + } + } + /** + * @private + * 8thwall pipeline function + */ + onUpdate(e) { + if (!e.processCpuResult.reality) + return; + const { rotation, position, intrinsics } = e.processCpuResult.reality; + this.rotation[0] = rotation.x; + this.rotation[1] = rotation.y; + this.rotation[2] = rotation.z; + this.rotation[3] = rotation.w; + this.position[0] = position.x; + this.position[1] = position.y; + this.position[2] = position.z; + if (intrinsics) { + const projectionMatrix = this.view.projectionMatrix; + for (let i = 0; i < 16; i++) { + if (Number.isFinite(intrinsics[i])) { + projectionMatrix[i] = intrinsics[i]; + } + } + } + if (position && rotation) { + this.object.rotationWorld = this.rotation; + this.object.setTranslationWorld(this.position); + } + } + /** + * @private + * 8thwall pipeline function + */ + onException(error) { + console.error("8thwall exception:", error); + window.dispatchEvent(new CustomEvent("8thwall-error", { detail: error })); + } + waitForXR8() { + return new Promise((resolve, _rej) => { + if (window.XR8) { + resolve(); + } else { + window.addEventListener("xrloaded", () => resolve()); + } + }); + } +}; +__publicField(ARCamera8thwall, "TypeName", "8thwall-camera"); +__publicField(ARCamera8thwall, "Properties", { + /** Override the WL html overlays for handling camera/motion permissions and error handling */ + useCustomUIOverlays: { type: Type.Bool, default: false } +}); +var OverlaysHandler = { + init: function() { + this.handleRequestUserInteraction = this.handleRequestUserInteraction.bind(this); + this.handlePermissionFail = this.handlePermissionFail.bind(this); + this.handleError = this.handleError.bind(this); + window.addEventListener("8thwall-request-user-interaction", this.handleRequestUserInteraction); + window.addEventListener("8thwall-permission-fail", this.handlePermissionFail); + window.addEventListener("8thwall-error", this.handleError); + }, + handleRequestUserInteraction: function() { + const overlay = this.showOverlay(requestPermissionOverlay); + window.addEventListener("8thwall-safe-to-request-permissions", () => { + overlay.remove(); + }); + }, + handlePermissionFail: function(_reason) { + this.showOverlay(failedPermissionOverlay); + }, + handleError: function(_error) { + this.showOverlay(runtimeErrorOverlay); + }, + showOverlay: function(htmlContent) { + const overlay = document.createElement("div"); + overlay.innerHTML = htmlContent; + document.body.appendChild(overlay); + return overlay; + } +}; +var requestPermissionOverlay = ` + + +