UNPKG

wonder.js

Version:
743 lines (722 loc) 30.7 kB
'use strict'; var Curry = require("bs-platform/lib/js/curry.js"); var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Caml_int32 = require("bs-platform/lib/js/caml_int32.js"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Log$WonderLog = require("wonder-log/lib/js/src/Log.js"); var RABUtils$Wonderjs = require("../../single/rab/utils/RABUtils.js"); var SABUtils$Wonderjs = require("../../single/sab/utils/SABUtils.js"); var BufferUtils$Wonderjs = require("../../../asset/utils/BufferUtils.js"); var ArrayService$Wonderjs = require("../../../service/atom/ArrayService.js"); var ConvertUtils$Wonderjs = require("../../../asset/converter/utils/ConvertUtils.js"); var OptionService$Wonderjs = require("../../../service/atom/OptionService.js"); var DataViewCommon$Wonderjs = require("../../../asset/generate/DataViewCommon.js"); var GenerateCommon$Wonderjs = require("../../../asset/generate/GenerateCommon.js"); var TypeArrayUtils$Wonderjs = require("../../utils/TypeArrayUtils.js"); var GenerateABUtils$Wonderjs = require("../../utils/GenerateABUtils.js"); var ABBufferViewUtils$Wonderjs = require("../utils/ABBufferViewUtils.js"); var ABArrayBufferUtils$Wonderjs = require("../utils/ABArrayBufferUtils.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var AssembleWholeWDBSystem$Wonderjs = require("../../../asset/assemble/AssembleWholeWDBSystem.js"); var BuildGeometryDataUtils$Wonderjs = require("../../../asset/generate/utils/BuildGeometryDataUtils.js"); var BuildGeometryDataSystem$Wonderjs = require("../../../asset/generate/BuildGeometryDataSystem.js"); var GenerateSingleRABSystem$Wonderjs = require("../../single/rab/generate/GenerateSingleRABSystem.js"); var GenerateSingleSABSystem$Wonderjs = require("../../single/sab/generate/GenerateSingleSABSystem.js"); var FindDependencyDataSystem$Wonderjs = require("./FindDependencyDataSystem.js"); var BuildSingleRABJsonDataSystem$Wonderjs = require("../../single/rab/generate/BuildSingleRABJsonDataSystem.js"); var BuildSingleSABJsonDataSystem$Wonderjs = require("../../single/sab/generate/BuildSingleSABJsonDataSystem.js"); var ImmutableHashMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ImmutableHashMapService.js"); var BatchOperateWholeGeometrySystem$Wonderjs = require("../../../asset/assemble/BatchOperateWholeGeometrySystem.js"); function hasDependencyData(bufferDataName, abRelativePath, dependencyRelation, abBufferDataNameMap) { return FindDependencyDataSystem$Wonderjs.findAllDependencyRABRelativePathByDepthSearch(abRelativePath, dependencyRelation).filter((function (dependencyAbRelativePath) { var match = ImmutableHashMapService$WonderCommonlib.get(dependencyAbRelativePath, abBufferDataNameMap); if (match !== undefined) { return ImmutableHashMapService$WonderCommonlib.has(bufferDataName, Caml_option.valFromOption(match)); } else { return false; } })).length > 0; } var All = /* module */[/* hasDependencyData */hasDependencyData]; function _removeImageDuplicateBufferData(param, param$1, buffer) { var bufferViews = param$1[/* bufferViews */8]; var rabRelativePath = param[2]; var allRabImageNameMap = param[1]; var dependencyRelation = param[0]; var match = ArrayService$WonderCommonlib.reduceOneParam((function (param, imageData) { var byteOffset = param[3]; var uint8ArrayArr = param[2]; var bufferViewArr = param[1]; var imageArr = param[0]; var match = hasDependencyData(imageData[/* name */0], rabRelativePath, dependencyRelation, allRabImageNameMap); if (match) { return /* tuple */[ ArrayService$Wonderjs.push(/* record */[ /* name */imageData[/* name */0], /* bufferView */ABBufferViewUtils$Wonderjs.buildNoneBufferViewIndex(/* () */0), /* mimeType */imageData[/* mimeType */2] ], imageArr), bufferViewArr, uint8ArrayArr, byteOffset ]; } else { var arrayBuffer = ABArrayBufferUtils$Wonderjs.RAB[/* getArrayBufferFromBufferViews */0](buffer, imageData[/* bufferView */1], bufferViews); var byteLength = arrayBuffer.byteLength; var alignedByteLength = BufferUtils$Wonderjs.alignedLength(byteLength); return /* tuple */[ ArrayService$Wonderjs.push(/* record */[ /* name */imageData[/* name */0], /* bufferView */bufferViewArr.length, /* mimeType */imageData[/* mimeType */2] ], imageArr), ArrayService$Wonderjs.push(/* record */[ /* byteOffset */byteOffset, /* byteLength */byteLength ], bufferViewArr), ArrayService$Wonderjs.push(arrayBuffer, uint8ArrayArr), byteOffset + alignedByteLength | 0 ]; } }), /* tuple */[ /* array */[], /* array */[], /* array */[], 0 ], param$1[/* images */2]); var bufferViewArr = match[1]; return /* tuple */[ match[0], bufferViewArr, match[2], RABUtils$Wonderjs.computeBufferViewDataByteLength(bufferViewArr) ]; } function _buildGeometryBufferData(param, param$1, param$2) { var uint8ArrayArr = param$2[4]; var byteOffset = param$2[3]; var bufferViewArr = param$2[2]; var bufferView = param$2[1]; var match = ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(bufferView) || hasDependencyData(param[0], param[1], param[2], param[3]); if (match) { return /* tuple */[ ABBufferViewUtils$Wonderjs.buildNoneBufferViewIndex(/* () */0), bufferViewArr, byteOffset, uint8ArrayArr ]; } else { var arrayBuffer = ABArrayBufferUtils$Wonderjs.RAB[/* getArrayBufferFromBufferViews */0](param$1[0], bufferView, param$1[1]); var uint8Array = new Uint8Array(arrayBuffer); var byteLength = uint8Array.byteLength; var alignedByteLength = BufferUtils$Wonderjs.alignedLength(byteLength); return /* tuple */[ bufferViewArr.length + param$2[0] | 0, ArrayService$Wonderjs.push(/* record */[ /* byteOffset */byteOffset, /* byteLength */byteLength ], bufferViewArr), byteOffset + alignedByteLength | 0, ArrayService$Wonderjs.push(uint8Array, uint8ArrayArr) ]; } } function _removeGeometryDuplicateBufferData(param, param$1, param$2, buffer) { var bufferViews = param$2[/* bufferViews */8]; var imageAlignedByteLength = param$1[0]; var rabRelativePath = param[2]; var allRabGeometryNameMap = param[1]; var dependencyRelation = param[0]; var imageBufferViewIndex = param$1[1].length; var match = ArrayService$WonderCommonlib.reduceOneParam((function (param, geometry) { var name = geometry[/* name */0]; var match = _buildGeometryBufferData(/* tuple */[ name, rabRelativePath, dependencyRelation, allRabGeometryNameMap ], /* tuple */[ buffer, bufferViews ], /* tuple */[ imageBufferViewIndex, geometry[/* vertexBufferView */2], param[2], param[3], param[1] ]); var match$1 = _buildGeometryBufferData(/* tuple */[ name, rabRelativePath, dependencyRelation, allRabGeometryNameMap ], /* tuple */[ buffer, bufferViews ], /* tuple */[ imageBufferViewIndex, geometry[/* normalBufferView */3], match[1], match[2], match[3] ]); var match$2 = _buildGeometryBufferData(/* tuple */[ name, rabRelativePath, dependencyRelation, allRabGeometryNameMap ], /* tuple */[ buffer, bufferViews ], /* tuple */[ imageBufferViewIndex, geometry[/* texCoordBufferView */4], match$1[1], match$1[2], match$1[3] ]); var match$3 = _buildGeometryBufferData(/* tuple */[ name, rabRelativePath, dependencyRelation, allRabGeometryNameMap ], /* tuple */[ buffer, bufferViews ], /* tuple */[ imageBufferViewIndex, geometry[/* indexBufferView */5], match$2[1], match$2[2], match$2[3] ]); return /* tuple */[ ArrayService$Wonderjs.push(/* record */[ /* name */geometry[/* name */0], /* indexDataType */geometry[/* indexDataType */1], /* vertexBufferView */match[0], /* normalBufferView */match$1[0], /* texCoordBufferView */match$2[0], /* indexBufferView */match$3[0] ], param[0]), match$3[3], match$3[1], match$3[2] ]; }), /* tuple */[ /* array */[], /* array */[], /* array */[], imageAlignedByteLength ], param$2[/* geometrys */5]); var bufferViewArr = match[2]; var match$1 = bufferViewArr.length === 0; return /* tuple */[ match[0], match[1], bufferViewArr, match$1 ? imageAlignedByteLength : RABUtils$Wonderjs.computeBufferViewDataByteLength(bufferViewArr) ]; } function removeRABDuplicateBufferData(dependencyRelation, param, param$1) { var rab = param$1[1]; var rabRelativePath = param$1[0]; var dataView = DataViewCommon$Wonderjs.create(rab); var match = GenerateABUtils$Wonderjs.readHeader(dataView); var jsonByteLength = match[1]; var jsonStr = GenerateABUtils$Wonderjs.getJsonStr(jsonByteLength, rab); var buffer = GenerateABUtils$Wonderjs.getBuffer(jsonByteLength, rab); var resourceAssetBundleContent = JSON.parse(jsonStr); var match$1 = _removeImageDuplicateBufferData(/* tuple */[ dependencyRelation, param[0], rabRelativePath ], resourceAssetBundleContent, buffer); var imageBufferViewArr = match$1[1]; var match$2 = _removeGeometryDuplicateBufferData(/* tuple */[ dependencyRelation, param[1], rabRelativePath ], /* tuple */[ match$1[3], imageBufferViewArr ], resourceAssetBundleContent, buffer); var geometryBufferViewArr = match$2[2]; var jsonUint8Array = BuildSingleRABJsonDataSystem$Wonderjs.buildJsonUint8Array(/* record */[ /* basicSourceTextures */resourceAssetBundleContent[/* basicSourceTextures */0], /* cubemapTextures */resourceAssetBundleContent[/* cubemapTextures */1], /* images */match$1[0], /* basicMaterials */resourceAssetBundleContent[/* basicMaterials */3], /* lightMaterials */resourceAssetBundleContent[/* lightMaterials */4], /* geometrys */match$2[0], /* scriptEventFunctions */resourceAssetBundleContent[/* scriptEventFunctions */6], /* scriptAttributes */resourceAssetBundleContent[/* scriptAttributes */7], /* bufferViews */imageBufferViewArr.concat(geometryBufferViewArr) ]); return GenerateSingleRABSystem$Wonderjs.generateRAB(/* tuple */[ /* tuple */[ imageBufferViewArr, geometryBufferViewArr ], match$1[2].map((function (arrayBuffer) { return new Uint8Array(arrayBuffer); })), match$2[1] ], match$2[3], jsonUint8Array); } var RAB = /* module */[ /* _removeImageDuplicateBufferData */_removeImageDuplicateBufferData, /* _buildGeometryBufferData */_buildGeometryBufferData, /* _removeGeometryDuplicateBufferData */_removeGeometryDuplicateBufferData, /* removeRABDuplicateBufferData */removeRABDuplicateBufferData ]; function _getArrayBufferFromBufferViews(buffer, bufferView, bufferViews) { var match = bufferViews[bufferView]; var byteOffset = match[/* byteOffset */1]; return buffer.slice(byteOffset, byteOffset + match[/* byteLength */2] | 0); } function _addImageBufferData(imageData, param, param$1) { var bufferViewArr = param$1[1]; var arrayBuffer = _getArrayBufferFromBufferViews(param[0], param[1], param[2]); var byteLength = arrayBuffer.byteLength; var alignedByteLength = BufferUtils$Wonderjs.alignedLength(byteLength); var match = GenerateCommon$Wonderjs.buildBufferViewData(param$1[3], byteLength); var byteOffset = match[1]; return /* tuple */[ ArrayService$Wonderjs.push(/* record */[ /* name */imageData[/* name */0], /* bufferView */bufferViewArr.length, /* mimeType */imageData[/* mimeType */2] ], param$1[0]), ArrayService$Wonderjs.push(/* record */[ /* buffer */match[0], /* byteOffset */byteOffset, /* byteLength */match[2], /* byteStride */match[3] ], bufferViewArr), ArrayService$Wonderjs.push(arrayBuffer, param$1[2]), byteOffset + alignedByteLength | 0 ]; } function _removeImageDuplicateBufferData$1(param, param$1, buffer) { var images = param$1[/* images */4]; if (images !== undefined) { var bufferViews = param$1[/* bufferViews */9]; var sabRelativePath = param[2]; var allRabImageNameMap = param[1]; var dependencyRelation = param[0]; var match = ArrayService$WonderCommonlib.reduceOneParam((function (param, imageData) { var byteOffset = param[3]; var uint8ArrayArr = param[2]; var bufferViewArr = param[1]; var imageArr = param[0]; var match = hasDependencyData(imageData[/* name */0], sabRelativePath, dependencyRelation, allRabImageNameMap); if (match) { return /* tuple */[ ArrayService$Wonderjs.push(/* record */[ /* name */imageData[/* name */0], /* bufferView */ABBufferViewUtils$Wonderjs.buildNoneBufferViewIndex(/* () */0), /* mimeType */imageData[/* mimeType */2] ], imageArr), bufferViewArr, uint8ArrayArr, byteOffset ]; } else { return _addImageBufferData(imageData, /* tuple */[ buffer, imageData[/* bufferView */1], bufferViews ], /* tuple */[ imageArr, bufferViewArr, uint8ArrayArr, byteOffset ]); } }), /* tuple */[ /* array */[], /* array */[], /* array */[], 0 ], images); var bufferViewArr = match[1]; return /* tuple */[ match[0], bufferViewArr, match[2], SABUtils$Wonderjs.computeBufferViewDataByteLength(bufferViewArr) ]; } else { return /* tuple */[ /* array */[], /* array */[], /* array */[], 0 ]; } } function _buildAccessorData(bufferViewArr, imageBufferViewIndex, pointsCount, pointType) { return /* record */[ /* bufferView */bufferViewArr.length + imageBufferViewIndex | 0, /* byteOffset */GenerateCommon$Wonderjs.buildAccessorByteOffset(/* () */0), /* count */pointsCount, /* componentType */ConvertUtils$Wonderjs.convertComponentType(BuildGeometryDataSystem$Wonderjs.getComponentType(pointType)), /* type_ */BufferUtils$Wonderjs.convertType(BuildGeometryDataSystem$Wonderjs.getType(pointType)) ]; } function _buildGeometryAttributeBufferData(param, dataViewArr, param$1, sceneAssetBundleContent, param$2, param$3) { var uint8ArrayArr = param$3[5]; var byteOffset = param$3[4]; var bufferViewArr = param$3[3]; var accessorArr = param$3[2]; var accessor = param$3[1]; var match = Curry._1(param$2[0], accessor) || hasDependencyData(param[0], param[1], param[2], param[3]); if (match) { return /* tuple */[ Curry._1(param$2[1], /* () */0), accessorArr, bufferViewArr, byteOffset, uint8ArrayArr ]; } else { var accessor$1 = Curry._1(param$2[2], accessor); var points = BatchOperateWholeGeometrySystem$Wonderjs.getBufferAttributeData(accessor$1, dataViewArr, sceneAssetBundleContent); var uint8Array = TypeArrayUtils$Wonderjs.convertFloat32ToUint8(points); var byteLength = uint8Array.byteLength; var alignedByteLength = BufferUtils$Wonderjs.alignedLength(byteLength); var match$1 = GenerateCommon$Wonderjs.buildBufferViewData(byteOffset, byteLength); var byteOffset$1 = match$1[1]; return /* tuple */[ Curry._1(param$2[3], accessorArr.length), ArrayService$Wonderjs.push(_buildAccessorData(bufferViewArr, param$3[0], Caml_int32.div(points.length, param$1[1]), param$1[0]), accessorArr), ArrayService$Wonderjs.push(/* record */[ /* buffer */match$1[0], /* byteOffset */byteOffset$1, /* byteLength */match$1[2], /* byteStride */match$1[3] ], bufferViewArr), byteOffset$1 + alignedByteLength | 0, ArrayService$Wonderjs.push(uint8Array, uint8ArrayArr) ]; } } function _buildGeometryIndexBufferData(param, dataViewArr, pointSize, sceneAssetBundleContent, param$1) { var uint8ArrayArr = param$1[5]; var byteOffset = param$1[4]; var bufferViewArr = param$1[3]; var accessorArr = param$1[2]; var accessor = param$1[1]; var match = ABBufferViewUtils$Wonderjs.isNoneAccessorIndex(accessor) || hasDependencyData(param[0], param[1], param[2], param[3]); if (match) { return /* tuple */[ ABBufferViewUtils$Wonderjs.buildNoneAccessorIndex(/* () */0), accessorArr, bufferViewArr, byteOffset, uint8ArrayArr ]; } else { var componentType = BatchOperateWholeGeometrySystem$Wonderjs.getAccessorComponentType(sceneAssetBundleContent, accessor); var match$1 = BatchOperateWholeGeometrySystem$Wonderjs.getBufferIndex16Data(componentType, accessor, dataViewArr, sceneAssetBundleContent); var match$2; if (match$1 !== undefined) { var data = Caml_option.valFromOption(match$1); match$2 = /* tuple */[ TypeArrayUtils$Wonderjs.convertUint16ToUint8(data), Caml_int32.div(data.length, pointSize), /* Index */3 ]; } else { var match$3 = BatchOperateWholeGeometrySystem$Wonderjs.getBufferIndex32Data(componentType, accessor, dataViewArr, sceneAssetBundleContent); if (match$3 !== undefined) { var data$1 = Caml_option.valFromOption(match$3); match$2 = /* tuple */[ TypeArrayUtils$Wonderjs.convertUint32ToUint8(data$1), Caml_int32.div(data$1.length, pointSize), /* Index32 */4 ]; } else { match$2 = Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("_buildGeometryIndexBufferData", "unknown componentType: " + (String(componentType) + ""), "", "", "")); } } var uint8Array = match$2[0]; var byteLength = uint8Array.byteLength; var alignedByteLength = BufferUtils$Wonderjs.alignedLength(byteLength); var match$4 = GenerateCommon$Wonderjs.buildBufferViewData(byteOffset, byteLength); var byteOffset$1 = match$4[1]; return /* tuple */[ accessorArr.length, ArrayService$Wonderjs.push(_buildAccessorData(bufferViewArr, param$1[0], match$2[1], match$2[2]), accessorArr), ArrayService$Wonderjs.push(/* record */[ /* buffer */match$4[0], /* byteOffset */byteOffset$1, /* byteLength */match$4[2], /* byteStride */match$4[3] ], bufferViewArr), byteOffset$1 + alignedByteLength | 0, ArrayService$Wonderjs.push(uint8Array, uint8ArrayArr) ]; } } function _buildGeometryAllAttributeBufferData(param, dataViewArr, sceneAssetBundleContent, param$1, param$2) { var imageBufferViewIndex = param$2[0]; var allRabGeometryNameMap = param[3]; var dependencyRelation = param[2]; var sabRelativePath = param[1]; var name = param[0]; var match = BuildGeometryDataUtils$Wonderjs.getPointSize(/* () */0); var match$1 = _buildGeometryAttributeBufferData(/* tuple */[ name, sabRelativePath, dependencyRelation, allRabGeometryNameMap ], dataViewArr, /* tuple */[ /* Vertex */0, match[0] ], sceneAssetBundleContent, /* tuple */[ ABBufferViewUtils$Wonderjs.isNoneAccessorIndex, ABBufferViewUtils$Wonderjs.buildNoneBufferViewIndex, (function (accessor) { return accessor; }), (function (accessor) { return accessor; }) ], /* tuple */[ imageBufferViewIndex, param$1[0], param$2[1], param$2[2], param$2[3], param$2[4] ]); var match$2 = _buildGeometryAttributeBufferData(/* tuple */[ name, sabRelativePath, dependencyRelation, allRabGeometryNameMap ], dataViewArr, /* tuple */[ /* Normal */1, match[1] ], sceneAssetBundleContent, /* tuple */[ OptionService$Wonderjs.isJsonSerializedValueNone, (function (param) { return undefined; }), OptionService$Wonderjs.unsafeGetJsonSerializedValue, (function (accessor) { return accessor; }) ], /* tuple */[ imageBufferViewIndex, param$1[1], match$1[1], match$1[2], match$1[3], match$1[4] ]); var match$3 = _buildGeometryAttributeBufferData(/* tuple */[ name, sabRelativePath, dependencyRelation, allRabGeometryNameMap ], dataViewArr, /* tuple */[ /* TexCoord */2, match[2] ], sceneAssetBundleContent, /* tuple */[ OptionService$Wonderjs.isJsonSerializedValueNone, (function (param) { return undefined; }), OptionService$Wonderjs.unsafeGetJsonSerializedValue, (function (accessor) { return accessor; }) ], /* tuple */[ imageBufferViewIndex, param$1[2], match$2[1], match$2[2], match$2[3], match$2[4] ]); var match$4 = _buildGeometryIndexBufferData(/* tuple */[ name, sabRelativePath, dependencyRelation, allRabGeometryNameMap ], dataViewArr, match[3], sceneAssetBundleContent, /* tuple */[ imageBufferViewIndex, param$1[3], match$3[1], match$3[2], match$3[3], match$3[4] ]); return /* tuple */[ /* tuple */[ match$1[0], match$2[0], match$3[0], match$4[0] ], /* tuple */[ match$4[1], match$4[2], match$4[3], match$4[4] ] ]; } function _removeGeometryDuplicateBufferData$1(param, param$1, sceneAssetBundleContent, buffer) { var imageAlignedByteLength = param$1[0]; var sabRelativePath = param[2]; var allRabGeometryNameMap = param[1]; var dependencyRelation = param[0]; var imageBufferViewIndex = param$1[1].length; var dataViewArr = /* array */[DataViewCommon$Wonderjs.create(buffer)]; var match = ArrayService$WonderCommonlib.reduceOneParam((function (param, geometryData) { var byteOffset = param[4]; var bufferViewArr = param[3]; var accessorArr = param[2]; var uint8ArrayArr = param[1]; var geometryArr = param[0]; var match = OptionService$Wonderjs.isJsonSerializedValueNone(geometryData); if (match) { return /* tuple */[ ArrayService$Wonderjs.push(undefined, geometryArr), uint8ArrayArr, accessorArr, bufferViewArr, byteOffset ]; } else { var geometry = OptionService$Wonderjs.unsafeGetJsonSerializedValue(geometryData); var match$1 = _buildGeometryAllAttributeBufferData(/* tuple */[ geometry[/* name */0], sabRelativePath, dependencyRelation, allRabGeometryNameMap ], dataViewArr, sceneAssetBundleContent, /* tuple */[ geometry[/* position */1], geometry[/* normal */2], geometry[/* texCoord */3], geometry[/* index */4] ], /* tuple */[ imageBufferViewIndex, accessorArr, bufferViewArr, byteOffset, uint8ArrayArr ]); var match$2 = match$1[1]; var match$3 = match$1[0]; return /* tuple */[ ArrayService$Wonderjs.push(/* record */[ /* name */geometry[/* name */0], /* position */match$3[0], /* normal */match$3[1], /* texCoord */match$3[2], /* index */match$3[3] ], geometryArr), match$2[3], match$2[0], match$2[1], match$2[2] ]; } }), /* tuple */[ /* array */[], /* array */[], /* array */[], /* array */[], imageAlignedByteLength ], sceneAssetBundleContent[/* geometrys */18]); var bufferViewArr = match[3]; var match$1 = bufferViewArr.length === 0; return /* tuple */[ match[0], match[1], match[2], bufferViewArr, match$1 ? imageAlignedByteLength : SABUtils$Wonderjs.computeBufferViewDataByteLength(bufferViewArr) ]; } function removeSABDuplicateBufferData(dependencyRelation, param, param$1) { var sabRelativePath = param$1[0]; var match = BufferUtils$Wonderjs.decodeWDB(param$1[1], AssembleWholeWDBSystem$Wonderjs.checkWDB); var buffer = match[2]; var sceneAssetBundleContent = JSON.parse(match[0]); var match$1 = _removeImageDuplicateBufferData$1(/* tuple */[ dependencyRelation, param[0], sabRelativePath ], sceneAssetBundleContent, buffer); var imageBufferViewArr = match$1[1]; var imageArr = match$1[0]; var match$2 = _removeGeometryDuplicateBufferData$1(/* tuple */[ dependencyRelation, param[1], sabRelativePath ], /* tuple */[ match$1[3], imageBufferViewArr ], sceneAssetBundleContent, buffer); var geometryBufferViewArr = match$2[3]; var newrecord = Caml_array.caml_array_dup(sceneAssetBundleContent); var match$3 = imageArr.length === 0; newrecord[/* images */4] = match$3 ? undefined : imageArr; var jsonUint8Array = BuildSingleSABJsonDataSystem$Wonderjs.buildJsonUint8Array((newrecord[/* bufferViews */9] = imageBufferViewArr.concat(geometryBufferViewArr), newrecord[/* accessors */10] = match$2[2], newrecord[/* geometrys */18] = match$2[0], newrecord)); return GenerateSingleSABSystem$Wonderjs.generateSAB(/* tuple */[ /* tuple */[ imageBufferViewArr, geometryBufferViewArr ], match$1[2].map((function (arrayBuffer) { return new Uint8Array(arrayBuffer); })), match$2[1] ], match$2[4], jsonUint8Array); } var SAB = /* module */[ /* _getArrayBufferFromBufferViews */_getArrayBufferFromBufferViews, /* _addImageBufferData */_addImageBufferData, /* _removeImageDuplicateBufferData */_removeImageDuplicateBufferData$1, /* _buildAccessorData */_buildAccessorData, /* _buildGeometryAttributeBufferData */_buildGeometryAttributeBufferData, /* _buildGeometryIndexBufferData */_buildGeometryIndexBufferData, /* _buildGeometryAllAttributeBufferData */_buildGeometryAllAttributeBufferData, /* _removeGeometryDuplicateBufferData */_removeGeometryDuplicateBufferData$1, /* removeSABDuplicateBufferData */removeSABDuplicateBufferData ]; function removeDuplicateBufferData(dependencyRelation, param, param$1) { var allRabGeometryNameMap = param[1]; var allRabImageNameMap = param[0]; return /* tuple */[ param$1[0].map((function (data) { return /* tuple */[ data[0], removeSABDuplicateBufferData(dependencyRelation, /* tuple */[ allRabImageNameMap, allRabGeometryNameMap ], data) ]; })), param$1[1].map((function (data) { return /* tuple */[ data[0], removeRABDuplicateBufferData(dependencyRelation, /* tuple */[ allRabImageNameMap, allRabGeometryNameMap ], data) ]; })) ]; } exports.All = All; exports.RAB = RAB; exports.SAB = SAB; exports.removeDuplicateBufferData = removeDuplicateBufferData; /* Log-WonderLog Not a pure module */