wonder.js
Version:
99 lines (90 loc) • 5.23 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 BufferMeshRendererService$Wonderjs = require("../../../record/main/meshRenderer/BufferMeshRendererService.js");
var DefaultTypeArrayValueService$Wonderjs = require("../../../primitive/buffer/DefaultTypeArrayValueService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var CreateTypeArrayAllMeshRendererService$Wonderjs = require("../../../record/all/meshRenderer/CreateTypeArrayAllMeshRendererService.js");
var OperateTypeArrayAllMeshRendererService$Wonderjs = require("../../../record/all/meshRenderer/OperateTypeArrayAllMeshRendererService.js");
function getRecord(param) {
return OptionService$Wonderjs.unsafeGet(param[/* meshRendererRecord */24]);
}
function setAllTypeArrDataToDefault(meshRendererCount, param, param$1) {
var defaultIsRender = param[1];
var defaultDrawMode = param[0];
return ArrayService$WonderCommonlib.reduceOneParam((function (param, index) {
return /* tuple */[
OperateTypeArrayAllMeshRendererService$Wonderjs.setDrawMode(index, defaultDrawMode, param[0]),
OperateTypeArrayAllMeshRendererService$Wonderjs.setIsRender(index, defaultIsRender, param[1])
];
}), /* tuple */[
param$1[0],
param$1[1]
], ArrayService$WonderCommonlib.range(0, meshRendererCount - 1 | 0));
}
function _setAllTypeArrDataToDefault(meshRendererCount, defaultDrawMode, defaultIsRender, param) {
return /* tuple */[
param[0],
setAllTypeArrDataToDefault(meshRendererCount, /* tuple */[
defaultDrawMode,
defaultIsRender
], /* tuple */[
param[1],
param[2]
])
];
}
function _initBufferData(meshRendererCount, defaultDrawMode, defaultIsRender) {
var buffer = BufferMeshRendererService$Wonderjs.createBuffer(meshRendererCount);
var match = CreateTypeArrayAllMeshRendererService$Wonderjs.createTypeArrays(buffer, meshRendererCount);
return _setAllTypeArrDataToDefault(meshRendererCount, defaultDrawMode, defaultIsRender, /* tuple */[
buffer,
match[0],
match[1]
]);
}
function create(state) {
DefaultTypeArrayValueService$Wonderjs.getDefaultShaderIndex(/* () */0);
var defaultDrawMode = BufferMeshRendererService$Wonderjs.getDefaultDrawMode(/* () */0);
var defaultIsRender = BufferMeshRendererService$Wonderjs.getDefaultIsRender(/* () */0);
var match = _initBufferData(BufferSettingService$Wonderjs.getMeshRendererCount(state[/* settingRecord */0]), defaultDrawMode, defaultIsRender);
var match$1 = match[1];
state[/* meshRendererRecord */24] = /* record */[
/* index */0,
/* buffer */match[0],
/* drawModes */match$1[0],
/* isRenders */match$1[1],
/* basicMaterialRenderGameObjectMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* lightMaterialRenderGameObjectMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* gameObjectMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* disposedIndexArray */ArrayService$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[/* meshRendererRecord */24] = /* record */[
/* index */index,
/* buffer */record[/* buffer */1],
/* drawModes */CopyTypeArrayService$Wonderjs.copyUint8ArrayWithEndIndex(Caml_int32.imul(index, BufferMeshRendererService$Wonderjs.getDrawModesSize(/* () */0)), record[/* drawModes */2]),
/* isRenders */CopyTypeArrayService$Wonderjs.copyUint8ArrayWithEndIndex(Caml_int32.imul(index, BufferMeshRendererService$Wonderjs.getIsRendersSize(/* () */0)), record[/* isRenders */3]),
/* basicMaterialRenderGameObjectMap */MutableSparseMapService$WonderCommonlib.copy(record[/* basicMaterialRenderGameObjectMap */4]),
/* lightMaterialRenderGameObjectMap */MutableSparseMapService$WonderCommonlib.copy(record[/* lightMaterialRenderGameObjectMap */5]),
/* gameObjectMap */MutableSparseMapService$WonderCommonlib.copy(record[/* gameObjectMap */6]),
/* disposedIndexArray */record[/* disposedIndexArray */7].slice()
];
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 */