@needle-tools/engine 4.3.0-alpha → 4.3.0-alpha.1
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/CHANGELOG.md +3 -0
- package/dist/needle-engine.bundle.js +1467 -222
- package/dist/needle-engine.bundle.light.js +1467 -222
- package/dist/needle-engine.bundle.light.min.js +32 -32
- package/dist/needle-engine.bundle.light.umd.cjs +3 -3
- package/dist/needle-engine.bundle.min.js +3 -3
- package/dist/needle-engine.bundle.umd.cjs +3 -3
- package/dist/needle-engine.light.d.ts +9 -9
- package/lib/engine/engine_types.d.ts +162 -17
- package/lib/engine-components/Animator.d.ts +129 -21
- package/lib/engine-components/Animator.js +115 -21
- package/lib/engine-components/Animator.js.map +1 -1
- package/lib/engine-components/AnimatorController.d.ts +161 -32
- package/lib/engine-components/AnimatorController.js +176 -29
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/AudioListener.d.ts +16 -5
- package/lib/engine-components/AudioListener.js +16 -5
- package/lib/engine-components/AudioListener.js.map +1 -1
- package/lib/engine-components/AudioSource.d.ts +120 -28
- package/lib/engine-components/AudioSource.js +120 -37
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/AvatarLoader.d.ts +61 -0
- package/lib/engine-components/AvatarLoader.js +61 -1
- package/lib/engine-components/AvatarLoader.js.map +1 -1
- package/lib/engine-components/AxesHelper.d.ts +19 -1
- package/lib/engine-components/AxesHelper.js +19 -1
- package/lib/engine-components/AxesHelper.js.map +1 -1
- package/lib/engine-components/BoxHelperComponent.d.ts +26 -0
- package/lib/engine-components/BoxHelperComponent.js +26 -0
- package/lib/engine-components/BoxHelperComponent.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +126 -37
- package/lib/engine-components/Camera.js +139 -37
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CameraUtils.js +20 -0
- package/lib/engine-components/CameraUtils.js.map +1 -1
- package/lib/engine-components/Collider.d.ts +95 -21
- package/lib/engine-components/Collider.js +100 -23
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Component.d.ts +554 -106
- package/lib/engine-components/Component.js +352 -81
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/DragControls.d.ts +95 -21
- package/lib/engine-components/DragControls.js +126 -32
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/DropListener.d.ts +99 -16
- package/lib/engine-components/DropListener.js +119 -14
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/Light.d.ts +102 -5
- package/lib/engine-components/Light.js +102 -44
- package/lib/engine-components/Light.js.map +1 -1
- package/lib/engine-components/NeedleMenu.d.ts +28 -11
- package/lib/engine-components/NeedleMenu.js +28 -11
- package/lib/engine-components/NeedleMenu.js.map +1 -1
- package/lib/engine-components/Networking.d.ts +37 -5
- package/lib/engine-components/Networking.js +37 -5
- package/lib/engine-components/Networking.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.js +44 -0
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/lib/engine-components/SpatialTrigger.d.ts +66 -1
- package/lib/engine-components/SpatialTrigger.js +74 -2
- package/lib/engine-components/SpatialTrigger.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.d.ts +66 -4
- package/lib/engine-components/SpectatorCamera.js +132 -6
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SyncedTransform.d.ts +45 -6
- package/lib/engine-components/SyncedTransform.js +45 -6
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/TransformGizmo.d.ts +49 -3
- package/lib/engine-components/TransformGizmo.js +49 -3
- package/lib/engine-components/TransformGizmo.js.map +1 -1
- package/lib/engine-components/webxr/WebXR.d.ts +131 -22
- package/lib/engine-components/webxr/WebXR.js +132 -23
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/lib/engine-components-experimental/networking/PlayerSync.d.ts +82 -9
- package/lib/engine-components-experimental/networking/PlayerSync.js +76 -11
- package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/engine_types.ts +179 -18
- package/src/engine-components/Animator.ts +142 -22
- package/src/engine-components/AnimatorController.ts +184 -34
- package/src/engine-components/AudioListener.ts +16 -5
- package/src/engine-components/AudioSource.ts +126 -37
- package/src/engine-components/AvatarLoader.ts +61 -2
- package/src/engine-components/AxesHelper.ts +21 -1
- package/src/engine-components/BoxHelperComponent.ts +26 -0
- package/src/engine-components/Camera.ts +147 -41
- package/src/engine-components/CameraUtils.ts +20 -0
- package/src/engine-components/Collider.ts +102 -27
- package/src/engine-components/Component.ts +605 -129
- package/src/engine-components/DragControls.ts +134 -38
- package/src/engine-components/DropListener.ts +143 -23
- package/src/engine-components/Light.ts +105 -44
- package/src/engine-components/NeedleMenu.ts +29 -11
- package/src/engine-components/Networking.ts +37 -6
- package/src/engine-components/SceneSwitcher.ts +48 -1
- package/src/engine-components/SpatialTrigger.ts +80 -3
- package/src/engine-components/SpectatorCamera.ts +136 -18
- package/src/engine-components/SyncedTransform.ts +50 -7
- package/src/engine-components/TransformGizmo.ts +49 -4
- package/src/engine-components/webxr/WebXR.ts +144 -27
- package/src/engine-components-experimental/networking/PlayerSync.ts +85 -13
|
@@ -20,79 +20,80 @@ function toRadians(degrees) {
|
|
|
20
20
|
}
|
|
21
21
|
const shadowMaxDistance = 300;
|
|
22
22
|
const debug = getParam("debuglights");
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Defines the type of light in a scene.
|
|
25
|
+
*/
|
|
26
26
|
export var LightType;
|
|
27
27
|
(function (LightType) {
|
|
28
|
-
|
|
29
|
-
/// <para>The light is a spot light.</para>
|
|
30
|
-
/// </summary>
|
|
28
|
+
/** Spot light that emits light in a cone shape */
|
|
31
29
|
LightType[LightType["Spot"] = 0] = "Spot";
|
|
32
|
-
|
|
33
|
-
/// <para>The light is a directional light.</para>
|
|
34
|
-
/// </summary>
|
|
30
|
+
/** Directional light that emits parallel light rays in a specific direction */
|
|
35
31
|
LightType[LightType["Directional"] = 1] = "Directional";
|
|
36
|
-
|
|
37
|
-
/// <para>The light is a point light.</para>
|
|
38
|
-
/// </summary>
|
|
32
|
+
/** Point light that emits light in all directions from a single point */
|
|
39
33
|
LightType[LightType["Point"] = 2] = "Point";
|
|
34
|
+
/** Area light */
|
|
40
35
|
LightType[LightType["Area"] = 3] = "Area";
|
|
41
|
-
|
|
42
|
-
/// <para>The light is a rectangle shaped area light. It affects only baked lightmaps and lightprobes.</para>
|
|
43
|
-
/// </summary>
|
|
36
|
+
/** Rectangle shaped area light that only affects baked lightmaps and light probes */
|
|
44
37
|
LightType[LightType["Rectangle"] = 3] = "Rectangle";
|
|
45
|
-
|
|
46
|
-
/// <para>The light is a disc shaped area light. It affects only baked lightmaps and lightprobes.</para>
|
|
47
|
-
/// </summary>
|
|
38
|
+
/** Disc shaped area light that only affects baked lightmaps and light probes */
|
|
48
39
|
LightType[LightType["Disc"] = 4] = "Disc";
|
|
49
40
|
})(LightType || (LightType = {}));
|
|
41
|
+
/**
|
|
42
|
+
* Defines how a light contributes to the scene lighting.
|
|
43
|
+
*/
|
|
50
44
|
export var LightmapBakeType;
|
|
51
45
|
(function (LightmapBakeType) {
|
|
52
|
-
|
|
53
|
-
/// <para>Realtime lights cast run time light and shadows. They can change position, orientation, color, brightness, and many other properties at run time. No lighting gets baked into lightmaps or light probes..</para>
|
|
54
|
-
/// </summary>
|
|
46
|
+
/** Light affects the scene in real-time with no baking */
|
|
55
47
|
LightmapBakeType[LightmapBakeType["Realtime"] = 4] = "Realtime";
|
|
56
|
-
|
|
57
|
-
/// <para>Baked lights cannot move or change in any way during run time. All lighting for static objects gets baked into lightmaps. Lighting and shadows for dynamic objects gets baked into Light Probes.</para>
|
|
58
|
-
/// </summary>
|
|
48
|
+
/** Light is completely baked into lightmaps and light probes */
|
|
59
49
|
LightmapBakeType[LightmapBakeType["Baked"] = 2] = "Baked";
|
|
60
|
-
|
|
61
|
-
/// <para>Mixed lights allow a mix of realtime and baked lighting, based on the Mixed Lighting Mode used. These lights cannot move, but can change color and intensity at run time. Changes to color and intensity only affect direct lighting as indirect lighting gets baked. If using Subtractive mode, changes to color or intensity are not calculated at run time on static objects.</para>
|
|
62
|
-
/// </summary>
|
|
50
|
+
/** Combines aspects of realtime and baked lighting */
|
|
63
51
|
LightmapBakeType[LightmapBakeType["Mixed"] = 1] = "Mixed";
|
|
64
52
|
})(LightmapBakeType || (LightmapBakeType = {}));
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Defines the shadow casting options for a Light.
|
|
55
|
+
* @enum {number}
|
|
56
|
+
*/
|
|
68
57
|
var LightShadows;
|
|
69
58
|
(function (LightShadows) {
|
|
70
|
-
|
|
71
|
-
/// <para>Do not cast shadows (default).</para>
|
|
72
|
-
/// </summary>
|
|
59
|
+
/** No shadows are cast */
|
|
73
60
|
LightShadows[LightShadows["None"] = 0] = "None";
|
|
74
|
-
|
|
75
|
-
/// <para>Cast "hard" shadows (with no shadow filtering).</para>
|
|
76
|
-
/// </summary>
|
|
61
|
+
/** Hard-edged shadows without filtering */
|
|
77
62
|
LightShadows[LightShadows["Hard"] = 1] = "Hard";
|
|
78
|
-
|
|
79
|
-
/// <para>Cast "soft" shadows (with 4x PCF filtering).</para>
|
|
80
|
-
/// </summary>
|
|
63
|
+
/** Soft shadows with PCF filtering */
|
|
81
64
|
LightShadows[LightShadows["Soft"] = 2] = "Soft";
|
|
82
65
|
})(LightShadows || (LightShadows = {}));
|
|
83
|
-
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
66
|
+
/**
|
|
67
|
+
* The Light component creates a light source in the scene.
|
|
68
|
+
* Supports directional, spot, and point light types with various customization options.
|
|
69
|
+
* Lights can cast shadows with configurable settings and can be set to baked or realtime rendering.
|
|
70
|
+
*
|
|
71
|
+
* Debug mode can be enabled with the URL parameter `?debuglights`, which shows
|
|
72
|
+
* additional console output and visual helpers for lights.
|
|
73
|
+
*
|
|
88
74
|
* @category Rendering
|
|
89
75
|
* @group Components
|
|
90
76
|
*/
|
|
91
77
|
export class Light extends Behaviour {
|
|
78
|
+
/**
|
|
79
|
+
* The type of light (spot, directional, point, etc.)
|
|
80
|
+
*/
|
|
92
81
|
type = 0;
|
|
82
|
+
/**
|
|
83
|
+
* The maximum distance the light affects
|
|
84
|
+
*/
|
|
93
85
|
range = 1;
|
|
86
|
+
/**
|
|
87
|
+
* The full outer angle of the spotlight cone in degrees
|
|
88
|
+
*/
|
|
94
89
|
spotAngle = 1;
|
|
90
|
+
/**
|
|
91
|
+
* The angle of the inner cone in degrees for soft-edge spotlights
|
|
92
|
+
*/
|
|
95
93
|
innerSpotAngle = 1;
|
|
94
|
+
/**
|
|
95
|
+
* The color of the light
|
|
96
|
+
*/
|
|
96
97
|
set color(val) {
|
|
97
98
|
this._color = val;
|
|
98
99
|
if (this.light !== undefined) {
|
|
@@ -105,6 +106,9 @@ export class Light extends Behaviour {
|
|
|
105
106
|
return this._color;
|
|
106
107
|
}
|
|
107
108
|
_color = new Color(0xffffff);
|
|
109
|
+
/**
|
|
110
|
+
* The near plane distance for shadow projection
|
|
111
|
+
*/
|
|
108
112
|
set shadowNearPlane(val) {
|
|
109
113
|
if (val === this._shadowNearPlane)
|
|
110
114
|
return;
|
|
@@ -116,6 +120,9 @@ export class Light extends Behaviour {
|
|
|
116
120
|
}
|
|
117
121
|
get shadowNearPlane() { return this._shadowNearPlane; }
|
|
118
122
|
_shadowNearPlane = .1;
|
|
123
|
+
/**
|
|
124
|
+
* Shadow bias value to reduce shadow acne and peter-panning
|
|
125
|
+
*/
|
|
119
126
|
set shadowBias(val) {
|
|
120
127
|
if (val === this._shadowBias)
|
|
121
128
|
return;
|
|
@@ -127,6 +134,9 @@ export class Light extends Behaviour {
|
|
|
127
134
|
}
|
|
128
135
|
get shadowBias() { return this._shadowBias; }
|
|
129
136
|
_shadowBias = 0;
|
|
137
|
+
/**
|
|
138
|
+
* Shadow normal bias to reduce shadow acne on sloped surfaces
|
|
139
|
+
*/
|
|
130
140
|
set shadowNormalBias(val) {
|
|
131
141
|
if (val === this._shadowNormalBias)
|
|
132
142
|
return;
|
|
@@ -140,6 +150,9 @@ export class Light extends Behaviour {
|
|
|
140
150
|
_shadowNormalBias = 0;
|
|
141
151
|
/** when enabled this will remove the multiplication when setting the shadow bias settings initially */
|
|
142
152
|
_overrideShadowBiasSettings = false;
|
|
153
|
+
/**
|
|
154
|
+
* Shadow casting mode (None, Hard, or Soft)
|
|
155
|
+
*/
|
|
143
156
|
set shadows(val) {
|
|
144
157
|
this._shadows = val;
|
|
145
158
|
if (this.light) {
|
|
@@ -149,7 +162,14 @@ export class Light extends Behaviour {
|
|
|
149
162
|
}
|
|
150
163
|
get shadows() { return this._shadows; }
|
|
151
164
|
_shadows = 1;
|
|
165
|
+
/**
|
|
166
|
+
* Determines if the light contributes to realtime lighting, baked lighting, or a mix
|
|
167
|
+
*/
|
|
152
168
|
lightmapBakeType = LightmapBakeType.Realtime;
|
|
169
|
+
/**
|
|
170
|
+
* Brightness of the light. In WebXR experiences, the intensity is automatically
|
|
171
|
+
* adjusted based on the AR session scale to maintain consistent lighting.
|
|
172
|
+
*/
|
|
153
173
|
set intensity(val) {
|
|
154
174
|
this._intensity = val;
|
|
155
175
|
if (this.light) {
|
|
@@ -167,6 +187,9 @@ export class Light extends Behaviour {
|
|
|
167
187
|
}
|
|
168
188
|
get intensity() { return this._intensity; }
|
|
169
189
|
_intensity = -1;
|
|
190
|
+
/**
|
|
191
|
+
* Maximum distance the shadow is projected
|
|
192
|
+
*/
|
|
170
193
|
get shadowDistance() {
|
|
171
194
|
const light = this.light;
|
|
172
195
|
if (light?.shadow) {
|
|
@@ -188,6 +211,9 @@ export class Light extends Behaviour {
|
|
|
188
211
|
// set from additional component
|
|
189
212
|
shadowWidth;
|
|
190
213
|
shadowHeight;
|
|
214
|
+
/**
|
|
215
|
+
* Resolution of the shadow map in pixels (width and height)
|
|
216
|
+
*/
|
|
191
217
|
get shadowResolution() {
|
|
192
218
|
const light = this.light;
|
|
193
219
|
if (light?.shadow) {
|
|
@@ -206,9 +232,15 @@ export class Light extends Behaviour {
|
|
|
206
232
|
}
|
|
207
233
|
}
|
|
208
234
|
_shadowResolution = undefined;
|
|
235
|
+
/**
|
|
236
|
+
* Whether this light's illumination is entirely baked into lightmaps
|
|
237
|
+
*/
|
|
209
238
|
get isBaked() {
|
|
210
239
|
return this.lightmapBakeType === LightmapBakeType.Baked;
|
|
211
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Checks if the GameObject itself is a {@link ThreeLight} object
|
|
243
|
+
*/
|
|
212
244
|
get selfIsLight() {
|
|
213
245
|
if (this.gameObject["isLight"] === true)
|
|
214
246
|
return true;
|
|
@@ -220,7 +252,15 @@ export class Light extends Behaviour {
|
|
|
220
252
|
}
|
|
221
253
|
return false;
|
|
222
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* The underlying three.js {@link ThreeLight} instance
|
|
257
|
+
*/
|
|
223
258
|
light = undefined;
|
|
259
|
+
/**
|
|
260
|
+
* Gets the world position of the light
|
|
261
|
+
* @param vec Vector3 to store the result
|
|
262
|
+
* @returns The world position as a Vector3
|
|
263
|
+
*/
|
|
224
264
|
getWorldPosition(vec) {
|
|
225
265
|
if (this.light) {
|
|
226
266
|
if (this.type === LightType.Directional) {
|
|
@@ -285,6 +325,10 @@ export class Light extends Behaviour {
|
|
|
285
325
|
onLeaveXR(_args) {
|
|
286
326
|
// this.updateIntensity();
|
|
287
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Creates the appropriate three.js light based on the configured light type
|
|
330
|
+
* and applies all settings like shadows, intensity, and color.
|
|
331
|
+
*/
|
|
288
332
|
createLight() {
|
|
289
333
|
const lightAlreadyCreated = this.selfIsLight;
|
|
290
334
|
if (lightAlreadyCreated && !this.light) {
|
|
@@ -400,6 +444,10 @@ export class Light extends Behaviour {
|
|
|
400
444
|
this.gameObject.add(this.light);
|
|
401
445
|
}
|
|
402
446
|
}
|
|
447
|
+
/**
|
|
448
|
+
* Coroutine that updates the main light reference in the context
|
|
449
|
+
* if this directional light should be the main light
|
|
450
|
+
*/
|
|
403
451
|
*updateMainLightRoutine() {
|
|
404
452
|
while (true) {
|
|
405
453
|
if (this.type === LightType.Directional) {
|
|
@@ -411,7 +459,13 @@ export class Light extends Behaviour {
|
|
|
411
459
|
break;
|
|
412
460
|
}
|
|
413
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Controls whether the renderer's shadow map type can be changed when soft shadows are used
|
|
464
|
+
*/
|
|
414
465
|
static allowChangingRendererShadowMapType = true;
|
|
466
|
+
/**
|
|
467
|
+
* Updates shadow settings based on whether the shadows are set to hard or soft
|
|
468
|
+
*/
|
|
415
469
|
updateShadowSoftHard() {
|
|
416
470
|
if (!this.light)
|
|
417
471
|
return;
|
|
@@ -438,6 +492,10 @@ export class Light extends Behaviour {
|
|
|
438
492
|
this.light.shadow.blurSamples = 1;
|
|
439
493
|
}
|
|
440
494
|
}
|
|
495
|
+
/**
|
|
496
|
+
* Configures a directional light by adding and positioning its target
|
|
497
|
+
* @param dirLight The directional light to set up
|
|
498
|
+
*/
|
|
441
499
|
setDirectionalLight(dirLight) {
|
|
442
500
|
dirLight.add(dirLight.target);
|
|
443
501
|
dirLight.target.position.set(0, 0, -1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/engine-components/Light.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Light.js","sourceRoot":"","sources":["../../src/engine-components/Light.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,50 @@
|
|
|
1
1
|
import { Behaviour } from './Component.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Provides configuration options for the built-in Needle Menu.
|
|
4
|
+
* Needle Menu uses HTML in 2D mode, and automatically switches to a 3D menu in VR/AR mode.
|
|
5
|
+
*
|
|
6
|
+
* Controls display options, button visibility, and menu positioning.
|
|
4
7
|
* From code, you can access the menu via {@link Context.menu}.
|
|
5
8
|
* @category User Interface
|
|
6
9
|
* @group Components
|
|
7
10
|
**/
|
|
8
11
|
export declare class NeedleMenu extends Behaviour {
|
|
12
|
+
/**
|
|
13
|
+
* Determines the vertical positioning of the menu on the screen
|
|
14
|
+
*/
|
|
9
15
|
position: "top" | "bottom";
|
|
10
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Controls the visibility of the Needle logo in the menu (requires PRO license)
|
|
18
|
+
*/
|
|
11
19
|
showNeedleLogo: boolean;
|
|
12
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* When enabled, displays the menu in VR/AR mode when the user looks up
|
|
13
22
|
* @default undefined
|
|
14
|
-
|
|
23
|
+
*/
|
|
15
24
|
showSpatialMenu?: boolean;
|
|
16
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* When enabled, adds a fullscreen toggle button to the menu
|
|
17
27
|
* @default undefined
|
|
18
|
-
|
|
28
|
+
*/
|
|
19
29
|
createFullscreenButton?: boolean;
|
|
20
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* When enabled, adds an audio mute/unmute button to the menu
|
|
21
32
|
* @default undefined
|
|
22
|
-
|
|
33
|
+
*/
|
|
23
34
|
createMuteButton?: boolean;
|
|
24
35
|
/**
|
|
25
|
-
* When enabled a button to
|
|
36
|
+
* When enabled, adds a button to display a QR code for sharing the application.
|
|
37
|
+
* The QR code is only displayed on desktop devices.
|
|
26
38
|
* @default undefined
|
|
27
39
|
*/
|
|
28
40
|
createQRCodeButton?: boolean;
|
|
29
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Applies the configured menu options when the component is enabled
|
|
43
|
+
* @hidden
|
|
44
|
+
*/
|
|
30
45
|
onEnable(): void;
|
|
31
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Applies all configured options to the active {@link Context.menu}.
|
|
48
|
+
*/
|
|
32
49
|
applyOptions(): void;
|
|
33
50
|
}
|
|
@@ -8,37 +8,54 @@ import { serializable } from '../engine/engine_serialization.js';
|
|
|
8
8
|
import { DeviceUtilities } from '../engine/engine_utils.js';
|
|
9
9
|
import { Behaviour } from './Component.js';
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Provides configuration options for the built-in Needle Menu.
|
|
12
|
+
* Needle Menu uses HTML in 2D mode, and automatically switches to a 3D menu in VR/AR mode.
|
|
13
|
+
*
|
|
14
|
+
* Controls display options, button visibility, and menu positioning.
|
|
12
15
|
* From code, you can access the menu via {@link Context.menu}.
|
|
13
16
|
* @category User Interface
|
|
14
17
|
* @group Components
|
|
15
18
|
**/
|
|
16
19
|
export class NeedleMenu extends Behaviour {
|
|
20
|
+
/**
|
|
21
|
+
* Determines the vertical positioning of the menu on the screen
|
|
22
|
+
*/
|
|
17
23
|
position = "bottom";
|
|
18
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Controls the visibility of the Needle logo in the menu (requires PRO license)
|
|
26
|
+
*/
|
|
19
27
|
showNeedleLogo = true;
|
|
20
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* When enabled, displays the menu in VR/AR mode when the user looks up
|
|
21
30
|
* @default undefined
|
|
22
|
-
|
|
31
|
+
*/
|
|
23
32
|
showSpatialMenu;
|
|
24
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* When enabled, adds a fullscreen toggle button to the menu
|
|
25
35
|
* @default undefined
|
|
26
|
-
|
|
36
|
+
*/
|
|
27
37
|
createFullscreenButton;
|
|
28
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* When enabled, adds an audio mute/unmute button to the menu
|
|
29
40
|
* @default undefined
|
|
30
|
-
|
|
41
|
+
*/
|
|
31
42
|
createMuteButton;
|
|
32
43
|
/**
|
|
33
|
-
* When enabled a button to
|
|
44
|
+
* When enabled, adds a button to display a QR code for sharing the application.
|
|
45
|
+
* The QR code is only displayed on desktop devices.
|
|
34
46
|
* @default undefined
|
|
35
47
|
*/
|
|
36
48
|
createQRCodeButton;
|
|
37
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Applies the configured menu options when the component is enabled
|
|
51
|
+
* @hidden
|
|
52
|
+
*/
|
|
38
53
|
onEnable() {
|
|
39
54
|
this.applyOptions();
|
|
40
55
|
}
|
|
41
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Applies all configured options to the active {@link Context.menu}.
|
|
58
|
+
*/
|
|
42
59
|
applyOptions() {
|
|
43
60
|
this.context.menu.setPosition(this.position);
|
|
44
61
|
this.context.menu.showNeedleLogo(this.showNeedleLogo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NeedleMenu.js","sourceRoot":"","sources":["../../src/engine-components/NeedleMenu.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"NeedleMenu.js","sourceRoot":"","sources":["../../src/engine-components/NeedleMenu.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;IAQI;AACJ,MAAM,OAAO,UAAW,SAAQ,SAAS;IAErC;;OAEG;IAEH,QAAQ,GAAqB,QAAQ,CAAC;IAEtC;;OAEG;IAEH,cAAc,GAAY,IAAI,CAAC;IAE/B;;;OAGG;IAEH,eAAe,CAAW;IAE1B;;;OAGG;IAEH,sBAAsB,CAAW;IAEjC;;;OAGG;IAEH,gBAAgB,CAAW;IAE3B;;;;OAIG;IAEH,kBAAkB,CAAW;IAE7B;;;OAGG;IACH,QAAQ;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,YAAY;QACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,sBAAsB,KAAK,IAAI;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI;YAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE;gBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aAC5C;SACJ;IACL,CAAC;CAEJ;AAhEG;IADC,YAAY,EAAE;4CACuB;AAMtC;IADC,YAAY,EAAE;kDACgB;AAO/B;IADC,YAAY,EAAE;mDACW;AAO1B;IADC,YAAY,EAAE;0DACkB;AAOjC;IADC,YAAY,EAAE;oDACY;AAQ3B;IADC,YAAY,EAAE;sDACc"}
|
|
@@ -1,22 +1,54 @@
|
|
|
1
1
|
import type { INetworkingWebsocketUrlProvider } from "../engine/engine_networking.js";
|
|
2
2
|
import { Behaviour } from "./Component.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Provides configuration to the built-in networking system.
|
|
5
|
+
* This component supplies websocket URLs for establishing connections.
|
|
6
|
+
* It implements the {@link INetworkingWebsocketUrlProvider} interface.
|
|
7
|
+
*
|
|
5
8
|
* @category Networking
|
|
6
9
|
* @group Components
|
|
7
10
|
*/
|
|
8
11
|
export declare class Networking extends Behaviour implements INetworkingWebsocketUrlProvider {
|
|
9
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* The websocket URL to connect to for networking functionality.
|
|
14
|
+
* Can be a complete URL or a relative path that will be resolved against the current origin.
|
|
15
|
+
*/
|
|
10
16
|
url: string | null;
|
|
11
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Name of the URL parameter that can override the websocket connection URL.
|
|
19
|
+
* When set, the URL will be overridden by the parameter value from the browser URL.
|
|
20
|
+
* For example, with `urlParameterName="ws"`, adding `?ws=ws://localhost:8080` to the browser URL will override the connection URL.
|
|
21
|
+
*/
|
|
12
22
|
urlParameterName: string | null;
|
|
13
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Alternative URL to use when running on a local network.
|
|
25
|
+
* This is particularly useful for development, when the server is running on the same machine as the client.
|
|
14
26
|
*/
|
|
15
27
|
localhost: string | null;
|
|
16
28
|
/** @internal */
|
|
17
29
|
awake(): void;
|
|
18
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Determines the websocket URL to use for networking connections.
|
|
32
|
+
* Processes the configured URL, applying localhost fallbacks when appropriate and
|
|
33
|
+
* handling URL parameter overrides if specified.
|
|
34
|
+
* @returns The formatted websocket URL string or null if no valid URL could be determined
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
19
37
|
getWebsocketUrl(): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Processes a URL string applying various transformations based on network environment.
|
|
40
|
+
* Handles relative paths and localhost fallbacks for local network environments.
|
|
41
|
+
* @param url The original URL to process
|
|
42
|
+
* @param localhostFallback Alternative URL to use when on a local network
|
|
43
|
+
* @returns The processed URL string or null/undefined if input was invalid
|
|
44
|
+
*/
|
|
20
45
|
static GetUrl(url: string | null | undefined, localhostFallback?: string | null): string | null | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Determines if the current connection is on a local network.
|
|
48
|
+
* Useful for applying different networking configurations in local development environments.
|
|
49
|
+
* This is the same as calling {@link isLocalNetwork}.
|
|
50
|
+
* @param hostname Optional hostname to check instead of the current window location
|
|
51
|
+
* @returns True if the connection is on a local network, false otherwise
|
|
52
|
+
*/
|
|
21
53
|
static IsLocalNetwork(hostname?: string): boolean;
|
|
22
54
|
}
|
|
@@ -10,16 +10,28 @@ import { getParam } from "../engine/engine_utils.js";
|
|
|
10
10
|
import { Behaviour } from "./Component.js";
|
|
11
11
|
const debug = getParam("debugnet");
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* Provides configuration to the built-in networking system.
|
|
14
|
+
* This component supplies websocket URLs for establishing connections.
|
|
15
|
+
* It implements the {@link INetworkingWebsocketUrlProvider} interface.
|
|
16
|
+
*
|
|
14
17
|
* @category Networking
|
|
15
18
|
* @group Components
|
|
16
19
|
*/
|
|
17
20
|
export class Networking extends Behaviour {
|
|
18
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* The websocket URL to connect to for networking functionality.
|
|
23
|
+
* Can be a complete URL or a relative path that will be resolved against the current origin.
|
|
24
|
+
*/
|
|
19
25
|
url = null;
|
|
20
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Name of the URL parameter that can override the websocket connection URL.
|
|
28
|
+
* When set, the URL will be overridden by the parameter value from the browser URL.
|
|
29
|
+
* For example, with `urlParameterName="ws"`, adding `?ws=ws://localhost:8080` to the browser URL will override the connection URL.
|
|
30
|
+
*/
|
|
21
31
|
urlParameterName = null;
|
|
22
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Alternative URL to use when running on a local network.
|
|
34
|
+
* This is particularly useful for development, when the server is running on the same machine as the client.
|
|
23
35
|
*/
|
|
24
36
|
localhost = null;
|
|
25
37
|
/** @internal */
|
|
@@ -28,7 +40,13 @@ export class Networking extends Behaviour {
|
|
|
28
40
|
console.log(this);
|
|
29
41
|
this.context.connection.registerProvider(this);
|
|
30
42
|
}
|
|
31
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Determines the websocket URL to use for networking connections.
|
|
45
|
+
* Processes the configured URL, applying localhost fallbacks when appropriate and
|
|
46
|
+
* handling URL parameter overrides if specified.
|
|
47
|
+
* @returns The formatted websocket URL string or null if no valid URL could be determined
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
32
50
|
getWebsocketUrl() {
|
|
33
51
|
let socketurl = this.url ? Networking.GetUrl(this.url, this.localhost) : null;
|
|
34
52
|
if (this.urlParameterName) {
|
|
@@ -51,6 +69,13 @@ export class Networking extends Behaviour {
|
|
|
51
69
|
// otherwise add the ws prefix
|
|
52
70
|
return "wss://" + match?.groups["url"];
|
|
53
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Processes a URL string applying various transformations based on network environment.
|
|
74
|
+
* Handles relative paths and localhost fallbacks for local network environments.
|
|
75
|
+
* @param url The original URL to process
|
|
76
|
+
* @param localhostFallback Alternative URL to use when on a local network
|
|
77
|
+
* @returns The processed URL string or null/undefined if input was invalid
|
|
78
|
+
*/
|
|
54
79
|
static GetUrl(url, localhostFallback) {
|
|
55
80
|
let result = url;
|
|
56
81
|
const useLocalHostUrl = Networking.IsLocalNetwork() && localhostFallback;
|
|
@@ -65,6 +90,13 @@ export class Networking extends Behaviour {
|
|
|
65
90
|
}
|
|
66
91
|
return result;
|
|
67
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Determines if the current connection is on a local network.
|
|
95
|
+
* Useful for applying different networking configurations in local development environments.
|
|
96
|
+
* This is the same as calling {@link isLocalNetwork}.
|
|
97
|
+
* @param hostname Optional hostname to check instead of the current window location
|
|
98
|
+
* @returns True if the connection is on a local network, false otherwise
|
|
99
|
+
*/
|
|
68
100
|
static IsLocalNetwork(hostname = window.location.hostname) {
|
|
69
101
|
return isLocalNetwork(hostname);
|
|
70
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Networking.js","sourceRoot":"","sources":["../../src/engine-components/Networking.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAEnC
|
|
1
|
+
{"version":3,"file":"Networking.js","sourceRoot":"","sources":["../../src/engine-components/Networking.ts"],"names":[],"mappings":"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"}
|