wonder.js
Version:
88 lines (76 loc) • 4.1 kB
JavaScript
'use strict';
var Most = require("most");
var StateDataMain$Wonderjs = require("../data/StateDataMain.js");
var WonderMostAnimationFrame = require("wonder-most-animation-frame");
var StateDataMainService$Wonderjs = require("../state/StateDataMainService.js");
var WorkerJobMainService$Wonderjs = require("../job/worker/WorkerJobMainService.js");
var TimeControllerService$Wonderjs = require("../../../record/main/timeController/TimeControllerService.js");
var WorkerJobHandleSystem$Wonderjs = require("../../../../job/worker/WorkerJobHandleSystem.js");
var NoWorkerJobMainService$Wonderjs = require("../job/no_worker/NoWorkerJobMainService.js");
var NoWorkerJobHandleSystem$Wonderjs = require("../../../../job/no_worker/NoWorkerJobHandleSystem.js");
var WorkerDetectMainService$Wonderjs = require("../workerDetect/WorkerDetectMainService.js");
function _workerInit(stateData, state) {
return WorkerJobMainService$Wonderjs.getMainInitJobStream(stateData, /* tuple */[
WorkerJobHandleSystem$Wonderjs.createMainInitJobHandleMap,
WorkerJobHandleSystem$Wonderjs.getMainInitJobHandle
], state);
}
function _noWorkerInit(state) {
return NoWorkerJobMainService$Wonderjs.execNoWorkerInitJobs(NoWorkerJobMainService$Wonderjs.init(/* tuple */[
NoWorkerJobHandleSystem$Wonderjs.createInitJobHandleMap,
NoWorkerJobHandleSystem$Wonderjs.createLoopJobHandleMap
], state));
}
function _computeElapseTime(time, state) {
state[/* timeControllerRecord */35] = TimeControllerService$Wonderjs.computeElapseTime(time, state[/* timeControllerRecord */35]);
return state;
}
function _createWorkerLoopStream(param) {
return Most.continueWith((function (param) {
return _createWorkerLoopStream(/* () */0);
}), Most.flatMap((function (time) {
var state = _computeElapseTime(time, StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData));
return Most.map((function (e) {
return /* () */0;
}), WorkerJobMainService$Wonderjs.getMainLoopJobStream(StateDataMain$Wonderjs.stateData, /* tuple */[
WorkerJobHandleSystem$Wonderjs.createMainLoopJobHandleMap,
WorkerJobHandleSystem$Wonderjs.getMainLoopJobHandle
], state));
}), WonderMostAnimationFrame.nextAnimationFrame()));
}
function _run(time, state) {
return NoWorkerJobMainService$Wonderjs.execNoWorkerLoopJobs(_computeElapseTime(time, state));
}
function loopBody(time, state) {
return NoWorkerJobMainService$Wonderjs.execNoWorkerLoopJobs(_computeElapseTime(time, state));
}
function _noWorkerLoop(time) {
return requestAnimationFrame((function (time) {
var state = StateDataMainService$Wonderjs.unsafeGetState(StateDataMain$Wonderjs.stateData);
StateDataMainService$Wonderjs.setState(StateDataMain$Wonderjs.stateData, NoWorkerJobMainService$Wonderjs.execNoWorkerLoopJobs(_computeElapseTime(time, state)));
_noWorkerLoop(time);
return /* () */0;
}));
}
function start(state) {
var match = WorkerDetectMainService$Wonderjs.isUseWorker(state);
if (match) {
Most.drain(_workerInit(StateDataMain$Wonderjs.stateData, StateDataMainService$Wonderjs.setState(StateDataMain$Wonderjs.stateData, state)).concat(_createWorkerLoopStream(/* () */0)));
return /* () */0;
} else {
StateDataMainService$Wonderjs.setState(StateDataMain$Wonderjs.stateData, _noWorkerInit(state));
_noWorkerLoop(0);
return /* () */0;
}
}
var init = _noWorkerInit;
exports._workerInit = _workerInit;
exports._noWorkerInit = _noWorkerInit;
exports._computeElapseTime = _computeElapseTime;
exports._createWorkerLoopStream = _createWorkerLoopStream;
exports._run = _run;
exports.init = init;
exports.loopBody = loopBody;
exports._noWorkerLoop = _noWorkerLoop;
exports.start = start;
/* most Not a pure module */