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
@@ -49,7 +49,6 @@ import X3DChildObject from "../../Base/X3DChildObject.js";
49
49
  import X3DNode from "./X3DNode.js";
50
50
  import X3DExecutionContext from "../../Execution/X3DExecutionContext.js";
51
51
  import X3DConstants from "../../Base/X3DConstants.js";
52
- import Generator from "../../InputOutput/Generator.js";
53
52
 
54
53
  const
55
54
  _protoNode = Symbol (),
@@ -86,6 +85,23 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
86
85
  },
87
86
  getContainerField: function ()
88
87
  {
88
+ // Determine container field from proto.
89
+
90
+ // const proto = this [_protoNode];
91
+
92
+ // if (! proto .isExternProto)
93
+ // {
94
+ // const rootNodes = proto .getBody () .getRootNodes ();
95
+
96
+ // if (rootNodes .length)
97
+ // {
98
+ // const rootNode = rootNodes [0];
99
+
100
+ // if (rootNode)
101
+ // return rootNode .getValue () .getContainerField ();
102
+ // }
103
+ // }
104
+
89
105
  return "children";
90
106
  },
91
107
  initialize: function ()
@@ -361,11 +377,9 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
361
377
  }
362
378
  }
363
379
  },
364
- toXMLStream: function (stream)
380
+ toXMLStream: function (generator)
365
381
  {
366
- const
367
- generator = Generator .Get (stream),
368
- sharedNode = generator .IsSharedNode (this);
382
+ const sharedNode = generator .IsSharedNode (this);
369
383
 
370
384
  generator .EnterScope ();
371
385
 
@@ -375,16 +389,16 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
375
389
  {
376
390
  if (generator .ExistsNode (this))
377
391
  {
378
- stream .string += generator .Indent ();
379
- stream .string += "<ProtoInstance";
380
- stream .string += " ";
381
- stream .string += "name='";
382
- stream .string += generator .XMLEncode (this .getTypeName ());
383
- stream .string += "'";
384
- stream .string += " ";
385
- stream .string += "USE='";
386
- stream .string += generator .XMLEncode (name);
387
- stream .string += "'";
392
+ generator .string += generator .Indent ();
393
+ generator .string += "<ProtoInstance";
394
+ generator .string += generator .Space ();
395
+ generator .string += "name='";
396
+ generator .string += generator .XMLEncode (this .getTypeName ());
397
+ generator .string += "'";
398
+ generator .string += generator .Space ();
399
+ generator .string += "USE='";
400
+ generator .string += generator .XMLEncode (name);
401
+ generator .string += "'";
388
402
 
389
403
  const containerField = generator .ContainerField ();
390
404
 
@@ -392,35 +406,35 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
392
406
  {
393
407
  if (containerField .getName () !== this .getContainerField ())
394
408
  {
395
- stream .string += " ";
396
- stream .string += "containerField='";
397
- stream .string += generator .XMLEncode (containerField .getName ());
398
- stream .string += "'";
409
+ generator .string += generator .Space ();
410
+ generator .string += "containerField='";
411
+ generator .string += generator .XMLEncode (containerField .getName ());
412
+ generator .string += "'";
399
413
  }
400
414
  }
401
415
 
402
- stream .string += "/>";
416
+ generator .string += "/>";
403
417
 
404
418
  generator .LeaveScope ();
405
419
  return;
406
420
  }
407
421
  }
408
422
 
409
- stream .string += generator .Indent ();
410
- stream .string += "<ProtoInstance";
411
- stream .string += " ";
412
- stream .string += "name='";
413
- stream .string += generator .XMLEncode (this .getTypeName ());
414
- stream .string += "'";
423
+ generator .string += generator .Indent ();
424
+ generator .string += "<ProtoInstance";
425
+ generator .string += generator .Space ();
426
+ generator .string += "name='";
427
+ generator .string += generator .XMLEncode (this .getTypeName ());
428
+ generator .string += "'";
415
429
 
416
430
  if (name .length)
417
431
  {
418
432
  generator .AddNode (this);
419
433
 
420
- stream .string += " ";
421
- stream .string += "DEF='";
422
- stream .string += generator .XMLEncode (name);
423
- stream .string += "'";
434
+ generator .string += generator .Space ();
435
+ generator .string += "DEF='";
436
+ generator .string += generator .XMLEncode (name);
437
+ generator .string += "'";
424
438
  }
425
439
 
426
440
  const containerField = generator .ContainerField ();
@@ -429,10 +443,10 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
429
443
  {
430
444
  if (containerField .getName () !== this .getContainerField ())
431
445
  {
432
- stream .string += " ";
433
- stream .string += "containerField='";
434
- stream .string += generator .XMLEncode (containerField .getName ());
435
- stream .string += "'";
446
+ generator .string += generator .Space ();
447
+ generator .string += "containerField='";
448
+ generator .string += generator .XMLEncode (containerField .getName ());
449
+ generator .string += "'";
436
450
  }
437
451
  }
438
452
 
@@ -440,11 +454,12 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
440
454
 
441
455
  if (fields .length === 0)
442
456
  {
443
- stream .string += "/>";
457
+ generator .string += "/>";
444
458
  }
445
459
  else
446
460
  {
447
- stream .string += ">\n";
461
+ generator .string += ">";
462
+ generator .string += generator .TidyBreak ();
448
463
 
449
464
  generator .IncIndent ();
450
465
 
@@ -485,33 +500,36 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
485
500
  {
486
501
  case X3DConstants .MFNode:
487
502
  {
488
- stream .string += generator .Indent ();
489
- stream .string += "<fieldValue";
490
- stream .string += " ";
491
- stream .string += "name='";
492
- stream .string += generator .XMLEncode (field .getName ());
493
- stream .string += "'";
503
+ generator .string += generator .Indent ();
504
+ generator .string += "<fieldValue";
505
+ generator .string += generator .Space ();
506
+ generator .string += "name='";
507
+ generator .string += generator .XMLEncode (field .getName ());
508
+ generator .string += "'";
494
509
 
495
510
  if (field .length === 0)
496
511
  {
497
- stream .string += "/>\n";
512
+ generator .string += "/>";
513
+ generator .string += generator .TidyBreak ();
498
514
  }
499
515
  else
500
516
  {
501
517
  generator .PushContainerField (field);
502
518
 
503
- stream .string += ">\n";
519
+ generator .string += ">";
520
+ generator .string += generator .TidyBreak ();
504
521
 
505
522
  generator .IncIndent ();
506
523
 
507
- field .toXMLStream (stream);
524
+ field .toXMLStream (generator);
508
525
 
509
- stream .string += "\n";
526
+ generator .string += generator .TidyBreak ();
510
527
 
511
528
  generator .DecIndent ();
512
529
 
513
- stream .string += generator .Indent ();
514
- stream .string += "</fieldValue>\n";
530
+ generator .string += generator .Indent ();
531
+ generator .string += "</fieldValue>";
532
+ generator .string += generator .TidyBreak ();
515
533
 
516
534
  generator .PopContainerField ();
517
535
  }
@@ -524,24 +542,26 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
524
542
  {
525
543
  generator .PushContainerField (field);
526
544
 
527
- stream .string += generator .Indent ();
528
- stream .string += "<fieldValue";
529
- stream .string += " ";
530
- stream .string += "name='";
531
- stream .string += generator .XMLEncode (field .getName ());
532
- stream .string += "'";
533
- stream .string += ">\n";
545
+ generator .string += generator .Indent ();
546
+ generator .string += "<fieldValue";
547
+ generator .string += generator .Space ();
548
+ generator .string += "name='";
549
+ generator .string += generator .XMLEncode (field .getName ());
550
+ generator .string += "'";
551
+ generator .string += ">";
552
+ generator .string += generator .TidyBreak ();
534
553
 
535
554
  generator .IncIndent ();
536
555
 
537
- field .toXMLStream (stream);
556
+ field .toXMLStream (generator);
538
557
 
539
- stream .string += "\n";
558
+ generator .string += generator .TidyBreak ();
540
559
 
541
560
  generator .DecIndent ();
542
561
 
543
- stream .string += generator .Indent ();
544
- stream .string += "</fieldValue>\n";
562
+ generator .string += generator .Indent ();
563
+ generator .string += "</fieldValue>";
564
+ generator .string += generator .TidyBreak ();
545
565
 
546
566
  generator .PopContainerField ();
547
567
  break;
@@ -551,19 +571,20 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
551
571
  }
552
572
  default:
553
573
  {
554
- stream .string += generator .Indent ();
555
- stream .string += "<fieldValue";
556
- stream .string += " ";
557
- stream .string += "name='";
558
- stream .string += generator .XMLEncode (field .getName ());
559
- stream .string += "'";
560
- stream .string += " ";
561
- stream .string += "value='";
562
-
563
- field .toXMLStream (stream);
564
-
565
- stream .string += "'";
566
- stream .string += "/>\n";
574
+ generator .string += generator .Indent ();
575
+ generator .string += "<fieldValue";
576
+ generator .string += generator .Space ();
577
+ generator .string += "name='";
578
+ generator .string += generator .XMLEncode (field .getName ());
579
+ generator .string += "'";
580
+ generator .string += generator .Space ();
581
+ generator .string += "value='";
582
+
583
+ field .toXMLStream (generator);
584
+
585
+ generator .string += "'";
586
+ generator .string += "/>";
587
+ generator .string += generator .TidyBreak ();
567
588
  break;
568
589
  }
569
590
  }
@@ -576,9 +597,9 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
576
597
 
577
598
  if (references .length && ! sharedNode)
578
599
  {
579
- stream .string += generator .Indent ();
580
- stream .string += "<IS>";
581
- stream .string += "\n";
600
+ generator .string += generator .Indent ();
601
+ generator .string += "<IS>";
602
+ generator .string += generator .TidyBreak ();
582
603
 
583
604
  generator .IncIndent ();
584
605
 
@@ -588,30 +609,32 @@ X3DPrototypeInstance .prototype = Object .assign (Object .create (X3DNode .proto
588
609
 
589
610
  protoFields .forEach (function (protoField)
590
611
  {
591
- stream .string += generator .Indent ();
592
- stream .string += "<connect";
593
- stream .string += " ";
594
- stream .string += "nodeField='";
595
- stream .string += generator .XMLEncode (field .getName ());
596
- stream .string += "'";
597
- stream .string += " ";
598
- stream .string += "protoField='";
599
- stream .string += generator .XMLEncode (protoField .getName ());
600
- stream .string += "'";
601
- stream .string += "/>\n";
612
+ generator .string += generator .Indent ();
613
+ generator .string += "<connect";
614
+ generator .string += generator .Space ();
615
+ generator .string += "nodeField='";
616
+ generator .string += generator .XMLEncode (field .getName ());
617
+ generator .string += "'";
618
+ generator .string += generator .Space ();
619
+ generator .string += "protoField='";
620
+ generator .string += generator .XMLEncode (protoField .getName ());
621
+ generator .string += "'";
622
+ generator .string += "/>";
623
+ generator .string += generator .TidyBreak ();
602
624
  });
603
625
  }
604
626
 
605
627
  generator .DecIndent ();
606
628
 
607
- stream .string += generator .Indent ();
608
- stream .string += "</IS>\n";
629
+ generator .string += generator .Indent ();
630
+ generator .string += "</IS>";
631
+ generator .string += generator .TidyBreak ();
609
632
  }
610
633
 
611
634
  generator .DecIndent ();
612
635
 
613
- stream .string += generator .Indent ();
614
- stream .string += "</ProtoInstance>";
636
+ generator .string += generator .Indent ();
637
+ generator .string += "</ProtoInstance>";
615
638
  }
616
639
 
617
640
  generator .LeaveScope ();
@@ -57,9 +57,7 @@ function X3DTransformMatrix3DNode (executionContext)
57
57
 
58
58
  this .addType (X3DConstants .X3DTransformMatrix3DNode);
59
59
 
60
- this .matrix = new Matrix4 ();
61
- this .getBBox = this .getGetGroupBBox ();
62
- this .traverse = this .getGroupTraverse ();
60
+ this .matrix = new Matrix4 ();
63
61
  }
64
62
 
65
63
  X3DTransformMatrix3DNode .prototype = Object .assign (Object .create (X3DGroupingNode .prototype),
@@ -71,15 +69,15 @@ X3DTransformMatrix3DNode .prototype = Object .assign (Object .create (X3DGroupin
71
69
  {
72
70
  this .matrix .identity ();
73
71
 
74
- this .getBBox = this .getGetGroupBBox ();
75
- this .traverse = this .getGroupTraverse ();
72
+ this .getBBox = this .getSubBBox;
73
+ this .traverse = this .groupTraverse;
76
74
  }
77
75
  else
78
76
  {
79
77
  this .matrix .assign (matrix);
80
78
 
81
- this .getBBox = this .getGetBBox ();
82
- this .traverse = this .getTraverse ();
79
+ delete this .getBBox;
80
+ delete this .traverse;
83
81
  }
84
82
  },
85
83
  getMatrix: function ()
@@ -92,56 +90,33 @@ X3DTransformMatrix3DNode .prototype = Object .assign (Object .create (X3DGroupin
92
90
  {
93
91
  this .matrix .identity ();
94
92
 
95
- this .getBBox = this .getGetGroupBBox ();
96
- this .traverse = this .getGroupTraverse ();
93
+ this .getBBox = this .getSubBBox;
94
+ this .traverse = this .groupTraverse;
97
95
  }
98
96
  else
99
97
  {
100
98
  this .matrix .set (t, r, s, so, c);
101
99
 
102
- this .getBBox = this .getGetBBox ();
103
- this .traverse = this .getTraverse ();
100
+ delete this .getBBox;
101
+ delete this .traverse;
104
102
  }
105
103
  },
106
- getGetBBox: (function ()
104
+ getBBox: function getBBox (bbox, shadows)
107
105
  {
108
- function getBBox (bbox, shadows)
109
- {
110
- return this .getSubBBox (bbox, shadows) .multRight (this .matrix);
111
- }
112
-
113
- return function ()
114
- {
115
- return getBBox;
116
- };
117
- })(),
118
- getGetGroupBBox: function ()
119
- {
120
- return X3DGroupingNode .prototype .getBBox;
106
+ return this .getSubBBox (bbox, shadows) .multRight (this .matrix);
121
107
  },
122
- getTraverse: (function ()
108
+ traverse: function (type, renderObject)
123
109
  {
124
- function traverse (type, renderObject)
125
- {
126
- const modelViewMatrix = renderObject .getModelViewMatrix ();
127
-
128
- modelViewMatrix .push ();
129
- modelViewMatrix .multLeft (this .matrix);
110
+ const modelViewMatrix = renderObject .getModelViewMatrix ();
130
111
 
131
- X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
112
+ modelViewMatrix .push ();
113
+ modelViewMatrix .multLeft (this .matrix);
132
114
 
133
- modelViewMatrix .pop ();
134
- }
115
+ X3DGroupingNode .prototype .traverse .call (this, type, renderObject);
135
116
 
136
- return function ()
137
- {
138
- return traverse;
139
- };
140
- })(),
141
- getGroupTraverse: function ()
142
- {
143
- return X3DGroupingNode .prototype .traverse;
117
+ modelViewMatrix .pop ();
144
118
  },
119
+ groupTraverse: X3DGroupingNode .prototype .traverse,
145
120
  });
146
121
 
147
122
  export default X3DTransformMatrix3DNode;
@@ -159,6 +159,8 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
159
159
  this ._scale .addFieldInterest (this .transformNode ._scale);
160
160
  this ._scaleOrientation .addFieldInterest (this .transformNode ._scaleOrientation);
161
161
  this ._center .addFieldInterest (this .transformNode ._center);
162
+ this ._visible .addFieldInterest (this .transformNode ._visible);
163
+ this ._bboxDisplay .addFieldInterest (this .transformNode ._bboxDisplay);
162
164
  this ._bboxSize .addFieldInterest (this .transformNode ._bboxSize);
163
165
  this ._bboxCenter .addFieldInterest (this .transformNode ._bboxCenter);
164
166
 
@@ -167,6 +169,8 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
167
169
  this .transformNode ._scale = this ._scale;
168
170
  this .transformNode ._scaleOrientation = this ._scaleOrientation;
169
171
  this .transformNode ._center = this ._center;
172
+ this .transformNode ._visible = this ._visible;
173
+ this .transformNode ._bboxDisplay = this ._bboxDisplay;
170
174
  this .transformNode ._bboxSize = this ._bboxSize;
171
175
  this .transformNode ._bboxCenter = this ._bboxCenter;
172
176
  this .transformNode ._children = [ this .viewpointsNode, this .skeletonNode, this .skinNode ];
@@ -200,13 +204,13 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
200
204
  },
201
205
  set_joints__: function ()
202
206
  {
203
- var jointNodes = this .jointNodes;
207
+ const jointNodes = this .jointNodes;
204
208
 
205
209
  jointNodes .length = 0;
206
210
 
207
- for (var i = 0, length = this ._joints .length; i < length; ++ i)
211
+ for (const node of this ._joints)
208
212
  {
209
- var jointNode = X3DCast (X3DConstants .HAnimJoint, this ._joints [i]);
213
+ const jointNode = X3DCast (X3DConstants .HAnimJoint, node);
210
214
 
211
215
  if (jointNode)
212
216
  jointNodes .push (jointNode);
@@ -232,12 +236,14 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
232
236
  },
233
237
  traverse: function (type, renderObject)
234
238
  {
239
+ renderObject .getJoints () .length = 0;
240
+
235
241
  this .transformNode .traverse (type, renderObject);
236
242
  this .skinning (type, renderObject);
237
243
  },
238
244
  skinning: (function ()
239
245
  {
240
- var
246
+ const
241
247
  invModelMatrix = new Matrix4 (),
242
248
  vector = new Vector3 (0, 0, 0),
243
249
  rest = new Vector3 (0, 0, 0),
@@ -252,8 +258,8 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
252
258
  if (! this .skinCoordNode)
253
259
  return;
254
260
 
255
- var
256
- jointNodes = this .jointNodes,
261
+ const
262
+ jointNodes = this .jointNodes .length ? this .jointNodes : renderObject .getJoints (),
257
263
  skinNormalNode = this .skinNormalNode,
258
264
  skinCoordNode = this .skinCoordNode,
259
265
  restNormalNode = this .restNormalNode,
@@ -272,32 +278,25 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
272
278
 
273
279
  // Apply joint transformations.
274
280
 
275
- for (var j = 0, jointNodesLength = jointNodes .length; j < jointNodesLength; ++ j)
281
+ for (const jointNode of jointNodes)
276
282
  {
277
- var
278
- jointNode = jointNodes [j],
279
- skinCoordIndexLength = jointNode ._skinCoordIndex .length;
280
-
281
- if (skinCoordIndexLength === 0)
282
- continue;
283
-
284
- var
285
- jointMatrix = jointNode .getModelMatrix () .multRight (invModelMatrix),
286
- displacerNodes = jointNode .getDisplacers ();
283
+ const
284
+ skinCoordIndexLength = jointNode ._skinCoordIndex .length,
285
+ jointMatrix = jointNode .getModelMatrix () .multRight (invModelMatrix),
286
+ displacerNodes = jointNode .getDisplacers ();
287
287
 
288
- for (var d = 0, displacerNodesLength = displacerNodes .length; d < displacerNodesLength; ++ d)
288
+ for (const displacerNode of displacerNodes)
289
289
  {
290
- var
291
- displacerNode = displacerNodes [d],
290
+ const
292
291
  coordIndex = displacerNode ._coordIndex .getValue (),
293
292
  coordIndexLength = displacerNode ._coordIndex .length,
294
293
  weight = displacerNode ._weight .getValue (),
295
294
  displacements = displacerNode ._displacements .getValue (),
296
295
  displacementsLength = displacerNode ._displacements .length;
297
296
 
298
- for (var i = 0; i < coordIndexLength; ++ i)
297
+ for (let i = 0; i < coordIndexLength; ++ i)
299
298
  {
300
- var
299
+ const
301
300
  i3 = i * 3,
302
301
  index = coordIndex [i],
303
302
  displacement = i < displacementsLength ? point .set (displacements [i3], displacements [i3 + 1], displacements [i3 + 2]) : point .assign (Vector3 .Zero);
@@ -308,15 +307,15 @@ HAnimHumanoid .prototype = Object .assign (Object .create (X3DChildNode .prototy
308
307
  }
309
308
  }
310
309
 
311
- var
310
+ const
312
311
  normalMatrix = skinNormalNode ? jointMatrix .submatrix .transpose () .inverse () : null,
313
312
  skinCoordIndex = jointNode ._skinCoordIndex .getValue (),
314
313
  skinCoordWeight = jointNode ._skinCoordWeight .getValue (),
315
314
  skinCoordWeightLength = jointNode ._skinCoordWeight .length;
316
315
 
317
- for (var i = 0; i < skinCoordIndexLength; ++ i)
316
+ for (let i = 0; i < skinCoordIndexLength; ++ i)
318
317
  {
319
- var
318
+ const
320
319
  index = skinCoordIndex [i],
321
320
  weight = i < skinCoordWeightLength ? skinCoordWeight [i] : 1;
322
321
 
@@ -133,54 +133,42 @@ HAnimJoint .prototype = Object .assign (Object .create (X3DTransformNode .protot
133
133
 
134
134
  displacerNodes .length = 0;
135
135
 
136
- for (var i = 0, length = this ._displacers .length; i < length; ++ i)
136
+ for (const node of this ._displacers)
137
137
  {
138
- const displacerNode = X3DCast (X3DConstants .HAnimDisplacer, this ._displacers [i]);
138
+ const displacerNode = X3DCast (X3DConstants .HAnimDisplacer, node);
139
139
 
140
140
  if (displacerNode)
141
141
  displacerNodes .push (displacerNode);
142
142
  }
143
143
  },
144
- getTraverse: (function ()
144
+ traverse: function traverse (type, renderObject)
145
145
  {
146
- const base = X3DTransformNode .prototype .getTraverse ();
147
-
148
- function traverse (type, renderObject)
146
+ if (type === TraverseType .CAMERA)
149
147
  {
150
- if (type === TraverseType .CAMERA)
151
- this .modelMatrix .assign (this .getMatrix ()) .multRight (renderObject .getModelViewMatrix () .get ());
148
+ if (this ._skinCoordIndex .length)
149
+ {
150
+ renderObject .getJoints () .push (this);
152
151
 
153
- base .call (this, type, renderObject);
152
+ this .modelMatrix .assign (this .getMatrix ()) .multRight (renderObject .getModelViewMatrix () .get ());
153
+ }
154
154
  }
155
155
 
156
- return function ()
156
+ X3DTransformNode .prototype .traverse .call (this, type, renderObject);
157
+ },
158
+ groupTraverse: function (type, renderObject)
159
+ {
160
+ if (type === TraverseType .CAMERA)
157
161
  {
158
162
  if (this ._skinCoordIndex .length)
159
- return traverse;
160
-
161
- return base;
162
- };
163
- })(),
164
- getGroupTraverse: (function ()
165
- {
166
- const base = X3DTransformNode .prototype .getGroupTraverse ();
163
+ {
164
+ renderObject .getJoints () .push (this);
167
165
 
168
- function traverse (type, renderObject)
169
- {
170
- if (type === TraverseType .CAMERA)
171
166
  this .modelMatrix .assign (renderObject .getModelViewMatrix () .get ());
172
-
173
- base .call (this, type, renderObject);
167
+ }
174
168
  }
175
169
 
176
- return function ()
177
- {
178
- if (this ._skinCoordIndex .length)
179
- return traverse;
180
-
181
- return base;
182
- };
183
- })(),
170
+ X3DTransformNode .prototype .groupTraverse .call (this, type, renderObject);
171
+ },
184
172
  });
185
173
 
186
174
  export default HAnimJoint;
@@ -45,19 +45,32 @@
45
45
  *
46
46
  ******************************************************************************/
47
47
 
48
+ import X3DChildNode from "../Core/X3DChildNode.js";
48
49
  import X3DTimeDependentNode from "../Time/X3DTimeDependentNode.js";
49
50
  import X3DConstants from "../../Base/X3DConstants.js";
50
51
 
51
52
  function X3DSoundProcessingNode (executionContext)
52
53
  {
54
+ X3DChildNode .call (this, executionContext);
53
55
  X3DTimeDependentNode .call (this, executionContext);
54
56
 
55
57
  this .addType (X3DConstants .X3DSoundProcessingNode);
56
58
  }
57
59
 
58
- X3DSoundProcessingNode .prototype = Object .assign (Object .create (X3DTimeDependentNode .prototype),
60
+ X3DSoundProcessingNode .prototype = Object .assign (Object .create (X3DChildNode .prototype),
61
+ X3DTimeDependentNode .prototype,
59
62
  {
60
63
  constructor: X3DSoundProcessingNode,
64
+ initialize: function ()
65
+ {
66
+ X3DChildNode .prototype .initialize .call (this);
67
+ X3DTimeDependentNode .prototype .initialize .call (this);
68
+ },
69
+ dispose: function ()
70
+ {
71
+ X3DTimeDependentNode .prototype .dispose .call (this);
72
+ X3DChildNode .prototype .dispose .call (this);
73
+ },
61
74
  });
62
75
 
63
76
  export default X3DSoundProcessingNode;