x_ite 9.1.10 → 9.2.0

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 (48) hide show
  1. package/dist/assets/components/Annotation.js +13 -13
  2. package/dist/assets/components/Annotation.min.js +1 -1
  3. package/dist/assets/components/CADGeometry.js +14 -14
  4. package/dist/assets/components/CADGeometry.min.js +1 -1
  5. package/dist/assets/components/CubeMapTexturing.js +25 -25
  6. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  7. package/dist/assets/components/DIS.js +13 -13
  8. package/dist/assets/components/DIS.min.js +1 -1
  9. package/dist/assets/components/EventUtilities.js +9 -9
  10. package/dist/assets/components/EventUtilities.min.js +1 -1
  11. package/dist/assets/components/Geometry2D.js +19 -19
  12. package/dist/assets/components/Geometry2D.min.js +1 -1
  13. package/dist/assets/components/Geospatial.js +33 -33
  14. package/dist/assets/components/Geospatial.min.js +1 -1
  15. package/dist/assets/components/HAnim.js +23 -23
  16. package/dist/assets/components/HAnim.min.js +1 -1
  17. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  18. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  19. package/dist/assets/components/Layout.js +27 -27
  20. package/dist/assets/components/Layout.min.js +1 -1
  21. package/dist/assets/components/NURBS.js +23 -23
  22. package/dist/assets/components/NURBS.min.js +1 -1
  23. package/dist/assets/components/ParticleSystems.js +23 -23
  24. package/dist/assets/components/ParticleSystems.min.js +1 -1
  25. package/dist/assets/components/Picking.js +18 -18
  26. package/dist/assets/components/Picking.min.js +1 -1
  27. package/dist/assets/components/RigidBodyPhysics.js +17 -17
  28. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  29. package/dist/assets/components/Scripting.js +38 -38
  30. package/dist/assets/components/Scripting.min.js +1 -1
  31. package/dist/assets/components/Text.js +24 -24
  32. package/dist/assets/components/Text.min.js +1 -1
  33. package/dist/assets/components/TextureProjection.js +15 -15
  34. package/dist/assets/components/TextureProjection.min.js +1 -1
  35. package/dist/assets/components/Texturing3D.js +30 -30
  36. package/dist/assets/components/Texturing3D.min.js +1 -1
  37. package/dist/assets/components/VolumeRendering.js +19 -19
  38. package/dist/assets/components/VolumeRendering.min.js +1 -1
  39. package/dist/assets/components/X_ITE.js +8 -8
  40. package/dist/assets/components/X_ITE.min.js +1 -1
  41. package/dist/x_ite.css +1 -1
  42. package/dist/x_ite.d.ts +4 -0
  43. package/dist/x_ite.js +1038 -1192
  44. package/dist/x_ite.min.js +1 -1
  45. package/dist/x_ite.min.mjs +1 -1
  46. package/dist/x_ite.mjs +1038 -1192
  47. package/dist/x_ite.zip +0 -0
  48. package/package.json +1 -1
package/dist/x_ite.mjs CHANGED
@@ -1,9 +1,9 @@
1
- /* X_ITE v9.1.10 */var __webpack_modules__ = ({
1
+ /* X_ITE v9.2.0 */var __webpack_modules__ = ({
2
2
 
3
- /***/ 473:
3
+ /***/ 66:
4
4
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
5
5
 
6
- /* provided dependency */ var jQuery = __webpack_require__(239);
6
+ /* provided dependency */ var jQuery = __webpack_require__(484);
7
7
  /**
8
8
  * @preserve jquery.fullscreen 1.1.5
9
9
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -199,7 +199,7 @@ installFullScreenHandlers();
199
199
 
200
200
  /***/ }),
201
201
 
202
- /***/ 360:
202
+ /***/ 389:
203
203
  /***/ ((module, exports, __webpack_require__) => {
204
204
 
205
205
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -213,7 +213,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
213
213
  (function (factory) {
214
214
  if ( true ) {
215
215
  // AMD. Register as an anonymous module.
216
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(239)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
216
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(484)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
217
217
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
218
218
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
219
219
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -424,7 +424,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
424
424
 
425
425
  /***/ }),
426
426
 
427
- /***/ 239:
427
+ /***/ 484:
428
428
  /***/ (function(module, exports) {
429
429
 
430
430
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11148,7 +11148,7 @@ return jQuery;
11148
11148
 
11149
11149
  /***/ }),
11150
11150
 
11151
- /***/ 488:
11151
+ /***/ 53:
11152
11152
  /***/ ((module) => {
11153
11153
 
11154
11154
  /**
@@ -15927,7 +15927,7 @@ if (true) {
15927
15927
 
15928
15928
  /***/ }),
15929
15929
 
15930
- /***/ 102:
15930
+ /***/ 251:
15931
15931
  /***/ (function(__unused_webpack_module, exports) {
15932
15932
 
15933
15933
 
@@ -19172,7 +19172,7 @@ if (true) {
19172
19172
 
19173
19173
  /***/ }),
19174
19174
 
19175
- /***/ 899:
19175
+ /***/ 749:
19176
19176
  /***/ (function(module, exports) {
19177
19177
 
19178
19178
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20299,7 +20299,7 @@ Object .defineProperty (Namespace, "add",
20299
20299
  }
20300
20300
  else
20301
20301
  {
20302
- const X3D = window [Symbol .for ("X_ITE.X3D-9.1.10")];
20302
+ const X3D = window [Symbol .for ("X_ITE.X3D-9.2.0")];
20303
20303
 
20304
20304
  if (X3D)
20305
20305
  X3D [name] = module;
@@ -20897,7 +20897,6 @@ function Generator ({ style = "TIDY", indent = "", precision = 7, doublePrecisio
20897
20897
  this .nodes = new Set ();
20898
20898
  this .names = new Map ();
20899
20899
  this .namesByNode = new Map ();
20900
- this .importedNames = new Map ();
20901
20900
  this .routeNodes = new Set ();
20902
20901
  this .level = 0;
20903
20902
  this .containerFields = [ ];
@@ -21105,9 +21104,8 @@ Object .assign (Generator .prototype,
21105
21104
 
21106
21105
  if (this .level === 0)
21107
21106
  {
21108
- this .nodes .clear ();
21109
- this .namesByNode .clear ();
21110
- this .importedNames .clear ();
21107
+ this .nodes .clear ();
21108
+ this .namesByNode .clear ();
21111
21109
  }
21112
21110
  },
21113
21111
  NamedNodes (namedNodes)
@@ -21146,17 +21144,13 @@ Object .assign (Generator .prototype,
21146
21144
  { }
21147
21145
  }
21148
21146
  },
21149
- AddImportedNode (exportedNode, importedName)
21150
- {
21151
- this .importedNames .set (exportedNode, importedName);
21152
- },
21153
21147
  AddRouteNode (routeNode)
21154
21148
  {
21155
21149
  this .routeNodes .add (routeNode);
21156
21150
  },
21157
21151
  ExistsRouteNode (routeNode)
21158
21152
  {
21159
- return this .namesByNode .get (routeNode) || this .routeNodes .has (routeNode);
21153
+ return this .namesByNode .has (routeNode) || this .routeNodes .has (routeNode);
21160
21154
  },
21161
21155
  IsSharedNode (baseNode)
21162
21156
  {
@@ -21211,39 +21205,27 @@ Object .assign (Generator .prototype,
21211
21205
  if (baseNode .hasRoutes ())
21212
21206
  return true;
21213
21207
 
21214
- const
21215
- executionContext = baseNode .getExecutionContext (),
21216
- index = this .importedNodesIndex .get (executionContext);
21208
+ const executionContext = baseNode .getExecutionContext ();
21217
21209
 
21218
- if (index)
21219
- {
21220
- if (index .has (baseNode))
21221
- return true;
21222
- }
21223
- else
21224
- {
21225
- const index = this .exportedNodesIndex .get (executionContext);
21210
+ if (this .importedNodesIndex .get (executionContext) ?.has (baseNode))
21211
+ return true;
21226
21212
 
21227
- if (index)
21228
- {
21229
- if (index .has (baseNode))
21230
- return true;
21231
- }
21213
+ if (this .exportedNodesIndex .get (executionContext) ?.has (baseNode))
21214
+ return true;
21232
21215
 
21233
- return false;
21234
- }
21216
+ return false;
21235
21217
  },
21236
- LocalName (baseNode)
21218
+ ImportedName (name)
21237
21219
  {
21238
- const importedName = this .importedNames .get (baseNode);
21220
+ const
21221
+ names = this .names .get (this .ExecutionContext ()),
21222
+ newName = getUniqueName (names, name);
21239
21223
 
21240
- if (importedName !== undefined)
21241
- return importedName;
21224
+ // Add to indices.
21242
21225
 
21243
- if (this .ExistsNode (baseNode))
21244
- return this .Name (baseNode);
21226
+ names .add (newName);
21245
21227
 
21246
- throw new Error (`Couldn't get local name for node '${baseNode .getTypeName ()}'.`);
21228
+ return newName;
21247
21229
  },
21248
21230
  PushContainerField (field)
21249
21231
  {
@@ -21450,7 +21432,7 @@ const MapUtilities =
21450
21432
  {
21451
21433
  assign: (() =>
21452
21434
  {
21453
- function callback (value, key)
21435
+ function set (value, key)
21454
21436
  {
21455
21437
  this .set (key, value);
21456
21438
  }
@@ -21458,25 +21440,36 @@ const MapUtilities =
21458
21440
  return function (m1, m2)
21459
21441
  {
21460
21442
  m1 .clear ();
21461
- m2 .forEach (callback, m1);
21443
+ m2 .forEach (set, m1);
21462
21444
 
21463
21445
  return m1;
21464
21446
  };
21465
21447
  })(),
21466
21448
  values: (() =>
21467
21449
  {
21468
- function callback (value)
21469
- {
21470
- this .push (value);
21471
- }
21450
+ function push (value) { this .push (value); }
21451
+
21452
+ const values = new WeakMap ();
21472
21453
 
21473
- return function (a, m)
21454
+ return function (m)
21474
21455
  {
21475
- a .length = 0;
21456
+ if (m .size)
21457
+ {
21458
+ let a = values .get (m);
21459
+
21460
+ if (a)
21461
+ a .length = 0;
21462
+ else
21463
+ values .set (m, a = [ ]);
21476
21464
 
21477
- m .forEach (callback, a);
21465
+ m .forEach (push, a);
21478
21466
 
21479
- return a;
21467
+ return a;
21468
+ }
21469
+ else
21470
+ {
21471
+ return m .values ();
21472
+ }
21480
21473
  };
21481
21474
  })(),
21482
21475
  };
@@ -21605,7 +21598,6 @@ Object .assign (X3DObject .prototype,
21605
21598
  {
21606
21599
  [_name]: "",
21607
21600
  [_interests]: new Map (),
21608
- [_values]: [ ],
21609
21601
  [_userData]: new Map (),
21610
21602
  getId ()
21611
21603
  {
@@ -21634,10 +21626,7 @@ Object .assign (X3DObject .prototype,
21634
21626
  addInterest (callbackName, object, ... args)
21635
21627
  {
21636
21628
  if (this [_interests] === X3DObject .prototype [_interests])
21637
- {
21638
21629
  this [_interests] = new Map ();
21639
- this [_values] = [ ];
21640
- }
21641
21630
 
21642
21631
  const
21643
21632
  interestId = X3DObject .getInterestId (callbackName, object),
@@ -21655,11 +21644,8 @@ Object .assign (X3DObject .prototype,
21655
21644
  },
21656
21645
  processInterests ()
21657
21646
  {
21658
- if (this [_interests] .size)
21659
- {
21660
- for (const interest of Utility_MapUtilities .values (this [_values], this [_interests]))
21661
- interest ();
21662
- }
21647
+ for (const interest of Utility_MapUtilities .values (this [_interests]))
21648
+ interest ();
21663
21649
  },
21664
21650
  getUserData (key)
21665
21651
  {
@@ -22987,19 +22973,11 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22987
22973
  {
22988
22974
  return this [_referencesCallbacks];
22989
22975
  },
22990
- processReferencesCallbacks: (() =>
22976
+ processReferencesCallbacks ()
22991
22977
  {
22992
- const referencesCallbacksTemp = [ ];
22993
-
22994
- return function ()
22995
- {
22996
- if (this [_referencesCallbacks] .size)
22997
- {
22998
- for (const callback of Utility_MapUtilities .values (referencesCallbacksTemp, this [_referencesCallbacks]))
22999
- callback ();
23000
- }
23001
- };
23002
- })(),
22978
+ for (const callback of Utility_MapUtilities .values (this [_referencesCallbacks]))
22979
+ callback ();
22980
+ },
23003
22981
  addFieldInterest (field)
23004
22982
  {
23005
22983
  if (this [_fieldInterests] === X3DField .prototype [_fieldInterests])
@@ -23085,70 +23063,54 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
23085
23063
  {
23086
23064
  return this [_routeCallbacks];
23087
23065
  },
23088
- processRouteCallbacks: (() =>
23066
+ processRouteCallbacks ()
23089
23067
  {
23090
- const routeCallbacksTemp = [ ];
23091
-
23092
- return function ()
23093
- {
23094
- if (this [_routeCallbacks] .size)
23095
- {
23096
- for (const callback of Utility_MapUtilities .values (routeCallbacksTemp, this [_routeCallbacks]))
23097
- callback ();
23098
- }
23099
- };
23100
- })(),
23101
- processEvent: (() =>
23068
+ for (const callback of Utility_MapUtilities .values (this [_routeCallbacks]))
23069
+ callback ();
23070
+ },
23071
+ processEvent (event = Base_Events .create (this))
23102
23072
  {
23103
- const fieldCallbacksTemp = [ ];
23104
-
23105
- return function (event = Base_Events .create (this))
23106
- {
23107
- if (event .has (this))
23108
- return;
23073
+ if (event .has (this))
23074
+ return;
23109
23075
 
23110
- event .add (this);
23076
+ event .add (this);
23111
23077
 
23112
- this .setTainted (false);
23078
+ this .setTainted (false);
23113
23079
 
23114
- const field = event .field;
23080
+ const field = event .field;
23115
23081
 
23116
- if (field !== this)
23117
- this .set (field .getValue (), field .length);
23082
+ if (field !== this)
23083
+ this .set (field .getValue (), field .length);
23118
23084
 
23119
- // Process interests.
23085
+ // Process interests.
23120
23086
 
23121
- this .processInterests ();
23087
+ this .processInterests ();
23122
23088
 
23123
- // Process routes.
23089
+ // Process routes.
23124
23090
 
23125
- let first = true;
23091
+ let first = true;
23126
23092
 
23127
- for (const field of this [_fieldInterests])
23093
+ for (const field of this [_fieldInterests])
23094
+ {
23095
+ if (first)
23128
23096
  {
23129
- if (first)
23130
- {
23131
- first = false;
23132
- field .addEventObject (this, event);
23133
- }
23134
- else
23135
- {
23136
- field .addEventObject (this, Base_Events .copy (event));
23137
- }
23097
+ first = false;
23098
+ field .addEventObject (this, event);
23138
23099
  }
23100
+ else
23101
+ {
23102
+ field .addEventObject (this, Base_Events .copy (event));
23103
+ }
23104
+ }
23139
23105
 
23140
- if (first)
23141
- Base_Events .push (event);
23106
+ if (first)
23107
+ Base_Events .push (event);
23142
23108
 
23143
- // Process field callbacks.
23109
+ // Process field callbacks.
23144
23110
 
23145
- if (this [_fieldCallbacks] .size)
23146
- {
23147
- for (const callback of Utility_MapUtilities .values (fieldCallbacksTemp, this [_fieldCallbacks]))
23148
- callback (this .valueOf ());
23149
- }
23150
- };
23151
- })(),
23111
+ for (const callback of Utility_MapUtilities .values (this [_fieldCallbacks]))
23112
+ callback (this .valueOf ());
23113
+ },
23152
23114
  fromString (string, scene)
23153
23115
  {
23154
23116
  // Function will be overridden in VRMLParser.
@@ -34179,9 +34141,9 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
34179
34141
  return true;
34180
34142
  }
34181
34143
 
34182
- for (const importedNode of this [_executionContext] .getImportedNodes ())
34144
+ for (const route of this [_executionContext] .getRoutes ())
34183
34145
  {
34184
- if (importedNode .hasRoutes (this))
34146
+ if (route .getSourceNode () === this || route .getDestinationNode () === this)
34185
34147
  return true;
34186
34148
  }
34187
34149
 
@@ -34331,7 +34293,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34331
34293
  x_ite_Namespace .add ("X3DBaseNode", "x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34332
34294
  /* harmony default export */ const Base_X3DBaseNode = (X3DBaseNode_default_);
34333
34295
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Legacy.js
34334
- /* provided dependency */ var $ = __webpack_require__(239);
34296
+ /* provided dependency */ var $ = __webpack_require__(484);
34335
34297
  /*******************************************************************************
34336
34298
  *
34337
34299
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34468,7 +34430,7 @@ x_ite_Namespace .add ("Legacy", "x_ite/Browser/Legacy", Legacy_default_);
34468
34430
  *
34469
34431
  ******************************************************************************/
34470
34432
 
34471
- const BROWSER_VERSION_default_ = "9.1.10";
34433
+ const BROWSER_VERSION_default_ = "9.2.0";
34472
34434
  ;
34473
34435
 
34474
34436
  x_ite_Namespace .add ("BROWSER_VERSION", "x_ite/BROWSER_VERSION", BROWSER_VERSION_default_);
@@ -37288,31 +37250,33 @@ x_ite_Namespace .add ("NamedNodesArray", "x_ite/Execution/NamedNodesArray", Name
37288
37250
 
37289
37251
 
37290
37252
 
37291
-
37292
37253
  const
37293
- _inlineNode = Symbol (),
37294
- _exportedName = Symbol (),
37295
- _importedName = Symbol (),
37296
- _routes = Symbol ();
37254
+ X3DImportedNode_executionContext = Symbol (),
37255
+ _inlineNode = Symbol (),
37256
+ _exportedName = Symbol (),
37257
+ _importedName = Symbol (),
37258
+ _routes = Symbol (),
37259
+ _real = Symbol ();
37297
37260
 
37298
37261
  function X3DImportedNode (executionContext, inlineNode, exportedName, importedName)
37299
37262
  {
37300
- Core_X3DNode .call (this, executionContext);
37301
-
37302
- this [_inlineNode] = Fields_SFNodeCache .get (inlineNode);
37303
- this [_exportedName] = exportedName;
37304
- this [_importedName] = importedName;
37305
- this [_routes] = new Set ();
37263
+ Base_X3DObject .call (this);
37306
37264
 
37307
- this .getInlineNode () ._loadState .addInterest ("set_loadState__", this);
37265
+ this [X3DImportedNode_executionContext] = executionContext;
37266
+ this [_inlineNode] = inlineNode;
37267
+ this [_exportedName] = exportedName;
37268
+ this [_importedName] = importedName;
37308
37269
  }
37309
37270
 
37310
- // Must be of type X3DNode, to get routes work.
37311
- Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Core_X3DNode .prototype),
37271
+ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObject .prototype),
37312
37272
  {
37273
+ getExecutionContext ()
37274
+ {
37275
+ return this [X3DImportedNode_executionContext];
37276
+ },
37313
37277
  getInlineNode ()
37314
37278
  {
37315
- return this [_inlineNode] .getValue ();
37279
+ return this [_inlineNode];
37316
37280
  },
37317
37281
  getExportedName ()
37318
37282
  {
@@ -37326,441 +37290,151 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Core_X3DNode
37326
37290
  {
37327
37291
  return this [_importedName];
37328
37292
  },
37329
- hasRoutes (baseNode)
37330
- {
37331
- for (const route of this [_routes])
37332
- {
37333
- if (route .sourceNode === baseNode)
37334
- return true;
37335
-
37336
- if (route .destinationNode === baseNode)
37337
- return true;
37338
- }
37339
-
37340
- return false;
37341
- },
37342
- addRoute (sourceNode, sourceField, destinationNode, destinationField)
37343
- {
37344
- // Add route.
37345
-
37346
- const route = {
37347
- sourceNode: sourceNode,
37348
- sourceField: sourceField,
37349
- destinationNode: destinationNode,
37350
- destinationField: destinationField,
37351
- };
37352
-
37353
- this [_routes] .add (route);
37354
-
37355
- // Try to resolve source or destination node routes.
37356
-
37357
- if (this .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE)
37358
- this .resolveRoute (route);
37359
- },
37360
- resolveRoute (route)
37293
+ toVRMLStream (generator)
37361
37294
  {
37362
- try
37363
- {
37364
- const
37365
- sourceField = route .sourceField,
37366
- destinationField = route .destinationField;
37367
-
37368
- let
37369
- sourceNode = route .sourceNode,
37370
- destinationNode = route .destinationNode;
37295
+ if (!generator .ExistsNode (this .getInlineNode ()))
37296
+ throw new Error ("X3DImportedNode.toVRMLStream: Inline node does not exist.");
37371
37297
 
37372
- if (route .real)
37373
- route .real .dispose ();
37298
+ generator .AddRouteNode (this);
37374
37299
 
37375
- if (sourceNode instanceof X3DImportedNode)
37376
- sourceNode = sourceNode .getExportedNode ();
37300
+ const importedName = generator .ImportedName (this .getImportedName ());
37377
37301
 
37378
- if (destinationNode instanceof X3DImportedNode)
37379
- destinationNode = destinationNode .getExportedNode ();
37302
+ generator .string += generator .Indent ();
37303
+ generator .string += "IMPORT";
37304
+ generator .string += generator .Space ();
37305
+ generator .string += generator .Name (this .getInlineNode ());
37306
+ generator .string += ".";
37307
+ generator .string += this .getExportedName ();
37380
37308
 
37381
- route .real = this .getExecutionContext () .addSimpleRoute (sourceNode, sourceField, destinationNode, destinationField);
37382
- }
37383
- catch (error)
37384
- {
37385
- console .error (error .message);
37386
- }
37387
- },
37388
- deleteRoute (real)
37389
- {
37390
- for (const route of this [_routes])
37309
+ if (importedName !== this .getExportedName ())
37391
37310
  {
37392
- if (route .real === real)
37393
- this [_routes] .delete (route);
37394
- }
37395
- },
37396
- deleteRoutes ()
37397
- {
37398
- for (const route of this [_routes])
37399
- {
37400
- const real = route .real
37401
-
37402
- if (real)
37403
- {
37404
- delete route .real;
37405
- this .getExecutionContext () .deleteSimpleRoute (real);
37406
- }
37407
- }
37408
- },
37409
- set_loadState__ ()
37410
- {
37411
- switch (this .getInlineNode () .checkLoadState ())
37412
- {
37413
- case Base_X3DConstants .NOT_STARTED_STATE:
37414
- case Base_X3DConstants .FAILED_STATE:
37415
- {
37416
- this .deleteRoutes ();
37417
- break;
37418
- }
37419
- case Base_X3DConstants .COMPLETE_STATE:
37420
- {
37421
- this .deleteRoutes ();
37422
-
37423
- for (const route of this [_routes])
37424
- this .resolveRoute (route);
37425
-
37426
- break;
37427
- }
37311
+ generator .string += generator .Space ();
37312
+ generator .string += "AS";
37313
+ generator .string += generator .Space ();
37314
+ generator .string += importedName;
37428
37315
  }
37429
37316
  },
37430
- toStream (generator)
37431
- {
37432
- Base_X3DObject .prototype .toStream .call (this, generator);
37433
- },
37434
- toVRMLStream (generator)
37317
+ toXMLStream (generator)
37435
37318
  {
37436
- if (generator .ExistsNode (this .getInlineNode ()))
37437
- {
37438
- generator .string += generator .Indent ();
37439
- generator .string += "IMPORT";
37440
- generator .string += generator .Space ();
37441
- generator .string += generator .Name (this .getInlineNode ());
37442
- generator .string += ".";
37443
- generator .string += this .getExportedName ();
37444
-
37445
- if (this .getImportedName () !== this .getExportedName ())
37446
- {
37447
- generator .string += generator .Space ();
37448
- generator .string += "AS";
37449
- generator .string += generator .Space ();
37450
- generator .string += this .getImportedName ();
37451
- }
37452
-
37453
- try
37454
- {
37455
- generator .AddRouteNode (this);
37456
- generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
37457
- }
37458
- catch
37459
- {
37460
- // Output unresolved routes.
37319
+ if (!generator .ExistsNode (this .getInlineNode ()))
37320
+ throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
37461
37321
 
37462
- for (const route of this [_routes])
37463
- {
37464
- const
37465
- sourceNode = route .sourceNode,
37466
- sourceField = route .sourceField,
37467
- destinationNode = route .destinationNode,
37468
- destinationField = route .destinationField;
37322
+ generator .AddRouteNode (this);
37469
37323
 
37470
- if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
37471
- {
37472
- const sourceNodeName = sourceNode instanceof X3DImportedNode
37473
- ? sourceNode .getImportedName ()
37474
- : generator .Name (sourceNode);
37324
+ const importedName = generator .ImportedName (this .getImportedName ());
37475
37325
 
37476
- const destinationNodeName = destinationNode instanceof X3DImportedNode
37477
- ? destinationNode .getImportedName ()
37478
- : generator .Name (destinationNode);
37326
+ generator .string += generator .Indent ();
37327
+ generator .string += "<IMPORT";
37328
+ generator .string += generator .Space ();
37329
+ generator .string += "inlineDEF='";
37330
+ generator .string += generator .XMLEncode (generator .Name (this .getInlineNode ()));
37331
+ generator .string += "'";
37332
+ generator .string += generator .Space ();
37333
+ generator .string += "importedDEF='";
37334
+ generator .string += generator .XMLEncode (this .getExportedName ());
37335
+ generator .string += "'";
37479
37336
 
37480
- generator .string += generator .TidyBreak ();
37481
- generator .string += generator .Indent ();
37482
- generator .string += "ROUTE";
37483
- generator .string += generator .Space ();
37484
- generator .string += sourceNodeName;
37485
- generator .string += ".";
37486
- generator .string += sourceField;
37487
- generator .string += generator .Space ();
37488
- generator .string += "TO";
37489
- generator .string += generator .Space ();
37490
- generator .string += destinationNodeName;
37491
- generator .string += ".";
37492
- generator .string += destinationField;
37493
- }
37494
- }
37495
- }
37496
- }
37497
- else
37498
- {
37499
- throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
37500
- }
37501
- },
37502
- toXMLStream (generator)
37503
- {
37504
- if (generator .ExistsNode (this .getInlineNode ()))
37337
+ if (importedName !== this .getExportedName ())
37505
37338
  {
37506
- generator .string += generator .Indent ();
37507
- generator .string += "<IMPORT";
37508
- generator .string += generator .Space ();
37509
- generator .string += "inlineDEF='";
37510
- generator .string += generator .XMLEncode (generator .Name (this .getInlineNode ()));
37511
- generator .string += "'";
37512
37339
  generator .string += generator .Space ();
37513
- generator .string += "importedDEF='";
37514
- generator .string += generator .XMLEncode (this .getExportedName ());
37340
+ generator .string += "AS='";
37341
+ generator .string += generator .XMLEncode (importedName);
37515
37342
  generator .string += "'";
37343
+ }
37516
37344
 
37517
- if (this .getImportedName () !== this .getExportedName ())
37518
- {
37519
- generator .string += generator .Space ();
37520
- generator .string += "AS='";
37521
- generator .string += generator .XMLEncode (this .getImportedName ());
37522
- generator .string += "'";
37523
- }
37345
+ generator .string += generator .closingTags ? "></IMPORT>" : "/>";
37346
+ },
37347
+ toJSONStream (generator)
37348
+ {
37349
+ if (!generator .ExistsNode (this .getInlineNode ()))
37350
+ throw new Error ("X3DImportedNode.toJSONStream: Inline node does not exist.");
37524
37351
 
37525
- generator .string += generator .closingTags ? "></IMPORT>" : "/>";
37352
+ generator .AddRouteNode (this);
37526
37353
 
37527
- try
37528
- {
37529
- generator .AddRouteNode (this);
37530
- generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
37531
- }
37532
- catch
37533
- {
37534
- // Output unresolved routes.
37354
+ const importedName = generator .ImportedName (this .getImportedName ());
37535
37355
 
37536
- for (const route of this [_routes])
37537
- {
37538
- const
37539
- sourceNode = route .sourceNode,
37540
- sourceField = route .sourceField,
37541
- destinationNode = route .destinationNode,
37542
- destinationField = route .destinationField;
37356
+ generator .string += generator .Indent ();
37357
+ generator .string += '{';
37358
+ generator .string += generator .TidySpace ();
37359
+ generator .string += '"';
37360
+ generator .string += "IMPORT";
37361
+ generator .string += '"';
37362
+ generator .string += ':';
37363
+ generator .string += generator .TidyBreak ();
37364
+ generator .string += generator .IncIndent ();
37365
+ generator .string += generator .Indent ();
37366
+ generator .string += '{';
37367
+ generator .string += generator .TidyBreak ();
37368
+ generator .string += generator .IncIndent ();
37543
37369
 
37544
- if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
37545
- {
37546
- const sourceNodeName = sourceNode instanceof X3DImportedNode
37547
- ? sourceNode .getImportedName ()
37548
- : generator .Name (sourceNode);
37370
+ generator .string += generator .Indent ();
37371
+ generator .string += '"';
37372
+ generator .string += "@inlineDEF";
37373
+ generator .string += '"';
37374
+ generator .string += ':';
37375
+ generator .string += generator .TidySpace ();
37376
+ generator .string += '"';
37377
+ generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
37378
+ generator .string += '"';
37379
+ generator .string += ',';
37380
+ generator .string += generator .TidyBreak ();
37549
37381
 
37550
- const destinationNodeName = destinationNode instanceof X3DImportedNode
37551
- ? destinationNode .getImportedName ()
37552
- : generator .Name (destinationNode);
37382
+ generator .string += generator .Indent ();
37383
+ generator .string += '"';
37384
+ generator .string += "@importedDEF";
37385
+ generator .string += '"';
37386
+ generator .string += ':';
37387
+ generator .string += generator .TidySpace ();
37388
+ generator .string += '"';
37389
+ generator .string += generator .JSONEncode (this .getExportedName ());
37390
+ generator .string += '"';
37553
37391
 
37554
- generator .string += generator .TidyBreak ();
37555
- generator .string += generator .Indent ();
37556
- generator .string += "<ROUTE";
37557
- generator .string += generator .Space ();
37558
- generator .string += "fromNode='";
37559
- generator .string += generator .XMLEncode (sourceNodeName);
37560
- generator .string += "'";
37561
- generator .string += generator .Space ();
37562
- generator .string += "fromField='";
37563
- generator .string += generator .XMLEncode (sourceField);
37564
- generator .string += "'";
37565
- generator .string += generator .Space ();
37566
- generator .string += "toNode='";
37567
- generator .string += generator .XMLEncode (destinationNodeName);
37568
- generator .string += "'";
37569
- generator .string += generator .Space ();
37570
- generator .string += "toField='";
37571
- generator .string += generator .XMLEncode (destinationField);
37572
- generator .string += "'";
37573
- generator .string += generator .closingTags ? "></ROUTE>" : "/>";
37574
- }
37575
- }
37576
- }
37577
- }
37578
- else
37579
- {
37580
- throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
37581
- }
37582
- },
37583
- toJSONStream (generator)
37584
- {
37585
- if (generator .ExistsNode (this .getInlineNode ()))
37392
+ if (importedName !== this .getExportedName ())
37586
37393
  {
37587
- generator .string += generator .Indent ();
37588
- generator .string += '{';
37589
- generator .string += generator .TidySpace ();
37590
- generator .string += '"';
37591
- generator .string += "IMPORT";
37592
- generator .string += '"';
37593
- generator .string += ':';
37594
- generator .string += generator .TidyBreak ();
37595
- generator .string += generator .IncIndent ();
37596
- generator .string += generator .Indent ();
37597
- generator .string += '{';
37598
- generator .string += generator .TidyBreak ();
37599
- generator .string += generator .IncIndent ();
37600
-
37601
- generator .string += generator .Indent ();
37602
- generator .string += '"';
37603
- generator .string += "@inlineDEF";
37604
- generator .string += '"';
37605
- generator .string += ':';
37606
- generator .string += generator .TidySpace ();
37607
- generator .string += '"';
37608
- generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
37609
- generator .string += '"';
37610
37394
  generator .string += ',';
37611
37395
  generator .string += generator .TidyBreak ();
37612
-
37613
37396
  generator .string += generator .Indent ();
37614
37397
  generator .string += '"';
37615
- generator .string += "@importedDEF";
37398
+ generator .string += "@AS";
37616
37399
  generator .string += '"';
37617
37400
  generator .string += ':';
37618
37401
  generator .string += generator .TidySpace ();
37619
37402
  generator .string += '"';
37620
- generator .string += generator .JSONEncode (this .getExportedName ());
37403
+ generator .string += generator .JSONEncode (importedName);
37621
37404
  generator .string += '"';
37622
-
37623
- if (this .getImportedName () !== this .getExportedName ())
37624
- {
37625
- generator .string += ',';
37626
- generator .string += generator .TidyBreak ();
37627
- generator .string += generator .Indent ();
37628
- generator .string += '"';
37629
- generator .string += "@AS";
37630
- generator .string += '"';
37631
- generator .string += ':';
37632
- generator .string += generator .TidySpace ();
37633
- generator .string += '"';
37634
- generator .string += generator .JSONEncode (this .getImportedName ());
37635
- generator .string += '"';
37636
- generator .string += generator .TidyBreak ();
37637
- }
37638
- else
37639
- {
37640
- generator .string += generator .TidyBreak ();
37641
- }
37642
-
37643
- generator .string += generator .DecIndent ();
37644
- generator .string += generator .Indent ();
37645
- generator .string += '}';
37646
37405
  generator .string += generator .TidyBreak ();
37647
- generator .string += generator .DecIndent ();
37648
- generator .string += generator .Indent ();
37649
- generator .string += '}';
37650
-
37651
- try
37652
- {
37653
- generator .AddRouteNode (this);
37654
- generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
37655
- }
37656
- catch
37657
- {
37658
- // Output unresolved routes.
37659
-
37660
- for (const route of this [_routes])
37661
- {
37662
- const
37663
- sourceNode = route .sourceNode,
37664
- sourceField = route .sourceField,
37665
- destinationNode = route .destinationNode,
37666
- destinationField = route .destinationField;
37667
-
37668
- if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
37669
- {
37670
- const sourceNodeName = sourceNode instanceof X3DImportedNode
37671
- ? sourceNode .getImportedName ()
37672
- : generator .Name (sourceNode);
37673
-
37674
- const destinationNodeName = destinationNode instanceof X3DImportedNode
37675
- ? destinationNode .getImportedName ()
37676
- : generator .Name (destinationNode);
37677
-
37678
- generator .string += ',';
37679
- generator .string += generator .TidyBreak ();
37680
- generator .string += generator .Indent ();
37681
- generator .string += '{';
37682
- generator .string += generator .TidySpace ();
37683
- generator .string += '"';
37684
- generator .string += "ROUTE";
37685
- generator .string += '"';
37686
- generator .string += ':';
37687
- generator .string += generator .TidyBreak ();
37688
- generator .string += generator .IncIndent ();
37689
- generator .string += generator .Indent ();
37690
- generator .string += '{';
37691
- generator .string += generator .TidyBreak ();
37692
- generator .string += generator .IncIndent ();
37693
-
37694
- generator .string += generator .Indent ();
37695
- generator .string += '"';
37696
- generator .string += "@fromNode";
37697
- generator .string += '"';
37698
- generator .string += ':';
37699
- generator .string += generator .TidySpace ();
37700
- generator .string += '"';
37701
- generator .string += generator .JSONEncode (sourceNodeName);
37702
- generator .string += '"';
37703
- generator .string += ',';
37704
- generator .string += generator .TidyBreak ();
37705
-
37706
- generator .string += generator .Indent ();
37707
- generator .string += '"';
37708
- generator .string += "@fromField";
37709
- generator .string += '"';
37710
- generator .string += ':';
37711
- generator .string += generator .TidySpace ();
37712
- generator .string += '"';
37713
- generator .string += generator .JSONEncode (sourceField);
37714
- generator .string += '"';
37715
- generator .string += ',';
37716
- generator .string += generator .TidyBreak ();
37717
-
37718
- generator .string += generator .Indent ();
37719
- generator .string += '"';
37720
- generator .string += "@toNode";
37721
- generator .string += '"';
37722
- generator .string += ':';
37723
- generator .string += generator .TidySpace ();
37724
- generator .string += '"';
37725
- generator .string += generator .JSONEncode (destinationNodeName);
37726
- generator .string += '"';
37727
- generator .string += ',';
37728
- generator .string += generator .TidyBreak ();
37729
-
37730
- generator .string += generator .Indent ();
37731
- generator .string += '"';
37732
- generator .string += "@toField";
37733
- generator .string += '"';
37734
- generator .string += ':';
37735
- generator .string += generator .TidySpace ();
37736
- generator .string += '"';
37737
- generator .string += generator .JSONEncode (destinationField);
37738
- generator .string += '"';
37739
- generator .string += generator .TidyBreak ();
37740
-
37741
- generator .string += generator .DecIndent ();
37742
- generator .string += generator .Indent ();
37743
- generator .string += '}';
37744
- generator .string += generator .TidyBreak ();
37745
- generator .string += generator .DecIndent ();
37746
- generator .string += generator .Indent ();
37747
- generator .string += '}';
37748
- }
37749
- }
37750
- }
37751
37406
  }
37752
37407
  else
37753
37408
  {
37754
- throw new Error ("X3DImportedNode.toJSONStream: Inline node does not exist.");
37409
+ generator .string += generator .TidyBreak ();
37755
37410
  }
37411
+
37412
+ generator .string += generator .DecIndent ();
37413
+ generator .string += generator .Indent ();
37414
+ generator .string += '}';
37415
+ generator .string += generator .TidyBreak ();
37416
+ generator .string += generator .DecIndent ();
37417
+ generator .string += generator .Indent ();
37418
+ generator .string += '}';
37756
37419
  },
37757
37420
  dispose ()
37758
37421
  {
37759
- this .getInlineNode () ._loadState .removeInterest ("set_loadState__", this);
37422
+ for (const route of Array .from (this [X3DImportedNode_executionContext] .getRoutes ()))
37423
+ {
37424
+ if (route .getSourceNode () === this)
37425
+ {
37426
+ this [X3DImportedNode_executionContext] .deleteRoute (route);
37427
+ continue;
37428
+ }
37760
37429
 
37761
- this .deleteRoutes ();
37430
+ if (route .getDestinationNode () === this)
37431
+ {
37432
+ this [X3DImportedNode_executionContext] .deleteRoute (route);
37433
+ continue;
37434
+ }
37435
+ }
37762
37436
 
37763
- Core_X3DNode .prototype .dispose .call (this);
37437
+ Base_X3DObject .prototype .dispose .call (this);
37764
37438
  },
37765
37439
  });
37766
37440
 
@@ -37773,7 +37447,7 @@ Object .defineProperties (X3DImportedNode .prototype,
37773
37447
  {
37774
37448
  get ()
37775
37449
  {
37776
- return this [_inlineNode];
37450
+ return Fields_SFNodeCache .get (this [_inlineNode]);
37777
37451
  },
37778
37452
  enumerable: true,
37779
37453
  },
@@ -38039,7 +37713,7 @@ Object .assign (X3DUrlObject .prototype,
38039
37713
  reject ();
38040
37714
  break;
38041
37715
  }
38042
- })
37716
+ });
38043
37717
  };
38044
37718
 
38045
37719
  const loadState = this .checkLoadState ();
@@ -38318,254 +37992,6 @@ const X3DProtoDeclarationNode_default_ = X3DProtoDeclarationNode;
38318
37992
 
38319
37993
  x_ite_Namespace .add ("X3DProtoDeclarationNode", "x_ite/Prototype/X3DProtoDeclarationNode", X3DProtoDeclarationNode_default_);
38320
37994
  /* harmony default export */ const Prototype_X3DProtoDeclarationNode = (X3DProtoDeclarationNode_default_);
38321
- ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38322
- /* provided dependency */ var X3DParser_$ = __webpack_require__(239);
38323
- /*******************************************************************************
38324
- *
38325
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38326
- *
38327
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38328
- *
38329
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38330
- *
38331
- * The copyright notice above does not evidence any actual of intended
38332
- * publication of such source code, and is an unpublished work by create3000.
38333
- * This material contains CONFIDENTIAL INFORMATION that is the property of
38334
- * create3000.
38335
- *
38336
- * No permission is granted to copy, distribute, or create derivative works from
38337
- * the contents of this software, in whole or in part, without the prior written
38338
- * permission of create3000.
38339
- *
38340
- * NON-MILITARY USE ONLY
38341
- *
38342
- * All create3000 software are effectively free software with a non-military use
38343
- * restriction. It is free. Well commented source is provided. You may reuse the
38344
- * source in any way you please with the exception anything that uses it must be
38345
- * marked to indicate is contains 'non-military use only' components.
38346
- *
38347
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38348
- *
38349
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38350
- *
38351
- * This file is part of the X_ITE Project.
38352
- *
38353
- * X_ITE is free software: you can redistribute it and/or modify it under the
38354
- * terms of the GNU General Public License version 3 only, as published by the
38355
- * Free Software Foundation.
38356
- *
38357
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38358
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38359
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38360
- * details (a copy is included in the LICENSE file that accompanied this code).
38361
- *
38362
- * You should have received a copy of the GNU General Public License version 3
38363
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38364
- * copy of the GPLv3 License.
38365
- *
38366
- * For Silvio, Joy and Adi.
38367
- *
38368
- ******************************************************************************/
38369
-
38370
- function X3DParser (scene)
38371
- {
38372
- this .scene = scene;
38373
- this .executionContexts = [ scene ];
38374
- this .prototypes = [ ];
38375
- }
38376
-
38377
- Object .assign (X3DParser .prototype,
38378
- {
38379
- getBrowser ()
38380
- {
38381
- return this .scene .getBrowser ();
38382
- },
38383
- getScene ()
38384
- {
38385
- return this .scene;
38386
- },
38387
- getExecutionContext ()
38388
- {
38389
- return this .executionContexts .at (-1);
38390
- },
38391
- pushExecutionContext (executionContext)
38392
- {
38393
- return this .executionContexts .push (executionContext);
38394
- },
38395
- popExecutionContext ()
38396
- {
38397
- this .executionContexts .pop ();
38398
- },
38399
- getPrototype ()
38400
- {
38401
- return this .prototypes .at (-1);
38402
- },
38403
- pushPrototype (prototype)
38404
- {
38405
- return this .prototypes .push (prototype);
38406
- },
38407
- popPrototype ()
38408
- {
38409
- this .prototypes .pop ();
38410
- },
38411
- isInsideProtoDefinition ()
38412
- {
38413
- return !! this .prototypes .length;
38414
- },
38415
- loadComponents ()
38416
- {
38417
- const
38418
- browser = this .getBrowser (),
38419
- scene = this .getScene ();
38420
-
38421
- return Promise .all ([
38422
- browser .loadComponents (scene .getProfile () || browser .getProfile ("Full")),
38423
- browser .loadComponents (scene .getComponents ()),
38424
- ]);
38425
- },
38426
- setUnits (units)
38427
- {
38428
- if (units)
38429
- delete this .fromUnit;
38430
- else
38431
- this .fromUnit = function (category, value) { return value; };
38432
- },
38433
- fromUnit (category, value)
38434
- {
38435
- return this .scene .fromUnit (category, value);
38436
- },
38437
- convertColor (value, defaultColor = "white")
38438
- {
38439
- const
38440
- wrap = X3DParser_$("<div></div>") .hide () .css ("color", defaultColor) .appendTo (X3DParser_$("body")),
38441
- div = X3DParser_$("<div></div>").css ("color", value) .appendTo (wrap),
38442
- rgb = window .getComputedStyle (div [0]) .color,
38443
- values = rgb .replace (/^rgba?\(|\)$/g, "") .split (/[\s,]+/) .map (s => parseFloat (s));
38444
-
38445
- wrap .remove ();
38446
-
38447
- values [0] /= 255;
38448
- values [1] /= 255;
38449
- values [2] /= 255;
38450
-
38451
- if (typeof values [3] !== "number")
38452
- values [3] = 1;
38453
-
38454
- return values;
38455
- },
38456
- sanitizeName (name = "")
38457
- {
38458
- // NonIdFirstChar
38459
- name = name .replace (/^[\x30-\x39\x00-\x20\x22\x23\x27\x2b\x2c\x2d\x2e\x5b\x5c\x5d\x7b\x7d\x7f]*/, "");
38460
-
38461
- // NonIdChars
38462
- name = name .replace (/[\x00-\x20\x22\x23\x27\x2c\x2e\x5b\x5c\x5d\x7b\x7d\x7f]+/g, "-");
38463
-
38464
- // Spaces
38465
- name = name .trim () .replace (/[\s_-]+/g, "-");
38466
-
38467
- // Trim
38468
- name = name .replace (/^-+|-+$/g, "");
38469
-
38470
- return name;
38471
- },
38472
- });
38473
-
38474
- const X3DParser_default_ = X3DParser;
38475
- ;
38476
-
38477
- x_ite_Namespace .add ("X3DParser", "x_ite/Parser/X3DParser", X3DParser_default_);
38478
- /* harmony default export */ const Parser_X3DParser = (X3DParser_default_);
38479
- ;// CONCATENATED MODULE: ./src/x_ite/Parser/Expressions.js
38480
- /*******************************************************************************
38481
- *
38482
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38483
- *
38484
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38485
- *
38486
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38487
- *
38488
- * The copyright notice above does not evidence any actual of intended
38489
- * publication of such source code, and is an unpublished work by create3000.
38490
- * This material contains CONFIDENTIAL INFORMATION that is the property of
38491
- * create3000.
38492
- *
38493
- * No permission is granted to copy, distribute, or create derivative works from
38494
- * the contents of this software, in whole or in part, without the prior written
38495
- * permission of create3000.
38496
- *
38497
- * NON-MILITARY USE ONLY
38498
- *
38499
- * All create3000 software are effectively free software with a non-military use
38500
- * restriction. It is free. Well commented source is provided. You may reuse the
38501
- * source in any way you please with the exception anything that uses it must be
38502
- * marked to indicate is contains 'non-military use only' components.
38503
- *
38504
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38505
- *
38506
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38507
- *
38508
- * This file is part of the X_ITE Project.
38509
- *
38510
- * X_ITE is free software: you can redistribute it and/or modify it under the
38511
- * terms of the GNU General Public License version 3 only, as published by the
38512
- * Free Software Foundation.
38513
- *
38514
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38515
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38516
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38517
- * details (a copy is included in the LICENSE file that accompanied this code).
38518
- *
38519
- * You should have received a copy of the GNU General Public License version 3
38520
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38521
- * copy of the GPLv3 License.
38522
- *
38523
- * For Silvio, Joy and Adi.
38524
- *
38525
- ******************************************************************************/
38526
-
38527
- function parse (parser)
38528
- {
38529
- this .lastIndex = parser .lastIndex;
38530
-
38531
- parser .result = this .exec (parser .input);
38532
-
38533
- if (parser .result)
38534
- {
38535
- parser .lastIndex = this .lastIndex;
38536
- return true;
38537
- }
38538
-
38539
- return false;
38540
- }
38541
-
38542
- function lookahead (parser)
38543
- {
38544
- const
38545
- lastIndex = parser .lastIndex,
38546
- result = this .parse (parser);
38547
-
38548
- parser .lastIndex = lastIndex;
38549
-
38550
- return result;
38551
- }
38552
-
38553
- function Expressions (Grammar)
38554
- {
38555
- for (const value of Object .values (Grammar))
38556
- {
38557
- value .parse = parse;
38558
- value .lookahead = lookahead;
38559
- }
38560
-
38561
- return Grammar;
38562
- }
38563
-
38564
- const Expressions_default_ = Expressions;
38565
- ;
38566
-
38567
- x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_default_);
38568
- /* harmony default export */ const Parser_Expressions = (Expressions_default_);
38569
37995
  ;// CONCATENATED MODULE: ./src/x_ite/Prototype/X3DProtoDeclaration.js
38570
37996
  /*******************************************************************************
38571
37997
  *
@@ -39143,8 +38569,250 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
39143
38569
 
39144
38570
  x_ite_Namespace .add ("X3DProtoDeclaration", "x_ite/Prototype/X3DProtoDeclaration", X3DProtoDeclaration_default_);
39145
38571
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (X3DProtoDeclaration_default_);
38572
+ ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38573
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(484);
38574
+ /*******************************************************************************
38575
+ *
38576
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38577
+ *
38578
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38579
+ *
38580
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38581
+ *
38582
+ * The copyright notice above does not evidence any actual of intended
38583
+ * publication of such source code, and is an unpublished work by create3000.
38584
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
38585
+ * create3000.
38586
+ *
38587
+ * No permission is granted to copy, distribute, or create derivative works from
38588
+ * the contents of this software, in whole or in part, without the prior written
38589
+ * permission of create3000.
38590
+ *
38591
+ * NON-MILITARY USE ONLY
38592
+ *
38593
+ * All create3000 software are effectively free software with a non-military use
38594
+ * restriction. It is free. Well commented source is provided. You may reuse the
38595
+ * source in any way you please with the exception anything that uses it must be
38596
+ * marked to indicate is contains 'non-military use only' components.
38597
+ *
38598
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38599
+ *
38600
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38601
+ *
38602
+ * This file is part of the X_ITE Project.
38603
+ *
38604
+ * X_ITE is free software: you can redistribute it and/or modify it under the
38605
+ * terms of the GNU General Public License version 3 only, as published by the
38606
+ * Free Software Foundation.
38607
+ *
38608
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38609
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38610
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38611
+ * details (a copy is included in the LICENSE file that accompanied this code).
38612
+ *
38613
+ * You should have received a copy of the GNU General Public License version 3
38614
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38615
+ * copy of the GPLv3 License.
38616
+ *
38617
+ * For Silvio, Joy and Adi.
38618
+ *
38619
+ ******************************************************************************/
38620
+
38621
+
38622
+
38623
+ function X3DParser (scene)
38624
+ {
38625
+ this .scene = scene;
38626
+ this .executionContexts = [ scene ];
38627
+ this .prototypes = [ ];
38628
+ }
38629
+
38630
+ Object .assign (X3DParser .prototype,
38631
+ {
38632
+ getBrowser ()
38633
+ {
38634
+ return this .scene .getBrowser ();
38635
+ },
38636
+ getScene ()
38637
+ {
38638
+ return this .scene;
38639
+ },
38640
+ getExecutionContext ()
38641
+ {
38642
+ return this .executionContexts .at (-1);
38643
+ },
38644
+ pushExecutionContext (executionContext)
38645
+ {
38646
+ return this .executionContexts .push (executionContext);
38647
+ },
38648
+ popExecutionContext ()
38649
+ {
38650
+ this .executionContexts .pop ();
38651
+ },
38652
+ getOuterNode ()
38653
+ {
38654
+ return this .getExecutionContext () .getOuterNode ();
38655
+ },
38656
+ isInsideProtoDeclaration ()
38657
+ {
38658
+ return this .getExecutionContext () .getOuterNode () instanceof Prototype_X3DProtoDeclaration;
38659
+ },
38660
+ loadComponents ()
38661
+ {
38662
+ const
38663
+ browser = this .getBrowser (),
38664
+ scene = this .getScene ();
38665
+
38666
+ return Promise .all ([
38667
+ browser .loadComponents (scene .getProfile () || browser .getProfile ("Full")),
38668
+ browser .loadComponents (scene .getComponents ()),
38669
+ ]);
38670
+ },
38671
+ setUnits (units)
38672
+ {
38673
+ if (units)
38674
+ delete this .fromUnit;
38675
+ else
38676
+ this .fromUnit = function (category, value) { return value; };
38677
+ },
38678
+ fromUnit (category, value)
38679
+ {
38680
+ return this .scene .fromUnit (category, value);
38681
+ },
38682
+ convertColor (value, defaultColor = "white")
38683
+ {
38684
+ const
38685
+ wrap = X3DParser_$("<div></div>") .hide () .css ("color", defaultColor) .appendTo (X3DParser_$("body")),
38686
+ div = X3DParser_$("<div></div>").css ("color", value) .appendTo (wrap),
38687
+ rgb = window .getComputedStyle (div [0]) .color,
38688
+ values = rgb .replace (/^rgba?\(|\)$/g, "") .split (/[\s,]+/) .map (s => parseFloat (s));
38689
+
38690
+ wrap .remove ();
38691
+
38692
+ values [0] /= 255;
38693
+ values [1] /= 255;
38694
+ values [2] /= 255;
38695
+
38696
+ if (typeof values [3] !== "number")
38697
+ values [3] = 1;
38698
+
38699
+ return values;
38700
+ },
38701
+ sanitizeName (name = "")
38702
+ {
38703
+ // NonIdFirstChar
38704
+ name = name .replace (/^[\x30-\x39\x00-\x20\x22\x23\x27\x2b\x2c\x2d\x2e\x5b\x5c\x5d\x7b\x7d\x7f]*/, "");
38705
+
38706
+ // NonIdChars
38707
+ name = name .replace (/[\x00-\x20\x22\x23\x27\x2c\x2e\x5b\x5c\x5d\x7b\x7d\x7f]+/g, "-");
38708
+
38709
+ // Spaces
38710
+ name = name .trim () .replace (/[\s_-]+/g, "-");
38711
+
38712
+ // Trim
38713
+ name = name .replace (/^-+|-+$/g, "");
38714
+
38715
+ return name;
38716
+ },
38717
+ });
38718
+
38719
+ const X3DParser_default_ = X3DParser;
38720
+ ;
38721
+
38722
+ x_ite_Namespace .add ("X3DParser", "x_ite/Parser/X3DParser", X3DParser_default_);
38723
+ /* harmony default export */ const Parser_X3DParser = (X3DParser_default_);
38724
+ ;// CONCATENATED MODULE: ./src/x_ite/Parser/Expressions.js
38725
+ /*******************************************************************************
38726
+ *
38727
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38728
+ *
38729
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38730
+ *
38731
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38732
+ *
38733
+ * The copyright notice above does not evidence any actual of intended
38734
+ * publication of such source code, and is an unpublished work by create3000.
38735
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
38736
+ * create3000.
38737
+ *
38738
+ * No permission is granted to copy, distribute, or create derivative works from
38739
+ * the contents of this software, in whole or in part, without the prior written
38740
+ * permission of create3000.
38741
+ *
38742
+ * NON-MILITARY USE ONLY
38743
+ *
38744
+ * All create3000 software are effectively free software with a non-military use
38745
+ * restriction. It is free. Well commented source is provided. You may reuse the
38746
+ * source in any way you please with the exception anything that uses it must be
38747
+ * marked to indicate is contains 'non-military use only' components.
38748
+ *
38749
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38750
+ *
38751
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38752
+ *
38753
+ * This file is part of the X_ITE Project.
38754
+ *
38755
+ * X_ITE is free software: you can redistribute it and/or modify it under the
38756
+ * terms of the GNU General Public License version 3 only, as published by the
38757
+ * Free Software Foundation.
38758
+ *
38759
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38760
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38761
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38762
+ * details (a copy is included in the LICENSE file that accompanied this code).
38763
+ *
38764
+ * You should have received a copy of the GNU General Public License version 3
38765
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38766
+ * copy of the GPLv3 License.
38767
+ *
38768
+ * For Silvio, Joy and Adi.
38769
+ *
38770
+ ******************************************************************************/
38771
+
38772
+ function parse (parser)
38773
+ {
38774
+ this .lastIndex = parser .lastIndex;
38775
+
38776
+ parser .result = this .exec (parser .input);
38777
+
38778
+ if (parser .result)
38779
+ {
38780
+ parser .lastIndex = this .lastIndex;
38781
+ return true;
38782
+ }
38783
+
38784
+ return false;
38785
+ }
38786
+
38787
+ function lookahead (parser)
38788
+ {
38789
+ const
38790
+ lastIndex = parser .lastIndex,
38791
+ result = this .parse (parser);
38792
+
38793
+ parser .lastIndex = lastIndex;
38794
+
38795
+ return result;
38796
+ }
38797
+
38798
+ function Expressions (Grammar)
38799
+ {
38800
+ for (const value of Object .values (Grammar))
38801
+ {
38802
+ value .parse = parse;
38803
+ value .lookahead = lookahead;
38804
+ }
38805
+
38806
+ return Grammar;
38807
+ }
38808
+
38809
+ const Expressions_default_ = Expressions;
38810
+ ;
38811
+
38812
+ x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_default_);
38813
+ /* harmony default export */ const Parser_Expressions = (Expressions_default_);
39146
38814
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/VRMLParser.js
39147
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(239);
38815
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(484);
39148
38816
  /*******************************************************************************
39149
38817
  *
39150
38818
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39334,6 +39002,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39334
39002
  SQRT1_2: Math .SQRT1_2,
39335
39003
  SQRT2: Math .SQRT2,
39336
39004
  },
39005
+ unknownLevel: 0,
39337
39006
  getEncoding ()
39338
39007
  {
39339
39008
  return "STRING";
@@ -39367,13 +39036,6 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39367
39036
  throw new Error (this .getError (error));
39368
39037
  }
39369
39038
  },
39370
- throwOrWarn (string)
39371
- {
39372
- if (this .getBrowser () .isStrict ())
39373
- throw new Error (string);
39374
-
39375
- console .warn (string);
39376
- },
39377
39039
  getError (error)
39378
39040
  {
39379
39041
  if (DEVELOPMENT)
@@ -39645,7 +39307,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39645
39307
  }
39646
39308
  catch (error)
39647
39309
  {
39648
- console .warn (error .message);
39310
+ console .warn (`Parser error at line ${this .lineNumber}: ${error .message}`);
39649
39311
  return true;
39650
39312
  }
39651
39313
  }
@@ -39891,13 +39553,11 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39891
39553
  for (const field of interfaceDeclarations)
39892
39554
  proto .addUserDefinedField (field .getAccessType (), field .getName (), field);
39893
39555
 
39894
- this .pushPrototype (proto);
39895
39556
  this .pushExecutionContext (proto .getBody ());
39896
39557
 
39897
39558
  this .protoBody (proto .getBody () .rootNodes);
39898
39559
 
39899
39560
  this .popExecutionContext ();
39900
- this .popPrototype ();
39901
39561
 
39902
39562
  this .comments ();
39903
39563
 
@@ -40010,7 +39670,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40010
39670
  throw new Error ("Expected a name for field.");
40011
39671
  }
40012
39672
 
40013
- this .Id ()
39673
+ this .Id ();
40014
39674
 
40015
39675
  throw new Error (`Unknown event or field type: '${this .result [1]}'.`);
40016
39676
  }
@@ -40035,7 +39695,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40035
39695
  throw new Error ("Expected a name for field.");
40036
39696
  }
40037
39697
 
40038
- this .Id ()
39698
+ this .Id ();
40039
39699
 
40040
39700
  throw new Error (`Unknown event or field type: '${this .result [1]}'.`);
40041
39701
  }
@@ -40065,7 +39725,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40065
39725
  throw new Error ("Expected a name for field.");
40066
39726
  }
40067
39727
 
40068
- this .Id ()
39728
+ this .Id ();
40069
39729
 
40070
39730
  throw new Error (`Unknown event or field type: '${this .result [1]}'.`);
40071
39731
  }
@@ -40335,7 +39995,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40335
39995
  }
40336
39996
  catch (error)
40337
39997
  {
40338
- this .throwOrWarn (error .message);
39998
+ console .warn (`Parser error at line ${this .lineNumber}: ${error .message}`);
40339
39999
 
40340
40000
  return true;
40341
40001
  }
@@ -40374,7 +40034,32 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40374
40034
  ?? this .getExecutionContext () .createProto (nodeTypeId, false);
40375
40035
 
40376
40036
  if (!baseNode)
40377
- throw new Error (`Unknown node type or proto '${nodeTypeId}', you probably have insufficient component/profile statements, and/or an inappropriate specification version.`);
40037
+ {
40038
+ // Parse unknown node.
40039
+
40040
+ if (!this .unknownLevel)
40041
+ {
40042
+ console .warn (`Parser error at line ${this .lineNumber}: Unknown node type or proto '${nodeTypeId}', you probably have insufficient component/profile statements, and/or an inappropriate specification version.`);
40043
+ }
40044
+
40045
+ this .comments ();
40046
+
40047
+ if (Grammar .OpenBrace .parse (this))
40048
+ {
40049
+ ++ this .unknownLevel;
40050
+
40051
+ this .nodeBody (this .getExecutionContext () .createNode ("WorldInfo", false));
40052
+
40053
+ -- this .unknownLevel;
40054
+
40055
+ this .comments ();
40056
+
40057
+ if (Grammar .CloseBrace .parse (this))
40058
+ return null;
40059
+ }
40060
+
40061
+ return false;
40062
+ }
40378
40063
 
40379
40064
  if (nodeNameId .length)
40380
40065
  {
@@ -40404,7 +40089,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40404
40089
 
40405
40090
  if (Grammar .CloseBrace .parse (this))
40406
40091
  {
40407
- if (!this .isInsideProtoDefinition ())
40092
+ if (!this .isInsideProtoDeclaration ())
40408
40093
  baseNode .setup ();
40409
40094
 
40410
40095
  return baseNode;
@@ -40447,7 +40132,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40447
40132
 
40448
40133
  if (Grammar .IS .parse (this))
40449
40134
  {
40450
- if (this .isInsideProtoDefinition ())
40135
+ if (this .isInsideProtoDeclaration ())
40451
40136
  {
40452
40137
  if (this .Id ())
40453
40138
  {
@@ -40455,11 +40140,11 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40455
40140
 
40456
40141
  try
40457
40142
  {
40458
- var reference = this .getPrototype () .getField (isId);
40143
+ var reference = this .getOuterNode () .getField (isId);
40459
40144
  }
40460
40145
  catch
40461
40146
  {
40462
- this .throwOrWarn (`No such event or field '${isId}' inside PROTO ${this .getPrototype () .getName ()} interface declaration.`);
40147
+ console .warn (`Parser error at line ${this .lineNumber}: No such event or field '${isId}' inside PROTO ${this .getOuterNode () .getName ()} interface declaration.`);
40463
40148
 
40464
40149
  return true;
40465
40150
  }
@@ -40486,10 +40171,10 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40486
40171
  throw new Error (`Couldn't add field '${fieldId}', field already exists with different access type or data type.`);
40487
40172
  }
40488
40173
 
40489
- throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getPrototype () .getName ()}' are incompatible as an IS mapping.`);
40174
+ throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getOuterNode () .getName ()}' are incompatible as an IS mapping.`);
40490
40175
  }
40491
40176
 
40492
- throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getPrototype () .getName ()}' have different types.`);
40177
+ throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getOuterNode () .getName ()}' have different types.`);
40493
40178
  }
40494
40179
 
40495
40180
  throw new Error ("No name give after IS statement.");
@@ -40551,6 +40236,20 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40551
40236
  }
40552
40237
  catch
40553
40238
  {
40239
+ // Parse unknown field value.
40240
+
40241
+ const lineNumber = this .lineNumber;
40242
+
40243
+ if (this .unknownValue ())
40244
+ {
40245
+ if (!this .unknownLevel)
40246
+ {
40247
+ console .warn (`Parser error at line ${lineNumber}: Unknown field '${fieldId}' in class '${baseNode .getTypeName ()}'.`);
40248
+ }
40249
+
40250
+ return true;
40251
+ }
40252
+
40554
40253
  throw new Error (`Unknown field '${fieldId}' in class '${baseNode .getTypeName ()}'.`);
40555
40254
  }
40556
40255
 
@@ -40558,7 +40257,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40558
40257
 
40559
40258
  if (Grammar .IS .parse (this))
40560
40259
  {
40561
- if (this .isInsideProtoDefinition ())
40260
+ if (this .isInsideProtoDeclaration ())
40562
40261
  {
40563
40262
  if (this .Id ())
40564
40263
  {
@@ -40566,11 +40265,11 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40566
40265
 
40567
40266
  try
40568
40267
  {
40569
- var reference = this .getPrototype () .getField (isId);
40268
+ var reference = this .getOuterNode () .getField (isId);
40570
40269
  }
40571
40270
  catch
40572
40271
  {
40573
- this .throwOrWarn (`No such event or field '${isId}' inside PROTO ${this .getPrototype () .getName ()}`);
40272
+ console .warn (`Parser error at line ${this .lineNumber}: No such event or field '${isId}' inside PROTO ${this .getOuterNode () .getName ()}`);
40574
40273
 
40575
40274
  return true;
40576
40275
  }
@@ -40583,10 +40282,10 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40583
40282
  return true;
40584
40283
  }
40585
40284
 
40586
- throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getPrototype () .getName ()} are incompatible as an IS mapping.`);
40285
+ throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getOuterNode () .getName ()} are incompatible as an IS mapping.`);
40587
40286
  }
40588
40287
 
40589
- throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getPrototype () .getName ()} have different types.`);
40288
+ throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getOuterNode () .getName ()} have different types.`);
40590
40289
  }
40591
40290
 
40592
40291
  throw new Error("No name give after IS statement.");
@@ -40744,10 +40443,13 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40744
40443
  sfboolValues (field)
40745
40444
  {
40746
40445
  field .length = 0;
40747
- field = field .getTarget ();
40446
+
40447
+ const target = field .getTarget ();
40748
40448
 
40749
40449
  while (this .bool ())
40750
- field .push (this .value);
40450
+ target .push (this .value);
40451
+
40452
+ return field .length !== 0;
40751
40453
  },
40752
40454
  sfcolorValue (field)
40753
40455
  {
@@ -40816,12 +40518,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40816
40518
  sfcolorValues (field)
40817
40519
  {
40818
40520
  field .length = 0;
40819
- field = field .getTarget ();
40820
40521
 
40821
- const value = this .Color3;
40522
+ const
40523
+ target = field .getTarget (),
40524
+ value = this .Color3;
40822
40525
 
40823
40526
  while (this .sfcolorValue (value))
40824
- field .push (value);
40527
+ target .push (value);
40528
+
40529
+ return field .length !== 0;
40825
40530
  },
40826
40531
  sfcolorrgbaValue (field)
40827
40532
  {
@@ -40897,12 +40602,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40897
40602
  sfcolorrgbaValues (field)
40898
40603
  {
40899
40604
  field .length = 0;
40900
- field = field .getTarget ();
40901
40605
 
40902
- const value = this .Color4;
40606
+ const
40607
+ target = field .getTarget (),
40608
+ value = this .Color4;
40903
40609
 
40904
40610
  while (this .sfcolorrgbaValue (value))
40905
- field .push (value);
40611
+ target .push (value);
40612
+
40613
+ return field .length !== 0;
40906
40614
  },
40907
40615
  sfdoubleValue (field)
40908
40616
  {
@@ -40939,12 +40647,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40939
40647
  sfdoubleValues (field)
40940
40648
  {
40941
40649
  field .length = 0;
40942
- field = field .getTarget ();
40943
40650
 
40944
- const unit = field .getUnit ();
40651
+ const
40652
+ target = field .getTarget (),
40653
+ unit = target .getUnit ();
40945
40654
 
40946
40655
  while (this .double ())
40947
- field .push (this .fromUnit (unit, this .value));
40656
+ target .push (this .fromUnit (unit, this .value));
40657
+
40658
+ return field .length !== 0;
40948
40659
  },
40949
40660
  sfimageValue (field)
40950
40661
  {
@@ -41011,12 +40722,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41011
40722
  sfimageValues (field)
41012
40723
  {
41013
40724
  field .length = 0;
41014
- field = field .getTarget ();
41015
40725
 
41016
- const value = this .SFImage;
40726
+ const
40727
+ target = field .getTarget (),
40728
+ value = this .SFImage;
41017
40729
 
41018
40730
  while (this .sfimageValue (value))
41019
- field .push (value);
40731
+ target .push (value);
40732
+
40733
+ return field .length !== 0;
41020
40734
  },
41021
40735
  sfint32Value (field)
41022
40736
  {
@@ -41053,10 +40767,13 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41053
40767
  sfint32Values (field)
41054
40768
  {
41055
40769
  field .length = 0;
41056
- field = field .getTarget ();
40770
+
40771
+ const target = field .getTarget ();
41057
40772
 
41058
40773
  while (this .int32 ())
41059
- field .push (this .value);
40774
+ target .push (this .value);
40775
+
40776
+ return field .length !== 0;
41060
40777
  },
41061
40778
  sfmatrix3Value (field)
41062
40779
  {
@@ -41144,12 +40861,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41144
40861
  sfmatrix3Values (field)
41145
40862
  {
41146
40863
  field .length = 0;
41147
- field = field .getTarget ();
41148
40864
 
41149
- const value = this .Matrix3;
40865
+ const
40866
+ target = field .getTarget (),
40867
+ value = this .Matrix3;
41150
40868
 
41151
40869
  while (this .sfmatrix3Value (value))
41152
- field .push (value);
40870
+ target .push (value);
40871
+
40872
+ return field .length !== 0;
41153
40873
  },
41154
40874
  sfmatrix4Value (field)
41155
40875
  {
@@ -41279,12 +40999,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41279
40999
  sfmatrix4Values (field)
41280
41000
  {
41281
41001
  field .length = 0;
41282
- field = field .getTarget ();
41283
41002
 
41284
- const value = this .Matrix4;
41003
+ const
41004
+ target = field .getTarget (),
41005
+ value = this .Matrix4;
41285
41006
 
41286
41007
  while (this .sfmatrix4Value (value))
41287
- field .push (value);
41008
+ target .push (value);
41009
+
41010
+ return field .length !== 0;
41288
41011
  },
41289
41012
  sfnodeValue (field)
41290
41013
  {
@@ -41391,12 +41114,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41391
41114
  sfrotationValues (field)
41392
41115
  {
41393
41116
  field .length = 0;
41394
- field = field .getTarget ();
41395
41117
 
41396
- const value = this .Rotation4;
41118
+ const
41119
+ target = field .getTarget (),
41120
+ value = this .Rotation4;
41397
41121
 
41398
41122
  while (this .sfrotationValue (value))
41399
- field .push (value);
41123
+ target .push (value);
41124
+
41125
+ return field .length !== 0;
41400
41126
  },
41401
41127
  sfstringValue (field)
41402
41128
  {
@@ -41433,10 +41159,13 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41433
41159
  sfstringValues (field)
41434
41160
  {
41435
41161
  field .length = 0;
41436
- field = field .getTarget ();
41162
+
41163
+ const target = field .getTarget ();
41437
41164
 
41438
41165
  while (this .string ())
41439
- field .push (this .value);
41166
+ target .push (this .value);
41167
+
41168
+ return field .length !== 0;
41440
41169
  },
41441
41170
  sfvec2Value (field, unit)
41442
41171
  {
@@ -41482,14 +41211,16 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41482
41211
  sfvec2Values (field)
41483
41212
  {
41484
41213
  field .length = 0;
41485
- field = field .getTarget ();
41486
41214
 
41487
41215
  const
41488
- value = this .Vector2,
41489
- unit = field .getUnit ();
41216
+ target = field .getTarget (),
41217
+ value = this .Vector2,
41218
+ unit = target .getUnit ();
41490
41219
 
41491
41220
  while (this .sfvec2Value (value, unit))
41492
- field .push (value);
41221
+ target .push (value);
41222
+
41223
+ return field .length !== 0;
41493
41224
  },
41494
41225
  sfvec3Value (field, unit)
41495
41226
  {
@@ -41541,14 +41272,16 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41541
41272
  sfvec3Values (field)
41542
41273
  {
41543
41274
  field .length = 0;
41544
- field = field .getTarget ();
41545
41275
 
41546
41276
  const
41547
- value = this .Vector3,
41548
- unit = field .getUnit ();
41277
+ target = field .getTarget (),
41278
+ value = this .Vector3,
41279
+ unit = target .getUnit ();
41549
41280
 
41550
41281
  while (this .sfvec3Value (value, unit))
41551
- field .push (value);
41282
+ target .push (value);
41283
+
41284
+ return field .length !== 0;
41552
41285
  },
41553
41286
  sfvec4Value (field, unit)
41554
41287
  {
@@ -41606,14 +41339,79 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41606
41339
  sfvec4Values (field)
41607
41340
  {
41608
41341
  field .length = 0;
41609
- field = field .getTarget ();
41610
41342
 
41611
41343
  const
41612
- value = this .Vector4,
41613
- unit = field .getUnit ();
41344
+ target = field .getTarget (),
41345
+ value = this .Vector4,
41346
+ unit = target .getUnit ();
41614
41347
 
41615
41348
  while (this .sfvec4Value (value, unit))
41616
- field .push (value);
41349
+ target .push (value);
41350
+
41351
+ return field .length !== 0;
41352
+ },
41353
+ unknownValue ()
41354
+ {
41355
+ try
41356
+ {
41357
+ ++ this .unknownLevel;
41358
+
41359
+ if (Grammar .IS .parse (this))
41360
+ {
41361
+ if (this .isInsideProtoDeclaration ())
41362
+ {
41363
+ if (this .Id ())
41364
+ return true;
41365
+ }
41366
+ }
41367
+
41368
+ if (this .mfunknownValue ())
41369
+ return true;
41370
+
41371
+ return false;
41372
+ }
41373
+ finally
41374
+ {
41375
+ -- this .unknownLevel;
41376
+ }
41377
+ },
41378
+ sfunknownValue ()
41379
+ {
41380
+ if (this .sfboolValue (new x_ite_Fields .SFBool ()))
41381
+ return true;
41382
+
41383
+ if (this .sfdoubleValues (new x_ite_Fields .MFFloat ()))
41384
+ return true;
41385
+
41386
+ if (this .sfstringValue (new x_ite_Fields .SFString ()))
41387
+ return true;
41388
+
41389
+ if (this .sfnodeValue (new x_ite_Fields .SFNode ()))
41390
+ return true;
41391
+
41392
+ return false;
41393
+ },
41394
+ mfunknownValue ()
41395
+ {
41396
+ if (this .sfunknownValue ())
41397
+ return true;
41398
+
41399
+ if (Grammar .OpenBracket .parse (this))
41400
+ {
41401
+ this .sfunknownValues ();
41402
+
41403
+ if (Grammar .CloseBracket .parse (this))
41404
+ return true;
41405
+
41406
+ throw new Error ("Expected ']'.");
41407
+ }
41408
+
41409
+ return false;
41410
+ },
41411
+ sfunknownValues ()
41412
+ {
41413
+ while (this .sfunknownValue ())
41414
+ ;
41617
41415
  },
41618
41416
  accessTypeToString (accessType)
41619
41417
  {
@@ -41697,7 +41495,7 @@ const VRMLParser_default_ = VRMLParser;
41697
41495
  x_ite_Namespace .add ("VRMLParser", "x_ite/Parser/VRMLParser", VRMLParser_default_);
41698
41496
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
41699
41497
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
41700
- /* provided dependency */ var XMLParser_$ = __webpack_require__(239);
41498
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(484);
41701
41499
  /*******************************************************************************
41702
41500
  *
41703
41501
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42192,13 +41990,11 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42192
41990
  case "ProtoBody":
42193
41991
  case "PROTOBODY":
42194
41992
  {
42195
- this .pushPrototype (proto);
42196
41993
  this .pushExecutionContext (proto .getBody ());
42197
41994
  this .pushParent (proto);
42198
41995
  this .protoBodyElement (childNode);
42199
41996
  this .popParent ();
42200
41997
  this .popExecutionContext ();
42201
- this .popPrototype ();
42202
41998
  break;
42203
41999
  }
42204
42000
  default:
@@ -42290,7 +42086,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42290
42086
  },
42291
42087
  isElement (xmlElement)
42292
42088
  {
42293
- if (this .isInsideProtoDefinition ())
42089
+ if (this .isInsideProtoDeclaration ())
42294
42090
  {
42295
42091
  for (const childNode of xmlElement .childNodes)
42296
42092
  this .isElementChild (childNode);
@@ -42325,7 +42121,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42325
42121
 
42326
42122
  const
42327
42123
  node = this .getParent (),
42328
- proto = this .getPrototype ();
42124
+ proto = this .getOuterNode ();
42329
42125
 
42330
42126
  if (!(node instanceof Core_X3DNode))
42331
42127
  return;
@@ -42373,7 +42169,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42373
42169
  this .pushParent (node);
42374
42170
  this .childrenElements (xmlElement);
42375
42171
 
42376
- if (!this .isInsideProtoDefinition ())
42172
+ if (!this .isInsideProtoDeclaration ())
42377
42173
  node .setup ();
42378
42174
 
42379
42175
  this .popParent ();
@@ -42453,7 +42249,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42453
42249
  this .nodeAttributes (xmlElement, node);
42454
42250
  this .childrenElements (xmlElement);
42455
42251
 
42456
- if (!this .isInsideProtoDefinition ())
42252
+ if (!this .isInsideProtoDeclaration ())
42457
42253
  node .setup ();
42458
42254
 
42459
42255
  this .popParent ();
@@ -43790,7 +43586,7 @@ const URLs_default_ = URLs;
43790
43586
  x_ite_Namespace .add ("URLs", "x_ite/Browser/Networking/URLs", URLs_default_);
43791
43587
  /* harmony default export */ const Networking_URLs = (URLs_default_);
43792
43588
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
43793
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(239);
43589
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(484);
43794
43590
  /*******************************************************************************
43795
43591
  *
43796
43592
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47091,7 +46887,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
47091
46887
  x_ite_Namespace .add ("GLTF2Parser", "x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
47092
46888
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
47093
46889
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
47094
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(239);
46890
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(484);
47095
46891
  /*******************************************************************************
47096
46892
  *
47097
46893
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47243,7 +47039,7 @@ const GLB2Parser_default_ = GLB2Parser;
47243
47039
  x_ite_Namespace .add ("GLB2Parser", "x_ite/Parser/GLB2Parser", GLB2Parser_default_);
47244
47040
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
47245
47041
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
47246
- /* provided dependency */ var OBJParser_$ = __webpack_require__(239);
47042
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(484);
47247
47043
  /*******************************************************************************
47248
47044
  *
47249
47045
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50598,8 +50394,8 @@ const MatrixStack_default_ = MatrixStack;
50598
50394
  x_ite_Namespace .add ("MatrixStack", "standard/Math/Utility/MatrixStack", MatrixStack_default_);
50599
50395
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
50600
50396
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
50601
- /* provided dependency */ var SVGParser_$ = __webpack_require__(239);
50602
- /* provided dependency */ var libtess = __webpack_require__(488);
50397
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(484);
50398
+ /* provided dependency */ var libtess = __webpack_require__(53);
50603
50399
  /*******************************************************************************
50604
50400
  *
50605
50401
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53367,7 +53163,7 @@ const SVGParser_default_ = SVGParser;
53367
53163
  x_ite_Namespace .add ("SVGParser", "x_ite/Parser/SVGParser", SVGParser_default_);
53368
53164
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
53369
53165
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
53370
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(239);
53166
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(484);
53371
53167
  /*******************************************************************************
53372
53168
  *
53373
53169
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53704,7 +53500,7 @@ const Plane3_default_ = Plane3;
53704
53500
  x_ite_Namespace .add ("Plane3", "standard/Math/Geometry/Plane3", Plane3_default_);
53705
53501
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
53706
53502
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
53707
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(488);
53503
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(53);
53708
53504
  /*******************************************************************************
53709
53505
  *
53710
53506
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -61211,7 +61007,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
61211
61007
  x_ite_Namespace .add ("X3DTexture2DNode", "x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
61212
61008
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
61213
61009
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
61214
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(239);
61010
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(484);
61215
61011
  /*******************************************************************************
61216
61012
  *
61217
61013
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -65798,7 +65594,7 @@ const X3DWorld_default_ = X3DWorld;
65798
65594
  x_ite_Namespace .add ("X3DWorld", "x_ite/Execution/X3DWorld", X3DWorld_default_);
65799
65595
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
65800
65596
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
65801
- /* provided dependency */ var FileLoader_$ = __webpack_require__(239);
65597
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(484);
65802
65598
  /*******************************************************************************
65803
65599
  *
65804
65600
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66729,6 +66525,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
66729
66525
  x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclarationArray", ProtoDeclarationArray_default_);
66730
66526
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (ProtoDeclarationArray_default_);
66731
66527
  ;// CONCATENATED MODULE: ./src/x_ite/Routing/X3DRoute.js
66528
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(484);
66732
66529
  /*******************************************************************************
66733
66530
  *
66734
66531
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66780,29 +66577,35 @@ x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclaration
66780
66577
 
66781
66578
 
66782
66579
 
66580
+
66581
+
66783
66582
  const
66784
- X3DRoute_executionContext = Symbol (),
66785
- _sourceNode = Symbol (),
66786
- _sourceField = Symbol (),
66787
- _destinationNode = Symbol (),
66788
- _destinationField = Symbol ();
66583
+ X3DRoute_executionContext = Symbol (),
66584
+ _sourceNode = Symbol (),
66585
+ _sourceFieldName = Symbol (),
66586
+ _sourceField = Symbol (),
66587
+ _destinationNode = Symbol (),
66588
+ _destinationFieldName = Symbol (),
66589
+ _destinationField = Symbol (),
66590
+ _disposed = Symbol ();
66789
66591
 
66790
- function X3DRoute (executionContext, sourceNode, sourceField, destinationNode, destinationField)
66592
+ function X3DRoute (executionContext, sourceNode, sourceFieldName, destinationNode, destinationFieldName)
66791
66593
  {
66792
66594
  Base_X3DObject .call (this, executionContext);
66793
66595
 
66794
- this [X3DRoute_executionContext] = executionContext;
66795
- this [_sourceNode] = Fields_SFNodeCache .get (sourceNode);
66796
- this [_sourceField] = sourceField;
66797
- this [_destinationNode] = Fields_SFNodeCache .get (destinationNode);
66798
- this [_destinationField] = destinationField;
66596
+ this [X3DRoute_executionContext] = executionContext;
66597
+ this [_sourceNode] = sourceNode;
66598
+ this [_sourceFieldName] = sourceFieldName;
66599
+ this [_destinationNode] = destinationNode;
66600
+ this [_destinationFieldName] = destinationFieldName;
66799
66601
 
66800
- // Must connect in every context, to make X3DBaseNode.hasRoutes work.
66602
+ if (sourceNode instanceof Execution_X3DImportedNode)
66603
+ sourceNode .getInlineNode () .getLoadState () .addInterest ("reconnect", this);
66801
66604
 
66802
- sourceField .addFieldInterest (destinationField);
66605
+ if (destinationNode instanceof Execution_X3DImportedNode)
66606
+ destinationNode .getInlineNode () .getLoadState () .addInterest ("reconnect", this);
66803
66607
 
66804
- sourceField .addOutputRoute (this);
66805
- destinationField .addInputRoute (this);
66608
+ this .reconnect ();
66806
66609
  }
66807
66610
 
66808
66611
  Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .prototype),
@@ -66813,67 +66616,169 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66813
66616
  },
66814
66617
  getRouteId ()
66815
66618
  {
66816
- return X3DRoute .getRouteId (this [_sourceField], this [_destinationField]);
66619
+ return X3DRoute .getRouteId (this [_sourceNode], this [_sourceFieldName], this [_destinationNode], this [_destinationFieldName]);
66817
66620
  },
66818
66621
  getSourceNode ()
66819
66622
  {
66820
66623
  /// SAI
66821
- return this [_sourceNode] .getValue ();
66624
+ return this [_sourceNode];
66822
66625
  },
66823
66626
  getSourceField ()
66824
66627
  {
66825
66628
  /// SAI
66826
- return this [_sourceField];
66629
+
66630
+ if (this [_sourceField])
66631
+ {
66632
+ return this [_sourceField] .getAccessType () === Base_X3DConstants .inputOutput
66633
+ ? this [_sourceField] .getName () + "_changed"
66634
+ : this [_sourceField] .getName ();
66635
+ }
66636
+ else
66637
+ {
66638
+ return this [_sourceFieldName];
66639
+ }
66640
+
66827
66641
  },
66828
66642
  getDestinationNode ()
66829
66643
  {
66830
66644
  /// SAI
66831
- return this [_destinationNode] .getValue ();
66645
+ return this [_destinationNode];
66832
66646
  },
66833
66647
  getDestinationField ()
66834
66648
  {
66835
66649
  /// SAI
66836
- return this [_destinationField];
66650
+
66651
+ if (this [_destinationField])
66652
+ {
66653
+ return this [_destinationField] .getAccessType () === Base_X3DConstants .inputOutput
66654
+ ? "set_" + this [_destinationField] .getName ()
66655
+ : this [_destinationField] .getName ();
66656
+ }
66657
+ else
66658
+ {
66659
+ return this [_destinationFieldName];
66660
+ }
66661
+ },
66662
+ reconnect ()
66663
+ {
66664
+ try
66665
+ {
66666
+ this .disconnect ();
66667
+ this .connect ();
66668
+ }
66669
+ catch (error)
66670
+ {
66671
+ if ((this [_sourceNode] instanceof Core_X3DNode ||
66672
+ this [_sourceNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE) &&
66673
+ (this [_destinationNode] instanceof Core_X3DNode ||
66674
+ this [_destinationNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE))
66675
+ {
66676
+ console .warn (error .message);
66677
+ }
66678
+ }
66679
+ },
66680
+ connect ()
66681
+ {
66682
+ if (this [_disposed])
66683
+ return;
66684
+
66685
+ try
66686
+ {
66687
+ const sourceNode = this [_sourceNode] instanceof Core_X3DNode
66688
+ ? this [_sourceNode]
66689
+ : this [_sourceNode] .getExportedNode ();
66690
+
66691
+ this [_sourceField] = sourceNode .getField (this [_sourceFieldName]);
66692
+
66693
+ this [_sourceField] .addOutputRoute (this);
66694
+ }
66695
+ catch (error)
66696
+ {
66697
+ var firstError = error;
66698
+ }
66699
+
66700
+ try
66701
+ {
66702
+ const destinationNode = this [_destinationNode] instanceof Core_X3DNode
66703
+ ? this [_destinationNode]
66704
+ : this [_destinationNode] .getExportedNode ();
66705
+
66706
+ this [_destinationField] = destinationNode .getField (this [_destinationFieldName]);
66707
+
66708
+ this [_destinationField] .addInputRoute (this);
66709
+ }
66710
+ catch (error)
66711
+ {
66712
+ var secondError = error;
66713
+ }
66714
+
66715
+ if (this [_sourceField] && this [_destinationField])
66716
+ {
66717
+ if (this [_sourceField] .getFieldInterests () .has (this [_destinationField]))
66718
+ return;
66719
+
66720
+ this [_sourceField] .addFieldInterest (this [_destinationField]);
66721
+ }
66722
+ else
66723
+ {
66724
+ throw firstError ?? secondError;
66725
+ }
66837
66726
  },
66838
66727
  disconnect ()
66839
66728
  {
66840
- this [_sourceField] .removeFieldInterest (this [_destinationField]);
66729
+ this [_sourceField] ?.removeOutputRoute (this);
66730
+ this [_destinationField] ?.removeInputRoute (this);
66731
+
66732
+ if (this [_sourceField] && this [_destinationField])
66733
+ this [_sourceField] .removeFieldInterest (this [_destinationField]);
66841
66734
 
66842
- this [_sourceField] .removeOutputRoute (this);
66843
- this [_destinationField] .removeInputRoute (this);
66735
+ this [_sourceField] = null;
66736
+ this [_destinationField] = null;
66844
66737
  },
66845
66738
  toVRMLStream (generator)
66846
66739
  {
66847
- const
66848
- sourceNodeName = generator .LocalName (this .getSourceNode ()),
66849
- destinationNodeName = generator .LocalName (this .getDestinationNode ());
66740
+ if (!generator .ExistsRouteNode (this [_sourceNode]))
66741
+ throw new Error (`Source node does not exist in scene graph.`);
66742
+
66743
+ if (!generator .ExistsRouteNode (this [_destinationNode]))
66744
+ throw new Error (`Destination node does not exist in scene graph.`);
66745
+
66746
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
66747
+ ? generator .Name (this [_sourceNode])
66748
+ : this [_sourceNode] .getImportedName ();
66749
+
66750
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
66751
+ ? generator .Name (this [_destinationNode])
66752
+ : this [_destinationNode] .getImportedName ();
66850
66753
 
66851
66754
  generator .string += generator .Indent ();
66852
66755
  generator .string += "ROUTE";
66853
66756
  generator .string += generator .Space ();
66854
66757
  generator .string += sourceNodeName;
66855
66758
  generator .string += ".";
66856
- generator .string += this [_sourceField] .getName ();
66857
-
66858
- if (this [_sourceField] .getAccessType () === Base_X3DConstants .inputOutput)
66859
- generator .string += "_changed";
66860
-
66759
+ generator .string += this .getSourceField ();
66861
66760
  generator .string += generator .Space ();
66862
66761
  generator .string += "TO";
66863
66762
  generator .string += generator .Space ();
66864
66763
  generator .string += destinationNodeName;
66865
66764
  generator .string += ".";
66866
-
66867
- if (this [_destinationField] .getAccessType () === Base_X3DConstants .inputOutput)
66868
- generator .string += "set_";
66869
-
66870
- generator .string += this [_destinationField] .getName ();
66765
+ generator .string += this .getDestinationField ();
66871
66766
  },
66872
66767
  toXMLStream (generator)
66873
66768
  {
66874
- const
66875
- sourceNodeName = generator .LocalName (this .getSourceNode ()),
66876
- destinationNodeName = generator .LocalName (this .getDestinationNode ());
66769
+ if (!generator .ExistsRouteNode (this [_sourceNode]))
66770
+ throw new Error (`Source node does not exist in scene graph.`);
66771
+
66772
+ if (!generator .ExistsRouteNode (this [_destinationNode]))
66773
+ throw new Error (`Destination node does not exist in scene graph.`);
66774
+
66775
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
66776
+ ? generator .Name (this [_sourceNode])
66777
+ : this [_sourceNode] .getImportedName ();
66778
+
66779
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
66780
+ ? generator .Name (this [_destinationNode])
66781
+ : this [_destinationNode] .getImportedName ();
66877
66782
 
66878
66783
  generator .string += generator .Indent ();
66879
66784
  generator .string += "<ROUTE";
@@ -66883,11 +66788,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66883
66788
  generator .string += "'";
66884
66789
  generator .string += generator .Space ();
66885
66790
  generator .string += "fromField='";
66886
- generator .string += generator .XMLEncode (this [_sourceField] .getName ());
66887
-
66888
- if (this [_sourceField] .getAccessType () === Base_X3DConstants .inputOutput)
66889
- generator .string += "_changed";
66890
-
66791
+ generator .string += generator .XMLEncode (this .getSourceField ());
66891
66792
  generator .string += "'";
66892
66793
  generator .string += generator .Space ();
66893
66794
  generator .string += "toNode='";
@@ -66895,19 +66796,25 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66895
66796
  generator .string += "'";
66896
66797
  generator .string += generator .Space ();
66897
66798
  generator .string += "toField='";
66898
-
66899
- if (this [_destinationField] .getAccessType () === Base_X3DConstants .inputOutput)
66900
- generator .string += "set_";
66901
-
66902
- generator .string += generator .XMLEncode (this [_destinationField] .getName ());
66799
+ generator .string += generator .XMLEncode (this .getDestinationField ());
66903
66800
  generator .string += "'";
66904
66801
  generator .string += generator .closingTags ? "></ROUTE>" : "/>";
66905
66802
  },
66906
66803
  toJSONStream (generator)
66907
66804
  {
66908
- const
66909
- sourceNodeName = generator .LocalName (this .getSourceNode ()),
66910
- destinationNodeName = generator .LocalName (this .getDestinationNode ());
66805
+ if (!generator .ExistsRouteNode (this [_sourceNode]))
66806
+ throw new Error (`Source node does not exist in scene graph.`);
66807
+
66808
+ if (!generator .ExistsRouteNode (this [_destinationNode]))
66809
+ throw new Error (`Destination node does not exist in scene graph.`);
66810
+
66811
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
66812
+ ? generator .Name (this [_sourceNode])
66813
+ : this [_sourceNode] .getImportedName ();
66814
+
66815
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
66816
+ ? generator .Name (this [_destinationNode])
66817
+ : this [_destinationNode] .getImportedName ();
66911
66818
 
66912
66819
  generator .string += generator .Indent ();
66913
66820
  generator .string += '{';
@@ -66942,7 +66849,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66942
66849
  generator .string += ':';
66943
66850
  generator .string += generator .TidySpace ();
66944
66851
  generator .string += '"';
66945
- generator .string += generator .JSONEncode (this [_sourceField] .getName ());
66852
+ generator .string += generator .JSONEncode (this .getSourceField ());
66946
66853
  generator .string += '"';
66947
66854
  generator .string += ',';
66948
66855
  generator .string += generator .TidyBreak ();
@@ -66966,7 +66873,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66966
66873
  generator .string += ':';
66967
66874
  generator .string += generator .TidySpace ();
66968
66875
  generator .string += '"';
66969
- generator .string += generator .JSONEncode (this [_destinationField] .getName ());
66876
+ generator .string += generator .JSONEncode (this .getDestinationField ());
66970
66877
  generator .string += '"';
66971
66878
  generator .string += generator .TidyBreak ();
66972
66879
 
@@ -66980,8 +66887,19 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66980
66887
  },
66981
66888
  dispose ()
66982
66889
  {
66890
+ if (this [_disposed])
66891
+ return;
66892
+
66893
+ this [_disposed] = true;
66894
+
66983
66895
  this .disconnect ();
66984
66896
 
66897
+ if (this [_sourceNode] instanceof Execution_X3DImportedNode)
66898
+ this [_sourceNode] .getInlineNode () .getLoadState () .removeInterest ("reconnect", this);
66899
+
66900
+ if (this [_destinationNode] instanceof Execution_X3DImportedNode)
66901
+ this [_destinationNode] .getInlineNode () .getLoadState () .removeInterest ("reconnect", this);
66902
+
66985
66903
  this [X3DRoute_executionContext] .deleteRoute (this);
66986
66904
 
66987
66905
  Base_X3DObject .prototype .dispose .call (this);
@@ -66997,32 +66915,32 @@ Object .defineProperties (X3DRoute .prototype,
66997
66915
  {
66998
66916
  get ()
66999
66917
  {
67000
- return this [_sourceNode];
66918
+ if (this [_sourceNode] instanceof Core_X3DNode)
66919
+ return Fields_SFNodeCache .get (this [_sourceNode]);
66920
+ else
66921
+ return this [_sourceNode];
67001
66922
  },
67002
66923
  enumerable: true,
67003
66924
  },
67004
66925
  sourceField:
67005
66926
  {
67006
- get ()
67007
- {
67008
- return this [_sourceField] .getName ();
67009
- },
66927
+ get: X3DRoute .prototype .getSourceField,
67010
66928
  enumerable: true,
67011
66929
  },
67012
66930
  destinationNode:
67013
66931
  {
67014
66932
  get ()
67015
66933
  {
67016
- return this [_destinationNode];
66934
+ if (this [_destinationNode] instanceof Core_X3DNode)
66935
+ return Fields_SFNodeCache .get (this [_destinationNode]);
66936
+ else
66937
+ return this [_destinationNode];
67017
66938
  },
67018
66939
  enumerable: true,
67019
66940
  },
67020
66941
  destinationField:
67021
66942
  {
67022
- get ()
67023
- {
67024
- return this [_destinationField] .getName ();
67025
- },
66943
+ get: X3DRoute .prototype .getDestinationField,
67026
66944
  enumerable: true,
67027
66945
  },
67028
66946
  });
@@ -67038,9 +66956,33 @@ Object .defineProperties (X3DRoute,
67038
66956
 
67039
66957
  Object .assign (X3DRoute,
67040
66958
  {
67041
- getRouteId (sourceField, destinationField)
66959
+ getRouteId (sourceNode, sourceFieldName, destinationNode, destinationFieldName)
67042
66960
  {
67043
- return `${sourceField .getId ()}.${destinationField .getId ()}`;
66961
+ const sourceField = sourceNode instanceof Core_X3DNode
66962
+ ? sourceNode .getField (sourceFieldName)
66963
+ : X3DRoute_$.try (() => sourceNode .getExportedNode () .getField (sourceFieldName));
66964
+
66965
+ const destinationField = destinationNode instanceof Core_X3DNode
66966
+ ? destinationNode .getField (destinationFieldName)
66967
+ : X3DRoute_$.try (() => destinationNode .getExportedNode () .getField (destinationFieldName));
66968
+
66969
+ if (sourceField)
66970
+ {
66971
+ sourceFieldName = sourceField .getName ();
66972
+
66973
+ if (sourceField .getAccessType () === Base_X3DConstants .inputOutput)
66974
+ sourceFieldName += "_changed";
66975
+ }
66976
+
66977
+ if (destinationField)
66978
+ {
66979
+ destinationFieldName = destinationField .getName ();
66980
+
66981
+ if (destinationField .getAccessType () === Base_X3DConstants .inputOutput)
66982
+ destinationFieldName = "set_" + destinationFieldName;
66983
+ }
66984
+
66985
+ return `${sourceNode .getId ()}.${sourceFieldName}.${destinationNode .getId ()}.${destinationFieldName}`;
67044
66986
  },
67045
66987
  });
67046
66988
 
@@ -67188,6 +67130,7 @@ x_ite_Namespace .add ("RouteArray", "x_ite/Routing/RouteArray", RouteArray_defau
67188
67130
 
67189
67131
 
67190
67132
 
67133
+
67191
67134
  const
67192
67135
  _namedNodes = Symbol (),
67193
67136
  _importedNodes = Symbol (),
@@ -67512,6 +67455,10 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67512
67455
  {
67513
67456
  return this [_importedNodes];
67514
67457
  },
67458
+ getUniqueImportName (name)
67459
+ {
67460
+ return getUniqueName (this [_importedNodes], name);
67461
+ },
67515
67462
  getLocalNode (name)
67516
67463
  {
67517
67464
  name = String (name);
@@ -67525,33 +67472,32 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67525
67472
  const importedNode = this [_importedNodes] .get (name);
67526
67473
 
67527
67474
  if (importedNode)
67528
- return Fields_SFNodeCache .get (importedNode);
67475
+ return importedNode;
67529
67476
 
67530
67477
  throw new Error (`Unknown named or imported node '${name}'.`);
67531
67478
  }
67532
67479
  },
67533
- getLocalName (node)
67480
+ getLocalizedNode (node)
67534
67481
  {
67535
- node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
67482
+ const importedNode = node instanceof Execution_X3DImportedNode ? node : null;
67536
67483
 
67537
- if (!node)
67538
- throw new Error ("Couldn't get local name: node must be of type X3DNode.");
67484
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false) ?? importedNode;
67539
67485
 
67540
- if (node .getExecutionContext () === this)
67541
- return node .getName ();
67486
+ if (!node)
67487
+ throw new Error ("Couldn't get localized node: node must be of type X3DNode.");
67542
67488
 
67543
67489
  for (const importedNode of this [_importedNodes])
67544
67490
  {
67545
67491
  try
67546
67492
  {
67547
67493
  if (importedNode .getExportedNode () === node)
67548
- return importedNode .getImportedName ();
67494
+ return importedNode;
67549
67495
  }
67550
67496
  catch
67551
67497
  { }
67552
67498
  }
67553
67499
 
67554
- throw new Error ("Couldn't get local name: node is shared.");
67500
+ return node;
67555
67501
  },
67556
67502
  setRootNodes () { },
67557
67503
  getRootNodes ()
@@ -67706,102 +67652,48 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67706
67652
  },
67707
67653
  addRoute (sourceNode, sourceField, destinationNode, destinationField)
67708
67654
  {
67709
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false);
67710
- sourceField = String (sourceField);
67711
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false);
67712
- destinationField = String (destinationField);
67713
-
67714
- if (!sourceNode)
67715
- throw new Error ("Bad ROUTE specification: source node must be of type X3DNode.");
67716
-
67717
- if (!destinationNode)
67718
- throw new Error ("Bad ROUTE specification: destination node must be of type X3DNode.");
67719
-
67720
- // Imported nodes handling.
67721
-
67722
- let
67723
- importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
67724
- importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
67725
-
67726
- try
67727
- {
67728
- // If sourceNode is shared node try to find the corresponding X3DImportedNode.
67729
- if (sourceNode .getExecutionContext () !== this)
67730
- importedSourceNode = this .getLocalNode (this .getLocalName (sourceNode)) .getValue ();
67731
- }
67732
- catch
67733
- {
67734
- // Source node is shared but not imported.
67735
- }
67736
-
67737
67655
  try
67738
67656
  {
67739
- // If destinationNode is shared node try to find the corresponding X3DImportedNode.
67740
- if (destinationNode .getExecutionContext () !== this)
67741
- importedDestinationNode = this .getLocalNode (this .getLocalName (destinationNode)) .getValue ();
67742
- }
67743
- catch
67744
- {
67745
- // Destination node is shared but not imported.
67746
- }
67657
+ // Normalize arguments.
67747
67658
 
67748
- if (importedSourceNode instanceof Execution_X3DImportedNode && importedDestinationNode instanceof Execution_X3DImportedNode)
67749
- {
67750
- importedSourceNode .addRoute (importedSourceNode, sourceField, importedDestinationNode, destinationField);
67751
- importedDestinationNode .addRoute (importedSourceNode, sourceField, importedDestinationNode, destinationField);
67752
- }
67753
- else if (importedSourceNode instanceof Execution_X3DImportedNode)
67754
- {
67755
- importedSourceNode .addRoute (importedSourceNode, sourceField, destinationNode, destinationField);
67756
- }
67757
- else if (importedDestinationNode instanceof Execution_X3DImportedNode)
67758
- {
67759
- importedDestinationNode .addRoute (sourceNode, sourceField, importedDestinationNode, destinationField);
67760
- }
67761
-
67762
- // If either sourceNode or destinationNode is an X3DImportedNode return here without value.
67763
- if (importedSourceNode === sourceNode || importedDestinationNode === destinationNode)
67764
- return;
67765
-
67766
- // Create route and return.
67767
-
67768
- return this .addSimpleRoute (sourceNode, sourceField, destinationNode, destinationField);
67769
- },
67770
- addSimpleRoute (sourceNode, sourceField, destinationNode, destinationField)
67771
- {
67772
- // Source and dest node are here X3DBaseNode.
67659
+ const
67660
+ importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
67661
+ importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
67773
67662
 
67774
- try
67775
- {
67776
- // Private function.
67777
- // Create route and return.
67663
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
67664
+ sourceField = String (sourceField);
67665
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
67666
+ destinationField = String (destinationField);
67778
67667
 
67779
- sourceField = sourceNode .getField (sourceField),
67780
- destinationField = destinationNode .getField (destinationField);
67668
+ if (!sourceNode)
67669
+ throw new Error ("source node must be of type X3DNode or X3DImportedNode.");
67781
67670
 
67782
- if (!sourceField .isOutput ())
67783
- throw new Error (`Field named '${sourceField .getName ()}' in node named '${sourceNode .getName ()}' of type ${sourceNode .getTypeName ()} is not an output field.`);
67671
+ if (!destinationNode)
67672
+ throw new Error ("destination node must be of type X3DNode or X3DImportedNode.");
67784
67673
 
67785
- if (!destinationField .isInput ())
67786
- throw new Error (`Field named '${destinationField .getName ()}' in node named '${destinationNode .getName ()}' of type ${destinationNode .getTypeName ()} is not an input field.`);
67674
+ // Resolve imported source and destination node.
67787
67675
 
67788
- if (sourceField .getType () !== destinationField .getType ())
67789
- throw new Error (`ROUTE types ${sourceField .getTypeName ()} and ${destinationField .getTypeName ()} do not match.`);
67676
+ sourceNode = this .getLocalizedNode (sourceNode);
67677
+ destinationNode = this .getLocalizedNode (destinationNode);
67790
67678
 
67791
- const id = Routing_X3DRoute .getRouteId (sourceField, destinationField);
67679
+ // Add route.
67792
67680
 
67793
- let route = this [X3DExecutionContext_routes] .get (id);
67681
+ const
67682
+ id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
67683
+ route = this [X3DExecutionContext_routes] .get (id);
67794
67684
 
67795
67685
  if (route)
67686
+ {
67796
67687
  return route;
67688
+ }
67689
+ else
67690
+ {
67691
+ const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
67797
67692
 
67798
- route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
67799
-
67800
- this [X3DExecutionContext_routes] .add (id, route);
67801
-
67802
- this ._routes_changed = this .getBrowser () .getCurrentTime ();
67693
+ this [X3DExecutionContext_routes] .add (id, route);
67803
67694
 
67804
- return route;
67695
+ return route;
67696
+ }
67805
67697
  }
67806
67698
  catch (error)
67807
67699
  {
@@ -67810,76 +67702,31 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67810
67702
  },
67811
67703
  deleteRoute (route)
67812
67704
  {
67813
- // sourceNode, sourceField, destinationNode, destinationField
67705
+ // Case: sourceNode, sourceField, destinationNode, destinationField.
67814
67706
  if (arguments .length === 4)
67815
67707
  route = this .getRoute (... arguments);
67816
67708
 
67817
67709
  if (!(route instanceof Routing_X3DRoute))
67818
67710
  return;
67819
67711
 
67820
- if (route .getExecutionContext () !== this)
67712
+ if (this [X3DExecutionContext_routes] .get (route .getRouteId ()) !== route)
67821
67713
  return;
67822
67714
 
67823
- this .deleteSimpleRoute (route);
67824
- this .deleteImportedRoute (route .sourceNode, route .destinationNode, route);
67825
- },
67826
- deleteSimpleRoute (route)
67827
- {
67828
67715
  this [X3DExecutionContext_routes] .remove (route .getRouteId ());
67829
67716
 
67830
- route .disconnect ();
67831
-
67832
- this ._routes_changed = this .getBrowser () .getCurrentTime ();
67717
+ route .dispose ();
67833
67718
  },
67834
- deleteImportedRoute (sourceNode, destinationNode, route)
67719
+ getRoute (sourceNode, sourceField, destinationNode, destinationField)
67835
67720
  {
67836
- // Imported nodes handling.
67837
-
67838
- let
67839
- importedSourceNode = null,
67840
- importedDestinationNode = null;
67841
-
67842
- try
67843
- {
67844
- // If sourceNode is shared node try to find the corresponding X3DImportedNode.
67845
- if (sourceNode .getValue () .getExecutionContext () !== this)
67846
- importedSourceNode = this .getLocalNode (this .getLocalName (sourceNode)) .getValue ();
67847
- }
67848
- catch
67849
- {
67850
- // Source node is shared but not imported.
67851
- }
67721
+ // Normalize arguments.
67852
67722
 
67853
- try
67854
- {
67855
- // If destinationNode is shared node try to find the corresponding X3DImportedNode.
67856
- if (destinationNode .getValue () .getExecutionContext () !== this)
67857
- importedDestinationNode = this .getLocalNode (this .getLocalName (destinationNode)) .getValue ();
67858
- }
67859
- catch
67860
- {
67861
- // Destination node is shared but not imported.
67862
- }
67723
+ const
67724
+ importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
67725
+ importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
67863
67726
 
67864
- if (importedSourceNode instanceof Execution_X3DImportedNode && importedDestinationNode instanceof Execution_X3DImportedNode)
67865
- {
67866
- importedSourceNode .deleteRoute (route);
67867
- importedDestinationNode .deleteRoute (route);
67868
- }
67869
- else if (importedSourceNode instanceof Execution_X3DImportedNode)
67870
- {
67871
- importedSourceNode .deleteRoute (route);
67872
- }
67873
- else if (importedDestinationNode instanceof Execution_X3DImportedNode)
67874
- {
67875
- importedDestinationNode .deleteRoute (route);
67876
- }
67877
- },
67878
- getRoute (sourceNode, sourceField, destinationNode, destinationField)
67879
- {
67880
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false);
67727
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
67881
67728
  sourceField = String (sourceField)
67882
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false);
67729
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
67883
67730
  destinationField = String (destinationField)
67884
67731
 
67885
67732
  if (!sourceNode)
@@ -67888,10 +67735,14 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67888
67735
  if (!destinationNode)
67889
67736
  throw new Error ("Bad ROUTE specification: destinationNode must be of type X3DNode.");
67890
67737
 
67891
- sourceField = sourceNode .getField (sourceField);
67892
- destinationField = destinationNode .getField (destinationField);
67738
+ // Resolve imported source and destination node.
67893
67739
 
67894
- return this [X3DExecutionContext_routes] .get (Routing_X3DRoute .getRouteId (sourceField, destinationField));
67740
+ sourceNode = this .getLocalizedNode (sourceNode);
67741
+ destinationNode = this .getLocalizedNode (destinationNode);
67742
+
67743
+ // Return route.
67744
+
67745
+ return this [X3DExecutionContext_routes] .get (Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField));
67895
67746
  },
67896
67747
  getRoutes ()
67897
67748
  {
@@ -68326,11 +68177,11 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68326
68177
 
68327
68178
  // Copy proto.
68328
68179
 
68329
- this .importExternProtos (proto .getBody () .externprotos);
68330
- this .importProtos (proto .getBody () .protos);
68331
- this .copyRootNodes (proto .getBody () .rootNodes);
68332
- this .copyImportedNodes (proto .getBody (), proto .getBody () .getImportedNodes ());
68333
- this .copyRoutes (proto .getBody (), proto .getBody () .routes);
68180
+ this .importExternProtos (proto .getBody () .externprotos);
68181
+ this .importProtos (proto .getBody () .protos);
68182
+ this .copyRootNodes (proto .getBody () .rootNodes);
68183
+ this .importImportedNodes (proto .getBody () .importedNodes);
68184
+ this .copyRoutes (proto .getBody () .routes);
68334
68185
 
68335
68186
  this [X3DPrototypeInstance_body] .setup ();
68336
68187
 
@@ -68381,6 +68232,9 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68381
68232
  oldField .setAccessType (newField .getAccessType ());
68382
68233
  oldField .setName (newField .getName ());
68383
68234
 
68235
+ // Replace field, ie. reuse old field.
68236
+ this .getPredefinedFields () .update (newField .getName (), newField .getName (), oldField);
68237
+
68384
68238
  const references = new Set (oldField .getReferences ());
68385
68239
 
68386
68240
  // Remove references and routes.
@@ -68394,16 +68248,33 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68394
68248
  oldField .addReference (field);
68395
68249
  }
68396
68250
 
68397
- // Reconnect routes.
68398
- for (const route of oldField .getInputRoutes ())
68399
- route .getSourceField () .addFieldInterest (route .getDestinationField ());
68251
+ // Reconnect input routes.
68252
+ for (const route of new Set (oldField .getInputRoutes ()))
68253
+ {
68254
+ try
68255
+ {
68256
+ const { sourceNode, sourceField } = route;
68400
68257
 
68401
- // Reconnect routes.
68402
- for (const route of oldField .getOutputRoutes ())
68403
- route .getSourceField () .addFieldInterest (route .getDestinationField ());
68258
+ route .getExecutionContext () .deleteRoute (route);
68259
+ route .getExecutionContext () .addRoute (sourceNode, sourceField, this, oldField .getName ());
68260
+ }
68261
+ catch
68262
+ { }
68263
+ }
68404
68264
 
68405
- // Replace field, ie. reuse old field.
68406
- this .getPredefinedFields () .update (newField .getName (), newField .getName (), oldField);
68265
+ // Reconnect output routes.
68266
+ for (const route of new Set (oldField .getOutputRoutes ()))
68267
+ {
68268
+ try
68269
+ {
68270
+ const { destinationNode, destinationField } = route;
68271
+
68272
+ route .getExecutionContext () .deleteRoute (route);
68273
+ route .getExecutionContext () .addRoute (this, oldField .getName (), destinationNode, destinationField );
68274
+ }
68275
+ catch
68276
+ { }
68277
+ }
68407
68278
 
68408
68279
  // Remove from old fields and dispose new field.
68409
68280
  oldFields .delete (oldFieldName);
@@ -68488,34 +68359,35 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68488
68359
  for (const node of rootNodes1)
68489
68360
  rootNodes2 .push (node .copy (this));
68490
68361
  },
68491
- copyImportedNodes (executionContext, importedNodes)
68362
+ importImportedNodes (importedNodes)
68492
68363
  {
68493
68364
  for (const importedNode of importedNodes)
68494
68365
  {
68495
68366
  try
68496
68367
  {
68497
- const
68498
- inlineNode = this [X3DPrototypeInstance_body] .getNamedNode (importedNode .getInlineNode () .getName ()),
68499
- importedName = importedNode .getImportedName (),
68500
- exportedName = importedNode .getExportedName ();
68368
+ const inlineNode = this [X3DPrototypeInstance_body] .getNamedNode (importedNode .getInlineNode () .getName ());
68501
68369
 
68502
- this [X3DPrototypeInstance_body] .addImportedNode (inlineNode, exportedName, importedName);
68370
+ this [X3DPrototypeInstance_body] .addImportedNode (inlineNode, importedNode .getExportedName (), importedNode .getImportedName ());
68503
68371
  }
68504
68372
  catch (error)
68505
68373
  {
68506
- console .error ("Bad IMPORT specification in copy: ", error);
68374
+ console .error (error);
68507
68375
  }
68508
68376
  }
68509
68377
  },
68510
- copyRoutes (executionContext, routes)
68378
+ copyRoutes (routes)
68511
68379
  {
68512
68380
  for (const route of routes)
68513
68381
  {
68514
68382
  try
68515
68383
  {
68516
- const
68517
- sourceNode = this [X3DPrototypeInstance_body] .getLocalNode (executionContext .getLocalName (route .sourceNode)),
68518
- destinationNode = this [X3DPrototypeInstance_body] .getLocalNode (executionContext .getLocalName (route .destinationNode));
68384
+ const sourceNode = route .getSourceNode () instanceof Core_X3DNode
68385
+ ? this [X3DPrototypeInstance_body] .getLocalNode (route .getSourceNode () .getName ())
68386
+ : this [X3DPrototypeInstance_body] .getLocalNode (route .getSourceNode () .getImportedName ());
68387
+
68388
+ const destinationNode = route .getDestinationNode () instanceof Core_X3DNode
68389
+ ? this [X3DPrototypeInstance_body] .getLocalNode (route .getDestinationNode () .getName ())
68390
+ : this [X3DPrototypeInstance_body] .getLocalNode (route .getDestinationNode () .getImportedName ());
68519
68391
 
68520
68392
  this [X3DPrototypeInstance_body] .addRoute (sourceNode, route .sourceField, destinationNode, route .destinationField);
68521
68393
  }
@@ -89488,7 +89360,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
89488
89360
  x_ite_Namespace .add ("X3DShaderNode", "x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
89489
89361
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
89490
89362
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
89491
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(239);
89363
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(484);
89492
89364
  /*******************************************************************************
89493
89365
  *
89494
89366
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95129,7 +95001,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
95129
95001
  x_ite_Namespace .add ("ShaderCompiler", "x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
95130
95002
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
95131
95003
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
95132
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(239);
95004
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(484);
95133
95005
  /*******************************************************************************
95134
95006
  *
95135
95007
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95786,7 +95658,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
95786
95658
  x_ite_Namespace .add ("X3DAppearanceNode", "x_ite/Components/Shape/X3DAppearanceNode", X3DAppearanceNode_default_);
95787
95659
  /* harmony default export */ const Shape_X3DAppearanceNode = (X3DAppearanceNode_default_);
95788
95660
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shape/Appearance.js
95789
- /* provided dependency */ var Appearance_$ = __webpack_require__(239);
95661
+ /* provided dependency */ var Appearance_$ = __webpack_require__(484);
95790
95662
  /*******************************************************************************
95791
95663
  *
95792
95664
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -99204,7 +99076,7 @@ const Components_Shape_default_ = {
99204
99076
  x_ite_Namespace .add ("Shape", "x_ite/Components/Shape", Components_Shape_default_);
99205
99077
  /* harmony default export */ const Components_Shape = (Components_Shape_default_);
99206
99078
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundProcessingNode.js
99207
- /* provided dependency */ var X3DSoundProcessingNode_$ = __webpack_require__(239);
99079
+ /* provided dependency */ var X3DSoundProcessingNode_$ = __webpack_require__(484);
99208
99080
  /*******************************************************************************
99209
99081
  *
99210
99082
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -99844,7 +99716,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
99844
99716
  x_ite_Namespace .add ("X3DSoundSourceNode", "x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
99845
99717
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
99846
99718
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
99847
- /* provided dependency */ var AudioClip_$ = __webpack_require__(239);
99719
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(484);
99848
99720
  /*******************************************************************************
99849
99721
  *
99850
99722
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -100146,7 +100018,7 @@ const X3DSoundNode_default_ = X3DSoundNode;
100146
100018
  x_ite_Namespace .add ("X3DSoundNode", "x_ite/Components/Sound/X3DSoundNode", X3DSoundNode_default_);
100147
100019
  /* harmony default export */ const Sound_X3DSoundNode = (X3DSoundNode_default_);
100148
100020
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundDestinationNode.js
100149
- /* provided dependency */ var X3DSoundDestinationNode_$ = __webpack_require__(239);
100021
+ /* provided dependency */ var X3DSoundDestinationNode_$ = __webpack_require__(484);
100150
100022
  /*******************************************************************************
100151
100023
  *
100152
100024
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -101796,7 +101668,7 @@ const ListenerPointSource_default_ = ListenerPointSource;
101796
101668
  x_ite_Namespace .add ("ListenerPointSource", "x_ite/Components/Sound/ListenerPointSource", ListenerPointSource_default_);
101797
101669
  /* harmony default export */ const Sound_ListenerPointSource = (ListenerPointSource_default_);
101798
101670
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/MicrophoneSource.js
101799
- /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(239);
101671
+ /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(484);
101800
101672
  /*******************************************************************************
101801
101673
  *
101802
101674
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -103465,8 +103337,8 @@ const GifMedia_default_ = GifMedia;
103465
103337
  x_ite_Namespace .add ("GifMedia", "x_ite/Browser/Texturing/GifMedia", GifMedia_default_);
103466
103338
  /* harmony default export */ const Texturing_GifMedia = (GifMedia_default_);
103467
103339
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
103468
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(239);
103469
- /* provided dependency */ var SuperGif = __webpack_require__(899);
103340
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(484);
103341
+ /* provided dependency */ var SuperGif = __webpack_require__(749);
103470
103342
  /*******************************************************************************
103471
103343
  *
103472
103344
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -106741,7 +106613,7 @@ const gettext_default_ = gettext;
106741
106613
  x_ite_Namespace .add ("gettext", "locale/gettext", gettext_default_);
106742
106614
  /* harmony default export */ const locale_gettext = (gettext_default_);
106743
106615
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
106744
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(239);
106616
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(484);
106745
106617
  /*******************************************************************************
106746
106618
  *
106747
106619
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107171,7 +107043,7 @@ const TextureQuality_default_ = TextureQuality;
107171
107043
  x_ite_Namespace .add ("TextureQuality", "x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
107172
107044
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
107173
107045
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
107174
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(239);
107046
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(484);
107175
107047
  /*******************************************************************************
107176
107048
  *
107177
107049
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107761,7 +107633,7 @@ const RenderingProperties_default_ = RenderingProperties;
107761
107633
  x_ite_Namespace .add ("RenderingProperties", "x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
107762
107634
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
107763
107635
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
107764
- /* provided dependency */ var Notification_$ = __webpack_require__(239);
107636
+ /* provided dependency */ var Notification_$ = __webpack_require__(484);
107765
107637
  /*******************************************************************************
107766
107638
  *
107767
107639
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107884,8 +107756,8 @@ const Notification_default_ = Notification;
107884
107756
  x_ite_Namespace .add ("Notification", "x_ite/Browser/Core/Notification", Notification_default_);
107885
107757
  /* harmony default export */ const Core_Notification = (Notification_default_);
107886
107758
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
107887
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(473);
107888
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(239);
107759
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(66);
107760
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(484);
107889
107761
  /*******************************************************************************
107890
107762
  *
107891
107763
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -109129,30 +109001,36 @@ x_ite_Namespace .add ("UnitInfoArray", "x_ite/Configuration/UnitInfoArray", Unit
109129
109001
 
109130
109002
 
109131
109003
  const
109132
- X3DExportedNode_exportedName = Symbol (),
109133
- _localNode = Symbol ();
109004
+ X3DExportedNode_executionContext = Symbol (),
109005
+ X3DExportedNode_exportedName = Symbol (),
109006
+ _localNode = Symbol ();
109134
109007
 
109135
- function X3DExportedNode (exportedName, localNode)
109008
+ function X3DExportedNode (executionContext, exportedName, localNode)
109136
109009
  {
109137
109010
  Base_X3DObject .call (this);
109138
109011
 
109139
- this [X3DExportedNode_exportedName] = exportedName;
109140
- this [_localNode] = Fields_SFNodeCache .get (localNode);
109012
+ this [X3DExportedNode_executionContext] = executionContext;
109013
+ this [X3DExportedNode_exportedName] = exportedName;
109014
+ this [_localNode] = localNode;
109141
109015
  }
109142
109016
 
109143
109017
  Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObject .prototype),
109144
109018
  {
109019
+ getExecutionContext ()
109020
+ {
109021
+ return this [X3DExportedNode_executionContext];
109022
+ },
109145
109023
  getExportedName ()
109146
109024
  {
109147
109025
  return this [X3DExportedNode_exportedName];
109148
109026
  },
109149
109027
  getLocalNode ()
109150
109028
  {
109151
- return this [_localNode] .getValue ();
109029
+ return this [_localNode];
109152
109030
  },
109153
109031
  toVRMLStream (generator)
109154
109032
  {
109155
- const localName = generator .LocalName (this .getLocalNode ());
109033
+ const localName = generator .Name (this .getLocalNode ());
109156
109034
 
109157
109035
  generator .string += generator .Indent ();
109158
109036
  generator .string += "EXPORT";
@@ -109169,7 +109047,7 @@ Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObje
109169
109047
  },
109170
109048
  toXMLStream (generator)
109171
109049
  {
109172
- const localName = generator .LocalName (this .getLocalNode ());
109050
+ const localName = generator .Name (this .getLocalNode ());
109173
109051
 
109174
109052
  generator .string += generator .Indent ();
109175
109053
  generator .string += "<EXPORT";
@@ -109190,7 +109068,7 @@ Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObje
109190
109068
  },
109191
109069
  toJSONStream (generator)
109192
109070
  {
109193
- const localName = generator .LocalName (this .getLocalNode ());
109071
+ const localName = generator .Name (this .getLocalNode ());
109194
109072
 
109195
109073
  generator .string += generator .Indent ();
109196
109074
  generator .string += '{';
@@ -109263,7 +109141,7 @@ Object .defineProperties (X3DExportedNode .prototype,
109263
109141
  {
109264
109142
  get ()
109265
109143
  {
109266
- return this [_localNode];
109144
+ return Fields_SFNodeCache .get (this [_localNode]);
109267
109145
  },
109268
109146
  enumerable: true,
109269
109147
  },
@@ -109717,7 +109595,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
109717
109595
 
109718
109596
  this .removeExportedNode (exportedName);
109719
109597
 
109720
- const exportedNode = new Execution_X3DExportedNode (exportedName, node);
109598
+ const exportedNode = new Execution_X3DExportedNode (this, exportedName, node);
109721
109599
 
109722
109600
  this [_exportedNodes] .add (exportedName, exportedNode);
109723
109601
 
@@ -110633,7 +110511,7 @@ const DataStorage_default_ = DataStorage;
110633
110511
  x_ite_Namespace .add ("DataStorage", "standard/Utility/DataStorage", DataStorage_default_);
110634
110512
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
110635
110513
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
110636
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(239);
110514
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(484);
110637
110515
  /*******************************************************************************
110638
110516
  *
110639
110517
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -110844,10 +110722,6 @@ Object .assign (X3DCoreContext .prototype,
110844
110722
  {
110845
110723
  return this [_instanceId];
110846
110724
  },
110847
- isStrict ()
110848
- {
110849
- return false;
110850
- },
110851
110725
  getElement ()
110852
110726
  {
110853
110727
  return this [_element];
@@ -113160,8 +113034,8 @@ const X3DViewer_default_ = X3DViewer;
113160
113034
  x_ite_Namespace .add ("X3DViewer", "x_ite/Browser/Navigation/X3DViewer", X3DViewer_default_);
113161
113035
  /* harmony default export */ const Navigation_X3DViewer = (X3DViewer_default_);
113162
113036
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
113163
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(360);
113164
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(239);
113037
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(389);
113038
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(484);
113165
113039
  /*******************************************************************************
113166
113040
  *
113167
113041
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114033,8 +113907,8 @@ const ExamineViewer_default_ = ExamineViewer;
114033
113907
  x_ite_Namespace .add ("ExamineViewer", "x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
114034
113908
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
114035
113909
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
114036
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(360);
114037
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(239);
113910
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(389);
113911
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(484);
114038
113912
  /*******************************************************************************
114039
113913
  *
114040
113914
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115043,8 +114917,8 @@ const FlyViewer_default_ = FlyViewer;
115043
114917
  x_ite_Namespace .add ("FlyViewer", "x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
115044
114918
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
115045
114919
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
115046
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(360);
115047
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(239);
114920
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(389);
114921
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(484);
115048
114922
  /*******************************************************************************
115049
114923
  *
115050
114924
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115375,8 +115249,8 @@ const NoneViewer_default_ = NoneViewer;
115375
115249
  x_ite_Namespace .add ("NoneViewer", "x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
115376
115250
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
115377
115251
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
115378
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(360);
115379
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(239);
115252
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(389);
115253
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(484);
115380
115254
  /*******************************************************************************
115381
115255
  *
115382
115256
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116515,8 +116389,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
116515
116389
  x_ite_Namespace .add ("X3DPickingContext", "x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
116516
116390
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
116517
116391
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
116518
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(360);
116519
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(239);
116392
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(389);
116393
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(484);
116520
116394
  /*******************************************************************************
116521
116395
  *
116522
116396
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117795,7 +117669,7 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
117795
117669
  x_ite_Namespace .add ("MultiSampleFrameBuffer", "x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
117796
117670
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
117797
117671
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
117798
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(239);
117672
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(484);
117799
117673
  /*******************************************************************************
117800
117674
  *
117801
117675
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118698,7 +118572,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
118698
118572
  x_ite_Namespace .add ("X3DSoundContext", "x_ite/Browser/Sound/X3DSoundContext", X3DSoundContext_default_);
118699
118573
  /* harmony default export */ const Sound_X3DSoundContext = (X3DSoundContext_default_);
118700
118574
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Texturing/KTXDecoder.js
118701
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(239);
118575
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(484);
118702
118576
  const KTXDecoder_default_ = class KTXDecoder
118703
118577
  {
118704
118578
  constructor (gl, externalKtxlib, scriptDir)
@@ -120251,7 +120125,7 @@ const Components_default_ = Components;
120251
120125
  x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
120252
120126
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
120253
120127
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
120254
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(239);
120128
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(484);
120255
120129
  /*******************************************************************************
120256
120130
  * MIT License
120257
120131
  *
@@ -120689,13 +120563,14 @@ x_ite_Namespace .add ("DOMIntegration", "x_ite/Browser/DOMIntegration", DOMInteg
120689
120563
 
120690
120564
 
120691
120565
 
120566
+
120692
120567
  function ProfileInfo (name, title, providerURL, components)
120693
120568
  {
120694
120569
  Object .defineProperties (this,
120695
120570
  {
120696
120571
  name: { value: name, enumerable: true },
120697
120572
  title: { value: title, enumerable: true },
120698
- providerURL: { value: providerURL, enumerable: true },
120573
+ providerURL: { value: providerURL || Networking_URLs .getProviderURL (), enumerable: true },
120699
120574
  components: { value: components, enumerable: true },
120700
120575
  });
120701
120576
  }
@@ -121190,13 +121065,11 @@ x_ite_Namespace .add ("SupportedComponents", "x_ite/Configuration/SupportedCompo
121190
121065
 
121191
121066
 
121192
121067
 
121193
-
121194
121068
  const SupportedProfiles = new Configuration_ProfileInfoArray ();
121195
121069
 
121196
121070
  SupportedProfiles .add ("CADInterchange",
121197
121071
  {
121198
121072
  title: "Computer-Aided Design (CAD) interchange",
121199
- providerURL: Networking_URLs .getProviderURL (),
121200
121073
  components: [
121201
121074
  Configuration_SupportedComponents .get ("CADGeometry"),
121202
121075
  Configuration_SupportedComponents .get ("Core"),
@@ -121214,7 +121087,6 @@ SupportedProfiles .add ("CADInterchange",
121214
121087
  SupportedProfiles .add ("Core",
121215
121088
  {
121216
121089
  title: "Core",
121217
- providerURL: Networking_URLs .getProviderURL (),
121218
121090
  components: [
121219
121091
  Configuration_SupportedComponents .get ("Core"),
121220
121092
  ],
@@ -121223,7 +121095,6 @@ SupportedProfiles .add ("Core",
121223
121095
  SupportedProfiles .add ("Full",
121224
121096
  {
121225
121097
  title: "Full",
121226
- providerURL: Networking_URLs .getProviderURL (),
121227
121098
  components: [
121228
121099
  //SupportedComponents .get ("Annotation"),
121229
121100
  Configuration_SupportedComponents .get ("CADGeometry"),
@@ -121268,7 +121139,6 @@ SupportedProfiles .add ("Full",
121268
121139
  SupportedProfiles .add ("Immersive",
121269
121140
  {
121270
121141
  title: "Immersive",
121271
- providerURL: Networking_URLs .getProviderURL (),
121272
121142
  components: [
121273
121143
  Configuration_SupportedComponents .get ("Core"),
121274
121144
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121296,7 +121166,6 @@ SupportedProfiles .add ("Immersive",
121296
121166
  SupportedProfiles .add ("Interactive",
121297
121167
  {
121298
121168
  title: "Interactive",
121299
- providerURL: Networking_URLs .getProviderURL (),
121300
121169
  components: [
121301
121170
  Configuration_SupportedComponents .get ("Core"),
121302
121171
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121320,7 +121189,6 @@ SupportedProfiles .add ("Interactive",
121320
121189
  SupportedProfiles .add ("Interchange",
121321
121190
  {
121322
121191
  title: "Interchange",
121323
- providerURL: Networking_URLs .getProviderURL (),
121324
121192
  components: [
121325
121193
  Configuration_SupportedComponents .get ("Core"),
121326
121194
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121340,7 +121208,6 @@ SupportedProfiles .add ("Interchange",
121340
121208
  SupportedProfiles .add ("MedicalInterchange",
121341
121209
  {
121342
121210
  title: "Medical interchange",
121343
- providerURL: Networking_URLs .getProviderURL (),
121344
121211
  components: [
121345
121212
  Configuration_SupportedComponents .get ("Core"),
121346
121213
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121365,7 +121232,6 @@ SupportedProfiles .add ("MedicalInterchange",
121365
121232
  SupportedProfiles .add ("MPEG-4",
121366
121233
  {
121367
121234
  title: "MPEG-4 interactive",
121368
- providerURL: Networking_URLs .getProviderURL (),
121369
121235
  components: [
121370
121236
  Configuration_SupportedComponents .get ("Core"),
121371
121237
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121390,7 +121256,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
121390
121256
  x_ite_Namespace .add ("SupportedProfiles", "x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
121391
121257
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
121392
121258
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
121393
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(239);
121259
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(484);
121394
121260
  /*******************************************************************************
121395
121261
  *
121396
121262
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122104,21 +121970,11 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
122104
121970
  else
122105
121971
  return new Map ([... this [_browserCallbacks]] .flatMap (([event, map]) => [... map]));
122106
121972
  },
122107
- callBrowserCallbacks: (() =>
121973
+ callBrowserCallbacks (event)
122108
121974
  {
122109
- const values = [ ];
122110
-
122111
- return function (event)
122112
- {
122113
- const browserCallbacks = this [_browserCallbacks] .get (event);
122114
-
122115
- if (browserCallbacks .size)
122116
- {
122117
- for (const callback of Utility_MapUtilities .values (values, browserCallbacks))
122118
- callback (event);
122119
- }
122120
- };
122121
- })(),
121975
+ for (const callback of Utility_MapUtilities .values (this [_browserCallbacks] .get (event)))
121976
+ callback (event);
121977
+ },
122122
121978
  importDocument (dom)
122123
121979
  {
122124
121980
  const
@@ -122303,23 +122159,13 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
122303
122159
 
122304
122160
  viewpointNode ._set_bind = true;
122305
122161
  },
122306
- addRoute (fromNode, fromEventOut, toNode, toEventIn)
122162
+ addRoute (sourceNode, sourceField, destinationNode, destinationField)
122307
122163
  {
122308
- this .currentScene .addRoute (fromNode, fromEventOut, toNode, toEventIn);
122164
+ this .currentScene .addRoute (sourceNode, sourceField, destinationNode, destinationField);
122309
122165
  },
122310
- deleteRoute (fromNode, fromEventOut, toNode, toEventIn)
122166
+ deleteRoute (sourceNode, sourceField, destinationNode, destinationField)
122311
122167
  {
122312
- try
122313
- {
122314
- const route = this .currentScene .getRoute (fromNode, fromEventOut, toNode, toEventIn);
122315
-
122316
- if (route)
122317
- this .currentScene .deleteRoute (route);
122318
- }
122319
- catch (error)
122320
- {
122321
- console .error (error);
122322
- }
122168
+ this .currentScene .deleteRoute (sourceNode, sourceField, destinationNode, destinationField);
122323
122169
  },
122324
122170
  beginUpdate ()
122325
122171
  {
@@ -122471,7 +122317,7 @@ const X3DBrowser_default_ = X3DBrowser;
122471
122317
  x_ite_Namespace .add ("X3DBrowser", "x_ite/Browser/X3DBrowser", X3DBrowser_default_);
122472
122318
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
122473
122319
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
122474
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(239);
122320
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(484);
122475
122321
  /*******************************************************************************
122476
122322
  *
122477
122323
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122603,8 +122449,8 @@ const X3DCanvasElement_default_ = X3DCanvasElement;
122603
122449
  x_ite_Namespace .add ("X3DCanvasElement", "x_ite/X3DCanvasElement", X3DCanvasElement_default_);
122604
122450
  /* harmony default export */ const x_ite_X3DCanvasElement = (X3DCanvasElement_default_);
122605
122451
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
122606
- /* provided dependency */ var jquery_$ = __webpack_require__(239);
122607
- /* provided dependency */ var pako = __webpack_require__(102);
122452
+ /* provided dependency */ var jquery_$ = __webpack_require__(484);
122453
+ /* provided dependency */ var pako = __webpack_require__(251);
122608
122454
  Object .assign (jquery_$,
122609
122455
  {
122610
122456
  decodeText (input)
@@ -122681,14 +122527,14 @@ const jquery_default_ = jquery_$;
122681
122527
  x_ite_Namespace .add ("jquery", "lib/jquery", jquery_default_);
122682
122528
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
122683
122529
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
122684
- /* provided dependency */ var libtess_libtess = __webpack_require__(488);
122530
+ /* provided dependency */ var libtess_libtess = __webpack_require__(53);
122685
122531
  const libtess_default_ = libtess_libtess;
122686
122532
  ;
122687
122533
 
122688
122534
  x_ite_Namespace .add ("libtess", "lib/libtess", libtess_default_);
122689
122535
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
122690
122536
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
122691
- /* provided dependency */ var X3D_$ = __webpack_require__(239);
122537
+ /* provided dependency */ var X3D_$ = __webpack_require__(484);
122692
122538
  /*******************************************************************************
122693
122539
  *
122694
122540
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122996,7 +122842,7 @@ Object .assign (X3D,
122996
122842
 
122997
122843
  // Assign X3D to global namespace.
122998
122844
 
122999
- window [Symbol .for ("X_ITE.X3D-9.1.10")] = x_ite_X3D;
122845
+ window [Symbol .for ("X_ITE.X3D-9.2.0")] = x_ite_X3D;
123000
122846
 
123001
122847
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
123002
122848