wonder.js
Version:
1,362 lines (1,323 loc) • 52.3 kB
JavaScript
'use strict';
var List = require("bs-platform/lib/js/list.js");
var Pervasives = require("bs-platform/lib/js/pervasives.js");
var GLTFUtils$Wonderjs = require("../utils/GLTFUtils.js");
var Json_encode$WonderBsJson = require("wonder-bs-json/lib/js/src/Json_encode.js");
var BuildLightDataSystem$Wonderjs = require("./BuildLightDataSystem.js");
var NameGameObjectMainService$Wonderjs = require("../../service/state/main/gameObject/NameGameObjectMainService.js");
function _encodeNodeTransform(param, list) {
var scale = param[/* scale */4];
var rotation = param[/* rotation */3];
var translation = param[/* translation */2];
var list$1 = translation !== undefined ? /* :: */[
/* tuple */[
"translation",
translation
],
list
] : list;
var list$2 = rotation !== undefined ? /* :: */[
/* tuple */[
"rotation",
rotation
],
list$1
] : list$1;
if (scale !== undefined) {
return /* :: */[
/* tuple */[
"scale",
scale
],
list$2
];
} else {
return list$2;
}
}
function _encodeNodeExtensions(extensions, list) {
if (extensions !== undefined) {
var khr_lights = extensions[/* khr_lights */0];
var extensionList = khr_lights !== undefined ? /* :: */[
/* tuple */[
"KHR_lights",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"light",
khr_lights[/* light */0]
],
/* [] */0
])
],
/* [] */0
] : /* [] */0;
return /* :: */[
/* tuple */[
"extensions",
Json_encode$WonderBsJson.object_(extensionList)
],
list
];
} else {
return list;
}
}
function _encodeNodeMaterial(basicMaterial, lightMaterial, extraList) {
var extraList$1 = basicMaterial !== undefined ? /* :: */[
/* tuple */[
"basicMaterial",
basicMaterial
],
extraList
] : extraList;
if (lightMaterial !== undefined) {
return /* :: */[
/* tuple */[
"lightMaterial",
lightMaterial
],
extraList$1
];
} else {
return extraList$1;
}
}
function _encodeNodeComponentExtra(componentName, component, extraList) {
if (component !== undefined) {
return /* :: */[
/* tuple */[
componentName,
component
],
extraList
];
} else {
return extraList;
}
}
function _encodeNodeExtras(extras, list) {
if (extras !== undefined) {
var match = extras;
var isRoot = match[/* isRoot */8];
var isActive = match[/* isActive */7];
var extraList = _encodeNodeComponentExtra("script", match[/* script */6], _encodeNodeComponentExtra("arcballCameraController", match[/* arcballCameraController */5], _encodeNodeComponentExtra("flyCameraController", match[/* flyCameraController */4], _encodeNodeComponentExtra("meshRenderer", match[/* meshRenderer */1], _encodeNodeComponentExtra("basicCameraView", match[/* basicCameraView */0], /* [] */0)))));
var extraList$1 = _encodeNodeMaterial(match[/* basicMaterial */2], match[/* lightMaterial */3], extraList);
var extraList$2 = isActive !== undefined ? /* :: */[
/* tuple */[
"isActive",
isActive
],
extraList$1
] : extraList$1;
var extraList$3 = isRoot !== undefined ? /* :: */[
/* tuple */[
"isRoot",
isRoot
],
extraList$2
] : extraList$2;
return /* :: */[
/* tuple */[
"extras",
Json_encode$WonderBsJson.object_(extraList$3)
],
list
];
} else {
return list;
}
}
function _encodeNodeComponents(param, list) {
var camera = param[/* camera */6];
var mesh = param[/* mesh */5];
var list$1 = mesh !== undefined ? /* :: */[
/* tuple */[
"mesh",
mesh
],
list
] : list;
var list$2 = camera !== undefined ? /* :: */[
/* tuple */[
"camera",
camera
],
list$1
] : list$1;
var list$3 = _encodeNodeExtras(param[/* extras */7], list$2);
return _encodeNodeExtensions(param[/* extensions */8], list$3);
}
function _encodeNodes(nodeDataArr, state) {
return /* tuple */[
"nodes",
nodeDataArr.map((function (nodeData) {
var children = nodeData[/* children */1];
var match = NameGameObjectMainService$Wonderjs.getName(nodeData[/* gameObject */0], state);
var list = match !== undefined ? /* :: */[
/* tuple */[
"name",
match
],
/* [] */0
] : /* [] */0;
var list$1 = children !== undefined ? /* :: */[
/* tuple */[
"children",
children
],
list
] : list;
var list$2 = _encodeNodeComponents(nodeData, _encodeNodeTransform(nodeData, list$1));
return Json_encode$WonderBsJson.object_(List.rev(list$2));
}))
];
}
function _encodePerspectiveCamera(param) {
var aspect = param[/* aspect */3];
var far = param[/* far */1];
var perspectiveList_000 = /* tuple */[
"znear",
param[/* near */0]
];
var perspectiveList_001 = /* :: */[
/* tuple */[
"yfov",
param[/* fovy */2]
],
/* [] */0
];
var perspectiveList = /* :: */[
perspectiveList_000,
perspectiveList_001
];
var perspectiveList$1 = far !== undefined ? /* :: */[
/* tuple */[
"zfar",
far
],
perspectiveList
] : perspectiveList;
if (aspect !== undefined) {
return /* :: */[
/* tuple */[
"aspectRatio",
aspect
],
perspectiveList$1
];
} else {
return perspectiveList$1;
}
}
function _encodeCameras(cameraProjectionDataArr) {
return /* tuple */[
"cameras",
cameraProjectionDataArr.map((function (param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"type",
param[/* type_ */0]
],
/* :: */[
/* tuple */[
"perspective",
Json_encode$WonderBsJson.object_(_encodePerspectiveCamera(param[/* perspective */1]))
],
/* [] */0
]
]);
}))
];
}
function _encodeBasicCameraViewExtra(basicCameraViewDataArr, extraList) {
var match = basicCameraViewDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"basicCameraViews",
basicCameraViewDataArr.map((function (data) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"isActive",
data[/* isActive */0]
],
/* [] */0
]);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeMeshRendererExtra(meshRendererDataArr, extraList) {
var match = meshRendererDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"meshRenderers",
meshRendererDataArr.map((function (data) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"isRender",
data[/* isRender */1]
],
/* :: */[
/* tuple */[
"drawMode",
data[/* drawMode */0]
],
/* [] */0
]
]);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeBasicMaterialExtra(basicMaterialDataArr, extraList) {
var match = basicMaterialDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"basicMaterials",
basicMaterialDataArr.map((function (data) {
var name = data[/* name */1];
var colorFactor = data[/* colorFactor */0];
var list = colorFactor !== undefined ? /* :: */[
/* tuple */[
"colorFactor",
colorFactor
],
/* [] */0
] : /* [] */0;
return Json_encode$WonderBsJson.object_(name !== undefined ? /* :: */[
/* tuple */[
"name",
name
],
list
] : list);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeFlyCameraControllerExtra(flyCameraControllerDataArr, extraList) {
var match = flyCameraControllerDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"flyCameraControllers",
flyCameraControllerDataArr.map((function (data) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"moveSpeed",
data[/* moveSpeed */0]
],
/* :: */[
/* tuple */[
"rotateSpeed",
data[/* rotateSpeed */1]
],
/* :: */[
/* tuple */[
"wheelSpeed",
data[/* wheelSpeed */2]
],
/* [] */0
]
]
]);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeArcballCameraControllerExtra(arcballCameraControllerDataArr, extraList) {
var match = arcballCameraControllerDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"arcballCameraControllers",
arcballCameraControllerDataArr.map((function (data) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"distance",
data[/* distance */0]
],
/* :: */[
/* tuple */[
"minDistance",
data[/* minDistance */1]
],
/* :: */[
/* tuple */[
"phi",
data[/* phi */2]
],
/* :: */[
/* tuple */[
"theta",
data[/* theta */3]
],
/* :: */[
/* tuple */[
"thetaMargin",
data[/* thetaMargin */4]
],
/* :: */[
/* tuple */[
"target",
data[/* target */5]
],
/* :: */[
/* tuple */[
"moveSpeedX",
data[/* moveSpeedX */6]
],
/* :: */[
/* tuple */[
"moveSpeedY",
data[/* moveSpeedY */7]
],
/* :: */[
/* tuple */[
"rotateSpeed",
data[/* rotateSpeed */8]
],
/* :: */[
/* tuple */[
"wheelSpeed",
data[/* wheelSpeed */9]
],
/* [] */0
]
]
]
]
]
]
]
]
]
]);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeScriptExtra(scriptDataArr, extraList) {
var match = scriptDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"scripts",
scriptDataArr.map((function (data) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"isActive",
data[/* isActive */0]
],
/* :: */[
/* tuple */[
"eventFunctionDataMap",
JSON.parse(data[/* eventFunctionDataMapStr */1])
],
/* :: */[
/* tuple */[
"attributeMap",
JSON.parse(data[/* attributeMapStr */2])
],
/* [] */0
]
]
]);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeCubemapTextures(textureDataArr, extraList) {
var match = textureDataArr.length;
if (match !== 0) {
return /* :: */[
/* tuple */[
"cubemapTextures",
textureDataArr.map((function (data) {
var name = data[/* name */0];
var list = name !== undefined ? /* :: */[
/* tuple */[
"name",
name
],
/* [] */0
] : /* [] */0;
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"sampler",
data[/* sampler */1]
],
/* :: */[
/* tuple */[
"flipY",
data[/* flipY */20]
],
/* :: */[
/* tuple */[
"pxSource",
data[/* pxSource */2]
],
/* :: */[
/* tuple */[
"nxSource",
data[/* nxSource */3]
],
/* :: */[
/* tuple */[
"pySource",
data[/* pySource */4]
],
/* :: */[
/* tuple */[
"nySource",
data[/* nySource */5]
],
/* :: */[
/* tuple */[
"pzSource",
data[/* pzSource */6]
],
/* :: */[
/* tuple */[
"nzSource",
data[/* nzSource */7]
],
/* :: */[
/* tuple */[
"pxFormat",
data[/* pxFormat */8]
],
/* :: */[
/* tuple */[
"nxFormat",
data[/* nxFormat */9]
],
/* :: */[
/* tuple */[
"pyFormat",
data[/* pyFormat */10]
],
/* :: */[
/* tuple */[
"nyFormat",
data[/* nyFormat */11]
],
/* :: */[
/* tuple */[
"pzFormat",
data[/* pzFormat */12]
],
/* :: */[
/* tuple */[
"nzFormat",
data[/* nzFormat */13]
],
/* :: */[
/* tuple */[
"pxType",
data[/* pxType */14]
],
/* :: */[
/* tuple */[
"nxType",
data[/* nxType */15]
],
/* :: */[
/* tuple */[
"pyType",
data[/* pyType */16]
],
/* :: */[
/* tuple */[
"nyType",
data[/* nyType */17]
],
/* :: */[
/* tuple */[
"pzType",
data[/* pzType */18]
],
/* :: */[
/* tuple */[
"nzType",
data[/* nzType */19]
],
list
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]);
}))
],
extraList
];
} else {
return extraList;
}
}
function _encodeExtras(basicCameraViewDataArr, meshRendererDataArr, basicMaterialDataArr, flyCameraControllerDataArr, arcballCameraControllerDataArr, scriptDataArr, cubemapTextureDataArr) {
return /* tuple */[
"extras",
Json_encode$WonderBsJson.object_(_encodeCubemapTextures(cubemapTextureDataArr, _encodeScriptExtra(scriptDataArr, _encodeArcballCameraControllerExtra(arcballCameraControllerDataArr, _encodeFlyCameraControllerExtra(flyCameraControllerDataArr, _encodeBasicMaterialExtra(basicMaterialDataArr, _encodeMeshRendererExtra(meshRendererDataArr, _encodeBasicCameraViewExtra(basicCameraViewDataArr, /* [] */0))))))))
];
}
function _encodeIMGUIExtendData(param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"customControlData",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"funcMap",
param[/* customControlData */0][/* funcMap */0]
],
/* [] */0
])
],
/* :: */[
/* tuple */[
"skinData",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"allSkinDataMap",
param[/* skinData */1][/* allSkinDataMap */0]
],
/* [] */0
])
],
/* [] */0
]
]);
}
function _encodeIMGUIAssetData(param) {
var customImagesData = param[/* customImagesData */1];
var fontData = param[/* fontData */0];
var list;
if (fontData !== undefined) {
var match = fontData;
var bitmapData = match[/* bitmapData */1];
var fntData = match[/* fntData */0];
list = /* :: */[
/* tuple */[
"fontData",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"fntData",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"name",
fntData[/* name */0]
],
/* :: */[
/* tuple */[
"content",
fntData[/* content */1]
],
/* [] */0
]
])
],
/* :: */[
/* tuple */[
"bitmapData",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"name",
bitmapData[/* name */0]
],
/* :: */[
/* tuple */[
"bufferView",
bitmapData[/* bufferView */1]
],
/* [] */0
]
])
],
/* [] */0
]
])
],
/* [] */0
];
} else {
list = /* [] */0;
}
return Json_encode$WonderBsJson.object_(customImagesData !== undefined ? /* :: */[
/* tuple */[
"customImages",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"customImages",
customImagesData[/* customImages */0].map((function (param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"id",
param[/* id */0]
],
/* :: */[
/* tuple */[
"bufferView",
param[/* bufferView */1]
],
/* :: */[
/* tuple */[
"mimeType",
param[/* mimeType */2]
],
/* [] */0
]
]
]);
}))
],
/* [] */0
])
],
list
] : list);
}
function _encodeIMGUICustomData(customData) {
return customData;
}
function _encodeIMGUIExecData(param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"execFuncDataArr",
param[/* execFuncDataArr */0].map((function (param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"execFunc",
param[/* execFunc */0]
],
/* :: */[
/* tuple */[
"customData",
param[/* customData */1]
],
/* :: */[
/* tuple */[
"execOrder",
param[/* execOrder */2]
],
/* :: */[
/* tuple */[
"name",
param[/* name */3]
],
/* [] */0
]
]
]
]);
}))
],
/* [] */0
]);
}
function _encodeSceneExtras(param, skyboxCubemapTextureIndexOpt) {
var extraList_000 = /* tuple */[
"imgui",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"assetData",
_encodeIMGUIAssetData(param[2])
],
/* :: */[
/* tuple */[
"extendData",
_encodeIMGUIExtendData(param[1])
],
/* :: */[
/* tuple */[
"execData",
_encodeIMGUIExecData(param[0])
],
/* [] */0
]
]
])
];
var extraList = /* :: */[
extraList_000,
/* [] */0
];
var extraList$1 = skyboxCubemapTextureIndexOpt !== undefined ? /* :: */[
/* tuple */[
"skybox",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"cubemap",
skyboxCubemapTextureIndexOpt
],
/* [] */0
])
],
extraList
] : extraList;
return /* :: */[
/* tuple */[
"extras",
Json_encode$WonderBsJson.object_(extraList$1)
],
/* [] */0
];
}
function _encodeScenes(extensionsUsedArr, param, state) {
var list_000 = /* tuple */[
"nodes",
/* array */[0]
];
var list = /* :: */[
list_000,
/* [] */0
];
var match = extensionsUsedArr.includes("KHR_lights");
var list$1 = match ? /* :: */[
/* tuple */[
"extensions",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"KHR_lights",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"light",
BuildLightDataSystem$Wonderjs.getAmbientLightIndex(param[0])
],
/* [] */0
])
],
/* [] */0
])
],
list
] : list;
var list$2 = Pervasives.$at(list$1, _encodeSceneExtras(param[1], param[2]));
return /* tuple */[
"scenes",
/* array */[Json_encode$WonderBsJson.object_(list$2)]
];
}
function _encodeLightMaterials(materialDataArr) {
return /* tuple */[
"materials",
materialDataArr.map((function (param) {
var name = param[/* name */2];
var baseColorTexture = param[/* baseColorTexture */1];
var baseColorFactor = param[/* baseColorFactor */0];
var list = name !== undefined ? /* :: */[
/* tuple */[
"name",
name
],
/* [] */0
] : /* [] */0;
var pbrMetallicRoughnessList = baseColorFactor !== undefined ? /* :: */[
/* tuple */[
"baseColorFactor",
baseColorFactor
],
/* [] */0
] : /* [] */0;
var pbrMetallicRoughnessList$1 = baseColorTexture !== undefined ? /* :: */[
/* tuple */[
"baseColorTexture",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"index",
baseColorTexture
],
/* [] */0
])
],
pbrMetallicRoughnessList
] : pbrMetallicRoughnessList;
var list_000 = /* tuple */[
"pbrMetallicRoughness",
Json_encode$WonderBsJson.object_(pbrMetallicRoughnessList$1)
];
var list$1 = /* :: */[
list_000,
list
];
return Json_encode$WonderBsJson.object_(List.rev(list$1));
}))
];
}
function _encodeBasicSourceTextures(textureDataArr) {
return /* tuple */[
"textures",
textureDataArr.map((function (param) {
var name = param[/* name */0];
var list = name !== undefined ? /* :: */[
/* tuple */[
"name",
name
],
/* [] */0
] : /* [] */0;
var list_000 = /* tuple */[
"sampler",
param[/* sampler */1]
];
var list_001 = /* :: */[
/* tuple */[
"source",
param[/* source */2]
],
list
];
var list$1 = /* :: */[
list_000,
list_001
];
var extraList_000 = /* tuple */[
"flipY",
param[/* flipY */5]
];
var extraList_001 = /* :: */[
/* tuple */[
"format",
param[/* format */3]
],
/* :: */[
/* tuple */[
"type_",
param[/* type_ */4]
],
/* [] */0
]
];
var extraList = /* :: */[
extraList_000,
extraList_001
];
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"extras",
Json_encode$WonderBsJson.object_(extraList)
],
list$1
]);
}))
];
}
function _encodeSamplers(samplerDataArr) {
return /* tuple */[
"samplers",
samplerDataArr.map((function (param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"wrapS",
param[/* wrapS */0]
],
/* :: */[
/* tuple */[
"wrapT",
param[/* wrapT */1]
],
/* :: */[
/* tuple */[
"magFilter",
param[/* magFilter */2]
],
/* :: */[
/* tuple */[
"minFilter",
param[/* minFilter */3]
],
/* [] */0
]
]
]
]);
}))
];
}
function _encodeImages(imageUint8DataArr) {
return /* tuple */[
"images",
imageUint8DataArr.map((function (param) {
var name = param[/* name */0];
var list_000 = /* tuple */[
"bufferView",
param[/* bufferView */1]
];
var list_001 = /* :: */[
/* tuple */[
"mimeType",
param[/* mimeType */2]
],
/* [] */0
];
var list = /* :: */[
list_000,
list_001
];
return Json_encode$WonderBsJson.object_(name !== undefined ? /* :: */[
/* tuple */[
"name",
name
],
list
] : list);
}))
];
}
function _encodeAttributes(position, normal, texCoord_0, indices) {
var attributesList_000 = /* tuple */[
"POSITION",
position
];
var attributesList = /* :: */[
attributesList_000,
/* [] */0
];
var attributesList$1 = normal !== undefined ? /* :: */[
/* tuple */[
"NORMAL",
normal
],
attributesList
] : attributesList;
var attributesList$2 = texCoord_0 !== undefined ? /* :: */[
/* tuple */[
"TEXCOORD_0",
texCoord_0
],
attributesList$1
] : attributesList$1;
return /* :: */[
/* tuple */[
"attributes",
Json_encode$WonderBsJson.object_(List.rev(attributesList$2))
],
/* :: */[
/* tuple */[
"indices",
indices
],
/* [] */0
]
];
}
function _encodeMeshes(meshDataArr) {
return /* tuple */[
"meshes",
meshDataArr.map((function (param) {
var primitives = param[/* primitives */0];
var attributes = primitives[/* attributes */0];
var material = primitives[/* material */2];
var name = param[/* name */1];
var primitivesList = _encodeAttributes(attributes[/* position */0], attributes[/* normal */1], attributes[/* texCoord_0 */2], primitives[/* indices */1]);
var primitivesList$1 = material !== undefined ? List.append(/* :: */[
/* tuple */[
"material",
material
],
/* [] */0
], primitivesList) : primitivesList;
var primitives_001 = /* array */[Json_encode$WonderBsJson.object_(primitivesList$1)];
var primitives$1 = /* tuple */[
"primitives",
primitives_001
];
if (name !== undefined) {
return Json_encode$WonderBsJson.object_(/* :: */[
primitives$1,
/* :: */[
/* tuple */[
"name",
name
],
/* [] */0
]
]);
} else {
return Json_encode$WonderBsJson.object_(/* :: */[
primitives$1,
/* [] */0
]);
}
}))
];
}
function _encodeExtensionsUsed(extensionsUsedArr) {
return /* tuple */[
"extensionsUsedArr",
extensionsUsedArr
];
}
function _encodeLights(param) {
var range = param[/* range */6];
var quadraticAttenuation = param[/* quadraticAttenuation */5];
var linearAttenuation = param[/* linearAttenuation */4];
var constantAttenuation = param[/* constantAttenuation */3];
var intensity = param[/* intensity */2];
var color = param[/* color */1];
var khrLightsExtensionList_000 = /* tuple */[
"type",
param[/* type_ */0]
];
var khrLightsExtensionList = /* :: */[
khrLightsExtensionList_000,
/* [] */0
];
var khrLightsExtensionList$1 = color !== undefined ? /* :: */[
/* tuple */[
"color",
color
],
khrLightsExtensionList
] : khrLightsExtensionList;
var khrLightsExtensionList$2 = intensity !== undefined ? /* :: */[
/* tuple */[
"intensity",
intensity
],
khrLightsExtensionList$1
] : khrLightsExtensionList$1;
var khrLightsExtensionList$3 = constantAttenuation !== undefined ? /* :: */[
/* tuple */[
"constantAttenuation",
constantAttenuation
],
khrLightsExtensionList$2
] : khrLightsExtensionList$2;
var khrLightsExtensionList$4 = linearAttenuation !== undefined ? /* :: */[
/* tuple */[
"linearAttenuation",
linearAttenuation
],
khrLightsExtensionList$3
] : khrLightsExtensionList$3;
var khrLightsExtensionList$5 = quadraticAttenuation !== undefined ? /* :: */[
/* tuple */[
"quadraticAttenuation",
quadraticAttenuation
],
khrLightsExtensionList$4
] : khrLightsExtensionList$4;
if (range !== undefined) {
return /* :: */[
/* tuple */[
"range",
range
],
khrLightsExtensionList$5
];
} else {
return khrLightsExtensionList$5;
}
}
function _encodeExtensions(lightDataArr) {
return /* tuple */[
"extensions",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"KHR_lights",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"lights",
lightDataArr.map((function (lightData) {
return Json_encode$WonderBsJson.object_(_encodeLights(lightData));
}))
],
/* [] */0
])
],
/* [] */0
])
];
}
function _encodeBuffers(totalByteLength) {
return /* tuple */[
"buffers",
/* array */[Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"byteLength",
totalByteLength
],
/* [] */0
])]
];
}
function _encodeBufferViews(bufferViewDataArr) {
return /* tuple */[
"bufferViews",
bufferViewDataArr.map((function (param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"buffer",
param[/* buffer */0]
],
/* :: */[
/* tuple */[
"byteOffset",
param[/* byteOffset */1]
],
/* :: */[
/* tuple */[
"byteLength",
param[/* byteLength */2]
],
/* [] */0
]
]
]);
}))
];
}
function _encodeAccessors(accessorDataArr) {
return /* tuple */[
"accessors",
accessorDataArr.map((function (param) {
return Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"bufferView",
param[/* bufferView */0]
],
/* :: */[
/* tuple */[
"componentType",
param[/* componentType */1]
],
/* :: */[
/* tuple */[
"count",
param[/* count */2]
],
/* :: */[
/* tuple */[
"type",
param[/* type_ */3]
],
/* [] */0
]
]
]
]);
}))
];
}
function _encodeAsset(param) {
return /* tuple */[
"asset",
Json_encode$WonderBsJson.object_(/* :: */[
/* tuple */[
"version",
"2.0"
],
/* :: */[
/* tuple */[
"generator",
GLTFUtils$Wonderjs.getGenerator(/* () */0)
],
/* [] */0
]
])
];
}
function _hasExtensions(lightDataArr) {
return lightDataArr.length > 0;
}
function encode(totalByteLength, param, state) {
var extensionsUsedArr = param[19];
var lightDataArr = param[15];
var list_000 = _encodeAsset(/* () */0);
var list_001 = /* :: */[
/* tuple */[
"scene",
0
],
/* :: */[
_encodeScenes(extensionsUsedArr, /* tuple */[
lightDataArr,
param[17],
param[18]
], state),
/* :: */[
_encodeCameras(param[12]),
/* :: */[
_encodeExtras(param[11], param[4], param[5], param[13], param[14], param[16], param[8]),
/* :: */[
_encodeNodes(param[0], state),
/* :: */[
_encodeLightMaterials(param[6]),
/* :: */[
_encodeBasicSourceTextures(param[7]),
/* :: */[
_encodeSamplers(param[9]),
/* :: */[
_encodeImages(param[10]),
/* :: */[
_encodeBuffers(totalByteLength),
/* :: */[
_encodeBufferViews(param[1]),
/* :: */[
_encodeAccessors(param[2]),
/* :: */[
_encodeMeshes(param[3]),
/* [] */0
]
]
]
]
]
]
]
]
]
]
]
]
];
var list = /* :: */[
list_000,
list_001
];
var match = extensionsUsedArr.length > 0;
var list$1 = match ? /* :: */[
/*