wonder.js
Version:
788 lines (785 loc) • 202 kB
JavaScript
'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)));