wonder.js
Version:
122 lines (115 loc) • 7.09 kB
JavaScript
'use strict';
var Most = require("most");
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 AssembleUtils$Wonderjs = require("../utils/AssembleUtils.js");
var OptionService$Wonderjs = require("../../service/atom/OptionService.js");
var StateDataMain$Wonderjs = require("../../service/state/main/data/StateDataMain.js");
var AssembleCommon$Wonderjs = require("./AssembleCommon.js");
var DataViewCommon$Wonderjs = require("../generate/DataViewCommon.js");
var BatchCreateSystem$Wonderjs = require("./BatchCreateSystem.js");
var HandleIMGUISystem$Wonderjs = require("./HandleIMGUISystem.js");
var IsDebugMainService$Wonderjs = require("../../service/state/main/state/IsDebugMainService.js");
var SkyboxCubemapSystem$Wonderjs = require("./SkyboxCubemapSystem.js");
var StateDataMainService$Wonderjs = require("../../service/state/main/state/StateDataMainService.js");
var AssembleWholeWDBUtils$Wonderjs = require("./utils/AssembleWholeWDBUtils.js");
var BatchOperateWholeSystem$Wonderjs = require("./BatchOperateWholeSystem.js");
var BuildRootGameObjectSystem$Wonderjs = require("./BuildRootGameObjectSystem.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var DisposeGameObjectNotExistInSceneSystem$Wonderjs = require("./DisposeGameObjectNotExistInSceneSystem.js");
function _buildImageArray(isLoadImage, param, binBuffer) {
var bufferViews = param[/* bufferViews */9];
var images = param[/* images */4];
var blobObjectUrlImageArr = /* array */[];
var imageUint8ArrayDataMap = MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0);
var match = !isLoadImage;
if (match) {
return Promise.resolve(/* tuple */[
blobObjectUrlImageArr,
imageUint8ArrayDataMap
]);
} else {
var match$1 = OptionService$Wonderjs.isJsonSerializedValueNone(images);
return Most.drain(Most.mergeArray(match$1 ? blobObjectUrlImageArr : ArrayService$Wonderjs.reduceOneParamValidi((function (streamArr, param, imageIndex) {
var mimeType = param[/* mimeType */2];
var name = param[/* name */0];
var arrayBuffer = AssembleCommon$Wonderjs.getArrayBuffer(binBuffer, param[/* bufferView */1], bufferViews);
MutableSparseMapService$WonderCommonlib.set(imageIndex, /* tuple */[
mimeType,
new Uint8Array(arrayBuffer)
], imageUint8ArrayDataMap);
return ArrayService$Wonderjs.push(Most.tap((function (image) {
ImageUtils$Wonderjs.setImageName(image, name);
blobObjectUrlImageArr[imageIndex] = image;
return /* () */0;
}), AssembleUtils$Wonderjs.buildLoadImageStream(arrayBuffer, mimeType, "load image error. imageName: " + (String(name) + ""))), streamArr);
}), /* array */[], OptionService$Wonderjs.unsafeGetJsonSerializedValue(images)))).then((function (param) {
return Promise.resolve(/* tuple */[
blobObjectUrlImageArr,
imageUint8ArrayDataMap
]);
}));
}
}
function checkWDB(dataView) {
Contract$WonderLog.requireCheck((function (param) {
Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("Source file to be a WDB (wd Binary) model", "not"), (function (param) {
var match = DataViewCommon$Wonderjs.getUint32_1(0, dataView);
return Contract$WonderLog.Operators[/* = */0](match[0], 1179937896);
}));
var match = DataViewCommon$Wonderjs.getUint32_1(4, dataView);
var readVersion = match[0];
return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("Only WDB version 1 is supported", "Detected version: " + (String(readVersion) + "")), (function (param) {
return Contract$WonderLog.Operators[/* = */0](readVersion, 1);
}));
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData));
return dataView;
}
function assembleWDBData(wd, binBuffer, param, state) {
var isRenderLight = param[3];
var isActiveCamera = param[2];
var isBindEvent = param[1];
var buffers = wd[/* buffers */8];
var resultData = /* record */[/* contents */-1];
return Most.map((function (param) {
var state = StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData);
var imageDataTuple = resultData[0];
var match = BatchOperateWholeSystem$Wonderjs.batchOperate(wd, imageDataTuple, AssembleWholeWDBUtils$Wonderjs.buildBufferArray(buffers, binBuffer), /* tuple */[
isBindEvent,
isActiveCamera
], BatchCreateSystem$Wonderjs.batchCreate(isRenderLight, wd, state));
var gameObjectArr = match[2];
var match$1 = BuildRootGameObjectSystem$Wonderjs.build(wd, /* tuple */[
match[0],
gameObjectArr
]);
var rootGameObject = match$1[1];
var state$1 = DisposeGameObjectNotExistInSceneSystem$Wonderjs.dispose(rootGameObject, gameObjectArr, match$1[0]);
return /* tuple */[
state$1,
/* tuple */[
match[1],
HandleIMGUISystem$Wonderjs.getHasIMGUIData(wd)
],
/* tuple */[
rootGameObject,
SkyboxCubemapSystem$Wonderjs.getSkyboxCubemap(wd, match[3], state$1)
]
];
}), Most.fromPromise(Most.drain(Most.merge(HandleIMGUISystem$Wonderjs.handleIMGUI(param[0], wd, binBuffer, state), Most.fromPromise(_buildImageArray(param[4], wd, binBuffer).then((function (imageDataTuple) {
resultData[0] = imageDataTuple;
return Promise.resolve(/* () */0);
})))))));
}
function assemble(wdb, configTuple, state) {
var match = BufferUtils$Wonderjs.decodeWDB(wdb, checkWDB);
return assembleWDBData(JSON.parse(match[0]), match[2], configTuple, state);
}
exports._buildImageArray = _buildImageArray;
exports.checkWDB = checkWDB;
exports.assembleWDBData = assembleWDBData;
exports.assemble = assemble;
/* most Not a pure module */