wonder.js
Version:
71 lines (65 loc) • 3.16 kB
JavaScript
;
var Js_option = require("bs-platform/lib/js/js_option.js");
var ArrayService$Wonderjs = require("../../service/atom/ArrayService.js");
var ConvertCommon$Wonderjs = require("./ConvertCommon.js");
var OptionService$Wonderjs = require("../../service/atom/OptionService.js");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions.js");
var ConvertMeshUtils$Wonderjs = require("./utils/ConvertMeshUtils.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
function _convertByMesh(meshes, geometryGameObjectIndices, geometryIndices) {
return geometryGameObjectIndices.map((function (param, index) {
var geometryIndex = geometryIndices[index];
var match = meshes[geometryIndex];
var primitive = ConvertCommon$Wonderjs.getPrimitiveData(match[/* primitives */0]);
var mode = primitive[/* mode */3];
var match$1 = ConvertMeshUtils$Wonderjs.doesPrimitiveHasMaterial(primitive);
if (match$1) {
var tmp;
if (mode !== undefined) {
var match$2 = mode;
if (match$2 > 6 || match$2 < 0) {
throw [
Caml_builtin_exceptions.match_failure,
/* tuple */[
"ConvertMeshRenderersSystem.re",
16,
15
]
];
} else {
tmp = match$2;
}
} else {
tmp = /* Triangles */4;
}
return /* record */[
/* drawMode */tmp,
/* isRender */true
];
}
}));
}
function convertToMeshRenderers(param, param$1) {
var extras = param$1[/* extras */15];
var meshes = param$1[/* meshes */11];
var geometryIndices = param[/* componentIndices */1];
var geometryGameObjectIndices = param[/* gameObjectIndices */0];
if (extras !== undefined) {
var meshRenderers = extras[/* meshRenderers */4];
if (Js_option.isSome(meshRenderers) && OptionService$Wonderjs.unsafeGet(meshRenderers).length > 0) {
return ArrayService$WonderCommonlib.reduceOneParami((function (arr, param, index) {
return ArrayService$Wonderjs.push(/* record */[
/* drawMode */param[/* drawMode */0],
/* isRender */param[/* isRender */1]
], arr);
}), /* array */[], OptionService$Wonderjs.unsafeGet(meshRenderers));
} else {
return _convertByMesh(meshes, geometryGameObjectIndices, geometryIndices);
}
} else {
return _convertByMesh(meshes, geometryGameObjectIndices, geometryIndices);
}
}
exports._convertByMesh = _convertByMesh;
exports.convertToMeshRenderers = convertToMeshRenderers;
/* ArrayService-Wonderjs Not a pure module */