x_ite 8.3.2 → 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 (117) 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 +64 -75
  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 +3986 -1366
  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/field-services-and-objects.md +24 -4
  52. package/docs/_posts/reference/prototype-services.md +24 -4
  53. package/docs/_posts/reference/scene-services.md +18 -2
  54. package/docs/_posts/what's-new.md +32 -4
  55. package/docs/_tabs/playground.html +36 -40
  56. package/docs/assets/css/style.scss +18 -0
  57. package/package.json +1 -1
  58. package/src/assets/components/{ProjectiveTextureMapping.js → TextureProjector.js} +5 -5
  59. package/src/examples.js +1 -1
  60. package/src/tests.js +5 -5
  61. package/src/x_ite/Base/X3DInfoArray.js +45 -19
  62. package/src/x_ite/Base/X3DObject.js +29 -20
  63. package/src/x_ite/Base/X3DObjectArrayField.js +71 -26
  64. package/src/x_ite/Base/X3DTypedArrayField.js +108 -32
  65. package/src/x_ite/Browser/DOMIntegration.js +4 -3
  66. package/src/x_ite/Browser/VERSION.js +1 -1
  67. package/src/x_ite/Browser/X3DBrowser.js +43 -28
  68. package/src/x_ite/Components/Core/X3DNode.js +682 -210
  69. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +484 -100
  70. package/src/x_ite/Components/Grouping/X3DTransformMatrix3DNode.js +18 -43
  71. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +27 -26
  72. package/src/x_ite/Components/HAnim/HAnimJoint.js +19 -31
  73. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +6 -3
  74. package/src/x_ite/Components/Sound/X3DSoundProcessingNode.js +14 -1
  75. package/src/x_ite/Components/Sound/X3DSoundSourceNode.js +0 -1
  76. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/TextureProjector.js +1 -1
  77. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/TextureProjectorParallel.js +1 -1
  78. package/src/x_ite/Components/{ProjectiveTextureMapping → TextureProjector}/X3DTextureProjectorNode.js +0 -0
  79. package/src/x_ite/Components/Time/TimeSensor.js +5 -0
  80. package/src/x_ite/Components/Time/X3DTimeDependentNode.js +1 -0
  81. package/src/x_ite/Configuration/ComponentInfo.js +51 -22
  82. package/src/x_ite/Configuration/ProfileInfo.js +10 -6
  83. package/src/x_ite/Configuration/SupportedComponents.js +22 -20
  84. package/src/x_ite/Configuration/SupportedProfiles.js +1 -1
  85. package/src/x_ite/Configuration/UnitInfo.js +69 -26
  86. package/src/x_ite/Execution/X3DExecutionContext.js +78 -55
  87. package/src/x_ite/Execution/X3DExportedNode.js +75 -28
  88. package/src/x_ite/Execution/X3DImportedNode.js +227 -67
  89. package/src/x_ite/Execution/X3DScene.js +437 -117
  90. package/src/x_ite/Fields/ArrayFields.js +105 -55
  91. package/src/x_ite/Fields/SFBool.js +14 -6
  92. package/src/x_ite/Fields/SFColor.js +35 -12
  93. package/src/x_ite/Fields/SFColorRGBA.js +2 -0
  94. package/src/x_ite/Fields/SFDouble.js +17 -10
  95. package/src/x_ite/Fields/SFFloat.js +17 -10
  96. package/src/x_ite/Fields/SFImage.js +93 -8
  97. package/src/x_ite/Fields/SFInt32.js +14 -6
  98. package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +38 -13
  99. package/src/x_ite/Fields/SFNode.js +59 -21
  100. package/src/x_ite/Fields/SFRotation.js +38 -13
  101. package/src/x_ite/Fields/SFString.js +14 -7
  102. package/src/x_ite/Fields/SFTime.js +14 -6
  103. package/src/x_ite/Fields/SFVecPrototypeTemplate.js +39 -13
  104. package/src/x_ite/InputOutput/FileLoader.js +1 -1
  105. package/src/x_ite/InputOutput/Generator.js +178 -17
  106. package/src/x_ite/Parser/JSONParser.js +1 -1
  107. package/src/x_ite/Parser/VRMLParser.js +24 -27
  108. package/src/x_ite/Parser/X3DParser.js +0 -4
  109. package/src/x_ite/Parser/XMLParser.js +2 -2
  110. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +182 -64
  111. package/src/x_ite/Prototype/X3DProtoDeclaration.js +314 -93
  112. package/src/x_ite/Rendering/X3DRenderObject.js +6 -1
  113. package/src/x_ite/Routing/X3DRoute.js +104 -40
  114. package/src/x_ite.html +1 -1
  115. package/x_ite.min.html +1 -1
  116. package/dist/assets/components/ProjectiveTextureMapping.min.js +0 -1
  117. package/docs/Gemfile.lock +0 -116
@@ -48,7 +48,6 @@
48
48
  import X3DNode from "../Components/Core/X3DNode.js";
49
49
  import X3DConstants from "../Base/X3DConstants.js";
50
50
  import SFNodeCache from "../Fields/SFNodeCache.js";
51
- import Generator from "../InputOutput/Generator.js";
52
51
 
53
52
  const
54
53
  _inlineNode = Symbol (),
@@ -68,6 +67,7 @@ function X3DImportedNode (executionContext, inlineNode, exportedName, importedNa
68
67
  this [_inlineNode] ._loadState .addInterest ("set_loadState__", this);
69
68
  }
70
69
 
70
+ // Must be of type X3DNode, to get routes work.
71
71
  X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype),
72
72
  {
73
73
  constructor: X3DImportedNode,
@@ -175,25 +175,23 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
175
175
  }
176
176
  }
177
177
  },
178
- toVRMLStream: function (stream)
178
+ toVRMLStream: function (generator)
179
179
  {
180
- const generator = Generator .Get (stream);
181
-
182
180
  if (generator .ExistsNode (this .getInlineNode ()))
183
181
  {
184
- stream .string += generator .Indent ();
185
- stream .string += "IMPORT";
186
- stream .string += " ";
187
- stream .string += generator .Name (this .getInlineNode ());
188
- stream .string += ".";
189
- stream .string += this .getExportedName ();
182
+ generator .string += generator .Indent ();
183
+ generator .string += "IMPORT";
184
+ generator .string += generator .Space ();
185
+ generator .string += generator .Name (this .getInlineNode ());
186
+ generator .string += ".";
187
+ generator .string += this .getExportedName ();
190
188
 
191
189
  if (this .getImportedName () !== this .getExportedName ())
192
190
  {
193
- stream .string += " ";
194
- stream .string += "AS";
195
- stream .string += " ";
196
- stream .string += this .getImportedName ();
191
+ generator .string += generator .Space ();
192
+ generator .string += "AS";
193
+ generator .string += generator .Space ();
194
+ generator .string += this .getImportedName ();
197
195
  }
198
196
 
199
197
  try
@@ -223,53 +221,53 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
223
221
  ? destinationNode .getImportedName ()
224
222
  : generator .Name (destinationNode);
225
223
 
226
- stream .string += "\n";
227
- stream .string += "\n";
228
- stream .string += generator .Indent ();
229
- stream .string += "ROUTE";
230
- stream .string += " ";
231
- stream .string += sourceNodeName;
232
- stream .string += ".";
233
- stream .string += sourceField;
234
- stream .string += " ";
235
- stream .string += "TO";
236
- stream .string += " ";
237
- stream .string += destinationNodeName;
238
- stream .string += ".";
239
- stream .string += destinationField;
224
+ generator .string += generator .Break ();
225
+ generator .string += generator .TidyBreak ();
226
+ generator .string += generator .Indent ();
227
+ generator .string += "ROUTE";
228
+ generator .string += generator .Space ();
229
+ generator .string += sourceNodeName;
230
+ generator .string += ".";
231
+ generator .string += sourceField;
232
+ generator .string += generator .Space ();
233
+ generator .string += "TO";
234
+ generator .string += generator .Space ();
235
+ generator .string += destinationNodeName;
236
+ generator .string += ".";
237
+ generator .string += destinationField;
240
238
  }
241
239
  }
242
240
  }
243
241
  }
244
242
  else
243
+ {
245
244
  throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
245
+ }
246
246
  },
247
- toXMLStream: function (stream)
247
+ toXMLStream: function (generator)
248
248
  {
249
- const generator = Generator .Get (stream);
250
-
251
249
  if (generator .ExistsNode (this .getInlineNode ()))
252
250
  {
253
- stream .string += generator .Indent ();
254
- stream .string += "<IMPORT";
255
- stream .string += " ";
256
- stream .string += "inlineDEF='";
257
- stream .string += generator .XMLEncode (generator .Name (this .getInlineNode ()));
258
- stream .string += "'";
259
- stream .string += " ";
260
- stream .string += "importedDEF='";
261
- stream .string += generator .XMLEncode (this .getExportedName ());
262
- stream .string += "'";
251
+ generator .string += generator .Indent ();
252
+ generator .string += "<IMPORT";
253
+ generator .string += generator .Space ();
254
+ generator .string += "inlineDEF='";
255
+ generator .string += generator .XMLEncode (generator .Name (this .getInlineNode ()));
256
+ generator .string += "'";
257
+ generator .string += generator .Space ();
258
+ generator .string += "importedDEF='";
259
+ generator .string += generator .XMLEncode (this .getExportedName ());
260
+ generator .string += "'";
263
261
 
264
262
  if (this .getImportedName () !== this .getExportedName ())
265
263
  {
266
- stream .string += " ";
267
- stream .string += "AS='";
268
- stream .string += generator .XMLEncode (this .getImportedName ());
269
- stream .string += "'";
264
+ generator .string += generator .Space ();
265
+ generator .string += "AS='";
266
+ generator .string += generator .XMLEncode (this .getImportedName ());
267
+ generator .string += "'";
270
268
  }
271
269
 
272
- stream .string += "/>";
270
+ generator .string += "/>";
273
271
 
274
272
  try
275
273
  {
@@ -298,33 +296,195 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
298
296
  ? destinationNode .getImportedName ()
299
297
  : generator .Name (destinationNode);
300
298
 
301
- stream .string += "\n";
302
- stream .string += "\n";
303
- stream .string += generator .Indent ();
304
- stream .string += "<ROUTE";
305
- stream .string += " ";
306
- stream .string += "fromNode='";
307
- stream .string += generator .XMLEncode (sourceNodeName);
308
- stream .string += "'";
309
- stream .string += " ";
310
- stream .string += "fromField='";
311
- stream .string += generator .XMLEncode (sourceField);
312
- stream .string += "'";
313
- stream .string += " ";
314
- stream .string += "toNode='";
315
- stream .string += generator .XMLEncode (destinationNodeName);
316
- stream .string += "'";
317
- stream .string += " ";
318
- stream .string += "toField='";
319
- stream .string += generator .XMLEncode (destinationField);
320
- stream .string += "'";
321
- stream .string += "/>";
299
+ generator .string += generator .Break ();
300
+ generator .string += generator .TidyBreak ();
301
+ generator .string += generator .Indent ();
302
+ generator .string += "<ROUTE";
303
+ generator .string += generator .Space ();
304
+ generator .string += "fromNode='";
305
+ generator .string += generator .XMLEncode (sourceNodeName);
306
+ generator .string += "'";
307
+ generator .string += generator .Space ();
308
+ generator .string += "fromField='";
309
+ generator .string += generator .XMLEncode (sourceField);
310
+ generator .string += "'";
311
+ generator .string += generator .Space ();
312
+ generator .string += "toNode='";
313
+ generator .string += generator .XMLEncode (destinationNodeName);
314
+ generator .string += "'";
315
+ generator .string += generator .Space ();
316
+ generator .string += "toField='";
317
+ generator .string += generator .XMLEncode (destinationField);
318
+ generator .string += "'";
319
+ generator .string += "/>";
322
320
  }
323
321
  }
324
322
  }
325
323
  }
326
324
  else
325
+ {
327
326
  throw new Error ("X3DImportedNode.toXMLStream: Inline node does not exist.");
327
+ }
328
+ },
329
+ toJSONStream: function (generator)
330
+ {
331
+ if (generator .ExistsNode (this .getInlineNode ()))
332
+ {
333
+ generator .string += generator .Indent ();
334
+ generator .string += '{';
335
+ generator .string += generator .TidySpace ();
336
+ generator .string += '"';
337
+ generator .string += "IMPORT";
338
+ generator .string += '"';
339
+ generator .string += ':';
340
+ generator .string += generator .TidyBreak ();
341
+ generator .string += generator .IncIndent ();
342
+ generator .string += generator .Indent ();
343
+ generator .string += '{';
344
+ generator .string += generator .TidyBreak ();
345
+ generator .string += generator .IncIndent ();
346
+
347
+ generator .string += generator .Indent ();
348
+ generator .string += '"';
349
+ generator .string += "@inlineDEF";
350
+ generator .string += '"';
351
+ generator .string += ':';
352
+ generator .string += generator .TidySpace ();
353
+ generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
354
+ generator .string += ',';
355
+ generator .string += generator .TidyBreak ();
356
+
357
+ generator .string += generator .Indent ();
358
+ generator .string += '"';
359
+ generator .string += "@importedDEF";
360
+ generator .string += '"';
361
+ generator .string += ':';
362
+ generator .string += generator .TidySpace ();
363
+ generator .string += generator .JSONEncode (this .getExportedName ());
364
+
365
+ if (this .getImportedName () !== this .getExportedName ())
366
+ {
367
+ generator .string += ',';
368
+ generator .string += generator .TidyBreak ();
369
+ generator .string += generator .Indent ();
370
+ generator .string += '"';
371
+ generator .string += "@AS";
372
+ generator .string += '"';
373
+ generator .string += ':';
374
+ generator .string += generator .TidySpace ();
375
+ generator .string += generator .JSONEncode (this .getImportedName ());
376
+ generator .string += generator .TidyBreak ();
377
+ }
378
+ else
379
+ {
380
+ generator .string += generator .TidyBreak ();
381
+ }
382
+
383
+ generator .string += generator .DecIndent ();
384
+ generator .string += generator .Indent ();
385
+ generator .string += '}';
386
+ generator .string += generator .TidyBreak ();
387
+ generator .string += generator .DecIndent ();
388
+ generator .string += generator .Indent ();
389
+ generator .string += '}';
390
+
391
+ try
392
+ {
393
+ generator .AddRouteNode (this);
394
+ generator .AddImportedNode (this .getExportedNode (), this .getImportedName ());
395
+ }
396
+ catch (error)
397
+ {
398
+ // Output unresolved routes.
399
+
400
+ for (const route of this [_routes])
401
+ {
402
+ const
403
+ sourceNode = route .sourceNode,
404
+ sourceField = route .sourceField,
405
+ destinationNode = route .destinationNode,
406
+ destinationField = route .destinationField;
407
+
408
+ if (generator .ExistsRouteNode (sourceNode) && generator .ExistsRouteNode (destinationNode))
409
+ {
410
+ const sourceNodeName = sourceNode instanceof X3DImportedNode
411
+ ? sourceNode .getImportedName ()
412
+ : generator .Name (sourceNode);
413
+
414
+ const destinationNodeName = destinationNode instanceof X3DImportedNode
415
+ ? destinationNode .getImportedName ()
416
+ : generator .Name (destinationNode);
417
+
418
+ generator .string += ',';
419
+ generator .string += generator .TidyBreak ();
420
+ generator .string += generator .Indent ();
421
+ generator .string += '{';
422
+ generator .string += generator .TidySpace ();
423
+ generator .string += '"';
424
+ generator .string += "ROUTE";
425
+ generator .string += '"';
426
+ generator .string += ':';
427
+ generator .string += generator .TidyBreak ();
428
+ generator .string += generator .IncIndent ();
429
+ generator .string += generator .Indent ();
430
+ generator .string += '{';
431
+ generator .string += generator .TidyBreak ();
432
+ generator .string += generator .IncIndent ();
433
+
434
+ generator .string += generator .Indent ();
435
+ generator .string += '"';
436
+ generator .string += "@fromNode";
437
+ generator .string += '"';
438
+ generator .string += ':';
439
+ generator .string += generator .TidySpace ();
440
+ generator .string += generator .JSONEncode (sourceNodeName);
441
+ generator .string += ',';
442
+ generator .string += generator .TidyBreak ();
443
+
444
+ generator .string += generator .Indent ();
445
+ generator .string += '"';
446
+ generator .string += "@fromField";
447
+ generator .string += '"';
448
+ generator .string += ':';
449
+ generator .string += generator .TidySpace ();
450
+ generator .string += generator .JSONEncode (sourceField);
451
+ generator .string += ',';
452
+ generator .string += generator .TidyBreak ();
453
+
454
+ generator .string += generator .Indent ();
455
+ generator .string += '"';
456
+ generator .string += "@toNode";
457
+ generator .string += '"';
458
+ generator .string += ':';
459
+ generator .string += generator .TidySpace ();
460
+ generator .string += generator .JSONEncode (destinationNodeName);
461
+ generator .string += ',';
462
+ generator .string += generator .TidyBreak ();
463
+
464
+ generator .string += generator .Indent ();
465
+ generator .string += '"';
466
+ generator .string += "@toField";
467
+ generator .string += '"';
468
+ generator .string += ':';
469
+ generator .string += generator .TidySpace ();
470
+ generator .string += generator .JSONEncode (destinationField);
471
+ generator .string += generator .TidyBreak ();
472
+
473
+ generator .string += generator .DecIndent ();
474
+ generator .string += generator .Indent ();
475
+ generator .string += '}';
476
+ generator .string += generator .TidyBreak ();
477
+ generator .string += generator .DecIndent ();
478
+ generator .string += generator .Indent ();
479
+ generator .string += '}';
480
+ }
481
+ }
482
+ }
483
+ }
484
+ else
485
+ {
486
+ throw new Error ("X3DImportedNode.toJSONStream: Inline node does not exist.");
487
+ }
328
488
  },
329
489
  dispose: function ()
330
490
  {