Buckets:
| import { ImageUtils } from '../extras/ImageUtils.js'; | |
| import * as MathUtils from '../math/MathUtils.js'; | |
| let _sourceId = 0; | |
| class Source { | |
| constructor( data = null ) { | |
| this.isSource = true; | |
| Object.defineProperty( this, 'id', { value: _sourceId ++ } ); | |
| this.uuid = MathUtils.generateUUID(); | |
| this.data = data; | |
| this.version = 0; | |
| } | |
| set needsUpdate( value ) { | |
| if ( value === true ) this.version ++; | |
| } | |
| toJSON( meta ) { | |
| const isRootObject = ( meta === undefined || typeof meta === 'string' ); | |
| if ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) { | |
| return meta.images[ this.uuid ]; | |
| } | |
| const output = { | |
| uuid: this.uuid, | |
| url: '' | |
| }; | |
| const data = this.data; | |
| if ( data !== null ) { | |
| let url; | |
| if ( Array.isArray( data ) ) { | |
| // cube texture | |
| url = []; | |
| for ( let i = 0, l = data.length; i < l; i ++ ) { | |
| if ( data[ i ].isDataTexture ) { | |
| url.push( serializeImage( data[ i ].image ) ); | |
| } else { | |
| url.push( serializeImage( data[ i ] ) ); | |
| } | |
| } | |
| } else { | |
| // texture | |
| url = serializeImage( data ); | |
| } | |
| output.url = url; | |
| } | |
| if ( ! isRootObject ) { | |
| meta.images[ this.uuid ] = output; | |
| } | |
| return output; | |
| } | |
| } | |
| function serializeImage( image ) { | |
| if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || | |
| ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || | |
| ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { | |
| // default images | |
| return ImageUtils.getDataURL( image ); | |
| } else { | |
| if ( image.data ) { | |
| // images of DataTexture | |
| return { | |
| data: Array.from( image.data ), | |
| width: image.width, | |
| height: image.height, | |
| type: image.data.constructor.name | |
| }; | |
| } else { | |
| console.warn( 'THREE.Texture: Unable to serialize Texture.' ); | |
| return {}; | |
| } | |
| } | |
| } | |
| export { Source }; | |
Xet Storage Details
- Size:
- 1.93 kB
- Xet hash:
- d33eb673423839e9bd9c2a9cd8fd9b81b5603c7349866108d37f02ebaa15ea40
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.