x_ite 10.5.7 → 10.5.9

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 (50) hide show
  1. package/README.md +4 -4
  2. package/dist/assets/components/AnnotationComponent.js +2 -2
  3. package/dist/assets/components/AnnotationComponent.min.js +2 -2
  4. package/dist/assets/components/CADGeometryComponent.js +2 -2
  5. package/dist/assets/components/CADGeometryComponent.min.js +2 -2
  6. package/dist/assets/components/CubeMapTexturingComponent.js +3 -3
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +2 -2
  8. package/dist/assets/components/DISComponent.js +2 -2
  9. package/dist/assets/components/DISComponent.min.js +2 -2
  10. package/dist/assets/components/EventUtilitiesComponent.js +2 -2
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +2 -2
  12. package/dist/assets/components/Geometry2DComponent.js +2 -2
  13. package/dist/assets/components/Geometry2DComponent.min.js +2 -2
  14. package/dist/assets/components/GeospatialComponent.js +2 -2
  15. package/dist/assets/components/GeospatialComponent.min.js +2 -2
  16. package/dist/assets/components/HAnimComponent.js +373 -114
  17. package/dist/assets/components/HAnimComponent.min.js +2 -2
  18. package/dist/assets/components/KeyDeviceSensorComponent.js +2 -2
  19. package/dist/assets/components/KeyDeviceSensorComponent.min.js +2 -2
  20. package/dist/assets/components/LayoutComponent.js +2 -2
  21. package/dist/assets/components/LayoutComponent.min.js +2 -2
  22. package/dist/assets/components/NURBSComponent.js +2 -2
  23. package/dist/assets/components/NURBSComponent.min.js +2 -2
  24. package/dist/assets/components/ParticleSystemsComponent.js +2 -2
  25. package/dist/assets/components/ParticleSystemsComponent.min.js +2 -2
  26. package/dist/assets/components/PickingComponent.js +2 -2
  27. package/dist/assets/components/PickingComponent.min.js +2 -2
  28. package/dist/assets/components/RigidBodyPhysicsComponent.js +2 -2
  29. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +2 -2
  30. package/dist/assets/components/ScriptingComponent.js +2 -2
  31. package/dist/assets/components/ScriptingComponent.min.js +2 -2
  32. package/dist/assets/components/TextComponent.js +4 -4
  33. package/dist/assets/components/TextComponent.min.js +2 -2
  34. package/dist/assets/components/TextureProjectionComponent.js +2 -2
  35. package/dist/assets/components/TextureProjectionComponent.min.js +2 -2
  36. package/dist/assets/components/Texturing3DComponent.js +11 -11
  37. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  38. package/dist/assets/components/VolumeRenderingComponent.js +2 -2
  39. package/dist/assets/components/VolumeRenderingComponent.min.js +2 -2
  40. package/dist/assets/components/X_ITEComponent.js +2 -2
  41. package/dist/assets/components/X_ITEComponent.min.js +2 -2
  42. package/dist/example.html +1 -1
  43. package/dist/x_ite.css +1 -1
  44. package/dist/x_ite.d.ts +13 -0
  45. package/dist/x_ite.js +860 -423
  46. package/dist/x_ite.min.js +2 -2
  47. package/dist/x_ite.min.mjs +2 -2
  48. package/dist/x_ite.mjs +860 -423
  49. package/dist/x_ite.zip +0 -0
  50. package/package.json +2 -2
package/dist/x_ite.mjs CHANGED
@@ -1,10 +1,10 @@
1
- /* X_ITE v10.5.7 */
1
+ /* X_ITE v10.5.9 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 690:
4
+ /***/ 58:
5
5
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
6
6
 
7
- /* provided dependency */ var jQuery = __webpack_require__(58);
7
+ /* provided dependency */ var jQuery = __webpack_require__(394);
8
8
  /**
9
9
  * @preserve jquery.fullscreen 1.1.5
10
10
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -200,7 +200,7 @@ installFullScreenHandlers();
200
200
 
201
201
  /***/ }),
202
202
 
203
- /***/ 880:
203
+ /***/ 576:
204
204
  /***/ ((module, exports, __webpack_require__) => {
205
205
 
206
206
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -214,7 +214,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
214
214
  (function (factory) {
215
215
  if ( true ) {
216
216
  // AMD. Register as an anonymous module.
217
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(58)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
217
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(394)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
218
218
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
219
219
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
220
220
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -425,7 +425,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
425
425
 
426
426
  /***/ }),
427
427
 
428
- /***/ 58:
428
+ /***/ 394:
429
429
  /***/ (function(module, exports) {
430
430
 
431
431
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11149,7 +11149,7 @@ return jQuery;
11149
11149
 
11150
11150
  /***/ }),
11151
11151
 
11152
- /***/ 499:
11152
+ /***/ 787:
11153
11153
  /***/ ((module) => {
11154
11154
 
11155
11155
  /**
@@ -15928,7 +15928,7 @@ if (true) {
15928
15928
 
15929
15929
  /***/ }),
15930
15930
 
15931
- /***/ 642:
15931
+ /***/ 514:
15932
15932
  /***/ (function(__unused_webpack_module, exports) {
15933
15933
 
15934
15934
 
@@ -19173,7 +19173,7 @@ if (true) {
19173
19173
 
19174
19174
  /***/ }),
19175
19175
 
19176
- /***/ 85:
19176
+ /***/ 485:
19177
19177
  /***/ (function(module, exports) {
19178
19178
 
19179
19179
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20297,7 +20297,7 @@ Object .defineProperty (Namespace, "add",
20297
20297
  return module;
20298
20298
  }
20299
20299
 
20300
- const X3D = window [Symbol .for ("X_ITE.X3D-10.5.7")];
20300
+ const X3D = window [Symbol .for ("X_ITE.X3D-10.5.9")];
20301
20301
 
20302
20302
  if (X3D)
20303
20303
  X3D [name] = module;
@@ -23435,7 +23435,7 @@ Object .assign (Color3 .prototype,
23435
23435
  this [_b] = color [_b];
23436
23436
  return this;
23437
23437
  },
23438
- set (r, g, b)
23438
+ set (r = 0, g = 0, b = 0)
23439
23439
  {
23440
23440
  this [_r] = Math .max (r, 0);
23441
23441
  this [_g] = Math .max (g, 0);
@@ -23972,7 +23972,7 @@ Object .assign (Color4 .prototype,
23972
23972
  this [_a] = color [_a];
23973
23973
  return this;
23974
23974
  },
23975
- set (r, g, b, a)
23975
+ set (r = 0, g = 0, b = 0, a = 0)
23976
23976
  {
23977
23977
  this [Color4_r] = Math .max (r, 0);
23978
23978
  this [Color4_g] = Math .max (g, 0);
@@ -24808,6 +24808,18 @@ function SFMatrixPrototypeTemplate (Constructor, TypeName, Matrix, double, prope
24808
24808
  {
24809
24809
  return new (vector .constructor) (this .getValue () .multMatrixDir (vector .getValue () .copy ()));
24810
24810
  },
24811
+ translate (translation)
24812
+ {
24813
+ return new (this .constructor) (this .getValue () .copy () .translate (translation .getValue ()));
24814
+ },
24815
+ rotate (rotation)
24816
+ {
24817
+ return new (this .constructor) (this .getValue () .copy () .rotate (rotation .getValue ()));
24818
+ },
24819
+ scale (scale)
24820
+ {
24821
+ return new (this .constructor) (this .getValue () .copy () .scale (scale .getValue ()));
24822
+ },
24811
24823
  toStream (generator)
24812
24824
  {
24813
24825
  const
@@ -24958,22 +24970,22 @@ Object .assign (Vector2 .prototype,
24958
24970
  copy .y = this .y;
24959
24971
  return copy;
24960
24972
  },
24961
- assign (vector)
24973
+ assign ({ x, y })
24962
24974
  {
24963
- this .x = vector .x;
24964
- this .y = vector .y;
24975
+ this .x = x;
24976
+ this .y = y;
24965
24977
  return this;
24966
24978
  },
24967
- set (x, y)
24979
+ set (x = 0, y = 0)
24968
24980
  {
24969
24981
  this .x = x;
24970
24982
  this .y = y;
24971
24983
  return this;
24972
24984
  },
24973
- equals (vector)
24985
+ equals ({ x, y })
24974
24986
  {
24975
- return this .x === vector .x &&
24976
- this .y === vector .y;
24987
+ return this .x === x &&
24988
+ this .y === y;
24977
24989
  },
24978
24990
  negate ()
24979
24991
  {
@@ -24987,16 +24999,16 @@ Object .assign (Vector2 .prototype,
24987
24999
  this .y = 1 / this .y;
24988
25000
  return this;
24989
25001
  },
24990
- add (vector)
25002
+ add ({ x, y })
24991
25003
  {
24992
- this .x += vector .x;
24993
- this .y += vector .y;
25004
+ this .x += x;
25005
+ this .y += y;
24994
25006
  return this;
24995
25007
  },
24996
- subtract (vector)
25008
+ subtract ({ x, y })
24997
25009
  {
24998
- this .x -= vector .x;
24999
- this .y -= vector .y;
25010
+ this .x -= x;
25011
+ this .y -= y;
25000
25012
  return this;
25001
25013
  },
25002
25014
  multiply (value)
@@ -25005,10 +25017,10 @@ Object .assign (Vector2 .prototype,
25005
25017
  this .y *= value;
25006
25018
  return this;
25007
25019
  },
25008
- multVec (vector)
25020
+ multVec ({ x, y })
25009
25021
  {
25010
- this .x *= vector .x;
25011
- this .y *= vector .y;
25022
+ this .x *= x;
25023
+ this .y *= y;
25012
25024
  return this;
25013
25025
  },
25014
25026
  divide (value)
@@ -25017,10 +25029,10 @@ Object .assign (Vector2 .prototype,
25017
25029
  this .y /= value;
25018
25030
  return this;
25019
25031
  },
25020
- divVec (vector)
25032
+ divVec ({ x, y })
25021
25033
  {
25022
- this .x /= vector .x;
25023
- this .y /= vector .y;
25034
+ this .x /= x;
25035
+ this .y /= y;
25024
25036
  return this;
25025
25037
  },
25026
25038
  normalize ()
@@ -25035,10 +25047,10 @@ Object .assign (Vector2 .prototype,
25035
25047
 
25036
25048
  return this;
25037
25049
  },
25038
- dot (vector)
25050
+ dot ({ x, y })
25039
25051
  {
25040
- return this .x * vector .x +
25041
- this .y * vector .y;
25052
+ return this .x * x +
25053
+ this .y * y;
25042
25054
  },
25043
25055
  norm ()
25044
25056
  {
@@ -25051,33 +25063,35 @@ Object .assign (Vector2 .prototype,
25051
25063
  {
25052
25064
  return Math .hypot (this .x, this .y);
25053
25065
  },
25054
- distance (vector)
25066
+ distance ({ x, y })
25055
25067
  {
25056
- return Math .hypot (this .x - vector .x,
25057
- this .y - vector .y);
25068
+ return Math .hypot (this .x - x,
25069
+ this .y - y);
25058
25070
  },
25059
- lerp (destination, t)
25071
+ lerp ({ x: dX, y: dY }, t)
25060
25072
  {
25061
25073
  const { x, y } = this;
25062
25074
 
25063
- this .x = x + t * (destination .x - x);
25064
- this .y = y + t * (destination .y - y);
25075
+ this .x = x + t * (dX - x);
25076
+ this .y = y + t * (dY - y);
25065
25077
  return this;
25066
25078
  },
25067
25079
  abs ()
25068
25080
  {
25069
- this .x = Math .abs (this .x);
25070
- this .y = Math .abs (this .y);
25081
+ const { x, y } = this;
25082
+
25083
+ this .x = Math .abs (x);
25084
+ this .y = Math .abs (y);
25071
25085
  return this;
25072
25086
  },
25073
25087
  min (vector)
25074
25088
  {
25075
25089
  let { x, y } = this;
25076
25090
 
25077
- for (const vector of arguments)
25091
+ for (const { x: minX, y: minY } of arguments)
25078
25092
  {
25079
- x = Math .min (x, vector .x);
25080
- y = Math .min (y, vector .y);
25093
+ x = Math .min (x, minX);
25094
+ y = Math .min (y, minY);
25081
25095
  }
25082
25096
 
25083
25097
  this .x = x;
@@ -25088,20 +25102,21 @@ Object .assign (Vector2 .prototype,
25088
25102
  {
25089
25103
  let { x, y } = this;
25090
25104
 
25091
- for (const vector of arguments)
25105
+ for (const { x: maxX, y: maxY } of arguments)
25092
25106
  {
25093
- x = Math .max (x, vector .x);
25094
- y = Math .max (y, vector .y);
25107
+ x = Math .max (x, maxX);
25108
+ y = Math .max (y, maxY);
25095
25109
  }
25096
25110
 
25097
25111
  this .x = x;
25098
25112
  this .y = y;
25099
25113
  return this;
25100
25114
  },
25101
- clamp (min, max)
25115
+ clamp ({ x: minX, y: minY }, { x: maxX, y: maxY })
25102
25116
  {
25103
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
25104
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
25117
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
25118
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
25119
+ return this;
25105
25120
  },
25106
25121
  toString ()
25107
25122
  {
@@ -25213,25 +25228,25 @@ Object .assign (Vector3 .prototype,
25213
25228
  copy .z = this .z;
25214
25229
  return copy;
25215
25230
  },
25216
- assign (vector)
25231
+ assign ({ x, y, z })
25217
25232
  {
25218
- this .x = vector .x;
25219
- this .y = vector .y;
25220
- this .z = vector .z;
25233
+ this .x = x;
25234
+ this .y = y;
25235
+ this .z = z;
25221
25236
  return this;
25222
25237
  },
25223
- set (x, y, z)
25238
+ set (x = 0, y = 0, z = 0)
25224
25239
  {
25225
25240
  this .x = x;
25226
25241
  this .y = y;
25227
25242
  this .z = z;
25228
25243
  return this;
25229
25244
  },
25230
- equals (vector)
25245
+ equals ({ x, y, z })
25231
25246
  {
25232
- return this .x === vector .x &&
25233
- this .y === vector .y &&
25234
- this .z === vector .z;
25247
+ return this .x === x &&
25248
+ this .y === y &&
25249
+ this .z === z;
25235
25250
  },
25236
25251
  negate ()
25237
25252
  {
@@ -25247,18 +25262,18 @@ Object .assign (Vector3 .prototype,
25247
25262
  this .z = 1 / this .z;
25248
25263
  return this;
25249
25264
  },
25250
- add (vector)
25265
+ add ({ x, y, z })
25251
25266
  {
25252
- this .x += vector .x;
25253
- this .y += vector .y;
25254
- this .z += vector .z;
25267
+ this .x += x;
25268
+ this .y += y;
25269
+ this .z += z;
25255
25270
  return this;
25256
25271
  },
25257
- subtract (vector)
25272
+ subtract ({ x, y, z })
25258
25273
  {
25259
- this .x -= vector .x;
25260
- this .y -= vector .y;
25261
- this .z -= vector .z;
25274
+ this .x -= x;
25275
+ this .y -= y;
25276
+ this .z -= z;
25262
25277
  return this;
25263
25278
  },
25264
25279
  multiply (value)
@@ -25268,11 +25283,11 @@ Object .assign (Vector3 .prototype,
25268
25283
  this .z *= value;
25269
25284
  return this;
25270
25285
  },
25271
- multVec (vector)
25286
+ multVec ({ x, y, z })
25272
25287
  {
25273
- this .x *= vector .x;
25274
- this .y *= vector .y;
25275
- this .z *= vector .z;
25288
+ this .x *= x;
25289
+ this .y *= y;
25290
+ this .z *= z;
25276
25291
  return this;
25277
25292
  },
25278
25293
  divide (value)
@@ -25282,18 +25297,16 @@ Object .assign (Vector3 .prototype,
25282
25297
  this .z /= value;
25283
25298
  return this;
25284
25299
  },
25285
- divVec (vector)
25300
+ divVec ({ x, y, z })
25286
25301
  {
25287
- this .x /= vector .x;
25288
- this .y /= vector .y;
25289
- this .z /= vector .z;
25302
+ this .x /= x;
25303
+ this .y /= y;
25304
+ this .z /= z;
25290
25305
  return this;
25291
25306
  },
25292
- cross (vector)
25307
+ cross ({ x: bx, y: by, z: bz })
25293
25308
  {
25294
- const
25295
- { x: ax, y: ay, z: az } = this,
25296
- { x: bx, y: by, z: bz } = vector;
25309
+ const { x: ax, y: ay, z: az } = this;
25297
25310
 
25298
25311
  this .x = ay * bz - az * by;
25299
25312
  this .y = az * bx - ax * bz;
@@ -25314,11 +25327,11 @@ Object .assign (Vector3 .prototype,
25314
25327
 
25315
25328
  return this;
25316
25329
  },
25317
- dot (vector)
25330
+ dot ({ x, y, z })
25318
25331
  {
25319
- return this .x * vector .x +
25320
- this .y * vector .y +
25321
- this .z * vector .z;
25332
+ return this .x * x +
25333
+ this .y * y +
25334
+ this .z * z;
25322
25335
  },
25323
25336
  norm ()
25324
25337
  {
@@ -25332,19 +25345,19 @@ Object .assign (Vector3 .prototype,
25332
25345
  {
25333
25346
  return Math .hypot (this .x, this .y, this .z);
25334
25347
  },
25335
- distance (vector)
25348
+ distance ({ x, y, z })
25336
25349
  {
25337
- return Math .hypot (this .x - vector .x,
25338
- this .y - vector .y,
25339
- this .z - vector .z);
25350
+ return Math .hypot (this .x - x,
25351
+ this .y - y,
25352
+ this .z - z);
25340
25353
  },
25341
- lerp (destination, t)
25354
+ lerp ({ x: dX, y: dY, z: dZ }, t)
25342
25355
  {
25343
25356
  const { x, y, z } = this;
25344
25357
 
25345
- this .x = x + t * (destination .x - x);
25346
- this .y = y + t * (destination .y - y);
25347
- this .z = z + t * (destination .z - z);
25358
+ this .x = x + t * (dX - x);
25359
+ this .y = y + t * (dY - y);
25360
+ this .z = z + t * (dZ - z);
25348
25361
  return this;
25349
25362
  },
25350
25363
  slerp: (() =>
@@ -25358,20 +25371,22 @@ Object .assign (Vector3 .prototype,
25358
25371
  })(),
25359
25372
  abs ()
25360
25373
  {
25361
- this .x = Math .abs (this .x);
25362
- this .y = Math .abs (this .y);
25363
- this .z = Math .abs (this .z);
25374
+ const { x, y, z } = this;
25375
+
25376
+ this .x = Math .abs (x);
25377
+ this .y = Math .abs (y);
25378
+ this .z = Math .abs (z);
25364
25379
  return this;
25365
25380
  },
25366
25381
  min (vector)
25367
25382
  {
25368
25383
  let { x, y, z } = this;
25369
25384
 
25370
- for (const vector of arguments)
25385
+ for (const { x: minX, y: minY, z: minZ } of arguments)
25371
25386
  {
25372
- x = Math .min (x, vector .x);
25373
- y = Math .min (y, vector .y);
25374
- z = Math .min (z, vector .z);
25387
+ x = Math .min (x, minX);
25388
+ y = Math .min (y, minY);
25389
+ z = Math .min (z, minZ);
25375
25390
  }
25376
25391
 
25377
25392
  this .x = x;
@@ -25383,11 +25398,11 @@ Object .assign (Vector3 .prototype,
25383
25398
  {
25384
25399
  let { x, y, z } = this;
25385
25400
 
25386
- for (const vector of arguments)
25401
+ for (const { x: maxX, y: maxY, z: maxZ } of arguments)
25387
25402
  {
25388
- x = Math .max (x, vector .x);
25389
- y = Math .max (y, vector .y);
25390
- z = Math .max (z, vector .z);
25403
+ x = Math .max (x, maxX);
25404
+ y = Math .max (y, maxY);
25405
+ z = Math .max (z, maxZ);
25391
25406
  }
25392
25407
 
25393
25408
  this .x = x;
@@ -25395,11 +25410,12 @@ Object .assign (Vector3 .prototype,
25395
25410
  this .z = z;
25396
25411
  return this;
25397
25412
  },
25398
- clamp (min, max)
25413
+ clamp ({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ })
25399
25414
  {
25400
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
25401
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
25402
- this .z = Math_Algorithm .clamp (this .z, min .z, max .z);
25415
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
25416
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
25417
+ this .z = Math_Algorithm .clamp (this .z, minZ, maxZ);
25418
+ return this;
25403
25419
  },
25404
25420
  toString ()
25405
25421
  {
@@ -26686,6 +26702,10 @@ function SFMatrix3Template (TypeName, double)
26686
26702
  args .length = 0;
26687
26703
  };
26688
26704
  })(),
26705
+ rotate (rotation)
26706
+ {
26707
+ return new (this .constructor) (this .getValue () .copy () .rotate (rotation));
26708
+ },
26689
26709
  });
26690
26710
  }
26691
26711
 
@@ -26774,15 +26794,15 @@ Object .assign (Vector4 .prototype,
26774
26794
  copy .w = this .w;
26775
26795
  return copy;
26776
26796
  },
26777
- assign (vector)
26797
+ assign ({ x, y, z, w })
26778
26798
  {
26779
- this .x = vector .x;
26780
- this .y = vector .y;
26781
- this .z = vector .z;
26782
- this .w = vector .w;
26799
+ this .x = x;
26800
+ this .y = y;
26801
+ this .z = z;
26802
+ this .w = w;
26783
26803
  return this;
26784
26804
  },
26785
- set (x, y, z, w)
26805
+ set (x = 0, y = 0, z = 0, w = 0)
26786
26806
  {
26787
26807
  this .x = x;
26788
26808
  this .y = y;
@@ -26790,19 +26810,12 @@ Object .assign (Vector4 .prototype,
26790
26810
  this .w = w;
26791
26811
  return this;
26792
26812
  },
26793
- equals (vector)
26813
+ equals ({ x, y, z, w })
26794
26814
  {
26795
- return this .x === vector .x &&
26796
- this .y === vector .y &&
26797
- this .z === vector .z &&
26798
- this .w === vector .w;
26799
- },
26800
- getReal (vector)
26801
- {
26802
- vector .x = this .x / this .w;
26803
- vector .y = this .y / this .w;
26804
- vector .z = this .z / this .w;
26805
- return vector;
26815
+ return this .x === x &&
26816
+ this .y === y &&
26817
+ this .z === z &&
26818
+ this .w === w;
26806
26819
  },
26807
26820
  negate ()
26808
26821
  {
@@ -26820,20 +26833,20 @@ Object .assign (Vector4 .prototype,
26820
26833
  this .w = 1 / this .w;
26821
26834
  return this;
26822
26835
  },
26823
- add (vector)
26836
+ add ({ x, y, z, w })
26824
26837
  {
26825
- this .x += vector .x;
26826
- this .y += vector .y;
26827
- this .z += vector .z;
26828
- this .w += vector .w;
26838
+ this .x += x;
26839
+ this .y += y;
26840
+ this .z += z;
26841
+ this .w += w;
26829
26842
  return this;
26830
26843
  },
26831
- subtract (vector)
26844
+ subtract ({ x, y, z, w })
26832
26845
  {
26833
- this .x -= vector .x;
26834
- this .y -= vector .y;
26835
- this .z -= vector .z;
26836
- this .w -= vector .w;
26846
+ this .x -= x;
26847
+ this .y -= y;
26848
+ this .z -= z;
26849
+ this .w -= w;
26837
26850
  return this;
26838
26851
  },
26839
26852
  multiply (value)
@@ -26844,12 +26857,12 @@ Object .assign (Vector4 .prototype,
26844
26857
  this .w *= value;
26845
26858
  return this;
26846
26859
  },
26847
- multVec (vector)
26860
+ multVec ({ x, y, z, w })
26848
26861
  {
26849
- this .x *= vector .x;
26850
- this .y *= vector .y;
26851
- this .z *= vector .z;
26852
- this .w *= vector .w;
26862
+ this .x *= x;
26863
+ this .y *= y;
26864
+ this .z *= z;
26865
+ this .w *= w;
26853
26866
  return this;
26854
26867
  },
26855
26868
  divide (value)
@@ -26860,12 +26873,12 @@ Object .assign (Vector4 .prototype,
26860
26873
  this .w /= value;
26861
26874
  return this;
26862
26875
  },
26863
- divVec (vector)
26876
+ divVec ({ x, y, z, w })
26864
26877
  {
26865
- this .x /= vector .x;
26866
- this .y /= vector .y;
26867
- this .z /= vector .z;
26868
- this .w /= vector .w;
26878
+ this .x /= x;
26879
+ this .y /= y;
26880
+ this .z /= z;
26881
+ this .w /= w;
26869
26882
  return this;
26870
26883
  },
26871
26884
  normalize ()
@@ -26882,12 +26895,12 @@ Object .assign (Vector4 .prototype,
26882
26895
 
26883
26896
  return this;
26884
26897
  },
26885
- dot (vector)
26898
+ dot ({ x, y, z, w })
26886
26899
  {
26887
- return this .x * vector .x +
26888
- this .y * vector .y +
26889
- this .z * vector .z +
26890
- this .w * vector .w;
26900
+ return this .x * x +
26901
+ this .y * y +
26902
+ this .z * z +
26903
+ this .w * w;
26891
26904
  },
26892
26905
  norm ()
26893
26906
  {
@@ -26902,41 +26915,43 @@ Object .assign (Vector4 .prototype,
26902
26915
  {
26903
26916
  return Math .hypot (this .x, this .y, this .z, this .w);
26904
26917
  },
26905
- distance (vector)
26918
+ distance ({ x, y, z, w })
26906
26919
  {
26907
- return Math .hypot (this .x - vector .x,
26908
- this .y - vector .y,
26909
- this .z - vector .z,
26910
- this .w - vector .w);
26920
+ return Math .hypot (this .x - x,
26921
+ this .y - y,
26922
+ this .z - z,
26923
+ this .w - w);
26911
26924
  },
26912
- lerp (destination, t)
26925
+ lerp ({ x: dX, y: dY, z: dZ, w: dW }, t)
26913
26926
  {
26914
26927
  const { x, y, z, w } = this;
26915
26928
 
26916
- this .x = x + t * (destination .x - x);
26917
- this .y = y + t * (destination .y - y);
26918
- this .z = z + t * (destination .z - z);
26919
- this .w = w + t * (destination .w - w);
26929
+ this .x = x + t * (dX - x);
26930
+ this .y = y + t * (dY - y);
26931
+ this .z = z + t * (dZ - z);
26932
+ this .w = w + t * (dW - w);
26920
26933
  return this;
26921
26934
  },
26922
26935
  abs ()
26923
26936
  {
26924
- this .x = Math .abs (this .x);
26925
- this .y = Math .abs (this .y);
26926
- this .z = Math .abs (this .z);
26927
- this .w = Math .abs (this .w);
26937
+ const { x, y, z, w } = this;
26938
+
26939
+ this .x = Math .abs (x);
26940
+ this .y = Math .abs (y);
26941
+ this .z = Math .abs (z);
26942
+ this .w = Math .abs (w);
26928
26943
  return this;
26929
26944
  },
26930
26945
  min (vector)
26931
26946
  {
26932
26947
  let { x, y, z, w } = this;
26933
26948
 
26934
- for (const vector of arguments)
26949
+ for (const { x: minX, y: minY, z: minZ, w: minW } of arguments)
26935
26950
  {
26936
- x = Math .min (x, vector .x);
26937
- y = Math .min (y, vector .y);
26938
- z = Math .min (z, vector .z);
26939
- w = Math .min (w, vector .w);
26951
+ x = Math .min (x, minX);
26952
+ y = Math .min (y, minY);
26953
+ z = Math .min (z, minZ);
26954
+ w = Math .min (w, minW);
26940
26955
  }
26941
26956
 
26942
26957
  this .x = x;
@@ -26949,12 +26964,12 @@ Object .assign (Vector4 .prototype,
26949
26964
  {
26950
26965
  let { x, y, z, w } = this;
26951
26966
 
26952
- for (const vector of arguments)
26967
+ for (const { x: maxX, y: maxY, z: maxZ, w: maxW } of arguments)
26953
26968
  {
26954
- x = Math .max (x, vector .x);
26955
- y = Math .max (y, vector .y);
26956
- z = Math .max (z, vector .z);
26957
- w = Math .max (w, vector .w);
26969
+ x = Math .max (x, maxX);
26970
+ y = Math .max (y, maxY);
26971
+ z = Math .max (z, maxZ);
26972
+ w = Math .max (w, maxW);
26958
26973
  }
26959
26974
 
26960
26975
  this .x = x;
@@ -26963,12 +26978,13 @@ Object .assign (Vector4 .prototype,
26963
26978
  this .w = w;
26964
26979
  return this;
26965
26980
  },
26966
- clamp (min, max)
26981
+ clamp ({ x: minX, y: minY, z: minZ, w: minW }, { x: maxX, y: maxY, z: maxZ, w: maxW })
26967
26982
  {
26968
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
26969
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
26970
- this .z = Math_Algorithm .clamp (this .z, min .z, max .z);
26971
- this .w = Math_Algorithm .clamp (this .w, min .w, max .w);
26983
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
26984
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
26985
+ this .z = Math_Algorithm .clamp (this .z, minZ, maxZ);
26986
+ this .w = Math_Algorithm .clamp (this .w, minW, maxW);
26987
+ return this;
26972
26988
  },
26973
26989
  toString ()
26974
26990
  {
@@ -27099,15 +27115,15 @@ Object .assign (Quaternion .prototype,
27099
27115
  copy .w = this .w;
27100
27116
  return copy;
27101
27117
  },
27102
- assign (quat)
27118
+ assign ({ x, y, z, w })
27103
27119
  {
27104
- this .x = quat .x;
27105
- this .y = quat .y;
27106
- this .z = quat .z;
27107
- this .w = quat .w;
27120
+ this .x = x;
27121
+ this .y = y;
27122
+ this .z = z;
27123
+ this .w = w;
27108
27124
  return this;
27109
27125
  },
27110
- set (x, y, z, w)
27126
+ set (x = 0, y = 0, z = 0, w = 1)
27111
27127
  {
27112
27128
  this .x = x;
27113
27129
  this .y = y;
@@ -27368,12 +27384,12 @@ Object .assign (Quaternion .prototype,
27368
27384
  {
27369
27385
  return !this .w;
27370
27386
  },
27371
- equals (quat)
27387
+ equals ({ x, y, z, w })
27372
27388
  {
27373
- return this .x === quat .x &&
27374
- this .y === quat .y &&
27375
- this .z === quat .z &&
27376
- this .w === quat .w;
27389
+ return this .x === x &&
27390
+ this .y === y &&
27391
+ this .z === z &&
27392
+ this .w === w;
27377
27393
  },
27378
27394
  negate ()
27379
27395
  {
@@ -27390,20 +27406,20 @@ Object .assign (Quaternion .prototype,
27390
27406
  this .z = -this .z;
27391
27407
  return this;
27392
27408
  },
27393
- add (quat)
27409
+ add ({ x, y, z, w })
27394
27410
  {
27395
- this .x += quat .x;
27396
- this .y += quat .y;
27397
- this .z += quat .z;
27398
- this .w += quat .w;
27411
+ this .x += x;
27412
+ this .y += y;
27413
+ this .z += z;
27414
+ this .w += w;
27399
27415
  return this;
27400
27416
  },
27401
- subtract (quat)
27417
+ subtract ({ x, y, z, w })
27402
27418
  {
27403
- this .x -= quat .x;
27404
- this .y -= quat .y;
27405
- this .z -= quat .z;
27406
- this .w -= quat .w;
27419
+ this .x -= x;
27420
+ this .y -= y;
27421
+ this .z -= z;
27422
+ this .w -= w;
27407
27423
  return this;
27408
27424
  },
27409
27425
  multiply (value)
@@ -29762,6 +29778,10 @@ function SFVecPrototypeTemplate (Constructor, TypeName, Vector, double, properti
29762
29778
  {
29763
29779
  return new (this .constructor) (this .getValue () .copy () .add (vector .getValue ()));
29764
29780
  },
29781
+ clamp (low, high)
29782
+ {
29783
+ return new (this .constructor) (this .getValue () .copy () .clamp (low .getValue (), high .getValue ()));
29784
+ },
29765
29785
  distance (vector)
29766
29786
  {
29767
29787
  return this .getValue () .distance (vector .getValue ());
@@ -34159,7 +34179,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34159
34179
 
34160
34180
  /* harmony default export */ const Base_X3DBaseNode = (x_ite_Namespace .add ("X3DBaseNode", X3DBaseNode_default_));
34161
34181
  ;// ./src/x_ite/Browser/Legacy.js
34162
- /* provided dependency */ var $ = __webpack_require__(58);
34182
+ /* provided dependency */ var $ = __webpack_require__(394);
34163
34183
  /*******************************************************************************
34164
34184
  *
34165
34185
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34295,7 +34315,7 @@ const Legacy_default_ = Legacy;
34295
34315
  *
34296
34316
  ******************************************************************************/
34297
34317
 
34298
- const BROWSER_VERSION_default_ = "10.5.7";
34318
+ const BROWSER_VERSION_default_ = "10.5.9";
34299
34319
  ;
34300
34320
 
34301
34321
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -37320,7 +37340,7 @@ const X3DBindableNode_default_ = X3DBindableNode;
37320
37340
 
37321
37341
  /* harmony default export */ const Core_X3DBindableNode = (x_ite_Namespace .add ("X3DBindableNode", X3DBindableNode_default_));
37322
37342
  ;// ./src/standard/Math/Geometry/Triangle3.js
37323
- /* provided dependency */ var libtess = __webpack_require__(499);
37343
+ /* provided dependency */ var libtess = __webpack_require__(787);
37324
37344
  /*******************************************************************************
37325
37345
  *
37326
37346
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39886,7 +39906,7 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
39886
39906
 
39887
39907
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (x_ite_Namespace .add ("X3DProtoDeclaration", X3DProtoDeclaration_default_));
39888
39908
  ;// ./src/x_ite/Parser/X3DParser.js
39889
- /* provided dependency */ var X3DParser_$ = __webpack_require__(58);
39909
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(394);
39890
39910
  /*******************************************************************************
39891
39911
  *
39892
39912
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -40141,7 +40161,7 @@ const Expressions_default_ = Expressions;
40141
40161
 
40142
40162
  /* harmony default export */ const Parser_Expressions = (x_ite_Namespace .add ("Expressions", Expressions_default_));
40143
40163
  ;// ./src/x_ite/Parser/VRMLParser.js
40144
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(58);
40164
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(394);
40145
40165
  /*******************************************************************************
40146
40166
  *
40147
40167
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42781,7 +42801,7 @@ const VRMLParser_default_ = VRMLParser;
42781
42801
 
42782
42802
  /* harmony default export */ const Parser_VRMLParser = (x_ite_Namespace .add ("VRMLParser", VRMLParser_default_));
42783
42803
  ;// ./src/x_ite/Parser/XMLParser.js
42784
- /* provided dependency */ var XMLParser_$ = __webpack_require__(58);
42804
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(394);
42785
42805
  /*******************************************************************************
42786
42806
  *
42787
42807
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -44959,7 +44979,7 @@ const URLs_default_ = URLs;
44959
44979
 
44960
44980
  /* harmony default export */ const Networking_URLs = (x_ite_Namespace .add ("URLs", URLs_default_));
44961
44981
  ;// ./src/x_ite/Parser/GLTF2Parser.js
44962
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(58);
44982
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(394);
44963
44983
  /*******************************************************************************
44964
44984
  *
44965
44985
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -45020,6 +45040,7 @@ const URLs_default_ = URLs;
45020
45040
 
45021
45041
 
45022
45042
 
45043
+
45023
45044
  // https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
45024
45045
  // https://github.com/KhronosGroup/glTF-Sample-Assets
45025
45046
 
@@ -45054,6 +45075,8 @@ function GLTF2Parser (scene)
45054
45075
  this .nodes = [ ];
45055
45076
  this .skins = [ ];
45056
45077
  this .joints = new Set ();
45078
+ this .pointerAliases = new Map ();
45079
+ this .animationScripts = [ ];
45057
45080
  }
45058
45081
 
45059
45082
  Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser .prototype),
@@ -45169,7 +45192,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45169
45192
  this .camerasArray (glTF .cameras);
45170
45193
  this .skinsArray (glTF .skins);
45171
45194
  this .nodesArray (glTF .nodes);
45172
- this .scenesArray (glTF .scenes, glTF .scene);
45195
+ this .scenesArray (glTF, glTF .scenes, glTF .scene);
45173
45196
  this .animationsArray (glTF .animations);
45174
45197
 
45175
45198
  this .viewpointsCenterOfRotation (this .getScene ());
@@ -45238,8 +45261,9 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45238
45261
  return;
45239
45262
 
45240
45263
  const
45241
- browser = this .getBrowser (),
45242
- scene = this .getScene ();
45264
+ browser = this .getBrowser (),
45265
+ scene = this .getScene (),
45266
+ components = [ ];
45243
45267
 
45244
45268
  for (const extension of extensions)
45245
45269
  {
@@ -45249,11 +45273,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45249
45273
  {
45250
45274
  case "EXT_lights_image_based":
45251
45275
  {
45252
- const component = browser .getComponent ("CubeMapTexturing", 3);
45253
-
45254
- if (!scene .hasComponent (component))
45255
- scene .addComponent (component);
45256
-
45276
+ components .push (browser .getComponent ("CubeMapTexturing", 3));
45257
45277
  break;
45258
45278
  }
45259
45279
  // https://github.com/KhronosGroup/glTF/pull/1956
@@ -45275,24 +45295,28 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45275
45295
  case "KHR_materials_transmission":
45276
45296
  case "KHR_materials_volume":
45277
45297
  {
45278
- const component = browser .getComponent ("X_ITE", 1);
45279
-
45280
- if (!scene .hasComponent (component))
45281
- scene .addComponent (component);
45282
-
45298
+ components .push (browser .getComponent ("X_ITE", 1));
45283
45299
  break;
45284
45300
  }
45285
45301
  case "KHR_texture_transform":
45286
45302
  {
45287
- const component = browser .getComponent ("Texturing3D", 2);
45288
-
45289
- if (!scene .hasComponent (component))
45290
- scene .addComponent (component);
45291
-
45303
+ components .push (browser .getComponent ("Texturing3D", 2));
45304
+ break;
45305
+ }
45306
+ case "KHR_animation_pointer":
45307
+ {
45308
+ components .push (browser .getComponent ("EventUtilities", 1));
45309
+ components .push (browser .getComponent ("Scripting", 1));
45292
45310
  break;
45293
45311
  }
45294
45312
  }
45295
45313
  }
45314
+
45315
+ for (const component of components)
45316
+ {
45317
+ if (!scene .hasComponent (component))
45318
+ scene .addComponent (component);
45319
+ }
45296
45320
  },
45297
45321
  extensionsObject (extensions)
45298
45322
  {
@@ -45403,6 +45427,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45403
45427
 
45404
45428
  lightNode .setup ();
45405
45429
 
45430
+ light .pointers = [lightNode];
45431
+
45406
45432
  return light .node = lightNode;
45407
45433
  },
45408
45434
  khrLightsPunctualObject (KHR_lights_punctual)
@@ -45449,6 +45475,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45449
45475
  scene .addNamedNode (scene .getUniqueName (name), lightNode);
45450
45476
  scene .addExportedNode (scene .getUniqueExportName (name), lightNode);
45451
45477
 
45478
+ light .pointers = [lightNode];
45479
+
45452
45480
  return light .node = lightNode;
45453
45481
  },
45454
45482
  lightType (light)
@@ -45482,6 +45510,10 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45482
45510
  lightNode ._beamWidth = this .numberValue (light .innerConeAngle, 0);
45483
45511
  lightNode ._attenuation = new Numbers_Vector3 (0, 0, 1);
45484
45512
 
45513
+ this .addAnimationPointerAlias (lightNode, "range", "radius");
45514
+ this .addAnimationPointerAlias (lightNode, "outerConeAngle", "cutOffAngle");
45515
+ this .addAnimationPointerAlias (lightNode, "innerConeAngle", "beamWidth");
45516
+
45485
45517
  return lightNode;
45486
45518
  },
45487
45519
  pointLight (light)
@@ -45493,6 +45525,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45493
45525
  lightNode ._radius = this .numberValue (light .range, 0) || -1;
45494
45526
  lightNode ._attenuation = new Numbers_Vector3 (0, 0, 1);
45495
45527
 
45528
+ this .addAnimationPointerAlias (lightNode, "range", "radius");
45529
+
45496
45530
  return lightNode;
45497
45531
  },
45498
45532
  khrMaterialsVariantsObjectVariants (KHR_materials_variants)
@@ -45898,11 +45932,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45898
45932
 
45899
45933
  const texCoordIndices = this .getTexCoordIndices ("", material);
45900
45934
 
45901
- this .texCoordIndex = Array .from (texCoordIndices) .reduce ((p, c) => Math .max (p, c), -1);
45902
- this .textureTransformNodes = [ ];
45903
- this .texCoordMappings = new Map ();
45904
- this .texCoordOfNode = new Map ();
45905
- material .texCoordMappings = this .texCoordMappings;
45935
+ this .texCoordIndex = Array .from (texCoordIndices) .reduce ((p, c) => Math .max (p, c), -1);
45936
+ this .textureTransformNodes = [ ];
45937
+ this .texCoordMappings = new Map ();
45938
+ this .texCoordOfNode = new Map ();
45939
+ this .texCoordExtensionOfNode = new Map ();
45940
+ material .texCoordMappings = this .texCoordMappings;
45906
45941
 
45907
45942
  const
45908
45943
  scene = this .getScene (),
@@ -45959,6 +45994,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45959
45994
 
45960
45995
  appearanceNode .setup ();
45961
45996
 
45997
+ material .pointers = [appearanceNode, materialNode];
45998
+
45962
45999
  return material .appearanceNode = appearanceNode;
45963
46000
  },
45964
46001
  getTexCoordIndices (key, object, indices = new Set ())
@@ -46017,6 +46054,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46017
46054
  materialNode ._metallicRoughnessTexture = this .textureInfo (pbrMetallicRoughness .metallicRoughnessTexture);
46018
46055
  materialNode ._metallicRoughnessTextureMapping = this .textureMapping (pbrMetallicRoughness .metallicRoughnessTexture);
46019
46056
 
46057
+ pbrMetallicRoughness .pointers = [materialNode];
46058
+
46020
46059
  return materialNode;
46021
46060
  },
46022
46061
  pbrSpecularGlossinessObject (pbrSpecularGlossiness)
@@ -46052,6 +46091,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46052
46091
  materialNode ._specularGlossinessTexture = this .textureInfo (pbrSpecularGlossiness .specularGlossinessTexture);
46053
46092
  materialNode ._specularGlossinessTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
46054
46093
 
46094
+ pbrSpecularGlossiness .pointers = [materialNode];
46095
+
46055
46096
  return materialNode;
46056
46097
  },
46057
46098
  occlusionTextureInfo (occlusionTexture, materialNode)
@@ -46150,6 +46191,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46150
46191
 
46151
46192
  extension .setup ();
46152
46193
 
46194
+ KHR_materials_anisotropy .pointers = [extension];
46195
+
46153
46196
  materialNode ._extensions .push (extension);
46154
46197
  },
46155
46198
  khrMaterialsClearcoatObject (KHR_materials_clearcoat, materialNode)
@@ -46172,6 +46215,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46172
46215
 
46173
46216
  extension .setup ();
46174
46217
 
46218
+ KHR_materials_clearcoat .pointers = [extension];
46219
+
46175
46220
  materialNode ._extensions .push (extension);
46176
46221
  },
46177
46222
  khrMaterialsDiffuseTransmissionObject (KHR_materials_diffuse_transmission, materialNode)
@@ -46195,6 +46240,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46195
46240
 
46196
46241
  extension .setup ();
46197
46242
 
46243
+ KHR_materials_diffuse_transmission .pointers = [extension];
46244
+
46198
46245
  materialNode ._extensions .push (extension);
46199
46246
  },
46200
46247
  khrMaterialsDispersionObject (KHR_materials_dispersion, materialNode)
@@ -46208,6 +46255,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46208
46255
 
46209
46256
  extension .setup ();
46210
46257
 
46258
+ KHR_materials_dispersion .pointers = [extension];
46259
+
46211
46260
  materialNode ._extensions .push (extension);
46212
46261
  },
46213
46262
  khrMaterialsEmissiveStrengthObject (KHR_materials_emissive_strength, materialNode)
@@ -46221,6 +46270,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46221
46270
 
46222
46271
  extension .setup ();
46223
46272
 
46273
+ KHR_materials_emissive_strength .pointers = [extension];
46274
+
46224
46275
  materialNode ._extensions .push (extension);
46225
46276
  },
46226
46277
  khrMaterialsIorStrengthObject (KHR_materials_ior, materialNode)
@@ -46231,6 +46282,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46231
46282
 
46232
46283
  extension .setup ();
46233
46284
 
46285
+ KHR_materials_ior .pointers = [extension];
46286
+
46234
46287
  materialNode ._extensions .push (extension);
46235
46288
  },
46236
46289
  khrMaterialsIridescenceObject (KHR_materials_iridescence, materialNode)
@@ -46248,6 +46301,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46248
46301
 
46249
46302
  extension .setup ();
46250
46303
 
46304
+ KHR_materials_iridescence .pointers = [extension];
46305
+
46251
46306
  materialNode ._extensions .push (extension);
46252
46307
  },
46253
46308
  khrMaterialsSheenObject (KHR_materials_sheen, materialNode)
@@ -46271,6 +46326,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46271
46326
 
46272
46327
  extension .setup ();
46273
46328
 
46329
+ KHR_materials_sheen .pointers = [extension];
46330
+
46274
46331
  materialNode ._extensions .push (extension);
46275
46332
  },
46276
46333
  khrMaterialsSpecularObject (KHR_materials_specular, materialNode)
@@ -46294,6 +46351,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46294
46351
 
46295
46352
  extension .setup ();
46296
46353
 
46354
+ KHR_materials_specular .pointers = [extension];
46355
+
46297
46356
  materialNode ._extensions .push (extension);
46298
46357
  },
46299
46358
  khrMaterialsTransmission (KHR_materials_transmission, materialNode)
@@ -46309,6 +46368,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46309
46368
 
46310
46369
  extension .setup ();
46311
46370
 
46371
+ KHR_materials_transmission .pointers = [extension];
46372
+
46312
46373
  materialNode ._extensions .push (extension);
46313
46374
  },
46314
46375
  khrMaterialsVolumeObject (KHR_materials_volume, materialNode)
@@ -46327,6 +46388,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46327
46388
 
46328
46389
  extension .setup ();
46329
46390
 
46391
+ KHR_materials_volume .pointers = [extension];
46392
+
46330
46393
  materialNode ._extensions .push (extension);
46331
46394
  },
46332
46395
  khrMaterialsUnlitObject (KHR_materials_unlit, materialNode)
@@ -46345,6 +46408,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46345
46408
  unlitMaterialNode ._transparency = materialNode ._transparency;
46346
46409
 
46347
46410
  unlitMaterialNode .setup ();
46411
+ this .addAnimationPointerAlias (unlitMaterialNode, "baseColor", "emissiveColor");
46348
46412
 
46349
46413
  materialNode .dispose ();
46350
46414
 
@@ -46383,7 +46447,18 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46383
46447
  const existing = this .textureTransformNodes .find (node => this .texCoordOfNode .get (node) === texCoord && node ._matrix .getValue () .equals (matrix));
46384
46448
 
46385
46449
  if (existing)
46450
+ {
46451
+ Object .defineProperty (KHR_texture_transform, "pointers",
46452
+ {
46453
+ get: () =>
46454
+ {
46455
+ return this .texCoordExtensionOfNode .get (existing);
46456
+ },
46457
+ configurable: true,
46458
+ });
46459
+
46386
46460
  return existing ._mapping .getValue ();
46461
+ }
46387
46462
 
46388
46463
  // Create new TextureTransformMatrix3D.
46389
46464
 
@@ -46400,6 +46475,54 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46400
46475
  this .textureTransformNodes .push (textureTransformNode);
46401
46476
  this .texCoordMappings .set (mapping, texCoord);
46402
46477
  this .texCoordOfNode .set (textureTransformNode, texCoord);
46478
+ this .texCoordExtensionOfNode .set (textureTransformNode, KHR_texture_transform);
46479
+
46480
+ Object .defineProperty (KHR_texture_transform, "pointers",
46481
+ {
46482
+ get: () =>
46483
+ {
46484
+ const scriptNode = scene .createNode ("Script", false);
46485
+
46486
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "translation", new x_ite_Fields .SFVec2f ());
46487
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "rotation", new x_ite_Fields .SFFloat ());
46488
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "scale", new x_ite_Fields .SFVec2f (1, 1));
46489
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .SFMatrix4f ());
46490
+
46491
+ scriptNode ._url = [/* js */ `ecmascript:
46492
+
46493
+ const
46494
+ flip = new SFMatrix3f (1, 0, 0, 0, -1, 0, 0, 1, 1),
46495
+ matrix = new SFMatrix3f ();
46496
+
46497
+ function eventsProcessed ()
46498
+ {
46499
+ matrix .setTransform (translation, -rotation, scale);
46500
+
46501
+ const m = flip .multLeft (matrix);
46502
+
46503
+ value_changed [0] = m [0];
46504
+ value_changed [1] = m [1];
46505
+ value_changed [4] = m [3];
46506
+ value_changed [5] = m [4];
46507
+ value_changed [12] = m [6];
46508
+ value_changed [13] = m [7];
46509
+ }
46510
+ `];
46511
+
46512
+ scriptNode .setup ();
46513
+
46514
+ scene .addNamedNode (scene .getUniqueName ("CombineTextureMatrixScript"), scriptNode);
46515
+ scene .addRoute (scriptNode, "value_changed", textureTransformNode, "set_matrix");
46516
+
46517
+ this .addAnimationPointerAlias (scriptNode, "offset", "translation");
46518
+ this .animationScripts .push (scriptNode);
46519
+
46520
+ Object .defineProperty (KHR_texture_transform, "pointers", { value: [scriptNode] });
46521
+
46522
+ return [scriptNode];
46523
+ },
46524
+ configurable: true,
46525
+ });
46403
46526
 
46404
46527
  return mapping;
46405
46528
  },
@@ -46804,6 +46927,41 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46804
46927
 
46805
46928
  viewpointNode .setup ();
46806
46929
 
46930
+ this .addAnimationPointerAlias (viewpointNode, "znear", "nearDistance");
46931
+ this .addAnimationPointerAlias (viewpointNode, "zfar", "farDistance");
46932
+
46933
+ Object .defineProperty (camera, "pointers",
46934
+ {
46935
+ get: () =>
46936
+ {
46937
+ const scriptNode = scene .createNode ("Script", false);
46938
+
46939
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "xmag", new x_ite_Fields .SFFloat (1));
46940
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "ymag", new x_ite_Fields .SFFloat (1));
46941
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .MFFloat ());
46942
+
46943
+ scriptNode ._url = [/* js */ `ecmascript:
46944
+
46945
+ function eventsProcessed ()
46946
+ {
46947
+ value_changed = new MFFloat (-xmag, -ymag, xmag, ymag);
46948
+ }
46949
+ `];
46950
+
46951
+ scriptNode .setup ();
46952
+
46953
+ scene .addNamedNode (scene .getUniqueName ("CombineFieldOfViewScript"), scriptNode);
46954
+ scene .addRoute (scriptNode, "value_changed", viewpointNode, "set_fieldOfView");
46955
+
46956
+ this .animationScripts .push (scriptNode);
46957
+
46958
+ Object .defineProperty (camera, "pointers", { value: [viewpointNode, scriptNode] });
46959
+
46960
+ return [viewpointNode, scriptNode];
46961
+ },
46962
+ configurable: true,
46963
+ });
46964
+
46807
46965
  return viewpointNode;
46808
46966
  },
46809
46967
  perspectiveCamera (camera)
@@ -46816,7 +46974,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46816
46974
  viewpointNode = scene .createNode ("Viewpoint", false);
46817
46975
 
46818
46976
  if (typeof camera .yfov === "number")
46819
- viewpointNode ._fieldOfView = camera .yfov
46977
+ viewpointNode ._fieldOfView = camera .yfov;
46820
46978
 
46821
46979
  if (typeof camera .znear === "number")
46822
46980
  viewpointNode ._nearDistance = camera .znear;
@@ -46826,6 +46984,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46826
46984
 
46827
46985
  viewpointNode .setup ();
46828
46986
 
46987
+ this .addAnimationPointerAlias (viewpointNode, "yfov", "fieldOfView");
46988
+ this .addAnimationPointerAlias (viewpointNode, "znear", "nearDistance");
46989
+ this .addAnimationPointerAlias (viewpointNode, "zfar", "farDistance");
46990
+
46991
+ camera .pointers = [viewpointNode];
46992
+
46829
46993
  return viewpointNode;
46830
46994
  },
46831
46995
  nodesArray (nodes)
@@ -46866,13 +47030,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46866
47030
  {
46867
47031
  // Skins can be cloned.
46868
47032
 
46869
- if (!skin .humanoidNode)
46870
- skin .humanoidNode = scene .createNode ("HAnimHumanoid", false);
46871
-
46872
- node .humanoidNode = skin .humanoidNode;
47033
+ skin .humanoidNode ??= scene .createNode ("HAnimHumanoid", false);
47034
+ node .humanoidNode = skin .humanoidNode;
46873
47035
  }
46874
47036
 
46875
47037
  node .childNode = node .humanoidNode ?? node .transformNode;
47038
+ node .pointers = [node .childNode];
46876
47039
 
46877
47040
  return node;
46878
47041
  },
@@ -47113,7 +47276,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47113
47276
 
47114
47277
  return matrices;
47115
47278
  },
47116
- scenesArray (scenes, sceneNumber = 0)
47279
+ scenesArray (glTF, scenes, sceneNumber = 0)
47117
47280
  {
47118
47281
  if (!(scenes instanceof Array))
47119
47282
  return;
@@ -47154,6 +47317,10 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47154
47317
 
47155
47318
  switchNode .setup ();
47156
47319
 
47320
+ this .addAnimationPointerAlias (switchNode, "scene", "whichChoice");
47321
+
47322
+ glTF .pointers = [switchNode];
47323
+
47157
47324
  scene .getRootNodes () .push (switchNode);
47158
47325
  return;
47159
47326
  }
@@ -47299,6 +47466,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47299
47466
  if (!(samplers instanceof Array))
47300
47467
  return [ ];
47301
47468
 
47469
+ // Determine cycleInterval.
47470
+
47302
47471
  const cycleInterval = samplers
47303
47472
  .map (sampler => this .accessors [sampler .input])
47304
47473
  .filter (input => input ?.array .length)
@@ -47306,8 +47475,25 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47306
47475
 
47307
47476
  timeSensorNode ._cycleInterval = cycleInterval;
47308
47477
 
47309
- return channels
47478
+ // Get interpolators.
47479
+
47480
+ channels = channels
47310
47481
  .flatMap (channel => this .animationChannelObject (channel, samplers, timeSensorNode));
47482
+
47483
+ // Insert Script nodes after last interpolator.
47484
+
47485
+ for (const scriptNode of this .animationScripts)
47486
+ {
47487
+ const index = channels .findLastIndex (node => node .getFields ()
47488
+ .some (field => Array .from (field .getOutputRoutes ())
47489
+ .some (route => route .getDestinationNode () === scriptNode)));
47490
+
47491
+ channels .splice (index + 1, 0, scriptNode);
47492
+ }
47493
+
47494
+ this .animationScripts .length = 0;
47495
+
47496
+ return channels;
47311
47497
  },
47312
47498
  animationChannelObject (channel, samplers, timeSensorNode)
47313
47499
  {
@@ -48132,38 +48318,19 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48132
48318
 
48133
48319
  switch (target .path)
48134
48320
  {
48135
- case "translation":
48321
+ case "pointer":
48136
48322
  {
48137
- const interpolatorNode = this .createPositionInterpolator (interpolation, times, keyValues .array, cycleInterval);
48138
-
48139
- scene .addNamedNode (scene .getUniqueName ("TranslationInterpolator"), interpolatorNode);
48323
+ const [node, field] = this .getAnimationPointer (target .extensions ?.KHR_animation_pointer ?.pointer);
48140
48324
 
48141
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48142
- scene .addRoute (interpolatorNode, "value_changed", node, "set_translation");
48143
-
48144
- return interpolatorNode;
48325
+ return this .createAnimationPointerInterpolator (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval);
48145
48326
  }
48327
+ case "translation":
48146
48328
  case "rotation":
48147
- {
48148
- const interpolatorNode = this .createOrientationInterpolator (interpolation, times, keyValues .array, cycleInterval);
48149
-
48150
- scene .addNamedNode (scene .getUniqueName ("RotationInterpolator"), interpolatorNode);
48151
-
48152
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48153
- scene .addRoute (interpolatorNode, "value_changed", node, "set_rotation");
48154
-
48155
- return interpolatorNode;
48156
- }
48157
48329
  case "scale":
48158
48330
  {
48159
- const interpolatorNode = this .createPositionInterpolator (interpolation, times, keyValues .array, cycleInterval);
48160
-
48161
- scene .addNamedNode (scene .getUniqueName ("ScaleInterpolator"), interpolatorNode);
48331
+ const field = node .getField (target .path);
48162
48332
 
48163
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48164
- scene .addRoute (interpolatorNode, "value_changed", node, "set_scale");
48165
-
48166
- return interpolatorNode;
48333
+ return this .createAnimationPointerInterpolator (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval);
48167
48334
  }
48168
48335
  case "weights":
48169
48336
  {
@@ -48190,7 +48357,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48190
48357
  interpolatorNodes .push (coordinateInterpolatorNode);
48191
48358
 
48192
48359
  scene .addRoute (timeSensorNode, "fraction_changed", coordinateInterpolatorNode, "set_fraction");
48193
- scene .addRoute (coordinateInterpolatorNode, "value_changed", geometryNode ._coord, "set_point");
48360
+ scene .addRoute (coordinateInterpolatorNode, "value_changed", geometryNode ._coord, "point");
48194
48361
  }
48195
48362
 
48196
48363
  const normalInterpolatorNode = this .createArrayInterpolator ("NormalInterpolator", interpolation, times, keyValues .array, cycleInterval, targets, attributes, "NORMAL");
@@ -48200,63 +48367,252 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48200
48367
  interpolatorNodes .push (normalInterpolatorNode);
48201
48368
 
48202
48369
  scene .addRoute (timeSensorNode, "fraction_changed", normalInterpolatorNode, "set_fraction");
48203
- scene .addRoute (normalInterpolatorNode, "value_changed", geometryNode ._normal, "set_vector");
48370
+ scene .addRoute (normalInterpolatorNode, "value_changed", geometryNode ._normal, "vector");
48204
48371
  }
48205
48372
  }
48206
48373
 
48207
48374
  return interpolatorNodes;
48208
48375
  }
48209
- case "pointer":
48376
+ default:
48210
48377
  {
48211
- // const
48212
- // pointer = target .extensions ?.KHR_animation_pointer ?.pointer ?? "",
48213
- // path = pointer .split ("/") .filter (p => p)
48214
- // name = path .pop ();
48215
-
48216
- // let glTF = this .input;
48378
+ return [ ];
48379
+ }
48380
+ }
48381
+ },
48382
+ createAnimationPointerInterpolator: (function ()
48383
+ {
48384
+ const interpolators = new Map ([
48385
+ [Base_X3DConstants .SFBool, { typeName: "BooleanSequencer" }],
48386
+ [Base_X3DConstants .SFInt32, { typeName: "IntegerSequencer" }],
48387
+ [Base_X3DConstants .SFFloat, { typeName: "ScalarInterpolator", components: 1 }],
48388
+ [Base_X3DConstants .SFVec2f, { typeName: "PositionInterpolator2D", components: 2 }],
48389
+ [Base_X3DConstants .SFVec3f, { typeName: "PositionInterpolator", components: 3 }],
48390
+ ]);
48217
48391
 
48218
- // for (const property of path)
48219
- // glTF = glTF [property]
48392
+ return function (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval)
48393
+ {
48394
+ if (!(node && field))
48395
+ return [ ];
48220
48396
 
48221
- // console .log (glTF)
48397
+ const scene = this .getScene ();
48222
48398
 
48223
- return [ ];
48224
- }
48225
- default:
48399
+ switch (field .getType ())
48226
48400
  {
48227
- return [ ];
48401
+ case Base_X3DConstants .SFColor:
48402
+ {
48403
+ const interpolatorNodes = [ ];
48404
+
48405
+ switch ((keyValues .array .length / times .length) % 3)
48406
+ {
48407
+ case 0: // Color3 pointer
48408
+ {
48409
+ var colors = keyValues .array;
48410
+ break;
48411
+ }
48412
+ default: // Color4 pointer
48413
+ {
48414
+ var
48415
+ colors = keyValues .array .filter ((_, i) => i % 4 < 3),
48416
+ transparencies = keyValues .array .filter ((_, i) => i % 4 === 3);
48417
+
48418
+ transparencies = transparencies .every (value => value >= 1)
48419
+ ? undefined
48420
+ : transparencies .map (value => 1 - value);
48421
+
48422
+ break;
48423
+ }
48424
+ }
48425
+
48426
+ const interpolatorNode = this .createNamedInterpolator ("ColorInterpolator", 3, interpolation, times, colors, cycleInterval);
48427
+
48428
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48429
+
48430
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48431
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48432
+
48433
+ interpolatorNodes .push (interpolatorNode);
48434
+
48435
+ // These are currently the only two affected fields, which are SFColor but pointer is Color4.
48436
+ if (field .getName () .match (/^(?:baseColor|emissiveColor)$/) && transparencies)
48437
+ {
48438
+ const interpolatorNode = this .createNamedInterpolator ("ScalarInterpolator", 1, interpolation, times, transparencies, cycleInterval);
48439
+
48440
+ scene .addNamedNode (scene .getUniqueName ("TransparencyInterpolator"), interpolatorNode);
48441
+
48442
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48443
+ scene .addRoute (interpolatorNode, "value_changed", node, "transparency");
48444
+
48445
+ interpolatorNodes .push (interpolatorNode);
48446
+ }
48447
+
48448
+ return interpolatorNodes;
48449
+ }
48450
+ case Base_X3DConstants .SFColorRGBA:
48451
+ {
48452
+ const interpolatorNodes = [ ];
48453
+
48454
+ var
48455
+ colors = keyValues .array .filter ((_, i) => i % 4 < 3),
48456
+ transparencies = keyValues .array .filter ((_, i) => i % 4 === 3);
48457
+
48458
+ transparencies = transparencies .every (value => value >= 1)
48459
+ ? undefined
48460
+ : transparencies .map (value => 1 - value);
48461
+
48462
+ // Script
48463
+
48464
+ const scriptNode = scene .createNode ("Script", false);
48465
+
48466
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "color", new x_ite_Fields .SFColor (1, 1, 1));
48467
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "alpha" , new x_ite_Fields .SFFloat (1));
48468
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .SFColorRGBA ());
48469
+
48470
+ scriptNode ._url = [/* js */ `ecmascript:
48471
+
48472
+ function eventsProcessed ()
48473
+ {
48474
+ value_changed = new SFColorRGBA (... color, alpha);
48475
+ }
48476
+ `];
48477
+
48478
+ scriptNode .setup ();
48479
+
48480
+ scene .addNamedNode (scene .getUniqueName ("CombineColorRGBAScript"), scriptNode);
48481
+ scene .addRoute (scriptNode, "value_changed", node, field .getName ());
48482
+
48483
+ // ColorInterpolator
48484
+
48485
+ const interpolatorNode = this .createNamedInterpolator ("ColorInterpolator", 3, interpolation, times, colors, cycleInterval);
48486
+
48487
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48488
+
48489
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48490
+ scene .addRoute (interpolatorNode, "value_changed", scriptNode, "color");
48491
+
48492
+ interpolatorNodes .push (interpolatorNode);
48493
+
48494
+ // AlphaInterpolator
48495
+
48496
+ if (transparencies)
48497
+ {
48498
+ const interpolatorNode = this .createNamedInterpolator ("ScalarInterpolator", 1, interpolation, times, transparencies, cycleInterval);
48499
+
48500
+ scene .addNamedNode (scene .getUniqueName ("AlphaInterpolator"), interpolatorNode);
48501
+
48502
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48503
+ scene .addRoute (interpolatorNode, "value_changed", scriptNode, "alpha");
48504
+
48505
+ interpolatorNodes .push (interpolatorNode);
48506
+ }
48507
+
48508
+ interpolatorNodes .push (scriptNode);
48509
+
48510
+ return interpolatorNodes;
48511
+ }
48512
+ case Base_X3DConstants .SFRotation:
48513
+ {
48514
+ const interpolatorNode = this .createOrientationInterpolator (interpolation, times, keyValues .array, cycleInterval);
48515
+
48516
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48517
+
48518
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48519
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48520
+
48521
+ return interpolatorNode;
48522
+ }
48523
+ case Base_X3DConstants .SFBool:
48524
+ case Base_X3DConstants .SFInt32:
48525
+ case Base_X3DConstants .SFFloat:
48526
+ case Base_X3DConstants .SFVec2f:
48527
+ case Base_X3DConstants .SFVec3f:
48528
+ {
48529
+ const
48530
+ { typeName, components} = interpolators .get (field .getType ()),
48531
+ suffix = typeName .replace (/^.*?(Sequencer|Interpolator).*?$/, "$1");
48532
+
48533
+ const interpolatorNode = this .createNamedInterpolator (typeName, components, components ? interpolation : "LINEAR", times, keyValues .array, cycleInterval);
48534
+
48535
+ scene .addNamedNode (scene .getUniqueName (GLTF2Parser_$.toUpperCaseFirst (field .getName ()) + suffix), interpolatorNode);
48536
+
48537
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48538
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48539
+
48540
+ return interpolatorNode;
48541
+ }
48542
+ default:
48543
+ {
48544
+ return [ ];
48545
+ }
48228
48546
  }
48229
- }
48547
+ };
48548
+ })(),
48549
+ getAnimationPointer (pointer = "")
48550
+ {
48551
+ const
48552
+ path = pointer .split ("/") .filter (p => p),
48553
+ field = path .pop () .replace (/(?:Factor$)/, "");
48554
+
48555
+ let glTF = this .input;
48556
+
48557
+ for (const property of path)
48558
+ glTF = glTF ?.[property];
48559
+
48560
+ return glTF ?.pointers
48561
+ ?.map (node => [node, GLTF2Parser_$.try (() => node ?.getField (this .getAnimationPointerAlias (node, field) ?? field))])
48562
+ ?.find (([node, field]) => field)
48563
+ ?? [ ];
48230
48564
  },
48231
- createPositionInterpolator (interpolation, times, keyValues, cycleInterval)
48565
+ addAnimationPointerAlias (node, field, alias)
48232
48566
  {
48233
- const scene = this .getScene ();
48567
+ const key = `${node .getTypeName ()}.${field}`;
48568
+
48569
+ this .pointerAliases .set (key, alias);
48570
+ },
48571
+ getAnimationPointerAlias (node, field)
48572
+ {
48573
+ const key = `${node .getTypeName ()}.${field}`;
48574
+
48575
+ return this .pointerAliases .get (key);
48576
+ },
48577
+ createNamedInterpolator (typeName, components, interpolation, times, keyValues, cycleInterval)
48578
+ {
48579
+ const
48580
+ scene = this .getScene (),
48581
+ interpolatorNode = scene .createNode (typeName, false);
48234
48582
 
48235
48583
  switch (interpolation)
48236
48584
  {
48237
48585
  case "STEP":
48238
48586
  {
48239
- const interpolatorNode = scene .createNode ("PositionInterpolator", false);
48587
+ const
48588
+ key = [ ],
48589
+ keyValue = [ ];
48240
48590
 
48241
48591
  // Key
48242
48592
 
48243
- interpolatorNode ._key .push (times [0] / cycleInterval);
48593
+ key .push (times [0] / cycleInterval);
48244
48594
 
48245
48595
  for (let i = 1, length = times .length; i < length; ++ i)
48246
- interpolatorNode ._key .push (times [i] / cycleInterval, times [i] / cycleInterval);
48596
+ key .push (times [i] / cycleInterval, times [i] / cycleInterval);
48247
48597
 
48248
48598
  // KeyValue
48249
48599
 
48250
- interpolatorNode ._keyValue .push (new Numbers_Vector3 (keyValues [0], keyValues [1], keyValues [2]));
48600
+ const components2 = components * 2;
48251
48601
 
48252
- for (let i = 0, length = keyValues .length - 3; i < length; i += 3)
48602
+ for (let c = 0; c < components; ++ c)
48603
+ keyValue .push (keyValues [c]);
48604
+
48605
+ for (let i = 0, length = keyValues .length - components; i < length; i += components)
48253
48606
  {
48254
- interpolatorNode ._keyValue .push (new Numbers_Vector3 (keyValues [i + 0], keyValues [i + 1], keyValues [i + 2]),
48255
- new Numbers_Vector3 (keyValues [i + 3], keyValues [i + 4], keyValues [i + 5]));
48607
+ for (let c = 0; c < components2; ++ c)
48608
+ keyValue .push (keyValues [i + c]);
48256
48609
  }
48257
48610
 
48258
48611
  // Finish
48259
48612
 
48613
+ interpolatorNode ._key = key;
48614
+ interpolatorNode ._keyValue = keyValue;
48615
+
48260
48616
  interpolatorNode .setup ();
48261
48617
 
48262
48618
  return interpolatorNode;
@@ -48264,8 +48620,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48264
48620
  default:
48265
48621
  case "LINEAR":
48266
48622
  {
48267
- const interpolatorNode = scene .createNode ("PositionInterpolator", false);
48268
-
48269
48623
  interpolatorNode ._key = times .map (t => t / cycleInterval);
48270
48624
  interpolatorNode ._keyValue = keyValues;
48271
48625
 
@@ -48276,14 +48630,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48276
48630
  case "CUBICSPLINE":
48277
48631
  {
48278
48632
  const
48279
- interpolatorNode = scene .createNode ("PositionInterpolator", false),
48280
- vectors = [ ];
48633
+ key = [ ],
48634
+ keyValue = [ ],
48635
+ vectors = [ ],
48636
+ Vector = [Numbers_Vector2, Numbers_Vector2, Numbers_Vector3] [components - 1];
48281
48637
 
48282
- for (let i = 0, length = keyValues .length; i < length; i += 3)
48638
+ for (let i = 0, length = keyValues .length; i < length; i += components)
48283
48639
  {
48284
- vectors .push (new Numbers_Vector3 (keyValues [i + 0],
48285
- keyValues [i + 1],
48286
- keyValues [i + 2]));
48640
+ vectors .push (new Vector (... keyValues .subarray (i, i + components)));
48287
48641
  }
48288
48642
 
48289
48643
  const
@@ -48292,10 +48646,15 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48292
48646
 
48293
48647
  for (const t of samples)
48294
48648
  {
48295
- interpolatorNode ._key .push (t / cycleInterval);
48296
- interpolatorNode ._keyValue .push (this .cubicSplineVector (t, times, vectors));
48649
+ key .push (t / cycleInterval);
48650
+ keyValue .push (... this .cubicSplineVector (t, times, vectors));
48297
48651
  }
48298
48652
 
48653
+ // Finish
48654
+
48655
+ interpolatorNode ._key = key;
48656
+ interpolatorNode ._keyValue = components === 1 ? keyValue .filter ((_, i) => i % 2 < 1) : keyValue;
48657
+
48299
48658
  interpolatorNode .setup ();
48300
48659
 
48301
48660
  return interpolatorNode;
@@ -48304,14 +48663,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48304
48663
  },
48305
48664
  createOrientationInterpolator (interpolation, times, keyValues, cycleInterval)
48306
48665
  {
48307
- const scene = this .getScene ();
48666
+ const
48667
+ scene = this .getScene (),
48668
+ interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48308
48669
 
48309
48670
  switch (interpolation)
48310
48671
  {
48311
48672
  case "STEP":
48312
48673
  {
48313
- const interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48314
-
48315
48674
  // Key
48316
48675
 
48317
48676
  interpolatorNode ._key .push (times [0] / cycleInterval);
@@ -48347,8 +48706,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48347
48706
  default:
48348
48707
  case "LINEAR":
48349
48708
  {
48350
- const interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48351
-
48352
48709
  interpolatorNode ._key = times .map (t => t / cycleInterval);
48353
48710
 
48354
48711
  for (let i = 0, length = keyValues .length; i < length; i += 4)
@@ -48365,9 +48722,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48365
48722
  }
48366
48723
  case "CUBICSPLINE":
48367
48724
  {
48368
- const
48369
- interpolatorNode = scene .createNode ("OrientationInterpolator", false),
48370
- quaternions = [ ];
48725
+ const quaternions = [ ];
48371
48726
 
48372
48727
  for (let i = 0, length = keyValues .length; i < length; i += 4)
48373
48728
  {
@@ -48397,19 +48752,19 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48397
48752
  },
48398
48753
  createArrayInterpolator (typeName, interpolation, times, weights, cycleInterval, targets, accessors, key)
48399
48754
  {
48400
- const
48401
- scene = this .getScene (),
48402
- accessor = accessors [key];
48755
+ const accessor = accessors [key];
48403
48756
 
48404
48757
  if (!accessor)
48405
48758
  return null;
48406
48759
 
48760
+ const
48761
+ scene = this .getScene (),
48762
+ interpolatorNode = scene .createNode (typeName, false);
48763
+
48407
48764
  switch (interpolation)
48408
48765
  {
48409
48766
  case "STEP":
48410
48767
  {
48411
- const interpolatorNode = scene .createNode (typeName, false);
48412
-
48413
48768
  // Key
48414
48769
 
48415
48770
  interpolatorNode ._key .push (times [0] / cycleInterval);
@@ -48446,8 +48801,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48446
48801
  default:
48447
48802
  case "LINEAR":
48448
48803
  {
48449
- const interpolatorNode = scene .createNode (typeName, false);
48450
-
48451
48804
  // Key
48452
48805
 
48453
48806
  interpolatorNode ._key = times .map (t => t / cycleInterval);
@@ -48470,8 +48823,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48470
48823
  }
48471
48824
  case "CUBICSPLINE":
48472
48825
  {
48473
- const interpolatorNode = scene .createNode (typeName, false);
48474
-
48475
48826
  // Key
48476
48827
 
48477
48828
  const
@@ -48610,7 +48961,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
48610
48961
 
48611
48962
  /* harmony default export */ const Parser_GLTF2Parser = (x_ite_Namespace .add ("GLTF2Parser", GLTF2Parser_default_));
48612
48963
  ;// ./src/x_ite/Parser/GLB2Parser.js
48613
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(58);
48964
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(394);
48614
48965
  /*******************************************************************************
48615
48966
  *
48616
48967
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -48761,7 +49112,7 @@ const GLB2Parser_default_ = GLB2Parser;
48761
49112
 
48762
49113
  /* harmony default export */ const Parser_GLB2Parser = (x_ite_Namespace .add ("GLB2Parser", GLB2Parser_default_));
48763
49114
  ;// ./src/x_ite/Parser/OBJParser.js
48764
- /* provided dependency */ var OBJParser_$ = __webpack_require__(58);
49115
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(394);
48765
49116
  /*******************************************************************************
48766
49117
  *
48767
49118
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -51326,7 +51677,7 @@ Object .assign (Complex .prototype,
51326
51677
  return this .real === complex .real &&
51327
51678
  this .imag === complex .imag;
51328
51679
  },
51329
- set (real, imag)
51680
+ set (real = 0, imag = 0)
51330
51681
  {
51331
51682
  this .real = real;
51332
51683
  this .imag = imag;
@@ -51490,10 +51841,6 @@ Object .assign (Complex,
51490
51841
  {
51491
51842
  return Object .create (Complex .prototype) .setPolar (magnitude, angle);
51492
51843
  },
51493
- multiply (lhs, rhs)
51494
- {
51495
- return lhs .copy () .multiply (rhs);
51496
- },
51497
51844
  });
51498
51845
 
51499
51846
  const Complex_default_ = Complex;
@@ -52096,6 +52443,16 @@ class MatrixStack extends Array
52096
52443
  this [this .#top] .identity ();
52097
52444
  }
52098
52445
 
52446
+ inverse ()
52447
+ {
52448
+ this [this .#top] .inverse ();
52449
+ }
52450
+
52451
+ multRight (matrix)
52452
+ {
52453
+ this [this .#top] .multRight (matrix);
52454
+ }
52455
+
52099
52456
  multLeft (matrix)
52100
52457
  {
52101
52458
  this [this .#top] .multLeft (matrix);
@@ -52122,8 +52479,8 @@ const MatrixStack_default_ = MatrixStack;
52122
52479
 
52123
52480
  /* harmony default export */ const Utility_MatrixStack = (x_ite_Namespace .add ("MatrixStack", MatrixStack_default_));
52124
52481
  ;// ./src/x_ite/Parser/SVGParser.js
52125
- /* provided dependency */ var SVGParser_$ = __webpack_require__(58);
52126
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(499);
52482
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(394);
52483
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(787);
52127
52484
  /*******************************************************************************
52128
52485
  *
52129
52486
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -54902,7 +55259,7 @@ const SVGParser_default_ = SVGParser;
54902
55259
 
54903
55260
  /* harmony default export */ const Parser_SVGParser = (x_ite_Namespace .add ("SVGParser", SVGParser_default_));
54904
55261
  ;// ./src/x_ite/Parser/GoldenGate.js
54905
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(58);
55262
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(394);
54906
55263
  /*******************************************************************************
54907
55264
  *
54908
55265
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -56579,7 +56936,8 @@ function X3DRenderObject (executionContext)
56579
56936
  this .localShadows = [ false ];
56580
56937
  this .localFogs = [ null ];
56581
56938
  this .layouts = [ ];
56582
- this .humanoids = [ null ];
56939
+ this .hAnimNode = [ null ];
56940
+ this .invHumanoidMatrix = new Utility_MatrixStack (Numbers_Matrix4);
56583
56941
  this .generatedCubeMapTextures = [ ];
56584
56942
  this .collisions = [ ];
56585
56943
  this .collisionTime = new Time_StopWatch ();
@@ -56837,9 +57195,13 @@ Object .assign (X3DRenderObject .prototype,
56837
57195
  {
56838
57196
  return this .layouts .at (-1);
56839
57197
  },
56840
- getHumanoids ()
57198
+ getHAnimNode ()
57199
+ {
57200
+ return this .hAnimNode;
57201
+ },
57202
+ getInvHumanoidMatrix ()
56841
57203
  {
56842
- return this .humanoids;
57204
+ return this .invHumanoidMatrix;
56843
57205
  },
56844
57206
  getGeneratedCubeMapTextures ()
56845
57207
  {
@@ -57120,7 +57482,7 @@ Object .assign (X3DRenderObject .prototype,
57120
57482
 
57121
57483
  pointingContext .modelViewMatrix .set (modelViewMatrix);
57122
57484
  pointingContext .scissor = viewVolume .getScissor ();
57123
- pointingContext .humanoidNode = this .humanoids .at (-1);
57485
+ pointingContext .hAnimNode = this .hAnimNode .at (-1);
57124
57486
  pointingContext .shapeNode = shapeNode;
57125
57487
 
57126
57488
  // Clip planes & sensors
@@ -57219,7 +57581,7 @@ Object .assign (X3DRenderObject .prototype,
57219
57581
 
57220
57582
  depthContext .modelViewMatrix .set (modelViewMatrix);
57221
57583
  depthContext .scissor = viewVolume .getScissor ();
57222
- depthContext .humanoidNode = this .humanoids .at (-1);
57584
+ depthContext .hAnimNode = this .hAnimNode .at (-1);
57223
57585
  depthContext .shapeNode = shapeNode;
57224
57586
 
57225
57587
  // Clip planes
@@ -57278,7 +57640,7 @@ Object .assign (X3DRenderObject .prototype,
57278
57640
  renderContext .scissor .assign (viewVolume .getScissor ());
57279
57641
  renderContext .shadows = this .localShadows .at (-1);
57280
57642
  renderContext .fogNode = this .localFogs .at (-1);
57281
- renderContext .humanoidNode = this .humanoids .at (-1);
57643
+ renderContext .hAnimNode = this .hAnimNode .at (-1);
57282
57644
  renderContext .shapeNode = shapeNode;
57283
57645
  renderContext .appearanceNode = shapeNode .getAppearance ();
57284
57646
 
@@ -57338,12 +57700,12 @@ Object .assign (X3DRenderObject .prototype,
57338
57700
  {
57339
57701
  const
57340
57702
  renderContext = shapes [s],
57341
- { scissor, clipPlanes, modelViewMatrix, shapeNode, humanoidNode } = renderContext,
57703
+ { scissor, clipPlanes, modelViewMatrix, shapeNode, hAnimNode } = renderContext,
57342
57704
  appearanceNode = shapeNode .getAppearance (),
57343
57705
  geometryContext = shapeNode .getGeometryContext (),
57344
57706
  depthModeNode = appearanceNode .getDepthMode (),
57345
57707
  stylePropertiesNode = appearanceNode .getStyleProperties (geometryContext .geometryType),
57346
- shaderNode = browser .getPointingShader (clipPlanes .length, shapeNode, humanoidNode),
57708
+ shaderNode = browser .getPointingShader (clipPlanes .length, shapeNode, hAnimNode),
57347
57709
  id = browser .addPointingShape (renderContext);
57348
57710
 
57349
57711
  gl .scissor (scissor .x - x,
@@ -57362,7 +57724,7 @@ Object .assign (X3DRenderObject .prototype,
57362
57724
 
57363
57725
  depthModeNode ?.enable (gl);
57364
57726
  stylePropertiesNode ?.setShaderUniforms (gl, shaderNode);
57365
- humanoidNode ?.setShaderUniforms (gl, shaderNode);
57727
+ hAnimNode ?.setShaderUniforms (gl, shaderNode);
57366
57728
 
57367
57729
  shapeNode .displaySimple (gl, renderContext, shaderNode);
57368
57730
 
@@ -57578,11 +57940,11 @@ Object .assign (X3DRenderObject .prototype,
57578
57940
  {
57579
57941
  const
57580
57942
  renderContext = shapes [s],
57581
- { scissor, clipPlanes, modelViewMatrix, shapeNode, humanoidNode } = renderContext,
57943
+ { scissor, clipPlanes, modelViewMatrix, shapeNode, hAnimNode } = renderContext,
57582
57944
  appearanceNode = shapeNode .getAppearance (),
57583
57945
  geometryContext = shapeNode .getGeometryContext (),
57584
57946
  stylePropertiesNode = appearanceNode .getStyleProperties (geometryContext .geometryType),
57585
- shaderNode = browser .getDepthShader (clipPlanes .length, shapeNode, humanoidNode);
57947
+ shaderNode = browser .getDepthShader (clipPlanes .length, shapeNode, hAnimNode);
57586
57948
 
57587
57949
  gl .scissor (... scissor);
57588
57950
 
@@ -57595,7 +57957,7 @@ Object .assign (X3DRenderObject .prototype,
57595
57957
  gl .uniformMatrix4fv (shaderNode .x3d_ModelViewMatrix, false, modelViewMatrix);
57596
57958
 
57597
57959
  stylePropertiesNode ?.setShaderUniforms (gl, shaderNode);
57598
- humanoidNode ?.setShaderUniforms (gl, shaderNode);
57960
+ hAnimNode ?.setShaderUniforms (gl, shaderNode);
57599
57961
 
57600
57962
  shapeNode .displaySimple (gl, renderContext, shaderNode);
57601
57963
  browser .resetTextureUnits ();
@@ -62916,7 +63278,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62916
63278
 
62917
63279
  /* harmony default export */ const Texturing_X3DTexture2DNode = (x_ite_Namespace .add ("X3DTexture2DNode", X3DTexture2DNode_default_));
62918
63280
  ;// ./src/x_ite/Components/Texturing/ImageTexture.js
62919
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(58);
63281
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(394);
62920
63282
  /*******************************************************************************
62921
63283
  *
62922
63284
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -63056,7 +63418,7 @@ Object .assign (Object .setPrototypeOf (ImageTexture .prototype, Texturing_X3DTe
63056
63418
  setError (event)
63057
63419
  {
63058
63420
  if (this .URL .protocol !== "data:")
63059
- console .warn (`Error loading image '${decodeURI (this .URL .href)}'`, event .type);
63421
+ console .warn (`Error loading image '${decodeURI (this .URL .href)}:'`, event .type);
63060
63422
 
63061
63423
  this .loadNext ();
63062
63424
  },
@@ -65263,15 +65625,57 @@ Object .assign (Object .setPrototypeOf (X3DViewpointNode .prototype, Core_X3DBin
65263
65625
  },
65264
65626
  getUserPosition ()
65265
65627
  {
65266
- return this .userPosition .assign (this .getPosition ()) .add (this ._positionOffset .getValue ());
65628
+ return this .userPosition .assign (this .getPosition ())
65629
+ .add (this ._positionOffset .getValue ());
65630
+ },
65631
+ setUserPosition (userPosition)
65632
+ {
65633
+ this ._positionOffset = this .userPosition .assign (userPosition)
65634
+ .subtract (this .getPosition ());
65267
65635
  },
65268
65636
  getUserOrientation ()
65269
65637
  {
65270
- return this .userOrientation .assign (this .getOrientation ()) .multRight (this ._orientationOffset .getValue ());
65638
+ return this .userOrientation .assign (this .getOrientation ())
65639
+ .multRight (this ._orientationOffset .getValue ());
65640
+ },
65641
+ setUserOrientation (userOrientation)
65642
+ {
65643
+ this ._orientationOffset = this .userOrientation .assign (this .getOrientation ()) .inverse ()
65644
+ .multRight (userOrientation);
65271
65645
  },
65272
65646
  getUserCenterOfRotation ()
65273
65647
  {
65274
- return this .userCenterOfRotation .assign (this .getCenterOfRotation ()) .add (this ._centerOfRotationOffset .getValue ());
65648
+ return this .userCenterOfRotation .assign (this .getCenterOfRotation ())
65649
+ .add (this ._centerOfRotationOffset .getValue ());
65650
+ },
65651
+ setUserCenterOfRotation (userCenterOfRotation)
65652
+ {
65653
+ this ._centerOfRotationOffset = this .userCenterOfRotation .assign (userCenterOfRotation)
65654
+ .subtract (this .getCenterOfRotation ());
65655
+ },
65656
+ getFieldOfViewScale ()
65657
+ {
65658
+ return this ._fieldOfViewScale .getValue ();
65659
+ },
65660
+ setFieldOfViewScale (value)
65661
+ {
65662
+ this ._fieldOfViewScale = value;
65663
+ },
65664
+ getNearDistance ()
65665
+ {
65666
+ return this .nearDistance;
65667
+ },
65668
+ setNearDistance (value)
65669
+ {
65670
+ this .nearDistance = value;
65671
+ },
65672
+ getFarDistance ()
65673
+ {
65674
+ return this .farDistance;
65675
+ },
65676
+ setFarDistance (value)
65677
+ {
65678
+ this .farDistance = value;
65275
65679
  },
65276
65680
  getProjectionMatrix (renderObject)
65277
65681
  {
@@ -66300,7 +66704,7 @@ const X3DWorld_default_ = X3DWorld;
66300
66704
 
66301
66705
  /* harmony default export */ const Execution_X3DWorld = (x_ite_Namespace .add ("X3DWorld", X3DWorld_default_));
66302
66706
  ;// ./src/x_ite/InputOutput/FileLoader.js
66303
- /* provided dependency */ var FileLoader_$ = __webpack_require__(58);
66707
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(394);
66304
66708
  /*******************************************************************************
66305
66709
  *
66306
66710
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66613,7 +67017,7 @@ Object .assign (Object .setPrototypeOf (FileLoader .prototype, Base_X3DObject .p
66613
67017
  if (this .URL .protocol === "data:")
66614
67018
  console .error (`Couldn't load data URL.`, error);
66615
67019
  else
66616
- console .error (`Couldn't load URL '${decodeURI (this .URL .href)}'.`, error);
67020
+ console .error (`Couldn't load URL '${FileLoader_$.try (() => decodeURI (this .URL)) ?? this .URL}'.`, error);
66617
67021
  },
66618
67022
  });
66619
67023
 
@@ -67264,7 +67668,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
67264
67668
 
67265
67669
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (x_ite_Namespace .add ("ProtoDeclarationArray", ProtoDeclarationArray_default_));
67266
67670
  ;// ./src/x_ite/Routing/X3DRoute.js
67267
- /* provided dependency */ var X3DRoute_$ = __webpack_require__(58);
67671
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(394);
67268
67672
  /*******************************************************************************
67269
67673
  *
67270
67674
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -77503,7 +77907,7 @@ Object .assign (Object .setPrototypeOf (X3DLineGeometryNode .prototype, Renderin
77503
77907
  if (this [_numLines0] !== numLines)
77504
77908
  return true;
77505
77909
 
77506
- if (this [_numLines2] !== numLines)
77910
+ if (this .hasNormals && this [_numLines2] !== numLines)
77507
77911
  return true;
77508
77912
 
77509
77913
  // Setup vertex attributes.
@@ -77585,7 +77989,7 @@ Object .assign (Object .setPrototypeOf (X3DLineGeometryNode .prototype, Renderin
77585
77989
  if (shapeNode [_numLines0] !== numLines)
77586
77990
  return true;
77587
77991
 
77588
- if (shapeNode [_numLines2] !== numLines)
77992
+ if (this .hasNormals && shapeNode [_numLines2] !== numLines)
77589
77993
  return true;
77590
77994
 
77591
77995
  // Setup vertex attributes.
@@ -77639,11 +78043,11 @@ Object .assign (Object .setPrototypeOf (X3DLineGeometryNode .prototype, Renderin
77639
78043
  return;
77640
78044
 
77641
78045
  const
77642
- browser = this .getBrowser (),
77643
- appearanceNode = renderContext .appearanceNode,
77644
- shaderNode = appearanceNode .getShader (this, renderContext),
77645
- renderModeNodes = appearanceNode .getRenderModes (),
77646
- primitiveMode = browser .getPrimitiveMode (this .getPrimitiveMode ());
78046
+ browser = this .getBrowser (),
78047
+ appearanceNode = renderContext .appearanceNode,
78048
+ shaderNode = appearanceNode .getShader (this, renderContext),
78049
+ renderModeNodes = appearanceNode .getRenderModes (),
78050
+ primitiveMode = browser .getPrimitiveMode (this .getPrimitiveMode ());
77647
78051
 
77648
78052
  for (const node of renderModeNodes)
77649
78053
  node .enable (gl);
@@ -90940,7 +91344,7 @@ mediump samplerCube textureCube;
90940
91344
 
90941
91345
  /* harmony default export */ const MaterialTextures = (x_ite_Namespace .add ("MaterialTextures", MaterialTextures_default_));
90942
91346
  ;// ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
90943
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(58);
91347
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(394);
90944
91348
  /*******************************************************************************
90945
91349
  *
90946
91350
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -91170,6 +91574,7 @@ Object .assign (X3DProgrammableShaderObject .prototype,
91170
91574
  "x3d_TexCoordRamp",
91171
91575
  "x3d_JointsTexture",
91172
91576
  "x3d_DisplacementsTexture",
91577
+ "x3d_DisplacementWeightsTexture",
91173
91578
  "x3d_JointMatricesTexture",
91174
91579
  // Common
91175
91580
  "x3d_Id", // Pointing ID
@@ -91984,7 +92389,7 @@ Object .assign (X3DProgrammableShaderObject .prototype,
91984
92389
 
91985
92390
  return function (gl, renderContext, geometryContext, front = true)
91986
92391
  {
91987
- const { renderObject, fogNode, appearanceNode, humanoidNode, modelViewMatrix } = renderContext;
92392
+ const { renderObject, fogNode, appearanceNode, hAnimNode, modelViewMatrix } = renderContext;
91988
92393
 
91989
92394
  const
91990
92395
  stylePropertiesNode = appearanceNode .getStyleProperties (geometryContext .geometryType),
@@ -92099,7 +92504,7 @@ Object .assign (X3DProgrammableShaderObject .prototype,
92099
92504
 
92100
92505
  // Skinning
92101
92506
 
92102
- humanoidNode ?.setShaderUniforms (gl, this);
92507
+ hAnimNode ?.setShaderUniforms (gl, this);
92103
92508
  };
92104
92509
  })(),
92105
92510
  enable (gl)
@@ -94317,20 +94722,20 @@ NormalInfo info;info.ng=ng;
94317
94722
  #if defined(X3D_NORMAL_TEXTURE)
94318
94723
  #if __VERSION__==100
94319
94724
  #if defined(X3D_NORMAL_TEXTURE_2D)
94320
- info.ntex=texture2D(x3d_NormalTexture.texture2D,UV.st).rgb;
94725
+ vec3 ntex=texture2D(x3d_NormalTexture.texture2D,UV.st).rgb;
94321
94726
  #elif defined(X3D_NORMAL_TEXTURE_CUBE)
94322
- info.ntex=textureCube(x3d_NormalTexture.textureCube,UV).rgb;
94727
+ vec3 ntex=textureCube(x3d_NormalTexture.textureCube,UV).rgb;
94323
94728
  #endif
94324
94729
  #else
94325
94730
  #if defined(X3D_NORMAL_TEXTURE_2D)
94326
- info.ntex=texture(x3d_NormalTexture.texture2D,UV.st).rgb;
94731
+ vec3 ntex=texture(x3d_NormalTexture.texture2D,UV.st).rgb;
94327
94732
  #elif defined(X3D_NORMAL_TEXTURE_3D)
94328
- info.ntex=texture(x3d_NormalTexture.texture3D,UV).rgb;
94733
+ vec3 ntex=texture(x3d_NormalTexture.texture3D,UV).rgb;
94329
94734
  #elif defined(X3D_NORMAL_TEXTURE_CUBE)
94330
- info.ntex=texture(x3d_NormalTexture.textureCube,UV).rgb;
94735
+ vec3 ntex=texture(x3d_NormalTexture.textureCube,UV).rgb;
94331
94736
  #endif
94332
94737
  #endif
94333
- info.ntex=info.ntex*2.0-vec3(1.0);info.ntex*=vec3(vec2(normalScale),1.0);info.ntex=normalize(info.ntex);info.n=normalize(mat3(t,b,ng)*info.ntex);
94738
+ ntex=ntex*2.0-vec3(1.0);ntex*=vec3(vec2(normalScale),1.0);ntex=normalize(ntex);info.ntex=ntex;info.n=normalize(mat3(t,b,ng)*ntex);
94334
94739
  #else
94335
94740
  info.n=ng;
94336
94741
  #endif
@@ -94470,13 +94875,30 @@ vec4 shadowCoord=light.shadowMatrix*vec4(vertex,1.0);shadowCoord.z-=light.shadow
94470
94875
  ;// ./src/assets/shaders/webgl2/common/Skin2.glsl.js
94471
94876
  const Skin2_glsl_default_ = /* glsl */ `
94472
94877
  #if defined(X3D_SKINNING)
94473
- in float x3d_CoordIndex;uniform sampler2D x3d_JointsTexture;uniform sampler2D x3d_DisplacementsTexture;uniform sampler2D x3d_JointMatricesTexture;mat4 getJointMatrix(const in int joint){vec4 a=texelFetch(x3d_JointMatricesTexture,joint*8,0);vec4 b=texelFetch(x3d_JointMatricesTexture,joint*8+1,0);vec4 c=texelFetch(x3d_JointMatricesTexture,joint*8+2,0);vec4 d=texelFetch(x3d_JointMatricesTexture,joint*8+3,0);return mat4(a,b,c,d);}mat3 getDisplacementJointMatrix(const in int joint){mat4 m=getJointMatrix(joint);return mat3(m[0].xyz,m[1].xyz,m[2].xyz);}
94878
+ in float x3d_CoordIndex;
94879
+ #if X3D_NUM_JOINT_SETS>0
94880
+ uniform sampler2D x3d_JointsTexture;
94881
+ #endif
94882
+ #if X3D_NUM_DISPLACEMENTS>0
94883
+ uniform sampler2D x3d_DisplacementsTexture;uniform sampler2D x3d_DisplacementWeightsTexture;
94884
+ #endif
94885
+ #if X3D_NUM_JOINT_SETS>0||X3D_NUM_DISPLACEMENTS>0
94886
+ uniform sampler2D x3d_JointMatricesTexture;
94887
+ #endif
94888
+ #if X3D_NUM_JOINT_SETS>0
94889
+ mat4 getJointMatrix(const in int joint){vec4 a=texelFetch(x3d_JointMatricesTexture,joint*8,0);vec4 b=texelFetch(x3d_JointMatricesTexture,joint*8+1,0);vec4 c=texelFetch(x3d_JointMatricesTexture,joint*8+2,0);vec4 d=texelFetch(x3d_JointMatricesTexture,joint*8+3,0);return mat4(a,b,c,d);}
94890
+ #if defined(X3D_NORMALS)
94891
+ mat3 getJointNormalMatrix(const in int joint){vec4 a=texelFetch(x3d_JointMatricesTexture,joint*8+4,0);vec4 b=texelFetch(x3d_JointMatricesTexture,joint*8+5,0);vec4 c=texelFetch(x3d_JointMatricesTexture,joint*8+6,0);return mat3(a.xyz,vec3(a.w,b.xy),vec3(b.zw,c.x));}
94892
+ #endif
94893
+ #endif
94894
+ #if X3D_NUM_DISPLACEMENTS>0
94895
+ mat3 getDisplacementJointMatrix(const in int joint){vec4 a=texelFetch(x3d_JointMatricesTexture,joint*8,0);vec4 b=texelFetch(x3d_JointMatricesTexture,joint*8+1,0);vec4 c=texelFetch(x3d_JointMatricesTexture,joint*8+2,0);return mat3(a.xyz,b.xyz,c.xyz);}
94896
+ #endif
94474
94897
  #if defined(X3D_NORMALS)
94475
94898
  vec3 skinNormal=vec3(0.0);
94476
94899
  #if defined(X3D_TANGENTS)
94477
94900
  vec3 skinTangent=vec3(0.0);
94478
94901
  #endif
94479
- mat3 getJointNormalMatrix(const in int joint){vec4 a=texelFetch(x3d_JointMatricesTexture,joint*8+4,0);vec4 b=texelFetch(x3d_JointMatricesTexture,joint*8+5,0);vec4 c=texelFetch(x3d_JointMatricesTexture,joint*8+6,0);return mat3(a.xyz,vec3(a.w,b.xy),vec3(b.zw,c.x));}
94480
94902
  #define getSkinNormal(normal)(skinNormal)
94481
94903
  #if defined(X3D_TANGENTS)
94482
94904
  #define getSkinTangent(tangent)(skinTangent)
@@ -94493,16 +94915,19 @@ skinTangent=tangent;
94493
94915
  #endif
94494
94916
  #endif
94495
94917
  #if X3D_NUM_DISPLACEMENTS>0
94496
- {int coordIndexD=coordIndex*X3D_NUM_DISPLACEMENTS;int width=textureSize(x3d_DisplacementsTexture,0).x;int offset=(width*width)/2;for(int i=0;i<X3D_NUM_DISPLACEMENTS;++i){int index=coordIndexD+i;vec4 displacement=texelFetch(x3d_DisplacementsTexture,index,0);float weight=texelFetch(x3d_DisplacementsTexture,index+offset,0).x;skin.xyz+=getDisplacementJointMatrix(int(displacement.w))*displacement.xyz*weight;}}
94918
+ {int coordIndexD=coordIndex*(X3D_NUM_DISPLACEMENTS*2);for(int i=0;i<X3D_NUM_DISPLACEMENTS;++i){int index=coordIndexD+i*2;vec4 displacement=texelFetch(x3d_DisplacementsTexture,index,0);int weightIndex=int(texelFetch(x3d_DisplacementsTexture,index+1,0).x);float weight=texelFetch(x3d_DisplacementWeightsTexture,weightIndex,0).x;skin.xyz+=getDisplacementJointMatrix(int(displacement.w))*(displacement.xyz*weight);}}
94497
94919
  #endif
94498
- int coordIndexJ=coordIndex*(X3D_NUM_JOINT_SETS*2);for(int i=0;i<X3D_NUM_JOINT_SETS;++i){int index=coordIndexJ+i;ivec4 joints=ivec4(texelFetch(x3d_JointsTexture,index,0));vec4 weights=texelFetch(x3d_JointsTexture,index+X3D_NUM_JOINT_SETS,0);for(int i=0;i<4;++i){int joint=joints[i];float weight=weights[i];skin+=(getJointMatrix(joint)*vertex-vertex)*weight;
94920
+ #if X3D_NUM_JOINT_SETS>0
94921
+ {int coordIndexJ=coordIndex*(X3D_NUM_JOINT_SETS*2);for(int i=0;i<X3D_NUM_JOINT_SETS;++i){int index=coordIndexJ+i;ivec4 joints=ivec4(texelFetch(x3d_JointsTexture,index,0));vec4 weights=texelFetch(x3d_JointsTexture,index+X3D_NUM_JOINT_SETS,0);for(int i=0;i<4;++i){int joint=joints[i];float weight=weights[i];skin+=(getJointMatrix(joint)*vertex-vertex)*weight;
94499
94922
  #if defined(X3D_NORMALS)
94500
94923
  mat3 jointNormalMatrix=getJointNormalMatrix(joint);skinNormal+=(jointNormalMatrix*normal-normal)*weight;
94501
94924
  #if defined(X3D_TANGENTS)
94502
94925
  skinTangent+=(jointNormalMatrix*tangent-tangent)*weight;
94503
94926
  #endif
94504
94927
  #endif
94505
- }}return skin;}
94928
+ }}}
94929
+ #endif
94930
+ return skin;}
94506
94931
  #else
94507
94932
  #define getSkinVertex(vertex,normal,tangent)(vertex)
94508
94933
  #define getSkinNormal(normal)(normal)
@@ -95862,7 +96287,7 @@ vec3 getPunctualRadianceClearCoat(const in vec3 clearcoatNormal,const in vec3 v,
95862
96287
  #endif
95863
96288
  #endif
95864
96289
  #if defined(X3D_TRANSMISSION_MATERIAL_EXT)
95865
- vec3 getPunctualRadianceTransmission(const in vec3 n,const in vec3 v,const in vec3 l,const in float alphaRoughness,const in vec3 f0,const in vec3 f90,const in vec3 baseColor,const in float ior){float transmissionRoughness=applyIorToRoughness(alphaRoughness,ior);vec3 l_mirror=normalize(l+2.0*n*dot(-l,n));vec3 h=normalize(l_mirror+v);float D=D_GGX(clamp(dot(n,h),0.0,1.0),transmissionRoughness);vec3 F=F_Schlick(f0,f90,clamp(dot(v,h),0.0,1.0));float Vis=V_GGX(clamp(dot(n,l_mirror),0.0,1.0),clamp(dot(n,v),0.0,1.0),transmissionRoughness);return(1.0-F)*baseColor*D*Vis;}vec3 applyVolumeAttenuation(const in vec3 radiance,const in float transmissionDistance,const in vec3 attenuationColor,const in float attenuationDistance){if(attenuationDistance==0.0){return radiance;}else{vec3 attenuationCoefficient=log(attenuationColor)/attenuationDistance;vec3 transmittance=exp(attenuationCoefficient*transmissionDistance);return transmittance*radiance;}}vec3 getVolumeTransmissionRay(const in vec3 n,const in vec3 v,const in float thickness,const in float ior,const in mat4 modelMatrix){vec3 refractionVector=refract(-v,normalize(n),1.0/ior);vec3 modelScale;modelScale.x=length(vec3(modelMatrix[0].xyz));modelScale.y=length(vec3(modelMatrix[1].xyz));modelScale.z=length(vec3(modelMatrix[2].xyz));return normalize(refractionVector)*thickness*modelScale;}
96290
+ vec3 getPunctualRadianceTransmission(const in vec3 n,const in vec3 v,const in vec3 l,const in float alphaRoughness,const in vec3 f0,const in vec3 f90,const in vec3 baseColor,const in float ior){float transmissionRoughness=applyIorToRoughness(alphaRoughness,ior);vec3 l_mirror=normalize(l+2.0*n*dot(-l,n));vec3 h=normalize(l_mirror+v);float D=D_GGX(clamp(dot(n,h),0.0,1.0),transmissionRoughness);vec3 F=F_Schlick(f0,f90,clamp(dot(v,h),0.0,1.0));float Vis=V_GGX(clamp(dot(n,l_mirror),0.0,1.0),clamp(dot(n,v),0.0,1.0),transmissionRoughness);return(1.0-F)*baseColor*D*Vis;}vec3 applyVolumeAttenuation(const in vec3 radiance,const in float transmissionDistance,const in vec3 attenuationColor,const in float attenuationDistance){if(attenuationDistance==0.0){return radiance;}else{vec3 attenuationCoefficient=log(attenuationColor)/attenuationDistance;vec3 transmittance=exp(attenuationCoefficient*transmissionDistance);return transmittance*radiance;}}vec3 getVolumeTransmissionRay(const in vec3 n,const in vec3 v,const in float thickness,const in float ior,in mat4 modelMatrix){vec3 refractionVector=refract(-v,normalize(n),1.0/ior);vec3 modelScale;modelScale.x=length(modelMatrix[0].xyz);modelScale.y=length(modelMatrix[1].xyz);modelScale.z=length(modelMatrix[2].xyz);return normalize(refractionVector)*thickness*modelScale;}
95866
96291
  #endif
95867
96292
  `
95868
96293
  ;
@@ -96216,7 +96641,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
96216
96641
 
96217
96642
  /* harmony default export */ const Shaders_ShaderCompiler = (x_ite_Namespace .add ("ShaderCompiler", ShaderCompiler_default_));
96218
96643
  ;// ./src/x_ite/Components/Shaders/ShaderPart.js
96219
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(58);
96644
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(394);
96220
96645
  /*******************************************************************************
96221
96646
  *
96222
96647
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -96814,7 +97239,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
96814
97239
 
96815
97240
  /* harmony default export */ const Shape_X3DAppearanceNode = (x_ite_Namespace .add ("X3DAppearanceNode", X3DAppearanceNode_default_));
96816
97241
  ;// ./src/x_ite/Components/Shape/Appearance.js
96817
- /* provided dependency */ var Appearance_$ = __webpack_require__(58);
97242
+ /* provided dependency */ var Appearance_$ = __webpack_require__(394);
96818
97243
  /*******************************************************************************
96819
97244
  *
96820
97245
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -97684,7 +98109,7 @@ Object .assign (Object .setPrototypeOf (X3DMaterialNode .prototype, Shape_X3DApp
97684
98109
 
97685
98110
  if (renderContext)
97686
98111
  {
97687
- const { renderObject, shadows, fogNode, shapeNode, appearanceNode, textureNode, humanoidNode, localObjectsKeys } = renderContext;
98112
+ const { renderObject, shadows, fogNode, shapeNode, appearanceNode, textureNode, hAnimNode, localObjectsKeys } = renderContext;
97688
98113
 
97689
98114
  key += shapeNode .getAlphaMode ();
97690
98115
  key += renderObject .getRenderAndGlobalLightsKey ();
@@ -97694,7 +98119,7 @@ Object .assign (Object .setPrototypeOf (X3DMaterialNode .prototype, Shape_X3DApp
97694
98119
  key += appearanceNode .getStyleProperties (geometryContext .geometryType) ?.getStyleKey () ?? 0;
97695
98120
  key += appearanceNode .getTextureTransformMapping () .size || 1;
97696
98121
  key += geometryContext .textureCoordinateMapping .size || 1;
97697
- key += humanoidNode ?.getHumanoidKey () ?? "[]";
98122
+ key += hAnimNode ?.getHAnimKey () ?? "[]";
97698
98123
  key += localObjectsKeys .sort () .join (""); // ClipPlane, X3DLightNode
97699
98124
  key += ".";
97700
98125
  key += textureNode ? 2 : appearanceNode .getTextureBits () .toString (16);
@@ -97764,7 +98189,7 @@ Object .assign (Object .setPrototypeOf (X3DMaterialNode .prototype, Shape_X3DApp
97764
98189
 
97765
98190
  if (renderContext)
97766
98191
  {
97767
- const { renderObject, fogNode, shapeNode, appearanceNode, humanoidNode, localObjectsKeys, textureNode } = renderContext;
98192
+ const { renderObject, fogNode, shapeNode, appearanceNode, hAnimNode, localObjectsKeys, textureNode } = renderContext;
97768
98193
 
97769
98194
  const objectsKeys = localObjectsKeys .concat (renderObject .getGlobalLightsKeys ());
97770
98195
 
@@ -97807,11 +98232,11 @@ Object .assign (Object .setPrototypeOf (X3DMaterialNode .prototype, Shape_X3DApp
97807
98232
  break;
97808
98233
  }
97809
98234
 
97810
- if (humanoidNode)
98235
+ if (hAnimNode)
97811
98236
  {
97812
98237
  options .push ("X3D_SKINNING");
97813
- options .push (`X3D_NUM_JOINT_SETS ${humanoidNode .getNumJoints () / 4}`);
97814
- options .push (`X3D_NUM_DISPLACEMENTS ${humanoidNode .getNumDisplacements ()}`);
98238
+ options .push (`X3D_NUM_JOINT_SETS ${hAnimNode .getNumJoints () / 4}`);
98239
+ options .push (`X3D_NUM_DISPLACEMENTS ${hAnimNode .getNumDisplacements ()}`);
97815
98240
  }
97816
98241
 
97817
98242
  const
@@ -105037,8 +105462,8 @@ const GifMedia_default_ = GifMedia;
105037
105462
 
105038
105463
  /* harmony default export */ const Texturing_GifMedia = (x_ite_Namespace .add ("GifMedia", GifMedia_default_));
105039
105464
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
105040
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(58);
105041
- /* provided dependency */ var SuperGif = __webpack_require__(85);
105465
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(394);
105466
+ /* provided dependency */ var SuperGif = __webpack_require__(485);
105042
105467
  /*******************************************************************************
105043
105468
  *
105044
105469
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105208,7 +105633,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
105208
105633
  setError (event)
105209
105634
  {
105210
105635
  if (this .URL .protocol !== "data:")
105211
- console .warn (`Error loading movie '${decodeURI (this .URL .href)}'`, event .type);
105636
+ console .warn (`Error loading movie '${decodeURI (this .URL .href)}':`, event .type);
105212
105637
 
105213
105638
  this .loadNext ();
105214
105639
  },
@@ -107506,7 +107931,7 @@ const gettext_default_ = (string) => locale .get (string) || string;
107506
107931
 
107507
107932
  /* harmony default export */ const gettext = (x_ite_Namespace .add ("gettext", gettext_default_));
107508
107933
  ;// ./src/x_ite/Browser/Core/BrowserTimings.js
107509
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(58);
107934
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(394);
107510
107935
  /*******************************************************************************
107511
107936
  *
107512
107937
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108136,7 +108561,7 @@ const TextCompression_default_ = TextCompression;
108136
108561
 
108137
108562
  /* harmony default export */ const Core_TextCompression = (x_ite_Namespace .add ("TextCompression", TextCompression_default_));
108138
108563
  ;// ./src/x_ite/Browser/Core/BrowserOptions.js
108139
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(58);
108564
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(394);
108140
108565
  /*******************************************************************************
108141
108566
  *
108142
108567
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108783,7 +109208,7 @@ const RenderingProperties_default_ = RenderingProperties;
108783
109208
 
108784
109209
  /* harmony default export */ const Core_RenderingProperties = (x_ite_Namespace .add ("RenderingProperties", RenderingProperties_default_));
108785
109210
  ;// ./src/x_ite/Browser/Core/Notification.js
108786
- /* provided dependency */ var Notification_$ = __webpack_require__(58);
109211
+ /* provided dependency */ var Notification_$ = __webpack_require__(394);
108787
109212
  /*******************************************************************************
108788
109213
  *
108789
109214
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108905,8 +109330,8 @@ const Notification_default_ = Notification;
108905
109330
 
108906
109331
  /* harmony default export */ const Core_Notification = (x_ite_Namespace .add ("Notification", Notification_default_));
108907
109332
  ;// ./src/x_ite/Browser/Core/ContextMenu.js
108908
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(690);
108909
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(58);
109333
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(58);
109334
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(394);
108910
109335
  /*******************************************************************************
108911
109336
  *
108912
109337
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -111628,7 +112053,7 @@ const DataStorage_default_ = DataStorage;
111628
112053
 
111629
112054
  /* harmony default export */ const Utility_DataStorage = (x_ite_Namespace .add ("DataStorage", DataStorage_default_));
111630
112055
  ;// ./src/x_ite/Browser/Core/X3DCoreContext.js
111631
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(58);
112056
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(394);
111632
112057
  /*******************************************************************************
111633
112058
  *
111634
112059
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114239,8 +114664,8 @@ const X3DViewer_default_ = X3DViewer;
114239
114664
 
114240
114665
  /* harmony default export */ const Navigation_X3DViewer = (x_ite_Namespace .add ("X3DViewer", X3DViewer_default_));
114241
114666
  ;// ./src/x_ite/Browser/Navigation/ExamineViewer.js
114242
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(880);
114243
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(58);
114667
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(576);
114668
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(394);
114244
114669
  /*******************************************************************************
114245
114670
  *
114246
114671
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115155,8 +115580,8 @@ const ExamineViewer_default_ = ExamineViewer;
115155
115580
 
115156
115581
  /* harmony default export */ const Navigation_ExamineViewer = (x_ite_Namespace .add ("ExamineViewer", ExamineViewer_default_));
115157
115582
  ;// ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
115158
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(880);
115159
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(58);
115583
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(576);
115584
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(394);
115160
115585
  /*******************************************************************************
115161
115586
  *
115162
115587
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116171,8 +116596,8 @@ const FlyViewer_default_ = FlyViewer;
116171
116596
 
116172
116597
  /* harmony default export */ const Navigation_FlyViewer = (x_ite_Namespace .add ("FlyViewer", FlyViewer_default_));
116173
116598
  ;// ./src/x_ite/Browser/Navigation/PlaneViewer.js
116174
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(880);
116175
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(58);
116599
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(576);
116600
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(394);
116176
116601
  /*******************************************************************************
116177
116602
  *
116178
116603
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116501,8 +116926,8 @@ const NoneViewer_default_ = NoneViewer;
116501
116926
 
116502
116927
  /* harmony default export */ const Navigation_NoneViewer = (x_ite_Namespace .add ("NoneViewer", NoneViewer_default_));
116503
116928
  ;// ./src/x_ite/Browser/Navigation/LookAtViewer.js
116504
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(880);
116505
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(58);
116929
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(576);
116930
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(394);
116506
116931
  /*******************************************************************************
116507
116932
  *
116508
116933
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117091,11 +117516,8 @@ const
117091
117516
 
117092
117517
  function X3DNavigationContext ()
117093
117518
  {
117094
- this .addChildObjects (Base_X3DConstants .outputOnly, "activeLayer", new x_ite_Fields .SFNode (),
117095
- Base_X3DConstants .outputOnly, "activeNavigationInfo", new x_ite_Fields .SFNode (),
117096
- Base_X3DConstants .outputOnly, "activeViewpoint", new x_ite_Fields .SFNode (),
117097
- Base_X3DConstants .outputOnly, "availableViewers", new x_ite_Fields .MFString (),
117098
- Base_X3DConstants .outputOnly, "viewer", new x_ite_Fields .SFString ("EXAMINE"));
117519
+ this .addChildObjects (Base_X3DConstants .outputOnly, "availableViewers", new x_ite_Fields .MFString (),
117520
+ Base_X3DConstants .outputOnly, "viewer", new x_ite_Fields .SFString ("EXAMINE"));
117099
117521
 
117100
117522
  this [_activeCollisions] = new Set ();
117101
117523
  this [_viewerNode] = new Navigation_NoneViewer (this .getPrivateScene ());
@@ -117647,8 +118069,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
117647
118069
 
117648
118070
  /* harmony default export */ const Picking_X3DPickingContext = (x_ite_Namespace .add ("X3DPickingContext", X3DPickingContext_default_));
117649
118071
  ;// ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
117650
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(880);
117651
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(58);
118072
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(576);
118073
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(394);
117652
118074
  /*******************************************************************************
117653
118075
  *
117654
118076
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118464,14 +118886,14 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
118464
118886
  for (const sensor of this [_activeSensors])
118465
118887
  sensor .set_motion__ (hit);
118466
118888
  },
118467
- getPointingShader (numClipPlanes, shapeNode, humanoidNode)
118889
+ getPointingShader (numClipPlanes, shapeNode, hAnimNode)
118468
118890
  {
118469
118891
  const { geometryType, hasNormals } = shapeNode .getGeometryContext ();
118470
118892
 
118471
118893
  let key = "";
118472
118894
 
118473
118895
  key += numClipPlanes; // Could be more than 9.
118474
- key += humanoidNode ?.getHumanoidKey () ?? "[]";
118896
+ key += hAnimNode ?.getHAnimKey () ?? "[]";
118475
118897
  key += shapeNode .getShapeKey ();
118476
118898
  key += geometryType;
118477
118899
  key += hasNormals ? 1 : 0;
@@ -118492,9 +118914,9 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
118492
118914
  }
118493
118915
 
118494
118916
  return this [_pointingShaders] .get (key)
118495
- ?? this .createPointingShader (key, numClipPlanes, shapeNode, humanoidNode);
118917
+ ?? this .createPointingShader (key, numClipPlanes, shapeNode, hAnimNode);
118496
118918
  },
118497
- createPointingShader (key, numClipPlanes, shapeNode, humanoidNode)
118919
+ createPointingShader (key, numClipPlanes, shapeNode, hAnimNode)
118498
118920
  {
118499
118921
  const
118500
118922
  appearanceNode = shapeNode .getAppearance (),
@@ -118534,11 +118956,11 @@ Object .assign (X3DPointingDeviceSensorContext .prototype,
118534
118956
  if (+appearanceNode .getTextureBits ())
118535
118957
  options .push ("X3D_TEXTURE");
118536
118958
 
118537
- if (humanoidNode)
118959
+ if (hAnimNode)
118538
118960
  {
118539
118961
  options .push ("X3D_SKINNING");
118540
- options .push (`X3D_NUM_JOINT_SETS ${humanoidNode .getNumJoints () / 4}`);
118541
- options .push (`X3D_NUM_DISPLACEMENTS ${humanoidNode .getNumDisplacements ()}`);
118962
+ options .push (`X3D_NUM_JOINT_SETS ${hAnimNode .getNumJoints () / 4}`);
118963
+ options .push (`X3D_NUM_DISPLACEMENTS ${hAnimNode .getNumDisplacements ()}`);
118542
118964
  }
118543
118965
 
118544
118966
  const shaderNode = this .createShader ("Pointing", "Pointing", "Pointing", options);
@@ -119095,7 +119517,7 @@ const Lock_default_ = Lock;
119095
119517
 
119096
119518
  /* harmony default export */ const Utility_Lock = (x_ite_Namespace .add ("Lock", Lock_default_));
119097
119519
  ;// ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
119098
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(58);
119520
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(394);
119099
119521
  /*******************************************************************************
119100
119522
  *
119101
119523
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119350,14 +119772,14 @@ Object .assign (X3DRenderingContext .prototype,
119350
119772
 
119351
119773
  return this [_composeShader] = this .createShader ("OITCompose", "FullScreen", "OITCompose");
119352
119774
  },
119353
- getDepthShader (numClipPlanes, shapeNode, humanoidNode)
119775
+ getDepthShader (numClipPlanes, shapeNode, hAnimNode)
119354
119776
  {
119355
119777
  const geometryContext = shapeNode .getGeometryContext ();
119356
119778
 
119357
119779
  let key = "";
119358
119780
 
119359
119781
  key += numClipPlanes; // Could be more than 9.
119360
- key += humanoidNode ?.getHumanoidKey () ?? "[]";
119782
+ key += hAnimNode ?.getHAnimKey () ?? "[]";
119361
119783
  key += shapeNode .getShapeKey ();
119362
119784
  key += geometryContext .geometryType;
119363
119785
 
@@ -119377,9 +119799,9 @@ Object .assign (X3DRenderingContext .prototype,
119377
119799
  }
119378
119800
 
119379
119801
  return this [_depthShaders] .get (key)
119380
- ?? this .createDepthShader (key, numClipPlanes, shapeNode, humanoidNode);
119802
+ ?? this .createDepthShader (key, numClipPlanes, shapeNode, hAnimNode);
119381
119803
  },
119382
- createDepthShader (key, numClipPlanes, shapeNode, humanoidNode)
119804
+ createDepthShader (key, numClipPlanes, shapeNode, hAnimNode)
119383
119805
  {
119384
119806
  const
119385
119807
  appearanceNode = shapeNode .getAppearance (),
@@ -119400,11 +119822,11 @@ Object .assign (X3DRenderingContext .prototype,
119400
119822
  if (appearanceNode .getStyleProperties (geometryContext .geometryType))
119401
119823
  options .push ("X3D_STYLE_PROPERTIES");
119402
119824
 
119403
- if (humanoidNode)
119825
+ if (hAnimNode)
119404
119826
  {
119405
119827
  options .push ("X3D_SKINNING");
119406
- options .push (`X3D_NUM_JOINT_SETS ${humanoidNode .getNumJoints () / 4}`);
119407
- options .push (`X3D_NUM_DISPLACEMENTS ${humanoidNode .getNumDisplacements ()}`);
119828
+ options .push (`X3D_NUM_JOINT_SETS ${hAnimNode .getNumJoints () / 4}`);
119829
+ options .push (`X3D_NUM_DISPLACEMENTS ${hAnimNode .getNumDisplacements ()}`);
119408
119830
  }
119409
119831
 
119410
119832
  const shaderNode = this .createShader ("Depth", "Depth", "Depth", options);
@@ -120409,7 +120831,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
120409
120831
 
120410
120832
  /* harmony default export */ const Sound_X3DSoundContext = (x_ite_Namespace .add ("X3DSoundContext", X3DSoundContext_default_));
120411
120833
  ;// ./src/x_ite/Browser/Texturing/KTXDecoder.js
120412
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(58);
120834
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(394);
120413
120835
  const KTXDecoder_default_ = class KTXDecoder
120414
120836
  {
120415
120837
  constructor (gl, externalKtxlib, scriptDir)
@@ -121988,7 +122410,7 @@ const Components_default_ = Components;
121988
122410
 
121989
122411
  /* harmony default export */ const x_ite_Components = (x_ite_Namespace .add ("Components", Components_default_));
121990
122412
  ;// ./src/x_ite/Browser/DOMIntegration.js
121991
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(58);
122413
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(394);
121992
122414
  /*******************************************************************************
121993
122415
  * MIT License
121994
122416
  *
@@ -123254,7 +123676,7 @@ const FieldTypes_default_ = new Configuration_FieldTypesArray (Object .values (x
123254
123676
 
123255
123677
  /* harmony default export */ const FieldTypes = (x_ite_Namespace .add ("FieldTypes", FieldTypes_default_));
123256
123678
  ;// ./src/x_ite/Browser/X3DBrowser.js
123257
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(58);
123679
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(394);
123258
123680
  /*******************************************************************************
123259
123681
  *
123260
123682
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -123325,6 +123747,8 @@ const FieldTypes_default_ = new Configuration_FieldTypesArray (Object .values (x
123325
123747
 
123326
123748
 
123327
123749
 
123750
+
123751
+
123328
123752
 
123329
123753
 
123330
123754
 
@@ -124331,6 +124755,15 @@ Object .defineProperties (X3DBrowser .prototype,
124331
124755
 
124332
124756
  Object .defineProperties (X3DBrowser,
124333
124757
  {
124758
+ fieldDefinitions:
124759
+ {
124760
+ value: new Base_FieldDefinitionArray ([
124761
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "activeLayer", new x_ite_Fields .SFNode ()),
124762
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "activeNavigationInfo", new x_ite_Fields .SFNode ()),
124763
+ new Base_X3DFieldDefinition (Base_X3DConstants .outputOnly, "activeViewpoint", new x_ite_Fields .SFNode ()),
124764
+ ]),
124765
+ enumerable: true,
124766
+ },
124334
124767
  typeName:
124335
124768
  {
124336
124769
  value: "X3DBrowser",
@@ -124345,7 +124778,7 @@ const X3DBrowser_default_ = X3DBrowser;
124345
124778
 
124346
124779
  /* harmony default export */ const Browser_X3DBrowser = (x_ite_Namespace .add ("X3DBrowser", X3DBrowser_default_));
124347
124780
  ;// ./src/x_ite/X3DCanvasElement.js
124348
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(58);
124781
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(394);
124349
124782
  /*******************************************************************************
124350
124783
  *
124351
124784
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124612,8 +125045,8 @@ const QuickSort_default_ = QuickSort;
124612
125045
 
124613
125046
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
124614
125047
  ;// ./src/lib/jquery.js
124615
- /* provided dependency */ var jquery_$ = __webpack_require__(58);
124616
- /* provided dependency */ var pako = __webpack_require__(642);
125048
+ /* provided dependency */ var jquery_$ = __webpack_require__(394);
125049
+ /* provided dependency */ var pako = __webpack_require__(514);
124617
125050
  Object .assign (jquery_$,
124618
125051
  {
124619
125052
  decodeText (input)
@@ -124638,6 +125071,10 @@ Object .assign (jquery_$,
124638
125071
  {
124639
125072
  return string [0] .toLowerCase () + string .slice (1);
124640
125073
  },
125074
+ toUpperCaseFirst (string)
125075
+ {
125076
+ return string [0] .toUpperCase () + string .slice (1);
125077
+ },
124641
125078
  try (callback, logError = false)
124642
125079
  {
124643
125080
  try
@@ -124690,13 +125127,13 @@ const jquery_default_ = jquery_$;
124690
125127
 
124691
125128
  /* harmony default export */ const jquery = (x_ite_Namespace .add ("jquery", jquery_default_));
124692
125129
  ;// ./src/lib/libtess.js
124693
- /* provided dependency */ var libtess_libtess = __webpack_require__(499);
125130
+ /* provided dependency */ var libtess_libtess = __webpack_require__(787);
124694
125131
  const libtess_default_ = libtess_libtess;
124695
125132
  ;
124696
125133
 
124697
125134
  /* harmony default export */ const lib_libtess = (x_ite_Namespace .add ("libtess", libtess_default_));
124698
125135
  ;// ./src/x_ite/X3D.js
124699
- /* provided dependency */ var X3D_$ = __webpack_require__(58);
125136
+ /* provided dependency */ var X3D_$ = __webpack_require__(394);
124700
125137
  /*******************************************************************************
124701
125138
  *
124702
125139
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -125000,7 +125437,7 @@ x_ite_Namespace, x_ite_Namespace .Fields,
125000
125437
 
125001
125438
  // Assign X3D to global namespace.
125002
125439
 
125003
- window [Symbol .for ("X_ITE.X3D-10.5.7")] = x_ite_X3D;
125440
+ window [Symbol .for ("X_ITE.X3D-10.5.9")] = x_ite_X3D;
125004
125441
 
125005
125442
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
125006
125443