x_ite 10.5.8 → 10.5.10

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 (49) hide show
  1. package/README.md +9 -5
  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 +2 -2
  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 +14 -8
  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 +3 -3
  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 +5 -5
  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 +12 -12
  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.js +786 -398
  45. package/dist/x_ite.min.js +2 -2
  46. package/dist/x_ite.min.mjs +2 -2
  47. package/dist/x_ite.mjs +785 -397
  48. package/dist/x_ite.zip +0 -0
  49. package/package.json +3 -3
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v10.5.8 */
1
+ /* X_ITE v10.5.10 */
2
2
  (function webpackUniversalModuleDefinition(root, factory) {
3
3
  if(typeof exports === 'object' && typeof module === 'object')
4
4
  module.exports = factory();
@@ -12,10 +12,10 @@
12
12
  return /******/ (() => { // webpackBootstrap
13
13
  /******/ var __webpack_modules__ = ({
14
14
 
15
- /***/ 949:
15
+ /***/ 367:
16
16
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
17
17
 
18
- /* provided dependency */ var jQuery = __webpack_require__(445);
18
+ /* provided dependency */ var jQuery = __webpack_require__(427);
19
19
  /**
20
20
  * @preserve jquery.fullscreen 1.1.5
21
21
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -211,7 +211,7 @@ installFullScreenHandlers();
211
211
 
212
212
  /***/ }),
213
213
 
214
- /***/ 485:
214
+ /***/ 675:
215
215
  /***/ ((module, exports, __webpack_require__) => {
216
216
 
217
217
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -225,7 +225,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
225
225
  (function (factory) {
226
226
  if ( true ) {
227
227
  // AMD. Register as an anonymous module.
228
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(445)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
228
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(427)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
229
229
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
230
230
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
231
231
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -436,7 +436,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
436
436
 
437
437
  /***/ }),
438
438
 
439
- /***/ 445:
439
+ /***/ 427:
440
440
  /***/ (function(module, exports) {
441
441
 
442
442
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11160,7 +11160,7 @@ return jQuery;
11160
11160
 
11161
11161
  /***/ }),
11162
11162
 
11163
- /***/ 294:
11163
+ /***/ 800:
11164
11164
  /***/ ((module) => {
11165
11165
 
11166
11166
  /**
@@ -15939,7 +15939,7 @@ if (true) {
15939
15939
 
15940
15940
  /***/ }),
15941
15941
 
15942
- /***/ 729:
15942
+ /***/ 355:
15943
15943
  /***/ (function(__unused_webpack_module, exports) {
15944
15944
 
15945
15945
 
@@ -19184,7 +19184,7 @@ if (true) {
19184
19184
 
19185
19185
  /***/ }),
19186
19186
 
19187
- /***/ 782:
19187
+ /***/ 388:
19188
19188
  /***/ (function(module, exports) {
19189
19189
 
19190
19190
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20242,7 +20242,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
20242
20242
  /******/
20243
20243
  /************************************************************************/
20244
20244
  var __webpack_exports__ = {};
20245
- // This entry need to be wrapped in an IIFE because it need to be in strict mode.
20245
+ // This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
20246
20246
  (() => {
20247
20247
  "use strict";
20248
20248
 
@@ -20311,7 +20311,7 @@ Object .defineProperty (Namespace, "add",
20311
20311
  return module;
20312
20312
  }
20313
20313
 
20314
- const X3D = window [Symbol .for ("X_ITE.X3D-10.5.8")];
20314
+ const X3D = window [Symbol .for ("X_ITE.X3D-10.5.10")];
20315
20315
 
20316
20316
  if (X3D)
20317
20317
  X3D [name] = module;
@@ -21154,11 +21154,9 @@ Object .assign (Generator .prototype,
21154
21154
  },
21155
21155
  ExistsRouteNode (routeNode)
21156
21156
  {
21157
- const
21158
- namesByNode = this .namesByNode .get (this .ExecutionContext ()),
21159
- routeNodes = this .routeNodes .get (this .ExecutionContext ());
21157
+ const routeNodes = this .routeNodes .get (this .ExecutionContext ());
21160
21158
 
21161
- return namesByNode .has (routeNode) || routeNodes .has (routeNode);
21159
+ return routeNodes .has (routeNode);
21162
21160
  },
21163
21161
  IsSharedNode (baseNode)
21164
21162
  {
@@ -23449,7 +23447,7 @@ Object .assign (Color3 .prototype,
23449
23447
  this [_b] = color [_b];
23450
23448
  return this;
23451
23449
  },
23452
- set (r, g, b)
23450
+ set (r = 0, g = 0, b = 0)
23453
23451
  {
23454
23452
  this [_r] = Math .max (r, 0);
23455
23453
  this [_g] = Math .max (g, 0);
@@ -23986,7 +23984,7 @@ Object .assign (Color4 .prototype,
23986
23984
  this [_a] = color [_a];
23987
23985
  return this;
23988
23986
  },
23989
- set (r, g, b, a)
23987
+ set (r = 0, g = 0, b = 0, a = 0)
23990
23988
  {
23991
23989
  this [Color4_r] = Math .max (r, 0);
23992
23990
  this [Color4_g] = Math .max (g, 0);
@@ -24822,6 +24820,18 @@ function SFMatrixPrototypeTemplate (Constructor, TypeName, Matrix, double, prope
24822
24820
  {
24823
24821
  return new (vector .constructor) (this .getValue () .multMatrixDir (vector .getValue () .copy ()));
24824
24822
  },
24823
+ translate (translation)
24824
+ {
24825
+ return new (this .constructor) (this .getValue () .copy () .translate (translation .getValue ()));
24826
+ },
24827
+ rotate (rotation)
24828
+ {
24829
+ return new (this .constructor) (this .getValue () .copy () .rotate (rotation .getValue ()));
24830
+ },
24831
+ scale (scale)
24832
+ {
24833
+ return new (this .constructor) (this .getValue () .copy () .scale (scale .getValue ()));
24834
+ },
24825
24835
  toStream (generator)
24826
24836
  {
24827
24837
  const
@@ -24972,22 +24982,22 @@ Object .assign (Vector2 .prototype,
24972
24982
  copy .y = this .y;
24973
24983
  return copy;
24974
24984
  },
24975
- assign (vector)
24985
+ assign ({ x, y })
24976
24986
  {
24977
- this .x = vector .x;
24978
- this .y = vector .y;
24987
+ this .x = x;
24988
+ this .y = y;
24979
24989
  return this;
24980
24990
  },
24981
- set (x, y)
24991
+ set (x = 0, y = 0)
24982
24992
  {
24983
24993
  this .x = x;
24984
24994
  this .y = y;
24985
24995
  return this;
24986
24996
  },
24987
- equals (vector)
24997
+ equals ({ x, y })
24988
24998
  {
24989
- return this .x === vector .x &&
24990
- this .y === vector .y;
24999
+ return this .x === x &&
25000
+ this .y === y;
24991
25001
  },
24992
25002
  negate ()
24993
25003
  {
@@ -25001,16 +25011,16 @@ Object .assign (Vector2 .prototype,
25001
25011
  this .y = 1 / this .y;
25002
25012
  return this;
25003
25013
  },
25004
- add (vector)
25014
+ add ({ x, y })
25005
25015
  {
25006
- this .x += vector .x;
25007
- this .y += vector .y;
25016
+ this .x += x;
25017
+ this .y += y;
25008
25018
  return this;
25009
25019
  },
25010
- subtract (vector)
25020
+ subtract ({ x, y })
25011
25021
  {
25012
- this .x -= vector .x;
25013
- this .y -= vector .y;
25022
+ this .x -= x;
25023
+ this .y -= y;
25014
25024
  return this;
25015
25025
  },
25016
25026
  multiply (value)
@@ -25019,10 +25029,10 @@ Object .assign (Vector2 .prototype,
25019
25029
  this .y *= value;
25020
25030
  return this;
25021
25031
  },
25022
- multVec (vector)
25032
+ multVec ({ x, y })
25023
25033
  {
25024
- this .x *= vector .x;
25025
- this .y *= vector .y;
25034
+ this .x *= x;
25035
+ this .y *= y;
25026
25036
  return this;
25027
25037
  },
25028
25038
  divide (value)
@@ -25031,10 +25041,10 @@ Object .assign (Vector2 .prototype,
25031
25041
  this .y /= value;
25032
25042
  return this;
25033
25043
  },
25034
- divVec (vector)
25044
+ divVec ({ x, y })
25035
25045
  {
25036
- this .x /= vector .x;
25037
- this .y /= vector .y;
25046
+ this .x /= x;
25047
+ this .y /= y;
25038
25048
  return this;
25039
25049
  },
25040
25050
  normalize ()
@@ -25049,10 +25059,10 @@ Object .assign (Vector2 .prototype,
25049
25059
 
25050
25060
  return this;
25051
25061
  },
25052
- dot (vector)
25062
+ dot ({ x, y })
25053
25063
  {
25054
- return this .x * vector .x +
25055
- this .y * vector .y;
25064
+ return this .x * x +
25065
+ this .y * y;
25056
25066
  },
25057
25067
  norm ()
25058
25068
  {
@@ -25065,33 +25075,35 @@ Object .assign (Vector2 .prototype,
25065
25075
  {
25066
25076
  return Math .hypot (this .x, this .y);
25067
25077
  },
25068
- distance (vector)
25078
+ distance ({ x, y })
25069
25079
  {
25070
- return Math .hypot (this .x - vector .x,
25071
- this .y - vector .y);
25080
+ return Math .hypot (this .x - x,
25081
+ this .y - y);
25072
25082
  },
25073
- lerp (destination, t)
25083
+ lerp ({ x: dX, y: dY }, t)
25074
25084
  {
25075
25085
  const { x, y } = this;
25076
25086
 
25077
- this .x = x + t * (destination .x - x);
25078
- this .y = y + t * (destination .y - y);
25087
+ this .x = x + t * (dX - x);
25088
+ this .y = y + t * (dY - y);
25079
25089
  return this;
25080
25090
  },
25081
25091
  abs ()
25082
25092
  {
25083
- this .x = Math .abs (this .x);
25084
- this .y = Math .abs (this .y);
25093
+ const { x, y } = this;
25094
+
25095
+ this .x = Math .abs (x);
25096
+ this .y = Math .abs (y);
25085
25097
  return this;
25086
25098
  },
25087
25099
  min (vector)
25088
25100
  {
25089
25101
  let { x, y } = this;
25090
25102
 
25091
- for (const vector of arguments)
25103
+ for (const { x: minX, y: minY } of arguments)
25092
25104
  {
25093
- x = Math .min (x, vector .x);
25094
- y = Math .min (y, vector .y);
25105
+ x = Math .min (x, minX);
25106
+ y = Math .min (y, minY);
25095
25107
  }
25096
25108
 
25097
25109
  this .x = x;
@@ -25102,20 +25114,21 @@ Object .assign (Vector2 .prototype,
25102
25114
  {
25103
25115
  let { x, y } = this;
25104
25116
 
25105
- for (const vector of arguments)
25117
+ for (const { x: maxX, y: maxY } of arguments)
25106
25118
  {
25107
- x = Math .max (x, vector .x);
25108
- y = Math .max (y, vector .y);
25119
+ x = Math .max (x, maxX);
25120
+ y = Math .max (y, maxY);
25109
25121
  }
25110
25122
 
25111
25123
  this .x = x;
25112
25124
  this .y = y;
25113
25125
  return this;
25114
25126
  },
25115
- clamp (min, max)
25127
+ clamp ({ x: minX, y: minY }, { x: maxX, y: maxY })
25116
25128
  {
25117
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
25118
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
25129
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
25130
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
25131
+ return this;
25119
25132
  },
25120
25133
  toString ()
25121
25134
  {
@@ -25227,25 +25240,25 @@ Object .assign (Vector3 .prototype,
25227
25240
  copy .z = this .z;
25228
25241
  return copy;
25229
25242
  },
25230
- assign (vector)
25243
+ assign ({ x, y, z })
25231
25244
  {
25232
- this .x = vector .x;
25233
- this .y = vector .y;
25234
- this .z = vector .z;
25245
+ this .x = x;
25246
+ this .y = y;
25247
+ this .z = z;
25235
25248
  return this;
25236
25249
  },
25237
- set (x, y, z)
25250
+ set (x = 0, y = 0, z = 0)
25238
25251
  {
25239
25252
  this .x = x;
25240
25253
  this .y = y;
25241
25254
  this .z = z;
25242
25255
  return this;
25243
25256
  },
25244
- equals (vector)
25257
+ equals ({ x, y, z })
25245
25258
  {
25246
- return this .x === vector .x &&
25247
- this .y === vector .y &&
25248
- this .z === vector .z;
25259
+ return this .x === x &&
25260
+ this .y === y &&
25261
+ this .z === z;
25249
25262
  },
25250
25263
  negate ()
25251
25264
  {
@@ -25261,18 +25274,18 @@ Object .assign (Vector3 .prototype,
25261
25274
  this .z = 1 / this .z;
25262
25275
  return this;
25263
25276
  },
25264
- add (vector)
25277
+ add ({ x, y, z })
25265
25278
  {
25266
- this .x += vector .x;
25267
- this .y += vector .y;
25268
- this .z += vector .z;
25279
+ this .x += x;
25280
+ this .y += y;
25281
+ this .z += z;
25269
25282
  return this;
25270
25283
  },
25271
- subtract (vector)
25284
+ subtract ({ x, y, z })
25272
25285
  {
25273
- this .x -= vector .x;
25274
- this .y -= vector .y;
25275
- this .z -= vector .z;
25286
+ this .x -= x;
25287
+ this .y -= y;
25288
+ this .z -= z;
25276
25289
  return this;
25277
25290
  },
25278
25291
  multiply (value)
@@ -25282,11 +25295,11 @@ Object .assign (Vector3 .prototype,
25282
25295
  this .z *= value;
25283
25296
  return this;
25284
25297
  },
25285
- multVec (vector)
25298
+ multVec ({ x, y, z })
25286
25299
  {
25287
- this .x *= vector .x;
25288
- this .y *= vector .y;
25289
- this .z *= vector .z;
25300
+ this .x *= x;
25301
+ this .y *= y;
25302
+ this .z *= z;
25290
25303
  return this;
25291
25304
  },
25292
25305
  divide (value)
@@ -25296,18 +25309,16 @@ Object .assign (Vector3 .prototype,
25296
25309
  this .z /= value;
25297
25310
  return this;
25298
25311
  },
25299
- divVec (vector)
25312
+ divVec ({ x, y, z })
25300
25313
  {
25301
- this .x /= vector .x;
25302
- this .y /= vector .y;
25303
- this .z /= vector .z;
25314
+ this .x /= x;
25315
+ this .y /= y;
25316
+ this .z /= z;
25304
25317
  return this;
25305
25318
  },
25306
- cross (vector)
25319
+ cross ({ x: bx, y: by, z: bz })
25307
25320
  {
25308
- const
25309
- { x: ax, y: ay, z: az } = this,
25310
- { x: bx, y: by, z: bz } = vector;
25321
+ const { x: ax, y: ay, z: az } = this;
25311
25322
 
25312
25323
  this .x = ay * bz - az * by;
25313
25324
  this .y = az * bx - ax * bz;
@@ -25328,11 +25339,11 @@ Object .assign (Vector3 .prototype,
25328
25339
 
25329
25340
  return this;
25330
25341
  },
25331
- dot (vector)
25342
+ dot ({ x, y, z })
25332
25343
  {
25333
- return this .x * vector .x +
25334
- this .y * vector .y +
25335
- this .z * vector .z;
25344
+ return this .x * x +
25345
+ this .y * y +
25346
+ this .z * z;
25336
25347
  },
25337
25348
  norm ()
25338
25349
  {
@@ -25346,19 +25357,19 @@ Object .assign (Vector3 .prototype,
25346
25357
  {
25347
25358
  return Math .hypot (this .x, this .y, this .z);
25348
25359
  },
25349
- distance (vector)
25360
+ distance ({ x, y, z })
25350
25361
  {
25351
- return Math .hypot (this .x - vector .x,
25352
- this .y - vector .y,
25353
- this .z - vector .z);
25362
+ return Math .hypot (this .x - x,
25363
+ this .y - y,
25364
+ this .z - z);
25354
25365
  },
25355
- lerp (destination, t)
25366
+ lerp ({ x: dX, y: dY, z: dZ }, t)
25356
25367
  {
25357
25368
  const { x, y, z } = this;
25358
25369
 
25359
- this .x = x + t * (destination .x - x);
25360
- this .y = y + t * (destination .y - y);
25361
- this .z = z + t * (destination .z - z);
25370
+ this .x = x + t * (dX - x);
25371
+ this .y = y + t * (dY - y);
25372
+ this .z = z + t * (dZ - z);
25362
25373
  return this;
25363
25374
  },
25364
25375
  slerp: (() =>
@@ -25372,20 +25383,22 @@ Object .assign (Vector3 .prototype,
25372
25383
  })(),
25373
25384
  abs ()
25374
25385
  {
25375
- this .x = Math .abs (this .x);
25376
- this .y = Math .abs (this .y);
25377
- this .z = Math .abs (this .z);
25386
+ const { x, y, z } = this;
25387
+
25388
+ this .x = Math .abs (x);
25389
+ this .y = Math .abs (y);
25390
+ this .z = Math .abs (z);
25378
25391
  return this;
25379
25392
  },
25380
25393
  min (vector)
25381
25394
  {
25382
25395
  let { x, y, z } = this;
25383
25396
 
25384
- for (const vector of arguments)
25397
+ for (const { x: minX, y: minY, z: minZ } of arguments)
25385
25398
  {
25386
- x = Math .min (x, vector .x);
25387
- y = Math .min (y, vector .y);
25388
- z = Math .min (z, vector .z);
25399
+ x = Math .min (x, minX);
25400
+ y = Math .min (y, minY);
25401
+ z = Math .min (z, minZ);
25389
25402
  }
25390
25403
 
25391
25404
  this .x = x;
@@ -25397,11 +25410,11 @@ Object .assign (Vector3 .prototype,
25397
25410
  {
25398
25411
  let { x, y, z } = this;
25399
25412
 
25400
- for (const vector of arguments)
25413
+ for (const { x: maxX, y: maxY, z: maxZ } of arguments)
25401
25414
  {
25402
- x = Math .max (x, vector .x);
25403
- y = Math .max (y, vector .y);
25404
- z = Math .max (z, vector .z);
25415
+ x = Math .max (x, maxX);
25416
+ y = Math .max (y, maxY);
25417
+ z = Math .max (z, maxZ);
25405
25418
  }
25406
25419
 
25407
25420
  this .x = x;
@@ -25409,11 +25422,12 @@ Object .assign (Vector3 .prototype,
25409
25422
  this .z = z;
25410
25423
  return this;
25411
25424
  },
25412
- clamp (min, max)
25425
+ clamp ({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ })
25413
25426
  {
25414
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
25415
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
25416
- this .z = Math_Algorithm .clamp (this .z, min .z, max .z);
25427
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
25428
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
25429
+ this .z = Math_Algorithm .clamp (this .z, minZ, maxZ);
25430
+ return this;
25417
25431
  },
25418
25432
  toString ()
25419
25433
  {
@@ -26700,6 +26714,10 @@ function SFMatrix3Template (TypeName, double)
26700
26714
  args .length = 0;
26701
26715
  };
26702
26716
  })(),
26717
+ rotate (rotation)
26718
+ {
26719
+ return new (this .constructor) (this .getValue () .copy () .rotate (rotation));
26720
+ },
26703
26721
  });
26704
26722
  }
26705
26723
 
@@ -26788,15 +26806,15 @@ Object .assign (Vector4 .prototype,
26788
26806
  copy .w = this .w;
26789
26807
  return copy;
26790
26808
  },
26791
- assign (vector)
26809
+ assign ({ x, y, z, w })
26792
26810
  {
26793
- this .x = vector .x;
26794
- this .y = vector .y;
26795
- this .z = vector .z;
26796
- this .w = vector .w;
26811
+ this .x = x;
26812
+ this .y = y;
26813
+ this .z = z;
26814
+ this .w = w;
26797
26815
  return this;
26798
26816
  },
26799
- set (x, y, z, w)
26817
+ set (x = 0, y = 0, z = 0, w = 0)
26800
26818
  {
26801
26819
  this .x = x;
26802
26820
  this .y = y;
@@ -26804,19 +26822,12 @@ Object .assign (Vector4 .prototype,
26804
26822
  this .w = w;
26805
26823
  return this;
26806
26824
  },
26807
- equals (vector)
26808
- {
26809
- return this .x === vector .x &&
26810
- this .y === vector .y &&
26811
- this .z === vector .z &&
26812
- this .w === vector .w;
26813
- },
26814
- getReal (vector)
26825
+ equals ({ x, y, z, w })
26815
26826
  {
26816
- vector .x = this .x / this .w;
26817
- vector .y = this .y / this .w;
26818
- vector .z = this .z / this .w;
26819
- return vector;
26827
+ return this .x === x &&
26828
+ this .y === y &&
26829
+ this .z === z &&
26830
+ this .w === w;
26820
26831
  },
26821
26832
  negate ()
26822
26833
  {
@@ -26834,20 +26845,20 @@ Object .assign (Vector4 .prototype,
26834
26845
  this .w = 1 / this .w;
26835
26846
  return this;
26836
26847
  },
26837
- add (vector)
26848
+ add ({ x, y, z, w })
26838
26849
  {
26839
- this .x += vector .x;
26840
- this .y += vector .y;
26841
- this .z += vector .z;
26842
- this .w += vector .w;
26850
+ this .x += x;
26851
+ this .y += y;
26852
+ this .z += z;
26853
+ this .w += w;
26843
26854
  return this;
26844
26855
  },
26845
- subtract (vector)
26856
+ subtract ({ x, y, z, w })
26846
26857
  {
26847
- this .x -= vector .x;
26848
- this .y -= vector .y;
26849
- this .z -= vector .z;
26850
- this .w -= vector .w;
26858
+ this .x -= x;
26859
+ this .y -= y;
26860
+ this .z -= z;
26861
+ this .w -= w;
26851
26862
  return this;
26852
26863
  },
26853
26864
  multiply (value)
@@ -26858,12 +26869,12 @@ Object .assign (Vector4 .prototype,
26858
26869
  this .w *= value;
26859
26870
  return this;
26860
26871
  },
26861
- multVec (vector)
26872
+ multVec ({ x, y, z, w })
26862
26873
  {
26863
- this .x *= vector .x;
26864
- this .y *= vector .y;
26865
- this .z *= vector .z;
26866
- this .w *= vector .w;
26874
+ this .x *= x;
26875
+ this .y *= y;
26876
+ this .z *= z;
26877
+ this .w *= w;
26867
26878
  return this;
26868
26879
  },
26869
26880
  divide (value)
@@ -26874,12 +26885,12 @@ Object .assign (Vector4 .prototype,
26874
26885
  this .w /= value;
26875
26886
  return this;
26876
26887
  },
26877
- divVec (vector)
26888
+ divVec ({ x, y, z, w })
26878
26889
  {
26879
- this .x /= vector .x;
26880
- this .y /= vector .y;
26881
- this .z /= vector .z;
26882
- this .w /= vector .w;
26890
+ this .x /= x;
26891
+ this .y /= y;
26892
+ this .z /= z;
26893
+ this .w /= w;
26883
26894
  return this;
26884
26895
  },
26885
26896
  normalize ()
@@ -26896,12 +26907,12 @@ Object .assign (Vector4 .prototype,
26896
26907
 
26897
26908
  return this;
26898
26909
  },
26899
- dot (vector)
26910
+ dot ({ x, y, z, w })
26900
26911
  {
26901
- return this .x * vector .x +
26902
- this .y * vector .y +
26903
- this .z * vector .z +
26904
- this .w * vector .w;
26912
+ return this .x * x +
26913
+ this .y * y +
26914
+ this .z * z +
26915
+ this .w * w;
26905
26916
  },
26906
26917
  norm ()
26907
26918
  {
@@ -26916,41 +26927,43 @@ Object .assign (Vector4 .prototype,
26916
26927
  {
26917
26928
  return Math .hypot (this .x, this .y, this .z, this .w);
26918
26929
  },
26919
- distance (vector)
26930
+ distance ({ x, y, z, w })
26920
26931
  {
26921
- return Math .hypot (this .x - vector .x,
26922
- this .y - vector .y,
26923
- this .z - vector .z,
26924
- this .w - vector .w);
26932
+ return Math .hypot (this .x - x,
26933
+ this .y - y,
26934
+ this .z - z,
26935
+ this .w - w);
26925
26936
  },
26926
- lerp (destination, t)
26937
+ lerp ({ x: dX, y: dY, z: dZ, w: dW }, t)
26927
26938
  {
26928
26939
  const { x, y, z, w } = this;
26929
26940
 
26930
- this .x = x + t * (destination .x - x);
26931
- this .y = y + t * (destination .y - y);
26932
- this .z = z + t * (destination .z - z);
26933
- this .w = w + t * (destination .w - w);
26941
+ this .x = x + t * (dX - x);
26942
+ this .y = y + t * (dY - y);
26943
+ this .z = z + t * (dZ - z);
26944
+ this .w = w + t * (dW - w);
26934
26945
  return this;
26935
26946
  },
26936
26947
  abs ()
26937
26948
  {
26938
- this .x = Math .abs (this .x);
26939
- this .y = Math .abs (this .y);
26940
- this .z = Math .abs (this .z);
26941
- this .w = Math .abs (this .w);
26949
+ const { x, y, z, w } = this;
26950
+
26951
+ this .x = Math .abs (x);
26952
+ this .y = Math .abs (y);
26953
+ this .z = Math .abs (z);
26954
+ this .w = Math .abs (w);
26942
26955
  return this;
26943
26956
  },
26944
26957
  min (vector)
26945
26958
  {
26946
26959
  let { x, y, z, w } = this;
26947
26960
 
26948
- for (const vector of arguments)
26961
+ for (const { x: minX, y: minY, z: minZ, w: minW } of arguments)
26949
26962
  {
26950
- x = Math .min (x, vector .x);
26951
- y = Math .min (y, vector .y);
26952
- z = Math .min (z, vector .z);
26953
- w = Math .min (w, vector .w);
26963
+ x = Math .min (x, minX);
26964
+ y = Math .min (y, minY);
26965
+ z = Math .min (z, minZ);
26966
+ w = Math .min (w, minW);
26954
26967
  }
26955
26968
 
26956
26969
  this .x = x;
@@ -26963,12 +26976,12 @@ Object .assign (Vector4 .prototype,
26963
26976
  {
26964
26977
  let { x, y, z, w } = this;
26965
26978
 
26966
- for (const vector of arguments)
26979
+ for (const { x: maxX, y: maxY, z: maxZ, w: maxW } of arguments)
26967
26980
  {
26968
- x = Math .max (x, vector .x);
26969
- y = Math .max (y, vector .y);
26970
- z = Math .max (z, vector .z);
26971
- w = Math .max (w, vector .w);
26981
+ x = Math .max (x, maxX);
26982
+ y = Math .max (y, maxY);
26983
+ z = Math .max (z, maxZ);
26984
+ w = Math .max (w, maxW);
26972
26985
  }
26973
26986
 
26974
26987
  this .x = x;
@@ -26977,12 +26990,13 @@ Object .assign (Vector4 .prototype,
26977
26990
  this .w = w;
26978
26991
  return this;
26979
26992
  },
26980
- clamp (min, max)
26993
+ clamp ({ x: minX, y: minY, z: minZ, w: minW }, { x: maxX, y: maxY, z: maxZ, w: maxW })
26981
26994
  {
26982
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
26983
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
26984
- this .z = Math_Algorithm .clamp (this .z, min .z, max .z);
26985
- this .w = Math_Algorithm .clamp (this .w, min .w, max .w);
26995
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
26996
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
26997
+ this .z = Math_Algorithm .clamp (this .z, minZ, maxZ);
26998
+ this .w = Math_Algorithm .clamp (this .w, minW, maxW);
26999
+ return this;
26986
27000
  },
26987
27001
  toString ()
26988
27002
  {
@@ -27113,15 +27127,15 @@ Object .assign (Quaternion .prototype,
27113
27127
  copy .w = this .w;
27114
27128
  return copy;
27115
27129
  },
27116
- assign (quat)
27130
+ assign ({ x, y, z, w })
27117
27131
  {
27118
- this .x = quat .x;
27119
- this .y = quat .y;
27120
- this .z = quat .z;
27121
- this .w = quat .w;
27132
+ this .x = x;
27133
+ this .y = y;
27134
+ this .z = z;
27135
+ this .w = w;
27122
27136
  return this;
27123
27137
  },
27124
- set (x, y, z, w)
27138
+ set (x = 0, y = 0, z = 0, w = 1)
27125
27139
  {
27126
27140
  this .x = x;
27127
27141
  this .y = y;
@@ -27382,12 +27396,12 @@ Object .assign (Quaternion .prototype,
27382
27396
  {
27383
27397
  return !this .w;
27384
27398
  },
27385
- equals (quat)
27399
+ equals ({ x, y, z, w })
27386
27400
  {
27387
- return this .x === quat .x &&
27388
- this .y === quat .y &&
27389
- this .z === quat .z &&
27390
- this .w === quat .w;
27401
+ return this .x === x &&
27402
+ this .y === y &&
27403
+ this .z === z &&
27404
+ this .w === w;
27391
27405
  },
27392
27406
  negate ()
27393
27407
  {
@@ -27404,20 +27418,20 @@ Object .assign (Quaternion .prototype,
27404
27418
  this .z = -this .z;
27405
27419
  return this;
27406
27420
  },
27407
- add (quat)
27421
+ add ({ x, y, z, w })
27408
27422
  {
27409
- this .x += quat .x;
27410
- this .y += quat .y;
27411
- this .z += quat .z;
27412
- this .w += quat .w;
27423
+ this .x += x;
27424
+ this .y += y;
27425
+ this .z += z;
27426
+ this .w += w;
27413
27427
  return this;
27414
27428
  },
27415
- subtract (quat)
27429
+ subtract ({ x, y, z, w })
27416
27430
  {
27417
- this .x -= quat .x;
27418
- this .y -= quat .y;
27419
- this .z -= quat .z;
27420
- this .w -= quat .w;
27431
+ this .x -= x;
27432
+ this .y -= y;
27433
+ this .z -= z;
27434
+ this .w -= w;
27421
27435
  return this;
27422
27436
  },
27423
27437
  multiply (value)
@@ -29207,13 +29221,9 @@ const SFNodeCache =
29207
29221
 
29208
29222
  function dispose ()
29209
29223
  {
29210
- const value = this .getValue ();
29211
-
29212
- value ?.dispose ();
29224
+ this .getValue () ?.dispose ();
29213
29225
 
29214
29226
  Fields_SFNode .prototype .dispose .call (this);
29215
-
29216
- SFNodeCache .delete (value);
29217
29227
  }
29218
29228
 
29219
29229
  const SFNodeCache_default_ = SFNodeCache;
@@ -29776,6 +29786,10 @@ function SFVecPrototypeTemplate (Constructor, TypeName, Vector, double, properti
29776
29786
  {
29777
29787
  return new (this .constructor) (this .getValue () .copy () .add (vector .getValue ()));
29778
29788
  },
29789
+ clamp (low, high)
29790
+ {
29791
+ return new (this .constructor) (this .getValue () .copy () .clamp (low .getValue (), high .getValue ()));
29792
+ },
29779
29793
  distance (vector)
29780
29794
  {
29781
29795
  return this .getValue () .distance (vector .getValue ());
@@ -34173,7 +34187,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34173
34187
 
34174
34188
  /* harmony default export */ const Base_X3DBaseNode = (x_ite_Namespace .add ("X3DBaseNode", X3DBaseNode_default_));
34175
34189
  ;// ./src/x_ite/Browser/Legacy.js
34176
- /* provided dependency */ var $ = __webpack_require__(445);
34190
+ /* provided dependency */ var $ = __webpack_require__(427);
34177
34191
  /*******************************************************************************
34178
34192
  *
34179
34193
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34309,7 +34323,7 @@ const Legacy_default_ = Legacy;
34309
34323
  *
34310
34324
  ******************************************************************************/
34311
34325
 
34312
- const BROWSER_VERSION_default_ = "10.5.8";
34326
+ const BROWSER_VERSION_default_ = "10.5.10";
34313
34327
  ;
34314
34328
 
34315
34329
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -34366,6 +34380,7 @@ const BROWSER_VERSION_default_ = "10.5.8";
34366
34380
 
34367
34381
 
34368
34382
 
34383
+
34369
34384
  const _metaDataCallbacks = Symbol ();
34370
34385
 
34371
34386
  function X3DNode (executionContext)
@@ -35590,6 +35605,7 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
35590
35605
  }
35591
35606
  }
35592
35607
 
35608
+
35593
35609
  // Type name
35594
35610
 
35595
35611
  generator .string += '{';
@@ -36081,6 +36097,8 @@ Object .assign (Object .setPrototypeOf (X3DNode .prototype, Base_X3DBaseNode .pr
36081
36097
  firstParent .setValue (null);
36082
36098
  }
36083
36099
 
36100
+ Fields_SFNodeCache .delete (this);
36101
+
36084
36102
  // Call super.dispose, where fields get disposed.
36085
36103
 
36086
36104
  Base_X3DBaseNode .prototype .dispose .call (this);
@@ -37334,7 +37352,7 @@ const X3DBindableNode_default_ = X3DBindableNode;
37334
37352
 
37335
37353
  /* harmony default export */ const Core_X3DBindableNode = (x_ite_Namespace .add ("X3DBindableNode", X3DBindableNode_default_));
37336
37354
  ;// ./src/standard/Math/Geometry/Triangle3.js
37337
- /* provided dependency */ var libtess = __webpack_require__(294);
37355
+ /* provided dependency */ var libtess = __webpack_require__(800);
37338
37356
  /*******************************************************************************
37339
37357
  *
37340
37358
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39900,7 +39918,7 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
39900
39918
 
39901
39919
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (x_ite_Namespace .add ("X3DProtoDeclaration", X3DProtoDeclaration_default_));
39902
39920
  ;// ./src/x_ite/Parser/X3DParser.js
39903
- /* provided dependency */ var X3DParser_$ = __webpack_require__(445);
39921
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(427);
39904
39922
  /*******************************************************************************
39905
39923
  *
39906
39924
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -40155,7 +40173,7 @@ const Expressions_default_ = Expressions;
40155
40173
 
40156
40174
  /* harmony default export */ const Parser_Expressions = (x_ite_Namespace .add ("Expressions", Expressions_default_));
40157
40175
  ;// ./src/x_ite/Parser/VRMLParser.js
40158
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(445);
40176
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(427);
40159
40177
  /*******************************************************************************
40160
40178
  *
40161
40179
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42795,7 +42813,7 @@ const VRMLParser_default_ = VRMLParser;
42795
42813
 
42796
42814
  /* harmony default export */ const Parser_VRMLParser = (x_ite_Namespace .add ("VRMLParser", VRMLParser_default_));
42797
42815
  ;// ./src/x_ite/Parser/XMLParser.js
42798
- /* provided dependency */ var XMLParser_$ = __webpack_require__(445);
42816
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(427);
42799
42817
  /*******************************************************************************
42800
42818
  *
42801
42819
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -44973,7 +44991,7 @@ const URLs_default_ = URLs;
44973
44991
 
44974
44992
  /* harmony default export */ const Networking_URLs = (x_ite_Namespace .add ("URLs", URLs_default_));
44975
44993
  ;// ./src/x_ite/Parser/GLTF2Parser.js
44976
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(445);
44994
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(427);
44977
44995
  /*******************************************************************************
44978
44996
  *
44979
44997
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -45034,6 +45052,7 @@ const URLs_default_ = URLs;
45034
45052
 
45035
45053
 
45036
45054
 
45055
+
45037
45056
  // https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
45038
45057
  // https://github.com/KhronosGroup/glTF-Sample-Assets
45039
45058
 
@@ -45068,6 +45087,8 @@ function GLTF2Parser (scene)
45068
45087
  this .nodes = [ ];
45069
45088
  this .skins = [ ];
45070
45089
  this .joints = new Set ();
45090
+ this .pointerAliases = new Map ();
45091
+ this .animationScripts = [ ];
45071
45092
  }
45072
45093
 
45073
45094
  Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser .prototype),
@@ -45183,20 +45204,21 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45183
45204
  this .camerasArray (glTF .cameras);
45184
45205
  this .skinsArray (glTF .skins);
45185
45206
  this .nodesArray (glTF .nodes);
45186
- this .scenesArray (glTF .scenes, glTF .scene);
45207
+ this .scenesArray (glTF, glTF .scenes, glTF .scene);
45187
45208
  this .animationsArray (glTF .animations);
45188
45209
 
45189
- this .viewpointsCenterOfRotation (this .getScene ());
45190
- this .optimizeSceneGraph (this .getScene () .getRootNodes ());
45210
+ this .viewpointsCenterOfRotation (scene);
45211
+ this .optimizeSceneGraph (scene .getRootNodes ());
45191
45212
 
45192
45213
  this .exportGroup ("Viewpoints", this .cameras);
45193
45214
  this .exportGroup ("EnvironmentLights", this .envLights);
45194
45215
  this .exportGroup ("Lights", this .lights);
45195
45216
  this .exportGroup ("Animations", glTF .animations);
45196
45217
 
45218
+ this .cleanupAnimationScripts ();
45197
45219
  this .materialVariantsSwitch ();
45198
45220
 
45199
- return this .getScene ();
45221
+ return scene;
45200
45222
  },
45201
45223
  assetObject (asset)
45202
45224
  {
@@ -45252,8 +45274,9 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45252
45274
  return;
45253
45275
 
45254
45276
  const
45255
- browser = this .getBrowser (),
45256
- scene = this .getScene ();
45277
+ browser = this .getBrowser (),
45278
+ scene = this .getScene (),
45279
+ components = [ ];
45257
45280
 
45258
45281
  for (const extension of extensions)
45259
45282
  {
@@ -45263,11 +45286,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45263
45286
  {
45264
45287
  case "EXT_lights_image_based":
45265
45288
  {
45266
- const component = browser .getComponent ("CubeMapTexturing", 3);
45267
-
45268
- if (!scene .hasComponent (component))
45269
- scene .addComponent (component);
45270
-
45289
+ components .push (browser .getComponent ("CubeMapTexturing", 3));
45271
45290
  break;
45272
45291
  }
45273
45292
  // https://github.com/KhronosGroup/glTF/pull/1956
@@ -45289,24 +45308,28 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45289
45308
  case "KHR_materials_transmission":
45290
45309
  case "KHR_materials_volume":
45291
45310
  {
45292
- const component = browser .getComponent ("X_ITE", 1);
45293
-
45294
- if (!scene .hasComponent (component))
45295
- scene .addComponent (component);
45296
-
45311
+ components .push (browser .getComponent ("X_ITE", 1));
45297
45312
  break;
45298
45313
  }
45299
45314
  case "KHR_texture_transform":
45300
45315
  {
45301
- const component = browser .getComponent ("Texturing3D", 2);
45302
-
45303
- if (!scene .hasComponent (component))
45304
- scene .addComponent (component);
45305
-
45316
+ components .push (browser .getComponent ("Texturing3D", 2));
45317
+ break;
45318
+ }
45319
+ case "KHR_animation_pointer":
45320
+ {
45321
+ components .push (browser .getComponent ("EventUtilities", 1));
45322
+ components .push (browser .getComponent ("Scripting", 1));
45306
45323
  break;
45307
45324
  }
45308
45325
  }
45309
45326
  }
45327
+
45328
+ for (const component of components)
45329
+ {
45330
+ if (!scene .hasComponent (component))
45331
+ scene .addComponent (component);
45332
+ }
45310
45333
  },
45311
45334
  extensionsObject (extensions)
45312
45335
  {
@@ -45417,6 +45440,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45417
45440
 
45418
45441
  lightNode .setup ();
45419
45442
 
45443
+ light .pointers = [lightNode];
45444
+
45420
45445
  return light .node = lightNode;
45421
45446
  },
45422
45447
  khrLightsPunctualObject (KHR_lights_punctual)
@@ -45463,6 +45488,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45463
45488
  scene .addNamedNode (scene .getUniqueName (name), lightNode);
45464
45489
  scene .addExportedNode (scene .getUniqueExportName (name), lightNode);
45465
45490
 
45491
+ light .pointers = [lightNode];
45492
+
45466
45493
  return light .node = lightNode;
45467
45494
  },
45468
45495
  lightType (light)
@@ -45496,6 +45523,10 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45496
45523
  lightNode ._beamWidth = this .numberValue (light .innerConeAngle, 0);
45497
45524
  lightNode ._attenuation = new Numbers_Vector3 (0, 0, 1);
45498
45525
 
45526
+ this .addAnimationPointerAlias (lightNode, "range", "radius");
45527
+ this .addAnimationPointerAlias (lightNode, "outerConeAngle", "cutOffAngle");
45528
+ this .addAnimationPointerAlias (lightNode, "innerConeAngle", "beamWidth");
45529
+
45499
45530
  return lightNode;
45500
45531
  },
45501
45532
  pointLight (light)
@@ -45507,6 +45538,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45507
45538
  lightNode ._radius = this .numberValue (light .range, 0) || -1;
45508
45539
  lightNode ._attenuation = new Numbers_Vector3 (0, 0, 1);
45509
45540
 
45541
+ this .addAnimationPointerAlias (lightNode, "range", "radius");
45542
+
45510
45543
  return lightNode;
45511
45544
  },
45512
45545
  khrMaterialsVariantsObjectVariants (KHR_materials_variants)
@@ -45912,11 +45945,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45912
45945
 
45913
45946
  const texCoordIndices = this .getTexCoordIndices ("", material);
45914
45947
 
45915
- this .texCoordIndex = Array .from (texCoordIndices) .reduce ((p, c) => Math .max (p, c), -1);
45916
- this .textureTransformNodes = [ ];
45917
- this .texCoordMappings = new Map ();
45918
- this .texCoordOfNode = new Map ();
45919
- material .texCoordMappings = this .texCoordMappings;
45948
+ this .texCoordIndex = Array .from (texCoordIndices) .reduce ((p, c) => Math .max (p, c), -1);
45949
+ this .textureTransformNodes = [ ];
45950
+ this .texCoordMappings = new Map ();
45951
+ this .texCoordOfNode = new Map ();
45952
+ this .texCoordExtensionOfNode = new Map ();
45953
+ material .texCoordMappings = this .texCoordMappings;
45920
45954
 
45921
45955
  const
45922
45956
  scene = this .getScene (),
@@ -45973,6 +46007,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45973
46007
 
45974
46008
  appearanceNode .setup ();
45975
46009
 
46010
+ material .pointers = [appearanceNode, materialNode];
46011
+
45976
46012
  return material .appearanceNode = appearanceNode;
45977
46013
  },
45978
46014
  getTexCoordIndices (key, object, indices = new Set ())
@@ -46031,6 +46067,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46031
46067
  materialNode ._metallicRoughnessTexture = this .textureInfo (pbrMetallicRoughness .metallicRoughnessTexture);
46032
46068
  materialNode ._metallicRoughnessTextureMapping = this .textureMapping (pbrMetallicRoughness .metallicRoughnessTexture);
46033
46069
 
46070
+ pbrMetallicRoughness .pointers = [materialNode];
46071
+
46034
46072
  return materialNode;
46035
46073
  },
46036
46074
  pbrSpecularGlossinessObject (pbrSpecularGlossiness)
@@ -46066,6 +46104,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46066
46104
  materialNode ._specularGlossinessTexture = this .textureInfo (pbrSpecularGlossiness .specularGlossinessTexture);
46067
46105
  materialNode ._specularGlossinessTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
46068
46106
 
46107
+ pbrSpecularGlossiness .pointers = [materialNode];
46108
+
46069
46109
  return materialNode;
46070
46110
  },
46071
46111
  occlusionTextureInfo (occlusionTexture, materialNode)
@@ -46164,6 +46204,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46164
46204
 
46165
46205
  extension .setup ();
46166
46206
 
46207
+ KHR_materials_anisotropy .pointers = [extension];
46208
+
46167
46209
  materialNode ._extensions .push (extension);
46168
46210
  },
46169
46211
  khrMaterialsClearcoatObject (KHR_materials_clearcoat, materialNode)
@@ -46186,6 +46228,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46186
46228
 
46187
46229
  extension .setup ();
46188
46230
 
46231
+ KHR_materials_clearcoat .pointers = [extension];
46232
+
46189
46233
  materialNode ._extensions .push (extension);
46190
46234
  },
46191
46235
  khrMaterialsDiffuseTransmissionObject (KHR_materials_diffuse_transmission, materialNode)
@@ -46209,6 +46253,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46209
46253
 
46210
46254
  extension .setup ();
46211
46255
 
46256
+ KHR_materials_diffuse_transmission .pointers = [extension];
46257
+
46212
46258
  materialNode ._extensions .push (extension);
46213
46259
  },
46214
46260
  khrMaterialsDispersionObject (KHR_materials_dispersion, materialNode)
@@ -46222,6 +46268,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46222
46268
 
46223
46269
  extension .setup ();
46224
46270
 
46271
+ KHR_materials_dispersion .pointers = [extension];
46272
+
46225
46273
  materialNode ._extensions .push (extension);
46226
46274
  },
46227
46275
  khrMaterialsEmissiveStrengthObject (KHR_materials_emissive_strength, materialNode)
@@ -46235,6 +46283,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46235
46283
 
46236
46284
  extension .setup ();
46237
46285
 
46286
+ KHR_materials_emissive_strength .pointers = [extension];
46287
+
46238
46288
  materialNode ._extensions .push (extension);
46239
46289
  },
46240
46290
  khrMaterialsIorStrengthObject (KHR_materials_ior, materialNode)
@@ -46245,6 +46295,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46245
46295
 
46246
46296
  extension .setup ();
46247
46297
 
46298
+ KHR_materials_ior .pointers = [extension];
46299
+
46248
46300
  materialNode ._extensions .push (extension);
46249
46301
  },
46250
46302
  khrMaterialsIridescenceObject (KHR_materials_iridescence, materialNode)
@@ -46262,6 +46314,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46262
46314
 
46263
46315
  extension .setup ();
46264
46316
 
46317
+ KHR_materials_iridescence .pointers = [extension];
46318
+
46265
46319
  materialNode ._extensions .push (extension);
46266
46320
  },
46267
46321
  khrMaterialsSheenObject (KHR_materials_sheen, materialNode)
@@ -46285,6 +46339,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46285
46339
 
46286
46340
  extension .setup ();
46287
46341
 
46342
+ KHR_materials_sheen .pointers = [extension];
46343
+
46288
46344
  materialNode ._extensions .push (extension);
46289
46345
  },
46290
46346
  khrMaterialsSpecularObject (KHR_materials_specular, materialNode)
@@ -46308,6 +46364,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46308
46364
 
46309
46365
  extension .setup ();
46310
46366
 
46367
+ KHR_materials_specular .pointers = [extension];
46368
+
46311
46369
  materialNode ._extensions .push (extension);
46312
46370
  },
46313
46371
  khrMaterialsTransmission (KHR_materials_transmission, materialNode)
@@ -46323,6 +46381,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46323
46381
 
46324
46382
  extension .setup ();
46325
46383
 
46384
+ KHR_materials_transmission .pointers = [extension];
46385
+
46326
46386
  materialNode ._extensions .push (extension);
46327
46387
  },
46328
46388
  khrMaterialsVolumeObject (KHR_materials_volume, materialNode)
@@ -46341,6 +46401,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46341
46401
 
46342
46402
  extension .setup ();
46343
46403
 
46404
+ KHR_materials_volume .pointers = [extension];
46405
+
46344
46406
  materialNode ._extensions .push (extension);
46345
46407
  },
46346
46408
  khrMaterialsUnlitObject (KHR_materials_unlit, materialNode)
@@ -46359,6 +46421,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46359
46421
  unlitMaterialNode ._transparency = materialNode ._transparency;
46360
46422
 
46361
46423
  unlitMaterialNode .setup ();
46424
+ this .addAnimationPointerAlias (unlitMaterialNode, "baseColor", "emissiveColor");
46362
46425
 
46363
46426
  materialNode .dispose ();
46364
46427
 
@@ -46397,7 +46460,18 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46397
46460
  const existing = this .textureTransformNodes .find (node => this .texCoordOfNode .get (node) === texCoord && node ._matrix .getValue () .equals (matrix));
46398
46461
 
46399
46462
  if (existing)
46463
+ {
46464
+ Object .defineProperty (KHR_texture_transform, "pointers",
46465
+ {
46466
+ get: () =>
46467
+ {
46468
+ return this .texCoordExtensionOfNode .get (existing);
46469
+ },
46470
+ configurable: true,
46471
+ });
46472
+
46400
46473
  return existing ._mapping .getValue ();
46474
+ }
46401
46475
 
46402
46476
  // Create new TextureTransformMatrix3D.
46403
46477
 
@@ -46414,6 +46488,54 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46414
46488
  this .textureTransformNodes .push (textureTransformNode);
46415
46489
  this .texCoordMappings .set (mapping, texCoord);
46416
46490
  this .texCoordOfNode .set (textureTransformNode, texCoord);
46491
+ this .texCoordExtensionOfNode .set (textureTransformNode, KHR_texture_transform);
46492
+
46493
+ Object .defineProperty (KHR_texture_transform, "pointers",
46494
+ {
46495
+ get: () =>
46496
+ {
46497
+ const scriptNode = scene .createNode ("Script", false);
46498
+
46499
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "translation", new x_ite_Fields .SFVec2f ());
46500
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "rotation", new x_ite_Fields .SFFloat ());
46501
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "scale", new x_ite_Fields .SFVec2f (1, 1));
46502
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .SFMatrix4f ());
46503
+
46504
+ scriptNode ._url = [/* js */ `ecmascript:
46505
+
46506
+ const
46507
+ flip = new SFMatrix3f (1, 0, 0, 0, -1, 0, 0, 1, 1),
46508
+ matrix = new SFMatrix3f ();
46509
+
46510
+ function eventsProcessed ()
46511
+ {
46512
+ matrix .setTransform (translation, -rotation, scale);
46513
+
46514
+ const m = flip .multLeft (matrix);
46515
+
46516
+ value_changed [0] = m [0];
46517
+ value_changed [1] = m [1];
46518
+ value_changed [4] = m [3];
46519
+ value_changed [5] = m [4];
46520
+ value_changed [12] = m [6];
46521
+ value_changed [13] = m [7];
46522
+ }
46523
+ `];
46524
+
46525
+ scriptNode .setup ();
46526
+
46527
+ scene .addNamedNode (scene .getUniqueName ("CombineTextureMatrixScript"), scriptNode);
46528
+ scene .addRoute (scriptNode, "value_changed", textureTransformNode, "set_matrix");
46529
+
46530
+ this .addAnimationPointerAlias (scriptNode, "offset", "translation");
46531
+ this .animationScripts .push (scriptNode);
46532
+
46533
+ Object .defineProperty (KHR_texture_transform, "pointers", { value: [scriptNode] });
46534
+
46535
+ return [scriptNode];
46536
+ },
46537
+ configurable: true,
46538
+ });
46417
46539
 
46418
46540
  return mapping;
46419
46541
  },
@@ -46818,6 +46940,41 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46818
46940
 
46819
46941
  viewpointNode .setup ();
46820
46942
 
46943
+ this .addAnimationPointerAlias (viewpointNode, "znear", "nearDistance");
46944
+ this .addAnimationPointerAlias (viewpointNode, "zfar", "farDistance");
46945
+
46946
+ Object .defineProperty (camera, "pointers",
46947
+ {
46948
+ get: () =>
46949
+ {
46950
+ const scriptNode = scene .createNode ("Script", false);
46951
+
46952
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "xmag", new x_ite_Fields .SFFloat (1));
46953
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "ymag", new x_ite_Fields .SFFloat (1));
46954
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .MFFloat ());
46955
+
46956
+ scriptNode ._url = [/* js */ `ecmascript:
46957
+
46958
+ function eventsProcessed ()
46959
+ {
46960
+ value_changed = new MFFloat (-xmag, -ymag, xmag, ymag);
46961
+ }
46962
+ `];
46963
+
46964
+ scriptNode .setup ();
46965
+
46966
+ scene .addNamedNode (scene .getUniqueName ("CombineFieldOfViewScript"), scriptNode);
46967
+ scene .addRoute (scriptNode, "value_changed", viewpointNode, "set_fieldOfView");
46968
+
46969
+ this .animationScripts .push (scriptNode);
46970
+
46971
+ Object .defineProperty (camera, "pointers", { value: [viewpointNode, scriptNode] });
46972
+
46973
+ return [viewpointNode, scriptNode];
46974
+ },
46975
+ configurable: true,
46976
+ });
46977
+
46821
46978
  return viewpointNode;
46822
46979
  },
46823
46980
  perspectiveCamera (camera)
@@ -46830,7 +46987,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46830
46987
  viewpointNode = scene .createNode ("Viewpoint", false);
46831
46988
 
46832
46989
  if (typeof camera .yfov === "number")
46833
- viewpointNode ._fieldOfView = camera .yfov
46990
+ viewpointNode ._fieldOfView = camera .yfov;
46834
46991
 
46835
46992
  if (typeof camera .znear === "number")
46836
46993
  viewpointNode ._nearDistance = camera .znear;
@@ -46840,6 +46997,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46840
46997
 
46841
46998
  viewpointNode .setup ();
46842
46999
 
47000
+ this .addAnimationPointerAlias (viewpointNode, "yfov", "fieldOfView");
47001
+ this .addAnimationPointerAlias (viewpointNode, "znear", "nearDistance");
47002
+ this .addAnimationPointerAlias (viewpointNode, "zfar", "farDistance");
47003
+
47004
+ camera .pointers = [viewpointNode];
47005
+
46843
47006
  return viewpointNode;
46844
47007
  },
46845
47008
  nodesArray (nodes)
@@ -46880,13 +47043,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46880
47043
  {
46881
47044
  // Skins can be cloned.
46882
47045
 
46883
- if (!skin .humanoidNode)
46884
- skin .humanoidNode = scene .createNode ("HAnimHumanoid", false);
46885
-
46886
- node .humanoidNode = skin .humanoidNode;
47046
+ skin .humanoidNode ??= scene .createNode ("HAnimHumanoid", false);
47047
+ node .humanoidNode = skin .humanoidNode;
46887
47048
  }
46888
47049
 
46889
47050
  node .childNode = node .humanoidNode ?? node .transformNode;
47051
+ node .pointers = [node .childNode];
46890
47052
 
46891
47053
  return node;
46892
47054
  },
@@ -47127,7 +47289,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47127
47289
 
47128
47290
  return matrices;
47129
47291
  },
47130
- scenesArray (scenes, sceneNumber = 0)
47292
+ scenesArray (glTF, scenes, sceneNumber = 0)
47131
47293
  {
47132
47294
  if (!(scenes instanceof Array))
47133
47295
  return;
@@ -47168,6 +47330,10 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47168
47330
 
47169
47331
  switchNode .setup ();
47170
47332
 
47333
+ this .addAnimationPointerAlias (switchNode, "scene", "whichChoice");
47334
+
47335
+ glTF .pointers = [switchNode];
47336
+
47171
47337
  scene .getRootNodes () .push (switchNode);
47172
47338
  return;
47173
47339
  }
@@ -47313,6 +47479,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47313
47479
  if (!(samplers instanceof Array))
47314
47480
  return [ ];
47315
47481
 
47482
+ // Determine cycleInterval.
47483
+
47316
47484
  const cycleInterval = samplers
47317
47485
  .map (sampler => this .accessors [sampler .input])
47318
47486
  .filter (input => input ?.array .length)
@@ -47320,8 +47488,25 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47320
47488
 
47321
47489
  timeSensorNode ._cycleInterval = cycleInterval;
47322
47490
 
47323
- return channels
47491
+ // Get interpolators.
47492
+
47493
+ channels = channels
47324
47494
  .flatMap (channel => this .animationChannelObject (channel, samplers, timeSensorNode));
47495
+
47496
+ // Insert Script nodes after last interpolator.
47497
+
47498
+ for (const scriptNode of this .animationScripts)
47499
+ {
47500
+ const index = channels .findLastIndex (node => node .getFields ()
47501
+ .some (field => Array .from (field .getOutputRoutes ())
47502
+ .some (route => route .getDestinationNode () === scriptNode)));
47503
+
47504
+ channels .splice (index + 1, 0, scriptNode);
47505
+ }
47506
+
47507
+ this .animationScripts .length = 0;
47508
+
47509
+ return channels;
47325
47510
  },
47326
47511
  animationChannelObject (channel, samplers, timeSensorNode)
47327
47512
  {
@@ -47361,6 +47546,30 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47361
47546
 
47362
47547
  return this .createInterpolator (timeSensorNode, node, target, sampler .interpolation, input .array, output, timeSensorNode ._cycleInterval .getValue ());
47363
47548
  },
47549
+ cleanupAnimationScripts ()
47550
+ {
47551
+ // It can happen, that some scripts are not used, so let us remove them.
47552
+
47553
+ const
47554
+ scene = this .getScene (),
47555
+ scriptNodes = Array .from (scene .getNamedNodes (), node => node .getValue ())
47556
+ .filter (node => node .getType () .at (-1) === Base_X3DConstants .Script);
47557
+
47558
+ for (const scriptNode of scriptNodes)
47559
+ {
47560
+ if (scriptNode .getFields () .every (field => !field .getInputRoutes () .size))
47561
+ {
47562
+ scriptNode .dispose ();
47563
+ continue;
47564
+ }
47565
+
47566
+ if (scriptNode .getFields () .every (field => !field .getOutputRoutes () .size))
47567
+ {
47568
+ scriptNode .dispose ();
47569
+ continue;
47570
+ }
47571
+ }
47572
+ },
47364
47573
  createShape (primitive, weights, skin, EXT_mesh_gpu_instancing)
47365
47574
  {
47366
47575
  const
@@ -48146,38 +48355,19 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48146
48355
 
48147
48356
  switch (target .path)
48148
48357
  {
48149
- case "translation":
48358
+ case "pointer":
48150
48359
  {
48151
- const interpolatorNode = this .createPositionInterpolator (interpolation, times, keyValues .array, cycleInterval);
48152
-
48153
- scene .addNamedNode (scene .getUniqueName ("TranslationInterpolator"), interpolatorNode);
48360
+ const [node, field] = this .getAnimationPointer (target .extensions ?.KHR_animation_pointer ?.pointer);
48154
48361
 
48155
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48156
- scene .addRoute (interpolatorNode, "value_changed", node, "set_translation");
48157
-
48158
- return interpolatorNode;
48362
+ return this .createAnimationPointerInterpolator (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval);
48159
48363
  }
48364
+ case "translation":
48160
48365
  case "rotation":
48161
- {
48162
- const interpolatorNode = this .createOrientationInterpolator (interpolation, times, keyValues .array, cycleInterval);
48163
-
48164
- scene .addNamedNode (scene .getUniqueName ("RotationInterpolator"), interpolatorNode);
48165
-
48166
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48167
- scene .addRoute (interpolatorNode, "value_changed", node, "set_rotation");
48168
-
48169
- return interpolatorNode;
48170
- }
48171
48366
  case "scale":
48172
48367
  {
48173
- const interpolatorNode = this .createPositionInterpolator (interpolation, times, keyValues .array, cycleInterval);
48174
-
48175
- scene .addNamedNode (scene .getUniqueName ("ScaleInterpolator"), interpolatorNode);
48368
+ const field = node .getField (target .path);
48176
48369
 
48177
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48178
- scene .addRoute (interpolatorNode, "value_changed", node, "set_scale");
48179
-
48180
- return interpolatorNode;
48370
+ return this .createAnimationPointerInterpolator (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval);
48181
48371
  }
48182
48372
  case "weights":
48183
48373
  {
@@ -48204,7 +48394,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48204
48394
  interpolatorNodes .push (coordinateInterpolatorNode);
48205
48395
 
48206
48396
  scene .addRoute (timeSensorNode, "fraction_changed", coordinateInterpolatorNode, "set_fraction");
48207
- scene .addRoute (coordinateInterpolatorNode, "value_changed", geometryNode ._coord, "set_point");
48397
+ scene .addRoute (coordinateInterpolatorNode, "value_changed", geometryNode ._coord, "point");
48208
48398
  }
48209
48399
 
48210
48400
  const normalInterpolatorNode = this .createArrayInterpolator ("NormalInterpolator", interpolation, times, keyValues .array, cycleInterval, targets, attributes, "NORMAL");
@@ -48214,63 +48404,252 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48214
48404
  interpolatorNodes .push (normalInterpolatorNode);
48215
48405
 
48216
48406
  scene .addRoute (timeSensorNode, "fraction_changed", normalInterpolatorNode, "set_fraction");
48217
- scene .addRoute (normalInterpolatorNode, "value_changed", geometryNode ._normal, "set_vector");
48407
+ scene .addRoute (normalInterpolatorNode, "value_changed", geometryNode ._normal, "vector");
48218
48408
  }
48219
48409
  }
48220
48410
 
48221
48411
  return interpolatorNodes;
48222
48412
  }
48223
- case "pointer":
48413
+ default:
48224
48414
  {
48225
- // const
48226
- // pointer = target .extensions ?.KHR_animation_pointer ?.pointer ?? "",
48227
- // path = pointer .split ("/") .filter (p => p)
48228
- // name = path .pop ();
48229
-
48230
- // let glTF = this .input;
48415
+ return [ ];
48416
+ }
48417
+ }
48418
+ },
48419
+ createAnimationPointerInterpolator: (function ()
48420
+ {
48421
+ const interpolators = new Map ([
48422
+ [Base_X3DConstants .SFBool, { typeName: "BooleanSequencer" }],
48423
+ [Base_X3DConstants .SFInt32, { typeName: "IntegerSequencer" }],
48424
+ [Base_X3DConstants .SFFloat, { typeName: "ScalarInterpolator", components: 1 }],
48425
+ [Base_X3DConstants .SFVec2f, { typeName: "PositionInterpolator2D", components: 2 }],
48426
+ [Base_X3DConstants .SFVec3f, { typeName: "PositionInterpolator", components: 3 }],
48427
+ ]);
48231
48428
 
48232
- // for (const property of path)
48233
- // glTF = glTF [property]
48429
+ return function (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval)
48430
+ {
48431
+ if (!(node && field))
48432
+ return [ ];
48234
48433
 
48235
- // console .log (glTF)
48434
+ const scene = this .getScene ();
48236
48435
 
48237
- return [ ];
48238
- }
48239
- default:
48436
+ switch (field .getType ())
48240
48437
  {
48241
- return [ ];
48438
+ case Base_X3DConstants .SFColor:
48439
+ {
48440
+ const interpolatorNodes = [ ];
48441
+
48442
+ switch ((keyValues .array .length / times .length) % 3)
48443
+ {
48444
+ case 0: // Color3 pointer
48445
+ {
48446
+ var colors = keyValues .array;
48447
+ break;
48448
+ }
48449
+ default: // Color4 pointer
48450
+ {
48451
+ var
48452
+ colors = keyValues .array .filter ((_, i) => i % 4 < 3),
48453
+ transparencies = keyValues .array .filter ((_, i) => i % 4 === 3);
48454
+
48455
+ transparencies = transparencies .every (value => value >= 1)
48456
+ ? undefined
48457
+ : transparencies .map (value => 1 - value);
48458
+
48459
+ break;
48460
+ }
48461
+ }
48462
+
48463
+ const interpolatorNode = this .createNamedInterpolator ("ColorInterpolator", 3, interpolation, times, colors, cycleInterval);
48464
+
48465
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48466
+
48467
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48468
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48469
+
48470
+ interpolatorNodes .push (interpolatorNode);
48471
+
48472
+ // These are currently the only two affected fields, which are SFColor but pointer is Color4.
48473
+ if (field .getName () .match (/^(?:baseColor|emissiveColor)$/) && transparencies)
48474
+ {
48475
+ const interpolatorNode = this .createNamedInterpolator ("ScalarInterpolator", 1, interpolation, times, transparencies, cycleInterval);
48476
+
48477
+ scene .addNamedNode (scene .getUniqueName ("TransparencyInterpolator"), interpolatorNode);
48478
+
48479
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48480
+ scene .addRoute (interpolatorNode, "value_changed", node, "transparency");
48481
+
48482
+ interpolatorNodes .push (interpolatorNode);
48483
+ }
48484
+
48485
+ return interpolatorNodes;
48486
+ }
48487
+ case Base_X3DConstants .SFColorRGBA:
48488
+ {
48489
+ const interpolatorNodes = [ ];
48490
+
48491
+ var
48492
+ colors = keyValues .array .filter ((_, i) => i % 4 < 3),
48493
+ transparencies = keyValues .array .filter ((_, i) => i % 4 === 3);
48494
+
48495
+ transparencies = transparencies .every (value => value >= 1)
48496
+ ? undefined
48497
+ : transparencies .map (value => 1 - value);
48498
+
48499
+ // Script
48500
+
48501
+ const scriptNode = scene .createNode ("Script", false);
48502
+
48503
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "color", new x_ite_Fields .SFColor (1, 1, 1));
48504
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "alpha" , new x_ite_Fields .SFFloat (1));
48505
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .SFColorRGBA ());
48506
+
48507
+ scriptNode ._url = [/* js */ `ecmascript:
48508
+
48509
+ function eventsProcessed ()
48510
+ {
48511
+ value_changed = new SFColorRGBA (... color, alpha);
48512
+ }
48513
+ `];
48514
+
48515
+ scriptNode .setup ();
48516
+
48517
+ scene .addNamedNode (scene .getUniqueName ("CombineColorRGBAScript"), scriptNode);
48518
+ scene .addRoute (scriptNode, "value_changed", node, field .getName ());
48519
+
48520
+ // ColorInterpolator
48521
+
48522
+ const interpolatorNode = this .createNamedInterpolator ("ColorInterpolator", 3, interpolation, times, colors, cycleInterval);
48523
+
48524
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48525
+
48526
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48527
+ scene .addRoute (interpolatorNode, "value_changed", scriptNode, "color");
48528
+
48529
+ interpolatorNodes .push (interpolatorNode);
48530
+
48531
+ // AlphaInterpolator
48532
+
48533
+ if (transparencies)
48534
+ {
48535
+ const interpolatorNode = this .createNamedInterpolator ("ScalarInterpolator", 1, interpolation, times, transparencies, cycleInterval);
48536
+
48537
+ scene .addNamedNode (scene .getUniqueName ("AlphaInterpolator"), interpolatorNode);
48538
+
48539
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48540
+ scene .addRoute (interpolatorNode, "value_changed", scriptNode, "alpha");
48541
+
48542
+ interpolatorNodes .push (interpolatorNode);
48543
+ }
48544
+
48545
+ interpolatorNodes .push (scriptNode);
48546
+
48547
+ return interpolatorNodes;
48548
+ }
48549
+ case Base_X3DConstants .SFRotation:
48550
+ {
48551
+ const interpolatorNode = this .createOrientationInterpolator (interpolation, times, keyValues .array, cycleInterval);
48552
+
48553
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48554
+
48555
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48556
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48557
+
48558
+ return interpolatorNode;
48559
+ }
48560
+ case Base_X3DConstants .SFBool:
48561
+ case Base_X3DConstants .SFInt32:
48562
+ case Base_X3DConstants .SFFloat:
48563
+ case Base_X3DConstants .SFVec2f:
48564
+ case Base_X3DConstants .SFVec3f:
48565
+ {
48566
+ const
48567
+ { typeName, components} = interpolators .get (field .getType ()),
48568
+ suffix = typeName .replace (/^.*?(Sequencer|Interpolator).*?$/, "$1");
48569
+
48570
+ const interpolatorNode = this .createNamedInterpolator (typeName, components, components ? interpolation : "LINEAR", times, keyValues .array, cycleInterval);
48571
+
48572
+ scene .addNamedNode (scene .getUniqueName (GLTF2Parser_$.toUpperCaseFirst (field .getName ()) + suffix), interpolatorNode);
48573
+
48574
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48575
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48576
+
48577
+ return interpolatorNode;
48578
+ }
48579
+ default:
48580
+ {
48581
+ return [ ];
48582
+ }
48242
48583
  }
48243
- }
48584
+ };
48585
+ })(),
48586
+ getAnimationPointer (pointer = "")
48587
+ {
48588
+ const
48589
+ path = pointer .split ("/") .filter (p => p),
48590
+ field = path .pop () .replace (/(?:Factor$)/, "");
48591
+
48592
+ let glTF = this .input;
48593
+
48594
+ for (const property of path)
48595
+ glTF = glTF ?.[property];
48596
+
48597
+ return glTF ?.pointers
48598
+ ?.map (node => [node, GLTF2Parser_$.try (() => node ?.getField (this .getAnimationPointerAlias (node, field) ?? field))])
48599
+ ?.find (([node, field]) => field)
48600
+ ?? [ ];
48244
48601
  },
48245
- createPositionInterpolator (interpolation, times, keyValues, cycleInterval)
48602
+ addAnimationPointerAlias (node, field, alias)
48246
48603
  {
48247
- const scene = this .getScene ();
48604
+ const key = `${node .getTypeName ()}.${field}`;
48605
+
48606
+ this .pointerAliases .set (key, alias);
48607
+ },
48608
+ getAnimationPointerAlias (node, field)
48609
+ {
48610
+ const key = `${node .getTypeName ()}.${field}`;
48611
+
48612
+ return this .pointerAliases .get (key);
48613
+ },
48614
+ createNamedInterpolator (typeName, components, interpolation, times, keyValues, cycleInterval)
48615
+ {
48616
+ const
48617
+ scene = this .getScene (),
48618
+ interpolatorNode = scene .createNode (typeName, false);
48248
48619
 
48249
48620
  switch (interpolation)
48250
48621
  {
48251
48622
  case "STEP":
48252
48623
  {
48253
- const interpolatorNode = scene .createNode ("PositionInterpolator", false);
48624
+ const
48625
+ key = [ ],
48626
+ keyValue = [ ];
48254
48627
 
48255
48628
  // Key
48256
48629
 
48257
- interpolatorNode ._key .push (times [0] / cycleInterval);
48630
+ key .push (times [0] / cycleInterval);
48258
48631
 
48259
48632
  for (let i = 1, length = times .length; i < length; ++ i)
48260
- interpolatorNode ._key .push (times [i] / cycleInterval, times [i] / cycleInterval);
48633
+ key .push (times [i] / cycleInterval, times [i] / cycleInterval);
48261
48634
 
48262
48635
  // KeyValue
48263
48636
 
48264
- interpolatorNode ._keyValue .push (new Numbers_Vector3 (keyValues [0], keyValues [1], keyValues [2]));
48637
+ const components2 = components * 2;
48265
48638
 
48266
- for (let i = 0, length = keyValues .length - 3; i < length; i += 3)
48639
+ for (let c = 0; c < components; ++ c)
48640
+ keyValue .push (keyValues [c]);
48641
+
48642
+ for (let i = 0, length = keyValues .length - components; i < length; i += components)
48267
48643
  {
48268
- interpolatorNode ._keyValue .push (new Numbers_Vector3 (keyValues [i + 0], keyValues [i + 1], keyValues [i + 2]),
48269
- new Numbers_Vector3 (keyValues [i + 3], keyValues [i + 4], keyValues [i + 5]));
48644
+ for (let c = 0; c < components2; ++ c)
48645
+ keyValue .push (keyValues [i + c]);
48270
48646
  }
48271
48647
 
48272
48648
  // Finish
48273
48649
 
48650
+ interpolatorNode ._key = key;
48651
+ interpolatorNode ._keyValue = keyValue;
48652
+
48274
48653
  interpolatorNode .setup ();
48275
48654
 
48276
48655
  return interpolatorNode;
@@ -48278,8 +48657,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48278
48657
  default:
48279
48658
  case "LINEAR":
48280
48659
  {
48281
- const interpolatorNode = scene .createNode ("PositionInterpolator", false);
48282
-
48283
48660
  interpolatorNode ._key = times .map (t => t / cycleInterval);
48284
48661
  interpolatorNode ._keyValue = keyValues;
48285
48662
 
@@ -48290,14 +48667,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48290
48667
  case "CUBICSPLINE":
48291
48668
  {
48292
48669
  const
48293
- interpolatorNode = scene .createNode ("PositionInterpolator", false),
48294
- vectors = [ ];
48670
+ key = [ ],
48671
+ keyValue = [ ],
48672
+ vectors = [ ],
48673
+ Vector = [Numbers_Vector2, Numbers_Vector2, Numbers_Vector3] [components - 1];
48295
48674
 
48296
- for (let i = 0, length = keyValues .length; i < length; i += 3)
48675
+ for (let i = 0, length = keyValues .length; i < length; i += components)
48297
48676
  {
48298
- vectors .push (new Numbers_Vector3 (keyValues [i + 0],
48299
- keyValues [i + 1],
48300
- keyValues [i + 2]));
48677
+ vectors .push (new Vector (... keyValues .subarray (i, i + components)));
48301
48678
  }
48302
48679
 
48303
48680
  const
@@ -48306,10 +48683,15 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48306
48683
 
48307
48684
  for (const t of samples)
48308
48685
  {
48309
- interpolatorNode ._key .push (t / cycleInterval);
48310
- interpolatorNode ._keyValue .push (this .cubicSplineVector (t, times, vectors));
48686
+ key .push (t / cycleInterval);
48687
+ keyValue .push (... this .cubicSplineVector (t, times, vectors));
48311
48688
  }
48312
48689
 
48690
+ // Finish
48691
+
48692
+ interpolatorNode ._key = key;
48693
+ interpolatorNode ._keyValue = components === 1 ? keyValue .filter ((_, i) => i % 2 < 1) : keyValue;
48694
+
48313
48695
  interpolatorNode .setup ();
48314
48696
 
48315
48697
  return interpolatorNode;
@@ -48318,14 +48700,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48318
48700
  },
48319
48701
  createOrientationInterpolator (interpolation, times, keyValues, cycleInterval)
48320
48702
  {
48321
- const scene = this .getScene ();
48703
+ const
48704
+ scene = this .getScene (),
48705
+ interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48322
48706
 
48323
48707
  switch (interpolation)
48324
48708
  {
48325
48709
  case "STEP":
48326
48710
  {
48327
- const interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48328
-
48329
48711
  // Key
48330
48712
 
48331
48713
  interpolatorNode ._key .push (times [0] / cycleInterval);
@@ -48361,8 +48743,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48361
48743
  default:
48362
48744
  case "LINEAR":
48363
48745
  {
48364
- const interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48365
-
48366
48746
  interpolatorNode ._key = times .map (t => t / cycleInterval);
48367
48747
 
48368
48748
  for (let i = 0, length = keyValues .length; i < length; i += 4)
@@ -48379,9 +48759,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48379
48759
  }
48380
48760
  case "CUBICSPLINE":
48381
48761
  {
48382
- const
48383
- interpolatorNode = scene .createNode ("OrientationInterpolator", false),
48384
- quaternions = [ ];
48762
+ const quaternions = [ ];
48385
48763
 
48386
48764
  for (let i = 0, length = keyValues .length; i < length; i += 4)
48387
48765
  {
@@ -48411,19 +48789,19 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48411
48789
  },
48412
48790
  createArrayInterpolator (typeName, interpolation, times, weights, cycleInterval, targets, accessors, key)
48413
48791
  {
48414
- const
48415
- scene = this .getScene (),
48416
- accessor = accessors [key];
48792
+ const accessor = accessors [key];
48417
48793
 
48418
48794
  if (!accessor)
48419
48795
  return null;
48420
48796
 
48797
+ const
48798
+ scene = this .getScene (),
48799
+ interpolatorNode = scene .createNode (typeName, false);
48800
+
48421
48801
  switch (interpolation)
48422
48802
  {
48423
48803
  case "STEP":
48424
48804
  {
48425
- const interpolatorNode = scene .createNode (typeName, false);
48426
-
48427
48805
  // Key
48428
48806
 
48429
48807
  interpolatorNode ._key .push (times [0] / cycleInterval);
@@ -48460,8 +48838,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48460
48838
  default:
48461
48839
  case "LINEAR":
48462
48840
  {
48463
- const interpolatorNode = scene .createNode (typeName, false);
48464
-
48465
48841
  // Key
48466
48842
 
48467
48843
  interpolatorNode ._key = times .map (t => t / cycleInterval);
@@ -48484,8 +48860,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48484
48860
  }
48485
48861
  case "CUBICSPLINE":
48486
48862
  {
48487
- const interpolatorNode = scene .createNode (typeName, false);
48488
-
48489
48863
  // Key
48490
48864
 
48491
48865
  const
@@ -48624,7 +48998,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
48624
48998
 
48625
48999
  /* harmony default export */ const Parser_GLTF2Parser = (x_ite_Namespace .add ("GLTF2Parser", GLTF2Parser_default_));
48626
49000
  ;// ./src/x_ite/Parser/GLB2Parser.js
48627
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(445);
49001
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(427);
48628
49002
  /*******************************************************************************
48629
49003
  *
48630
49004
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -48775,7 +49149,7 @@ const GLB2Parser_default_ = GLB2Parser;
48775
49149
 
48776
49150
  /* harmony default export */ const Parser_GLB2Parser = (x_ite_Namespace .add ("GLB2Parser", GLB2Parser_default_));
48777
49151
  ;// ./src/x_ite/Parser/OBJParser.js
48778
- /* provided dependency */ var OBJParser_$ = __webpack_require__(445);
49152
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(427);
48779
49153
  /*******************************************************************************
48780
49154
  *
48781
49155
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -51340,7 +51714,7 @@ Object .assign (Complex .prototype,
51340
51714
  return this .real === complex .real &&
51341
51715
  this .imag === complex .imag;
51342
51716
  },
51343
- set (real, imag)
51717
+ set (real = 0, imag = 0)
51344
51718
  {
51345
51719
  this .real = real;
51346
51720
  this .imag = imag;
@@ -51504,10 +51878,6 @@ Object .assign (Complex,
51504
51878
  {
51505
51879
  return Object .create (Complex .prototype) .setPolar (magnitude, angle);
51506
51880
  },
51507
- multiply (lhs, rhs)
51508
- {
51509
- return lhs .copy () .multiply (rhs);
51510
- },
51511
51881
  });
51512
51882
 
51513
51883
  const Complex_default_ = Complex;
@@ -52146,8 +52516,8 @@ const MatrixStack_default_ = MatrixStack;
52146
52516
 
52147
52517
  /* harmony default export */ const Utility_MatrixStack = (x_ite_Namespace .add ("MatrixStack", MatrixStack_default_));
52148
52518
  ;// ./src/x_ite/Parser/SVGParser.js
52149
- /* provided dependency */ var SVGParser_$ = __webpack_require__(445);
52150
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(294);
52519
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(427);
52520
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(800);
52151
52521
  /*******************************************************************************
52152
52522
  *
52153
52523
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -54926,7 +55296,7 @@ const SVGParser_default_ = SVGParser;
54926
55296
 
54927
55297
  /* harmony default export */ const Parser_SVGParser = (x_ite_Namespace .add ("SVGParser", SVGParser_default_));
54928
55298
  ;// ./src/x_ite/Parser/GoldenGate.js
54929
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(445);
55299
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(427);
54930
55300
  /*******************************************************************************
54931
55301
  *
54932
55302
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -62945,7 +63315,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62945
63315
 
62946
63316
  /* harmony default export */ const Texturing_X3DTexture2DNode = (x_ite_Namespace .add ("X3DTexture2DNode", X3DTexture2DNode_default_));
62947
63317
  ;// ./src/x_ite/Components/Texturing/ImageTexture.js
62948
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(445);
63318
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(427);
62949
63319
  /*******************************************************************************
62950
63320
  *
62951
63321
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -63085,7 +63455,7 @@ Object .assign (Object .setPrototypeOf (ImageTexture .prototype, Texturing_X3DTe
63085
63455
  setError (event)
63086
63456
  {
63087
63457
  if (this .URL .protocol !== "data:")
63088
- console .warn (`Error loading image '${decodeURI (this .URL .href)}'`, event .type);
63458
+ console .warn (`Error loading image '${decodeURI (this .URL .href)}:'`, event .type);
63089
63459
 
63090
63460
  this .loadNext ();
63091
63461
  },
@@ -66371,7 +66741,7 @@ const X3DWorld_default_ = X3DWorld;
66371
66741
 
66372
66742
  /* harmony default export */ const Execution_X3DWorld = (x_ite_Namespace .add ("X3DWorld", X3DWorld_default_));
66373
66743
  ;// ./src/x_ite/InputOutput/FileLoader.js
66374
- /* provided dependency */ var FileLoader_$ = __webpack_require__(445);
66744
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(427);
66375
66745
  /*******************************************************************************
66376
66746
  *
66377
66747
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67335,7 +67705,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
67335
67705
 
67336
67706
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (x_ite_Namespace .add ("ProtoDeclarationArray", ProtoDeclarationArray_default_));
67337
67707
  ;// ./src/x_ite/Routing/X3DRoute.js
67338
- /* provided dependency */ var X3DRoute_$ = __webpack_require__(445);
67708
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(427);
67339
67709
  /*******************************************************************************
67340
67710
  *
67341
67711
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -74991,32 +75361,36 @@ Object .assign (Object .setPrototypeOf (Extrusion .prototype, Rendering_X3DGeome
74991
75361
  return function ()
74992
75362
  {
74993
75363
  const
74994
- crossSection = this ._crossSection,
74995
- orientation = this ._orientation,
74996
- scale = this ._scale,
74997
- spine = this ._spine,
74998
- points = [ ];
74999
-
75000
- // calculate SCP rotations
75364
+ crossSection = this ._crossSection,
75365
+ orientation = this ._orientation,
75366
+ scale = this ._scale,
75367
+ spine = this ._spine,
75368
+ numCrossSection = crossSection .length,
75369
+ numOrientations = orientation .length,
75370
+ numScales = scale .length,
75371
+ numSpines = spine .length,
75372
+ points = [ ];
75373
+
75374
+ // Calculate SCP rotations.
75001
75375
 
75002
75376
  const rotations = this .createRotations ();
75003
75377
 
75004
- // calculate vertices.
75378
+ // Calculate vertices.
75005
75379
 
75006
- for (let i = 0, length = spine .length; i < length; ++ i)
75380
+ for (let i = 0; i < numSpines; ++ i)
75007
75381
  {
75008
75382
  const matrix = rotations [i];
75009
75383
 
75010
- if (orientation .length)
75011
- matrix .rotate (orientation [Math .min (i, orientation .length - 1)] .getValue ());
75384
+ if (numOrientations)
75385
+ matrix .rotate (orientation [Math .min (i, numOrientations - 1)] .getValue ());
75012
75386
 
75013
- if (scale .length)
75387
+ if (numScales)
75014
75388
  {
75015
- const s = scale [Math .min (i, scale .length - 1)] .getValue ();
75389
+ const s = scale [Math .min (i, numScales - 1)] .getValue ();
75016
75390
  matrix .scale (scale3 .set (s .x, 1, s .y));
75017
75391
  }
75018
75392
 
75019
- for (let cs = 0, csLength = crossSection .length; cs < csLength; ++ cs)
75393
+ for (let cs = 0; cs < numCrossSection; ++ cs)
75020
75394
  {
75021
75395
  const vector = crossSection [cs] .getValue ();
75022
75396
  points .push (matrix .multVecMatrix (new Numbers_Vector3 (vector .x, 0, vector .y)));
@@ -91011,7 +91385,7 @@ mediump samplerCube textureCube;
91011
91385
 
91012
91386
  /* harmony default export */ const MaterialTextures = (x_ite_Namespace .add ("MaterialTextures", MaterialTextures_default_));
91013
91387
  ;// ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
91014
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(445);
91388
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(427);
91015
91389
  /*******************************************************************************
91016
91390
  *
91017
91391
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -94389,20 +94763,20 @@ NormalInfo info;info.ng=ng;
94389
94763
  #if defined(X3D_NORMAL_TEXTURE)
94390
94764
  #if __VERSION__==100
94391
94765
  #if defined(X3D_NORMAL_TEXTURE_2D)
94392
- info.ntex=texture2D(x3d_NormalTexture.texture2D,UV.st).rgb;
94766
+ vec3 ntex=texture2D(x3d_NormalTexture.texture2D,UV.st).rgb;
94393
94767
  #elif defined(X3D_NORMAL_TEXTURE_CUBE)
94394
- info.ntex=textureCube(x3d_NormalTexture.textureCube,UV).rgb;
94768
+ vec3 ntex=textureCube(x3d_NormalTexture.textureCube,UV).rgb;
94395
94769
  #endif
94396
94770
  #else
94397
94771
  #if defined(X3D_NORMAL_TEXTURE_2D)
94398
- info.ntex=texture(x3d_NormalTexture.texture2D,UV.st).rgb;
94772
+ vec3 ntex=texture(x3d_NormalTexture.texture2D,UV.st).rgb;
94399
94773
  #elif defined(X3D_NORMAL_TEXTURE_3D)
94400
- info.ntex=texture(x3d_NormalTexture.texture3D,UV).rgb;
94774
+ vec3 ntex=texture(x3d_NormalTexture.texture3D,UV).rgb;
94401
94775
  #elif defined(X3D_NORMAL_TEXTURE_CUBE)
94402
- info.ntex=texture(x3d_NormalTexture.textureCube,UV).rgb;
94776
+ vec3 ntex=texture(x3d_NormalTexture.textureCube,UV).rgb;
94403
94777
  #endif
94404
94778
  #endif
94405
- 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);
94779
+ 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);
94406
94780
  #else
94407
94781
  info.n=ng;
94408
94782
  #endif
@@ -95954,7 +96328,7 @@ vec3 getPunctualRadianceClearCoat(const in vec3 clearcoatNormal,const in vec3 v,
95954
96328
  #endif
95955
96329
  #endif
95956
96330
  #if defined(X3D_TRANSMISSION_MATERIAL_EXT)
95957
- 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;}
96331
+ 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;}
95958
96332
  #endif
95959
96333
  `
95960
96334
  ;
@@ -96308,7 +96682,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
96308
96682
 
96309
96683
  /* harmony default export */ const Shaders_ShaderCompiler = (x_ite_Namespace .add ("ShaderCompiler", ShaderCompiler_default_));
96310
96684
  ;// ./src/x_ite/Components/Shaders/ShaderPart.js
96311
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(445);
96685
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(427);
96312
96686
  /*******************************************************************************
96313
96687
  *
96314
96688
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -96906,7 +97280,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
96906
97280
 
96907
97281
  /* harmony default export */ const Shape_X3DAppearanceNode = (x_ite_Namespace .add ("X3DAppearanceNode", X3DAppearanceNode_default_));
96908
97282
  ;// ./src/x_ite/Components/Shape/Appearance.js
96909
- /* provided dependency */ var Appearance_$ = __webpack_require__(445);
97283
+ /* provided dependency */ var Appearance_$ = __webpack_require__(427);
96910
97284
  /*******************************************************************************
96911
97285
  *
96912
97286
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -100677,8 +101051,6 @@ Object .assign (Object .setPrototypeOf (X3DSoundSourceNode .prototype, Sound_X3D
100677
101051
  {
100678
101052
  this .audioSource .gain .value = this ._gain .getValue ();
100679
101053
  },
100680
- set_pitch ()
100681
- { },
100682
101054
  set_loop ()
100683
101055
  {
100684
101056
  if (!this .mediaElement)
@@ -101029,6 +101401,8 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
101029
101401
  Sound_X3DSoundSourceNode .prototype .initialize .call (this);
101030
101402
  Networking_X3DUrlObject .prototype .initialize .call (this);
101031
101403
 
101404
+ this ._pitch .addInterest ("set_pitch__", this);
101405
+
101032
101406
  this .requestImmediateLoad () .catch (Function .prototype);
101033
101407
  },
101034
101408
  set_live__ ()
@@ -101036,6 +101410,13 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
101036
101410
  Sound_X3DSoundSourceNode .prototype .set_live__ .call (this);
101037
101411
  Networking_X3DUrlObject .prototype .set_live__ .call (this);
101038
101412
  },
101413
+ set_pitch__ ()
101414
+ {
101415
+ const media = this .getMediaElement ();
101416
+
101417
+ if (media)
101418
+ media .playbackRate = Math .max (this ._pitch .getValue (), 0);
101419
+ },
101039
101420
  unloadData ()
101040
101421
  {
101041
101422
  this .setMediaElement (null);
@@ -101075,6 +101456,8 @@ Object .assign (Object .setPrototypeOf (AudioClip .prototype, Sound_X3DSoundSour
101075
101456
  this ._duration_changed = media .duration;
101076
101457
 
101077
101458
  this .setMediaElement (media);
101459
+
101460
+ this .set_pitch__ ();
101078
101461
  },
101079
101462
  dispose ()
101080
101463
  {
@@ -105129,8 +105512,8 @@ const GifMedia_default_ = GifMedia;
105129
105512
 
105130
105513
  /* harmony default export */ const Texturing_GifMedia = (x_ite_Namespace .add ("GifMedia", GifMedia_default_));
105131
105514
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
105132
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(445);
105133
- /* provided dependency */ var SuperGif = __webpack_require__(782);
105515
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(427);
105516
+ /* provided dependency */ var SuperGif = __webpack_require__(388);
105134
105517
  /*******************************************************************************
105135
105518
  *
105136
105519
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105221,6 +105604,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
105221
105604
  Networking_X3DUrlObject .prototype .initialize .call (this);
105222
105605
 
105223
105606
  this ._speed .addInterest ("set_speed__", this);
105607
+ this ._pitch .addInterest ("set_speed__", this);
105224
105608
 
105225
105609
  this .video
105226
105610
  .on ("abort error", this .setError .bind (this))
@@ -105300,7 +105684,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
105300
105684
  setError (event)
105301
105685
  {
105302
105686
  if (this .URL .protocol !== "data:")
105303
- console .warn (`Error loading movie '${decodeURI (this .URL .href)}'`, event .type);
105687
+ console .warn (`Error loading movie '${decodeURI (this .URL .href)}':`, event .type);
105304
105688
 
105305
105689
  this .loadNext ();
105306
105690
  },
@@ -105364,7 +105748,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
105364
105748
  const media = this .getMediaElement ();
105365
105749
 
105366
105750
  if (media)
105367
- media .playbackRate = this ._speed .getValue ();
105751
+ media .playbackRate = this ._speed .getValue () * Math .max (this ._pitch .getValue (), 0);
105368
105752
  },
105369
105753
  set_time ()
105370
105754
  {
@@ -107598,7 +107982,7 @@ const gettext_default_ = (string) => locale .get (string) || string;
107598
107982
 
107599
107983
  /* harmony default export */ const gettext = (x_ite_Namespace .add ("gettext", gettext_default_));
107600
107984
  ;// ./src/x_ite/Browser/Core/BrowserTimings.js
107601
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(445);
107985
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(427);
107602
107986
  /*******************************************************************************
107603
107987
  *
107604
107988
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108228,7 +108612,7 @@ const TextCompression_default_ = TextCompression;
108228
108612
 
108229
108613
  /* harmony default export */ const Core_TextCompression = (x_ite_Namespace .add ("TextCompression", TextCompression_default_));
108230
108614
  ;// ./src/x_ite/Browser/Core/BrowserOptions.js
108231
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(445);
108615
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(427);
108232
108616
  /*******************************************************************************
108233
108617
  *
108234
108618
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108875,7 +109259,7 @@ const RenderingProperties_default_ = RenderingProperties;
108875
109259
 
108876
109260
  /* harmony default export */ const Core_RenderingProperties = (x_ite_Namespace .add ("RenderingProperties", RenderingProperties_default_));
108877
109261
  ;// ./src/x_ite/Browser/Core/Notification.js
108878
- /* provided dependency */ var Notification_$ = __webpack_require__(445);
109262
+ /* provided dependency */ var Notification_$ = __webpack_require__(427);
108879
109263
  /*******************************************************************************
108880
109264
  *
108881
109265
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108997,8 +109381,8 @@ const Notification_default_ = Notification;
108997
109381
 
108998
109382
  /* harmony default export */ const Core_Notification = (x_ite_Namespace .add ("Notification", Notification_default_));
108999
109383
  ;// ./src/x_ite/Browser/Core/ContextMenu.js
109000
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(949);
109001
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(445);
109384
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(367);
109385
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(427);
109002
109386
  /*******************************************************************************
109003
109387
  *
109004
109388
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -111720,7 +112104,7 @@ const DataStorage_default_ = DataStorage;
111720
112104
 
111721
112105
  /* harmony default export */ const Utility_DataStorage = (x_ite_Namespace .add ("DataStorage", DataStorage_default_));
111722
112106
  ;// ./src/x_ite/Browser/Core/X3DCoreContext.js
111723
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(445);
112107
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(427);
111724
112108
  /*******************************************************************************
111725
112109
  *
111726
112110
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114331,8 +114715,8 @@ const X3DViewer_default_ = X3DViewer;
114331
114715
 
114332
114716
  /* harmony default export */ const Navigation_X3DViewer = (x_ite_Namespace .add ("X3DViewer", X3DViewer_default_));
114333
114717
  ;// ./src/x_ite/Browser/Navigation/ExamineViewer.js
114334
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(485);
114335
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(445);
114718
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(675);
114719
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(427);
114336
114720
  /*******************************************************************************
114337
114721
  *
114338
114722
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115247,8 +115631,8 @@ const ExamineViewer_default_ = ExamineViewer;
115247
115631
 
115248
115632
  /* harmony default export */ const Navigation_ExamineViewer = (x_ite_Namespace .add ("ExamineViewer", ExamineViewer_default_));
115249
115633
  ;// ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
115250
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(485);
115251
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(445);
115634
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(675);
115635
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(427);
115252
115636
  /*******************************************************************************
115253
115637
  *
115254
115638
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116263,8 +116647,8 @@ const FlyViewer_default_ = FlyViewer;
116263
116647
 
116264
116648
  /* harmony default export */ const Navigation_FlyViewer = (x_ite_Namespace .add ("FlyViewer", FlyViewer_default_));
116265
116649
  ;// ./src/x_ite/Browser/Navigation/PlaneViewer.js
116266
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(485);
116267
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(445);
116650
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(675);
116651
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(427);
116268
116652
  /*******************************************************************************
116269
116653
  *
116270
116654
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116593,8 +116977,8 @@ const NoneViewer_default_ = NoneViewer;
116593
116977
 
116594
116978
  /* harmony default export */ const Navigation_NoneViewer = (x_ite_Namespace .add ("NoneViewer", NoneViewer_default_));
116595
116979
  ;// ./src/x_ite/Browser/Navigation/LookAtViewer.js
116596
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(485);
116597
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(445);
116980
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(675);
116981
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(427);
116598
116982
  /*******************************************************************************
116599
116983
  *
116600
116984
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117736,8 +118120,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
117736
118120
 
117737
118121
  /* harmony default export */ const Picking_X3DPickingContext = (x_ite_Namespace .add ("X3DPickingContext", X3DPickingContext_default_));
117738
118122
  ;// ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
117739
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(485);
117740
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(445);
118123
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(675);
118124
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(427);
117741
118125
  /*******************************************************************************
117742
118126
  *
117743
118127
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119184,7 +119568,7 @@ const Lock_default_ = Lock;
119184
119568
 
119185
119569
  /* harmony default export */ const Utility_Lock = (x_ite_Namespace .add ("Lock", Lock_default_));
119186
119570
  ;// ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
119187
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(445);
119571
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(427);
119188
119572
  /*******************************************************************************
119189
119573
  *
119190
119574
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120498,7 +120882,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
120498
120882
 
120499
120883
  /* harmony default export */ const Sound_X3DSoundContext = (x_ite_Namespace .add ("X3DSoundContext", X3DSoundContext_default_));
120500
120884
  ;// ./src/x_ite/Browser/Texturing/KTXDecoder.js
120501
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(445);
120885
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(427);
120502
120886
  const KTXDecoder_default_ = class KTXDecoder
120503
120887
  {
120504
120888
  constructor (gl, externalKtxlib, scriptDir)
@@ -122077,7 +122461,7 @@ const Components_default_ = Components;
122077
122461
 
122078
122462
  /* harmony default export */ const x_ite_Components = (x_ite_Namespace .add ("Components", Components_default_));
122079
122463
  ;// ./src/x_ite/Browser/DOMIntegration.js
122080
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(445);
122464
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(427);
122081
122465
  /*******************************************************************************
122082
122466
  * MIT License
122083
122467
  *
@@ -123343,7 +123727,7 @@ const FieldTypes_default_ = new Configuration_FieldTypesArray (Object .values (x
123343
123727
 
123344
123728
  /* harmony default export */ const FieldTypes = (x_ite_Namespace .add ("FieldTypes", FieldTypes_default_));
123345
123729
  ;// ./src/x_ite/Browser/X3DBrowser.js
123346
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(445);
123730
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(427);
123347
123731
  /*******************************************************************************
123348
123732
  *
123349
123733
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124445,7 +124829,7 @@ const X3DBrowser_default_ = X3DBrowser;
124445
124829
 
124446
124830
  /* harmony default export */ const Browser_X3DBrowser = (x_ite_Namespace .add ("X3DBrowser", X3DBrowser_default_));
124447
124831
  ;// ./src/x_ite/X3DCanvasElement.js
124448
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(445);
124832
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(427);
124449
124833
  /*******************************************************************************
124450
124834
  *
124451
124835
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124712,8 +125096,8 @@ const QuickSort_default_ = QuickSort;
124712
125096
 
124713
125097
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
124714
125098
  ;// ./src/lib/jquery.js
124715
- /* provided dependency */ var jquery_$ = __webpack_require__(445);
124716
- /* provided dependency */ var pako = __webpack_require__(729);
125099
+ /* provided dependency */ var jquery_$ = __webpack_require__(427);
125100
+ /* provided dependency */ var pako = __webpack_require__(355);
124717
125101
  Object .assign (jquery_$,
124718
125102
  {
124719
125103
  decodeText (input)
@@ -124738,6 +125122,10 @@ Object .assign (jquery_$,
124738
125122
  {
124739
125123
  return string [0] .toLowerCase () + string .slice (1);
124740
125124
  },
125125
+ toUpperCaseFirst (string)
125126
+ {
125127
+ return string [0] .toUpperCase () + string .slice (1);
125128
+ },
124741
125129
  try (callback, logError = false)
124742
125130
  {
124743
125131
  try
@@ -124790,13 +125178,13 @@ const jquery_default_ = jquery_$;
124790
125178
 
124791
125179
  /* harmony default export */ const jquery = (x_ite_Namespace .add ("jquery", jquery_default_));
124792
125180
  ;// ./src/lib/libtess.js
124793
- /* provided dependency */ var libtess_libtess = __webpack_require__(294);
125181
+ /* provided dependency */ var libtess_libtess = __webpack_require__(800);
124794
125182
  const libtess_default_ = libtess_libtess;
124795
125183
  ;
124796
125184
 
124797
125185
  /* harmony default export */ const lib_libtess = (x_ite_Namespace .add ("libtess", libtess_default_));
124798
125186
  ;// ./src/x_ite/X3D.js
124799
- /* provided dependency */ var X3D_$ = __webpack_require__(445);
125187
+ /* provided dependency */ var X3D_$ = __webpack_require__(427);
124800
125188
  /*******************************************************************************
124801
125189
  *
124802
125190
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -125100,7 +125488,7 @@ x_ite_Namespace, x_ite_Namespace .Fields,
125100
125488
 
125101
125489
  // Assign X3D to global namespace.
125102
125490
 
125103
- window [Symbol .for ("X_ITE.X3D-10.5.8")] = x_ite_X3D;
125491
+ window [Symbol .for ("X_ITE.X3D-10.5.10")] = x_ite_X3D;
125104
125492
 
125105
125493
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
125106
125494