@enable3d/three-graphics
Version:
3D library wrapping three.js and ammo.js
38 lines • 1.55 kB
JavaScript
/**
* @author Yannick Deubel (https://github.com/yandeu)
* @copyright Copyright (c) 2021 Yannick Deubel; Project Url: https://github.com/enable3d/enable3d
* @license {@link https://github.com/enable3d/enable3d/blob/master/LICENSE|LGPL-3.0}
*/
import { Scene, Vector2 } from 'three';
import Cameras from '../plugins/cameras.js';
import { setOrbitControls, setParent } from './_misc.js';
import { updateEvents, setSize } from './_misc.js';
export { updateEvents, getParent, destroy, setSize } from './_misc.js';
/** Init the 2D element support. */
export const init = (renderer, config = {}) => {
// To allow render overlay on top of the 3d camera
renderer.autoClear = false;
const { width = window.innerWidth, height = window.innerHeight, size = renderer.getSize(new Vector2()) } = config;
setSize(size.x, size.y);
return {
// {x: 0, y: 0} is bottomLeft
camera: Cameras.Orthographic({ left: 0, right: width, bottom: 0, top: height }),
scene: new Scene()
};
};
/** Use this if you need events on the 2D elements. */
export const initEvents = ({ canvas, orbitControls }) => {
setOrbitControls(orbitControls);
setParent(canvas);
};
export const preRender = (renderer) => {
renderer.clear();
};
export const postRender = (renderer, flatArea) => {
if (flatArea && flatArea.scene && flatArea.camera) {
renderer.clearDepth();
renderer.render(flatArea.scene, flatArea.camera);
updateEvents(flatArea.camera);
}
};
//# sourceMappingURL=flat.js.map