wonder.js
Version:
77 lines (70 loc) • 5.46 kB
JavaScript
'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 */