You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
962 B
33 lines
962 B
const setSize = (container, camera, renderer) => {
|
|
// These are great for full-screen, which adjusts to a window.
|
|
const height = window.innerHeight;
|
|
const width = window.innerWidth - 50;
|
|
// These are better for fitting in a container, which stays that size.
|
|
//const height = container.scrollHeight;
|
|
//const width = container.scrollWidth;
|
|
|
|
camera.aspect = width / height;
|
|
camera.updateProjectionMatrix();
|
|
|
|
renderer.setSize(width, height);
|
|
renderer.setPixelRatio(window.devicePixelRatio);
|
|
};
|
|
|
|
class Resizer {
|
|
constructor(container, camera, renderer) {
|
|
// set initial size on load
|
|
setSize(container, camera, renderer);
|
|
|
|
window.addEventListener("resize", () => {
|
|
// set the size again if a resize occurs
|
|
setSize(container, camera, renderer);
|
|
// perform any custom actions
|
|
this.onResize();
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
onResize() {}
|
|
}
|
|
|
|
export { Resizer };
|
|
|