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
@@ -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,23 +517,66 @@ 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
  }
534
535
  },
536
+ toJSONStream: function (generator)
537
+ {
538
+ const
539
+ target = this [_target],
540
+ length = target .length;
541
+
542
+ if (length)
543
+ {
544
+ const value = this .getValue ();
545
+
546
+ generator .PushUnitCategory (target .getUnit ());
547
+
548
+ generator .string += '[';
549
+ generator .string += generator .ListBreak ();
550
+ generator .string += generator .IncIndent ();
551
+
552
+ for (let i = 0, n = length - 1; i < n; ++ i)
553
+ {
554
+ generator .string += generator .ListIndent ();
555
+
556
+ value [i] .toJSONStreamValue (generator);
557
+
558
+ generator .string += ',';
559
+ generator .string += generator .ListBreak ();
560
+ }
561
+
562
+ generator .string += generator .ListIndent ();
563
+
564
+ value .at (-1) .toJSONStreamValue (generator);
565
+
566
+ generator .string += generator .ListBreak ();
567
+ generator .string += generator .DecIndent ();
568
+ generator .string += generator .ListIndent ();
569
+ generator .string += ']';
570
+
571
+ generator .PopUnitCategory ();
572
+ }
573
+ else
574
+ {
575
+ generator .string += '[';
576
+ generator .string += generator .TidySpace ();
577
+ generator .string += ']';
578
+ }
579
+ },
535
580
  dispose: function ()
536
581
  {
537
582
  const
@@ -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,20 +825,95 @@ 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 ();
839
841
  }
840
842
  },
843
+ toJSONStream: function (generator)
844
+ {
845
+ const
846
+ target = this [_target],
847
+ length = target .length;
848
+
849
+ if (length)
850
+ {
851
+ const
852
+ array = target .getValue (),
853
+ components = target .getComponents (),
854
+ value = new (target .getSingleType ()) ();
855
+
856
+ generator .PushUnitCategory (target .getUnit ());
857
+
858
+ generator .string += '[';
859
+ generator .string += generator .ListBreak ();
860
+ generator .string += generator .IncIndent ();
861
+
862
+ if (components === 1)
863
+ {
864
+ for (let i = 0, n = length - 1; i < n; ++ i)
865
+ {
866
+ generator .string += generator .ListIndent ();
867
+
868
+ value .set (array [i * components]);
869
+ value .toJSONStreamValue (generator);
870
+
871
+ generator .string += ',';
872
+ generator .string += generator .ListBreak ();
873
+ }
874
+
875
+ generator .string += generator .ListIndent ();
876
+
877
+ value .set (array [(length - 1) * components]);
878
+ value .toJSONStreamValue (generator);
879
+ }
880
+ else
881
+ {
882
+ for (let i = 0, n = length - 1; i < n; ++ i)
883
+ {
884
+ generator .string += generator .ListIndent ();
885
+
886
+ for (let c = 0, first = i * components; c < components; ++ c, ++ first)
887
+ value [c] = array [first];
888
+
889
+ value .toJSONStreamValue (generator);
890
+
891
+ generator .string += ',';
892
+ generator .string += generator .ListBreak ();
893
+ }
894
+
895
+ generator .string += generator .ListIndent ();
896
+
897
+ for (let c = 0, first = (length - 1) * components; c < components; ++ c, ++ first)
898
+ value [c] = array [first];
899
+
900
+ value .toJSONStreamValue (generator);
901
+ }
902
+
903
+ generator .string += generator .ListBreak ();
904
+ generator .string += generator .DecIndent ();
905
+ generator .string += generator .ListIndent ();
906
+ generator .string += ']';
907
+
908
+ generator .PopUnitCategory ();
909
+ }
910
+ else
911
+ {
912
+ generator .string += '[';
913
+ generator .string += generator .TidySpace ();
914
+ generator .string += ']';
915
+ }
916
+ },
841
917
  dispose: function ()
842
918
  {
843
919
  X3DArrayField .prototype .dispose .call (this [_target]);
@@ -25,6 +25,7 @@
25
25
 
26
26
  import XMLParser from "../Parser/XMLParser.js"
27
27
  import X3DConstants from "../Base/X3DConstants.js";
28
+ import SFNodeCache from "../Fields/SFNodeCache.js";
28
29
 
29
30
  class DOMIntegration
30
31
  {
@@ -301,7 +302,7 @@ class DOMIntegration
301
302
  {
302
303
  const event = new CustomEvent ("load",
303
304
  {
304
- detail: { node: node .valueOf () },
305
+ detail: { node: SFNodeCache .get (node) },
305
306
  });
306
307
 
307
308
  element .dispatchEvent (event);
@@ -311,7 +312,7 @@ class DOMIntegration
311
312
  {
312
313
  const event = new CustomEvent ("error",
313
314
  {
314
- detail: { node: node .valueOf () },
315
+ detail: { node: SFNodeCache .get (node) },
315
316
  });
316
317
 
317
318
  element .dispatchEvent (event);
@@ -365,7 +366,7 @@ class DOMIntegration
365
366
  const event = new CustomEvent (field .getName (),
366
367
  {
367
368
  detail: {
368
- node: node .valueOf (),
369
+ node: SFNodeCache .get (node),
369
370
  value: field .valueOf (),
370
371
  },
371
372
  });
@@ -45,4 +45,4 @@
45
45
  *
46
46
  ******************************************************************************/
47
47
 
48
- export default "8.3.2";
48
+ export default "8.4.0";
@@ -72,7 +72,8 @@ import _ from "../../locale/gettext.js";
72
72
  const
73
73
  _DOMIntegration = Symbol (),
74
74
  _loader = Symbol (),
75
- _browserCallbacks = Symbol ();
75
+ _browserCallbacks = Symbol (),
76
+ _console = Symbol ();
76
77
 
77
78
  function X3DBrowser (element)
78
79
  {
@@ -86,6 +87,7 @@ function X3DBrowser (element)
86
87
  X3DBrowserContext .call (this, element);
87
88
 
88
89
  this [_browserCallbacks] = new Map ();
90
+ this [_console] = document .getElementsByClassName ("x_ite-console");
89
91
 
90
92
  this .setup ();
91
93
  };
@@ -119,25 +121,28 @@ X3DBrowser .prototype = Object .assign (Object .create (X3DBrowserContext .proto
119
121
 
120
122
  if (this .getInstanceId () > 1) return;
121
123
 
122
- this .print ("Welcome to " + this .name + " X3D Browser v" + this .version + ":\n" +
123
- " Current Graphics Renderer\n" +
124
- " Name: " + this .getVendor () + " " + this .getRenderer () + "\n" +
125
- " WebGL version: " + this .getWebGLVersion () + "\n" +
126
- " Shading language: " + this .getShadingLanguageVersion () + "\n" +
127
- " Rendering Properties\n" +
128
- " Antialiased: " + this .getAntialiased () + "\n" +
129
- " Depth size: " + this .getDepthSize () + " bits\n" +
130
- " Color depth: " + this .getColorDepth () + " bits\n" +
131
- " Max clip planes per shape: " + this .getMaxClipPlanes () + "\n" +
132
- " Max lights per shape: " + this .getMaxLights () + "\n" +
133
- " Max multi textures per shape: " + this .getMaxTextures () + "\n" +
134
- " Texture units: " + this .getMaxCombinedTextureUnits () + "\n" +
135
- " Max texture size: " + this .getMaxTextureSize () + " × " + this .getMaxTextureSize () + " pixels\n" +
136
- " Texture memory: " + this .getTextureMemory () + "\n" +
137
- " Max vertex uniform vectors: " + this .getMaxVertexUniformVectors () + "\n" +
138
- " Max fragment uniform vectors: " + this .getMaxFragmentUniformVectors () + "\n" +
139
- " Max vertex attribs: " + this .getMaxVertexAttribs () + "\n" +
140
- " Max varying vectors: " + this .getMaxVaryingVectors () + "\n");
124
+ $(() =>
125
+ {
126
+ this .print ("Welcome to " + this .name + " X3D Browser v" + this .version + ":\n" +
127
+ " Current Graphics Renderer\n" +
128
+ " Name: " + this .getVendor () + " " + this .getRenderer () + "\n" +
129
+ " WebGL version: " + this .getWebGLVersion () + "\n" +
130
+ " Shading language: " + this .getShadingLanguageVersion () + "\n" +
131
+ " Rendering Properties\n" +
132
+ " Antialiased: " + this .getAntialiased () + "\n" +
133
+ " Depth size: " + this .getDepthSize () + " bits\n" +
134
+ " Color depth: " + this .getColorDepth () + " bits\n" +
135
+ " Max clip planes per shape: " + this .getMaxClipPlanes () + "\n" +
136
+ " Max lights per shape: " + this .getMaxLights () + "\n" +
137
+ " Max multi textures per shape: " + this .getMaxTextures () + "\n" +
138
+ " Texture units: " + this .getMaxCombinedTextureUnits () + "\n" +
139
+ " Max texture size: " + this .getMaxTextureSize () + " × " + this .getMaxTextureSize () + " pixels\n" +
140
+ " Texture memory: " + this .getTextureMemory () + "\n" +
141
+ " Max vertex uniform vectors: " + this .getMaxVertexUniformVectors () + "\n" +
142
+ " Max fragment uniform vectors: " + this .getMaxFragmentUniformVectors () + "\n" +
143
+ " Max vertex attribs: " + this .getMaxVertexAttribs () + "\n" +
144
+ " Max varying vectors: " + this .getMaxVaryingVectors () + "\n");
145
+ });
141
146
  },
142
147
  getName: function ()
143
148
  {
@@ -781,23 +786,33 @@ X3DBrowser .prototype = Object .assign (Object .create (X3DBrowserContext .proto
781
786
  },
782
787
  print: function ()
783
788
  {
784
- console .log (Array .prototype .join .call (arguments, " "));
789
+ const string = Array .prototype .join .call (arguments, "");
790
+
791
+ console .log (string);
792
+
793
+ for (const element of this [_console])
794
+ element .append (document .createTextNode (string));
785
795
  },
786
796
  println: function ()
787
797
  {
788
- console .log (Array .prototype .join .call (arguments, " "));
798
+ const string = Array .prototype .join .call (arguments, "");
799
+
800
+ console .log (string);
801
+
802
+ for (const element of this [_console])
803
+ element .append (document .createTextNode (string + "\n"));
789
804
  },
790
- toVRMLStream: function (stream)
805
+ toVRMLStream: function (generator)
791
806
  {
792
- this .currentScene .toVRMLStream (stream);
807
+ this .currentScene .toVRMLStream (generator);
793
808
  },
794
- toXMLStream: function (stream)
809
+ toXMLStream: function (generator)
795
810
  {
796
- this .currentScene .toXMLStream (stream);
811
+ this .currentScene .toXMLStream (generator);
797
812
  },
798
- toJSONStream: function (stream)
813
+ toJSONStream: function (generator)
799
814
  {
800
- this .currentScene .toJSONStream (stream);
815
+ this .currentScene .toJSONStream (generator);
801
816
  },
802
817
  });
803
818