wonder.js
Version:
65 lines (57 loc) • 3.4 kB
JavaScript
'use strict';
var Log$WonderLog = require("wonder-log/lib/js/src/Log.js");
var Contract$WonderLog = require("wonder-log/lib/js/src/Contract.js");
var StateDataMain$Wonderjs = require("../../../state/main/data/StateDataMain.js");
var ArrayMapService$Wonderjs = require("../../../atom/ArrayMapService.js");
var IsDebugMainService$Wonderjs = require("../../../state/main/state/IsDebugMainService.js");
var DefaultTypeArrayValueService$Wonderjs = require("../../../primitive/buffer/DefaultTypeArrayValueService.js");
var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js");
var HandleUniformShaderCachableService$Wonderjs = require("../sender/uniform/HandleUniformShaderCachableService.js");
var HandleUniformShaderNoCachableService$Wonderjs = require("../sender/uniform/HandleUniformShaderNoCachableService.js");
var HandleUniformShaderCachableFunctionService$Wonderjs = require("../sender/uniform/HandleUniformShaderCachableFunctionService.js");
function genereateShaderIndex(record) {
var index = record[/* index */0];
record[/* index */0] = index + 1 | 0;
return Contract$WonderLog.ensureCheck((function (r) {
var defaultShaderIndex = DefaultTypeArrayValueService$Wonderjs.getDefaultShaderIndex(/* () */0);
return Contract$WonderLog.test(Log$WonderLog.buildAssertMessage("not equal default shader index:" + (String(defaultShaderIndex) + " "), "equal"), (function (param) {
return Contract$WonderLog.Operators[/* <>= */3](r, defaultShaderIndex);
}));
}), IsDebugMainService$Wonderjs.getIsDebug(StateDataMain$Wonderjs.stateData), index);
}
function _hasMaterialUseShader(shaderIndex, material, materialsMap) {
var match = MutableSparseMapService$WonderCommonlib.get(shaderIndex, materialsMap);
if (match !== undefined) {
return match.length > 0;
} else {
return false;
}
}
function _removeShaderIndexUsedInSendUniformShaderDataJob(shaderIndex, glslSenderRecord) {
return HandleUniformShaderNoCachableService$Wonderjs.removeData(shaderIndex, HandleUniformShaderCachableService$Wonderjs.removeData(shaderIndex, HandleUniformShaderCachableFunctionService$Wonderjs.removeData(shaderIndex, glslSenderRecord)));
}
function removeShaderIndexFromMaterial(shaderIndex, material, shaderRecord, glslSenderRecord) {
var materialsMap = shaderRecord[/* materialsMap */3];
ArrayMapService$Wonderjs.removeValue(shaderIndex, material, materialsMap);
var match = _hasMaterialUseShader(shaderIndex, material, materialsMap);
if (match) {
return /* tuple */[
shaderRecord,
glslSenderRecord
];
} else {
return /* tuple */[
shaderRecord,
_removeShaderIndexUsedInSendUniformShaderDataJob(shaderIndex, glslSenderRecord)
];
}
}
function isDefaultShaderIndex(shaderIndex) {
return shaderIndex === DefaultTypeArrayValueService$Wonderjs.getDefaultShaderIndex(/* () */0);
}
exports.genereateShaderIndex = genereateShaderIndex;
exports._hasMaterialUseShader = _hasMaterialUseShader;
exports._removeShaderIndexUsedInSendUniformShaderDataJob = _removeShaderIndexUsedInSendUniformShaderDataJob;
exports.removeShaderIndexFromMaterial = removeShaderIndexFromMaterial;
exports.isDefaultShaderIndex = isDefaultShaderIndex;
/* Log-WonderLog Not a pure module */