x_ite 8.8.3 → 8.8.4

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 (246) hide show
  1. package/dist/assets/components/Annotation.js +13 -13
  2. package/dist/assets/components/Annotation.min.js +1 -1
  3. package/dist/assets/components/CADGeometry.js +13 -13
  4. package/dist/assets/components/CADGeometry.min.js +1 -1
  5. package/dist/assets/components/CubeMapTexturing.js +29 -29
  6. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  7. package/dist/assets/components/DIS.js +13 -13
  8. package/dist/assets/components/DIS.min.js +1 -1
  9. package/dist/assets/components/EventUtilities.js +9 -9
  10. package/dist/assets/components/EventUtilities.min.js +1 -1
  11. package/dist/assets/components/Geometry2D.js +22 -22
  12. package/dist/assets/components/Geometry2D.min.js +1 -1
  13. package/dist/assets/components/Geospatial.js +48 -48
  14. package/dist/assets/components/Geospatial.min.js +1 -1
  15. package/dist/assets/components/HAnim.js +19 -19
  16. package/dist/assets/components/HAnim.min.js +1 -1
  17. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  18. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  19. package/dist/assets/components/Layout.js +32 -32
  20. package/dist/assets/components/Layout.min.js +1 -1
  21. package/dist/assets/components/NURBS.js +35 -35
  22. package/dist/assets/components/NURBS.min.js +1 -1
  23. package/dist/assets/components/ParticleSystems.js +33 -33
  24. package/dist/assets/components/ParticleSystems.min.js +1 -1
  25. package/dist/assets/components/Picking.js +32 -35
  26. package/dist/assets/components/Picking.min.js +1 -1
  27. package/dist/assets/components/RigidBodyPhysics.js +47 -56
  28. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  29. package/dist/assets/components/Scripting.js +38 -45
  30. package/dist/assets/components/Scripting.min.js +1 -1
  31. package/dist/assets/components/Text.js +26 -26
  32. package/dist/assets/components/Text.min.js +1 -1
  33. package/dist/assets/components/TextureProjector.js +16 -16
  34. package/dist/assets/components/TextureProjector.min.js +1 -1
  35. package/dist/assets/components/Texturing3D.js +37 -37
  36. package/dist/assets/components/Texturing3D.min.js +1 -1
  37. package/dist/assets/components/VolumeRendering.js +18 -18
  38. package/dist/assets/components/VolumeRendering.min.js +1 -1
  39. package/dist/assets/components/X_ITE.js +9 -9
  40. package/dist/assets/components/X_ITE.min.js +1 -1
  41. package/dist/x_ite.css +1 -1
  42. package/dist/x_ite.js +1762 -1827
  43. package/dist/x_ite.min.js +1 -1
  44. package/dist/x_ite.zip +0 -0
  45. package/docs/_config.yml +1 -1
  46. package/package.json +2 -2
  47. package/src/bookmarks.js +1 -1
  48. package/src/lib/jquery.js +8 -0
  49. package/src/lib/nurbs/src/utils/create-accessors.js +4 -4
  50. package/src/lib/nurbs/src/utils/variable.js +1 -1
  51. package/src/shim.js +1 -1
  52. package/src/standard/Math/Algorithms/Bezier.js +2 -2
  53. package/src/standard/Math/Geometry/Box2.js +4 -4
  54. package/src/standard/Math/Geometry/Box3.js +8 -8
  55. package/src/standard/Math/Geometry/Camera.js +1 -1
  56. package/src/standard/Math/Geometry/Line2.js +2 -2
  57. package/src/standard/Math/Geometry/Line3.js +4 -4
  58. package/src/standard/Math/Geometry/Sphere3.js +1 -1
  59. package/src/standard/Math/Geometry/Triangle3.js +2 -2
  60. package/src/standard/Math/Geometry/ViewVolume.js +10 -10
  61. package/src/standard/Math/Numbers/Matrix2.js +2 -2
  62. package/src/standard/Math/Numbers/Matrix3.js +10 -10
  63. package/src/standard/Math/Numbers/Matrix4.js +12 -12
  64. package/src/standard/Math/Numbers/Quaternion.js +2 -2
  65. package/src/standard/Math/Numbers/Rotation4.js +2 -2
  66. package/src/standard/Math/Numbers/Vector3.js +1 -1
  67. package/src/standard/Utility/MapUtilities.js +2 -2
  68. package/src/x_ite/Base/Events.js +6 -33
  69. package/src/x_ite/Base/FieldArray.js +1 -1
  70. package/src/x_ite/Base/FieldDefinitionArray.js +1 -1
  71. package/src/x_ite/Base/X3DArrayField.js +1 -1
  72. package/src/x_ite/Base/X3DBaseNode.js +58 -69
  73. package/src/x_ite/Base/X3DChildObject.js +46 -14
  74. package/src/x_ite/Base/X3DConstants.js +1 -1
  75. package/src/x_ite/Base/X3DField.js +4 -6
  76. package/src/x_ite/Base/X3DFieldDefinition.js +1 -1
  77. package/src/x_ite/Base/X3DInfoArray.js +1 -1
  78. package/src/x_ite/Base/X3DObject.js +5 -5
  79. package/src/x_ite/Base/X3DObjectArrayField.js +1 -1
  80. package/src/x_ite/Base/X3DTypedArrayField.js +1 -1
  81. package/src/x_ite/Browser/Core/BrowserOptions.js +7 -3
  82. package/src/x_ite/Browser/Core/BrowserTimings.js +1 -1
  83. package/src/x_ite/Browser/Core/ContextMenu.js +1 -12
  84. package/src/x_ite/Browser/Core/X3DCoreContext.js +1 -2
  85. package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +1 -1
  86. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator.js +2 -2
  87. package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +1 -1
  88. package/src/x_ite/Browser/Interpolation/SquatInterpolator.js +1 -1
  89. package/src/x_ite/Browser/Layout/ScreenText.js +4 -4
  90. package/src/x_ite/Browser/Layout/X3DLayoutContext.js +1 -1
  91. package/src/x_ite/Browser/NURBS/NURBS.js +3 -3
  92. package/src/x_ite/Browser/Navigation/ExamineViewer.js +9 -13
  93. package/src/x_ite/Browser/Navigation/LookAtViewer.js +4 -7
  94. package/src/x_ite/Browser/Navigation/WalkViewer.js +1 -1
  95. package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +5 -6
  96. package/src/x_ite/Browser/Navigation/X3DViewer.js +2 -2
  97. package/src/x_ite/Browser/Networking/URLs.js +17 -9
  98. package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +0 -2
  99. package/src/x_ite/Browser/Picking/VolumePicker.js +2 -2
  100. package/src/x_ite/Browser/Text/PolygonText.js +2 -2
  101. package/src/x_ite/Browser/Texturing3D/DICOMParser.js +3 -3
  102. package/src/x_ite/Browser/Texturing3D/NRRDParser.js +2 -2
  103. package/src/x_ite/Browser/Time/X3DTimeContext.js +1 -1
  104. package/src/x_ite/Browser/VERSION.js +1 -1
  105. package/src/x_ite/Browser/X3DBrowser.js +148 -67
  106. package/src/x_ite/Browser/X3DBrowserContext.js +52 -16
  107. package/src/x_ite/Components/Core/X3DNode.js +21 -2
  108. package/src/x_ite/Components/Core/X3DPrototypeInstance.js +38 -42
  109. package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +2 -2
  110. package/src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js +1 -1
  111. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +4 -4
  112. package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +1 -1
  113. package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +2 -2
  114. package/src/x_ite/Components/EnvironmentalSensor/TransformSensor.js +2 -2
  115. package/src/x_ite/Components/EnvironmentalSensor/VisibilitySensor.js +1 -1
  116. package/src/x_ite/Components/Followers/X3DFollowerNode.js +1 -1
  117. package/src/x_ite/Components/Geometry2D/ArcClose2D.js +1 -1
  118. package/src/x_ite/Components/Geometry2D/Rectangle2D.js +1 -1
  119. package/src/x_ite/Components/Geometry3D/Box.js +1 -1
  120. package/src/x_ite/Components/Geometry3D/Extrusion.js +3 -3
  121. package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +3 -3
  122. package/src/x_ite/Components/Geospatial/GeoCoordinate.js +6 -6
  123. package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +1 -1
  124. package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +1 -1
  125. package/src/x_ite/Components/Geospatial/GeoViewpoint.js +7 -7
  126. package/src/x_ite/Components/Grouping/StaticGroup.js +1 -1
  127. package/src/x_ite/Components/Grouping/X3DBoundedObject.js +2 -2
  128. package/src/x_ite/Components/HAnim/HAnimHumanoid.js +1 -1
  129. package/src/x_ite/Components/Interpolation/ColorInterpolator.js +1 -1
  130. package/src/x_ite/Components/Interpolation/NormalInterpolator.js +1 -1
  131. package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +1 -1
  132. package/src/x_ite/Components/Interpolation/PositionInterpolator.js +1 -1
  133. package/src/x_ite/Components/Interpolation/PositionInterpolator2D.js +1 -1
  134. package/src/x_ite/Components/Layering/X3DLayerNode.js +1 -1
  135. package/src/x_ite/Components/Lighting/X3DLightNode.js +1 -1
  136. package/src/x_ite/Components/NURBS/NurbsSurfaceInterpolator.js +1 -1
  137. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +2 -2
  138. package/src/x_ite/Components/Navigation/Billboard.js +1 -1
  139. package/src/x_ite/Components/Navigation/LOD.js +2 -2
  140. package/src/x_ite/Components/Navigation/OrthoViewpoint.js +1 -1
  141. package/src/x_ite/Components/Navigation/Viewpoint.js +1 -1
  142. package/src/x_ite/Components/Navigation/X3DViewpointNode.js +3 -3
  143. package/src/x_ite/Components/Networking/Inline.js +0 -4
  144. package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +1 -1
  145. package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +2 -2
  146. package/src/x_ite/Components/ParticleSystems/PointEmitter.js +1 -1
  147. package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +2 -2
  148. package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +1 -1
  149. package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +2 -2
  150. package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +1 -1
  151. package/src/x_ite/Components/Picking/LinePickSensor.js +1 -1
  152. package/src/x_ite/Components/Picking/PickableGroup.js +1 -1
  153. package/src/x_ite/Components/Picking/PointPickSensor.js +2 -2
  154. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +1 -1
  155. package/src/x_ite/Components/Picking/VolumePickSensor.js +1 -1
  156. package/src/x_ite/Components/Picking/X3DPickSensorNode.js +6 -9
  157. package/src/x_ite/Components/PointingDeviceSensor/X3DTouchSensorNode.js +1 -1
  158. package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +1 -1
  159. package/src/x_ite/Components/Rendering/X3DCoordinateNode.js +2 -2
  160. package/src/x_ite/Components/Rendering/X3DGeometryNode.js +8 -11
  161. package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +2 -2
  162. package/src/x_ite/Components/RigidBodyPhysics/BallJoint.js +2 -2
  163. package/src/x_ite/Components/RigidBodyPhysics/CollidableShape.js +3 -3
  164. package/src/x_ite/Components/RigidBodyPhysics/CollisionCollection.js +1 -1
  165. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +5 -14
  166. package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +3 -3
  167. package/src/x_ite/Components/RigidBodyPhysics/RigidBody.js +9 -9
  168. package/src/x_ite/Components/RigidBodyPhysics/RigidBodyCollection.js +1 -1
  169. package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +3 -3
  170. package/src/x_ite/Components/RigidBodyPhysics/SliderJoint.js +1 -1
  171. package/src/x_ite/Components/RigidBodyPhysics/X3DNBodyCollidableNode.js +1 -1
  172. package/src/x_ite/Components/Scripting/Script.js +1 -8
  173. package/src/x_ite/Components/Shaders/ShaderPart.js +2 -2
  174. package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +385 -382
  175. package/src/x_ite/Components/Shape/Appearance.js +1 -1
  176. package/src/x_ite/Components/Shape/Material.js +1 -1
  177. package/src/x_ite/Components/Shape/PhysicalMaterial.js +1 -1
  178. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +1 -1
  179. package/src/x_ite/Components/Sound/Sound.js +2 -2
  180. package/src/x_ite/Components/TextureProjector/X3DTextureProjectorNode.js +2 -2
  181. package/src/x_ite/Components/Texturing/MultiTexture.js +3 -3
  182. package/src/x_ite/Components/Texturing/TextureCoordinateGenerator.js +1 -1
  183. package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
  184. package/src/x_ite/Components/Texturing/TextureTransform.js +1 -1
  185. package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +2 -2
  186. package/src/x_ite/Components/Texturing3D/PixelTexture3D.js +1 -1
  187. package/src/x_ite/Components/Texturing3D/TextureTransform3D.js +1 -1
  188. package/src/x_ite/Components.js +1 -20
  189. package/src/x_ite/Configuration/AbstractNodesArray.js +1 -1
  190. package/src/x_ite/Configuration/ComponentInfo.js +1 -1
  191. package/src/x_ite/Configuration/ComponentInfoArray.js +1 -1
  192. package/src/x_ite/Configuration/ConcreteNodesArray.js +1 -1
  193. package/src/x_ite/Configuration/ProfileInfo.js +1 -1
  194. package/src/x_ite/Configuration/ProfileInfoArray.js +1 -1
  195. package/src/x_ite/Configuration/UnitInfo.js +1 -1
  196. package/src/x_ite/Configuration/UnitInfoArray.js +1 -1
  197. package/src/x_ite/Execution/BindableList.js +1 -1
  198. package/src/x_ite/Execution/BindableStack.js +1 -1
  199. package/src/x_ite/Execution/ExportedNodesArray.js +1 -1
  200. package/src/x_ite/Execution/ImportedNodesArray.js +1 -1
  201. package/src/x_ite/Execution/NamedNodesArray.js +1 -1
  202. package/src/x_ite/Execution/X3DExecutionContext.js +9 -11
  203. package/src/x_ite/Execution/X3DExportedNode.js +1 -1
  204. package/src/x_ite/Execution/X3DImportedNode.js +1 -1
  205. package/src/x_ite/Execution/X3DScene.js +2 -6
  206. package/src/x_ite/Execution/X3DWorld.js +1 -2
  207. package/src/x_ite/{Browser/Networking/Features.js → Features.js} +9 -2
  208. package/src/x_ite/Fields/ArrayFields.js +9 -51
  209. package/src/x_ite/Fields/SFBool.js +1 -1
  210. package/src/x_ite/Fields/SFColor.js +2 -2
  211. package/src/x_ite/Fields/SFColorRGBA.js +2 -2
  212. package/src/x_ite/Fields/SFDouble.js +1 -1
  213. package/src/x_ite/Fields/SFFloat.js +1 -1
  214. package/src/x_ite/Fields/SFImage.js +2 -2
  215. package/src/x_ite/Fields/SFInt32.js +1 -1
  216. package/src/x_ite/Fields/SFMatrix3.js +1 -1
  217. package/src/x_ite/Fields/SFMatrix4.js +1 -1
  218. package/src/x_ite/Fields/SFNode.js +3 -25
  219. package/src/x_ite/Fields/SFNodeCache.js +24 -3
  220. package/src/x_ite/Fields/SFRotation.js +1 -1
  221. package/src/x_ite/Fields/SFString.js +1 -1
  222. package/src/x_ite/Fields/SFTime.js +1 -1
  223. package/src/x_ite/Fields/SFVec2.js +1 -1
  224. package/src/x_ite/Fields/SFVec3.js +1 -1
  225. package/src/x_ite/Fields/SFVec4.js +1 -1
  226. package/src/x_ite/InputOutput/FileLoader.js +1 -1
  227. package/src/x_ite/InputOutput/Generator.js +8 -8
  228. package/src/x_ite/Parser/GLTF2Parser.js +5 -5
  229. package/src/x_ite/Parser/HTMLSupport.js +3 -0
  230. package/src/x_ite/Parser/SVGParser.js +2 -2
  231. package/src/x_ite/Parser/VRMLParser.js +1 -1
  232. package/src/x_ite/Parser/XMLParser.js +1 -1
  233. package/src/x_ite/Prototype/ExternProtoDeclarationArray.js +1 -1
  234. package/src/x_ite/Prototype/ProtoDeclarationArray.js +1 -1
  235. package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +1 -3
  236. package/src/x_ite/Prototype/X3DProtoDeclaration.js +1 -2
  237. package/src/x_ite/Prototype/X3DProtoDeclarationNode.js +1 -2
  238. package/src/x_ite/Rendering/DependentRenderer.js +1 -1
  239. package/src/x_ite/Rendering/TextureBuffer.js +2 -2
  240. package/src/x_ite/Rendering/X3DRenderObject.js +11 -11
  241. package/src/x_ite/Routing/RouteArray.js +1 -1
  242. package/src/x_ite/Routing/X3DRoute.js +1 -1
  243. package/src/x_ite/X3D.js +2 -2
  244. package/src/x_ite.html +3 -3
  245. package/x_ite.min.html +3 -3
  246. package/src/x_ite/Base/X3DEventObject.js +0 -115
@@ -49,52 +49,25 @@ const Events = Object .assign ([ ],
49
49
  {
50
50
  create (field)
51
51
  {
52
- if (this .length)
53
- {
54
- const event = this .pop ();
55
-
56
- event .field = field;
57
- event .clear ();
58
-
59
- return event;
60
- }
61
-
62
- const event = new Set ();
52
+ const event = this .pop () ?? new Set ();
63
53
 
64
54
  event .field = field;
55
+ event .clear ();
65
56
 
66
57
  return event;
67
58
  },
68
59
  copy (event)
69
60
  {
70
- if (this .length)
71
- {
72
- const copy = this .pop ();
73
-
74
- copy .field = event .field;
75
- copy .clear ();
76
-
77
- for (const source of event)
78
- {
79
- copy .add (source);
80
- }
61
+ const copy = this .create (event .field);
81
62
 
82
- return copy;
83
- }
84
-
85
- const copy = new Set (event);
86
-
87
- copy .field = event .field;
63
+ for (const source of event)
64
+ copy .add (source);
88
65
 
89
66
  return copy;
90
67
  },
91
- clear ()
92
- {
93
- this .length = 0;
94
- },
95
68
  });
96
69
 
97
- for (const key of Reflect .ownKeys (Events))
70
+ for (const key of Object .keys (Events))
98
71
  Object .defineProperty (Events, key, { enumerable: false });
99
72
 
100
73
  export default Events;
@@ -55,7 +55,7 @@ function FieldArray (values = [ ])
55
55
 
56
56
  Object .setPrototypeOf (FieldArray .prototype, X3DInfoArray .prototype);
57
57
 
58
- for (const key of Reflect .ownKeys (FieldArray .prototype))
58
+ for (const key of Object .keys (FieldArray .prototype))
59
59
  Object .defineProperty (FieldArray .prototype, key, { enumerable: false });
60
60
 
61
61
  Object .defineProperties (FieldArray,
@@ -55,7 +55,7 @@ function FieldDefinitionArray (values = [ ])
55
55
 
56
56
  Object .setPrototypeOf (FieldDefinitionArray .prototype, X3DInfoArray .prototype);
57
57
 
58
- for (const key of Reflect .ownKeys (FieldDefinitionArray .prototype))
58
+ for (const key of Object .keys (FieldDefinitionArray .prototype))
59
59
  Object .defineProperty (FieldDefinitionArray .prototype, key, { enumerable: false });
60
60
 
61
61
  Object .defineProperties (FieldDefinitionArray,
@@ -117,7 +117,7 @@ Object .assign (Object .setPrototypeOf (X3DArrayField .prototype, X3DField .prot
117
117
  },
118
118
  });
119
119
 
120
- for (const key of Reflect .ownKeys (X3DArrayField .prototype))
120
+ for (const key of Object .keys (X3DArrayField .prototype))
121
121
  Object .defineProperty (X3DArrayField .prototype, key, { enumerable: false });
122
122
 
123
123
  export default X3DArrayField;
@@ -45,7 +45,8 @@
45
45
  *
46
46
  ******************************************************************************/
47
47
 
48
- import X3DEventObject from "./X3DEventObject.js";
48
+ import X3DChildObject from "./X3DChildObject.js";
49
+ import Events from "./Events.js";
49
50
  import X3DFieldDefinition from "./X3DFieldDefinition.js";
50
51
  import FieldDefinitionArray from "./FieldDefinitionArray.js";
51
52
  import FieldArray from "./FieldArray.js";
@@ -54,6 +55,7 @@ import X3DConstants from "./X3DConstants.js";
54
55
  import HTMLSupport from "../Parser/HTMLSupport.js";
55
56
 
56
57
  const
58
+ _browser = Symbol (),
57
59
  _executionContext = Symbol (),
58
60
  _type = Symbol (),
59
61
  _fieldDefinitions = Symbol .for ("X_ITE.X3DBaseNode.fieldDefinitions"),
@@ -62,17 +64,16 @@ const
62
64
  _childObjects = Symbol (),
63
65
  _initialized = Symbol (),
64
66
  _live = Symbol (),
65
- _set_live__ = Symbol (),
66
- _private = Symbol (),
67
- _cloneCount = Symbol ();
67
+ _set_live__ = Symbol ();
68
68
 
69
- function X3DBaseNode (executionContext)
69
+ function X3DBaseNode (executionContext, browser = executionContext .getBrowser ())
70
70
  {
71
71
  if (this [_executionContext])
72
72
  return;
73
73
 
74
- X3DEventObject .call (this, executionContext .getBrowser ());
74
+ X3DChildObject .call (this);
75
75
 
76
+ this [_browser] = browser;
76
77
  this [_executionContext] = executionContext;
77
78
  this [_type] = [ X3DConstants .X3DBaseNode ];
78
79
  this [_fieldDefinitions] = this .constructor .fieldDefinitions ?? this [_fieldDefinitions];
@@ -81,36 +82,38 @@ function X3DBaseNode (executionContext)
81
82
  this [_childObjects] = [ ];
82
83
  this [_live] = true;
83
84
  this [_initialized] = false;
84
- this [_private] = false;
85
- this [_cloneCount] = 0;
86
85
 
87
86
  if (this .canUserDefinedFields ())
88
87
  this [_fieldDefinitions] = new FieldDefinitionArray (this [_fieldDefinitions]);
89
88
 
90
89
  // Create fields.
91
90
 
92
- this .addChildObjects ("name_changed", new Fields .SFTime (),
93
- "typeName_changed", new Fields .SFTime (),
94
- "cloneCount_changed", new Fields .SFTime ())
91
+ this .addChildObjects ("name_changed", new Fields .SFTime (),
92
+ "typeName_changed", new Fields .SFTime (),
93
+ "parents_changed", new Fields .SFTime ())
95
94
 
96
95
  for (const fieldDefinition of this [_fieldDefinitions])
97
96
  this .addPredefinedField (fieldDefinition);
98
97
  }
99
98
 
100
- Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .prototype),
99
+ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DChildObject .prototype),
101
100
  {
102
101
  [_fieldDefinitions]: new FieldDefinitionArray ([ ]),
103
102
  setName (value)
104
103
  {
105
- X3DEventObject .prototype .setName .call (this, value)
104
+ X3DChildObject .prototype .setName .call (this, value)
106
105
 
107
- this ._name_changed = this .getBrowser () .getCurrentTime ();
106
+ this ._name_changed = this [_browser] .getCurrentTime ();
107
+ },
108
+ getBrowser ()
109
+ {
110
+ return this [_browser];
108
111
  },
109
112
  getMainScene ()
110
113
  {
111
114
  let scene = this [_executionContext] .getScene ();
112
115
 
113
- while (! scene .isMainScene ())
116
+ while (!scene .isMainScene ())
114
117
  scene = scene .getScene ();
115
118
 
116
119
  return scene;
@@ -119,7 +122,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
119
122
  {
120
123
  let executionContext = this [_executionContext];
121
124
 
122
- while (! executionContext .isScene ())
125
+ while (!executionContext .isScene ())
123
126
  executionContext = executionContext .getExecutionContext ();
124
127
 
125
128
  return executionContext;
@@ -160,7 +163,7 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
160
163
 
161
164
  this [_set_live__] ();
162
165
  },
163
- getLive: (function ()
166
+ getLive: (() =>
164
167
  {
165
168
  function getLive ()
166
169
  {
@@ -333,9 +336,6 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
333
336
  set (value) { field .setValue (value); },
334
337
  configurable: true,
335
338
  });
336
-
337
- if (!this .isPrivate ())
338
- field .addCloneCount (1);
339
339
  },
340
340
  addAlias (alias, field)
341
341
  {
@@ -356,9 +356,6 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
356
356
  this [_predefinedFields] .remove (name);
357
357
 
358
358
  delete this [`_${field .getName ()}`];
359
-
360
- if (!this .isPrivate ())
361
- field .removeCloneCount (1);
362
359
  },
363
360
  getPredefinedField (name)
364
361
  {
@@ -394,9 +391,6 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
394
391
 
395
392
  this [_fieldDefinitions] .add (name, new X3DFieldDefinition (accessType, name, field));
396
393
  this [_userDefinedFields] .add (name, field);
397
-
398
- if (!this .isPrivate ())
399
- field .addCloneCount (1);
400
394
  },
401
395
  removeUserDefinedField (name)
402
396
  {
@@ -409,9 +403,6 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
409
403
 
410
404
  this [_fieldDefinitions] .remove (name);
411
405
  this [_userDefinedFields] .remove (name);
412
-
413
- if (!this .isPrivate ())
414
- field .removeCloneCount (1);
415
406
  },
416
407
  getUserDefinedField (name)
417
408
  {
@@ -501,58 +492,56 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
501
492
 
502
493
  return false;
503
494
  },
504
- isPrivate ()
495
+ getExtendedEventHandling ()
505
496
  {
506
- return this [_private];
497
+ // Whether initializeOnly field are treated like inputOnly and inputOutput fields.
498
+ return true;
507
499
  },
508
- setPrivate (value)
500
+ addEvent (field)
509
501
  {
510
- this [_private] = value;
511
-
512
- if (value)
513
- {
514
- for (const field of this [_predefinedFields])
515
- field .removeCloneCount (1);
502
+ if (field .isTainted ())
503
+ return;
516
504
 
517
- for (const field of this [_userDefinedFields])
518
- field .removeCloneCount (1);
519
- }
520
- else
521
- {
522
- for (const field of this [_predefinedFields])
523
- field .addCloneCount (1);
505
+ field .setTainted (true);
524
506
 
525
- for (const field of this [_userDefinedFields])
526
- field .addCloneCount (1);
527
- }
528
- },
529
- getCloneCount ()
530
- {
531
- return this [_cloneCount];
507
+ this .addEventObject (field, Events .create (field));
532
508
  },
533
- addCloneCount (count)
509
+ addEventObject (field, event)
534
510
  {
535
- if (count === 0)
536
- return;
511
+ const browser = this [_browser];
537
512
 
538
- const time = this .getBrowser () .getCurrentTime ();
513
+ // Register for processEvent
539
514
 
540
- this [_cloneCount] += count;
515
+ browser .addTaintedField (field, event);
516
+ browser .addBrowserEvent ();
541
517
 
542
- this [_executionContext] ._sceneGraph_changed = time;
543
- this ._cloneCount_changed = time;
518
+ // Register for eventsProcessed
519
+
520
+ if (this .isTainted ())
521
+ return;
522
+
523
+ if (field .isInput () || (this .getExtendedEventHandling () && field .isInitializable ()))
524
+ {
525
+ this .addNodeEvent ();
526
+ }
544
527
  },
545
- removeCloneCount (count)
528
+ addNodeEvent ()
546
529
  {
547
- if (count === 0)
530
+ if (this .isTainted ())
548
531
  return;
549
532
 
550
- const time = this .getBrowser () .getCurrentTime ();
533
+ const browser = this [_browser];
551
534
 
552
- this [_cloneCount] -= count;
535
+ this .setTainted (true);
536
+ browser .addTaintedNode (this);
537
+ browser .addBrowserEvent ();
538
+ },
539
+ parentsChanged ()
540
+ {
541
+ const time = this [_browser] .getCurrentTime ();
553
542
 
554
543
  this [_executionContext] ._sceneGraph_changed = time;
555
- this ._cloneCount_changed = time;
544
+ this ._parents_changed = time;
556
545
  },
557
546
  dispose ()
558
547
  {
@@ -567,11 +556,11 @@ Object .assign (Object .setPrototypeOf (X3DBaseNode .prototype, X3DEventObject .
567
556
  for (const field of this [_userDefinedFields])
568
557
  field .dispose ();
569
558
 
570
- X3DEventObject .prototype .dispose .call (this);
559
+ X3DChildObject .prototype .dispose .call (this);
571
560
  },
572
561
  });
573
562
 
574
- const getFieldFromArray = (function ()
563
+ const getFieldFromArray = (() =>
575
564
  {
576
565
  const
577
566
  set_field = /^set_(.*?)$/,
@@ -608,7 +597,7 @@ const getFieldFromArray = (function ()
608
597
  };
609
598
  })();
610
599
 
611
- for (const key of Reflect .ownKeys (X3DBaseNode .prototype))
600
+ for (const key of Object .keys (X3DBaseNode .prototype))
612
601
  Object .defineProperty (X3DBaseNode .prototype, key, { enumerable: false });
613
602
 
614
603
  Object .defineProperties (X3DBaseNode .prototype,
@@ -623,9 +612,9 @@ Object .defineProperties (X3DBaseNode .prototype,
623
612
  get () { return this ._typeName_changed; },
624
613
  enumerable: false,
625
614
  },
626
- cloneCount_changed:
615
+ parents_changed:
627
616
  {
628
- get () { return this ._cloneCount_changed; },
617
+ get () { return this ._parents_changed; },
629
618
  enumerable: false,
630
619
  },
631
620
  });
@@ -66,7 +66,7 @@ if (DEVELOPMENT)
66
66
  [_modificationTime]: 0,
67
67
  [_tainted]: false,
68
68
  [_parents]: new Map (),
69
- [_registry]: null,
69
+ [_registry]: new FinalizationRegistry (Function .prototype),
70
70
  isInitializable ()
71
71
  {
72
72
  return true;
@@ -109,21 +109,43 @@ if (DEVELOPMENT)
109
109
  for (const parent of this [_parents] .values ())
110
110
  parent .deref () .addEventObject (this, event);
111
111
  },
112
+ processEvent ()
113
+ {
114
+ this .setTainted (false);
115
+ this .processInterests ();
116
+ },
117
+ collectCloneCount ()
118
+ {
119
+ let cloneCount = 0;
120
+
121
+ for (const weakRef of this [_parents] .values ())
122
+ cloneCount += weakRef .deref () .collectCloneCount ();
123
+
124
+ return cloneCount;
125
+ },
112
126
  addParent (parent)
113
127
  {
114
128
  if (this [_parents] === X3DChildObject .prototype [_parents])
115
129
  {
116
130
  this [_parents] = new Map ();
117
- this [_registry] = new FinalizationRegistry (id => this [_parents] .delete (id));
131
+ this [_registry] = new FinalizationRegistry (id =>
132
+ {
133
+ this [_parents] .delete (id);
134
+ this .parentsChanged ();
135
+ });
118
136
  }
119
137
 
120
138
  this [_parents] .set (parent .getId (), new WeakRef (parent));
121
139
  this [_registry] .register (parent, parent .getId (), parent);
140
+
141
+ this .parentsChanged ();
122
142
  },
123
143
  removeParent (parent)
124
144
  {
125
145
  this [_parents] .delete (parent .getId ());
126
- this [_registry] ?.unregister (parent);
146
+ this [_registry] .unregister (parent);
147
+
148
+ this .parentsChanged ();
127
149
  },
128
150
  getParents ()
129
151
  {
@@ -134,11 +156,7 @@ if (DEVELOPMENT)
134
156
 
135
157
  return parents;
136
158
  },
137
- processEvent ()
138
- {
139
- this .setTainted (false);
140
- this .processInterests ();
141
- },
159
+ parentsChanged () { },
142
160
  dispose ()
143
161
  {
144
162
  this [_parents] .clear ();
@@ -196,26 +214,40 @@ else
196
214
  for (const parent of this [_parents])
197
215
  parent .addEventObject (this, event);
198
216
  },
217
+ processEvent ()
218
+ {
219
+ this .setTainted (false);
220
+ this .processInterests ();
221
+ },
222
+ collectCloneCount ()
223
+ {
224
+ let cloneCount = 0;
225
+
226
+ for (const parent of this [_parents])
227
+ cloneCount += parent .collectCloneCount ();
228
+
229
+ return cloneCount;
230
+ },
199
231
  addParent (parent)
200
232
  {
201
233
  if (this [_parents] === X3DChildObject .prototype [_parents])
202
234
  this [_parents] = new Set ();
203
235
 
204
236
  this [_parents] .add (parent);
237
+
238
+ this .parentsChanged ();
205
239
  },
206
240
  removeParent (parent)
207
241
  {
208
242
  this [_parents] .delete (parent);
243
+
244
+ this .parentsChanged ();
209
245
  },
210
246
  getParents ()
211
247
  {
212
248
  return this [_parents];
213
249
  },
214
- processEvent ()
215
- {
216
- this .setTainted (false);
217
- this .processInterests ();
218
- },
250
+ parentsChanged () { },
219
251
  dispose ()
220
252
  {
221
253
  this [_parents] .clear ();
@@ -225,7 +257,7 @@ else
225
257
  });
226
258
  }
227
259
 
228
- for (const key of Reflect .ownKeys (X3DChildObject .prototype))
260
+ for (const key of Object .keys (X3DChildObject .prototype))
229
261
  Object .defineProperty (X3DChildObject .prototype, key, { enumerable: false });
230
262
 
231
263
  export default X3DChildObject;
@@ -136,7 +136,7 @@ Object .defineProperty (X3DConstants, "addNode",
136
136
  {
137
137
  value ({ typeName })
138
138
  {
139
- if (this [typeName])
139
+ if (this .hasOwnProperty (typeName))
140
140
  return;
141
141
 
142
142
  this [typeName] = ++ NODE_TYPE;
@@ -239,7 +239,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, X3DChildObject .pro
239
239
  {
240
240
  return this [_referencesCallbacks];
241
241
  },
242
- processReferencesCallbacks: (function ()
242
+ processReferencesCallbacks: (() =>
243
243
  {
244
244
  const referencesCallbacksTemp = [ ];
245
245
 
@@ -337,7 +337,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, X3DChildObject .pro
337
337
  {
338
338
  return this [_routeCallbacks];
339
339
  },
340
- processRouteCallbacks: (function ()
340
+ processRouteCallbacks: (() =>
341
341
  {
342
342
  const routeCallbacksTemp = [ ];
343
343
 
@@ -350,7 +350,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, X3DChildObject .pro
350
350
  }
351
351
  };
352
352
  })(),
353
- processEvent: (function ()
353
+ processEvent: (() =>
354
354
  {
355
355
  const fieldCallbacksTemp = [ ];
356
356
 
@@ -401,8 +401,6 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, X3DChildObject .pro
401
401
  }
402
402
  };
403
403
  })(),
404
- addCloneCount: Function .prototype,
405
- removeCloneCount: Function .prototype,
406
404
  fromString (string, scene)
407
405
  {
408
406
  // Function will be overridden in VRMLParser.
@@ -425,7 +423,7 @@ Object .assign (Object .setPrototypeOf (X3DField .prototype, X3DChildObject .pro
425
423
  }
426
424
  });
427
425
 
428
- for (const key of Reflect .ownKeys (X3DField .prototype))
426
+ for (const key of Object .keys (X3DField .prototype))
429
427
  Object .defineProperty (X3DField .prototype, key, { enumerable: false });
430
428
 
431
429
  export default X3DField;
@@ -60,7 +60,7 @@ function X3DFieldDefinition (accessType, name, value)
60
60
 
61
61
  Object .setPrototypeOf (X3DFieldDefinition .prototype, X3DObject .prototype);
62
62
 
63
- for (const key of Reflect .ownKeys (X3DFieldDefinition .prototype))
63
+ for (const key of Object .keys (X3DFieldDefinition .prototype))
64
64
  Object .defineProperty (X3DFieldDefinition .prototype, key, { enumerable: false });
65
65
 
66
66
  Object .defineProperties (X3DFieldDefinition,
@@ -367,7 +367,7 @@ Object .assign (Object .setPrototypeOf (X3DInfoArray .prototype, X3DChildObject
367
367
  },
368
368
  });
369
369
 
370
- for (const key of Reflect .ownKeys (X3DInfoArray .prototype))
370
+ for (const key of Object .keys (X3DInfoArray .prototype))
371
371
  Object .defineProperty (X3DInfoArray .prototype, key, { enumerable: false });
372
372
 
373
373
  Object .defineProperties (X3DInfoArray .prototype,
@@ -143,7 +143,7 @@ Object .assign (X3DObject .prototype,
143
143
 
144
144
  return generator .string;
145
145
  },
146
- toVRMLString (options = Object .prototype)
146
+ toVRMLString (options = Object .prototype)
147
147
  {
148
148
  const generator = new Generator (options);
149
149
 
@@ -154,7 +154,7 @@ Object .assign (X3DObject .prototype,
154
154
 
155
155
  return generator .string;
156
156
  },
157
- toXMLString (options = Object .prototype)
157
+ toXMLString (options = Object .prototype)
158
158
  {
159
159
  const generator = new Generator (options);
160
160
 
@@ -187,7 +187,7 @@ Object .assign (X3DObject .prototype,
187
187
  },
188
188
  });
189
189
 
190
- for (const key of Reflect .ownKeys (X3DObject .prototype))
190
+ for (const key of Object .keys (X3DObject .prototype))
191
191
  Object .defineProperty (X3DObject .prototype, key, { enumerable: false });
192
192
 
193
193
  Object .defineProperties (X3DObject .prototype,
@@ -200,7 +200,7 @@ Object .defineProperties (X3DObject .prototype,
200
200
 
201
201
  Object .assign (X3DObject,
202
202
  {
203
- getId: DEVELOPMENT ? (function ()
203
+ getId: DEVELOPMENT ? (() =>
204
204
  {
205
205
  const
206
206
  map = new WeakMap (),
@@ -227,7 +227,7 @@ Object .assign (X3DObject,
227
227
  return id;
228
228
  }
229
229
  };
230
- })() : (function ()
230
+ })() : (() =>
231
231
  {
232
232
  const map = new WeakMap ();
233
233
 
@@ -526,7 +526,7 @@ Object .assign (Object .setPrototypeOf (X3DObjectArrayField .prototype, X3DArray
526
526
  },
527
527
  });
528
528
 
529
- for (const key of Reflect .ownKeys (X3DObjectArrayField .prototype))
529
+ for (const key of Object .keys (X3DObjectArrayField .prototype))
530
530
  Object .defineProperty (X3DObjectArrayField .prototype, key, { enumerable: false });
531
531
 
532
532
  Object .defineProperty (X3DObjectArrayField .prototype, "length",
@@ -970,7 +970,7 @@ Object .assign (Object .setPrototypeOf (X3DTypedArrayField .prototype, X3DArrayF
970
970
  },
971
971
  });
972
972
 
973
- for (const key of Reflect .ownKeys (X3DTypedArrayField .prototype))
973
+ for (const key of Object .keys (X3DTypedArrayField .prototype))
974
974
  Object .defineProperty (X3DTypedArrayField .prototype, key, { enumerable: false });
975
975
 
976
976
  Object .defineProperty (X3DTypedArrayField .prototype, "length",
@@ -103,7 +103,7 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, X3DBaseNode .
103
103
 
104
104
  this .configure ();
105
105
  },
106
- configure: (function ()
106
+ configure: (() =>
107
107
  {
108
108
  const attributes = new Set ([
109
109
  "Antialiased",
@@ -117,6 +117,10 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, X3DBaseNode .
117
117
  "SplashScreen",
118
118
  ]);
119
119
 
120
+ const mappings = new Map ([
121
+ ["AutoUpdate", "Update"],
122
+ ]);
123
+
120
124
  const restorable = new Set ([
121
125
  "PrimitiveQuality",
122
126
  "Rubberband",
@@ -136,7 +140,7 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, X3DBaseNode .
136
140
  if (attributes .has (name))
137
141
  {
138
142
  const
139
- attribute = $.toLowerCaseFirst (name),
143
+ attribute = $.toLowerCaseFirst (mappings .get (name) ?? name),
140
144
  value = browser .getElement () .attr (attribute);
141
145
 
142
146
  if (value !== undefined)
@@ -214,7 +218,7 @@ Object .assign (Object .setPrototypeOf (BrowserOptions .prototype, X3DBaseNode .
214
218
  if (typeof browser .setTextureQuality === "function")
215
219
  browser .setTextureQuality (this .textureQuality);
216
220
  },
217
- set_shading__: (function ()
221
+ set_shading__: (() =>
218
222
  {
219
223
  const strings = {
220
224
  [Shading .POINT]: "POINT",
@@ -283,7 +283,7 @@ Object .defineProperties (BrowserTimings,
283
283
  },
284
284
  });
285
285
 
286
- const f2 = (function ()
286
+ const f2 = (() =>
287
287
  {
288
288
  const format = new Intl .NumberFormat (navigator .language || navigator .userLanguage, {
289
289
  notation: "standard",