Source: systems/Resizer.js

/**
 * This class is responsible for resizing the game canvas on startup.
 */
class Resizer {
    /**
     * @param {HTMLDivElement} container 
     * @param {THREE.Camera} camera 
     * @param {THREE.Renderer} renderer 
     */
    constructor(container, camera, renderer) {
        this.setSize(container, camera, renderer);
        window.addEventListener("resize", () => {
            // set the size again if a resize occurs
            this.setSize(container, camera, renderer);
        });
    }
    setSize(container, camera, renderer) {
        // Set the camera's aspect ratio
        camera.aspect = container.clientWidth / container.clientHeight;
        camera.updateProjectionMatrix();
        // update the size of the renderer AND the canvas
        renderer.setSize(container.clientWidth, container.clientHeight);
        // set the pixel ratio (for mobile devices)
        renderer.setPixelRatio(window.devicePixelRatio);
    }
}

export { Resizer };