@loaders.gl/draco 4.0.0-alpha.5 → 4.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +3 -3
- package/dist/dist.min.js.map +3 -3
- package/dist/draco-loader.d.ts +4 -14
- package/dist/draco-loader.d.ts.map +1 -1
- package/dist/draco-loader.js +28 -21
- package/dist/draco-nodejs-worker.js +191 -0
- package/dist/draco-nodejs-worker.js.map +7 -0
- package/dist/draco-worker.js +1 -1
- package/dist/draco-worker.js.map +3 -3
- package/dist/draco-writer-nodejs-worker.js +193 -0
- package/dist/draco-writer-nodejs-worker.js.map +7 -0
- package/dist/draco-writer-nodejs.d.ts +3 -0
- package/dist/draco-writer-nodejs.d.ts.map +1 -0
- package/dist/draco-writer-nodejs.js +7 -0
- package/dist/draco-writer-worker.js +4 -0
- package/dist/draco-writer-worker.js.map +7 -0
- package/dist/draco-writer.d.ts +12 -3
- package/dist/draco-writer.d.ts.map +1 -1
- package/dist/draco-writer.js +40 -28
- package/dist/draco3d/draco3d-types.d.ts +1 -1
- package/dist/draco3d/draco3d-types.d.ts.map +1 -1
- package/dist/draco3d/draco3d-types.js +47 -44
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/draco-loader.js +34 -0
- package/dist/es5/draco-loader.js.map +1 -0
- package/dist/es5/draco-writer-nodejs.js +14 -0
- package/dist/es5/draco-writer-nodejs.js.map +1 -0
- package/dist/es5/draco-writer.js +63 -0
- package/dist/es5/draco-writer.js.map +1 -0
- package/dist/es5/draco3d/draco3d-types.js +51 -0
- package/dist/es5/draco3d/draco3d-types.js.map +1 -0
- package/dist/es5/index.js +79 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/draco-builder.js +324 -0
- package/dist/es5/lib/draco-builder.js.map +1 -0
- package/dist/es5/lib/draco-module-loader.js +183 -0
- package/dist/es5/lib/draco-module-loader.js.map +1 -0
- package/dist/es5/lib/draco-parser.js +435 -0
- package/dist/es5/lib/draco-parser.js.map +1 -0
- package/dist/es5/lib/draco-types.js +2 -0
- package/dist/es5/lib/draco-types.js.map +1 -0
- package/dist/es5/lib/utils/get-draco-schema.js +47 -0
- package/dist/es5/lib/utils/get-draco-schema.js.map +1 -0
- package/dist/es5/lib/utils/version.js +9 -0
- package/dist/es5/lib/utils/version.js.map +1 -0
- package/dist/es5/workers/draco-nodejs-worker.js +7 -0
- package/dist/es5/workers/draco-nodejs-worker.js.map +1 -0
- package/dist/es5/workers/draco-worker.js +6 -0
- package/dist/es5/workers/draco-worker.js.map +1 -0
- package/dist/es5/workers/draco-writer-nodejs-worker.js +53 -0
- package/dist/es5/workers/draco-writer-nodejs-worker.js.map +1 -0
- package/dist/es5/workers/draco-writer-worker.js +53 -0
- package/dist/es5/workers/draco-writer-worker.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/draco-loader.js +24 -0
- package/dist/esm/draco-loader.js.map +1 -0
- package/dist/esm/draco-writer-nodejs.js +3 -0
- package/dist/esm/draco-writer-nodejs.js.map +1 -0
- package/dist/esm/draco-writer.js +31 -0
- package/dist/esm/draco-writer.js.map +1 -0
- package/dist/esm/draco3d/draco3d-types.js +41 -0
- package/dist/esm/draco3d/draco3d-types.js.map +1 -0
- package/dist/esm/index.js +35 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/draco-builder.js +268 -0
- package/dist/esm/lib/draco-builder.js.map +1 -0
- package/dist/esm/lib/draco-module-loader.js +76 -0
- package/dist/esm/lib/draco-module-loader.js.map +1 -0
- package/dist/esm/lib/draco-parser.js +363 -0
- package/dist/esm/lib/draco-parser.js.map +1 -0
- package/dist/esm/lib/draco-types.js +2 -0
- package/dist/esm/lib/draco-types.js.map +1 -0
- package/dist/esm/lib/utils/get-draco-schema.js +41 -0
- package/dist/esm/lib/utils/get-draco-schema.js.map +1 -0
- package/dist/esm/lib/utils/version.js +2 -0
- package/dist/esm/lib/utils/version.js.map +1 -0
- package/dist/esm/workers/draco-nodejs-worker.js +5 -0
- package/dist/esm/workers/draco-nodejs-worker.js.map +1 -0
- package/dist/esm/workers/draco-worker.js +4 -0
- package/dist/esm/workers/draco-worker.js.map +1 -0
- package/dist/esm/workers/draco-writer-nodejs-worker.js +30 -0
- package/dist/esm/workers/draco-writer-nodejs-worker.js.map +1 -0
- package/dist/esm/workers/draco-writer-worker.js +30 -0
- package/dist/esm/workers/draco-writer-worker.js.map +1 -0
- package/dist/index.d.ts +14 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -21
- package/dist/lib/draco-builder.d.ts +1 -1
- package/dist/lib/draco-builder.d.ts.map +1 -1
- package/dist/lib/draco-builder.js +313 -329
- package/dist/lib/draco-module-loader.d.ts.map +1 -1
- package/dist/lib/draco-module-loader.js +81 -73
- package/dist/lib/draco-parser.d.ts +1 -1
- package/dist/lib/draco-parser.d.ts.map +1 -1
- package/dist/lib/draco-parser.js +440 -416
- package/dist/lib/draco-types.d.ts +6 -6
- package/dist/lib/draco-types.d.ts.map +1 -1
- package/dist/lib/draco-types.js +3 -2
- package/dist/lib/utils/get-draco-schema.js +35 -41
- package/dist/lib/utils/version.js +7 -2
- package/dist/workers/draco-nodejs-worker.d.ts +2 -0
- package/dist/workers/draco-nodejs-worker.d.ts.map +1 -0
- package/dist/workers/draco-nodejs-worker.js +6 -0
- package/dist/workers/draco-worker.js +5 -4
- package/dist/workers/draco-writer-nodejs-worker.d.ts +2 -0
- package/dist/workers/draco-writer-nodejs-worker.d.ts.map +1 -0
- package/dist/workers/draco-writer-nodejs-worker.js +26 -0
- package/dist/workers/draco-writer-worker.d.ts +2 -0
- package/dist/workers/draco-writer-worker.d.ts.map +1 -0
- package/dist/workers/draco-writer-worker.js +26 -0
- package/package.json +16 -9
- package/src/draco-loader.ts +8 -4
- package/src/draco-writer-nodejs.ts +4 -0
- package/src/draco-writer.ts +17 -12
- package/src/index.ts +21 -1
- package/src/lib/draco-module-loader.ts +9 -5
- package/src/lib/utils/get-draco-schema.ts +7 -6
- package/src/workers/draco-nodejs-worker.ts +5 -0
- package/src/workers/draco-writer-nodejs-worker.ts +25 -0
- package/src/workers/draco-writer-worker.ts +25 -0
- package/dist/bundle.js.map +0 -1
- package/dist/draco-loader.js.map +0 -1
- package/dist/draco-writer.js.map +0 -1
- package/dist/draco3d/draco3d-types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/draco-builder.js.map +0 -1
- package/dist/lib/draco-module-loader.js.map +0 -1
- package/dist/lib/draco-parser.js.map +0 -1
- package/dist/lib/draco-types.js.map +0 -1
- package/dist/lib/utils/get-draco-schema.js.map +0 -1
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/workers/draco-worker.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-parser.js","names":["_schema","require","_getDracoSchema","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","GEOMETRY_TYPE","TRIANGULAR_MESH","POINT_CLOUD","DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP","POSITION","NORMAL","COLOR","TEX_COORD","DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP","Int8Array","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","INDEX_ITEM_SIZE","DracoParser","draco","_classCallCheck2","decoder","Decoder","metadataQuerier","MetadataQuerier","_createClass2","destroy","parseSync","arrayBuffer","options","undefined","buffer","DecoderBuffer","Init","byteLength","_disableAttributeTransforms","geometry_type","GetEncodedGeometryType","dracoGeometry","Mesh","PointCloud","dracoStatus","DecodeBufferToMesh","DecodeBufferToPointCloud","Error","ok","ptr","message","concat","error_msg","loaderData","_getDracoLoaderData","geometry","_getMeshData","boundingBox","getMeshBoundingBox","attributes","schema","getDracoSchema","indices","data","loader","header","vertexCount","num_points","metadata","_getTopLevelMetadata","_getDracoAttributes","num_attributes","num_faces","dracoAttributes","attributeId","dracoAttribute","GetAttribute","_getAttributeMetadata","unique_id","attribute_type","data_type","num_components","byte_offset","byte_stride","normalized","attribute_index","quantization","_getQuantizationTransform","quantization_transform","octahedron","_getOctahedronTransform","octahedron_transform","_getMeshAttributes","positionAttribute","topology","mode","_getTriangleStripIndices","size","_getTriangleListIndices","_i","_Object$values","values","loaderAttribute","attributeName","_deduceAttributeName","_this$_getAttributeVa","_getAttributeValues","byteOffset","byteStride","numFaces","numIndices","_malloc","GetTrianglesUInt32Array","HEAPF32","_free","dracoArray","DracoInt32Array","GetTriangleStripsFromMesh","getUint32Array","attribute","TypedArrayCtor","numComponents","numPoints","numValues","BYTES_PER_ELEMENT","dataType","getDracoDataType","GetAttributeDataArrayForAllPoints","uniqueId","_i2","_Object$entries","entries","extraAttributes","_Object$entries$_i","_slicedToArray2","attributeUniqueId","thisAttributeType","dracoAttributeConstant","attributeType","entryName","attributeNameEntry","string","dracoMetadata","GetMetadata","_getDracoMetadata","GetAttributeMetadata","result","numEntries","NumEntries","entryIndex","GetEntryName","_getDracoMetadataField","GetIntEntryArray","intArray","getInt32Array","int","GetIntEntry","GetStringEntry","double","GetDoubleEntry","_options$quantizedAtt","quantizedAttributes","_options$octahedronAt","octahedronAttributes","skipAttributes","_toConsumableArray2","_iterator","_step","dracoAttributeName","SkipAttributeTransform","_this","_options$quantizedAtt2","skip","map","type","includes","transform","AttributeQuantizationTransform","InitFromAttribute","quantization_bits","range","min_values","min_value","_this2","_options$octahedronAt2","exports","DT_FLOAT32","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_INVALID","GetValue"],"sources":["../../../src/lib/draco-parser.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport type {TypedArray, MeshAttribute, MeshGeometry} from '@loaders.gl/schema';\n\n// Draco types (input)\nimport type {\n Draco3D,\n Decoder,\n Mesh,\n PointCloud,\n PointAttribute,\n Metadata,\n MetadataQuerier,\n DracoInt32Array,\n draco_DataType\n} from '../draco3d/draco3d-types';\n\n// Parsed data types (output)\nimport type {\n DracoMesh,\n DracoLoaderData,\n DracoAttribute,\n DracoMetadataEntry,\n DracoQuantizationTransform,\n DracoOctahedronTransform\n} from './draco-types';\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {getDracoSchema} from './utils/get-draco-schema';\n\n/**\n * @param topology - How triangle indices should be generated (mesh only)\n * @param attributeNameEntry\n * @param extraAttributes\n * @param quantizedAttributes\n * @param octahedronAttributes\n */\nexport type DracoParseOptions = {\n topology?: 'triangle-list' | 'triangle-strip';\n attributeNameEntry?: string;\n extraAttributes?: {[uniqueId: string]: number};\n quantizedAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n octahedronAttributes?: ('POSITION' | 'NORMAL' | 'COLOR' | 'TEX_COORD' | 'GENERIC')[];\n};\n\n// @ts-ignore\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst GEOMETRY_TYPE = {\n TRIANGULAR_MESH: 0,\n POINT_CLOUD: 1\n};\n\n// Native Draco attribute names to GLTF attribute names.\nconst DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP = {\n POSITION: 'POSITION',\n NORMAL: 'NORMAL',\n COLOR: 'COLOR_0',\n TEX_COORD: 'TEXCOORD_0'\n};\n\nconst DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP = {\n 1: Int8Array,\n 2: Uint8Array,\n 3: Int16Array,\n 4: Uint16Array,\n 5: Int32Array,\n 6: Uint32Array,\n 9: Float32Array\n};\n\nconst INDEX_ITEM_SIZE = 4;\n\nexport default class DracoParser {\n draco: Draco3D;\n decoder: Decoder;\n metadataQuerier: MetadataQuerier;\n\n // draco - the draco decoder, either import `draco3d` or load dynamically\n constructor(draco: Draco3D) {\n this.draco = draco;\n this.decoder = new this.draco.Decoder();\n this.metadataQuerier = new this.draco.MetadataQuerier();\n }\n\n /**\n * Destroy draco resources\n */\n destroy(): void {\n this.draco.destroy(this.decoder);\n this.draco.destroy(this.metadataQuerier);\n }\n\n /**\n * NOTE: caller must call `destroyGeometry` on the return value after using it\n * @param arrayBuffer\n * @param options\n */\n parseSync(arrayBuffer: ArrayBuffer, options: DracoParseOptions = {}): DracoMesh {\n const buffer = new this.draco.DecoderBuffer();\n buffer.Init(new Int8Array(arrayBuffer), arrayBuffer.byteLength);\n\n this._disableAttributeTransforms(options);\n\n const geometry_type = this.decoder.GetEncodedGeometryType(buffer);\n const dracoGeometry =\n geometry_type === this.draco.TRIANGULAR_MESH\n ? new this.draco.Mesh()\n : new this.draco.PointCloud();\n\n try {\n let dracoStatus;\n switch (geometry_type) {\n case this.draco.TRIANGULAR_MESH:\n dracoStatus = this.decoder.DecodeBufferToMesh(buffer, dracoGeometry as Mesh);\n break;\n\n case this.draco.POINT_CLOUD:\n dracoStatus = this.decoder.DecodeBufferToPointCloud(buffer, dracoGeometry);\n break;\n\n default:\n throw new Error('DRACO: Unknown geometry type.');\n }\n\n if (!dracoStatus.ok() || !dracoGeometry.ptr) {\n const message = `DRACO decompression failed: ${dracoStatus.error_msg()}`;\n // console.error(message);\n throw new Error(message);\n }\n\n const loaderData = this._getDracoLoaderData(dracoGeometry, geometry_type, options);\n\n const geometry = this._getMeshData(dracoGeometry, loaderData, options);\n\n const boundingBox = getMeshBoundingBox(geometry.attributes);\n\n const schema = getDracoSchema(geometry.attributes, loaderData, geometry.indices);\n\n const data: DracoMesh = {\n loader: 'draco',\n loaderData,\n header: {\n vertexCount: dracoGeometry.num_points(),\n boundingBox\n },\n ...geometry,\n schema\n };\n return data;\n } finally {\n this.draco.destroy(buffer);\n if (dracoGeometry) {\n this.draco.destroy(dracoGeometry);\n }\n }\n }\n\n // Draco specific \"loader data\"\n\n /**\n * Extract\n * @param dracoGeometry\n * @param geometry_type\n * @param options\n * @returns\n */\n _getDracoLoaderData(\n dracoGeometry: Mesh | PointCloud,\n geometry_type,\n options: DracoParseOptions\n ): DracoLoaderData {\n const metadata = this._getTopLevelMetadata(dracoGeometry);\n const attributes = this._getDracoAttributes(dracoGeometry, options);\n\n return {\n geometry_type,\n num_attributes: dracoGeometry.num_attributes(),\n num_points: dracoGeometry.num_points(),\n num_faces: dracoGeometry instanceof this.draco.Mesh ? dracoGeometry.num_faces() : 0,\n metadata,\n attributes\n };\n }\n\n /**\n * Extract all draco provided information and metadata for each attribute\n * @param dracoGeometry\n * @param options\n * @returns\n */\n _getDracoAttributes(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: DracoAttribute} {\n const dracoAttributes: {[unique_id: number]: DracoAttribute} = {};\n\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n // Note: Draco docs do not seem clear on `GetAttribute` ids just being a zero-based index,\n // but it does seems to work this way\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n\n const metadata = this._getAttributeMetadata(dracoGeometry, attributeId);\n\n dracoAttributes[dracoAttribute.unique_id()] = {\n unique_id: dracoAttribute.unique_id(),\n attribute_type: dracoAttribute.attribute_type(),\n data_type: dracoAttribute.data_type(),\n num_components: dracoAttribute.num_components(),\n\n byte_offset: dracoAttribute.byte_offset(),\n byte_stride: dracoAttribute.byte_stride(),\n normalized: dracoAttribute.normalized(),\n attribute_index: attributeId,\n\n metadata\n };\n\n // Add transformation parameters for any attributes app wants untransformed\n const quantization = this._getQuantizationTransform(dracoAttribute, options);\n if (quantization) {\n dracoAttributes[dracoAttribute.unique_id()].quantization_transform = quantization;\n }\n\n const octahedron = this._getOctahedronTransform(dracoAttribute, options);\n if (octahedron) {\n dracoAttributes[dracoAttribute.unique_id()].octahedron_transform = octahedron;\n }\n }\n\n return dracoAttributes;\n }\n\n /**\n * Get standard loaders.gl mesh category data\n * Extracts the geometry from draco\n * @param dracoGeometry\n * @param options\n */\n _getMeshData(\n dracoGeometry: Mesh | PointCloud,\n loaderData: DracoLoaderData,\n options: DracoParseOptions\n ): MeshGeometry {\n const attributes = this._getMeshAttributes(loaderData, dracoGeometry, options);\n\n const positionAttribute = attributes.POSITION;\n if (!positionAttribute) {\n throw new Error('DRACO: No position attribute found.');\n }\n\n // For meshes, we need indices to define the faces.\n if (dracoGeometry instanceof this.draco.Mesh) {\n switch (options.topology) {\n case 'triangle-strip':\n return {\n topology: 'triangle-strip',\n mode: 4, // GL.TRIANGLES\n attributes,\n indices: {\n value: this._getTriangleStripIndices(dracoGeometry),\n size: 1\n }\n };\n case 'triangle-list':\n default:\n return {\n topology: 'triangle-list',\n mode: 5, // GL.TRIANGLE_STRIP\n attributes,\n indices: {\n value: this._getTriangleListIndices(dracoGeometry),\n size: 1\n }\n };\n }\n }\n\n // PointCloud - must come last as Mesh inherits from PointCloud\n return {\n topology: 'point-list',\n mode: 0, // GL.POINTS\n attributes\n };\n }\n\n _getMeshAttributes(\n loaderData: DracoLoaderData,\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[attributeName: string]: MeshAttribute} {\n const attributes: {[key: string]: MeshAttribute} = {};\n\n for (const loaderAttribute of Object.values(loaderData.attributes)) {\n const attributeName = this._deduceAttributeName(loaderAttribute, options);\n loaderAttribute.name = attributeName;\n const {value, size} = this._getAttributeValues(dracoGeometry, loaderAttribute);\n attributes[attributeName] = {\n value,\n size,\n byteOffset: loaderAttribute.byte_offset,\n byteStride: loaderAttribute.byte_stride,\n normalized: loaderAttribute.normalized\n };\n }\n\n return attributes;\n }\n\n // MESH INDICES EXTRACTION\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleListIndices(dracoGeometry: Mesh) {\n // Example on how to retrieve mesh and attributes.\n const numFaces = dracoGeometry.num_faces();\n const numIndices = numFaces * 3;\n const byteLength = numIndices * INDEX_ITEM_SIZE;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n this.decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n return new Uint32Array(this.draco.HEAPF32.buffer, ptr, numIndices).slice();\n } finally {\n this.draco._free(ptr);\n }\n }\n\n /**\n * For meshes, we need indices to define the faces.\n * @param dracoGeometry\n */\n _getTriangleStripIndices(dracoGeometry: Mesh) {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n /* const numStrips = */ this.decoder.GetTriangleStripsFromMesh(dracoGeometry, dracoArray);\n return getUint32Array(dracoArray);\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n /**\n *\n * @param dracoGeometry\n * @param dracoAttribute\n * @param attributeName\n */\n _getAttributeValues(\n dracoGeometry: Mesh | PointCloud,\n attribute: DracoAttribute\n ): {value: TypedArray; size: number} {\n const TypedArrayCtor = DRACO_DATA_TYPE_TO_TYPED_ARRAY_MAP[attribute.data_type];\n const numComponents = attribute.num_components;\n const numPoints = dracoGeometry.num_points();\n const numValues = numPoints * numComponents;\n\n const byteLength = numValues * TypedArrayCtor.BYTES_PER_ELEMENT;\n const dataType = getDracoDataType(this.draco, TypedArrayCtor);\n\n let value: TypedArray;\n\n const ptr = this.draco._malloc(byteLength);\n try {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attribute.attribute_index);\n this.decoder.GetAttributeDataArrayForAllPoints(\n dracoGeometry,\n dracoAttribute,\n dataType,\n byteLength,\n ptr\n );\n value = new TypedArrayCtor(this.draco.HEAPF32.buffer, ptr, numValues).slice();\n } finally {\n this.draco._free(ptr);\n }\n\n return {value, size: numComponents};\n }\n\n // Attribute names\n\n /** \n * DRACO does not store attribute names - We need to deduce an attribute name\n * for each attribute\n _getAttributeNames(\n dracoGeometry: Mesh | PointCloud,\n options: DracoParseOptions\n ): {[unique_id: number]: string} {\n const attributeNames: {[unique_id: number]: string} = {};\n for (let attributeId = 0; attributeId < dracoGeometry.num_attributes(); attributeId++) {\n const dracoAttribute = this.decoder.GetAttribute(dracoGeometry, attributeId);\n const attributeName = this._deduceAttributeName(dracoAttribute, options);\n attributeNames[attributeName] = attributeName;\n }\n return attributeNames;\n }\n */\n\n /**\n * Deduce an attribute name.\n * @note DRACO does not save attribute names, just general type (POSITION, COLOR)\n * to help optimize compression. We generate GLTF compatible names for the Draco-recognized\n * types\n * @param attributeData\n */\n _deduceAttributeName(attribute: DracoAttribute, options: DracoParseOptions): string {\n // Deduce name based on application provided map\n const uniqueId = attribute.unique_id;\n for (const [attributeName, attributeUniqueId] of Object.entries(\n options.extraAttributes || {}\n )) {\n if (attributeUniqueId === uniqueId) {\n return attributeName;\n }\n }\n\n // Deduce name based on attribute type\n const thisAttributeType = attribute.attribute_type;\n for (const dracoAttributeConstant in DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP) {\n const attributeType = this.draco[dracoAttributeConstant];\n if (attributeType === thisAttributeType) {\n // TODO - Return unique names if there multiple attributes per type\n // (e.g. multiple TEX_COORDS or COLORS)\n return DRACO_TO_GLTF_ATTRIBUTE_NAME_MAP[dracoAttributeConstant];\n }\n }\n\n // Look up in metadata\n // TODO - shouldn't this have priority?\n const entryName = options.attributeNameEntry || 'name';\n if (attribute.metadata[entryName]) {\n return attribute.metadata[entryName].string;\n }\n\n // Attribute of \"GENERIC\" type, we need to assign some name\n return `CUSTOM_ATTRIBUTE_${uniqueId}`;\n }\n\n // METADATA EXTRACTION\n\n /** Get top level metadata */\n _getTopLevelMetadata(dracoGeometry: Mesh | PointCloud) {\n const dracoMetadata = this.decoder.GetMetadata(dracoGeometry);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /** Get per attribute metadata */\n _getAttributeMetadata(dracoGeometry: Mesh | PointCloud, attributeId: number) {\n const dracoMetadata = this.decoder.GetAttributeMetadata(dracoGeometry, attributeId);\n return this._getDracoMetadata(dracoMetadata);\n }\n\n /**\n * Extract metadata field values\n * @param dracoMetadata\n * @returns\n */\n _getDracoMetadata(dracoMetadata: Metadata): {[entry: string]: DracoMetadataEntry} {\n // The not so wonderful world of undocumented Draco APIs :(\n if (!dracoMetadata || !dracoMetadata.ptr) {\n return {};\n }\n const result = {};\n const numEntries = this.metadataQuerier.NumEntries(dracoMetadata);\n for (let entryIndex = 0; entryIndex < numEntries; entryIndex++) {\n const entryName = this.metadataQuerier.GetEntryName(dracoMetadata, entryIndex);\n result[entryName] = this._getDracoMetadataField(dracoMetadata, entryName);\n }\n return result;\n }\n\n /**\n * Extracts possible values for one metadata entry by name\n * @param dracoMetadata\n * @param entryName\n */\n _getDracoMetadataField(dracoMetadata: Metadata, entryName: string): DracoMetadataEntry {\n const dracoArray = new this.draco.DracoInt32Array();\n try {\n // Draco metadata fields can hold int32 arrays\n this.metadataQuerier.GetIntEntryArray(dracoMetadata, entryName, dracoArray);\n const intArray = getInt32Array(dracoArray);\n return {\n int: this.metadataQuerier.GetIntEntry(dracoMetadata, entryName),\n string: this.metadataQuerier.GetStringEntry(dracoMetadata, entryName),\n double: this.metadataQuerier.GetDoubleEntry(dracoMetadata, entryName),\n intArray\n };\n } finally {\n this.draco.destroy(dracoArray);\n }\n }\n\n // QUANTIZED ATTRIBUTE SUPPORT (NO DECOMPRESSION)\n\n /** Skip transforms for specific attribute types */\n _disableAttributeTransforms(options: DracoParseOptions) {\n const {quantizedAttributes = [], octahedronAttributes = []} = options;\n const skipAttributes = [...quantizedAttributes, ...octahedronAttributes];\n for (const dracoAttributeName of skipAttributes) {\n this.decoder.SkipAttributeTransform(this.draco[dracoAttributeName]);\n }\n }\n\n /**\n * Extract (and apply?) Position Transform\n * @todo not used\n */\n _getQuantizationTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoQuantizationTransform | null {\n const {quantizedAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const skip = quantizedAttributes.map((type) => this.decoder[type]).includes(attribute_type);\n if (skip) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits(),\n range: transform.range(),\n min_values: new Float32Array([1, 2, 3]).map((i) => transform.min_value(i))\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n _getOctahedronTransform(\n dracoAttribute: PointAttribute,\n options: DracoParseOptions\n ): DracoOctahedronTransform | null {\n const {octahedronAttributes = []} = options;\n const attribute_type = dracoAttribute.attribute_type();\n const octahedron = octahedronAttributes\n .map((type) => this.decoder[type])\n .includes(attribute_type);\n if (octahedron) {\n const transform = new this.draco.AttributeQuantizationTransform();\n try {\n if (transform.InitFromAttribute(dracoAttribute)) {\n return {\n quantization_bits: transform.quantization_bits()\n };\n }\n } finally {\n this.draco.destroy(transform);\n }\n }\n return null;\n }\n\n // HELPERS\n}\n\n/**\n * Get draco specific data type by TypedArray constructor type\n * @param attributeType\n * @returns draco specific data type\n */\nfunction getDracoDataType(draco: Draco3D, attributeType: any): draco_DataType {\n switch (attributeType) {\n case Float32Array:\n return draco.DT_FLOAT32;\n case Int8Array:\n return draco.DT_INT8;\n case Int16Array:\n return draco.DT_INT16;\n case Int32Array:\n return draco.DT_INT32;\n case Uint8Array:\n return draco.DT_UINT8;\n case Uint16Array:\n return draco.DT_UINT16;\n case Uint32Array:\n return draco.DT_UINT32;\n default:\n return draco.DT_INVALID;\n }\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getInt32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n\n/**\n * Copy a Draco int32 array into a JS typed array\n */\nfunction getUint32Array(dracoArray: DracoInt32Array): Int32Array {\n const numValues = dracoArray.size();\n const intArray = new Int32Array(numValues);\n for (let i = 0; i < numValues; i++) {\n intArray[i] = dracoArray.GetValue(i);\n }\n return intArray;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-types.js","names":[],"sources":["../../../src/lib/draco-types.ts"],"sourcesContent":["/* eslint-disable camelcase */\n\nimport {Mesh} from '@loaders.gl/schema';\n\n// DRACO FORMAT SPECIFIC DATA\n\nexport type DracoMetadataEntry = {\n int: number;\n string: string;\n double: number;\n intArray: Int32Array;\n};\n\n/** For attributes that have not been fully decompressed */\nexport type DracoQuantizationTransform = {\n quantization_bits?: number;\n range?: number;\n min_values?: Float32Array;\n};\n\n/** For attributes that have not been fully decompressed */\nexport type DracoOctahedronTransform = {\n quantization_bits?: number;\n};\n\n/** Draco attribute fields */\nexport type DracoAttribute = {\n unique_id: number;\n\n num_components: number; // Duplicate of size\n attribute_type: number;\n data_type: number;\n\n byte_offset: number;\n byte_stride: number;\n normalized: boolean;\n name?: string;\n\n quantization_transform?: DracoQuantizationTransform;\n octahedron_transform?: DracoOctahedronTransform;\n\n metadata: {[key: string]: DracoMetadataEntry};\n attribute_index: number;\n};\n\n/**\n * Draco format specific data\n * The `data.loaderData` field will have this layout when `data.loader === 'draco'`.\n * @todo Metadata should also be available in normalized form in a standard `Schema`.\n */\nexport type DracoLoaderData = {\n geometry_type: number;\n num_attributes: number;\n num_points: number;\n num_faces: number;\n metadata: {[entry: string]: DracoMetadataEntry};\n attributes: {[unique_id: number]: DracoAttribute};\n // attribute_names?: {[unique_id: number]: string};\n // unique_ids?: {[attributeName: string]: number};\n};\n\n/**\n * loaders.gl Mesh with Draco specific data\n */\nexport type DracoMesh = Mesh & {\n loader: 'draco';\n loaderData: DracoLoaderData; // Draco specific data\n};\n"],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getDracoSchema = getDracoSchema;
|
|
7
|
+
var _schema = require("@loaders.gl/schema");
|
|
8
|
+
function getDracoSchema(attributes, loaderData, indices) {
|
|
9
|
+
var metadata = makeMetadata(loaderData.metadata);
|
|
10
|
+
var fields = [];
|
|
11
|
+
var namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
|
|
12
|
+
for (var _attributeName in attributes) {
|
|
13
|
+
var attribute = attributes[_attributeName];
|
|
14
|
+
var field = getArrowFieldFromAttribute(_attributeName, attribute, namedLoaderDataAttributes[_attributeName]);
|
|
15
|
+
fields.push(field);
|
|
16
|
+
}
|
|
17
|
+
if (indices) {
|
|
18
|
+
var indicesField = getArrowFieldFromAttribute('indices', indices);
|
|
19
|
+
fields.push(indicesField);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
fields: fields,
|
|
23
|
+
metadata: metadata
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function transformAttributesLoaderData(loaderData) {
|
|
27
|
+
var result = {};
|
|
28
|
+
for (var _key in loaderData) {
|
|
29
|
+
var dracoAttribute = loaderData[_key];
|
|
30
|
+
result[dracoAttribute.name || 'undefined'] = dracoAttribute;
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
function getArrowFieldFromAttribute(attributeName, attribute, loaderData) {
|
|
35
|
+
var metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;
|
|
36
|
+
var field = (0, _schema.deduceMeshField)(attributeName, attribute, metadataMap);
|
|
37
|
+
return field;
|
|
38
|
+
}
|
|
39
|
+
function makeMetadata(metadata) {
|
|
40
|
+
Object.entries(metadata);
|
|
41
|
+
var serializedMetadata = {};
|
|
42
|
+
for (var _key2 in metadata) {
|
|
43
|
+
serializedMetadata["".concat(_key2, ".string")] = JSON.stringify(metadata[_key2]);
|
|
44
|
+
}
|
|
45
|
+
return serializedMetadata;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=get-draco-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-draco-schema.js","names":["_schema","require","getDracoSchema","attributes","loaderData","indices","metadata","makeMetadata","fields","namedLoaderDataAttributes","transformAttributesLoaderData","attributeName","attribute","field","getArrowFieldFromAttribute","push","indicesField","result","key","dracoAttribute","name","metadataMap","undefined","deduceMeshField","Object","entries","serializedMetadata","concat","JSON","stringify"],"sources":["../../../../src/lib/utils/get-draco-schema.ts"],"sourcesContent":["import {deduceMeshField, MeshAttribute} from '@loaders.gl/schema';\nimport {Schema, Field} from '@loaders.gl/schema';\nimport type {DracoAttribute, DracoLoaderData, DracoMetadataEntry} from '../draco-types';\n\n/** Extract an arrow-like schema from a Draco mesh */\nexport function getDracoSchema(\n attributes: {[attributeName: string]: MeshAttribute},\n loaderData: DracoLoaderData,\n indices?: MeshAttribute\n): Schema {\n const metadata = makeMetadata(loaderData.metadata);\n const fields: Field[] = [];\n const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);\n for (const attributeName in attributes) {\n const attribute = attributes[attributeName];\n const field = getArrowFieldFromAttribute(\n attributeName,\n attribute,\n namedLoaderDataAttributes[attributeName]\n );\n fields.push(field);\n }\n if (indices) {\n const indicesField = getArrowFieldFromAttribute('indices', indices);\n fields.push(indicesField);\n }\n return {fields, metadata};\n}\n\nfunction transformAttributesLoaderData(loaderData: {[key: number]: DracoAttribute}): {\n [attributeName: string]: DracoAttribute;\n} {\n const result: {[attributeName: string]: DracoAttribute} = {};\n for (const key in loaderData) {\n const dracoAttribute = loaderData[key];\n result[dracoAttribute.name || 'undefined'] = dracoAttribute;\n }\n return result;\n}\n\nfunction getArrowFieldFromAttribute(\n attributeName: string,\n attribute: MeshAttribute,\n loaderData?: DracoAttribute\n): Field {\n const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : undefined;\n const field = deduceMeshField(attributeName, attribute, metadataMap);\n return field;\n}\n\nfunction makeMetadata(metadata: {[key: string]: DracoMetadataEntry}): Record<string, string> {\n Object.entries(metadata);\n const serializedMetadata: Record<string, string> = {};\n for (const key in metadata) {\n serializedMetadata[`${key}.string`] = JSON.stringify(metadata[key]);\n }\n return serializedMetadata;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAKO,SAASC,cAAcA,CAC5BC,UAAoD,EACpDC,UAA2B,EAC3BC,OAAuB,EACf;EACR,IAAMC,QAAQ,GAAGC,YAAY,CAACH,UAAU,CAACE,QAAQ,CAAC;EAClD,IAAME,MAAe,GAAG,EAAE;EAC1B,IAAMC,yBAAyB,GAAGC,6BAA6B,CAACN,UAAU,CAACD,UAAU,CAAC;EACtF,KAAK,IAAMQ,cAAa,IAAIR,UAAU,EAAE;IACtC,IAAMS,SAAS,GAAGT,UAAU,CAACQ,cAAa,CAAC;IAC3C,IAAME,KAAK,GAAGC,0BAA0B,CACtCH,cAAa,EACbC,SAAS,EACTH,yBAAyB,CAACE,cAAa,CACzC,CAAC;IACDH,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,IAAIR,OAAO,EAAE;IACX,IAAMW,YAAY,GAAGF,0BAA0B,CAAC,SAAS,EAAET,OAAO,CAAC;IACnEG,MAAM,CAACO,IAAI,CAACC,YAAY,CAAC;EAC3B;EACA,OAAO;IAACR,MAAM,EAANA,MAAM;IAAEF,QAAQ,EAARA;EAAQ,CAAC;AAC3B;AAEA,SAASI,6BAA6BA,CAACN,UAA2C,EAEhF;EACA,IAAMa,MAAiD,GAAG,CAAC,CAAC;EAC5D,KAAK,IAAMC,IAAG,IAAId,UAAU,EAAE;IAC5B,IAAMe,cAAc,GAAGf,UAAU,CAACc,IAAG,CAAC;IACtCD,MAAM,CAACE,cAAc,CAACC,IAAI,IAAI,WAAW,CAAC,GAAGD,cAAc;EAC7D;EACA,OAAOF,MAAM;AACf;AAEA,SAASH,0BAA0BA,CACjCH,aAAqB,EACrBC,SAAwB,EACxBR,UAA2B,EACpB;EACP,IAAMiB,WAAW,GAAGjB,UAAU,GAAGG,YAAY,CAACH,UAAU,CAACE,QAAQ,CAAC,GAAGgB,SAAS;EAC9E,IAAMT,KAAK,GAAG,IAAAU,uBAAe,EAACZ,aAAa,EAAEC,SAAS,EAAES,WAAW,CAAC;EACpE,OAAOR,KAAK;AACd;AAEA,SAASN,YAAYA,CAACD,QAA6C,EAA0B;EAC3FkB,MAAM,CAACC,OAAO,CAACnB,QAAQ,CAAC;EACxB,IAAMoB,kBAA0C,GAAG,CAAC,CAAC;EACrD,KAAK,IAAMR,KAAG,IAAIZ,QAAQ,EAAE;IAC1BoB,kBAAkB,IAAAC,MAAA,CAAIT,KAAG,aAAU,GAAGU,IAAI,CAACC,SAAS,CAACvB,QAAQ,CAACY,KAAG,CAAC,CAAC;EACrE;EACA,OAAOQ,kBAAkB;AAC3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.VERSION = void 0;
|
|
7
|
+
var VERSION = typeof "4.0.0-alpha.6" !== 'undefined' ? "4.0.0-alpha.6" : 'latest';
|
|
8
|
+
exports.VERSION = VERSION;
|
|
9
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","names":["VERSION","exports"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-nodejs-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-nodejs-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport '@loaders.gl/polyfills';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,kBAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","DracoLoader"],"sources":["../../../src/workers/draco-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '../index';\n\ncreateLoaderWorker(DracoLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,kBAAW,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
7
|
+
var _dracoWriterNodejs = require("../draco-writer-nodejs");
|
|
8
|
+
(function () {
|
|
9
|
+
if (!_workerUtils.WorkerBody.inWorkerThread()) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
_workerUtils.WorkerBody.onmessage = function () {
|
|
13
|
+
var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {
|
|
14
|
+
var input, options, result, message;
|
|
15
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
+
while (1) switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
_context.t0 = type;
|
|
19
|
+
_context.next = _context.t0 === 'process' ? 3 : 16;
|
|
20
|
+
break;
|
|
21
|
+
case 3:
|
|
22
|
+
_context.prev = 3;
|
|
23
|
+
input = payload.input, options = payload.options;
|
|
24
|
+
_context.next = 7;
|
|
25
|
+
return _dracoWriterNodejs.DracoWriterNodeJS.encode(input, options);
|
|
26
|
+
case 7:
|
|
27
|
+
result = _context.sent;
|
|
28
|
+
_workerUtils.WorkerBody.postMessage('done', {
|
|
29
|
+
result: result
|
|
30
|
+
});
|
|
31
|
+
_context.next = 15;
|
|
32
|
+
break;
|
|
33
|
+
case 11:
|
|
34
|
+
_context.prev = 11;
|
|
35
|
+
_context.t1 = _context["catch"](3);
|
|
36
|
+
message = _context.t1 instanceof Error ? _context.t1.message : '';
|
|
37
|
+
_workerUtils.WorkerBody.postMessage('error', {
|
|
38
|
+
error: message
|
|
39
|
+
});
|
|
40
|
+
case 15:
|
|
41
|
+
return _context.abrupt("break", 16);
|
|
42
|
+
case 16:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context.stop();
|
|
45
|
+
}
|
|
46
|
+
}, _callee, null, [[3, 11]]);
|
|
47
|
+
}));
|
|
48
|
+
return function (_x, _x2) {
|
|
49
|
+
return _ref.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
52
|
+
})();
|
|
53
|
+
//# sourceMappingURL=draco-writer-nodejs-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-writer-nodejs-worker.js","names":["_workerUtils","require","_dracoWriterNodejs","WorkerBody","inWorkerThread","onmessage","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","type","payload","input","options","result","message","wrap","_callee$","_context","prev","next","t0","DracoWriterNodeJS","encode","sent","postMessage","t1","Error","error","abrupt","stop","_x","_x2","apply","arguments"],"sources":["../../../src/workers/draco-writer-nodejs-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriterNodeJS} from '../draco-writer-nodejs';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriterNodeJS.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":";;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAEA,CAAC,YAAM;EAEL,IAAI,CAACE,uBAAU,CAACC,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAD,uBAAU,CAACE,SAAS;IAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAAOC,IAAI,EAAEC,OAA6B;MAAA,IAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,OAAA;MAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAG,EAAA,GACvDX,IAAI;YAAAQ,QAAA,CAAAE,IAAA,GAAAF,QAAA,CAAAG,EAAA,KACL,SAAS;YAAA;UAAA;YAAAH,QAAA,CAAAC,IAAA;YAEHP,KAAK,GAAaD,OAAO,CAAzBC,KAAK,EAAEC,OAAO,GAAIF,OAAO,CAAlBE,OAAO;YAAAK,QAAA,CAAAE,IAAA;YAAA,OACAE,oCAAiB,CAACC,MAAM,CAAEX,KAAK,EAAEC,OAAO,CAAC;UAAA;YAAxDC,MAAM,GAAAI,QAAA,CAAAM,IAAA;YACZvB,uBAAU,CAACwB,WAAW,CAAC,MAAM,EAAE;cAACX,MAAM,EAANA;YAAM,CAAC,CAAC;YAACI,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAQ,EAAA,GAAAR,QAAA;YAEnCH,OAAO,GAAGG,QAAA,CAAAQ,EAAA,YAAiBC,KAAK,GAAGT,QAAA,CAAAQ,EAAA,CAAMX,OAAO,GAAG,EAAE;YAC3Dd,uBAAU,CAACwB,WAAW,CAAC,OAAO,EAAE;cAACG,KAAK,EAAEb;YAAO,CAAC,CAAC;UAAC;YAAA,OAAAG,QAAA,CAAAW,MAAA;UAAA;UAAA;YAAA,OAAAX,QAAA,CAAAY,IAAA;QAAA;MAAA,GAAArB,OAAA;IAAA,CAKzD;IAAA,iBAAAsB,EAAA,EAAAC,GAAA;MAAA,OAAA5B,IAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
5
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
6
|
+
var _workerUtils = require("@loaders.gl/worker-utils");
|
|
7
|
+
var _dracoWriter = require("../draco-writer");
|
|
8
|
+
(function () {
|
|
9
|
+
if (!_workerUtils.WorkerBody.inWorkerThread()) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
_workerUtils.WorkerBody.onmessage = function () {
|
|
13
|
+
var _ref = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(type, payload) {
|
|
14
|
+
var input, options, result, message;
|
|
15
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
+
while (1) switch (_context.prev = _context.next) {
|
|
17
|
+
case 0:
|
|
18
|
+
_context.t0 = type;
|
|
19
|
+
_context.next = _context.t0 === 'process' ? 3 : 16;
|
|
20
|
+
break;
|
|
21
|
+
case 3:
|
|
22
|
+
_context.prev = 3;
|
|
23
|
+
input = payload.input, options = payload.options;
|
|
24
|
+
_context.next = 7;
|
|
25
|
+
return _dracoWriter.DracoWriter.encode(input, options);
|
|
26
|
+
case 7:
|
|
27
|
+
result = _context.sent;
|
|
28
|
+
_workerUtils.WorkerBody.postMessage('done', {
|
|
29
|
+
result: result
|
|
30
|
+
});
|
|
31
|
+
_context.next = 15;
|
|
32
|
+
break;
|
|
33
|
+
case 11:
|
|
34
|
+
_context.prev = 11;
|
|
35
|
+
_context.t1 = _context["catch"](3);
|
|
36
|
+
message = _context.t1 instanceof Error ? _context.t1.message : '';
|
|
37
|
+
_workerUtils.WorkerBody.postMessage('error', {
|
|
38
|
+
error: message
|
|
39
|
+
});
|
|
40
|
+
case 15:
|
|
41
|
+
return _context.abrupt("break", 16);
|
|
42
|
+
case 16:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context.stop();
|
|
45
|
+
}
|
|
46
|
+
}, _callee, null, [[3, 11]]);
|
|
47
|
+
}));
|
|
48
|
+
return function (_x, _x2) {
|
|
49
|
+
return _ref.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
52
|
+
})();
|
|
53
|
+
//# sourceMappingURL=draco-writer-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-writer-worker.js","names":["_workerUtils","require","_dracoWriter","WorkerBody","inWorkerThread","onmessage","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","type","payload","input","options","result","message","wrap","_callee$","_context","prev","next","t0","DracoWriter","encode","sent","postMessage","t1","Error","error","abrupt","stop","_x","_x2","apply","arguments"],"sources":["../../../src/workers/draco-writer-worker.ts"],"sourcesContent":["import {WorkerBody, WorkerMessagePayload} from '@loaders.gl/worker-utils';\nimport {DracoWriter} from '../draco-writer';\n\n(() => {\n // Check that we are actually in a worker thread\n if (!WorkerBody.inWorkerThread()) {\n return;\n }\n\n WorkerBody.onmessage = async (type, payload: WorkerMessagePayload) => {\n switch (type) {\n case 'process':\n try {\n const {input, options} = payload;\n const result = await DracoWriter.encode!(input, options);\n WorkerBody.postMessage('done', {result});\n } catch (error) {\n const message = error instanceof Error ? error.message : '';\n WorkerBody.postMessage('error', {error: message});\n }\n break;\n default:\n }\n };\n})();\n"],"mappings":";;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,CAAC,YAAM;EAEL,IAAI,CAACE,uBAAU,CAACC,cAAc,CAAC,CAAC,EAAE;IAChC;EACF;EAEAD,uBAAU,CAACE,SAAS;IAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAG,SAAAC,QAAOC,IAAI,EAAEC,OAA6B;MAAA,IAAAC,KAAA,EAAAC,OAAA,EAAAC,MAAA,EAAAC,OAAA;MAAA,OAAAR,YAAA,CAAAD,OAAA,CAAAU,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAG,EAAA,GACvDX,IAAI;YAAAQ,QAAA,CAAAE,IAAA,GAAAF,QAAA,CAAAG,EAAA,KACL,SAAS;YAAA;UAAA;YAAAH,QAAA,CAAAC,IAAA;YAEHP,KAAK,GAAaD,OAAO,CAAzBC,KAAK,EAAEC,OAAO,GAAIF,OAAO,CAAlBE,OAAO;YAAAK,QAAA,CAAAE,IAAA;YAAA,OACAE,wBAAW,CAACC,MAAM,CAAEX,KAAK,EAAEC,OAAO,CAAC;UAAA;YAAlDC,MAAM,GAAAI,QAAA,CAAAM,IAAA;YACZvB,uBAAU,CAACwB,WAAW,CAAC,MAAM,EAAE;cAACX,MAAM,EAANA;YAAM,CAAC,CAAC;YAACI,QAAA,CAAAE,IAAA;YAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAQ,EAAA,GAAAR,QAAA;YAEnCH,OAAO,GAAGG,QAAA,CAAAQ,EAAA,YAAiBC,KAAK,GAAGT,QAAA,CAAAQ,EAAA,CAAMX,OAAO,GAAG,EAAE;YAC3Dd,uBAAU,CAACwB,WAAW,CAAC,OAAO,EAAE;cAACG,KAAK,EAAEb;YAAO,CAAC,CAAC;UAAC;YAAA,OAAAG,QAAA,CAAAW,MAAA;UAAA;UAAA;YAAA,OAAAX,QAAA,CAAAY,IAAA;QAAA;MAAA,GAAArB,OAAA;IAAA,CAKzD;IAAA,iBAAAsB,EAAA,EAAAC,GAAA;MAAA,OAAA5B,IAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;EAAA;AACH,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { isBrowser } from '@loaders.gl/worker-utils';
|
|
2
|
+
import { VERSION } from './lib/utils/version';
|
|
3
|
+
const DEFAULT_DRACO_OPTIONS = {
|
|
4
|
+
draco: {
|
|
5
|
+
decoderType: typeof WebAssembly === 'object' ? 'wasm' : 'js',
|
|
6
|
+
libraryPath: 'libs/',
|
|
7
|
+
extraAttributes: {},
|
|
8
|
+
attributeNameEntry: undefined
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
export const DracoLoader = {
|
|
12
|
+
name: 'Draco',
|
|
13
|
+
id: isBrowser ? 'draco' : 'draco-nodejs',
|
|
14
|
+
module: 'draco',
|
|
15
|
+
version: VERSION,
|
|
16
|
+
worker: true,
|
|
17
|
+
extensions: ['drc'],
|
|
18
|
+
mimeTypes: ['application/octet-stream'],
|
|
19
|
+
binary: true,
|
|
20
|
+
tests: ['DRACO'],
|
|
21
|
+
options: DEFAULT_DRACO_OPTIONS
|
|
22
|
+
};
|
|
23
|
+
export const _TypecheckDracoLoader = DracoLoader;
|
|
24
|
+
//# sourceMappingURL=draco-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-loader.js","names":["isBrowser","VERSION","DEFAULT_DRACO_OPTIONS","draco","decoderType","WebAssembly","libraryPath","extraAttributes","attributeNameEntry","undefined","DracoLoader","name","id","module","version","worker","extensions","mimeTypes","binary","tests","options","_TypecheckDracoLoader"],"sources":["../../src/draco-loader.ts"],"sourcesContent":["//\n\nimport {isBrowser} from '@loaders.gl/worker-utils';\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {DracoMesh} from './lib/draco-types';\nimport type {DracoParseOptions} from './lib/draco-parser';\nimport {VERSION} from './lib/utils/version';\n\nexport type DracoLoaderOptions = LoaderOptions & {\n draco?: DracoParseOptions & {\n decoderType?: 'wasm' | 'js';\n libraryPath?: string;\n extraAttributes?;\n attributeNameEntry?: string;\n workerUrl?: string;\n };\n};\n\nconst DEFAULT_DRACO_OPTIONS: DracoLoaderOptions = {\n draco: {\n decoderType: typeof WebAssembly === 'object' ? 'wasm' : 'js', // 'js' for IE11\n libraryPath: 'libs/',\n extraAttributes: {},\n attributeNameEntry: undefined\n }\n};\n\n/**\n * Worker loader for Draco3D compressed geometries\n */\nexport const DracoLoader: Loader<DracoMesh, never, DracoLoaderOptions> = {\n name: 'Draco',\n id: isBrowser ? 'draco' : 'draco-nodejs',\n module: 'draco',\n // shapes: ['mesh'],\n version: VERSION,\n worker: true,\n extensions: ['drc'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['DRACO'],\n options: DEFAULT_DRACO_OPTIONS\n};\n\nexport const _TypecheckDracoLoader: Loader = DracoLoader;\n"],"mappings":"AAEA,SAAQA,SAAS,QAAO,0BAA0B;AAIlD,SAAQC,OAAO,QAAO,qBAAqB;AAY3C,MAAMC,qBAAyC,GAAG;EAChDC,KAAK,EAAE;IACLC,WAAW,EAAE,OAAOC,WAAW,KAAK,QAAQ,GAAG,MAAM,GAAG,IAAI;IAC5DC,WAAW,EAAE,OAAO;IACpBC,eAAe,EAAE,CAAC,CAAC;IACnBC,kBAAkB,EAAEC;EACtB;AACF,CAAC;AAKD,OAAO,MAAMC,WAAyD,GAAG;EACvEC,IAAI,EAAE,OAAO;EACbC,EAAE,EAAEZ,SAAS,GAAG,OAAO,GAAG,cAAc;EACxCa,MAAM,EAAE,OAAO;EAEfC,OAAO,EAAEb,OAAO;EAChBc,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,OAAO,CAAC;EAChBC,OAAO,EAAElB;AACX,CAAC;AAED,OAAO,MAAMmB,qBAA6B,GAAGX,WAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-writer-nodejs.js","names":["DracoWriter","DracoWriterNodeJS"],"sources":["../../src/draco-writer-nodejs.ts"],"sourcesContent":["// Polyfills increases the bundle size significantly. Use it for NodeJS worker only\nimport '@loaders.gl/polyfills';\n\nexport {DracoWriter as DracoWriterNodeJS} from './draco-writer';\n"],"mappings":"AACA,OAAO,uBAAuB;AAE9B,SAAQA,WAAW,IAAIC,iBAAiB,QAAO,gBAAgB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import DRACOBuilder from './lib/draco-builder';
|
|
2
|
+
import { loadDracoEncoderModule } from './lib/draco-module-loader';
|
|
3
|
+
import { VERSION } from './lib/utils/version';
|
|
4
|
+
const DEFAULT_DRACO_WRITER_OPTIONS = {
|
|
5
|
+
pointcloud: false,
|
|
6
|
+
attributeNameEntry: 'name'
|
|
7
|
+
};
|
|
8
|
+
export const DracoWriter = {
|
|
9
|
+
name: 'DRACO',
|
|
10
|
+
id: 'draco',
|
|
11
|
+
module: 'draco',
|
|
12
|
+
version: VERSION,
|
|
13
|
+
extensions: ['drc'],
|
|
14
|
+
encode,
|
|
15
|
+
options: {
|
|
16
|
+
draco: DEFAULT_DRACO_WRITER_OPTIONS
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
async function encode(data) {
|
|
20
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
21
|
+
const {
|
|
22
|
+
draco
|
|
23
|
+
} = await loadDracoEncoderModule(options);
|
|
24
|
+
const dracoBuilder = new DRACOBuilder(draco);
|
|
25
|
+
try {
|
|
26
|
+
return dracoBuilder.encodeSync(data, options.draco);
|
|
27
|
+
} finally {
|
|
28
|
+
dracoBuilder.destroy();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=draco-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco-writer.js","names":["DRACOBuilder","loadDracoEncoderModule","VERSION","DEFAULT_DRACO_WRITER_OPTIONS","pointcloud","attributeNameEntry","DracoWriter","name","id","module","version","extensions","encode","options","draco","data","arguments","length","undefined","dracoBuilder","encodeSync","destroy"],"sources":["../../src/draco-writer.ts"],"sourcesContent":["import type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {DracoMesh} from './lib/draco-types';\nimport type {DracoBuildOptions} from './lib/draco-builder';\nimport DRACOBuilder from './lib/draco-builder';\nimport {loadDracoEncoderModule} from './lib/draco-module-loader';\nimport {VERSION} from './lib/utils/version';\n\n/** Writer Options for draco */\nexport type DracoWriterOptions = WriterOptions & {\n draco?: DracoBuildOptions & {\n method?: 'MESH_EDGEBREAKER_ENCODING' | 'MESH_SEQUENTIAL_ENCODING';\n speed?: [number, number];\n quantization?: Record<string, number>;\n attributeNameEntry?: string;\n };\n};\n\nconst DEFAULT_DRACO_WRITER_OPTIONS = {\n pointcloud: false, // Set to true if pointcloud (mode: 0, no indices)\n attributeNameEntry: 'name'\n // Draco Compression Parameters\n // method: 'MESH_EDGEBREAKER_ENCODING', // Use draco defaults\n // speed: [5, 5], // Use draco defaults\n // quantization: { // Use draco defaults\n // POSITION: 10\n // }\n};\n\n/**\n * Exporter for Draco3D compressed geometries\n */\nexport const DracoWriter: Writer<DracoMesh, unknown, DracoWriterOptions> = {\n name: 'DRACO',\n id: 'draco',\n module: 'draco',\n version: VERSION,\n extensions: ['drc'],\n encode,\n options: {\n draco: DEFAULT_DRACO_WRITER_OPTIONS\n }\n};\n\nasync function encode(data: DracoMesh, options: DracoWriterOptions = {}): Promise<ArrayBuffer> {\n // Dynamically load draco\n const {draco} = await loadDracoEncoderModule(options);\n const dracoBuilder = new DRACOBuilder(draco);\n\n try {\n return dracoBuilder.encodeSync(data, options.draco);\n } finally {\n dracoBuilder.destroy();\n }\n}\n"],"mappings":"AAGA,OAAOA,YAAY,MAAM,qBAAqB;AAC9C,SAAQC,sBAAsB,QAAO,2BAA2B;AAChE,SAAQC,OAAO,QAAO,qBAAqB;AAY3C,MAAMC,4BAA4B,GAAG;EACnCC,UAAU,EAAE,KAAK;EACjBC,kBAAkB,EAAE;AAOtB,CAAC;AAKD,OAAO,MAAMC,WAA2D,GAAG;EACzEC,IAAI,EAAE,OAAO;EACbC,EAAE,EAAE,OAAO;EACXC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAER,OAAO;EAChBS,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,MAAM;EACNC,OAAO,EAAE;IACPC,KAAK,EAAEX;EACT;AACF,CAAC;AAED,eAAeS,MAAMA,CAACG,IAAe,EAA0D;EAAA,IAAxDF,OAA2B,GAAAG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAErE,MAAM;IAACF;EAAK,CAAC,GAAG,MAAMb,sBAAsB,CAACY,OAAO,CAAC;EACrD,MAAMM,YAAY,GAAG,IAAInB,YAAY,CAACc,KAAK,CAAC;EAE5C,IAAI;IACF,OAAOK,YAAY,CAACC,UAAU,CAACL,IAAI,EAAEF,OAAO,CAACC,KAAK,CAAC;EACrD,CAAC,SAAS;IACRK,YAAY,CAACE,OAAO,CAAC,CAAC;EACxB;AACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export let draco_GeometryAttribute_Type = function (draco_GeometryAttribute_Type) {
|
|
2
|
+
draco_GeometryAttribute_Type[draco_GeometryAttribute_Type["draco_GeometryAttribute::INVALID"] = 0] = "draco_GeometryAttribute::INVALID";
|
|
3
|
+
draco_GeometryAttribute_Type[draco_GeometryAttribute_Type["draco_GeometryAttribute::POSITION"] = 1] = "draco_GeometryAttribute::POSITION";
|
|
4
|
+
draco_GeometryAttribute_Type[draco_GeometryAttribute_Type["draco_GeometryAttribute::NORMAL"] = 2] = "draco_GeometryAttribute::NORMAL";
|
|
5
|
+
draco_GeometryAttribute_Type[draco_GeometryAttribute_Type["draco_GeometryAttribute::COLOR"] = 3] = "draco_GeometryAttribute::COLOR";
|
|
6
|
+
draco_GeometryAttribute_Type[draco_GeometryAttribute_Type["draco_GeometryAttribute::TEX_COORD"] = 4] = "draco_GeometryAttribute::TEX_COORD";
|
|
7
|
+
draco_GeometryAttribute_Type[draco_GeometryAttribute_Type["draco_GeometryAttribute::GENERIC"] = 5] = "draco_GeometryAttribute::GENERIC";
|
|
8
|
+
return draco_GeometryAttribute_Type;
|
|
9
|
+
}({});
|
|
10
|
+
export let draco_EncodedGeometryType = function (draco_EncodedGeometryType) {
|
|
11
|
+
draco_EncodedGeometryType[draco_EncodedGeometryType["draco::INVALID_GEOMETRY_TYPE"] = 0] = "draco::INVALID_GEOMETRY_TYPE";
|
|
12
|
+
draco_EncodedGeometryType[draco_EncodedGeometryType["draco::POINT_CLOUD"] = 1] = "draco::POINT_CLOUD";
|
|
13
|
+
draco_EncodedGeometryType[draco_EncodedGeometryType["draco::TRIANGULAR_MESH"] = 2] = "draco::TRIANGULAR_MESH";
|
|
14
|
+
return draco_EncodedGeometryType;
|
|
15
|
+
}({});
|
|
16
|
+
export let draco_DataType = function (draco_DataType) {
|
|
17
|
+
draco_DataType[draco_DataType["draco::DT_INVALID"] = 0] = "draco::DT_INVALID";
|
|
18
|
+
draco_DataType[draco_DataType["draco::DT_INT8"] = 1] = "draco::DT_INT8";
|
|
19
|
+
draco_DataType[draco_DataType["draco::DT_UINT8"] = 2] = "draco::DT_UINT8";
|
|
20
|
+
draco_DataType[draco_DataType["draco::DT_INT16"] = 3] = "draco::DT_INT16";
|
|
21
|
+
draco_DataType[draco_DataType["draco::DT_UINT16"] = 4] = "draco::DT_UINT16";
|
|
22
|
+
draco_DataType[draco_DataType["draco::DT_INT32"] = 5] = "draco::DT_INT32";
|
|
23
|
+
draco_DataType[draco_DataType["draco::DT_UINT32"] = 6] = "draco::DT_UINT32";
|
|
24
|
+
draco_DataType[draco_DataType["draco::DT_INT64"] = 7] = "draco::DT_INT64";
|
|
25
|
+
draco_DataType[draco_DataType["draco::DT_UINT64"] = 8] = "draco::DT_UINT64";
|
|
26
|
+
draco_DataType[draco_DataType["draco::DT_FLOAT32"] = 9] = "draco::DT_FLOAT32";
|
|
27
|
+
draco_DataType[draco_DataType["draco::DT_FLOAT64"] = 10] = "draco::DT_FLOAT64";
|
|
28
|
+
draco_DataType[draco_DataType["draco::DT_BOOL"] = 11] = "draco::DT_BOOL";
|
|
29
|
+
draco_DataType[draco_DataType["draco::DT_TYPES_COUNT"] = 12] = "draco::DT_TYPES_COUNT";
|
|
30
|
+
return draco_DataType;
|
|
31
|
+
}({});
|
|
32
|
+
export let draco_StatusCode = function (draco_StatusCode) {
|
|
33
|
+
draco_StatusCode[draco_StatusCode["draco_Status::OK"] = 0] = "draco_Status::OK";
|
|
34
|
+
draco_StatusCode[draco_StatusCode["draco_Status::DRACO_ERROR"] = 1] = "draco_Status::DRACO_ERROR";
|
|
35
|
+
draco_StatusCode[draco_StatusCode["draco_Status::IO_ERROR"] = 2] = "draco_Status::IO_ERROR";
|
|
36
|
+
draco_StatusCode[draco_StatusCode["draco_Status::INVALID_PARAMETER"] = 3] = "draco_Status::INVALID_PARAMETER";
|
|
37
|
+
draco_StatusCode[draco_StatusCode["draco_Status::UNSUPPORTED_VERSION"] = 4] = "draco_Status::UNSUPPORTED_VERSION";
|
|
38
|
+
draco_StatusCode[draco_StatusCode["draco_Status::UNKNOWN_VERSION"] = 5] = "draco_Status::UNKNOWN_VERSION";
|
|
39
|
+
return draco_StatusCode;
|
|
40
|
+
}({});
|
|
41
|
+
//# sourceMappingURL=draco3d-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draco3d-types.js","names":["draco_GeometryAttribute_Type","draco_EncodedGeometryType","draco_DataType","draco_StatusCode"],"sources":["../../../src/draco3d/draco3d-types.ts"],"sourcesContent":["// A set of typescript types manually adapted from the Draco web IDL\n// Draco JS is a bit tricky to work with due to the C++ emscripten code base\n// sparse documentation, so these types provide an extra safety net.\n\n// Typescript defs adapted from draco3d emscripten IDL\n// https://raw.githubusercontent.com/google/draco/master/src/draco/javascript/emscripten/draco_web_decoder.idl\n// Interface exposed to emscripten's WebIDL Binder.\n// http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/WebIDL-Binder.html\n\n/* eslint-disable camelcase */\n\n/** Draco3D untyped memory pointer */\ntype VoidPtr = any;\n\n// DRACO WEB DECODER IDL\n\n/** Draco3D geometry attribute type */\nexport enum draco_GeometryAttribute_Type {\n 'draco_GeometryAttribute::INVALID',\n 'draco_GeometryAttribute::POSITION',\n 'draco_GeometryAttribute::NORMAL',\n 'draco_GeometryAttribute::COLOR',\n 'draco_GeometryAttribute::TEX_COORD',\n 'draco_GeometryAttribute::GENERIC'\n}\n\n/** Draco3D encoded geometry type */\nexport enum draco_EncodedGeometryType {\n 'draco::INVALID_GEOMETRY_TYPE',\n 'draco::POINT_CLOUD',\n 'draco::TRIANGULAR_MESH'\n}\n\n/** Draco3D data type */\nexport enum draco_DataType {\n 'draco::DT_INVALID',\n 'draco::DT_INT8',\n 'draco::DT_UINT8',\n 'draco::DT_INT16',\n 'draco::DT_UINT16',\n 'draco::DT_INT32',\n 'draco::DT_UINT32',\n 'draco::DT_INT64',\n 'draco::DT_UINT64',\n 'draco::DT_FLOAT32',\n 'draco::DT_FLOAT64',\n 'draco::DT_BOOL',\n 'draco::DT_TYPES_COUNT'\n}\n\n/** Draco3D status code */\nexport enum draco_StatusCode {\n 'draco_Status::OK',\n 'draco_Status::DRACO_ERROR',\n 'draco_Status::IO_ERROR',\n 'draco_Status::INVALID_PARAMETER',\n 'draco_Status::UNSUPPORTED_VERSION',\n 'draco_Status::UNKNOWN_VERSION'\n}\n\n/** Draco3D decoder buffer allocated on emscripten heap */\nexport declare class DecoderBuffer {\n constructor();\n Init(data: Int8Array, data_size: number): void;\n}\n\n/** Draco3D attribute transform data */\nexport declare class AttributeTransformData {\n constructor();\n transform_type(): number;\n}\n\n/** Draco3D geometry attribute */\nexport declare class GeometryAttribute {\n constructor();\n}\n\n/** Draco3D point attribute */\nexport declare class PointAttribute {\n ptr: VoidPtr;\n\n constructor();\n size(): number;\n GetAttributeTransformData(): AttributeTransformData;\n\n // From GeometryAttribute\n attribute_type(): number;\n data_type(): number;\n num_components(): number;\n normalized(): boolean;\n byte_stride(): number;\n byte_offset(): number;\n unique_id(): number;\n}\n\n/** Draco3D attribute transform */\nexport declare class AttributeQuantizationTransform {\n constructor();\n InitFromAttribute(att: PointAttribute): boolean;\n quantization_bits(): number;\n min_value(axis: number): number;\n range(): number;\n}\n\n/** Draco3D attribute transform */\nexport declare class AttributeOctahedronTransform {\n constructor();\n InitFromAttribute(att: PointAttribute): boolean;\n quantization_bits(): number;\n}\n\n/** Draco3D point cloud */\nexport declare class PointCloud {\n ptr: VoidPtr;\n\n constructor();\n num_attributes(): number;\n num_points(): number;\n}\n\n/** Draco3D mesh */\nexport declare class Mesh extends PointCloud {\n constructor();\n num_faces(): number;\n}\n\n/** Draco3D metadata */\nexport declare class Metadata {\n ptr: VoidPtr;\n\n constructor();\n}\n\n/** Draco3D status */\nexport declare class Status {\n constructor();\n code(): draco_StatusCode;\n ok(): boolean;\n error_msg(): string;\n}\n\n/** Draco3D Float32Array allocated on the emscripten heap */\nexport declare class DracoFloat32Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Int8Array allocated on the emscripten heap */\nexport declare class DracoInt8Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Uint8Array allocated on the emscripten heap */\nexport declare class DracoUInt8Array {\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Int16Array allocated on the emscripten heap */\nexport declare class DracoInt16Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Uint16Array allocated on the emscripten heap */\nexport declare class DracoUInt16Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Int32Array allocated on the emscripten heap */\nexport declare class DracoInt32Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D Uint32Array allocated on the emscripten heap */\nexport declare class DracoUInt32Array {\n constructor();\n GetValue(index: number): number;\n size(): number;\n}\n\n/** Draco3D metadata querier */\nexport declare class MetadataQuerier {\n constructor();\n\n HasEntry(metadata: Metadata, entry_name: string): string;\n GetIntEntry(metadata: Metadata, entry_name: string);\n GetIntEntryArray(metadata: Metadata, entry_name: string, out_values: DracoInt32Array);\n GetDoubleEntry(metadata: Metadata, entry_name: string): number;\n GetStringEntry(metadata: Metadata, entry_name: string): string;\n\n NumEntries(metadata: Metadata): number;\n GetEntryName(metadata: Metadata, entry_id: number): string;\n}\n\n/**\n * Draco3D Decoder class\n */\nexport declare class Decoder {\n constructor();\n\n GetEncodedGeometryType(in_buffer: DecoderBuffer): draco_EncodedGeometryType;\n\n DecodeBufferToPointCloud(in_buffer: DecoderBuffer, out_point_cloud: PointCloud): Status;\n DecodeBufferToMesh(in_buffer: DecoderBuffer, out_mesh: Mesh): Status;\n\n GetAttributeId(pc: PointCloud, type: draco_GeometryAttribute_Type): number;\n GetAttributeIdByName(pc: PointCloud, name: string): number;\n GetAttributeIdByMetadataEntry(pc: PointCloud, name: string, value: string): number;\n\n GetAttribute(pc: PointCloud, att_id: number): PointAttribute;\n GetAttributeByUniqueId(pc: PointCloud, unique_id: number): PointAttribute;\n\n GetMetadata(pc: PointCloud): Metadata;\n GetAttributeMetadata(pc: PointCloud, att_id: number): Metadata;\n\n GetFaceFromMesh(m: Mesh, face_id: number, out_values: DracoInt32Array): boolean;\n GetTriangleStripsFromMesh(m: Mesh, strip_values: DracoInt32Array);\n\n GetTrianglesUInt16Array(m: Mesh, out_size: number, out_values: VoidPtr): boolean;\n GetTrianglesUInt32Array(m: Mesh, out_size: number, out_values: VoidPtr): boolean;\n\n GetAttributeFloat(pa: PointAttribute, att_index: number, out_values: DracoFloat32Array): boolean;\n\n GetAttributeFloatForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoFloat32Array\n ): boolean;\n\n // Deprecated, use GetAttributeInt32ForAllPoints instead.\n GetAttributeIntForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt32Array\n ): boolean;\n\n GetAttributeInt8ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt8Array\n ): boolean;\n GetAttributeUInt8ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoUInt8Array\n ): boolean;\n GetAttributeInt16ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt16Array\n ): boolean;\n GetAttributeUInt16ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoUInt16Array\n ): boolean;\n GetAttributeInt32ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoInt32Array\n ): boolean;\n GetAttributeUInt32ForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n out_values: DracoUInt32Array\n ): boolean;\n\n GetAttributeDataArrayForAllPoints(\n pc: PointCloud,\n pa: PointAttribute,\n data_type: draco_DataType,\n out_size: number,\n out_values: VoidPtr\n ): boolean;\n\n SkipAttributeTransform(att_type: draco_GeometryAttribute_Type): void;\n}\n\n// DRACO WEB ENCODER IDL\n\n/** Draco3D metadata builder */\nexport declare class MetadataBuilder {\n constructor();\n AddStringEntry(metadata: Metadata, entry_name: string, entry_value: string);\n AddIntEntry(metadata: Metadata, entry_name: string, entry_value: number);\n AddDoubleEntry(metadata: Metadata, entry_name: string, entry_value: number);\n AddIntEntryArray(\n metadata: Metadata,\n entry_name: string,\n entry_value: Int32Array,\n num_values: number\n );\n}\n\n/** Draco3D point cloud builder */\n\nexport declare class PointCloudBuilder {\n constructor();\n PointCloudBuilder(): void;\n AddFloatAttribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Float32Array\n );\n AddInt8Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Int8Array\n );\n AddUInt8Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Uint8Array\n );\n AddInt16Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Int16Array\n );\n AddUInt16Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Uint16Array\n );\n AddInt32Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Int32Array\n );\n AddUInt32Attribute(\n pc: PointCloud,\n type: draco_GeometryAttribute_Type,\n num_vertices: number,\n num_components: number,\n att_values: Uint32Array\n );\n\n AddMetadata(pc: PointCloud, metadata: Metadata): boolean;\n SetMetadataForAttribute(pc: PointCloud, attribute_id: number, metadata: Metadata);\n}\n\n/** Draco3D mesh builder */\nexport declare class MeshBuilder extends PointCloudBuilder {\n constructor();\n AddFacesToMesh(mesh: Mesh, num_faces: number, faces: number[]): boolean;\n}\n\n/** Draco3D encoder */\nexport declare class Encoder {\n constructor();\n Encoder(): void;\n SetEncodingMethod(method: number): void;\n SetAttributeQuantization(type: draco_GeometryAttribute_Type, quantization_bits: number);\n SetAttributeExplicitQuantization(\n type: draco_GeometryAttribute_Type,\n quantization_bits: number,\n num_components: number,\n origin: number[],\n range: number\n );\n SetSpeedOptions(encoding_speed: number, decoding_speed: number): void;\n SetTrackEncodedProperties(flag: boolean): void;\n\n EncodeMeshToDracoBuffer(mesh: Mesh, encoded_data: DracoInt8Array);\n EncodePointCloudToDracoBuffer(\n pc: PointCloud,\n deduplicate_values: boolean,\n encoded_data: DracoInt8Array\n );\n\n // Returns the number of encoded points or faces from the last Encode\n // operation. Returns 0 if SetTrackEncodedProperties was not set to true.\n GetNumberOfEncodedPoints(): number;\n GetNumberOfEncodedFaces(): number;\n}\n\n/** Draco3D expert encoder */\nexport declare class ExpertEncoder {\n constructor();\n ExpertEncoder(pc: PointCloud): void;\n SetEncodingMethod(method: number): void;\n SetAttributeQuantization(att_id: number, quantization_bits: number);\n SetAttributeExplicitQuantization(\n att_id: number,\n quantization_bits: number,\n num_components: number,\n origin: number[],\n range: number\n );\n SetSpeedOptions(encoding_speed: number, decoding_speed: number): void;\n SetTrackEncodedProperties(flag: boolean): void;\n\n EncodeToDracoBuffer(deduplicate_values: boolean, encoded_data: DracoInt8Array);\n\n // Returns the number of encoded points or faces from the last Encode\n // operation. Returns 0 if SetTrackEncodedProperties was not set to true.\n GetNumberOfEncodedPoints(): number;\n GetNumberOfEncodedFaces(): number;\n}\n\n/** Draco3D module interface */\nexport interface Draco3D {\n // ENUMS\n\n // draco_EncodedGeometryType\n readonly INVALID_GEOMETRY_TYPE: draco_EncodedGeometryType;\n readonly POINT_CLOUD: draco_EncodedGeometryType;\n readonly TRIANGULAR_MESH: draco_EncodedGeometryType;\n\n // enum draco_GeometryAttribute_Type\n readonly INVALID: draco_GeometryAttribute_Type;\n readonly POSITION: draco_GeometryAttribute_Type;\n readonly NORMAL: draco_GeometryAttribute_Type;\n readonly COLOR: draco_GeometryAttribute_Type;\n readonly TEX_COORD: draco_GeometryAttribute_Type;\n readonly GENERIC: draco_GeometryAttribute_Type;\n\n // enum draco_DataType\n readonly DT_INVALID: draco_DataType;\n readonly DT_INT8: draco_DataType;\n readonly DT_UINT8: draco_DataType;\n readonly DT_INT16: draco_DataType;\n readonly DT_UINT16: draco_DataType;\n readonly DT_INT32: draco_DataType;\n readonly DT_UINT32: draco_DataType;\n readonly DT_INT64: draco_DataType;\n readonly DT_UINT64: draco_DataType;\n readonly DT_FLOAT32: draco_DataType;\n readonly DT_FLOAT64: draco_DataType;\n readonly DT_BOOL: draco_DataType;\n readonly DT_TYPES_COUNT: draco_DataType;\n\n readonly Mesh: typeof Mesh;\n readonly PointCloud: typeof PointCloud;\n readonly Metadata: typeof Metadata;\n\n readonly Encoder: typeof Encoder;\n readonly MeshBuilder: typeof MeshBuilder;\n readonly MetadataBuilder: typeof MetadataBuilder;\n\n readonly MetadataQuerier: typeof MetadataQuerier;\n readonly Decoder: typeof Decoder;\n readonly DecoderBuffer: typeof DecoderBuffer;\n\n readonly DracoFloat32Array: typeof DracoFloat32Array;\n readonly DracoInt8Array: typeof DracoInt8Array;\n readonly DracoUInt8Array: typeof DracoUInt8Array;\n readonly DracoInt16Array: typeof DracoInt16Array;\n readonly DracoUInt16Array: typeof DracoUInt16Array;\n readonly DracoInt32Array: typeof DracoInt32Array;\n readonly DracoUInt32Array: typeof DracoUInt32Array;\n\n readonly AttributeQuantizationTransform: typeof AttributeQuantizationTransform;\n\n // createEncoderModule(): Encoder;\n // createDecoderModule(): Decoder;\n destroy(resource: any): void;\n _malloc(byteLength: number): number;\n _free(ptr: number): void;\n\n HEAPF32: {\n buffer: ArrayBuffer;\n };\n}\n"],"mappings":"AAiBA,WAAYA,4BAA4B,aAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAA5BA,4BAA4B,CAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA;AAUxC,WAAYC,yBAAyB,aAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAzBA,yBAAyB,CAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAOrC,WAAYC,cAAc,aAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAdA,cAAc,CAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAiB1B,WAAYC,gBAAgB,aAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { isBrowser } from '@loaders.gl/worker-utils';
|
|
2
|
+
import { DracoLoader as DracoWorkerLoader } from './draco-loader';
|
|
3
|
+
import DracoParser from './lib/draco-parser';
|
|
4
|
+
import { loadDracoDecoderModule } from './lib/draco-module-loader';
|
|
5
|
+
import { VERSION } from './lib/utils/version';
|
|
6
|
+
export { DracoWriter } from './draco-writer';
|
|
7
|
+
export const DracoWriterWorker = {
|
|
8
|
+
id: isBrowser ? 'draco-writer' : 'draco-writer-nodejs',
|
|
9
|
+
name: 'Draco compressed geometry writer',
|
|
10
|
+
module: 'draco',
|
|
11
|
+
version: VERSION,
|
|
12
|
+
worker: true,
|
|
13
|
+
options: {
|
|
14
|
+
draco: {},
|
|
15
|
+
source: null
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
export { DracoWorkerLoader };
|
|
19
|
+
export const DracoLoader = {
|
|
20
|
+
...DracoWorkerLoader,
|
|
21
|
+
parse
|
|
22
|
+
};
|
|
23
|
+
async function parse(arrayBuffer, options) {
|
|
24
|
+
const {
|
|
25
|
+
draco
|
|
26
|
+
} = await loadDracoDecoderModule(options);
|
|
27
|
+
const dracoParser = new DracoParser(draco);
|
|
28
|
+
try {
|
|
29
|
+
return dracoParser.parseSync(arrayBuffer, options === null || options === void 0 ? void 0 : options.draco);
|
|
30
|
+
} finally {
|
|
31
|
+
dracoParser.destroy();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export const _TypecheckDracoLoader = DracoLoader;
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["isBrowser","DracoLoader","DracoWorkerLoader","DracoParser","loadDracoDecoderModule","VERSION","DracoWriter","DracoWriterWorker","id","name","module","version","worker","options","draco","source","parse","arrayBuffer","dracoParser","parseSync","destroy","_TypecheckDracoLoader"],"sources":["../../src/index.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {isBrowser} from '@loaders.gl/worker-utils';\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {DracoMesh, DracoLoaderData} from './lib/draco-types';\nimport type {DracoLoaderOptions} from './draco-loader';\nimport {DracoLoader as DracoWorkerLoader} from './draco-loader';\nimport DracoParser from './lib/draco-parser';\nimport {loadDracoDecoderModule} from './lib/draco-module-loader';\nimport {VERSION} from './lib/utils/version';\n\n// Draco data types\n\nexport type {DracoMesh, DracoLoaderData};\n\n// Draco Writer\n\nexport type {DracoWriterOptions} from './draco-writer';\nexport {DracoWriter} from './draco-writer';\n\n/**\n * Browser worker doesn't work because of issue during \"draco_encoder.js\" loading.\n * Refused to execute script from 'https://raw.githubusercontent.com/google/draco/1.4.1/javascript/draco_encoder.js' because its MIME type ('') is not executable.\n */\nexport const DracoWriterWorker = {\n id: isBrowser ? 'draco-writer' : 'draco-writer-nodejs',\n name: 'Draco compressed geometry writer',\n module: 'draco',\n version: VERSION,\n worker: true,\n options: {\n draco: {},\n source: null\n }\n};\n\n// Draco Loader\n\nexport type {DracoLoaderOptions};\nexport {DracoWorkerLoader};\n\n/**\n * Loader for Draco3D compressed geometries\n */\nexport const DracoLoader: LoaderWithParser<DracoMesh, never, DracoLoaderOptions> = {\n ...DracoWorkerLoader,\n parse\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: DracoLoaderOptions): Promise<DracoMesh> {\n const {draco} = await loadDracoDecoderModule(options);\n const dracoParser = new DracoParser(draco);\n try {\n return dracoParser.parseSync(arrayBuffer, options?.draco);\n } finally {\n dracoParser.destroy();\n }\n}\n\n// TYPE TESTS - TODO find a better way than exporting junk\nexport const _TypecheckDracoLoader: LoaderWithParser = DracoLoader;\n"],"mappings":"AAEA,SAAQA,SAAS,QAAO,0BAA0B;AAIlD,SAAQC,WAAW,IAAIC,iBAAiB,QAAO,gBAAgB;AAC/D,OAAOC,WAAW,MAAM,oBAAoB;AAC5C,SAAQC,sBAAsB,QAAO,2BAA2B;AAChE,SAAQC,OAAO,QAAO,qBAAqB;AAS3C,SAAQC,WAAW,QAAO,gBAAgB;AAM1C,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,EAAE,EAAER,SAAS,GAAG,cAAc,GAAG,qBAAqB;EACtDS,IAAI,EAAE,kCAAkC;EACxCC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAEN,OAAO;EAChBO,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACPC,KAAK,EAAE,CAAC,CAAC;IACTC,MAAM,EAAE;EACV;AACF,CAAC;AAKD,SAAQb,iBAAiB;AAKzB,OAAO,MAAMD,WAAmE,GAAG;EACjF,GAAGC,iBAAiB;EACpBc;AACF,CAAC;AAED,eAAeA,KAAKA,CAACC,WAAwB,EAAEJ,OAA4B,EAAsB;EAC/F,MAAM;IAACC;EAAK,CAAC,GAAG,MAAMV,sBAAsB,CAACS,OAAO,CAAC;EACrD,MAAMK,WAAW,GAAG,IAAIf,WAAW,CAACW,KAAK,CAAC;EAC1C,IAAI;IACF,OAAOI,WAAW,CAACC,SAAS,CAACF,WAAW,EAAEJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,KAAK,CAAC;EAC3D,CAAC,SAAS;IACRI,WAAW,CAACE,OAAO,CAAC,CAAC;EACvB;AACF;AAGA,OAAO,MAAMC,qBAAuC,GAAGpB,WAAW"}
|