UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

47 lines (36 loc) 1.17 kB
import { Camera } from "./Camera.js"; /** * * @param {Camera} camera * @param {number} width * @param {number} height */ export function set_camera_aspect_ratio(camera, width, height) { const c = camera.object; if (c === null) { return; } const aspect = width / height; switch (camera.projectionType.getValue()) { case Camera.ProjectionType.Perspective: c.aspect = aspect; break; case Camera.ProjectionType.Orthographic: //use smaller values to get a bit of a "zoom" on the world const w = c.right - c.left; const h = c.bottom - c.top; const existingAspect = w / h; const aspectDelta = aspect - existingAspect; if (aspectDelta > 0) { const d = h * aspectDelta; c.left -= d / 2; c.right += d / 2; } else if (aspectDelta < 0) { const d = -h * aspectDelta; c.top += d / 2; c.bottom -= d / 2; } break; } c.updateProjectionMatrix(); }