x_ite 8.6.18 → 8.6.20
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/README.md +1 -1
- 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 -25
- package/dist/assets/components/ParticleSystems.min.js +1 -1
- package/dist/assets/components/Picking.js +19 -21
- 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 +30 -32
- package/dist/assets/components/Scripting.min.js +1 -1
- package/dist/assets/components/Text.js +24 -24
- 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 +30 -30
- 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/example.html +1 -1
- package/dist/x_ite.css +1 -1
- package/dist/x_ite.js +234 -235
- package/dist/x_ite.min.js +1 -1
- package/dist/x_ite.zip +0 -0
- package/docs/_config.yml +1 -1
- package/docs/_posts/getting-started.md +18 -18
- package/docs/_posts/setup-a-localhost-server.md +2 -2
- package/docs/_tabs/playground.html +24 -17
- package/package.json +4 -4
- package/src/example.html +1 -1
- package/src/standard/Math/Algorithm.js +1 -1
- package/src/standard/Math/Algorithms/MergeSort.js +7 -5
- package/src/standard/Math/Algorithms/PartialSort.js +3 -1
- package/src/standard/Math/Algorithms/QuickSort.js +1 -3
- package/src/standard/Math/Geometry/Box2.js +1 -1
- package/src/standard/Math/Geometry/Box3.js +1 -1
- package/src/standard/Math/Numbers/Quaternion.js +4 -3
- package/src/standard/Math/Numbers/Rotation4.js +4 -3
- package/src/x_ite/Base/X3DBaseNode.js +1 -1
- package/src/x_ite/Base/X3DEventObject.js +3 -2
- package/src/x_ite/Base/X3DField.js +2 -2
- package/src/x_ite/Browser/Core/Context.js +1 -1
- package/src/x_ite/Browser/Navigation/ExamineViewer.js +4 -1
- package/src/x_ite/Browser/Navigation/LookAtViewer.js +3 -0
- package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +18 -11
- package/src/x_ite/Browser/VERSION.js +1 -1
- package/src/x_ite/Browser/X3DBrowser.js +48 -57
- package/src/x_ite/Browser/X3DBrowserContext.js +3 -3
- package/src/x_ite/Components/Scripting/Script.js +2 -4
- package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +1 -1
- package/src/x_ite/Components/Sound/AudioClip.js +3 -3
- package/src/x_ite/Components/Sound/DynamicsCompressor.js +4 -4
- package/src/x_ite/Components/Texturing/MovieTexture.js +3 -3
- package/src/x_ite/Execution/Scene.js +1 -1
- package/src/x_ite/Execution/X3DExecutionContext.js +11 -11
- package/src/x_ite/Fields/SFNode.js +5 -3
- package/src/x_ite/Fields/SFRotation.js +2 -4
- package/src/x_ite/Fields/SFVecPrototypeTemplate.js +3 -3
- package/src/x_ite/InputOutput/FileLoader.js +16 -22
- package/src/x_ite/InputOutput/Generator.js +1 -1
- package/src/x_ite/Parser/X3DParser.js +4 -4
- package/src/x_ite/Parser/XMLParser.js +13 -19
- package/src/x_ite/Prototype/X3DExternProtoDeclaration.js +5 -4
- package/src/x_ite/Prototype/X3DProtoDeclaration.js +4 -3
- package/docs/_tabs/imprint.md +0 -52
package/dist/x_ite.zip
CHANGED
|
Binary file
|
package/docs/_config.yml
CHANGED
|
@@ -542,24 +542,6 @@ There is a ZIP archive available to locally install X_ITE on your server. Compre
|
|
|
542
542
|
|
|
543
543
|
[Download X_ITE ZIP archive](https://create3000.github.io/code/x_ite/latest/x_ite.zip)
|
|
544
544
|
|
|
545
|
-
### You can also get it on NPM
|
|
546
|
-
|
|
547
|
-
```sh
|
|
548
|
-
$ npm install x_ite
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
It can be used in [Electron](https://www.electronjs.org){:target="_blank"} apps in a preload script of the **renderer process** like this:
|
|
552
|
-
|
|
553
|
-
```js
|
|
554
|
-
window .addEventListener ("DOMContentLoaded", () =>
|
|
555
|
-
{
|
|
556
|
-
const X3D = require ("x_ite")
|
|
557
|
-
...
|
|
558
|
-
})
|
|
559
|
-
```
|
|
560
|
-
|
|
561
|
-
Make sure that contextIsolation is set to **false** when creating a BrowserWindow instance.
|
|
562
|
-
|
|
563
545
|
### Using X_ITE with a CDN
|
|
564
546
|
|
|
565
547
|
CDNs can offer a performance benefit by hosting X_ITE on servers spread across the globe. This also offers an advantage that if the visitor to your webpage has already downloaded a copy of X_ITE from the same CDN, it won't have to be re-downloaded. To use the X_ITE CDN, just reference the CSS and JavaScript file in the script element directly from the GitHub CDN or jsDelivr CDN domain.
|
|
@@ -596,6 +578,24 @@ If you are in production and everything is working well, then use a fixed versio
|
|
|
596
578
|
<script src="https://cdn.jsdelivr.net/npm/x_ite@{{ site.version }}/dist/x_ite.min.js"></script>
|
|
597
579
|
```
|
|
598
580
|
|
|
581
|
+
### You can also get it from NPM
|
|
582
|
+
|
|
583
|
+
```console
|
|
584
|
+
$ npm install x_ite
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
It can be used in [Electron](https://www.electronjs.org){:target="_blank"} apps in a preload script of the **renderer process** in a way like this:
|
|
588
|
+
|
|
589
|
+
```js
|
|
590
|
+
window .addEventListener ("DOMContentLoaded", () =>
|
|
591
|
+
{
|
|
592
|
+
const X3D = require ("x_ite")
|
|
593
|
+
...
|
|
594
|
+
})
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
Make sure that contextIsolation is set to **false** when creating a BrowserWindow instance.
|
|
598
|
+
|
|
599
599
|
## Embedding X_ITE within a Web Page
|
|
600
600
|
|
|
601
601
|
To display your X3D scene in a HTML5 page, first save your scene as X3D XML Encoded file, X3D JSON Encoded file, or as X3D Classic Encoded file, i.e. create a file with the extension .x3d, .x3dj, .x3dv, or .wrl.
|
|
@@ -29,14 +29,14 @@ If you have [Python](https://www.python.org){:target="_blank"} installed, then i
|
|
|
29
29
|
|
|
30
30
|
Just open a Terminal and go to the directory you want to make available.
|
|
31
31
|
|
|
32
|
-
```
|
|
32
|
+
```console
|
|
33
33
|
# Let's make the Desktop directory available.
|
|
34
34
|
$ cd Desktop
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Type in the following command to start the server.
|
|
38
38
|
|
|
39
|
-
```
|
|
39
|
+
```console
|
|
40
40
|
$ python3 -m http.server
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -99,9 +99,9 @@ $(function ()
|
|
|
99
99
|
`;
|
|
100
100
|
|
|
101
101
|
require .config ({ paths: { "vs": "https://cdn.jsdelivr.net/npm/monaco-editor@latest/min/vs" }});
|
|
102
|
-
require (["vs/editor/editor.main"], () =>
|
|
102
|
+
require (["vs/editor/editor.main"], async () =>
|
|
103
103
|
{
|
|
104
|
-
const darkMode = (window .matchMedia
|
|
104
|
+
const darkMode = (window .matchMedia ?.("(prefers-color-scheme: dark)") .matches || $("html") .attr ("data-mode") === "dark") && ($("html") .attr ("data-mode") !== "light");
|
|
105
105
|
|
|
106
106
|
const editor = monaco .editor .create (document .getElementById ("editor"),
|
|
107
107
|
{
|
|
@@ -115,25 +115,29 @@ $(function ()
|
|
|
115
115
|
minimap: { enabled: false },
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
+
const url = new URL (document .location .href) .searchParams .get ("url");
|
|
119
|
+
|
|
120
|
+
if (url)
|
|
121
|
+
{
|
|
122
|
+
const Browser = X3D .getBrowser ();
|
|
123
|
+
|
|
124
|
+
Browser .baseURL = url;
|
|
125
|
+
|
|
126
|
+
await Browser .loadURL (new X3D .MFString (url)) .catch (Function .prototype);
|
|
127
|
+
|
|
128
|
+
const encoding = { XML: "XML", JSON: "JSON", VRML: "VRML" } [Browser .currentScene .encoding] ?? "XML";
|
|
129
|
+
|
|
130
|
+
monaco .editor .setModelLanguage (editor .getModel (), encoding .toLowerCase ());
|
|
131
|
+
|
|
132
|
+
editor .setValue (Browser .currentScene [`to${encoding}String`] ());
|
|
133
|
+
}
|
|
134
|
+
|
|
118
135
|
editor .getModel () .onDidChangeContent (async (event) =>
|
|
119
136
|
{
|
|
120
137
|
const
|
|
121
138
|
Browser = X3D .getBrowser (),
|
|
122
139
|
text = editor .getValue (),
|
|
123
|
-
url = "data:," + text;
|
|
124
|
-
|
|
125
|
-
if (text .match (/<\w+/))
|
|
126
|
-
{
|
|
127
|
-
monaco .editor .setModelLanguage (editor .getModel (), "xml");
|
|
128
|
-
}
|
|
129
|
-
else if (text .match (/"\w+"\s*:\s*\{/))
|
|
130
|
-
{
|
|
131
|
-
monaco .editor .setModelLanguage (editor .getModel (), "json");
|
|
132
|
-
}
|
|
133
|
-
else if (text .match (/\w+\s*\{/))
|
|
134
|
-
{
|
|
135
|
-
monaco .editor .setModelLanguage (editor .getModel (), "vrml");
|
|
136
|
-
}
|
|
140
|
+
url = "data:," + encodeURIComponent (text);
|
|
137
141
|
|
|
138
142
|
if (Browser .getActiveViewpoint ())
|
|
139
143
|
{
|
|
@@ -153,9 +157,12 @@ $(function ()
|
|
|
153
157
|
{
|
|
154
158
|
await Browser .loadURL (new X3D .MFString (url)) .catch (Function .prototype);
|
|
155
159
|
}
|
|
160
|
+
|
|
161
|
+
monaco .editor .setModelLanguage (editor .getModel (), Browser .currentScene .encoding .toLowerCase ());
|
|
156
162
|
});
|
|
157
163
|
|
|
158
|
-
|
|
164
|
+
if (!url)
|
|
165
|
+
editor .setValue (box .replace (/ {3}/g, " "));
|
|
159
166
|
});
|
|
160
167
|
})
|
|
161
168
|
</script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "x_ite",
|
|
3
|
-
"version": "8.6.
|
|
3
|
+
"version": "8.6.20",
|
|
4
4
|
"description": "X_ITE X3D Browser, view and manipulate X3D and VRML scenes in HTML.",
|
|
5
5
|
"homepage": "https://create3000.github.io/x_ite/",
|
|
6
6
|
"author": "Holger Seelig <holger.seelig@gmail.com>",
|
|
@@ -71,13 +71,13 @@
|
|
|
71
71
|
"opentype.js": "^1.3.4",
|
|
72
72
|
"pako": "^2.1.0",
|
|
73
73
|
"string-replace-webpack-plugin": "^0.1.3",
|
|
74
|
-
"webpack": "^5.
|
|
75
|
-
"webpack-cli": "^5.0.
|
|
74
|
+
"webpack": "^5.80.0",
|
|
75
|
+
"webpack-cli": "^5.0.2",
|
|
76
76
|
"webpack-shell-plugin-next": "^2.3.1"
|
|
77
77
|
},
|
|
78
78
|
"scripts": {
|
|
79
79
|
"test": "cd ../x_ite-tests && npm test",
|
|
80
|
-
"lint": "
|
|
80
|
+
"lint": "eslint src",
|
|
81
81
|
"build": "make",
|
|
82
82
|
"-prebuild:js": "npm run lint"
|
|
83
83
|
}
|
package/src/example.html
CHANGED
|
@@ -16,6 +16,6 @@ x3d-canvas {
|
|
|
16
16
|
<x3d-canvas src="https://create3000.github.io/media/x_ite/info/info.x3d">
|
|
17
17
|
<p>Your browser may not support all features required by X_ITE!</p>
|
|
18
18
|
</x3d-canvas>
|
|
19
|
-
<
|
|
19
|
+
<a>If local files are not loaded <a href="https://create3000.github.io/x_ite/setup-a-localhost-server">consider setup a localhost server</a> or use <a href="https://create3000.github.io/x_ite/dom-integration">DOM Integration methods</a>.</p>
|
|
20
20
|
</body>
|
|
21
21
|
</html>
|
|
@@ -76,26 +76,28 @@ MergeSort .prototype =
|
|
|
76
76
|
},
|
|
77
77
|
merge: function (lo, m, hi)
|
|
78
78
|
{
|
|
79
|
+
const { array, auxiliary, compare } = this;
|
|
80
|
+
|
|
79
81
|
let i, j, k;
|
|
80
82
|
|
|
81
83
|
i = 0, j = lo;
|
|
82
84
|
// Copy first half of array a to auxiliary array b.
|
|
83
85
|
while (j <= m)
|
|
84
|
-
|
|
86
|
+
auxiliary [i++] = array [j++];
|
|
85
87
|
|
|
86
88
|
i = 0; k = lo;
|
|
87
89
|
// Copy back next-greatest element at each time.
|
|
88
90
|
while (k < j && j <= hi)
|
|
89
91
|
{
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
+
if (compare (array [j], auxiliary [i]))
|
|
93
|
+
array [k++] = array [j++];
|
|
92
94
|
else
|
|
93
|
-
|
|
95
|
+
array [k++] = auxiliary [i++];
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
// Copy back remaining elements of first half (if any).
|
|
97
99
|
while (k < j)
|
|
98
|
-
|
|
100
|
+
array [k++] = auxiliary [i++];
|
|
99
101
|
}
|
|
100
102
|
};
|
|
101
103
|
|
|
@@ -68,6 +68,8 @@ PartialSort .prototype =
|
|
|
68
68
|
},
|
|
69
69
|
partialsort: function (lo, hi)
|
|
70
70
|
{
|
|
71
|
+
const { array, compare } = this;
|
|
72
|
+
|
|
71
73
|
let gap = this .last, i, last;
|
|
72
74
|
|
|
73
75
|
if (gap > 1)
|
|
@@ -77,7 +79,7 @@ PartialSort .prototype =
|
|
|
77
79
|
{
|
|
78
80
|
const j = i + gap;
|
|
79
81
|
|
|
80
|
-
if (
|
|
82
|
+
if (compare (array [j], array [i]))
|
|
81
83
|
{
|
|
82
84
|
const t = array [i];
|
|
83
85
|
array [i] = array [j];
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
******************************************************************************/
|
|
47
47
|
|
|
48
48
|
import Vector3 from "./Vector3.js";
|
|
49
|
+
import Matrix3 from "./Matrix3.js";
|
|
49
50
|
import Algorithm from "../Algorithm.js";
|
|
50
51
|
|
|
51
52
|
function Quaternion (x, y, z, w)
|
|
@@ -137,7 +138,7 @@ Quaternion .prototype =
|
|
|
137
138
|
|
|
138
139
|
return this;
|
|
139
140
|
},
|
|
140
|
-
getMatrix: function (matrix)
|
|
141
|
+
getMatrix: function (matrix = new Matrix3 ())
|
|
141
142
|
{
|
|
142
143
|
const { x, y, z, w } = this;
|
|
143
144
|
|
|
@@ -168,11 +169,11 @@ Quaternion .prototype =
|
|
|
168
169
|
},
|
|
169
170
|
isReal: function ()
|
|
170
171
|
{
|
|
171
|
-
return !
|
|
172
|
+
return !(this .x || this .y || this .z);
|
|
172
173
|
},
|
|
173
174
|
isImag: function ()
|
|
174
175
|
{
|
|
175
|
-
return !
|
|
176
|
+
return !this .w;
|
|
176
177
|
},
|
|
177
178
|
equals: function (quat)
|
|
178
179
|
{
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
import Quaternion from "./Quaternion.js";
|
|
49
49
|
import Vector3 from "./Vector3.js";
|
|
50
50
|
import Vector4 from "./Vector4.js";
|
|
51
|
+
import Matrix3 from "./Matrix3.js";
|
|
51
52
|
import Algorithm from "../Algorithm.js";
|
|
52
53
|
|
|
53
54
|
const
|
|
@@ -280,7 +281,7 @@ Rotation4 .prototype =
|
|
|
280
281
|
{
|
|
281
282
|
this .set (vector .x, vector .y, vector .z, this [_angle]);
|
|
282
283
|
},
|
|
283
|
-
getAxis: function (axis)
|
|
284
|
+
getAxis: function (axis = new Vector3 (0, 0, 0))
|
|
284
285
|
{
|
|
285
286
|
return axis .set (this [_x], this [_y], this [_z]);
|
|
286
287
|
},
|
|
@@ -290,7 +291,7 @@ Rotation4 .prototype =
|
|
|
290
291
|
this .update ();
|
|
291
292
|
return this;
|
|
292
293
|
},
|
|
293
|
-
getQuaternion: function (quaternion)
|
|
294
|
+
getQuaternion: function (quaternion = new Quaternion (0, 0, 0, 1))
|
|
294
295
|
{
|
|
295
296
|
return quaternion .assign (this [_quaternion]);
|
|
296
297
|
},
|
|
@@ -300,7 +301,7 @@ Rotation4 .prototype =
|
|
|
300
301
|
this .update ();
|
|
301
302
|
return this;
|
|
302
303
|
},
|
|
303
|
-
getMatrix: function (matrix)
|
|
304
|
+
getMatrix: function (matrix = new Matrix3 ())
|
|
304
305
|
{
|
|
305
306
|
return this [_quaternion] .getMatrix (matrix);
|
|
306
307
|
},
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
import X3DChildObject from "./X3DChildObject.js";
|
|
49
49
|
import Events from "./Events.js";
|
|
50
50
|
|
|
51
|
-
const _browser = Symbol .for ("X3DEventObject.browser");
|
|
51
|
+
const _browser = Symbol .for ("X_ITE.X3DEventObject.browser");
|
|
52
52
|
|
|
53
53
|
function X3DEventObject (browser)
|
|
54
54
|
{
|
|
@@ -66,6 +66,7 @@ X3DEventObject .prototype = Object .assign (Object .create (X3DChildObject .prot
|
|
|
66
66
|
},
|
|
67
67
|
getExtendedEventHandling: function ()
|
|
68
68
|
{
|
|
69
|
+
// Whether initializeOnly field are treated like inputOnly and inputOutput fields.
|
|
69
70
|
return true;
|
|
70
71
|
},
|
|
71
72
|
addEvent: function (field)
|
|
@@ -91,7 +92,7 @@ X3DEventObject .prototype = Object .assign (Object .create (X3DChildObject .prot
|
|
|
91
92
|
if (this .isTainted ())
|
|
92
93
|
return;
|
|
93
94
|
|
|
94
|
-
if (field .isInput () || (this .getExtendedEventHandling () &&
|
|
95
|
+
if (field .isInput () || (this .getExtendedEventHandling () && field .isInitializable ()))
|
|
95
96
|
{
|
|
96
97
|
this .addNodeEvent ();
|
|
97
98
|
}
|
|
@@ -61,7 +61,7 @@ const
|
|
|
61
61
|
_inputRoutes = Symbol (),
|
|
62
62
|
_outputRoutes = Symbol (),
|
|
63
63
|
_routeCallbacks = Symbol (),
|
|
64
|
-
_uniformLocation = Symbol .for ("X3DField.uniformLocation");
|
|
64
|
+
_uniformLocation = Symbol .for ("X_ITE.X3DField.uniformLocation");
|
|
65
65
|
|
|
66
66
|
function X3DField (value)
|
|
67
67
|
{
|
|
@@ -76,7 +76,6 @@ X3DField .prototype = Object .assign (Object .create (X3DChildObject .prototype)
|
|
|
76
76
|
[_value]: null,
|
|
77
77
|
[_accessType]: X3DConstants .initializeOnly,
|
|
78
78
|
[_unit]: null,
|
|
79
|
-
[_uniformLocation]: null,
|
|
80
79
|
[_references]: new Set (),
|
|
81
80
|
[_referencesCallbacks]: new Map (),
|
|
82
81
|
[_fieldInterests]: new Set (),
|
|
@@ -84,6 +83,7 @@ X3DField .prototype = Object .assign (Object .create (X3DChildObject .prototype)
|
|
|
84
83
|
[_inputRoutes]: new Set (),
|
|
85
84
|
[_outputRoutes]: new Set (),
|
|
86
85
|
[_routeCallbacks]: new Map (),
|
|
86
|
+
[_uniformLocation]: null,
|
|
87
87
|
create: function ()
|
|
88
88
|
{
|
|
89
89
|
return new (this .constructor) ();
|
|
@@ -449,7 +449,7 @@ ExamineViewer .prototype = Object .assign (Object .create (X3DViewer .prototype)
|
|
|
449
449
|
{
|
|
450
450
|
this .tapedTwice = true;
|
|
451
451
|
|
|
452
|
-
setTimeout (
|
|
452
|
+
setTimeout (() => this .tapedTwice = false, 300);
|
|
453
453
|
}
|
|
454
454
|
|
|
455
455
|
break;
|
|
@@ -533,6 +533,9 @@ ExamineViewer .prototype = Object .assign (Object .create (X3DViewer .prototype)
|
|
|
533
533
|
event .deltaY = delta;
|
|
534
534
|
event .zoomFactor = Math .abs (delta) / $(window) .width ();
|
|
535
535
|
|
|
536
|
+
event .pageX = (touches [0] .pageX + touches [1] .pageX) / 2;
|
|
537
|
+
event .pageY = (touches [0] .pageY + touches [1] .pageY) / 2;
|
|
538
|
+
|
|
536
539
|
this .mousewheel (event);
|
|
537
540
|
|
|
538
541
|
break;
|
|
@@ -370,6 +370,9 @@ LookAtViewer .prototype = Object .assign (Object .create (X3DViewer .prototype),
|
|
|
370
370
|
|
|
371
371
|
event .deltaY = delta;
|
|
372
372
|
event .zoomFactor = Math .abs (delta) / $(window) .width ();
|
|
373
|
+
|
|
374
|
+
event .pageX = (touches [0] .pageX + touches [1] .pageX) / 2;
|
|
375
|
+
event .pageY = (touches [0] .pageY + touches [1] .pageY) / 2;
|
|
373
376
|
|
|
374
377
|
this .mousewheel (event);
|
|
375
378
|
}
|
|
@@ -54,7 +54,7 @@ const
|
|
|
54
54
|
_loadingTotal = Symbol (),
|
|
55
55
|
_loadingObjects = Symbol (),
|
|
56
56
|
_loading = Symbol (),
|
|
57
|
-
|
|
57
|
+
_baseURL = Symbol (),
|
|
58
58
|
_defaultScene = Symbol (),
|
|
59
59
|
_set_loadCount = Symbol ();
|
|
60
60
|
|
|
@@ -77,7 +77,7 @@ function X3DNetworkingContext ()
|
|
|
77
77
|
this [_loadingTotal] = 0;
|
|
78
78
|
this [_loadingObjects] = new Set ();
|
|
79
79
|
this [_loading] = false;
|
|
80
|
-
this [
|
|
80
|
+
this [_baseURL] = getBaseURI (this .getElement () [0]);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
X3DNetworkingContext .prototype =
|
|
@@ -90,9 +90,13 @@ X3DNetworkingContext .prototype =
|
|
|
90
90
|
{
|
|
91
91
|
return URLs .getProviderUrl ();
|
|
92
92
|
},
|
|
93
|
-
|
|
93
|
+
getBaseURL: function ()
|
|
94
94
|
{
|
|
95
|
-
return this [
|
|
95
|
+
return this [_baseURL];
|
|
96
|
+
},
|
|
97
|
+
setBaseURL: function (value)
|
|
98
|
+
{
|
|
99
|
+
this [_baseURL] = String (value);
|
|
96
100
|
},
|
|
97
101
|
getDefaultScene: function ()
|
|
98
102
|
{
|
|
@@ -102,7 +106,6 @@ X3DNetworkingContext .prototype =
|
|
|
102
106
|
|
|
103
107
|
this [_defaultScene] .setPrivate (true);
|
|
104
108
|
this [_defaultScene] .setLive (true);
|
|
105
|
-
this [_defaultScene] .setup ();
|
|
106
109
|
|
|
107
110
|
this .getDefaultScene = function () { return this [_defaultScene]; };
|
|
108
111
|
|
|
@@ -110,6 +113,10 @@ X3DNetworkingContext .prototype =
|
|
|
110
113
|
|
|
111
114
|
return this [_defaultScene];
|
|
112
115
|
},
|
|
116
|
+
getBrowserLoading: function ()
|
|
117
|
+
{
|
|
118
|
+
return this [_loading];
|
|
119
|
+
},
|
|
113
120
|
setBrowserLoading: function (value)
|
|
114
121
|
{
|
|
115
122
|
this [_loading] = value;
|
|
@@ -137,13 +144,9 @@ X3DNetworkingContext .prototype =
|
|
|
137
144
|
}
|
|
138
145
|
}
|
|
139
146
|
},
|
|
140
|
-
|
|
141
|
-
{
|
|
142
|
-
return this [_loading];
|
|
143
|
-
},
|
|
144
|
-
getDisplayLoadCount: function ()
|
|
147
|
+
getLoadingObjects: function ()
|
|
145
148
|
{
|
|
146
|
-
return
|
|
149
|
+
return this [_loadingObjects];
|
|
147
150
|
},
|
|
148
151
|
addLoadingObject: function (object)
|
|
149
152
|
{
|
|
@@ -167,6 +170,10 @@ X3DNetworkingContext .prototype =
|
|
|
167
170
|
this .setLoadCount (this [_loadingObjects] .size);
|
|
168
171
|
this .setCursor (this .getCursor ());
|
|
169
172
|
},
|
|
173
|
+
getDisplayLoadCount: function ()
|
|
174
|
+
{
|
|
175
|
+
return [... this [_loadingObjects]] .reduce ((v, o) => v + !(o .isPrivate ?.() ?? true), 0);
|
|
176
|
+
},
|
|
170
177
|
setLoadCount: function (value)
|
|
171
178
|
{
|
|
172
179
|
this ._loadCount = value;
|