x_ite 10.5.8 → 10.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +4 -4
  2. package/dist/assets/components/AnnotationComponent.js +2 -2
  3. package/dist/assets/components/AnnotationComponent.min.js +2 -2
  4. package/dist/assets/components/CADGeometryComponent.js +2 -2
  5. package/dist/assets/components/CADGeometryComponent.min.js +2 -2
  6. package/dist/assets/components/CubeMapTexturingComponent.js +3 -3
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +2 -2
  8. package/dist/assets/components/DISComponent.js +2 -2
  9. package/dist/assets/components/DISComponent.min.js +2 -2
  10. package/dist/assets/components/EventUtilitiesComponent.js +2 -2
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +2 -2
  12. package/dist/assets/components/Geometry2DComponent.js +2 -2
  13. package/dist/assets/components/Geometry2DComponent.min.js +2 -2
  14. package/dist/assets/components/GeospatialComponent.js +2 -2
  15. package/dist/assets/components/GeospatialComponent.min.js +2 -2
  16. package/dist/assets/components/HAnimComponent.js +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 +2 -2
  23. package/dist/assets/components/NURBSComponent.min.js +2 -2
  24. package/dist/assets/components/ParticleSystemsComponent.js +2 -2
  25. package/dist/assets/components/ParticleSystemsComponent.min.js +2 -2
  26. package/dist/assets/components/PickingComponent.js +2 -2
  27. package/dist/assets/components/PickingComponent.min.js +2 -2
  28. package/dist/assets/components/RigidBodyPhysicsComponent.js +2 -2
  29. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +2 -2
  30. package/dist/assets/components/ScriptingComponent.js +2 -2
  31. package/dist/assets/components/ScriptingComponent.min.js +2 -2
  32. package/dist/assets/components/TextComponent.js +4 -4
  33. package/dist/assets/components/TextComponent.min.js +2 -2
  34. package/dist/assets/components/TextureProjectionComponent.js +2 -2
  35. package/dist/assets/components/TextureProjectionComponent.min.js +2 -2
  36. package/dist/assets/components/Texturing3DComponent.js +11 -11
  37. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  38. package/dist/assets/components/VolumeRenderingComponent.js +2 -2
  39. package/dist/assets/components/VolumeRenderingComponent.min.js +2 -2
  40. package/dist/assets/components/X_ITEComponent.js +2 -2
  41. package/dist/assets/components/X_ITEComponent.min.js +2 -2
  42. package/dist/example.html +1 -1
  43. package/dist/x_ite.css +1 -1
  44. package/dist/x_ite.js +719 -368
  45. package/dist/x_ite.min.js +2 -2
  46. package/dist/x_ite.min.mjs +2 -2
  47. package/dist/x_ite.mjs +719 -368
  48. package/dist/x_ite.zip +0 -0
  49. package/package.json +1 -1
package/dist/x_ite.mjs CHANGED
@@ -1,10 +1,10 @@
1
- /* X_ITE v10.5.8 */
1
+ /* X_ITE v10.5.9 */
2
2
  var __webpack_modules__ = ({
3
3
 
4
- /***/ 949:
4
+ /***/ 58:
5
5
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
6
6
 
7
- /* provided dependency */ var jQuery = __webpack_require__(445);
7
+ /* provided dependency */ var jQuery = __webpack_require__(394);
8
8
  /**
9
9
  * @preserve jquery.fullscreen 1.1.5
10
10
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -200,7 +200,7 @@ installFullScreenHandlers();
200
200
 
201
201
  /***/ }),
202
202
 
203
- /***/ 485:
203
+ /***/ 576:
204
204
  /***/ ((module, exports, __webpack_require__) => {
205
205
 
206
206
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -214,7 +214,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
214
214
  (function (factory) {
215
215
  if ( true ) {
216
216
  // AMD. Register as an anonymous module.
217
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(445)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
217
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(394)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
218
218
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
219
219
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
220
220
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -425,7 +425,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
425
425
 
426
426
  /***/ }),
427
427
 
428
- /***/ 445:
428
+ /***/ 394:
429
429
  /***/ (function(module, exports) {
430
430
 
431
431
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11149,7 +11149,7 @@ return jQuery;
11149
11149
 
11150
11150
  /***/ }),
11151
11151
 
11152
- /***/ 294:
11152
+ /***/ 787:
11153
11153
  /***/ ((module) => {
11154
11154
 
11155
11155
  /**
@@ -15928,7 +15928,7 @@ if (true) {
15928
15928
 
15929
15929
  /***/ }),
15930
15930
 
15931
- /***/ 729:
15931
+ /***/ 514:
15932
15932
  /***/ (function(__unused_webpack_module, exports) {
15933
15933
 
15934
15934
 
@@ -19173,7 +19173,7 @@ if (true) {
19173
19173
 
19174
19174
  /***/ }),
19175
19175
 
19176
- /***/ 782:
19176
+ /***/ 485:
19177
19177
  /***/ (function(module, exports) {
19178
19178
 
19179
19179
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20297,7 +20297,7 @@ Object .defineProperty (Namespace, "add",
20297
20297
  return module;
20298
20298
  }
20299
20299
 
20300
- const X3D = window [Symbol .for ("X_ITE.X3D-10.5.8")];
20300
+ const X3D = window [Symbol .for ("X_ITE.X3D-10.5.9")];
20301
20301
 
20302
20302
  if (X3D)
20303
20303
  X3D [name] = module;
@@ -23435,7 +23435,7 @@ Object .assign (Color3 .prototype,
23435
23435
  this [_b] = color [_b];
23436
23436
  return this;
23437
23437
  },
23438
- set (r, g, b)
23438
+ set (r = 0, g = 0, b = 0)
23439
23439
  {
23440
23440
  this [_r] = Math .max (r, 0);
23441
23441
  this [_g] = Math .max (g, 0);
@@ -23972,7 +23972,7 @@ Object .assign (Color4 .prototype,
23972
23972
  this [_a] = color [_a];
23973
23973
  return this;
23974
23974
  },
23975
- set (r, g, b, a)
23975
+ set (r = 0, g = 0, b = 0, a = 0)
23976
23976
  {
23977
23977
  this [Color4_r] = Math .max (r, 0);
23978
23978
  this [Color4_g] = Math .max (g, 0);
@@ -24808,6 +24808,18 @@ function SFMatrixPrototypeTemplate (Constructor, TypeName, Matrix, double, prope
24808
24808
  {
24809
24809
  return new (vector .constructor) (this .getValue () .multMatrixDir (vector .getValue () .copy ()));
24810
24810
  },
24811
+ translate (translation)
24812
+ {
24813
+ return new (this .constructor) (this .getValue () .copy () .translate (translation .getValue ()));
24814
+ },
24815
+ rotate (rotation)
24816
+ {
24817
+ return new (this .constructor) (this .getValue () .copy () .rotate (rotation .getValue ()));
24818
+ },
24819
+ scale (scale)
24820
+ {
24821
+ return new (this .constructor) (this .getValue () .copy () .scale (scale .getValue ()));
24822
+ },
24811
24823
  toStream (generator)
24812
24824
  {
24813
24825
  const
@@ -24958,22 +24970,22 @@ Object .assign (Vector2 .prototype,
24958
24970
  copy .y = this .y;
24959
24971
  return copy;
24960
24972
  },
24961
- assign (vector)
24973
+ assign ({ x, y })
24962
24974
  {
24963
- this .x = vector .x;
24964
- this .y = vector .y;
24975
+ this .x = x;
24976
+ this .y = y;
24965
24977
  return this;
24966
24978
  },
24967
- set (x, y)
24979
+ set (x = 0, y = 0)
24968
24980
  {
24969
24981
  this .x = x;
24970
24982
  this .y = y;
24971
24983
  return this;
24972
24984
  },
24973
- equals (vector)
24985
+ equals ({ x, y })
24974
24986
  {
24975
- return this .x === vector .x &&
24976
- this .y === vector .y;
24987
+ return this .x === x &&
24988
+ this .y === y;
24977
24989
  },
24978
24990
  negate ()
24979
24991
  {
@@ -24987,16 +24999,16 @@ Object .assign (Vector2 .prototype,
24987
24999
  this .y = 1 / this .y;
24988
25000
  return this;
24989
25001
  },
24990
- add (vector)
25002
+ add ({ x, y })
24991
25003
  {
24992
- this .x += vector .x;
24993
- this .y += vector .y;
25004
+ this .x += x;
25005
+ this .y += y;
24994
25006
  return this;
24995
25007
  },
24996
- subtract (vector)
25008
+ subtract ({ x, y })
24997
25009
  {
24998
- this .x -= vector .x;
24999
- this .y -= vector .y;
25010
+ this .x -= x;
25011
+ this .y -= y;
25000
25012
  return this;
25001
25013
  },
25002
25014
  multiply (value)
@@ -25005,10 +25017,10 @@ Object .assign (Vector2 .prototype,
25005
25017
  this .y *= value;
25006
25018
  return this;
25007
25019
  },
25008
- multVec (vector)
25020
+ multVec ({ x, y })
25009
25021
  {
25010
- this .x *= vector .x;
25011
- this .y *= vector .y;
25022
+ this .x *= x;
25023
+ this .y *= y;
25012
25024
  return this;
25013
25025
  },
25014
25026
  divide (value)
@@ -25017,10 +25029,10 @@ Object .assign (Vector2 .prototype,
25017
25029
  this .y /= value;
25018
25030
  return this;
25019
25031
  },
25020
- divVec (vector)
25032
+ divVec ({ x, y })
25021
25033
  {
25022
- this .x /= vector .x;
25023
- this .y /= vector .y;
25034
+ this .x /= x;
25035
+ this .y /= y;
25024
25036
  return this;
25025
25037
  },
25026
25038
  normalize ()
@@ -25035,10 +25047,10 @@ Object .assign (Vector2 .prototype,
25035
25047
 
25036
25048
  return this;
25037
25049
  },
25038
- dot (vector)
25050
+ dot ({ x, y })
25039
25051
  {
25040
- return this .x * vector .x +
25041
- this .y * vector .y;
25052
+ return this .x * x +
25053
+ this .y * y;
25042
25054
  },
25043
25055
  norm ()
25044
25056
  {
@@ -25051,33 +25063,35 @@ Object .assign (Vector2 .prototype,
25051
25063
  {
25052
25064
  return Math .hypot (this .x, this .y);
25053
25065
  },
25054
- distance (vector)
25066
+ distance ({ x, y })
25055
25067
  {
25056
- return Math .hypot (this .x - vector .x,
25057
- this .y - vector .y);
25068
+ return Math .hypot (this .x - x,
25069
+ this .y - y);
25058
25070
  },
25059
- lerp (destination, t)
25071
+ lerp ({ x: dX, y: dY }, t)
25060
25072
  {
25061
25073
  const { x, y } = this;
25062
25074
 
25063
- this .x = x + t * (destination .x - x);
25064
- this .y = y + t * (destination .y - y);
25075
+ this .x = x + t * (dX - x);
25076
+ this .y = y + t * (dY - y);
25065
25077
  return this;
25066
25078
  },
25067
25079
  abs ()
25068
25080
  {
25069
- this .x = Math .abs (this .x);
25070
- this .y = Math .abs (this .y);
25081
+ const { x, y } = this;
25082
+
25083
+ this .x = Math .abs (x);
25084
+ this .y = Math .abs (y);
25071
25085
  return this;
25072
25086
  },
25073
25087
  min (vector)
25074
25088
  {
25075
25089
  let { x, y } = this;
25076
25090
 
25077
- for (const vector of arguments)
25091
+ for (const { x: minX, y: minY } of arguments)
25078
25092
  {
25079
- x = Math .min (x, vector .x);
25080
- y = Math .min (y, vector .y);
25093
+ x = Math .min (x, minX);
25094
+ y = Math .min (y, minY);
25081
25095
  }
25082
25096
 
25083
25097
  this .x = x;
@@ -25088,20 +25102,21 @@ Object .assign (Vector2 .prototype,
25088
25102
  {
25089
25103
  let { x, y } = this;
25090
25104
 
25091
- for (const vector of arguments)
25105
+ for (const { x: maxX, y: maxY } of arguments)
25092
25106
  {
25093
- x = Math .max (x, vector .x);
25094
- y = Math .max (y, vector .y);
25107
+ x = Math .max (x, maxX);
25108
+ y = Math .max (y, maxY);
25095
25109
  }
25096
25110
 
25097
25111
  this .x = x;
25098
25112
  this .y = y;
25099
25113
  return this;
25100
25114
  },
25101
- clamp (min, max)
25115
+ clamp ({ x: minX, y: minY }, { x: maxX, y: maxY })
25102
25116
  {
25103
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
25104
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
25117
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
25118
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
25119
+ return this;
25105
25120
  },
25106
25121
  toString ()
25107
25122
  {
@@ -25213,25 +25228,25 @@ Object .assign (Vector3 .prototype,
25213
25228
  copy .z = this .z;
25214
25229
  return copy;
25215
25230
  },
25216
- assign (vector)
25231
+ assign ({ x, y, z })
25217
25232
  {
25218
- this .x = vector .x;
25219
- this .y = vector .y;
25220
- this .z = vector .z;
25233
+ this .x = x;
25234
+ this .y = y;
25235
+ this .z = z;
25221
25236
  return this;
25222
25237
  },
25223
- set (x, y, z)
25238
+ set (x = 0, y = 0, z = 0)
25224
25239
  {
25225
25240
  this .x = x;
25226
25241
  this .y = y;
25227
25242
  this .z = z;
25228
25243
  return this;
25229
25244
  },
25230
- equals (vector)
25245
+ equals ({ x, y, z })
25231
25246
  {
25232
- return this .x === vector .x &&
25233
- this .y === vector .y &&
25234
- this .z === vector .z;
25247
+ return this .x === x &&
25248
+ this .y === y &&
25249
+ this .z === z;
25235
25250
  },
25236
25251
  negate ()
25237
25252
  {
@@ -25247,18 +25262,18 @@ Object .assign (Vector3 .prototype,
25247
25262
  this .z = 1 / this .z;
25248
25263
  return this;
25249
25264
  },
25250
- add (vector)
25265
+ add ({ x, y, z })
25251
25266
  {
25252
- this .x += vector .x;
25253
- this .y += vector .y;
25254
- this .z += vector .z;
25267
+ this .x += x;
25268
+ this .y += y;
25269
+ this .z += z;
25255
25270
  return this;
25256
25271
  },
25257
- subtract (vector)
25272
+ subtract ({ x, y, z })
25258
25273
  {
25259
- this .x -= vector .x;
25260
- this .y -= vector .y;
25261
- this .z -= vector .z;
25274
+ this .x -= x;
25275
+ this .y -= y;
25276
+ this .z -= z;
25262
25277
  return this;
25263
25278
  },
25264
25279
  multiply (value)
@@ -25268,11 +25283,11 @@ Object .assign (Vector3 .prototype,
25268
25283
  this .z *= value;
25269
25284
  return this;
25270
25285
  },
25271
- multVec (vector)
25286
+ multVec ({ x, y, z })
25272
25287
  {
25273
- this .x *= vector .x;
25274
- this .y *= vector .y;
25275
- this .z *= vector .z;
25288
+ this .x *= x;
25289
+ this .y *= y;
25290
+ this .z *= z;
25276
25291
  return this;
25277
25292
  },
25278
25293
  divide (value)
@@ -25282,18 +25297,16 @@ Object .assign (Vector3 .prototype,
25282
25297
  this .z /= value;
25283
25298
  return this;
25284
25299
  },
25285
- divVec (vector)
25300
+ divVec ({ x, y, z })
25286
25301
  {
25287
- this .x /= vector .x;
25288
- this .y /= vector .y;
25289
- this .z /= vector .z;
25302
+ this .x /= x;
25303
+ this .y /= y;
25304
+ this .z /= z;
25290
25305
  return this;
25291
25306
  },
25292
- cross (vector)
25307
+ cross ({ x: bx, y: by, z: bz })
25293
25308
  {
25294
- const
25295
- { x: ax, y: ay, z: az } = this,
25296
- { x: bx, y: by, z: bz } = vector;
25309
+ const { x: ax, y: ay, z: az } = this;
25297
25310
 
25298
25311
  this .x = ay * bz - az * by;
25299
25312
  this .y = az * bx - ax * bz;
@@ -25314,11 +25327,11 @@ Object .assign (Vector3 .prototype,
25314
25327
 
25315
25328
  return this;
25316
25329
  },
25317
- dot (vector)
25330
+ dot ({ x, y, z })
25318
25331
  {
25319
- return this .x * vector .x +
25320
- this .y * vector .y +
25321
- this .z * vector .z;
25332
+ return this .x * x +
25333
+ this .y * y +
25334
+ this .z * z;
25322
25335
  },
25323
25336
  norm ()
25324
25337
  {
@@ -25332,19 +25345,19 @@ Object .assign (Vector3 .prototype,
25332
25345
  {
25333
25346
  return Math .hypot (this .x, this .y, this .z);
25334
25347
  },
25335
- distance (vector)
25348
+ distance ({ x, y, z })
25336
25349
  {
25337
- return Math .hypot (this .x - vector .x,
25338
- this .y - vector .y,
25339
- this .z - vector .z);
25350
+ return Math .hypot (this .x - x,
25351
+ this .y - y,
25352
+ this .z - z);
25340
25353
  },
25341
- lerp (destination, t)
25354
+ lerp ({ x: dX, y: dY, z: dZ }, t)
25342
25355
  {
25343
25356
  const { x, y, z } = this;
25344
25357
 
25345
- this .x = x + t * (destination .x - x);
25346
- this .y = y + t * (destination .y - y);
25347
- this .z = z + t * (destination .z - z);
25358
+ this .x = x + t * (dX - x);
25359
+ this .y = y + t * (dY - y);
25360
+ this .z = z + t * (dZ - z);
25348
25361
  return this;
25349
25362
  },
25350
25363
  slerp: (() =>
@@ -25358,20 +25371,22 @@ Object .assign (Vector3 .prototype,
25358
25371
  })(),
25359
25372
  abs ()
25360
25373
  {
25361
- this .x = Math .abs (this .x);
25362
- this .y = Math .abs (this .y);
25363
- this .z = Math .abs (this .z);
25374
+ const { x, y, z } = this;
25375
+
25376
+ this .x = Math .abs (x);
25377
+ this .y = Math .abs (y);
25378
+ this .z = Math .abs (z);
25364
25379
  return this;
25365
25380
  },
25366
25381
  min (vector)
25367
25382
  {
25368
25383
  let { x, y, z } = this;
25369
25384
 
25370
- for (const vector of arguments)
25385
+ for (const { x: minX, y: minY, z: minZ } of arguments)
25371
25386
  {
25372
- x = Math .min (x, vector .x);
25373
- y = Math .min (y, vector .y);
25374
- z = Math .min (z, vector .z);
25387
+ x = Math .min (x, minX);
25388
+ y = Math .min (y, minY);
25389
+ z = Math .min (z, minZ);
25375
25390
  }
25376
25391
 
25377
25392
  this .x = x;
@@ -25383,11 +25398,11 @@ Object .assign (Vector3 .prototype,
25383
25398
  {
25384
25399
  let { x, y, z } = this;
25385
25400
 
25386
- for (const vector of arguments)
25401
+ for (const { x: maxX, y: maxY, z: maxZ } of arguments)
25387
25402
  {
25388
- x = Math .max (x, vector .x);
25389
- y = Math .max (y, vector .y);
25390
- z = Math .max (z, vector .z);
25403
+ x = Math .max (x, maxX);
25404
+ y = Math .max (y, maxY);
25405
+ z = Math .max (z, maxZ);
25391
25406
  }
25392
25407
 
25393
25408
  this .x = x;
@@ -25395,11 +25410,12 @@ Object .assign (Vector3 .prototype,
25395
25410
  this .z = z;
25396
25411
  return this;
25397
25412
  },
25398
- clamp (min, max)
25413
+ clamp ({ x: minX, y: minY, z: minZ }, { x: maxX, y: maxY, z: maxZ })
25399
25414
  {
25400
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
25401
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
25402
- this .z = Math_Algorithm .clamp (this .z, min .z, max .z);
25415
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
25416
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
25417
+ this .z = Math_Algorithm .clamp (this .z, minZ, maxZ);
25418
+ return this;
25403
25419
  },
25404
25420
  toString ()
25405
25421
  {
@@ -26686,6 +26702,10 @@ function SFMatrix3Template (TypeName, double)
26686
26702
  args .length = 0;
26687
26703
  };
26688
26704
  })(),
26705
+ rotate (rotation)
26706
+ {
26707
+ return new (this .constructor) (this .getValue () .copy () .rotate (rotation));
26708
+ },
26689
26709
  });
26690
26710
  }
26691
26711
 
@@ -26774,15 +26794,15 @@ Object .assign (Vector4 .prototype,
26774
26794
  copy .w = this .w;
26775
26795
  return copy;
26776
26796
  },
26777
- assign (vector)
26797
+ assign ({ x, y, z, w })
26778
26798
  {
26779
- this .x = vector .x;
26780
- this .y = vector .y;
26781
- this .z = vector .z;
26782
- this .w = vector .w;
26799
+ this .x = x;
26800
+ this .y = y;
26801
+ this .z = z;
26802
+ this .w = w;
26783
26803
  return this;
26784
26804
  },
26785
- set (x, y, z, w)
26805
+ set (x = 0, y = 0, z = 0, w = 0)
26786
26806
  {
26787
26807
  this .x = x;
26788
26808
  this .y = y;
@@ -26790,19 +26810,12 @@ Object .assign (Vector4 .prototype,
26790
26810
  this .w = w;
26791
26811
  return this;
26792
26812
  },
26793
- equals (vector)
26813
+ equals ({ x, y, z, w })
26794
26814
  {
26795
- return this .x === vector .x &&
26796
- this .y === vector .y &&
26797
- this .z === vector .z &&
26798
- this .w === vector .w;
26799
- },
26800
- getReal (vector)
26801
- {
26802
- vector .x = this .x / this .w;
26803
- vector .y = this .y / this .w;
26804
- vector .z = this .z / this .w;
26805
- return vector;
26815
+ return this .x === x &&
26816
+ this .y === y &&
26817
+ this .z === z &&
26818
+ this .w === w;
26806
26819
  },
26807
26820
  negate ()
26808
26821
  {
@@ -26820,20 +26833,20 @@ Object .assign (Vector4 .prototype,
26820
26833
  this .w = 1 / this .w;
26821
26834
  return this;
26822
26835
  },
26823
- add (vector)
26836
+ add ({ x, y, z, w })
26824
26837
  {
26825
- this .x += vector .x;
26826
- this .y += vector .y;
26827
- this .z += vector .z;
26828
- this .w += vector .w;
26838
+ this .x += x;
26839
+ this .y += y;
26840
+ this .z += z;
26841
+ this .w += w;
26829
26842
  return this;
26830
26843
  },
26831
- subtract (vector)
26844
+ subtract ({ x, y, z, w })
26832
26845
  {
26833
- this .x -= vector .x;
26834
- this .y -= vector .y;
26835
- this .z -= vector .z;
26836
- this .w -= vector .w;
26846
+ this .x -= x;
26847
+ this .y -= y;
26848
+ this .z -= z;
26849
+ this .w -= w;
26837
26850
  return this;
26838
26851
  },
26839
26852
  multiply (value)
@@ -26844,12 +26857,12 @@ Object .assign (Vector4 .prototype,
26844
26857
  this .w *= value;
26845
26858
  return this;
26846
26859
  },
26847
- multVec (vector)
26860
+ multVec ({ x, y, z, w })
26848
26861
  {
26849
- this .x *= vector .x;
26850
- this .y *= vector .y;
26851
- this .z *= vector .z;
26852
- this .w *= vector .w;
26862
+ this .x *= x;
26863
+ this .y *= y;
26864
+ this .z *= z;
26865
+ this .w *= w;
26853
26866
  return this;
26854
26867
  },
26855
26868
  divide (value)
@@ -26860,12 +26873,12 @@ Object .assign (Vector4 .prototype,
26860
26873
  this .w /= value;
26861
26874
  return this;
26862
26875
  },
26863
- divVec (vector)
26876
+ divVec ({ x, y, z, w })
26864
26877
  {
26865
- this .x /= vector .x;
26866
- this .y /= vector .y;
26867
- this .z /= vector .z;
26868
- this .w /= vector .w;
26878
+ this .x /= x;
26879
+ this .y /= y;
26880
+ this .z /= z;
26881
+ this .w /= w;
26869
26882
  return this;
26870
26883
  },
26871
26884
  normalize ()
@@ -26882,12 +26895,12 @@ Object .assign (Vector4 .prototype,
26882
26895
 
26883
26896
  return this;
26884
26897
  },
26885
- dot (vector)
26898
+ dot ({ x, y, z, w })
26886
26899
  {
26887
- return this .x * vector .x +
26888
- this .y * vector .y +
26889
- this .z * vector .z +
26890
- this .w * vector .w;
26900
+ return this .x * x +
26901
+ this .y * y +
26902
+ this .z * z +
26903
+ this .w * w;
26891
26904
  },
26892
26905
  norm ()
26893
26906
  {
@@ -26902,41 +26915,43 @@ Object .assign (Vector4 .prototype,
26902
26915
  {
26903
26916
  return Math .hypot (this .x, this .y, this .z, this .w);
26904
26917
  },
26905
- distance (vector)
26918
+ distance ({ x, y, z, w })
26906
26919
  {
26907
- return Math .hypot (this .x - vector .x,
26908
- this .y - vector .y,
26909
- this .z - vector .z,
26910
- this .w - vector .w);
26920
+ return Math .hypot (this .x - x,
26921
+ this .y - y,
26922
+ this .z - z,
26923
+ this .w - w);
26911
26924
  },
26912
- lerp (destination, t)
26925
+ lerp ({ x: dX, y: dY, z: dZ, w: dW }, t)
26913
26926
  {
26914
26927
  const { x, y, z, w } = this;
26915
26928
 
26916
- this .x = x + t * (destination .x - x);
26917
- this .y = y + t * (destination .y - y);
26918
- this .z = z + t * (destination .z - z);
26919
- this .w = w + t * (destination .w - w);
26929
+ this .x = x + t * (dX - x);
26930
+ this .y = y + t * (dY - y);
26931
+ this .z = z + t * (dZ - z);
26932
+ this .w = w + t * (dW - w);
26920
26933
  return this;
26921
26934
  },
26922
26935
  abs ()
26923
26936
  {
26924
- this .x = Math .abs (this .x);
26925
- this .y = Math .abs (this .y);
26926
- this .z = Math .abs (this .z);
26927
- this .w = Math .abs (this .w);
26937
+ const { x, y, z, w } = this;
26938
+
26939
+ this .x = Math .abs (x);
26940
+ this .y = Math .abs (y);
26941
+ this .z = Math .abs (z);
26942
+ this .w = Math .abs (w);
26928
26943
  return this;
26929
26944
  },
26930
26945
  min (vector)
26931
26946
  {
26932
26947
  let { x, y, z, w } = this;
26933
26948
 
26934
- for (const vector of arguments)
26949
+ for (const { x: minX, y: minY, z: minZ, w: minW } of arguments)
26935
26950
  {
26936
- x = Math .min (x, vector .x);
26937
- y = Math .min (y, vector .y);
26938
- z = Math .min (z, vector .z);
26939
- w = Math .min (w, vector .w);
26951
+ x = Math .min (x, minX);
26952
+ y = Math .min (y, minY);
26953
+ z = Math .min (z, minZ);
26954
+ w = Math .min (w, minW);
26940
26955
  }
26941
26956
 
26942
26957
  this .x = x;
@@ -26949,12 +26964,12 @@ Object .assign (Vector4 .prototype,
26949
26964
  {
26950
26965
  let { x, y, z, w } = this;
26951
26966
 
26952
- for (const vector of arguments)
26967
+ for (const { x: maxX, y: maxY, z: maxZ, w: maxW } of arguments)
26953
26968
  {
26954
- x = Math .max (x, vector .x);
26955
- y = Math .max (y, vector .y);
26956
- z = Math .max (z, vector .z);
26957
- w = Math .max (w, vector .w);
26969
+ x = Math .max (x, maxX);
26970
+ y = Math .max (y, maxY);
26971
+ z = Math .max (z, maxZ);
26972
+ w = Math .max (w, maxW);
26958
26973
  }
26959
26974
 
26960
26975
  this .x = x;
@@ -26963,12 +26978,13 @@ Object .assign (Vector4 .prototype,
26963
26978
  this .w = w;
26964
26979
  return this;
26965
26980
  },
26966
- clamp (min, max)
26981
+ clamp ({ x: minX, y: minY, z: minZ, w: minW }, { x: maxX, y: maxY, z: maxZ, w: maxW })
26967
26982
  {
26968
- this .x = Math_Algorithm .clamp (this .x, min .x, max .x);
26969
- this .y = Math_Algorithm .clamp (this .y, min .y, max .y);
26970
- this .z = Math_Algorithm .clamp (this .z, min .z, max .z);
26971
- this .w = Math_Algorithm .clamp (this .w, min .w, max .w);
26983
+ this .x = Math_Algorithm .clamp (this .x, minX, maxX);
26984
+ this .y = Math_Algorithm .clamp (this .y, minY, maxY);
26985
+ this .z = Math_Algorithm .clamp (this .z, minZ, maxZ);
26986
+ this .w = Math_Algorithm .clamp (this .w, minW, maxW);
26987
+ return this;
26972
26988
  },
26973
26989
  toString ()
26974
26990
  {
@@ -27099,15 +27115,15 @@ Object .assign (Quaternion .prototype,
27099
27115
  copy .w = this .w;
27100
27116
  return copy;
27101
27117
  },
27102
- assign (quat)
27118
+ assign ({ x, y, z, w })
27103
27119
  {
27104
- this .x = quat .x;
27105
- this .y = quat .y;
27106
- this .z = quat .z;
27107
- this .w = quat .w;
27120
+ this .x = x;
27121
+ this .y = y;
27122
+ this .z = z;
27123
+ this .w = w;
27108
27124
  return this;
27109
27125
  },
27110
- set (x, y, z, w)
27126
+ set (x = 0, y = 0, z = 0, w = 1)
27111
27127
  {
27112
27128
  this .x = x;
27113
27129
  this .y = y;
@@ -27368,12 +27384,12 @@ Object .assign (Quaternion .prototype,
27368
27384
  {
27369
27385
  return !this .w;
27370
27386
  },
27371
- equals (quat)
27387
+ equals ({ x, y, z, w })
27372
27388
  {
27373
- return this .x === quat .x &&
27374
- this .y === quat .y &&
27375
- this .z === quat .z &&
27376
- this .w === quat .w;
27389
+ return this .x === x &&
27390
+ this .y === y &&
27391
+ this .z === z &&
27392
+ this .w === w;
27377
27393
  },
27378
27394
  negate ()
27379
27395
  {
@@ -27390,20 +27406,20 @@ Object .assign (Quaternion .prototype,
27390
27406
  this .z = -this .z;
27391
27407
  return this;
27392
27408
  },
27393
- add (quat)
27409
+ add ({ x, y, z, w })
27394
27410
  {
27395
- this .x += quat .x;
27396
- this .y += quat .y;
27397
- this .z += quat .z;
27398
- this .w += quat .w;
27411
+ this .x += x;
27412
+ this .y += y;
27413
+ this .z += z;
27414
+ this .w += w;
27399
27415
  return this;
27400
27416
  },
27401
- subtract (quat)
27417
+ subtract ({ x, y, z, w })
27402
27418
  {
27403
- this .x -= quat .x;
27404
- this .y -= quat .y;
27405
- this .z -= quat .z;
27406
- this .w -= quat .w;
27419
+ this .x -= x;
27420
+ this .y -= y;
27421
+ this .z -= z;
27422
+ this .w -= w;
27407
27423
  return this;
27408
27424
  },
27409
27425
  multiply (value)
@@ -29762,6 +29778,10 @@ function SFVecPrototypeTemplate (Constructor, TypeName, Vector, double, properti
29762
29778
  {
29763
29779
  return new (this .constructor) (this .getValue () .copy () .add (vector .getValue ()));
29764
29780
  },
29781
+ clamp (low, high)
29782
+ {
29783
+ return new (this .constructor) (this .getValue () .copy () .clamp (low .getValue (), high .getValue ()));
29784
+ },
29765
29785
  distance (vector)
29766
29786
  {
29767
29787
  return this .getValue () .distance (vector .getValue ());
@@ -34159,7 +34179,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34159
34179
 
34160
34180
  /* harmony default export */ const Base_X3DBaseNode = (x_ite_Namespace .add ("X3DBaseNode", X3DBaseNode_default_));
34161
34181
  ;// ./src/x_ite/Browser/Legacy.js
34162
- /* provided dependency */ var $ = __webpack_require__(445);
34182
+ /* provided dependency */ var $ = __webpack_require__(394);
34163
34183
  /*******************************************************************************
34164
34184
  *
34165
34185
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34295,7 +34315,7 @@ const Legacy_default_ = Legacy;
34295
34315
  *
34296
34316
  ******************************************************************************/
34297
34317
 
34298
- const BROWSER_VERSION_default_ = "10.5.8";
34318
+ const BROWSER_VERSION_default_ = "10.5.9";
34299
34319
  ;
34300
34320
 
34301
34321
  /* harmony default export */ const BROWSER_VERSION = (x_ite_Namespace .add ("BROWSER_VERSION", BROWSER_VERSION_default_));
@@ -37320,7 +37340,7 @@ const X3DBindableNode_default_ = X3DBindableNode;
37320
37340
 
37321
37341
  /* harmony default export */ const Core_X3DBindableNode = (x_ite_Namespace .add ("X3DBindableNode", X3DBindableNode_default_));
37322
37342
  ;// ./src/standard/Math/Geometry/Triangle3.js
37323
- /* provided dependency */ var libtess = __webpack_require__(294);
37343
+ /* provided dependency */ var libtess = __webpack_require__(787);
37324
37344
  /*******************************************************************************
37325
37345
  *
37326
37346
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39886,7 +39906,7 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
39886
39906
 
39887
39907
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (x_ite_Namespace .add ("X3DProtoDeclaration", X3DProtoDeclaration_default_));
39888
39908
  ;// ./src/x_ite/Parser/X3DParser.js
39889
- /* provided dependency */ var X3DParser_$ = __webpack_require__(445);
39909
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(394);
39890
39910
  /*******************************************************************************
39891
39911
  *
39892
39912
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -40141,7 +40161,7 @@ const Expressions_default_ = Expressions;
40141
40161
 
40142
40162
  /* harmony default export */ const Parser_Expressions = (x_ite_Namespace .add ("Expressions", Expressions_default_));
40143
40163
  ;// ./src/x_ite/Parser/VRMLParser.js
40144
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(445);
40164
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(394);
40145
40165
  /*******************************************************************************
40146
40166
  *
40147
40167
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42781,7 +42801,7 @@ const VRMLParser_default_ = VRMLParser;
42781
42801
 
42782
42802
  /* harmony default export */ const Parser_VRMLParser = (x_ite_Namespace .add ("VRMLParser", VRMLParser_default_));
42783
42803
  ;// ./src/x_ite/Parser/XMLParser.js
42784
- /* provided dependency */ var XMLParser_$ = __webpack_require__(445);
42804
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(394);
42785
42805
  /*******************************************************************************
42786
42806
  *
42787
42807
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -44959,7 +44979,7 @@ const URLs_default_ = URLs;
44959
44979
 
44960
44980
  /* harmony default export */ const Networking_URLs = (x_ite_Namespace .add ("URLs", URLs_default_));
44961
44981
  ;// ./src/x_ite/Parser/GLTF2Parser.js
44962
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(445);
44982
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(394);
44963
44983
  /*******************************************************************************
44964
44984
  *
44965
44985
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -45020,6 +45040,7 @@ const URLs_default_ = URLs;
45020
45040
 
45021
45041
 
45022
45042
 
45043
+
45023
45044
  // https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html
45024
45045
  // https://github.com/KhronosGroup/glTF-Sample-Assets
45025
45046
 
@@ -45054,6 +45075,8 @@ function GLTF2Parser (scene)
45054
45075
  this .nodes = [ ];
45055
45076
  this .skins = [ ];
45056
45077
  this .joints = new Set ();
45078
+ this .pointerAliases = new Map ();
45079
+ this .animationScripts = [ ];
45057
45080
  }
45058
45081
 
45059
45082
  Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser .prototype),
@@ -45169,7 +45192,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45169
45192
  this .camerasArray (glTF .cameras);
45170
45193
  this .skinsArray (glTF .skins);
45171
45194
  this .nodesArray (glTF .nodes);
45172
- this .scenesArray (glTF .scenes, glTF .scene);
45195
+ this .scenesArray (glTF, glTF .scenes, glTF .scene);
45173
45196
  this .animationsArray (glTF .animations);
45174
45197
 
45175
45198
  this .viewpointsCenterOfRotation (this .getScene ());
@@ -45238,8 +45261,9 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45238
45261
  return;
45239
45262
 
45240
45263
  const
45241
- browser = this .getBrowser (),
45242
- scene = this .getScene ();
45264
+ browser = this .getBrowser (),
45265
+ scene = this .getScene (),
45266
+ components = [ ];
45243
45267
 
45244
45268
  for (const extension of extensions)
45245
45269
  {
@@ -45249,11 +45273,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45249
45273
  {
45250
45274
  case "EXT_lights_image_based":
45251
45275
  {
45252
- const component = browser .getComponent ("CubeMapTexturing", 3);
45253
-
45254
- if (!scene .hasComponent (component))
45255
- scene .addComponent (component);
45256
-
45276
+ components .push (browser .getComponent ("CubeMapTexturing", 3));
45257
45277
  break;
45258
45278
  }
45259
45279
  // https://github.com/KhronosGroup/glTF/pull/1956
@@ -45275,24 +45295,28 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45275
45295
  case "KHR_materials_transmission":
45276
45296
  case "KHR_materials_volume":
45277
45297
  {
45278
- const component = browser .getComponent ("X_ITE", 1);
45279
-
45280
- if (!scene .hasComponent (component))
45281
- scene .addComponent (component);
45282
-
45298
+ components .push (browser .getComponent ("X_ITE", 1));
45283
45299
  break;
45284
45300
  }
45285
45301
  case "KHR_texture_transform":
45286
45302
  {
45287
- const component = browser .getComponent ("Texturing3D", 2);
45288
-
45289
- if (!scene .hasComponent (component))
45290
- scene .addComponent (component);
45291
-
45303
+ components .push (browser .getComponent ("Texturing3D", 2));
45304
+ break;
45305
+ }
45306
+ case "KHR_animation_pointer":
45307
+ {
45308
+ components .push (browser .getComponent ("EventUtilities", 1));
45309
+ components .push (browser .getComponent ("Scripting", 1));
45292
45310
  break;
45293
45311
  }
45294
45312
  }
45295
45313
  }
45314
+
45315
+ for (const component of components)
45316
+ {
45317
+ if (!scene .hasComponent (component))
45318
+ scene .addComponent (component);
45319
+ }
45296
45320
  },
45297
45321
  extensionsObject (extensions)
45298
45322
  {
@@ -45403,6 +45427,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45403
45427
 
45404
45428
  lightNode .setup ();
45405
45429
 
45430
+ light .pointers = [lightNode];
45431
+
45406
45432
  return light .node = lightNode;
45407
45433
  },
45408
45434
  khrLightsPunctualObject (KHR_lights_punctual)
@@ -45449,6 +45475,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45449
45475
  scene .addNamedNode (scene .getUniqueName (name), lightNode);
45450
45476
  scene .addExportedNode (scene .getUniqueExportName (name), lightNode);
45451
45477
 
45478
+ light .pointers = [lightNode];
45479
+
45452
45480
  return light .node = lightNode;
45453
45481
  },
45454
45482
  lightType (light)
@@ -45482,6 +45510,10 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45482
45510
  lightNode ._beamWidth = this .numberValue (light .innerConeAngle, 0);
45483
45511
  lightNode ._attenuation = new Numbers_Vector3 (0, 0, 1);
45484
45512
 
45513
+ this .addAnimationPointerAlias (lightNode, "range", "radius");
45514
+ this .addAnimationPointerAlias (lightNode, "outerConeAngle", "cutOffAngle");
45515
+ this .addAnimationPointerAlias (lightNode, "innerConeAngle", "beamWidth");
45516
+
45485
45517
  return lightNode;
45486
45518
  },
45487
45519
  pointLight (light)
@@ -45493,6 +45525,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45493
45525
  lightNode ._radius = this .numberValue (light .range, 0) || -1;
45494
45526
  lightNode ._attenuation = new Numbers_Vector3 (0, 0, 1);
45495
45527
 
45528
+ this .addAnimationPointerAlias (lightNode, "range", "radius");
45529
+
45496
45530
  return lightNode;
45497
45531
  },
45498
45532
  khrMaterialsVariantsObjectVariants (KHR_materials_variants)
@@ -45898,11 +45932,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45898
45932
 
45899
45933
  const texCoordIndices = this .getTexCoordIndices ("", material);
45900
45934
 
45901
- this .texCoordIndex = Array .from (texCoordIndices) .reduce ((p, c) => Math .max (p, c), -1);
45902
- this .textureTransformNodes = [ ];
45903
- this .texCoordMappings = new Map ();
45904
- this .texCoordOfNode = new Map ();
45905
- material .texCoordMappings = this .texCoordMappings;
45935
+ this .texCoordIndex = Array .from (texCoordIndices) .reduce ((p, c) => Math .max (p, c), -1);
45936
+ this .textureTransformNodes = [ ];
45937
+ this .texCoordMappings = new Map ();
45938
+ this .texCoordOfNode = new Map ();
45939
+ this .texCoordExtensionOfNode = new Map ();
45940
+ material .texCoordMappings = this .texCoordMappings;
45906
45941
 
45907
45942
  const
45908
45943
  scene = this .getScene (),
@@ -45959,6 +45994,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
45959
45994
 
45960
45995
  appearanceNode .setup ();
45961
45996
 
45997
+ material .pointers = [appearanceNode, materialNode];
45998
+
45962
45999
  return material .appearanceNode = appearanceNode;
45963
46000
  },
45964
46001
  getTexCoordIndices (key, object, indices = new Set ())
@@ -46017,6 +46054,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46017
46054
  materialNode ._metallicRoughnessTexture = this .textureInfo (pbrMetallicRoughness .metallicRoughnessTexture);
46018
46055
  materialNode ._metallicRoughnessTextureMapping = this .textureMapping (pbrMetallicRoughness .metallicRoughnessTexture);
46019
46056
 
46057
+ pbrMetallicRoughness .pointers = [materialNode];
46058
+
46020
46059
  return materialNode;
46021
46060
  },
46022
46061
  pbrSpecularGlossinessObject (pbrSpecularGlossiness)
@@ -46052,6 +46091,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46052
46091
  materialNode ._specularGlossinessTexture = this .textureInfo (pbrSpecularGlossiness .specularGlossinessTexture);
46053
46092
  materialNode ._specularGlossinessTextureMapping = this .textureMapping (pbrSpecularGlossiness .specularGlossinessTexture);
46054
46093
 
46094
+ pbrSpecularGlossiness .pointers = [materialNode];
46095
+
46055
46096
  return materialNode;
46056
46097
  },
46057
46098
  occlusionTextureInfo (occlusionTexture, materialNode)
@@ -46150,6 +46191,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46150
46191
 
46151
46192
  extension .setup ();
46152
46193
 
46194
+ KHR_materials_anisotropy .pointers = [extension];
46195
+
46153
46196
  materialNode ._extensions .push (extension);
46154
46197
  },
46155
46198
  khrMaterialsClearcoatObject (KHR_materials_clearcoat, materialNode)
@@ -46172,6 +46215,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46172
46215
 
46173
46216
  extension .setup ();
46174
46217
 
46218
+ KHR_materials_clearcoat .pointers = [extension];
46219
+
46175
46220
  materialNode ._extensions .push (extension);
46176
46221
  },
46177
46222
  khrMaterialsDiffuseTransmissionObject (KHR_materials_diffuse_transmission, materialNode)
@@ -46195,6 +46240,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46195
46240
 
46196
46241
  extension .setup ();
46197
46242
 
46243
+ KHR_materials_diffuse_transmission .pointers = [extension];
46244
+
46198
46245
  materialNode ._extensions .push (extension);
46199
46246
  },
46200
46247
  khrMaterialsDispersionObject (KHR_materials_dispersion, materialNode)
@@ -46208,6 +46255,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46208
46255
 
46209
46256
  extension .setup ();
46210
46257
 
46258
+ KHR_materials_dispersion .pointers = [extension];
46259
+
46211
46260
  materialNode ._extensions .push (extension);
46212
46261
  },
46213
46262
  khrMaterialsEmissiveStrengthObject (KHR_materials_emissive_strength, materialNode)
@@ -46221,6 +46270,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46221
46270
 
46222
46271
  extension .setup ();
46223
46272
 
46273
+ KHR_materials_emissive_strength .pointers = [extension];
46274
+
46224
46275
  materialNode ._extensions .push (extension);
46225
46276
  },
46226
46277
  khrMaterialsIorStrengthObject (KHR_materials_ior, materialNode)
@@ -46231,6 +46282,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46231
46282
 
46232
46283
  extension .setup ();
46233
46284
 
46285
+ KHR_materials_ior .pointers = [extension];
46286
+
46234
46287
  materialNode ._extensions .push (extension);
46235
46288
  },
46236
46289
  khrMaterialsIridescenceObject (KHR_materials_iridescence, materialNode)
@@ -46248,6 +46301,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46248
46301
 
46249
46302
  extension .setup ();
46250
46303
 
46304
+ KHR_materials_iridescence .pointers = [extension];
46305
+
46251
46306
  materialNode ._extensions .push (extension);
46252
46307
  },
46253
46308
  khrMaterialsSheenObject (KHR_materials_sheen, materialNode)
@@ -46271,6 +46326,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46271
46326
 
46272
46327
  extension .setup ();
46273
46328
 
46329
+ KHR_materials_sheen .pointers = [extension];
46330
+
46274
46331
  materialNode ._extensions .push (extension);
46275
46332
  },
46276
46333
  khrMaterialsSpecularObject (KHR_materials_specular, materialNode)
@@ -46294,6 +46351,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46294
46351
 
46295
46352
  extension .setup ();
46296
46353
 
46354
+ KHR_materials_specular .pointers = [extension];
46355
+
46297
46356
  materialNode ._extensions .push (extension);
46298
46357
  },
46299
46358
  khrMaterialsTransmission (KHR_materials_transmission, materialNode)
@@ -46309,6 +46368,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46309
46368
 
46310
46369
  extension .setup ();
46311
46370
 
46371
+ KHR_materials_transmission .pointers = [extension];
46372
+
46312
46373
  materialNode ._extensions .push (extension);
46313
46374
  },
46314
46375
  khrMaterialsVolumeObject (KHR_materials_volume, materialNode)
@@ -46327,6 +46388,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46327
46388
 
46328
46389
  extension .setup ();
46329
46390
 
46391
+ KHR_materials_volume .pointers = [extension];
46392
+
46330
46393
  materialNode ._extensions .push (extension);
46331
46394
  },
46332
46395
  khrMaterialsUnlitObject (KHR_materials_unlit, materialNode)
@@ -46345,6 +46408,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46345
46408
  unlitMaterialNode ._transparency = materialNode ._transparency;
46346
46409
 
46347
46410
  unlitMaterialNode .setup ();
46411
+ this .addAnimationPointerAlias (unlitMaterialNode, "baseColor", "emissiveColor");
46348
46412
 
46349
46413
  materialNode .dispose ();
46350
46414
 
@@ -46383,7 +46447,18 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46383
46447
  const existing = this .textureTransformNodes .find (node => this .texCoordOfNode .get (node) === texCoord && node ._matrix .getValue () .equals (matrix));
46384
46448
 
46385
46449
  if (existing)
46450
+ {
46451
+ Object .defineProperty (KHR_texture_transform, "pointers",
46452
+ {
46453
+ get: () =>
46454
+ {
46455
+ return this .texCoordExtensionOfNode .get (existing);
46456
+ },
46457
+ configurable: true,
46458
+ });
46459
+
46386
46460
  return existing ._mapping .getValue ();
46461
+ }
46387
46462
 
46388
46463
  // Create new TextureTransformMatrix3D.
46389
46464
 
@@ -46400,6 +46475,54 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46400
46475
  this .textureTransformNodes .push (textureTransformNode);
46401
46476
  this .texCoordMappings .set (mapping, texCoord);
46402
46477
  this .texCoordOfNode .set (textureTransformNode, texCoord);
46478
+ this .texCoordExtensionOfNode .set (textureTransformNode, KHR_texture_transform);
46479
+
46480
+ Object .defineProperty (KHR_texture_transform, "pointers",
46481
+ {
46482
+ get: () =>
46483
+ {
46484
+ const scriptNode = scene .createNode ("Script", false);
46485
+
46486
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "translation", new x_ite_Fields .SFVec2f ());
46487
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "rotation", new x_ite_Fields .SFFloat ());
46488
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "scale", new x_ite_Fields .SFVec2f (1, 1));
46489
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .SFMatrix4f ());
46490
+
46491
+ scriptNode ._url = [/* js */ `ecmascript:
46492
+
46493
+ const
46494
+ flip = new SFMatrix3f (1, 0, 0, 0, -1, 0, 0, 1, 1),
46495
+ matrix = new SFMatrix3f ();
46496
+
46497
+ function eventsProcessed ()
46498
+ {
46499
+ matrix .setTransform (translation, -rotation, scale);
46500
+
46501
+ const m = flip .multLeft (matrix);
46502
+
46503
+ value_changed [0] = m [0];
46504
+ value_changed [1] = m [1];
46505
+ value_changed [4] = m [3];
46506
+ value_changed [5] = m [4];
46507
+ value_changed [12] = m [6];
46508
+ value_changed [13] = m [7];
46509
+ }
46510
+ `];
46511
+
46512
+ scriptNode .setup ();
46513
+
46514
+ scene .addNamedNode (scene .getUniqueName ("CombineTextureMatrixScript"), scriptNode);
46515
+ scene .addRoute (scriptNode, "value_changed", textureTransformNode, "set_matrix");
46516
+
46517
+ this .addAnimationPointerAlias (scriptNode, "offset", "translation");
46518
+ this .animationScripts .push (scriptNode);
46519
+
46520
+ Object .defineProperty (KHR_texture_transform, "pointers", { value: [scriptNode] });
46521
+
46522
+ return [scriptNode];
46523
+ },
46524
+ configurable: true,
46525
+ });
46403
46526
 
46404
46527
  return mapping;
46405
46528
  },
@@ -46804,6 +46927,41 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46804
46927
 
46805
46928
  viewpointNode .setup ();
46806
46929
 
46930
+ this .addAnimationPointerAlias (viewpointNode, "znear", "nearDistance");
46931
+ this .addAnimationPointerAlias (viewpointNode, "zfar", "farDistance");
46932
+
46933
+ Object .defineProperty (camera, "pointers",
46934
+ {
46935
+ get: () =>
46936
+ {
46937
+ const scriptNode = scene .createNode ("Script", false);
46938
+
46939
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "xmag", new x_ite_Fields .SFFloat (1));
46940
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "ymag", new x_ite_Fields .SFFloat (1));
46941
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .MFFloat ());
46942
+
46943
+ scriptNode ._url = [/* js */ `ecmascript:
46944
+
46945
+ function eventsProcessed ()
46946
+ {
46947
+ value_changed = new MFFloat (-xmag, -ymag, xmag, ymag);
46948
+ }
46949
+ `];
46950
+
46951
+ scriptNode .setup ();
46952
+
46953
+ scene .addNamedNode (scene .getUniqueName ("CombineFieldOfViewScript"), scriptNode);
46954
+ scene .addRoute (scriptNode, "value_changed", viewpointNode, "set_fieldOfView");
46955
+
46956
+ this .animationScripts .push (scriptNode);
46957
+
46958
+ Object .defineProperty (camera, "pointers", { value: [viewpointNode, scriptNode] });
46959
+
46960
+ return [viewpointNode, scriptNode];
46961
+ },
46962
+ configurable: true,
46963
+ });
46964
+
46807
46965
  return viewpointNode;
46808
46966
  },
46809
46967
  perspectiveCamera (camera)
@@ -46816,7 +46974,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46816
46974
  viewpointNode = scene .createNode ("Viewpoint", false);
46817
46975
 
46818
46976
  if (typeof camera .yfov === "number")
46819
- viewpointNode ._fieldOfView = camera .yfov
46977
+ viewpointNode ._fieldOfView = camera .yfov;
46820
46978
 
46821
46979
  if (typeof camera .znear === "number")
46822
46980
  viewpointNode ._nearDistance = camera .znear;
@@ -46826,6 +46984,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46826
46984
 
46827
46985
  viewpointNode .setup ();
46828
46986
 
46987
+ this .addAnimationPointerAlias (viewpointNode, "yfov", "fieldOfView");
46988
+ this .addAnimationPointerAlias (viewpointNode, "znear", "nearDistance");
46989
+ this .addAnimationPointerAlias (viewpointNode, "zfar", "farDistance");
46990
+
46991
+ camera .pointers = [viewpointNode];
46992
+
46829
46993
  return viewpointNode;
46830
46994
  },
46831
46995
  nodesArray (nodes)
@@ -46866,13 +47030,12 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
46866
47030
  {
46867
47031
  // Skins can be cloned.
46868
47032
 
46869
- if (!skin .humanoidNode)
46870
- skin .humanoidNode = scene .createNode ("HAnimHumanoid", false);
46871
-
46872
- node .humanoidNode = skin .humanoidNode;
47033
+ skin .humanoidNode ??= scene .createNode ("HAnimHumanoid", false);
47034
+ node .humanoidNode = skin .humanoidNode;
46873
47035
  }
46874
47036
 
46875
47037
  node .childNode = node .humanoidNode ?? node .transformNode;
47038
+ node .pointers = [node .childNode];
46876
47039
 
46877
47040
  return node;
46878
47041
  },
@@ -47113,7 +47276,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47113
47276
 
47114
47277
  return matrices;
47115
47278
  },
47116
- scenesArray (scenes, sceneNumber = 0)
47279
+ scenesArray (glTF, scenes, sceneNumber = 0)
47117
47280
  {
47118
47281
  if (!(scenes instanceof Array))
47119
47282
  return;
@@ -47154,6 +47317,10 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47154
47317
 
47155
47318
  switchNode .setup ();
47156
47319
 
47320
+ this .addAnimationPointerAlias (switchNode, "scene", "whichChoice");
47321
+
47322
+ glTF .pointers = [switchNode];
47323
+
47157
47324
  scene .getRootNodes () .push (switchNode);
47158
47325
  return;
47159
47326
  }
@@ -47299,6 +47466,8 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47299
47466
  if (!(samplers instanceof Array))
47300
47467
  return [ ];
47301
47468
 
47469
+ // Determine cycleInterval.
47470
+
47302
47471
  const cycleInterval = samplers
47303
47472
  .map (sampler => this .accessors [sampler .input])
47304
47473
  .filter (input => input ?.array .length)
@@ -47306,8 +47475,25 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
47306
47475
 
47307
47476
  timeSensorNode ._cycleInterval = cycleInterval;
47308
47477
 
47309
- return channels
47478
+ // Get interpolators.
47479
+
47480
+ channels = channels
47310
47481
  .flatMap (channel => this .animationChannelObject (channel, samplers, timeSensorNode));
47482
+
47483
+ // Insert Script nodes after last interpolator.
47484
+
47485
+ for (const scriptNode of this .animationScripts)
47486
+ {
47487
+ const index = channels .findLastIndex (node => node .getFields ()
47488
+ .some (field => Array .from (field .getOutputRoutes ())
47489
+ .some (route => route .getDestinationNode () === scriptNode)));
47490
+
47491
+ channels .splice (index + 1, 0, scriptNode);
47492
+ }
47493
+
47494
+ this .animationScripts .length = 0;
47495
+
47496
+ return channels;
47311
47497
  },
47312
47498
  animationChannelObject (channel, samplers, timeSensorNode)
47313
47499
  {
@@ -48132,38 +48318,19 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48132
48318
 
48133
48319
  switch (target .path)
48134
48320
  {
48135
- case "translation":
48321
+ case "pointer":
48136
48322
  {
48137
- const interpolatorNode = this .createPositionInterpolator (interpolation, times, keyValues .array, cycleInterval);
48138
-
48139
- scene .addNamedNode (scene .getUniqueName ("TranslationInterpolator"), interpolatorNode);
48323
+ const [node, field] = this .getAnimationPointer (target .extensions ?.KHR_animation_pointer ?.pointer);
48140
48324
 
48141
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48142
- scene .addRoute (interpolatorNode, "value_changed", node, "set_translation");
48143
-
48144
- return interpolatorNode;
48325
+ return this .createAnimationPointerInterpolator (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval);
48145
48326
  }
48327
+ case "translation":
48146
48328
  case "rotation":
48147
- {
48148
- const interpolatorNode = this .createOrientationInterpolator (interpolation, times, keyValues .array, cycleInterval);
48149
-
48150
- scene .addNamedNode (scene .getUniqueName ("RotationInterpolator"), interpolatorNode);
48151
-
48152
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48153
- scene .addRoute (interpolatorNode, "value_changed", node, "set_rotation");
48154
-
48155
- return interpolatorNode;
48156
- }
48157
48329
  case "scale":
48158
48330
  {
48159
- const interpolatorNode = this .createPositionInterpolator (interpolation, times, keyValues .array, cycleInterval);
48331
+ const field = node .getField (target .path);
48160
48332
 
48161
- scene .addNamedNode (scene .getUniqueName ("ScaleInterpolator"), interpolatorNode);
48162
-
48163
- scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48164
- scene .addRoute (interpolatorNode, "value_changed", node, "set_scale");
48165
-
48166
- return interpolatorNode;
48333
+ return this .createAnimationPointerInterpolator (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval);
48167
48334
  }
48168
48335
  case "weights":
48169
48336
  {
@@ -48190,7 +48357,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48190
48357
  interpolatorNodes .push (coordinateInterpolatorNode);
48191
48358
 
48192
48359
  scene .addRoute (timeSensorNode, "fraction_changed", coordinateInterpolatorNode, "set_fraction");
48193
- scene .addRoute (coordinateInterpolatorNode, "value_changed", geometryNode ._coord, "set_point");
48360
+ scene .addRoute (coordinateInterpolatorNode, "value_changed", geometryNode ._coord, "point");
48194
48361
  }
48195
48362
 
48196
48363
  const normalInterpolatorNode = this .createArrayInterpolator ("NormalInterpolator", interpolation, times, keyValues .array, cycleInterval, targets, attributes, "NORMAL");
@@ -48200,63 +48367,252 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48200
48367
  interpolatorNodes .push (normalInterpolatorNode);
48201
48368
 
48202
48369
  scene .addRoute (timeSensorNode, "fraction_changed", normalInterpolatorNode, "set_fraction");
48203
- scene .addRoute (normalInterpolatorNode, "value_changed", geometryNode ._normal, "set_vector");
48370
+ scene .addRoute (normalInterpolatorNode, "value_changed", geometryNode ._normal, "vector");
48204
48371
  }
48205
48372
  }
48206
48373
 
48207
48374
  return interpolatorNodes;
48208
48375
  }
48209
- case "pointer":
48376
+ default:
48210
48377
  {
48211
- // const
48212
- // pointer = target .extensions ?.KHR_animation_pointer ?.pointer ?? "",
48213
- // path = pointer .split ("/") .filter (p => p)
48214
- // name = path .pop ();
48215
-
48216
- // let glTF = this .input;
48378
+ return [ ];
48379
+ }
48380
+ }
48381
+ },
48382
+ createAnimationPointerInterpolator: (function ()
48383
+ {
48384
+ const interpolators = new Map ([
48385
+ [Base_X3DConstants .SFBool, { typeName: "BooleanSequencer" }],
48386
+ [Base_X3DConstants .SFInt32, { typeName: "IntegerSequencer" }],
48387
+ [Base_X3DConstants .SFFloat, { typeName: "ScalarInterpolator", components: 1 }],
48388
+ [Base_X3DConstants .SFVec2f, { typeName: "PositionInterpolator2D", components: 2 }],
48389
+ [Base_X3DConstants .SFVec3f, { typeName: "PositionInterpolator", components: 3 }],
48390
+ ]);
48217
48391
 
48218
- // for (const property of path)
48219
- // glTF = glTF [property]
48392
+ return function (timeSensorNode, node, field, interpolation, times, keyValues, cycleInterval)
48393
+ {
48394
+ if (!(node && field))
48395
+ return [ ];
48220
48396
 
48221
- // console .log (glTF)
48397
+ const scene = this .getScene ();
48222
48398
 
48223
- return [ ];
48224
- }
48225
- default:
48399
+ switch (field .getType ())
48226
48400
  {
48227
- return [ ];
48401
+ case Base_X3DConstants .SFColor:
48402
+ {
48403
+ const interpolatorNodes = [ ];
48404
+
48405
+ switch ((keyValues .array .length / times .length) % 3)
48406
+ {
48407
+ case 0: // Color3 pointer
48408
+ {
48409
+ var colors = keyValues .array;
48410
+ break;
48411
+ }
48412
+ default: // Color4 pointer
48413
+ {
48414
+ var
48415
+ colors = keyValues .array .filter ((_, i) => i % 4 < 3),
48416
+ transparencies = keyValues .array .filter ((_, i) => i % 4 === 3);
48417
+
48418
+ transparencies = transparencies .every (value => value >= 1)
48419
+ ? undefined
48420
+ : transparencies .map (value => 1 - value);
48421
+
48422
+ break;
48423
+ }
48424
+ }
48425
+
48426
+ const interpolatorNode = this .createNamedInterpolator ("ColorInterpolator", 3, interpolation, times, colors, cycleInterval);
48427
+
48428
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48429
+
48430
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48431
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48432
+
48433
+ interpolatorNodes .push (interpolatorNode);
48434
+
48435
+ // These are currently the only two affected fields, which are SFColor but pointer is Color4.
48436
+ if (field .getName () .match (/^(?:baseColor|emissiveColor)$/) && transparencies)
48437
+ {
48438
+ const interpolatorNode = this .createNamedInterpolator ("ScalarInterpolator", 1, interpolation, times, transparencies, cycleInterval);
48439
+
48440
+ scene .addNamedNode (scene .getUniqueName ("TransparencyInterpolator"), interpolatorNode);
48441
+
48442
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48443
+ scene .addRoute (interpolatorNode, "value_changed", node, "transparency");
48444
+
48445
+ interpolatorNodes .push (interpolatorNode);
48446
+ }
48447
+
48448
+ return interpolatorNodes;
48449
+ }
48450
+ case Base_X3DConstants .SFColorRGBA:
48451
+ {
48452
+ const interpolatorNodes = [ ];
48453
+
48454
+ var
48455
+ colors = keyValues .array .filter ((_, i) => i % 4 < 3),
48456
+ transparencies = keyValues .array .filter ((_, i) => i % 4 === 3);
48457
+
48458
+ transparencies = transparencies .every (value => value >= 1)
48459
+ ? undefined
48460
+ : transparencies .map (value => 1 - value);
48461
+
48462
+ // Script
48463
+
48464
+ const scriptNode = scene .createNode ("Script", false);
48465
+
48466
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "color", new x_ite_Fields .SFColor (1, 1, 1));
48467
+ scriptNode .addUserDefinedField (Base_X3DConstants .inputOutput, "alpha" , new x_ite_Fields .SFFloat (1));
48468
+ scriptNode .addUserDefinedField (Base_X3DConstants .outputOnly, "value_changed", new x_ite_Fields .SFColorRGBA ());
48469
+
48470
+ scriptNode ._url = [/* js */ `ecmascript:
48471
+
48472
+ function eventsProcessed ()
48473
+ {
48474
+ value_changed = new SFColorRGBA (... color, alpha);
48475
+ }
48476
+ `];
48477
+
48478
+ scriptNode .setup ();
48479
+
48480
+ scene .addNamedNode (scene .getUniqueName ("CombineColorRGBAScript"), scriptNode);
48481
+ scene .addRoute (scriptNode, "value_changed", node, field .getName ());
48482
+
48483
+ // ColorInterpolator
48484
+
48485
+ const interpolatorNode = this .createNamedInterpolator ("ColorInterpolator", 3, interpolation, times, colors, cycleInterval);
48486
+
48487
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48488
+
48489
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48490
+ scene .addRoute (interpolatorNode, "value_changed", scriptNode, "color");
48491
+
48492
+ interpolatorNodes .push (interpolatorNode);
48493
+
48494
+ // AlphaInterpolator
48495
+
48496
+ if (transparencies)
48497
+ {
48498
+ const interpolatorNode = this .createNamedInterpolator ("ScalarInterpolator", 1, interpolation, times, transparencies, cycleInterval);
48499
+
48500
+ scene .addNamedNode (scene .getUniqueName ("AlphaInterpolator"), interpolatorNode);
48501
+
48502
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48503
+ scene .addRoute (interpolatorNode, "value_changed", scriptNode, "alpha");
48504
+
48505
+ interpolatorNodes .push (interpolatorNode);
48506
+ }
48507
+
48508
+ interpolatorNodes .push (scriptNode);
48509
+
48510
+ return interpolatorNodes;
48511
+ }
48512
+ case Base_X3DConstants .SFRotation:
48513
+ {
48514
+ const interpolatorNode = this .createOrientationInterpolator (interpolation, times, keyValues .array, cycleInterval);
48515
+
48516
+ scene .addNamedNode (scene .getUniqueName (`${GLTF2Parser_$.toUpperCaseFirst (field .getName ())}Interpolator`), interpolatorNode);
48517
+
48518
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48519
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48520
+
48521
+ return interpolatorNode;
48522
+ }
48523
+ case Base_X3DConstants .SFBool:
48524
+ case Base_X3DConstants .SFInt32:
48525
+ case Base_X3DConstants .SFFloat:
48526
+ case Base_X3DConstants .SFVec2f:
48527
+ case Base_X3DConstants .SFVec3f:
48528
+ {
48529
+ const
48530
+ { typeName, components} = interpolators .get (field .getType ()),
48531
+ suffix = typeName .replace (/^.*?(Sequencer|Interpolator).*?$/, "$1");
48532
+
48533
+ const interpolatorNode = this .createNamedInterpolator (typeName, components, components ? interpolation : "LINEAR", times, keyValues .array, cycleInterval);
48534
+
48535
+ scene .addNamedNode (scene .getUniqueName (GLTF2Parser_$.toUpperCaseFirst (field .getName ()) + suffix), interpolatorNode);
48536
+
48537
+ scene .addRoute (timeSensorNode, "fraction_changed", interpolatorNode, "set_fraction");
48538
+ scene .addRoute (interpolatorNode, "value_changed", node, field .getName ());
48539
+
48540
+ return interpolatorNode;
48541
+ }
48542
+ default:
48543
+ {
48544
+ return [ ];
48545
+ }
48228
48546
  }
48229
- }
48547
+ };
48548
+ })(),
48549
+ getAnimationPointer (pointer = "")
48550
+ {
48551
+ const
48552
+ path = pointer .split ("/") .filter (p => p),
48553
+ field = path .pop () .replace (/(?:Factor$)/, "");
48554
+
48555
+ let glTF = this .input;
48556
+
48557
+ for (const property of path)
48558
+ glTF = glTF ?.[property];
48559
+
48560
+ return glTF ?.pointers
48561
+ ?.map (node => [node, GLTF2Parser_$.try (() => node ?.getField (this .getAnimationPointerAlias (node, field) ?? field))])
48562
+ ?.find (([node, field]) => field)
48563
+ ?? [ ];
48230
48564
  },
48231
- createPositionInterpolator (interpolation, times, keyValues, cycleInterval)
48565
+ addAnimationPointerAlias (node, field, alias)
48232
48566
  {
48233
- const scene = this .getScene ();
48567
+ const key = `${node .getTypeName ()}.${field}`;
48568
+
48569
+ this .pointerAliases .set (key, alias);
48570
+ },
48571
+ getAnimationPointerAlias (node, field)
48572
+ {
48573
+ const key = `${node .getTypeName ()}.${field}`;
48574
+
48575
+ return this .pointerAliases .get (key);
48576
+ },
48577
+ createNamedInterpolator (typeName, components, interpolation, times, keyValues, cycleInterval)
48578
+ {
48579
+ const
48580
+ scene = this .getScene (),
48581
+ interpolatorNode = scene .createNode (typeName, false);
48234
48582
 
48235
48583
  switch (interpolation)
48236
48584
  {
48237
48585
  case "STEP":
48238
48586
  {
48239
- const interpolatorNode = scene .createNode ("PositionInterpolator", false);
48587
+ const
48588
+ key = [ ],
48589
+ keyValue = [ ];
48240
48590
 
48241
48591
  // Key
48242
48592
 
48243
- interpolatorNode ._key .push (times [0] / cycleInterval);
48593
+ key .push (times [0] / cycleInterval);
48244
48594
 
48245
48595
  for (let i = 1, length = times .length; i < length; ++ i)
48246
- interpolatorNode ._key .push (times [i] / cycleInterval, times [i] / cycleInterval);
48596
+ key .push (times [i] / cycleInterval, times [i] / cycleInterval);
48247
48597
 
48248
48598
  // KeyValue
48249
48599
 
48250
- interpolatorNode ._keyValue .push (new Numbers_Vector3 (keyValues [0], keyValues [1], keyValues [2]));
48600
+ const components2 = components * 2;
48601
+
48602
+ for (let c = 0; c < components; ++ c)
48603
+ keyValue .push (keyValues [c]);
48251
48604
 
48252
- for (let i = 0, length = keyValues .length - 3; i < length; i += 3)
48605
+ for (let i = 0, length = keyValues .length - components; i < length; i += components)
48253
48606
  {
48254
- interpolatorNode ._keyValue .push (new Numbers_Vector3 (keyValues [i + 0], keyValues [i + 1], keyValues [i + 2]),
48255
- new Numbers_Vector3 (keyValues [i + 3], keyValues [i + 4], keyValues [i + 5]));
48607
+ for (let c = 0; c < components2; ++ c)
48608
+ keyValue .push (keyValues [i + c]);
48256
48609
  }
48257
48610
 
48258
48611
  // Finish
48259
48612
 
48613
+ interpolatorNode ._key = key;
48614
+ interpolatorNode ._keyValue = keyValue;
48615
+
48260
48616
  interpolatorNode .setup ();
48261
48617
 
48262
48618
  return interpolatorNode;
@@ -48264,8 +48620,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48264
48620
  default:
48265
48621
  case "LINEAR":
48266
48622
  {
48267
- const interpolatorNode = scene .createNode ("PositionInterpolator", false);
48268
-
48269
48623
  interpolatorNode ._key = times .map (t => t / cycleInterval);
48270
48624
  interpolatorNode ._keyValue = keyValues;
48271
48625
 
@@ -48276,14 +48630,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48276
48630
  case "CUBICSPLINE":
48277
48631
  {
48278
48632
  const
48279
- interpolatorNode = scene .createNode ("PositionInterpolator", false),
48280
- vectors = [ ];
48633
+ key = [ ],
48634
+ keyValue = [ ],
48635
+ vectors = [ ],
48636
+ Vector = [Numbers_Vector2, Numbers_Vector2, Numbers_Vector3] [components - 1];
48281
48637
 
48282
- for (let i = 0, length = keyValues .length; i < length; i += 3)
48638
+ for (let i = 0, length = keyValues .length; i < length; i += components)
48283
48639
  {
48284
- vectors .push (new Numbers_Vector3 (keyValues [i + 0],
48285
- keyValues [i + 1],
48286
- keyValues [i + 2]));
48640
+ vectors .push (new Vector (... keyValues .subarray (i, i + components)));
48287
48641
  }
48288
48642
 
48289
48643
  const
@@ -48292,10 +48646,15 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48292
48646
 
48293
48647
  for (const t of samples)
48294
48648
  {
48295
- interpolatorNode ._key .push (t / cycleInterval);
48296
- interpolatorNode ._keyValue .push (this .cubicSplineVector (t, times, vectors));
48649
+ key .push (t / cycleInterval);
48650
+ keyValue .push (... this .cubicSplineVector (t, times, vectors));
48297
48651
  }
48298
48652
 
48653
+ // Finish
48654
+
48655
+ interpolatorNode ._key = key;
48656
+ interpolatorNode ._keyValue = components === 1 ? keyValue .filter ((_, i) => i % 2 < 1) : keyValue;
48657
+
48299
48658
  interpolatorNode .setup ();
48300
48659
 
48301
48660
  return interpolatorNode;
@@ -48304,14 +48663,14 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48304
48663
  },
48305
48664
  createOrientationInterpolator (interpolation, times, keyValues, cycleInterval)
48306
48665
  {
48307
- const scene = this .getScene ();
48666
+ const
48667
+ scene = this .getScene (),
48668
+ interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48308
48669
 
48309
48670
  switch (interpolation)
48310
48671
  {
48311
48672
  case "STEP":
48312
48673
  {
48313
- const interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48314
-
48315
48674
  // Key
48316
48675
 
48317
48676
  interpolatorNode ._key .push (times [0] / cycleInterval);
@@ -48347,8 +48706,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48347
48706
  default:
48348
48707
  case "LINEAR":
48349
48708
  {
48350
- const interpolatorNode = scene .createNode ("OrientationInterpolator", false);
48351
-
48352
48709
  interpolatorNode ._key = times .map (t => t / cycleInterval);
48353
48710
 
48354
48711
  for (let i = 0, length = keyValues .length; i < length; i += 4)
@@ -48365,9 +48722,7 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48365
48722
  }
48366
48723
  case "CUBICSPLINE":
48367
48724
  {
48368
- const
48369
- interpolatorNode = scene .createNode ("OrientationInterpolator", false),
48370
- quaternions = [ ];
48725
+ const quaternions = [ ];
48371
48726
 
48372
48727
  for (let i = 0, length = keyValues .length; i < length; i += 4)
48373
48728
  {
@@ -48397,19 +48752,19 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48397
48752
  },
48398
48753
  createArrayInterpolator (typeName, interpolation, times, weights, cycleInterval, targets, accessors, key)
48399
48754
  {
48400
- const
48401
- scene = this .getScene (),
48402
- accessor = accessors [key];
48755
+ const accessor = accessors [key];
48403
48756
 
48404
48757
  if (!accessor)
48405
48758
  return null;
48406
48759
 
48760
+ const
48761
+ scene = this .getScene (),
48762
+ interpolatorNode = scene .createNode (typeName, false);
48763
+
48407
48764
  switch (interpolation)
48408
48765
  {
48409
48766
  case "STEP":
48410
48767
  {
48411
- const interpolatorNode = scene .createNode (typeName, false);
48412
-
48413
48768
  // Key
48414
48769
 
48415
48770
  interpolatorNode ._key .push (times [0] / cycleInterval);
@@ -48446,8 +48801,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48446
48801
  default:
48447
48802
  case "LINEAR":
48448
48803
  {
48449
- const interpolatorNode = scene .createNode (typeName, false);
48450
-
48451
48804
  // Key
48452
48805
 
48453
48806
  interpolatorNode ._key = times .map (t => t / cycleInterval);
@@ -48470,8 +48823,6 @@ Object .assign (Object .setPrototypeOf (GLTF2Parser .prototype, Parser_X3DParser
48470
48823
  }
48471
48824
  case "CUBICSPLINE":
48472
48825
  {
48473
- const interpolatorNode = scene .createNode (typeName, false);
48474
-
48475
48826
  // Key
48476
48827
 
48477
48828
  const
@@ -48610,7 +48961,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
48610
48961
 
48611
48962
  /* harmony default export */ const Parser_GLTF2Parser = (x_ite_Namespace .add ("GLTF2Parser", GLTF2Parser_default_));
48612
48963
  ;// ./src/x_ite/Parser/GLB2Parser.js
48613
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(445);
48964
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(394);
48614
48965
  /*******************************************************************************
48615
48966
  *
48616
48967
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -48761,7 +49112,7 @@ const GLB2Parser_default_ = GLB2Parser;
48761
49112
 
48762
49113
  /* harmony default export */ const Parser_GLB2Parser = (x_ite_Namespace .add ("GLB2Parser", GLB2Parser_default_));
48763
49114
  ;// ./src/x_ite/Parser/OBJParser.js
48764
- /* provided dependency */ var OBJParser_$ = __webpack_require__(445);
49115
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(394);
48765
49116
  /*******************************************************************************
48766
49117
  *
48767
49118
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -51326,7 +51677,7 @@ Object .assign (Complex .prototype,
51326
51677
  return this .real === complex .real &&
51327
51678
  this .imag === complex .imag;
51328
51679
  },
51329
- set (real, imag)
51680
+ set (real = 0, imag = 0)
51330
51681
  {
51331
51682
  this .real = real;
51332
51683
  this .imag = imag;
@@ -51490,10 +51841,6 @@ Object .assign (Complex,
51490
51841
  {
51491
51842
  return Object .create (Complex .prototype) .setPolar (magnitude, angle);
51492
51843
  },
51493
- multiply (lhs, rhs)
51494
- {
51495
- return lhs .copy () .multiply (rhs);
51496
- },
51497
51844
  });
51498
51845
 
51499
51846
  const Complex_default_ = Complex;
@@ -52132,8 +52479,8 @@ const MatrixStack_default_ = MatrixStack;
52132
52479
 
52133
52480
  /* harmony default export */ const Utility_MatrixStack = (x_ite_Namespace .add ("MatrixStack", MatrixStack_default_));
52134
52481
  ;// ./src/x_ite/Parser/SVGParser.js
52135
- /* provided dependency */ var SVGParser_$ = __webpack_require__(445);
52136
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(294);
52482
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(394);
52483
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(787);
52137
52484
  /*******************************************************************************
52138
52485
  *
52139
52486
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -54912,7 +55259,7 @@ const SVGParser_default_ = SVGParser;
54912
55259
 
54913
55260
  /* harmony default export */ const Parser_SVGParser = (x_ite_Namespace .add ("SVGParser", SVGParser_default_));
54914
55261
  ;// ./src/x_ite/Parser/GoldenGate.js
54915
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(445);
55262
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(394);
54916
55263
  /*******************************************************************************
54917
55264
  *
54918
55265
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -62931,7 +63278,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
62931
63278
 
62932
63279
  /* harmony default export */ const Texturing_X3DTexture2DNode = (x_ite_Namespace .add ("X3DTexture2DNode", X3DTexture2DNode_default_));
62933
63280
  ;// ./src/x_ite/Components/Texturing/ImageTexture.js
62934
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(445);
63281
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(394);
62935
63282
  /*******************************************************************************
62936
63283
  *
62937
63284
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -63071,7 +63418,7 @@ Object .assign (Object .setPrototypeOf (ImageTexture .prototype, Texturing_X3DTe
63071
63418
  setError (event)
63072
63419
  {
63073
63420
  if (this .URL .protocol !== "data:")
63074
- console .warn (`Error loading image '${decodeURI (this .URL .href)}'`, event .type);
63421
+ console .warn (`Error loading image '${decodeURI (this .URL .href)}:'`, event .type);
63075
63422
 
63076
63423
  this .loadNext ();
63077
63424
  },
@@ -66357,7 +66704,7 @@ const X3DWorld_default_ = X3DWorld;
66357
66704
 
66358
66705
  /* harmony default export */ const Execution_X3DWorld = (x_ite_Namespace .add ("X3DWorld", X3DWorld_default_));
66359
66706
  ;// ./src/x_ite/InputOutput/FileLoader.js
66360
- /* provided dependency */ var FileLoader_$ = __webpack_require__(445);
66707
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(394);
66361
66708
  /*******************************************************************************
66362
66709
  *
66363
66710
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67321,7 +67668,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
67321
67668
 
67322
67669
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (x_ite_Namespace .add ("ProtoDeclarationArray", ProtoDeclarationArray_default_));
67323
67670
  ;// ./src/x_ite/Routing/X3DRoute.js
67324
- /* provided dependency */ var X3DRoute_$ = __webpack_require__(445);
67671
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(394);
67325
67672
  /*******************************************************************************
67326
67673
  *
67327
67674
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -90997,7 +91344,7 @@ mediump samplerCube textureCube;
90997
91344
 
90998
91345
  /* harmony default export */ const MaterialTextures = (x_ite_Namespace .add ("MaterialTextures", MaterialTextures_default_));
90999
91346
  ;// ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
91000
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(445);
91347
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(394);
91001
91348
  /*******************************************************************************
91002
91349
  *
91003
91350
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -94375,20 +94722,20 @@ NormalInfo info;info.ng=ng;
94375
94722
  #if defined(X3D_NORMAL_TEXTURE)
94376
94723
  #if __VERSION__==100
94377
94724
  #if defined(X3D_NORMAL_TEXTURE_2D)
94378
- info.ntex=texture2D(x3d_NormalTexture.texture2D,UV.st).rgb;
94725
+ vec3 ntex=texture2D(x3d_NormalTexture.texture2D,UV.st).rgb;
94379
94726
  #elif defined(X3D_NORMAL_TEXTURE_CUBE)
94380
- info.ntex=textureCube(x3d_NormalTexture.textureCube,UV).rgb;
94727
+ vec3 ntex=textureCube(x3d_NormalTexture.textureCube,UV).rgb;
94381
94728
  #endif
94382
94729
  #else
94383
94730
  #if defined(X3D_NORMAL_TEXTURE_2D)
94384
- info.ntex=texture(x3d_NormalTexture.texture2D,UV.st).rgb;
94731
+ vec3 ntex=texture(x3d_NormalTexture.texture2D,UV.st).rgb;
94385
94732
  #elif defined(X3D_NORMAL_TEXTURE_3D)
94386
- info.ntex=texture(x3d_NormalTexture.texture3D,UV).rgb;
94733
+ vec3 ntex=texture(x3d_NormalTexture.texture3D,UV).rgb;
94387
94734
  #elif defined(X3D_NORMAL_TEXTURE_CUBE)
94388
- info.ntex=texture(x3d_NormalTexture.textureCube,UV).rgb;
94735
+ vec3 ntex=texture(x3d_NormalTexture.textureCube,UV).rgb;
94389
94736
  #endif
94390
94737
  #endif
94391
- info.ntex=info.ntex*2.0-vec3(1.0);info.ntex*=vec3(vec2(normalScale),1.0);info.ntex=normalize(info.ntex);info.n=normalize(mat3(t,b,ng)*info.ntex);
94738
+ ntex=ntex*2.0-vec3(1.0);ntex*=vec3(vec2(normalScale),1.0);ntex=normalize(ntex);info.ntex=ntex;info.n=normalize(mat3(t,b,ng)*ntex);
94392
94739
  #else
94393
94740
  info.n=ng;
94394
94741
  #endif
@@ -95940,7 +96287,7 @@ vec3 getPunctualRadianceClearCoat(const in vec3 clearcoatNormal,const in vec3 v,
95940
96287
  #endif
95941
96288
  #endif
95942
96289
  #if defined(X3D_TRANSMISSION_MATERIAL_EXT)
95943
- vec3 getPunctualRadianceTransmission(const in vec3 n,const in vec3 v,const in vec3 l,const in float alphaRoughness,const in vec3 f0,const in vec3 f90,const in vec3 baseColor,const in float ior){float transmissionRoughness=applyIorToRoughness(alphaRoughness,ior);vec3 l_mirror=normalize(l+2.0*n*dot(-l,n));vec3 h=normalize(l_mirror+v);float D=D_GGX(clamp(dot(n,h),0.0,1.0),transmissionRoughness);vec3 F=F_Schlick(f0,f90,clamp(dot(v,h),0.0,1.0));float Vis=V_GGX(clamp(dot(n,l_mirror),0.0,1.0),clamp(dot(n,v),0.0,1.0),transmissionRoughness);return(1.0-F)*baseColor*D*Vis;}vec3 applyVolumeAttenuation(const in vec3 radiance,const in float transmissionDistance,const in vec3 attenuationColor,const in float attenuationDistance){if(attenuationDistance==0.0){return radiance;}else{vec3 attenuationCoefficient=log(attenuationColor)/attenuationDistance;vec3 transmittance=exp(attenuationCoefficient*transmissionDistance);return transmittance*radiance;}}vec3 getVolumeTransmissionRay(const in vec3 n,const in vec3 v,const in float thickness,const in float ior,const in mat4 modelMatrix){vec3 refractionVector=refract(-v,normalize(n),1.0/ior);vec3 modelScale;modelScale.x=length(vec3(modelMatrix[0].xyz));modelScale.y=length(vec3(modelMatrix[1].xyz));modelScale.z=length(vec3(modelMatrix[2].xyz));return normalize(refractionVector)*thickness*modelScale;}
96290
+ vec3 getPunctualRadianceTransmission(const in vec3 n,const in vec3 v,const in vec3 l,const in float alphaRoughness,const in vec3 f0,const in vec3 f90,const in vec3 baseColor,const in float ior){float transmissionRoughness=applyIorToRoughness(alphaRoughness,ior);vec3 l_mirror=normalize(l+2.0*n*dot(-l,n));vec3 h=normalize(l_mirror+v);float D=D_GGX(clamp(dot(n,h),0.0,1.0),transmissionRoughness);vec3 F=F_Schlick(f0,f90,clamp(dot(v,h),0.0,1.0));float Vis=V_GGX(clamp(dot(n,l_mirror),0.0,1.0),clamp(dot(n,v),0.0,1.0),transmissionRoughness);return(1.0-F)*baseColor*D*Vis;}vec3 applyVolumeAttenuation(const in vec3 radiance,const in float transmissionDistance,const in vec3 attenuationColor,const in float attenuationDistance){if(attenuationDistance==0.0){return radiance;}else{vec3 attenuationCoefficient=log(attenuationColor)/attenuationDistance;vec3 transmittance=exp(attenuationCoefficient*transmissionDistance);return transmittance*radiance;}}vec3 getVolumeTransmissionRay(const in vec3 n,const in vec3 v,const in float thickness,const in float ior,in mat4 modelMatrix){vec3 refractionVector=refract(-v,normalize(n),1.0/ior);vec3 modelScale;modelScale.x=length(modelMatrix[0].xyz);modelScale.y=length(modelMatrix[1].xyz);modelScale.z=length(modelMatrix[2].xyz);return normalize(refractionVector)*thickness*modelScale;}
95944
96291
  #endif
95945
96292
  `
95946
96293
  ;
@@ -96294,7 +96641,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
96294
96641
 
96295
96642
  /* harmony default export */ const Shaders_ShaderCompiler = (x_ite_Namespace .add ("ShaderCompiler", ShaderCompiler_default_));
96296
96643
  ;// ./src/x_ite/Components/Shaders/ShaderPart.js
96297
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(445);
96644
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(394);
96298
96645
  /*******************************************************************************
96299
96646
  *
96300
96647
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -96892,7 +97239,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
96892
97239
 
96893
97240
  /* harmony default export */ const Shape_X3DAppearanceNode = (x_ite_Namespace .add ("X3DAppearanceNode", X3DAppearanceNode_default_));
96894
97241
  ;// ./src/x_ite/Components/Shape/Appearance.js
96895
- /* provided dependency */ var Appearance_$ = __webpack_require__(445);
97242
+ /* provided dependency */ var Appearance_$ = __webpack_require__(394);
96896
97243
  /*******************************************************************************
96897
97244
  *
96898
97245
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105115,8 +105462,8 @@ const GifMedia_default_ = GifMedia;
105115
105462
 
105116
105463
  /* harmony default export */ const Texturing_GifMedia = (x_ite_Namespace .add ("GifMedia", GifMedia_default_));
105117
105464
  ;// ./src/x_ite/Components/Texturing/MovieTexture.js
105118
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(445);
105119
- /* provided dependency */ var SuperGif = __webpack_require__(782);
105465
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(394);
105466
+ /* provided dependency */ var SuperGif = __webpack_require__(485);
105120
105467
  /*******************************************************************************
105121
105468
  *
105122
105469
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105286,7 +105633,7 @@ Object .assign (Object .setPrototypeOf (MovieTexture .prototype, Texturing_X3DTe
105286
105633
  setError (event)
105287
105634
  {
105288
105635
  if (this .URL .protocol !== "data:")
105289
- console .warn (`Error loading movie '${decodeURI (this .URL .href)}'`, event .type);
105636
+ console .warn (`Error loading movie '${decodeURI (this .URL .href)}':`, event .type);
105290
105637
 
105291
105638
  this .loadNext ();
105292
105639
  },
@@ -107584,7 +107931,7 @@ const gettext_default_ = (string) => locale .get (string) || string;
107584
107931
 
107585
107932
  /* harmony default export */ const gettext = (x_ite_Namespace .add ("gettext", gettext_default_));
107586
107933
  ;// ./src/x_ite/Browser/Core/BrowserTimings.js
107587
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(445);
107934
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(394);
107588
107935
  /*******************************************************************************
107589
107936
  *
107590
107937
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108214,7 +108561,7 @@ const TextCompression_default_ = TextCompression;
108214
108561
 
108215
108562
  /* harmony default export */ const Core_TextCompression = (x_ite_Namespace .add ("TextCompression", TextCompression_default_));
108216
108563
  ;// ./src/x_ite/Browser/Core/BrowserOptions.js
108217
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(445);
108564
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(394);
108218
108565
  /*******************************************************************************
108219
108566
  *
108220
108567
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108861,7 +109208,7 @@ const RenderingProperties_default_ = RenderingProperties;
108861
109208
 
108862
109209
  /* harmony default export */ const Core_RenderingProperties = (x_ite_Namespace .add ("RenderingProperties", RenderingProperties_default_));
108863
109210
  ;// ./src/x_ite/Browser/Core/Notification.js
108864
- /* provided dependency */ var Notification_$ = __webpack_require__(445);
109211
+ /* provided dependency */ var Notification_$ = __webpack_require__(394);
108865
109212
  /*******************************************************************************
108866
109213
  *
108867
109214
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108983,8 +109330,8 @@ const Notification_default_ = Notification;
108983
109330
 
108984
109331
  /* harmony default export */ const Core_Notification = (x_ite_Namespace .add ("Notification", Notification_default_));
108985
109332
  ;// ./src/x_ite/Browser/Core/ContextMenu.js
108986
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(949);
108987
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(445);
109333
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(58);
109334
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(394);
108988
109335
  /*******************************************************************************
108989
109336
  *
108990
109337
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -111706,7 +112053,7 @@ const DataStorage_default_ = DataStorage;
111706
112053
 
111707
112054
  /* harmony default export */ const Utility_DataStorage = (x_ite_Namespace .add ("DataStorage", DataStorage_default_));
111708
112055
  ;// ./src/x_ite/Browser/Core/X3DCoreContext.js
111709
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(445);
112056
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(394);
111710
112057
  /*******************************************************************************
111711
112058
  *
111712
112059
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114317,8 +114664,8 @@ const X3DViewer_default_ = X3DViewer;
114317
114664
 
114318
114665
  /* harmony default export */ const Navigation_X3DViewer = (x_ite_Namespace .add ("X3DViewer", X3DViewer_default_));
114319
114666
  ;// ./src/x_ite/Browser/Navigation/ExamineViewer.js
114320
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(485);
114321
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(445);
114667
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(576);
114668
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(394);
114322
114669
  /*******************************************************************************
114323
114670
  *
114324
114671
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115233,8 +115580,8 @@ const ExamineViewer_default_ = ExamineViewer;
115233
115580
 
115234
115581
  /* harmony default export */ const Navigation_ExamineViewer = (x_ite_Namespace .add ("ExamineViewer", ExamineViewer_default_));
115235
115582
  ;// ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
115236
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(485);
115237
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(445);
115583
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(576);
115584
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(394);
115238
115585
  /*******************************************************************************
115239
115586
  *
115240
115587
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116249,8 +116596,8 @@ const FlyViewer_default_ = FlyViewer;
116249
116596
 
116250
116597
  /* harmony default export */ const Navigation_FlyViewer = (x_ite_Namespace .add ("FlyViewer", FlyViewer_default_));
116251
116598
  ;// ./src/x_ite/Browser/Navigation/PlaneViewer.js
116252
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(485);
116253
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(445);
116599
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(576);
116600
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(394);
116254
116601
  /*******************************************************************************
116255
116602
  *
116256
116603
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116579,8 +116926,8 @@ const NoneViewer_default_ = NoneViewer;
116579
116926
 
116580
116927
  /* harmony default export */ const Navigation_NoneViewer = (x_ite_Namespace .add ("NoneViewer", NoneViewer_default_));
116581
116928
  ;// ./src/x_ite/Browser/Navigation/LookAtViewer.js
116582
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(485);
116583
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(445);
116929
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(576);
116930
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(394);
116584
116931
  /*******************************************************************************
116585
116932
  *
116586
116933
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117722,8 +118069,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
117722
118069
 
117723
118070
  /* harmony default export */ const Picking_X3DPickingContext = (x_ite_Namespace .add ("X3DPickingContext", X3DPickingContext_default_));
117724
118071
  ;// ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
117725
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(485);
117726
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(445);
118072
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(576);
118073
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(394);
117727
118074
  /*******************************************************************************
117728
118075
  *
117729
118076
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119170,7 +119517,7 @@ const Lock_default_ = Lock;
119170
119517
 
119171
119518
  /* harmony default export */ const Utility_Lock = (x_ite_Namespace .add ("Lock", Lock_default_));
119172
119519
  ;// ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
119173
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(445);
119520
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(394);
119174
119521
  /*******************************************************************************
119175
119522
  *
119176
119523
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -120484,7 +120831,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
120484
120831
 
120485
120832
  /* harmony default export */ const Sound_X3DSoundContext = (x_ite_Namespace .add ("X3DSoundContext", X3DSoundContext_default_));
120486
120833
  ;// ./src/x_ite/Browser/Texturing/KTXDecoder.js
120487
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(445);
120834
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(394);
120488
120835
  const KTXDecoder_default_ = class KTXDecoder
120489
120836
  {
120490
120837
  constructor (gl, externalKtxlib, scriptDir)
@@ -122063,7 +122410,7 @@ const Components_default_ = Components;
122063
122410
 
122064
122411
  /* harmony default export */ const x_ite_Components = (x_ite_Namespace .add ("Components", Components_default_));
122065
122412
  ;// ./src/x_ite/Browser/DOMIntegration.js
122066
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(445);
122413
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(394);
122067
122414
  /*******************************************************************************
122068
122415
  * MIT License
122069
122416
  *
@@ -123329,7 +123676,7 @@ const FieldTypes_default_ = new Configuration_FieldTypesArray (Object .values (x
123329
123676
 
123330
123677
  /* harmony default export */ const FieldTypes = (x_ite_Namespace .add ("FieldTypes", FieldTypes_default_));
123331
123678
  ;// ./src/x_ite/Browser/X3DBrowser.js
123332
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(445);
123679
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(394);
123333
123680
  /*******************************************************************************
123334
123681
  *
123335
123682
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124431,7 +124778,7 @@ const X3DBrowser_default_ = X3DBrowser;
124431
124778
 
124432
124779
  /* harmony default export */ const Browser_X3DBrowser = (x_ite_Namespace .add ("X3DBrowser", X3DBrowser_default_));
124433
124780
  ;// ./src/x_ite/X3DCanvasElement.js
124434
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(445);
124781
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(394);
124435
124782
  /*******************************************************************************
124436
124783
  *
124437
124784
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -124698,8 +125045,8 @@ const QuickSort_default_ = QuickSort;
124698
125045
 
124699
125046
  /* harmony default export */ const Algorithms_QuickSort = (x_ite_Namespace .add ("QuickSort", QuickSort_default_));
124700
125047
  ;// ./src/lib/jquery.js
124701
- /* provided dependency */ var jquery_$ = __webpack_require__(445);
124702
- /* provided dependency */ var pako = __webpack_require__(729);
125048
+ /* provided dependency */ var jquery_$ = __webpack_require__(394);
125049
+ /* provided dependency */ var pako = __webpack_require__(514);
124703
125050
  Object .assign (jquery_$,
124704
125051
  {
124705
125052
  decodeText (input)
@@ -124724,6 +125071,10 @@ Object .assign (jquery_$,
124724
125071
  {
124725
125072
  return string [0] .toLowerCase () + string .slice (1);
124726
125073
  },
125074
+ toUpperCaseFirst (string)
125075
+ {
125076
+ return string [0] .toUpperCase () + string .slice (1);
125077
+ },
124727
125078
  try (callback, logError = false)
124728
125079
  {
124729
125080
  try
@@ -124776,13 +125127,13 @@ const jquery_default_ = jquery_$;
124776
125127
 
124777
125128
  /* harmony default export */ const jquery = (x_ite_Namespace .add ("jquery", jquery_default_));
124778
125129
  ;// ./src/lib/libtess.js
124779
- /* provided dependency */ var libtess_libtess = __webpack_require__(294);
125130
+ /* provided dependency */ var libtess_libtess = __webpack_require__(787);
124780
125131
  const libtess_default_ = libtess_libtess;
124781
125132
  ;
124782
125133
 
124783
125134
  /* harmony default export */ const lib_libtess = (x_ite_Namespace .add ("libtess", libtess_default_));
124784
125135
  ;// ./src/x_ite/X3D.js
124785
- /* provided dependency */ var X3D_$ = __webpack_require__(445);
125136
+ /* provided dependency */ var X3D_$ = __webpack_require__(394);
124786
125137
  /*******************************************************************************
124787
125138
  *
124788
125139
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -125086,7 +125437,7 @@ x_ite_Namespace, x_ite_Namespace .Fields,
125086
125437
 
125087
125438
  // Assign X3D to global namespace.
125088
125439
 
125089
- window [Symbol .for ("X_ITE.X3D-10.5.8")] = x_ite_X3D;
125440
+ window [Symbol .for ("X_ITE.X3D-10.5.9")] = x_ite_X3D;
125090
125441
 
125091
125442
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
125092
125443