x_ite 5.0.0 → 5.0.2
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.
- package/dist/assets/components/annotation.js +2 -2
- package/dist/assets/components/annotation.min.js +1 -1
- package/dist/assets/components/cad-geometry.js +2 -2
- package/dist/assets/components/cad-geometry.min.js +1 -1
- package/dist/assets/components/cube-map-texturing.js +2 -2
- package/dist/assets/components/cube-map-texturing.min.js +1 -1
- package/dist/assets/components/dis.js +2 -2
- package/dist/assets/components/dis.min.js +1 -1
- package/dist/assets/components/event-utilities.js +2 -2
- package/dist/assets/components/event-utilities.min.js +1 -1
- package/dist/assets/components/geometry2d.js +2 -2
- package/dist/assets/components/geometry2d.min.js +1 -1
- package/dist/assets/components/geospatial.js +2 -2
- package/dist/assets/components/geospatial.min.js +1 -1
- package/dist/assets/components/h-anim.js +2 -2
- package/dist/assets/components/h-anim.min.js +1 -1
- package/dist/assets/components/key-device-sensor.js +2 -2
- package/dist/assets/components/key-device-sensor.min.js +1 -1
- package/dist/assets/components/layout.js +2 -2
- package/dist/assets/components/layout.min.js +1 -1
- package/dist/assets/components/nurbs.js +2 -2
- package/dist/assets/components/nurbs.min.js +1 -1
- package/dist/assets/components/particle-systems.js +2 -2
- package/dist/assets/components/particle-systems.min.js +1 -1
- package/dist/assets/components/picking.js +2 -2
- package/dist/assets/components/picking.min.js +1 -1
- package/dist/assets/components/projective-texture-mapping.js +2 -2
- package/dist/assets/components/projective-texture-mapping.min.js +1 -1
- package/dist/assets/components/rigid-body-physics.js +2 -2
- package/dist/assets/components/rigid-body-physics.min.js +1 -1
- package/dist/assets/components/scripting.js +2 -2
- package/dist/assets/components/scripting.min.js +1 -1
- package/dist/assets/components/texturing-3d.js +2 -2
- package/dist/assets/components/texturing-3d.min.js +1 -1
- package/dist/assets/components/volume-rendering.js +2 -2
- package/dist/assets/components/volume-rendering.min.js +1 -1
- package/dist/assets/components/x_ite.js +2 -2
- package/dist/assets/components/x_ite.min.js +1 -1
- package/dist/assets/shaders/webgl1/Phong.fs +3 -3
- package/dist/assets/shaders/webgl2/Phong.fs +3 -3
- package/dist/example.html +2 -2
- package/dist/x_ite.css +2 -2
- package/dist/x_ite.js +14 -45
- package/dist/x_ite.min.js +4 -4
- package/dist/x_ite.zip +0 -0
- package/docs/_config.yml +1 -1
- package/docs/index.md +2 -2
- package/package.json +3 -3
- package/src/assets/shaders/webgl1/Phong.fs +3 -3
- package/src/assets/shaders/webgl2/Phong.fs +3 -3
- package/src/x_ite/Base/X3DBaseNode.js +8 -2
- package/src/x_ite/Browser/NURBS/NURBS.js +51 -51
- package/src/x_ite/Browser/VERSION.js +1 -1
- package/src/x_ite/Components/Grouping/X3DGroupingNode.js +17 -16
- package/src/x_ite/Components/NURBS/Contour2D.js +53 -14
- package/src/x_ite/Components/NURBS/ContourPolyline2D.js +15 -12
- package/src/x_ite/Components/NURBS/NurbsCurve2D.js +9 -9
- package/src/x_ite/Components/NURBS/NurbsOrientationInterpolator.js +9 -9
- package/src/x_ite/Components/NURBS/NurbsPositionInterpolator.js +6 -6
- package/src/x_ite/Components/NURBS/NurbsSet.js +31 -27
- package/src/x_ite/Components/NURBS/NurbsSurfaceInterpolator.js +10 -10
- package/src/x_ite/Components/NURBS/NurbsSweptSurface.js +5 -5
- package/src/x_ite/Components/NURBS/NurbsSwungSurface.js +4 -4
- package/src/x_ite/Components/NURBS/NurbsTextureCoordinate.js +6 -6
- package/src/x_ite/Components/NURBS/NurbsTrimmedSurface.js +46 -7
- package/src/x_ite/Components/NURBS/X3DNurbsSurfaceGeometryNode.js +30 -32
- package/src/x_ite/Components/Shape/Material.js +0 -20
- package/src/x_ite/Components/Shape/PhysicalMaterial.js +0 -12
- package/src/x_ite/Components/Shape/X3DOneSidedMaterialNode.js +0 -8
package/dist/x_ite.zip
CHANGED
|
Binary file
|
package/docs/_config.yml
CHANGED
package/docs/index.md
CHANGED
|
@@ -838,8 +838,8 @@ If you are a developer or you always wanna be up to date:
|
|
|
838
838
|
If you are on production and everything works fine, then use a numbered version.
|
|
839
839
|
|
|
840
840
|
```html
|
|
841
|
-
<link rel="stylesheet" type="text/css" href="https://create3000.github.io/code/x_ite/5.0.
|
|
842
|
-
<script type="text/javascript" src="https://create3000.github.io/code/x_ite/5.0.
|
|
841
|
+
<link rel="stylesheet" type="text/css" href="https://create3000.github.io/code/x_ite/5.0.2/dist/x_ite.css"/>
|
|
842
|
+
<script type="text/javascript" src="https://create3000.github.io/code/x_ite/5.0.2/dist/x_ite.min.js"></script>
|
|
843
843
|
```
|
|
844
844
|
|
|
845
845
|
### jsDelivr CDN
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "x_ite",
|
|
3
|
-
"version": "5.0.
|
|
4
|
-
"revision": "
|
|
3
|
+
"version": "5.0.2",
|
|
4
|
+
"revision": "1147",
|
|
5
5
|
"description": "X_ITE X3D Browser, a framework for integrating and manipulating X3D and VRML scenes in HTML.",
|
|
6
6
|
"main": "dist/x_ite.js",
|
|
7
7
|
"repository": {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"OpenJPEG.js": "^0.10.2",
|
|
64
64
|
"opentype.js": "^1.3.4",
|
|
65
65
|
"pako": "^2.0.4",
|
|
66
|
-
"require": "2.4.20",
|
|
66
|
+
"require": "^2.4.20",
|
|
67
67
|
"requirejs": "^2.3.6",
|
|
68
68
|
"requirejs-text": "^2.0.16",
|
|
69
69
|
"terser": "^5.12.1"
|
|
@@ -53,11 +53,11 @@ uniform x3d_OcclusionTextureParameters x3d_OcclusionTexture;
|
|
|
53
53
|
#endif
|
|
54
54
|
|
|
55
55
|
vec3
|
|
56
|
-
getAmbientColor ()
|
|
56
|
+
getAmbientColor (in vec3 diffuseColor)
|
|
57
57
|
{
|
|
58
58
|
// Get ambient parameter.
|
|
59
59
|
|
|
60
|
-
vec3 ambientParameter = x3d_Material .ambientIntensity *
|
|
60
|
+
vec3 ambientParameter = x3d_Material .ambientIntensity * diffuseColor;
|
|
61
61
|
|
|
62
62
|
// Get texture color.
|
|
63
63
|
|
|
@@ -192,7 +192,7 @@ getMaterialColor ()
|
|
|
192
192
|
vec4 diffuseColorAlpha = getDiffuseColor ();
|
|
193
193
|
float alpha = diffuseColorAlpha .a;
|
|
194
194
|
vec3 diffuseColor = diffuseColorAlpha .rgb;
|
|
195
|
-
vec3 ambientColor = getAmbientColor ();
|
|
195
|
+
vec3 ambientColor = getAmbientColor (diffuseColor);
|
|
196
196
|
vec3 specularColor = getSpecularColor ();
|
|
197
197
|
float shininessFactor = getShininessFactor ();
|
|
198
198
|
|
|
@@ -51,11 +51,11 @@ uniform x3d_OcclusionTextureParameters x3d_OcclusionTexture;
|
|
|
51
51
|
#endif
|
|
52
52
|
|
|
53
53
|
vec3
|
|
54
|
-
getAmbientColor ()
|
|
54
|
+
getAmbientColor (in vec3 diffuseColor)
|
|
55
55
|
{
|
|
56
56
|
// Get ambient parameter.
|
|
57
57
|
|
|
58
|
-
vec3 ambientParameter = x3d_Material .ambientIntensity *
|
|
58
|
+
vec3 ambientParameter = x3d_Material .ambientIntensity * diffuseColor;
|
|
59
59
|
|
|
60
60
|
// Get texture color.
|
|
61
61
|
|
|
@@ -202,7 +202,7 @@ getMaterialColor ()
|
|
|
202
202
|
vec4 diffuseColorAlpha = getDiffuseColor ();
|
|
203
203
|
float alpha = diffuseColorAlpha .a;
|
|
204
204
|
vec3 diffuseColor = diffuseColorAlpha .rgb;
|
|
205
|
-
vec3 ambientColor = getAmbientColor ();
|
|
205
|
+
vec3 ambientColor = getAmbientColor (diffuseColor);
|
|
206
206
|
vec3 specularColor = getSpecularColor ();
|
|
207
207
|
float shininessFactor = getShininessFactor ();
|
|
208
208
|
|
|
@@ -188,7 +188,10 @@ function (X3DEventObject,
|
|
|
188
188
|
|
|
189
189
|
// Connect to execution context.
|
|
190
190
|
|
|
191
|
-
if (this
|
|
191
|
+
if (this .getOuterNode && this .getOuterNode ())
|
|
192
|
+
this .getOuterNode () .isLive () .addInterest (_set_live__, this);
|
|
193
|
+
|
|
194
|
+
else if (this [_executionContext] !== this)
|
|
192
195
|
this [_executionContext] .isLive () .addInterest (_set_live__, this);
|
|
193
196
|
|
|
194
197
|
// Return field
|
|
@@ -215,7 +218,10 @@ function (X3DEventObject,
|
|
|
215
218
|
{
|
|
216
219
|
/// Determines the live state of this node.
|
|
217
220
|
|
|
218
|
-
if (this
|
|
221
|
+
if (this .getOuterNode && this .getOuterNode ())
|
|
222
|
+
return this .getLive () && this .getOuterNode () .isLive () .getValue ();
|
|
223
|
+
|
|
224
|
+
else if (this !== this [_executionContext])
|
|
219
225
|
return this .getLive () && this [_executionContext] .isLive () .getValue ();
|
|
220
226
|
|
|
221
227
|
return this .getLive ();
|
|
@@ -58,7 +58,7 @@ function (Vector2,
|
|
|
58
58
|
{
|
|
59
59
|
"use strict";
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
const NURBS = {
|
|
62
62
|
getTessellation: function (tessellation, dimension)
|
|
63
63
|
{
|
|
64
64
|
if (tessellation > 0)
|
|
@@ -71,7 +71,7 @@ function (Vector2,
|
|
|
71
71
|
},
|
|
72
72
|
getClosed2D: function (order, knot, weight, controlPoint)
|
|
73
73
|
{
|
|
74
|
-
|
|
74
|
+
const
|
|
75
75
|
dimension = controlPoint .length,
|
|
76
76
|
haveWeights = weight .length === dimension;
|
|
77
77
|
|
|
@@ -97,13 +97,13 @@ function (Vector2,
|
|
|
97
97
|
},
|
|
98
98
|
getClosed: (function ()
|
|
99
99
|
{
|
|
100
|
-
|
|
100
|
+
const
|
|
101
101
|
firstPoint = new Vector3 (0, 0, 0),
|
|
102
102
|
lastPoint = new Vector3 (0, 0, 0);
|
|
103
103
|
|
|
104
104
|
return function (order, knot, weight, controlPointNode)
|
|
105
105
|
{
|
|
106
|
-
|
|
106
|
+
const
|
|
107
107
|
dimension = controlPointNode .getSize (),
|
|
108
108
|
haveWeights = weight .length === dimension;
|
|
109
109
|
|
|
@@ -130,17 +130,17 @@ function (Vector2,
|
|
|
130
130
|
})(),
|
|
131
131
|
getUClosed: (function ()
|
|
132
132
|
{
|
|
133
|
-
|
|
133
|
+
const
|
|
134
134
|
firstPoint = new Vector3 (0, 0, 0),
|
|
135
135
|
lastPoint = new Vector3 (0, 0, 0);
|
|
136
136
|
|
|
137
137
|
return function (uOrder, uDimension, vDimension, uKnot, weight, controlPointNode)
|
|
138
138
|
{
|
|
139
|
-
|
|
139
|
+
const haveWeights = weight .length === controlPointNode .getSize ();
|
|
140
140
|
|
|
141
|
-
for (
|
|
141
|
+
for (let v = 0, length = vDimension; v < length; ++ v)
|
|
142
142
|
{
|
|
143
|
-
|
|
143
|
+
const
|
|
144
144
|
first = v * uDimension,
|
|
145
145
|
last = v * uDimension + uDimension - 1;
|
|
146
146
|
|
|
@@ -168,17 +168,17 @@ function (Vector2,
|
|
|
168
168
|
})(),
|
|
169
169
|
getVClosed: (function ()
|
|
170
170
|
{
|
|
171
|
-
|
|
171
|
+
const
|
|
172
172
|
firstPoint = new Vector3 (0, 0, 0),
|
|
173
173
|
lastPoint = new Vector3 (0, 0, 0);
|
|
174
174
|
|
|
175
175
|
return function (vOrder, uDimension, vDimension, vKnot, weight, controlPointNode)
|
|
176
176
|
{
|
|
177
|
-
|
|
177
|
+
const haveWeights = weight .length === controlPointNode .getSize ();
|
|
178
178
|
|
|
179
|
-
for (
|
|
179
|
+
for (let u = 0, size = uDimension; u < size; ++ u)
|
|
180
180
|
{
|
|
181
|
-
|
|
181
|
+
const
|
|
182
182
|
first = u,
|
|
183
183
|
last = (vDimension - 1) * uDimension + u;
|
|
184
184
|
|
|
@@ -211,9 +211,9 @@ function (Vector2,
|
|
|
211
211
|
if (knot .length === dimension + order)
|
|
212
212
|
{
|
|
213
213
|
{
|
|
214
|
-
|
|
214
|
+
let count = 1;
|
|
215
215
|
|
|
216
|
-
for (
|
|
216
|
+
for (let i = 1, size = order; i < size; ++ i)
|
|
217
217
|
{
|
|
218
218
|
count += knot [i] === knot [0];
|
|
219
219
|
}
|
|
@@ -223,9 +223,9 @@ function (Vector2,
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
{
|
|
226
|
-
|
|
226
|
+
let count = 1;
|
|
227
227
|
|
|
228
|
-
for (
|
|
228
|
+
for (let i = knot .length - order, size = knot .length - 1; i < size; ++ i)
|
|
229
229
|
{
|
|
230
230
|
count += knot [i] === knot [size];
|
|
231
231
|
}
|
|
@@ -239,9 +239,9 @@ function (Vector2,
|
|
|
239
239
|
},
|
|
240
240
|
getKnots: function (result, closed, order, dimension, knot)
|
|
241
241
|
{
|
|
242
|
-
|
|
242
|
+
const knots = result || [ ];
|
|
243
243
|
|
|
244
|
-
for (
|
|
244
|
+
for (let i = 0, length = knot .length; i < length; ++ i)
|
|
245
245
|
knots [i] = knot [i];
|
|
246
246
|
|
|
247
247
|
knots .length = knot .length;
|
|
@@ -249,15 +249,15 @@ function (Vector2,
|
|
|
249
249
|
// check the knot-vectors. If they are not according to standard
|
|
250
250
|
// default uniform knot vectors will be generated.
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
let generateUniform = true;
|
|
253
253
|
|
|
254
254
|
if (knots .length === dimension + order)
|
|
255
255
|
{
|
|
256
256
|
generateUniform = false;
|
|
257
257
|
|
|
258
|
-
|
|
258
|
+
let consecutiveKnots = 0;
|
|
259
259
|
|
|
260
|
-
for (
|
|
260
|
+
for (let i = 1, length = knots .length; i < length; ++ i)
|
|
261
261
|
{
|
|
262
262
|
if (knots [i] == knots [i - 1])
|
|
263
263
|
++ consecutiveKnots;
|
|
@@ -274,13 +274,13 @@ function (Vector2,
|
|
|
274
274
|
|
|
275
275
|
if (generateUniform)
|
|
276
276
|
{
|
|
277
|
-
for (
|
|
277
|
+
for (let i = 0, length = dimension + order; i < length; ++ i)
|
|
278
278
|
knots [i] = i / (length - 1);
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
if (closed)
|
|
282
282
|
{
|
|
283
|
-
for (
|
|
283
|
+
for (let i = 1, length = order - 1; i < length; ++ i)
|
|
284
284
|
knots .push (knots .at (-1) + (knots [i] - knots [i - 1]));
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -291,9 +291,9 @@ function (Vector2,
|
|
|
291
291
|
if (weight .length !== dimension)
|
|
292
292
|
return undefined;
|
|
293
293
|
|
|
294
|
-
|
|
294
|
+
const weights = result || [ ];
|
|
295
295
|
|
|
296
|
-
for (
|
|
296
|
+
for (let i = 0; i < dimension; ++ i)
|
|
297
297
|
{
|
|
298
298
|
weights [i] = weight [i];
|
|
299
299
|
}
|
|
@@ -304,16 +304,16 @@ function (Vector2,
|
|
|
304
304
|
},
|
|
305
305
|
getUVWeights: function (result, uDimension, vDimension, weight)
|
|
306
306
|
{
|
|
307
|
-
|
|
307
|
+
const dimension = uDimension * vDimension;
|
|
308
308
|
|
|
309
309
|
if (weight .length !== dimension)
|
|
310
310
|
return undefined;
|
|
311
311
|
|
|
312
|
-
|
|
312
|
+
const weights = result || [ ];
|
|
313
313
|
|
|
314
|
-
for (
|
|
314
|
+
for (let u = 0, i = 0; u < uDimension; ++ u)
|
|
315
315
|
{
|
|
316
|
-
for (
|
|
316
|
+
for (let v = 0; v < vDimension; ++ v, ++ i)
|
|
317
317
|
{
|
|
318
318
|
weights [i] = weight [i];
|
|
319
319
|
}
|
|
@@ -325,7 +325,7 @@ function (Vector2,
|
|
|
325
325
|
},
|
|
326
326
|
getControlPoints2D: function (result, closed, order, weights, controlPoint)
|
|
327
327
|
{
|
|
328
|
-
|
|
328
|
+
const
|
|
329
329
|
controlPoints = result || [ ],
|
|
330
330
|
controlPointArray = controlPoint .getValue (),
|
|
331
331
|
dimension = controlPoint .length,
|
|
@@ -338,9 +338,9 @@ function (Vector2,
|
|
|
338
338
|
controlPoints .length = 0;
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
-
for (
|
|
341
|
+
for (let i = 0; i < dimension; ++ i)
|
|
342
342
|
{
|
|
343
|
-
|
|
343
|
+
const
|
|
344
344
|
i2 = i * 2,
|
|
345
345
|
p = controlPoints [i] || new Vector (0, 0, 0);
|
|
346
346
|
|
|
@@ -351,7 +351,7 @@ function (Vector2,
|
|
|
351
351
|
|
|
352
352
|
if (closed)
|
|
353
353
|
{
|
|
354
|
-
for (
|
|
354
|
+
for (let i = 1, size = order - 1; i < size; ++ i)
|
|
355
355
|
controlPoints .push (controlPoints [i]);
|
|
356
356
|
}
|
|
357
357
|
|
|
@@ -359,7 +359,7 @@ function (Vector2,
|
|
|
359
359
|
},
|
|
360
360
|
getControlPoints: function (result, closed, order, weights, controlPointNode)
|
|
361
361
|
{
|
|
362
|
-
|
|
362
|
+
const
|
|
363
363
|
controlPoints = result || [ ],
|
|
364
364
|
dimension = controlPointNode .getSize (),
|
|
365
365
|
haveWeights = Boolean (weights),
|
|
@@ -371,9 +371,9 @@ function (Vector2,
|
|
|
371
371
|
controlPoints .length = 0;
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
for (
|
|
374
|
+
for (let i = 0; i < dimension; ++ i)
|
|
375
375
|
{
|
|
376
|
-
|
|
376
|
+
const cp = controlPoints [i] = controlPointNode .get1Point (i, controlPoints [i] || new Vector (0, 0, 0, 0));
|
|
377
377
|
|
|
378
378
|
if (haveWeights)
|
|
379
379
|
cp .w = weights [i];
|
|
@@ -383,7 +383,7 @@ function (Vector2,
|
|
|
383
383
|
|
|
384
384
|
if (closed)
|
|
385
385
|
{
|
|
386
|
-
for (
|
|
386
|
+
for (let i = 1, size = order - 1; i < size; ++ i)
|
|
387
387
|
controlPoints .push (controlPoints [i]);
|
|
388
388
|
}
|
|
389
389
|
|
|
@@ -391,7 +391,7 @@ function (Vector2,
|
|
|
391
391
|
},
|
|
392
392
|
getUVControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, weights, controlPointNode)
|
|
393
393
|
{
|
|
394
|
-
|
|
394
|
+
const
|
|
395
395
|
controlPoints = result || [ ],
|
|
396
396
|
haveWeights = Boolean (weights),
|
|
397
397
|
Vector = haveWeights ? Vector4 : Vector3;
|
|
@@ -402,16 +402,16 @@ function (Vector2,
|
|
|
402
402
|
controlPoints .length = 0;
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
for (
|
|
405
|
+
for (let u = 0; u < uDimension; ++ u)
|
|
406
406
|
{
|
|
407
|
-
|
|
407
|
+
let cp = controlPoints [u];
|
|
408
408
|
|
|
409
409
|
if (! cp)
|
|
410
410
|
cp = controlPoints [u] = [ ];
|
|
411
411
|
|
|
412
|
-
for (
|
|
412
|
+
for (let v = 0; v < vDimension; ++ v)
|
|
413
413
|
{
|
|
414
|
-
|
|
414
|
+
const index = v * uDimension + u;
|
|
415
415
|
|
|
416
416
|
cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector (0, 0, 0, 0));
|
|
417
417
|
|
|
@@ -423,7 +423,7 @@ function (Vector2,
|
|
|
423
423
|
|
|
424
424
|
if (vClosed)
|
|
425
425
|
{
|
|
426
|
-
for (
|
|
426
|
+
for (let i = 1, length = vOrder - 1; i < length; ++ i)
|
|
427
427
|
cp .push (cp [i]);
|
|
428
428
|
}
|
|
429
429
|
}
|
|
@@ -432,7 +432,7 @@ function (Vector2,
|
|
|
432
432
|
|
|
433
433
|
if (uClosed)
|
|
434
434
|
{
|
|
435
|
-
for (
|
|
435
|
+
for (let i = 1, length = uOrder - 1; i < length; ++ i)
|
|
436
436
|
controlPoints .push (controlPoints [i]);
|
|
437
437
|
}
|
|
438
438
|
|
|
@@ -440,18 +440,18 @@ function (Vector2,
|
|
|
440
440
|
},
|
|
441
441
|
getTexControlPoints: function (result, uClosed, vClosed, uOrder, vOrder, uDimension, vDimension, controlPointNode)
|
|
442
442
|
{
|
|
443
|
-
|
|
443
|
+
const controlPoints = result || [ ];
|
|
444
444
|
|
|
445
|
-
for (
|
|
445
|
+
for (let u = 0; u < uDimension; ++ u)
|
|
446
446
|
{
|
|
447
|
-
|
|
447
|
+
let cp = controlPoints [u];
|
|
448
448
|
|
|
449
449
|
if (! cp)
|
|
450
450
|
cp = controlPoints [u] = [ ];
|
|
451
451
|
|
|
452
|
-
for (
|
|
452
|
+
for (let v = 0; v < vDimension; ++ v)
|
|
453
453
|
{
|
|
454
|
-
|
|
454
|
+
const index = v * uDimension + u;
|
|
455
455
|
|
|
456
456
|
cp [v] = controlPointNode .get1Point (index, cp [v] || new Vector4 (0, 0, 0, 0));
|
|
457
457
|
}
|
|
@@ -460,7 +460,7 @@ function (Vector2,
|
|
|
460
460
|
|
|
461
461
|
if (vClosed)
|
|
462
462
|
{
|
|
463
|
-
for (
|
|
463
|
+
for (let i = 1, length = vOrder - 1; i < length; ++ i)
|
|
464
464
|
cp .push (cp [i]);
|
|
465
465
|
}
|
|
466
466
|
}
|
|
@@ -469,7 +469,7 @@ function (Vector2,
|
|
|
469
469
|
|
|
470
470
|
if (uClosed)
|
|
471
471
|
{
|
|
472
|
-
for (
|
|
472
|
+
for (let i = 1, length = uOrder - 1; i < length; ++ i)
|
|
473
473
|
controlPoints .push (controlPoints [i]);
|
|
474
474
|
}
|
|
475
475
|
|
|
@@ -62,20 +62,6 @@ function (X3DChildNode,
|
|
|
62
62
|
{
|
|
63
63
|
"use strict";
|
|
64
64
|
|
|
65
|
-
function getId (value) { return value ? value .getValue () .getId () : -1; }
|
|
66
|
-
|
|
67
|
-
function remove (array, first, last, range, rfirst, rlast)
|
|
68
|
-
{
|
|
69
|
-
const set = { };
|
|
70
|
-
|
|
71
|
-
for (let i = rfirst; i < rlast; ++ i)
|
|
72
|
-
set [getId (range [i])] = true;
|
|
73
|
-
|
|
74
|
-
function compare (value) { return set [getId (value)]; }
|
|
75
|
-
|
|
76
|
-
return array .remove (first, last, compare);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
65
|
function X3DGroupingNode (executionContext)
|
|
80
66
|
{
|
|
81
67
|
X3DChildNode .call (this, executionContext);
|
|
@@ -167,7 +153,7 @@ function (X3DChildNode,
|
|
|
167
153
|
this ._children .insert (this ._children .length, this ._addChildren, 0, this ._addChildren .length);
|
|
168
154
|
this .add (this ._addChildren);
|
|
169
155
|
|
|
170
|
-
this ._addChildren .
|
|
156
|
+
this ._addChildren .length = 0;
|
|
171
157
|
this ._addChildren .setTainted (false);
|
|
172
158
|
},
|
|
173
159
|
set_removeChildren__: function ()
|
|
@@ -175,6 +161,8 @@ function (X3DChildNode,
|
|
|
175
161
|
if (this ._removeChildren .length === 0)
|
|
176
162
|
return;
|
|
177
163
|
|
|
164
|
+
this ._removeChildren .setTainted (true);
|
|
165
|
+
|
|
178
166
|
if (this ._children .length > 0)
|
|
179
167
|
{
|
|
180
168
|
if (!this ._children .isTainted ())
|
|
@@ -190,7 +178,8 @@ function (X3DChildNode,
|
|
|
190
178
|
this .remove (this ._removeChildren);
|
|
191
179
|
}
|
|
192
180
|
|
|
193
|
-
this ._removeChildren .
|
|
181
|
+
this ._removeChildren .length = 0;
|
|
182
|
+
this ._removeChildren .setTainted (false);
|
|
194
183
|
},
|
|
195
184
|
set_children__: function ()
|
|
196
185
|
{
|
|
@@ -720,5 +709,17 @@ function (X3DChildNode,
|
|
|
720
709
|
},
|
|
721
710
|
});
|
|
722
711
|
|
|
712
|
+
function remove (array, first, last, range, rfirst, rlast)
|
|
713
|
+
{
|
|
714
|
+
const set = new Set ();
|
|
715
|
+
|
|
716
|
+
for (let i = rfirst; i < rlast; ++ i)
|
|
717
|
+
set .add (range [i]);
|
|
718
|
+
|
|
719
|
+
function compare (value) { return set .has (value); }
|
|
720
|
+
|
|
721
|
+
return array .remove (first, last, compare);
|
|
722
|
+
}
|
|
723
|
+
|
|
723
724
|
return X3DGroupingNode;
|
|
724
725
|
});
|
|
@@ -98,43 +98,82 @@ function (Fields,
|
|
|
98
98
|
{
|
|
99
99
|
X3DNode .prototype .initialize .call (this);
|
|
100
100
|
|
|
101
|
-
this .
|
|
101
|
+
this ._addChildren .addInterest ("set_addChildren__", this);
|
|
102
|
+
this ._removeChildren .addInterest ("set_removeChildren__", this);
|
|
103
|
+
this ._children .addInterest ("set_children__", this);
|
|
102
104
|
|
|
103
105
|
this .set_children__ ();
|
|
104
106
|
},
|
|
107
|
+
set_addChildren__: function ()
|
|
108
|
+
{
|
|
109
|
+
this ._addChildren .setTainted (true);
|
|
110
|
+
|
|
111
|
+
this ._addChildren .erase (remove (this ._addChildren, 0, this ._addChildren .length,
|
|
112
|
+
this ._children, 0, this ._children .length),
|
|
113
|
+
this ._addChildren .length);
|
|
114
|
+
|
|
115
|
+
for (const child of this ._addChildren)
|
|
116
|
+
this ._children .push (child);
|
|
117
|
+
|
|
118
|
+
this ._addChildren .length = 0;
|
|
119
|
+
this ._addChildren .setTainted (false);
|
|
120
|
+
},
|
|
121
|
+
set_removeChildren__: function ()
|
|
122
|
+
{
|
|
123
|
+
this ._removeChildren .setTainted (true);
|
|
124
|
+
|
|
125
|
+
this ._children .erase (remove (this ._children, 0, this ._children .length,
|
|
126
|
+
this ._removeChildren, 0, this ._removeChildren .length),
|
|
127
|
+
this ._children .length);
|
|
128
|
+
|
|
129
|
+
this ._removeChildren .length = 0;
|
|
130
|
+
this ._removeChildren .setTainted (false);
|
|
131
|
+
},
|
|
105
132
|
set_children__: function ()
|
|
106
133
|
{
|
|
107
|
-
|
|
134
|
+
const childNodes = this .childNodes;
|
|
108
135
|
|
|
109
136
|
childNodes .length = 0;
|
|
110
137
|
|
|
111
|
-
for (
|
|
138
|
+
for (const node of this ._children)
|
|
112
139
|
{
|
|
113
|
-
|
|
140
|
+
const childNode = X3DCast (X3DConstants .NurbsCurve2D, node);
|
|
114
141
|
|
|
115
142
|
if (childNode)
|
|
116
143
|
{
|
|
117
144
|
childNodes .push (childNode);
|
|
118
145
|
continue;
|
|
119
146
|
}
|
|
120
|
-
|
|
121
|
-
var childNode = X3DCast (X3DConstants .ContourPolyline2D, this ._children [i]);
|
|
122
|
-
|
|
123
|
-
if (childNode)
|
|
147
|
+
else
|
|
124
148
|
{
|
|
125
|
-
|
|
126
|
-
|
|
149
|
+
const childNode = X3DCast (X3DConstants .ContourPolyline2D, node);
|
|
150
|
+
|
|
151
|
+
if (childNode)
|
|
152
|
+
{
|
|
153
|
+
childNodes .push (childNode);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
127
156
|
}
|
|
128
157
|
}
|
|
129
158
|
},
|
|
130
159
|
addTrimmingContour: function (trimmingContours)
|
|
131
160
|
{
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
for (var i = 0, length = childNodes .length; i < length; ++ i)
|
|
135
|
-
trimmingContours .push (childNodes [i] .tessellate (2));
|
|
161
|
+
for (const childNode of this .childNodes)
|
|
162
|
+
trimmingContours .push (childNode .tessellate (2));
|
|
136
163
|
}
|
|
137
164
|
});
|
|
138
165
|
|
|
166
|
+
function remove (array, first, last, range, rfirst, rlast)
|
|
167
|
+
{
|
|
168
|
+
const set = new Set ();
|
|
169
|
+
|
|
170
|
+
for (let i = rfirst; i < rlast; ++ i)
|
|
171
|
+
set .add (range [i]);
|
|
172
|
+
|
|
173
|
+
function compare (value) { return set .has (value); }
|
|
174
|
+
|
|
175
|
+
return array .remove (first, last, compare);
|
|
176
|
+
}
|
|
177
|
+
|
|
139
178
|
return Contour2D;
|
|
140
179
|
});
|
|
@@ -98,13 +98,14 @@ function (Fields,
|
|
|
98
98
|
{
|
|
99
99
|
case 0:
|
|
100
100
|
{
|
|
101
|
-
|
|
101
|
+
const
|
|
102
102
|
controlPointArray = this ._controlPoint .getValue (),
|
|
103
|
-
controlPoints = this .controlPoints
|
|
103
|
+
controlPoints = this .controlPoints,
|
|
104
|
+
length = this ._controlPoint .length;
|
|
104
105
|
|
|
105
|
-
for (
|
|
106
|
+
for (let i = 0; i < length; ++ i)
|
|
106
107
|
{
|
|
107
|
-
|
|
108
|
+
const i2 = i * 2;
|
|
108
109
|
|
|
109
110
|
controlPoints [i2 + 0] = controlPointArray [i2 + 0];
|
|
110
111
|
controlPoints [i2 + 1] = controlPointArray [i2 + 1];
|
|
@@ -116,13 +117,14 @@ function (Fields,
|
|
|
116
117
|
}
|
|
117
118
|
case 1:
|
|
118
119
|
{
|
|
119
|
-
|
|
120
|
+
const
|
|
120
121
|
controlPointArray = this ._controlPoint .getValue (),
|
|
121
|
-
controlPoints = this .controlPoints
|
|
122
|
+
controlPoints = this .controlPoints,
|
|
123
|
+
length = this ._controlPoint .length;
|
|
122
124
|
|
|
123
|
-
for (
|
|
125
|
+
for (let i = 0; i < length; ++ i)
|
|
124
126
|
{
|
|
125
|
-
|
|
127
|
+
const
|
|
126
128
|
i2 = i * 2,
|
|
127
129
|
i3 = i * 3;
|
|
128
130
|
|
|
@@ -137,13 +139,14 @@ function (Fields,
|
|
|
137
139
|
}
|
|
138
140
|
case 3:
|
|
139
141
|
{
|
|
140
|
-
|
|
142
|
+
const
|
|
141
143
|
controlPointArray = this ._controlPoint .getValue (),
|
|
142
|
-
controlPoints = this .controlPoints
|
|
144
|
+
controlPoints = this .controlPoints,
|
|
145
|
+
length = this ._controlPoint .length;
|
|
143
146
|
|
|
144
|
-
for (
|
|
147
|
+
for (let i = 0; i < length; ++ i)
|
|
145
148
|
{
|
|
146
|
-
|
|
149
|
+
const i2 = i * 2;
|
|
147
150
|
|
|
148
151
|
controlPoints [i] = new Vector3 (controlPointArray [i2 + 0], controlPointArray [i2 + 1], 0);
|
|
149
152
|
}
|