UNPKG

wonder.js

Version:
105 lines (98 loc) 7.3 kB
'use strict'; var Curry = require("bs-platform/lib/js/curry.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 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 MemorySettingService$Wonderjs = require("../../../record/main/setting/MemorySettingService.js"); var StaticTransformService$Wonderjs = require("../../../primitive/instance/StaticTransformService.js"); var DisposeComponentService$Wonderjs = require("../../../primitive/component/DisposeComponentService.js"); var DisposeTypeArrayService$Wonderjs = require("../../../primitive/buffer/DisposeTypeArrayService.js"); var DisposeSourceInstanceAllService$Wonderjs = require("../../all/instance/DisposeSourceInstanceAllService.js"); var ObjectInstanceCollectionService$Wonderjs = require("../../../primitive/instance/ObjectInstanceCollectionService.js"); var RecordSourceInstanceMainService$Wonderjs = require("./RecordSourceInstanceMainService.js"); var GetObjectInstanceArrayMainService$Wonderjs = require("./GetObjectInstanceArrayMainService.js"); function isAlive(sourceInstance, param) { return DisposeComponentService$Wonderjs.isAlive(sourceInstance, param[/* disposedIndexArray */8]); } function _disposeObjectInstanceGameObject(objectInstanceGameObjectArr, param, batchDisposeGameObjectFunc, state) { return Contract$WonderLog.ensureCheck((function (param) { var sourceInstanceNeedDisposeVboBufferArr = param[2]; var geometryNeedDisposeVboBufferArr = param[1]; Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("geometryNeedDisposeVboBufferArr from object instance gameObject should be empty", "is " + (String(geometryNeedDisposeVboBufferArr) + "")), (function (param) { return Contract$WonderLog.Operators[/* = */0](geometryNeedDisposeVboBufferArr.length, 0); })); return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("sourceInstanceNeedDisposeVboBufferArr from object instance gameObject should be empty", "is " + (String(sourceInstanceNeedDisposeVboBufferArr) + "")), (function (param) { return Contract$WonderLog.Operators[/* = */0](sourceInstanceNeedDisposeVboBufferArr.length, 0); })); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData), Curry._3(batchDisposeGameObjectFunc, objectInstanceGameObjectArr, /* tuple */[ param[0], param[1], param[2], param[3] ], state)); } function _disposeData(sourceInstance, param, batchDisposeGameObjectFunc, state) { var record = RecordSourceInstanceMainService$Wonderjs.getRecord(state); var objectInstanceGameObjectArr = GetObjectInstanceArrayMainService$Wonderjs.getObjectInstanceArray(sourceInstance, state); var newrecord = Caml_array.caml_array_dup(state); newrecord[/* sourceInstanceRecord */6] = /* record */[ /* index */record[/* index */0], /* objectInstanceTransformIndexMap */ObjectInstanceCollectionService$Wonderjs.resetObjectInstanceTransformIndexMap(sourceInstance, record[/* objectInstanceTransformIndexMap */1]), /* buffer */record[/* buffer */2], /* isTransformStatics */DisposeTypeArrayService$Wonderjs.deleteAndResetUint8(sourceInstance, StaticTransformService$Wonderjs.getDefault(/* () */0), record[/* isTransformStatics */3]), /* objectInstanceTransformCollections */record[/* objectInstanceTransformCollections */4], /* matrixInstanceBufferCapacityMap */DisposeSourceInstanceAllService$Wonderjs.disposeMatrixInstanceBufferCapacityMap(sourceInstance, record[/* matrixInstanceBufferCapacityMap */5]), /* matrixFloat32ArrayMap */DisposeSourceInstanceAllService$Wonderjs.disposeMatrixFloat32ArrayMap(sourceInstance, MemorySettingService$Wonderjs.getMaxBigTypeArrayPoolSize(state[/* settingRecord */0]), record[/* matrixFloat32ArrayMap */6], state[/* typeArrayPoolRecord */38]), /* isSendTransformMatrixDataMap */DisposeSourceInstanceAllService$Wonderjs.disposeIsSendTransformMatrixDataMap(sourceInstance, record[/* isSendTransformMatrixDataMap */7]), /* disposedIndexArray */record[/* disposedIndexArray */8], /* gameObjectMap */DisposeComponentService$Wonderjs.disposeSparseMapData(sourceInstance, record[/* gameObjectMap */9]) ]; return _disposeObjectInstanceGameObject(objectInstanceGameObjectArr, /* tuple */[ param[0], param[1], param[2], param[3] ], batchDisposeGameObjectFunc, newrecord)[0]; } function handleBatchDisposeComponent(sourceInstanceArray, param, batchDisposeGameObjectFunc, state) { var isRemoveTexture = param[3]; var isRemoveMaterial = param[2]; var isRemoveGeometry = param[1]; var isKeepOrder = param[0]; Contract$WonderLog.requireCheck((function (param) { return DisposeComponentService$Wonderjs.checkComponentShouldAliveWithBatchDispose(sourceInstanceArray, isAlive, RecordSourceInstanceMainService$Wonderjs.getRecord(state)); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); var sourceInstanceRecord = RecordSourceInstanceMainService$Wonderjs.getRecord(state); var newrecord = Caml_array.caml_array_dup(state); newrecord[/* sourceInstanceRecord */6] = /* record */[ /* index */sourceInstanceRecord[/* index */0], /* objectInstanceTransformIndexMap */sourceInstanceRecord[/* objectInstanceTransformIndexMap */1], /* buffer */sourceInstanceRecord[/* buffer */2], /* isTransformStatics */sourceInstanceRecord[/* isTransformStatics */3], /* objectInstanceTransformCollections */sourceInstanceRecord[/* objectInstanceTransformCollections */4], /* matrixInstanceBufferCapacityMap */sourceInstanceRecord[/* matrixInstanceBufferCapacityMap */5], /* matrixFloat32ArrayMap */sourceInstanceRecord[/* matrixFloat32ArrayMap */6], /* isSendTransformMatrixDataMap */sourceInstanceRecord[/* isSendTransformMatrixDataMap */7], /* disposedIndexArray */sourceInstanceRecord[/* disposedIndexArray */8].concat(sourceInstanceArray), /* gameObjectMap */sourceInstanceRecord[/* gameObjectMap */9] ]; return /* tuple */[ ArrayService$WonderCommonlib.reduceOneParam((function (state, sourceInstance) { return _disposeData(sourceInstance, /* tuple */[ isKeepOrder, isRemoveGeometry, isRemoveMaterial, isRemoveTexture ], batchDisposeGameObjectFunc, state); }), newrecord, sourceInstanceArray), sourceInstanceArray.slice() ]; } exports.isAlive = isAlive; exports._disposeObjectInstanceGameObject = _disposeObjectInstanceGameObject; exports._disposeData = _disposeData; exports.handleBatchDisposeComponent = handleBatchDisposeComponent; /* Log-WonderLog Not a pure module */