UNPKG

wonder.js

Version:
187 lines (172 loc) 13 kB
'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 */