UNPKG

wonder.js

Version:
77 lines (70 loc) 5.46 kB
'use strict'; 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 BufferSettingService$Wonderjs = require("../../../record/main/setting/BufferSettingService.js"); var BufferTransformService$Wonderjs = require("../../../record/main/transform/BufferTransformService.js"); var DisposeComponentService$Wonderjs = require("../../../primitive/component/DisposeComponentService.js"); var DisposeTypeArrayService$Wonderjs = require("../../../primitive/buffer/DisposeTypeArrayService.js"); var HierachyTransformService$Wonderjs = require("../../../record/main/transform/HierachyTransformService.js"); var RecordTransformMainService$Wonderjs = require("./RecordTransformMainService.js"); function isAlive(transform, param) { var disposedIndexArray = param[/* disposedIndexArray */21]; return DisposeComponentService$Wonderjs.isAlive(transform, disposedIndexArray); } function _disposeFromParentAndChildMap(transform, isKeepOrder, record) { ArrayService$WonderCommonlib.reduceOneParam((function (record, child) { return HierachyTransformService$Wonderjs.removeFromParentMap(child, record); }), record, HierachyTransformService$Wonderjs.unsafeGetChildren(transform, record)); var match = HierachyTransformService$Wonderjs.getParent(transform, record); if (match !== undefined) { return HierachyTransformService$Wonderjs.removeFromChildMap(match, transform, isKeepOrder, record); } else { return record; } } function _disposeData(transform, param, transformRecord) { var localToWorldMatrices = transformRecord[/* localToWorldMatrices */2]; var localPositions = transformRecord[/* localPositions */3]; var localRotations = transformRecord[/* localRotations */4]; var localScales = transformRecord[/* localScales */5]; var parentMap = transformRecord[/* parentMap */15]; var childMap = transformRecord[/* childMap */16]; var gameObjectMap = transformRecord[/* gameObjectMap */17]; var dirtyMap = transformRecord[/* dirtyMap */18]; var transformRecord$1 = _disposeFromParentAndChildMap(transform, param[2], transformRecord); transformRecord$1[/* localToWorldMatrices */2] = DisposeTypeArrayService$Wonderjs.deleteAndResetFloat32TypeArr(BufferTransformService$Wonderjs.getLocalToWorldMatrixIndex(transform), BufferTransformService$Wonderjs.getLocalToWorldMatricesSize(/* () */0), transformRecord[/* defaultLocalToWorldMatrix */11], localToWorldMatrices); transformRecord$1[/* localPositions */3] = DisposeTypeArrayService$Wonderjs.deleteAndResetFloat32TypeArr(BufferTransformService$Wonderjs.getLocalPositionIndex(transform), BufferTransformService$Wonderjs.getLocalPositionsSize(/* () */0), transformRecord[/* defaultLocalPosition */12], localPositions); transformRecord$1[/* localRotations */4] = DisposeTypeArrayService$Wonderjs.deleteAndResetFloat32TypeArr(BufferTransformService$Wonderjs.getLocalRotationIndex(transform), BufferTransformService$Wonderjs.getLocalRotationsSize(/* () */0), transformRecord[/* defaultLocalRotation */13], localRotations); transformRecord$1[/* localScales */5] = DisposeTypeArrayService$Wonderjs.deleteAndResetFloat32TypeArr(BufferTransformService$Wonderjs.getLocalScaleIndex(transform), BufferTransformService$Wonderjs.getLocalScalesSize(/* () */0), transformRecord[/* defaultLocalScale */14], localScales); transformRecord$1[/* parentMap */15] = DisposeComponentService$Wonderjs.disposeSparseMapData(transform, parentMap); transformRecord$1[/* childMap */16] = DisposeComponentService$Wonderjs.disposeSparseMapData(transform, childMap); transformRecord$1[/* dirtyMap */18] = DisposeComponentService$Wonderjs.disposeSparseMapData(transform, dirtyMap); transformRecord$1[/* gameObjectMap */17] = DisposeComponentService$Wonderjs.disposeSparseMapData(transform, gameObjectMap); return transformRecord$1; } function handleBatchDisposeComponent(transformArray, maxTypeArrayPoolSize, isKeepOrder, state) { Contract$WonderLog.requireCheck((function (param) { return DisposeComponentService$Wonderjs.checkComponentShouldAliveWithBatchDispose(transformArray, isAlive, RecordTransformMainService$Wonderjs.getRecord(state)); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); var transformRecord = RecordTransformMainService$Wonderjs.getRecord(state); var disposedIndexArray = transformRecord[/* disposedIndexArray */21]; transformRecord[/* disposedIndexArray */21] = disposedIndexArray.concat(transformArray); var transformCount = BufferSettingService$Wonderjs.getTransformCount(state[/* settingRecord */0]); var dataTuple = /* tuple */[ transformCount, maxTypeArrayPoolSize, isKeepOrder ]; var transformRecord$1 = ArrayService$WonderCommonlib.reduceOneParam((function (transformRecord, transform) { return _disposeData(transform, dataTuple, transformRecord); }), transformRecord, transformArray); state[/* transformRecord */11] = transformRecord$1; return state; } exports.isAlive = isAlive; exports._disposeFromParentAndChildMap = _disposeFromParentAndChildMap; exports._disposeData = _disposeData; exports.handleBatchDisposeComponent = handleBatchDisposeComponent; /* Contract-WonderLog Not a pure module */