UNPKG

3.65 kBSource Map (JSON)View Raw
1{"version":3,"file":"TextureLoader.js","sourceRoot":"","sources":["../src/TextureLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,aAAa;IAChE,IAAI,CACF,KAAU,EACV,MAAyC,EACzC,UAA2C,EAC3C,OAAqC;QAErC,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;SACH;QAED,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YAE9C,SAAS,UAAU,CAAC,KAAK;gBACvB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;gBAE3B,IAAI,MAAM,KAAK,SAAS,EAAE;oBACxB,MAAM,CAAC,OAAO,CAAC,CAAC;iBACjB;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;gBACzB,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,QAAS,EACrB,KAAK,CAAC,EAAE;oBACN,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC,EACD,UAAU,EACV,OAAO,CACR,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;oBAC7C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBACvD,KAAK,CAAC,OAAO,CACX,WAAW,CAAC,QAAQ,EACpB,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EACzD,GAAG,CACJ,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;oBAC1B,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;iBAC7B;gBACD,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC,kDAAkD;gBAEnF,UAAU,CAAC;oBACT,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["import { resolveAsync } from 'expo-asset-utils';\nimport { Platform, Image } from 'react-native';\n\nimport THREE from './Three';\n\nexport default class ExpoTextureLoader extends THREE.TextureLoader {\n load(\n asset: any,\n onLoad?: (texture: THREE.Texture) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void\n ): THREE.Texture {\n if (!asset) {\n throw new Error(\n 'ExpoTHREE.TextureLoader.load(): Cannot parse a null asset'\n );\n }\n\n const texture = new THREE.Texture();\n\n const loader = new THREE.ImageLoader(this.manager);\n loader.setCrossOrigin(this.crossOrigin);\n loader.setPath(this.path);\n\n (async () => {\n const nativeAsset = await resolveAsync(asset);\n\n function parseAsset(image) {\n texture.image = image;\n texture.needsUpdate = true;\n\n if (onLoad !== undefined) {\n onLoad(texture);\n }\n }\n\n if (Platform.OS === 'web') {\n loader.load(\n nativeAsset.localUri!,\n image => {\n parseAsset(image);\n },\n onProgress,\n onError\n );\n } else {\n if (!nativeAsset.width || !nativeAsset.height) {\n const { width, height } = await new Promise((res, rej) => {\n Image.getSize(\n nativeAsset.localUri,\n (width: number, height: number) => res({ width, height }),\n rej\n );\n });\n nativeAsset.width = width;\n nativeAsset.height = height;\n }\n texture['isDataTexture'] = true; // Forces passing to `gl.texImage2D(...)` verbatim\n\n parseAsset({\n data: nativeAsset,\n width: nativeAsset.width,\n height: nativeAsset.height,\n });\n }\n })();\n\n return texture;\n }\n}\n"]}
\No newline at end of file