wonder.js
Version:
187 lines (172 loc) • 13 kB
JavaScript
'use strict';
var Most = require("most");
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var MostUtils$Wonderjs = require("./utils/MostUtils.js");
var FetchCommon$Wonderjs = require("./FetchCommon.js");
var PathService$Wonderjs = require("../service/atom/PathService.js");
var ArrayService$Wonderjs = require("../service/atom/ArrayService.js");
var IsDebugMainService$Wonderjs = require("../service/state/main/state/IsDebugMainService.js");
var ParseSettingService$Wonderjs = require("../service/record/main/setting/ParseSettingService.js");
var StateDataMainService$Wonderjs = require("../service/state/main/state/StateDataMainService.js");
var OperateSettingService$Wonderjs = require("../service/record/main/setting/OperateSettingService.js");
var ParseWorkerJobService$Wonderjs = require("../service/record/main/workerJob/ParseWorkerJobService.js");
var CreateStateMainService$Wonderjs = require("../service/state/main/state/CreateStateMainService.js");
var RecordSceneMainService$Wonderjs = require("../service/state/main/scene/RecordSceneMainService.js");
var RecordWorkerJobService$Wonderjs = require("../service/record/main/workerJob/RecordWorkerJobService.js");
var ParseNoWorkerJobService$Wonderjs = require("../service/record/main/noWorkerJob/ParseNoWorkerJobService.js");
var RecordRenderMainService$Wonderjs = require("../service/state/main/render/RecordRenderMainService.js");
var WorkerDetectMainService$Wonderjs = require("../service/state/main/workerDetect/WorkerDetectMainService.js");
var BrowserDetectMainService$Wonderjs = require("../service/state/main/browserDetect/BrowserDetectMainService.js");
var ParseRenderConfigService$Wonderjs = require("../service/record/main/renderConfig/ParseRenderConfigService.js");
var RecordNoWorkerJobService$Wonderjs = require("../service/record/main/noWorkerJob/RecordNoWorkerJobService.js");
var RecordGeometryMainService$Wonderjs = require("../service/state/main/geometry/RecordGeometryMainService.js");
var RecordRenderConfigService$Wonderjs = require("../service/record/main/renderConfig/RecordRenderConfigService.js");
var RecordTransformMainService$Wonderjs = require("../service/state/main/transform/RecordTransformMainService.js");
var RecordPointLightMainService$Wonderjs = require("../service/state/main/light/point/RecordPointLightMainService.js");
var RecordMeshRendererMainService$Wonderjs = require("../service/state/main/meshRenderer/RecordMeshRendererMainService.js");
var RecordBasicMaterialMainService$Wonderjs = require("../service/state/main/material/basic/RecordBasicMaterialMainService.js");
var RecordLightMaterialMainService$Wonderjs = require("../service/state/main/material/light/RecordLightMaterialMainService.js");
var RecordSourceTextureMainService$Wonderjs = require("../service/state/main/texture/source/RecordSourceTextureMainService.js");
var RecordCubemapTextureMainService$Wonderjs = require("../service/state/main/texture/cubemap/RecordCubemapTextureMainService.js");
var RecordDirectionLightMainService$Wonderjs = require("../service/state/main/light/direction/RecordDirectionLightMainService.js");
var RecordSourceInstanceMainService$Wonderjs = require("../service/state/main/instance/RecordSourceInstanceMainService.js");
var RecordBasicSourceTextureMainService$Wonderjs = require("../service/state/main/texture/source/basic_source/RecordBasicSourceTextureMainService.js");
var RecordArrayBufferViewSourceTextureMainService$Wonderjs = require("../service/state/main/texture/source/arrayBufferView_source/RecordArrayBufferViewSourceTextureMainService.js");
function _collectAllRecords(stream) {
return Most.reduce((function (arr, record) {
return ArrayService$Wonderjs.push(record, arr);
}), /* array */[], stream);
}
function _createFetchNoWorkerJobStreamArr(dataDir, fetchFunc) {
return /* array */[
Most.map(ParseNoWorkerJobService$Wonderjs.convertSettingToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"no_worker/setting/setting.json"
]), fetchFunc)),
Most.map(ParseNoWorkerJobService$Wonderjs.convertInitPipelinesToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"no_worker/pipeline/init_pipelines.json"
]), fetchFunc)),
Most.map(ParseNoWorkerJobService$Wonderjs.convertLoopPipelinesToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"no_worker/pipeline/loop_pipelines.json"
]), fetchFunc)),
Most.map(ParseNoWorkerJobService$Wonderjs.convertInitJobsToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"no_worker/job/init_jobs.json"
]), fetchFunc)),
Most.map(ParseNoWorkerJobService$Wonderjs.convertLoopJobsToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"no_worker/job/loop_jobs.json"
]), fetchFunc))
];
}
function _createFetchRenderConfigStreamArr(dataDir, fetchFunc) {
return /* array */[
Most.map(ParseRenderConfigService$Wonderjs.convertShadersToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"render/shader/shaders.json"
]), fetchFunc)),
Most.map(ParseRenderConfigService$Wonderjs.convertShaderLibsToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"render/shader/shader_libs.json"
]), fetchFunc))
];
}
function _setSetting(stateData, state, setting) {
IsDebugMainService$Wonderjs.setIsDebug(stateData, OperateSettingService$Wonderjs.unsafeGetIsDebug(setting));
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* settingRecord */0] = OperateSettingService$Wonderjs.setSetting(setting);
return newrecord;
}
function _createHandleNoWorkerJobConfigStreamArr(dataDir, fetchFunc, state) {
return Most.fromPromise(_collectAllRecords(MostUtils$Wonderjs.concatArray(_createFetchNoWorkerJobStreamArr(dataDir, fetchFunc))).then((function (recordArr) {
var newrecord = Caml_array.caml_array_dup(state);
return Promise.resolve((newrecord[/* noWorkerJobRecord */2] = RecordNoWorkerJobService$Wonderjs.create(recordArr), newrecord));
})));
}
function _createHandleRenderConfigStreamArr(dataDir, fetchFunc, state) {
return Most.fromPromise(_collectAllRecords(MostUtils$Wonderjs.concatArray(_createFetchRenderConfigStreamArr(dataDir, fetchFunc))).then((function (recordArr) {
var newrecord = Caml_array.caml_array_dup(state);
return Promise.resolve((newrecord[/* renderConfigRecord */4] = RecordRenderConfigService$Wonderjs.create(recordArr), newrecord));
})));
}
function _createFetchWorkerJobStreamArr(dataDir, fetchFunc) {
return /* array */[
Most.map(ParseWorkerJobService$Wonderjs.convertSettingToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/setting/setting.json"
]), fetchFunc)),
Most.map(ParseWorkerJobService$Wonderjs.convertMainInitPipelinesToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/pipeline/main/main_init_pipelines.json"
]), fetchFunc)),
Most.map(ParseWorkerJobService$Wonderjs.convertMainLoopPipelinesToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/pipeline/main/main_loop_pipelines.json"
]), fetchFunc)),
Most.map(ParseWorkerJobService$Wonderjs.convertMainInitJobsToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/job/main/main_init_jobs.json"
]), fetchFunc)),
Most.map(ParseWorkerJobService$Wonderjs.convertMainLoopJobsToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/job/main/main_loop_jobs.json"
]), fetchFunc)),
Most.map(ParseWorkerJobService$Wonderjs.convertWorkerPipelinesToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/pipeline/worker/worker_pipelines.json"
]), fetchFunc)),
Most.map(ParseWorkerJobService$Wonderjs.convertWorkerJobsToRecord, FetchCommon$Wonderjs.createFetchJsonStream(PathService$Wonderjs.join(/* array */[
dataDir,
"worker/job/worker/worker_jobs.json"
]), fetchFunc))
];
}
function _createHandleWorkerJobConfigStreamArr(dataDir, fetchFunc, state) {
return Most.fromPromise(_collectAllRecords(MostUtils$Wonderjs.concatArray(_createFetchWorkerJobStreamArr(dataDir, fetchFunc))).then((function (recordArr) {
var newrecord = Caml_array.caml_array_dup(state);
return Promise.resolve((newrecord[/* workerJobRecord */3] = RecordWorkerJobService$Wonderjs.create(recordArr), newrecord));
})));
}
function _createHandleJobConfigStreamArr(dataDir, fetchFunc, state) {
var match = WorkerDetectMainService$Wonderjs.isUseWorker(state);
if (match) {
return _createHandleWorkerJobConfigStreamArr(dataDir, fetchFunc, state);
} else {
return _createHandleNoWorkerJobConfigStreamArr(dataDir, fetchFunc, state);
}
}
function _createRecordWithState(state) {
return RecordSceneMainService$Wonderjs.create(RecordRenderMainService$Wonderjs.create(RecordGeometryMainService$Wonderjs.create(RecordSourceInstanceMainService$Wonderjs.create(RecordCubemapTextureMainService$Wonderjs.create(RecordArrayBufferViewSourceTextureMainService$Wonderjs.create(RecordBasicSourceTextureMainService$Wonderjs.create(RecordSourceTextureMainService$Wonderjs.create(RecordMeshRendererMainService$Wonderjs.create(RecordPointLightMainService$Wonderjs.create(RecordDirectionLightMainService$Wonderjs.create(RecordLightMaterialMainService$Wonderjs.create(RecordBasicMaterialMainService$Wonderjs.create(RecordTransformMainService$Wonderjs.create(state))))))))))))));
}
function _createAndSetState(stateData) {
StateDataMainService$Wonderjs.setState(stateData, CreateStateMainService$Wonderjs.createState(/* () */0));
return /* () */0;
}
function load(jsonPathArr, fetchFunc, stateData) {
var settingFilePath = jsonPathArr[0];
var dataDir = jsonPathArr[1];
_createAndSetState(stateData);
return Most.flatMap((function (json) {
return Most.tap((function (state) {
StateDataMainService$Wonderjs.setState(stateData, state);
return /* () */0;
}), Most.concatMap((function (state) {
return _createHandleRenderConfigStreamArr(dataDir, fetchFunc, state);
}), _createHandleJobConfigStreamArr(dataDir, fetchFunc, _createRecordWithState(BrowserDetectMainService$Wonderjs.detect(WorkerDetectMainService$Wonderjs.detect(_setSetting(stateData, StateDataMainService$Wonderjs.unsafeGetState(stateData), ParseSettingService$Wonderjs.convertToRecord(json))))))));
}), FetchCommon$Wonderjs.createFetchJsonStream(settingFilePath, fetchFunc));
}
exports._collectAllRecords = _collectAllRecords;
exports._createFetchNoWorkerJobStreamArr = _createFetchNoWorkerJobStreamArr;
exports._createFetchRenderConfigStreamArr = _createFetchRenderConfigStreamArr;
exports._setSetting = _setSetting;
exports._createHandleNoWorkerJobConfigStreamArr = _createHandleNoWorkerJobConfigStreamArr;
exports._createHandleRenderConfigStreamArr = _createHandleRenderConfigStreamArr;
exports._createFetchWorkerJobStreamArr = _createFetchWorkerJobStreamArr;
exports._createHandleWorkerJobConfigStreamArr = _createHandleWorkerJobConfigStreamArr;
exports._createHandleJobConfigStreamArr = _createHandleJobConfigStreamArr;
exports._createRecordWithState = _createRecordWithState;
exports._createAndSetState = _createAndSetState;
exports.load = load;
/* most Not a pure module */