UNPKG

wonder.js

Version:
270 lines (261 loc) 11.3 kB
'use strict'; 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("../utils/ImageUtils.js"); var BufferUtils$Wonderjs = require("../utils/BufferUtils.js"); var ArrayService$Wonderjs = require("../../service/atom/ArrayService.js"); var StateDataMain$Wonderjs = require("../../service/state/main/data/StateDataMain.js"); var IsDebugMainService$Wonderjs = require("../../service/state/main/state/IsDebugMainService.js"); var BuildTextureDataUtils$Wonderjs = require("./utils/BuildTextureDataUtils.js"); var SkyboxSceneMainService$Wonderjs = require("../../service/state/main/scene/SkyboxSceneMainService.js"); var NameCubemapTextureMainService$Wonderjs = require("../../service/state/main/texture/cubemap/NameCubemapTextureMainService.js"); var OperateCubemapTextureMainService$Wonderjs = require("../../service/state/main/texture/cubemap/OperateCubemapTextureMainService.js"); function _addSamplerData(texture, state, samplerDataArr) { var wrapS = OperateCubemapTextureMainService$Wonderjs.getWrapS(texture, state); var wrapT = OperateCubemapTextureMainService$Wonderjs.getWrapT(texture, state); var magFilter = OperateCubemapTextureMainService$Wonderjs.getMagFilter(texture, state); var minFilter = OperateCubemapTextureMainService$Wonderjs.getMinFilter(texture, state); return /* tuple */[ samplerDataArr.length, ArrayService$Wonderjs.push(/* record */[ /* wrapS */BuildTextureDataUtils$Wonderjs.getWrapData(wrapS), /* wrapT */BuildTextureDataUtils$Wonderjs.getWrapData(wrapT), /* magFilter */BuildTextureDataUtils$Wonderjs.getFilterData(magFilter), /* minFilter */BuildTextureDataUtils$Wonderjs.getFilterData(minFilter) ], samplerDataArr) ]; } function _getImageUint8ArrayData(texture, source, getResultUint8ArrayDataFunc) { var imageBase64 = BuildTextureDataUtils$Wonderjs.getImageBase64(source); var mimeType = BufferUtils$Wonderjs.getBase64MimeType(imageBase64); var imageUint8Array = BufferUtils$Wonderjs.convertBase64ToBinary(imageBase64); var imageResultUint8Array = Curry._1(getResultUint8ArrayDataFunc, imageUint8Array); var imageResultUint8ArrayByteLength = imageResultUint8Array.byteLength; var imageResultUint8ArrayAlignedByteLength = BufferUtils$Wonderjs.alignedLength(imageResultUint8ArrayByteLength); return /* tuple */[ mimeType, imageUint8Array, /* tuple */[ imageResultUint8Array, imageResultUint8ArrayByteLength, imageResultUint8ArrayAlignedByteLength ] ]; } function _addOneFaceImageData(oneFaceSource, param, imageUint8DataArr, param$1, getResultUint8ArrayDataFunc) { var bufferViewDataArr = param$1[2]; var byteOffset = param$1[1]; Contract$WonderLog.requireCheck((function (param) { return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("byteOffset aligned with multiple of 4", "not"), (function (param) { return Contract$WonderLog.Operators[/* = */0](byteOffset % 4, 0); })); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); var imageIndex = imageUint8DataArr.length; var match = _getImageUint8ArrayData(param[0], oneFaceSource, getResultUint8ArrayDataFunc); var match$1 = match[2]; var imageResultUint8ArrayAlignedByteLength = match$1[2]; return /* tuple */[ imageIndex, ArrayService$Wonderjs.push(/* record */[ /* name */Caml_option.nullable_to_opt(ImageUtils$Wonderjs.getImageName(oneFaceSource)), /* bufferView */bufferViewDataArr.length, /* mimeType */BuildTextureDataUtils$Wonderjs.convertBase64MimeTypeToWDBMimeType(match[0]), /* uint8Array */match$1[0], /* byteOffset */byteOffset ], imageUint8DataArr), /* tuple */[ param$1[0] + imageResultUint8ArrayAlignedByteLength | 0, byteOffset + imageResultUint8ArrayAlignedByteLength | 0, ArrayService$Wonderjs.push(/* record */[ /* buffer */0, /* byteOffset */byteOffset, /* byteLength */match$1[1] ], bufferViewDataArr) ] ]; } function _addImageData(param, imageUint8DataArr, param$1, getResultUint8ArrayDataFunc) { var state = param[1]; var texture = param[0]; var match = _addOneFaceImageData(OperateCubemapTextureMainService$Wonderjs.unsafeGetPXSource(texture, state), /* tuple */[ texture, state ], imageUint8DataArr, /* tuple */[ param$1[0], param$1[1], param$1[2] ], getResultUint8ArrayDataFunc); var match$1 = match[2]; var match$2 = _addOneFaceImageData(OperateCubemapTextureMainService$Wonderjs.unsafeGetNXSource(texture, state), /* tuple */[ texture, state ], match[1], /* tuple */[ match$1[0], match$1[1], match$1[2] ], getResultUint8ArrayDataFunc); var match$3 = match$2[2]; var match$4 = _addOneFaceImageData(OperateCubemapTextureMainService$Wonderjs.unsafeGetPYSource(texture, state), /* tuple */[ texture, state ], match$2[1], /* tuple */[ match$3[0], match$3[1], match$3[2] ], getResultUint8ArrayDataFunc); var match$5 = match$4[2]; var match$6 = _addOneFaceImageData(OperateCubemapTextureMainService$Wonderjs.unsafeGetNYSource(texture, state), /* tuple */[ texture, state ], match$4[1], /* tuple */[ match$5[0], match$5[1], match$5[2] ], getResultUint8ArrayDataFunc); var match$7 = match$6[2]; var match$8 = _addOneFaceImageData(OperateCubemapTextureMainService$Wonderjs.unsafeGetPZSource(texture, state), /* tuple */[ texture, state ], match$6[1], /* tuple */[ match$7[0], match$7[1], match$7[2] ], getResultUint8ArrayDataFunc); var match$9 = match$8[2]; var match$10 = _addOneFaceImageData(OperateCubemapTextureMainService$Wonderjs.unsafeGetNZSource(texture, state), /* tuple */[ texture, state ], match$8[1], /* tuple */[ match$9[0], match$9[1], match$9[2] ], getResultUint8ArrayDataFunc); var match$11 = match$10[2]; return /* tuple */[ /* tuple */[ match[0], match$2[0], match$4[0], match$6[0], match$8[0], match$10[0] ], match$10[1], /* tuple */[ match$11[0], match$11[1], match$11[2] ] ]; } function _addTextureData(texture, param, state, textureDataArr) { var match = param[1]; return ArrayService$Wonderjs.push(/* record */[ /* name */NameCubemapTextureMainService$Wonderjs.getName(texture, state), /* sampler */param[0], /* pxSource */match[0], /* nxSource */match[1], /* pySource */match[2], /* nySource */match[3], /* pzSource */match[4], /* nzSource */match[5], /* pxFormat */OperateCubemapTextureMainService$Wonderjs.getPXFormat(texture, state), /* nxFormat */OperateCubemapTextureMainService$Wonderjs.getNXFormat(texture, state), /* pyFormat */OperateCubemapTextureMainService$Wonderjs.getPYFormat(texture, state), /* nyFormat */OperateCubemapTextureMainService$Wonderjs.getNYFormat(texture, state), /* pzFormat */OperateCubemapTextureMainService$Wonderjs.getPZFormat(texture, state), /* nzFormat */OperateCubemapTextureMainService$Wonderjs.getNZFormat(texture, state), /* pxType */OperateCubemapTextureMainService$Wonderjs.getPXType(texture, state), /* nxType */OperateCubemapTextureMainService$Wonderjs.getNXType(texture, state), /* pyType */OperateCubemapTextureMainService$Wonderjs.getPYType(texture, state), /* nyType */OperateCubemapTextureMainService$Wonderjs.getNYType(texture, state), /* pzType */OperateCubemapTextureMainService$Wonderjs.getPZType(texture, state), /* nzType */OperateCubemapTextureMainService$Wonderjs.getNZType(texture, state), /* flipY */OperateCubemapTextureMainService$Wonderjs.getFlipY(texture, state) ], textureDataArr); } function build(isBuildCubemapFromSceneSkybox, cubemapTextureDataArr, samplerDataArr, imageUint8DataArr, param, getResultUint8ArrayDataFunc, state) { var bufferViewDataArr = param[2]; var byteOffset = param[1]; var totalByteLength = param[0]; var match = !isBuildCubemapFromSceneSkybox; if (match) { return /* tuple */[ undefined, /* tuple */[ cubemapTextureDataArr, samplerDataArr, imageUint8DataArr ], /* tuple */[ totalByteLength, byteOffset, bufferViewDataArr ] ]; } else { var match$1 = SkyboxSceneMainService$Wonderjs.getCubemapTexture(state); if (match$1 !== undefined) { var cubemapTexture = match$1; var match$2 = _addSamplerData(cubemapTexture, state, samplerDataArr); var match$3 = _addImageData(/* tuple */[ cubemapTexture, state ], imageUint8DataArr, /* tuple */[ totalByteLength, byteOffset, bufferViewDataArr ], getResultUint8ArrayDataFunc); var match$4 = match$3[2]; var match$5 = match$3[0]; var skyboxCubemapTextureIndex = cubemapTextureDataArr.length; var cubemapTextureDataArr$1 = _addTextureData(cubemapTexture, /* tuple */[ match$2[0], /* tuple */[ match$5[0], match$5[1], match$5[2], match$5[3], match$5[4], match$5[5] ] ], state, cubemapTextureDataArr); return /* tuple */[ skyboxCubemapTextureIndex, /* tuple */[ cubemapTextureDataArr$1, match$2[1], match$3[1] ], /* tuple */[ match$4[0], match$4[1], match$4[2] ] ]; } else { return /* tuple */[ undefined, /* tuple */[ cubemapTextureDataArr, samplerDataArr, imageUint8DataArr ], /* tuple */[ totalByteLength, byteOffset, bufferViewDataArr ] ]; } } } exports._addSamplerData = _addSamplerData; exports._getImageUint8ArrayData = _getImageUint8ArrayData; exports._addOneFaceImageData = _addOneFaceImageData; exports._addImageData = _addImageData; exports._addTextureData = _addTextureData; exports.build = build; /* Log-WonderLog Not a pure module */