x_ite 8.6.0 → 8.6.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/.vscode/settings.json +7 -7
- package/dist/assets/components/Annotation.js +13 -13
- package/dist/assets/components/Annotation.min.js +1 -1
- package/dist/assets/components/CADGeometry.js +13 -13
- package/dist/assets/components/CADGeometry.min.js +1 -1
- package/dist/assets/components/CubeMapTexturing.js +25 -25
- package/dist/assets/components/CubeMapTexturing.min.js +1 -1
- package/dist/assets/components/DIS.js +13 -13
- package/dist/assets/components/DIS.min.js +1 -1
- package/dist/assets/components/EventUtilities.js +9 -9
- package/dist/assets/components/EventUtilities.min.js +1 -1
- package/dist/assets/components/Geometry2D.js +19 -19
- package/dist/assets/components/Geometry2D.min.js +1 -1
- package/dist/assets/components/Geospatial.js +33 -33
- package/dist/assets/components/Geospatial.min.js +1 -1
- package/dist/assets/components/HAnim.js +18 -18
- package/dist/assets/components/HAnim.min.js +1 -1
- package/dist/assets/components/KeyDeviceSensor.js +8 -8
- package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
- package/dist/assets/components/Layout.js +27 -27
- package/dist/assets/components/Layout.min.js +1 -1
- package/dist/assets/components/NURBS.js +24 -24
- package/dist/assets/components/NURBS.min.js +1 -1
- package/dist/assets/components/ParticleSystems.js +23 -23
- package/dist/assets/components/ParticleSystems.min.js +1 -1
- package/dist/assets/components/Picking.js +19 -19
- package/dist/assets/components/Picking.min.js +1 -1
- package/dist/assets/components/RigidBodyPhysics.js +18 -18
- package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
- package/dist/assets/components/Scripting.js +28 -28
- package/dist/assets/components/Scripting.min.js +1 -1
- package/dist/assets/components/Text.js +39 -48
- package/dist/assets/components/Text.min.js +1 -1
- package/dist/assets/components/TextureProjector.js +14 -14
- package/dist/assets/components/TextureProjector.min.js +1 -1
- package/dist/assets/components/Texturing3D.js +32 -32
- package/dist/assets/components/Texturing3D.min.js +1 -1
- package/dist/assets/components/VolumeRendering.js +19 -19
- package/dist/assets/components/VolumeRendering.min.js +1 -1
- package/dist/assets/components/X_ITE.js +9 -9
- package/dist/assets/components/X_ITE.min.js +1 -1
- package/dist/x_ite.css +1 -1
- package/dist/x_ite.js +690 -936
- package/dist/x_ite.min.js +1 -1
- package/dist/x_ite.zip +0 -0
- package/docs/_config.yml +2 -2
- package/docs/_includes/scripts.html +2 -2
- package/docs/_posts/components/CADGeometry/IndexedQuadSet.md +1 -1
- package/docs/_posts/components/CADGeometry/QuadSet.md +1 -1
- package/docs/_posts/components/Geometry3D/ElevationGrid.md +1 -1
- package/docs/_posts/components/Geometry3D/Extrusion.md +1 -1
- package/docs/_posts/components/Geometry3D/IndexedFaceSet.md +1 -1
- package/docs/_posts/components/Geospatial/GeoElevationGrid.md +1 -1
- package/docs/_posts/components/NURBS/NurbsSweptSurface.md +1 -1
- package/docs/_posts/components/NURBS/NurbsSwungSurface.md +1 -1
- package/docs/_posts/components/Rendering/IndexedTriangleFanSet.md +1 -1
- package/docs/_posts/components/Rendering/IndexedTriangleSet.md +1 -1
- package/docs/_posts/components/Rendering/IndexedTriangleStripSet.md +1 -1
- package/docs/_posts/components/Rendering/TriangleFanSet.md +1 -1
- package/docs/_posts/components/Rendering/TriangleSet.md +1 -1
- package/docs/_posts/components/Rendering/TriangleStripSet.md +1 -1
- package/docs/_posts/components/Shape/Material.md +1 -1
- package/docs/_posts/getting-started.md +1 -1
- package/docs/_posts/laboratory/x3d-file-converter.md +178 -0
- package/docs/_tabs/playground.html +80 -133
- package/docs/assets/css/style.scss +2 -42
- package/docs/laboratory/3d-l-system-generator.html +1 -1
- package/docs/laboratory/gltf-sample-viewer.html +1 -1
- package/docs/laboratory/online-dicom-and-nrrd-file-viewer.html +1 -1
- package/docs/laboratory/real-time-earth-quake-information.html +1 -1
- package/docs/laboratory/x3d-visual-blend-mode-editor.html +1 -1
- package/package.json +1 -1
- package/src/standard/Math/Algorithms/Bezier.js +133 -182
- package/src/standard/Math/Geometry/Box2.js +0 -1
- package/src/standard/Math/Geometry/Box3.js +0 -1
- package/src/standard/Math/Geometry/Cylinder3.js +1 -1
- package/src/standard/Math/Geometry/Line2.js +2 -4
- package/src/standard/Math/Geometry/Line3.js +2 -4
- package/src/standard/Math/Geometry/Plane3.js +1 -3
- package/src/standard/Math/Geometry/Sphere3.js +8 -12
- package/src/standard/Math/Geometry/Triangle3.js +8 -0
- package/src/standard/Math/Geometry/ViewVolume.js +17 -27
- package/src/standard/Math/Numbers/Color3.js +4 -7
- package/src/standard/Math/Numbers/Complex.js +8 -9
- package/src/standard/Math/Numbers/Matrix2.js +31 -42
- package/src/standard/Math/Numbers/Matrix3.js +54 -97
- package/src/standard/Math/Numbers/Matrix4.js +49 -160
- package/src/standard/Math/Numbers/Quaternion.js +20 -24
- package/src/standard/Math/Numbers/Rotation4.js +1 -2
- package/src/standard/Math/Numbers/Vector2.js +4 -12
- package/src/standard/Math/Numbers/Vector3.js +6 -18
- package/src/standard/Math/Numbers/Vector4.js +4 -20
- package/src/standard/Time/StopWatch.js +9 -14
- package/src/tests.js +11 -0
- package/src/x_ite/Browser/Core/BrowserTimings.js +10 -10
- package/src/x_ite/Browser/Core/X3DCoreContext.js +4 -6
- package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator.js +94 -88
- package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolator1.js +2 -3
- package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +17 -14
- package/src/x_ite/Browser/Text/PolygonText.js +15 -24
- package/src/x_ite/Browser/VERSION.js +1 -1
- package/src/x_ite/Components/Core/X3DNode.js +12 -0
- package/src/x_ite/Components/Core/X3DPrototypeInstance.js +18 -0
- package/src/x_ite/Components/Interpolation/SquadOrientationInterpolator.js +8 -7
- package/src/x_ite/Configuration/UnitInfo.js +2 -0
- package/src/x_ite/Execution/X3DExportedNode.js +4 -0
- package/src/x_ite/Execution/X3DImportedNode.js +14 -0
- package/src/x_ite/Execution/X3DScene.js +4 -0
- package/src/x_ite/Fields/SFString.js +4 -6
- package/src/x_ite/InputOutput/FileLoader.js +1 -1
- package/src/x_ite/InputOutput/Generator.js +35 -55
- package/src/x_ite/Parser/GLTF2Parser.js +4 -4
- package/src/x_ite/Parser/SVGParser.js +24 -47
- package/src/x_ite/Parser/X3DParser.js +1 -1
- package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +4 -0
- package/src/x_ite/Prototype/X3DProtoDeclaration.js +4 -0
- package/src/x_ite/Routing/X3DRoute.js +8 -0
|
@@ -133,7 +133,9 @@ X3DExportedNode .prototype = Object .assign (Object .create (X3DObject .prototyp
|
|
|
133
133
|
generator .string += '"';
|
|
134
134
|
generator .string += ':';
|
|
135
135
|
generator .string += generator .TidySpace ();
|
|
136
|
+
generator .string += '"';
|
|
136
137
|
generator .string += generator .JSONEncode (localName);
|
|
138
|
+
generator .string += '"';
|
|
137
139
|
|
|
138
140
|
if (this [_exportedName] !== localName)
|
|
139
141
|
{
|
|
@@ -145,7 +147,9 @@ X3DExportedNode .prototype = Object .assign (Object .create (X3DObject .prototyp
|
|
|
145
147
|
generator .string += '"';
|
|
146
148
|
generator .string += ':';
|
|
147
149
|
generator .string += generator .TidySpace ();
|
|
150
|
+
generator .string += '"';
|
|
148
151
|
generator .string += generator .JSONEncode (this [_exportedName]);
|
|
152
|
+
generator .string += '"';
|
|
149
153
|
generator .string += generator .TidyBreak ();
|
|
150
154
|
}
|
|
151
155
|
else
|
|
@@ -350,7 +350,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
350
350
|
generator .string += '"';
|
|
351
351
|
generator .string += ':';
|
|
352
352
|
generator .string += generator .TidySpace ();
|
|
353
|
+
generator .string += '"';
|
|
353
354
|
generator .string += generator .JSONEncode (generator .Name (this .getInlineNode ()));
|
|
355
|
+
generator .string += '"';
|
|
354
356
|
generator .string += ',';
|
|
355
357
|
generator .string += generator .TidyBreak ();
|
|
356
358
|
|
|
@@ -360,7 +362,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
360
362
|
generator .string += '"';
|
|
361
363
|
generator .string += ':';
|
|
362
364
|
generator .string += generator .TidySpace ();
|
|
365
|
+
generator .string += '"';
|
|
363
366
|
generator .string += generator .JSONEncode (this .getExportedName ());
|
|
367
|
+
generator .string += '"';
|
|
364
368
|
|
|
365
369
|
if (this .getImportedName () !== this .getExportedName ())
|
|
366
370
|
{
|
|
@@ -372,7 +376,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
372
376
|
generator .string += '"';
|
|
373
377
|
generator .string += ':';
|
|
374
378
|
generator .string += generator .TidySpace ();
|
|
379
|
+
generator .string += '"';
|
|
375
380
|
generator .string += generator .JSONEncode (this .getImportedName ());
|
|
381
|
+
generator .string += '"';
|
|
376
382
|
generator .string += generator .TidyBreak ();
|
|
377
383
|
}
|
|
378
384
|
else
|
|
@@ -437,7 +443,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
437
443
|
generator .string += '"';
|
|
438
444
|
generator .string += ':';
|
|
439
445
|
generator .string += generator .TidySpace ();
|
|
446
|
+
generator .string += '"';
|
|
440
447
|
generator .string += generator .JSONEncode (sourceNodeName);
|
|
448
|
+
generator .string += '"';
|
|
441
449
|
generator .string += ',';
|
|
442
450
|
generator .string += generator .TidyBreak ();
|
|
443
451
|
|
|
@@ -447,7 +455,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
447
455
|
generator .string += '"';
|
|
448
456
|
generator .string += ':';
|
|
449
457
|
generator .string += generator .TidySpace ();
|
|
458
|
+
generator .string += '"';
|
|
450
459
|
generator .string += generator .JSONEncode (sourceField);
|
|
460
|
+
generator .string += '"';
|
|
451
461
|
generator .string += ',';
|
|
452
462
|
generator .string += generator .TidyBreak ();
|
|
453
463
|
|
|
@@ -457,7 +467,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
457
467
|
generator .string += '"';
|
|
458
468
|
generator .string += ':';
|
|
459
469
|
generator .string += generator .TidySpace ();
|
|
470
|
+
generator .string += '"';
|
|
460
471
|
generator .string += generator .JSONEncode (destinationNodeName);
|
|
472
|
+
generator .string += '"';
|
|
461
473
|
generator .string += ',';
|
|
462
474
|
generator .string += generator .TidyBreak ();
|
|
463
475
|
|
|
@@ -467,7 +479,9 @@ X3DImportedNode .prototype = Object .assign (Object .create (X3DNode .prototype)
|
|
|
467
479
|
generator .string += '"';
|
|
468
480
|
generator .string += ':';
|
|
469
481
|
generator .string += generator .TidySpace ();
|
|
482
|
+
generator .string += '"';
|
|
470
483
|
generator .string += generator .JSONEncode (destinationField);
|
|
484
|
+
generator .string += '"';
|
|
471
485
|
generator .string += generator .TidyBreak ();
|
|
472
486
|
|
|
473
487
|
generator .string += generator .DecIndent ();
|
|
@@ -762,7 +762,9 @@ X3DScene .prototype = Object .assign (Object .create (X3DExecutionContext .proto
|
|
|
762
762
|
generator .string += '"';
|
|
763
763
|
generator .string += ':';
|
|
764
764
|
generator .string += generator .TidySpace ();
|
|
765
|
+
generator .string += '"';
|
|
765
766
|
generator .string += generator .JSONEncode (key);
|
|
767
|
+
generator .string += '"';
|
|
766
768
|
generator .string += ',';
|
|
767
769
|
generator .string += generator .TidyBreak ();
|
|
768
770
|
|
|
@@ -772,7 +774,9 @@ X3DScene .prototype = Object .assign (Object .create (X3DExecutionContext .proto
|
|
|
772
774
|
generator .string += '"';
|
|
773
775
|
generator .string += ':';
|
|
774
776
|
generator .string += generator .TidySpace ();
|
|
777
|
+
generator .string += '"';
|
|
775
778
|
generator .string += generator .JSONEncode (value);
|
|
779
|
+
generator .string += '"';
|
|
776
780
|
generator .string += generator .TidyBreak ();
|
|
777
781
|
|
|
778
782
|
generator .string += generator .DecIndent ();
|
|
@@ -48,10 +48,6 @@
|
|
|
48
48
|
import X3DField from "../Base/X3DField.js";
|
|
49
49
|
import X3DConstants from "../Base/X3DConstants.js";
|
|
50
50
|
|
|
51
|
-
const
|
|
52
|
-
unescape = /\\([\\"])/g,
|
|
53
|
-
escape = /([\\"])/g;
|
|
54
|
-
|
|
55
51
|
function SFString (value)
|
|
56
52
|
{
|
|
57
53
|
return X3DField .call (this, arguments .length ? "" + value : "");
|
|
@@ -61,11 +57,11 @@ Object .assign (SFString,
|
|
|
61
57
|
{
|
|
62
58
|
unescape: function (string)
|
|
63
59
|
{
|
|
64
|
-
return string .replace (
|
|
60
|
+
return string .replace (/\\([\\"])/g, "$1");
|
|
65
61
|
},
|
|
66
62
|
escape: function (string)
|
|
67
63
|
{
|
|
68
|
-
return string .replace (
|
|
64
|
+
return string .replace (/([\\"])/g, "\\$1");
|
|
69
65
|
},
|
|
70
66
|
});
|
|
71
67
|
|
|
@@ -115,7 +111,9 @@ SFString .prototype = Object .assign (Object .create (X3DField .prototype),
|
|
|
115
111
|
},
|
|
116
112
|
toJSONStreamValue: function (generator)
|
|
117
113
|
{
|
|
114
|
+
generator .string += '"';
|
|
118
115
|
generator .string += generator .JSONEncode (this .getValue ());
|
|
116
|
+
generator .string += '"';
|
|
119
117
|
},
|
|
120
118
|
});
|
|
121
119
|
|
|
@@ -282,7 +282,7 @@ FileLoader .prototype = Object .assign (Object .create (X3DObject .prototype),
|
|
|
282
282
|
|
|
283
283
|
const
|
|
284
284
|
options = { cache: this .node .getCache () ? "default" : "reload" },
|
|
285
|
-
response = this .handleErrors (await fetch (
|
|
285
|
+
response = this .handleErrors (await fetch (this .URL .href, options)),
|
|
286
286
|
contentType = response .headers .get ("content-type") .replace (/;.*$/, "");
|
|
287
287
|
|
|
288
288
|
if (this .foreign)
|
|
@@ -499,68 +499,48 @@ Generator .prototype =
|
|
|
499
499
|
|
|
500
500
|
return value;
|
|
501
501
|
},
|
|
502
|
-
XMLEncode: function (
|
|
503
|
-
{
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
502
|
+
XMLEncode: (function ()
|
|
503
|
+
{
|
|
504
|
+
const map = {
|
|
505
|
+
"\\": "\\\\",
|
|
506
|
+
"\r": "
",
|
|
507
|
+
"\n": "
",
|
|
508
|
+
"\t": "	",
|
|
509
|
+
"\"": "\\\"",
|
|
510
|
+
"'": "'",
|
|
511
|
+
"<": "<",
|
|
512
|
+
">": ">",
|
|
513
|
+
"&": "&",
|
|
514
|
+
};
|
|
515
|
+
|
|
516
|
+
const regex = /([\\\r\n\t"'<>&])/g;
|
|
517
|
+
|
|
518
|
+
return function (string)
|
|
519
|
+
{
|
|
520
|
+
return string .replace (regex, char => map [char]);
|
|
521
|
+
};
|
|
522
|
+
})(),
|
|
515
523
|
escapeCDATA: function (string)
|
|
516
524
|
{
|
|
517
525
|
return string .replace (/\]\]\>/g, "\\]\\]\\>");
|
|
518
526
|
},
|
|
519
|
-
JSONEncode: function (
|
|
527
|
+
JSONEncode: (function ()
|
|
520
528
|
{
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
{
|
|
529
|
-
result += "\\r";
|
|
530
|
-
break;
|
|
531
|
-
}
|
|
532
|
-
case '\n':
|
|
533
|
-
{
|
|
534
|
-
result += "\\n";
|
|
535
|
-
break;
|
|
536
|
-
}
|
|
537
|
-
case '\t':
|
|
538
|
-
{
|
|
539
|
-
result += "\\t";
|
|
540
|
-
break;
|
|
541
|
-
}
|
|
542
|
-
case '"':
|
|
543
|
-
{
|
|
544
|
-
result += "\\\"";
|
|
545
|
-
break;
|
|
546
|
-
}
|
|
547
|
-
case '\\':
|
|
548
|
-
{
|
|
549
|
-
result += "\\\\";
|
|
550
|
-
break;
|
|
551
|
-
}
|
|
552
|
-
default:
|
|
553
|
-
{
|
|
554
|
-
result += character;
|
|
555
|
-
break;
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
}
|
|
529
|
+
const map = {
|
|
530
|
+
"\\": "\\\\",
|
|
531
|
+
"\r": "\\r",
|
|
532
|
+
"\n": "\\n",
|
|
533
|
+
"\t": "\\t",
|
|
534
|
+
"\"": "\\\"",
|
|
535
|
+
};
|
|
559
536
|
|
|
560
|
-
|
|
537
|
+
const regex = /([\\\t\n\r"])/g;
|
|
561
538
|
|
|
562
|
-
return
|
|
563
|
-
|
|
539
|
+
return function (string)
|
|
540
|
+
{
|
|
541
|
+
return string .replace (regex, char => map [char]);
|
|
542
|
+
};
|
|
543
|
+
})(),
|
|
564
544
|
JSONNumber: function (value)
|
|
565
545
|
{
|
|
566
546
|
switch (value)
|
|
@@ -2175,16 +2175,16 @@ GLTF2Parser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
2175
2175
|
index1 = Algorithm .clamp (Algorithm .upperBound (times, 0, times .length, time), 1, times .length - 1),
|
|
2176
2176
|
index0 = index1 - 1,
|
|
2177
2177
|
td = times [index1] - times [index0],
|
|
2178
|
-
|
|
2179
|
-
t2 =
|
|
2180
|
-
t3 =
|
|
2178
|
+
t1 = (time - times [index0]) / td,
|
|
2179
|
+
t2 = t1 * t1,
|
|
2180
|
+
t3 = t2 * t1,
|
|
2181
2181
|
v0 = values [index0 * 3 + 1] .copy (),
|
|
2182
2182
|
b0 = values [index0 * 3 + 2] .copy (),
|
|
2183
2183
|
v1 = values [index1 * 3 + 1] .copy (),
|
|
2184
2184
|
a1 = values [index1 * 3 + 0] .copy ();
|
|
2185
2185
|
|
|
2186
2186
|
v0 .multiply (2 * t3 - 3 * t2 + 1);
|
|
2187
|
-
b0 .multiply (td * (t3 - 2 * t2 +
|
|
2187
|
+
b0 .multiply (td * (t3 - 2 * t2 + t1));
|
|
2188
2188
|
v1 .multiply (-2 * t3 + 3 * t2);
|
|
2189
2189
|
a1 .multiply (td * (t3 - t2));
|
|
2190
2190
|
|
|
@@ -103,9 +103,9 @@ const
|
|
|
103
103
|
PICA = INCH / 6, // One pica in meters.
|
|
104
104
|
PIXEL = INCH / 90, // One pixel in meters.
|
|
105
105
|
EM = 16, // One em in pixels,
|
|
106
|
-
BEZIER_STEPS = 10,
|
|
107
|
-
CIRCLE_STEPS = 64,
|
|
108
|
-
GRADIENT_SIZE = 256;
|
|
106
|
+
BEZIER_STEPS = 10, // Subdivisions of a span.
|
|
107
|
+
CIRCLE_STEPS = 64, // Subdivisions of a circle, used for arc.
|
|
108
|
+
GRADIENT_SIZE = 256; // In pixels.
|
|
109
109
|
|
|
110
110
|
/*
|
|
111
111
|
* Parser
|
|
@@ -124,7 +124,7 @@ function SVGParser (scene)
|
|
|
124
124
|
|
|
125
125
|
// Options
|
|
126
126
|
|
|
127
|
-
this .solid = false;
|
|
127
|
+
this .solid = false; // Are 2D primitives solid.
|
|
128
128
|
|
|
129
129
|
// Globals
|
|
130
130
|
|
|
@@ -727,8 +727,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
727
727
|
|
|
728
728
|
const coordinateNode = scene .createNode ("Coordinate");
|
|
729
729
|
|
|
730
|
-
|
|
731
|
-
coordinateNode .point .push (new Vector3 (point .x, point .y, 0));
|
|
730
|
+
coordinateNode .point .push (... points);
|
|
732
731
|
|
|
733
732
|
if (this .style .fillType !== "NONE")
|
|
734
733
|
{
|
|
@@ -800,10 +799,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
800
799
|
const coordinateNode = scene .createNode ("Coordinate");
|
|
801
800
|
|
|
802
801
|
for (const points of contours)
|
|
803
|
-
|
|
804
|
-
for (const point of points)
|
|
805
|
-
coordinateNode .point .push (new Vector3 (point .x, point .y, 0));
|
|
806
|
-
}
|
|
802
|
+
coordinateNode .point .push (... points);
|
|
807
803
|
|
|
808
804
|
if (this .style .fillType !== "NONE")
|
|
809
805
|
{
|
|
@@ -1030,6 +1026,9 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1030
1026
|
},
|
|
1031
1027
|
hrefAttribute: function (attribute)
|
|
1032
1028
|
{
|
|
1029
|
+
if (!attribute)
|
|
1030
|
+
return;
|
|
1031
|
+
|
|
1033
1032
|
const
|
|
1034
1033
|
scene = this .getExecutionContext (),
|
|
1035
1034
|
hash = new URL (attribute, scene .getWorldURL ()) .hash .slice (1);
|
|
@@ -1124,7 +1123,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1124
1123
|
{
|
|
1125
1124
|
const y = this .value;
|
|
1126
1125
|
|
|
1127
|
-
points .push (new
|
|
1126
|
+
points .push (new Vector3 (x, y, 0));
|
|
1128
1127
|
|
|
1129
1128
|
if (this .comma ())
|
|
1130
1129
|
continue;
|
|
@@ -1173,8 +1172,6 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1173
1172
|
{
|
|
1174
1173
|
// moveto
|
|
1175
1174
|
|
|
1176
|
-
points = this .removeConsecutiveIdenticalPoints (points);
|
|
1177
|
-
|
|
1178
1175
|
if (points .length > 2)
|
|
1179
1176
|
{
|
|
1180
1177
|
contours .push (Object .assign (points, { index: index, closed: false }));
|
|
@@ -1202,7 +1199,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1202
1199
|
y += ay;
|
|
1203
1200
|
}
|
|
1204
1201
|
|
|
1205
|
-
points .push (new
|
|
1202
|
+
points .push (new Vector3 (x, y, 0));
|
|
1206
1203
|
|
|
1207
1204
|
ax = x;
|
|
1208
1205
|
ay = y;
|
|
@@ -1240,7 +1237,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1240
1237
|
y += ay;
|
|
1241
1238
|
}
|
|
1242
1239
|
|
|
1243
|
-
points .push (new
|
|
1240
|
+
points .push (new Vector3 (x, y, 0));
|
|
1244
1241
|
|
|
1245
1242
|
ax = x;
|
|
1246
1243
|
ay = y;
|
|
@@ -1269,7 +1266,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1269
1266
|
if (relative)
|
|
1270
1267
|
x += ax;
|
|
1271
1268
|
|
|
1272
|
-
points .push (new
|
|
1269
|
+
points .push (new Vector3 (x, ay, 0));
|
|
1273
1270
|
|
|
1274
1271
|
ax = x;
|
|
1275
1272
|
|
|
@@ -1296,7 +1293,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1296
1293
|
if (relative)
|
|
1297
1294
|
y += ay;
|
|
1298
1295
|
|
|
1299
|
-
points .push (new
|
|
1296
|
+
points .push (new Vector3 (ax, y, 0));
|
|
1300
1297
|
|
|
1301
1298
|
ay = y;
|
|
1302
1299
|
|
|
@@ -1346,9 +1343,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1346
1343
|
y += ay;
|
|
1347
1344
|
}
|
|
1348
1345
|
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
points .push (... curve .getPoints ("quadric", BEZIER_STEPS));
|
|
1346
|
+
Bezier .quadric (ax, ay, 0, x1, y1, 0, x, y, 0, BEZIER_STEPS, points);
|
|
1352
1347
|
|
|
1353
1348
|
ax = x;
|
|
1354
1349
|
ay = y;
|
|
@@ -1409,9 +1404,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1409
1404
|
}
|
|
1410
1405
|
}
|
|
1411
1406
|
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
points .push (... curve .getPoints ("quadric", BEZIER_STEPS));
|
|
1407
|
+
Bezier .quadric (ax, ay, 0, x1, y1, 0, x, y, 0, BEZIER_STEPS, points);
|
|
1415
1408
|
|
|
1416
1409
|
ax = x;
|
|
1417
1410
|
ay = y;
|
|
@@ -1477,9 +1470,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1477
1470
|
y += ay;
|
|
1478
1471
|
}
|
|
1479
1472
|
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
points .push (... curve .getPoints ("cubic", BEZIER_STEPS));
|
|
1473
|
+
Bezier .cubic (ax, ay, 0, x1, y1, 0, x2, y2, 0, x, y, 0, BEZIER_STEPS, points);
|
|
1483
1474
|
|
|
1484
1475
|
ax = x;
|
|
1485
1476
|
ay = y;
|
|
@@ -1556,9 +1547,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1556
1547
|
}
|
|
1557
1548
|
}
|
|
1558
1549
|
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
points .push (... curve .getPoints ("cubic", BEZIER_STEPS));
|
|
1550
|
+
Bezier .cubic (ax, ay, 0, x1, y1, 0, x2, y2, 0, x, y, 0, BEZIER_STEPS, points);
|
|
1562
1551
|
|
|
1563
1552
|
ax = x;
|
|
1564
1553
|
ay = y;
|
|
@@ -1598,7 +1587,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1598
1587
|
|
|
1599
1588
|
if (this .double ())
|
|
1600
1589
|
{
|
|
1601
|
-
let xAxisRotation = this .value;
|
|
1590
|
+
let xAxisRotation = Algorithm .radians (this .value);
|
|
1602
1591
|
|
|
1603
1592
|
this .comma ();
|
|
1604
1593
|
|
|
@@ -1630,9 +1619,7 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1630
1619
|
y += ay;
|
|
1631
1620
|
}
|
|
1632
1621
|
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
points .push (... curve .getPoints ("arc", CIRCLE_STEPS));
|
|
1622
|
+
Bezier .arc (ax, ay, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, x, y, CIRCLE_STEPS, points);
|
|
1636
1623
|
|
|
1637
1624
|
ax = x;
|
|
1638
1625
|
ay = y;
|
|
@@ -1657,8 +1644,6 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1657
1644
|
{
|
|
1658
1645
|
// closepath
|
|
1659
1646
|
|
|
1660
|
-
points = this .removeConsecutiveIdenticalPoints (points);
|
|
1661
|
-
|
|
1662
1647
|
if (points .length > 2)
|
|
1663
1648
|
{
|
|
1664
1649
|
ax = points [0] .x;
|
|
@@ -1679,17 +1664,11 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
1679
1664
|
break;
|
|
1680
1665
|
}
|
|
1681
1666
|
|
|
1682
|
-
points = this .removeConsecutiveIdenticalPoints (points);
|
|
1683
|
-
|
|
1684
1667
|
if (points .length > 2)
|
|
1685
1668
|
contours .push (Object .assign (points, { index: index, closed: false }));
|
|
1686
1669
|
|
|
1687
1670
|
return !! contours .length;
|
|
1688
1671
|
},
|
|
1689
|
-
removeConsecutiveIdenticalPoints: function (points)
|
|
1690
|
-
{
|
|
1691
|
-
return points .filter ((p, i, a) => !p .equals (a [(i + 1) % a .length]));
|
|
1692
|
-
},
|
|
1693
1672
|
transformAttribute: function (attribute)
|
|
1694
1673
|
{
|
|
1695
1674
|
const matrix = new Matrix3 ();
|
|
@@ -2430,11 +2409,9 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
2430
2409
|
|
|
2431
2410
|
function combineCallback (coords, data, weight)
|
|
2432
2411
|
{
|
|
2433
|
-
const
|
|
2434
|
-
point = new Vector3 (... coords),
|
|
2435
|
-
index = coordinateNode .point .length;
|
|
2412
|
+
const index = coordinateNode .point .length;
|
|
2436
2413
|
|
|
2437
|
-
coordinateNode .point .push (
|
|
2414
|
+
coordinateNode .point .push (new Vector3 (... coords));
|
|
2438
2415
|
|
|
2439
2416
|
return index;
|
|
2440
2417
|
}
|
|
@@ -2452,8 +2429,8 @@ SVGParser .prototype = Object .assign (Object .create (X3DParser .prototype),
|
|
|
2452
2429
|
{
|
|
2453
2430
|
tessy .gluTessBeginContour ();
|
|
2454
2431
|
|
|
2455
|
-
for (const [i,
|
|
2456
|
-
tessy .gluTessVertex (
|
|
2432
|
+
for (const [i, point] of points .entries ())
|
|
2433
|
+
tessy .gluTessVertex (point, points .index + i);
|
|
2457
2434
|
|
|
2458
2435
|
tessy .gluTessEndContour ();
|
|
2459
2436
|
}
|
|
@@ -142,7 +142,7 @@ X3DParser .prototype = {
|
|
|
142
142
|
convertColor: function (value)
|
|
143
143
|
{
|
|
144
144
|
const
|
|
145
|
-
div = $("<div></div>") .css ("color", value) .appendTo (
|
|
145
|
+
div = $("<div></div>") .hide () .css ("color", value) .appendTo ($("body")),
|
|
146
146
|
rgb = window .getComputedStyle (div [0]) .color,
|
|
147
147
|
values = rgb .replace (/^rgba?\(|\)$/g, "") .split (/[\s,]+/) .map (s => parseFloat (s));
|
|
148
148
|
|
|
@@ -296,7 +296,9 @@ X3DExternProtoDeclaration .prototype = Object .assign (Object .create (X3DProtoD
|
|
|
296
296
|
generator .string += "@name";
|
|
297
297
|
generator .string += '"';
|
|
298
298
|
generator .string += ':';
|
|
299
|
+
generator .string += '"';
|
|
299
300
|
generator .string += generator .JSONEncode (this .getName ());
|
|
301
|
+
generator .string += '"';
|
|
300
302
|
generator .string += ',';
|
|
301
303
|
generator .string += generator .TidyBreak ();
|
|
302
304
|
|
|
@@ -354,7 +356,9 @@ X3DExternProtoDeclaration .prototype = Object .assign (Object .create (X3DProtoD
|
|
|
354
356
|
generator .string += '"';
|
|
355
357
|
generator .string += ':';
|
|
356
358
|
generator .string += generator .TidySpace ();
|
|
359
|
+
generator .string += '"';
|
|
357
360
|
generator .string += generator .JSONEncode (field .getName ());
|
|
361
|
+
generator .string += '"';
|
|
358
362
|
generator .string += generator .TidyBreak ();
|
|
359
363
|
|
|
360
364
|
generator .string += generator .DecIndent ();
|
|
@@ -326,7 +326,9 @@ X3DProtoDeclaration .prototype = Object .assign (Object .create (X3DProtoDeclara
|
|
|
326
326
|
generator .string += "@name";
|
|
327
327
|
generator .string += '"';
|
|
328
328
|
generator .string += ':';
|
|
329
|
+
generator .string += '"';
|
|
329
330
|
generator .string += generator .JSONEncode (this .getName ());
|
|
331
|
+
generator .string += '"';
|
|
330
332
|
generator .string += ',';
|
|
331
333
|
generator .string += generator .TidyBreak ();
|
|
332
334
|
|
|
@@ -396,7 +398,9 @@ X3DProtoDeclaration .prototype = Object .assign (Object .create (X3DProtoDeclara
|
|
|
396
398
|
generator .string += '"';
|
|
397
399
|
generator .string += ':';
|
|
398
400
|
generator .string += generator .TidySpace ();
|
|
401
|
+
generator .string += '"';
|
|
399
402
|
generator .string += generator .JSONEncode (field .getName ());
|
|
403
|
+
generator .string += '"';
|
|
400
404
|
|
|
401
405
|
if (field .isDefaultValue ())
|
|
402
406
|
{
|
|
@@ -198,7 +198,9 @@ X3DRoute .prototype = Object .assign (Object .create (X3DObject .prototype),
|
|
|
198
198
|
generator .string += '"';
|
|
199
199
|
generator .string += ':';
|
|
200
200
|
generator .string += generator .TidySpace ();
|
|
201
|
+
generator .string += '"';
|
|
201
202
|
generator .string += generator .JSONEncode (sourceNodeName);
|
|
203
|
+
generator .string += '"';
|
|
202
204
|
generator .string += ',';
|
|
203
205
|
generator .string += generator .TidyBreak ();
|
|
204
206
|
|
|
@@ -208,7 +210,9 @@ X3DRoute .prototype = Object .assign (Object .create (X3DObject .prototype),
|
|
|
208
210
|
generator .string += '"';
|
|
209
211
|
generator .string += ':';
|
|
210
212
|
generator .string += generator .TidySpace ();
|
|
213
|
+
generator .string += '"';
|
|
211
214
|
generator .string += generator .JSONEncode (this [_sourceField] .getName ());
|
|
215
|
+
generator .string += '"';
|
|
212
216
|
generator .string += ',';
|
|
213
217
|
generator .string += generator .TidyBreak ();
|
|
214
218
|
|
|
@@ -218,7 +222,9 @@ X3DRoute .prototype = Object .assign (Object .create (X3DObject .prototype),
|
|
|
218
222
|
generator .string += '"';
|
|
219
223
|
generator .string += ':';
|
|
220
224
|
generator .string += generator .TidySpace ();
|
|
225
|
+
generator .string += '"';
|
|
221
226
|
generator .string += generator .JSONEncode (destinationNodeName);
|
|
227
|
+
generator .string += '"';
|
|
222
228
|
generator .string += ',';
|
|
223
229
|
generator .string += generator .TidyBreak ();
|
|
224
230
|
|
|
@@ -228,7 +234,9 @@ X3DRoute .prototype = Object .assign (Object .create (X3DObject .prototype),
|
|
|
228
234
|
generator .string += '"';
|
|
229
235
|
generator .string += ':';
|
|
230
236
|
generator .string += generator .TidySpace ();
|
|
237
|
+
generator .string += '"';
|
|
231
238
|
generator .string += generator .JSONEncode (this [_destinationField] .getName ());
|
|
239
|
+
generator .string += '"';
|
|
232
240
|
generator .string += generator .TidyBreak ();
|
|
233
241
|
|
|
234
242
|
generator .string += generator .DecIndent ();
|