@tolokoban/tgd 2.0.118 → 2.0.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/lib/dist/bounding-box.js +2 -2
  2. package/lib/dist/buffer/buffer.js +7 -9
  3. package/lib/dist/camera/camera-orthographic.d.ts +1 -0
  4. package/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
  5. package/lib/dist/camera/camera-orthographic.js +13 -3
  6. package/lib/dist/camera/camera-perspective.d.ts +1 -0
  7. package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
  8. package/lib/dist/camera/camera-perspective.js +13 -3
  9. package/lib/dist/camera/camera.d.ts +1 -0
  10. package/lib/dist/camera/camera.d.ts.map +1 -1
  11. package/lib/dist/camera/camera.js +7 -8
  12. package/lib/dist/canvas/gizmo/gizmo.js +16 -15
  13. package/lib/dist/canvas/landscape/landscape.js +8 -2
  14. package/lib/dist/code/math.js +6 -3
  15. package/lib/dist/code/noise.js +18 -6
  16. package/lib/dist/color/color.d.ts +1 -1
  17. package/lib/dist/color/color.d.ts.map +1 -1
  18. package/lib/dist/color/color.js +16 -2
  19. package/lib/dist/context/animation/animation-manager.d.ts +3 -0
  20. package/lib/dist/context/animation/animation-manager.d.ts.map +1 -1
  21. package/lib/dist/context/animation/animation-manager.js +10 -11
  22. package/lib/dist/context/console.d.ts +12 -0
  23. package/lib/dist/context/console.d.ts.map +1 -0
  24. package/lib/dist/context/console.js +31 -0
  25. package/lib/dist/context/context.d.ts +23 -1
  26. package/lib/dist/context/context.d.ts.map +1 -1
  27. package/lib/dist/context/context.js +65 -26
  28. package/lib/dist/context/webgl-params.d.ts +9 -3
  29. package/lib/dist/context/webgl-params.d.ts.map +1 -1
  30. package/lib/dist/context/webgl-params.js +39 -12
  31. package/lib/dist/controller/camera/orbit.js +26 -6
  32. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  33. package/lib/dist/dataset/dataset.js +26 -35
  34. package/lib/dist/debug/console.js +6 -4
  35. package/lib/dist/debug/debug.js +5 -6
  36. package/lib/dist/factory/mesh-glb.d.ts +4 -6
  37. package/lib/dist/factory/mesh-glb.d.ts.map +1 -1
  38. package/lib/dist/factory/mesh-glb.js +6 -6
  39. package/lib/dist/filter/blur.js +14 -8
  40. package/lib/dist/filter/filter.js +2 -3
  41. package/lib/dist/filter/hue-rotation.js +2 -2
  42. package/lib/dist/geometry/geometry.js +7 -10
  43. package/lib/dist/geometry/grid.js +3 -3
  44. package/lib/dist/geometry/tools/marching-cubes/marching-cubes.d.ts +1 -1
  45. package/lib/dist/geometry/tools/marching-cubes/marching-cubes.d.ts.map +1 -1
  46. package/lib/dist/geometry/tools/marching-cubes/marching-cubes.js +2 -10
  47. package/lib/dist/input/gamepad.js +9 -17
  48. package/lib/dist/input/pointer.d.ts.map +1 -1
  49. package/lib/dist/input/pointer.js +53 -22
  50. package/lib/dist/light/light.js +2 -3
  51. package/lib/dist/loader/asset.js +11 -14
  52. package/lib/dist/loader/binary.js +44 -51
  53. package/lib/dist/loader/font.d.ts +13 -0
  54. package/lib/dist/loader/font.d.ts.map +1 -0
  55. package/lib/dist/loader/font.js +28 -0
  56. package/lib/dist/loader/image.js +13 -16
  57. package/lib/dist/loader/index.d.ts +1 -0
  58. package/lib/dist/loader/index.d.ts.map +1 -1
  59. package/lib/dist/loader/index.js +2 -1
  60. package/lib/dist/loader/video.js +13 -16
  61. package/lib/dist/log.js +2 -3
  62. package/lib/dist/material/camera-light.d.ts +1 -0
  63. package/lib/dist/material/camera-light.d.ts.map +1 -1
  64. package/lib/dist/material/camera-light.js +7 -3
  65. package/lib/dist/material/diffuse.js +2 -3
  66. package/lib/dist/material/flat.js +2 -3
  67. package/lib/dist/material/glass.js +6 -8
  68. package/lib/dist/material/global.js +6 -8
  69. package/lib/dist/material/gltf.d.ts +29 -0
  70. package/lib/dist/material/gltf.d.ts.map +1 -0
  71. package/lib/dist/material/gltf.js +186 -0
  72. package/lib/dist/material/hull.js +4 -5
  73. package/lib/dist/material/index.d.ts +2 -0
  74. package/lib/dist/material/index.d.ts.map +1 -1
  75. package/lib/dist/material/index.js +3 -1
  76. package/lib/dist/material/material.js +5 -2
  77. package/lib/dist/material/mirror.d.ts +18 -0
  78. package/lib/dist/material/mirror.d.ts.map +1 -0
  79. package/lib/dist/material/mirror.js +56 -0
  80. package/lib/dist/material/solid.js +2 -3
  81. package/lib/dist/material/toon.js +7 -7
  82. package/lib/dist/math/mat2.d.ts +1 -1
  83. package/lib/dist/math/mat2.d.ts.map +1 -1
  84. package/lib/dist/math/mat2.js +5 -5
  85. package/lib/dist/math/mat3.d.ts.map +1 -1
  86. package/lib/dist/math/mat3.js +4 -4
  87. package/lib/dist/math/mat4.js +3 -4
  88. package/lib/dist/math/transfo.js +11 -14
  89. package/lib/dist/math/vec4.d.ts +1 -0
  90. package/lib/dist/math/vec4.d.ts.map +1 -1
  91. package/lib/dist/math/vec4.js +18 -14
  92. package/lib/dist/painter/background/background.js +2 -2
  93. package/lib/dist/painter/clear.js +5 -6
  94. package/lib/dist/painter/filter/filter.js +9 -7
  95. package/lib/dist/painter/fragment-shader/fragment-shader.js +3 -5
  96. package/lib/dist/painter/framebuffer-msaa.js +5 -2
  97. package/lib/dist/painter/framebuffer.d.ts +1 -1
  98. package/lib/dist/painter/framebuffer.d.ts.map +1 -1
  99. package/lib/dist/painter/framebuffer.js +8 -11
  100. package/lib/dist/painter/gizmo/gizmo.d.ts.map +1 -1
  101. package/lib/dist/painter/gizmo/gizmo.js +5 -5
  102. package/lib/dist/painter/gizmo/painters/normal.js +4 -7
  103. package/lib/dist/painter/gizmo/painters/tips.d.ts.map +1 -1
  104. package/lib/dist/painter/gizmo/painters/tips.js +11 -13
  105. package/lib/dist/painter/group-camera.js +2 -3
  106. package/lib/dist/painter/group.js +6 -8
  107. package/lib/dist/painter/icon/icon.js +10 -8
  108. package/lib/dist/painter/icon/sprite.js +2 -3
  109. package/lib/dist/painter/lod/lod.js +26 -30
  110. package/lib/dist/painter/logic.js +2 -3
  111. package/lib/dist/painter/mesh/gltf/gltf.d.ts +28 -6
  112. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
  113. package/lib/dist/painter/mesh/gltf/gltf.js +99 -53
  114. package/lib/dist/painter/mesh/mesh/mesh.js +24 -17
  115. package/lib/dist/painter/mix/mix.js +6 -7
  116. package/lib/dist/painter/node/node.js +11 -17
  117. package/lib/dist/painter/overlay/overlay.js +14 -19
  118. package/lib/dist/painter/painter.js +2 -2
  119. package/lib/dist/painter/points-cloud/points-cloud-morphing.js +12 -14
  120. package/lib/dist/painter/points-cloud/points-cloud.d.ts +2 -2
  121. package/lib/dist/painter/points-cloud/points-cloud.d.ts.map +1 -1
  122. package/lib/dist/painter/points-cloud/points-cloud.js +20 -21
  123. package/lib/dist/painter/program.js +24 -11
  124. package/lib/dist/painter/segments/segments-morphing.js +30 -14
  125. package/lib/dist/painter/segments/segments.d.ts +1 -1
  126. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  127. package/lib/dist/painter/segments/segments.js +34 -21
  128. package/lib/dist/painter/skybox/skybox.d.ts +18 -8
  129. package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
  130. package/lib/dist/painter/skybox/skybox.js +89 -44
  131. package/lib/dist/painter/sprites/accessor.js +2 -2
  132. package/lib/dist/painter/sprites/sprites-hue.js +18 -8
  133. package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
  134. package/lib/dist/painter/sprites/sprites.js +53 -21
  135. package/lib/dist/painter/state/state.d.ts +1 -1
  136. package/lib/dist/painter/state/state.d.ts.map +1 -1
  137. package/lib/dist/painter/state/state.js +6 -11
  138. package/lib/dist/painter/tubes/geometry.js +3 -4
  139. package/lib/dist/painter/tubes/tubes.js +3 -4
  140. package/lib/dist/painter/x-ray/background.js +2 -2
  141. package/lib/dist/painter/x-ray/x-ray.js +8 -5
  142. package/lib/dist/parser/gltf/gltf.d.ts +13 -5
  143. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
  144. package/lib/dist/parser/gltf/gltf.js +113 -114
  145. package/lib/dist/parser/gltf/parser.d.ts.map +1 -1
  146. package/lib/dist/parser/gltf/parser.js +12 -1
  147. package/lib/dist/parser/mesh/wavefront.js +3 -5
  148. package/lib/dist/program/program.d.ts.map +1 -1
  149. package/lib/dist/program/program.js +6 -7
  150. package/lib/dist/reference-map.js +3 -5
  151. package/lib/dist/shader/code.js +2 -2
  152. package/lib/dist/texture/texture-cube.d.ts +20 -8
  153. package/lib/dist/texture/texture-cube.d.ts.map +1 -1
  154. package/lib/dist/texture/texture-cube.js +54 -2
  155. package/lib/dist/texture/texture2d.d.ts +10 -3
  156. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  157. package/lib/dist/texture/texture2d.js +54 -52
  158. package/lib/dist/time/interval/interval.js +2 -3
  159. package/lib/dist/types/gltf.d.ts +2 -1
  160. package/lib/dist/types/gltf.d.ts.map +1 -1
  161. package/lib/dist/types/gltf.js +10 -4
  162. package/lib/dist/types/guards.js +2 -3
  163. package/lib/dist/types/input-pointer.d.ts +5 -0
  164. package/lib/dist/types/input-pointer.d.ts.map +1 -1
  165. package/lib/dist/types/texture-cube.d.ts +1 -0
  166. package/lib/dist/types/texture-cube.d.ts.map +1 -1
  167. package/lib/dist/uniform/ubo-camera.d.ts +2 -1
  168. package/lib/dist/uniform/ubo-camera.d.ts.map +1 -1
  169. package/lib/dist/uniform/ubo-camera.js +9 -2
  170. package/lib/dist/uniform/uniform-buffer-object.js +2 -2
  171. package/lib/dist/utils/action/camera.js +3 -4
  172. package/lib/dist/utils/animation/chain-transfo-interpolations.js +6 -2
  173. package/lib/dist/utils/animation/chain.js +12 -12
  174. package/lib/dist/utils/bbox.js +3 -3
  175. package/lib/dist/utils/canvas.js +3 -3
  176. package/lib/dist/utils/ensure.d.ts +2 -0
  177. package/lib/dist/utils/ensure.d.ts.map +1 -1
  178. package/lib/dist/utils/ensure.js +21 -5
  179. package/lib/dist/utils/fullscreen.js +31 -38
  180. package/lib/dist/utils/reference-map.js +3 -5
  181. package/lib/dist/utils/state/blend.d.ts +1 -1
  182. package/lib/dist/utils/state/blend.d.ts.map +1 -1
  183. package/lib/dist/utils/state/blend.js +28 -1
  184. package/lib/dist/utils/state/stencil.js +2 -2
  185. package/lib/dist/vao/vao.js +8 -9
  186. package/lib/dist/version.d.ts +1 -1
  187. package/lib/dist/version.js +1 -1
  188. package/lib/dist/wasm/function.js +2 -3
  189. package/lib/dist/wasm/index.js +16 -19
  190. package/lib/dist/wasm/wast.js +3 -4
  191. package/lib/dist/webgl/texture/texture2d.js +2 -3
  192. package/package.json +1 -1
  193. package/lib/dist/math/common.test.d.ts +0 -2
  194. package/lib/dist/math/common.test.d.ts.map +0 -1
  195. package/lib/dist/math/common.test.js +0 -22
  196. package/lib/dist/math/mat3.test.d.ts +0 -2
  197. package/lib/dist/math/mat3.test.d.ts.map +0 -1
  198. package/lib/dist/math/mat3.test.js +0 -32
  199. package/lib/dist/math/mat4.test.d.ts +0 -2
  200. package/lib/dist/math/mat4.test.d.ts.map +0 -1
  201. package/lib/dist/math/mat4.test.js +0 -57
  202. package/lib/dist/math/math.test.d.ts +0 -2
  203. package/lib/dist/math/math.test.d.ts.map +0 -1
  204. package/lib/dist/math/math.test.js +0 -23
  205. package/lib/dist/math/quat.test.d.ts +0 -3
  206. package/lib/dist/math/quat.test.d.ts.map +0 -1
  207. package/lib/dist/math/quat.test.js +0 -99
  208. package/lib/dist/math/vec3.test.d.ts +0 -2
  209. package/lib/dist/math/vec3.test.d.ts.map +0 -1
  210. package/lib/dist/math/vec3.test.js +0 -36
  211. package/lib/dist/math/vec4.test.d.ts +0 -2
  212. package/lib/dist/math/vec4.test.d.ts.map +0 -1
  213. package/lib/dist/math/vec4.test.js +0 -15
  214. package/lib/dist/painter/gizmo/painters/axes.1.d.ts +0 -14
  215. package/lib/dist/painter/gizmo/painters/axes.1.d.ts.map +0 -1
  216. package/lib/dist/painter/gizmo/painters/axes.1.js +0 -50
  217. package/lib/dist/painter/skybox/skybox.frag +0 -15
  218. package/lib/dist/painter/skybox/skybox.vert +0 -13
  219. package/lib/dist/utils/bbox.test.d.ts +0 -2
  220. package/lib/dist/utils/bbox.test.d.ts.map +0 -1
  221. package/lib/dist/utils/bbox.test.js +0 -45
  222. package/lib/dist/utils/template.test.d.ts +0 -2
  223. package/lib/dist/utils/template.test.d.ts.map +0 -1
  224. package/lib/dist/utils/template.test.js +0 -17
@@ -1,4 +1,3 @@
1
- import { __awaiter } from "tslib";
2
1
  /**
3
2
  * GLTF specs can be found here:
4
3
  * https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
@@ -12,51 +11,48 @@ import { TgdGeometry } from "./../../geometry/index.js";
12
11
  import { tgdLoadImage, tgdLoadImageFromArrayBuffer } from "./../../loader/index.js";
13
12
  import { TgdQuat, TgdTransfo, TgdVec3 } from "./../../math/index.js";
14
13
  import { TgdTexture2D } from "./../../texture/index.js";
15
- import { assertTgdFormatGltf, assertTgdTypeArrayForElements } from "./../../types/index.js";
14
+ import { assertTgdFormatGltf, assertTgdTypeArrayForElements, } from "./../../types/index.js";
16
15
  import { isNumber } from "./../../types/guards.js";
17
16
  const EMPTY_IMAGE = new Image();
18
17
  export class TgdDataGlb {
19
- static parse(content) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- var _a, _b, _c, _d, _e, _f, _g;
22
- const blob = new Blob([content]);
23
- const url = URL.createObjectURL(blob);
24
- const gltfWithBuffers = yield load(url, GLTFLoader, {
25
- DracoLoader,
26
- decompress: true,
27
- decompressMeshes: true,
28
- loadBuffers: true,
29
- loadImages: true,
30
- });
31
- URL.revokeObjectURL(url);
32
- const gltf = gltfWithBuffers.json;
33
- const chunks = [];
34
- for (const buffer of gltfWithBuffers.buffers) {
35
- chunks.push(buffer.arrayBuffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));
18
+ static async parse(content) {
19
+ const blob = new Blob([content]);
20
+ const url = URL.createObjectURL(blob);
21
+ const gltfWithBuffers = await load(url, GLTFLoader, {
22
+ DracoLoader,
23
+ decompress: true,
24
+ decompressMeshes: true,
25
+ loadBuffers: true,
26
+ loadImages: true,
27
+ });
28
+ URL.revokeObjectURL(url);
29
+ const gltf = gltfWithBuffers.json;
30
+ const chunks = [];
31
+ for (const buffer of gltfWithBuffers.buffers) {
32
+ chunks.push(buffer.arrayBuffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));
33
+ }
34
+ const images = [];
35
+ for (let imageIndex = 0; imageIndex < (gltf.images ?? []).length; imageIndex++) {
36
+ const image = gltf.images?.[imageIndex];
37
+ if (!image) {
38
+ images.push(EMPTY_IMAGE);
39
+ continue;
36
40
  }
37
- const images = [];
38
- for (let imageIndex = 0; imageIndex < ((_a = gltf.images) !== null && _a !== void 0 ? _a : []).length; imageIndex++) {
39
- const image = (_b = gltf.images) === null || _b === void 0 ? void 0 : _b[imageIndex];
40
- if (!image) {
41
- images.push(EMPTY_IMAGE);
42
- continue;
43
- }
44
- if (image.uri) {
45
- images.push((_c = (yield tgdLoadImage(image.uri))) !== null && _c !== void 0 ? _c : EMPTY_IMAGE);
46
- continue;
47
- }
48
- if (typeof image.bufferView !== "number") {
49
- images.push(EMPTY_IMAGE);
50
- continue;
51
- }
52
- // const buffer = this.getBufferViewData(image.bufferView, "Uint8")
53
- const bufferView = (_d = gltf.bufferViews) === null || _d === void 0 ? void 0 : _d[image.bufferView];
54
- if (!bufferView)
55
- throw new Error(`No bufferView with index #${image.bufferView}!`);
56
- images.push((_g = (yield tgdLoadImageFromArrayBuffer(chunks[bufferView.buffer].slice((_e = bufferView.byteOffset) !== null && _e !== void 0 ? _e : 0, ((_f = bufferView.byteOffset) !== null && _f !== void 0 ? _f : 0) + bufferView.byteLength)))) !== null && _g !== void 0 ? _g : EMPTY_IMAGE);
41
+ if (image.uri) {
42
+ images.push((await tgdLoadImage(image.uri)) ?? EMPTY_IMAGE);
43
+ continue;
57
44
  }
58
- return new TgdDataGlb(gltf, chunks, images, content.byteLength);
59
- });
45
+ if (typeof image.bufferView !== "number") {
46
+ images.push(EMPTY_IMAGE);
47
+ continue;
48
+ }
49
+ // const buffer = this.getBufferViewData(image.bufferView, "Uint8")
50
+ const bufferView = gltf.bufferViews?.[image.bufferView];
51
+ if (!bufferView)
52
+ throw new Error(`No bufferView with index #${image.bufferView}!`);
53
+ images.push((await tgdLoadImageFromArrayBuffer(chunks[bufferView.buffer].slice(bufferView.byteOffset ?? 0, (bufferView.byteOffset ?? 0) + bufferView.byteLength))) ?? EMPTY_IMAGE);
54
+ }
55
+ return new TgdDataGlb(gltf, chunks, images, content.byteLength);
60
56
  }
61
57
  /**
62
58
  * @param content The binary content of a GLB file.
@@ -113,40 +109,35 @@ export class TgdDataGlb {
113
109
  throw new Error(`Node "${name}" is not of type Camera!`);
114
110
  }
115
111
  getBufferViews() {
116
- var _a;
117
- return (_a = this.json.bufferViews) !== null && _a !== void 0 ? _a : [];
112
+ return this.json.bufferViews ?? [];
118
113
  }
119
114
  getBufferView(bufferViewIndex) {
120
- var _a;
121
- return (_a = this.json.bufferViews) === null || _a === void 0 ? void 0 : _a[bufferViewIndex];
115
+ return this.json.bufferViews?.[bufferViewIndex];
122
116
  }
123
117
  getCamera(cameraIndex) {
124
- var _a;
125
- const camera = (_a = this.json.cameras) === null || _a === void 0 ? void 0 : _a[cameraIndex];
118
+ const camera = this.json.cameras?.[cameraIndex];
126
119
  if (!camera) {
127
120
  throw new Error(`Asset has no camera with index #${cameraIndex}!`);
128
121
  }
129
122
  return camera;
130
123
  }
131
124
  getImages() {
132
- var _a;
133
- return (_a = this.json.images) !== null && _a !== void 0 ? _a : [];
125
+ return this.json.images ?? [];
134
126
  }
135
127
  getImage(imageIndexOrName) {
136
128
  const { images } = this.json;
137
129
  if (!images)
138
130
  return;
139
131
  if (typeof imageIndexOrName === "number")
140
- return images === null || images === void 0 ? void 0 : images[imageIndexOrName];
132
+ return images?.[imageIndexOrName];
141
133
  return images.find((img) => img.name === imageIndexOrName);
142
134
  }
143
135
  getImageAsHTMLElement(imageIndexOrName) {
144
- var _a;
145
136
  const { images } = this.json;
146
137
  if (!images)
147
138
  return;
148
139
  if (typeof imageIndexOrName === "number") {
149
- return (_a = this.images[imageIndexOrName]) !== null && _a !== void 0 ? _a : EMPTY_IMAGE;
140
+ return this.images[imageIndexOrName] ?? EMPTY_IMAGE;
150
141
  }
151
142
  for (let i = 0; i < images.length; i++) {
152
143
  if (images[i].name === imageIndexOrName)
@@ -155,24 +146,20 @@ export class TgdDataGlb {
155
146
  throw new Error(`There is no image with name "${imageIndexOrName}" in this GLB file!\nPossible names are: ${images.map((img) => img.name).join(", ")}.`);
156
147
  }
157
148
  getScenes() {
158
- var _a;
159
- return (_a = this.json.scenes) !== null && _a !== void 0 ? _a : [];
149
+ return this.json.scenes ?? [];
160
150
  }
161
151
  getScene(sceneIndex) {
162
- var _a;
163
- const scene = (_a = this.json.scenes) === null || _a === void 0 ? void 0 : _a[sceneIndex];
152
+ const scene = this.json.scenes?.[sceneIndex];
164
153
  if (!scene) {
165
154
  throw new Error(`Asset has no scene with index #${sceneIndex}!`);
166
155
  }
167
156
  return scene;
168
157
  }
169
158
  getNodes() {
170
- var _a;
171
- return (_a = this.json.nodes) !== null && _a !== void 0 ? _a : [];
159
+ return this.json.nodes ?? [];
172
160
  }
173
161
  getNode(nodeIndex) {
174
- var _a;
175
- const node = (_a = this.json.nodes) === null || _a === void 0 ? void 0 : _a[nodeIndex];
162
+ const node = this.json.nodes?.[nodeIndex];
176
163
  if (!node) {
177
164
  throw new Error(`Asset has no node with index #${nodeIndex}!`);
178
165
  }
@@ -188,60 +175,57 @@ export class TgdDataGlb {
188
175
  }
189
176
  }
190
177
  getNodeByNameOrThrow(nodeName) {
191
- var _a;
192
178
  const node = this.getNodeByName(nodeName);
193
179
  if (node)
194
180
  return node;
195
- throw new Error(`Unknown node "${nodeName}"!\nAvailable names:${((_a = this.json.nodes) !== null && _a !== void 0 ? _a : [])
181
+ throw new Error(`Unknown node "${nodeName}"!\nAvailable names:${(this.json.nodes ?? [])
196
182
  .map((node, index) => `\n - ${typeof node.name === "string" ? JSON.stringify(node.name) : `#${index}`}`)
197
183
  .join("")}`);
198
184
  }
199
185
  getAccessor(accessorIndex = 0) {
200
- var _a;
201
- const accessor = (_a = this.json.accessors) === null || _a === void 0 ? void 0 : _a[accessorIndex];
186
+ const accessor = this.json.accessors?.[accessorIndex];
202
187
  if (!accessor) {
203
188
  throw new Error(`Asset has no accessor with index #${accessorIndex}!`);
204
189
  }
205
190
  return accessor;
206
191
  }
207
192
  getMaterial(materialIndex) {
208
- var _a;
209
- const material = (_a = this.json.materials) === null || _a === void 0 ? void 0 : _a[materialIndex];
193
+ const material = this.json.materials?.[materialIndex];
210
194
  if (!material) {
211
195
  throw new Error(`Asset has no material with index #${materialIndex}!`);
212
196
  }
213
197
  return material;
214
198
  }
215
199
  getMesh(meshIndexOrName = 0) {
216
- var _a, _b;
217
200
  if (typeof meshIndexOrName !== "number" && typeof meshIndexOrName !== "string")
218
201
  return meshIndexOrName;
219
202
  const mesh = typeof meshIndexOrName === "number"
220
- ? (_a = this.json.meshes) === null || _a === void 0 ? void 0 : _a[meshIndexOrName]
221
- : ((_b = this.json.meshes) !== null && _b !== void 0 ? _b : []).find((item) => item.name === meshIndexOrName);
203
+ ? this.json.meshes?.[meshIndexOrName]
204
+ : (this.json.meshes ?? []).find((item) => item.name === meshIndexOrName);
222
205
  if (!mesh)
223
206
  return undefined;
224
207
  return mesh;
225
208
  }
226
209
  getMeshOrThrow(meshIndexOrName = 0) {
227
- var _a, _b, _c;
228
210
  if (typeof meshIndexOrName !== "number" && typeof meshIndexOrName !== "string")
229
211
  return meshIndexOrName;
230
212
  const mesh = typeof meshIndexOrName === "number"
231
- ? (_a = this.json.meshes) === null || _a === void 0 ? void 0 : _a[meshIndexOrName]
232
- : ((_b = this.json.meshes) !== null && _b !== void 0 ? _b : []).find((item) => item.name === meshIndexOrName);
213
+ ? this.json.meshes?.[meshIndexOrName]
214
+ : (this.json.meshes ?? []).find((item) => item.name === meshIndexOrName);
233
215
  if (!mesh) {
234
- throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${((_c = this.json.meshes) !== null && _c !== void 0 ? _c : []).map((mesh) => mesh.name).join(", ")}.`);
216
+ throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${(this.json.meshes ?? [])
217
+ .sort()
218
+ .map((mesh) => mesh.name)
219
+ .join(", ")}.`);
235
220
  }
236
221
  return mesh;
237
222
  }
238
223
  getMeshPrimitive(meshIndexOrName = 0, primitiveIndex = 0) {
239
- var _a;
240
224
  const mesh = typeof meshIndexOrName === "number" || typeof meshIndexOrName === "string"
241
225
  ? this.getMesh(meshIndexOrName)
242
226
  : meshIndexOrName;
243
227
  if (!mesh) {
244
- throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${((_a = this.json.meshes) !== null && _a !== void 0 ? _a : []).map((mesh) => mesh.name).join(", ")}.`);
228
+ throw new Error(`Asset has no mesh with index/name ${JSON.stringify(meshIndexOrName)}!\nAvailable names are: ${(this.json.meshes ?? []).map((mesh) => mesh.name).join(", ")}.`);
245
229
  }
246
230
  const primitive = mesh.primitives[primitiveIndex];
247
231
  if (!primitive) {
@@ -250,12 +234,11 @@ export class TgdDataGlb {
250
234
  return primitive;
251
235
  }
252
236
  getMeshPrimitiveIndices(meshIndexOrName = 0, primitiveIndex = 0) {
253
- var _a;
254
237
  const primitive = this.getMeshPrimitive(meshIndexOrName, primitiveIndex);
255
238
  const { indices } = primitive;
256
239
  if (isNumber(indices)) {
257
240
  const accessor = this.getAccessor(indices);
258
- const elements = this.getBufferViewData((_a = accessor.bufferView) !== null && _a !== void 0 ? _a : 0, accessor.componentType);
241
+ const elements = this.getBufferViewData(accessor.bufferView ?? 0, accessor.componentType);
259
242
  assertTgdTypeArrayForElements(elements);
260
243
  return elements;
261
244
  }
@@ -290,44 +273,40 @@ export class TgdDataGlb {
290
273
  return attribute;
291
274
  }
292
275
  }
293
- createTexture2D(context, textureIndex) {
294
- var _a, _b, _c, _d, _e;
295
- const gltfTex = (_a = this.json.textures) === null || _a === void 0 ? void 0 : _a[textureIndex];
276
+ createTexture2D(context, textureIndex, color = [0, 0, 0, 1]) {
277
+ const gltfTex = this.json.textures?.[textureIndex];
296
278
  if (!gltfTex) {
297
279
  throw new Error(`Asset has no texture with index #${textureIndex}!`);
298
280
  }
299
- const source = (_e = (_b = gltfTex.source) !== null && _b !== void 0 ? _b : (_d = (_c = gltfTex.extensions) === null || _c === void 0 ? void 0 : _c.EXT_texture_webp) === null || _d === void 0 ? void 0 : _d.source) !== null && _e !== void 0 ? _e : 0;
300
- const texture = new TgdTexture2D(context).loadBitmap(this.images[source]);
281
+ const source = gltfTex.source ?? gltfTex.extensions?.EXT_texture_webp?.source ?? 0;
282
+ const texture = new TgdTexture2D(context, { color }).loadBitmap(this.images[source]);
301
283
  return texture;
302
284
  }
303
285
  getBufferViewData(accessor, type = "Float32") {
304
- var _a, _b, _c, _d, _e;
305
286
  if (typeof accessor !== "number") {
306
- return this.getBufferViewData((_a = accessor.bufferView) !== null && _a !== void 0 ? _a : 0, accessor.componentType);
287
+ return this.getBufferViewData(accessor.bufferView ?? 0, accessor.componentType);
307
288
  }
308
289
  const bufferViewIndex = accessor;
309
290
  const fromCache = this.cacheBufferViewDatas.get(bufferViewIndex);
310
291
  if (fromCache)
311
292
  return fromCache;
312
293
  const { json: gltf } = this;
313
- const bufferView = (_b = gltf.bufferViews) === null || _b === void 0 ? void 0 : _b[bufferViewIndex];
294
+ const bufferView = gltf.bufferViews?.[bufferViewIndex];
314
295
  if (!bufferView)
315
296
  throw new Error(`No bufferView with index #${bufferViewIndex}!`);
316
297
  const buffer = this.chunks[bufferView.buffer];
317
- const byteOffset = (_c = bufferView.byteOffset) !== null && _c !== void 0 ? _c : 0;
298
+ const byteOffset = bufferView.byteOffset ?? 0;
318
299
  const data = buffer.slice(byteOffset, byteOffset + bufferView.byteLength);
319
- const view = figureOutView(data, convertTypeToNumber((_e = type !== null && type !== void 0 ? type : (_d = this.findAccessorForBufferView(bufferViewIndex)) === null || _d === void 0 ? void 0 : _d.componentType) !== null && _e !== void 0 ? _e : "Float32"));
300
+ const view = figureOutView(data, convertTypeToNumber(type ?? this.findAccessorForBufferView(bufferViewIndex)?.componentType ?? "Float32"));
320
301
  this.cacheBufferViewDatas.set(bufferViewIndex, view);
321
302
  return view;
322
303
  }
323
304
  findAccessorForBufferView(bufferViewIndex) {
324
- var _a;
325
- return ((_a = this.json.accessors) !== null && _a !== void 0 ? _a : []).find((accessor) => accessor.bufferView === bufferViewIndex);
305
+ return (this.json.accessors ?? []).find((accessor) => accessor.bufferView === bufferViewIndex);
326
306
  }
327
307
  setAttrib(dataset, attribName, meshIndexOrName = 0, primitiveIndex = 0, primitiveAttribName) {
328
- var _a, _b, _c, _d;
329
308
  const { json: gltf } = this;
330
- const attribute = (_a = this.getMeshOrThrow(meshIndexOrName).primitives[primitiveIndex].attributes[primitiveAttribName !== null && primitiveAttribName !== void 0 ? primitiveAttribName : attribName]) !== null && _a !== void 0 ? _a : -1;
309
+ const attribute = this.getMeshOrThrow(meshIndexOrName).primitives[primitiveIndex].attributes[primitiveAttribName ?? attribName] ?? -1;
331
310
  if (!isNumber(attribute)) {
332
311
  dataset.set(attribName, attribute.value, {
333
312
  byteStride: attribute.size * 4,
@@ -336,12 +315,12 @@ export class TgdDataGlb {
336
315
  });
337
316
  return;
338
317
  }
339
- const accessor = (_b = gltf.accessors) === null || _b === void 0 ? void 0 : _b[attribute];
318
+ const accessor = gltf.accessors?.[attribute];
340
319
  if (!accessor) {
341
- throw new Error(`No attribute "${primitiveAttribName !== null && primitiveAttribName !== void 0 ? primitiveAttribName : attribName}" for primitive #${primitiveIndex} of mesh #${meshIndexOrName}!`);
320
+ throw new Error(`No attribute "${primitiveAttribName ?? attribName}" for primitive #${primitiveIndex} of mesh #${meshIndexOrName}!`);
342
321
  }
343
- const bufferViewIndex = (_c = accessor.bufferView) !== null && _c !== void 0 ? _c : 0;
344
- const bufferView = (_d = gltf.bufferViews) === null || _d === void 0 ? void 0 : _d[bufferViewIndex];
322
+ const bufferViewIndex = accessor.bufferView ?? 0;
323
+ const bufferView = gltf.bufferViews?.[bufferViewIndex];
345
324
  if (!bufferView) {
346
325
  throw new Error(`No bufferView with index #${bufferViewIndex}!`);
347
326
  }
@@ -352,42 +331,62 @@ export class TgdDataGlb {
352
331
  count: accessor.count,
353
332
  });
354
333
  }
355
- makeGeometry({ computeNormals, meshIndex = 0, primitiveIndex = 0, attPositionName = "POSITION", attNormalName = "NORMAL", attTextureCoordsName = "TEXCOORD_0", } = {}) {
334
+ makeGeometry(options = {}) {
335
+ const { computeNormals, meshIndex = 0, primitiveIndex = 0, attPositionName = "POSITION", attNormalName = "NORMAL", attTextureCoordsName = "TEXCOORD_0", } = options;
336
+ try {
337
+ const dataset = this.makeDataset(options);
338
+ const elements = this.getMeshPrimitiveIndices(meshIndex, primitiveIndex);
339
+ return new TgdGeometry({
340
+ computeNormalsIfMissing: computeNormals,
341
+ dataset,
342
+ elements,
343
+ attPosition: attPositionName,
344
+ attNormal: attNormalName,
345
+ attUV: attTextureCoordsName,
346
+ });
347
+ }
348
+ catch (error) {
349
+ const message = error instanceof Error ? error.message : JSON.stringify(error);
350
+ throw new Error(`Error in primitive #${primitiveIndex} of mesh #${meshIndex}:\n${message}`);
351
+ }
352
+ }
353
+ makeDataset({ meshIndex = 0, primitiveIndex = 0, attPositionName = "POSITION", attNormalName = "NORMAL", attTextureCoordsName = "TEXCOORD_0", } = {}) {
356
354
  const primitive = this.getMeshPrimitive(meshIndex, primitiveIndex);
357
355
  try {
358
356
  const { attributes } = primitive;
359
357
  if (!attributes)
360
358
  throw new Error("No attributes found!");
361
- const elements = this.getMeshPrimitiveIndices(meshIndex, primitiveIndex);
362
359
  const definition = {
363
360
  [attPositionName]: "vec3",
364
361
  };
365
- if (typeof attributes[attNormalName] === "string") {
362
+ if (attributes[attNormalName] !== undefined) {
366
363
  definition[attNormalName] = "vec3";
367
364
  }
368
- if (typeof attributes[attTextureCoordsName] === "string") {
365
+ if (attributes[attTextureCoordsName] !== undefined) {
369
366
  definition[attTextureCoordsName] = "vec2";
370
367
  }
371
368
  const dataset = new TgdDataset(definition);
372
- dataset.set(attPositionName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attPositionName))));
373
- if (typeof attributes[attNormalName] === "string") {
374
- dataset.set(attNormalName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attNormalName))));
369
+ if (isNumber(attributes[attPositionName])) {
370
+ dataset.set(attPositionName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attPositionName))));
375
371
  }
376
- if (typeof attributes[attTextureCoordsName] === "string") {
377
- dataset.set(attTextureCoordsName, returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attTextureCoordsName))));
372
+ else {
373
+ dataset.set(attPositionName, attributes[attPositionName].value);
378
374
  }
379
- return new TgdGeometry({
380
- computeNormalsIfMissing: computeNormals,
381
- dataset,
382
- elements,
383
- attPosition: attPositionName,
384
- attNormal: attNormalName,
385
- attUV: attTextureCoordsName,
386
- });
375
+ if (typeof definition[attNormalName] === "string") {
376
+ dataset.set(attNormalName, isNumber(attributes[attNormalName])
377
+ ? returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attNormalName)))
378
+ : attributes[attNormalName].value);
379
+ }
380
+ if (typeof definition[attTextureCoordsName] === "string") {
381
+ dataset.set(attTextureCoordsName, isNumber(attributes[attTextureCoordsName])
382
+ ? returnFloat32Array(this.getBufferViewData(this.getAccessorByAttributeName(primitive, attTextureCoordsName)))
383
+ : attributes[attTextureCoordsName].value);
384
+ }
385
+ return dataset;
387
386
  }
388
387
  catch (error) {
389
388
  const message = error instanceof Error ? error.message : JSON.stringify(error);
390
- throw new Error(`Error in primitive #${primitiveIndex} of mesh #${meshIndex}:\n${message}`);
389
+ throw new Error(`Error in primitive #${primitiveIndex} of mesh ${typeof meshIndex === "number" ? `#${meshIndex}` : JSON.stringify(meshIndex)}:\n${message}`);
391
390
  }
392
391
  }
393
392
  }
@@ -430,4 +429,4 @@ function returnFloat32Array(data) {
430
429
  return data;
431
430
  throw new Error("We were expecting a Float32Array!");
432
431
  }
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQXdCLE1BQU0sa0JBQWtCLENBQUE7QUFDOUUsT0FBTyxFQUFrQixvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUE2QixNQUFNLGNBQWMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSw2QkFBNkIsRUFBZ0MsTUFBTSxZQUFZLENBQUE7QUFlN0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7QUFFL0IsTUFBTSxPQUFPLFVBQVU7SUFDWixNQUFNLENBQU8sS0FBSyxDQUFDLE9BQW9COzs7WUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDckMsTUFBTSxlQUFlLEdBQW9CLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxV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
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFhLFVBQVUsRUFBd0IsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5RSxPQUFPLEVBQWtCLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR2xFLE9BQU8sRUFBRSxVQUFVLEVBQTZCLE1BQU0sY0FBYyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBMEIsT0FBTyxFQUFXLE1BQU0sV0FBVyxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUVILG1CQUFtQixFQUNuQiw2QkFBNkIsR0FFaEMsTUFBTSxZQUFZLENBQUE7QUFlbkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7QUFFL0IsTUFBTSxPQUFPLFVBQVU7SUFDWixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFvQjtRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFDaEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxNQUFNLGVBQWUsR0FBb0IsTUFBTSxJQUFJLENBQUMsR0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAA;AAErE;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC,CAAA;CAC5D,CA2CA"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAA;AAErE;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAC,CAAA;CAC5D,CA4CA"}
@@ -30,6 +30,7 @@ export function parseGLB(data) {
30
30
  try {
31
31
  const object = JSON.parse(json);
32
32
  assertTgdFormatGltf(object);
33
+ addMissingMeshNames(object);
33
34
  gltf = object;
34
35
  chunkTypes.push({ type: "JSON", size: chunkData.byteLength });
35
36
  }
@@ -49,4 +50,14 @@ export function parseGLB(data) {
49
50
  }
50
51
  return { gltf, chunks, chunkTypes };
51
52
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcnNlci9nbHRmL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFckU7O0dBRUc7QUFFSCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQWlCO0lBS3RDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNDLElBQUksV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUN6RixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBbUIsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFBO0lBQ2hDLE1BQU0sVUFBVSxHQUFrRCxFQUFFLENBQUE7SUFDcEUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2YsT0FBTyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxJQUFJLENBQUMsQ0FBQTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzlDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUE7UUFDMUQsTUFBTSxJQUFJLFdBQVcsQ0FBQTtRQUNyQixJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMzQix5QkFBeUI7WUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDaEQsSUFBSSxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3hDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUMzQixJQUFJLEdBQUcsTUFBTSxDQUFBO2dCQUNiLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtZQUNqRSxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUN0RCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7WUFDdEQsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3RCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbEcsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQTtBQUN2QyxDQUFDIn0=
53
+ function addMissingMeshNames(object) {
54
+ const { meshes } = object;
55
+ if (!meshes)
56
+ return;
57
+ for (let index = 0; index < meshes.length; index++) {
58
+ const mesh = meshes[index];
59
+ if (!mesh.name)
60
+ mesh.name = `mesh_${index}`;
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcnNlci9nbHRmL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFckU7O0dBRUc7QUFFSCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQWlCO0lBS3RDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNDLElBQUksV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsT0FBTyxHQUFHLENBQUMsQ0FBQTtJQUN6RixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBbUIsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFBO0lBQ2hDLE1BQU0sVUFBVSxHQUFrRCxFQUFFLENBQUE7SUFDcEUsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQ2YsT0FBTyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxJQUFJLENBQUMsQ0FBQTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzlDLE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUE7UUFDMUQsTUFBTSxJQUFJLFdBQVcsQ0FBQTtRQUNyQixJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMzQix5QkFBeUI7WUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDaEQsSUFBSSxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3hDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUMzQixtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDM0IsSUFBSSxHQUFHLE1BQU0sQ0FBQTtnQkFDYixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7WUFDakUsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1lBQ3RELENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2xHLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUE7QUFDdkMsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsTUFBcUI7SUFDOUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQTtJQUN6QixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU07SUFFbkIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLEtBQUssRUFBRSxDQUFBO0lBQy9DLENBQUM7QUFDTCxDQUFDIn0=