UNPKG

wonder.js

Version:
111 lines (102 loc) 6.66 kB
'use strict'; var Js_option = require("bs-platform/lib/js/js_option.js"); var Caml_array = require("bs-platform/lib/js/caml_array.js"); var Log$WonderLog = require("wonder-log/lib/js/src/Log.js"); var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js"); var ArrayService$Wonderjs = require("../../../atom/ArrayService.js"); var StateDataMain$Wonderjs = require("../data/StateDataMain.js"); var IsDebugMainService$Wonderjs = require("../state/IsDebugMainService.js"); var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js"); var GroupGeometryService$Wonderjs = require("../../../record/main/geometry/GroupGeometryService.js"); var BufferGeometryService$Wonderjs = require("../../../record/main/geometry/BufferGeometryService.js"); var DisposeComponentService$Wonderjs = require("../../../primitive/component/DisposeComponentService.js"); var DisposeVboBufferService$Wonderjs = require("../../../record/main/vboBuffer/DisposeVboBufferService.js"); var GameObjectGeometryService$Wonderjs = require("../../../record/main/geometry/GameObjectGeometryService.js"); var RecordGeometryMainService$Wonderjs = require("./RecordGeometryMainService.js"); var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js"); var ReallocatedPointsGeometryService$Wonderjs = require("../../../primitive/geometry/ReallocatedPointsGeometryService.js"); var isAlive = DisposeComponentService$Wonderjs.isAlive; function isAliveWithRecord(geometry, param) { var disposedIndexArray = param[/* disposedIndexArray */19]; return DisposeComponentService$Wonderjs.isAlive(geometry, disposedIndexArray); } function _disposeData(geometry, geometryRecord) { var disposeCount = geometryRecord[/* disposeCount */16]; var disposedIndexArray = geometryRecord[/* disposedIndexArray */19]; var infoIndex = BufferGeometryService$Wonderjs.getInfoIndex(geometry); var newrecord = Caml_array.caml_array_dup(geometryRecord); newrecord[/* verticesInfos */7] = ReallocatedPointsGeometryService$Wonderjs.setInfo(infoIndex, 0, 0, geometryRecord[/* verticesInfos */7]); newrecord[/* texCoordsInfos */8] = ReallocatedPointsGeometryService$Wonderjs.setInfo(infoIndex, 0, 0, geometryRecord[/* texCoordsInfos */8]); newrecord[/* normalsInfos */9] = ReallocatedPointsGeometryService$Wonderjs.setInfo(infoIndex, 0, 0, geometryRecord[/* normalsInfos */9]); newrecord[/* indicesInfos */10] = ReallocatedPointsGeometryService$Wonderjs.setInfo(infoIndex, 0, 0, geometryRecord[/* indicesInfos */10]); newrecord[/* disposeCount */16] = disposeCount + 1 | 0; newrecord[/* disposedIndexArray */19] = ArrayService$Wonderjs.push(geometry, disposedIndexArray); newrecord[/* nameMap */20] = DisposeComponentService$Wonderjs.disposeSparseMapData(geometry, geometryRecord[/* nameMap */20]); return newrecord; } function handleBatchDisposeComponentData(geometryDataMap, state) { Contract$WonderLog.requireCheck((function (param) { return DisposeComponentService$Wonderjs.checkComponentShouldAliveWithBatchDispose(MutableSparseMapService$WonderCommonlib.getValidKeys(geometryDataMap), isAliveWithRecord, RecordGeometryMainService$Wonderjs.getRecord(state)); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); var geometryRecord = RecordGeometryMainService$Wonderjs.getRecord(state); var match = MutableSparseMapService$WonderCommonlib.reduceiValid((function (param, gameObjectArr, geometry) { var geometryNeedDisposeVboBufferArr = param[0]; var geometryRecord = GroupGeometryService$Wonderjs.batchRemoveGameObjects(gameObjectArr, geometry, param[1]); var match = GroupGeometryService$Wonderjs.isGroupGeometry(geometry, geometryRecord); if (match) { return /* tuple */[ geometryNeedDisposeVboBufferArr, geometryRecord ]; } else { return /* tuple */[ ArrayService$Wonderjs.push(geometry, geometryNeedDisposeVboBufferArr), _disposeData(geometry, geometryRecord) ]; } }), /* tuple */[ /* array */[], geometryRecord ], geometryDataMap); var newrecord = Caml_array.caml_array_dup(state); return /* tuple */[ (newrecord[/* geometryRecord */23] = match[1], newrecord), match[0] ]; } function handleBatchDisposeComponent(geometryHasNoGameObjectArray, state) { Contract$WonderLog.requireCheck((function (param) { DisposeComponentService$Wonderjs.checkComponentShouldAliveWithBatchDispose(geometryHasNoGameObjectArray, isAliveWithRecord, RecordGeometryMainService$Wonderjs.getRecord(state)); return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("geometry has no gameObject", "has"), (function (param) { var geometryRecord = RecordGeometryMainService$Wonderjs.getRecord(state); return Contract$WonderLog.Operators[/* = */0](geometryHasNoGameObjectArray.filter((function (geometry) { return Js_option.isSome(GameObjectGeometryService$Wonderjs.getGameObjects(geometry, geometryRecord)); })).length, 0); })); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); var geometryRecord = RecordGeometryMainService$Wonderjs.getRecord(state); var match = ArrayService$WonderCommonlib.reduceOneParam((function (param, geometryHasNoGameObject) { return /* tuple */[ ArrayService$Wonderjs.push(geometryHasNoGameObject, param[0]), _disposeData(geometryHasNoGameObject, param[1]) ]; }), /* tuple */[ /* array */[], geometryRecord ], geometryHasNoGameObjectArray); var newrecord = Caml_array.caml_array_dup(state); newrecord[/* geometryRecord */23] = match[1]; newrecord[/* vboBufferRecord */36] = DisposeVboBufferService$Wonderjs.disposeGeometryVboBuffer(match[0], state[/* vboBufferRecord */36]); return newrecord; } function isNotDisposed(param) { var disposedIndexArray = param[/* disposedIndexArray */19]; return disposedIndexArray.length === 0; } exports.isAlive = isAlive; exports.isAliveWithRecord = isAliveWithRecord; exports._disposeData = _disposeData; exports.handleBatchDisposeComponentData = handleBatchDisposeComponentData; exports.handleBatchDisposeComponent = handleBatchDisposeComponent; exports.isNotDisposed = isNotDisposed; /* Log-WonderLog Not a pure module */