x_ite 8.3.1 → 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 (130) hide show
  1. package/.github/workflows/pages-deploy.yml +1 -1
  2. package/.vscode/settings.json +2 -1
  3. package/build/bin/tests.pl +2 -0
  4. package/dist/LICENSE.md +4 -4
  5. package/dist/assets/components/Annotation.js +13 -13
  6. package/dist/assets/components/Annotation.min.js +1 -1
  7. package/dist/assets/components/CADGeometry.js +13 -13
  8. package/dist/assets/components/CADGeometry.min.js +1 -1
  9. package/dist/assets/components/CubeMapTexturing.js +25 -25
  10. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  11. package/dist/assets/components/DIS.js +13 -13
  12. package/dist/assets/components/DIS.min.js +1 -1
  13. package/dist/assets/components/EventUtilities.js +9 -9
  14. package/dist/assets/components/EventUtilities.min.js +1 -1
  15. package/dist/assets/components/Geometry2D.js +19 -19
  16. package/dist/assets/components/Geometry2D.min.js +1 -1
  17. package/dist/assets/components/Geospatial.js +33 -33
  18. package/dist/assets/components/Geospatial.min.js +1 -1
  19. package/dist/assets/components/HAnim.js +61 -74
  20. package/dist/assets/components/HAnim.min.js +1 -1
  21. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  22. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  23. package/dist/assets/components/Layout.js +27 -27
  24. package/dist/assets/components/Layout.min.js +1 -1
  25. package/dist/assets/components/NURBS.js +24 -24
  26. package/dist/assets/components/NURBS.min.js +1 -1
  27. package/dist/assets/components/ParticleSystems.js +23 -23
  28. package/dist/assets/components/ParticleSystems.min.js +1 -1
  29. package/dist/assets/components/Picking.js +19 -19
  30. package/dist/assets/components/Picking.min.js +1 -1
  31. package/dist/assets/components/RigidBodyPhysics.js +17 -17
  32. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  33. package/dist/assets/components/Scripting.js +28 -28
  34. package/dist/assets/components/Scripting.min.js +1 -1
  35. package/dist/assets/components/Text.js +24 -24
  36. package/dist/assets/components/Text.min.js +1 -1
  37. package/dist/assets/components/{ProjectiveTextureMapping.js → TextureProjector.js} +39 -39
  38. package/dist/assets/components/TextureProjector.min.js +1 -0
  39. package/dist/assets/components/Texturing3D.js +46 -46
  40. package/dist/assets/components/Texturing3D.min.js +1 -1
  41. package/dist/assets/components/VolumeRendering.js +19 -19
  42. package/dist/assets/components/VolumeRendering.min.js +1 -1
  43. package/dist/assets/components/X_ITE.js +9 -9
  44. package/dist/assets/components/X_ITE.min.js +1 -1
  45. package/dist/x_ite.css +1 -1
  46. package/dist/x_ite.js +1904 -1570
  47. package/dist/x_ite.min.js +1 -1
  48. package/dist/x_ite.zip +0 -0
  49. package/docs/Gemfile +1 -4
  50. package/docs/_config.yml +3 -2
  51. package/docs/_posts/custom-shaders.md +1 -1
  52. package/docs/_posts/dom-integration.md +52 -25
  53. package/docs/_posts/getting-started.md +148 -442
  54. package/docs/_posts/reference/field-services-and-objects.md +2 -34
  55. package/docs/_posts/reference/scene-services.md +13 -2
  56. package/docs/_posts/tutorials/basic-nodes.md +2 -2
  57. package/docs/_posts/tutorials/building-a-x3d-world.md +20 -4
  58. package/docs/_posts/tutorials/building-primitive-shapes.md +4 -4
  59. package/docs/_posts/tutorials/creating-new-node-types.md +22 -0
  60. package/docs/_posts/tutorials/hello-world.md +6 -6
  61. package/docs/_posts/tutorials/improving-performance.md +2 -2
  62. package/docs/_posts/tutorials/writing-program-scripts-with-ecmascript.md +2 -2
  63. package/docs/_posts/what's-new.md +21 -3
  64. package/docs/_tabs/playground.html +110 -57
  65. package/docs/assets/css/style.scss +25 -1
  66. package/package.json +2 -2
  67. package/src/assets/components/{ProjectiveTextureMapping.js → TextureProjector.js} +5 -5
  68. package/src/examples.js +1 -1
  69. package/src/tests.js +5 -5
  70. package/src/x_ite/Base/X3DArrayField.js +3 -0
  71. package/src/x_ite/Base/X3DBaseNode.js +4 -0
  72. package/src/x_ite/Base/X3DInfoArray.js +28 -24
  73. package/src/x_ite/Base/X3DObject.js +29 -20
  74. package/src/x_ite/Base/X3DObjectArrayField.js +27 -26
  75. package/src/x_ite/Base/X3DTypedArrayField.js +34 -32
  76. package/src/x_ite/Browser/Core/ContextMenu.js +5 -7
  77. package/src/x_ite/Browser/DOMIntegration.js +62 -54
  78. package/src/x_ite/Browser/VERSION.js +1 -1
  79. package/src/x_ite/Browser/X3DBrowser.js +44 -29
  80. package/src/x_ite/Browser/X3DBrowserContext.js +3 -0
  81. package/src/x_ite/Components/Core/X3DNode.js +196 -187
  82. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +114 -91
  83. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +18 -43
  84. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +24 -25
  85. package/src/x_ite/Components/HAnim/HAnimJoint.js +19 -31
  86. package/src/x_ite/Components/Networking/Inline.js +21 -2
  87. package/src/x_ite/Components/Sound/X3DSoundProcessingNode.js +14 -1
  88. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +0 -1
  89. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/TextureProjector.js +1 -1
  90. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/TextureProjectorParallel.js +1 -1
  91. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/X3DTextureProjectorNode.js +0 -0
  92. package/src/x_ite/Components/Time/TimeSensor.js +5 -0
  93. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +1 -0
  94. package/src/x_ite/Configuration/ComponentInfo.js +20 -23
  95. package/src/x_ite/Configuration/ProfileInfo.js +6 -6
  96. package/src/x_ite/Configuration/SupportedComponents.js +22 -20
  97. package/src/x_ite/Configuration/SupportedNodes.js +1 -5
  98. package/src/x_ite/Configuration/SupportedProfiles.js +1 -1
  99. package/src/x_ite/Configuration/UnitInfo.js +24 -27
  100. package/src/x_ite/Execution/X3DExecutionContext.js +28 -59
  101. package/src/x_ite/Execution/X3DExportedNode.js +23 -28
  102. package/src/x_ite/Execution/X3DImportedNode.js +63 -67
  103. package/src/x_ite/Execution/X3DScene.js +98 -117
  104. package/src/x_ite/Fields/ArrayFields.js +57 -55
  105. package/src/x_ite/Fields/SFBool.js +6 -6
  106. package/src/x_ite/Fields/SFColor.js +10 -12
  107. package/src/x_ite/Fields/SFDouble.js +7 -10
  108. package/src/x_ite/Fields/SFFloat.js +7 -10
  109. package/src/x_ite/Fields/SFImage.js +33 -8
  110. package/src/x_ite/Fields/SFInt32.js +6 -6
  111. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +13 -13
  112. package/src/x_ite/Fields/SFNode.js +42 -19
  113. package/src/x_ite/Fields/SFRotation.js +13 -13
  114. package/src/x_ite/Fields/SFString.js +6 -7
  115. package/src/x_ite/Fields/SFTime.js +6 -6
  116. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +10 -10
  117. package/src/x_ite/InputOutput/FileLoader.js +1 -1
  118. package/src/x_ite/InputOutput/Generator.js +117 -17
  119. package/src/x_ite/Parser/VRMLParser.js +24 -27
  120. package/src/x_ite/Parser/X3DParser.js +0 -4
  121. package/src/x_ite/Parser/XMLParser.js +152 -50
  122. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +59 -64
  123. package/src/x_ite/Prototype/X3DProtoDeclaration.js +86 -93
  124. package/src/x_ite/Rendering/X3DRenderObject.js +6 -1
  125. package/src/x_ite/Routing/X3DRoute.js +37 -40
  126. package/src/x_ite.html +3 -3
  127. package/webpack.config.js +2 -2
  128. package/x_ite.min.html +1 -1
  129. package/dist/assets/components/ProjectiveTextureMapping.min.js +0 -1
  130. package/docs/Gemfile.lock +0 -116
@@ -12,12 +12,14 @@ $tab-count: {{ site.tabs | size | plus: 1 }}; // plus 1 for home tab
12
12
  html {
13
13
  --nav-border-color: rgba(158,158,158,0.17);
14
14
  --nav-active-page: rgb(168, 182, 206);
15
+ --h2-color: #e4e45d;
15
16
  --h4-color: rgb(175, 206, 255);
16
17
  --example-background-color: rgba(27,27,30,0.4);
17
18
  --button-background-color: black;
18
19
  }
19
20
 
20
21
  html[data-mode=light] {
22
+ --h2-color: #cbca00;
21
23
  --button-background-color: white;
22
24
  }
23
25
 
@@ -69,7 +71,7 @@ a {
69
71
  }
70
72
 
71
73
  .post h2 {
72
- color: #e4e45d;
74
+ color: var(--h2-color);
73
75
  }
74
76
 
75
77
  .post h3 {
@@ -84,6 +86,10 @@ a {
84
86
  color: var(--h4-color);
85
87
  }
86
88
 
89
+ .post h5 {
90
+ font-weight: bold;
91
+ }
92
+
87
93
  .table-wrapper > table tbody tr td,
88
94
  .table-wrapper > table thead th {
89
95
  white-space: initial;
@@ -100,6 +106,24 @@ a {
100
106
  font-size: 0;
101
107
  }
102
108
 
109
+ .table-wrapper > table.examples a.popup {
110
+ margin: 0;
111
+ }
112
+
113
+ .table-wrapper > table.examples a:hover::before {
114
+ content: "";
115
+ position: absolute;
116
+ background: var(--shimmer-bg);
117
+ height: 100%;
118
+ width: 100%;
119
+ -webkit-animation: shimmer 1s infinite;
120
+ animation: shimmer 1s infinite;
121
+ }
122
+
123
+ .table-wrapper > table.examples .shimmer::before {
124
+ all: unset;
125
+ }
126
+
103
127
  @media all and (max-width: 849px) {
104
128
  .table-wrapper > table.examples tbody tr td {
105
129
  border-width: 2px;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "x_ite",
3
- "version": "8.3.1",
4
- "description": "X_ITE X3D Browser, a framework for integrating and manipulating X3D and VRML scenes in HTML.",
3
+ "version": "8.3.3",
4
+ "description": "X_ITE X3D Browser, view and manipulate X3D and VRML scenes in HTML.",
5
5
  "homepage": "https://create3000.github.io/x_ite/",
6
6
  "author": "Holger Seelig <holger.seelig@gmail.com>",
7
7
  "license": "GPL-3.0",
@@ -46,15 +46,15 @@
46
46
  ******************************************************************************/
47
47
 
48
48
  import Components from "../../x_ite/Components.js";
49
- import TextureProjector from "../../x_ite/Components/ProjectiveTextureMapping/TextureProjector.js";
50
- import TextureProjectorParallel from "../../x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js";
51
- import X3DTextureProjectorNode from "../../x_ite/Components/ProjectiveTextureMapping/X3DTextureProjectorNode.js";
49
+ import TextureProjector from "../../x_ite/Components/TextureProjector/TextureProjector.js";
50
+ import TextureProjectorParallel from "../../x_ite/Components/TextureProjector/TextureProjectorParallel.js";
51
+ import X3DTextureProjectorNode from "../../x_ite/Components/TextureProjector/X3DTextureProjectorNode.js";
52
52
 
53
53
  Components .addComponent ({
54
- name: "ProjectiveTextureMapping",
54
+ name: "TextureProjector",
55
55
  types:
56
56
  {
57
- TextureProjector: TextureProjector,
57
+ TextureProjector: TextureProjector,
58
58
  TextureProjectorParallel: TextureProjectorParallel,
59
59
  },
60
60
  abstractTypes:
package/src/examples.js CHANGED
@@ -78,7 +78,6 @@ const X_ITE_EXAMPLES = [
78
78
  { component: "Picking", test: "PrimitivePickSensor" },
79
79
  { component: "PointingDeviceSensor", test: "CylinderSensor" },
80
80
  { component: "PointingDeviceSensor", test: "PlaneSensor" },
81
- { component: "ProjectiveTextureMapping", test: "TextureProjector" },
82
81
  { component: "Rendering", test: "ClipPlane" },
83
82
  { component: "Rendering", test: "Color" },
84
83
  { component: "Rendering", test: "ColorRGBA" },
@@ -106,6 +105,7 @@ const X_ITE_EXAMPLES = [
106
105
  { component: "Sound", test: "AudioClip" },
107
106
  { component: "Text", test: "FontStyle" },
108
107
  { component: "Text", test: "Text" },
108
+ { component: "TextureProjector", test: "TextureProjector" },
109
109
  { component: "Texturing", test: "ImageTexture" },
110
110
  { component: "Texturing", test: "MovieTexture" },
111
111
  { component: "Texturing", test: "MultiTexture" },
package/src/tests.js CHANGED
@@ -215,11 +215,6 @@ const X_ITE_TESTS = [
215
215
  { path: "PointingDeviceSensor/TouchBeethoven.x3dz" },
216
216
  { path: "PointingDeviceSensor/TouchLines.x3dv" },
217
217
  { path: "PointingDeviceSensor/TouchPoints.x3dv" },
218
- { component: "ProjectiveTextureMapping" },
219
- { path: "ProjectiveTextureMapping/apple.x3d" },
220
- { path: "ProjectiveTextureMapping/Local.x3d" },
221
- { path: "ProjectiveTextureMapping/Parallel.x3d" },
222
- { path: "ProjectiveTextureMapping/Perspective.x3d" },
223
218
  { component: "PROTO" },
224
219
  { path: "PROTO/27cubes.x3d" },
225
220
  { path: "PROTO/cbx.wrl" },
@@ -326,6 +321,11 @@ const X_ITE_TESTS = [
326
321
  { path: "Text/scrolling-text.x3d" },
327
322
  { path: "Text/test.x3d" },
328
323
  { path: "Text/vertical.x3d" },
324
+ { component: "TextureProjector" },
325
+ { path: "TextureProjector/apple.x3d" },
326
+ { path: "TextureProjector/Local.x3d" },
327
+ { path: "TextureProjector/Parallel.x3d" },
328
+ { path: "TextureProjector/Perspective.x3d" },
329
329
  { component: "Texturing" },
330
330
  { path: "Texturing/ColorManagement.x3d" },
331
331
  { path: "Texturing/ColorMaterial.x3d" },
@@ -57,6 +57,7 @@ X3DArrayField .prototype = Object .assign (Object .create (X3DField .prototype),
57
57
  constructor: X3DArrayField,
58
58
  at: Array .prototype .at,
59
59
  concat: Array .prototype .concat,
60
+ //Array.prototype.copyWithin,
60
61
  entries: Array .prototype .entries,
61
62
  every: Array .prototype .every,
62
63
  fill: Array .prototype .fill,
@@ -76,8 +77,10 @@ X3DArrayField .prototype = Object .assign (Object .create (X3DField .prototype),
76
77
  map: Array .prototype .map,
77
78
  reduce: Array .prototype .reduce,
78
79
  reduceRight: Array .prototype .reduceRight,
80
+ //Array.prototype.reverse
79
81
  slice: Array .prototype .slice,
80
82
  some: Array .prototype .some,
83
+ //Array.prototype.sort
81
84
  values: Array .prototype .values,
82
85
  });
83
86
 
@@ -51,6 +51,7 @@ import FieldDefinitionArray from "./FieldDefinitionArray.js";
51
51
  import FieldArray from "./FieldArray.js";
52
52
  import Fields from "../Fields.js";
53
53
  import X3DConstants from "./X3DConstants.js";
54
+ import HTMLSupport from "../Parser/HTMLSupport.js";
54
55
 
55
56
  const
56
57
  _executionContext = Symbol (),
@@ -390,6 +391,9 @@ X3DBaseNode .prototype = Object .assign (Object .create (X3DEventObject .prototy
390
391
  enumerable: true,
391
392
  configurable: false,
392
393
  });
394
+
395
+ if (field .isInitializable ())
396
+ HTMLSupport .addFieldName (alias);
393
397
  },
394
398
  removeField: function (name)
395
399
  {
@@ -45,7 +45,7 @@
45
45
  *
46
46
  ******************************************************************************/
47
47
 
48
- import X3DBaseNode from "../Base/X3DBaseNode.js";
48
+ import Generator from "../InputOutput/Generator.js";
49
49
 
50
50
  const
51
51
  _array = Symbol (),
@@ -201,74 +201,78 @@ X3DInfoArray .prototype = {
201
201
  },
202
202
  at: Array .prototype .at,
203
203
  concat: Array .prototype .concat,
204
- //entries: function () { return iterator -> [index, value]; },
204
+ entries: Array .prototype .entries,
205
205
  every: Array .prototype .every,
206
206
  fill: Array .prototype .fill,
207
207
  filter: Array .prototype .filter,
208
208
  find: Array .prototype .find,
209
209
  findIndex: Array .prototype .findIndex,
210
+ findLast: Array .prototype .findLast,
211
+ findLastIndex: Array .prototype .findLastIndex,
212
+ flat: Array .prototype .flat,
213
+ flatMap: Array .prototype .flatMap,
210
214
  forEach: Array .prototype .forEach,
211
215
  includes: Array .prototype .includes,
212
216
  indexOf: Array .prototype .indexOf,
213
217
  join: Array .prototype .join,
214
- keys: function () { return Array (this .length) .keys (); },
218
+ keys: Array .prototype .keys,
215
219
  lastIndexOf: Array .prototype .lastIndexOf,
216
220
  map: Array .prototype .map,
217
221
  reduce: Array .prototype .reduce,
218
222
  reduceRight: Array .prototype .reduceRight,
219
223
  slice: Array .prototype .slice,
220
224
  some: Array .prototype .some,
221
- values: function () { return this [Symbol .iterator]; },
222
- toString: function (scene)
225
+ values: Array .prototype .values,
226
+ toString: function (options = Object .prototype)
223
227
  {
224
- const stream = { string: "" };
228
+ const generator = new Generator (options);
225
229
 
226
- if (scene)
227
- Generator .Get (stream) .PushExecutionContext (scene);
230
+ if (options .scene)
231
+ generator .PushExecutionContext (options .scene);
228
232
 
229
- this .toStream (stream);
233
+ this .toStream (generator);
230
234
 
231
- return stream .string;
235
+ return generator .string;
232
236
  },
233
- toVRMLStream: function (stream)
237
+ toStream: function (generator)
238
+ {
239
+ generator .string = "[object " + this .getTypeName () + "]";
240
+ },
241
+ toVRMLStream: function (generator)
234
242
  {
235
243
  for (const value of this [_array])
236
244
  {
237
245
  try
238
246
  {
239
- value .toVRMLStream (stream);
247
+ value .toVRMLStream (generator);
240
248
 
241
- stream .string += "\n";
249
+ generator .string += generator .Break ();
242
250
 
243
- if (value instanceof X3DBaseNode)
244
- stream .string += "\n";
251
+ if (this .getTypeName () .match (/Proto/))
252
+ generator .string += generator .TidyBreak ();
245
253
  }
246
254
  catch (error)
247
255
  {
248
- console .error (error);
256
+ // console .error (error);
249
257
  }
250
258
  }
251
259
  },
252
- toXMLStream: function (stream)
260
+ toXMLStream: function (generator)
253
261
  {
254
262
  for (const value of this [_array])
255
263
  {
256
264
  try
257
265
  {
258
- value .toXMLStream (stream);
266
+ value .toXMLStream (generator);
259
267
 
260
- stream .string += "\n";
268
+ generator .string += generator .TidyBreak ();
261
269
  }
262
270
  catch (error)
263
271
  {
264
- console .error (error);
272
+ // console .error (error);
265
273
  }
266
274
  }
267
275
  },
268
- toStream: function (stream)
269
- {
270
- stream .string = "[object " + this .getTypeName () + "]";
271
- },
272
276
  };
273
277
 
274
278
  for (const key of Reflect .ownKeys (X3DInfoArray .prototype))
@@ -131,44 +131,53 @@ X3DObject .prototype =
131
131
  interest ();
132
132
  }
133
133
  },
134
- toString: function (scene)
134
+ toString: function (options = Object .prototype)
135
135
  {
136
- const stream = { string: "" };
136
+ const generator = new Generator (options);
137
137
 
138
- if (scene)
139
- Generator .Get (stream) .PushExecutionContext (scene);
138
+ if (options .scene)
139
+ generator .PushExecutionContext (options .scene);
140
140
 
141
- this .toStream (stream);
141
+ this .toStream (generator);
142
142
 
143
- return stream .string;
143
+ return generator .string;
144
144
  },
145
- toVRMLString: function ()
145
+ toVRMLString: function (options = Object .prototype)
146
146
  {
147
- const stream = { string: "" };
147
+ const generator = new Generator (options);
148
148
 
149
- this .toVRMLStream (stream);
149
+ if (options .scene)
150
+ generator .PushExecutionContext (options .scene);
150
151
 
151
- return stream .string;
152
+ this .toVRMLStream (generator);
153
+
154
+ return generator .string;
152
155
  },
153
- toXMLString: function ()
156
+ toXMLString: function (options = Object .prototype)
154
157
  {
155
- const stream = { string: "" };
158
+ const generator = new Generator (options);
159
+
160
+ if (options .scene)
161
+ generator .PushExecutionContext (options .scene);
156
162
 
157
- this .toXMLStream (stream);
163
+ this .toXMLStream (generator);
158
164
 
159
- return stream .string;
165
+ return generator .string;
160
166
  },
161
- toJSONString: function ()
167
+ toJSONString: function (options = Object .prototype)
162
168
  {
163
- const stream = { string: "" };
169
+ const generator = new Generator (options);
170
+
171
+ if (options .scene)
172
+ generator .PushExecutionContext (options .scene);
164
173
 
165
- this .toVRMLStream (stream); // TODO.
174
+ this .toVRMLStream (generator); // TODO.
166
175
 
167
- return stream .string;
176
+ return generator .string;
168
177
  },
169
- toStream: function (stream)
178
+ toStream: function (generator)
170
179
  {
171
- stream .string = "[object " + this .getTypeName () + "]";
180
+ generator .string = "[object " + this .getTypeName () + "]";
172
181
  },
173
182
  dispose: function () { },
174
183
  };
@@ -47,7 +47,6 @@
47
47
 
48
48
  import X3DField from "./X3DField.js";
49
49
  import X3DArrayField from "./X3DArrayField.js";
50
- import Generator from "../InputOutput/Generator.js";
51
50
 
52
51
  const
53
52
  _target = Symbol (),
@@ -453,25 +452,26 @@ X3DObjectArrayField .prototype = Object .assign (Object .create (X3DArrayField .
453
452
  {
454
453
  value .removeParent (this [_proxy]);
455
454
  },
456
- toStream: function (stream)
455
+ toStream: function (generator)
457
456
  {
458
457
  const
459
- target = this [_target],
460
- array = target .getValue (),
461
- generator = Generator .Get (stream);
458
+ target = this [_target],
459
+ array = target .getValue ();
462
460
 
463
461
  switch (array .length)
464
462
  {
465
463
  case 0:
466
464
  {
467
- stream .string += "[ ]";
465
+ generator .string += "[";
466
+ generator .string += generator .TidySpace ();
467
+ generator .string += "]";
468
468
  break;
469
469
  }
470
470
  case 1:
471
471
  {
472
472
  generator .PushUnitCategory (target .getUnit ());
473
473
 
474
- array [0] .toStream (stream);
474
+ array [0] .toStream (generator);
475
475
 
476
476
  generator .PopUnitCategory ();
477
477
  break;
@@ -480,34 +480,36 @@ X3DObjectArrayField .prototype = Object .assign (Object .create (X3DArrayField .
480
480
  {
481
481
  generator .PushUnitCategory (target .getUnit ());
482
482
 
483
- stream .string += "[\n";
483
+ generator .string += "[";
484
+ generator .string += generator .ListStart ();
484
485
  generator .IncIndent ();
485
486
 
486
487
  for (let i = 0, length = array .length - 1; i < length; ++ i)
487
488
  {
488
- stream .string += generator .Indent ();
489
- array [i] .toStream (stream);
490
- stream .string += ",\n";
489
+ generator .string += generator .ListIndent ();
490
+ array [i] .toStream (generator);
491
+ generator .string += generator .Comma ();
492
+ generator .string += generator .ListBreak ();
491
493
  }
492
494
 
493
- stream .string += generator .Indent ();
494
- array .at (-1) .toStream (stream);
495
- stream .string += "\n";
495
+ generator .string += generator .ListIndent ();
496
+ array .at (-1) .toStream (generator);
496
497
 
498
+ generator .string += generator .ListEnd ();
497
499
  generator .DecIndent ();
498
- stream .string += generator .Indent ();
499
- stream .string += "]";
500
+ generator .string += generator .ListIndent ();
501
+ generator .string += "]";
500
502
 
501
503
  generator .PopUnitCategory ();
502
504
  break;
503
505
  }
504
506
  }
505
507
  },
506
- toVRMLStream: function (stream)
508
+ toVRMLStream: function (generator)
507
509
  {
508
- this .toStream (stream);
510
+ this .toStream (generator);
509
511
  },
510
- toXMLStream: function (stream)
512
+ toXMLStream: function (generator)
511
513
  {
512
514
  const
513
515
  target = this [_target],
@@ -515,19 +517,18 @@ X3DObjectArrayField .prototype = Object .assign (Object .create (X3DArrayField .
515
517
 
516
518
  if (length)
517
519
  {
518
- const
519
- generator = Generator .Get (stream),
520
- array = target .getValue ();
520
+ const array = target .getValue ();
521
521
 
522
522
  generator .PushUnitCategory (target .getUnit ());
523
523
 
524
- for (const element of array)
524
+ for (let i = 0, length = array .length - 1; i < length; ++ i)
525
525
  {
526
- element .toXMLStream (stream);
527
- stream .string += ", ";
526
+ array [i] .toXMLStream (generator);
527
+ generator .string += generator .Comma ();
528
+ generator .string += generator .TidySpace ();
528
529
  }
529
530
 
530
- array .at (-1) .toXMLStream (stream);
531
+ array .at (-1) .toXMLStream (generator);
531
532
 
532
533
  generator .PopUnitCategory ();
533
534
  }
@@ -46,7 +46,6 @@
46
46
  ******************************************************************************/
47
47
 
48
48
  import X3DArrayField from "./X3DArrayField.js";
49
- import Generator from "../InputOutput/Generator.js";
50
49
  import Algorithm from "../../standard/Math/Algorithm.js";
51
50
 
52
51
  const
@@ -688,11 +687,10 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
688
687
 
689
688
  return newArray;
690
689
  },
691
- toStream: function (stream)
690
+ toStream: function (generator)
692
691
  {
693
692
  const
694
693
  target = this [_target],
695
- generator = Generator .Get (stream),
696
694
  array = target .getValue (),
697
695
  length = target [_length],
698
696
  components = target .getComponents (),
@@ -702,7 +700,9 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
702
700
  {
703
701
  case 0:
704
702
  {
705
- stream .string += "[ ]";
703
+ generator .string += "[";
704
+ generator .string += generator .TidySpace ();
705
+ generator .string += "]";
706
706
  break;
707
707
  }
708
708
  case 1:
@@ -713,14 +713,14 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
713
713
  {
714
714
  value .set (array [0]);
715
715
 
716
- value .toStream (stream);
716
+ value .toStream (generator);
717
717
  }
718
718
  else
719
719
  {
720
720
  for (let c = 0, first = 0; c < components; ++ c, ++ first)
721
721
  value [c] = array [first];
722
722
 
723
- value .toStream (stream);
723
+ value .toStream (generator);
724
724
  }
725
725
 
726
726
  generator .PopUnitCategory ();
@@ -730,64 +730,65 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
730
730
  {
731
731
  generator .PushUnitCategory (target .getUnit ());
732
732
 
733
- stream .string += "[\n";
733
+ generator .string += "[";
734
+ generator .string += generator .ListStart ();
734
735
  generator .IncIndent ();
735
736
 
736
737
  if (components === 1)
737
738
  {
738
739
  for (let i = 0, n = length - 1; i < n; ++ i)
739
740
  {
740
- stream .string += generator .Indent ();
741
+ generator .string += generator .ListIndent ();
741
742
 
742
743
  value .set (array [i * components]);
743
- value .toStream (stream);
744
+ value .toStream (generator);
744
745
 
745
- stream .string += ",\n";
746
+ generator .string += generator .Comma ();
747
+ generator .string += generator .ListBreak ();
746
748
  }
747
749
 
748
- stream .string += generator .Indent ();
750
+ generator .string += generator .ListIndent ();
749
751
  value .set (array [(length - 1) * components]);
750
- value .toStream (stream);
751
-
752
- stream .string += "\n";
752
+ value .toStream (generator);
753
753
  }
754
754
  else
755
755
  {
756
756
  for (let i = 0, n = length - 1; i < n; ++ i)
757
757
  {
758
- stream .string += generator .Indent ();
758
+ generator .string += generator .ListIndent ();
759
759
 
760
760
  for (let c = 0, first = i * components; c < components; ++ c, ++ first)
761
761
  value [c] = array [first];
762
762
 
763
- value .toStream (stream);
763
+ value .toStream (generator);
764
764
 
765
- stream .string += ",\n";
765
+ generator .string += generator .Comma ();
766
+ generator .string += generator .ListBreak ();
766
767
  }
767
768
 
768
- stream .string += generator .Indent ();
769
+ generator .string += generator .ListIndent ();
769
770
 
770
771
  for (let c = 0, first = (length - 1) * components; c < components; ++ c, ++ first)
771
772
  value [c] = array [first];
772
773
 
773
- value .toStream (stream);
774
- stream .string += "\n";
774
+ value .toStream (generator);
775
775
  }
776
776
 
777
+ generator .string += generator .ListEnd ();
777
778
  generator .DecIndent ();
778
- stream .string += generator .Indent ();
779
- stream .string += "]";
779
+ generator .string += generator .ListIndent ();
780
+ generator .string += "]";
780
781
 
781
782
  generator .PopUnitCategory ();
782
783
  break;
783
784
  }
784
785
  }
785
786
  },
786
- toVRMLStream: function (stream)
787
+ toVRMLStream: function (generator)
787
788
  {
788
- this .toStream (stream);
789
+ this .toStream (generator);
789
790
  },
790
- toXMLStream: function (stream)
791
+ toXMLStream: function (generator)
791
792
  {
792
793
  const
793
794
  target = this [_target],
@@ -796,7 +797,6 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
796
797
  if (length)
797
798
  {
798
799
  const
799
- generator = Generator .Get (stream),
800
800
  array = target .getValue (),
801
801
  components = target .getComponents (),
802
802
  value = new (target .getSingleType ()) ();
@@ -808,14 +808,15 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
808
808
  for (let i = 0, n = length - 1; i < n; ++ i)
809
809
  {
810
810
  value .set (array [i * components]);
811
- value .toXMLStream (stream);
811
+ value .toXMLStream (generator);
812
812
 
813
- stream .string += ", ";
813
+ generator .string += generator .Comma ();
814
+ generator .string += generator .TidySpace ();
814
815
  }
815
816
 
816
817
  value .set (array [(length - 1) * components]);
817
818
 
818
- value .toXMLStream (stream);
819
+ value .toXMLStream (generator);
819
820
  }
820
821
  else
821
822
  {
@@ -824,15 +825,16 @@ X3DTypedArrayField .prototype = Object .assign (Object .create (X3DArrayField .p
824
825
  for (let c = 0, first = i * components; c < components; ++ c, ++ first)
825
826
  value [c] = array [first];
826
827
 
827
- value .toXMLStream (stream);
828
+ value .toXMLStream (generator);
828
829
 
829
- stream .string += ", ";
830
+ generator .string += generator .Comma ();
831
+ generator .string += generator .TidySpace ();
830
832
  }
831
833
 
832
834
  for (let c = 0, first = (length - 1) * components; c < components; ++ c, ++ first)
833
835
  value [c] = array [first];
834
836
 
835
- value .toXMLStream (stream);
837
+ value .toXMLStream (generator);
836
838
  }
837
839
 
838
840
  generator .PopUnitCategory ();