wonder.js
Version:
95 lines (86 loc) • 5.66 kB
JavaScript
'use strict';
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Caml_int32 = require("bs-platform/lib/js/caml_int32.js");
var OptionService$Wonderjs = require("../../../atom/OptionService.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var BufferSettingService$Wonderjs = require("../../../record/main/setting/BufferSettingService.js");
var CopyTypeArrayService$Wonderjs = require("../../../primitive/copy/CopyTypeArrayService.js");
var StaticTransformService$Wonderjs = require("../../../primitive/instance/StaticTransformService.js");
var BufferSourceInstanceService$Wonderjs = require("../../../record/main/instance/sourceInstance/BufferSourceInstanceService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var CreateTypeArrayAllSourceInstanceService$Wonderjs = require("../../../record/all/instance/CreateTypeArrayAllSourceInstanceService.js");
function getRecord(param) {
return OptionService$Wonderjs.unsafeGet(param[/* sourceInstanceRecord */6]);
}
function setAllTypeArrDataToDefault(sourceInstanceCount, defaultIsTransformStatic, param) {
return /* tuple */[
param[0].fill(0),
ArrayService$WonderCommonlib.reduceOneParam((function (isTransformStatics, index) {
return StaticTransformService$Wonderjs.setModelMatrixIsStatic(index, defaultIsTransformStatic, isTransformStatics);
}), param[1], ArrayService$WonderCommonlib.range(0, sourceInstanceCount - 1 | 0))
];
}
function _setAllTypeArrDataToDefault(sourceInstanceCount, defaultIsTransformStatic, param) {
return /* tuple */[
param[0],
setAllTypeArrDataToDefault(sourceInstanceCount, defaultIsTransformStatic, /* tuple */[
param[1],
param[2]
])
];
}
function _initBufferData(sourceInstanceCount, objectInstanceCountPerSourceInstance, defaultIsTransformStatic) {
var buffer = BufferSourceInstanceService$Wonderjs.createBuffer(sourceInstanceCount, objectInstanceCountPerSourceInstance);
var match = CreateTypeArrayAllSourceInstanceService$Wonderjs.createTypeArrays(buffer, sourceInstanceCount, objectInstanceCountPerSourceInstance);
return _setAllTypeArrDataToDefault(sourceInstanceCount, defaultIsTransformStatic, /* tuple */[
buffer,
match[0],
match[1]
]);
}
function create(state) {
var settingRecord = state[/* settingRecord */0];
var sourceInstanceCount = BufferSettingService$Wonderjs.getSourceInstanceCount(settingRecord);
var objectInstanceCountPerSourceInstance = BufferSettingService$Wonderjs.getObjectInstanceCountPerSourceInstance(settingRecord);
var defaultIsTransformStatic = StaticTransformService$Wonderjs.getDefault(/* () */0);
var match = _initBufferData(sourceInstanceCount, objectInstanceCountPerSourceInstance, defaultIsTransformStatic);
var match$1 = match[1];
state[/* sourceInstanceRecord */6] = /* record */[
/* index */0,
/* objectInstanceTransformIndexMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* buffer */match[0],
/* isTransformStatics */match$1[1],
/* objectInstanceTransformCollections */match$1[0],
/* matrixInstanceBufferCapacityMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* matrixFloat32ArrayMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* isSendTransformMatrixDataMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* disposedIndexArray */ArrayService$WonderCommonlib.createEmpty(/* () */0),
/* gameObjectMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0)
];
return state;
}
function deepCopyForRestore(state) {
var record = getRecord(state);
var index = record[/* index */0];
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* sourceInstanceRecord */6] = /* record */[
/* index */index,
/* objectInstanceTransformIndexMap */MutableSparseMapService$WonderCommonlib.copy(record[/* objectInstanceTransformIndexMap */1]),
/* buffer */record[/* buffer */2],
/* isTransformStatics */CopyTypeArrayService$Wonderjs.copyUint8ArrayWithEndIndex(Caml_int32.imul(index, BufferSourceInstanceService$Wonderjs.getIsTransformStaticsSize(/* () */0)), record[/* isTransformStatics */3]),
/* objectInstanceTransformCollections */CopyTypeArrayService$Wonderjs.copyUint32ArrayWithEndIndex(Caml_int32.imul(index, BufferSourceInstanceService$Wonderjs.getObjectInstanceTransformCollectionsSize(BufferSettingService$Wonderjs.getObjectInstanceCountPerSourceInstance(state[/* settingRecord */0]))), record[/* objectInstanceTransformCollections */4]),
/* matrixInstanceBufferCapacityMap */MutableSparseMapService$WonderCommonlib.copy(record[/* matrixInstanceBufferCapacityMap */5]),
/* matrixFloat32ArrayMap */CopyTypeArrayService$Wonderjs.deepCopyMutableSparseMapOfFloat32Array(record[/* matrixFloat32ArrayMap */6]),
/* isSendTransformMatrixDataMap */record[/* isSendTransformMatrixDataMap */7],
/* disposedIndexArray */record[/* disposedIndexArray */8].slice(),
/* gameObjectMap */MutableSparseMapService$WonderCommonlib.copy(record[/* gameObjectMap */9])
];
return newrecord;
}
exports.getRecord = getRecord;
exports.setAllTypeArrDataToDefault = setAllTypeArrDataToDefault;
exports._setAllTypeArrDataToDefault = _setAllTypeArrDataToDefault;
exports._initBufferData = _initBufferData;
exports.create = create;
exports.deepCopyForRestore = deepCopyForRestore;
/* OptionService-Wonderjs Not a pure module */