UNPKG

wonder.js

Version:
117 lines (110 loc) 8.9 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 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 BufferMaterialService$Wonderjs = require("../../../../record/main/material/BufferMaterialService.js"); var DisposeMaterialService$Wonderjs = require("../../../../record/main/material/DisposeMaterialService.js"); var DisposeComponentService$Wonderjs = require("../../../../primitive/component/DisposeComponentService.js"); var DisposeTypeArrayService$Wonderjs = require("../../../../primitive/buffer/DisposeTypeArrayService.js"); var GroupBasicMaterialService$Wonderjs = require("../../../../record/main/material/basic/GroupBasicMaterialService.js"); var DisposeMaterialMainService$Wonderjs = require("../DisposeMaterialMainService.js"); var DefaultTypeArrayValueService$Wonderjs = require("../../../../primitive/buffer/DefaultTypeArrayValueService.js"); var BufferAllBasicMaterialService$Wonderjs = require("../../../../record/all/material/basic/BufferAllBasicMaterialService.js"); var GameObjectBasicMaterialService$Wonderjs = require("../../../../record/main/material/basic/GameObjectBasicMaterialService.js"); var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js"); var RecordBasicMaterialMainService$Wonderjs = require("./RecordBasicMaterialMainService.js"); function isAlive(material, param) { return DisposeMaterialMainService$Wonderjs.isAlive(material, param[/* disposedIndexArray */8]); } function _disposeData(material, state) { var basicMaterialRecord = RecordBasicMaterialMainService$Wonderjs.getRecord(state); var shaderIndices = DisposeMaterialService$Wonderjs.disposeData(material, basicMaterialRecord[/* shaderIndices */2], DefaultTypeArrayValueService$Wonderjs.getDefaultShaderIndex(/* () */0)); var newrecord = Caml_array.caml_array_dup(state); newrecord[/* basicMaterialRecord */15] = /* record */[ /* index */basicMaterialRecord[/* index */0], /* buffer */basicMaterialRecord[/* buffer */1], /* shaderIndices */shaderIndices, /* colors */DisposeTypeArrayService$Wonderjs.deleteAndResetFloat32TypeArr(BufferAllBasicMaterialService$Wonderjs.getColorIndex(material), BufferAllBasicMaterialService$Wonderjs.getColorsSize(/* () */0), basicMaterialRecord[/* defaultColor */6], basicMaterialRecord[/* colors */3]), /* isDepthTests */DisposeTypeArrayService$Wonderjs.deleteAndResetUint8(BufferAllBasicMaterialService$Wonderjs.getIsDepthTestIndex(material), BufferMaterialService$Wonderjs.getDefaultIsDepthTest(/* () */0), basicMaterialRecord[/* isDepthTests */4]), /* alphas */DisposeTypeArrayService$Wonderjs.deleteAndResetFloat32(BufferAllBasicMaterialService$Wonderjs.getAlphaIndex(material), BufferAllBasicMaterialService$Wonderjs.getDefaultAlpha(/* () */0), basicMaterialRecord[/* alphas */5]), /* defaultColor */basicMaterialRecord[/* defaultColor */6], /* gameObjectsMap */basicMaterialRecord[/* gameObjectsMap */7], /* disposedIndexArray */basicMaterialRecord[/* disposedIndexArray */8], /* nameMap */DisposeComponentService$Wonderjs.disposeSparseMapData(material, basicMaterialRecord[/* nameMap */9]), /* materialArrayForWorkerInit */basicMaterialRecord[/* materialArrayForWorkerInit */10] ]; return newrecord; } function handleBatchDisposeComponentData(materialDataMap, state) { Contract$WonderLog.requireCheck((function (param) { return DisposeComponentService$Wonderjs.checkComponentShouldAliveWithBatchDispose(MutableSparseMapService$WonderCommonlib.getValidKeys(materialDataMap), isAlive, RecordBasicMaterialMainService$Wonderjs.getRecord(state)); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); return MutableSparseMapService$WonderCommonlib.reduceiValid((function (state, gameObjectArr, material) { var basicMaterialRecord = RecordBasicMaterialMainService$Wonderjs.getRecord(state); var basicMaterialRecord$1 = GroupBasicMaterialService$Wonderjs.batchRemoveGameObjects(gameObjectArr, material, basicMaterialRecord); var match = GroupBasicMaterialService$Wonderjs.isGroupBasicMaterial(material, basicMaterialRecord$1); if (match) { var newrecord = Caml_array.caml_array_dup(state); newrecord[/* basicMaterialRecord */15] = basicMaterialRecord$1; return newrecord; } else { var state$1 = _disposeData(material, state); var basicMaterialRecord$2 = RecordBasicMaterialMainService$Wonderjs.getRecord(state$1); var newrecord$1 = Caml_array.caml_array_dup(state$1); newrecord$1[/* basicMaterialRecord */15] = /* record */[ /* index */basicMaterialRecord$2[/* index */0], /* buffer */basicMaterialRecord$2[/* buffer */1], /* shaderIndices */basicMaterialRecord$2[/* shaderIndices */2], /* colors */basicMaterialRecord$2[/* colors */3], /* isDepthTests */basicMaterialRecord$2[/* isDepthTests */4], /* alphas */basicMaterialRecord$2[/* alphas */5], /* defaultColor */basicMaterialRecord$2[/* defaultColor */6], /* gameObjectsMap */basicMaterialRecord$2[/* gameObjectsMap */7], /* disposedIndexArray */DisposeMaterialService$Wonderjs.addDisposeIndex(material, basicMaterialRecord$2[/* disposedIndexArray */8]), /* nameMap */basicMaterialRecord$2[/* nameMap */9], /* materialArrayForWorkerInit */basicMaterialRecord$2[/* materialArrayForWorkerInit */10] ]; return newrecord$1; } }), state, materialDataMap); } function handleBatchDisposeComponent(materialHasNoGameObjectArray, state) { Contract$WonderLog.requireCheck((function (param) { DisposeComponentService$Wonderjs.checkComponentShouldAliveWithBatchDispose(materialHasNoGameObjectArray, isAlive, RecordBasicMaterialMainService$Wonderjs.getRecord(state)); return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("material has no gameObject", "has"), (function (param) { var materialRecord = RecordBasicMaterialMainService$Wonderjs.getRecord(state); return Contract$WonderLog.Operators[/* = */0](materialHasNoGameObjectArray.filter((function (material) { return Js_option.isSome(GameObjectBasicMaterialService$Wonderjs.getGameObjects(material, materialRecord)); })).length, 0); })); }), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData)); RecordBasicMaterialMainService$Wonderjs.getRecord(state); return ArrayService$WonderCommonlib.reduceOneParam((function (state, material) { var state$1 = _disposeData(material, state); var basicMaterialRecord = RecordBasicMaterialMainService$Wonderjs.getRecord(state$1); var newrecord = Caml_array.caml_array_dup(state$1); newrecord[/* basicMaterialRecord */15] = /* record */[ /* index */basicMaterialRecord[/* index */0], /* buffer */basicMaterialRecord[/* buffer */1], /* shaderIndices */basicMaterialRecord[/* shaderIndices */2], /* colors */basicMaterialRecord[/* colors */3], /* isDepthTests */basicMaterialRecord[/* isDepthTests */4], /* alphas */basicMaterialRecord[/* alphas */5], /* defaultColor */basicMaterialRecord[/* defaultColor */6], /* gameObjectsMap */basicMaterialRecord[/* gameObjectsMap */7], /* disposedIndexArray */DisposeMaterialService$Wonderjs.addDisposeIndex(material, basicMaterialRecord[/* disposedIndexArray */8]), /* nameMap */basicMaterialRecord[/* nameMap */9], /* materialArrayForWorkerInit */basicMaterialRecord[/* materialArrayForWorkerInit */10] ]; return newrecord; }), state, materialHasNoGameObjectArray); } exports.isAlive = isAlive; exports._disposeData = _disposeData; exports.handleBatchDisposeComponentData = handleBatchDisposeComponentData; exports.handleBatchDisposeComponent = handleBatchDisposeComponent; /* Log-WonderLog Not a pure module */