wonder.js
Version:
121 lines (108 loc) • 4.81 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("../../service/atom/ArrayService.js");
var ConvertCommon$Wonderjs = require("./ConvertCommon.js");
var ArrayService$WonderCommonlib = require("wonder-commonlib/lib/js/src/ArrayService.js");
var _buildDefaultBasicMaterialName = ConvertCommon$Wonderjs.buildDefaultBasicMaterialName;
function _convertColor(colorFactor) {
if (colorFactor !== undefined) {
var colorFactor$1 = colorFactor;
return /* array */[
Caml_array.caml_array_get(colorFactor$1, 0),
Caml_array.caml_array_get(colorFactor$1, 1),
Caml_array.caml_array_get(colorFactor$1, 2)
];
} else {
return /* array */[
1,
1,
1
];
}
}
function convertToBasicMaterials(param) {
var extras = param[/* extras */15];
if (extras !== undefined) {
var basicMaterials = extras[/* basicMaterials */3];
if (basicMaterials !== undefined) {
return ArrayService$WonderCommonlib.reduceOneParami((function (arr, param, index) {
var name = param[/* name */1];
return ArrayService$Wonderjs.push(/* record */[
/* color */_convertColor(param[/* colorFactor */0]),
/* name */name !== undefined ? name : ConvertCommon$Wonderjs.buildDefaultBasicMaterialName(index)
], arr);
}), /* array */[], basicMaterials);
} else {
return /* array */[];
}
} else {
return /* array */[];
}
}
var _buildDefaultLightMaterialName = ConvertCommon$Wonderjs.buildDefaultLightMaterialName;
function _convertPBRData(name, diffuseColorFactor, arr, index) {
return ArrayService$Wonderjs.push(/* record */[
/* diffuseColor */_convertColor(diffuseColorFactor),
/* name */name !== undefined ? name : ConvertCommon$Wonderjs.buildDefaultLightMaterialName(index)
], arr);
}
function _convertMetallicRoughness(name, pbrMetallicRoughness, arr, index) {
if (pbrMetallicRoughness !== undefined) {
return _convertPBRData(name, pbrMetallicRoughness[/* baseColorFactor */0], arr, index);
} else {
return Log$WonderLog.fatal(Log$WonderLog.buildFatalMessage("_convertMetallicRoughness", "pbrMetallicRoughness shouldn\'t be None", "", "", ""));
}
}
function convertToLightMaterials(param) {
var materials = param[/* materials */12];
if (materials !== undefined) {
return ArrayService$WonderCommonlib.reduceOneParami((function (arr, param, index) {
var extensions = param[/* extensions */2];
var name = param[/* name */1];
var pbrMetallicRoughness = param[/* pbrMetallicRoughness */0];
if (extensions !== undefined) {
var khr_materials_pbrSpecularGlossiness = extensions[/* khr_materials_pbrSpecularGlossiness */0];
if (khr_materials_pbrSpecularGlossiness !== undefined) {
return _convertPBRData(name, khr_materials_pbrSpecularGlossiness[/* diffuseFactor */0], arr, index);
} else {
return _convertMetallicRoughness(name, pbrMetallicRoughness, arr, index);
}
} else {
return _convertMetallicRoughness(name, pbrMetallicRoughness, arr, index);
}
}), /* array */[], materials);
} else {
return /* array */[];
}
}
function _getLightMaterialOfMesh(mesh, meshes) {
if (mesh !== undefined) {
var meshData = meshes[mesh];
return ConvertCommon$Wonderjs.getPrimitiveData(meshData[/* primitives */0])[/* material */2];
}
}
function getLightMaterialOfNode(param, meshes) {
var extras = param[/* extras */8];
var mesh = param[/* mesh */2];
if (extras !== undefined) {
var lightMaterial = extras[/* lightMaterial */3];
if (lightMaterial !== undefined) {
return lightMaterial;
} else {
return _getLightMaterialOfMesh(mesh, meshes);
}
} else {
return _getLightMaterialOfMesh(mesh, meshes);
}
}
exports._buildDefaultBasicMaterialName = _buildDefaultBasicMaterialName;
exports._convertColor = _convertColor;
exports.convertToBasicMaterials = convertToBasicMaterials;
exports._buildDefaultLightMaterialName = _buildDefaultLightMaterialName;
exports._convertPBRData = _convertPBRData;
exports._convertMetallicRoughness = _convertMetallicRoughness;
exports.convertToLightMaterials = convertToLightMaterials;
exports._getLightMaterialOfMesh = _getLightMaterialOfMesh;
exports.getLightMaterialOfNode = getLightMaterialOfNode;
/* Log-WonderLog Not a pure module */