UNPKG

wonder.js

Version:
675 lines (643 loc) 42.1 kB
'use strict'; var Most = require("most"); var Curry = require("bs-platform/lib/js/curry.js"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Log$WonderLog = require("wonder-log/lib/js/src/Log.js"); var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js"); var ImageUtils$Wonderjs = require("../../../asset/utils/ImageUtils.js"); var ArrayService$Wonderjs = require("../../../service/atom/ArrayService.js"); var AssembleUtils$Wonderjs = require("../../../asset/utils/AssembleUtils.js"); var OptionService$Wonderjs = require("../../../service/atom/OptionService.js"); var StateDataMain$Wonderjs = require("../../../service/state/main/data/StateDataMain.js"); var DataViewCommon$Wonderjs = require("../../../asset/generate/DataViewCommon.js"); var GenerateABUtils$Wonderjs = require("../../utils/GenerateABUtils.js"); var SerializeService$Wonderjs = require("../../../service/atom/SerializeService.js"); var ABBufferViewUtils$Wonderjs = require("../../all/utils/ABBufferViewUtils.js"); var BatchCreateSystem$Wonderjs = require("../../../asset/assemble/BatchCreateSystem.js"); var HandleIMGUISystem$Wonderjs = require("../../../asset/assemble/HandleIMGUISystem.js"); var ABArrayBufferUtils$Wonderjs = require("../../all/utils/ABArrayBufferUtils.js"); var BatchOperateSystem$Wonderjs = require("../../../asset/assemble/BatchOperateSystem.js"); var IsDebugMainService$Wonderjs = require("../../../service/state/main/state/IsDebugMainService.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var SkyboxCubemapSystem$Wonderjs = require("../../../asset/assemble/SkyboxCubemapSystem.js"); var StateDataMainService$Wonderjs = require("../../../service/state/main/state/StateDataMainService.js"); var AssembleWholeWDBUtils$Wonderjs = require("../../../asset/assemble/utils/AssembleWholeWDBUtils.js"); var BatchOperateWholeSystem$Wonderjs = require("../../../asset/assemble/BatchOperateWholeSystem.js"); var GenerateManifestABUtils$Wonderjs = require("../../all/utils/GenerateManifestABUtils.js"); var NameGeometryMainService$Wonderjs = require("../../../service/state/main/geometry/NameGeometryMainService.js"); var FindDependencyDataSystem$Wonderjs = require("../../all/dependency/FindDependencyDataSystem.js"); var BuildRootGameObjectSystem$Wonderjs = require("../../../asset/assemble/BuildRootGameObjectSystem.js"); var CreateGeometryMainService$Wonderjs = require("../../../service/state/main/geometry/CreateGeometryMainService.js"); var IndicesGeometryMainService$Wonderjs = require("../../../service/state/main/geometry/IndicesGeometryMainService.js"); var NormalsGeometryMainService$Wonderjs = require("../../../service/state/main/geometry/NormalsGeometryMainService.js"); var VerticesGeometryMainService$Wonderjs = require("../../../service/state/main/geometry/VerticesGeometryMainService.js"); var NameBasicMaterialMainService$Wonderjs = require("../../../service/state/main/material/basic/NameBasicMaterialMainService.js"); var NameLightMaterialMainService$Wonderjs = require("../../../service/state/main/material/light/NameLightMaterialMainService.js"); var TexCoordsGeometryMainService$Wonderjs = require("../../../service/state/main/geometry/TexCoordsGeometryMainService.js"); var NameCubemapTextureMainService$Wonderjs = require("../../../service/state/main/texture/cubemap/NameCubemapTextureMainService.js"); var CreateBasicMaterialMainService$Wonderjs = require("../../../service/state/main/material/basic/CreateBasicMaterialMainService.js"); var CreateLightMaterialMainService$Wonderjs = require("../../../service/state/main/material/light/CreateLightMaterialMainService.js"); var ImmutableHashMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ImmutableHashMapService.js"); var BatchOperateWholeGeometrySystem$Wonderjs = require("../../../asset/assemble/BatchOperateWholeGeometrySystem.js"); var CreateCubemapTextureMainService$Wonderjs = require("../../../service/state/main/texture/cubemap/CreateCubemapTextureMainService.js"); var OperateBasicMaterialMainService$Wonderjs = require("../../../service/state/main/material/basic/OperateBasicMaterialMainService.js"); var OperateLightMaterialMainService$Wonderjs = require("../../../service/state/main/material/light/OperateLightMaterialMainService.js"); var ImmutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ImmutableSparseMapService.js"); var OperateCubemapTextureMainService$Wonderjs = require("../../../service/state/main/texture/cubemap/OperateCubemapTextureMainService.js"); var OperateRABAssetBundleMainService$Wonderjs = require("../../../service/state/main/assetBundle/OperateRABAssetBundleMainService.js"); var OperateSABAssetBundleMainService$Wonderjs = require("../../../service/state/main/assetBundle/OperateSABAssetBundleMainService.js"); var NameBasicSourceTextureMainService$Wonderjs = require("../../../service/state/main/texture/source/basic_source/NameBasicSourceTextureMainService.js"); var BatchSetCubemapTextureAllDataSystem$Wonderjs = require("../../../asset/assemble/BatchSetCubemapTextureAllDataSystem.js"); var CreateBasicSourceTextureMainService$Wonderjs = require("../../../service/state/main/texture/source/basic_source/CreateBasicSourceTextureMainService.js"); var OperateBasicSourceTextureMainService$Wonderjs = require("../../../service/state/main/texture/source/basic_source/OperateBasicSourceTextureMainService.js"); var BatchAddGameObjectComponentMainService$Wonderjs = require("../../../service/state/main/gameObject/BatchAddGameObjectComponentMainService.js"); var BatchSetBasicSourceTextureAllDataSystem$Wonderjs = require("../../../asset/assemble/BatchSetBasicSourceTextureAllDataSystem.js"); var BatchSetWholeCubemapTextureAllDataSystem$Wonderjs = require("../../../asset/assemble/BatchSetWholeCubemapTextureAllDataSystem.js"); var BatchSetWholeBasicSourceTextureAllDataSystem$Wonderjs = require("../../../asset/assemble/BatchSetWholeBasicSourceTextureAllDataSystem.js"); function getContentData(ab) { var dataView = DataViewCommon$Wonderjs.create(ab); var match = GenerateManifestABUtils$Wonderjs.RABAndSAB[/* readHeader */0](dataView); var contentArrayBuffer = GenerateManifestABUtils$Wonderjs.RABAndSAB[/* getContentBuffer */1](match[1], ab); var contentDataView = DataViewCommon$Wonderjs.create(contentArrayBuffer); var match$1 = GenerateABUtils$Wonderjs.readHeader(contentDataView); var jsonByteLength = match$1[1]; var jsonStr = GenerateABUtils$Wonderjs.getJsonStr(jsonByteLength, contentArrayBuffer); var buffer = GenerateABUtils$Wonderjs.getBuffer(jsonByteLength, contentArrayBuffer); return /* tuple */[ JSON.parse(jsonStr), buffer ]; } var All = /* module */[/* getContentData */getContentData]; function _isImageBufferDataDependencyAndRemoved(param) { return ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(param[/* bufferView */1]); } function _buildImageArray(param, binBuffer, allDependencyRABRelativePath, state) { var bufferViews = param[/* bufferViews */9]; var images = param[/* images */4]; var blobObjectUrlImageArr = /* array */[]; var match = OptionService$Wonderjs.isJsonSerializedValueNone(images); if (match) { return Promise.resolve(blobObjectUrlImageArr); } else { return Most.drain(Most.mergeArray(ArrayService$Wonderjs.reduceOneParamValidi((function (streamArr, imageData, imageIndex) { var name = imageData[/* name */0]; var match = _isImageBufferDataDependencyAndRemoved(imageData); var tmp; if (match) { tmp = Most.just(OperateRABAssetBundleMainService$Wonderjs.unsafeFindDataInAllDependencyRABByName(allDependencyRABRelativePath, name, state, OperateRABAssetBundleMainService$Wonderjs.findImageByName)); } else { var arrayBuffer = ABArrayBufferUtils$Wonderjs.SAB[/* getArrayBufferFromBufferViews */0](binBuffer, imageData[/* bufferView */1], bufferViews); tmp = Most.map((function (image) { return image; }), Most.tap((function (image) { return ImageUtils$Wonderjs.setImageName(image, name); }), AssembleUtils$Wonderjs.buildLoadImageStream(arrayBuffer, imageData[/* mimeType */2], "load image error. imageName: " + (String(name) + "")))); } return ArrayService$Wonderjs.push(Most.tap((function (image) { blobObjectUrlImageArr[imageIndex] = image; return /* () */0; }), tmp), streamArr); }), /* array */[], OptionService$Wonderjs.unsafeGetJsonSerializedValue(images)))).then((function (param) { return Promise.resolve(blobObjectUrlImageArr); })); } } function _isGeometryBufferDataDependencyAndRemoved(param) { if (ABBufferViewUtils$Wonderjs.isNoneAccessorIndex(param[/* position */1]) && OptionService$Wonderjs.isJsonSerializedValueNone(param[/* normal */2]) && OptionService$Wonderjs.isJsonSerializedValueNone(param[/* texCoord */3])) { return ABBufferViewUtils$Wonderjs.isNoneAccessorIndex(param[/* index */4]); } else { return false; } } function _replaceCreatedGeometryToDependencyGeometry(param, param$1, state, createdGeometryArr) { var allDependencyRABRelativePath = param$1[1]; return ArrayService$WonderCommonlib.reduceOneParami((function (geometryArr, geometryData, geometryIndex) { var match = OptionService$Wonderjs.isJsonSerializedValueNone(geometryData); var geometry; if (match) { geometry = createdGeometryArr[geometryIndex]; } else { var geometryData$1 = OptionService$Wonderjs.unsafeGetJsonSerializedValue(geometryData); var match$1 = _isGeometryBufferDataDependencyAndRemoved(geometryData$1); geometry = match$1 ? OperateRABAssetBundleMainService$Wonderjs.unsafeFindDataInAllDependencyRABByName(allDependencyRABRelativePath, geometryData$1[/* name */0], state, OperateRABAssetBundleMainService$Wonderjs.findGeometryByName) : createdGeometryArr[geometryIndex]; } return ArrayService$Wonderjs.push(geometry, geometryArr); }), ArrayService$WonderCommonlib.createEmpty(/* () */0), param[/* geometrys */18]); } function _checkDependencyGeometryShouldHasVertices(geometryArr, geometryIndex, state) { return Contract$WonderLog.requireCheck((function (param) { return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("dependency geometry has vertices", "not"), (function (param) { var geometry = geometryArr[geometryIndex]; return Contract$WonderLog.assertTrue(VerticesGeometryMainService$Wonderjs.hasVertices(geometry, state)); })); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); } function _batchSetGeometryData(sceneAssetBundleContent, geometryArr, bufferArr, state) { var dataViewArr = bufferArr.map(DataViewCommon$Wonderjs.create); return ArrayService$WonderCommonlib.reduceOneParami((function (state, geometryData, geometryIndex) { var match = OptionService$Wonderjs.isJsonSerializedValueNone(geometryData); if (match) { return state; } else { var geometryData$1 = OptionService$Wonderjs.unsafeGetJsonSerializedValue(geometryData); var match$1 = _isGeometryBufferDataDependencyAndRemoved(geometryData$1); if (match$1) { _checkDependencyGeometryShouldHasVertices(geometryArr, geometryIndex, state); return state; } else { var geometry = geometryArr[geometryIndex]; return BatchOperateWholeGeometrySystem$Wonderjs.setGeometryData(geometry, sceneAssetBundleContent, dataViewArr, geometryData$1, state); } } }), state, sceneAssetBundleContent[/* geometrys */18]); } function _batchOperate(sceneAssetBundleContent, blobObjectUrlImageArr, bufferArr, param) { var match = param[3]; var cubemapTextureArr = match[1]; var basicSourceTextureArr = match[0]; var match$1 = param[2]; var scriptArr = match$1[11]; var pointLightArr = match$1[10]; var directionLightArr = match$1[9]; var lightMaterialArr = match$1[8]; var basicMaterialArr = match$1[7]; var arcballCameraControllerArr = match$1[6]; var flyCameraControllerArr = match$1[5]; var perspectiveCameraProjectionArr = match$1[4]; var basicCameraViewArr = match$1[3]; var meshRendererArr = match$1[2]; var geometryArr = match$1[1]; var transformArr = match$1[0]; var gameObjectArr = param[1]; var state = BatchOperateSystem$Wonderjs.batchSetNamesAndGameObjectIsActiveAndIsRoot(sceneAssetBundleContent, /* tuple */[ param[0], gameObjectArr, /* tuple */[ transformArr, geometryArr ], /* tuple */[ basicSourceTextureArr, cubemapTextureArr ] ]); var match$2 = BatchOperateSystem$Wonderjs.getBatchComponentGameObjectData(/* tuple */[ gameObjectArr, transformArr, geometryArr, meshRendererArr, basicCameraViewArr, perspectiveCameraProjectionArr, flyCameraControllerArr, arcballCameraControllerArr, basicMaterialArr, lightMaterialArr, directionLightArr, pointLightArr, scriptArr ], sceneAssetBundleContent[/* indices */2], sceneAssetBundleContent, state); var match$3 = match$2[0]; var gameObjectGeometrys = match$3[5]; var geometryGameObjects = match$3[4]; var gameObjectTransforms = match$3[3]; var state$1 = BatchSetCubemapTextureAllDataSystem$Wonderjs.batchSetFormatAndTypeAndFlipY(cubemapTextureArr, sceneAssetBundleContent[/* cubemapTextures */6], BatchSetBasicSourceTextureAllDataSystem$Wonderjs.batchSetFormatAndTypeAndFlipY(basicSourceTextureArr, sceneAssetBundleContent[/* basicSourceTextures */5], match$2[1])); var basicSourceTextureData = BatchOperateWholeSystem$Wonderjs.getBatchAllTypeBasicSourceTextureData(lightMaterialArr, basicSourceTextureArr, blobObjectUrlImageArr, sceneAssetBundleContent); var cubemapTextureData = BatchOperateWholeSystem$Wonderjs.getBatchAllTypeCubemapTextureData(cubemapTextureArr, blobObjectUrlImageArr, sceneAssetBundleContent); return /* tuple */[ BatchSetWholeCubemapTextureAllDataSystem$Wonderjs.batchSet(cubemapTextureData, BatchSetWholeBasicSourceTextureAllDataSystem$Wonderjs.batchSet(basicSourceTextureData, _batchSetGeometryData(sceneAssetBundleContent, geometryArr, bufferArr, BatchOperateSystem$Wonderjs.batchSetComponentData(sceneAssetBundleContent, /* tuple */[ true, true ], /* tuple */[ transformArr, geometryArr, meshRendererArr, basicCameraViewArr, perspectiveCameraProjectionArr, flyCameraControllerArr, arcballCameraControllerArr, basicMaterialArr, lightMaterialArr, directionLightArr, pointLightArr, scriptArr ], /* tuple */[ match$3[0], match$3[1], gameObjectTransforms ], BatchAddGameObjectComponentMainService$Wonderjs.batchAddGeometryComponentForCreate(geometryGameObjects, gameObjectGeometrys, BatchOperateSystem$Wonderjs.batchAddComponent(sceneAssetBundleContent, /* tuple */[ match$3[2], gameObjectTransforms, geometryGameObjects, gameObjectGeometrys, match$3[6], match$3[7], match$3[8], match$3[9], match$3[10], match$3[11], match$3[12], match$3[13], match$3[14], match$3[15], match$3[16], match$3[17], match$3[18], match$3[19], match$3[20], match$3[21], match$3[22], match$3[23], match$3[24], match$3[25] ], state$1)))))), gameObjectArr ]; } function assemble(sabRelativePath, sab, wholeDependencyRelationMap) { var allDependencyRABRelativePath = FindDependencyDataSystem$Wonderjs.findAllDependencyRABRelativePathByDepthSearch(sabRelativePath, wholeDependencyRelationMap); var match = getContentData(sab); var binBuffer = match[1]; var sceneAssetBundleContent = match[0]; var resultData = /* record */[/* contents */-1]; return Most.map((function (param) { var state = StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData); var blobObjectUrlImageArr = resultData[0]; var match = BatchCreateSystem$Wonderjs.batchCreate(true, sceneAssetBundleContent, state); var match$1 = match[3]; var cubemapTextureArr = match$1[1]; var match$2 = match[2]; var state$1 = match[0]; var geometryArr = _replaceCreatedGeometryToDependencyGeometry(sceneAssetBundleContent, /* tuple */[ binBuffer, allDependencyRABRelativePath ], state$1, match$2[1]); var match$3 = _batchOperate(sceneAssetBundleContent, blobObjectUrlImageArr, AssembleWholeWDBUtils$Wonderjs.buildBufferArray(sceneAssetBundleContent[/* buffers */8], binBuffer), /* tuple */[ state$1, match[1], /* tuple */[ match$2[0], geometryArr, match$2[2], match$2[3], match$2[4], match$2[5], match$2[6], match$2[7], match$2[8], match$2[9], match$2[10], match$2[11] ], /* tuple */[ match$1[0], cubemapTextureArr ] ]); var match$4 = BuildRootGameObjectSystem$Wonderjs.build(sceneAssetBundleContent, /* tuple */[ match$3[0], match$3[1] ]); var state$2 = OperateSABAssetBundleMainService$Wonderjs.markAssembled(sabRelativePath, match$4[0]); var skyboxCubemap = SkyboxCubemapSystem$Wonderjs.getSkyboxCubemap(sceneAssetBundleContent, cubemapTextureArr, state$2); StateDataMainService$Wonderjs.setState(StateDataMain$Wonderjs.stateData, state$2); return /* tuple */[ match$4[1], skyboxCubemap ]; }), Most.fromPromise(Most.drain(Most.merge(HandleIMGUISystem$Wonderjs.handleIMGUI(true, sceneAssetBundleContent, binBuffer, StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData)), Most.fromPromise(_buildImageArray(sceneAssetBundleContent, binBuffer, allDependencyRABRelativePath, StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData)).then((function (blobObjectUrlImageArr) { resultData[0] = blobObjectUrlImageArr; return Promise.resolve(/* () */0); }))))))); } var SAB = /* module */[ /* _isImageBufferDataDependencyAndRemoved */_isImageBufferDataDependencyAndRemoved, /* _buildImageArray */_buildImageArray, /* _isGeometryBufferDataDependencyAndRemoved */_isGeometryBufferDataDependencyAndRemoved, /* _replaceCreatedGeometryToDependencyGeometry */_replaceCreatedGeometryToDependencyGeometry, /* _checkDependencyGeometryShouldHasVertices */_checkDependencyGeometryShouldHasVertices, /* _batchSetGeometryData */_batchSetGeometryData, /* _batchOperate */_batchOperate, /* assemble */assemble ]; function _isImageBufferDataDependencyAndRemoved$1(param) { return ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(param[/* bufferView */1]); } function _buildImageData(param, buffer, allDependencyRABRelativePath, state) { var bufferViews = param[/* bufferViews */8]; return Most.reduce((function (param, param$1) { var image = param$1[0]; return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(param$1[2], image, param[0]), ImmutableSparseMapService$WonderCommonlib.set(param$1[1], image, param[1]) ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), ImmutableSparseMapService$WonderCommonlib.createEmpty(/* () */0) ], Most.mergeArray(ArrayService$WonderCommonlib.reduceOneParami((function (streamArr, imageData, imageIndex) { var name = imageData[/* name */0]; var match = _isImageBufferDataDependencyAndRemoved$1(imageData); var tmp; if (match) { tmp = Most.just(OperateRABAssetBundleMainService$Wonderjs.unsafeFindDataInAllDependencyRABByName(allDependencyRABRelativePath, name, state, OperateRABAssetBundleMainService$Wonderjs.findImageByName)); } else { var arrayBuffer = ABArrayBufferUtils$Wonderjs.RAB[/* getArrayBufferFromBufferViews */0](buffer, imageData[/* bufferView */1], bufferViews); tmp = Most.map((function (image) { ImageUtils$Wonderjs.setImageName(image, name); return image; }), AssembleUtils$Wonderjs.buildLoadImageStream(arrayBuffer, imageData[/* mimeType */2], "load image error. imageName: " + (String(name) + ""))); } return ArrayService$Wonderjs.push(Most.map((function (image) { return /* tuple */[ image, imageIndex, name ]; }), tmp), streamArr); }), /* array */[], param[/* images */2]))); } function _buildBasicSourceTextureData(param, imageMapByIndex, state) { return ArrayService$WonderCommonlib.reduceOneParami((function (param, param$1, textureIndex) { var name = param$1[/* name */0]; var match = CreateBasicSourceTextureMainService$Wonderjs.create(param[2]); var texture = match[1]; var state = OperateBasicSourceTextureMainService$Wonderjs.setSource(texture, ImmutableSparseMapService$WonderCommonlib.unsafeGet(param$1[/* source */1], imageMapByIndex), NameBasicSourceTextureMainService$Wonderjs.setName(texture, name, OperateBasicSourceTextureMainService$Wonderjs.setFlipY(texture, param$1[/* flipY */8], OperateBasicSourceTextureMainService$Wonderjs.setType(texture, param$1[/* type_ */7], OperateBasicSourceTextureMainService$Wonderjs.setFormat(texture, param$1[/* format */6], OperateBasicSourceTextureMainService$Wonderjs.setMinFilter(texture, param$1[/* minFilter */3], OperateBasicSourceTextureMainService$Wonderjs.setMagFilter(texture, param$1[/* magFilter */2], OperateBasicSourceTextureMainService$Wonderjs.setWrapT(texture, param$1[/* wrapT */5], OperateBasicSourceTextureMainService$Wonderjs.setWrapS(texture, param$1[/* wrapS */4], match[0]))))))))); return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(name, texture, param[0]), ImmutableSparseMapService$WonderCommonlib.set(textureIndex, texture, param[1]), state ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), ImmutableSparseMapService$WonderCommonlib.createEmpty(/* () */0), state ], param[/* basicSourceTextures */0]); } function _setFaceSource(texture, imageMapByIndex, faceSource, setFaceSourceFunc, state) { if (faceSource !== undefined) { return Curry._3(setFaceSourceFunc, texture, ImmutableSparseMapService$WonderCommonlib.unsafeGet(faceSource, imageMapByIndex), state); } else { return state; } } function _buildCubemapTextureData(param, imageMapByIndex, state) { return ArrayService$WonderCommonlib.reduceOneParami((function (param, param$1, textureIndex) { var name = param$1[/* name */0]; var match = CreateCubemapTextureMainService$Wonderjs.create(param[2]); var texture = match[1]; var state = _setFaceSource(texture, imageMapByIndex, param$1[/* nzSource */11], OperateCubemapTextureMainService$Wonderjs.setNZSource, _setFaceSource(texture, imageMapByIndex, param$1[/* pzSource */10], OperateCubemapTextureMainService$Wonderjs.setPZSource, _setFaceSource(texture, imageMapByIndex, param$1[/* nySource */9], OperateCubemapTextureMainService$Wonderjs.setNYSource, _setFaceSource(texture, imageMapByIndex, param$1[/* pySource */8], OperateCubemapTextureMainService$Wonderjs.setPYSource, _setFaceSource(texture, imageMapByIndex, param$1[/* nxSource */7], OperateCubemapTextureMainService$Wonderjs.setNXSource, _setFaceSource(texture, imageMapByIndex, param$1[/* pxSource */6], OperateCubemapTextureMainService$Wonderjs.setPXSource, NameCubemapTextureMainService$Wonderjs.setName(texture, name, OperateCubemapTextureMainService$Wonderjs.setFlipY(texture, param$1[/* flipY */5], OperateCubemapTextureMainService$Wonderjs.setNZType(texture, param$1[/* nzType */23], OperateCubemapTextureMainService$Wonderjs.setPZType(texture, param$1[/* pzType */22], OperateCubemapTextureMainService$Wonderjs.setNYType(texture, param$1[/* nyType */21], OperateCubemapTextureMainService$Wonderjs.setPYType(texture, param$1[/* pyType */20], OperateCubemapTextureMainService$Wonderjs.setNXType(texture, param$1[/* nxType */19], OperateCubemapTextureMainService$Wonderjs.setPXType(texture, param$1[/* pxType */18], OperateCubemapTextureMainService$Wonderjs.setNZFormat(texture, param$1[/* nzFormat */17], OperateCubemapTextureMainService$Wonderjs.setPZFormat(texture, param$1[/* pzFormat */16], OperateCubemapTextureMainService$Wonderjs.setNYFormat(texture, param$1[/* nyFormat */15], OperateCubemapTextureMainService$Wonderjs.setPYFormat(texture, param$1[/* pyFormat */14], OperateCubemapTextureMainService$Wonderjs.setNXFormat(texture, param$1[/* nxFormat */13], OperateCubemapTextureMainService$Wonderjs.setPXFormat(texture, param$1[/* pxFormat */12], OperateCubemapTextureMainService$Wonderjs.setMinFilter(texture, param$1[/* minFilter */2], OperateCubemapTextureMainService$Wonderjs.setMagFilter(texture, param$1[/* magFilter */1], OperateCubemapTextureMainService$Wonderjs.setWrapT(texture, param$1[/* wrapT */4], OperateCubemapTextureMainService$Wonderjs.setWrapS(texture, param$1[/* wrapS */3], match[0])))))))))))))))))))))))); return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(name, texture, param[0]), ImmutableSparseMapService$WonderCommonlib.set(textureIndex, texture, param[1]), state ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), ImmutableSparseMapService$WonderCommonlib.createEmpty(/* () */0), state ], param[/* cubemapTextures */1]); } function _buildBasicMaterialData(basicMaterials, state) { return ArrayService$WonderCommonlib.reduceOneParam((function (param, param$1) { var name = param$1[/* name */0]; var match = CreateBasicMaterialMainService$Wonderjs.create(param[1]); var material = match[1]; var state = OperateBasicMaterialMainService$Wonderjs.setColor(material, param$1[/* color */1], NameBasicMaterialMainService$Wonderjs.setName(material, name, match[0])); return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(name, material, param[0]), state ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), state ], basicMaterials); } function _buildLightMaterialData(lightMaterials, basicSourceTextureMapByIndex, state) { return ArrayService$WonderCommonlib.reduceOneParam((function (param, param$1) { var diffuseMap = param$1[/* diffuseMap */2]; var name = param$1[/* name */0]; var match = CreateLightMaterialMainService$Wonderjs.create(param[1]); var material = match[1]; var state = OperateLightMaterialMainService$Wonderjs.setShininess(material, param$1[/* shininess */3], OperateLightMaterialMainService$Wonderjs.setDiffuseColor(material, param$1[/* diffuseColor */1], NameLightMaterialMainService$Wonderjs.setName(material, name, match[0]))); var match$1 = OptionService$Wonderjs.isJsonSerializedValueNone(diffuseMap); var state$1; if (match$1) { state$1 = state; } else { var diffuseMap$1 = OptionService$Wonderjs.unsafeGetJsonSerializedValue(diffuseMap); state$1 = OperateLightMaterialMainService$Wonderjs.setDiffuseMap(material, ImmutableSparseMapService$WonderCommonlib.unsafeGet(diffuseMap$1, basicSourceTextureMapByIndex), state); } return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(name, material, param[0]), state$1 ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), state ], lightMaterials); } function _buildMaterialData(param, basicSourceTextureMapByIndex, state) { var match = _buildBasicMaterialData(param[/* basicMaterials */3], state); var match$1 = _buildLightMaterialData(param[/* lightMaterials */4], basicSourceTextureMapByIndex, match[1]); return /* tuple */[ match[0], match$1[0], match$1[1] ]; } function _isGeometryBufferDataDependencyAndRemoved$1(param) { if (ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(param[/* vertexBufferView */2]) && ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(param[/* normalBufferView */3]) && ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(param[/* texCoordBufferView */4])) { return ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(param[/* indexBufferView */5]); } else { return false; } } function _setGeometryDataFromBuffer(geometry, param, param$1, state) { var bufferView = param[1]; var match = ABBufferViewUtils$Wonderjs.isNoneBufferViewIndex(bufferView); var arrayBuffer = match ? new ArrayBuffer(0) : ABArrayBufferUtils$Wonderjs.RAB[/* getArrayBufferFromBufferViews */0](param[0], bufferView, param[2]); return Curry._3(param$1[1], geometry, Curry._1(param$1[0], arrayBuffer), state); } function _setGeometryAllPointDataFromBuffer(geometry, param, indexDataType, state) { var bufferViews = param[2]; var match = param[1]; var buffer = param[0]; var state$1 = _setGeometryDataFromBuffer(geometry, /* tuple */[ buffer, match[0], bufferViews ], /* tuple */[ (function (prim) { return new Float32Array(prim); }), VerticesGeometryMainService$Wonderjs.setVerticesByTypeArray ], state); var state$2 = _setGeometryDataFromBuffer(geometry, /* tuple */[ buffer, match[1], bufferViews ], /* tuple */[ (function (prim) { return new Float32Array(prim); }), NormalsGeometryMainService$Wonderjs.setNormalsByTypeArray ], state$1); var state$3 = _setGeometryDataFromBuffer(geometry, /* tuple */[ buffer, match[2], bufferViews ], /* tuple */[ (function (prim) { return new Float32Array(prim); }), TexCoordsGeometryMainService$Wonderjs.setTexCoordsByTypeArray ], state$2); return _setGeometryDataFromBuffer(geometry, /* tuple */[ buffer, match[3], bufferViews ], indexDataType ? /* tuple */[ (function (prim) { return new Uint32Array(prim); }), IndicesGeometryMainService$Wonderjs.setIndicesByUint32Array ] : /* tuple */[ (function (prim) { return new Uint16Array(prim); }), IndicesGeometryMainService$Wonderjs.setIndicesByUint16Array ], state$3); } function _buildGeometryData(param, allDependencyRABRelativePath, buffer, state) { var bufferViews = param[/* bufferViews */8]; return ArrayService$WonderCommonlib.reduceOneParam((function (param, geometryData) { var name = geometryData[/* name */0]; var state = param[1]; var match = _isGeometryBufferDataDependencyAndRemoved$1(geometryData); var match$1; if (match) { match$1 = /* tuple */[ state, OperateRABAssetBundleMainService$Wonderjs.unsafeFindDataInAllDependencyRABByName(allDependencyRABRelativePath, name, state, OperateRABAssetBundleMainService$Wonderjs.findGeometryByName) ]; } else { var match$2 = CreateGeometryMainService$Wonderjs.create(state); var geometry = match$2[1]; var state$1 = NameGeometryMainService$Wonderjs.setName(geometry, name, match$2[0]); var state$2 = _setGeometryAllPointDataFromBuffer(geometry, /* tuple */[ buffer, /* tuple */[ geometryData[/* vertexBufferView */2], geometryData[/* normalBufferView */3], geometryData[/* texCoordBufferView */4], geometryData[/* indexBufferView */5] ], bufferViews ], geometryData[/* indexDataType */1], state$1); match$1 = /* tuple */[ state$2, geometry ]; } return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(name, match$1[1], param[0]), match$1[0] ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), state ], param[/* geometrys */5]); } function convertEventFunctionDataStrToRecord(eventFunctionDataStr) { var match = JSON.parse(eventFunctionDataStr); var dispose = match[/* dispose */2]; var update = match[/* update */1]; var init = match[/* init */0]; var match$1 = OptionService$Wonderjs.isJsonSerializedValueNone(init); var match$2 = OptionService$Wonderjs.isJsonSerializedValueNone(update); var match$3 = OptionService$Wonderjs.isJsonSerializedValueNone(dispose); return /* record */[ /* init */match$1 ? undefined : Caml_option.some(SerializeService$Wonderjs.deserializeFunction(init)), /* update */match$2 ? undefined : Caml_option.some(SerializeService$Wonderjs.deserializeFunction(update)), /* dispose */match$3 ? undefined : Caml_option.some(SerializeService$Wonderjs.deserializeFunction(dispose)) ]; } function _buildScriptEventFunctionData(param, state) { return ArrayService$WonderCommonlib.reduceOneParam((function (param, param$1) { var eventFunctionData = convertEventFunctionDataStrToRecord(param$1[/* eventFunctionDataStr */1]); return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(param$1[/* name */0], eventFunctionData, param[0]), param[1] ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), state ], param[/* scriptEventFunctions */6]); } function convertAttributeStrToRecord(attributeMapStr) { return JSON.parse(attributeMapStr); } function _buildScriptAttributeData(param, state) { return ArrayService$WonderCommonlib.reduceOneParam((function (param, param$1) { var attribute = JSON.parse(param$1[/* attributeStr */1]); return /* tuple */[ ImmutableHashMapService$WonderCommonlib.set(param$1[/* name */0], attribute, param[0]), param[1] ]; }), /* tuple */[ ImmutableHashMapService$WonderCommonlib.createEmpty(/* () */0), state ], param[/* scriptAttributes */7]); } function assemble$1(rabRelativePath, rab, wholeDependencyRelationMap) { var allDependencyRABRelativePath = FindDependencyDataSystem$Wonderjs.findAllDependencyRABRelativePathByDepthSearch(rabRelativePath, wholeDependencyRelationMap); var match = getContentData(rab); var buffer = match[1]; var resourceAssetBundleContent = match[0]; var state = StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData); return Most.map((function (param) { var imageMapByIndex = param[1]; var state = StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData); var match = _buildBasicSourceTextureData(resourceAssetBundleContent, imageMapByIndex, state); var match$1 = _buildCubemapTextureData(resourceAssetBundleContent, imageMapByIndex, match[2]); var match$2 = _buildMaterialData(resourceAssetBundleContent, match[1], match$1[2]); var match$3 = _buildGeometryData(resourceAssetBundleContent, allDependencyRABRelativePath, buffer, match$2[2]); var match$4 = _buildScriptEventFunctionData(resourceAssetBundleContent, match$3[1]); var match$5 = _buildScriptAttributeData(resourceAssetBundleContent, match$4[1]); var state$1 = OperateRABAssetBundleMainService$Wonderjs.setAssembleRABData(rabRelativePath, /* tuple */[ param[0], match[0], match$1[0], match$2[0], match$2[1], match$3[0], match$4[0], match$5[0] ], match$5[1]); StateDataMainService$Wonderjs.setState(StateDataMain$Wonderjs.stateData, OperateRABAssetBundleMainService$Wonderjs.markAssembled(rabRelativePath, state$1)); return /* () */0; }), Most.fromPromise(_buildImageData(resourceAssetBundleContent, buffer, allDependencyRABRelativePath, state))); } var RAB = /* module */[ /* _isImageBufferDataDependencyAndRemoved */_isImageBufferDataDependencyAndRemoved$1, /* _buildImageData */_buildImageData, /* _buildBasicSourceTextureData */_buildBasicSourceTextureData, /* _setFaceSource */_setFaceSource, /* _buildCubemapTextureData */_buildCubemapTextureData, /* _buildBasicMaterialData */_buildBasicMaterialData, /* _buildLightMaterialData */_buildLightMaterialData, /* _buildMaterialData */_buildMaterialData, /* _isGeometryBufferDataDependencyAndRemoved */_isGeometryBufferDataDependencyAndRemoved$1, /* _setGeometryDataFromBuffer */_setGeometryDataFromBuffer, /* _setGeometryAllPointDataFromBuffer */_setGeometryAllPointDataFromBuffer, /* _buildGeometryData */_buildGeometryData, /* convertEventFunctionDataStrToRecord */convertEventFunctionDataStrToRecord, /* _buildScriptEventFunctionData */_buildScriptEventFunctionData, /* convertAttributeStrToRecord */convertAttributeStrToRecord, /* _buildScriptAttributeData */_buildScriptAttributeData, /* assemble */assemble$1 ]; exports.All = All; exports.SAB = SAB; exports.RAB = RAB; /* most Not a pure module */