wonder.js
Version:
52 lines (46 loc) • 2 kB
JavaScript
;
var ArrayService$Wonderjs = require("../../../atom/ArrayService.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var ShaderIndicesService$Wonderjs = require("../../../primitive/material/ShaderIndicesService.js");
function _handleShareMaterial(sourceComponent, countRangeArr, param) {
return /* tuple */[
param[1],
countRangeArr.map((function (param) {
return sourceComponent;
}))
];
}
function _handleNotShareMaterial(sourceComponent, countRangeArr, param, param$1) {
var state = param$1[1];
var setShaderIndexFunc = param[3];
var setDataFunc = param[2];
var createFunc = param[0];
var shaderIndex = ShaderIndicesService$Wonderjs.getShaderIndex(sourceComponent, param$1[0]);
var dataTuple = param[1](sourceComponent, state);
return ArrayService$WonderCommonlib.reduceOneParam((function (param, param$1) {
var match = createFunc(param[0]);
var index = match[1];
var state = setDataFunc(index, dataTuple, match[0]);
var state$1 = setShaderIndexFunc(index, shaderIndex, state);
return /* tuple */[
state$1,
ArrayService$Wonderjs.push(index, param[1])
];
}), /* tuple */[
state,
/* array */[]
], countRangeArr);
}
function handleCloneComponent(param, funcTuple, stateTuple) {
var countRangeArr = param[1];
var sourceComponent = param[0];
if (param[2]) {
return _handleShareMaterial(sourceComponent, countRangeArr, stateTuple);
} else {
return _handleNotShareMaterial(sourceComponent, countRangeArr, funcTuple, stateTuple);
}
}
exports._handleShareMaterial = _handleShareMaterial;
exports._handleNotShareMaterial = _handleNotShareMaterial;
exports.handleCloneComponent = handleCloneComponent;
/* ArrayService-Wonderjs Not a pure module */