UNPKG

wonder.js

Version:
788 lines (785 loc) 202 kB
'use strict'; var Curry = require("bs-platform/lib/js/curry.js"); var Sinon = require("wonder-bs-sinon/lib/js/src/sinon.js"); var Sinon$1 = require("sinon"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Wonder_jest = require("wonder-bs-jest/lib/js/src/wonder_jest.js"); var GLBTool$Wonderjs = require("../tool/GLBTool.js"); var GLTFTool$Wonderjs = require("../tool/GLTFTool.js"); var SceneAPI$Wonderjs = require("../../../../../src/api/SceneAPI.js"); var TestTool$Wonderjs = require("../../../../tool/TestTool.js"); var CameraTool$Wonderjs = require("../../../../tool/service/camera/CameraTool.js"); var ImageUtils$Wonderjs = require("../../../../../src/asset/utils/ImageUtils.js"); var ScriptTool$Wonderjs = require("../../../../tool/service/script/ScriptTool.js"); var SkyboxTool$Wonderjs = require("../../job/tool/SkyboxTool.js"); var ConvertTool$Wonderjs = require("../tool/ConvertTool.js"); var GeometryAPI$Wonderjs = require("../../../../../src/api/geometry/GeometryAPI.js"); var SettingTool$Wonderjs = require("../../../../tool/service/setting/SettingTool.js"); var GeometryTool$Wonderjs = require("../../../../tool/service/geometry/GeometryTool.js"); var TransformAPI$Wonderjs = require("../../../../../src/api/TransformAPI.js"); var ExecIMGUITool$Wonderjs = require("../../../../tool/service/imgui/ExecIMGUITool.js"); var GameObjectAPI$Wonderjs = require("../../../../../src/api/GameObjectAPI.js"); var OptionService$Wonderjs = require("../../../../../src/service/atom/OptionService.js"); var PointLightAPI$Wonderjs = require("../../../../../src/api/light/PointLightAPI.js"); var GameObjectTool$Wonderjs = require("../../../../tool/service/gameObject/GameObjectTool.js"); var PointLightTool$Wonderjs = require("../../../../tool/service/light/PointLightTool.js"); var BoxGeometryTool$Wonderjs = require("../../../../tool/service/geometry/BoxGeometryTool.js"); var ExtendIMGUITool$Wonderjs = require("../../../../tool/service/imgui/ExtendIMGUITool.js"); var MeshRendererAPI$Wonderjs = require("../../../../../src/api/MeshRendererAPI.js"); var BasicMaterialAPI$Wonderjs = require("../../../../../src/api/material/BasicMaterialAPI.js"); var LightMaterialAPI$Wonderjs = require("../../../../../src/api/material/LightMaterialAPI.js"); var BasicMaterialTool$Wonderjs = require("../../../../tool/service/material/BasicMaterialTool.js"); var CubemapTextureAPI$Wonderjs = require("../../../../../src/api/texture/CubemapTextureAPI.js"); var DirectionLightAPI$Wonderjs = require("../../../../../src/api/light/DirectionLightAPI.js"); var SetAssetIMGUITool$Wonderjs = require("../../../../tool/service/imgui/SetAssetIMGUITool.js"); var BasicCameraViewAPI$Wonderjs = require("../../../../../src/api/camera/BasicCameraViewAPI.js"); var DirectionLightTool$Wonderjs = require("../../../../tool/service/light/DirectionLightTool.js"); var AssembleWDBSystemTool$Wonderjs = require("../tool/AssembleWDBSystemTool.js"); var BasicSourceTextureAPI$Wonderjs = require("../../../../../src/api/texture/BasicSourceTextureAPI.js"); var GenerateSceneGraphAPI$Wonderjs = require("../../../../../src/api/asset/GenerateSceneGraphAPI.js"); var BasicSourceTextureTool$Wonderjs = require("../../../../tool/service/texture/BasicSourceTextureTool.js"); var CreateStateMainService$Wonderjs = require("../../../../../src/service/state/main/state/CreateStateMainService.js"); var FlyCameraControllerAPI$Wonderjs = require("../../../../../src/api/camera_controller/FlyCameraControllerAPI.js"); var FlyCameraControllerTool$Wonderjs = require("../../../../tool/service/camera_controller/FlyCameraControllerTool.js"); var ArcballCameraControllerAPI$Wonderjs = require("../../../../../src/api/camera_controller/ArcballCameraControllerAPI.js"); var ArcballCameraControllerTool$Wonderjs = require("../../../../tool/service/camera_controller/ArcballCameraControllerTool.js"); var GenerateSceneGraphSystemTool$Wonderjs = require("../tool/GenerateSceneGraphSystemTool.js"); var MutableSparseMapService$WonderCommonlib = require("wonder-commonlib/lib/js/src/MutableSparseMapService.js"); var PerspectiveCameraProjectionAPI$Wonderjs = require("../../../../../src/api/camera/PerspectiveCameraProjectionAPI.js"); var ArrayBufferViewSourceTextureAPI$Wonderjs = require("../../../../../src/api/texture/ArrayBufferViewSourceTextureAPI.js"); Wonder_jest.describe("generateSceneGraph by gameObject", (function (param) { var sandbox = Sinon.getSandboxDefaultVal(/* () */0); var state = /* record */[/* contents */CreateStateMainService$Wonderjs.createState(/* () */0)]; var _createTexture1 = function (state) { var match = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(state); var texture = match[1]; var name = "texture_1"; var state$1 = BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureName(texture, name, match[0]); var state$2 = BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureMagFilter(texture, /* Linear */1, BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureWrapS(texture, /* Repeat */2, state$1)); var source = BasicSourceTextureTool$Wonderjs.buildSource(30, 50); var state$3 = BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureSource(texture, source, state$2); return /* tuple */[ state$3, /* tuple */[ texture, name ], /* tuple */[ source, 30, 50 ] ]; }; var _createTexture2 = function (state) { var match = BasicSourceTextureAPI$Wonderjs.createBasicSourceTexture(state); var texture = match[1]; var state$1 = BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureMinFilter(texture, /* Linear_mipmap_linear */5, BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureWrapT(texture, /* Repeat */2, match[0])); var source = BasicSourceTextureTool$Wonderjs.buildSource(32, 60); var state$2 = BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureSource(texture, source, state$1); return /* tuple */[ state$2, texture, /* tuple */[ source, 32, 60 ] ]; }; var _createGameObjectWithMap = function (textureName, imageName, state) { var match = LightMaterialAPI$Wonderjs.createLightMaterial(state); var material = match[1]; var match$1 = _createTexture1(match[0]); var texture = match$1[1][0]; var state$1 = BasicSourceTextureAPI$Wonderjs.setBasicSourceTextureName(texture, textureName, match$1[0]); ImageUtils$Wonderjs.setImageName(match$1[2][0], imageName); var state$2 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, texture, state$1); var match$2 = BoxGeometryTool$Wonderjs.createBoxGeometry(state$2); var match$3 = MeshRendererAPI$Wonderjs.createMeshRenderer(match$2[0]); var match$4 = GameObjectAPI$Wonderjs.createGameObject(match$3[0]); var gameObject = match$4[1]; var state$3 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, match$3[1], GameObjectAPI$Wonderjs.addGameObjectGeometryComponent(gameObject, match$2[1], GameObjectAPI$Wonderjs.addGameObjectLightMaterialComponent(gameObject, material, match$4[0]))); var transform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(gameObject, state$3); return /* tuple */[ state$3, gameObject, transform ]; }; var _createGameObjectWithShareMaterial = function (material, addGameObjectMaterialComponentFunc, state) { var match = BoxGeometryTool$Wonderjs.createBoxGeometry(state); var geometry = match[1]; var match$1 = MeshRendererAPI$Wonderjs.createMeshRenderer(match[0]); var meshRenderer = match$1[1]; var match$2 = GameObjectAPI$Wonderjs.createGameObject(match$1[0]); var gameObject = match$2[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, meshRenderer, GameObjectAPI$Wonderjs.addGameObjectGeometryComponent(gameObject, geometry, Curry._3(addGameObjectMaterialComponentFunc, gameObject, material, match$2[0]))); var transform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(gameObject, state$1); var localPos = /* tuple */[ 0.5, 11, 12.5 ]; var localRotation = /* tuple */[ 3, 1, 2.5, 1 ]; var localScale = /* tuple */[ 2.5, 15.5, 1.5 ]; var state$2 = TransformAPI$Wonderjs.setTransformLocalScale(transform, localScale, TransformAPI$Wonderjs.setTransformLocalRotation(transform, localRotation, TransformAPI$Wonderjs.setTransformLocalPosition(transform, localPos, state$1))); return /* tuple */[ state$2, gameObject, /* tuple */[ transform, /* tuple */[ localPos, localRotation, localScale ] ], geometry, material, meshRenderer ]; }; var _createGameObjectWithShareGeometry = function (geometry, addGameObjectGeometryComponentFunc, state) { var match = LightMaterialAPI$Wonderjs.createLightMaterial(state); var material = match[1]; var diffuseColor = /* array */[ 1, 0.5, 0.5 ]; var state$1 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseColor(material, diffuseColor, match[0]); var match$1 = MeshRendererAPI$Wonderjs.createMeshRenderer(state$1); var meshRenderer = match$1[1]; var match$2 = GameObjectAPI$Wonderjs.createGameObject(match$1[0]); var gameObject = match$2[1]; var state$2 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, meshRenderer, Curry._3(addGameObjectGeometryComponentFunc, gameObject, geometry, GameObjectAPI$Wonderjs.addGameObjectLightMaterialComponent(gameObject, material, match$2[0]))); var transform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(gameObject, state$2); var localPos = /* tuple */[ 0.5, 11, 12.5 ]; var localRotation = /* tuple */[ 3, 1, 2.5, 1 ]; var localScale = /* tuple */[ 2.5, 15.5, 1.5 ]; var state$3 = TransformAPI$Wonderjs.setTransformLocalScale(transform, localScale, TransformAPI$Wonderjs.setTransformLocalRotation(transform, localRotation, TransformAPI$Wonderjs.setTransformLocalPosition(transform, localPos, state$2))); return /* tuple */[ state$3, gameObject, /* tuple */[ transform, /* tuple */[ localPos, localRotation, localScale ] ], geometry, /* tuple */[ material, diffuseColor ], meshRenderer ]; }; var _createGameObject1 = function (state) { var match = LightMaterialAPI$Wonderjs.createLightMaterial(state); var material = match[1]; var diffuseColor = /* array */[ 0, 0.5, 1 ]; var state$1 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseColor(material, diffuseColor, match[0]); var match$1 = BoxGeometryTool$Wonderjs.createBoxGeometry(state$1); var geometry = match$1[1]; var match$2 = MeshRendererAPI$Wonderjs.createMeshRenderer(match$1[0]); var meshRenderer = match$2[1]; var match$3 = GameObjectAPI$Wonderjs.createGameObject(match$2[0]); var gameObject = match$3[1]; var state$2 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, meshRenderer, GameObjectAPI$Wonderjs.addGameObjectGeometryComponent(gameObject, geometry, GameObjectAPI$Wonderjs.addGameObjectLightMaterialComponent(gameObject, material, match$3[0]))); var transform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(gameObject, state$2); var localPos = /* tuple */[ 10, 11, 12.5 ]; var localRotation = /* tuple */[ 0, 1, 2.5, 1 ]; var localScale = /* tuple */[ 2, 3.5, 1.5 ]; var state$3 = TransformAPI$Wonderjs.setTransformLocalScale(transform, localScale, TransformAPI$Wonderjs.setTransformLocalRotation(transform, localRotation, TransformAPI$Wonderjs.setTransformLocalPosition(transform, localPos, state$2))); return /* tuple */[ state$3, gameObject, /* tuple */[ transform, /* tuple */[ localPos, localRotation, localScale ] ], geometry, /* tuple */[ material, diffuseColor ], meshRenderer ]; }; var _createGameObject2 = function (state) { var match = GeometryAPI$Wonderjs.createGeometry(state); var geometry = match[1]; var match$1 = GameObjectAPI$Wonderjs.createGameObject(match[0]); var gameObject = match$1[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectGeometryComponent(gameObject, geometry, match$1[0]); var vertices1 = new Float32Array(/* array */[ -0.04454309865832329, -0.1662379950284958, 1.0180000066757202, 2.602089970253733e-18, -6.938890181594472e-18, 1.0180000066757202, -0.08605089783668518, -0.14904500544071198, 1.0180000066757202 ]); var texCoords1 = new Float32Array(/* array */[ 0.7119140028953552, 0.12024599313735962, 0.7552189826965332, 0.15945100784301758, 0.7032840251922607, 0.13282698392868042 ]); var normals1 = new Float32Array(/* array */[ -0.7455800175666809, 0.47522100806236267, -0.4671989977359772, -0.7843430042266846, 0.4080820083618164, -0.4671989977359772, 0.7455800175666809, -0.47522100806236267, -0.46720001101493835 ]); var indices1 = new Uint16Array(/* array */[ 0, 2, 1 ]); var state$2 = GeometryAPI$Wonderjs.setGeometryIndices16(geometry, indices1, GeometryAPI$Wonderjs.setGeometryNormals(geometry, normals1, GeometryAPI$Wonderjs.setGeometryTexCoords(geometry, texCoords1, GeometryAPI$Wonderjs.setGeometryVertices(geometry, vertices1, state$1)))); var match$2 = LightMaterialAPI$Wonderjs.createLightMaterial(state$2); var material = match$2[1]; var match$3 = _createTexture1(match$2[0]); var match$4 = match$3[2]; var match$5 = match$3[1]; var texture = match$5[0]; var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, texture, match$3[0]); var match$6 = MeshRendererAPI$Wonderjs.createMeshRenderer(state$3); var meshRenderer = match$6[1]; var state$4 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, meshRenderer, GameObjectAPI$Wonderjs.addGameObjectLightMaterialComponent(gameObject, material, match$6[0])); var transform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(gameObject, state$4); var localPos = /* tuple */[ 0.5, -1.5, 1.5 ]; var localRotation = /* tuple */[ 2, 2.5, 5, 4.5 ]; var localScale = /* tuple */[ 3, 5.5, 1.0 ]; var state$5 = TransformAPI$Wonderjs.setTransformLocalScale(transform, localScale, TransformAPI$Wonderjs.setTransformLocalRotation(transform, localRotation, TransformAPI$Wonderjs.setTransformLocalPosition(transform, localPos, state$4))); return /* tuple */[ state$5, gameObject, /* tuple */[ transform, /* tuple */[ localPos, localRotation, localScale ] ], /* tuple */[ geometry, /* tuple */[ vertices1, texCoords1, normals1, indices1 ] ], /* tuple */[ material, /* tuple */[ texture, match$5[1] ], /* tuple */[ match$4[0], match$4[1], match$4[2] ] ], meshRenderer ]; }; var _createGameObject3 = function (state) { var match = GeometryAPI$Wonderjs.createGeometry(state); var geometry = match[1]; var match$1 = GameObjectAPI$Wonderjs.createGameObject(match[0]); var gameObject = match$1[1]; var state$1 = GameObjectAPI$Wonderjs.addGameObjectGeometryComponent(gameObject, geometry, match$1[0]); var vertices1 = new Float32Array(/* array */[ 2.602089970253733e-18, -6.938890181594472e-18, 1.0180000066757202, -0.04454309865832329, -0.1662379950284958, 1.0180000066757202, -0.08605089783668518, -0.14904500544071198, 1.0180000066757202 ]); var texCoords1 = new Float32Array(/* array */[ 0.5, 0.15945100784301758, 0.7119140028953552, 0.12024599313735962, 0.7032840251922607, 0.13282698392868042 ]); var normals1 = new Float32Array(/* array */[ -0.7455800175666809, 0.47522100806236267, -0.4671989977359772, 0.7455800175666809, -0.47522100806236267, -0.46720001101493835, -0.7843430042266846, 0.4080820083618164, -0.4671989977359772 ]); var indices1 = new Uint16Array(/* array */[ 1, 0, 2 ]); var state$2 = GeometryAPI$Wonderjs.setGeometryIndices16(geometry, indices1, GeometryAPI$Wonderjs.setGeometryNormals(geometry, normals1, GeometryAPI$Wonderjs.setGeometryTexCoords(geometry, texCoords1, GeometryAPI$Wonderjs.setGeometryVertices(geometry, vertices1, state$1)))); var match$2 = LightMaterialAPI$Wonderjs.createLightMaterial(state$2); var material = match$2[1]; var match$3 = _createTexture2(match$2[0]); var match$4 = match$3[2]; var texture = match$3[1]; var state$3 = LightMaterialAPI$Wonderjs.setLightMaterialDiffuseMap(material, texture, match$3[0]); var match$5 = MeshRendererAPI$Wonderjs.createMeshRenderer(state$3); var meshRenderer = match$5[1]; var state$4 = GameObjectAPI$Wonderjs.addGameObjectMeshRendererComponent(gameObject, meshRenderer, GameObjectAPI$Wonderjs.addGameObjectLightMaterialComponent(gameObject, material, match$5[0])); var transform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(gameObject, state$4); var localPos = /* tuple */[ 2.5, -2.5, 0.5 ]; var localRotation = /* tuple */[ 2, 3.5, 5, 4.5 ]; var localScale = /* tuple */[ 3, 8.5, 1.0 ]; var state$5 = TransformAPI$Wonderjs.setTransformLocalScale(transform, localScale, TransformAPI$Wonderjs.setTransformLocalRotation(transform, localRotation, TransformAPI$Wonderjs.setTransformLocalPosition(transform, localPos, state$4))); return /* tuple */[ state$5, gameObject, /* tuple */[ transform, /* tuple */[ localPos, localRotation, localScale ] ], /* tuple */[ geometry, /* tuple */[ vertices1, texCoords1, normals1, indices1 ] ], /* tuple */[ material, texture, /* tuple */[ match$4[0], match$4[1], match$4[2] ] ], meshRenderer ]; }; Wonder_jest.beforeAllPromise(undefined, (function (param) { return ConvertTool$Wonderjs.buildFakeLoadImage(); })); beforeEach((function () { sandbox[0] = Sinon$1.sandbox.create(); state[0] = TestTool$Wonderjs.initWithoutBuildFakeDom(sandbox, undefined, SettingTool$Wonderjs.buildBufferConfigStr(50000, 10, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, /* () */0), /* () */0); return ConvertTool$Wonderjs.setFakeTransformCount(50); })); afterEach((function () { return Curry._1(Sinon.restoreSandbox, sandbox[0]); })); Wonder_jest.describe("test basic", (function (param) { var _prepareGameObject = function (state) { var state$1 = state[0]; var rootGameObject = SceneAPI$Wonderjs.getSceneGameObject(state$1); var sceneGameObjectTransform = GameObjectAPI$Wonderjs.unsafeGetGameObjectTransformComponent(rootGameObject, state$1); var match = _createGameObject1(state$1); var match$1 = match[4]; var match$2 = match[2]; var match$3 = match$2[1]; var transform1 = match$2[0]; var match$4 = _createGameObject2(match[0]); var match$5 = match$4[4]; var match$6 = match$5[2]; var match$7 = match$5[1]; var match$8 = match$4[3]; var match$9 = match$8[1]; var match$10 = match$4[2]; var match$11 = match$10[1]; var transform2 = match$10[0]; var match$12 = _createGameObject3(match$4[0]); var match$13 = match$12[4]; var match$14 = match$13[2]; var match$15 = match$12[3]; var match$16 = match$15[1]; var match$17 = match$12[2]; var match$18 = match$17[1]; var transform3 = match$17[0]; var state$2 = TransformAPI$Wonderjs.setTransformParent(transform2, transform3, SceneAPI$Wonderjs.addSceneChild(transform2, SceneAPI$Wonderjs.addSceneChild(transform1, match$12[0]))); var match$19 = GenerateSceneGraphSystemTool$Wonderjs.prepareCanvas(sandbox); var match$20 = match$19[2]; return /* tuple */[ state$2, /* tuple */[ rootGameObject, sceneGameObjectTransform ], /* tuple */[ match[1], match$4[1], match$12[1] ], /* tuple */[ /* tuple */[ transform1, /* tuple */[ match$3[0], match$3[1], match$3[2] ] ], /* tuple */[ transform2, /* tuple */[ match$11[0], match$11[1], match$11[2] ] ], /* tuple */[ transform3, /* tuple */[ match$18[0], match$18[1], match$18[2] ] ] ], /* tuple */[ match[3], /* tuple */[ match$8[0], /* tuple */[ match$9[0], match$9[1], match$9[2], match$9[3] ] ], /* tuple */[ match$15[0], /* tuple */[ match$16[0], match$16[1], match$16[2], match$16[3] ] ] ], /* tuple */[ /* tuple */[ match$1[0], match$1[1] ], /* tuple */[ match$5[0], /* tuple */[ match$7[0], match$7[1] ], /* tuple */[ match$6[0], match$6[1], match$6[2] ] ], /* tuple */[ match$13[0], match$13[1], /* tuple */[ match$14[0], match$14[1], match$14[2] ] ], /* tuple */[ match$20[0], match$20[1] ] ], /* tuple */[ match[5], match$4[5], match$12[5] ] ]; }; Wonder_jest.test("test nodes", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1][0], "\n \"nodes\":[{\"children\":[1,2]},{\"translation\":[10,11,12.5],\"rotation\":[0,1,2.5,1],\"scale\":[2,3.5,1.5],\"mesh\":0,\"extras\":{\"lightMaterial\":0,\"meshRenderer\":0}},{\"children\":[3],\"translation\":[0.5,-1.5,1.5],\"rotation\":[2,2.5,5,4.5],\"scale\":[3,5.5,1],\"mesh\":1,\"extras\":{\"lightMaterial\":1,\"meshRenderer\":1}},{\"translation\":[2.5,-2.5,0.5],\"rotation\":[2,3.5,5,4.5],\"scale\":[3,8.5,1],\"mesh\":2,\"extras\":{\"lightMaterial\":2,\"meshRenderer\":2}}]\n ", match[0]); })); Wonder_jest.test("test meshes", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1][0], "\n \"meshes\":[{\"primitives\":[{\"attributes\":{\"POSITION\":0,\"NORMAL\":1,\"TEXCOORD_0\":2},\"indices\":3}]},{\"primitives\":[{\"attributes\":{\"POSITION\":4,\"NORMAL\":5,\"TEXCOORD_0\":6},\"indices\":7}]},{\"primitives\":[{\"attributes\":{\"POSITION\":8,\"NORMAL\":9,\"TEXCOORD_0\":10},\"indices\":11}]}]\n ", match[0]); })); Wonder_jest.test("test meshRenderers", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1][0], "\n\"extras\":{\"meshRenderers\":[{\"isRen\nder\":true,\"drawMode\":4},{\"isRender\":true,\"drawMode\":4},{\"isRender\":true,\"drawMode\":4}]}\n ", match[0]); })); Wonder_jest.test("test materials", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1][0], "\n \"materials\":[{\"pbrMetallicRoughness\":{\"baseColorFactor\":[" + (String(match[5][0][1]) + ",1]}},{\"pbrMetallicRoughness\":{\"baseColorTexture\":{\"index\":0}}},{\"pbrMetallicRoughness\":{\"baseColorTexture\":{\"index\":1}}}]\n "), match[0]); })); Wonder_jest.test("test textures and samplers and images", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1][0], "\n \"textures\":[{\"extras\":{\n \"flipY\": true,\n \"format\": 1,\n \"type_\": 0\n },\"sampler\":0,\"source\":0,\"name\":\"" + (String(match[5][1][1][1]) + "\"},{\"extras\":{\n \"flipY\": true,\n \"format\": 1,\n \"type_\": 0\n },\"sampler\":1,\"source\":1}],\"samplers\":[{\"wrapS\":10497,\"wrapT\":33071,\"magFilter\":9729,\"minFilter\":9728},{\"wrapS\":33071,\"wrapT\":10497,\"magFilter\":9729,\"minFilter\":9987}],\"images\":[{\"bufferView\":12,\"mimeType\":\"image/png\"},{\"bufferView\":13,\"mimeType\":\"image/png\"}]\n "), match[0]); })); Wonder_jest.test("test bufferViews", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1][0], "\n\"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":288},{\"buffer\":0,\"byteOffset\":288,\"byteLength\":288},{\"buffer\":0,\"byteOffset\":576,\"byteLength\":192},{\"buffer\":0,\"byteOffset\":768,\"byteLength\":72},{\"buffer\":0,\"byteOffset\":840,\"byteLength\":36},{\"buffer\":0,\"byteOffset\":876,\"byteLength\":36},{\"buffer\":0,\"byteOffset\":912,\"byteLength\":24},{\"buffer\":0,\"byteOffset\":936,\"byteLength\":6},{\"buffer\":0,\"byteOffset\":944,\"byteLength\":36},{\"buffer\":0,\"byteOffset\":980,\"byteLength\":36},{\"buffer\":0,\"byteOffset\":1016,\"byteLength\":24},{\"buffer\":0,\"byteOffset\":1040,\"byteLength\":6},{\"buffer\":0,\"byteOffset\":1048,\"byteLength\":227},{\"buffer\":0,\"byteOffset\":1276,\"byteLength\":167}]\n ", match[0]); })); return Wonder_jest.describe("test buffer", (function (param) { return Wonder_jest.testPromise("test data", undefined, (function (param) { var match = _prepareGameObject(state); var match$1 = match[4]; var match$2 = match$1[2][1]; var indices3 = match$2[3]; var normals3 = match$2[2]; var texCoords3 = match$2[1]; var vertices3 = match$2[0]; var match$3 = match$1[1][1]; var indices2 = match$3[3]; var normals2 = match$3[2]; var texCoords2 = match$3[1]; var vertices2 = match$3[0]; return GenerateSceneGraphSystemTool$Wonderjs.testAssembleResultByGameObject(sandbox[0], match[1][0], (function (param) { return Curry._2(Wonder_jest.Expect[/* Operators */25][/* = */5], Wonder_jest.Expect[/* expect */0](AssembleWDBSystemTool$Wonderjs.getAllGeometryData(param[2][0], param[0])), /* array */[ /* tuple */[ "geometry_0", /* tuple */[ GLTFTool$Wonderjs.getBoxMainVertices(/* () */0), GLTFTool$Wonderjs.getBoxMainNormals(/* () */0), GLTFTool$Wonderjs.getBoxMainTexCoords(/* () */0), Caml_option.some(GLTFTool$Wonderjs.getBoxMainIndices(/* () */0)), undefined ] ], /* tuple */[ "geometry_1", /* tuple */[ vertices2, normals2, texCoords2, Caml_option.some(indices2), undefined ] ], /* tuple */[ "geometry_2", /* tuple */[ vertices3, normals3, texCoords3, Caml_option.some(indices3), undefined ] ] ]); }), match[0]); })); })); })); Wonder_jest.describe("test imgui", (function (param) { Wonder_jest.describe("test execData", (function (param) { Wonder_jest.describe("test one exec func data", (function (param) { var _prepareGameObject = function (state) { var execFunc = function (customData, imguiAPIJsObj, state) { var imageFunc = imguiAPIJsObj.image; return imageFunc(customData[0], customData[1], state); }; var state$1 = ExecIMGUITool$Wonderjs.addExecFuncData(state[0], undefined, /* tuple */[ 1, "cc" ], undefined, Caml_option.some(execFunc), /* () */0); var match = GameObjectAPI$Wonderjs.createGameObject(state$1); return /* tuple */[ match[0], match[1] ]; }; return Wonder_jest.test("test", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1], "\n\"extras\":{\"imgui\":{\"assetData\":{},\"extendData\":{\"customControlData\":{\"funcMap\":\"{}\"},\"skinData\":{\"allSkinDataMap\":\"{}\"}},\"execData\":{\"execFuncDataArr\":[{\"execFunc\":\"function(customData,imguiAPIJsObj,state){\\nvarimageFunc=imguiAPIJsObj.image;\\nreturnimageFunc(customData[0],customData[1],state);\\n}\",\"customData\":\"[1,\\\"cc\\\"]\",\"execOrder\":0,\"name\":\"exec\"}]}}\n ", match[0]); })); })); return Wonder_jest.describe("test two exec func data", (function (param) { var _prepareGameObject = function (state) { var execFunc1 = function (customData, imguiAPIJsObj, state) { var imageFunc = imguiAPIJsObj.image; return imageFunc(customData[0], customData[1], state); }; var execFunc2 = function (customData, imguiAPIJsObj, state) { return state; }; var __x = ExecIMGUITool$Wonderjs.addExecFuncData(state[0], "e1", /* tuple */[ 1, "cc" ], 2, Caml_option.some(execFunc1), /* () */0); var state$1 = ExecIMGUITool$Wonderjs.addExecFuncData(__x, "e2", -1, 0, Caml_option.some(execFunc2), /* () */0); var match = GameObjectAPI$Wonderjs.createGameObject(state$1); return /* tuple */[ match[0], match[1] ]; }; return Wonder_jest.test("test", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1], "\n\"extras\":{\"imgui\":{\"assetData\":{},\"extendData\":{\"customControlData\":{\"funcMap\":\"{}\"},\"skinData\":{\"allSkinDataMap\":\"{}\"}},\"execData\":{\"execFuncDataArr\":[{\"execFunc\":\"function(customData,imguiAPIJsObj,state){\\nreturnstate;\\n}\",\"customData\":\"-1\",\"execOrder\":0,\"name\":\"e2\"},{\"execFunc\":\"function(customData,imguiAPIJsObj,state){\\nvarimageFunc=imguiAPIJsObj.image;\\nreturnimageFunc(customData[0],customData[1],state);\\n}\",\"customData\":\"[1,\\\"cc\\\"]\",\"execOrder\":2,\"name\":\"e1\"}]}}}\n ", match[0]); })); })); })); Wonder_jest.describe("test extendData", (function (param) { var _prepareGameObject = function (state) { var match = ExtendIMGUITool$Wonderjs.addExtendData(state[0]); var state$1 = ExecIMGUITool$Wonderjs.addExecFuncData(match[0], undefined, undefined, undefined, undefined, /* () */0); var match$1 = GameObjectAPI$Wonderjs.createGameObject(state$1); return /* tuple */[ match$1[0], match$1[1] ]; }; return Wonder_jest.test("test", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1], "\n\"extras\":{\"imgui\":{\"assetData\":{},\"extendData\":{\"customControlData\":{\"funcMap\":\"{\\\"A1\\\":\\\"function(customControlFuncData,showData,apiJsObj,record){\\\\nvardrawBox=apiJsObj.drawBox;\\\\nvarparseShowData=apiJsObj.parseShowData;\\\\nvarunsafeGetSkinData=apiJsObj.unsafeGetSkinData;\\\\nvarunsafeGetSingleCustomStyleDataMap=apiJsObj.unsafeGetSingleCustomStyleDataMap;\\\\nvarunsafeGetCustomStyleData=apiJsObj.unsafeGetCustomStyleData;\\\\nvarhasSingleCustomStyleName=apiJsObj.hasSingleCustomStyleName;\\\\nvarparseSingleCustomStyleName=apiJsObj.parseSingleCustomStyleName;\\\\nvarhasCustomStyleData=apiJsObj.hasCustomStyleData;\\\\nvarmatch=parseShowData(showData);\\\\nvarsingleCustomStyleNameNullable=match[1];\\\\nvardefaultColor=\\\\n/*array*/\\\\n[0.5,0.1,0.2];\\\\nvarmatch$1=hasSingleCustomStyleName(singleCustomStyleNameNullable);\\\\nvarcolor;\\\\n\\\\nif(match$1){\\\\nvarsingleCustomStyleName=parseSingleCustomStyleName(singleCustomStyleNameNullable);\\\\nvarsingleCustomStyleDataMap=unsafeGetSingleCustomStyleDataMap(singleCustomStyleName,unsafeGetSkinData(match[0],record));\\\\nvarmatch$2=hasCustomStyleData(\\\\\\\"color\\\\\\\",singleCustomStyleDataMap);\\\\ncolor=match$2?unsafeGetCustomStyleData(\\\\\\\"color\\\\\\\",singleCustomStyleDataMap):defaultColor;\\\\n}else{\\\\ncolor=defaultColor;\\\\n}\\\\n\\\\nvarrecord$1=drawBox(customControlFuncData,color,record);\\\\nreturn(\\\\n/*tuple*/\\\\n[record$1,true]\\\\n);\\\\n}\\\"}\"},\"skinData\":{\"allSkinDataMap\":\"{\\\"Skin1\\\":[[[0.35,0.1,0.1],[0.4,0.1,0.1],[0.5,0.1,0.1],null,null,null,1,[1,1,1]],{\\\"CustomStyle1\\\":{\\\"color\\\":[0.5,1,2]}}]}\"}},\"execData\":{\"execFuncDataArr\":[{\"execFunc\":\"function(customData,imguiAPIJsObj,state){returnstate;}\",\"customData\":\"-1\",\"execOrder\":0,\"name\":\"exec\"}]}}}\n ", match[0]); })); })); return Wonder_jest.describe("test assetData", (function (param) { var _prepareGameObject = function (state) { var state$1 = SetAssetIMGUITool$Wonderjs.buildAndSetAssetData(state[0]); var state$2 = ExecIMGUITool$Wonderjs.addExecFuncData(state$1, undefined, undefined, undefined, undefined, /* () */0); var match = GameObjectAPI$Wonderjs.createGameObject(state$2); return /* tuple */[ match[0], match[1] ]; }; Wonder_jest.test("test imgui->assetData", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1], "\n\"extras\":{\"imgui\":{\"assetData\":{\"customImages\":{\"customImages\":[{\"id\":\"c1\",\"bufferView\":1,\"mimeType\":\"image/png\"},{\"id\":\"c2\",\"bufferView\":2,\"mimeType\":\"image/jpeg\"}]},\"fontData\":{\"fntData\":{\"name\":\"fnt\",\"content\":\"infoface=\\\"Lato-Regular\\\"size=64bold=0italic=0charset=\\\"\\\"unicode=1stretchH=100smooth=1aa=2padding=0,0,0,0spacing=0,0\\ncommonlineHeight=77base=63scaleW=512scaleH=512pages=1packed=0alphaChnl=0redChnl=0greenChnl=0blueChnl=0\\npageid=0file=\\\"lato.png\\\"\\ncharscount=0\"},\"bitmapData\":{\"name\":\"bitmap\",\"bufferView\":0}}}\n ", match[0]); })); return Wonder_jest.test("should add bitmap array buffer, customImagesData array buffer to bufferViews", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1], "\n \"bufferViews\":[{\"buffer\":0,\"byteOffset\":0,\"byteLength\":10},{\"buffer\":0,\"byteOffset\":12,\"byteLength\":20},{\"buffer\":0,\"byteOffset\":32,\"byteLength\":30}]\n ", match[0]); })); })); })); Wonder_jest.describe("test skybox", (function (param) { Wonder_jest.describe("test gltf", (function (param) { Wonder_jest.describe("scenes->extras should has skybox data", (function (param) { var _prepareGameObject = function (state) { var state$1 = state[0]; var rootGameObject = SceneAPI$Wonderjs.getSceneGameObject(state$1); var match = SkyboxTool$Wonderjs.prepareCubemapTextureAndSetAllSources(state$1); GenerateSceneGraphSystemTool$Wonderjs.prepareCanvasForCubemapTexture(sandbox); return /* tuple */[ match[0], rootGameObject, match[1] ]; }; return Wonder_jest.test("test", (function (param) { var match = _prepareGameObject(state); return GenerateSceneGraphSystemTool$Wonderjs.testGLTFResultByGameObject(match[1], "\n\"scenes\":[{\"extensions\":{\"KHR_lights\":{\"light\":0}},\"nodes\":[0],\"extras\":{\"skybox\":{\"cubemap\":0}\n ", match[0]); })); })); Wonder_jest.describe("test cubemapTextures data", (function (param) { var _prepareGameObject = function (state) { var state$1 = state[0]; var rootGameObject = SceneAPI$Wonderjs.getSceneGameObject(state$1); var match = SkyboxTool$Wonderjs.prepareCubemapTextureAndSetAllSources(state$1); var cubemapTexture = match[1]; var state$2 = CubemapTextureAPI$Wonderjs.setCubemapTextureFlipY(cubemapTexture, true, match[0]); var state$3 = CubemapTextureAPI$Wonderjs.setCubemapTexturePZFormat(cubemapTexture, /* Rgba */1, CubemapTextureAPI$Wonderjs.setCubemapTextureNXFormat(cubemapTexture, /* Rgbs3tcdxt1 */5, CubemapTextureAPI$Wonderjs.setCubemapTexturePXFormat(cubemapTexture, /* Rgbas3tcdxt1 */6, state$2))); var state$4 = CubemapTextureAPI$Wonderjs.setCubemapTexturePZType(cubemapTexture, 2, CubemapTextureAPI$Wonderjs.setCubemapTextureNXType(cubemapTexture, 2, CubemapTextureAPI$Wonderjs.setCubemapTexturePXType(cubemapTexture, 1, state$3)));