x_ite 8.3.2 → 8.3.3

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 (112) hide show
  1. package/.github/workflows/pages-deploy.yml +1 -1
  2. package/.vscode/settings.json +2 -1
  3. package/dist/LICENSE.md +4 -4
  4. package/dist/assets/components/Annotation.js +13 -13
  5. package/dist/assets/components/Annotation.min.js +1 -1
  6. package/dist/assets/components/CADGeometry.js +13 -13
  7. package/dist/assets/components/CADGeometry.min.js +1 -1
  8. package/dist/assets/components/CubeMapTexturing.js +25 -25
  9. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  10. package/dist/assets/components/DIS.js +13 -13
  11. package/dist/assets/components/DIS.min.js +1 -1
  12. package/dist/assets/components/EventUtilities.js +9 -9
  13. package/dist/assets/components/EventUtilities.min.js +1 -1
  14. package/dist/assets/components/Geometry2D.js +19 -19
  15. package/dist/assets/components/Geometry2D.min.js +1 -1
  16. package/dist/assets/components/Geospatial.js +33 -33
  17. package/dist/assets/components/Geospatial.min.js +1 -1
  18. package/dist/assets/components/HAnim.js +61 -74
  19. package/dist/assets/components/HAnim.min.js +1 -1
  20. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  21. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  22. package/dist/assets/components/Layout.js +27 -27
  23. package/dist/assets/components/Layout.min.js +1 -1
  24. package/dist/assets/components/NURBS.js +24 -24
  25. package/dist/assets/components/NURBS.min.js +1 -1
  26. package/dist/assets/components/ParticleSystems.js +23 -23
  27. package/dist/assets/components/ParticleSystems.min.js +1 -1
  28. package/dist/assets/components/Picking.js +19 -19
  29. package/dist/assets/components/Picking.min.js +1 -1
  30. package/dist/assets/components/RigidBodyPhysics.js +17 -17
  31. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  32. package/dist/assets/components/Scripting.js +28 -28
  33. package/dist/assets/components/Scripting.min.js +1 -1
  34. package/dist/assets/components/Text.js +24 -24
  35. package/dist/assets/components/Text.min.js +1 -1
  36. package/dist/assets/components/{ProjectiveTextureMapping.js → TextureProjector.js} +39 -39
  37. package/dist/assets/components/TextureProjector.min.js +1 -0
  38. package/dist/assets/components/Texturing3D.js +27 -27
  39. package/dist/assets/components/Texturing3D.min.js +1 -1
  40. package/dist/assets/components/VolumeRendering.js +19 -19
  41. package/dist/assets/components/VolumeRendering.min.js +1 -1
  42. package/dist/assets/components/X_ITE.js +9 -9
  43. package/dist/assets/components/X_ITE.min.js +1 -1
  44. package/dist/x_ite.css +1 -1
  45. package/dist/x_ite.js +1492 -1291
  46. package/dist/x_ite.min.js +1 -1
  47. package/dist/x_ite.zip +0 -0
  48. package/docs/Gemfile +1 -4
  49. package/docs/_config.yml +3 -3
  50. package/docs/_posts/getting-started.md +147 -441
  51. package/docs/_posts/reference/scene-services.md +13 -2
  52. package/docs/_posts/what's-new.md +21 -3
  53. package/docs/_tabs/playground.html +36 -40
  54. package/docs/assets/css/style.scss +18 -0
  55. package/package.json +1 -1
  56. package/src/assets/components/{ProjectiveTextureMapping.js → TextureProjector.js} +5 -5
  57. package/src/examples.js +1 -1
  58. package/src/tests.js +5 -5
  59. package/src/x_ite/Base/X3DInfoArray.js +21 -21
  60. package/src/x_ite/Base/X3DObject.js +29 -20
  61. package/src/x_ite/Base/X3DObjectArrayField.js +27 -26
  62. package/src/x_ite/Base/X3DTypedArrayField.js +34 -32
  63. package/src/x_ite/Browser/DOMIntegration.js +4 -3
  64. package/src/x_ite/Browser/VERSION.js +1 -1
  65. package/src/x_ite/Browser/X3DBrowser.js +43 -28
  66. package/src/x_ite/Components/Core/X3DNode.js +196 -187
  67. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +113 -90
  68. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +18 -43
  69. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +24 -25
  70. package/src/x_ite/Components/HAnim/HAnimJoint.js +19 -31
  71. package/src/x_ite/Components/Sound/X3DSoundProcessingNode.js +14 -1
  72. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +0 -1
  73. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/TextureProjector.js +1 -1
  74. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/TextureProjectorParallel.js +1 -1
  75. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/X3DTextureProjectorNode.js +0 -0
  76. package/src/x_ite/Components/Time/TimeSensor.js +5 -0
  77. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +1 -0
  78. package/src/x_ite/Configuration/ComponentInfo.js +20 -23
  79. package/src/x_ite/Configuration/ProfileInfo.js +6 -6
  80. package/src/x_ite/Configuration/SupportedComponents.js +22 -20
  81. package/src/x_ite/Configuration/SupportedProfiles.js +1 -1
  82. package/src/x_ite/Configuration/UnitInfo.js +24 -27
  83. package/src/x_ite/Execution/X3DExecutionContext.js +28 -59
  84. package/src/x_ite/Execution/X3DExportedNode.js +23 -28
  85. package/src/x_ite/Execution/X3DImportedNode.js +63 -67
  86. package/src/x_ite/Execution/X3DScene.js +98 -117
  87. package/src/x_ite/Fields/ArrayFields.js +57 -55
  88. package/src/x_ite/Fields/SFBool.js +6 -6
  89. package/src/x_ite/Fields/SFColor.js +10 -12
  90. package/src/x_ite/Fields/SFDouble.js +7 -10
  91. package/src/x_ite/Fields/SFFloat.js +7 -10
  92. package/src/x_ite/Fields/SFImage.js +33 -8
  93. package/src/x_ite/Fields/SFInt32.js +6 -6
  94. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +13 -13
  95. package/src/x_ite/Fields/SFNode.js +42 -19
  96. package/src/x_ite/Fields/SFRotation.js +13 -13
  97. package/src/x_ite/Fields/SFString.js +6 -7
  98. package/src/x_ite/Fields/SFTime.js +6 -6
  99. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +10 -10
  100. package/src/x_ite/InputOutput/FileLoader.js +1 -1
  101. package/src/x_ite/InputOutput/Generator.js +117 -17
  102. package/src/x_ite/Parser/VRMLParser.js +24 -27
  103. package/src/x_ite/Parser/X3DParser.js +0 -4
  104. package/src/x_ite/Parser/XMLParser.js +2 -2
  105. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +59 -64
  106. package/src/x_ite/Prototype/X3DProtoDeclaration.js +86 -93
  107. package/src/x_ite/Rendering/X3DRenderObject.js +6 -1
  108. package/src/x_ite/Routing/X3DRoute.js +37 -40
  109. package/src/x_ite.html +1 -1
  110. package/x_ite.min.html +1 -1
  111. package/dist/assets/components/ProjectiveTextureMapping.min.js +0 -1
  112. package/docs/Gemfile.lock +0 -116
@@ -45,7 +45,6 @@
45
45
  *
46
46
  ******************************************************************************/
47
47
 
48
- import Fields from "../../Fields.js";
49
48
  import X3DChildNode from "../Core/X3DChildNode.js";
50
49
  import X3DTimeDependentNode from "../Time/X3DTimeDependentNode.js";
51
50
  import X3DConstants from "../../Base/X3DConstants.js";
@@ -182,7 +182,7 @@ TextureProjector .prototype = Object .assign (Object .create (X3DTextureProjecto
182
182
  },
183
183
  getComponentName: function ()
184
184
  {
185
- return "ProjectiveTextureMapping";
185
+ return "TextureProjector";
186
186
  },
187
187
  getContainerField: function ()
188
188
  {
@@ -203,7 +203,7 @@ TextureProjectorParallel .prototype = Object .assign (Object .create (X3DTexture
203
203
  },
204
204
  getComponentName: function ()
205
205
  {
206
- return "ProjectiveTextureMapping";
206
+ return "TextureProjector";
207
207
  },
208
208
  getContainerField: function ()
209
209
  {
@@ -197,6 +197,11 @@ TimeSensor .prototype = Object .assign (Object .create (X3DSensorNode .prototype
197
197
 
198
198
  this ._time = time;
199
199
  },
200
+ dispose: function ()
201
+ {
202
+ X3DTimeDependentNode .prototype .dispose .call (this);
203
+ X3DSensorNode .prototype .dispose .call (this);
204
+ },
200
205
  });
201
206
 
202
207
  export default TimeSensor;
@@ -342,6 +342,7 @@ X3DTimeDependentNode .prototype = Object .assign (Object .create (X3DChildNode .
342
342
  set_resume: function () { },
343
343
  set_stop: function () { },
344
344
  set_time: function () { },
345
+ dispose: function () { }
345
346
  });
346
347
 
347
348
  export default X3DTimeDependentNode;
@@ -47,7 +47,6 @@
47
47
 
48
48
  import X3DObject from "../Base/X3DObject.js";
49
49
  import URLs from "../Browser/Networking/URLs.js";
50
- import Generator from "../InputOutput/Generator.js";
51
50
 
52
51
  function ComponentInfo ({ name, level, title, providerUrl, external = false, dependencies = [ ] })
53
52
  {
@@ -67,31 +66,29 @@ ComponentInfo .prototype = Object .assign (Object .create (X3DObject .prototype)
67
66
  {
68
67
  return "ComponentInfo";
69
68
  },
70
- toVRMLStream: function (stream)
69
+ toVRMLStream: function (generator)
71
70
  {
72
- stream .string += "COMPONENT";
73
- stream .string += " ";
74
- stream .string += this .name;
75
- stream .string += " ";
76
- stream .string += ":";
77
- stream .string += " ";
78
- stream .string += this .level;
71
+ generator .string += "COMPONENT";
72
+ generator .string += generator .Space ();
73
+ generator .string += this .name;
74
+ generator .string += generator .TidySpace ();
75
+ generator .string += ":";
76
+ generator .string += generator .TidySpace ();
77
+ generator .string += this .level;
79
78
  },
80
- toXMLStream: function (stream)
79
+ toXMLStream: function (generator)
81
80
  {
82
- const generator = Generator .Get (stream);
83
-
84
- stream .string += generator .Indent ();
85
- stream .string += "<component";
86
- stream .string += " ";
87
- stream .string += "name='";
88
- stream .string += this .name;
89
- stream .string += "'";
90
- stream .string += " ";
91
- stream .string += "level='";
92
- stream .string += this .level;
93
- stream .string += "'";
94
- stream .string += "/>";
81
+ generator .string += generator .Indent ();
82
+ generator .string += "<component";
83
+ generator .string += generator .Space ();
84
+ generator .string += "name='";
85
+ generator .string += this .name;
86
+ generator .string += "'";
87
+ generator .string += generator .Space ();
88
+ generator .string += "level='";
89
+ generator .string += this .level;
90
+ generator .string += "'";
91
+ generator .string += "/>";
95
92
  },
96
93
  });
97
94
 
@@ -62,15 +62,15 @@ ProfileInfo .prototype = Object .assign (Object .create (X3DObject .prototype),
62
62
  {
63
63
  return "ProfileInfo";
64
64
  },
65
- toVRMLStream: function (stream)
65
+ toVRMLStream: function (generator)
66
66
  {
67
- stream .string += "PROFILE";
68
- stream .string += " ";
69
- stream .string += this .name;
67
+ generator .string += "PROFILE";
68
+ generator .string += generator .Space ();
69
+ generator .string += this .name;
70
70
  },
71
- toXMLStream: function (stream)
71
+ toXMLStream: function (generator)
72
72
  {
73
- stream .string += this .name;
73
+ generator .string += this .name;
74
74
  },
75
75
  });
76
76
 
@@ -59,7 +59,7 @@ SupportedComponents .addComponent (
59
59
 
60
60
  SupportedComponents .addComponent (
61
61
  {
62
- title: "Computer-Aided Design (CAD) model geometry",
62
+ title: "CAD geometry",
63
63
  name: "CADGeometry",
64
64
  level: 2,
65
65
  external: true,
@@ -82,7 +82,7 @@ SupportedComponents .addComponent (
82
82
 
83
83
  SupportedComponents .addComponent (
84
84
  {
85
- title: "Distributed interactive simulation (DIS)",
85
+ title: "Distributed interactive simulation",
86
86
  name: "DIS",
87
87
  level: 2,
88
88
  external: true,
@@ -99,14 +99,14 @@ SupportedComponents .addComponent (
99
99
  {
100
100
  title: "Environmental sensor",
101
101
  name: "EnvironmentalSensor",
102
- level: 4,
102
+ level: 3,
103
103
  });
104
104
 
105
105
  SupportedComponents .addComponent (
106
106
  {
107
107
  title: "Event utilities",
108
108
  name: "EventUtilities",
109
- level: 4,
109
+ level: 1,
110
110
  external: true,
111
111
  });
112
112
 
@@ -114,7 +114,7 @@ SupportedComponents .addComponent (
114
114
  {
115
115
  title: "Followers",
116
116
  name: "Followers",
117
- level: 4,
117
+ level: 1,
118
118
  });
119
119
 
120
120
  SupportedComponents .addComponent (
@@ -211,7 +211,7 @@ SupportedComponents .addComponent (
211
211
 
212
212
  SupportedComponents .addComponent (
213
213
  {
214
- title: "Non-uniform Rational B-Spline (NURBS)",
214
+ title: "NURBS",
215
215
  name: "NURBS",
216
216
  level: 4,
217
217
  external: true,
@@ -227,7 +227,7 @@ SupportedComponents .addComponent (
227
227
 
228
228
  SupportedComponents .addComponent (
229
229
  {
230
- title: "Picking sensor",
230
+ title: "Picking",
231
231
  name: "Picking",
232
232
  level: 3,
233
233
  external: true,
@@ -243,19 +243,21 @@ SupportedComponents .addComponent (
243
243
 
244
244
  SupportedComponents .addComponent (
245
245
  {
246
- title: "Projective Texture Mapping",
247
- name: "ProjectiveTextureMapping",
248
- level: 2,
249
- external: true,
246
+ title: "Programmable shaders",
247
+ name: "Shaders",
248
+ level: 1,
250
249
  });
251
250
 
252
251
  SupportedComponents .addComponent (
253
252
  {
254
- title: "Programmable shaders",
255
- name: "Shaders",
256
- level: 1,
253
+ title: "Texture Projector",
254
+ name: "TextureProjector",
255
+ level: 2,
256
+ external: true,
257
257
  });
258
258
 
259
+ SupportedComponents .addAlias ("ProjectiveTextureMapping", "TextureProjector");
260
+
259
261
  SupportedComponents .addComponent (
260
262
  {
261
263
  title: "Rendering",
@@ -267,7 +269,7 @@ SupportedComponents .addComponent (
267
269
  {
268
270
  title: "Rigid body physics",
269
271
  name: "RigidBodyPhysics",
270
- level: 5,
272
+ level: 2,
271
273
  external: true,
272
274
  });
273
275
 
@@ -283,14 +285,14 @@ SupportedComponents .addComponent (
283
285
  {
284
286
  title: "Shape",
285
287
  name: "Shape",
286
- level: 5,
288
+ level: 4,
287
289
  });
288
290
 
289
291
  SupportedComponents .addComponent (
290
292
  {
291
293
  title: "Sound",
292
294
  name: "Sound",
293
- level: 1,
295
+ level: 3,
294
296
  });
295
297
 
296
298
  SupportedComponents .addComponent (
@@ -305,14 +307,14 @@ SupportedComponents .addComponent (
305
307
  {
306
308
  title: "Texturing",
307
309
  name: "Texturing",
308
- level: 3,
310
+ level: 4,
309
311
  });
310
312
 
311
313
  SupportedComponents .addComponent (
312
314
  {
313
315
  title: "Texturing3D",
314
316
  name: "Texturing3D",
315
- level: 3,
317
+ level: 2,
316
318
  external: true,
317
319
  });
318
320
 
@@ -327,7 +329,7 @@ SupportedComponents .addComponent (
327
329
  {
328
330
  title: "Volume rendering",
329
331
  name: "VolumeRendering",
330
- level: 2,
332
+ level: 4,
331
333
  external: true,
332
334
  dependencies: ["CADGeometry", "Texturing3D"],
333
335
  });
@@ -108,7 +108,7 @@ SupportedProfiles .addProfile ({
108
108
  SupportedComponents .get ("ParticleSystems"),
109
109
  SupportedComponents .get ("Picking"),
110
110
  SupportedComponents .get ("PointingDeviceSensor"),
111
- SupportedComponents .get ("ProjectiveTextureMapping"),
111
+ SupportedComponents .get ("TextureProjector"),
112
112
  SupportedComponents .get ("Rendering"),
113
113
  SupportedComponents .get ("RigidBodyPhysics"),
114
114
  SupportedComponents .get ("Scripting"),
@@ -46,7 +46,6 @@
46
46
  ******************************************************************************/
47
47
 
48
48
  import X3DObject from "../Base/X3DObject.js";
49
- import Generator from "../InputOutput/Generator.js";
50
49
 
51
50
  function UnitInfo (category, name, conversionFactor)
52
51
  {
@@ -66,35 +65,33 @@ UnitInfo .prototype = Object .assign (Object .create (X3DObject .prototype),
66
65
  {
67
66
  return "UnitInfo";
68
67
  },
69
- toVRMLStream: function (stream)
68
+ toVRMLStream: function (generator)
70
69
  {
71
- stream .string += "UNIT";
72
- stream .string += " ";
73
- stream .string += this .category;
74
- stream .string += " ";
75
- stream .string += this .name;
76
- stream .string += " ";
77
- stream .string += this .conversionFactor;
70
+ generator .string += "UNIT";
71
+ generator .string += generator .Space ();
72
+ generator .string += this .category;
73
+ generator .string += generator .Space ();
74
+ generator .string += this .name;
75
+ generator .string += generator .Space ();
76
+ generator .string += this .conversionFactor;
78
77
  },
79
- toXMLStream: function (stream)
78
+ toXMLStream: function (generator)
80
79
  {
81
- const generator = Generator .Get (stream);
82
-
83
- stream .string += generator .Indent ();
84
- stream .string += "<unit";
85
- stream .string += " ";
86
- stream .string += "category='";
87
- stream .string += this .category;
88
- stream .string += "'";
89
- stream .string += " ";
90
- stream .string += "name='";
91
- stream .string += generator .XMLEncode (this .name);
92
- stream .string += "'";
93
- stream .string += " ";
94
- stream .string += "conversionFactor='";
95
- stream .string += this .conversionFactor;
96
- stream .string += "'";
97
- stream .string += "/>";
80
+ generator .string += generator .Indent ();
81
+ generator .string += "<unit";
82
+ generator .string += generator .Space ();
83
+ generator .string += "category='";
84
+ generator .string += this .category;
85
+ generator .string += "'";
86
+ generator .string += generator .Space ();
87
+ generator .string += "name='";
88
+ generator .string += generator .XMLEncode (this .name);
89
+ generator .string += "'";
90
+ generator .string += generator .Space ();
91
+ generator .string += "conversionFactor='";
92
+ generator .string += this .conversionFactor;
93
+ generator .string += "'";
94
+ generator .string += "/>";
98
95
  },
99
96
  });
100
97
 
@@ -59,7 +59,6 @@ import RouteArray from "../Routing/RouteArray.js";
59
59
  import X3DRoute from "../Routing/X3DRoute.js";
60
60
  import X3DCast from "../Base/X3DCast.js";
61
61
  import X3DConstants from "../Base/X3DConstants.js";
62
- import Generator from "../InputOutput/Generator.js";
63
62
  import SFNodeCache from "../Fields/SFNodeCache.js";
64
63
  import Algorithm from "../../standard/Math/Algorithm.js";
65
64
 
@@ -79,9 +78,14 @@ function X3DExecutionContext (executionContext)
79
78
 
80
79
  this .addType (X3DConstants .X3DExecutionContext)
81
80
 
82
- this .addChildObjects ("rootNodes", new Fields .MFNode (),
83
- "worldInfos", new Fields .MFNode (),
84
- "sceneGraph_changed", new Fields .SFTime ());
81
+ this .addChildObjects ("rootNodes", new Fields .MFNode (),
82
+ "worldInfos", new Fields .MFNode (),
83
+ "sceneGraph_changed", new Fields .SFTime (),
84
+ "namedNodes_changed", new Fields .SFTime (),
85
+ "importedNodes_changed", new Fields .SFTime (),
86
+ "protos_changed", new Fields .SFTime (),
87
+ "externprotos_changed", new Fields .SFTime (),
88
+ "routes_changed", new Fields .SFTime ())
85
89
 
86
90
  this ._rootNodes .setAccessType (X3DConstants .initializeOnly);
87
91
  this ._rootNodes .addCloneCount (1);
@@ -91,13 +95,6 @@ function X3DExecutionContext (executionContext)
91
95
  this [_protos] = new ProtoDeclarationArray ();
92
96
  this [_externprotos] = new ExternProtoDeclarationArray ();
93
97
  this [_routes] = new RouteArray ();
94
-
95
- this .addChildObjects ("namedNodes_changed", new Fields .SFTime (),
96
- "importedNodes_changed", new Fields .SFTime (),
97
- "protos_changed", new Fields .SFTime (),
98
- "externprotos_changed", new Fields .SFTime (),
99
- "routes_changed", new Fields .SFTime ())
100
-
101
98
  }
102
99
 
103
100
  X3DExecutionContext .prototype = Object .assign (Object .create (X3DBaseNode .prototype),
@@ -327,8 +324,6 @@ X3DExecutionContext .prototype = Object .assign (Object .create (X3DBaseNode .pr
327
324
 
328
325
  this [_importedNodes] .add (importedName, importedNode);
329
326
 
330
- importedNode .setup ();
331
-
332
327
  this ._importedNodes_changed = this .getBrowser () .getCurrentTime ();
333
328
  },
334
329
  removeImportedNode: function (importedName)
@@ -761,21 +756,19 @@ X3DExecutionContext .prototype = Object .assign (Object .create (X3DBaseNode .pr
761
756
  this ._worldInfos .splice (i, 1);
762
757
  }
763
758
  },
764
- toVRMLStream: function (stream)
759
+ toVRMLStream: function (generator)
765
760
  {
766
- const generator = Generator .Get (stream);
767
-
768
761
  generator .PushExecutionContext (this);
769
762
  generator .EnterScope ();
770
763
  generator .ImportedNodes (this .getImportedNodes ());
771
764
 
772
765
  // Output extern protos
773
766
 
774
- this .getExternProtoDeclarations () .toVRMLStream (stream);
767
+ this .getExternProtoDeclarations () .toVRMLStream (generator);
775
768
 
776
769
  // Output protos
777
770
 
778
- this .getProtoDeclarations () .toVRMLStream (stream);
771
+ this .getProtoDeclarations () .toVRMLStream (generator);
779
772
 
780
773
  // Output root nodes
781
774
 
@@ -785,38 +778,28 @@ X3DExecutionContext .prototype = Object .assign (Object .create (X3DBaseNode .pr
785
778
  {
786
779
  const rootNode = rootNodes [i];
787
780
 
788
- stream .string += generator .Indent ();
781
+ generator .string += generator .Indent ();
789
782
 
790
783
  if (rootNode)
791
- rootNode .toVRMLStream (stream);
784
+ rootNode .toVRMLStream (generator);
792
785
  else
793
- stream .string += "NULL";
786
+ generator .string += "NULL";
794
787
 
795
- stream .string += "\n";
788
+ generator .string += generator .TidyBreak ();
796
789
 
797
790
  if (i !== length - 1)
798
- stream .string += "\n";
791
+ generator .string += generator .TidyBreak ();
799
792
  }
800
793
 
801
794
  // Output imported nodes
802
795
 
803
796
  const importedNodes = this .getImportedNodes ();
804
797
 
805
- if (importedNodes .size)
798
+ if (importedNodes .length)
806
799
  {
807
- stream .string += "\n";
800
+ generator .string += generator .TidyBreak ();
808
801
 
809
- importedNodes .forEach (function (importedNode)
810
- {
811
- try
812
- {
813
- importedNode .toVRMLStream (stream);
814
-
815
- stream .string += "\n";
816
- }
817
- catch (error)
818
- { }
819
- });
802
+ importedNodes .toVRMLStream (generator);
820
803
  }
821
804
 
822
805
  // Output routes
@@ -825,29 +808,27 @@ X3DExecutionContext .prototype = Object .assign (Object .create (X3DBaseNode .pr
825
808
 
826
809
  if (routes .length)
827
810
  {
828
- stream .string += "\n";
811
+ generator .string += generator .TidyBreak ();
829
812
 
830
- routes .toVRMLStream (stream);
813
+ routes .toVRMLStream (generator);
831
814
  }
832
815
 
833
816
  generator .LeaveScope ();
834
817
  generator .PopExecutionContext ();
835
818
  },
836
- toXMLStream: function (stream)
819
+ toXMLStream: function (generator)
837
820
  {
838
- const generator = Generator .Get (stream);
839
-
840
821
  generator .PushExecutionContext (this);
841
822
  generator .EnterScope ();
842
823
  generator .ImportedNodes (this .getImportedNodes ());
843
824
 
844
825
  // Output extern protos
845
826
 
846
- this .getExternProtoDeclarations () .toXMLStream (stream);
827
+ this .getExternProtoDeclarations () .toXMLStream (generator);
847
828
 
848
829
  // Output protos
849
830
 
850
- this .getProtoDeclarations () .toXMLStream (stream);
831
+ this .getProtoDeclarations () .toXMLStream (generator);
851
832
 
852
833
  // Output root nodes
853
834
 
@@ -855,30 +836,18 @@ X3DExecutionContext .prototype = Object .assign (Object .create (X3DBaseNode .pr
855
836
 
856
837
  if (rootNodes .length)
857
838
  {
858
- rootNodes .toXMLStream (stream);
839
+ rootNodes .toXMLStream (generator);
859
840
 
860
- stream .string += "\n";
841
+ generator .string += generator .TidyBreak ();
861
842
  }
862
843
 
863
844
  // Output imported nodes
864
845
 
865
- const importedNodes = this .getImportedNodes ();
866
-
867
- importedNodes .forEach (function (importedNode)
868
- {
869
- try
870
- {
871
- importedNode .toXMLStream (stream);
872
-
873
- stream .string += "\n";
874
- }
875
- catch (error)
876
- { }
877
- });
846
+ this .getImportedNodes () .toXMLStream (generator);
878
847
 
879
848
  // Output routes
880
849
 
881
- this .getRoutes () .toXMLStream (stream);
850
+ this .getRoutes () .toXMLStream (generator);
882
851
 
883
852
  generator .LeaveScope ();
884
853
  generator .PopExecutionContext ();
@@ -47,7 +47,6 @@
47
47
 
48
48
  import X3DObject from "../Base/X3DObject.js";
49
49
  import SFNodeCache from "../Fields/SFNodeCache.js";
50
- import Generator from "../InputOutput/Generator.js";
51
50
 
52
51
  const
53
52
  _exportedName = Symbol (),
@@ -72,47 +71,43 @@ X3DExportedNode .prototype = Object .assign (Object .create (X3DObject .prototyp
72
71
  {
73
72
  return this [_localNode];
74
73
  },
75
- toVRMLStream: function (stream)
74
+ toVRMLStream: function (generator)
76
75
  {
77
- const
78
- generator = Generator .Get (stream),
79
- localName = generator .LocalName (this [_localNode]);
76
+ const localName = generator .LocalName (this [_localNode]);
80
77
 
81
- stream .string += generator .Indent ();
82
- stream .string += "EXPORT";
83
- stream .string += " ";
84
- stream .string += localName;
78
+ generator .string += generator .Indent ();
79
+ generator .string += "EXPORT";
80
+ generator .string += generator .Space ();
81
+ generator .string += localName;
85
82
 
86
83
  if (this [_exportedName] !== localName)
87
84
  {
88
- stream .string += " ";
89
- stream .string += "AS";
90
- stream .string += " ";
91
- stream .string += this [_exportedName];
85
+ generator .string += generator .Space ();
86
+ generator .string += "AS";
87
+ generator .string += generator .Space ();
88
+ generator .string += this [_exportedName];
92
89
  }
93
90
  },
94
- toXMLStream: function (stream)
91
+ toXMLStream: function (generator)
95
92
  {
96
- const
97
- generator = Generator .Get (stream),
98
- localName = generator .LocalName (this [_localNode]);
93
+ const localName = generator .LocalName (this [_localNode]);
99
94
 
100
- stream .string += generator .Indent ();
101
- stream .string += "<EXPORT";
102
- stream .string += " ";
103
- stream .string += "localDEF='";
104
- stream .string += generator .XMLEncode (localName);
105
- stream .string += "'";
95
+ generator .string += generator .Indent ();
96
+ generator .string += "<EXPORT";
97
+ generator .string += generator .Space ();
98
+ generator .string += "localDEF='";
99
+ generator .string += generator .XMLEncode (localName);
100
+ generator .string += "'";
106
101
 
107
102
  if (this [_exportedName] !== localName)
108
103
  {
109
- stream .string += " ";
110
- stream .string += "AS='";
111
- stream .string += generator .XMLEncode (this [_exportedName]);
112
- stream .string += "'";
104
+ generator .string += generator .Space ();
105
+ generator .string += "AS='";
106
+ generator .string += generator .XMLEncode (this [_exportedName]);
107
+ generator .string += "'";
113
108
  }
114
109
 
115
- stream .string += "/>";
110
+ generator .string += "/>";
116
111
  },
117
112
  });
118
113