x_ite 8.3.3 → 8.4.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 (85) 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 +13 -13
  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 +21 -19
  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 +24 -24
  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 +19 -19
  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 +28 -28
  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/TextureProjector.js +14 -14
  34. package/dist/assets/components/TextureProjector.min.js +1 -1
  35. package/dist/assets/components/Texturing3D.js +27 -27
  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 +9 -9
  40. package/dist/assets/components/X_ITE.min.js +1 -1
  41. package/dist/x_ite.css +1 -1
  42. package/dist/x_ite.js +2710 -291
  43. package/dist/x_ite.min.js +1 -1
  44. package/dist/x_ite.zip +0 -0
  45. package/docs/_config.yml +2 -2
  46. package/docs/_posts/reference/field-services-and-objects.md +24 -4
  47. package/docs/_posts/reference/prototype-services.md +24 -4
  48. package/docs/_posts/reference/scene-services.md +9 -4
  49. package/docs/_posts/what's-new.md +11 -1
  50. package/package.json +1 -1
  51. package/src/x_ite/Base/X3DInfoArray.js +26 -0
  52. package/src/x_ite/Base/X3DObject.js +1 -1
  53. package/src/x_ite/Base/X3DObjectArrayField.js +44 -0
  54. package/src/x_ite/Base/X3DTypedArrayField.js +74 -0
  55. package/src/x_ite/Browser/VERSION.js +1 -1
  56. package/src/x_ite/Components/Core/X3DNode.js +486 -23
  57. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +371 -10
  58. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +3 -1
  59. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +6 -3
  60. package/src/x_ite/Configuration/ComponentInfo.js +32 -0
  61. package/src/x_ite/Configuration/ProfileInfo.js +4 -0
  62. package/src/x_ite/Configuration/UnitInfo.js +46 -0
  63. package/src/x_ite/Execution/X3DExecutionContext.js +54 -0
  64. package/src/x_ite/Execution/X3DExportedNode.js +52 -0
  65. package/src/x_ite/Execution/X3DImportedNode.js +164 -0
  66. package/src/x_ite/Execution/X3DScene.js +339 -0
  67. package/src/x_ite/Fields/ArrayFields.js +48 -0
  68. package/src/x_ite/Fields/SFBool.js +8 -0
  69. package/src/x_ite/Fields/SFColor.js +26 -1
  70. package/src/x_ite/Fields/SFColorRGBA.js +2 -0
  71. package/src/x_ite/Fields/SFDouble.js +10 -0
  72. package/src/x_ite/Fields/SFFloat.js +10 -0
  73. package/src/x_ite/Fields/SFImage.js +61 -1
  74. package/src/x_ite/Fields/SFInt32.js +11 -3
  75. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +26 -1
  76. package/src/x_ite/Fields/SFNode.js +40 -25
  77. package/src/x_ite/Fields/SFRotation.js +28 -3
  78. package/src/x_ite/Fields/SFString.js +8 -0
  79. package/src/x_ite/Fields/SFTime.js +8 -0
  80. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +30 -4
  81. package/src/x_ite/InputOutput/Generator.js +62 -1
  82. package/src/x_ite/Parser/JSONParser.js +1 -1
  83. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +123 -0
  84. package/src/x_ite/Prototype/X3DProtoDeclaration.js +228 -0
  85. package/src/x_ite/Routing/X3DRoute.js +67 -0
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v8.3.3 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v8.4.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,11 +11,11 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 99:
14
+ /***/ 726:
15
15
  /***/ (function(module, exports, __webpack_require__) {
16
16
 
17
17
  "use strict";
18
- /* provided dependency */ var jQuery = __webpack_require__(93);
18
+ /* provided dependency */ var jQuery = __webpack_require__(718);
19
19
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
20
20
 
21
21
  /**
@@ -387,10 +387,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
387
387
 
388
388
  /***/ }),
389
389
 
390
- /***/ 342:
390
+ /***/ 967:
391
391
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
392
392
 
393
- /* provided dependency */ var jQuery = __webpack_require__(93);
393
+ /* provided dependency */ var jQuery = __webpack_require__(718);
394
394
  /**
395
395
  * @preserve jquery.fullscreen 1.1.5
396
396
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -586,7 +586,7 @@ installFullScreenHandlers();
586
586
 
587
587
  /***/ }),
588
588
 
589
- /***/ 442:
589
+ /***/ 248:
590
590
  /***/ ((module, exports, __webpack_require__) => {
591
591
 
592
592
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -600,7 +600,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
600
600
  (function (factory) {
601
601
  if ( true ) {
602
602
  // AMD. Register as an anonymous module.
603
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(93)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
603
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(718)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
604
604
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
605
605
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
606
606
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -811,7 +811,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
811
811
 
812
812
  /***/ }),
813
813
 
814
- /***/ 93:
814
+ /***/ 718:
815
815
  /***/ (function(module, exports) {
816
816
 
817
817
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11812,7 +11812,7 @@ return jQuery;
11812
11812
 
11813
11813
  /***/ }),
11814
11814
 
11815
- /***/ 461:
11815
+ /***/ 941:
11816
11816
  /***/ ((module) => {
11817
11817
 
11818
11818
  /**
@@ -16591,7 +16591,7 @@ if (true) {
16591
16591
 
16592
16592
  /***/ }),
16593
16593
 
16594
- /***/ 777:
16594
+ /***/ 513:
16595
16595
  /***/ (function(__unused_webpack_module, exports) {
16596
16596
 
16597
16597
 
@@ -20212,7 +20212,7 @@ Generator .prototype =
20212
20212
  this .tidyBreak = "\n";
20213
20213
  this .tidySpace = " ";
20214
20214
  this .indentChar = " ";
20215
- this .listEnclosure = "";
20215
+ this .listEnclosure = " ";
20216
20216
  this .listBreak = " ";
20217
20217
  this .listIndentChar = "";
20218
20218
  this .attribBreak = " ";
@@ -20286,11 +20286,15 @@ Generator .prototype =
20286
20286
  {
20287
20287
  this .indent += this .indentChar;
20288
20288
  this .listIndent += this .listIndentChar;
20289
+
20290
+ return "";
20289
20291
  },
20290
20292
  DecIndent: function ()
20291
20293
  {
20292
20294
  this .indent = this .indent .slice (0, this .indent .length - this .indentChar .length);
20293
20295
  this .listIndent = this .listIndent .slice (0, this .listIndent .length - this .listIndentChar .length);
20296
+
20297
+ return "";
20294
20298
  },
20295
20299
  PadRight: function (string, pad)
20296
20300
  {
@@ -20616,6 +20620,63 @@ Generator .prototype =
20616
20620
  {
20617
20621
  return string .replace (/\]\]\>/g, "\\]\\]\\>");
20618
20622
  },
20623
+ JSONEncode: function (string)
20624
+ {
20625
+ let result = '"';
20626
+
20627
+ for (const character of string)
20628
+ {
20629
+ switch (character)
20630
+ {
20631
+ case '\r':
20632
+ {
20633
+ result += "\\r";
20634
+ break;
20635
+ }
20636
+ case '\n':
20637
+ {
20638
+ result += "\\n";
20639
+ break;
20640
+ }
20641
+ case '\t':
20642
+ {
20643
+ result += "\\t";
20644
+ break;
20645
+ }
20646
+ case '"':
20647
+ {
20648
+ result += "\\\"";
20649
+ break;
20650
+ }
20651
+ case '\\':
20652
+ {
20653
+ result += "\\\\";
20654
+ break;
20655
+ }
20656
+ default:
20657
+ {
20658
+ result += character;
20659
+ break;
20660
+ }
20661
+ }
20662
+ }
20663
+
20664
+ result += '"';
20665
+
20666
+ return result;
20667
+ },
20668
+ JSONNumber: function (value)
20669
+ {
20670
+ switch (value)
20671
+ {
20672
+ case "NaN":
20673
+ case "Infinity":
20674
+ case "-Infinity":
20675
+ return '"' + value + '"';
20676
+ default:
20677
+ return value;
20678
+ }
20679
+ },
20619
20680
  };
20620
20681
 
20621
20682
  for (const key of Reflect .ownKeys (Generator .prototype))
@@ -20887,7 +20948,7 @@ X3DObject .prototype =
20887
20948
  if (options .scene)
20888
20949
  generator .PushExecutionContext (options .scene);
20889
20950
 
20890
- this .toVRMLStream (generator); // TODO.
20951
+ this .toJSONStream (generator);
20891
20952
 
20892
20953
  return generator .string;
20893
20954
  },
@@ -21646,6 +21707,32 @@ X3DInfoArray .prototype = {
21646
21707
  }
21647
21708
  }
21648
21709
  },
21710
+ toJSONStream: function (generator, comma)
21711
+ {
21712
+ let lastProperty = false;
21713
+
21714
+ for (const value of this [_array])
21715
+ {
21716
+ try
21717
+ {
21718
+ value .toJSONStream (generator, true);
21719
+
21720
+ generator .string += ',';
21721
+ generator .string += generator .TidyBreak ();
21722
+
21723
+ lastProperty = true;
21724
+ }
21725
+ catch (error)
21726
+ {
21727
+ // console .error (error);
21728
+ }
21729
+ }
21730
+
21731
+ if (lastProperty && !comma)
21732
+ generator .string = generator .string .replace (/,(\s*)$/s, "$1");
21733
+
21734
+ return lastProperty;
21735
+ },
21649
21736
  };
21650
21737
 
21651
21738
  for (const key of Reflect .ownKeys (X3DInfoArray .prototype))
@@ -22336,6 +22423,14 @@ SFBool .prototype = Object .assign (Object .create (Base_X3DField.prototype),
22336
22423
  {
22337
22424
  generator .string += this .getValue () ? "true" : "false";
22338
22425
  },
22426
+ toJSONStream: function (generator)
22427
+ {
22428
+ this .toJSONStreamValue (generator);
22429
+ },
22430
+ toJSONStreamValue: function (generator)
22431
+ {
22432
+ generator .string += this .getValue () ? "true" : "false";
22433
+ },
22339
22434
  });
22340
22435
 
22341
22436
  for (const key of Reflect .ownKeys (SFBool .prototype))
@@ -23009,7 +23104,7 @@ SFColor .prototype = Object .assign (Object .create (Base_X3DField.prototype),
23009
23104
  for (let i = 0; i < last; ++ i)
23010
23105
  {
23011
23106
  generator .string += generator .Precision (value [i]);
23012
- generator .string += generator .Space ();
23107
+ generator .string += generator .TidySpace ();
23013
23108
  }
23014
23109
 
23015
23110
  generator .string += generator .Precision (value [last]);
@@ -23022,6 +23117,31 @@ SFColor .prototype = Object .assign (Object .create (Base_X3DField.prototype),
23022
23117
  {
23023
23118
  this .toStream (generator);
23024
23119
  },
23120
+ toJSONStream: function (generator)
23121
+ {
23122
+ generator .string += '[';
23123
+ generator .string += generator .TidySpace ();
23124
+
23125
+ this .toJSONStreamValue (generator);
23126
+
23127
+ generator .string += generator .TidySpace ();
23128
+ generator .string += ']';
23129
+ },
23130
+ toJSONStreamValue: function (generator)
23131
+ {
23132
+ const
23133
+ value = this .getValue (),
23134
+ last = value .length - 1;
23135
+
23136
+ for (let i = 0; i < last; ++ i)
23137
+ {
23138
+ generator .string += generator .JSONNumber (generator .Precision (value [i]));
23139
+ generator .string += ',';
23140
+ generator .string += generator .TidySpace ();
23141
+ }
23142
+
23143
+ generator .string += generator .JSONNumber (generator .Precision (value [last]));
23144
+ },
23025
23145
  });
23026
23146
 
23027
23147
  for (const key of Reflect .ownKeys (SFColor .prototype))
@@ -23424,6 +23544,8 @@ SFColorRGBA .prototype = Object .assign (Object .create (Base_X3DField.prototype
23424
23544
  toStream: Fields_SFColor.prototype.toStream,
23425
23545
  toVRMLStream: Fields_SFColor.prototype.toVRMLStream,
23426
23546
  toXMLStream: Fields_SFColor.prototype.toXMLStream,
23547
+ toJSONStream: Fields_SFColor.prototype.toJSONStream,
23548
+ toJSONStreamValue: Fields_SFColor.prototype.toJSONStreamValue,
23427
23549
  });
23428
23550
 
23429
23551
  for (const key of Reflect .ownKeys (SFColorRGBA .prototype))
@@ -23599,6 +23721,16 @@ SFDouble .prototype = Object .assign (Object .create (Base_X3DField.prototype),
23599
23721
  {
23600
23722
  this .toStream (generator);
23601
23723
  },
23724
+ toJSONStream: function (generator)
23725
+ {
23726
+ this .toJSONStreamValue (generator);
23727
+ },
23728
+ toJSONStreamValue: function (generator)
23729
+ {
23730
+ const category = generator .Unit (this .getUnit ());
23731
+
23732
+ generator .string += generator .JSONNumber (generator .DoublePrecision (generator .ToUnit (category, this .getValue ())));
23733
+ },
23602
23734
  });
23603
23735
 
23604
23736
  for (const key of Reflect .ownKeys (SFDouble .prototype))
@@ -23703,6 +23835,16 @@ SFFloat .prototype = Object .assign (Object .create (Base_X3DField.prototype),
23703
23835
  {
23704
23836
  this .toStream (generator);
23705
23837
  },
23838
+ toJSONStream: function (generator)
23839
+ {
23840
+ this .toJSONStreamValue (generator);
23841
+ },
23842
+ toJSONStreamValue: function (generator)
23843
+ {
23844
+ const category = generator .Unit (this .getUnit ());
23845
+
23846
+ generator .string += generator .JSONNumber (generator .Precision (generator .ToUnit (category, this .getValue ())));
23847
+ },
23706
23848
  });
23707
23849
 
23708
23850
  for (const key of Reflect .ownKeys (SFFloat .prototype))
@@ -23793,9 +23935,9 @@ SFInt32 .prototype = Object .assign (Object .create (Base_X3DField.prototype),
23793
23935
  Base_X3DField.prototype.set.call (this, ~~value);
23794
23936
  },
23795
23937
  valueOf: Base_X3DField.prototype.getValue,
23796
- toStream: function (generator, base)
23938
+ toStream: function (generator)
23797
23939
  {
23798
- generator .string += this .getValue () .toString (base);
23940
+ generator .string += this .getValue () .toString ();
23799
23941
  },
23800
23942
  toVRMLStream: function (generator)
23801
23943
  {
@@ -23803,7 +23945,15 @@ SFInt32 .prototype = Object .assign (Object .create (Base_X3DField.prototype),
23803
23945
  },
23804
23946
  toXMLStream: function (generator)
23805
23947
  {
23806
- generator .string += this .getValue () .toString ();
23948
+ this .toStream (generator);
23949
+ },
23950
+ toJSONStream: function (generator)
23951
+ {
23952
+ this .toStream (generator);
23953
+ },
23954
+ toJSONStreamValue: function (generator)
23955
+ {
23956
+ this .toStream (generator);
23807
23957
  },
23808
23958
  });
23809
23959
 
@@ -23964,7 +24114,7 @@ function SFMatrixPrototypeTemplate (TypeName, Type, Matrix, SFVec, double)
23964
24114
  for (let i = 0; i < last; ++ i)
23965
24115
  {
23966
24116
  generator .string += generator [_formatter] (value [i]);
23967
- generator .string += generator .Space ();
24117
+ generator .string += generator .TidySpace ();
23968
24118
  }
23969
24119
 
23970
24120
  generator .string += generator [_formatter] (value [last]);
@@ -23977,194 +24127,245 @@ function SFMatrixPrototypeTemplate (TypeName, Type, Matrix, SFVec, double)
23977
24127
  {
23978
24128
  this .toStream (generator);
23979
24129
  },
23980
- });
23981
- }
23982
-
23983
- const SFMatrixPrototypeTemplate_default_ = SFMatrixPrototypeTemplate;
23984
- ;
23985
-
23986
- x_ite_Namespace.set ("x_ite/Fields/SFMatrixPrototypeTemplate", SFMatrixPrototypeTemplate_default_);
23987
- /* harmony default export */ const Fields_SFMatrixPrototypeTemplate = (SFMatrixPrototypeTemplate_default_);
23988
- ;// CONCATENATED MODULE: ./src/x_ite/Fields/SFVecPrototypeTemplate.js
23989
- /*******************************************************************************
23990
- *
23991
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
23992
- *
23993
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
23994
- *
23995
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
23996
- *
23997
- * The copyright notice above does not evidence any actual of intended
23998
- * publication of such source code, and is an unpublished work by create3000.
23999
- * This material contains CONFIDENTIAL INFORMATION that is the property of
24000
- * create3000.
24001
- *
24002
- * No permission is granted to copy, distribute, or create derivative works from
24003
- * the contents of this software, in whole or in part, without the prior written
24004
- * permission of create3000.
24005
- *
24006
- * NON-MILITARY USE ONLY
24007
- *
24008
- * All create3000 software are effectively free software with a non-military use
24009
- * restriction. It is free. Well commented source is provided. You may reuse the
24010
- * source in any way you please with the exception anything that uses it must be
24011
- * marked to indicate is contains 'non-military use only' components.
24012
- *
24013
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
24014
- *
24015
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
24016
- *
24017
- * This file is part of the X_ITE Project.
24018
- *
24019
- * X_ITE is free software: you can redistribute it and/or modify it under the
24020
- * terms of the GNU General Public License version 3 only, as published by the
24021
- * Free Software Foundation.
24022
- *
24023
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
24024
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
24025
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
24026
- * details (a copy is included in the LICENSE file that accompanied this code).
24027
- *
24028
- * You should have received a copy of the GNU General Public License version 3
24029
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
24030
- * copy of the GPLv3 License.
24031
- *
24032
- * For Silvio, Joy and Adi.
24033
- *
24034
- ******************************************************************************/
24035
-
24036
-
24130
+ toJSONStream: function (generator)
24131
+ {
24132
+ generator .string += '[';
24133
+ generator .string += generator .TidySpace ();
24037
24134
 
24038
- function SFVecPrototypeTemplate (TypeName, Type, ValueType, double)
24039
- {
24040
- const _formatter = double ? "DoublePrecision" : "Precision";
24135
+ this .toJSONStreamValue (generator);
24041
24136
 
24042
- return Object .assign (Object .create (Base_X3DField.prototype),
24043
- {
24044
- [Symbol .iterator]: function* ()
24045
- {
24046
- yield* this .getValue ();
24047
- },
24048
- getTypeName: function ()
24049
- {
24050
- return TypeName;
24051
- },
24052
- getType: function ()
24053
- {
24054
- return Type;
24055
- },
24056
- copy: function ()
24057
- {
24058
- return new (this .constructor) (this .getValue () .copy ());
24059
- },
24060
- equals: function (vector)
24061
- {
24062
- return this .getValue () .equals (vector .getValue ());
24063
- },
24064
- isDefaultValue: function ()
24065
- {
24066
- return this .getValue () .equals (ValueType .Zero);
24067
- },
24068
- set: function (value)
24069
- {
24070
- this .getValue () .assign (value);
24071
- },
24072
- abs: function ()
24073
- {
24074
- return new (this .constructor) (ValueType .abs (this .getValue ()));
24075
- },
24076
- add: function (vector)
24077
- {
24078
- return new (this .constructor) (ValueType .add (this .getValue (), vector .getValue ()));
24079
- },
24080
- distance: function (vector)
24081
- {
24082
- return this .getValue () .distance (vector .getValue ());
24083
- },
24084
- divide: function (value)
24085
- {
24086
- return new (this .constructor) (ValueType .divide (this .getValue (), value));
24087
- },
24088
- divVec: function (vector)
24089
- {
24090
- return new (this .constructor) (ValueType .divVec (this .getValue (), vector .getValue ()));
24091
- },
24092
- dot: function (vector)
24093
- {
24094
- return this .getValue () .dot (vector .getValue ());
24095
- },
24096
- inverse: function ()
24097
- {
24098
- return new (this .constructor) (ValueType .inverse (this .getValue ()));
24099
- },
24100
- length: function ()
24101
- {
24102
- return this .getValue () .magnitude ();
24103
- },
24104
- lerp: function (destination, t)
24105
- {
24106
- return new (this .constructor) (ValueType .lerp (this .getValue (), destination, t));
24107
- },
24108
- max: function (vector)
24109
- {
24110
- return new (this .constructor) (ValueType .max (this .getValue (), vector .getValue ()));
24111
- },
24112
- min: function (vector)
24113
- {
24114
- return new (this .constructor) (ValueType .min (this .getValue (), vector .getValue ()));
24115
- },
24116
- multiply: function (value)
24117
- {
24118
- return new (this .constructor) (ValueType .multiply (this .getValue (), value));
24119
- },
24120
- multVec: function (vector)
24121
- {
24122
- return new (this .constructor) (ValueType .multVec (this .getValue (), vector .getValue ()));
24123
- },
24124
- negate: function ()
24125
- {
24126
- return new (this .constructor) (ValueType .negate (this .getValue ()));
24127
- },
24128
- normalize: function (vector)
24129
- {
24130
- return new (this .constructor) (ValueType .normalize (this .getValue ()));
24131
- },
24132
- subtract: function (vector)
24133
- {
24134
- return new (this .constructor) (ValueType .subtract (this .getValue (), vector .getValue ()));
24137
+ generator .string += generator .TidySpace ();
24138
+ generator .string += ']';
24135
24139
  },
24136
- toStream: function (generator)
24140
+ toJSONStreamValue: function (generator)
24137
24141
  {
24138
24142
  const
24139
- value = this .getValue (),
24140
- category = generator .Unit (this .getUnit ()),
24141
- last = value .length - 1;
24143
+ value = this .getValue (),
24144
+ last = value .length - 1;
24142
24145
 
24143
24146
  for (let i = 0; i < last; ++ i)
24144
24147
  {
24145
- generator .string += generator [_formatter] (generator .ToUnit (category, value [i]));
24146
- generator .string += generator .Space ();
24148
+ generator .string += generator .JSONNumber (generator [_formatter] (value [i]));
24149
+ generator .string += ',';
24150
+ generator .string += generator .TidySpace ();
24147
24151
  }
24148
24152
 
24149
- generator .string += generator [_formatter] (generator .ToUnit (category, value [last]));
24150
- },
24151
- toVRMLStream: function (generator)
24152
- {
24153
- this .toStream (generator);
24154
- },
24155
- toXMLStream: function (generator)
24156
- {
24157
- this .toStream (generator);
24153
+ generator .string += generator .JSONNumber (generator [_formatter] (value [last]));
24158
24154
  },
24159
24155
  });
24160
24156
  }
24161
24157
 
24162
- const SFVecPrototypeTemplate_default_ = SFVecPrototypeTemplate;
24158
+ const SFMatrixPrototypeTemplate_default_ = SFMatrixPrototypeTemplate;
24163
24159
  ;
24164
24160
 
24165
- x_ite_Namespace.set ("x_ite/Fields/SFVecPrototypeTemplate", SFVecPrototypeTemplate_default_);
24166
- /* harmony default export */ const Fields_SFVecPrototypeTemplate = (SFVecPrototypeTemplate_default_);
24167
- ;// CONCATENATED MODULE: ./src/standard/Math/Numbers/Vector2.js
24161
+ x_ite_Namespace.set ("x_ite/Fields/SFMatrixPrototypeTemplate", SFMatrixPrototypeTemplate_default_);
24162
+ /* harmony default export */ const Fields_SFMatrixPrototypeTemplate = (SFMatrixPrototypeTemplate_default_);
24163
+ ;// CONCATENATED MODULE: ./src/x_ite/Fields/SFVecPrototypeTemplate.js
24164
+ /*******************************************************************************
24165
+ *
24166
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
24167
+ *
24168
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
24169
+ *
24170
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
24171
+ *
24172
+ * The copyright notice above does not evidence any actual of intended
24173
+ * publication of such source code, and is an unpublished work by create3000.
24174
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
24175
+ * create3000.
24176
+ *
24177
+ * No permission is granted to copy, distribute, or create derivative works from
24178
+ * the contents of this software, in whole or in part, without the prior written
24179
+ * permission of create3000.
24180
+ *
24181
+ * NON-MILITARY USE ONLY
24182
+ *
24183
+ * All create3000 software are effectively free software with a non-military use
24184
+ * restriction. It is free. Well commented source is provided. You may reuse the
24185
+ * source in any way you please with the exception anything that uses it must be
24186
+ * marked to indicate is contains 'non-military use only' components.
24187
+ *
24188
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
24189
+ *
24190
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
24191
+ *
24192
+ * This file is part of the X_ITE Project.
24193
+ *
24194
+ * X_ITE is free software: you can redistribute it and/or modify it under the
24195
+ * terms of the GNU General Public License version 3 only, as published by the
24196
+ * Free Software Foundation.
24197
+ *
24198
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
24199
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
24200
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
24201
+ * details (a copy is included in the LICENSE file that accompanied this code).
24202
+ *
24203
+ * You should have received a copy of the GNU General Public License version 3
24204
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
24205
+ * copy of the GPLv3 License.
24206
+ *
24207
+ * For Silvio, Joy and Adi.
24208
+ *
24209
+ ******************************************************************************/
24210
+
24211
+
24212
+
24213
+ function SFVecPrototypeTemplate (TypeName, Type, ValueType, double)
24214
+ {
24215
+ const _formatter = double ? "DoublePrecision" : "Precision";
24216
+
24217
+ return Object .assign (Object .create (Base_X3DField.prototype),
24218
+ {
24219
+ [Symbol .iterator]: function* ()
24220
+ {
24221
+ yield* this .getValue ();
24222
+ },
24223
+ getTypeName: function ()
24224
+ {
24225
+ return TypeName;
24226
+ },
24227
+ getType: function ()
24228
+ {
24229
+ return Type;
24230
+ },
24231
+ copy: function ()
24232
+ {
24233
+ return new (this .constructor) (this .getValue () .copy ());
24234
+ },
24235
+ equals: function (vector)
24236
+ {
24237
+ return this .getValue () .equals (vector .getValue ());
24238
+ },
24239
+ isDefaultValue: function ()
24240
+ {
24241
+ return this .getValue () .equals (ValueType .Zero);
24242
+ },
24243
+ set: function (value)
24244
+ {
24245
+ this .getValue () .assign (value);
24246
+ },
24247
+ abs: function ()
24248
+ {
24249
+ return new (this .constructor) (ValueType .abs (this .getValue ()));
24250
+ },
24251
+ add: function (vector)
24252
+ {
24253
+ return new (this .constructor) (ValueType .add (this .getValue (), vector .getValue ()));
24254
+ },
24255
+ distance: function (vector)
24256
+ {
24257
+ return this .getValue () .distance (vector .getValue ());
24258
+ },
24259
+ divide: function (value)
24260
+ {
24261
+ return new (this .constructor) (ValueType .divide (this .getValue (), value));
24262
+ },
24263
+ divVec: function (vector)
24264
+ {
24265
+ return new (this .constructor) (ValueType .divVec (this .getValue (), vector .getValue ()));
24266
+ },
24267
+ dot: function (vector)
24268
+ {
24269
+ return this .getValue () .dot (vector .getValue ());
24270
+ },
24271
+ inverse: function ()
24272
+ {
24273
+ return new (this .constructor) (ValueType .inverse (this .getValue ()));
24274
+ },
24275
+ length: function ()
24276
+ {
24277
+ return this .getValue () .magnitude ();
24278
+ },
24279
+ lerp: function (destination, t)
24280
+ {
24281
+ return new (this .constructor) (ValueType .lerp (this .getValue (), destination, t));
24282
+ },
24283
+ max: function (vector)
24284
+ {
24285
+ return new (this .constructor) (ValueType .max (this .getValue (), vector .getValue ()));
24286
+ },
24287
+ min: function (vector)
24288
+ {
24289
+ return new (this .constructor) (ValueType .min (this .getValue (), vector .getValue ()));
24290
+ },
24291
+ multiply: function (value)
24292
+ {
24293
+ return new (this .constructor) (ValueType .multiply (this .getValue (), value));
24294
+ },
24295
+ multVec: function (vector)
24296
+ {
24297
+ return new (this .constructor) (ValueType .multVec (this .getValue (), vector .getValue ()));
24298
+ },
24299
+ negate: function ()
24300
+ {
24301
+ return new (this .constructor) (ValueType .negate (this .getValue ()));
24302
+ },
24303
+ normalize: function (vector)
24304
+ {
24305
+ return new (this .constructor) (ValueType .normalize (this .getValue ()));
24306
+ },
24307
+ subtract: function (vector)
24308
+ {
24309
+ return new (this .constructor) (ValueType .subtract (this .getValue (), vector .getValue ()));
24310
+ },
24311
+ toStream: function (generator)
24312
+ {
24313
+ const
24314
+ value = this .getValue (),
24315
+ last = value .length - 1,
24316
+ category = generator .Unit (this .getUnit ());
24317
+
24318
+ for (let i = 0; i < last; ++ i)
24319
+ {
24320
+ generator .string += generator [_formatter] (generator .ToUnit (category, value [i]));
24321
+ generator .string += generator .TidySpace ();
24322
+ }
24323
+
24324
+ generator .string += generator [_formatter] (generator .ToUnit (category, value [last]));
24325
+ },
24326
+ toVRMLStream: function (generator)
24327
+ {
24328
+ this .toStream (generator);
24329
+ },
24330
+ toXMLStream: function (generator)
24331
+ {
24332
+ this .toStream (generator);
24333
+ },
24334
+ toJSONStream: function (generator)
24335
+ {
24336
+ generator .string += '[';
24337
+ generator .string += generator .TidySpace ();
24338
+
24339
+ this .toJSONStreamValue (generator);
24340
+
24341
+ generator .string += generator .TidySpace ();
24342
+ generator .string += ']';
24343
+ },
24344
+ toJSONStreamValue: function (generator)
24345
+ {
24346
+ const
24347
+ value = this .getValue (),
24348
+ last = value .length - 1,
24349
+ category = generator .Unit (this .getUnit ());
24350
+
24351
+ for (let i = 0; i < last; ++ i)
24352
+ {
24353
+ generator .string += generator .JSONNumber (generator [_formatter] (generator .ToUnit (category, value [i])));
24354
+ generator .string += ',';
24355
+ generator .string += generator .TidySpace ();
24356
+ }
24357
+
24358
+ generator .string += generator .JSONNumber (generator [_formatter] (generator .ToUnit (category, value [last])));
24359
+ },
24360
+ });
24361
+ }
24362
+
24363
+ const SFVecPrototypeTemplate_default_ = SFVecPrototypeTemplate;
24364
+ ;
24365
+
24366
+ x_ite_Namespace.set ("x_ite/Fields/SFVecPrototypeTemplate", SFVecPrototypeTemplate_default_);
24367
+ /* harmony default export */ const Fields_SFVecPrototypeTemplate = (SFVecPrototypeTemplate_default_);
24368
+ ;// CONCATENATED MODULE: ./src/standard/Math/Numbers/Vector2.js
24168
24369
  /*******************************************************************************
24169
24370
  *
24170
24371
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -29531,55 +29732,55 @@ SFNode .prototype = Object .assign (Object .create (Base_X3DField.prototype),
29531
29732
 
29532
29733
  return null;
29533
29734
  },
29534
- toStream: function (generator)
29735
+ toVRMLString: function (options = Object .prototype)
29535
29736
  {
29536
29737
  const
29537
- target = this [_target],
29538
- value = target .getValue ();
29738
+ generator = new InputOutput_Generator (options),
29739
+ value = this .getValue ();
29539
29740
 
29540
29741
  if (value)
29541
- value .toStream (generator);
29542
- else
29543
- generator .string += "NULL";
29742
+ generator .PushExecutionContext (value .getExecutionContext ());
29743
+
29744
+ this .toVRMLStream (generator);
29745
+
29746
+ return generator .string;
29544
29747
  },
29545
- toVRMLString: function (options)
29748
+ toXMLString: function (options = Object .prototype)
29546
29749
  {
29547
29750
  const
29548
29751
  generator = new InputOutput_Generator (options),
29549
- target = this [_target],
29550
- value = target .getValue ();
29752
+ value = this .getValue ();
29551
29753
 
29552
- generator .PushExecutionContext (value .getExecutionContext ());
29754
+ if (value)
29755
+ generator .PushExecutionContext (value .getExecutionContext ());
29553
29756
 
29554
- target .toVRMLStream (generator);
29757
+ this .toXMLStream (generator);
29555
29758
 
29556
29759
  return generator .string;
29557
29760
  },
29558
- toXMLString: function (options)
29761
+ toJSONString: function (options = Object .prototype)
29559
29762
  {
29560
29763
  const
29561
29764
  generator = new InputOutput_Generator (options),
29562
- target = this [_target],
29563
- value = target .getValue ();
29765
+ value = this .getValue ();
29564
29766
 
29565
- generator .PushExecutionContext (value .getExecutionContext ());
29767
+ if (value)
29768
+ generator .PushExecutionContext (value .getExecutionContext ());
29566
29769
 
29567
- target .toXMLStream (generator);
29770
+ this .toJSONStream (generator);
29568
29771
 
29569
29772
  return generator .string;
29570
29773
  },
29571
- toJSONString: function (options)
29774
+ toStream: function (generator)
29572
29775
  {
29573
29776
  const
29574
- generator = new InputOutput_Generator (options),
29575
- target = this [_target],
29576
- value = target .getValue ();
29577
-
29578
- generator .PushExecutionContext (value .getExecutionContext ());
29579
-
29580
- target .toJSONStream (generator);
29777
+ target = this [_target],
29778
+ value = target .getValue ();
29581
29779
 
29582
- return generator .string;
29780
+ if (value)
29781
+ value .toStream (generator);
29782
+ else
29783
+ generator .string += "NULL";
29583
29784
  },
29584
29785
  toVRMLStream: function (generator)
29585
29786
  {
@@ -29603,6 +29804,21 @@ SFNode .prototype = Object .assign (Object .create (Base_X3DField.prototype),
29603
29804
  else
29604
29805
  generator .string += "<!-- NULL -->";
29605
29806
  },
29807
+ toJSONStream: function (generator)
29808
+ {
29809
+ this .toJSONStreamValue (generator);
29810
+ },
29811
+ toJSONStreamValue: function (generator)
29812
+ {
29813
+ const
29814
+ target = this [_target],
29815
+ value = target .getValue ();
29816
+
29817
+ if (value)
29818
+ value .toJSONStream (generator);
29819
+ else
29820
+ generator .string += "null";
29821
+ },
29606
29822
  dispose: function ()
29607
29823
  {
29608
29824
  const
@@ -29784,11 +30000,11 @@ SFRotation .prototype = Object .assign (Object .create (Base_X3DField.prototype)
29784
30000
  const rotation = this .getValue ();
29785
30001
 
29786
30002
  generator .string += generator .DoublePrecision (rotation .x);
29787
- generator .string += generator .Space ();
30003
+ generator .string += generator .TidySpace ();
29788
30004
  generator .string += generator .DoublePrecision (rotation .y);
29789
- generator .string += generator .Space ();
30005
+ generator .string += generator .TidySpace ();
29790
30006
  generator .string += generator .DoublePrecision (rotation .z);
29791
- generator .string += generator .Space ();
30007
+ generator .string += generator .TidySpace ();
29792
30008
  generator .string += generator .DoublePrecision (generator .ToUnit ("angle", rotation .angle));
29793
30009
  },
29794
30010
  toVRMLStream: function (generator)
@@ -29799,6 +30015,31 @@ SFRotation .prototype = Object .assign (Object .create (Base_X3DField.prototype)
29799
30015
  {
29800
30016
  this .toStream (generator);
29801
30017
  },
30018
+ toJSONStream: function (generator)
30019
+ {
30020
+ generator .string += '[';
30021
+ generator .string += generator .TidySpace ();
30022
+
30023
+ this .toJSONStreamValue (generator);
30024
+
30025
+ generator .string += generator .TidySpace ();
30026
+ generator .string += ']';
30027
+ },
30028
+ toJSONStreamValue: function (generator)
30029
+ {
30030
+ const rotation = this .getValue ();
30031
+
30032
+ generator .string += generator .JSONNumber (generator .DoublePrecision (rotation .x));
30033
+ generator .string += ',';
30034
+ generator .string += generator .TidySpace ();
30035
+ generator .string += generator .JSONNumber (generator .DoublePrecision (rotation .y));
30036
+ generator .string += ',';
30037
+ generator .string += generator .TidySpace ();
30038
+ generator .string += generator .JSONNumber (generator .DoublePrecision (rotation .z));
30039
+ generator .string += ',';
30040
+ generator .string += generator .TidySpace ();
30041
+ generator .string += generator .JSONNumber (generator .DoublePrecision (generator .ToUnit ("angle", rotation .angle)));
30042
+ },
29802
30043
  });
29803
30044
 
29804
30045
  for (const key of Reflect .ownKeys (SFRotation .prototype))
@@ -29992,6 +30233,14 @@ SFString .prototype = Object .assign (Object .create (Base_X3DField.prototype),
29992
30233
  {
29993
30234
  generator .string += generator .XMLEncode (this .getValue ());
29994
30235
  },
30236
+ toJSONStream: function (generator)
30237
+ {
30238
+ this .toJSONStreamValue (generator)
30239
+ },
30240
+ toJSONStreamValue: function (generator)
30241
+ {
30242
+ generator .string += generator .JSONEncode (this .getValue ());
30243
+ },
29995
30244
  });
29996
30245
 
29997
30246
  for (const key of Reflect .ownKeys (SFString .prototype))
@@ -30104,6 +30353,14 @@ SFTime .prototype = Object .assign (Object .create (Base_X3DField.prototype),
30104
30353
  {
30105
30354
  this .toStream (generator);
30106
30355
  },
30356
+ toJSONStream: function (generator)
30357
+ {
30358
+ this .toJSONStreamValue (generator);
30359
+ },
30360
+ toJSONStreamValue: function (generator)
30361
+ {
30362
+ generator .string += generator .JSONNumber (generator .DoublePrecision (this .getValue ()));
30363
+ },
30107
30364
  });
30108
30365
 
30109
30366
  for (const key of Reflect .ownKeys (SFTime .prototype))
@@ -30910,6 +31167,50 @@ X3DObjectArrayField .prototype = Object .assign (Object .create (Base_X3DArrayFi
30910
31167
  generator .PopUnitCategory ();
30911
31168
  }
30912
31169
  },
31170
+ toJSONStream: function (generator)
31171
+ {
31172
+ const
31173
+ target = this [X3DObjectArrayField_target],
31174
+ length = target .length;
31175
+
31176
+ if (length)
31177
+ {
31178
+ const value = this .getValue ();
31179
+
31180
+ generator .PushUnitCategory (target .getUnit ());
31181
+
31182
+ generator .string += '[';
31183
+ generator .string += generator .ListBreak ();
31184
+ generator .string += generator .IncIndent ();
31185
+
31186
+ for (let i = 0, n = length - 1; i < n; ++ i)
31187
+ {
31188
+ generator .string += generator .ListIndent ();
31189
+
31190
+ value [i] .toJSONStreamValue (generator);
31191
+
31192
+ generator .string += ',';
31193
+ generator .string += generator .ListBreak ();
31194
+ }
31195
+
31196
+ generator .string += generator .ListIndent ();
31197
+
31198
+ value .at (-1) .toJSONStreamValue (generator);
31199
+
31200
+ generator .string += generator .ListBreak ();
31201
+ generator .string += generator .DecIndent ();
31202
+ generator .string += generator .ListIndent ();
31203
+ generator .string += ']';
31204
+
31205
+ generator .PopUnitCategory ();
31206
+ }
31207
+ else
31208
+ {
31209
+ generator .string += '[';
31210
+ generator .string += generator .TidySpace ();
31211
+ generator .string += ']';
31212
+ }
31213
+ },
30913
31214
  dispose: function ()
30914
31215
  {
30915
31216
  const
@@ -31784,6 +32085,80 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (Base_X3DArrayFie
31784
32085
  generator .PopUnitCategory ();
31785
32086
  }
31786
32087
  },
32088
+ toJSONStream: function (generator)
32089
+ {
32090
+ const
32091
+ target = this [X3DTypedArrayField_target],
32092
+ length = target .length;
32093
+
32094
+ if (length)
32095
+ {
32096
+ const
32097
+ array = target .getValue (),
32098
+ components = target .getComponents (),
32099
+ value = new (target .getSingleType ()) ();
32100
+
32101
+ generator .PushUnitCategory (target .getUnit ());
32102
+
32103
+ generator .string += '[';
32104
+ generator .string += generator .ListBreak ();
32105
+ generator .string += generator .IncIndent ();
32106
+
32107
+ if (components === 1)
32108
+ {
32109
+ for (let i = 0, n = length - 1; i < n; ++ i)
32110
+ {
32111
+ generator .string += generator .ListIndent ();
32112
+
32113
+ value .set (array [i * components]);
32114
+ value .toJSONStreamValue (generator);
32115
+
32116
+ generator .string += ',';
32117
+ generator .string += generator .ListBreak ();
32118
+ }
32119
+
32120
+ generator .string += generator .ListIndent ();
32121
+
32122
+ value .set (array [(length - 1) * components]);
32123
+ value .toJSONStreamValue (generator);
32124
+ }
32125
+ else
32126
+ {
32127
+ for (let i = 0, n = length - 1; i < n; ++ i)
32128
+ {
32129
+ generator .string += generator .ListIndent ();
32130
+
32131
+ for (let c = 0, first = i * components; c < components; ++ c, ++ first)
32132
+ value [c] = array [first];
32133
+
32134
+ value .toJSONStreamValue (generator);
32135
+
32136
+ generator .string += ',';
32137
+ generator .string += generator .ListBreak ();
32138
+ }
32139
+
32140
+ generator .string += generator .ListIndent ();
32141
+
32142
+ for (let c = 0, first = (length - 1) * components; c < components; ++ c, ++ first)
32143
+ value [c] = array [first];
32144
+
32145
+ value .toJSONStreamValue (generator);
32146
+ }
32147
+
32148
+ generator .string += generator .ListBreak ();
32149
+ generator .string += generator .DecIndent ();
32150
+ generator .string += generator .ListIndent ();
32151
+ generator .string += ']';
32152
+
32153
+ generator .PopUnitCategory ();
32154
+ }
32155
+ else
32156
+ {
32157
+ generator .string += '[';
32158
+ generator .string += generator .TidySpace ();
32159
+ generator .string += ']';
32160
+ }
32161
+ },
31787
32162
  dispose: function ()
31788
32163
  {
31789
32164
  Base_X3DArrayField.prototype.dispose.call (this [X3DTypedArrayField_target]);
@@ -32172,6 +32547,54 @@ MFNode .prototype = Object .assign (Object .create (Base_X3DObjectArrayField.pro
32172
32547
  generator .LeaveScope ();
32173
32548
  }
32174
32549
  },
32550
+ toJSONStream: function (generator)
32551
+ {
32552
+ const length = this .length;
32553
+
32554
+ if (length)
32555
+ {
32556
+ const array = this .getValue ();
32557
+
32558
+ generator .EnterScope ();
32559
+
32560
+ generator .string += '[';
32561
+ generator .string += generator .TidyBreak ();
32562
+ generator .string += generator .IncIndent ();
32563
+
32564
+ for (let i = 0, n = length - 1; i < n; ++ i)
32565
+ {
32566
+ generator .string += generator .Indent ();
32567
+
32568
+ if (array [i])
32569
+ array [i] .toJSONStreamValue (generator);
32570
+ else
32571
+ generator .string += 'null';
32572
+
32573
+ generator .string += ',';
32574
+ generator .string += generator .TidyBreak ();
32575
+ }
32576
+
32577
+ generator .string += generator .Indent ();
32578
+
32579
+ if (array .at (-1))
32580
+ array .at (-1) .toJSONStreamValue (generator);
32581
+ else
32582
+ generator .string += 'null';
32583
+
32584
+ generator .string += generator .TidyBreak ();
32585
+ generator .string += generator .DecIndent ();
32586
+ generator .string += generator .Indent ();
32587
+ generator .string += ']';
32588
+
32589
+ generator .LeaveScope ();
32590
+ }
32591
+ else
32592
+ {
32593
+ generator .string += '[';
32594
+ generator .string += generator .TidySpace ();
32595
+ generator .string += ']';
32596
+ }
32597
+ },
32175
32598
  dispose: function ()
32176
32599
  {
32177
32600
  this .resize (0);
@@ -32562,10 +32985,12 @@ SFImage .prototype = Object .assign (Object .create (Base_X3DField.prototype),
32562
32985
  {
32563
32986
  generator .string += generator .ListIndent ();
32564
32987
 
32988
+ const s = y * this .width;
32989
+
32565
32990
  for (let x = 0, w = this .width; x < w; ++ x)
32566
32991
  {
32567
32992
  generator .string += "0x";
32568
- generator .string += array [y * w + x] .toString (16);
32993
+ generator .string += array [x + s] .toString (16);
32569
32994
 
32570
32995
  if (x !== w - 1)
32571
32996
  generator .string += generator .Space ();
@@ -32585,6 +33010,64 @@ SFImage .prototype = Object .assign (Object .create (Base_X3DField.prototype),
32585
33010
  {
32586
33011
  this .toStream (generator);
32587
33012
  },
33013
+ toJSONStream: function (generator)
33014
+ {
33015
+ generator .string += '[';
33016
+ generator .string += generator .ListBreak ();
33017
+ generator .string += generator .IncIndent ();
33018
+ generator .string += generator .ListIndent ();
33019
+
33020
+ this .toJSONStreamValue (generator);
33021
+
33022
+ generator .string += generator .DecIndent ();
33023
+ generator .string += generator .ListBreak ();
33024
+ generator .string += generator .ListIndent ();
33025
+ generator .string += ']';
33026
+ },
33027
+ toJSONStreamValue: function (generator)
33028
+ {
33029
+ const
33030
+ array = this .array,
33031
+ length = array .length;
33032
+
33033
+ generator .string += this .width;
33034
+ generator .string += ',';
33035
+ generator .string += generator .TidySpace ();
33036
+ generator .string += this .height;
33037
+ generator .string += ',';
33038
+ generator .string += generator .TidySpace ();
33039
+ generator .string += this .comp;
33040
+ generator .string += ',';
33041
+
33042
+ if (this .width && this .height)
33043
+ {
33044
+ generator .string += generator .ListBreak ();
33045
+ generator .string += generator .IncIndent ();
33046
+
33047
+ for (let y = 0, h = this .height; y < h; ++ y)
33048
+ {
33049
+ generator .string += generator .ListIndent ();
33050
+
33051
+ const s = y * this .width;
33052
+
33053
+ for (let x = 0, w = this .width; x < w; ++ x)
33054
+ {
33055
+ generator .string += array [x + s];
33056
+
33057
+ if (x + s !== length - 1)
33058
+ generator .string += ',';
33059
+
33060
+ if (x !== w - 1)
33061
+ generator .string += generator .TidySpace ();
33062
+ }
33063
+
33064
+ if (y !== h - 1)
33065
+ generator .string += generator .ListBreak ();
33066
+ }
33067
+
33068
+ generator .string += generator .DecIndent ();
33069
+ }
33070
+ },
32588
33071
  });
32589
33072
 
32590
33073
  for (const key of Reflect .ownKeys (SFImage .prototype))
@@ -33484,7 +33967,7 @@ x_ite_Namespace.set ("x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
33484
33967
  *
33485
33968
  ******************************************************************************/
33486
33969
 
33487
- const VERSION_default_ = "8.3.3";
33970
+ const VERSION_default_ = "8.4.0";
33488
33971
  ;
33489
33972
 
33490
33973
  x_ite_Namespace.set ("x_ite/Browser/VERSION", VERSION_default_);
@@ -34211,7 +34694,7 @@ const gettext_default_ = gettext;
34211
34694
  x_ite_Namespace.set ("locale/gettext", gettext_default_);
34212
34695
  /* harmony default export */ const locale_gettext = (gettext_default_);
34213
34696
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
34214
- /* provided dependency */ var $ = __webpack_require__(93);
34697
+ /* provided dependency */ var $ = __webpack_require__(718);
34215
34698
  /*******************************************************************************
34216
34699
  *
34217
34700
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -35114,7 +35597,7 @@ const RenderingProperties_default_ = RenderingProperties;
35114
35597
  x_ite_Namespace.set ("x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
35115
35598
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
35116
35599
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
35117
- /* provided dependency */ var Notification_$ = __webpack_require__(93);
35600
+ /* provided dependency */ var Notification_$ = __webpack_require__(718);
35118
35601
  /*******************************************************************************
35119
35602
  *
35120
35603
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -35236,8 +35719,8 @@ const Notification_default_ = Notification;
35236
35719
  x_ite_Namespace.set ("x_ite/Browser/Core/Notification", Notification_default_);
35237
35720
  /* harmony default export */ const Core_Notification = (Notification_default_);
35238
35721
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
35239
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(342);
35240
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(93);
35722
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(967);
35723
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(718);
35241
35724
  /*******************************************************************************
35242
35725
  *
35243
35726
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -36537,7 +37020,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36537
37020
  index = 0,
36538
37021
  initializableReference = false;
36539
37022
 
36540
- field .getReferences () .forEach (function (reference)
37023
+ for (const reference of field .getReferences ())
36541
37024
  {
36542
37025
  initializableReference = initializableReference || reference .isInitializable ();
36543
37026
 
@@ -36558,7 +37041,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36558
37041
 
36559
37042
  if (index !== field .getReferences () .size)
36560
37043
  generator .string += generator .Break ();
36561
- });
37044
+ }
36562
37045
 
36563
37046
  if (field .getAccessType () === Base_X3DConstants.inputOutput && !initializableReference && !field .isDefaultValue ())
36564
37047
  {
@@ -36600,7 +37083,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36600
37083
  index = 0,
36601
37084
  initializableReference = false;
36602
37085
 
36603
- field .getReferences () .forEach (function (reference)
37086
+ for (const reference of field .getReferences ())
36604
37087
  {
36605
37088
  initializableReference = initializableReference || reference .isInitializable ();
36606
37089
 
@@ -36617,7 +37100,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36617
37100
 
36618
37101
  if (index !== field .getReferences () .size)
36619
37102
  generator .string += generator .Break ();
36620
- });
37103
+ }
36621
37104
 
36622
37105
  if (field .getAccessType () === Base_X3DConstants.inputOutput && !initializableReference && !this .isDefaultValue (field))
36623
37106
  {
@@ -36726,14 +37209,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36726
37209
  {
36727
37210
  if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
36728
37211
  {
36729
- let initializableReference = false;
36730
-
36731
- field .getReferences () .forEach (function (fieldReference)
36732
- {
36733
- initializableReference = initializableReference || fieldReference .isInitializable ();
36734
- });
36735
-
36736
- if (!initializableReference)
37212
+ if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
36737
37213
  mustOutputValue = !this .isDefaultValue (field);
36738
37214
  }
36739
37215
  }
@@ -36818,17 +37294,13 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36818
37294
 
36819
37295
  let mustOutputValue = false;
36820
37296
 
36821
- if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
37297
+ if (generator .ExecutionContext ())
36822
37298
  {
36823
- let initializableReference = false;
36824
-
36825
- field .getReferences () .forEach (function (fieldReference)
37299
+ if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
36826
37300
  {
36827
- initializableReference = initializableReference || fieldReference .isInitializable ();
36828
- });
36829
-
36830
- if (!initializableReference)
36831
- mustOutputValue = true;
37301
+ if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
37302
+ mustOutputValue = !this .isDefaultValue (field);
37303
+ }
36832
37304
  }
36833
37305
 
36834
37306
  if ((field .getReferences () .size === 0 || !generator .ExecutionContext ()) || sharedNode || mustOutputValue)
@@ -36908,7 +37380,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36908
37380
  {
36909
37381
  const protoFields = field .getReferences ();
36910
37382
 
36911
- protoFields .forEach (function (protoField)
37383
+ for (const protoField of protoFields)
36912
37384
  {
36913
37385
  generator .string += generator .Indent ();
36914
37386
  generator .string += "<connect";
@@ -36922,7 +37394,7 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36922
37394
  generator .string += "'";
36923
37395
  generator .string += "/>";
36924
37396
  generator .string += generator .TidyBreak ();
36925
- });
37397
+ }
36926
37398
  }
36927
37399
 
36928
37400
  generator .DecIndent ();
@@ -36964,6 +37436,480 @@ X3DNode .prototype = Object .assign (Object .create (Base_X3DBaseNode.prototype)
36964
37436
 
36965
37437
  generator .LeaveScope ();
36966
37438
  },
37439
+ toJSONStream: function (generator)
37440
+ {
37441
+ try
37442
+ {
37443
+ const sharedNode = generator .IsSharedNode (this);
37444
+
37445
+ generator .EnterScope ();
37446
+
37447
+ const name = generator .Name (this);
37448
+
37449
+ // USE name
37450
+
37451
+ if (name .length)
37452
+ {
37453
+ if (generator .ExistsNode (this))
37454
+ {
37455
+ generator .string += '{';
37456
+ generator .string += generator .TidySpace ();
37457
+ generator .string += '"';
37458
+ generator .string += this .getTypeName ();
37459
+ generator .string += '"';
37460
+ generator .string += ':';
37461
+ generator .string += generator .TidyBreak ();
37462
+ generator .string += generator .IncIndent ();
37463
+ generator .string += generator .Indent ();
37464
+ generator .string += '{';
37465
+ generator .string += generator .TidyBreak ();
37466
+ generator .string += generator .IncIndent ();
37467
+ generator .string += generator .Indent ();
37468
+ generator .string += '"';
37469
+ generator .string += "@USE";
37470
+ generator .string += '"';
37471
+ generator .string += ':';
37472
+ generator .string += generator .TidySpace ();
37473
+ generator .string += generator .JSONEncode (name);
37474
+ generator .string += generator .TidyBreak ();
37475
+ generator .string += generator .DecIndent ();
37476
+ generator .string += generator .Indent ();
37477
+ generator .string += '}';
37478
+ generator .string += generator .TidyBreak ();
37479
+ generator .string += generator .DecIndent ();
37480
+ generator .string += generator .Indent ();
37481
+ generator .string += '}';
37482
+
37483
+ generator .LeaveScope ();
37484
+ return;
37485
+ }
37486
+ }
37487
+
37488
+ // Type name
37489
+
37490
+ generator .string += '{';
37491
+ generator .string += generator .TidySpace ();
37492
+ generator .string += '"';
37493
+ generator .string += this .getTypeName ();
37494
+ generator .string += '"';
37495
+ generator .string += ':';
37496
+ generator .string += generator .TidyBreak ();
37497
+ generator .string += generator .IncIndent ();
37498
+ generator .string += generator .Indent ();
37499
+ generator .string += '{';
37500
+ generator .string += generator .TidyBreak ();
37501
+ generator .string += generator .IncIndent ();
37502
+
37503
+
37504
+ // DEF name
37505
+
37506
+ if (name .length)
37507
+ {
37508
+ generator .AddNode (this);
37509
+
37510
+ generator .string += generator .Indent ();
37511
+ generator .string += '"';
37512
+ generator .string += "@DEF";
37513
+ generator .string += '"';
37514
+ generator .string += ':';
37515
+ generator .string += generator .TidySpace ();
37516
+ generator .string += generator .JSONEncode (name);
37517
+ generator .string += ',';
37518
+ generator .string += generator .TidyBreak ();
37519
+ }
37520
+
37521
+
37522
+ // Fields
37523
+
37524
+ const
37525
+ fields = this .getChangedFields (),
37526
+ userDefinedFields = this .getUserDefinedFields ();
37527
+
37528
+ const references = [ ];
37529
+
37530
+ let sourceText = this .getSourceText ();
37531
+
37532
+ // Source text
37533
+
37534
+ if (sourceText)
37535
+ {
37536
+ if (sourceText .length !== 1)
37537
+ sourceText = null;
37538
+
37539
+ if (sourceText && ! sourceText [0] .match (/^\s*(?:ecmascript|javascript|vrmlscript)\:/s))
37540
+ sourceText = null;
37541
+ }
37542
+
37543
+
37544
+ // Predefined fields
37545
+
37546
+ if (fields .length)
37547
+ {
37548
+ const outputFields = [ ];
37549
+
37550
+ for (const field of fields)
37551
+ {
37552
+ // If the field is a inputOutput and we have as reference only inputOnly or outputOnly we must output the value
37553
+ // for this field.
37554
+
37555
+ let mustOutputValue = false;
37556
+
37557
+ if (generator .ExecutionContext ())
37558
+ {
37559
+ if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
37560
+ {
37561
+ if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
37562
+ mustOutputValue = !this .isDefaultValue (field);
37563
+ }
37564
+ }
37565
+
37566
+ // If we have no execution context we are not in a proto and must not generate IS references the same is true
37567
+ // if the node is a shared node as the node does not belong to the execution context.
37568
+
37569
+ if (field .getReferences () .size === 0 || !generator .ExecutionContext () || sharedNode || mustOutputValue)
37570
+ {
37571
+ if (mustOutputValue)
37572
+ references .push (field);
37573
+
37574
+ if (field !== sourceText)
37575
+ outputFields .push (field);
37576
+ }
37577
+ else
37578
+ {
37579
+ references .push (field);
37580
+ }
37581
+ }
37582
+
37583
+ for (const field of outputFields)
37584
+ {
37585
+ if (field .isInitializable ())
37586
+ {
37587
+ switch (field .getType ())
37588
+ {
37589
+ case Base_X3DConstants.SFNode:
37590
+ case Base_X3DConstants.MFNode:
37591
+ {
37592
+ generator .string += generator .Indent ();
37593
+ generator .string += '"';
37594
+ generator .string += '-';
37595
+ generator .string += field .getName ();
37596
+ generator .string += '"';
37597
+ generator .string += ':';
37598
+ generator .string += generator .TidySpace ();
37599
+
37600
+ field .toJSONStream (generator);
37601
+ break;
37602
+ }
37603
+ default:
37604
+ {
37605
+ generator .string += generator .Indent ();
37606
+ generator .string += '"';
37607
+ generator .string += '@';
37608
+ generator .string += field .getName ();
37609
+ generator .string += '"';
37610
+ generator .string += ':';
37611
+ generator .string += generator .TidySpace ();
37612
+
37613
+ field .toJSONStream (generator);
37614
+ break;
37615
+ }
37616
+ }
37617
+
37618
+ generator .string += ',';
37619
+ generator .string += generator .TidyBreak ();
37620
+ }
37621
+ }
37622
+ }
37623
+
37624
+ // User defined fields
37625
+
37626
+ if (! this .canUserDefinedFields () || ! userDefinedFields .length)
37627
+ ;
37628
+ else
37629
+ {
37630
+ generator .string += generator .Indent ();
37631
+ generator .string += '"';
37632
+ generator .string += "field";
37633
+ generator .string += '"';
37634
+ generator .string += ':';
37635
+ generator .string += generator .TidySpace ();
37636
+ generator .string += '[';
37637
+ generator .string += generator .TidyBreak ();
37638
+ generator .string += generator .IncIndent ();
37639
+
37640
+ for (const field of userDefinedFields)
37641
+ {
37642
+ generator .string += generator .Indent ();
37643
+ generator .string += '{';
37644
+ generator .string += generator .TidyBreak ();
37645
+ generator .string += generator .IncIndent ();
37646
+
37647
+ generator .string += generator .Indent ();
37648
+ generator .string += '"';
37649
+ generator .string += "@accessType";
37650
+ generator .string += '"';
37651
+ generator .string += ':';
37652
+ generator .string += generator .TidySpace ();
37653
+ generator .string += '"';
37654
+ generator .string += generator .AccessType (field .getAccessType ());
37655
+ generator .string += '"';
37656
+ generator .string += ',';
37657
+ generator .string += generator .TidyBreak ();
37658
+
37659
+ generator .string += generator .Indent ();
37660
+ generator .string += '"';
37661
+ generator .string += "@type";
37662
+ generator .string += '"';
37663
+ generator .string += ':';
37664
+ generator .string += generator .TidySpace ();
37665
+ generator .string += '"';
37666
+ generator .string += field .getTypeName ();
37667
+ generator .string += '"';
37668
+ generator .string += ',';
37669
+ generator .string += generator .TidyBreak ();
37670
+
37671
+ generator .string += generator .Indent ();
37672
+ generator .string += '"';
37673
+ generator .string += "@name";
37674
+ generator .string += '"';
37675
+ generator .string += ':';
37676
+ generator .string += generator .TidySpace ();
37677
+ generator .string += generator .JSONEncode (field .getName ());
37678
+
37679
+ // If the field is a inputOutput and we have as reference only inputOnly or outputOnly we must output the value
37680
+ // for this field.
37681
+
37682
+ let mustOutputValue = false;
37683
+
37684
+ if (generator .ExecutionContext ())
37685
+ {
37686
+ if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
37687
+ {
37688
+ if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
37689
+ mustOutputValue = !this .isDefaultValue (field);
37690
+ }
37691
+ }
37692
+
37693
+ if ((field .getReferences () .size === 0 || !generator .ExecutionContext ()) || sharedNode || mustOutputValue)
37694
+ {
37695
+ if (mustOutputValue && generator .ExecutionContext ())
37696
+ references .push (field);
37697
+
37698
+ if (!field .isInitializable () || field .isDefaultValue ())
37699
+ ;
37700
+ else
37701
+ {
37702
+ // Output value
37703
+
37704
+ generator .string += ',';
37705
+ generator .string += generator .TidyBreak ();
37706
+
37707
+ switch (field .getType ())
37708
+ {
37709
+ case Base_X3DConstants.SFNode:
37710
+ {
37711
+ generator .string += generator .Indent ();
37712
+ generator .string += '"';
37713
+ generator .string += "-children";
37714
+ generator .string += '"';
37715
+ generator .string += ':';
37716
+ generator .string += generator .TidySpace ();
37717
+ generator .string += '[';
37718
+ generator .string += generator .TidyBreak ();
37719
+ generator .string += generator .IncIndent ();
37720
+ generator .string += generator .Indent ();
37721
+
37722
+ field .toJSONStream (generator);
37723
+
37724
+ generator .string += generator .TidyBreak ();
37725
+ generator .string += generator .DecIndent ();
37726
+ generator .string += generator .Indent ();
37727
+ generator .string += ']';
37728
+ break;
37729
+ }
37730
+ case Base_X3DConstants.MFNode:
37731
+ {
37732
+ generator .string += generator .Indent ();
37733
+ generator .string += '"';
37734
+ generator .string += "-children";
37735
+ generator .string += '"';
37736
+ generator .string += ':';
37737
+ generator .string += generator .TidySpace ();
37738
+
37739
+ field .toJSONStream (generator);
37740
+ break;
37741
+ }
37742
+ default:
37743
+ {
37744
+ generator .string += generator .Indent ();
37745
+ generator .string += '"';
37746
+ generator .string += "@value";
37747
+ generator .string += '"';
37748
+ generator .string += ':';
37749
+ generator .string += generator .TidySpace ();
37750
+
37751
+ field .toJSONStream (generator);
37752
+ break;
37753
+ }
37754
+ }
37755
+ }
37756
+ }
37757
+ else
37758
+ {
37759
+ if (generator .ExecutionContext ())
37760
+ references .push (field);
37761
+ }
37762
+
37763
+ generator .string += generator .TidyBreak ();
37764
+ generator .string += generator .DecIndent ();
37765
+ generator .string += generator .Indent ();
37766
+ generator .string += '}';
37767
+
37768
+ if (field !== userDefinedFields .at (-1))
37769
+ generator .string += ',';
37770
+
37771
+ generator .string += generator .TidyBreak ();
37772
+ }
37773
+
37774
+ generator .string += generator .DecIndent ();
37775
+ generator .string += generator .Indent ();
37776
+ generator .string += ']';
37777
+ generator .string += ',';
37778
+ generator .string += generator .TidyBreak ();
37779
+ }
37780
+
37781
+ // Source text
37782
+
37783
+ if (sourceText)
37784
+ {
37785
+ generator .string += generator .Indent ();
37786
+ generator .string += '"';
37787
+ generator .string += "#sourceText";
37788
+ generator .string += '"';
37789
+ generator .string += ':';
37790
+ generator .string += generator .TidySpace ();
37791
+ generator .string += '[';
37792
+ generator .string += generator .TidyBreak ();
37793
+ generator .string += generator .IncIndent ();
37794
+
37795
+ const sourceTextLines = sourceText [0] .split ("\n");
37796
+
37797
+ for (let i = 0, length = sourceTextLines .length; i < length; ++ i)
37798
+ {
37799
+ generator .string += generator .ListIndent ();
37800
+ generator .string += generator .JSONEncode (sourceTextLines [i]);
37801
+
37802
+ if (i !== length - 1)
37803
+ generator .string += ',';
37804
+
37805
+ generator .string += generator .TidyBreak ();
37806
+ }
37807
+
37808
+ generator .string += generator .DecIndent ();
37809
+ generator .string += generator .Indent ();
37810
+ generator .string += ']';
37811
+ generator .string += ',';
37812
+ generator .string += generator .TidyBreak ();
37813
+ }
37814
+
37815
+
37816
+ // IS references
37817
+
37818
+ if (references .length && !sharedNode)
37819
+ {
37820
+ generator .string += generator .Indent ();
37821
+ generator .string += '"';
37822
+ generator .string += "IS";
37823
+ generator .string += '"';
37824
+ generator .string += ':';
37825
+ generator .string += generator .TidySpace ();
37826
+ generator .string += '{';
37827
+ generator .string += generator .TidyBreak ();
37828
+ generator .string += generator .IncIndent ();
37829
+ generator .string += generator .Indent ();
37830
+ generator .string += '"';
37831
+ generator .string += "connect";
37832
+ generator .string += '"';
37833
+ generator .string += ':';
37834
+ generator .string += generator .TidySpace ();
37835
+ generator .string += '[';
37836
+ generator .string += generator .TidyBreak ();
37837
+ generator .string += generator .IncIndent ();
37838
+
37839
+ for (const field of references)
37840
+ {
37841
+ const protoFields = [... field .getReferences ()];
37842
+
37843
+ for (const protoField of protoFields)
37844
+ {
37845
+ generator .string += generator .Indent ();
37846
+ generator .string += '{';
37847
+ generator .string += generator .TidyBreak ();
37848
+ generator .string += generator .IncIndent ();
37849
+
37850
+ generator .string += generator .Indent ();
37851
+ generator .string += '"';
37852
+ generator .string += "@nodeField";
37853
+ generator .string += '"';
37854
+ generator .string += ':';
37855
+ generator .string += generator .TidySpace ();
37856
+ generator .string += generator .JSONEncode (field .getName ());
37857
+ generator .string += ',';
37858
+ generator .string += generator .TidyBreak ();
37859
+
37860
+ generator .string += generator .Indent ();
37861
+ generator .string += '"';
37862
+ generator .string += "@protoField";
37863
+ generator .string += '"';
37864
+ generator .string += ':';
37865
+ generator .string += generator .TidySpace ();
37866
+ generator .string += generator .JSONEncode (protoField .getName ());
37867
+ generator .string += generator .TidyBreak ();
37868
+
37869
+ generator .string += generator .DecIndent ();
37870
+ generator .string += generator .Indent ();
37871
+ generator .string += '}';
37872
+
37873
+ if (field === references .at (-1) && protoField === protoFields .at (-1))
37874
+ ;
37875
+ else
37876
+ {
37877
+ generator .string += ',';
37878
+ }
37879
+
37880
+ generator .string += generator .TidyBreak ();
37881
+ }
37882
+ }
37883
+
37884
+ generator .string += generator .DecIndent ();
37885
+ generator .string += generator .Indent ();
37886
+ generator .string += ']';
37887
+ generator .string += generator .TidyBreak ();
37888
+ generator .string += generator .DecIndent ();
37889
+ generator .string += generator .Indent ();
37890
+ generator .string += '}';
37891
+ generator .string += generator .TidyBreak ();
37892
+ }
37893
+
37894
+ generator .string = generator .string .replace (/,(\s*)$/s, "$1");
37895
+
37896
+ // End
37897
+
37898
+ generator .string += generator .DecIndent ();
37899
+ generator .string += generator .Indent ();
37900
+ generator .string += '}';
37901
+ generator .string += generator .TidyBreak ();
37902
+ generator .string += generator .DecIndent ();
37903
+ generator .string += generator .Indent ();
37904
+ generator .string += '}';
37905
+
37906
+ generator .LeaveScope ();
37907
+ }
37908
+ catch (error)
37909
+ {
37910
+ console .log (error)
37911
+ }
37912
+ },
36967
37913
  dispose: function ()
36968
37914
  {
36969
37915
  const executionContext = this .getExecutionContext ();
@@ -37278,7 +38224,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
37278
38224
  }
37279
38225
  }
37280
38226
  else
38227
+ {
37281
38228
  throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
38229
+ }
37282
38230
  },
37283
38231
  toXMLStream: function (generator)
37284
38232
  {
@@ -37358,7 +38306,169 @@ X3DImportedNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
37358
38306
  }
37359
38307
  }
37360
38308
  else
38309
+ {
37361
38310
  throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
38311
+ }
38312
+ },
38313
+ toJSONStream: function (generator)
38314
+ {
38315
+ if (generator .ExistsNode (this .getInlineNode ()))
38316
+ {
38317
+ generator .string += generator .Indent ();
38318
+ generator .string += '{';
38319
+ generator .string += generator .TidySpace ();
38320
+ generator .string += '"';
38321
+ generator .string += "IMPORT";
38322
+ generator .string += '"';
38323
+ generator .string += ':';
38324
+ generator .string += generator .TidyBreak ();
38325
+ generator .string += generator .IncIndent ();
38326
+ generator .string += generator .Indent ();
38327
+ generator .string += '{';
38328
+ generator .string += generator .TidyBreak ();
38329
+ generator .string += generator .IncIndent ();
38330
+
38331
+ generator .string += generator .Indent ();
38332
+ generator .string += '"';
38333
+ generator .string += "@inlineDEF";
38334
+ generator .string += '"';
38335
+ generator .string += ':';
38336
+ generator .string += generator .TidySpace ();
38337
+ generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
38338
+ generator .string += ',';
38339
+ generator .string += generator .TidyBreak ();
38340
+
38341
+ generator .string += generator .Indent ();
38342
+ generator .string += '"';
38343
+ generator .string += "@importedDEF";
38344
+ generator .string += '"';
38345
+ generator .string += ':';
38346
+ generator .string += generator .TidySpace ();
38347
+ generator .string += generator .JSONEncode (this .getExportedName ());
38348
+
38349
+ if (this .getImportedName () !== this .getExportedName ())
38350
+ {
38351
+ generator .string += ',';
38352
+ generator .string += generator .TidyBreak ();
38353
+ generator .string += generator .Indent ();
38354
+ generator .string += '"';
38355
+ generator .string += "@AS";
38356
+ generator .string += '"';
38357
+ generator .string += ':';
38358
+ generator .string += generator .TidySpace ();
38359
+ generator .string += generator .JSONEncode (this .getImportedName ());
38360
+ generator .string += generator .TidyBreak ();
38361
+ }
38362
+ else
38363
+ {
38364
+ generator .string += generator .TidyBreak ();
38365
+ }
38366
+
38367
+ generator .string += generator .DecIndent ();
38368
+ generator .string += generator .Indent ();
38369
+ generator .string += '}';
38370
+ generator .string += generator .TidyBreak ();
38371
+ generator .string += generator .DecIndent ();
38372
+ generator .string += generator .Indent ();
38373
+ generator .string += '}';
38374
+
38375
+ try
38376
+ {
38377
+ generator .AddRouteNode (this);
38378
+ generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
38379
+ }
38380
+ catch (error)
38381
+ {
38382
+ // Output unresolved routes.
38383
+
38384
+ for (const route of this [_routes])
38385
+ {
38386
+ const
38387
+ sourceNode = route .sourceNode,
38388
+ sourceField = route .sourceField,
38389
+ destinationNode = route .destinationNode,
38390
+ destinationField = route .destinationField;
38391
+
38392
+ if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
38393
+ {
38394
+ const sourceNodeName = sourceNode instanceof X3DImportedNode
38395
+ ? sourceNode .getImportedName ()
38396
+ : generator .Name (sourceNode);
38397
+
38398
+ const destinationNodeName = destinationNode instanceof X3DImportedNode
38399
+ ? destinationNode .getImportedName ()
38400
+ : generator .Name (destinationNode);
38401
+
38402
+ generator .string += ',';
38403
+ generator .string += generator .TidyBreak ();
38404
+ generator .string += generator .Indent ();
38405
+ generator .string += '{';
38406
+ generator .string += generator .TidySpace ();
38407
+ generator .string += '"';
38408
+ generator .string += "ROUTE";
38409
+ generator .string += '"';
38410
+ generator .string += ':';
38411
+ generator .string += generator .TidyBreak ();
38412
+ generator .string += generator .IncIndent ();
38413
+ generator .string += generator .Indent ();
38414
+ generator .string += '{';
38415
+ generator .string += generator .TidyBreak ();
38416
+ generator .string += generator .IncIndent ();
38417
+
38418
+ generator .string += generator .Indent ();
38419
+ generator .string += '"';
38420
+ generator .string += "@fromNode";
38421
+ generator .string += '"';
38422
+ generator .string += ':';
38423
+ generator .string += generator .TidySpace ();
38424
+ generator .string += generator .JSONEncode (sourceNodeName);
38425
+ generator .string += ',';
38426
+ generator .string += generator .TidyBreak ();
38427
+
38428
+ generator .string += generator .Indent ();
38429
+ generator .string += '"';
38430
+ generator .string += "@fromField";
38431
+ generator .string += '"';
38432
+ generator .string += ':';
38433
+ generator .string += generator .TidySpace ();
38434
+ generator .string += generator .JSONEncode (sourceField);
38435
+ generator .string += ',';
38436
+ generator .string += generator .TidyBreak ();
38437
+
38438
+ generator .string += generator .Indent ();
38439
+ generator .string += '"';
38440
+ generator .string += "@toNode";
38441
+ generator .string += '"';
38442
+ generator .string += ':';
38443
+ generator .string += generator .TidySpace ();
38444
+ generator .string += generator .JSONEncode (destinationNodeName);
38445
+ generator .string += ',';
38446
+ generator .string += generator .TidyBreak ();
38447
+
38448
+ generator .string += generator .Indent ();
38449
+ generator .string += '"';
38450
+ generator .string += "@toField";
38451
+ generator .string += '"';
38452
+ generator .string += ':';
38453
+ generator .string += generator .TidySpace ();
38454
+ generator .string += generator .JSONEncode (destinationField);
38455
+ generator .string += generator .TidyBreak ();
38456
+
38457
+ generator .string += generator .DecIndent ();
38458
+ generator .string += generator .Indent ();
38459
+ generator .string += '}';
38460
+ generator .string += generator .TidyBreak ();
38461
+ generator .string += generator .DecIndent ();
38462
+ generator .string += generator .Indent ();
38463
+ generator .string += '}';
38464
+ }
38465
+ }
38466
+ }
38467
+ }
38468
+ else
38469
+ {
38470
+ throw new Error ("X3DImportedNode.toJSONStream: Inline node does not exist.");
38471
+ }
37362
38472
  },
37363
38473
  dispose: function ()
37364
38474
  {
@@ -38113,14 +39223,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
38113
39223
  {
38114
39224
  if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
38115
39225
  {
38116
- let initializableReference = false;
38117
-
38118
- field .getReferences () .forEach (function (fieldReference)
38119
- {
38120
- initializableReference = initializableReference || fieldReference .isInitializable ();
38121
- });
38122
-
38123
- if (!initializableReference)
39226
+ if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
38124
39227
  mustOutputValue = !this .isDefaultValue (field);
38125
39228
  }
38126
39229
  }
@@ -38244,7 +39347,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
38244
39347
  {
38245
39348
  const protoFields = field .getReferences ();
38246
39349
 
38247
- protoFields .forEach (function (protoField)
39350
+ for (const protoField of protoFields)
38248
39351
  {
38249
39352
  generator .string += generator .Indent ();
38250
39353
  generator .string += "<connect";
@@ -38258,7 +39361,7 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
38258
39361
  generator .string += "'";
38259
39362
  generator .string += "/>";
38260
39363
  generator .string += generator .TidyBreak ();
38261
- });
39364
+ }
38262
39365
  }
38263
39366
 
38264
39367
  generator .DecIndent ();
@@ -38276,6 +39379,374 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (Core_X3DNode.p
38276
39379
 
38277
39380
  generator .LeaveScope ();
38278
39381
  },
39382
+ toJSONStream: function (generator)
39383
+ {
39384
+ const sharedNode = generator .IsSharedNode (this);
39385
+
39386
+ generator .EnterScope ();
39387
+
39388
+ const name = generator .Name (this);
39389
+
39390
+ if (name .length)
39391
+ {
39392
+ if (generator .ExistsNode (this))
39393
+ {
39394
+ generator .string += '{';
39395
+ generator .string += generator .TidySpace ();
39396
+ generator .string += '"';
39397
+ generator .string += "ProtoInstance";
39398
+ generator .string += '"';
39399
+ generator .string += ':';
39400
+ generator .string += generator .TidyBreak ();
39401
+ generator .string += generator .IncIndent ();
39402
+ generator .string += generator .Indent ();
39403
+ generator .string += '{';
39404
+ generator .string += generator .TidyBreak ();
39405
+ generator .string += generator .IncIndent ();
39406
+
39407
+ generator .string += generator .Indent ();
39408
+ generator .string += '"';
39409
+ generator .string += "@name";
39410
+ generator .string += '"';
39411
+ generator .string += ':';
39412
+ generator .string += generator .TidySpace ();
39413
+ generator .string += generator .JSONEncode (this .getTypeName ());
39414
+ generator .string += ',';
39415
+ generator .string += generator .TidyBreak ();
39416
+
39417
+ generator .string += generator .Indent ();
39418
+ generator .string += '"';
39419
+ generator .string += "@USE";
39420
+ generator .string += '"';
39421
+ generator .string += ':';
39422
+ generator .string += generator .TidySpace ();
39423
+ generator .string += generator .JSONEncode (name);
39424
+ generator .string += generator .TidyBreak ();
39425
+
39426
+ generator .string += generator .DecIndent ();
39427
+ generator .string += generator .Indent ();
39428
+ generator .string += '}';
39429
+ generator .string += generator .TidyBreak ();
39430
+ generator .string += generator .DecIndent ();
39431
+ generator .string += generator .Indent ();
39432
+ generator .string += '}';
39433
+
39434
+ generator .LeaveScope ();
39435
+ return;
39436
+ }
39437
+ }
39438
+
39439
+ // Type name
39440
+
39441
+ generator .string += '{';
39442
+ generator .string += generator .TidySpace ();
39443
+ generator .string += '"';
39444
+ generator .string += "ProtoInstance";
39445
+ generator .string += '"';
39446
+ generator .string += ':';
39447
+ generator .string += generator .TidyBreak ();
39448
+ generator .string += generator .IncIndent ();
39449
+ generator .string += generator .Indent ();
39450
+ generator .string += '{';
39451
+ generator .string += generator .TidyBreak ();
39452
+ generator .string += generator .IncIndent ();
39453
+
39454
+
39455
+ // DEF name
39456
+
39457
+ if (name .length)
39458
+ {
39459
+ generator .AddNode (this);
39460
+
39461
+ generator .string += generator .Indent ();
39462
+ generator .string += '"';
39463
+ generator .string += "@DEF";
39464
+ generator .string += '"';
39465
+ generator .string += ':';
39466
+ generator .string += generator .TidySpace ();
39467
+ generator .string += generator .JSONEncode (name);
39468
+ generator .string += ',';
39469
+ generator .string += generator .TidyBreak ();
39470
+ }
39471
+
39472
+
39473
+ // Type name
39474
+
39475
+ generator .string += generator .Indent ();
39476
+ generator .string += '"';
39477
+ generator .string += "@name";
39478
+ generator .string += '"';
39479
+ generator .string += ':';
39480
+ generator .string += generator .TidySpace ();
39481
+ generator .string += generator .JSONEncode (this .getTypeName ());
39482
+ generator .string += ',';
39483
+ generator .string += generator .TidyBreak ();
39484
+
39485
+
39486
+ // Fields
39487
+
39488
+ const
39489
+ fields = this .getChangedFields (),
39490
+ references = [ ];
39491
+
39492
+ if (fields .length)
39493
+ {
39494
+ generator .string += generator .Indent ();
39495
+ generator .string += '"';
39496
+ generator .string += "fieldValue";
39497
+ generator .string += '"';
39498
+ generator .string += ':';
39499
+ generator .string += generator .TidySpace ();
39500
+ generator .string += '[';
39501
+ generator .string += generator .TidyBreak ();
39502
+ generator .string += generator .IncIndent ();
39503
+
39504
+ const outputFields = [ ];
39505
+
39506
+ for (const field of fields)
39507
+ {
39508
+ // If the field is a inputOutput and we have as reference only inputOnly or outputOnly we must output the value
39509
+ // for this field.
39510
+
39511
+ let mustOutputValue = false;
39512
+
39513
+ if (generator .ExecutionContext ())
39514
+ {
39515
+ if (field .getAccessType () === Base_X3DConstants.inputOutput && field .getReferences () .size !== 0)
39516
+ {
39517
+ if (![... field .getReferences ()] .some (reference => reference .isInitializable ()))
39518
+ mustOutputValue = !this .isDefaultValue (field);
39519
+ }
39520
+ }
39521
+
39522
+ // If we have no execution context we are not in a proto and must not generate IS references the same is true
39523
+ // if the node is a shared node as the node does not belong to the execution context.
39524
+
39525
+ if (field .getReferences () .size === 0 || !generator .ExecutionContext () || sharedNode || mustOutputValue)
39526
+ {
39527
+ if (mustOutputValue)
39528
+ references .push (field);
39529
+
39530
+ outputFields .push (field);
39531
+ }
39532
+ else
39533
+ {
39534
+ references .push (field);
39535
+ }
39536
+ }
39537
+
39538
+ for (const field of outputFields)
39539
+ {
39540
+ switch (field .getType ())
39541
+ {
39542
+ case Base_X3DConstants.SFNode:
39543
+ {
39544
+ generator .string += generator .Indent ();
39545
+ generator .string += '{';
39546
+ generator .string += generator .TidyBreak ();
39547
+ generator .string += generator .IncIndent ();
39548
+ generator .string += generator .Indent ();
39549
+ generator .string += '"';
39550
+ generator .string += "@name";
39551
+ generator .string += '"';
39552
+ generator .string += ':';
39553
+ generator .string += generator .TidySpace ();
39554
+ generator .string += generator .JSONEncode (field .getName ());
39555
+ generator .string += ',';
39556
+ generator .string += generator .TidyBreak ();
39557
+ generator .string += generator .Indent ();
39558
+ generator .string += '"';
39559
+ generator .string += "-children";
39560
+ generator .string += '"';
39561
+ generator .string += ':';
39562
+ generator .string += generator .TidySpace ();
39563
+ generator .string += '[';
39564
+ generator .string += generator .TidyBreak ();
39565
+ generator .string += generator .IncIndent ();
39566
+ generator .string += generator .Indent ();
39567
+
39568
+ field .toJSONStream (generator);
39569
+
39570
+ generator .string += generator .TidyBreak ();
39571
+ generator .string += generator .DecIndent ();
39572
+ generator .string += generator .Indent ();
39573
+ generator .string += ']';
39574
+ generator .string += generator .TidyBreak ();
39575
+ generator .string += generator .DecIndent ();
39576
+ generator .string += generator .Indent ();
39577
+ generator .string += '}';
39578
+ break;
39579
+ }
39580
+ case Base_X3DConstants.MFNode:
39581
+ {
39582
+ generator .string += generator .Indent ();
39583
+ generator .string += '{';
39584
+ generator .string += generator .TidyBreak ();
39585
+ generator .string += generator .IncIndent ();
39586
+ generator .string += generator .Indent ();
39587
+ generator .string += '"';
39588
+ generator .string += "@name";
39589
+ generator .string += '"';
39590
+ generator .string += ':';
39591
+ generator .string += generator .TidySpace ();
39592
+ generator .string += generator .JSONEncode (field .getName ());
39593
+ generator .string += ',';
39594
+ generator .string += generator .TidyBreak ();
39595
+ generator .string += generator .Indent ();
39596
+ generator .string += '"';
39597
+ generator .string += "-children";
39598
+ generator .string += '"';
39599
+ generator .string += ':';
39600
+ generator .string += generator .TidySpace ();
39601
+
39602
+ field .toJSONStream (generator);
39603
+
39604
+ generator .string += generator .TidyBreak ();
39605
+ generator .string += generator .DecIndent ();
39606
+ generator .string += generator .Indent ();
39607
+ generator .string += '}';
39608
+ break;
39609
+ }
39610
+ default:
39611
+ {
39612
+ generator .string += generator .Indent ();
39613
+ generator .string += '{';
39614
+ generator .string += generator .TidyBreak ();
39615
+ generator .string += generator .IncIndent ();
39616
+ generator .string += generator .Indent ();
39617
+ generator .string += '"';
39618
+ generator .string += "@name";
39619
+ generator .string += '"';
39620
+ generator .string += ':';
39621
+ generator .string += generator .TidySpace ();
39622
+ generator .string += generator .JSONEncode (field .getName ());
39623
+ generator .string += ',';
39624
+ generator .string += generator .TidyBreak ();
39625
+ generator .string += generator .Indent ();
39626
+ generator .string += '"';
39627
+ generator .string += "@value";
39628
+ generator .string += '"';
39629
+ generator .string += ':';
39630
+ generator .string += generator .TidySpace ();
39631
+
39632
+ field .toJSONStream (generator);
39633
+
39634
+ generator .string += generator .TidyBreak ();
39635
+ generator .string += generator .DecIndent ();
39636
+ generator .string += generator .Indent ();
39637
+ generator .string += '}';
39638
+ break;
39639
+ }
39640
+ }
39641
+
39642
+ if (field !== outputFields .at (-1))
39643
+ generator .string += ',';
39644
+
39645
+ generator .string += generator .TidyBreak ();
39646
+ }
39647
+
39648
+ generator .string += generator .DecIndent ();
39649
+ generator .string += generator .Indent ();
39650
+ generator .string += ']';
39651
+ generator .string += ',';
39652
+ generator .string += generator .TidyBreak ();
39653
+
39654
+
39655
+ // IS references
39656
+
39657
+ if (references .length && ! sharedNode)
39658
+ {
39659
+ generator .string += generator .Indent ();
39660
+ generator .string += '"';
39661
+ generator .string += "IS";
39662
+ generator .string += '"';
39663
+ generator .string += ':';
39664
+ generator .string += generator .TidySpace ();
39665
+ generator .string += '{';
39666
+ generator .string += generator .TidyBreak ();
39667
+ generator .string += generator .IncIndent ();
39668
+ generator .string += generator .Indent ();
39669
+ generator .string += '"';
39670
+ generator .string += "connect";
39671
+ generator .string += '"';
39672
+ generator .string += ':';
39673
+ generator .string += generator .TidySpace ();
39674
+ generator .string += '[';
39675
+ generator .string += generator .TidyBreak ();
39676
+ generator .string += generator .IncIndent ();
39677
+
39678
+ for (const field of references)
39679
+ {
39680
+ const protoFields = [... field .getReferences ()];
39681
+
39682
+ for (const protoField of protoFields)
39683
+ {
39684
+ generator .string += generator .Indent ();
39685
+ generator .string += '{';
39686
+ generator .string += generator .TidyBreak ();
39687
+ generator .string += generator .IncIndent ();
39688
+
39689
+ generator .string += generator .Indent ();
39690
+ generator .string += '"';
39691
+ generator .string += "@nodeField";
39692
+ generator .string += '"';
39693
+ generator .string += ':';
39694
+ generator .string += generator .TidySpace ();
39695
+ generator .string += generator .JSONEncode (field .getName ());
39696
+ generator .string += ',';
39697
+ generator .string += generator .TidyBreak ();
39698
+
39699
+ generator .string += generator .Indent ();
39700
+ generator .string += '"';
39701
+ generator .string += "@protoField";
39702
+ generator .string += '"';
39703
+ generator .string += ':';
39704
+ generator .string += generator .TidySpace ();
39705
+ generator .string += generator .JSONEncode (protoField .getName ());
39706
+ generator .string += generator .TidyBreak ();
39707
+
39708
+ generator .string += generator .DecIndent ();
39709
+ generator .string += generator .Indent ();
39710
+ generator .string += '}';
39711
+
39712
+ if (field === references .at (-1) && protoField === protoFields .at (-1))
39713
+ ;
39714
+ else
39715
+ {
39716
+ generator .string += ',';
39717
+ }
39718
+
39719
+ generator .string += generator .TidyBreak ();
39720
+ }
39721
+ }
39722
+
39723
+ generator .string += generator .DecIndent ();
39724
+ generator .string += generator .Indent ();
39725
+ generator .string += ']';
39726
+ generator .string += generator .TidyBreak ();
39727
+ generator .string += generator .DecIndent ();
39728
+ generator .string += generator .Indent ();
39729
+ generator .string += '}';
39730
+ generator .string += ',';
39731
+ generator .string += generator .TidyBreak ();
39732
+ }
39733
+ }
39734
+
39735
+ generator .string = generator .string .replace (/,(\s*)$/s, "$1");
39736
+
39737
+
39738
+ // End
39739
+
39740
+ generator .string += generator .DecIndent ();
39741
+ generator .string += generator .Indent ();
39742
+ generator .string += '}';
39743
+ generator .string += generator .TidyBreak ();
39744
+ generator .string += generator .DecIndent ();
39745
+ generator .string += generator .Indent ();
39746
+ generator .string += '}';
39747
+
39748
+ generator .LeaveScope ();
39749
+ },
38279
39750
  dispose: function ()
38280
39751
  {
38281
39752
  this [_protoNode] ._updateInstances .removeInterest ("construct", this);
@@ -38712,6 +40183,234 @@ X3DProtoDeclaration .prototype = Object .assign (Object .create (Prototype_X3DPr
38712
40183
  generator .string += generator .Indent ();
38713
40184
  generator .string += "</ProtoDeclare>";
38714
40185
  },
40186
+ toJSONStream: function (generator)
40187
+ {
40188
+ generator .string += generator .Indent ();
40189
+ generator .string += '{';
40190
+ generator .string += generator .TidySpace ();
40191
+ generator .string += '"';
40192
+ generator .string += "ProtoDeclare";
40193
+ generator .string += '"';
40194
+ generator .string += ':';
40195
+ generator .string += generator .TidyBreak ();
40196
+ generator .string += generator .IncIndent ();
40197
+ generator .string += generator .Indent ();
40198
+ generator .string += '{';
40199
+ generator .string += generator .TidyBreak ();
40200
+ generator .string += generator .IncIndent ();
40201
+ generator .string += generator .Indent ();
40202
+ generator .string += '"';
40203
+ generator .string += "@name";
40204
+ generator .string += '"';
40205
+ generator .string += ':';
40206
+ generator .string += generator .JSONEncode (this .getName ());
40207
+ generator .string += ',';
40208
+ generator .string += generator .TidyBreak ();
40209
+
40210
+ generator .string += generator .Indent ();
40211
+ generator .string += '"';
40212
+ generator .string += "ProtoInterface";
40213
+ generator .string += '"';
40214
+ generator .string += ':';
40215
+ generator .string += generator .TidySpace ();
40216
+ generator .string += '{';
40217
+ generator .string += generator .TidyBreak ();
40218
+ generator .string += generator .IncIndent ();
40219
+
40220
+
40221
+ // Fields
40222
+
40223
+ generator .EnterScope ();
40224
+
40225
+ const userDefinedFields = this .getUserDefinedFields ();
40226
+
40227
+ if (userDefinedFields .length)
40228
+ {
40229
+ generator .string += generator .Indent ();
40230
+ generator .string += '"';
40231
+ generator .string += "field";
40232
+ generator .string += '"';
40233
+ generator .string += ':';
40234
+ generator .string += generator .TidySpace ();
40235
+ generator .string += '[';
40236
+ generator .string += generator .TidyBreak ();
40237
+ generator .string += generator .IncIndent ();
40238
+
40239
+ for (const field of userDefinedFields)
40240
+ {
40241
+ generator .string += generator .Indent ();
40242
+ generator .string += '{';
40243
+ generator .string += generator .TidyBreak ();
40244
+ generator .string += generator .IncIndent ();
40245
+
40246
+ generator .string += generator .Indent ();
40247
+ generator .string += '"';
40248
+ generator .string += "@accessType";
40249
+ generator .string += '"';
40250
+ generator .string += ':';
40251
+ generator .string += generator .TidySpace ();
40252
+ generator .string += '"';
40253
+ generator .string += generator .AccessType (field .getAccessType ());
40254
+ generator .string += '"';
40255
+ generator .string += ',';
40256
+ generator .string += generator .TidyBreak ();
40257
+
40258
+ generator .string += generator .Indent ();
40259
+ generator .string += '"';
40260
+ generator .string += "@type";
40261
+ generator .string += '"';
40262
+ generator .string += ':';
40263
+ generator .string += generator .TidySpace ();
40264
+ generator .string += '"';
40265
+ generator .string += field .getTypeName ();
40266
+ generator .string += '"';
40267
+ generator .string += ',';
40268
+ generator .string += generator .TidyBreak ();
40269
+
40270
+ generator .string += generator .Indent ();
40271
+ generator .string += '"';
40272
+ generator .string += "@name";
40273
+ generator .string += '"';
40274
+ generator .string += ':';
40275
+ generator .string += generator .TidySpace ();
40276
+ generator .string += generator .JSONEncode (field .getName ());
40277
+
40278
+ if (field .isDefaultValue ())
40279
+ {
40280
+ generator .string += generator .TidyBreak ();
40281
+ }
40282
+ else
40283
+ {
40284
+ generator .string += ',';
40285
+ generator .string += generator .TidyBreak ();
40286
+
40287
+ // Output value
40288
+
40289
+ switch (field .getType ())
40290
+ {
40291
+ case Base_X3DConstants.SFNode:
40292
+ {
40293
+ generator .string += generator .Indent ();
40294
+ generator .string += '"';
40295
+ generator .string += "-children";
40296
+ generator .string += '"';
40297
+ generator .string += ':';
40298
+ generator .string += generator .TidySpace ();
40299
+ generator .string += '[';
40300
+ generator .string += generator .TidyBreak ();
40301
+ generator .string += generator .IncIndent ();
40302
+ generator .string += generator .Indent ();
40303
+
40304
+ field .toJSONStream (generator);
40305
+
40306
+ generator .string += generator .TidyBreak ();
40307
+ generator .string += generator .DecIndent ();
40308
+ generator .string += generator .Indent ();
40309
+ generator .string += ']';
40310
+ generator .string += generator .TidyBreak ();
40311
+ break;
40312
+ }
40313
+ case Base_X3DConstants.MFNode:
40314
+ {
40315
+ generator .string += generator .Indent ();
40316
+ generator .string += '"';
40317
+ generator .string += "-children";
40318
+ generator .string += '"';
40319
+ generator .string += ':';
40320
+ generator .string += generator .TidySpace ();
40321
+
40322
+ field .toJSONStream (generator);
40323
+
40324
+ generator .string += generator .TidyBreak ();
40325
+ break;
40326
+ }
40327
+ default:
40328
+ {
40329
+ generator .string += generator .Indent ();
40330
+ generator .string += '"';
40331
+ generator .string += "@value";
40332
+ generator .string += '"';
40333
+ generator .string += ':';
40334
+ generator .string += generator .TidySpace ();
40335
+
40336
+ field .toJSONStream (generator);
40337
+
40338
+ generator .string += generator .TidyBreak ();
40339
+ break;
40340
+ }
40341
+ }
40342
+ }
40343
+
40344
+ generator .string += generator .DecIndent ();
40345
+ generator .string += generator .Indent ();
40346
+ generator .string += '}';
40347
+
40348
+ if (field !== userDefinedFields .at (-1))
40349
+ generator .string += ',';
40350
+
40351
+ generator .string += generator .TidyBreak ();
40352
+ }
40353
+
40354
+ generator .string += generator .DecIndent ();
40355
+ generator .string += generator .Indent ();
40356
+ generator .string += ']';
40357
+ }
40358
+
40359
+ generator .string += generator .DecIndent ();
40360
+ generator .string += generator .TidyBreak ();
40361
+ generator .string += generator .Indent ();
40362
+ generator .string += '}';
40363
+ generator .string += ',';
40364
+ generator .string += generator .TidyBreak ();
40365
+
40366
+ generator .LeaveScope ();
40367
+
40368
+
40369
+ // ProtoBody
40370
+
40371
+ generator .string += generator .Indent ();
40372
+ generator .string += '"';
40373
+ generator .string += "ProtoBody";
40374
+ generator .string += '"';
40375
+ generator .string += ':';
40376
+ generator .string += generator .TidySpace ();
40377
+ generator .string += '{';
40378
+ generator .string += generator .TidyBreak ();
40379
+ generator .string += generator .IncIndent ();
40380
+
40381
+ generator .string += generator .Indent ();
40382
+ generator .string += '"';
40383
+ generator .string += "-children";
40384
+ generator .string += '"';
40385
+ generator .string += ':';
40386
+ generator .string += generator .TidySpace ();
40387
+ generator .string += '[';
40388
+ generator .string += generator .TidyBreak ();
40389
+ generator .string += generator .IncIndent ();
40390
+
40391
+ this [X3DProtoDeclaration_body] .toJSONStream (generator);
40392
+
40393
+ generator .string = generator .string .replace (/,(\s*)$/s, "$1");
40394
+
40395
+ generator .string += generator .DecIndent ();
40396
+ generator .string += generator .Indent ();
40397
+ generator .string += ']';
40398
+ generator .string += generator .TidyBreak ();
40399
+
40400
+ // End
40401
+
40402
+ generator .string += generator .DecIndent ();
40403
+ generator .string += generator .Indent ();
40404
+ generator .string += '}';
40405
+ generator .string += generator .TidyBreak ();
40406
+ generator .string += generator .DecIndent ();
40407
+ generator .string += generator .Indent ();
40408
+ generator .string += '}';
40409
+ generator .string += generator .TidyBreak ();
40410
+ generator .string += generator .DecIndent ();
40411
+ generator .string += generator .Indent ();
40412
+ generator .string += '}';
40413
+ },
38715
40414
  });
38716
40415
 
38717
40416
  for (const key of Reflect .ownKeys (X3DProtoDeclaration .prototype))
@@ -42116,7 +43815,7 @@ const VRMLParser_default_ = VRMLParser;
42116
43815
  x_ite_Namespace.set ("x_ite/Parser/VRMLParser", VRMLParser_default_);
42117
43816
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
42118
43817
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
42119
- /* provided dependency */ var XMLParser_$ = __webpack_require__(93);
43818
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(718);
42120
43819
  /*******************************************************************************
42121
43820
  *
42122
43821
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -43556,7 +45255,7 @@ JSONParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototy
43556
45255
  try
43557
45256
  {
43558
45257
  if (typeof json === "string")
43559
- json = JSON .parse (json)
45258
+ json = JSON .parse (json);
43560
45259
 
43561
45260
  this .input = json;
43562
45261
  }
@@ -44228,7 +45927,7 @@ const Plane3_default_ = Plane3;
44228
45927
  x_ite_Namespace.set ("standard/Math/Geometry/Plane3", Plane3_default_);
44229
45928
  /* harmony default export */ const Geometry_Plane3 = (Plane3_default_);
44230
45929
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
44231
- /* provided dependency */ var libtess = __webpack_require__(461);
45930
+ /* provided dependency */ var libtess = __webpack_require__(941);
44232
45931
  /*******************************************************************************
44233
45932
  *
44234
45933
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -49114,7 +50813,8 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
49114
50813
  if ((Xsize >= Ysize) && (Xsize >= Zsize))
49115
50814
  {
49116
50815
  // X size largest
49117
- texCoordParams .Ssize = Xsize; texCoordParams .Sindex = 0;
50816
+ texCoordParams .Ssize = Xsize;
50817
+ texCoordParams .Sindex = 0;
49118
50818
 
49119
50819
  if (Ysize >= Zsize)
49120
50820
  texCoordParams .Tindex = 1;
@@ -49124,7 +50824,8 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
49124
50824
  else if ((Ysize >= Xsize) && (Ysize >= Zsize))
49125
50825
  {
49126
50826
  // Y size largest
49127
- texCoordParams .Ssize = Ysize; texCoordParams .Sindex = 1;
50827
+ texCoordParams .Ssize = Ysize;
50828
+ texCoordParams .Sindex = 1;
49128
50829
 
49129
50830
  if (Xsize >= Zsize)
49130
50831
  texCoordParams .Tindex = 0;
@@ -49134,7 +50835,8 @@ X3DGeometryNode .prototype = Object .assign (Object .create (Core_X3DNode.protot
49134
50835
  else
49135
50836
  {
49136
50837
  // Z is the largest
49137
- texCoordParams .Ssize = Zsize; texCoordParams .Sindex = 2;
50838
+ texCoordParams .Ssize = Zsize;
50839
+ texCoordParams .Sindex = 2;
49138
50840
 
49139
50841
  if (Xsize >= Ysize)
49140
50842
  texCoordParams .Tindex = 0;
@@ -51568,7 +53270,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
51568
53270
  x_ite_Namespace.set ("x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
51569
53271
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
51570
53272
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
51571
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(93);
53273
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(718);
51572
53274
  /*******************************************************************************
51573
53275
  *
51574
53276
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -55936,8 +57638,8 @@ const BinaryTransport_default_ = BinaryTransport;
55936
57638
  x_ite_Namespace.set ("standard/Networking/BinaryTransport", BinaryTransport_default_);
55937
57639
  /* harmony default export */ const Networking_BinaryTransport = (BinaryTransport_default_);
55938
57640
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
55939
- /* provided dependency */ var FileLoader_$ = __webpack_require__(93);
55940
- /* provided dependency */ var pako = __webpack_require__(777);
57641
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(718);
57642
+ /* provided dependency */ var pako = __webpack_require__(513);
55941
57643
  /*******************************************************************************
55942
57644
  *
55943
57645
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -56690,6 +58392,129 @@ X3DExternProtoDeclaration .prototype = Object .assign (Object .create (Prototype
56690
58392
  generator .string += generator .Indent ();
56691
58393
  generator .string += "</ExternProtoDeclare>";
56692
58394
  },
58395
+ toJSONStream: function (generator)
58396
+ {
58397
+ generator .string += generator .Indent ();
58398
+ generator .string += '{';
58399
+ generator .string += generator .TidySpace ();
58400
+ generator .string += '"';
58401
+ generator .string += "ExternProtoDeclare";
58402
+ generator .string += '"';
58403
+ generator .string += ':';
58404
+ generator .string += generator .TidyBreak ();
58405
+ generator .string += generator .IncIndent ();
58406
+ generator .string += generator .Indent ();
58407
+ generator .string += '{';
58408
+ generator .string += generator .TidyBreak ();
58409
+ generator .string += generator .IncIndent ();
58410
+ generator .string += generator .Indent ();
58411
+ generator .string += '"';
58412
+ generator .string += "@name";
58413
+ generator .string += '"';
58414
+ generator .string += ':';
58415
+ generator .string += generator .JSONEncode (this .getName ());
58416
+ generator .string += ',';
58417
+ generator .string += generator .TidyBreak ();
58418
+
58419
+
58420
+ // Fields
58421
+
58422
+ const userDefinedFields = this .getUserDefinedFields ();
58423
+
58424
+ if (userDefinedFields .length)
58425
+ {
58426
+ generator .string += generator .Indent ();
58427
+ generator .string += '"';
58428
+ generator .string += "field";
58429
+ generator .string += '"';
58430
+ generator .string += ':';
58431
+ generator .string += generator .TidySpace ();
58432
+ generator .string += '[';
58433
+ generator .string += generator .TidyBreak ();
58434
+ generator .string += generator .IncIndent ();
58435
+
58436
+ for (const field of userDefinedFields)
58437
+ {
58438
+ generator .string += generator .Indent ();
58439
+ generator .string += '{';
58440
+ generator .string += generator .TidyBreak ();
58441
+ generator .string += generator .IncIndent ();
58442
+
58443
+ generator .string += generator .Indent ();
58444
+ generator .string += '"';
58445
+ generator .string += "@accessType";
58446
+ generator .string += '"';
58447
+ generator .string += ':';
58448
+ generator .string += generator .TidySpace ();
58449
+ generator .string += '"';
58450
+ generator .string += generator .AccessType (field .getAccessType ());
58451
+ generator .string += '"';
58452
+ generator .string += ',';
58453
+ generator .string += generator .TidyBreak ();
58454
+
58455
+ generator .string += generator .Indent ();
58456
+ generator .string += '"';
58457
+ generator .string += "@type";
58458
+ generator .string += '"';
58459
+ generator .string += ':';
58460
+ generator .string += generator .TidySpace ();
58461
+ generator .string += '"';
58462
+ generator .string += field .getTypeName ();
58463
+ generator .string += '"';
58464
+ generator .string += ',';
58465
+ generator .string += generator .TidyBreak ();
58466
+
58467
+ generator .string += generator .Indent ();
58468
+ generator .string += '"';
58469
+ generator .string += "@name";
58470
+ generator .string += '"';
58471
+ generator .string += ':';
58472
+ generator .string += generator .TidySpace ();
58473
+ generator .string += generator .JSONEncode (field .getName ());
58474
+ generator .string += generator .TidyBreak ();
58475
+
58476
+ generator .string += generator .DecIndent ();
58477
+ generator .string += generator .Indent ();
58478
+ generator .string += '}';
58479
+
58480
+ if (field !== userDefinedFields .at (-1))
58481
+ generator .string += ',';
58482
+
58483
+ generator .string += generator .TidyBreak ();
58484
+ }
58485
+
58486
+ generator .string += generator .DecIndent ();
58487
+ generator .string += generator .Indent ();
58488
+ generator .string += ']';
58489
+ generator .string += ',';
58490
+ generator .string += generator .TidyBreak ();
58491
+ }
58492
+
58493
+
58494
+ // URL
58495
+
58496
+ generator .string += generator .Indent ();
58497
+ generator .string += '"';
58498
+ generator .string += "@url";
58499
+ generator .string += '"';
58500
+ generator .string += ':';
58501
+ generator .string += generator .TidySpace ();
58502
+
58503
+ this ._url .toJSONStream (generator);
58504
+
58505
+ generator .string += generator .TidyBreak ();
58506
+
58507
+
58508
+ // End
58509
+
58510
+ generator .string += generator .DecIndent ();
58511
+ generator .string += generator .Indent ();
58512
+ generator .string += '}';
58513
+ generator .string += generator .TidyBreak ();
58514
+ generator .string += generator .DecIndent ();
58515
+ generator .string += generator .Indent ();
58516
+ generator .string += '}';
58517
+ },
56693
58518
  });
56694
58519
 
56695
58520
  for (const key of Reflect .ownKeys (X3DExternProtoDeclaration .prototype))
@@ -56982,6 +58807,73 @@ X3DRoute .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
56982
58807
  generator .string += "'";
56983
58808
  generator .string += "/>";
56984
58809
  },
58810
+ toJSONStream: function (generator)
58811
+ {
58812
+ const
58813
+ sourceNodeName = generator .LocalName (this [_sourceNode]),
58814
+ destinationNodeName = generator .LocalName (this [_destinationNode]);
58815
+
58816
+ generator .string += generator .Indent ();
58817
+ generator .string += '{';
58818
+ generator .string += generator .TidySpace ();
58819
+ generator .string += '"';
58820
+ generator .string += "ROUTE";
58821
+ generator .string += '"';
58822
+ generator .string += ':';
58823
+ generator .string += generator .TidyBreak ();
58824
+ generator .string += generator .IncIndent ();
58825
+ generator .string += generator .Indent ();
58826
+ generator .string += '{';
58827
+ generator .string += generator .TidyBreak ();
58828
+ generator .string += generator .IncIndent ();
58829
+
58830
+ generator .string += generator .Indent ();
58831
+ generator .string += '"';
58832
+ generator .string += "@fromNode";
58833
+ generator .string += '"';
58834
+ generator .string += ':';
58835
+ generator .string += generator .TidySpace ();
58836
+ generator .string += generator .JSONEncode (sourceNodeName);
58837
+ generator .string += ',';
58838
+ generator .string += generator .TidyBreak ();
58839
+
58840
+ generator .string += generator .Indent ();
58841
+ generator .string += '"';
58842
+ generator .string += "@fromField";
58843
+ generator .string += '"';
58844
+ generator .string += ':';
58845
+ generator .string += generator .TidySpace ();
58846
+ generator .string += generator .JSONEncode (this [_sourceField] .getName ());
58847
+ generator .string += ',';
58848
+ generator .string += generator .TidyBreak ();
58849
+
58850
+ generator .string += generator .Indent ();
58851
+ generator .string += '"';
58852
+ generator .string += "@toNode";
58853
+ generator .string += '"';
58854
+ generator .string += ':';
58855
+ generator .string += generator .TidySpace ();
58856
+ generator .string += generator .JSONEncode (destinationNodeName);
58857
+ generator .string += ',';
58858
+ generator .string += generator .TidyBreak ();
58859
+
58860
+ generator .string += generator .Indent ();
58861
+ generator .string += '"';
58862
+ generator .string += "@toField";
58863
+ generator .string += '"';
58864
+ generator .string += ':';
58865
+ generator .string += generator .TidySpace ();
58866
+ generator .string += generator .JSONEncode (this [_destinationField] .getName ());
58867
+ generator .string += generator .TidyBreak ();
58868
+
58869
+ generator .string += generator .DecIndent ();
58870
+ generator .string += generator .Indent ();
58871
+ generator .string += '}';
58872
+ generator .string += generator .TidyBreak ();
58873
+ generator .string += generator .DecIndent ();
58874
+ generator .string += generator .Indent ();
58875
+ generator .string += '}';
58876
+ },
56985
58877
  dispose: function ()
56986
58878
  {
56987
58879
  this .disconnect ();
@@ -57892,6 +59784,60 @@ X3DExecutionContext .prototype = Object .assign (Object .create (Base_X3DBaseNod
57892
59784
 
57893
59785
  this .getRoutes () .toXMLStream (generator);
57894
59786
 
59787
+ generator .LeaveScope ();
59788
+ generator .PopExecutionContext ();
59789
+ },
59790
+ toJSONStream: function (generator)
59791
+ {
59792
+ generator .PushExecutionContext (this);
59793
+ generator .EnterScope ();
59794
+ generator .ImportedNodes (this .getImportedNodes ());
59795
+
59796
+
59797
+ // Extern proto declarations
59798
+
59799
+ this .getExternProtoDeclarations () .toJSONStream (generator, true);
59800
+
59801
+
59802
+ // Proto declarations
59803
+
59804
+ this .getProtoDeclarations () .toJSONStream (generator, true);
59805
+
59806
+
59807
+ // Root nodes
59808
+
59809
+ if (this .getRootNodes () .length)
59810
+ {
59811
+ for (const rootNode of this .getRootNodes ())
59812
+ {
59813
+ generator .string += generator .Indent ();
59814
+
59815
+ if (rootNode)
59816
+ {
59817
+ rootNode .toJSONStream (generator);
59818
+ }
59819
+ else
59820
+ {
59821
+ generator .string += generator .Indent ();
59822
+ generator .string += "null";
59823
+ }
59824
+
59825
+ generator .string += ',';
59826
+ generator .string += generator .TidyBreak ();
59827
+ }
59828
+ }
59829
+
59830
+
59831
+ // Imported nodes
59832
+
59833
+ this .getImportedNodes () .toJSONStream (generator, true);
59834
+
59835
+
59836
+ // Routes
59837
+
59838
+ this .getRoutes () .toJSONStream (generator, true);
59839
+
59840
+
57895
59841
  generator .LeaveScope ();
57896
59842
  generator .PopExecutionContext ();
57897
59843
  },
@@ -58169,7 +60115,7 @@ const URLs_default_ = URLs;
58169
60115
  x_ite_Namespace.set ("x_ite/Browser/Networking/URLs", URLs_default_);
58170
60116
  /* harmony default export */ const Networking_URLs = (URLs_default_);
58171
60117
  ;// CONCATENATED MODULE: ./src/x_ite/Configuration/ComponentInfo.js
58172
- /* provided dependency */ var ComponentInfo_$ = __webpack_require__(93);
60118
+ /* provided dependency */ var ComponentInfo_$ = __webpack_require__(718);
58173
60119
  /*******************************************************************************
58174
60120
  *
58175
60121
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -58262,6 +60208,38 @@ ComponentInfo .prototype = Object .assign (Object .create (Base_X3DObject.protot
58262
60208
  generator .string += "'";
58263
60209
  generator .string += "/>";
58264
60210
  },
60211
+ toJSONStream: function (generator)
60212
+ {
60213
+ generator .string += generator .Indent ();
60214
+ generator .string += '{';
60215
+ generator .string += generator .TidyBreak ();
60216
+ generator .string += generator .IncIndent ();
60217
+
60218
+ generator .string += generator .Indent ();
60219
+ generator .string += '"';
60220
+ generator .string += "@name";
60221
+ generator .string += '"';
60222
+ generator .string += ':';
60223
+ generator .string += generator .TidySpace ();
60224
+ generator .string += '"';
60225
+ generator .string += this .name;
60226
+ generator .string += '"';
60227
+ generator .string += ',';
60228
+ generator .string += generator .TidyBreak ();
60229
+
60230
+ generator .string += generator .Indent ();
60231
+ generator .string += '"';
60232
+ generator .string += "@level";
60233
+ generator .string += '"';
60234
+ generator .string += ':';
60235
+ generator .string += generator .TidySpace ();
60236
+ generator .string += this .level;
60237
+ generator .string += generator .TidyBreak ();
60238
+
60239
+ generator .string += generator .DecIndent ();
60240
+ generator .string += generator .Indent ();
60241
+ generator .string += '}';
60242
+ },
58265
60243
  });
58266
60244
 
58267
60245
  for (const key of Reflect .ownKeys (ComponentInfo .prototype))
@@ -58445,6 +60423,52 @@ UnitInfo .prototype = Object .assign (Object .create (Base_X3DObject.prototype),
58445
60423
  generator .string += "'";
58446
60424
  generator .string += "/>";
58447
60425
  },
60426
+ toJSONStream: function (generator, _throw)
60427
+ {
60428
+ if (this .conversionFactor === 1)
60429
+ throw new Error ("conversionFactor is 1");
60430
+
60431
+ generator .string += generator .Indent ();
60432
+
60433
+ generator .string += '{';
60434
+ generator .string += generator .TidyBreak ();
60435
+ generator .string += generator .IncIndent ();
60436
+
60437
+ generator .string += generator .Indent ();
60438
+ generator .string += '"';
60439
+ generator .string += "@category";
60440
+ generator .string += '"';
60441
+ generator .string += ':';
60442
+ generator .string += generator .TidySpace ();
60443
+ generator .string += '"';
60444
+ generator .string += this .category;
60445
+ generator .string += '"';
60446
+ generator .string += ',';
60447
+ generator .string += generator .TidyBreak ();
60448
+
60449
+ generator .string += generator .Indent ();
60450
+ generator .string += '"';
60451
+ generator .string += "@name";
60452
+ generator .string += '"';
60453
+ generator .string += ':';
60454
+ generator .string += generator .TidySpace ();
60455
+ generator .string += generator .JSONEncode (this .name);
60456
+ generator .string += ',';
60457
+ generator .string += generator .TidyBreak ();
60458
+
60459
+ generator .string += generator .Indent ();
60460
+ generator .string += '"';
60461
+ generator .string += "@conversionFactor";
60462
+ generator .string += '"';
60463
+ generator .string += ':';
60464
+ generator .string += generator .TidySpace ();
60465
+ generator .string += generator .DoublePrecision (this .conversionFactor);
60466
+ generator .string += generator .TidyBreak ();
60467
+
60468
+ generator .string += generator .DecIndent ();
60469
+ generator .string += generator .Indent ();
60470
+ generator .string += '}';
60471
+ },
58448
60472
  });
58449
60473
 
58450
60474
  for (const key of Reflect .ownKeys (UnitInfo .prototype))
@@ -58646,6 +60670,58 @@ X3DExportedNode .prototype = Object .assign (Object .create (Base_X3DObject.prot
58646
60670
 
58647
60671
  generator .string += "/>";
58648
60672
  },
60673
+ toJSONStream: function (generator)
60674
+ {
60675
+ const localName = generator .LocalName (this [_localNode]);
60676
+
60677
+ generator .string += generator .Indent ();
60678
+ generator .string += '{';
60679
+ generator .string += generator .TidySpace ();
60680
+ generator .string += '"';
60681
+ generator .string += "EXPORT";
60682
+ generator .string += '"';
60683
+ generator .string += ':';
60684
+ generator .string += generator .TidyBreak ();
60685
+ generator .string += generator .IncIndent ();
60686
+ generator .string += generator .Indent ();
60687
+ generator .string += '{';
60688
+ generator .string += generator .TidyBreak ();
60689
+ generator .string += generator .IncIndent ();
60690
+
60691
+ generator .string += generator .Indent ();
60692
+ generator .string += '"';
60693
+ generator .string += "@localDEF";
60694
+ generator .string += '"';
60695
+ generator .string += ':';
60696
+ generator .string += generator .TidySpace ();
60697
+ generator .string += generator .JSONEncode (localName);
60698
+
60699
+ if (this [X3DExportedNode_exportedName] !== localName)
60700
+ {
60701
+ generator .string += ',';
60702
+ generator .string += generator .TidyBreak ();
60703
+ generator .string += generator .Indent ();
60704
+ generator .string += '"';
60705
+ generator .string += "@AS";
60706
+ generator .string += '"';
60707
+ generator .string += ':';
60708
+ generator .string += generator .TidySpace ();
60709
+ generator .string += generator .JSONEncode (this [X3DExportedNode_exportedName]);
60710
+ generator .string += generator .TidyBreak ();
60711
+ }
60712
+ else
60713
+ {
60714
+ generator .string += generator .TidyBreak ();
60715
+ }
60716
+
60717
+ generator .string += generator .DecIndent ();
60718
+ generator .string += generator .Indent ();
60719
+ generator .string += '}';
60720
+ generator .string += generator .TidyBreak ();
60721
+ generator .string += generator .DecIndent ();
60722
+ generator .string += generator .Indent ();
60723
+ generator .string += '}';
60724
+ },
58649
60725
  });
58650
60726
 
58651
60727
  for (const key of Reflect .ownKeys (X3DExportedNode .prototype))
@@ -59325,6 +61401,345 @@ X3DScene .prototype = Object .assign (Object .create (Execution_X3DExecutionCont
59325
61401
  generator .string += "</X3D>";
59326
61402
  generator .string += generator .TidyBreak ();
59327
61403
  },
61404
+ toJSONStream: function (generator)
61405
+ {
61406
+ // X3D
61407
+
61408
+ generator .string += '{';
61409
+ generator .string += generator .TidySpace ();
61410
+ generator .string += '"';
61411
+ generator .string += "X3D";
61412
+ generator .string += '"';
61413
+ generator .string += ':';
61414
+ generator .string += generator .TidySpace ();
61415
+ generator .string += '{';
61416
+ generator .string += generator .TidyBreak ();
61417
+ generator .string += generator .IncIndent ();
61418
+ generator .string += generator .IncIndent ();
61419
+
61420
+
61421
+ // Encoding
61422
+
61423
+ generator .string += generator .Indent ();
61424
+ generator .string += '"';
61425
+ generator .string += "encoding";
61426
+ generator .string += '"';
61427
+ generator .string += ':';
61428
+ generator .string += generator .TidySpace ();
61429
+ generator .string += '"';
61430
+ generator .string += "UTF-8";
61431
+ generator .string += '"';
61432
+ generator .string += ',';
61433
+ generator .string += generator .TidyBreak ();
61434
+
61435
+
61436
+ // Profile
61437
+
61438
+ generator .string += generator .Indent ();
61439
+ generator .string += '"';
61440
+ generator .string += "@profile";
61441
+ generator .string += '"';
61442
+ generator .string += ':';
61443
+ generator .string += generator .TidySpace ();
61444
+ generator .string += '"';
61445
+ generator .string += this .getProfile () ? this .getProfile () .name : "Full";
61446
+ generator .string += '"';
61447
+ generator .string += ',';
61448
+ generator .string += generator .TidyBreak ();
61449
+
61450
+
61451
+ // Version
61452
+
61453
+ generator .string += generator .Indent ();
61454
+ generator .string += '"';
61455
+ generator .string += "@version";
61456
+ generator .string += '"';
61457
+ generator .string += ':';
61458
+ generator .string += generator .TidySpace ();
61459
+ generator .string += '"';
61460
+ generator .string += this .getSpecificationVersion ();
61461
+ generator .string += '"';
61462
+ generator .string += ',';
61463
+ generator .string += generator .TidyBreak ();
61464
+
61465
+
61466
+ // XSD noNamespaceSchemaLocation
61467
+
61468
+ generator .string += generator .Indent ();
61469
+ generator .string += '"';
61470
+ generator .string += "@xsd:noNamespaceSchemaLocation";
61471
+ generator .string += '"';
61472
+ generator .string += ':';
61473
+ generator .string += generator .TidySpace ();
61474
+ generator .string += '"';
61475
+ generator .string += "http://www.web3d.org/specifications/x3d-";
61476
+ generator .string += LATEST_VERSION;
61477
+ generator .string += ".xsd";
61478
+ generator .string += '"';
61479
+ generator .string += ',';
61480
+ generator .string += generator .TidyBreak ();
61481
+
61482
+
61483
+ // JSON schema
61484
+
61485
+ generator .string += generator .Indent ();
61486
+ generator .string += '"';
61487
+ generator .string += "JSON schema";
61488
+ generator .string += '"';
61489
+ generator .string += ':';
61490
+ generator .string += generator .TidySpace ();
61491
+ generator .string += '"';
61492
+ generator .string += "http://www.web3d.org/specifications/x3d-";
61493
+ generator .string += LATEST_VERSION;
61494
+ generator .string += "-JSONSchema.json";
61495
+ generator .string += '"';
61496
+ generator .string += ',';
61497
+ generator .string += generator .TidyBreak ();
61498
+
61499
+
61500
+ // Head
61501
+
61502
+ const outputUnits = this .getUnits () .some (unit => unit .conversionFactor !== 1);
61503
+
61504
+ if (this .getComponents () .length || outputUnits || this .getMetaDatas () .size)
61505
+ {
61506
+ let headLastProperty = false;
61507
+
61508
+ generator .string += generator .Indent ();
61509
+ generator .string += '"';
61510
+ generator .string += "head";
61511
+ generator .string += '"';
61512
+ generator .string += ':';
61513
+ generator .string += generator .TidySpace ();
61514
+ generator .string += '{';
61515
+ generator .string += generator .TidyBreak ();
61516
+ generator .string += generator .IncIndent ();
61517
+
61518
+
61519
+ // Meta data
61520
+
61521
+ if (this .getMetaDatas () .size)
61522
+ {
61523
+ if (headLastProperty)
61524
+ {
61525
+ generator .string += ',';
61526
+ generator .string += generator .TidyBreak ();
61527
+ }
61528
+
61529
+
61530
+ // Meta data begin
61531
+
61532
+ generator .string += generator .Indent ();
61533
+ generator .string += '"';
61534
+ generator .string += "meta";
61535
+ generator .string += '"';
61536
+ generator .string += ':';
61537
+ generator .string += generator .TidySpace ();
61538
+ generator .string += '[';
61539
+ generator .string += generator .TidyBreak ();
61540
+ generator .string += generator .IncIndent ();
61541
+
61542
+
61543
+ // Meta data
61544
+
61545
+ let i = 0;
61546
+
61547
+ for (const [key, value] of this .getMetaDatas ())
61548
+ {
61549
+ generator .string += generator .Indent ();
61550
+ generator .string += '{';
61551
+ generator .string += generator .TidyBreak ();
61552
+ generator .string += generator .IncIndent ();
61553
+
61554
+ generator .string += generator .Indent ();
61555
+ generator .string += '"';
61556
+ generator .string += "@name";
61557
+ generator .string += '"';
61558
+ generator .string += ':';
61559
+ generator .string += generator .TidySpace ();
61560
+ generator .string += generator .JSONEncode (key);
61561
+ generator .string += ',';
61562
+ generator .string += generator .TidyBreak ();
61563
+
61564
+ generator .string += generator .Indent ();
61565
+ generator .string += '"';
61566
+ generator .string += "@content";
61567
+ generator .string += '"';
61568
+ generator .string += ':';
61569
+ generator .string += generator .TidySpace ();
61570
+ generator .string += generator .JSONEncode (value);
61571
+ generator .string += generator .TidyBreak ();
61572
+
61573
+ generator .string += generator .DecIndent ();
61574
+ generator .string += generator .Indent ();
61575
+ generator .string += '}';
61576
+
61577
+ if (++ i !== this .getMetaDatas () .size)
61578
+ generator .string += ',';
61579
+
61580
+ generator .string += generator .TidyBreak ();
61581
+ }
61582
+
61583
+
61584
+ // Meta data end
61585
+
61586
+ generator .string += generator .DecIndent ();
61587
+ generator .string += generator .Indent ();
61588
+ generator .string += ']';
61589
+
61590
+ headLastProperty = true;
61591
+ }
61592
+
61593
+
61594
+ // Components
61595
+
61596
+ if (this .getComponents () .length)
61597
+ {
61598
+ if (headLastProperty)
61599
+ {
61600
+ generator .string += ',';
61601
+ generator .string += generator .TidyBreak ();
61602
+ }
61603
+
61604
+
61605
+ // Components begin
61606
+
61607
+ generator .string += generator .Indent ();
61608
+ generator .string += '"';
61609
+ generator .string += "component";
61610
+ generator .string += '"';
61611
+ generator .string += ':';
61612
+ generator .string += generator .TidySpace ();
61613
+ generator .string += '[';
61614
+ generator .string += generator .TidyBreak ();
61615
+ generator .string += generator .IncIndent ();
61616
+
61617
+
61618
+ // Components
61619
+
61620
+ this .getComponents () .toJSONStream (generator);
61621
+
61622
+
61623
+ // Components end
61624
+
61625
+ generator .string += generator .DecIndent ();
61626
+ generator .string += generator .Indent ();
61627
+ generator .string += ']';
61628
+
61629
+ headLastProperty = true;
61630
+ }
61631
+
61632
+
61633
+ // Units
61634
+
61635
+ if (outputUnits)
61636
+ {
61637
+ if (headLastProperty)
61638
+ {
61639
+ generator .string += ',';
61640
+ generator .string += generator .TidyBreak ();
61641
+ }
61642
+
61643
+
61644
+ // Units begin
61645
+
61646
+ generator .string += generator .Indent ();
61647
+ generator .string += '"';
61648
+ generator .string += "unit";
61649
+ generator .string += '"';
61650
+ generator .string += ':';
61651
+ generator .string += generator .TidySpace ();
61652
+ generator .string += '[';
61653
+ generator .string += generator .TidyBreak ();
61654
+ generator .string += generator .IncIndent ();
61655
+
61656
+
61657
+ // Units
61658
+
61659
+ this .getUnits () .toJSONStream (generator);
61660
+
61661
+
61662
+ // Unit end
61663
+
61664
+ generator .string += generator .DecIndent ();
61665
+ generator .string += generator .Indent ();
61666
+ generator .string += ']';
61667
+
61668
+ headLastProperty = true;
61669
+ }
61670
+
61671
+
61672
+ // Head end
61673
+
61674
+ generator .string += generator .TidyBreak ();
61675
+ generator .string += generator .DecIndent ();
61676
+ generator .string += generator .Indent ();
61677
+ generator .string += '}';
61678
+ generator .string += ',';
61679
+ generator .string += generator .TidyBreak ();
61680
+ }
61681
+
61682
+ // Scene
61683
+
61684
+ generator .string += generator .Indent ();
61685
+ generator .string += '"';
61686
+ generator .string += "Scene";
61687
+ generator .string += '"';
61688
+ generator .string += ':';
61689
+ generator .string += generator .TidySpace ();
61690
+ generator .string += '{';
61691
+ generator .string += generator .TidyBreak ();
61692
+ generator .string += generator .IncIndent ();
61693
+ generator .string += generator .Indent ();
61694
+ generator .string += '"';
61695
+ generator .string += "-children";
61696
+ generator .string += '"';
61697
+ generator .string += ':';
61698
+ generator .string += generator .TidySpace ();
61699
+ generator .string += '[';
61700
+ generator .string += generator .TidyBreak ();
61701
+ generator .string += generator .IncIndent ();
61702
+
61703
+ const exportedNodes = this .getExportedNodes ();
61704
+
61705
+ generator .PushExecutionContext (this);
61706
+ generator .EnterScope ();
61707
+ generator .ExportedNodes (exportedNodes);
61708
+
61709
+ Execution_X3DExecutionContext.prototype.toJSONStream.call (this, generator);
61710
+
61711
+ // Exported nodes
61712
+
61713
+ this .getExportedNodes () .toJSONStream (generator, true);
61714
+
61715
+ generator .string = generator .string .replace (/,(\s*)$/s, "$1");
61716
+
61717
+ generator .LeaveScope ();
61718
+ generator .PopExecutionContext ();
61719
+
61720
+ // Scene end
61721
+
61722
+ generator .string += generator .DecIndent ();
61723
+ generator .string += generator .Indent ();
61724
+ generator .string += ']';
61725
+ generator .string += generator .TidyBreak ();
61726
+ generator .string += generator .DecIndent ();
61727
+ generator .string += generator .Indent ();
61728
+ generator .string += '}';
61729
+
61730
+
61731
+ // X3D end
61732
+
61733
+ generator .string += generator .TidyBreak ();
61734
+ generator .string += generator .DecIndent ();
61735
+ generator .string += generator .Indent ();
61736
+ generator .string += '}';
61737
+ generator .string += generator .TidyBreak ();
61738
+ generator .string += generator .DecIndent ();
61739
+ generator .string += generator .Indent ();
61740
+ generator .string += '}';
61741
+ generator .string += generator .TidyBreak ();
61742
+ },
59328
61743
  });
59329
61744
 
59330
61745
  for (const key of Reflect .ownKeys (X3DScene .prototype))
@@ -59623,7 +62038,7 @@ const DataStorage_default_ = DataStorage;
59623
62038
  x_ite_Namespace.set ("standard/Utility/DataStorage", DataStorage_default_);
59624
62039
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
59625
62040
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
59626
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(93);
62041
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(718);
59627
62042
  /*******************************************************************************
59628
62043
  *
59629
62044
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66589,8 +69004,8 @@ const OrientationChaser_default_ = OrientationChaser;
66589
69004
  x_ite_Namespace.set ("x_ite/Components/Followers/OrientationChaser", OrientationChaser_default_);
66590
69005
  /* harmony default export */ const Followers_OrientationChaser = (OrientationChaser_default_);
66591
69006
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
66592
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(442);
66593
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(93);
69007
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(248);
69008
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(718);
66594
69009
  /*******************************************************************************
66595
69010
  *
66596
69011
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -67455,8 +69870,8 @@ const ExamineViewer_default_ = ExamineViewer;
67455
69870
  x_ite_Namespace.set ("x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
67456
69871
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
67457
69872
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
67458
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(442);
67459
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(93);
69873
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(248);
69874
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(718);
67460
69875
  /*******************************************************************************
67461
69876
  *
67462
69877
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -68395,8 +70810,8 @@ const FlyViewer_default_ = FlyViewer;
68395
70810
  x_ite_Namespace.set ("x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
68396
70811
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
68397
70812
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
68398
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(442);
68399
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(93);
70813
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(248);
70814
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(718);
68400
70815
  /*******************************************************************************
68401
70816
  *
68402
70817
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -68708,8 +71123,8 @@ const NoneViewer_default_ = NoneViewer;
68708
71123
  x_ite_Namespace.set ("x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
68709
71124
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
68710
71125
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
68711
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(442);
68712
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(93);
71126
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(248);
71127
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(718);
68713
71128
  /*******************************************************************************
68714
71129
  *
68715
71130
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -70311,8 +72726,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
70311
72726
  x_ite_Namespace.set ("x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
70312
72727
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
70313
72728
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
70314
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(442);
70315
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(93);
72729
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(248);
72730
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(718);
70316
72731
  /*******************************************************************************
70317
72732
  *
70318
72733
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -70922,8 +73337,8 @@ const X3DPointingDeviceSensorContext_default_ = X3DPointingDeviceSensorContext;
70922
73337
  x_ite_Namespace.set ("x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext", X3DPointingDeviceSensorContext_default_);
70923
73338
  /* harmony default export */ const PointingDeviceSensor_X3DPointingDeviceSensorContext = (X3DPointingDeviceSensorContext_default_);
70924
73339
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
70925
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(93);
70926
- /* provided dependency */ var ResizeSensor = __webpack_require__(99);
73340
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(718);
73341
+ /* provided dependency */ var ResizeSensor = __webpack_require__(726);
70927
73342
  /*******************************************************************************
70928
73343
  *
70929
73344
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -81942,7 +84357,7 @@ const X3DRoutingContext_default_ = X3DRoutingContext;
81942
84357
  x_ite_Namespace.set ("x_ite/Routing/X3DRoutingContext", X3DRoutingContext_default_);
81943
84358
  /* harmony default export */ const Routing_X3DRoutingContext = (X3DRoutingContext_default_);
81944
84359
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowserContext.js
81945
- /* provided dependency */ var X3DBrowserContext_$ = __webpack_require__(93);
84360
+ /* provided dependency */ var X3DBrowserContext_$ = __webpack_require__(718);
81946
84361
  /*******************************************************************************
81947
84362
  *
81948
84363
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -82283,7 +84698,7 @@ Object .assign (X3DBrowserContext,
82283
84698
  X3DBrowserContext_$("x3d-canvas, X3DCanvas") .each (function (_, canvas)
82284
84699
  {
82285
84700
  const
82286
- X3D = window [Symbol .for ("X_ITE.X3D-8.3.3")],
84701
+ X3D = window [Symbol .for ("X_ITE.X3D-8.4.0")],
82287
84702
  browser = X3D .getBrowser (canvas);
82288
84703
 
82289
84704
  if (! browser)
@@ -101049,7 +103464,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
101049
103464
  x_ite_Namespace.set ("x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
101050
103465
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
101051
103466
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
101052
- /* provided dependency */ var AudioClip_$ = __webpack_require__(93);
103467
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(718);
101053
103468
  /*******************************************************************************
101054
103469
  *
101055
103470
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -103746,7 +106161,7 @@ const Components_Sound_default_ = undefined;
103746
106161
  x_ite_Namespace.set ("x_ite/Components/Sound", Components_Sound_default_);
103747
106162
  /* harmony default export */ const Components_Sound = ((/* unused pure expression or super */ null && (Components_Sound_default_)));
103748
106163
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
103749
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(93);
106164
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(718);
103750
106165
  /*******************************************************************************
103751
106166
  *
103752
106167
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -104669,7 +107084,7 @@ const MultiTextureTransform_default_ = MultiTextureTransform;
104669
107084
  x_ite_Namespace.set ("x_ite/Components/Texturing/MultiTextureTransform", MultiTextureTransform_default_);
104670
107085
  /* harmony default export */ const Texturing_MultiTextureTransform = (MultiTextureTransform_default_);
104671
107086
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/PixelTexture.js
104672
- /* provided dependency */ var PixelTexture_$ = __webpack_require__(93);
107087
+ /* provided dependency */ var PixelTexture_$ = __webpack_require__(718);
104673
107088
  /*******************************************************************************
104674
107089
  *
104675
107090
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -105372,7 +107787,7 @@ const Components_default_ = Components;
105372
107787
  x_ite_Namespace.set ("x_ite/Components", Components_default_);
105373
107788
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
105374
107789
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
105375
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(93);
107790
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(718);
105376
107791
  /*******************************************************************************
105377
107792
  * MIT License
105378
107793
  *
@@ -105913,6 +108328,10 @@ ProfileInfo .prototype = Object .assign (Object .create (Base_X3DObject.prototyp
105913
108328
  {
105914
108329
  generator .string += this .name;
105915
108330
  },
108331
+ toJSONStream: function (generator)
108332
+ {
108333
+ generator .string += this .name;
108334
+ },
105916
108335
  });
105917
108336
 
105918
108337
  for (const key of Reflect .ownKeys (ProfileInfo .prototype))
@@ -106605,7 +109024,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
106605
109024
  x_ite_Namespace.set ("x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
106606
109025
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
106607
109026
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
106608
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(93);
109027
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(718);
106609
109028
  /*******************************************************************************
106610
109029
  *
106611
109030
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107505,7 +109924,7 @@ const X3DBrowser_default_ = X3DBrowser;
107505
109924
  x_ite_Namespace.set ("x_ite/Browser/X3DBrowser", X3DBrowser_default_);
107506
109925
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
107507
109926
  ;// CONCATENATED MODULE: ./src/x_ite/Fallback.js
107508
- /* provided dependency */ var Fallback_$ = __webpack_require__(93);
109927
+ /* provided dependency */ var Fallback_$ = __webpack_require__(718);
107509
109928
  /*******************************************************************************
107510
109929
  *
107511
109930
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107684,14 +110103,14 @@ const MicroTime_default_ = undefined;
107684
110103
  x_ite_Namespace.set ("standard/Time/MicroTime", MicroTime_default_);
107685
110104
  /* harmony default export */ const MicroTime = ((/* unused pure expression or super */ null && (MicroTime_default_)));
107686
110105
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
107687
- /* provided dependency */ var jquery_$ = __webpack_require__(93);
110106
+ /* provided dependency */ var jquery_$ = __webpack_require__(718);
107688
110107
  const jquery_default_ = jquery_$;
107689
110108
  ;
107690
110109
 
107691
110110
  x_ite_Namespace.set ("lib/jquery", jquery_default_);
107692
110111
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
107693
110112
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
107694
- /* provided dependency */ var X3D_$ = __webpack_require__(93);
110113
+ /* provided dependency */ var X3D_$ = __webpack_require__(718);
107695
110114
  /*******************************************************************************
107696
110115
  *
107697
110116
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -107946,7 +110365,7 @@ const X3D_default_ = X3D;
107946
110365
  x_ite_Namespace.set ("x_ite/X3D", X3D_default_);
107947
110366
  /* harmony default export */ const x_ite_X3D = (X3D_default_);
107948
110367
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvas.js
107949
- /* provided dependency */ var X3DCanvas_$ = __webpack_require__(93);
110368
+ /* provided dependency */ var X3DCanvas_$ = __webpack_require__(718);
107950
110369
  /*******************************************************************************
107951
110370
  *
107952
110371
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -108196,7 +110615,7 @@ x_ite_Namespace.set ("shim", shim_default_);
108196
110615
 
108197
110616
  // Assign X3D to global namespace.
108198
110617
 
108199
- window [Symbol .for ("X_ITE.X3D-8.3.3")] = x_ite_X3D;
110618
+ window [Symbol .for ("X_ITE.X3D-8.4.0")] = x_ite_X3D;
108200
110619
 
108201
110620
  x_ite_X3DCanvas.define ();
108202
110621