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.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v9.1.10 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v9.2.0 */(function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if(typeof define === 'function' && define.amd)
@@ -11,10 +11,10 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 473:
14
+ /***/ 66:
15
15
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
16
16
 
17
- /* provided dependency */ var jQuery = __webpack_require__(239);
17
+ /* provided dependency */ var jQuery = __webpack_require__(484);
18
18
  /**
19
19
  * @preserve jquery.fullscreen 1.1.5
20
20
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -210,7 +210,7 @@ installFullScreenHandlers();
210
210
 
211
211
  /***/ }),
212
212
 
213
- /***/ 360:
213
+ /***/ 389:
214
214
  /***/ ((module, exports, __webpack_require__) => {
215
215
 
216
216
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -224,7 +224,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
224
224
  (function (factory) {
225
225
  if ( true ) {
226
226
  // AMD. Register as an anonymous module.
227
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(239)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
227
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(484)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
228
228
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
229
229
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
230
230
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -435,7 +435,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
435
435
 
436
436
  /***/ }),
437
437
 
438
- /***/ 239:
438
+ /***/ 484:
439
439
  /***/ (function(module, exports) {
440
440
 
441
441
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11159,7 +11159,7 @@ return jQuery;
11159
11159
 
11160
11160
  /***/ }),
11161
11161
 
11162
- /***/ 488:
11162
+ /***/ 53:
11163
11163
  /***/ ((module) => {
11164
11164
 
11165
11165
  /**
@@ -15938,7 +15938,7 @@ if (true) {
15938
15938
 
15939
15939
  /***/ }),
15940
15940
 
15941
- /***/ 102:
15941
+ /***/ 251:
15942
15942
  /***/ (function(__unused_webpack_module, exports) {
15943
15943
 
15944
15944
 
@@ -19183,7 +19183,7 @@ if (true) {
19183
19183
 
19184
19184
  /***/ }),
19185
19185
 
19186
- /***/ 899:
19186
+ /***/ 749:
19187
19187
  /***/ (function(module, exports) {
19188
19188
 
19189
19189
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -20311,7 +20311,7 @@ Object .defineProperty (Namespace, "add",
20311
20311
  }
20312
20312
  else
20313
20313
  {
20314
- const X3D = window [Symbol .for ("X_ITE.X3D-9.1.10")];
20314
+ const X3D = window [Symbol .for ("X_ITE.X3D-9.2.0")];
20315
20315
 
20316
20316
  if (X3D)
20317
20317
  X3D [name] = module;
@@ -20909,7 +20909,6 @@ function Generator ({ style = "TIDY", indent = "", precision = 7, doublePrecisio
20909
20909
  this .nodes = new Set ();
20910
20910
  this .names = new Map ();
20911
20911
  this .namesByNode = new Map ();
20912
- this .importedNames = new Map ();
20913
20912
  this .routeNodes = new Set ();
20914
20913
  this .level = 0;
20915
20914
  this .containerFields = [ ];
@@ -21117,9 +21116,8 @@ Object .assign (Generator .prototype,
21117
21116
 
21118
21117
  if (this .level === 0)
21119
21118
  {
21120
- this .nodes .clear ();
21121
- this .namesByNode .clear ();
21122
- this .importedNames .clear ();
21119
+ this .nodes .clear ();
21120
+ this .namesByNode .clear ();
21123
21121
  }
21124
21122
  },
21125
21123
  NamedNodes (namedNodes)
@@ -21158,17 +21156,13 @@ Object .assign (Generator .prototype,
21158
21156
  { }
21159
21157
  }
21160
21158
  },
21161
- AddImportedNode (exportedNode, importedName)
21162
- {
21163
- this .importedNames .set (exportedNode, importedName);
21164
- },
21165
21159
  AddRouteNode (routeNode)
21166
21160
  {
21167
21161
  this .routeNodes .add (routeNode);
21168
21162
  },
21169
21163
  ExistsRouteNode (routeNode)
21170
21164
  {
21171
- return this .namesByNode .get (routeNode) || this .routeNodes .has (routeNode);
21165
+ return this .namesByNode .has (routeNode) || this .routeNodes .has (routeNode);
21172
21166
  },
21173
21167
  IsSharedNode (baseNode)
21174
21168
  {
@@ -21223,39 +21217,27 @@ Object .assign (Generator .prototype,
21223
21217
  if (baseNode .hasRoutes ())
21224
21218
  return true;
21225
21219
 
21226
- const
21227
- executionContext = baseNode .getExecutionContext (),
21228
- index = this .importedNodesIndex .get (executionContext);
21220
+ const executionContext = baseNode .getExecutionContext ();
21229
21221
 
21230
- if (index)
21231
- {
21232
- if (index .has (baseNode))
21233
- return true;
21234
- }
21235
- else
21236
- {
21237
- const index = this .exportedNodesIndex .get (executionContext);
21222
+ if (this .importedNodesIndex .get (executionContext) ?.has (baseNode))
21223
+ return true;
21238
21224
 
21239
- if (index)
21240
- {
21241
- if (index .has (baseNode))
21242
- return true;
21243
- }
21225
+ if (this .exportedNodesIndex .get (executionContext) ?.has (baseNode))
21226
+ return true;
21244
21227
 
21245
- return false;
21246
- }
21228
+ return false;
21247
21229
  },
21248
- LocalName (baseNode)
21230
+ ImportedName (name)
21249
21231
  {
21250
- const importedName = this .importedNames .get (baseNode);
21232
+ const
21233
+ names = this .names .get (this .ExecutionContext ()),
21234
+ newName = getUniqueName (names, name);
21251
21235
 
21252
- if (importedName !== undefined)
21253
- return importedName;
21236
+ // Add to indices.
21254
21237
 
21255
- if (this .ExistsNode (baseNode))
21256
- return this .Name (baseNode);
21238
+ names .add (newName);
21257
21239
 
21258
- throw new Error (`Couldn't get local name for node '${baseNode .getTypeName ()}'.`);
21240
+ return newName;
21259
21241
  },
21260
21242
  PushContainerField (field)
21261
21243
  {
@@ -21462,7 +21444,7 @@ const MapUtilities =
21462
21444
  {
21463
21445
  assign: (() =>
21464
21446
  {
21465
- function callback (value, key)
21447
+ function set (value, key)
21466
21448
  {
21467
21449
  this .set (key, value);
21468
21450
  }
@@ -21470,25 +21452,36 @@ const MapUtilities =
21470
21452
  return function (m1, m2)
21471
21453
  {
21472
21454
  m1 .clear ();
21473
- m2 .forEach (callback, m1);
21455
+ m2 .forEach (set, m1);
21474
21456
 
21475
21457
  return m1;
21476
21458
  };
21477
21459
  })(),
21478
21460
  values: (() =>
21479
21461
  {
21480
- function callback (value)
21481
- {
21482
- this .push (value);
21483
- }
21462
+ function push (value) { this .push (value); }
21463
+
21464
+ const values = new WeakMap ();
21484
21465
 
21485
- return function (a, m)
21466
+ return function (m)
21486
21467
  {
21487
- a .length = 0;
21468
+ if (m .size)
21469
+ {
21470
+ let a = values .get (m);
21471
+
21472
+ if (a)
21473
+ a .length = 0;
21474
+ else
21475
+ values .set (m, a = [ ]);
21488
21476
 
21489
- m .forEach (callback, a);
21477
+ m .forEach (push, a);
21490
21478
 
21491
- return a;
21479
+ return a;
21480
+ }
21481
+ else
21482
+ {
21483
+ return m .values ();
21484
+ }
21492
21485
  };
21493
21486
  })(),
21494
21487
  };
@@ -21617,7 +21610,6 @@ Object .assign (X3DObject .prototype,
21617
21610
  {
21618
21611
  [_name]: "",
21619
21612
  [_interests]: new Map (),
21620
- [_values]: [ ],
21621
21613
  [_userData]: new Map (),
21622
21614
  getId ()
21623
21615
  {
@@ -21646,10 +21638,7 @@ Object .assign (X3DObject .prototype,
21646
21638
  addInterest (callbackName, object, ... args)
21647
21639
  {
21648
21640
  if (this [_interests] === X3DObject .prototype [_interests])
21649
- {
21650
21641
  this [_interests] = new Map ();
21651
- this [_values] = [ ];
21652
- }
21653
21642
 
21654
21643
  const
21655
21644
  interestId = X3DObject .getInterestId (callbackName, object),
@@ -21667,11 +21656,8 @@ Object .assign (X3DObject .prototype,
21667
21656
  },
21668
21657
  processInterests ()
21669
21658
  {
21670
- if (this [_interests] .size)
21671
- {
21672
- for (const interest of Utility_MapUtilities .values (this [_values], this [_interests]))
21673
- interest ();
21674
- }
21659
+ for (const interest of Utility_MapUtilities .values (this [_interests]))
21660
+ interest ();
21675
21661
  },
21676
21662
  getUserData (key)
21677
21663
  {
@@ -22999,19 +22985,11 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
22999
22985
  {
23000
22986
  return this [_referencesCallbacks];
23001
22987
  },
23002
- processReferencesCallbacks: (() =>
22988
+ processReferencesCallbacks ()
23003
22989
  {
23004
- const referencesCallbacksTemp = [ ];
23005
-
23006
- return function ()
23007
- {
23008
- if (this [_referencesCallbacks] .size)
23009
- {
23010
- for (const callback of Utility_MapUtilities .values (referencesCallbacksTemp, this [_referencesCallbacks]))
23011
- callback ();
23012
- }
23013
- };
23014
- })(),
22990
+ for (const callback of Utility_MapUtilities .values (this [_referencesCallbacks]))
22991
+ callback ();
22992
+ },
23015
22993
  addFieldInterest (field)
23016
22994
  {
23017
22995
  if (this [_fieldInterests] === X3DField .prototype [_fieldInterests])
@@ -23097,70 +23075,54 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, Base_X3DChildObject
23097
23075
  {
23098
23076
  return this [_routeCallbacks];
23099
23077
  },
23100
- processRouteCallbacks: (() =>
23078
+ processRouteCallbacks ()
23101
23079
  {
23102
- const routeCallbacksTemp = [ ];
23103
-
23104
- return function ()
23105
- {
23106
- if (this [_routeCallbacks] .size)
23107
- {
23108
- for (const callback of Utility_MapUtilities .values (routeCallbacksTemp, this [_routeCallbacks]))
23109
- callback ();
23110
- }
23111
- };
23112
- })(),
23113
- processEvent: (() =>
23080
+ for (const callback of Utility_MapUtilities .values (this [_routeCallbacks]))
23081
+ callback ();
23082
+ },
23083
+ processEvent (event = Base_Events .create (this))
23114
23084
  {
23115
- const fieldCallbacksTemp = [ ];
23116
-
23117
- return function (event = Base_Events .create (this))
23118
- {
23119
- if (event .has (this))
23120
- return;
23085
+ if (event .has (this))
23086
+ return;
23121
23087
 
23122
- event .add (this);
23088
+ event .add (this);
23123
23089
 
23124
- this .setTainted (false);
23090
+ this .setTainted (false);
23125
23091
 
23126
- const field = event .field;
23092
+ const field = event .field;
23127
23093
 
23128
- if (field !== this)
23129
- this .set (field .getValue (), field .length);
23094
+ if (field !== this)
23095
+ this .set (field .getValue (), field .length);
23130
23096
 
23131
- // Process interests.
23097
+ // Process interests.
23132
23098
 
23133
- this .processInterests ();
23099
+ this .processInterests ();
23134
23100
 
23135
- // Process routes.
23101
+ // Process routes.
23136
23102
 
23137
- let first = true;
23103
+ let first = true;
23138
23104
 
23139
- for (const field of this [_fieldInterests])
23105
+ for (const field of this [_fieldInterests])
23106
+ {
23107
+ if (first)
23140
23108
  {
23141
- if (first)
23142
- {
23143
- first = false;
23144
- field .addEventObject (this, event);
23145
- }
23146
- else
23147
- {
23148
- field .addEventObject (this, Base_Events .copy (event));
23149
- }
23109
+ first = false;
23110
+ field .addEventObject (this, event);
23150
23111
  }
23112
+ else
23113
+ {
23114
+ field .addEventObject (this, Base_Events .copy (event));
23115
+ }
23116
+ }
23151
23117
 
23152
- if (first)
23153
- Base_Events .push (event);
23118
+ if (first)
23119
+ Base_Events .push (event);
23154
23120
 
23155
- // Process field callbacks.
23121
+ // Process field callbacks.
23156
23122
 
23157
- if (this [_fieldCallbacks] .size)
23158
- {
23159
- for (const callback of Utility_MapUtilities .values (fieldCallbacksTemp, this [_fieldCallbacks]))
23160
- callback (this .valueOf ());
23161
- }
23162
- };
23163
- })(),
23123
+ for (const callback of Utility_MapUtilities .values (this [_fieldCallbacks]))
23124
+ callback (this .valueOf ());
23125
+ },
23164
23126
  fromString (string, scene)
23165
23127
  {
23166
23128
  // Function will be overridden in VRMLParser.
@@ -34191,9 +34153,9 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, Base_X3DChildObj
34191
34153
  return true;
34192
34154
  }
34193
34155
 
34194
- for (const importedNode of this [_executionContext] .getImportedNodes ())
34156
+ for (const route of this [_executionContext] .getRoutes ())
34195
34157
  {
34196
- if (importedNode .hasRoutes (this))
34158
+ if (route .getSourceNode () === this || route .getDestinationNode () === this)
34197
34159
  return true;
34198
34160
  }
34199
34161
 
@@ -34343,7 +34305,7 @@ const X3DBaseNode_default_ = X3DBaseNode;
34343
34305
  x_ite_Namespace .add ("X3DBaseNode", "x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34344
34306
  /* harmony default export */ const Base_X3DBaseNode = (X3DBaseNode_default_);
34345
34307
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Legacy.js
34346
- /* provided dependency */ var $ = __webpack_require__(239);
34308
+ /* provided dependency */ var $ = __webpack_require__(484);
34347
34309
  /*******************************************************************************
34348
34310
  *
34349
34311
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -34480,7 +34442,7 @@ x_ite_Namespace .add ("Legacy", "x_ite/Browser/Legacy", Legacy_default_);
34480
34442
  *
34481
34443
  ******************************************************************************/
34482
34444
 
34483
- const BROWSER_VERSION_default_ = "9.1.10";
34445
+ const BROWSER_VERSION_default_ = "9.2.0";
34484
34446
  ;
34485
34447
 
34486
34448
  x_ite_Namespace .add ("BROWSER_VERSION", "x_ite/BROWSER_VERSION", BROWSER_VERSION_default_);
@@ -37300,31 +37262,33 @@ x_ite_Namespace .add ("NamedNodesArray", "x_ite/Execution/NamedNodesArray", Name
37300
37262
 
37301
37263
 
37302
37264
 
37303
-
37304
37265
  const
37305
- _inlineNode = Symbol (),
37306
- _exportedName = Symbol (),
37307
- _importedName = Symbol (),
37308
- _routes = Symbol ();
37266
+ X3DImportedNode_executionContext = Symbol (),
37267
+ _inlineNode = Symbol (),
37268
+ _exportedName = Symbol (),
37269
+ _importedName = Symbol (),
37270
+ _routes = Symbol (),
37271
+ _real = Symbol ();
37309
37272
 
37310
37273
  function X3DImportedNode (executionContext, inlineNode, exportedName, importedName)
37311
37274
  {
37312
- Core_X3DNode .call (this, executionContext);
37313
-
37314
- this [_inlineNode] = Fields_SFNodeCache .get (inlineNode);
37315
- this [_exportedName] = exportedName;
37316
- this [_importedName] = importedName;
37317
- this [_routes] = new Set ();
37275
+ Base_X3DObject .call (this);
37318
37276
 
37319
- this .getInlineNode () ._loadState .addInterest ("set_loadState__", this);
37277
+ this [X3DImportedNode_executionContext] = executionContext;
37278
+ this [_inlineNode] = inlineNode;
37279
+ this [_exportedName] = exportedName;
37280
+ this [_importedName] = importedName;
37320
37281
  }
37321
37282
 
37322
- // Must be of type X3DNode, to get routes work.
37323
- Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Core_X3DNode .prototype),
37283
+ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Base_X3DObject .prototype),
37324
37284
  {
37285
+ getExecutionContext ()
37286
+ {
37287
+ return this [X3DImportedNode_executionContext];
37288
+ },
37325
37289
  getInlineNode ()
37326
37290
  {
37327
- return this [_inlineNode] .getValue ();
37291
+ return this [_inlineNode];
37328
37292
  },
37329
37293
  getExportedName ()
37330
37294
  {
@@ -37338,441 +37302,151 @@ Object .assign (Object .setPrototypeOf (X3DImportedNode .prototype, Core_X3DNode
37338
37302
  {
37339
37303
  return this [_importedName];
37340
37304
  },
37341
- hasRoutes (baseNode)
37342
- {
37343
- for (const route of this [_routes])
37344
- {
37345
- if (route .sourceNode === baseNode)
37346
- return true;
37347
-
37348
- if (route .destinationNode === baseNode)
37349
- return true;
37350
- }
37351
-
37352
- return false;
37353
- },
37354
- addRoute (sourceNode, sourceField, destinationNode, destinationField)
37355
- {
37356
- // Add route.
37357
-
37358
- const route = {
37359
- sourceNode: sourceNode,
37360
- sourceField: sourceField,
37361
- destinationNode: destinationNode,
37362
- destinationField: destinationField,
37363
- };
37364
-
37365
- this [_routes] .add (route);
37366
-
37367
- // Try to resolve source or destination node routes.
37368
-
37369
- if (this .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE)
37370
- this .resolveRoute (route);
37371
- },
37372
- resolveRoute (route)
37305
+ toVRMLStream (generator)
37373
37306
  {
37374
- try
37375
- {
37376
- const
37377
- sourceField = route .sourceField,
37378
- destinationField = route .destinationField;
37379
-
37380
- let
37381
- sourceNode = route .sourceNode,
37382
- destinationNode = route .destinationNode;
37307
+ if (!generator .ExistsNode (this .getInlineNode ()))
37308
+ throw new Error ("X3DImportedNode.toVRMLStream: Inline node does not exist.");
37383
37309
 
37384
- if (route .real)
37385
- route .real .dispose ();
37310
+ generator .AddRouteNode (this);
37386
37311
 
37387
- if (sourceNode instanceof X3DImportedNode)
37388
- sourceNode = sourceNode .getExportedNode ();
37312
+ const importedName = generator .ImportedName (this .getImportedName ());
37389
37313
 
37390
- if (destinationNode instanceof X3DImportedNode)
37391
- destinationNode = destinationNode .getExportedNode ();
37314
+ generator .string += generator .Indent ();
37315
+ generator .string += "IMPORT";
37316
+ generator .string += generator .Space ();
37317
+ generator .string += generator .Name (this .getInlineNode ());
37318
+ generator .string += ".";
37319
+ generator .string += this .getExportedName ();
37392
37320
 
37393
- route .real = this .getExecutionContext () .addSimpleRoute (sourceNode, sourceField, destinationNode, destinationField);
37394
- }
37395
- catch (error)
37396
- {
37397
- console .error (error .message);
37398
- }
37399
- },
37400
- deleteRoute (real)
37401
- {
37402
- for (const route of this [_routes])
37321
+ if (importedName !== this .getExportedName ())
37403
37322
  {
37404
- if (route .real === real)
37405
- this [_routes] .delete (route);
37406
- }
37407
- },
37408
- deleteRoutes ()
37409
- {
37410
- for (const route of this [_routes])
37411
- {
37412
- const real = route .real
37413
-
37414
- if (real)
37415
- {
37416
- delete route .real;
37417
- this .getExecutionContext () .deleteSimpleRoute (real);
37418
- }
37419
- }
37420
- },
37421
- set_loadState__ ()
37422
- {
37423
- switch (this .getInlineNode () .checkLoadState ())
37424
- {
37425
- case Base_X3DConstants .NOT_STARTED_STATE:
37426
- case Base_X3DConstants .FAILED_STATE:
37427
- {
37428
- this .deleteRoutes ();
37429
- break;
37430
- }
37431
- case Base_X3DConstants .COMPLETE_STATE:
37432
- {
37433
- this .deleteRoutes ();
37434
-
37435
- for (const route of this [_routes])
37436
- this .resolveRoute (route);
37437
-
37438
- break;
37439
- }
37323
+ generator .string += generator .Space ();
37324
+ generator .string += "AS";
37325
+ generator .string += generator .Space ();
37326
+ generator .string += importedName;
37440
37327
  }
37441
37328
  },
37442
- toStream (generator)
37443
- {
37444
- Base_X3DObject .prototype .toStream .call (this, generator);
37445
- },
37446
- toVRMLStream (generator)
37329
+ toXMLStream (generator)
37447
37330
  {
37448
- if (generator .ExistsNode (this .getInlineNode ()))
37449
- {
37450
- generator .string += generator .Indent ();
37451
- generator .string += "IMPORT";
37452
- generator .string += generator .Space ();
37453
- generator .string += generator .Name (this .getInlineNode ());
37454
- generator .string += ".";
37455
- generator .string += this .getExportedName ();
37456
-
37457
- if (this .getImportedName () !== this .getExportedName ())
37458
- {
37459
- generator .string += generator .Space ();
37460
- generator .string += "AS";
37461
- generator .string += generator .Space ();
37462
- generator .string += this .getImportedName ();
37463
- }
37464
-
37465
- try
37466
- {
37467
- generator .AddRouteNode (this);
37468
- generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
37469
- }
37470
- catch
37471
- {
37472
- // Output unresolved routes.
37331
+ if (!generator .ExistsNode (this .getInlineNode ()))
37332
+ throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
37473
37333
 
37474
- for (const route of this [_routes])
37475
- {
37476
- const
37477
- sourceNode = route .sourceNode,
37478
- sourceField = route .sourceField,
37479
- destinationNode = route .destinationNode,
37480
- destinationField = route .destinationField;
37334
+ generator .AddRouteNode (this);
37481
37335
 
37482
- if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
37483
- {
37484
- const sourceNodeName = sourceNode instanceof X3DImportedNode
37485
- ? sourceNode .getImportedName ()
37486
- : generator .Name (sourceNode);
37336
+ const importedName = generator .ImportedName (this .getImportedName ());
37487
37337
 
37488
- const destinationNodeName = destinationNode instanceof X3DImportedNode
37489
- ? destinationNode .getImportedName ()
37490
- : generator .Name (destinationNode);
37338
+ generator .string += generator .Indent ();
37339
+ generator .string += "<IMPORT";
37340
+ generator .string += generator .Space ();
37341
+ generator .string += "inlineDEF='";
37342
+ generator .string += generator .XMLEncode (generator .Name (this .getInlineNode ()));
37343
+ generator .string += "'";
37344
+ generator .string += generator .Space ();
37345
+ generator .string += "importedDEF='";
37346
+ generator .string += generator .XMLEncode (this .getExportedName ());
37347
+ generator .string += "'";
37491
37348
 
37492
- generator .string += generator .TidyBreak ();
37493
- generator .string += generator .Indent ();
37494
- generator .string += "ROUTE";
37495
- generator .string += generator .Space ();
37496
- generator .string += sourceNodeName;
37497
- generator .string += ".";
37498
- generator .string += sourceField;
37499
- generator .string += generator .Space ();
37500
- generator .string += "TO";
37501
- generator .string += generator .Space ();
37502
- generator .string += destinationNodeName;
37503
- generator .string += ".";
37504
- generator .string += destinationField;
37505
- }
37506
- }
37507
- }
37508
- }
37509
- else
37510
- {
37511
- throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
37512
- }
37513
- },
37514
- toXMLStream (generator)
37515
- {
37516
- if (generator .ExistsNode (this .getInlineNode ()))
37349
+ if (importedName !== this .getExportedName ())
37517
37350
  {
37518
- generator .string += generator .Indent ();
37519
- generator .string += "<IMPORT";
37520
- generator .string += generator .Space ();
37521
- generator .string += "inlineDEF='";
37522
- generator .string += generator .XMLEncode (generator .Name (this .getInlineNode ()));
37523
- generator .string += "'";
37524
37351
  generator .string += generator .Space ();
37525
- generator .string += "importedDEF='";
37526
- generator .string += generator .XMLEncode (this .getExportedName ());
37352
+ generator .string += "AS='";
37353
+ generator .string += generator .XMLEncode (importedName);
37527
37354
  generator .string += "'";
37355
+ }
37528
37356
 
37529
- if (this .getImportedName () !== this .getExportedName ())
37530
- {
37531
- generator .string += generator .Space ();
37532
- generator .string += "AS='";
37533
- generator .string += generator .XMLEncode (this .getImportedName ());
37534
- generator .string += "'";
37535
- }
37357
+ generator .string += generator .closingTags ? "></IMPORT>" : "/>";
37358
+ },
37359
+ toJSONStream (generator)
37360
+ {
37361
+ if (!generator .ExistsNode (this .getInlineNode ()))
37362
+ throw new Error ("X3DImportedNode.toJSONStream: Inline node does not exist.");
37536
37363
 
37537
- generator .string += generator .closingTags ? "></IMPORT>" : "/>";
37364
+ generator .AddRouteNode (this);
37538
37365
 
37539
- try
37540
- {
37541
- generator .AddRouteNode (this);
37542
- generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
37543
- }
37544
- catch
37545
- {
37546
- // Output unresolved routes.
37366
+ const importedName = generator .ImportedName (this .getImportedName ());
37547
37367
 
37548
- for (const route of this [_routes])
37549
- {
37550
- const
37551
- sourceNode = route .sourceNode,
37552
- sourceField = route .sourceField,
37553
- destinationNode = route .destinationNode,
37554
- destinationField = route .destinationField;
37368
+ generator .string += generator .Indent ();
37369
+ generator .string += '{';
37370
+ generator .string += generator .TidySpace ();
37371
+ generator .string += '"';
37372
+ generator .string += "IMPORT";
37373
+ generator .string += '"';
37374
+ generator .string += ':';
37375
+ generator .string += generator .TidyBreak ();
37376
+ generator .string += generator .IncIndent ();
37377
+ generator .string += generator .Indent ();
37378
+ generator .string += '{';
37379
+ generator .string += generator .TidyBreak ();
37380
+ generator .string += generator .IncIndent ();
37555
37381
 
37556
- if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
37557
- {
37558
- const sourceNodeName = sourceNode instanceof X3DImportedNode
37559
- ? sourceNode .getImportedName ()
37560
- : generator .Name (sourceNode);
37382
+ generator .string += generator .Indent ();
37383
+ generator .string += '"';
37384
+ generator .string += "@inlineDEF";
37385
+ generator .string += '"';
37386
+ generator .string += ':';
37387
+ generator .string += generator .TidySpace ();
37388
+ generator .string += '"';
37389
+ generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
37390
+ generator .string += '"';
37391
+ generator .string += ',';
37392
+ generator .string += generator .TidyBreak ();
37561
37393
 
37562
- const destinationNodeName = destinationNode instanceof X3DImportedNode
37563
- ? destinationNode .getImportedName ()
37564
- : generator .Name (destinationNode);
37394
+ generator .string += generator .Indent ();
37395
+ generator .string += '"';
37396
+ generator .string += "@importedDEF";
37397
+ generator .string += '"';
37398
+ generator .string += ':';
37399
+ generator .string += generator .TidySpace ();
37400
+ generator .string += '"';
37401
+ generator .string += generator .JSONEncode (this .getExportedName ());
37402
+ generator .string += '"';
37565
37403
 
37566
- generator .string += generator .TidyBreak ();
37567
- generator .string += generator .Indent ();
37568
- generator .string += "<ROUTE";
37569
- generator .string += generator .Space ();
37570
- generator .string += "fromNode='";
37571
- generator .string += generator .XMLEncode (sourceNodeName);
37572
- generator .string += "'";
37573
- generator .string += generator .Space ();
37574
- generator .string += "fromField='";
37575
- generator .string += generator .XMLEncode (sourceField);
37576
- generator .string += "'";
37577
- generator .string += generator .Space ();
37578
- generator .string += "toNode='";
37579
- generator .string += generator .XMLEncode (destinationNodeName);
37580
- generator .string += "'";
37581
- generator .string += generator .Space ();
37582
- generator .string += "toField='";
37583
- generator .string += generator .XMLEncode (destinationField);
37584
- generator .string += "'";
37585
- generator .string += generator .closingTags ? "></ROUTE>" : "/>";
37586
- }
37587
- }
37588
- }
37589
- }
37590
- else
37591
- {
37592
- throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
37593
- }
37594
- },
37595
- toJSONStream (generator)
37596
- {
37597
- if (generator .ExistsNode (this .getInlineNode ()))
37404
+ if (importedName !== this .getExportedName ())
37598
37405
  {
37599
- generator .string += generator .Indent ();
37600
- generator .string += '{';
37601
- generator .string += generator .TidySpace ();
37602
- generator .string += '"';
37603
- generator .string += "IMPORT";
37604
- generator .string += '"';
37605
- generator .string += ':';
37606
- generator .string += generator .TidyBreak ();
37607
- generator .string += generator .IncIndent ();
37608
- generator .string += generator .Indent ();
37609
- generator .string += '{';
37610
- generator .string += generator .TidyBreak ();
37611
- generator .string += generator .IncIndent ();
37612
-
37613
- generator .string += generator .Indent ();
37614
- generator .string += '"';
37615
- generator .string += "@inlineDEF";
37616
- generator .string += '"';
37617
- generator .string += ':';
37618
- generator .string += generator .TidySpace ();
37619
- generator .string += '"';
37620
- generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
37621
- generator .string += '"';
37622
37406
  generator .string += ',';
37623
37407
  generator .string += generator .TidyBreak ();
37624
-
37625
37408
  generator .string += generator .Indent ();
37626
37409
  generator .string += '"';
37627
- generator .string += "@importedDEF";
37410
+ generator .string += "@AS";
37628
37411
  generator .string += '"';
37629
37412
  generator .string += ':';
37630
37413
  generator .string += generator .TidySpace ();
37631
37414
  generator .string += '"';
37632
- generator .string += generator .JSONEncode (this .getExportedName ());
37415
+ generator .string += generator .JSONEncode (importedName);
37633
37416
  generator .string += '"';
37634
-
37635
- if (this .getImportedName () !== this .getExportedName ())
37636
- {
37637
- generator .string += ',';
37638
- generator .string += generator .TidyBreak ();
37639
- generator .string += generator .Indent ();
37640
- generator .string += '"';
37641
- generator .string += "@AS";
37642
- generator .string += '"';
37643
- generator .string += ':';
37644
- generator .string += generator .TidySpace ();
37645
- generator .string += '"';
37646
- generator .string += generator .JSONEncode (this .getImportedName ());
37647
- generator .string += '"';
37648
- generator .string += generator .TidyBreak ();
37649
- }
37650
- else
37651
- {
37652
- generator .string += generator .TidyBreak ();
37653
- }
37654
-
37655
- generator .string += generator .DecIndent ();
37656
- generator .string += generator .Indent ();
37657
- generator .string += '}';
37658
37417
  generator .string += generator .TidyBreak ();
37659
- generator .string += generator .DecIndent ();
37660
- generator .string += generator .Indent ();
37661
- generator .string += '}';
37662
-
37663
- try
37664
- {
37665
- generator .AddRouteNode (this);
37666
- generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
37667
- }
37668
- catch
37669
- {
37670
- // Output unresolved routes.
37671
-
37672
- for (const route of this [_routes])
37673
- {
37674
- const
37675
- sourceNode = route .sourceNode,
37676
- sourceField = route .sourceField,
37677
- destinationNode = route .destinationNode,
37678
- destinationField = route .destinationField;
37679
-
37680
- if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
37681
- {
37682
- const sourceNodeName = sourceNode instanceof X3DImportedNode
37683
- ? sourceNode .getImportedName ()
37684
- : generator .Name (sourceNode);
37685
-
37686
- const destinationNodeName = destinationNode instanceof X3DImportedNode
37687
- ? destinationNode .getImportedName ()
37688
- : generator .Name (destinationNode);
37689
-
37690
- generator .string += ',';
37691
- generator .string += generator .TidyBreak ();
37692
- generator .string += generator .Indent ();
37693
- generator .string += '{';
37694
- generator .string += generator .TidySpace ();
37695
- generator .string += '"';
37696
- generator .string += "ROUTE";
37697
- generator .string += '"';
37698
- generator .string += ':';
37699
- generator .string += generator .TidyBreak ();
37700
- generator .string += generator .IncIndent ();
37701
- generator .string += generator .Indent ();
37702
- generator .string += '{';
37703
- generator .string += generator .TidyBreak ();
37704
- generator .string += generator .IncIndent ();
37705
-
37706
- generator .string += generator .Indent ();
37707
- generator .string += '"';
37708
- generator .string += "@fromNode";
37709
- generator .string += '"';
37710
- generator .string += ':';
37711
- generator .string += generator .TidySpace ();
37712
- generator .string += '"';
37713
- generator .string += generator .JSONEncode (sourceNodeName);
37714
- generator .string += '"';
37715
- generator .string += ',';
37716
- generator .string += generator .TidyBreak ();
37717
-
37718
- generator .string += generator .Indent ();
37719
- generator .string += '"';
37720
- generator .string += "@fromField";
37721
- generator .string += '"';
37722
- generator .string += ':';
37723
- generator .string += generator .TidySpace ();
37724
- generator .string += '"';
37725
- generator .string += generator .JSONEncode (sourceField);
37726
- generator .string += '"';
37727
- generator .string += ',';
37728
- generator .string += generator .TidyBreak ();
37729
-
37730
- generator .string += generator .Indent ();
37731
- generator .string += '"';
37732
- generator .string += "@toNode";
37733
- generator .string += '"';
37734
- generator .string += ':';
37735
- generator .string += generator .TidySpace ();
37736
- generator .string += '"';
37737
- generator .string += generator .JSONEncode (destinationNodeName);
37738
- generator .string += '"';
37739
- generator .string += ',';
37740
- generator .string += generator .TidyBreak ();
37741
-
37742
- generator .string += generator .Indent ();
37743
- generator .string += '"';
37744
- generator .string += "@toField";
37745
- generator .string += '"';
37746
- generator .string += ':';
37747
- generator .string += generator .TidySpace ();
37748
- generator .string += '"';
37749
- generator .string += generator .JSONEncode (destinationField);
37750
- generator .string += '"';
37751
- generator .string += generator .TidyBreak ();
37752
-
37753
- generator .string += generator .DecIndent ();
37754
- generator .string += generator .Indent ();
37755
- generator .string += '}';
37756
- generator .string += generator .TidyBreak ();
37757
- generator .string += generator .DecIndent ();
37758
- generator .string += generator .Indent ();
37759
- generator .string += '}';
37760
- }
37761
- }
37762
- }
37763
37418
  }
37764
37419
  else
37765
37420
  {
37766
- throw new Error ("X3DImportedNode.toJSONStream: Inline node does not exist.");
37421
+ generator .string += generator .TidyBreak ();
37767
37422
  }
37423
+
37424
+ generator .string += generator .DecIndent ();
37425
+ generator .string += generator .Indent ();
37426
+ generator .string += '}';
37427
+ generator .string += generator .TidyBreak ();
37428
+ generator .string += generator .DecIndent ();
37429
+ generator .string += generator .Indent ();
37430
+ generator .string += '}';
37768
37431
  },
37769
37432
  dispose ()
37770
37433
  {
37771
- this .getInlineNode () ._loadState .removeInterest ("set_loadState__", this);
37434
+ for (const route of Array .from (this [X3DImportedNode_executionContext] .getRoutes ()))
37435
+ {
37436
+ if (route .getSourceNode () === this)
37437
+ {
37438
+ this [X3DImportedNode_executionContext] .deleteRoute (route);
37439
+ continue;
37440
+ }
37772
37441
 
37773
- this .deleteRoutes ();
37442
+ if (route .getDestinationNode () === this)
37443
+ {
37444
+ this [X3DImportedNode_executionContext] .deleteRoute (route);
37445
+ continue;
37446
+ }
37447
+ }
37774
37448
 
37775
- Core_X3DNode .prototype .dispose .call (this);
37449
+ Base_X3DObject .prototype .dispose .call (this);
37776
37450
  },
37777
37451
  });
37778
37452
 
@@ -37785,7 +37459,7 @@ Object .defineProperties (X3DImportedNode .prototype,
37785
37459
  {
37786
37460
  get ()
37787
37461
  {
37788
- return this [_inlineNode];
37462
+ return Fields_SFNodeCache .get (this [_inlineNode]);
37789
37463
  },
37790
37464
  enumerable: true,
37791
37465
  },
@@ -38051,7 +37725,7 @@ Object .assign (X3DUrlObject .prototype,
38051
37725
  reject ();
38052
37726
  break;
38053
37727
  }
38054
- })
37728
+ });
38055
37729
  };
38056
37730
 
38057
37731
  const loadState = this .checkLoadState ();
@@ -38330,254 +38004,6 @@ const X3DProtoDeclarationNode_default_ = X3DProtoDeclarationNode;
38330
38004
 
38331
38005
  x_ite_Namespace .add ("X3DProtoDeclarationNode", "x_ite/Prototype/X3DProtoDeclarationNode", X3DProtoDeclarationNode_default_);
38332
38006
  /* harmony default export */ const Prototype_X3DProtoDeclarationNode = (X3DProtoDeclarationNode_default_);
38333
- ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38334
- /* provided dependency */ var X3DParser_$ = __webpack_require__(239);
38335
- /*******************************************************************************
38336
- *
38337
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38338
- *
38339
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38340
- *
38341
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38342
- *
38343
- * The copyright notice above does not evidence any actual of intended
38344
- * publication of such source code, and is an unpublished work by create3000.
38345
- * This material contains CONFIDENTIAL INFORMATION that is the property of
38346
- * create3000.
38347
- *
38348
- * No permission is granted to copy, distribute, or create derivative works from
38349
- * the contents of this software, in whole or in part, without the prior written
38350
- * permission of create3000.
38351
- *
38352
- * NON-MILITARY USE ONLY
38353
- *
38354
- * All create3000 software are effectively free software with a non-military use
38355
- * restriction. It is free. Well commented source is provided. You may reuse the
38356
- * source in any way you please with the exception anything that uses it must be
38357
- * marked to indicate is contains 'non-military use only' components.
38358
- *
38359
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38360
- *
38361
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38362
- *
38363
- * This file is part of the X_ITE Project.
38364
- *
38365
- * X_ITE is free software: you can redistribute it and/or modify it under the
38366
- * terms of the GNU General Public License version 3 only, as published by the
38367
- * Free Software Foundation.
38368
- *
38369
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38370
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38371
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38372
- * details (a copy is included in the LICENSE file that accompanied this code).
38373
- *
38374
- * You should have received a copy of the GNU General Public License version 3
38375
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38376
- * copy of the GPLv3 License.
38377
- *
38378
- * For Silvio, Joy and Adi.
38379
- *
38380
- ******************************************************************************/
38381
-
38382
- function X3DParser (scene)
38383
- {
38384
- this .scene = scene;
38385
- this .executionContexts = [ scene ];
38386
- this .prototypes = [ ];
38387
- }
38388
-
38389
- Object .assign (X3DParser .prototype,
38390
- {
38391
- getBrowser ()
38392
- {
38393
- return this .scene .getBrowser ();
38394
- },
38395
- getScene ()
38396
- {
38397
- return this .scene;
38398
- },
38399
- getExecutionContext ()
38400
- {
38401
- return this .executionContexts .at (-1);
38402
- },
38403
- pushExecutionContext (executionContext)
38404
- {
38405
- return this .executionContexts .push (executionContext);
38406
- },
38407
- popExecutionContext ()
38408
- {
38409
- this .executionContexts .pop ();
38410
- },
38411
- getPrototype ()
38412
- {
38413
- return this .prototypes .at (-1);
38414
- },
38415
- pushPrototype (prototype)
38416
- {
38417
- return this .prototypes .push (prototype);
38418
- },
38419
- popPrototype ()
38420
- {
38421
- this .prototypes .pop ();
38422
- },
38423
- isInsideProtoDefinition ()
38424
- {
38425
- return !! this .prototypes .length;
38426
- },
38427
- loadComponents ()
38428
- {
38429
- const
38430
- browser = this .getBrowser (),
38431
- scene = this .getScene ();
38432
-
38433
- return Promise .all ([
38434
- browser .loadComponents (scene .getProfile () || browser .getProfile ("Full")),
38435
- browser .loadComponents (scene .getComponents ()),
38436
- ]);
38437
- },
38438
- setUnits (units)
38439
- {
38440
- if (units)
38441
- delete this .fromUnit;
38442
- else
38443
- this .fromUnit = function (category, value) { return value; };
38444
- },
38445
- fromUnit (category, value)
38446
- {
38447
- return this .scene .fromUnit (category, value);
38448
- },
38449
- convertColor (value, defaultColor = "white")
38450
- {
38451
- const
38452
- wrap = X3DParser_$("<div></div>") .hide () .css ("color", defaultColor) .appendTo (X3DParser_$("body")),
38453
- div = X3DParser_$("<div></div>").css ("color", value) .appendTo (wrap),
38454
- rgb = window .getComputedStyle (div [0]) .color,
38455
- values = rgb .replace (/^rgba?\(|\)$/g, "") .split (/[\s,]+/) .map (s => parseFloat (s));
38456
-
38457
- wrap .remove ();
38458
-
38459
- values [0] /= 255;
38460
- values [1] /= 255;
38461
- values [2] /= 255;
38462
-
38463
- if (typeof values [3] !== "number")
38464
- values [3] = 1;
38465
-
38466
- return values;
38467
- },
38468
- sanitizeName (name = "")
38469
- {
38470
- // NonIdFirstChar
38471
- name = name .replace (/^[\x30-\x39\x00-\x20\x22\x23\x27\x2b\x2c\x2d\x2e\x5b\x5c\x5d\x7b\x7d\x7f]*/, "");
38472
-
38473
- // NonIdChars
38474
- name = name .replace (/[\x00-\x20\x22\x23\x27\x2c\x2e\x5b\x5c\x5d\x7b\x7d\x7f]+/g, "-");
38475
-
38476
- // Spaces
38477
- name = name .trim () .replace (/[\s_-]+/g, "-");
38478
-
38479
- // Trim
38480
- name = name .replace (/^-+|-+$/g, "");
38481
-
38482
- return name;
38483
- },
38484
- });
38485
-
38486
- const X3DParser_default_ = X3DParser;
38487
- ;
38488
-
38489
- x_ite_Namespace .add ("X3DParser", "x_ite/Parser/X3DParser", X3DParser_default_);
38490
- /* harmony default export */ const Parser_X3DParser = (X3DParser_default_);
38491
- ;// CONCATENATED MODULE: ./src/x_ite/Parser/Expressions.js
38492
- /*******************************************************************************
38493
- *
38494
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38495
- *
38496
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38497
- *
38498
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38499
- *
38500
- * The copyright notice above does not evidence any actual of intended
38501
- * publication of such source code, and is an unpublished work by create3000.
38502
- * This material contains CONFIDENTIAL INFORMATION that is the property of
38503
- * create3000.
38504
- *
38505
- * No permission is granted to copy, distribute, or create derivative works from
38506
- * the contents of this software, in whole or in part, without the prior written
38507
- * permission of create3000.
38508
- *
38509
- * NON-MILITARY USE ONLY
38510
- *
38511
- * All create3000 software are effectively free software with a non-military use
38512
- * restriction. It is free. Well commented source is provided. You may reuse the
38513
- * source in any way you please with the exception anything that uses it must be
38514
- * marked to indicate is contains 'non-military use only' components.
38515
- *
38516
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38517
- *
38518
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38519
- *
38520
- * This file is part of the X_ITE Project.
38521
- *
38522
- * X_ITE is free software: you can redistribute it and/or modify it under the
38523
- * terms of the GNU General Public License version 3 only, as published by the
38524
- * Free Software Foundation.
38525
- *
38526
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38527
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38528
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38529
- * details (a copy is included in the LICENSE file that accompanied this code).
38530
- *
38531
- * You should have received a copy of the GNU General Public License version 3
38532
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38533
- * copy of the GPLv3 License.
38534
- *
38535
- * For Silvio, Joy and Adi.
38536
- *
38537
- ******************************************************************************/
38538
-
38539
- function parse (parser)
38540
- {
38541
- this .lastIndex = parser .lastIndex;
38542
-
38543
- parser .result = this .exec (parser .input);
38544
-
38545
- if (parser .result)
38546
- {
38547
- parser .lastIndex = this .lastIndex;
38548
- return true;
38549
- }
38550
-
38551
- return false;
38552
- }
38553
-
38554
- function lookahead (parser)
38555
- {
38556
- const
38557
- lastIndex = parser .lastIndex,
38558
- result = this .parse (parser);
38559
-
38560
- parser .lastIndex = lastIndex;
38561
-
38562
- return result;
38563
- }
38564
-
38565
- function Expressions (Grammar)
38566
- {
38567
- for (const value of Object .values (Grammar))
38568
- {
38569
- value .parse = parse;
38570
- value .lookahead = lookahead;
38571
- }
38572
-
38573
- return Grammar;
38574
- }
38575
-
38576
- const Expressions_default_ = Expressions;
38577
- ;
38578
-
38579
- x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_default_);
38580
- /* harmony default export */ const Parser_Expressions = (Expressions_default_);
38581
38007
  ;// CONCATENATED MODULE: ./src/x_ite/Prototype/X3DProtoDeclaration.js
38582
38008
  /*******************************************************************************
38583
38009
  *
@@ -39155,8 +38581,250 @@ const X3DProtoDeclaration_default_ = X3DProtoDeclaration;
39155
38581
 
39156
38582
  x_ite_Namespace .add ("X3DProtoDeclaration", "x_ite/Prototype/X3DProtoDeclaration", X3DProtoDeclaration_default_);
39157
38583
  /* harmony default export */ const Prototype_X3DProtoDeclaration = (X3DProtoDeclaration_default_);
38584
+ ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
38585
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(484);
38586
+ /*******************************************************************************
38587
+ *
38588
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38589
+ *
38590
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38591
+ *
38592
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38593
+ *
38594
+ * The copyright notice above does not evidence any actual of intended
38595
+ * publication of such source code, and is an unpublished work by create3000.
38596
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
38597
+ * create3000.
38598
+ *
38599
+ * No permission is granted to copy, distribute, or create derivative works from
38600
+ * the contents of this software, in whole or in part, without the prior written
38601
+ * permission of create3000.
38602
+ *
38603
+ * NON-MILITARY USE ONLY
38604
+ *
38605
+ * All create3000 software are effectively free software with a non-military use
38606
+ * restriction. It is free. Well commented source is provided. You may reuse the
38607
+ * source in any way you please with the exception anything that uses it must be
38608
+ * marked to indicate is contains 'non-military use only' components.
38609
+ *
38610
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38611
+ *
38612
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38613
+ *
38614
+ * This file is part of the X_ITE Project.
38615
+ *
38616
+ * X_ITE is free software: you can redistribute it and/or modify it under the
38617
+ * terms of the GNU General Public License version 3 only, as published by the
38618
+ * Free Software Foundation.
38619
+ *
38620
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38621
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38622
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38623
+ * details (a copy is included in the LICENSE file that accompanied this code).
38624
+ *
38625
+ * You should have received a copy of the GNU General Public License version 3
38626
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38627
+ * copy of the GPLv3 License.
38628
+ *
38629
+ * For Silvio, Joy and Adi.
38630
+ *
38631
+ ******************************************************************************/
38632
+
38633
+
38634
+
38635
+ function X3DParser (scene)
38636
+ {
38637
+ this .scene = scene;
38638
+ this .executionContexts = [ scene ];
38639
+ this .prototypes = [ ];
38640
+ }
38641
+
38642
+ Object .assign (X3DParser .prototype,
38643
+ {
38644
+ getBrowser ()
38645
+ {
38646
+ return this .scene .getBrowser ();
38647
+ },
38648
+ getScene ()
38649
+ {
38650
+ return this .scene;
38651
+ },
38652
+ getExecutionContext ()
38653
+ {
38654
+ return this .executionContexts .at (-1);
38655
+ },
38656
+ pushExecutionContext (executionContext)
38657
+ {
38658
+ return this .executionContexts .push (executionContext);
38659
+ },
38660
+ popExecutionContext ()
38661
+ {
38662
+ this .executionContexts .pop ();
38663
+ },
38664
+ getOuterNode ()
38665
+ {
38666
+ return this .getExecutionContext () .getOuterNode ();
38667
+ },
38668
+ isInsideProtoDeclaration ()
38669
+ {
38670
+ return this .getExecutionContext () .getOuterNode () instanceof Prototype_X3DProtoDeclaration;
38671
+ },
38672
+ loadComponents ()
38673
+ {
38674
+ const
38675
+ browser = this .getBrowser (),
38676
+ scene = this .getScene ();
38677
+
38678
+ return Promise .all ([
38679
+ browser .loadComponents (scene .getProfile () || browser .getProfile ("Full")),
38680
+ browser .loadComponents (scene .getComponents ()),
38681
+ ]);
38682
+ },
38683
+ setUnits (units)
38684
+ {
38685
+ if (units)
38686
+ delete this .fromUnit;
38687
+ else
38688
+ this .fromUnit = function (category, value) { return value; };
38689
+ },
38690
+ fromUnit (category, value)
38691
+ {
38692
+ return this .scene .fromUnit (category, value);
38693
+ },
38694
+ convertColor (value, defaultColor = "white")
38695
+ {
38696
+ const
38697
+ wrap = X3DParser_$("<div></div>") .hide () .css ("color", defaultColor) .appendTo (X3DParser_$("body")),
38698
+ div = X3DParser_$("<div></div>").css ("color", value) .appendTo (wrap),
38699
+ rgb = window .getComputedStyle (div [0]) .color,
38700
+ values = rgb .replace (/^rgba?\(|\)$/g, "") .split (/[\s,]+/) .map (s => parseFloat (s));
38701
+
38702
+ wrap .remove ();
38703
+
38704
+ values [0] /= 255;
38705
+ values [1] /= 255;
38706
+ values [2] /= 255;
38707
+
38708
+ if (typeof values [3] !== "number")
38709
+ values [3] = 1;
38710
+
38711
+ return values;
38712
+ },
38713
+ sanitizeName (name = "")
38714
+ {
38715
+ // NonIdFirstChar
38716
+ name = name .replace (/^[\x30-\x39\x00-\x20\x22\x23\x27\x2b\x2c\x2d\x2e\x5b\x5c\x5d\x7b\x7d\x7f]*/, "");
38717
+
38718
+ // NonIdChars
38719
+ name = name .replace (/[\x00-\x20\x22\x23\x27\x2c\x2e\x5b\x5c\x5d\x7b\x7d\x7f]+/g, "-");
38720
+
38721
+ // Spaces
38722
+ name = name .trim () .replace (/[\s_-]+/g, "-");
38723
+
38724
+ // Trim
38725
+ name = name .replace (/^-+|-+$/g, "");
38726
+
38727
+ return name;
38728
+ },
38729
+ });
38730
+
38731
+ const X3DParser_default_ = X3DParser;
38732
+ ;
38733
+
38734
+ x_ite_Namespace .add ("X3DParser", "x_ite/Parser/X3DParser", X3DParser_default_);
38735
+ /* harmony default export */ const Parser_X3DParser = (X3DParser_default_);
38736
+ ;// CONCATENATED MODULE: ./src/x_ite/Parser/Expressions.js
38737
+ /*******************************************************************************
38738
+ *
38739
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38740
+ *
38741
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
38742
+ *
38743
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
38744
+ *
38745
+ * The copyright notice above does not evidence any actual of intended
38746
+ * publication of such source code, and is an unpublished work by create3000.
38747
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
38748
+ * create3000.
38749
+ *
38750
+ * No permission is granted to copy, distribute, or create derivative works from
38751
+ * the contents of this software, in whole or in part, without the prior written
38752
+ * permission of create3000.
38753
+ *
38754
+ * NON-MILITARY USE ONLY
38755
+ *
38756
+ * All create3000 software are effectively free software with a non-military use
38757
+ * restriction. It is free. Well commented source is provided. You may reuse the
38758
+ * source in any way you please with the exception anything that uses it must be
38759
+ * marked to indicate is contains 'non-military use only' components.
38760
+ *
38761
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
38762
+ *
38763
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
38764
+ *
38765
+ * This file is part of the X_ITE Project.
38766
+ *
38767
+ * X_ITE is free software: you can redistribute it and/or modify it under the
38768
+ * terms of the GNU General Public License version 3 only, as published by the
38769
+ * Free Software Foundation.
38770
+ *
38771
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
38772
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
38773
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
38774
+ * details (a copy is included in the LICENSE file that accompanied this code).
38775
+ *
38776
+ * You should have received a copy of the GNU General Public License version 3
38777
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
38778
+ * copy of the GPLv3 License.
38779
+ *
38780
+ * For Silvio, Joy and Adi.
38781
+ *
38782
+ ******************************************************************************/
38783
+
38784
+ function parse (parser)
38785
+ {
38786
+ this .lastIndex = parser .lastIndex;
38787
+
38788
+ parser .result = this .exec (parser .input);
38789
+
38790
+ if (parser .result)
38791
+ {
38792
+ parser .lastIndex = this .lastIndex;
38793
+ return true;
38794
+ }
38795
+
38796
+ return false;
38797
+ }
38798
+
38799
+ function lookahead (parser)
38800
+ {
38801
+ const
38802
+ lastIndex = parser .lastIndex,
38803
+ result = this .parse (parser);
38804
+
38805
+ parser .lastIndex = lastIndex;
38806
+
38807
+ return result;
38808
+ }
38809
+
38810
+ function Expressions (Grammar)
38811
+ {
38812
+ for (const value of Object .values (Grammar))
38813
+ {
38814
+ value .parse = parse;
38815
+ value .lookahead = lookahead;
38816
+ }
38817
+
38818
+ return Grammar;
38819
+ }
38820
+
38821
+ const Expressions_default_ = Expressions;
38822
+ ;
38823
+
38824
+ x_ite_Namespace .add ("Expressions", "x_ite/Parser/Expressions", Expressions_default_);
38825
+ /* harmony default export */ const Parser_Expressions = (Expressions_default_);
39158
38826
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/VRMLParser.js
39159
- /* provided dependency */ var VRMLParser_$ = __webpack_require__(239);
38827
+ /* provided dependency */ var VRMLParser_$ = __webpack_require__(484);
39160
38828
  /*******************************************************************************
39161
38829
  *
39162
38830
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -39346,6 +39014,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39346
39014
  SQRT1_2: Math .SQRT1_2,
39347
39015
  SQRT2: Math .SQRT2,
39348
39016
  },
39017
+ unknownLevel: 0,
39349
39018
  getEncoding ()
39350
39019
  {
39351
39020
  return "STRING";
@@ -39379,13 +39048,6 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39379
39048
  throw new Error (this .getError (error));
39380
39049
  }
39381
39050
  },
39382
- throwOrWarn (string)
39383
- {
39384
- if (this .getBrowser () .isStrict ())
39385
- throw new Error (string);
39386
-
39387
- console .warn (string);
39388
- },
39389
39051
  getError (error)
39390
39052
  {
39391
39053
  if (DEVELOPMENT)
@@ -39657,7 +39319,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39657
39319
  }
39658
39320
  catch (error)
39659
39321
  {
39660
- console .warn (error .message);
39322
+ console .warn (`Parser error at line ${this .lineNumber}: ${error .message}`);
39661
39323
  return true;
39662
39324
  }
39663
39325
  }
@@ -39903,13 +39565,11 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
39903
39565
  for (const field of interfaceDeclarations)
39904
39566
  proto .addUserDefinedField (field .getAccessType (), field .getName (), field);
39905
39567
 
39906
- this .pushPrototype (proto);
39907
39568
  this .pushExecutionContext (proto .getBody ());
39908
39569
 
39909
39570
  this .protoBody (proto .getBody () .rootNodes);
39910
39571
 
39911
39572
  this .popExecutionContext ();
39912
- this .popPrototype ();
39913
39573
 
39914
39574
  this .comments ();
39915
39575
 
@@ -40022,7 +39682,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40022
39682
  throw new Error ("Expected a name for field.");
40023
39683
  }
40024
39684
 
40025
- this .Id ()
39685
+ this .Id ();
40026
39686
 
40027
39687
  throw new Error (`Unknown event or field type: '${this .result [1]}'.`);
40028
39688
  }
@@ -40047,7 +39707,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40047
39707
  throw new Error ("Expected a name for field.");
40048
39708
  }
40049
39709
 
40050
- this .Id ()
39710
+ this .Id ();
40051
39711
 
40052
39712
  throw new Error (`Unknown event or field type: '${this .result [1]}'.`);
40053
39713
  }
@@ -40077,7 +39737,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40077
39737
  throw new Error ("Expected a name for field.");
40078
39738
  }
40079
39739
 
40080
- this .Id ()
39740
+ this .Id ();
40081
39741
 
40082
39742
  throw new Error (`Unknown event or field type: '${this .result [1]}'.`);
40083
39743
  }
@@ -40347,7 +40007,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40347
40007
  }
40348
40008
  catch (error)
40349
40009
  {
40350
- this .throwOrWarn (error .message);
40010
+ console .warn (`Parser error at line ${this .lineNumber}: ${error .message}`);
40351
40011
 
40352
40012
  return true;
40353
40013
  }
@@ -40386,7 +40046,32 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40386
40046
  ?? this .getExecutionContext () .createProto (nodeTypeId, false);
40387
40047
 
40388
40048
  if (!baseNode)
40389
- throw new Error (`Unknown node type or proto '${nodeTypeId}', you probably have insufficient component/profile statements, and/or an inappropriate specification version.`);
40049
+ {
40050
+ // Parse unknown node.
40051
+
40052
+ if (!this .unknownLevel)
40053
+ {
40054
+ 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.`);
40055
+ }
40056
+
40057
+ this .comments ();
40058
+
40059
+ if (Grammar .OpenBrace .parse (this))
40060
+ {
40061
+ ++ this .unknownLevel;
40062
+
40063
+ this .nodeBody (this .getExecutionContext () .createNode ("WorldInfo", false));
40064
+
40065
+ -- this .unknownLevel;
40066
+
40067
+ this .comments ();
40068
+
40069
+ if (Grammar .CloseBrace .parse (this))
40070
+ return null;
40071
+ }
40072
+
40073
+ return false;
40074
+ }
40390
40075
 
40391
40076
  if (nodeNameId .length)
40392
40077
  {
@@ -40416,7 +40101,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40416
40101
 
40417
40102
  if (Grammar .CloseBrace .parse (this))
40418
40103
  {
40419
- if (!this .isInsideProtoDefinition ())
40104
+ if (!this .isInsideProtoDeclaration ())
40420
40105
  baseNode .setup ();
40421
40106
 
40422
40107
  return baseNode;
@@ -40459,7 +40144,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40459
40144
 
40460
40145
  if (Grammar .IS .parse (this))
40461
40146
  {
40462
- if (this .isInsideProtoDefinition ())
40147
+ if (this .isInsideProtoDeclaration ())
40463
40148
  {
40464
40149
  if (this .Id ())
40465
40150
  {
@@ -40467,11 +40152,11 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40467
40152
 
40468
40153
  try
40469
40154
  {
40470
- var reference = this .getPrototype () .getField (isId);
40155
+ var reference = this .getOuterNode () .getField (isId);
40471
40156
  }
40472
40157
  catch
40473
40158
  {
40474
- this .throwOrWarn (`No such event or field '${isId}' inside PROTO ${this .getPrototype () .getName ()} interface declaration.`);
40159
+ console .warn (`Parser error at line ${this .lineNumber}: No such event or field '${isId}' inside PROTO ${this .getOuterNode () .getName ()} interface declaration.`);
40475
40160
 
40476
40161
  return true;
40477
40162
  }
@@ -40498,10 +40183,10 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40498
40183
  throw new Error (`Couldn't add field '${fieldId}', field already exists with different access type or data type.`);
40499
40184
  }
40500
40185
 
40501
- throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getPrototype () .getName ()}' are incompatible as an IS mapping.`);
40186
+ throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getOuterNode () .getName ()}' are incompatible as an IS mapping.`);
40502
40187
  }
40503
40188
 
40504
- throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getPrototype () .getName ()}' have different types.`);
40189
+ throw new Error (`Field '${fieldId}' and '${reference .getName ()}' in PROTO '${this .getOuterNode () .getName ()}' have different types.`);
40505
40190
  }
40506
40191
 
40507
40192
  throw new Error ("No name give after IS statement.");
@@ -40563,6 +40248,20 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40563
40248
  }
40564
40249
  catch
40565
40250
  {
40251
+ // Parse unknown field value.
40252
+
40253
+ const lineNumber = this .lineNumber;
40254
+
40255
+ if (this .unknownValue ())
40256
+ {
40257
+ if (!this .unknownLevel)
40258
+ {
40259
+ console .warn (`Parser error at line ${lineNumber}: Unknown field '${fieldId}' in class '${baseNode .getTypeName ()}'.`);
40260
+ }
40261
+
40262
+ return true;
40263
+ }
40264
+
40566
40265
  throw new Error (`Unknown field '${fieldId}' in class '${baseNode .getTypeName ()}'.`);
40567
40266
  }
40568
40267
 
@@ -40570,7 +40269,7 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40570
40269
 
40571
40270
  if (Grammar .IS .parse (this))
40572
40271
  {
40573
- if (this .isInsideProtoDefinition ())
40272
+ if (this .isInsideProtoDeclaration ())
40574
40273
  {
40575
40274
  if (this .Id ())
40576
40275
  {
@@ -40578,11 +40277,11 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40578
40277
 
40579
40278
  try
40580
40279
  {
40581
- var reference = this .getPrototype () .getField (isId);
40280
+ var reference = this .getOuterNode () .getField (isId);
40582
40281
  }
40583
40282
  catch
40584
40283
  {
40585
- this .throwOrWarn (`No such event or field '${isId}' inside PROTO ${this .getPrototype () .getName ()}`);
40284
+ console .warn (`Parser error at line ${this .lineNumber}: No such event or field '${isId}' inside PROTO ${this .getOuterNode () .getName ()}`);
40586
40285
 
40587
40286
  return true;
40588
40287
  }
@@ -40595,10 +40294,10 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40595
40294
  return true;
40596
40295
  }
40597
40296
 
40598
- throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getPrototype () .getName ()} are incompatible as an IS mapping.`);
40297
+ throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getOuterNode () .getName ()} are incompatible as an IS mapping.`);
40599
40298
  }
40600
40299
 
40601
- throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getPrototype () .getName ()} have different types.`);
40300
+ throw new Error (`Field '${field .getName ()}' and '${reference .getName ()}' in PROTO ${this .getOuterNode () .getName ()} have different types.`);
40602
40301
  }
40603
40302
 
40604
40303
  throw new Error("No name give after IS statement.");
@@ -40756,10 +40455,13 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40756
40455
  sfboolValues (field)
40757
40456
  {
40758
40457
  field .length = 0;
40759
- field = field .getTarget ();
40458
+
40459
+ const target = field .getTarget ();
40760
40460
 
40761
40461
  while (this .bool ())
40762
- field .push (this .value);
40462
+ target .push (this .value);
40463
+
40464
+ return field .length !== 0;
40763
40465
  },
40764
40466
  sfcolorValue (field)
40765
40467
  {
@@ -40828,12 +40530,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40828
40530
  sfcolorValues (field)
40829
40531
  {
40830
40532
  field .length = 0;
40831
- field = field .getTarget ();
40832
40533
 
40833
- const value = this .Color3;
40534
+ const
40535
+ target = field .getTarget (),
40536
+ value = this .Color3;
40834
40537
 
40835
40538
  while (this .sfcolorValue (value))
40836
- field .push (value);
40539
+ target .push (value);
40540
+
40541
+ return field .length !== 0;
40837
40542
  },
40838
40543
  sfcolorrgbaValue (field)
40839
40544
  {
@@ -40909,12 +40614,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40909
40614
  sfcolorrgbaValues (field)
40910
40615
  {
40911
40616
  field .length = 0;
40912
- field = field .getTarget ();
40913
40617
 
40914
- const value = this .Color4;
40618
+ const
40619
+ target = field .getTarget (),
40620
+ value = this .Color4;
40915
40621
 
40916
40622
  while (this .sfcolorrgbaValue (value))
40917
- field .push (value);
40623
+ target .push (value);
40624
+
40625
+ return field .length !== 0;
40918
40626
  },
40919
40627
  sfdoubleValue (field)
40920
40628
  {
@@ -40951,12 +40659,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
40951
40659
  sfdoubleValues (field)
40952
40660
  {
40953
40661
  field .length = 0;
40954
- field = field .getTarget ();
40955
40662
 
40956
- const unit = field .getUnit ();
40663
+ const
40664
+ target = field .getTarget (),
40665
+ unit = target .getUnit ();
40957
40666
 
40958
40667
  while (this .double ())
40959
- field .push (this .fromUnit (unit, this .value));
40668
+ target .push (this .fromUnit (unit, this .value));
40669
+
40670
+ return field .length !== 0;
40960
40671
  },
40961
40672
  sfimageValue (field)
40962
40673
  {
@@ -41023,12 +40734,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41023
40734
  sfimageValues (field)
41024
40735
  {
41025
40736
  field .length = 0;
41026
- field = field .getTarget ();
41027
40737
 
41028
- const value = this .SFImage;
40738
+ const
40739
+ target = field .getTarget (),
40740
+ value = this .SFImage;
41029
40741
 
41030
40742
  while (this .sfimageValue (value))
41031
- field .push (value);
40743
+ target .push (value);
40744
+
40745
+ return field .length !== 0;
41032
40746
  },
41033
40747
  sfint32Value (field)
41034
40748
  {
@@ -41065,10 +40779,13 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41065
40779
  sfint32Values (field)
41066
40780
  {
41067
40781
  field .length = 0;
41068
- field = field .getTarget ();
40782
+
40783
+ const target = field .getTarget ();
41069
40784
 
41070
40785
  while (this .int32 ())
41071
- field .push (this .value);
40786
+ target .push (this .value);
40787
+
40788
+ return field .length !== 0;
41072
40789
  },
41073
40790
  sfmatrix3Value (field)
41074
40791
  {
@@ -41156,12 +40873,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41156
40873
  sfmatrix3Values (field)
41157
40874
  {
41158
40875
  field .length = 0;
41159
- field = field .getTarget ();
41160
40876
 
41161
- const value = this .Matrix3;
40877
+ const
40878
+ target = field .getTarget (),
40879
+ value = this .Matrix3;
41162
40880
 
41163
40881
  while (this .sfmatrix3Value (value))
41164
- field .push (value);
40882
+ target .push (value);
40883
+
40884
+ return field .length !== 0;
41165
40885
  },
41166
40886
  sfmatrix4Value (field)
41167
40887
  {
@@ -41291,12 +41011,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41291
41011
  sfmatrix4Values (field)
41292
41012
  {
41293
41013
  field .length = 0;
41294
- field = field .getTarget ();
41295
41014
 
41296
- const value = this .Matrix4;
41015
+ const
41016
+ target = field .getTarget (),
41017
+ value = this .Matrix4;
41297
41018
 
41298
41019
  while (this .sfmatrix4Value (value))
41299
- field .push (value);
41020
+ target .push (value);
41021
+
41022
+ return field .length !== 0;
41300
41023
  },
41301
41024
  sfnodeValue (field)
41302
41025
  {
@@ -41403,12 +41126,15 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41403
41126
  sfrotationValues (field)
41404
41127
  {
41405
41128
  field .length = 0;
41406
- field = field .getTarget ();
41407
41129
 
41408
- const value = this .Rotation4;
41130
+ const
41131
+ target = field .getTarget (),
41132
+ value = this .Rotation4;
41409
41133
 
41410
41134
  while (this .sfrotationValue (value))
41411
- field .push (value);
41135
+ target .push (value);
41136
+
41137
+ return field .length !== 0;
41412
41138
  },
41413
41139
  sfstringValue (field)
41414
41140
  {
@@ -41445,10 +41171,13 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41445
41171
  sfstringValues (field)
41446
41172
  {
41447
41173
  field .length = 0;
41448
- field = field .getTarget ();
41174
+
41175
+ const target = field .getTarget ();
41449
41176
 
41450
41177
  while (this .string ())
41451
- field .push (this .value);
41178
+ target .push (this .value);
41179
+
41180
+ return field .length !== 0;
41452
41181
  },
41453
41182
  sfvec2Value (field, unit)
41454
41183
  {
@@ -41494,14 +41223,16 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41494
41223
  sfvec2Values (field)
41495
41224
  {
41496
41225
  field .length = 0;
41497
- field = field .getTarget ();
41498
41226
 
41499
41227
  const
41500
- value = this .Vector2,
41501
- unit = field .getUnit ();
41228
+ target = field .getTarget (),
41229
+ value = this .Vector2,
41230
+ unit = target .getUnit ();
41502
41231
 
41503
41232
  while (this .sfvec2Value (value, unit))
41504
- field .push (value);
41233
+ target .push (value);
41234
+
41235
+ return field .length !== 0;
41505
41236
  },
41506
41237
  sfvec3Value (field, unit)
41507
41238
  {
@@ -41553,14 +41284,16 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41553
41284
  sfvec3Values (field)
41554
41285
  {
41555
41286
  field .length = 0;
41556
- field = field .getTarget ();
41557
41287
 
41558
41288
  const
41559
- value = this .Vector3,
41560
- unit = field .getUnit ();
41289
+ target = field .getTarget (),
41290
+ value = this .Vector3,
41291
+ unit = target .getUnit ();
41561
41292
 
41562
41293
  while (this .sfvec3Value (value, unit))
41563
- field .push (value);
41294
+ target .push (value);
41295
+
41296
+ return field .length !== 0;
41564
41297
  },
41565
41298
  sfvec4Value (field, unit)
41566
41299
  {
@@ -41618,14 +41351,79 @@ Object .assign (Object .setPrototypeOf (VRMLParser .prototype, Parser_X3DParser
41618
41351
  sfvec4Values (field)
41619
41352
  {
41620
41353
  field .length = 0;
41621
- field = field .getTarget ();
41622
41354
 
41623
41355
  const
41624
- value = this .Vector4,
41625
- unit = field .getUnit ();
41356
+ target = field .getTarget (),
41357
+ value = this .Vector4,
41358
+ unit = target .getUnit ();
41626
41359
 
41627
41360
  while (this .sfvec4Value (value, unit))
41628
- field .push (value);
41361
+ target .push (value);
41362
+
41363
+ return field .length !== 0;
41364
+ },
41365
+ unknownValue ()
41366
+ {
41367
+ try
41368
+ {
41369
+ ++ this .unknownLevel;
41370
+
41371
+ if (Grammar .IS .parse (this))
41372
+ {
41373
+ if (this .isInsideProtoDeclaration ())
41374
+ {
41375
+ if (this .Id ())
41376
+ return true;
41377
+ }
41378
+ }
41379
+
41380
+ if (this .mfunknownValue ())
41381
+ return true;
41382
+
41383
+ return false;
41384
+ }
41385
+ finally
41386
+ {
41387
+ -- this .unknownLevel;
41388
+ }
41389
+ },
41390
+ sfunknownValue ()
41391
+ {
41392
+ if (this .sfboolValue (new x_ite_Fields .SFBool ()))
41393
+ return true;
41394
+
41395
+ if (this .sfdoubleValues (new x_ite_Fields .MFFloat ()))
41396
+ return true;
41397
+
41398
+ if (this .sfstringValue (new x_ite_Fields .SFString ()))
41399
+ return true;
41400
+
41401
+ if (this .sfnodeValue (new x_ite_Fields .SFNode ()))
41402
+ return true;
41403
+
41404
+ return false;
41405
+ },
41406
+ mfunknownValue ()
41407
+ {
41408
+ if (this .sfunknownValue ())
41409
+ return true;
41410
+
41411
+ if (Grammar .OpenBracket .parse (this))
41412
+ {
41413
+ this .sfunknownValues ();
41414
+
41415
+ if (Grammar .CloseBracket .parse (this))
41416
+ return true;
41417
+
41418
+ throw new Error ("Expected ']'.");
41419
+ }
41420
+
41421
+ return false;
41422
+ },
41423
+ sfunknownValues ()
41424
+ {
41425
+ while (this .sfunknownValue ())
41426
+ ;
41629
41427
  },
41630
41428
  accessTypeToString (accessType)
41631
41429
  {
@@ -41709,7 +41507,7 @@ const VRMLParser_default_ = VRMLParser;
41709
41507
  x_ite_Namespace .add ("VRMLParser", "x_ite/Parser/VRMLParser", VRMLParser_default_);
41710
41508
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
41711
41509
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
41712
- /* provided dependency */ var XMLParser_$ = __webpack_require__(239);
41510
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(484);
41713
41511
  /*******************************************************************************
41714
41512
  *
41715
41513
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42204,13 +42002,11 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42204
42002
  case "ProtoBody":
42205
42003
  case "PROTOBODY":
42206
42004
  {
42207
- this .pushPrototype (proto);
42208
42005
  this .pushExecutionContext (proto .getBody ());
42209
42006
  this .pushParent (proto);
42210
42007
  this .protoBodyElement (childNode);
42211
42008
  this .popParent ();
42212
42009
  this .popExecutionContext ();
42213
- this .popPrototype ();
42214
42010
  break;
42215
42011
  }
42216
42012
  default:
@@ -42302,7 +42098,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42302
42098
  },
42303
42099
  isElement (xmlElement)
42304
42100
  {
42305
- if (this .isInsideProtoDefinition ())
42101
+ if (this .isInsideProtoDeclaration ())
42306
42102
  {
42307
42103
  for (const childNode of xmlElement .childNodes)
42308
42104
  this .isElementChild (childNode);
@@ -42337,7 +42133,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42337
42133
 
42338
42134
  const
42339
42135
  node = this .getParent (),
42340
- proto = this .getPrototype ();
42136
+ proto = this .getOuterNode ();
42341
42137
 
42342
42138
  if (!(node instanceof Core_X3DNode))
42343
42139
  return;
@@ -42385,7 +42181,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42385
42181
  this .pushParent (node);
42386
42182
  this .childrenElements (xmlElement);
42387
42183
 
42388
- if (!this .isInsideProtoDefinition ())
42184
+ if (!this .isInsideProtoDeclaration ())
42389
42185
  node .setup ();
42390
42186
 
42391
42187
  this .popParent ();
@@ -42465,7 +42261,7 @@ Object .assign (Object .setPrototypeOf (XMLParser .prototype, Parser_X3DParser .
42465
42261
  this .nodeAttributes (xmlElement, node);
42466
42262
  this .childrenElements (xmlElement);
42467
42263
 
42468
- if (!this .isInsideProtoDefinition ())
42264
+ if (!this .isInsideProtoDeclaration ())
42469
42265
  node .setup ();
42470
42266
 
42471
42267
  this .popParent ();
@@ -43802,7 +43598,7 @@ const URLs_default_ = URLs;
43802
43598
  x_ite_Namespace .add ("URLs", "x_ite/Browser/Networking/URLs", URLs_default_);
43803
43599
  /* harmony default export */ const Networking_URLs = (URLs_default_);
43804
43600
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
43805
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(239);
43601
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(484);
43806
43602
  /*******************************************************************************
43807
43603
  *
43808
43604
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47103,7 +46899,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
47103
46899
  x_ite_Namespace .add ("GLTF2Parser", "x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
47104
46900
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
47105
46901
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
47106
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(239);
46902
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(484);
47107
46903
  /*******************************************************************************
47108
46904
  *
47109
46905
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47255,7 +47051,7 @@ const GLB2Parser_default_ = GLB2Parser;
47255
47051
  x_ite_Namespace .add ("GLB2Parser", "x_ite/Parser/GLB2Parser", GLB2Parser_default_);
47256
47052
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
47257
47053
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
47258
- /* provided dependency */ var OBJParser_$ = __webpack_require__(239);
47054
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(484);
47259
47055
  /*******************************************************************************
47260
47056
  *
47261
47057
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50610,8 +50406,8 @@ const MatrixStack_default_ = MatrixStack;
50610
50406
  x_ite_Namespace .add ("MatrixStack", "standard/Math/Utility/MatrixStack", MatrixStack_default_);
50611
50407
  /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
50612
50408
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
50613
- /* provided dependency */ var SVGParser_$ = __webpack_require__(239);
50614
- /* provided dependency */ var libtess = __webpack_require__(488);
50409
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(484);
50410
+ /* provided dependency */ var libtess = __webpack_require__(53);
50615
50411
  /*******************************************************************************
50616
50412
  *
50617
50413
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53379,7 +53175,7 @@ const SVGParser_default_ = SVGParser;
53379
53175
  x_ite_Namespace .add ("SVGParser", "x_ite/Parser/SVGParser", SVGParser_default_);
53380
53176
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
53381
53177
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
53382
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(239);
53178
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(484);
53383
53179
  /*******************************************************************************
53384
53180
  *
53385
53181
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -53716,7 +53512,7 @@ const Plane3_default_ = Plane3;
53716
53512
  x_ite_Namespace .add ("Plane3", "standard/Math/Geometry/Plane3", Plane3_default_);
53717
53513
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
53718
53514
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
53719
- /* provided dependency */ var Triangle3_libtess = __webpack_require__(488);
53515
+ /* provided dependency */ var Triangle3_libtess = __webpack_require__(53);
53720
53516
  /*******************************************************************************
53721
53517
  *
53722
53518
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -61223,7 +61019,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
61223
61019
  x_ite_Namespace .add ("X3DTexture2DNode", "x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
61224
61020
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
61225
61021
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
61226
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(239);
61022
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(484);
61227
61023
  /*******************************************************************************
61228
61024
  *
61229
61025
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -65810,7 +65606,7 @@ const X3DWorld_default_ = X3DWorld;
65810
65606
  x_ite_Namespace .add ("X3DWorld", "x_ite/Execution/X3DWorld", X3DWorld_default_);
65811
65607
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
65812
65608
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
65813
- /* provided dependency */ var FileLoader_$ = __webpack_require__(239);
65609
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(484);
65814
65610
  /*******************************************************************************
65815
65611
  *
65816
65612
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66741,6 +66537,7 @@ const ProtoDeclarationArray_default_ = ProtoDeclarationArray;
66741
66537
  x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclarationArray", ProtoDeclarationArray_default_);
66742
66538
  /* harmony default export */ const Prototype_ProtoDeclarationArray = (ProtoDeclarationArray_default_);
66743
66539
  ;// CONCATENATED MODULE: ./src/x_ite/Routing/X3DRoute.js
66540
+ /* provided dependency */ var X3DRoute_$ = __webpack_require__(484);
66744
66541
  /*******************************************************************************
66745
66542
  *
66746
66543
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66792,29 +66589,35 @@ x_ite_Namespace .add ("ProtoDeclarationArray", "x_ite/Prototype/ProtoDeclaration
66792
66589
 
66793
66590
 
66794
66591
 
66592
+
66593
+
66795
66594
  const
66796
- X3DRoute_executionContext = Symbol (),
66797
- _sourceNode = Symbol (),
66798
- _sourceField = Symbol (),
66799
- _destinationNode = Symbol (),
66800
- _destinationField = Symbol ();
66595
+ X3DRoute_executionContext = Symbol (),
66596
+ _sourceNode = Symbol (),
66597
+ _sourceFieldName = Symbol (),
66598
+ _sourceField = Symbol (),
66599
+ _destinationNode = Symbol (),
66600
+ _destinationFieldName = Symbol (),
66601
+ _destinationField = Symbol (),
66602
+ _disposed = Symbol ();
66801
66603
 
66802
- function X3DRoute (executionContext, sourceNode, sourceField, destinationNode, destinationField)
66604
+ function X3DRoute (executionContext, sourceNode, sourceFieldName, destinationNode, destinationFieldName)
66803
66605
  {
66804
66606
  Base_X3DObject .call (this, executionContext);
66805
66607
 
66806
- this [X3DRoute_executionContext] = executionContext;
66807
- this [_sourceNode] = Fields_SFNodeCache .get (sourceNode);
66808
- this [_sourceField] = sourceField;
66809
- this [_destinationNode] = Fields_SFNodeCache .get (destinationNode);
66810
- this [_destinationField] = destinationField;
66608
+ this [X3DRoute_executionContext] = executionContext;
66609
+ this [_sourceNode] = sourceNode;
66610
+ this [_sourceFieldName] = sourceFieldName;
66611
+ this [_destinationNode] = destinationNode;
66612
+ this [_destinationFieldName] = destinationFieldName;
66811
66613
 
66812
- // Must connect in every context, to make X3DBaseNode.hasRoutes work.
66614
+ if (sourceNode instanceof Execution_X3DImportedNode)
66615
+ sourceNode .getInlineNode () .getLoadState () .addInterest ("reconnect", this);
66813
66616
 
66814
- sourceField .addFieldInterest (destinationField);
66617
+ if (destinationNode instanceof Execution_X3DImportedNode)
66618
+ destinationNode .getInlineNode () .getLoadState () .addInterest ("reconnect", this);
66815
66619
 
66816
- sourceField .addOutputRoute (this);
66817
- destinationField .addInputRoute (this);
66620
+ this .reconnect ();
66818
66621
  }
66819
66622
 
66820
66623
  Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .prototype),
@@ -66825,67 +66628,169 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66825
66628
  },
66826
66629
  getRouteId ()
66827
66630
  {
66828
- return X3DRoute .getRouteId (this [_sourceField], this [_destinationField]);
66631
+ return X3DRoute .getRouteId (this [_sourceNode], this [_sourceFieldName], this [_destinationNode], this [_destinationFieldName]);
66829
66632
  },
66830
66633
  getSourceNode ()
66831
66634
  {
66832
66635
  /// SAI
66833
- return this [_sourceNode] .getValue ();
66636
+ return this [_sourceNode];
66834
66637
  },
66835
66638
  getSourceField ()
66836
66639
  {
66837
66640
  /// SAI
66838
- return this [_sourceField];
66641
+
66642
+ if (this [_sourceField])
66643
+ {
66644
+ return this [_sourceField] .getAccessType () === Base_X3DConstants .inputOutput
66645
+ ? this [_sourceField] .getName () + "_changed"
66646
+ : this [_sourceField] .getName ();
66647
+ }
66648
+ else
66649
+ {
66650
+ return this [_sourceFieldName];
66651
+ }
66652
+
66839
66653
  },
66840
66654
  getDestinationNode ()
66841
66655
  {
66842
66656
  /// SAI
66843
- return this [_destinationNode] .getValue ();
66657
+ return this [_destinationNode];
66844
66658
  },
66845
66659
  getDestinationField ()
66846
66660
  {
66847
66661
  /// SAI
66848
- return this [_destinationField];
66662
+
66663
+ if (this [_destinationField])
66664
+ {
66665
+ return this [_destinationField] .getAccessType () === Base_X3DConstants .inputOutput
66666
+ ? "set_" + this [_destinationField] .getName ()
66667
+ : this [_destinationField] .getName ();
66668
+ }
66669
+ else
66670
+ {
66671
+ return this [_destinationFieldName];
66672
+ }
66673
+ },
66674
+ reconnect ()
66675
+ {
66676
+ try
66677
+ {
66678
+ this .disconnect ();
66679
+ this .connect ();
66680
+ }
66681
+ catch (error)
66682
+ {
66683
+ if ((this [_sourceNode] instanceof Core_X3DNode ||
66684
+ this [_sourceNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE) &&
66685
+ (this [_destinationNode] instanceof Core_X3DNode ||
66686
+ this [_destinationNode] .getInlineNode () .checkLoadState () === Base_X3DConstants .COMPLETE_STATE))
66687
+ {
66688
+ console .warn (error .message);
66689
+ }
66690
+ }
66691
+ },
66692
+ connect ()
66693
+ {
66694
+ if (this [_disposed])
66695
+ return;
66696
+
66697
+ try
66698
+ {
66699
+ const sourceNode = this [_sourceNode] instanceof Core_X3DNode
66700
+ ? this [_sourceNode]
66701
+ : this [_sourceNode] .getExportedNode ();
66702
+
66703
+ this [_sourceField] = sourceNode .getField (this [_sourceFieldName]);
66704
+
66705
+ this [_sourceField] .addOutputRoute (this);
66706
+ }
66707
+ catch (error)
66708
+ {
66709
+ var firstError = error;
66710
+ }
66711
+
66712
+ try
66713
+ {
66714
+ const destinationNode = this [_destinationNode] instanceof Core_X3DNode
66715
+ ? this [_destinationNode]
66716
+ : this [_destinationNode] .getExportedNode ();
66717
+
66718
+ this [_destinationField] = destinationNode .getField (this [_destinationFieldName]);
66719
+
66720
+ this [_destinationField] .addInputRoute (this);
66721
+ }
66722
+ catch (error)
66723
+ {
66724
+ var secondError = error;
66725
+ }
66726
+
66727
+ if (this [_sourceField] && this [_destinationField])
66728
+ {
66729
+ if (this [_sourceField] .getFieldInterests () .has (this [_destinationField]))
66730
+ return;
66731
+
66732
+ this [_sourceField] .addFieldInterest (this [_destinationField]);
66733
+ }
66734
+ else
66735
+ {
66736
+ throw firstError ?? secondError;
66737
+ }
66849
66738
  },
66850
66739
  disconnect ()
66851
66740
  {
66852
- this [_sourceField] .removeFieldInterest (this [_destinationField]);
66741
+ this [_sourceField] ?.removeOutputRoute (this);
66742
+ this [_destinationField] ?.removeInputRoute (this);
66743
+
66744
+ if (this [_sourceField] && this [_destinationField])
66745
+ this [_sourceField] .removeFieldInterest (this [_destinationField]);
66853
66746
 
66854
- this [_sourceField] .removeOutputRoute (this);
66855
- this [_destinationField] .removeInputRoute (this);
66747
+ this [_sourceField] = null;
66748
+ this [_destinationField] = null;
66856
66749
  },
66857
66750
  toVRMLStream (generator)
66858
66751
  {
66859
- const
66860
- sourceNodeName = generator .LocalName (this .getSourceNode ()),
66861
- destinationNodeName = generator .LocalName (this .getDestinationNode ());
66752
+ if (!generator .ExistsRouteNode (this [_sourceNode]))
66753
+ throw new Error (`Source node does not exist in scene graph.`);
66754
+
66755
+ if (!generator .ExistsRouteNode (this [_destinationNode]))
66756
+ throw new Error (`Destination node does not exist in scene graph.`);
66757
+
66758
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
66759
+ ? generator .Name (this [_sourceNode])
66760
+ : this [_sourceNode] .getImportedName ();
66761
+
66762
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
66763
+ ? generator .Name (this [_destinationNode])
66764
+ : this [_destinationNode] .getImportedName ();
66862
66765
 
66863
66766
  generator .string += generator .Indent ();
66864
66767
  generator .string += "ROUTE";
66865
66768
  generator .string += generator .Space ();
66866
66769
  generator .string += sourceNodeName;
66867
66770
  generator .string += ".";
66868
- generator .string += this [_sourceField] .getName ();
66869
-
66870
- if (this [_sourceField] .getAccessType () === Base_X3DConstants .inputOutput)
66871
- generator .string += "_changed";
66872
-
66771
+ generator .string += this .getSourceField ();
66873
66772
  generator .string += generator .Space ();
66874
66773
  generator .string += "TO";
66875
66774
  generator .string += generator .Space ();
66876
66775
  generator .string += destinationNodeName;
66877
66776
  generator .string += ".";
66878
-
66879
- if (this [_destinationField] .getAccessType () === Base_X3DConstants .inputOutput)
66880
- generator .string += "set_";
66881
-
66882
- generator .string += this [_destinationField] .getName ();
66777
+ generator .string += this .getDestinationField ();
66883
66778
  },
66884
66779
  toXMLStream (generator)
66885
66780
  {
66886
- const
66887
- sourceNodeName = generator .LocalName (this .getSourceNode ()),
66888
- destinationNodeName = generator .LocalName (this .getDestinationNode ());
66781
+ if (!generator .ExistsRouteNode (this [_sourceNode]))
66782
+ throw new Error (`Source node does not exist in scene graph.`);
66783
+
66784
+ if (!generator .ExistsRouteNode (this [_destinationNode]))
66785
+ throw new Error (`Destination node does not exist in scene graph.`);
66786
+
66787
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
66788
+ ? generator .Name (this [_sourceNode])
66789
+ : this [_sourceNode] .getImportedName ();
66790
+
66791
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
66792
+ ? generator .Name (this [_destinationNode])
66793
+ : this [_destinationNode] .getImportedName ();
66889
66794
 
66890
66795
  generator .string += generator .Indent ();
66891
66796
  generator .string += "<ROUTE";
@@ -66895,11 +66800,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66895
66800
  generator .string += "'";
66896
66801
  generator .string += generator .Space ();
66897
66802
  generator .string += "fromField='";
66898
- generator .string += generator .XMLEncode (this [_sourceField] .getName ());
66899
-
66900
- if (this [_sourceField] .getAccessType () === Base_X3DConstants .inputOutput)
66901
- generator .string += "_changed";
66902
-
66803
+ generator .string += generator .XMLEncode (this .getSourceField ());
66903
66804
  generator .string += "'";
66904
66805
  generator .string += generator .Space ();
66905
66806
  generator .string += "toNode='";
@@ -66907,19 +66808,25 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66907
66808
  generator .string += "'";
66908
66809
  generator .string += generator .Space ();
66909
66810
  generator .string += "toField='";
66910
-
66911
- if (this [_destinationField] .getAccessType () === Base_X3DConstants .inputOutput)
66912
- generator .string += "set_";
66913
-
66914
- generator .string += generator .XMLEncode (this [_destinationField] .getName ());
66811
+ generator .string += generator .XMLEncode (this .getDestinationField ());
66915
66812
  generator .string += "'";
66916
66813
  generator .string += generator .closingTags ? "></ROUTE>" : "/>";
66917
66814
  },
66918
66815
  toJSONStream (generator)
66919
66816
  {
66920
- const
66921
- sourceNodeName = generator .LocalName (this .getSourceNode ()),
66922
- destinationNodeName = generator .LocalName (this .getDestinationNode ());
66817
+ if (!generator .ExistsRouteNode (this [_sourceNode]))
66818
+ throw new Error (`Source node does not exist in scene graph.`);
66819
+
66820
+ if (!generator .ExistsRouteNode (this [_destinationNode]))
66821
+ throw new Error (`Destination node does not exist in scene graph.`);
66822
+
66823
+ const sourceNodeName = this [_sourceNode] instanceof Core_X3DNode
66824
+ ? generator .Name (this [_sourceNode])
66825
+ : this [_sourceNode] .getImportedName ();
66826
+
66827
+ const destinationNodeName = this [_destinationNode] instanceof Core_X3DNode
66828
+ ? generator .Name (this [_destinationNode])
66829
+ : this [_destinationNode] .getImportedName ();
66923
66830
 
66924
66831
  generator .string += generator .Indent ();
66925
66832
  generator .string += '{';
@@ -66954,7 +66861,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66954
66861
  generator .string += ':';
66955
66862
  generator .string += generator .TidySpace ();
66956
66863
  generator .string += '"';
66957
- generator .string += generator .JSONEncode (this [_sourceField] .getName ());
66864
+ generator .string += generator .JSONEncode (this .getSourceField ());
66958
66865
  generator .string += '"';
66959
66866
  generator .string += ',';
66960
66867
  generator .string += generator .TidyBreak ();
@@ -66978,7 +66885,7 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66978
66885
  generator .string += ':';
66979
66886
  generator .string += generator .TidySpace ();
66980
66887
  generator .string += '"';
66981
- generator .string += generator .JSONEncode (this [_destinationField] .getName ());
66888
+ generator .string += generator .JSONEncode (this .getDestinationField ());
66982
66889
  generator .string += '"';
66983
66890
  generator .string += generator .TidyBreak ();
66984
66891
 
@@ -66992,8 +66899,19 @@ Object .assign (Object .setPrototypeOf (X3DRoute .prototype, Base_X3DObject .pro
66992
66899
  },
66993
66900
  dispose ()
66994
66901
  {
66902
+ if (this [_disposed])
66903
+ return;
66904
+
66905
+ this [_disposed] = true;
66906
+
66995
66907
  this .disconnect ();
66996
66908
 
66909
+ if (this [_sourceNode] instanceof Execution_X3DImportedNode)
66910
+ this [_sourceNode] .getInlineNode () .getLoadState () .removeInterest ("reconnect", this);
66911
+
66912
+ if (this [_destinationNode] instanceof Execution_X3DImportedNode)
66913
+ this [_destinationNode] .getInlineNode () .getLoadState () .removeInterest ("reconnect", this);
66914
+
66997
66915
  this [X3DRoute_executionContext] .deleteRoute (this);
66998
66916
 
66999
66917
  Base_X3DObject .prototype .dispose .call (this);
@@ -67009,32 +66927,32 @@ Object .defineProperties (X3DRoute .prototype,
67009
66927
  {
67010
66928
  get ()
67011
66929
  {
67012
- return this [_sourceNode];
66930
+ if (this [_sourceNode] instanceof Core_X3DNode)
66931
+ return Fields_SFNodeCache .get (this [_sourceNode]);
66932
+ else
66933
+ return this [_sourceNode];
67013
66934
  },
67014
66935
  enumerable: true,
67015
66936
  },
67016
66937
  sourceField:
67017
66938
  {
67018
- get ()
67019
- {
67020
- return this [_sourceField] .getName ();
67021
- },
66939
+ get: X3DRoute .prototype .getSourceField,
67022
66940
  enumerable: true,
67023
66941
  },
67024
66942
  destinationNode:
67025
66943
  {
67026
66944
  get ()
67027
66945
  {
67028
- return this [_destinationNode];
66946
+ if (this [_destinationNode] instanceof Core_X3DNode)
66947
+ return Fields_SFNodeCache .get (this [_destinationNode]);
66948
+ else
66949
+ return this [_destinationNode];
67029
66950
  },
67030
66951
  enumerable: true,
67031
66952
  },
67032
66953
  destinationField:
67033
66954
  {
67034
- get ()
67035
- {
67036
- return this [_destinationField] .getName ();
67037
- },
66955
+ get: X3DRoute .prototype .getDestinationField,
67038
66956
  enumerable: true,
67039
66957
  },
67040
66958
  });
@@ -67050,9 +66968,33 @@ Object .defineProperties (X3DRoute,
67050
66968
 
67051
66969
  Object .assign (X3DRoute,
67052
66970
  {
67053
- getRouteId (sourceField, destinationField)
66971
+ getRouteId (sourceNode, sourceFieldName, destinationNode, destinationFieldName)
67054
66972
  {
67055
- return `${sourceField .getId ()}.${destinationField .getId ()}`;
66973
+ const sourceField = sourceNode instanceof Core_X3DNode
66974
+ ? sourceNode .getField (sourceFieldName)
66975
+ : X3DRoute_$.try (() => sourceNode .getExportedNode () .getField (sourceFieldName));
66976
+
66977
+ const destinationField = destinationNode instanceof Core_X3DNode
66978
+ ? destinationNode .getField (destinationFieldName)
66979
+ : X3DRoute_$.try (() => destinationNode .getExportedNode () .getField (destinationFieldName));
66980
+
66981
+ if (sourceField)
66982
+ {
66983
+ sourceFieldName = sourceField .getName ();
66984
+
66985
+ if (sourceField .getAccessType () === Base_X3DConstants .inputOutput)
66986
+ sourceFieldName += "_changed";
66987
+ }
66988
+
66989
+ if (destinationField)
66990
+ {
66991
+ destinationFieldName = destinationField .getName ();
66992
+
66993
+ if (destinationField .getAccessType () === Base_X3DConstants .inputOutput)
66994
+ destinationFieldName = "set_" + destinationFieldName;
66995
+ }
66996
+
66997
+ return `${sourceNode .getId ()}.${sourceFieldName}.${destinationNode .getId ()}.${destinationFieldName}`;
67056
66998
  },
67057
66999
  });
67058
67000
 
@@ -67200,6 +67142,7 @@ x_ite_Namespace .add ("RouteArray", "x_ite/Routing/RouteArray", RouteArray_defau
67200
67142
 
67201
67143
 
67202
67144
 
67145
+
67203
67146
  const
67204
67147
  _namedNodes = Symbol (),
67205
67148
  _importedNodes = Symbol (),
@@ -67524,6 +67467,10 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67524
67467
  {
67525
67468
  return this [_importedNodes];
67526
67469
  },
67470
+ getUniqueImportName (name)
67471
+ {
67472
+ return getUniqueName (this [_importedNodes], name);
67473
+ },
67527
67474
  getLocalNode (name)
67528
67475
  {
67529
67476
  name = String (name);
@@ -67537,33 +67484,32 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67537
67484
  const importedNode = this [_importedNodes] .get (name);
67538
67485
 
67539
67486
  if (importedNode)
67540
- return Fields_SFNodeCache .get (importedNode);
67487
+ return importedNode;
67541
67488
 
67542
67489
  throw new Error (`Unknown named or imported node '${name}'.`);
67543
67490
  }
67544
67491
  },
67545
- getLocalName (node)
67492
+ getLocalizedNode (node)
67546
67493
  {
67547
- node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false);
67494
+ const importedNode = node instanceof Execution_X3DImportedNode ? node : null;
67548
67495
 
67549
- if (!node)
67550
- throw new Error ("Couldn't get local name: node must be of type X3DNode.");
67496
+ node = Base_X3DCast (Base_X3DConstants .X3DNode, node, false) ?? importedNode;
67551
67497
 
67552
- if (node .getExecutionContext () === this)
67553
- return node .getName ();
67498
+ if (!node)
67499
+ throw new Error ("Couldn't get localized node: node must be of type X3DNode.");
67554
67500
 
67555
67501
  for (const importedNode of this [_importedNodes])
67556
67502
  {
67557
67503
  try
67558
67504
  {
67559
67505
  if (importedNode .getExportedNode () === node)
67560
- return importedNode .getImportedName ();
67506
+ return importedNode;
67561
67507
  }
67562
67508
  catch
67563
67509
  { }
67564
67510
  }
67565
67511
 
67566
- throw new Error ("Couldn't get local name: node is shared.");
67512
+ return node;
67567
67513
  },
67568
67514
  setRootNodes () { },
67569
67515
  getRootNodes ()
@@ -67718,102 +67664,48 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67718
67664
  },
67719
67665
  addRoute (sourceNode, sourceField, destinationNode, destinationField)
67720
67666
  {
67721
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false);
67722
- sourceField = String (sourceField);
67723
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false);
67724
- destinationField = String (destinationField);
67725
-
67726
- if (!sourceNode)
67727
- throw new Error ("Bad ROUTE specification: source node must be of type X3DNode.");
67728
-
67729
- if (!destinationNode)
67730
- throw new Error ("Bad ROUTE specification: destination node must be of type X3DNode.");
67731
-
67732
- // Imported nodes handling.
67733
-
67734
- let
67735
- importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
67736
- importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
67737
-
67738
- try
67739
- {
67740
- // If sourceNode is shared node try to find the corresponding X3DImportedNode.
67741
- if (sourceNode .getExecutionContext () !== this)
67742
- importedSourceNode = this .getLocalNode (this .getLocalName (sourceNode)) .getValue ();
67743
- }
67744
- catch
67745
- {
67746
- // Source node is shared but not imported.
67747
- }
67748
-
67749
67667
  try
67750
67668
  {
67751
- // If destinationNode is shared node try to find the corresponding X3DImportedNode.
67752
- if (destinationNode .getExecutionContext () !== this)
67753
- importedDestinationNode = this .getLocalNode (this .getLocalName (destinationNode)) .getValue ();
67754
- }
67755
- catch
67756
- {
67757
- // Destination node is shared but not imported.
67758
- }
67669
+ // Normalize arguments.
67759
67670
 
67760
- if (importedSourceNode instanceof Execution_X3DImportedNode && importedDestinationNode instanceof Execution_X3DImportedNode)
67761
- {
67762
- importedSourceNode .addRoute (importedSourceNode, sourceField, importedDestinationNode, destinationField);
67763
- importedDestinationNode .addRoute (importedSourceNode, sourceField, importedDestinationNode, destinationField);
67764
- }
67765
- else if (importedSourceNode instanceof Execution_X3DImportedNode)
67766
- {
67767
- importedSourceNode .addRoute (importedSourceNode, sourceField, destinationNode, destinationField);
67768
- }
67769
- else if (importedDestinationNode instanceof Execution_X3DImportedNode)
67770
- {
67771
- importedDestinationNode .addRoute (sourceNode, sourceField, importedDestinationNode, destinationField);
67772
- }
67773
-
67774
- // If either sourceNode or destinationNode is an X3DImportedNode return here without value.
67775
- if (importedSourceNode === sourceNode || importedDestinationNode === destinationNode)
67776
- return;
67777
-
67778
- // Create route and return.
67779
-
67780
- return this .addSimpleRoute (sourceNode, sourceField, destinationNode, destinationField);
67781
- },
67782
- addSimpleRoute (sourceNode, sourceField, destinationNode, destinationField)
67783
- {
67784
- // Source and dest node are here X3DBaseNode.
67671
+ const
67672
+ importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
67673
+ importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
67785
67674
 
67786
- try
67787
- {
67788
- // Private function.
67789
- // Create route and return.
67675
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
67676
+ sourceField = String (sourceField);
67677
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
67678
+ destinationField = String (destinationField);
67790
67679
 
67791
- sourceField = sourceNode .getField (sourceField),
67792
- destinationField = destinationNode .getField (destinationField);
67680
+ if (!sourceNode)
67681
+ throw new Error ("source node must be of type X3DNode or X3DImportedNode.");
67793
67682
 
67794
- if (!sourceField .isOutput ())
67795
- throw new Error (`Field named '${sourceField .getName ()}' in node named '${sourceNode .getName ()}' of type ${sourceNode .getTypeName ()} is not an output field.`);
67683
+ if (!destinationNode)
67684
+ throw new Error ("destination node must be of type X3DNode or X3DImportedNode.");
67796
67685
 
67797
- if (!destinationField .isInput ())
67798
- throw new Error (`Field named '${destinationField .getName ()}' in node named '${destinationNode .getName ()}' of type ${destinationNode .getTypeName ()} is not an input field.`);
67686
+ // Resolve imported source and destination node.
67799
67687
 
67800
- if (sourceField .getType () !== destinationField .getType ())
67801
- throw new Error (`ROUTE types ${sourceField .getTypeName ()} and ${destinationField .getTypeName ()} do not match.`);
67688
+ sourceNode = this .getLocalizedNode (sourceNode);
67689
+ destinationNode = this .getLocalizedNode (destinationNode);
67802
67690
 
67803
- const id = Routing_X3DRoute .getRouteId (sourceField, destinationField);
67691
+ // Add route.
67804
67692
 
67805
- let route = this [X3DExecutionContext_routes] .get (id);
67693
+ const
67694
+ id = Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField),
67695
+ route = this [X3DExecutionContext_routes] .get (id);
67806
67696
 
67807
67697
  if (route)
67698
+ {
67808
67699
  return route;
67700
+ }
67701
+ else
67702
+ {
67703
+ const route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
67809
67704
 
67810
- route = new Routing_X3DRoute (this, sourceNode, sourceField, destinationNode, destinationField);
67811
-
67812
- this [X3DExecutionContext_routes] .add (id, route);
67813
-
67814
- this ._routes_changed = this .getBrowser () .getCurrentTime ();
67705
+ this [X3DExecutionContext_routes] .add (id, route);
67815
67706
 
67816
- return route;
67707
+ return route;
67708
+ }
67817
67709
  }
67818
67710
  catch (error)
67819
67711
  {
@@ -67822,76 +67714,31 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67822
67714
  },
67823
67715
  deleteRoute (route)
67824
67716
  {
67825
- // sourceNode, sourceField, destinationNode, destinationField
67717
+ // Case: sourceNode, sourceField, destinationNode, destinationField.
67826
67718
  if (arguments .length === 4)
67827
67719
  route = this .getRoute (... arguments);
67828
67720
 
67829
67721
  if (!(route instanceof Routing_X3DRoute))
67830
67722
  return;
67831
67723
 
67832
- if (route .getExecutionContext () !== this)
67724
+ if (this [X3DExecutionContext_routes] .get (route .getRouteId ()) !== route)
67833
67725
  return;
67834
67726
 
67835
- this .deleteSimpleRoute (route);
67836
- this .deleteImportedRoute (route .sourceNode, route .destinationNode, route);
67837
- },
67838
- deleteSimpleRoute (route)
67839
- {
67840
67727
  this [X3DExecutionContext_routes] .remove (route .getRouteId ());
67841
67728
 
67842
- route .disconnect ();
67843
-
67844
- this ._routes_changed = this .getBrowser () .getCurrentTime ();
67729
+ route .dispose ();
67845
67730
  },
67846
- deleteImportedRoute (sourceNode, destinationNode, route)
67731
+ getRoute (sourceNode, sourceField, destinationNode, destinationField)
67847
67732
  {
67848
- // Imported nodes handling.
67849
-
67850
- let
67851
- importedSourceNode = null,
67852
- importedDestinationNode = null;
67853
-
67854
- try
67855
- {
67856
- // If sourceNode is shared node try to find the corresponding X3DImportedNode.
67857
- if (sourceNode .getValue () .getExecutionContext () !== this)
67858
- importedSourceNode = this .getLocalNode (this .getLocalName (sourceNode)) .getValue ();
67859
- }
67860
- catch
67861
- {
67862
- // Source node is shared but not imported.
67863
- }
67733
+ // Normalize arguments.
67864
67734
 
67865
- try
67866
- {
67867
- // If destinationNode is shared node try to find the corresponding X3DImportedNode.
67868
- if (destinationNode .getValue () .getExecutionContext () !== this)
67869
- importedDestinationNode = this .getLocalNode (this .getLocalName (destinationNode)) .getValue ();
67870
- }
67871
- catch
67872
- {
67873
- // Destination node is shared but not imported.
67874
- }
67735
+ const
67736
+ importedSourceNode = sourceNode instanceof Execution_X3DImportedNode ? sourceNode : null,
67737
+ importedDestinationNode = destinationNode instanceof Execution_X3DImportedNode ? destinationNode : null;
67875
67738
 
67876
- if (importedSourceNode instanceof Execution_X3DImportedNode && importedDestinationNode instanceof Execution_X3DImportedNode)
67877
- {
67878
- importedSourceNode .deleteRoute (route);
67879
- importedDestinationNode .deleteRoute (route);
67880
- }
67881
- else if (importedSourceNode instanceof Execution_X3DImportedNode)
67882
- {
67883
- importedSourceNode .deleteRoute (route);
67884
- }
67885
- else if (importedDestinationNode instanceof Execution_X3DImportedNode)
67886
- {
67887
- importedDestinationNode .deleteRoute (route);
67888
- }
67889
- },
67890
- getRoute (sourceNode, sourceField, destinationNode, destinationField)
67891
- {
67892
- sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false);
67739
+ sourceNode = Base_X3DCast (Base_X3DConstants .X3DNode, sourceNode, false) ?? importedSourceNode;
67893
67740
  sourceField = String (sourceField)
67894
- destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false);
67741
+ destinationNode = Base_X3DCast (Base_X3DConstants .X3DNode, destinationNode, false) ?? importedDestinationNode;
67895
67742
  destinationField = String (destinationField)
67896
67743
 
67897
67744
  if (!sourceNode)
@@ -67900,10 +67747,14 @@ Object .assign (Object .setPrototypeOf (X3DExecutionContext .prototype, Base_X3D
67900
67747
  if (!destinationNode)
67901
67748
  throw new Error ("Bad ROUTE specification: destinationNode must be of type X3DNode.");
67902
67749
 
67903
- sourceField = sourceNode .getField (sourceField);
67904
- destinationField = destinationNode .getField (destinationField);
67750
+ // Resolve imported source and destination node.
67905
67751
 
67906
- return this [X3DExecutionContext_routes] .get (Routing_X3DRoute .getRouteId (sourceField, destinationField));
67752
+ sourceNode = this .getLocalizedNode (sourceNode);
67753
+ destinationNode = this .getLocalizedNode (destinationNode);
67754
+
67755
+ // Return route.
67756
+
67757
+ return this [X3DExecutionContext_routes] .get (Routing_X3DRoute .getRouteId (sourceNode, sourceField, destinationNode, destinationField));
67907
67758
  },
67908
67759
  getRoutes ()
67909
67760
  {
@@ -68338,11 +68189,11 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68338
68189
 
68339
68190
  // Copy proto.
68340
68191
 
68341
- this .importExternProtos (proto .getBody () .externprotos);
68342
- this .importProtos (proto .getBody () .protos);
68343
- this .copyRootNodes (proto .getBody () .rootNodes);
68344
- this .copyImportedNodes (proto .getBody (), proto .getBody () .getImportedNodes ());
68345
- this .copyRoutes (proto .getBody (), proto .getBody () .routes);
68192
+ this .importExternProtos (proto .getBody () .externprotos);
68193
+ this .importProtos (proto .getBody () .protos);
68194
+ this .copyRootNodes (proto .getBody () .rootNodes);
68195
+ this .importImportedNodes (proto .getBody () .importedNodes);
68196
+ this .copyRoutes (proto .getBody () .routes);
68346
68197
 
68347
68198
  this [X3DPrototypeInstance_body] .setup ();
68348
68199
 
@@ -68393,6 +68244,9 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68393
68244
  oldField .setAccessType (newField .getAccessType ());
68394
68245
  oldField .setName (newField .getName ());
68395
68246
 
68247
+ // Replace field, ie. reuse old field.
68248
+ this .getPredefinedFields () .update (newField .getName (), newField .getName (), oldField);
68249
+
68396
68250
  const references = new Set (oldField .getReferences ());
68397
68251
 
68398
68252
  // Remove references and routes.
@@ -68406,16 +68260,33 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68406
68260
  oldField .addReference (field);
68407
68261
  }
68408
68262
 
68409
- // Reconnect routes.
68410
- for (const route of oldField .getInputRoutes ())
68411
- route .getSourceField () .addFieldInterest (route .getDestinationField ());
68263
+ // Reconnect input routes.
68264
+ for (const route of new Set (oldField .getInputRoutes ()))
68265
+ {
68266
+ try
68267
+ {
68268
+ const { sourceNode, sourceField } = route;
68412
68269
 
68413
- // Reconnect routes.
68414
- for (const route of oldField .getOutputRoutes ())
68415
- route .getSourceField () .addFieldInterest (route .getDestinationField ());
68270
+ route .getExecutionContext () .deleteRoute (route);
68271
+ route .getExecutionContext () .addRoute (sourceNode, sourceField, this, oldField .getName ());
68272
+ }
68273
+ catch
68274
+ { }
68275
+ }
68416
68276
 
68417
- // Replace field, ie. reuse old field.
68418
- this .getPredefinedFields () .update (newField .getName (), newField .getName (), oldField);
68277
+ // Reconnect output routes.
68278
+ for (const route of new Set (oldField .getOutputRoutes ()))
68279
+ {
68280
+ try
68281
+ {
68282
+ const { destinationNode, destinationField } = route;
68283
+
68284
+ route .getExecutionContext () .deleteRoute (route);
68285
+ route .getExecutionContext () .addRoute (this, oldField .getName (), destinationNode, destinationField );
68286
+ }
68287
+ catch
68288
+ { }
68289
+ }
68419
68290
 
68420
68291
  // Remove from old fields and dispose new field.
68421
68292
  oldFields .delete (oldFieldName);
@@ -68500,34 +68371,35 @@ Object .assign (Object .setPrototypeOf (X3DPrototypeInstance .prototype, Core_X3
68500
68371
  for (const node of rootNodes1)
68501
68372
  rootNodes2 .push (node .copy (this));
68502
68373
  },
68503
- copyImportedNodes (executionContext, importedNodes)
68374
+ importImportedNodes (importedNodes)
68504
68375
  {
68505
68376
  for (const importedNode of importedNodes)
68506
68377
  {
68507
68378
  try
68508
68379
  {
68509
- const
68510
- inlineNode = this [X3DPrototypeInstance_body] .getNamedNode (importedNode .getInlineNode () .getName ()),
68511
- importedName = importedNode .getImportedName (),
68512
- exportedName = importedNode .getExportedName ();
68380
+ const inlineNode = this [X3DPrototypeInstance_body] .getNamedNode (importedNode .getInlineNode () .getName ());
68513
68381
 
68514
- this [X3DPrototypeInstance_body] .addImportedNode (inlineNode, exportedName, importedName);
68382
+ this [X3DPrototypeInstance_body] .addImportedNode (inlineNode, importedNode .getExportedName (), importedNode .getImportedName ());
68515
68383
  }
68516
68384
  catch (error)
68517
68385
  {
68518
- console .error ("Bad IMPORT specification in copy: ", error);
68386
+ console .error (error);
68519
68387
  }
68520
68388
  }
68521
68389
  },
68522
- copyRoutes (executionContext, routes)
68390
+ copyRoutes (routes)
68523
68391
  {
68524
68392
  for (const route of routes)
68525
68393
  {
68526
68394
  try
68527
68395
  {
68528
- const
68529
- sourceNode = this [X3DPrototypeInstance_body] .getLocalNode (executionContext .getLocalName (route .sourceNode)),
68530
- destinationNode = this [X3DPrototypeInstance_body] .getLocalNode (executionContext .getLocalName (route .destinationNode));
68396
+ const sourceNode = route .getSourceNode () instanceof Core_X3DNode
68397
+ ? this [X3DPrototypeInstance_body] .getLocalNode (route .getSourceNode () .getName ())
68398
+ : this [X3DPrototypeInstance_body] .getLocalNode (route .getSourceNode () .getImportedName ());
68399
+
68400
+ const destinationNode = route .getDestinationNode () instanceof Core_X3DNode
68401
+ ? this [X3DPrototypeInstance_body] .getLocalNode (route .getDestinationNode () .getName ())
68402
+ : this [X3DPrototypeInstance_body] .getLocalNode (route .getDestinationNode () .getImportedName ());
68531
68403
 
68532
68404
  this [X3DPrototypeInstance_body] .addRoute (sourceNode, route .sourceField, destinationNode, route .destinationField);
68533
68405
  }
@@ -89500,7 +89372,7 @@ const X3DShaderNode_default_ = X3DShaderNode;
89500
89372
  x_ite_Namespace .add ("X3DShaderNode", "x_ite/Components/Shaders/X3DShaderNode", X3DShaderNode_default_);
89501
89373
  /* harmony default export */ const Shaders_X3DShaderNode = (X3DShaderNode_default_);
89502
89374
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js
89503
- /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(239);
89375
+ /* provided dependency */ var X3DProgrammableShaderObject_$ = __webpack_require__(484);
89504
89376
  /*******************************************************************************
89505
89377
  *
89506
89378
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95141,7 +95013,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
95141
95013
  x_ite_Namespace .add ("ShaderCompiler", "x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
95142
95014
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
95143
95015
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
95144
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(239);
95016
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(484);
95145
95017
  /*******************************************************************************
95146
95018
  *
95147
95019
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -95798,7 +95670,7 @@ const X3DAppearanceNode_default_ = X3DAppearanceNode;
95798
95670
  x_ite_Namespace .add ("X3DAppearanceNode", "x_ite/Components/Shape/X3DAppearanceNode", X3DAppearanceNode_default_);
95799
95671
  /* harmony default export */ const Shape_X3DAppearanceNode = (X3DAppearanceNode_default_);
95800
95672
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shape/Appearance.js
95801
- /* provided dependency */ var Appearance_$ = __webpack_require__(239);
95673
+ /* provided dependency */ var Appearance_$ = __webpack_require__(484);
95802
95674
  /*******************************************************************************
95803
95675
  *
95804
95676
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -99216,7 +99088,7 @@ const Components_Shape_default_ = {
99216
99088
  x_ite_Namespace .add ("Shape", "x_ite/Components/Shape", Components_Shape_default_);
99217
99089
  /* harmony default export */ const Components_Shape = (Components_Shape_default_);
99218
99090
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundProcessingNode.js
99219
- /* provided dependency */ var X3DSoundProcessingNode_$ = __webpack_require__(239);
99091
+ /* provided dependency */ var X3DSoundProcessingNode_$ = __webpack_require__(484);
99220
99092
  /*******************************************************************************
99221
99093
  *
99222
99094
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -99856,7 +99728,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
99856
99728
  x_ite_Namespace .add ("X3DSoundSourceNode", "x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
99857
99729
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
99858
99730
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
99859
- /* provided dependency */ var AudioClip_$ = __webpack_require__(239);
99731
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(484);
99860
99732
  /*******************************************************************************
99861
99733
  *
99862
99734
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -100158,7 +100030,7 @@ const X3DSoundNode_default_ = X3DSoundNode;
100158
100030
  x_ite_Namespace .add ("X3DSoundNode", "x_ite/Components/Sound/X3DSoundNode", X3DSoundNode_default_);
100159
100031
  /* harmony default export */ const Sound_X3DSoundNode = (X3DSoundNode_default_);
100160
100032
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/X3DSoundDestinationNode.js
100161
- /* provided dependency */ var X3DSoundDestinationNode_$ = __webpack_require__(239);
100033
+ /* provided dependency */ var X3DSoundDestinationNode_$ = __webpack_require__(484);
100162
100034
  /*******************************************************************************
100163
100035
  *
100164
100036
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -101808,7 +101680,7 @@ const ListenerPointSource_default_ = ListenerPointSource;
101808
101680
  x_ite_Namespace .add ("ListenerPointSource", "x_ite/Components/Sound/ListenerPointSource", ListenerPointSource_default_);
101809
101681
  /* harmony default export */ const Sound_ListenerPointSource = (ListenerPointSource_default_);
101810
101682
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/MicrophoneSource.js
101811
- /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(239);
101683
+ /* provided dependency */ var MicrophoneSource_$ = __webpack_require__(484);
101812
101684
  /*******************************************************************************
101813
101685
  *
101814
101686
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -103477,8 +103349,8 @@ const GifMedia_default_ = GifMedia;
103477
103349
  x_ite_Namespace .add ("GifMedia", "x_ite/Browser/Texturing/GifMedia", GifMedia_default_);
103478
103350
  /* harmony default export */ const Texturing_GifMedia = (GifMedia_default_);
103479
103351
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
103480
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(239);
103481
- /* provided dependency */ var SuperGif = __webpack_require__(899);
103352
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(484);
103353
+ /* provided dependency */ var SuperGif = __webpack_require__(749);
103482
103354
  /*******************************************************************************
103483
103355
  *
103484
103356
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -106753,7 +106625,7 @@ const gettext_default_ = gettext;
106753
106625
  x_ite_Namespace .add ("gettext", "locale/gettext", gettext_default_);
106754
106626
  /* harmony default export */ const locale_gettext = (gettext_default_);
106755
106627
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
106756
- /* provided dependency */ var BrowserTimings_$ = __webpack_require__(239);
106628
+ /* provided dependency */ var BrowserTimings_$ = __webpack_require__(484);
106757
106629
  /*******************************************************************************
106758
106630
  *
106759
106631
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107183,7 +107055,7 @@ const TextureQuality_default_ = TextureQuality;
107183
107055
  x_ite_Namespace .add ("TextureQuality", "x_ite/Browser/Core/TextureQuality", TextureQuality_default_);
107184
107056
  /* harmony default export */ const Core_TextureQuality = (TextureQuality_default_);
107185
107057
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserOptions.js
107186
- /* provided dependency */ var BrowserOptions_$ = __webpack_require__(239);
107058
+ /* provided dependency */ var BrowserOptions_$ = __webpack_require__(484);
107187
107059
  /*******************************************************************************
107188
107060
  *
107189
107061
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107773,7 +107645,7 @@ const RenderingProperties_default_ = RenderingProperties;
107773
107645
  x_ite_Namespace .add ("RenderingProperties", "x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
107774
107646
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
107775
107647
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
107776
- /* provided dependency */ var Notification_$ = __webpack_require__(239);
107648
+ /* provided dependency */ var Notification_$ = __webpack_require__(484);
107777
107649
  /*******************************************************************************
107778
107650
  *
107779
107651
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107896,8 +107768,8 @@ const Notification_default_ = Notification;
107896
107768
  x_ite_Namespace .add ("Notification", "x_ite/Browser/Core/Notification", Notification_default_);
107897
107769
  /* harmony default export */ const Core_Notification = (Notification_default_);
107898
107770
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
107899
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(473);
107900
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(239);
107771
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(66);
107772
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(484);
107901
107773
  /*******************************************************************************
107902
107774
  *
107903
107775
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -109141,30 +109013,36 @@ x_ite_Namespace .add ("UnitInfoArray", "x_ite/Configuration/UnitInfoArray", Unit
109141
109013
 
109142
109014
 
109143
109015
  const
109144
- X3DExportedNode_exportedName = Symbol (),
109145
- _localNode = Symbol ();
109016
+ X3DExportedNode_executionContext = Symbol (),
109017
+ X3DExportedNode_exportedName = Symbol (),
109018
+ _localNode = Symbol ();
109146
109019
 
109147
- function X3DExportedNode (exportedName, localNode)
109020
+ function X3DExportedNode (executionContext, exportedName, localNode)
109148
109021
  {
109149
109022
  Base_X3DObject .call (this);
109150
109023
 
109151
- this [X3DExportedNode_exportedName] = exportedName;
109152
- this [_localNode] = Fields_SFNodeCache .get (localNode);
109024
+ this [X3DExportedNode_executionContext] = executionContext;
109025
+ this [X3DExportedNode_exportedName] = exportedName;
109026
+ this [_localNode] = localNode;
109153
109027
  }
109154
109028
 
109155
109029
  Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObject .prototype),
109156
109030
  {
109031
+ getExecutionContext ()
109032
+ {
109033
+ return this [X3DExportedNode_executionContext];
109034
+ },
109157
109035
  getExportedName ()
109158
109036
  {
109159
109037
  return this [X3DExportedNode_exportedName];
109160
109038
  },
109161
109039
  getLocalNode ()
109162
109040
  {
109163
- return this [_localNode] .getValue ();
109041
+ return this [_localNode];
109164
109042
  },
109165
109043
  toVRMLStream (generator)
109166
109044
  {
109167
- const localName = generator .LocalName (this .getLocalNode ());
109045
+ const localName = generator .Name (this .getLocalNode ());
109168
109046
 
109169
109047
  generator .string += generator .Indent ();
109170
109048
  generator .string += "EXPORT";
@@ -109181,7 +109059,7 @@ Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObje
109181
109059
  },
109182
109060
  toXMLStream (generator)
109183
109061
  {
109184
- const localName = generator .LocalName (this .getLocalNode ());
109062
+ const localName = generator .Name (this .getLocalNode ());
109185
109063
 
109186
109064
  generator .string += generator .Indent ();
109187
109065
  generator .string += "<EXPORT";
@@ -109202,7 +109080,7 @@ Object .assign (Object .setPrototypeOf (X3DExportedNode .prototype, Base_X3DObje
109202
109080
  },
109203
109081
  toJSONStream (generator)
109204
109082
  {
109205
- const localName = generator .LocalName (this .getLocalNode ());
109083
+ const localName = generator .Name (this .getLocalNode ());
109206
109084
 
109207
109085
  generator .string += generator .Indent ();
109208
109086
  generator .string += '{';
@@ -109275,7 +109153,7 @@ Object .defineProperties (X3DExportedNode .prototype,
109275
109153
  {
109276
109154
  get ()
109277
109155
  {
109278
- return this [_localNode];
109156
+ return Fields_SFNodeCache .get (this [_localNode]);
109279
109157
  },
109280
109158
  enumerable: true,
109281
109159
  },
@@ -109729,7 +109607,7 @@ Object .assign (Object .setPrototypeOf (X3DScene .prototype, Execution_X3DExecut
109729
109607
 
109730
109608
  this .removeExportedNode (exportedName);
109731
109609
 
109732
- const exportedNode = new Execution_X3DExportedNode (exportedName, node);
109610
+ const exportedNode = new Execution_X3DExportedNode (this, exportedName, node);
109733
109611
 
109734
109612
  this [_exportedNodes] .add (exportedName, exportedNode);
109735
109613
 
@@ -110645,7 +110523,7 @@ const DataStorage_default_ = DataStorage;
110645
110523
  x_ite_Namespace .add ("DataStorage", "standard/Utility/DataStorage", DataStorage_default_);
110646
110524
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
110647
110525
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
110648
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(239);
110526
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(484);
110649
110527
  /*******************************************************************************
110650
110528
  *
110651
110529
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -110856,10 +110734,6 @@ Object .assign (X3DCoreContext .prototype,
110856
110734
  {
110857
110735
  return this [_instanceId];
110858
110736
  },
110859
- isStrict ()
110860
- {
110861
- return false;
110862
- },
110863
110737
  getElement ()
110864
110738
  {
110865
110739
  return this [_element];
@@ -113172,8 +113046,8 @@ const X3DViewer_default_ = X3DViewer;
113172
113046
  x_ite_Namespace .add ("X3DViewer", "x_ite/Browser/Navigation/X3DViewer", X3DViewer_default_);
113173
113047
  /* harmony default export */ const Navigation_X3DViewer = (X3DViewer_default_);
113174
113048
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
113175
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(360);
113176
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(239);
113049
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(389);
113050
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(484);
113177
113051
  /*******************************************************************************
113178
113052
  *
113179
113053
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114045,8 +113919,8 @@ const ExamineViewer_default_ = ExamineViewer;
114045
113919
  x_ite_Namespace .add ("ExamineViewer", "x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
114046
113920
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
114047
113921
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
114048
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(360);
114049
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(239);
113922
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(389);
113923
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(484);
114050
113924
  /*******************************************************************************
114051
113925
  *
114052
113926
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115055,8 +114929,8 @@ const FlyViewer_default_ = FlyViewer;
115055
114929
  x_ite_Namespace .add ("FlyViewer", "x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
115056
114930
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
115057
114931
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
115058
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(360);
115059
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(239);
114932
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(389);
114933
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(484);
115060
114934
  /*******************************************************************************
115061
114935
  *
115062
114936
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115387,8 +115261,8 @@ const NoneViewer_default_ = NoneViewer;
115387
115261
  x_ite_Namespace .add ("NoneViewer", "x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
115388
115262
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
115389
115263
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
115390
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(360);
115391
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(239);
115264
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(389);
115265
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(484);
115392
115266
  /*******************************************************************************
115393
115267
  *
115394
115268
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116527,8 +116401,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
116527
116401
  x_ite_Namespace .add ("X3DPickingContext", "x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
116528
116402
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
116529
116403
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
116530
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(360);
116531
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(239);
116404
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(389);
116405
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(484);
116532
116406
  /*******************************************************************************
116533
116407
  *
116534
116408
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -117807,7 +117681,7 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
117807
117681
  x_ite_Namespace .add ("MultiSampleFrameBuffer", "x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
117808
117682
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
117809
117683
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
117810
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(239);
117684
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(484);
117811
117685
  /*******************************************************************************
117812
117686
  *
117813
117687
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118710,7 +118584,7 @@ const X3DSoundContext_default_ = X3DSoundContext;
118710
118584
  x_ite_Namespace .add ("X3DSoundContext", "x_ite/Browser/Sound/X3DSoundContext", X3DSoundContext_default_);
118711
118585
  /* harmony default export */ const Sound_X3DSoundContext = (X3DSoundContext_default_);
118712
118586
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Texturing/KTXDecoder.js
118713
- /* provided dependency */ var KTXDecoder_$ = __webpack_require__(239);
118587
+ /* provided dependency */ var KTXDecoder_$ = __webpack_require__(484);
118714
118588
  const KTXDecoder_default_ = class KTXDecoder
118715
118589
  {
118716
118590
  constructor (gl, externalKtxlib, scriptDir)
@@ -120263,7 +120137,7 @@ const Components_default_ = Components;
120263
120137
  x_ite_Namespace .add ("Components", "x_ite/Components", Components_default_);
120264
120138
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
120265
120139
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
120266
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(239);
120140
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(484);
120267
120141
  /*******************************************************************************
120268
120142
  * MIT License
120269
120143
  *
@@ -120701,13 +120575,14 @@ x_ite_Namespace .add ("DOMIntegration", "x_ite/Browser/DOMIntegration", DOMInteg
120701
120575
 
120702
120576
 
120703
120577
 
120578
+
120704
120579
  function ProfileInfo (name, title, providerURL, components)
120705
120580
  {
120706
120581
  Object .defineProperties (this,
120707
120582
  {
120708
120583
  name: { value: name, enumerable: true },
120709
120584
  title: { value: title, enumerable: true },
120710
- providerURL: { value: providerURL, enumerable: true },
120585
+ providerURL: { value: providerURL || Networking_URLs .getProviderURL (), enumerable: true },
120711
120586
  components: { value: components, enumerable: true },
120712
120587
  });
120713
120588
  }
@@ -121202,13 +121077,11 @@ x_ite_Namespace .add ("SupportedComponents", "x_ite/Configuration/SupportedCompo
121202
121077
 
121203
121078
 
121204
121079
 
121205
-
121206
121080
  const SupportedProfiles = new Configuration_ProfileInfoArray ();
121207
121081
 
121208
121082
  SupportedProfiles .add ("CADInterchange",
121209
121083
  {
121210
121084
  title: "Computer-Aided Design (CAD) interchange",
121211
- providerURL: Networking_URLs .getProviderURL (),
121212
121085
  components: [
121213
121086
  Configuration_SupportedComponents .get ("CADGeometry"),
121214
121087
  Configuration_SupportedComponents .get ("Core"),
@@ -121226,7 +121099,6 @@ SupportedProfiles .add ("CADInterchange",
121226
121099
  SupportedProfiles .add ("Core",
121227
121100
  {
121228
121101
  title: "Core",
121229
- providerURL: Networking_URLs .getProviderURL (),
121230
121102
  components: [
121231
121103
  Configuration_SupportedComponents .get ("Core"),
121232
121104
  ],
@@ -121235,7 +121107,6 @@ SupportedProfiles .add ("Core",
121235
121107
  SupportedProfiles .add ("Full",
121236
121108
  {
121237
121109
  title: "Full",
121238
- providerURL: Networking_URLs .getProviderURL (),
121239
121110
  components: [
121240
121111
  //SupportedComponents .get ("Annotation"),
121241
121112
  Configuration_SupportedComponents .get ("CADGeometry"),
@@ -121280,7 +121151,6 @@ SupportedProfiles .add ("Full",
121280
121151
  SupportedProfiles .add ("Immersive",
121281
121152
  {
121282
121153
  title: "Immersive",
121283
- providerURL: Networking_URLs .getProviderURL (),
121284
121154
  components: [
121285
121155
  Configuration_SupportedComponents .get ("Core"),
121286
121156
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121308,7 +121178,6 @@ SupportedProfiles .add ("Immersive",
121308
121178
  SupportedProfiles .add ("Interactive",
121309
121179
  {
121310
121180
  title: "Interactive",
121311
- providerURL: Networking_URLs .getProviderURL (),
121312
121181
  components: [
121313
121182
  Configuration_SupportedComponents .get ("Core"),
121314
121183
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121332,7 +121201,6 @@ SupportedProfiles .add ("Interactive",
121332
121201
  SupportedProfiles .add ("Interchange",
121333
121202
  {
121334
121203
  title: "Interchange",
121335
- providerURL: Networking_URLs .getProviderURL (),
121336
121204
  components: [
121337
121205
  Configuration_SupportedComponents .get ("Core"),
121338
121206
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121352,7 +121220,6 @@ SupportedProfiles .add ("Interchange",
121352
121220
  SupportedProfiles .add ("MedicalInterchange",
121353
121221
  {
121354
121222
  title: "Medical interchange",
121355
- providerURL: Networking_URLs .getProviderURL (),
121356
121223
  components: [
121357
121224
  Configuration_SupportedComponents .get ("Core"),
121358
121225
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121377,7 +121244,6 @@ SupportedProfiles .add ("MedicalInterchange",
121377
121244
  SupportedProfiles .add ("MPEG-4",
121378
121245
  {
121379
121246
  title: "MPEG-4 interactive",
121380
- providerURL: Networking_URLs .getProviderURL (),
121381
121247
  components: [
121382
121248
  Configuration_SupportedComponents .get ("Core"),
121383
121249
  Configuration_SupportedComponents .get ("EnvironmentalEffects"),
@@ -121402,7 +121268,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
121402
121268
  x_ite_Namespace .add ("SupportedProfiles", "x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
121403
121269
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
121404
121270
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
121405
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(239);
121271
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(484);
121406
121272
  /*******************************************************************************
121407
121273
  *
121408
121274
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122116,21 +121982,11 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
122116
121982
  else
122117
121983
  return new Map ([... this [_browserCallbacks]] .flatMap (([event, map]) => [... map]));
122118
121984
  },
122119
- callBrowserCallbacks: (() =>
121985
+ callBrowserCallbacks (event)
122120
121986
  {
122121
- const values = [ ];
122122
-
122123
- return function (event)
122124
- {
122125
- const browserCallbacks = this [_browserCallbacks] .get (event);
122126
-
122127
- if (browserCallbacks .size)
122128
- {
122129
- for (const callback of Utility_MapUtilities .values (values, browserCallbacks))
122130
- callback (event);
122131
- }
122132
- };
122133
- })(),
121987
+ for (const callback of Utility_MapUtilities .values (this [_browserCallbacks] .get (event)))
121988
+ callback (event);
121989
+ },
122134
121990
  importDocument (dom)
122135
121991
  {
122136
121992
  const
@@ -122315,23 +122171,13 @@ Object .assign (Object .setPrototypeOf (X3DBrowser .prototype, Browser_X3DBrowse
122315
122171
 
122316
122172
  viewpointNode ._set_bind = true;
122317
122173
  },
122318
- addRoute (fromNode, fromEventOut, toNode, toEventIn)
122174
+ addRoute (sourceNode, sourceField, destinationNode, destinationField)
122319
122175
  {
122320
- this .currentScene .addRoute (fromNode, fromEventOut, toNode, toEventIn);
122176
+ this .currentScene .addRoute (sourceNode, sourceField, destinationNode, destinationField);
122321
122177
  },
122322
- deleteRoute (fromNode, fromEventOut, toNode, toEventIn)
122178
+ deleteRoute (sourceNode, sourceField, destinationNode, destinationField)
122323
122179
  {
122324
- try
122325
- {
122326
- const route = this .currentScene .getRoute (fromNode, fromEventOut, toNode, toEventIn);
122327
-
122328
- if (route)
122329
- this .currentScene .deleteRoute (route);
122330
- }
122331
- catch (error)
122332
- {
122333
- console .error (error);
122334
- }
122180
+ this .currentScene .deleteRoute (sourceNode, sourceField, destinationNode, destinationField);
122335
122181
  },
122336
122182
  beginUpdate ()
122337
122183
  {
@@ -122483,7 +122329,7 @@ const X3DBrowser_default_ = X3DBrowser;
122483
122329
  x_ite_Namespace .add ("X3DBrowser", "x_ite/Browser/X3DBrowser", X3DBrowser_default_);
122484
122330
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
122485
122331
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvasElement.js
122486
- /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(239);
122332
+ /* provided dependency */ var X3DCanvasElement_$ = __webpack_require__(484);
122487
122333
  /*******************************************************************************
122488
122334
  *
122489
122335
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -122615,8 +122461,8 @@ const X3DCanvasElement_default_ = X3DCanvasElement;
122615
122461
  x_ite_Namespace .add ("X3DCanvasElement", "x_ite/X3DCanvasElement", X3DCanvasElement_default_);
122616
122462
  /* harmony default export */ const x_ite_X3DCanvasElement = (X3DCanvasElement_default_);
122617
122463
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
122618
- /* provided dependency */ var jquery_$ = __webpack_require__(239);
122619
- /* provided dependency */ var pako = __webpack_require__(102);
122464
+ /* provided dependency */ var jquery_$ = __webpack_require__(484);
122465
+ /* provided dependency */ var pako = __webpack_require__(251);
122620
122466
  Object .assign (jquery_$,
122621
122467
  {
122622
122468
  decodeText (input)
@@ -122693,14 +122539,14 @@ const jquery_default_ = jquery_$;
122693
122539
  x_ite_Namespace .add ("jquery", "lib/jquery", jquery_default_);
122694
122540
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
122695
122541
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
122696
- /* provided dependency */ var libtess_libtess = __webpack_require__(488);
122542
+ /* provided dependency */ var libtess_libtess = __webpack_require__(53);
122697
122543
  const libtess_default_ = libtess_libtess;
122698
122544
  ;
122699
122545
 
122700
122546
  x_ite_Namespace .add ("libtess", "lib/libtess", libtess_default_);
122701
122547
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
122702
122548
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
122703
- /* provided dependency */ var X3D_$ = __webpack_require__(239);
122549
+ /* provided dependency */ var X3D_$ = __webpack_require__(484);
122704
122550
  /*******************************************************************************
122705
122551
  *
122706
122552
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -123008,7 +122854,7 @@ Object .assign (X3D,
123008
122854
 
123009
122855
  // Assign X3D to global namespace.
123010
122856
 
123011
- window [Symbol .for ("X_ITE.X3D-9.1.10")] = x_ite_X3D;
122857
+ window [Symbol .for ("X_ITE.X3D-9.2.0")] = x_ite_X3D;
123012
122858
 
123013
122859
  customElements .define ("x3d-canvas", x_ite_X3DCanvasElement);
123014
122860