wonder.js
Version:
137 lines (127 loc) • 7.06 kB
JavaScript
;
var Caml_array = require("bs-platform/lib/js/caml_array.js");
var Log$WonderLog = require("wonder-log/lib/js/src/Log.js");
var ArrayService$Wonderjs = require("../../../../../atom/ArrayService.js");
var OptionService$Wonderjs = require("../../../../../atom/OptionService.js");
var StateDataMain$Wonderjs = require("../../../../main/data/StateDataMain.js");
var JobConfigService$Wonderjs = require("../../../../../primitive/JobConfigService.js");
var IsDebugMainService$Wonderjs = require("../../../../main/state/IsDebugMainService.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var GetDataRenderConfigService$Wonderjs = require("../../../../../record/all/renderConfig/GetDataRenderConfigService.js");
function _findFirstShaderData(shaderLibName, shaderLibs) {
return ArrayService$Wonderjs.unsafeFindFirst(shaderLibs, shaderLibName, (function (item) {
return item[/* name */0] === shaderLibName;
}));
}
function _getMaterialShaderLibDataArrByGroup(groups, name, shaderLibs, resultDataArr) {
return resultDataArr.concat(ArrayService$Wonderjs.unsafeFindFirst(groups, name, (function (item) {
return item[/* name */0] === name;
}))[/* value */1].map((function (name) {
return _findFirstShaderData(name, shaderLibs);
})));
}
function handleUnknownNameWhenGetMaterialShaderLibDataArrByStaticBranch(name, staticBranchs) {
var partial_arg = "staticBranchs";
Log$WonderLog.debugJson((function (param) {
return Log$WonderLog.buildDebugJsonMessage(partial_arg, staticBranchs, param);
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData));
return Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("_getMaterialShaderLibDataArrByStaticBranch", "unknown name:" + (String(name) + ""), "", "", ""));
}
function getMaterialShaderLibDataArrByStaticBranchInstance(param, param$1, resultDataArr) {
var value = param$1[1];
return ArrayService$Wonderjs.push(_findFirstShaderData(param[0] ? (
param[1] ? Caml_array.caml_array_get(value, 1) : Caml_array.caml_array_get(value, 2)
) : Caml_array.caml_array_get(value, 0), param$1[0]), resultDataArr);
}
function getMaterialShaderLibDataArrByDynamicBranch(param, param$1, isPassFunc, resultDataArr) {
var name = param[1];
var dynamicBranchData = JobConfigService$Wonderjs.unsafeFindFirst(param$1[0], name, (function (item) {
return JobConfigService$Wonderjs.filterTargetName(item[/* name */0], name);
}));
var match = isPassFunc(param[0], dynamicBranchData[/* condition */1], param$1[2]);
var dynamicBranchShaderLibNameOption = match ? GetDataRenderConfigService$Wonderjs.getPass(dynamicBranchData) : GetDataRenderConfigService$Wonderjs.getFail(dynamicBranchData);
var match$1 = OptionService$Wonderjs.isJsonSerializedValueNone(dynamicBranchShaderLibNameOption);
if (match$1) {
return resultDataArr;
} else {
return ArrayService$Wonderjs.push(_findFirstShaderData(OptionService$Wonderjs.unsafeGetJsonSerializedValue(dynamicBranchShaderLibNameOption), param$1[1]), resultDataArr);
}
}
function getMaterialShaderLibDataArrByType(param, param$1, param$2, resultDataArr) {
var shaderLibs = param$1[0];
var name = param[3];
var type_ = param[1];
switch (type_) {
case "dynamic_branch" :
return getMaterialShaderLibDataArrByDynamicBranch(/* tuple */[
param[0],
name
], /* tuple */[
param$1[2],
shaderLibs,
param$1[3]
], param$2[1], resultDataArr);
case "group" :
return _getMaterialShaderLibDataArrByGroup(param[2], name, shaderLibs, resultDataArr);
case "static_branch" :
return param$2[0](/* tuple */[
name,
param[4],
param[5]
], /* tuple */[
param$1[1],
shaderLibs
], resultDataArr);
default:
var partial_arg = "shaderLibs";
Log$WonderLog.debugJson((function (param) {
return Log$WonderLog.buildDebugJsonMessage(partial_arg, shaderLibs, param);
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData));
return Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("_getMaterialShaderLibDataArrByType", "unknown type_:" + (String(type_) + ""), "", "", ""));
}
}
function getMaterialShaderLibDataArr(param, param$1, param$2, state) {
var isPassFunc = param$2[1];
var getMaterialShaderLibDataArrByStaticBranchFunc = param$2[0];
var shaderLibs = param$1[2];
var match = param$1[0];
var groups = match[/* groups */2];
var dynamicBranchs = match[/* dynamicBranchs */1];
var staticBranchs = match[/* staticBranchs */0];
var isSupportInstance = param[2];
var isSourceInstance = param[1];
var materialIndex = param[0];
return ArrayService$WonderCommonlib.reduceOneParam((function (resultDataArr, param) {
var name = param[/* name */1];
var type_ = param[/* type_ */0];
var match = OptionService$Wonderjs.isJsonSerializedValueNone(type_);
if (match) {
return ArrayService$Wonderjs.push(_findFirstShaderData(name, shaderLibs), resultDataArr);
} else {
return getMaterialShaderLibDataArrByType(/* tuple */[
materialIndex,
OptionService$Wonderjs.unsafeGetJsonSerializedValue(type_),
groups,
name,
isSourceInstance,
isSupportInstance
], /* tuple */[
shaderLibs,
staticBranchs,
dynamicBranchs,
state
], /* tuple */[
getMaterialShaderLibDataArrByStaticBranchFunc,
isPassFunc
], resultDataArr);
}
}), ArrayService$WonderCommonlib.createEmpty(/* () */0), param$1[1]);
}
exports._findFirstShaderData = _findFirstShaderData;
exports._getMaterialShaderLibDataArrByGroup = _getMaterialShaderLibDataArrByGroup;
exports.handleUnknownNameWhenGetMaterialShaderLibDataArrByStaticBranch = handleUnknownNameWhenGetMaterialShaderLibDataArrByStaticBranch;
exports.getMaterialShaderLibDataArrByStaticBranchInstance = getMaterialShaderLibDataArrByStaticBranchInstance;
exports.getMaterialShaderLibDataArrByDynamicBranch = getMaterialShaderLibDataArrByDynamicBranch;
exports.getMaterialShaderLibDataArrByType = getMaterialShaderLibDataArrByType;
exports.getMaterialShaderLibDataArr = getMaterialShaderLibDataArr;
/* Log-WonderLog Not a pure module */