x_ite 16.5.1 → 16.6.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 (56) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/components/AnnotationComponent.js +1 -1
  3. package/dist/assets/components/AnnotationComponent.min.js +1 -1
  4. package/dist/assets/components/CADGeometryComponent.js +1 -1
  5. package/dist/assets/components/CADGeometryComponent.min.js +1 -1
  6. package/dist/assets/components/CubeMapTexturingComponent.js +1 -1
  7. package/dist/assets/components/CubeMapTexturingComponent.min.js +1 -1
  8. package/dist/assets/components/DISComponent.js +1 -1
  9. package/dist/assets/components/DISComponent.min.js +1 -1
  10. package/dist/assets/components/EventUtilitiesComponent.js +1 -1
  11. package/dist/assets/components/EventUtilitiesComponent.min.js +1 -1
  12. package/dist/assets/components/GaussianSplatsComponent.js +1 -1
  13. package/dist/assets/components/GaussianSplatsComponent.min.js +1 -1
  14. package/dist/assets/components/Geometry2DComponent.js +1 -1
  15. package/dist/assets/components/Geometry2DComponent.min.js +1 -1
  16. package/dist/assets/components/Geometry3DComponent.js +1 -1
  17. package/dist/assets/components/Geometry3DComponent.min.js +1 -1
  18. package/dist/assets/components/GeospatialComponent.js +18 -18
  19. package/dist/assets/components/GeospatialComponent.min.js +2 -2
  20. package/dist/assets/components/HAnimComponent.js +652 -385
  21. package/dist/assets/components/HAnimComponent.min.js +2 -2
  22. package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
  23. package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
  24. package/dist/assets/components/LayoutComponent.js +1 -1
  25. package/dist/assets/components/LayoutComponent.min.js +1 -1
  26. package/dist/assets/components/NURBSComponent.js +1 -1
  27. package/dist/assets/components/NURBSComponent.min.js +1 -1
  28. package/dist/assets/components/ParticleSystemsComponent.js +1 -1
  29. package/dist/assets/components/ParticleSystemsComponent.min.js +1 -1
  30. package/dist/assets/components/PickingComponent.js +1 -1
  31. package/dist/assets/components/PickingComponent.min.js +1 -1
  32. package/dist/assets/components/RigidBodyPhysicsComponent.js +1 -1
  33. package/dist/assets/components/RigidBodyPhysicsComponent.min.js +1 -1
  34. package/dist/assets/components/ScriptingComponent.js +1 -1
  35. package/dist/assets/components/ScriptingComponent.min.js +1 -1
  36. package/dist/assets/components/TextComponent.js +1 -1
  37. package/dist/assets/components/TextComponent.min.js +1 -1
  38. package/dist/assets/components/TextureProjectionComponent.js +1 -1
  39. package/dist/assets/components/TextureProjectionComponent.min.js +1 -1
  40. package/dist/assets/components/Texturing3DComponent.js +9 -9
  41. package/dist/assets/components/Texturing3DComponent.min.js +2 -2
  42. package/dist/assets/components/VolumeRenderingComponent.js +1 -1
  43. package/dist/assets/components/VolumeRenderingComponent.min.js +1 -1
  44. package/dist/assets/components/WebXRComponent.js +1 -1
  45. package/dist/assets/components/WebXRComponent.min.js +1 -1
  46. package/dist/assets/components/X_ITEComponent.js +1 -1
  47. package/dist/assets/components/X_ITEComponent.min.js +1 -1
  48. package/dist/assets/lib/draco_decoder_gltf.js +1 -1
  49. package/dist/example.html +1 -1
  50. package/dist/x_ite.css +1 -1
  51. package/dist/x_ite.js +71 -108
  52. package/dist/x_ite.min.js +2 -2
  53. package/dist/x_ite.min.mjs +2 -2
  54. package/dist/x_ite.mjs +71 -108
  55. package/dist/x_ite.zip +0 -0
  56. package/package.json +4 -3
@@ -1,4 +1,4 @@
1
- /* X_ITE v16.5.1 */
1
+ /* X_ITE v16.6.0 */
2
2
  const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D")];
3
3
  /******/ (() => { // webpackBootstrap
4
4
  /******/ "use strict";
@@ -111,6 +111,9 @@ var external_X_ITE_X3D_Transform_default = /*#__PURE__*/__webpack_require__.n(ex
111
111
  ;// external "__X_ITE_X3D__ .X3DBoundedObject"
112
112
  const external_X_ITE_X3D_X3DBoundedObject_namespaceObject = __X_ITE_X3D__ .X3DBoundedObject;
113
113
  var external_X_ITE_X3D_X3DBoundedObject_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DBoundedObject_namespaceObject);
114
+ ;// external "__X_ITE_X3D__ .X3DTransformNode"
115
+ const external_X_ITE_X3D_X3DTransformNode_namespaceObject = __X_ITE_X3D__ .X3DTransformNode;
116
+ var external_X_ITE_X3D_X3DTransformNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DTransformNode_namespaceObject);
114
117
  ;// external "__X_ITE_X3D__ .TraverseType"
115
118
  const external_X_ITE_X3D_TraverseType_namespaceObject = __X_ITE_X3D__ .TraverseType;
116
119
  var external_X_ITE_X3D_TraverseType_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_TraverseType_namespaceObject);
@@ -120,6 +123,164 @@ var external_X_ITE_X3D_X3DCast_default = /*#__PURE__*/__webpack_require__.n(exte
120
123
  ;// external "__X_ITE_X3D__ .Matrix4"
121
124
  const external_X_ITE_X3D_Matrix4_namespaceObject = __X_ITE_X3D__ .Matrix4;
122
125
  var external_X_ITE_X3D_Matrix4_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Matrix4_namespaceObject);
126
+ ;// ./src/x_ite/Components/HAnim/HAnimJoint.js
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+ function HAnimJoint (executionContext)
138
+ {
139
+ external_X_ITE_X3D_X3DTransformNode_default().call (this, executionContext);
140
+
141
+ this .addType ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint);
142
+
143
+ this .addChildObjects ((external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacements", new (external_X_ITE_X3D_Fields_default()).SFTime (),
144
+ (external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacementWeights", new (external_X_ITE_X3D_Fields_default()).SFTime ());
145
+
146
+ this .setVisibleObject (true);
147
+ this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint, (external_X_ITE_X3D_X3DConstants_default()).HAnimSegment, (external_X_ITE_X3D_X3DConstants_default()).X3DGroupingNode, (external_X_ITE_X3D_X3DConstants_default()).Shape);
148
+
149
+ // Units
150
+
151
+ this ._llimit .setUnit ("angle");
152
+ this ._ulimit .setUnit ("angle");
153
+ this ._minAngle .setUnit ("angle");
154
+ this ._maxAngle .setUnit ("angle");
155
+
156
+ // Legacy
157
+
158
+ if (executionContext .getSpecificationVersion () <= 3.3)
159
+ this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimSite);
160
+ else if (executionContext .getSpecificationVersion () <= 4.0)
161
+ this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint, (external_X_ITE_X3D_X3DConstants_default()).HAnimSegment);
162
+
163
+ // Private properties
164
+
165
+ this .displacerNodes = [ ];
166
+ this .modelViewMatrix = new (external_X_ITE_X3D_Matrix4_default()) ();
167
+ }
168
+
169
+ Object .assign (Object .setPrototypeOf (HAnimJoint .prototype, (external_X_ITE_X3D_X3DTransformNode_default()).prototype),
170
+ {
171
+ initialize ()
172
+ {
173
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .initialize .call (this);
174
+
175
+ this ._displacers .addInterest ("set_displacers__", this);
176
+
177
+ this .set_displacers__ ();
178
+ },
179
+ getModelViewMatrix ()
180
+ {
181
+ return this .modelViewMatrix;
182
+ },
183
+ getDisplacers ()
184
+ {
185
+ return this .displacerNodes;
186
+ },
187
+ set_visibleObjects__ ()
188
+ { },
189
+ set_displacers__ ()
190
+ {
191
+ const displacerNodes = this .displacerNodes;
192
+
193
+ for (const displacerNode of displacerNodes)
194
+ {
195
+ displacerNode ._coordIndex .removeInterest ("addEvent", this ._displacements);
196
+ displacerNode ._displacements .removeInterest ("addEvent", this ._displacements);
197
+ displacerNode ._coordIndex .removeInterest ("addEvent", this ._displacementWeights);
198
+ displacerNode ._weight .removeInterest ("addEvent", this ._displacementWeights);
199
+ }
200
+
201
+ displacerNodes .length = 0;
202
+
203
+ for (const node of this ._displacers)
204
+ {
205
+ const displacerNode = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).HAnimDisplacer, node);
206
+
207
+ if (displacerNode)
208
+ displacerNodes .push (displacerNode);
209
+ }
210
+
211
+ for (const displacerNode of displacerNodes)
212
+ {
213
+ displacerNode ._coordIndex .addInterest ("addEvent", this ._displacements);
214
+ displacerNode ._displacements .addInterest ("addEvent", this ._displacements);
215
+ displacerNode ._coordIndex .addInterest ("addEvent", this ._displacementWeights);
216
+ displacerNode ._weight .addInterest ("addEvent", this ._displacementWeights);
217
+ }
218
+
219
+ this ._displacements .addEvent ();
220
+ this ._displacementWeights .addEvent ();
221
+ },
222
+ traverse (type, renderObject)
223
+ {
224
+ const modelViewMatrix = renderObject .getModelViewMatrix ();
225
+
226
+ modelViewMatrix .push ();
227
+ modelViewMatrix .multLeft (this .getMatrix ());
228
+
229
+ if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
230
+ this .modelViewMatrix .assign (modelViewMatrix .get ());
231
+
232
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
233
+
234
+ modelViewMatrix .pop ();
235
+ },
236
+ groupTraverse (type, renderObject)
237
+ {
238
+ if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
239
+ this .modelViewMatrix .assign (renderObject .getModelViewMatrix () .get ());
240
+
241
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
242
+ },
243
+ });
244
+
245
+ Object .defineProperties (HAnimJoint,
246
+ {
247
+ ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("HAnimJoint", "HAnim", 1, "children", "3.0"),
248
+ fieldDefinitions:
249
+ {
250
+ value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([
251
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()),
252
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()),
253
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "name", new (external_X_ITE_X3D_Fields_default()).SFString ()),
254
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "translation", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
255
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "rotation", new (external_X_ITE_X3D_Fields_default()).SFRotation ()),
256
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "scale", new (external_X_ITE_X3D_Fields_default()).SFVec3f (1, 1, 1)),
257
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "scaleOrientation", new (external_X_ITE_X3D_Fields_default()).SFRotation ()),
258
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "center", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
259
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "limitOrientation", new (external_X_ITE_X3D_Fields_default()).SFRotation ()),
260
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "llimit", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0)),
261
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "ulimit", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0)),
262
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "minAngle", new (external_X_ITE_X3D_Fields_default()).SFFloat ()),
263
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "maxAngle", new (external_X_ITE_X3D_Fields_default()).SFFloat ()),
264
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "stiffness", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0)),
265
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "skinCoordIndex", new (external_X_ITE_X3D_Fields_default()).MFInt32 ()),
266
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "skinCoordWeight", new (external_X_ITE_X3D_Fields_default()).MFFloat ()),
267
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "displacers", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
268
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "visible", new (external_X_ITE_X3D_Fields_default()).SFBool (true)),
269
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "bboxDisplay", new (external_X_ITE_X3D_Fields_default()).SFBool ()),
270
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxSize", new (external_X_ITE_X3D_Fields_default()).SFVec3f (-1, -1, -1)),
271
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxCenter", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
272
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "addChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
273
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "removeChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
274
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "children", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
275
+ ]),
276
+ enumerable: true,
277
+ },
278
+ });
279
+
280
+ const HAnimJoint_default_ = HAnimJoint;
281
+ ;
282
+
283
+ /* harmony default export */ const HAnim_HAnimJoint = (external_X_ITE_X3D_Namespace_default().add ("HAnimJoint", HAnimJoint_default_));
123
284
  ;// external "__X_ITE_X3D__ .Algorithm"
124
285
  const external_X_ITE_X3D_Algorithm_namespaceObject = __X_ITE_X3D__ .Algorithm;
125
286
  var external_X_ITE_X3D_Algorithm_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Algorithm_namespaceObject);
@@ -202,6 +363,7 @@ return skin;}
202
363
 
203
364
 
204
365
 
366
+
205
367
  // Register shaders.
206
368
 
207
369
 
@@ -213,6 +375,8 @@ external_X_ITE_X3D_ShaderRegistry_default().addIncludeFile ("Skin", Skin2_glsl);
213
375
  * HAnimHumanoid
214
376
  */
215
377
 
378
+ const _hAnimNodes = Symbol .for ("X_ITE.HAnim.hAnimNodes");
379
+
216
380
  function HAnimHumanoid (executionContext)
217
381
  {
218
382
  external_X_ITE_X3D_X3DChildNode_default().call (this, executionContext);
@@ -240,7 +404,7 @@ function HAnimHumanoid (executionContext)
240
404
 
241
405
  // Private properties
242
406
 
243
- this .skeletonNode = new (external_X_ITE_X3D_Group_default()) (executionContext);
407
+ this .skeletonNode = new HAnim_HAnimJoint (executionContext);
244
408
  this .viewpointsNode = new (external_X_ITE_X3D_Group_default()) (executionContext);
245
409
  this .skinNode = new Skin (executionContext, this);
246
410
  this .transformNode = new (external_X_ITE_X3D_Transform_default()) (executionContext);
@@ -268,13 +432,15 @@ Object .assign (Object .setPrototypeOf (HAnimHumanoid .prototype, (external_X_IT
268
432
  this .skeletonNode .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint, (external_X_ITE_X3D_X3DConstants_default()).HAnimSite);
269
433
  this .viewpointsNode .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimSite);
270
434
 
435
+ this ._displacers .addFieldInterest (this .skeletonNode ._displacers);
271
436
  this ._skeleton .addFieldInterest (this .skeletonNode ._children);
272
437
  this ._viewpoints .addFieldInterest (this .viewpointsNode ._children);
273
438
  this ._skin .addFieldInterest (this .skinNode ._children);
274
439
 
275
- this .skeletonNode ._children = this ._skeleton;
276
- this .viewpointsNode ._children = this ._viewpoints;
277
- this .skinNode ._children = this ._skin;
440
+ this .skeletonNode ._displacers = this ._displacers;
441
+ this .skeletonNode ._children = this ._skeleton;
442
+ this .viewpointsNode ._children = this ._viewpoints;
443
+ this .skinNode ._children = this ._skin;
278
444
 
279
445
  this .skeletonNode .setPrivate (true);
280
446
  this .viewpointsNode .setPrivate (true);
@@ -387,6 +553,10 @@ Object .assign (Object .setPrototypeOf (HAnimHumanoid .prototype, (external_X_IT
387
553
  {
388
554
  return this .humanoidKey;
389
555
  },
556
+ getSkinCoord ()
557
+ {
558
+ return this .skinCoordNode;
559
+ },
390
560
  set_humanoidKey__ ()
391
561
  {
392
562
  this .humanoidKey = `[${this .numJoints}.${this .numDisplacements}]`;
@@ -523,6 +693,9 @@ Object .assign (Object .setPrototypeOf (HAnimHumanoid .prototype, (external_X_IT
523
693
  jointNodes .length = 0;
524
694
  jointBindingMatrices .length = 0;
525
695
 
696
+ jointNodes .push (this .skeletonNode);
697
+ jointBindingMatrices .push ((external_X_ITE_X3D_Matrix4_default()).IDENTITY);
698
+
526
699
  for (const [i, node] of this ._joints .entries ())
527
700
  {
528
701
  const jointNode = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint, node);
@@ -870,11 +1043,15 @@ class Skin extends (external_X_ITE_X3D_Group_default())
870
1043
 
871
1044
  traverse (type, renderObject)
872
1045
  {
873
- renderObject .getHAnimNode () .push (this .#humanoidNode);
1046
+ const
1047
+ coordNode = this .#humanoidNode .getSkinCoord (),
1048
+ hAnimNodes = coordNode [_hAnimNodes] ??= [ ];
1049
+
1050
+ hAnimNodes .push (this .#humanoidNode);
874
1051
 
875
1052
  super .traverse (type, renderObject);
876
1053
 
877
- renderObject .getHAnimNode () .pop ();
1054
+ hAnimNodes .pop ();
878
1055
  }
879
1056
  }
880
1057
 
@@ -901,13 +1078,22 @@ const HAnimHumanoid_default_ = HAnimHumanoid;
901
1078
  ;
902
1079
 
903
1080
  /* harmony default export */ const HAnim_HAnimHumanoid = (external_X_ITE_X3D_Namespace_default().add ("HAnimHumanoid", HAnimHumanoid_default_));
904
- ;// external "__X_ITE_X3D__ .X3DTransformNode"
905
- const external_X_ITE_X3D_X3DTransformNode_namespaceObject = __X_ITE_X3D__ .X3DTransformNode;
906
- var external_X_ITE_X3D_X3DTransformNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DTransformNode_namespaceObject);
907
- ;// ./src/x_ite/Components/HAnim/HAnimJoint.js
908
-
909
-
910
-
1081
+ ;// external "__X_ITE_X3D__ .TimeSensor"
1082
+ const external_X_ITE_X3D_TimeSensor_namespaceObject = __X_ITE_X3D__ .TimeSensor;
1083
+ var external_X_ITE_X3D_TimeSensor_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_TimeSensor_namespaceObject);
1084
+ ;// external "__X_ITE_X3D__ .PositionInterpolator"
1085
+ const external_X_ITE_X3D_PositionInterpolator_namespaceObject = __X_ITE_X3D__ .PositionInterpolator;
1086
+ var external_X_ITE_X3D_PositionInterpolator_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_PositionInterpolator_namespaceObject);
1087
+ ;// external "__X_ITE_X3D__ .OrientationInterpolator"
1088
+ const external_X_ITE_X3D_OrientationInterpolator_namespaceObject = __X_ITE_X3D__ .OrientationInterpolator;
1089
+ var external_X_ITE_X3D_OrientationInterpolator_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_OrientationInterpolator_namespaceObject);
1090
+ ;// external "__X_ITE_X3D__ .Vector3"
1091
+ const external_X_ITE_X3D_Vector3_namespaceObject = __X_ITE_X3D__ .Vector3;
1092
+ var external_X_ITE_X3D_Vector3_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector3_namespaceObject);
1093
+ ;// external "__X_ITE_X3D__ .Rotation4"
1094
+ const external_X_ITE_X3D_Rotation4_namespaceObject = __X_ITE_X3D__ .Rotation4;
1095
+ var external_X_ITE_X3D_Rotation4_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Rotation4_namespaceObject);
1096
+ ;// ./src/x_ite/Components/HAnim/HAnimMotion.js
911
1097
 
912
1098
 
913
1099
 
@@ -915,210 +1101,40 @@ var external_X_ITE_X3D_X3DTransformNode_default = /*#__PURE__*/__webpack_require
915
1101
 
916
1102
 
917
1103
 
918
- function HAnimJoint (executionContext)
919
- {
920
- external_X_ITE_X3D_X3DTransformNode_default().call (this, executionContext);
921
1104
 
922
- this .addType ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint);
923
1105
 
924
- this .addChildObjects ((external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacements", new (external_X_ITE_X3D_Fields_default()).SFTime (),
925
- (external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacementWeights", new (external_X_ITE_X3D_Fields_default()).SFTime ());
926
1106
 
927
- this .setVisibleObject (true);
928
- this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint, (external_X_ITE_X3D_X3DConstants_default()).HAnimSegment, (external_X_ITE_X3D_X3DConstants_default()).X3DGroupingNode, (external_X_ITE_X3D_X3DConstants_default()).Shape);
929
1107
 
930
- // Units
931
1108
 
932
- // this ._llimit .setUnit ("angle"); // TODO: seems to be angle, but is it in radians or degrees?
933
- // this ._ulimit .setUnit ("angle"); // TODO: seems to be angle, but is it in radians or degrees?
934
- this ._minAngle .setUnit ("angle");
935
- this ._maxAngle .setUnit ("angle");
936
1109
 
937
- // Legacy
1110
+ function HAnimMotion (executionContext)
1111
+ {
1112
+ external_X_ITE_X3D_X3DChildNode_default().call (this, executionContext);
938
1113
 
939
- if (executionContext .getSpecificationVersion () <= 3.3)
940
- this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimSite);
941
- else if (executionContext .getSpecificationVersion () <= 4.0)
942
- this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimJoint, (external_X_ITE_X3D_X3DConstants_default()).HAnimSegment);
1114
+ this .addType ((external_X_ITE_X3D_X3DConstants_default()).HAnimMotion);
943
1115
 
944
1116
  // Private properties
945
1117
 
946
- this .displacerNodes = [ ];
947
- this .modelViewMatrix = new (external_X_ITE_X3D_Matrix4_default()) ();
1118
+ this .timeSensor = new (external_X_ITE_X3D_TimeSensor_default()) (this .getExecutionContext ());
1119
+ this .interpolators = [ ];
948
1120
  }
949
1121
 
950
- Object .assign (Object .setPrototypeOf (HAnimJoint .prototype, (external_X_ITE_X3D_X3DTransformNode_default()).prototype),
1122
+ Object .assign (Object .setPrototypeOf (HAnimMotion .prototype, (external_X_ITE_X3D_X3DChildNode_default()).prototype),
951
1123
  {
952
1124
  initialize ()
953
1125
  {
954
- external_X_ITE_X3D_X3DTransformNode_default().prototype .initialize .call (this);
955
-
956
- this ._displacers .addInterest ("set_displacers__", this);
957
-
958
- this .set_displacers__ ();
959
- },
960
- getModelViewMatrix ()
961
- {
962
- return this .modelViewMatrix;
963
- },
964
- getDisplacers ()
965
- {
966
- return this .displacerNodes;
967
- },
968
- set_visibleObjects__ ()
969
- { },
970
- set_displacers__ ()
971
- {
972
- const displacerNodes = this .displacerNodes;
1126
+ external_X_ITE_X3D_X3DChildNode_default().prototype .initialize .call (this);
973
1127
 
974
- for (const displacerNode of displacerNodes)
975
- {
976
- displacerNode ._coordIndex .removeInterest ("addEvent", this ._displacements);
977
- displacerNode ._displacements .removeInterest ("addEvent", this ._displacements);
978
- displacerNode ._coordIndex .removeInterest ("addEvent", this ._displacementWeights);
979
- displacerNode ._weight .removeInterest ("addEvent", this ._displacementWeights);
980
- }
1128
+ this ._loop .addFieldInterest (this .timeSensor ._loop);
981
1129
 
982
- displacerNodes .length = 0;
1130
+ this .timeSensor ._cycleTime .addFieldInterest (this ._cycleTime);
1131
+ this .timeSensor ._elapsedTime .addFieldInterest (this ._elapsedTime);
983
1132
 
984
- for (const node of this ._displacers)
985
- {
986
- const displacerNode = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).HAnimDisplacer, node);
1133
+ this .timeSensor ._enabled = false;
1134
+ this .timeSensor ._loop = this ._loop;
1135
+ this .timeSensor ._stopTime = 1;
987
1136
 
988
- if (displacerNode)
989
- displacerNodes .push (displacerNode);
990
- }
991
-
992
- for (const displacerNode of displacerNodes)
993
- {
994
- displacerNode ._coordIndex .addInterest ("addEvent", this ._displacements);
995
- displacerNode ._displacements .addInterest ("addEvent", this ._displacements);
996
- displacerNode ._coordIndex .addInterest ("addEvent", this ._displacementWeights);
997
- displacerNode ._weight .addInterest ("addEvent", this ._displacementWeights);
998
- }
999
-
1000
- this ._displacements .addEvent ();
1001
- this ._displacementWeights .addEvent ();
1002
- },
1003
- traverse (type, renderObject)
1004
- {
1005
- const modelViewMatrix = renderObject .getModelViewMatrix ();
1006
-
1007
- modelViewMatrix .push ();
1008
- modelViewMatrix .multLeft (this .getMatrix ());
1009
-
1010
- if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
1011
- this .modelViewMatrix .assign (modelViewMatrix .get ());
1012
-
1013
- external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
1014
-
1015
- modelViewMatrix .pop ();
1016
- },
1017
- groupTraverse (type, renderObject)
1018
- {
1019
- if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
1020
- this .modelViewMatrix .assign (renderObject .getModelViewMatrix () .get ());
1021
-
1022
- external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
1023
- },
1024
- });
1025
-
1026
- Object .defineProperties (HAnimJoint,
1027
- {
1028
- ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("HAnimJoint", "HAnim", 1, "children", "3.0"),
1029
- fieldDefinitions:
1030
- {
1031
- value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([
1032
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()),
1033
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()),
1034
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "name", new (external_X_ITE_X3D_Fields_default()).SFString ()),
1035
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "translation", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
1036
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "rotation", new (external_X_ITE_X3D_Fields_default()).SFRotation ()),
1037
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "scale", new (external_X_ITE_X3D_Fields_default()).SFVec3f (1, 1, 1)),
1038
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "scaleOrientation", new (external_X_ITE_X3D_Fields_default()).SFRotation ()),
1039
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "center", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
1040
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "limitOrientation", new (external_X_ITE_X3D_Fields_default()).SFRotation ()),
1041
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "llimit", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0)),
1042
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "ulimit", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0)),
1043
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "minAngle", new (external_X_ITE_X3D_Fields_default()).SFFloat ()),
1044
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "maxAngle", new (external_X_ITE_X3D_Fields_default()).SFFloat ()),
1045
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "stiffness", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0)),
1046
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "skinCoordIndex", new (external_X_ITE_X3D_Fields_default()).MFInt32 ()),
1047
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "skinCoordWeight", new (external_X_ITE_X3D_Fields_default()).MFFloat ()),
1048
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "displacers", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1049
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "visible", new (external_X_ITE_X3D_Fields_default()).SFBool (true)),
1050
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "bboxDisplay", new (external_X_ITE_X3D_Fields_default()).SFBool ()),
1051
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxSize", new (external_X_ITE_X3D_Fields_default()).SFVec3f (-1, -1, -1)),
1052
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxCenter", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
1053
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "addChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1054
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "removeChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1055
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "children", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1056
- ]),
1057
- enumerable: true,
1058
- },
1059
- });
1060
-
1061
- const HAnimJoint_default_ = HAnimJoint;
1062
- ;
1063
-
1064
- /* harmony default export */ const HAnim_HAnimJoint = (external_X_ITE_X3D_Namespace_default().add ("HAnimJoint", HAnimJoint_default_));
1065
- ;// external "__X_ITE_X3D__ .TimeSensor"
1066
- const external_X_ITE_X3D_TimeSensor_namespaceObject = __X_ITE_X3D__ .TimeSensor;
1067
- var external_X_ITE_X3D_TimeSensor_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_TimeSensor_namespaceObject);
1068
- ;// external "__X_ITE_X3D__ .PositionInterpolator"
1069
- const external_X_ITE_X3D_PositionInterpolator_namespaceObject = __X_ITE_X3D__ .PositionInterpolator;
1070
- var external_X_ITE_X3D_PositionInterpolator_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_PositionInterpolator_namespaceObject);
1071
- ;// external "__X_ITE_X3D__ .OrientationInterpolator"
1072
- const external_X_ITE_X3D_OrientationInterpolator_namespaceObject = __X_ITE_X3D__ .OrientationInterpolator;
1073
- var external_X_ITE_X3D_OrientationInterpolator_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_OrientationInterpolator_namespaceObject);
1074
- ;// external "__X_ITE_X3D__ .Vector3"
1075
- const external_X_ITE_X3D_Vector3_namespaceObject = __X_ITE_X3D__ .Vector3;
1076
- var external_X_ITE_X3D_Vector3_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector3_namespaceObject);
1077
- ;// external "__X_ITE_X3D__ .Rotation4"
1078
- const external_X_ITE_X3D_Rotation4_namespaceObject = __X_ITE_X3D__ .Rotation4;
1079
- var external_X_ITE_X3D_Rotation4_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Rotation4_namespaceObject);
1080
- ;// ./src/x_ite/Components/HAnim/HAnimMotion.js
1081
-
1082
-
1083
-
1084
-
1085
-
1086
-
1087
-
1088
-
1089
-
1090
-
1091
-
1092
-
1093
-
1094
- function HAnimMotion (executionContext)
1095
- {
1096
- external_X_ITE_X3D_X3DChildNode_default().call (this, executionContext);
1097
-
1098
- this .addType ((external_X_ITE_X3D_X3DConstants_default()).HAnimMotion);
1099
-
1100
- // Private properties
1101
-
1102
- this .timeSensor = new (external_X_ITE_X3D_TimeSensor_default()) (this .getExecutionContext ());
1103
- this .interpolators = [ ];
1104
- }
1105
-
1106
- Object .assign (Object .setPrototypeOf (HAnimMotion .prototype, (external_X_ITE_X3D_X3DChildNode_default()).prototype),
1107
- {
1108
- initialize ()
1109
- {
1110
- external_X_ITE_X3D_X3DChildNode_default().prototype .initialize .call (this);
1111
-
1112
- this ._loop .addFieldInterest (this .timeSensor ._loop);
1113
-
1114
- this .timeSensor ._cycleTime .addFieldInterest (this ._cycleTime);
1115
- this .timeSensor ._elapsedTime .addFieldInterest (this ._elapsedTime);
1116
-
1117
- this .timeSensor ._enabled = false;
1118
- this .timeSensor ._loop = this ._loop;
1119
- this .timeSensor ._stopTime = 1;
1120
-
1121
- this .timeSensor .setup ();
1137
+ this .timeSensor .setup ();
1122
1138
 
1123
1139
  this ._enabled .addInterest ("set_enabled__", this);
1124
1140
  this ._joints .addInterest ("set_joints__", this);
@@ -1689,6 +1705,9 @@ const HAnimPose_default_ = HAnimPose;
1689
1705
  ;// external "__X_ITE_X3D__ .X3DGroupingNode"
1690
1706
  const external_X_ITE_X3D_X3DGroupingNode_namespaceObject = __X_ITE_X3D__ .X3DGroupingNode;
1691
1707
  var external_X_ITE_X3D_X3DGroupingNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DGroupingNode_namespaceObject);
1708
+ ;// external "__X_ITE_X3D__ .X3DCoordinateNode"
1709
+ const external_X_ITE_X3D_X3DCoordinateNode_namespaceObject = __X_ITE_X3D__ .X3DCoordinateNode;
1710
+ var external_X_ITE_X3D_X3DCoordinateNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DCoordinateNode_namespaceObject);
1692
1711
  ;// ./src/x_ite/Components/HAnim/HAnimSegment.js
1693
1712
 
1694
1713
 
@@ -1700,35 +1719,30 @@ var external_X_ITE_X3D_X3DGroupingNode_default = /*#__PURE__*/__webpack_require_
1700
1719
 
1701
1720
 
1702
1721
 
1722
+
1723
+ const HAnimSegment_hAnimNodes = Symbol .for ("X_ITE.HAnim.hAnimNodes");
1724
+
1703
1725
  function HAnimSegment (executionContext)
1704
1726
  {
1705
1727
  external_X_ITE_X3D_X3DGroupingNode_default().call (this, executionContext);
1706
1728
 
1707
1729
  this .addType ((external_X_ITE_X3D_X3DConstants_default()).HAnimSegment);
1708
1730
 
1709
- this .addChildObjects ((external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacementsTexture", new (external_X_ITE_X3D_Fields_default()).SFTime (),
1710
- (external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacementWeightsTexture", new (external_X_ITE_X3D_Fields_default()).SFTime ());
1711
-
1712
1731
  this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).HAnimSite, (external_X_ITE_X3D_X3DConstants_default()).X3DGroupingNode);
1713
1732
 
1714
1733
  // Units
1715
1734
 
1716
1735
  this ._mass .setUnit ("mass");
1717
1736
 
1737
+ // Private properties
1738
+
1739
+ this .displacerNodes = [ ];
1740
+ this .jointMatrix = new (external_X_ITE_X3D_Matrix4_default()) ();
1741
+
1718
1742
  // Legacy
1719
1743
 
1720
1744
  if (executionContext .getSpecificationVersion () <= 4.0)
1721
1745
  this .addAllowedTypes ((external_X_ITE_X3D_X3DConstants_default()).X3DChildNode);
1722
-
1723
- // Private properties
1724
-
1725
- const size = Math .ceil (Math .sqrt (1 * 8));
1726
-
1727
- this .numJoints = 0;
1728
- this .numDisplacements = 0;
1729
- this .displacerNodes = [ ];
1730
- this .displacementWeights = [ ];
1731
- this .jointMatricesArray = new Float32Array (size * size * 4);
1732
1746
  }
1733
1747
 
1734
1748
  Object .assign (Object .setPrototypeOf (HAnimSegment .prototype, (external_X_ITE_X3D_X3DGroupingNode_default()).prototype),
@@ -1737,44 +1751,25 @@ Object .assign (Object .setPrototypeOf (HAnimSegment .prototype, (external_X_ITE
1737
1751
  {
1738
1752
  external_X_ITE_X3D_X3DGroupingNode_default().prototype .initialize .call (this);
1739
1753
 
1740
- // Textures
1741
-
1742
- const
1743
- browser = this .getBrowser (),
1744
- gl = browser .getContext ();
1745
-
1746
- this .displacementsTexture = gl .createTexture ();
1747
- this .displacementWeightsTexture = gl .createTexture ();
1748
- this .jointMatricesTexture = gl .createTexture ();
1749
-
1750
- for (const texture of [this .displacementsTexture, this .displacementWeightsTexture, this .jointMatricesTexture])
1751
- {
1752
- gl .bindTexture (gl .TEXTURE_2D, texture);
1753
-
1754
- gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_S, gl .CLAMP_TO_EDGE);
1755
- gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_T, gl .CLAMP_TO_EDGE);
1756
- gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MAG_FILTER, gl .NEAREST);
1757
- gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MIN_FILTER, gl .NEAREST);
1758
- }
1759
-
1760
1754
  // Events
1761
1755
 
1762
1756
  this ._displacers .addInterest ("set_displacers__", this);
1763
1757
  this ._coord .addInterest ("set_coord__", this);
1764
1758
 
1765
- this ._displacementsTexture .addInterest ("set_displacementsTexture__", this);
1766
- this ._displacementWeightsTexture .addInterest ("set_displacementWeightsTexture__", this);
1767
-
1768
1759
  this .set_displacers__ ();
1769
1760
  this .set_coord__ ();
1770
1761
  },
1771
1762
  getHAnimKey ()
1772
1763
  {
1773
- return this .humanoidKey;
1764
+ return this .coordNode .getHAnimKey ();
1774
1765
  },
1775
- set_humanoidKey__ ()
1766
+ getDisplacers ()
1776
1767
  {
1777
- this .humanoidKey = `[${this .numJoints}.${this .numDisplacements}]`;
1768
+ return this .displacerNodes;
1769
+ },
1770
+ getJointMatrix ()
1771
+ {
1772
+ return this .jointMatrix;
1778
1773
  },
1779
1774
  set_displacers__ ()
1780
1775
  {
@@ -1782,10 +1777,10 @@ Object .assign (Object .setPrototypeOf (HAnimSegment .prototype, (external_X_ITE
1782
1777
 
1783
1778
  for (const displacerNode of displacerNodes)
1784
1779
  {
1785
- displacerNode ._coordIndex .removeInterest ("addEvent", this ._displacementsTexture);
1786
- displacerNode ._displacements .removeInterest ("addEvent", this ._displacementsTexture);
1787
- displacerNode ._coordIndex .removeInterest ("addEvent", this ._displacementWeightsTexture);
1788
- displacerNode ._weight .removeInterest ("addEvent", this ._displacementWeightsTexture);
1780
+ displacerNode ._coordIndex .removeInterest ("set_displacementsTexture__", this);
1781
+ displacerNode ._displacements .removeInterest ("set_displacementsTexture__", this);
1782
+ displacerNode ._coordIndex .removeInterest ("set_displacementWeightsTexture__", this);
1783
+ displacerNode ._weight .removeInterest ("set_displacementWeightsTexture__", this);
1789
1784
  }
1790
1785
 
1791
1786
  displacerNodes .length = 0;
@@ -1800,166 +1795,270 @@ Object .assign (Object .setPrototypeOf (HAnimSegment .prototype, (external_X_ITE
1800
1795
 
1801
1796
  for (const displacerNode of displacerNodes)
1802
1797
  {
1803
- displacerNode ._coordIndex .addInterest ("addEvent", this ._displacementsTexture);
1804
- displacerNode ._displacements .addInterest ("addEvent", this ._displacementsTexture);
1805
- displacerNode ._coordIndex .addInterest ("addEvent", this ._displacementWeightsTexture);
1806
- displacerNode ._weight .addInterest ("addEvent", this ._displacementWeightsTexture);
1798
+ displacerNode ._coordIndex .addInterest ("set_displacementsTexture__", this);
1799
+ displacerNode ._displacements .addInterest ("set_displacementsTexture__", this);
1800
+ displacerNode ._coordIndex .addInterest ("set_displacementWeightsTexture__", this);
1801
+ displacerNode ._weight .addInterest ("set_displacementWeightsTexture__", this);
1807
1802
  }
1808
1803
 
1809
- this ._displacementsTexture .addEvent ();
1810
- this ._displacementWeightsTexture .addEvent ();
1804
+ this .set_displacementsTexture__ ();
1805
+ this .set_displacementWeightsTexture__ ();
1811
1806
  },
1812
1807
  set_displacementsTexture__ ()
1813
1808
  {
1814
- // Create array.
1815
-
1816
- const
1817
- length = this .coordNode ?._point .length || 1,
1818
- displacements = Array .from ({ length }, () => [ ]);
1819
-
1820
- let displacer = 0;
1821
-
1822
- this .displacementWeights .length = 0;
1823
-
1824
- for (const { _weight, _coordIndex, _displacements } of this .displacerNodes)
1825
- {
1826
- if (!_coordIndex .length)
1827
- continue;
1828
-
1829
- // Store reference to weight SFFloat.
1830
- this .displacementWeights .push (_weight, 0, 0, 0);
1831
-
1832
- for (const [i, index] of _coordIndex .entries ())
1833
- displacements [index] ?.push (... _displacements [i], 0, displacer, 0, 0, 0);
1834
-
1835
- ++ displacer;
1836
- }
1837
-
1838
- const
1839
- numDisplacements = displacements .reduce ((p, n) => Math .max (p, n .length), 0) / 8,
1840
- numElements = numDisplacements * 8,
1841
- size = Math .ceil (Math .sqrt (length * numDisplacements * 2)) || 1,
1842
- displacementsArray = new Float32Array (size * size * 4);
1843
-
1844
- for (let i = 0; i < length; ++ i)
1845
- displacementsArray .set (displacements [i], i * numElements);
1846
-
1847
- // Number of displacements per coord index.
1848
- this .numDisplacements = numDisplacements;
1849
-
1850
- // Upload texture.
1851
-
1852
- const
1853
- browser = this .getBrowser (),
1854
- gl = browser .getContext ();
1855
-
1856
- gl .bindTexture (gl .TEXTURE_2D, this .displacementsTexture);
1857
- gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, size, size, 0, gl .RGBA, gl .FLOAT, displacementsArray);
1858
-
1859
- // Weights
1860
-
1861
- this .displacementWeightsSize = Math .ceil (Math .sqrt (displacer));
1862
- this .displacementWeightsArray = new Float32Array (this .displacementWeightsSize * this .displacementWeightsSize * 4);
1863
-
1864
- // Trigger update.
1865
-
1866
- this .set_humanoidKey__ ();
1809
+ this .coordNode ?._displacementsTexture .addEvent ();
1867
1810
  },
1868
1811
  set_displacementWeightsTexture__ ()
1869
1812
  {
1870
- // Upload texture.
1871
-
1872
- const
1873
- gl = this .getBrowser () .getContext (),
1874
- size = this .displacementWeightsSize,
1875
- array = this .displacementWeightsArray;
1876
-
1877
- array .set (this .displacementWeights);
1878
-
1879
- gl .bindTexture (gl .TEXTURE_2D, this .displacementWeightsTexture);
1880
- gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, size, size, 0, gl .RGBA, gl .FLOAT, array);
1813
+ this .coordNode ?._displacementWeightsTexture .addEvent ();
1881
1814
  },
1882
1815
  set_coord__ ()
1883
1816
  {
1884
- if (this .coordNode)
1885
- {
1886
- this .coordNode .removeInterest ("addEvent", this ._displacementsTexture);
1887
- this .coordNode .removeInterest ("addEvent", this ._displacementWeightsTexture);
1888
- }
1817
+ this .coordNode ?.removeHAnimDisplacers (this);
1889
1818
 
1890
1819
  this .coordNode = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).Coordinate, this ._coord)
1891
1820
  ?? external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).CoordinateDouble, this ._coord);
1892
1821
 
1893
- if (this .coordNode)
1894
- {
1895
- delete this .skinning;
1896
-
1897
- this .coordNode .addInterest ("addEvent", this ._displacementsTexture);
1898
- this .coordNode .addInterest ("addEvent", this ._displacementWeightsTexture);
1899
- }
1900
- else
1901
- {
1902
- this .skinning = Function .prototype;
1903
- }
1822
+ this .coordNode ?.addHAnimDisplacers (this);
1904
1823
 
1905
- this ._displacementsTexture .addEvent ();
1906
- this ._displacementWeightsTexture .addEvent ();
1824
+ this .set_displacementsTexture__ ();
1825
+ this .set_displacementWeightsTexture__ ();
1907
1826
  },
1908
1827
  traverse (type, renderObject)
1909
1828
  {
1910
- if (this .coordNode && this .numDisplacements)
1829
+ if (this .coordNode ?.getNumDisplacements ())
1911
1830
  {
1912
- renderObject .getHAnimNode () .push (this);
1831
+ if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
1832
+ {
1833
+ const invHumanoidMatrix = renderObject .getInvHumanoidMatrix () .get ();
1913
1834
 
1914
- external_X_ITE_X3D_X3DGroupingNode_default().prototype .traverse .call (this, type, renderObject);
1835
+ this .jointMatrix
1836
+ .assign (renderObject .getModelViewMatrix () .get ())
1837
+ .multRight (invHumanoidMatrix);
1838
+
1839
+ this .coordNode .updateSkin ();
1840
+ }
1841
+
1842
+ const hAnimNodes = this .coordNode [HAnimSegment_hAnimNodes] ??= [ ];
1843
+
1844
+ hAnimNodes .push (this);
1915
1845
 
1916
- this .skinning (type, renderObject);
1846
+ external_X_ITE_X3D_X3DGroupingNode_default().prototype .traverse .call (this, type, renderObject);
1917
1847
 
1918
- renderObject .getHAnimNode () .pop ();
1848
+ hAnimNodes .pop ();
1919
1849
  }
1920
1850
  else
1921
1851
  {
1922
1852
  external_X_ITE_X3D_X3DGroupingNode_default().prototype .traverse .call (this, type, renderObject);
1923
1853
  }
1924
1854
  },
1925
- skinning: (() =>
1855
+ getShaderOptions (options)
1856
+ {
1857
+ this .coordNode .getHAnimShaderOptions (options);
1858
+ },
1859
+ setShaderUniforms (gl, shaderObject)
1926
1860
  {
1927
- const modelViewMatrix = new (external_X_ITE_X3D_Matrix4_default()) ();
1861
+ this .coordNode .setHAnimShaderUniforms (gl, shaderObject);
1862
+ },
1863
+ });
1928
1864
 
1929
- return function (type, renderObject)
1930
- {
1931
- if (type !== (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
1932
- return;
1865
+ Object .defineProperties (HAnimSegment,
1866
+ {
1867
+ ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("HAnimSegment", "HAnim", 1, "children", "3.0"),
1868
+ fieldDefinitions:
1869
+ {
1870
+ value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([
1871
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()),
1872
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()),
1873
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "name", new (external_X_ITE_X3D_Fields_default()).SFString ()),
1874
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "mass", new (external_X_ITE_X3D_Fields_default()).SFFloat ()),
1875
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "centerOfMass", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
1876
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "momentsOfInertia", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0, 0, 0, 0, 0, 0, 0)),
1877
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "displacers", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1878
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "coord", new (external_X_ITE_X3D_Fields_default()).SFNode ()),
1879
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "visible", new (external_X_ITE_X3D_Fields_default()).SFBool (true)),
1880
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "bboxDisplay", new (external_X_ITE_X3D_Fields_default()).SFBool ()),
1881
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxSize", new (external_X_ITE_X3D_Fields_default()).SFVec3f (-1, -1, -1)),
1882
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxCenter", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
1883
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "addChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1884
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "removeChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1885
+ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "children", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1886
+ ]),
1887
+ enumerable: true,
1888
+ },
1889
+ });
1933
1890
 
1934
- // Create joint matrices.
1891
+ const HAnimSegment_default_ = HAnimSegment;
1935
1892
 
1936
- const
1937
- invHumanoidMatrix = renderObject .getInvHumanoidMatrix () .get (),
1938
- jointMatricesArray = this .jointMatricesArray,
1939
- size = Math .ceil (Math .sqrt (1 * 8));
1893
+ Object .assign ((external_X_ITE_X3D_X3DCoordinateNode_default()).prototype,
1894
+ {
1895
+ getHAnimKey ()
1896
+ {
1897
+ return this .humanoidKey;
1898
+ },
1899
+ set_humanoidKey__ ()
1900
+ {
1901
+ this .humanoidKey = `[${this .numJoints}.${this .numDisplacements}]`;
1902
+ },
1903
+ getNumDisplacements ()
1904
+ {
1905
+ return this .numDisplacements;
1906
+ },
1907
+ initHAnimDisplacers ()
1908
+ {
1909
+ this .addChildObjects ((external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacementsTexture", new (external_X_ITE_X3D_Fields_default()).SFTime (),
1910
+ (external_X_ITE_X3D_X3DConstants_default()).outputOnly, "displacementWeightsTexture", new (external_X_ITE_X3D_Fields_default()).SFTime ());
1940
1911
 
1941
- const jointMatrix = modelViewMatrix .assign (renderObject .getModelViewMatrix () .get ()) .multRight (invHumanoidMatrix);
1912
+ // Private properties
1942
1913
 
1943
- jointMatricesArray .set (jointMatrix, 0);
1944
- // No need for jointNormalMatrix.
1914
+ this .jointNodes = new Set (); // HAnimSegment, HAnimSite
1945
1915
 
1946
- // Upload textures.
1916
+ this .numJoints = 0;
1917
+ this .numDisplacements = 0;
1918
+ this .displacementWeights = [ ];
1947
1919
 
1948
- const
1949
- browser = this .getBrowser (),
1950
- gl = browser .getContext ();
1920
+ // Textures
1951
1921
 
1952
- gl .bindTexture (gl .TEXTURE_2D, this .jointMatricesTexture);
1953
- gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, size, size, 0, gl .RGBA, gl .FLOAT, jointMatricesArray);
1954
- };
1955
- })(),
1956
- getShaderOptions (options)
1922
+ const
1923
+ browser = this .getBrowser (),
1924
+ gl = browser .getContext ();
1925
+
1926
+ this .displacementsTexture = gl .createTexture ();
1927
+ this .displacementWeightsTexture = gl .createTexture ();
1928
+ this .jointMatricesTexture = gl .createTexture ();
1929
+
1930
+ for (const texture of [this .displacementsTexture, this .displacementWeightsTexture, this .jointMatricesTexture])
1931
+ {
1932
+ gl .bindTexture (gl .TEXTURE_2D, texture);
1933
+
1934
+ gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_S, gl .CLAMP_TO_EDGE);
1935
+ gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_T, gl .CLAMP_TO_EDGE);
1936
+ gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MAG_FILTER, gl .NEAREST);
1937
+ gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MIN_FILTER, gl .NEAREST);
1938
+ }
1939
+
1940
+ this ._displacementsTexture .addInterest ("set_displacementsTexture__", this);
1941
+ this ._displacementWeightsTexture .addInterest ("set_displacementWeightsTexture__", this);
1942
+ },
1943
+ addHAnimDisplacers (hAnimNode)
1944
+ {
1945
+ if (!this .jointNodes)
1946
+ this .initHAnimDisplacers ();
1947
+
1948
+ this .jointNodes .add (hAnimNode);
1949
+
1950
+ const size = Math .ceil (Math .sqrt (this .jointNodes .size * 8));
1951
+
1952
+ this .jointMatricesArray = new Float32Array (size * size * 4);
1953
+
1954
+ if (this .jointNodes .size === 1)
1955
+ {
1956
+ this .addInterest ("addEvent", this ._displacementsTexture);
1957
+ this .addInterest ("addEvent", this ._displacementWeightsTexture);
1958
+ }
1959
+
1960
+ this ._displacementsTexture .addEvent ();
1961
+ this ._displacementWeightsTexture .addEvent ();
1962
+ },
1963
+ removeHAnimDisplacers (hAnimNode)
1964
+ {
1965
+ this .jointNodes .delete (hAnimNode);
1966
+
1967
+ const size = Math .ceil (Math .sqrt (this .jointNodes .size * 8));
1968
+
1969
+ this .jointMatricesArray = new Float32Array (size * size * 4);
1970
+
1971
+ if (!this .jointNodes .size)
1972
+ {
1973
+ this .removeInterest ("addEvent", this ._displacementsTexture);
1974
+ this .removeInterest ("addEvent", this ._displacementWeightsTexture);
1975
+ }
1976
+
1977
+ this ._displacementsTexture .addEvent ();
1978
+ this ._displacementWeightsTexture .addEvent ();
1979
+ },
1980
+ set_displacementsTexture__ ()
1981
+ {
1982
+ // Create array.
1983
+
1984
+ const
1985
+ length = this ._point .length || 1,
1986
+ displacements = Array .from ({ length }, () => [ ]);
1987
+
1988
+ let jointIndex = 0, displacer = 0;
1989
+
1990
+ this .displacementWeights .length = 0;
1991
+
1992
+ for (const jointNode of this .jointNodes)
1993
+ {
1994
+ for (const { _weight, _coordIndex, _displacements } of jointNode .getDisplacers ())
1995
+ {
1996
+ if (!_coordIndex .length)
1997
+ continue;
1998
+
1999
+ // Store reference to weight SFFloat.
2000
+ this .displacementWeights .push (_weight, 0, 0, 0);
2001
+
2002
+ for (const [i, index] of _coordIndex .entries ())
2003
+ displacements [index] ?.push (... _displacements [i], jointIndex, displacer, 0, 0, 0);
2004
+
2005
+ ++ displacer;
2006
+ }
2007
+
2008
+ ++ jointIndex;
2009
+ }
2010
+
2011
+ const
2012
+ numDisplacements = displacements .reduce ((p, n) => Math .max (p, n .length), 0) / 8,
2013
+ numElements = numDisplacements * 8,
2014
+ size = Math .ceil (Math .sqrt (length * numDisplacements * 2)) || 1,
2015
+ displacementsArray = new Float32Array (size * size * 4);
2016
+
2017
+ for (let i = 0; i < length; ++ i)
2018
+ displacementsArray .set (displacements [i], i * numElements);
2019
+
2020
+ // Number of displacements per coord index.
2021
+ this .numDisplacements = numDisplacements;
2022
+
2023
+ // Upload texture.
2024
+
2025
+ const
2026
+ browser = this .getBrowser (),
2027
+ gl = browser .getContext ();
2028
+
2029
+ gl .bindTexture (gl .TEXTURE_2D, this .displacementsTexture);
2030
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, size, size, 0, gl .RGBA, gl .FLOAT, displacementsArray);
2031
+
2032
+ // Weights
2033
+
2034
+ this .displacementWeightsSize = Math .ceil (Math .sqrt (displacer));
2035
+ this .displacementWeightsArray = new Float32Array (this .displacementWeightsSize * this .displacementWeightsSize * 4);
2036
+
2037
+ // Trigger update.
2038
+
2039
+ this .set_humanoidKey__ ();
2040
+ },
2041
+ set_displacementWeightsTexture__ ()
2042
+ {
2043
+ // Upload texture.
2044
+
2045
+ const
2046
+ gl = this .getBrowser () .getContext (),
2047
+ size = this .displacementWeightsSize,
2048
+ array = this .displacementWeightsArray;
2049
+
2050
+ array .set (this .displacementWeights);
2051
+
2052
+ gl .bindTexture (gl .TEXTURE_2D, this .displacementWeightsTexture);
2053
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, size, size, 0, gl .RGBA, gl .FLOAT, array);
2054
+ },
2055
+ getHAnimShaderOptions (options)
1957
2056
  {
1958
2057
  options .push ("X3D_SKINNING");
1959
2058
  options .push (`X3D_NUM_JOINT_SETS ${this .numJoints / 4}`);
1960
2059
  options .push (`X3D_NUM_DISPLACEMENTS ${this .numDisplacements}`);
1961
2060
  },
1962
- setShaderUniforms (gl, shaderObject)
2061
+ setHAnimShaderUniforms (gl, shaderObject)
1963
2062
  {
1964
2063
  const
1965
2064
  browser = this .getBrowser (),
@@ -1971,6 +2070,8 @@ Object .assign (Object .setPrototypeOf (HAnimSegment .prototype, (external_X_ITE
1971
2070
  gl .bindTexture (gl .TEXTURE_2D, this .jointMatricesTexture);
1972
2071
  gl .uniform1i (shaderObject .x3d_JointMatricesTexture, jointMatricesTextureUnit);
1973
2072
 
2073
+ this .skinning ();
2074
+
1974
2075
  gl .activeTexture (gl .TEXTURE0 + displacementsTextureTextureUnit);
1975
2076
  gl .bindTexture (gl .TEXTURE_2D, this .displacementsTexture);
1976
2077
  gl .uniform1i (shaderObject .x3d_DisplacementsTexture, displacementsTextureTextureUnit);
@@ -1979,35 +2080,42 @@ Object .assign (Object .setPrototypeOf (HAnimSegment .prototype, (external_X_ITE
1979
2080
  gl .bindTexture (gl .TEXTURE_2D, this .displacementWeightsTexture);
1980
2081
  gl .uniform1i (shaderObject .x3d_DisplacementWeightsTexture, displacementWeightsTextureTextureUnit);
1981
2082
  },
1982
- });
2083
+ skinning ()
2084
+ {
2085
+ if (!this .updateSkinTexture)
2086
+ return;
1983
2087
 
1984
- Object .defineProperties (HAnimSegment,
1985
- {
1986
- ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("HAnimSegment", "HAnim", 1, "children", "3.0"),
1987
- fieldDefinitions:
2088
+ this .updateSkinTexture = false;
2089
+
2090
+ // Create joint matrices.
2091
+
2092
+ const
2093
+ jointMatricesArray = this .jointMatricesArray,
2094
+ size = Math .ceil (Math .sqrt (this .jointNodes .size * 8));
2095
+
2096
+ let i = 0;
2097
+
2098
+ for (const jointNode of this .jointNodes)
2099
+ {
2100
+ jointMatricesArray .set (jointNode .getJointMatrix (), i * 32);
2101
+ // No need for jointNormalMatrix.
2102
+ ++ i;
2103
+ }
2104
+
2105
+ // Upload textures.
2106
+
2107
+ const
2108
+ browser = this .getBrowser (),
2109
+ gl = browser .getContext ();
2110
+
2111
+ gl .bindTexture (gl .TEXTURE_2D, this .jointMatricesTexture);
2112
+ gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA32F, size, size, 0, gl .RGBA, gl .FLOAT, jointMatricesArray);
2113
+ },
2114
+ updateSkin ()
1988
2115
  {
1989
- value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([
1990
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()),
1991
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()),
1992
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "name", new (external_X_ITE_X3D_Fields_default()).SFString ()),
1993
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "mass", new (external_X_ITE_X3D_Fields_default()).SFFloat ()),
1994
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "centerOfMass", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
1995
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "momentsOfInertia", new (external_X_ITE_X3D_Fields_default()).MFFloat (0, 0, 0, 0, 0, 0, 0, 0, 0)),
1996
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "displacers", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
1997
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "coord", new (external_X_ITE_X3D_Fields_default()).SFNode ()),
1998
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "visible", new (external_X_ITE_X3D_Fields_default()).SFBool (true)),
1999
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "bboxDisplay", new (external_X_ITE_X3D_Fields_default()).SFBool ()),
2000
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxSize", new (external_X_ITE_X3D_Fields_default()).SFVec3f (-1, -1, -1)),
2001
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "bboxCenter", new (external_X_ITE_X3D_Fields_default()).SFVec3f ()),
2002
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "addChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
2003
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOnly, "removeChildren", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
2004
- new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "children", new (external_X_ITE_X3D_Fields_default()).MFNode ()),
2005
- ]),
2006
- enumerable: true,
2116
+ this .updateSkinTexture = true;
2007
2117
  },
2008
2118
  });
2009
-
2010
- const HAnimSegment_default_ = HAnimSegment;
2011
2119
  ;
2012
2120
 
2013
2121
  /* harmony default export */ const HAnim_HAnimSegment = (external_X_ITE_X3D_Namespace_default().add ("HAnimSegment", HAnimSegment_default_));
@@ -2019,14 +2127,173 @@ const HAnimSegment_default_ = HAnimSegment;
2019
2127
 
2020
2128
 
2021
2129
 
2130
+
2131
+
2132
+
2133
+ const HAnimSite_hAnimNodes = Symbol .for ("X_ITE.HAnim.hAnimNodes");
2134
+
2022
2135
  function HAnimSite (executionContext)
2023
2136
  {
2024
2137
  external_X_ITE_X3D_X3DTransformNode_default().call (this, executionContext);
2025
2138
 
2026
2139
  this .addType ((external_X_ITE_X3D_X3DConstants_default()).HAnimSite);
2140
+
2141
+ // Private properties
2142
+
2143
+ this .displacerNodes = [ ];
2144
+ this .jointMatrix = new (external_X_ITE_X3D_Matrix4_default()) ();
2027
2145
  }
2028
2146
 
2029
- Object .setPrototypeOf (HAnimSite .prototype, (external_X_ITE_X3D_X3DTransformNode_default()).prototype);
2147
+ Object .assign (Object .setPrototypeOf (HAnimSite .prototype, (external_X_ITE_X3D_X3DTransformNode_default()).prototype),
2148
+ {
2149
+ initialize ()
2150
+ {
2151
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .initialize .call (this);
2152
+
2153
+ // Events
2154
+
2155
+ this ._displacers .addInterest ("set_displacers__", this);
2156
+ this ._coord .addInterest ("set_coord__", this);
2157
+
2158
+ this .set_displacers__ ();
2159
+ this .set_coord__ ();
2160
+ },
2161
+ getHAnimKey ()
2162
+ {
2163
+ return this .coordNode .getHAnimKey ();
2164
+ },
2165
+ getDisplacers ()
2166
+ {
2167
+ return this .displacerNodes;
2168
+ },
2169
+ getJointMatrix ()
2170
+ {
2171
+ return this .jointMatrix;
2172
+ },
2173
+ set_displacers__ ()
2174
+ {
2175
+ const displacerNodes = this .displacerNodes;
2176
+
2177
+ for (const displacerNode of displacerNodes)
2178
+ {
2179
+ displacerNode ._coordIndex .removeInterest ("set_displacementsTexture__", this);
2180
+ displacerNode ._displacements .removeInterest ("set_displacementsTexture__", this);
2181
+ displacerNode ._coordIndex .removeInterest ("set_displacementWeightsTexture__", this);
2182
+ displacerNode ._weight .removeInterest ("set_displacementWeightsTexture__", this);
2183
+ }
2184
+
2185
+ displacerNodes .length = 0;
2186
+
2187
+ for (const node of this ._displacers)
2188
+ {
2189
+ const displacerNode = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).HAnimDisplacer, node);
2190
+
2191
+ if (displacerNode)
2192
+ displacerNodes .push (displacerNode);
2193
+ }
2194
+
2195
+ for (const displacerNode of displacerNodes)
2196
+ {
2197
+ displacerNode ._coordIndex .addInterest ("set_displacementsTexture__", this);
2198
+ displacerNode ._displacements .addInterest ("set_displacementsTexture__", this);
2199
+ displacerNode ._coordIndex .addInterest ("set_displacementWeightsTexture__", this);
2200
+ displacerNode ._weight .addInterest ("set_displacementWeightsTexture__", this);
2201
+ }
2202
+
2203
+ this .set_displacementsTexture__ ();
2204
+ this .set_displacementWeightsTexture__ ();
2205
+ },
2206
+ set_displacementsTexture__ ()
2207
+ {
2208
+ this .coordNode ?._displacementsTexture .addEvent ();
2209
+ },
2210
+ set_displacementWeightsTexture__ ()
2211
+ {
2212
+ this .coordNode ?._displacementWeightsTexture .addEvent ();
2213
+ },
2214
+ set_coord__ ()
2215
+ {
2216
+ this .coordNode ?.removeHAnimDisplacers (this);
2217
+
2218
+ this .coordNode = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).Coordinate, this ._coord)
2219
+ ?? external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).CoordinateDouble, this ._coord);
2220
+
2221
+ this .coordNode ?.addHAnimDisplacers (this);
2222
+
2223
+ this .set_displacementsTexture__ ();
2224
+ this .set_displacementWeightsTexture__ ();
2225
+ },
2226
+ traverse (type, renderObject)
2227
+ {
2228
+ if (this .coordNode ?.numDisplacements)
2229
+ {
2230
+ const modelViewMatrix = renderObject .getModelViewMatrix ();
2231
+
2232
+ modelViewMatrix .push ();
2233
+ modelViewMatrix .multLeft (this .getMatrix ());
2234
+
2235
+ if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
2236
+ {
2237
+ const invHumanoidMatrix = renderObject .getInvHumanoidMatrix () .get ();
2238
+
2239
+ this .jointMatrix
2240
+ .assign (modelViewMatrix .get ())
2241
+ .multRight (invHumanoidMatrix);
2242
+
2243
+ this .coordNode .updateSkin ();
2244
+ }
2245
+
2246
+ const hAnimNodes = this .coordNode [HAnimSite_hAnimNodes] ??= [ ];
2247
+
2248
+ hAnimNodes .push (this);
2249
+
2250
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
2251
+
2252
+ hAnimNodes .pop ();
2253
+ modelViewMatrix .pop ();
2254
+ }
2255
+ else
2256
+ {
2257
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .traverse .call (this, type, renderObject);
2258
+ }
2259
+ },
2260
+ groupTraverse (type, renderObject)
2261
+ {
2262
+ if (this .coordNode ?.getNumDisplacements ())
2263
+ {
2264
+ if (type === (external_X_ITE_X3D_TraverseType_default()).DISPLAY)
2265
+ {
2266
+ const invHumanoidMatrix = renderObject .getInvHumanoidMatrix () .get ();
2267
+
2268
+ this .jointMatrix
2269
+ .assign (renderObject .getModelViewMatrix () .get ())
2270
+ .multRight (invHumanoidMatrix);
2271
+
2272
+ this .coordNode .updateSkin ();
2273
+ }
2274
+
2275
+ const hAnimNodes = this .coordNode [HAnimSite_hAnimNodes] ??= [ ];
2276
+
2277
+ hAnimNodes .push (this);
2278
+
2279
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
2280
+
2281
+ hAnimNodes .pop ();
2282
+ }
2283
+ else
2284
+ {
2285
+ external_X_ITE_X3D_X3DTransformNode_default().prototype .groupTraverse .call (this, type, renderObject);
2286
+ }
2287
+ },
2288
+ getShaderOptions (options)
2289
+ {
2290
+ this .coordNode .getHAnimShaderOptions (options);
2291
+ },
2292
+ setShaderUniforms (gl, shaderObject)
2293
+ {
2294
+ this .coordNode .setHAnimShaderUniforms (gl, shaderObject);
2295
+ },
2296
+ });
2030
2297
 
2031
2298
  Object .defineProperties (HAnimSite,
2032
2299
  {