UNPKG

wonder.js

Version:
70 lines (64 loc) 3.9 kB
'use strict'; var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Log$WonderLog = require("wonder-log/lib/js/src/Log.js"); var OptionService$Wonderjs = require("../../../atom/OptionService.js"); var Matrix4Service$Wonderjs = require("../../../atom/Matrix4Service.js"); var PMatrixService$Wonderjs = require("../../../primitive/PMatrixService.js"); var DirtyArrayService$Wonderjs = require("../../../primitive/DirtyArrayService.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var FrustumPerspectiveCameraProjectionService$Wonderjs = require("../../../record/main/perspective_camera_projection/FrustumPerspectiveCameraProjectionService.js"); var FrustumPerspectiveCameraProjectionMainService$Wonderjs = require("./FrustumPerspectiveCameraProjectionMainService.js"); function updateCameraProjection(index, state) { var perspectiveCameraProjectionRecord = state[/* perspectiveCameraProjectionRecord */14]; var match = FrustumPerspectiveCameraProjectionService$Wonderjs.getAspect(index, perspectiveCameraProjectionRecord); var aspect = match !== undefined ? match : OptionService$Wonderjs.unsafeGet(FrustumPerspectiveCameraProjectionMainService$Wonderjs.computeAspect(state)); var newrecord = Caml_array.caml_array_dup(state); var match$1 = FrustumPerspectiveCameraProjectionService$Wonderjs.getFovy(index, perspectiveCameraProjectionRecord); var match$2 = FrustumPerspectiveCameraProjectionService$Wonderjs.getNear(index, perspectiveCameraProjectionRecord); var match$3 = FrustumPerspectiveCameraProjectionService$Wonderjs.getFar(index, perspectiveCameraProjectionRecord); var tmp; var exit = 0; if (match$1 !== undefined && match$2 !== undefined && match$3 !== undefined) { Matrix4Service$Wonderjs.buildPerspective(/* tuple */[ match$1, aspect, match$2, match$3 ], PMatrixService$Wonderjs.unsafeGetPMatrix(index, perspectiveCameraProjectionRecord[/* pMatrixMap */2])); tmp = perspectiveCameraProjectionRecord; } else { exit = 1; } if (exit === 1) { Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("update", "fovy,near,far should all exist", "", "", "cameraProjection: " + (String(index) + ""))); tmp = perspectiveCameraProjectionRecord; } newrecord[/* perspectiveCameraProjectionRecord */14] = tmp; return newrecord; } function _clearDirtyArray(state) { var perspectiveCameraProjectionRecord = state[/* perspectiveCameraProjectionRecord */14]; var newrecord = Caml_array.caml_array_dup(state); newrecord[/* perspectiveCameraProjectionRecord */14] = /* record */[ /* index */perspectiveCameraProjectionRecord[/* index */0], /* dirtyArray */DirtyArrayService$Wonderjs.create(/* () */0), /* pMatrixMap */perspectiveCameraProjectionRecord[/* pMatrixMap */2], /* nearMap */perspectiveCameraProjectionRecord[/* nearMap */3], /* farMap */perspectiveCameraProjectionRecord[/* farMap */4], /* fovyMap */perspectiveCameraProjectionRecord[/* fovyMap */5], /* aspectMap */perspectiveCameraProjectionRecord[/* aspectMap */6], /* gameObjectMap */perspectiveCameraProjectionRecord[/* gameObjectMap */7], /* disposedIndexArray */perspectiveCameraProjectionRecord[/* disposedIndexArray */8] ]; return newrecord; } function update(state) { var perspectiveCameraProjectionRecord = state[/* perspectiveCameraProjectionRecord */14]; return _clearDirtyArray(ArrayService$WonderCommonlib.reduceOneParam((function (state, dirtyIndex) { return updateCameraProjection(dirtyIndex, state); }), state, ArrayService$WonderCommonlib.removeDuplicateItems(perspectiveCameraProjectionRecord[/* dirtyArray */1]))); } exports.updateCameraProjection = updateCameraProjection; exports._clearDirtyArray = _clearDirtyArray; exports.update = update; /* Log-WonderLog Not a pure module */