x_ite 8.6.23 → 8.7.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 (114) hide show
  1. package/README.md +2 -0
  2. package/dist/assets/components/Annotation.js +13 -13
  3. package/dist/assets/components/Annotation.min.js +1 -1
  4. package/dist/assets/components/CADGeometry.js +13 -13
  5. package/dist/assets/components/CADGeometry.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturing.js +34 -39
  7. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  8. package/dist/assets/components/DIS.js +13 -13
  9. package/dist/assets/components/DIS.min.js +1 -1
  10. package/dist/assets/components/EventUtilities.js +9 -9
  11. package/dist/assets/components/EventUtilities.min.js +1 -1
  12. package/dist/assets/components/Geometry2D.js +19 -19
  13. package/dist/assets/components/Geometry2D.min.js +1 -1
  14. package/dist/assets/components/Geospatial.js +33 -33
  15. package/dist/assets/components/Geospatial.min.js +1 -1
  16. package/dist/assets/components/HAnim.js +18 -18
  17. package/dist/assets/components/HAnim.min.js +1 -1
  18. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  19. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  20. package/dist/assets/components/Layout.js +27 -27
  21. package/dist/assets/components/Layout.min.js +1 -1
  22. package/dist/assets/components/NURBS.js +32 -32
  23. package/dist/assets/components/NURBS.min.js +1 -1
  24. package/dist/assets/components/ParticleSystems.js +22 -22
  25. package/dist/assets/components/ParticleSystems.min.js +1 -1
  26. package/dist/assets/components/Picking.js +26 -26
  27. package/dist/assets/components/Picking.min.js +1 -1
  28. package/dist/assets/components/RigidBodyPhysics.js +20 -20
  29. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  30. package/dist/assets/components/Scripting.js +28 -28
  31. package/dist/assets/components/Scripting.min.js +1 -1
  32. package/dist/assets/components/Text.js +24 -24
  33. package/dist/assets/components/Text.min.js +1 -1
  34. package/dist/assets/components/TextureProjector.js +14 -14
  35. package/dist/assets/components/TextureProjector.min.js +1 -1
  36. package/dist/assets/components/Texturing3D.js +1116 -1685
  37. package/dist/assets/components/Texturing3D.min.js +1 -1
  38. package/dist/assets/components/VolumeRendering.js +25 -25
  39. package/dist/assets/components/VolumeRendering.min.js +1 -1
  40. package/dist/assets/components/X_ITE.js +9 -9
  41. package/dist/assets/components/X_ITE.min.js +1 -1
  42. package/dist/x_ite.css +1 -1
  43. package/dist/x_ite.js +313 -271
  44. package/dist/x_ite.min.js +1 -1
  45. package/dist/x_ite.zip +0 -0
  46. package/docs/_config.yml +1 -1
  47. package/docs/_posts/accessing-the-external-browser.md +1 -1
  48. package/docs/_posts/components/Geospatial/GeoViewpoint.md +41 -0
  49. package/docs/_posts/components/Navigation/OrthoViewpoint.md +41 -0
  50. package/docs/_posts/components/Navigation/Viewpoint.md +41 -0
  51. package/docs/_posts/components/Networking/Inline.md +1 -1
  52. package/docs/_posts/components/X_ITE/BlendMode.md +1 -1
  53. package/docs/_posts/getting-started.md +4 -1
  54. package/docs/_posts/glossary.md +3 -3
  55. package/docs/_posts/laboratory/x3d-file-converter.md +1 -1
  56. package/docs/_posts/reference/browser-services.md +48 -20
  57. package/docs/_posts/reference/field-services-and-objects.md +23 -23
  58. package/docs/_posts/reference/scene-services.md +1 -1
  59. package/docs/_posts/supported-nodes.md +1 -1
  60. package/docs/_posts/tutorials/basic-nodes.md +1 -1
  61. package/docs/_posts/tutorials/building-a-x3d-world.md +1 -1
  62. package/docs/_posts/tutorials/building-primitive-shapes.md +1 -1
  63. package/docs/_posts/tutorials/increasing-rendering-speed.md +1 -1
  64. package/docs/_posts/tutorials/introducing-x3d.md +1 -1
  65. package/docs/_posts/tutorials/overview.md +1 -1
  66. package/docs/_posts/what's-new.md +11 -1
  67. package/package.json +4 -4
  68. package/src/x_ite/Base/X3DBaseNode.js +2 -1
  69. package/src/x_ite/Base/X3DField.js +4 -4
  70. package/src/x_ite/Base/X3DFieldDefinition.js +7 -4
  71. package/src/x_ite/Browser/Core/BrowserOptions.js +12 -4
  72. package/src/x_ite/Browser/Core/X3DCoreContext.js +79 -31
  73. package/src/x_ite/Browser/NURBS/NURBS.js +3 -3
  74. package/src/x_ite/Browser/Shaders/X3DShadersContext.js +2 -2
  75. package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +10 -11
  76. package/src/x_ite/Browser/Time/X3DTimeContext.js +1 -5
  77. package/src/x_ite/Browser/VERSION.js +1 -1
  78. package/src/x_ite/Browser/X3DBrowser.js +58 -31
  79. package/src/x_ite/Browser/X3DBrowserContext.js +0 -4
  80. package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +9 -14
  81. package/src/x_ite/Components/EnvironmentalEffects/Background.js +6 -6
  82. package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +14 -34
  83. package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +9 -36
  84. package/src/x_ite/Components/NURBS/NurbsCurve.js +1 -1
  85. package/src/x_ite/Components/NURBS/NurbsCurve2D.js +1 -1
  86. package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +1 -1
  87. package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +1 -1
  88. package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +1 -1
  89. package/src/x_ite/Components/Picking/LinePickSensor.js +2 -2
  90. package/src/x_ite/Components/Picking/PointPickSensor.js +2 -2
  91. package/src/x_ite/Components/Picking/PrimitivePickSensor.js +2 -2
  92. package/src/x_ite/Components/Picking/VolumePickSensor.js +2 -2
  93. package/src/x_ite/Components/RigidBodyPhysics/CollisionSensor.js +1 -1
  94. package/src/x_ite/Components/RigidBodyPhysics/MotorJoint.js +1 -1
  95. package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +1 -1
  96. package/src/x_ite/Components/Sound/ListenerPointSource.js +2 -1
  97. package/src/x_ite/Components/Sound/MicrophoneSource.js +2 -1
  98. package/src/x_ite/Components/Sound/OscillatorSource.js +2 -1
  99. package/src/x_ite/Components/Sound/StreamAudioSource.js +2 -1
  100. package/src/x_ite/Components/Sound/X3DSoundProcessingNode.js +3 -0
  101. package/src/x_ite/Components/VolumeRendering/IsoSurfaceVolumeData.js +2 -2
  102. package/src/x_ite/Components/VolumeRendering/SegmentedVolumeData.js +2 -2
  103. package/src/x_ite/Components/VolumeRendering/VolumeData.js +2 -2
  104. package/src/x_ite/Configuration/ComponentInfo.js +7 -4
  105. package/src/x_ite/Configuration/ProfileInfo.js +7 -4
  106. package/src/x_ite/Configuration/UnitInfo.js +5 -5
  107. package/src/x_ite/Execution/X3DScene.js +4 -7
  108. package/src/x_ite/Fields/SFNode.js +5 -5
  109. package/src/x_ite/Fields.js +5 -4
  110. package/src/x_ite/Parser/JSONParser.js +1 -1
  111. package/src/x_ite/Parser/X3DParser.js +1 -1
  112. package/src/x_ite/X3DCanvasElement.js +4 -4
  113. package/src/x_ite.html +1 -1
  114. package/x_ite.min.html +1 -1
@@ -74,7 +74,8 @@ const
74
74
  _reject = Symbol (),
75
75
  _fileLoader = Symbol (),
76
76
  _browserCallbacks = Symbol (),
77
- _console = Symbol ();
77
+ _console = Symbol (),
78
+ _processEvents = Symbol .for ("X_ITE.X3DRoutingContext.processEvents");
78
79
 
79
80
  function X3DBrowser (element)
80
81
  {
@@ -110,7 +111,7 @@ X3DBrowser .prototype = Object .assign (Object .create (X3DBrowserContext .proto
110
111
  },
111
112
  initialize: function ()
112
113
  {
113
- const processEvent = X3DBrowserContext .prototype .initialize .call (this);
114
+ X3DBrowserContext .prototype .initialize .call (this);
114
115
 
115
116
  this .replaceWorld (this .createScene ()) .catch (Function .prototype);
116
117
 
@@ -118,35 +119,42 @@ X3DBrowser .prototype = Object .assign (Object .create (X3DBrowserContext .proto
118
119
 
119
120
  legacy .call (this);
120
121
 
121
- processEvent .call (this);
122
+ // Process events from context creation. This will setup nodes like
123
+ // geometry option nodes before any node is created.
124
+ this [_processEvents] .call (this);
122
125
 
123
126
  // Print welcome message.
124
127
 
125
- if (this .getInstanceId () > 1) return;
128
+ if (this .getInstanceId () > 1)
129
+ return;
126
130
 
127
- $(() =>
128
- {
129
- this .print ("Welcome to " + this .name + " X3D Browser v" + this .version + ":\n" +
130
- " Current Graphics Renderer\n" +
131
- " Name: " + this .getVendor () + " " + this .getRenderer () + "\n" +
132
- " WebGL version: " + this .getWebGLVersion () + "\n" +
133
- " Shading language: " + this .getShadingLanguageVersion () + "\n" +
134
- " Rendering Properties\n" +
135
- " Antialiased: " + this .getAntialiased () + "\n" +
136
- " Max samples: " + this .getMaxSamples () + "\n" +
137
- " Depth size: " + this .getDepthSize () + " bits\n" +
138
- " Color depth: " + this .getColorDepth () + " bits\n" +
139
- " Max clip planes per shape: " + this .getMaxClipPlanes () + "\n" +
140
- " Max lights per shape: " + this .getMaxLights () + "\n" +
141
- " Max multi textures per shape: " + this .getMaxTextures () + "\n" +
142
- " Texture units: " + this .getMaxCombinedTextureUnits () + "\n" +
143
- " Max texture size: " + this .getMaxTextureSize () + " × " + this .getMaxTextureSize () + " pixels\n" +
144
- " Texture memory: " + this .getTextureMemory () + "\n" +
145
- " Max vertex uniform vectors: " + this .getMaxVertexUniformVectors () + "\n" +
146
- " Max fragment uniform vectors: " + this .getMaxFragmentUniformVectors () + "\n" +
147
- " Max vertex attribs: " + this .getMaxVertexAttribs () + "\n" +
148
- " Max varying vectors: " + this .getMaxVaryingVectors () + "\n");
149
- });
131
+ if (!this .getBrowserOption ("Debug"))
132
+ return;
133
+
134
+ this .printWelcomeMessage ();
135
+ },
136
+ printWelcomeMessage: function ()
137
+ {
138
+ this .print ("Welcome to " + this .name + " X3D Browser v" + this .version + ":\n" +
139
+ " Current Graphics Renderer\n" +
140
+ " Name: " + this .getVendor () + " " + this .getRenderer () + "\n" +
141
+ " WebGL version: " + this .getWebGLVersion () + "\n" +
142
+ " Shading language: " + this .getShadingLanguageVersion () + "\n" +
143
+ " Rendering Properties\n" +
144
+ " Antialiased: " + this .getAntialiased () + "\n" +
145
+ " Max samples: " + this .getMaxSamples () + "\n" +
146
+ " Depth size: " + this .getDepthSize () + " bits\n" +
147
+ " Color depth: " + this .getColorDepth () + " bits\n" +
148
+ " Max clip planes per shape: " + this .getMaxClipPlanes () + "\n" +
149
+ " Max lights per shape: " + this .getMaxLights () + "\n" +
150
+ " Max multi textures per shape: " + this .getMaxTextures () + "\n" +
151
+ " Texture units: " + this .getMaxCombinedTextureUnits () + "\n" +
152
+ " Max texture size: " + this .getMaxTextureSize () + " × " + this .getMaxTextureSize () + " pixels\n" +
153
+ " Texture memory: " + this .getTextureMemory () + "\n" +
154
+ " Max vertex uniform vectors: " + this .getMaxVertexUniformVectors () + "\n" +
155
+ " Max fragment uniform vectors: " + this .getMaxFragmentUniformVectors () + "\n" +
156
+ " Max vertex attribs: " + this .getMaxVertexAttribs () + "\n" +
157
+ " Max varying vectors: " + this .getMaxVaryingVectors () + "\n");
150
158
  },
151
159
  getName: function ()
152
160
  {
@@ -355,17 +363,36 @@ X3DBrowser .prototype = Object .assign (Object .create (X3DBrowserContext .proto
355
363
  },
356
364
  createVrmlFromString: function (vrmlSyntax)
357
365
  {
358
- return this .createX3DFromString (vrmlSyntax) .rootNodes;
366
+ vrmlSyntax = String (vrmlSyntax);
367
+
368
+ const
369
+ currentScene = this .currentScene,
370
+ external = this .isExternal (),
371
+ fileLoader = new FileLoader (this .getWorld ()),
372
+ scene = fileLoader .createX3DFromString (currentScene .getWorldURL (), vrmlSyntax);
373
+
374
+ if (!external)
375
+ {
376
+ currentScene .getLive () .addInterest ("setLive", scene);
377
+ scene .setExecutionContext (currentScene);
378
+ scene .setLive (currentScene .isLive ());
379
+ }
380
+
381
+ return scene .rootNodes;
359
382
  },
360
- createX3DFromString: function (x3dSyntax)
383
+ createX3DFromString: async function (x3dSyntax)
361
384
  {
362
385
  x3dSyntax = String (x3dSyntax);
363
386
 
364
387
  const
365
388
  currentScene = this .currentScene,
366
389
  external = this .isExternal (),
367
- fileLoader = new FileLoader (this .getWorld ()),
368
- scene = fileLoader .createX3DFromString (currentScene .getWorldURL (), x3dSyntax);
390
+ fileLoader = new FileLoader (this .getWorld ());
391
+
392
+ const scene = await new Promise ((resolve, reject) =>
393
+ {
394
+ fileLoader .createX3DFromString (currentScene .getWorldURL (), x3dSyntax, resolve, reject);
395
+ });
369
396
 
370
397
  if (!external)
371
398
  {
@@ -177,10 +177,6 @@ X3DBrowserContext .prototype = Object .assign (Object .create (X3DBaseNode .prot
177
177
 
178
178
  for (const browserContext of browserContexts)
179
179
  browserContext .prototype .initialize ?.call (this);
180
-
181
- // Process events from context creation. This will setup nodes like
182
- // geometry option nodes before any node is created.
183
- return this [_processEvents];
184
180
  },
185
181
  initialized: function ()
186
182
  {
@@ -71,8 +71,8 @@ function ComposedCubeMapTexture (executionContext)
71
71
 
72
72
  this .addChildObjects ("update", new Fields .SFTime ());
73
73
 
74
- this .textureNodes = [null, null, null, null, null, null];
75
- this .loadStateBits = new BitSet ();
74
+ this .textureNodes = [null, null, null, null, null, null];
75
+ this .textureBits = new BitSet ();
76
76
  }
77
77
 
78
78
  ComposedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironmentTextureNode .prototype),
@@ -138,32 +138,27 @@ ComposedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironme
138
138
  {
139
139
  let textureNode = this .textureNodes [index];
140
140
 
141
- if (textureNode)
142
- textureNode .removeInterest ("set_loadState__", this);
141
+ textureNode ?.removeInterest ("set_loadState__", this);
143
142
 
144
143
  textureNode = this .textureNodes [index] = X3DCast (X3DConstants .X3DTexture2DNode, node);
145
144
 
146
- if (textureNode)
147
- textureNode .addInterest ("set_loadState__", this, textureNode, index);
145
+ textureNode ?.addInterest ("set_loadState__", this, textureNode, index);
148
146
 
149
147
  this .set_loadState__ (textureNode, index);
150
148
  },
151
149
  set_loadState__: function (textureNode, index)
152
150
  {
153
- if (textureNode)
154
- this .setLoadStateBit (index, textureNode, textureNode .checkLoadState ());
155
- else
156
- this .setLoadStateBit (index, textureNode, X3DConstants .NOT_STARTED);
151
+ this .setTextureBit (index, textureNode, textureNode ?.checkLoadState () ?? X3DConstants .NOT_STARTED);
157
152
 
158
153
  this ._update .addEvent ();
159
154
  },
160
- setLoadStateBit: function (bit, textureNode, loadState)
155
+ setTextureBit: function (bit, textureNode, loadState)
161
156
  {
162
- this .loadStateBits .set (bit, loadState === X3DConstants .COMPLETE_STATE || textureNode .getWidth ());
157
+ this .textureBits .set (bit, loadState === X3DConstants .COMPLETE_STATE || textureNode ?.getWidth ());
163
158
  },
164
159
  isComplete: function ()
165
160
  {
166
- if (+this .loadStateBits !== 0b111111)
161
+ if (+this .textureBits !== 0b111111)
167
162
  return false;
168
163
 
169
164
  const
@@ -212,7 +207,7 @@ ComposedCubeMapTexture .prototype = Object .assign (Object .create (X3DEnvironme
212
207
  gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width, height, 0, gl .RGBA, gl .UNSIGNED_BYTE, textureNode .getElement ());
213
208
  else
214
209
  gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, gl .RGBA, gl .UNSIGNED_BYTE, textureNode .getElement ());
215
-
210
+
216
211
  break;
217
212
  }
218
213
  default:
@@ -136,12 +136,12 @@ Background .prototype = Object .assign (Object .create (X3DBackgroundNode .proto
136
136
  topTexture .setup ();
137
137
  bottomTexture .setup ();
138
138
 
139
- this .set_frontTexture__ (frontTexture);
140
- this .set_backTexture__ (backTexture);
141
- this .set_leftTexture__ (leftTexture);
142
- this .set_rightTexture__ (rightTexture);
143
- this .set_topTexture__ (topTexture);
144
- this .set_bottomTexture__ (bottomTexture);
139
+ this .set_texture__ (frontTexture, 0);
140
+ this .set_texture__ (backTexture, 1);
141
+ this .set_texture__ (leftTexture, 2);
142
+ this .set_texture__ (rightTexture, 3);
143
+ this .set_texture__ (topTexture, 4);
144
+ this .set_texture__ (bottomTexture, 5);
145
145
  }
146
146
  });
147
147
 
@@ -99,43 +99,23 @@ TextureBackground .prototype = Object .assign (Object .create (X3DBackgroundNode
99
99
  {
100
100
  X3DBackgroundNode .prototype .initialize .call (this);
101
101
 
102
- this ._frontTexture .addInterest ("set_frontTexture__", this);
103
- this ._backTexture .addInterest ("set_backTexture__", this);
104
- this ._leftTexture .addInterest ("set_leftTexture__", this);
105
- this ._rightTexture .addInterest ("set_rightTexture__", this);
106
- this ._topTexture .addInterest ("set_topTexture__", this);
107
- this ._bottomTexture .addInterest ("set_bottomTexture__", this);
102
+ this ._frontTexture .addInterest ("set_texture__", this, 0);
103
+ this ._backTexture .addInterest ("set_texture__", this, 1);
104
+ this ._leftTexture .addInterest ("set_texture__", this, 2);
105
+ this ._rightTexture .addInterest ("set_texture__", this, 3);
106
+ this ._topTexture .addInterest ("set_texture__", this, 4);
107
+ this ._bottomTexture .addInterest ("set_texture__", this, 5);
108
108
 
109
- this .set_frontTexture__ (this ._frontTexture);
110
- this .set_backTexture__ (this ._backTexture);
111
- this .set_leftTexture__ (this ._leftTexture);
112
- this .set_rightTexture__ (this ._rightTexture);
113
- this .set_topTexture__ (this ._topTexture);
114
- this .set_bottomTexture__ (this ._bottomTexture);
109
+ this .set_texture__ (0, this ._frontTexture);
110
+ this .set_texture__ (1, this ._backTexture);
111
+ this .set_texture__ (2, this ._leftTexture);
112
+ this .set_texture__ (3, this ._rightTexture);
113
+ this .set_texture__ (4, this ._topTexture);
114
+ this .set_texture__ (5, this ._bottomTexture);
115
115
  },
116
- set_frontTexture__: function ()
116
+ set_texture__: function (index, textureNode)
117
117
  {
118
- X3DBackgroundNode .prototype .set_frontTexture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, this ._frontTexture));
119
- },
120
- set_backTexture__: function ()
121
- {
122
- X3DBackgroundNode .prototype .set_backTexture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, this ._backTexture));
123
- },
124
- set_leftTexture__: function ()
125
- {
126
- X3DBackgroundNode .prototype .set_leftTexture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, this ._leftTexture));
127
- },
128
- set_rightTexture__: function ()
129
- {
130
- X3DBackgroundNode .prototype .set_rightTexture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, this ._rightTexture));
131
- },
132
- set_topTexture__: function ()
133
- {
134
- X3DBackgroundNode .prototype .set_topTexture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, this ._topTexture));
135
- },
136
- set_bottomTexture__: function ()
137
- {
138
- X3DBackgroundNode .prototype .set_bottomTexture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, this ._bottomTexture));
118
+ X3DBackgroundNode .prototype .set_texture__ .call (this, X3DCast (X3DConstants .X3DTextureNode, textureNode), index);
139
119
  },
140
120
  });
141
121
 
@@ -141,50 +141,23 @@ X3DBackgroundNode .prototype = Object .assign (Object .create (X3DBindableNode .
141
141
 
142
142
  return false;
143
143
  },
144
- set_frontTexture__: function (value)
144
+ set_texture__: function (textureNode, index)
145
145
  {
146
- this .updateTexture (0, value);
147
- },
148
- set_backTexture__: function (value)
149
- {
150
- this .updateTexture (1, value);
151
- },
152
- set_leftTexture__: function (value)
153
- {
154
- this .updateTexture (2, value);
155
- },
156
- set_rightTexture__: function (value)
157
- {
158
- this .updateTexture (3, value);
159
- },
160
- set_topTexture__: function (value)
161
- {
162
- this .updateTexture (4, value);
163
- },
164
- set_bottomTexture__: function (value)
165
- {
166
- this .updateTexture (5, value);
167
- },
168
- updateTexture: function (index, textureNode)
169
- {
170
- this .textureNodes [index] ?._loadState .removeInterest ("setTextureBit", this);
146
+ this .textureNodes [index] ?._loadState .removeInterest ("set_loadState__", this);
171
147
 
172
148
  this .textureNodes [index] = textureNode;
173
149
 
174
- if (textureNode)
175
- {
176
- textureNode ._loadState .addInterest ("setTextureBit", this, index, textureNode);
150
+ textureNode ?._loadState .addInterest ("set_loadState__", this, textureNode, index);
177
151
 
178
- this .setTextureBit (index, textureNode, textureNode ._loadState);
179
- }
180
- else
181
- {
182
- this .textureBits .set (index, false);
183
- }
152
+ this .set_loadState__ (textureNode, index);
153
+ },
154
+ set_loadState__: function (textureNode, index)
155
+ {
156
+ this .setTextureBit (index, textureNode, textureNode ?.checkLoadState () ?? X3DConstants .NOT_STARTED);
184
157
  },
185
158
  setTextureBit: function (bit, textureNode, loadState)
186
159
  {
187
- this .textureBits .set (bit, loadState .getValue () === X3DConstants .COMPLETE_STATE || textureNode .getWidth ());
160
+ this .textureBits .set (bit, loadState === X3DConstants .COMPLETE_STATE || textureNode ?.getWidth ());
188
161
  },
189
162
  getColor: function (theta, color, angle)
190
163
  {
@@ -199,7 +199,7 @@ NurbsCurve .prototype = Object .assign (Object .create (X3DParametricGeometryNod
199
199
  });
200
200
 
201
201
  this .sampleOptions .resolution [0] = this .getTessellation (knots .length);
202
- this .sampleOptions .haveWeights = Boolean (weights);
202
+ this .sampleOptions .haveWeights = !! weights;
203
203
 
204
204
  const
205
205
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
@@ -157,7 +157,7 @@ NurbsCurve2D .prototype = Object .assign (Object .create (X3DNurbsControlCurveNo
157
157
  });
158
158
 
159
159
  this .sampleOptions .resolution [0] = this .getTessellation (knots .length);
160
- this .sampleOptions .haveWeights = Boolean (weights);
160
+ this .sampleOptions .haveWeights = !! weights;
161
161
 
162
162
  const
163
163
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
@@ -187,7 +187,7 @@ NurbsOrientationInterpolator .prototype = Object .assign (Object .create (X3DChi
187
187
  debug: false,
188
188
  });
189
189
 
190
- this .sampleOptions .haveWeights = Boolean (weights);
190
+ this .sampleOptions .haveWeights = !! weights;
191
191
 
192
192
  const
193
193
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
@@ -185,7 +185,7 @@ NurbsPositionInterpolator .prototype = Object .assign (Object .create (X3DChildN
185
185
  debug: false,
186
186
  });
187
187
 
188
- this .sampleOptions .haveWeights = Boolean (weights);
188
+ this .sampleOptions .haveWeights = !! weights;
189
189
 
190
190
  const
191
191
  mesh = nurbs .sample (this .mesh, surface, this .sampleOptions),
@@ -211,7 +211,7 @@ X3DNurbsSurfaceGeometryNode .prototype = Object .assign (Object .create (X3DPara
211
211
  sampleOptions .closed [0] = uClosed;
212
212
  sampleOptions .closed [1] = vClosed;
213
213
  sampleOptions .domain = undefined;
214
- sampleOptions .haveWeights = Boolean (weights);
214
+ sampleOptions .haveWeights = !! weights;
215
215
  sampleOptions .trimmingContours = this .getTrimmingContours ();
216
216
 
217
217
  const
@@ -196,7 +196,7 @@ LinePickSensor .prototype = Object .assign (Object .create (X3DPickSensorNode .p
196
196
 
197
197
  var
198
198
  pickedGeometries = this .getPickedGeometries (),
199
- active = Boolean (pickedGeometries .length);
199
+ active = !! pickedGeometries .length;
200
200
 
201
201
  pickedGeometries .remove (0, pickedGeometries .length, null);
202
202
 
@@ -272,7 +272,7 @@ LinePickSensor .prototype = Object .assign (Object .create (X3DPickSensorNode .p
272
272
 
273
273
  var
274
274
  pickedGeometries = this .getPickedGeometries (),
275
- active = Boolean (pickedGeometries .length);
275
+ active = !! pickedGeometries .length;
276
276
 
277
277
  pickedGeometries .remove (0, pickedGeometries .length, null);
278
278
 
@@ -237,7 +237,7 @@ PointPickSensor .prototype = Object .assign (Object .create (X3DPickSensorNode .
237
237
 
238
238
  var
239
239
  pickedGeometries = this .getPickedGeometries (),
240
- active = Boolean (pickedGeometries .length);
240
+ active = !! pickedGeometries .length;
241
241
 
242
242
  pickedGeometries .remove (0, pickedGeometries .length, null);
243
243
 
@@ -301,7 +301,7 @@ PointPickSensor .prototype = Object .assign (Object .create (X3DPickSensorNode .
301
301
 
302
302
  var
303
303
  pickedGeometries = this .getPickedGeometries (),
304
- active = Boolean (pickedGeometries .length);
304
+ active = !! pickedGeometries .length;
305
305
 
306
306
  pickedGeometries .remove (0, pickedGeometries .length, null);
307
307
 
@@ -183,7 +183,7 @@ PrimitivePickSensor .prototype = Object .assign (Object .create (X3DPickSensorNo
183
183
 
184
184
  var
185
185
  pickedGeometries = this .getPickedGeometries (),
186
- active = Boolean (pickedGeometries .length);
186
+ active = !! pickedGeometries .length;
187
187
 
188
188
  pickedGeometries .remove (0, pickedGeometries .length, null);
189
189
 
@@ -236,7 +236,7 @@ PrimitivePickSensor .prototype = Object .assign (Object .create (X3DPickSensorNo
236
236
 
237
237
  var
238
238
  pickedGeometries = this .getPickedGeometries (),
239
- active = Boolean (pickedGeometries .length);
239
+ active = !! pickedGeometries .length;
240
240
 
241
241
  pickedGeometries .remove (0, pickedGeometries .length, null);
242
242
 
@@ -158,7 +158,7 @@ VolumePickSensor .prototype = Object .assign (Object .create (X3DPickSensorNode
158
158
 
159
159
  var
160
160
  pickedGeometries = this .getPickedGeometries (),
161
- active = Boolean (pickedGeometries .length);
161
+ active = !! pickedGeometries .length;
162
162
 
163
163
  pickedGeometries .remove (0, pickedGeometries .length, null);
164
164
 
@@ -211,7 +211,7 @@ VolumePickSensor .prototype = Object .assign (Object .create (X3DPickSensorNode
211
211
 
212
212
  var
213
213
  pickedGeometries = this .getPickedGeometries (),
214
- active = Boolean (pickedGeometries .length);
214
+ active = !! pickedGeometries .length;
215
215
 
216
216
  pickedGeometries .remove (0, pickedGeometries .length, null);
217
217
 
@@ -225,7 +225,7 @@ CollisionSensor .prototype = Object .assign (Object .create (X3DSensorNode .prot
225
225
  },
226
226
  this);
227
227
 
228
- var active = Boolean (contactNodes .length);
228
+ var active = !! contactNodes .length;
229
229
 
230
230
  if (this ._isActive .getValue () !== active)
231
231
  this ._isActive = active;
@@ -59,7 +59,7 @@ function MotorJoint (executionContext)
59
59
 
60
60
  // Units
61
61
 
62
- this ._axis1angle .setunit ("angle");
62
+ this ._axis1Angle .setUnit ("angle");
63
63
  this ._axis2Angle .setUnit ("angle");
64
64
  this ._axis3Angle .setUnit ("angle");
65
65
  this ._motor1Angle .setUnit ("angle");
@@ -111,7 +111,7 @@ X3DOneSidedMaterialNode .prototype = Object .assign (Object .create (X3DMaterial
111
111
  },
112
112
  set_transparent__: function ()
113
113
  {
114
- this .setTransparent (Boolean (this .transparency));
114
+ this .setTransparent (!! this .transparency);
115
115
  },
116
116
  getBaseTexture: function ()
117
117
  {
@@ -57,7 +57,8 @@ function ListenerPointSource (executionContext)
57
57
 
58
58
  this .addType (X3DConstants .ListenerPointSource);
59
59
 
60
- this .addChildObjects ("speed", new Fields .SFFloat (1));
60
+ this .addChildObjects ("loop", new Fields .SFBool (),
61
+ "speed", new Fields .SFFloat (1));
61
62
 
62
63
  this ._position .setUnit ("length");
63
64
  }
@@ -57,7 +57,8 @@ function MicrophoneSource (executionContext)
57
57
 
58
58
  this .addType (X3DConstants .MicrophoneSource);
59
59
 
60
- this .addChildObjects ("speed", new Fields .SFFloat (1));
60
+ this .addChildObjects ("loop", new Fields .SFBool (),
61
+ "speed", new Fields .SFFloat (1));
61
62
  }
62
63
 
63
64
  MicrophoneSource .prototype = Object .assign (Object .create (X3DSoundSourceNode .prototype),
@@ -57,7 +57,8 @@ function OscillatorSource (executionContext)
57
57
 
58
58
  this .addType (X3DConstants .OscillatorSource);
59
59
 
60
- this .addChildObjects ("speed", new Fields .SFFloat (1));
60
+ this .addChildObjects ("loop", new Fields .SFBool (),
61
+ "speed", new Fields .SFFloat (1));
61
62
  }
62
63
 
63
64
  OscillatorSource .prototype = Object .assign (Object .create (X3DSoundSourceNode .prototype),
@@ -57,7 +57,8 @@ function StreamAudioSource (executionContext)
57
57
 
58
58
  this .addType (X3DConstants .StreamAudioSource);
59
59
 
60
- this .addChildObjects ("speed", new Fields .SFFloat (1));
60
+ this .addChildObjects ("loop", new Fields .SFBool (),
61
+ "speed", new Fields .SFFloat (1));
61
62
  }
62
63
 
63
64
  StreamAudioSource .prototype = Object .assign (Object .create (X3DSoundSourceNode .prototype),
@@ -45,6 +45,7 @@
45
45
  *
46
46
  ******************************************************************************/
47
47
 
48
+ import Fields from "../../Fields.js";
48
49
  import X3DChildNode from "../Core/X3DChildNode.js";
49
50
  import X3DTimeDependentNode from "../Time/X3DTimeDependentNode.js";
50
51
  import X3DConstants from "../../Base/X3DConstants.js";
@@ -55,6 +56,8 @@ function X3DSoundProcessingNode (executionContext)
55
56
  X3DTimeDependentNode .call (this, executionContext);
56
57
 
57
58
  this .addType (X3DConstants .X3DSoundProcessingNode);
59
+
60
+ this .addChildObjects ("loop", new Fields .SFBool ());
58
61
  }
59
62
 
60
63
  X3DSoundProcessingNode .prototype = Object .assign (Object .create (X3DChildNode .prototype),
@@ -309,7 +309,7 @@ IsoSurfaceVolumeData .prototype = Object .assign (Object .create (X3DVolumeDataN
309
309
  // this .getBrowser () .print (fs);
310
310
 
311
311
  const vertexShader = new ShaderPart (this .getExecutionContext ());
312
- vertexShader ._url .push ("data:x-shader/x-vertex," + vs);
312
+ vertexShader ._url .push (encodeURI ("data:x-shader/x-vertex," + vs));
313
313
  vertexShader .setPrivate (true);
314
314
  vertexShader .setName ("VolumeDataVertexShader");
315
315
  vertexShader .setOptions (options);
@@ -317,7 +317,7 @@ IsoSurfaceVolumeData .prototype = Object .assign (Object .create (X3DVolumeDataN
317
317
 
318
318
  const fragmentShader = new ShaderPart (this .getExecutionContext ());
319
319
  fragmentShader ._type = "FRAGMENT";
320
- fragmentShader ._url .push ("data:x-shader/x-fragment," + fs);
320
+ fragmentShader ._url .push (encodeURI ("data:x-shader/x-fragment," + fs));
321
321
  fragmentShader .setPrivate (true);
322
322
  fragmentShader .setName ("VolumeDataFragmentShader");
323
323
  fragmentShader .setOptions (options);
@@ -222,7 +222,7 @@ SegmentedVolumeData .prototype = Object .assign (Object .create (X3DVolumeDataNo
222
222
  // this .getBrowser () .print (fs);
223
223
 
224
224
  const vertexShader = new ShaderPart (this .getExecutionContext ());
225
- vertexShader ._url .push ("data:x-shader/x-vertex," + vs);
225
+ vertexShader ._url .push (encodeURI ("data:x-shader/x-vertex," + vs));
226
226
  vertexShader .setPrivate (true);
227
227
  vertexShader .setName ("SegmentedVolumeDataVertexShader");
228
228
  vertexShader .setOptions (options);
@@ -230,7 +230,7 @@ SegmentedVolumeData .prototype = Object .assign (Object .create (X3DVolumeDataNo
230
230
 
231
231
  const fragmentShader = new ShaderPart (this .getExecutionContext ());
232
232
  fragmentShader ._type = "FRAGMENT";
233
- fragmentShader ._url .push ("data:x-shader/x-fragment," + fs);
233
+ fragmentShader ._url .push (encodeURI ("data:x-shader/x-fragment," + fs));
234
234
  fragmentShader .setPrivate (true);
235
235
  fragmentShader .setName ("SegmentedVolumeDataFragmentShader");
236
236
  fragmentShader .setOptions (options);
@@ -162,7 +162,7 @@ VolumeData .prototype = Object .assign (Object .create (X3DVolumeDataNode .proto
162
162
  // this .getBrowser () .print (fs);
163
163
 
164
164
  const vertexShader = new ShaderPart (this .getExecutionContext ());
165
- vertexShader ._url .push ("data:x-shader/x-vertex," + vs);
165
+ vertexShader ._url .push (encodeURI ("data:x-shader/x-vertex," + vs));
166
166
  vertexShader .setPrivate (true);
167
167
  vertexShader .setName ("VolumeDataVertexShader");
168
168
  vertexShader .setOptions (options);
@@ -170,7 +170,7 @@ VolumeData .prototype = Object .assign (Object .create (X3DVolumeDataNode .proto
170
170
 
171
171
  const fragmentShader = new ShaderPart (this .getExecutionContext ());
172
172
  fragmentShader ._type = "FRAGMENT";
173
- fragmentShader ._url .push ("data:x-shader/x-fragment," + fs);
173
+ fragmentShader ._url .push (encodeURI ("data:x-shader/x-fragment," + fs));
174
174
  fragmentShader .setPrivate (true);
175
175
  fragmentShader .setName ("VolumeDataFragmentShader");
176
176
  fragmentShader .setOptions (options);
@@ -50,10 +50,13 @@ import URLs from "../Browser/Networking/URLs.js";
50
50
 
51
51
  function ComponentInfo ({ name, level, title, providerUrl, external = false, dependencies = [ ] })
52
52
  {
53
- this .name = name;
54
- this .level = level;
55
- this .title = title;
56
- this .providerUrl = providerUrl || URLs .getProviderUrl (external && name);
53
+ Object .defineProperties (this,
54
+ {
55
+ name: { value: name, enumerable: true },
56
+ level: { value: level, enumerable: true },
57
+ title: { value: title, enumerable: true },
58
+ providerUrl: { value: providerUrl || URLs .getProviderUrl (external && name), enumerable: true },
59
+ });
57
60
 
58
61
  $.data (this, "external", external)
59
62
  $.data (this, "dependencies", dependencies)