wonder.js
Version:
122 lines (113 loc) • 6.39 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 ShaderIndicesService$Wonderjs = require("../../../../primitive/material/ShaderIndicesService.js");
var BufferMaterialService$Wonderjs = require("../../../../record/main/material/BufferMaterialService.js");
var DefaultTypeArrayValueService$Wonderjs = require("../../../../primitive/buffer/DefaultTypeArrayValueService.js");
var BufferAllBasicMaterialService$Wonderjs = require("../../../../record/all/material/basic/BufferAllBasicMaterialService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var CreateTypeArrayAllBasicMaterialService$Wonderjs = require("../../../../record/all/material/basic/CreateTypeArrayAllBasicMaterialService.js");
var OperateTypeArrayAllBasicMaterialService$Wonderjs = require("../../../../record/all/material/basic/OperateTypeArrayAllBasicMaterialService.js");
function getRecord(param) {
return OptionService$Wonderjs.unsafeGet(param[/* basicMaterialRecord */15]);
}
function setAllTypeArrDataToDefault(basicMaterialCount, defaultShaderIndex, defaultColor, param) {
var defaultIsDepthTest = BufferMaterialService$Wonderjs.getDefaultIsDepthTest(/* () */0);
var defaultAlpha = BufferAllBasicMaterialService$Wonderjs.getDefaultAlpha(/* () */0);
var match = ArrayService$WonderCommonlib.reduceOneParam((function (param, index) {
return /* tuple */[
ShaderIndicesService$Wonderjs.setShaderIndex(index, defaultShaderIndex, param[0]),
OperateTypeArrayAllBasicMaterialService$Wonderjs.setColor(index, defaultColor, param[1]),
OperateTypeArrayAllBasicMaterialService$Wonderjs.setIsDepthTest(index, defaultIsDepthTest, param[2]),
OperateTypeArrayAllBasicMaterialService$Wonderjs.setAlpha(index, defaultAlpha, param[3])
];
}), /* tuple */[
param[0],
param[1],
param[2],
param[3]
], ArrayService$WonderCommonlib.range(0, basicMaterialCount - 1 | 0));
return /* tuple */[
match[0],
match[1],
match[2],
match[3]
];
}
function _setAllTypeArrDataToDefault(basicMaterialCount, defaultShaderIndex, defaultColor, param) {
return /* tuple */[
param[0],
setAllTypeArrDataToDefault(basicMaterialCount, defaultShaderIndex, defaultColor, /* tuple */[
param[1],
param[2],
param[3],
param[4]
])
];
}
function _initBufferData(basicMaterialCount, defaultShaderIndex, defaultColor) {
var buffer = BufferAllBasicMaterialService$Wonderjs.createBuffer(basicMaterialCount);
var match = CreateTypeArrayAllBasicMaterialService$Wonderjs.createTypeArrays(buffer, basicMaterialCount);
return _setAllTypeArrDataToDefault(basicMaterialCount, defaultShaderIndex, defaultColor, /* tuple */[
buffer,
match[0],
match[1],
match[2],
match[3]
]);
}
function create(state) {
var defaultShaderIndex = DefaultTypeArrayValueService$Wonderjs.getDefaultShaderIndex(/* () */0);
var defaultColor = /* array */[
1,
1,
1
];
var match = _initBufferData(BufferSettingService$Wonderjs.getBasicMaterialCount(state[/* settingRecord */0]), defaultShaderIndex, defaultColor);
var match$1 = match[1];
state[/* basicMaterialRecord */15] = /* record */[
/* index */0,
/* buffer */match[0],
/* shaderIndices */match$1[0],
/* colors */match$1[1],
/* isDepthTests */match$1[2],
/* alphas */match$1[3],
/* defaultColor */defaultColor,
/* gameObjectsMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* disposedIndexArray */ArrayService$WonderCommonlib.createEmpty(/* () */0),
/* nameMap */MutableSparseMapService$WonderCommonlib.createEmpty(/* () */0),
/* materialArrayForWorkerInit */ArrayService$WonderCommonlib.createEmpty(/* () */0)
];
return state;
}
function deepCopyForRestore(state) {
var record = getRecord(state);
var index = record[/* index */0];
var materialArrayForWorkerInit = record[/* materialArrayForWorkerInit */10];
var newrecord = Caml_array.caml_array_dup(state);
newrecord[/* basicMaterialRecord */15] = /* record */[
/* index */index,
/* buffer */record[/* buffer */1],
/* shaderIndices */CopyTypeArrayService$Wonderjs.copyUint32ArrayWithEndIndex(Caml_int32.imul(index, BufferAllBasicMaterialService$Wonderjs.getShaderIndicesSize(/* () */0)), record[/* shaderIndices */2]),
/* colors */CopyTypeArrayService$Wonderjs.copyFloat32ArrayWithEndIndex(Caml_int32.imul(index, BufferAllBasicMaterialService$Wonderjs.getColorsSize(/* () */0)), record[/* colors */3]),
/* isDepthTests */CopyTypeArrayService$Wonderjs.copyUint8ArrayWithEndIndex(Caml_int32.imul(index, BufferAllBasicMaterialService$Wonderjs.getIsDepthTestsSize(/* () */0)), record[/* isDepthTests */4]),
/* alphas */CopyTypeArrayService$Wonderjs.copyFloat32ArrayWithEndIndex(Caml_int32.imul(index, BufferAllBasicMaterialService$Wonderjs.getAlphasSize(/* () */0)), record[/* alphas */5]),
/* defaultColor */record[/* defaultColor */6],
/* gameObjectsMap */CopyTypeArrayService$Wonderjs.deepCopyMutableSparseMapOfArray(record[/* gameObjectsMap */7]),
/* disposedIndexArray */record[/* disposedIndexArray */8].slice(),
/* nameMap */MutableSparseMapService$WonderCommonlib.copy(record[/* nameMap */9]),
/* materialArrayForWorkerInit */materialArrayForWorkerInit.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 */