UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

26 lines 1.36 kB
import fpsAlpha from "../display/utils/fpsAlpha"; import getWorldPosition from "../memo/getWorldPosition"; import getWorldQuaternion from "../memo/getWorldQuaternion"; import interpolationCamera from "../engine/interpolationCamera"; import createInternalSystem from "./utils/createInternalSystem"; const lerp = (a, b, t) => a + (b - a) * t; export const cameraInterpolationSystem = createInternalSystem("cameraInterpolationSystem", { data: {}, update: (cameraTo, data) => { const positionTo = getWorldPosition(cameraTo); const quaternionTo = getWorldQuaternion(cameraTo); interpolationCamera.position.lerpVectors(data.positionFrom, positionTo, data.progress); interpolationCamera.quaternion.slerpQuaternions(data.quaternionFrom, quaternionTo, data.progress); interpolationCamera.zoom = lerp(data.cameraFrom.zoom, cameraTo.zoom, data.progress); interpolationCamera.fov = lerp(data.cameraFrom.fov, cameraTo.fov, data.progress); interpolationCamera.updateProjectionMatrix(); data.progress = Math.min((1 - data.progress) * fpsAlpha(0.1), data.diffMax) + data.progress; if (data.progress < 0.9999) return; cameraInterpolationSystem.delete(cameraTo); data.onFinish(); } }); //# sourceMappingURL=cameraInterpolationSystem.js.map