| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | import {	FileLoader,	Loader,	CanvasTexture,	NearestFilter} from '../../../build/three.module.js';class LottieLoader extends Loader {	setQuality( value ) {		this._quality = value;	}	load( url, onLoad, onProgress, onError ) {		const quality = this._quality || 1;		const texture = new CanvasTexture();		texture.minFilter = NearestFilter;		const loader = new FileLoader( this.manager );		loader.setPath( this.path );		loader.setWithCredentials( this.withCredentials );		loader.load( url, function ( text ) {			const data = JSON.parse( text );			// bodymoving uses container.offetWidth and offsetHeight			// to define width/height			const container = document.createElement( 'div' );			container.style.width = data.w + 'px';			container.style.height = data.h + 'px';			document.body.appendChild( container );			const animation = bodymovin.loadAnimation( {				container: container,				animType: 'canvas',				loop: true,				autoplay: true,				animationData: data,				rendererSettings: { dpr: quality }			} );			texture.animation = animation;			texture.image = animation.container;			animation.addEventListener( 'enterFrame', function () {				texture.needsUpdate = true;			} );			container.style.display = 'none';			if ( onLoad !== undefined ) {				onLoad( texture );			}		}, onProgress, onError );		return texture;	}}export { LottieLoader };
 |