@needle-tools/engine 3.36.3-beta → 3.36.4-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/needle-engine.js +2824 -2711
  3. package/dist/needle-engine.light.js +1522 -1409
  4. package/dist/needle-engine.light.min.js +151 -146
  5. package/dist/needle-engine.light.umd.cjs +124 -119
  6. package/dist/needle-engine.min.js +110 -105
  7. package/dist/needle-engine.umd.cjs +124 -119
  8. package/lib/engine/engine_addressables.d.ts +22 -3
  9. package/lib/engine/engine_addressables.js +36 -4
  10. package/lib/engine/engine_addressables.js.map +1 -1
  11. package/lib/engine/engine_input.d.ts +4 -0
  12. package/lib/engine/engine_input.js +4 -0
  13. package/lib/engine/engine_input.js.map +1 -1
  14. package/lib/engine/engine_instancing.d.ts +3 -0
  15. package/lib/engine/engine_instancing.js +3 -0
  16. package/lib/engine/engine_instancing.js.map +1 -1
  17. package/lib/engine/engine_license.d.ts +4 -0
  18. package/lib/engine/engine_license.js +37 -13
  19. package/lib/engine/engine_license.js.map +1 -1
  20. package/lib/engine/engine_networking_instantiate.d.ts +1 -0
  21. package/lib/engine/engine_networking_instantiate.js +1 -0
  22. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  23. package/lib/engine/engine_scenetools.d.ts +17 -0
  24. package/lib/engine/engine_scenetools.js +17 -0
  25. package/lib/engine/engine_scenetools.js.map +1 -1
  26. package/lib/engine/engine_shaders.d.ts +22 -0
  27. package/lib/engine/engine_shaders.js +23 -0
  28. package/lib/engine/engine_shaders.js.map +1 -1
  29. package/lib/engine/engine_texture.d.ts +5 -1
  30. package/lib/engine/engine_texture.js +5 -1
  31. package/lib/engine/engine_texture.js.map +1 -1
  32. package/lib/engine/engine_three_utils.d.ts +46 -2
  33. package/lib/engine/engine_three_utils.js +47 -1
  34. package/lib/engine/engine_three_utils.js.map +1 -1
  35. package/lib/engine/engine_types.d.ts +8 -0
  36. package/lib/engine/engine_types.js +8 -1
  37. package/lib/engine/engine_types.js.map +1 -1
  38. package/lib/engine/engine_util_decorator.d.ts +2 -1
  39. package/lib/engine/engine_util_decorator.js +2 -1
  40. package/lib/engine/engine_util_decorator.js.map +1 -1
  41. package/lib/engine/engine_utils.js +4 -1
  42. package/lib/engine/engine_utils.js.map +1 -1
  43. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +2 -1
  44. package/lib/engine/webcomponents/needle menu/needle-menu.js +13 -3
  45. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  46. package/lib/engine-components/Component.d.ts +1 -1
  47. package/lib/engine-components/ContactShadows.js +5 -0
  48. package/lib/engine-components/ContactShadows.js.map +1 -1
  49. package/lib/engine-components/OrbitControls.js +8 -0
  50. package/lib/engine-components/OrbitControls.js.map +1 -1
  51. package/lib/engine-components/SceneSwitcher.d.ts +50 -0
  52. package/lib/engine-components/SceneSwitcher.js +66 -0
  53. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/engine/engine_addressables.ts +36 -4
  56. package/src/engine/engine_input.ts +5 -1
  57. package/src/engine/engine_instancing.ts +3 -0
  58. package/src/engine/engine_license.ts +33 -12
  59. package/src/engine/engine_networking_instantiate.ts +2 -0
  60. package/src/engine/engine_scenetools.ts +17 -0
  61. package/src/engine/engine_shaders.ts +24 -0
  62. package/src/engine/engine_texture.ts +5 -1
  63. package/src/engine/engine_three_utils.ts +56 -7
  64. package/src/engine/engine_types.ts +8 -1
  65. package/src/engine/engine_util_decorator.ts +3 -2
  66. package/src/engine/engine_utils.ts +3 -1
  67. package/src/engine/webcomponents/needle menu/needle-menu.ts +15 -3
  68. package/src/engine-components/Component.ts +1 -1
  69. package/src/engine-components/ContactShadows.ts +9 -1
  70. package/src/engine-components/OrbitControls.ts +7 -0
  71. package/src/engine-components/SceneSwitcher.ts +70 -1
@@ -36,6 +36,7 @@ export interface ISceneEventListener {
36
36
  * - `loadscene-start`: Called when a scene starts loading
37
37
  * - `loadscene-finished`: Called when a scene finished loading
38
38
  * - `progress`: Called when a scene is loading and the progress changes
39
+ * - `scene-opened`: Called when a scene is loaded and added to the SceneSwitcher's GameObject
39
40
  * @example
40
41
  * ```ts
41
42
  * sceneSwitcher.addEventListener("loadscene-start", (e) => {
@@ -47,6 +48,9 @@ export interface ISceneEventListener {
47
48
  * sceneSwitcher.addEventListener("progress", (e) => {
48
49
  * console.log("Loading progress", e.loaded, e.total);
49
50
  * });
51
+ * sceneSwitcher.addEventListener("scene-opened", (e) => {
52
+ * console.log("Scene opened", e.detail.scene.uri);
53
+ * });
50
54
  * ```
51
55
  *
52
56
  */
@@ -97,8 +101,11 @@ export declare class SceneSwitcher extends Behaviour {
97
101
  private _currentScene;
98
102
  private _engineElementOverserver;
99
103
  private _preloadScheduler?;
104
+ /** @internal */
100
105
  awake(): void;
106
+ /** @internal */
101
107
  onEnable(): Promise<void>;
108
+ /** @internal */
102
109
  onDisable(): void;
103
110
  private onPopState;
104
111
  private normalizedSwipeThresholdX;
@@ -106,11 +113,54 @@ export declare class SceneSwitcher extends Behaviour {
106
113
  private onInputPointerMove;
107
114
  private onInputPointerUp;
108
115
  private onInputKeyDown;
116
+ /**
117
+ * Add a scene to the SceneSwitcher.
118
+ * If the scene is already added it will be added again.
119
+ * @param urlOrAssetReference The url of the scene or an AssetReference to the scene
120
+ * @returns The AssetReference of the scene that was added
121
+ * @example
122
+ * ```ts
123
+ * // adding a scene:
124
+ * sceneSwitcher.addScene("scene1.glb");
125
+ * // add another scene and load it:
126
+ * const scene2 = sceneSwitcher.addScene("scene2.glb");
127
+ * sceneSwitcher.switchScene(scene2).then(res => { console.log("Scene loaded", res); });
128
+ * ```
129
+ */
130
+ addScene(urlOrAssetReference: string | AssetReference): AssetReference;
131
+ /**
132
+ * Load the next scene in the scenes array ({@link this.currentIndex} + 1)
133
+ * If the current scene is the last scene in the array and {@link this.clamp} is disabled then the first scene will be loaded.
134
+ * @returns a promise that resolves to true if the scene was loaded successfully
135
+ */
109
136
  selectNext(): Promise<boolean>;
137
+ /**
138
+ * Load the previous scene in the scenes array ({@link this.currentIndex} - 1)
139
+ * If the current scene is the first scene in the array and {@link this.clamp} is disabled then the last scene will be loaded.
140
+ * @returns a promise that resolves to true if the scene was loaded successfully
141
+ */
110
142
  selectPrev(): Promise<boolean>;
143
+ /**
144
+ * Load a scene by its index in the scenes array.
145
+ * @param index The index of the scene or a string that represents the scene uri (if the url is not known to the SceneSwitcher it will try to load the scene by its uri but it won't be added to the current scenes array. Use {@link addScene} to add a scene to the SceneSwitcher)
146
+ * @returns a promise that resolves to true if the scene was loaded successfully
147
+ */
111
148
  select(index: number | string): Promise<boolean>;
112
149
  private __lastSwitchScene?;
113
150
  private __lastSwitchScenePromise?;
151
+ /**
152
+ * Switch to a scene by its AssetReference.
153
+ * If the scene is already loaded it will be unloaded and the new scene will be loaded.
154
+ * If the scene is already loading it will wait for the scene to be loaded.
155
+ * If the scene is already loaded and the same scene is requested again it will return the same promise that was returned the first time the scene was requested.
156
+ * @param scene The AssetReference of the scene to switch to
157
+ * @returns a promise that resolves to true if the scene was loaded successfully
158
+ * @example
159
+ * ```ts
160
+ * const myAssetReference = new AssetReference("scene1.glb");
161
+ * sceneSwitcher.switchScene(myAssetReference).then(res => { console.log("Scene loaded", res); });
162
+ * ```
163
+ */
114
164
  switchScene(scene: AssetReference): Promise<boolean>;
115
165
  private _currentlyLoadingScene?;
116
166
  __internalSwitchScene(scene: AssetReference): Promise<boolean>;
@@ -36,6 +36,7 @@ const couldNotLoadScenePromise = Promise.resolve(false);
36
36
  * - `loadscene-start`: Called when a scene starts loading
37
37
  * - `loadscene-finished`: Called when a scene finished loading
38
38
  * - `progress`: Called when a scene is loading and the progress changes
39
+ * - `scene-opened`: Called when a scene is loaded and added to the SceneSwitcher's GameObject
39
40
  * @example
40
41
  * ```ts
41
42
  * sceneSwitcher.addEventListener("loadscene-start", (e) => {
@@ -47,6 +48,9 @@ const couldNotLoadScenePromise = Promise.resolve(false);
47
48
  * sceneSwitcher.addEventListener("progress", (e) => {
48
49
  * console.log("Loading progress", e.loaded, e.total);
49
50
  * });
51
+ * sceneSwitcher.addEventListener("scene-opened", (e) => {
52
+ * console.log("Scene opened", e.detail.scene.uri);
53
+ * });
50
54
  * ```
51
55
  *
52
56
  */
@@ -97,10 +101,14 @@ export class SceneSwitcher extends Behaviour {
97
101
  _currentScene = undefined;
98
102
  _engineElementOverserver = undefined;
99
103
  _preloadScheduler;
104
+ /** @internal */
100
105
  awake() {
106
+ if (this.scenes === undefined)
107
+ this.scenes = [];
101
108
  if (debug)
102
109
  console.log("SceneSwitcher", this);
103
110
  }
111
+ /** @internal */
104
112
  async onEnable() {
105
113
  globalThis.addEventListener("popstate", this.onPopState);
106
114
  this.context.input.addEventListener(InputEvents.KeyDown, this.onInputKeyDown);
@@ -143,6 +151,7 @@ export class SceneSwitcher extends Behaviour {
143
151
  }
144
152
  }
145
153
  }
154
+ /** @internal */
146
155
  onDisable() {
147
156
  globalThis.removeEventListener("popstate", this.onPopState);
148
157
  this.context.input.removeEventListener(InputEvents.KeyDown, this.onInputKeyDown);
@@ -222,12 +231,54 @@ export class SceneSwitcher extends Behaviour {
222
231
  break;
223
232
  }
224
233
  };
234
+ /**
235
+ * Add a scene to the SceneSwitcher.
236
+ * If the scene is already added it will be added again.
237
+ * @param urlOrAssetReference The url of the scene or an AssetReference to the scene
238
+ * @returns The AssetReference of the scene that was added
239
+ * @example
240
+ * ```ts
241
+ * // adding a scene:
242
+ * sceneSwitcher.addScene("scene1.glb");
243
+ * // add another scene and load it:
244
+ * const scene2 = sceneSwitcher.addScene("scene2.glb");
245
+ * sceneSwitcher.switchScene(scene2).then(res => { console.log("Scene loaded", res); });
246
+ * ```
247
+ */
248
+ addScene(urlOrAssetReference) {
249
+ if (typeof urlOrAssetReference === "string") {
250
+ let assetReference = this.context.addressables.findAssetReference(urlOrAssetReference);
251
+ if (!assetReference) {
252
+ assetReference = new AssetReference(urlOrAssetReference);
253
+ this.context.addressables.registerAssetReference(assetReference);
254
+ }
255
+ this.scenes.push(assetReference);
256
+ return assetReference;
257
+ }
258
+ this.scenes.push(urlOrAssetReference);
259
+ return urlOrAssetReference;
260
+ }
261
+ /**
262
+ * Load the next scene in the scenes array ({@link this.currentIndex} + 1)
263
+ * If the current scene is the last scene in the array and {@link this.clamp} is disabled then the first scene will be loaded.
264
+ * @returns a promise that resolves to true if the scene was loaded successfully
265
+ */
225
266
  selectNext() {
226
267
  return this.select(this._currentIndex + 1);
227
268
  }
269
+ /**
270
+ * Load the previous scene in the scenes array ({@link this.currentIndex} - 1)
271
+ * If the current scene is the first scene in the array and {@link this.clamp} is disabled then the last scene will be loaded.
272
+ * @returns a promise that resolves to true if the scene was loaded successfully
273
+ */
228
274
  selectPrev() {
229
275
  return this.select(this._currentIndex - 1);
230
276
  }
277
+ /**
278
+ * Load a scene by its index in the scenes array.
279
+ * @param index The index of the scene or a string that represents the scene uri (if the url is not known to the SceneSwitcher it will try to load the scene by its uri but it won't be added to the current scenes array. Use {@link addScene} to add a scene to the SceneSwitcher)
280
+ * @returns a promise that resolves to true if the scene was loaded successfully
281
+ */
231
282
  select(index) {
232
283
  if (debug)
233
284
  console.log("select", index);
@@ -273,6 +324,19 @@ export class SceneSwitcher extends Behaviour {
273
324
  // this is the scene that was requested last
274
325
  __lastSwitchScene;
275
326
  __lastSwitchScenePromise;
327
+ /**
328
+ * Switch to a scene by its AssetReference.
329
+ * If the scene is already loaded it will be unloaded and the new scene will be loaded.
330
+ * If the scene is already loading it will wait for the scene to be loaded.
331
+ * If the scene is already loaded and the same scene is requested again it will return the same promise that was returned the first time the scene was requested.
332
+ * @param scene The AssetReference of the scene to switch to
333
+ * @returns a promise that resolves to true if the scene was loaded successfully
334
+ * @example
335
+ * ```ts
336
+ * const myAssetReference = new AssetReference("scene1.glb");
337
+ * sceneSwitcher.switchScene(myAssetReference).then(res => { console.log("Scene loaded", res); });
338
+ * ```
339
+ */
276
340
  async switchScene(scene) {
277
341
  if (!(scene instanceof AssetReference)) {
278
342
  const type = typeof scene;
@@ -373,6 +437,8 @@ export class SceneSwitcher extends Behaviour {
373
437
  if (res instanceof Promise)
374
438
  await res;
375
439
  }
440
+ const openedEvt = new CustomEvent("scene-opened", { detail: { scene: scene, switcher: this, index: index } });
441
+ this.dispatchEvent(openedEvt);
376
442
  return true;
377
443
  }
378
444
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SceneSwitcher.js","sourceRoot":"","sources":["../../src/engine-components/SceneSwitcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SceneSwitcher.js","sourceRoot":"","sources":["../../src/engine-components/SceneSwitcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "3.36.3-beta",
3
+ "version": "3.36.4-beta",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
5
5
  "main": "dist/needle-engine.umd.cjs",
6
6
  "type": "module",
@@ -45,11 +45,17 @@ export class Addressables {
45
45
  }
46
46
 
47
47
 
48
- findAssetReference(key: string): AssetReference | null {
49
- return this._assetReferences[key] || null;
48
+ /**
49
+ * Find a registered AssetReference by its URL
50
+ */
51
+ findAssetReference(url: string): AssetReference | null {
52
+ return this._assetReferences[url] || null;
50
53
  }
51
54
 
52
- /** @internal */
55
+ /**
56
+ * Register an asset reference
57
+ * @internal
58
+ */
53
59
  registerAssetReference(ref: AssetReference): AssetReference {
54
60
  if (!ref.uri) return ref;
55
61
  if (!this._assetReferences[ref.uri]) {
@@ -83,8 +89,32 @@ const $assetReference = Symbol("assetReference");
83
89
  */
84
90
  export class AssetReference {
85
91
 
92
+ /**
93
+ * Experimental!
94
+ * @internal
95
+ * Get an AssetReference for a URL to be easily loaded.
96
+ * AssetReferences are cached so calling this method multiple times with the same arguments will always return the same AssetReference.
97
+ * @param url The URL of the asset to load. The url can be relative or absolute.
98
+ * @param context The context to use for loading the asset
99
+ * @returns the AssetReference for the URL
100
+ */
101
+ static getOrCreateFromUrl(url: string, context?: Context): AssetReference {
102
+ if (!context) {
103
+ context = Context.Current;
104
+ if (!context)
105
+ throw new Error("Context is required when sourceId is a string. When you call this method from a component you can call it with \"getOrCreate(this, url)\" where \"this\" is the component.");
106
+ }
107
+ const addressables = context.addressables;
108
+ const existing = addressables.findAssetReference(url);
109
+ if (existing) return existing;
110
+ const ref = new AssetReference(url, context.hash);
111
+ addressables.registerAssetReference(ref);
112
+ return ref;
113
+ }
114
+
86
115
  /**
87
- * Get an AssetReference for a URL to be easily loaded. AssetReferences are cached so calling this method multiple times with the same arguments will always return the same AssetReference.
116
+ * Get an AssetReference for a URL to be easily loaded.
117
+ * AssetReferences are cached so calling this method multiple times with the same arguments will always return the same AssetReference.
88
118
  */
89
119
  static getOrCreate(sourceId: SourceIdentifier | IComponent, url: string, context?: Context): AssetReference {
90
120
 
@@ -515,6 +545,7 @@ export class ImageReference {
515
545
  }
516
546
 
517
547
 
548
+ /** @internal */
518
549
  export class ImageReferenceSerializer extends TypeSerializer {
519
550
  constructor() {
520
551
  super([ImageReference], "ImageReferenceSerializer");
@@ -578,6 +609,7 @@ export class FileReference {
578
609
  }
579
610
 
580
611
 
612
+ /** @internal */
581
613
  export class FileReferenceSerializer extends TypeSerializer {
582
614
  constructor() {
583
615
  super([FileReference], "FileReferenceSerializer");
@@ -1,4 +1,4 @@
1
- import { Intersection,Matrix4, Object3D, Ray, Vector2, Vector3 } from 'three';
1
+ import { Intersection, Matrix4, Object3D, Ray, Vector2, Vector3 } from 'three';
2
2
 
3
3
  import { showBalloonMessage, showBalloonWarning } from './debug/debug.js';
4
4
  import { Context } from './engine_setup.js';
@@ -207,6 +207,9 @@ declare type EventListenerOptions = {
207
207
  signal?: AbortSignal;
208
208
  }
209
209
 
210
+ /**
211
+ * The input system is responsible for handling all input events like pointer events (mouse, touch, xr controllers) and keyboard events.
212
+ */
210
213
  export class Input implements IInput {
211
214
 
212
215
  /** This is a list of event listeners per event type (e.g. pointerdown, pointerup, keydown...). Each entry contains a priority and list of listeners.
@@ -649,6 +652,7 @@ export class Input implements IInput {
649
652
  vec2.y = -((vec2.y - this.context.domY) / this.context.domHeight) * 2 + 1;
650
653
  }
651
654
 
655
+ /** @internal */
652
656
  constructor(context: Context) {
653
657
  this.context = context;
654
658
  this.context.post_render_callbacks.push(this.onEndOfFrame);
@@ -6,6 +6,9 @@ export const $isUsingInstancing = Symbol("isUsingInstancing");
6
6
  export const $instancingRenderer = Symbol("instancingRenderer");
7
7
  export const $instancingAutoUpdateBounds = Symbol("instancingAutoUpdateBounds");
8
8
 
9
+ /**
10
+ * Utility class for accessing instancing related properties
11
+ */
9
12
  export class InstancingUtil {
10
13
 
11
14
  /** Is this object rendered using a InstancedMesh */
@@ -10,6 +10,7 @@ const debug = getParam("debuglicense");
10
10
  let NEEDLE_ENGINE_LICENSE_TYPE: string = "basic";
11
11
  if (debug) console.log("License Type: " + NEEDLE_ENGINE_LICENSE_TYPE)
12
12
 
13
+ /** @internal */
13
14
  export function hasProLicense() {
14
15
  switch (NEEDLE_ENGINE_LICENSE_TYPE) {
15
16
  case "pro":
@@ -19,6 +20,7 @@ export function hasProLicense() {
19
20
  return false;
20
21
  }
21
22
 
23
+ /** @internal */
22
24
  export function hasIndieLicense() {
23
25
  switch (NEEDLE_ENGINE_LICENSE_TYPE) {
24
26
  case "indie":
@@ -27,11 +29,13 @@ export function hasIndieLicense() {
27
29
  return false;
28
30
  }
29
31
 
32
+ /** @internal */
30
33
  export function hasCommercialLicense() {
31
34
  return hasProLicense() || hasIndieLicense();
32
35
  }
33
36
 
34
37
  const _licenseCheckResultChangedCallbacks: ((result: boolean) => void)[] = [];
38
+ /** @internal */
35
39
  export function onLicenseCheckResultChanged(cb: (result: boolean) => void) {
36
40
  if (hasProLicense() || hasIndieLicense())
37
41
  return cb(true);
@@ -103,27 +107,40 @@ async function handleForbidden(ctx: IContext) {
103
107
  height: 100%;
104
108
  pointer-events: all;
105
109
  zIndex: 2147483647;
106
- background-color: rgba(0,0,0,0.3);
107
- backdrop-filter: blur(10px);
108
- webkitBackdropFilter: blur(10px);
109
110
  line-height: 1.5;
111
+ backdrop-filter: blur(15px);
110
112
  `;
113
+ const expectedStyle = div.style.cssText;
111
114
 
112
115
  const text = document.createElement("div");
113
116
  div.appendChild(text);
114
117
  text.style.cssText = `
115
118
  position: absolute;
116
- top: 50%;
117
- left: 50%;
118
- transform: translate(-50%, -50%);
119
+ left: 0;
120
+ right: 0;
121
+ top:0;
122
+ bottom: 0;
123
+ padding: 10%;
119
124
  color: white;
120
- font-size: 24px;
125
+ font-size: 20px;
121
126
  font-family: sans-serif;
122
127
  text-align: center;
123
- user-select: none;
128
+ pointer-events: all;
129
+ display: flex;
130
+ justify-content: center;
131
+ align-items: center;
132
+ background-color: rgba(0,0,0,.3);
133
+ text-shadow: 0 0 2px black;
124
134
  `;
125
- const forbiddenText = applicationForbiddenText?.length > 1 ? applicationForbiddenText : "Needle Engine<br/>This application is not allowed to run on this domain!";
135
+ const expectedTextStyle = text.style.cssText;
136
+ const forbiddenText = applicationForbiddenText?.length > 1 ? applicationForbiddenText : "This web application has been blacklisted. You might be in violation of the Needle Engine terms of use.<br/>Please contact the Needle support if you think this is a mistake.";
126
137
  text.innerHTML = forbiddenText;
138
+ setInterval(() => {
139
+ if (text.innerHTML !== forbiddenText) text.innerHTML = forbiddenText;
140
+ if (text.parentNode !== div) div.appendChild(text);
141
+ if (div.style.cssText !== expectedStyle) div.style.cssText = expectedStyle;
142
+ if (text.style.cssText !== expectedTextStyle) text.style.cssText = expectedTextStyle;
143
+ }, 500)
127
144
  return div;
128
145
  }
129
146
  let forbiddenElement = createForbiddenElement();
@@ -131,9 +148,13 @@ async function handleForbidden(ctx: IContext) {
131
148
  setInterval(() => {
132
149
  if (applicationIsForbidden === true) {
133
150
  if (forbiddenElement.style.cssText !== expectedCSS) forbiddenElement = createForbiddenElement();
134
- if ("isPaused" in ctx) ctx.isPaused = true;
135
- if (forbiddenElement.parentNode !== ctx.domElement.shadowRoot)
136
- ctx.domElement.shadowRoot?.appendChild(forbiddenElement);
151
+ if (ctx.domElement.shadowRoot) {
152
+ if (forbiddenElement.parentNode !== ctx.domElement.shadowRoot)
153
+ ctx.domElement.shadowRoot?.appendChild(forbiddenElement);
154
+ }
155
+ else if (forbiddenElement.parentNode != document.body) {
156
+ document.body.appendChild(forbiddenElement);
157
+ }
137
158
  }
138
159
  }, 500)
139
160
  }
@@ -151,6 +151,8 @@ export function beginListenDestroy(context: Context) {
151
151
 
152
152
  // when a file is instantiated via some server (e.g. via file drop) we also want to send the info where the file can be downloaded
153
153
  // doing it this route will ensure we have
154
+
155
+ /** @internal */
154
156
  export class HostData {
155
157
  filename: string;
156
158
  hash: string;
@@ -15,6 +15,7 @@ import { registerComponentExtension, registerExtensions } from "./extensions/ext
15
15
  import { NEEDLE_components } from "./extensions/NEEDLE_components.js";
16
16
 
17
17
 
18
+ /** @internal */
18
19
  export class NeedleGltfLoader implements INeedleGltfLoader {
19
20
  createBuiltinComponents(context: Context, gltfId: string, gltf: any, seed: number | UIDProvider | null, extension?: NEEDLE_components | undefined) {
20
21
  return createBuiltinComponents(context, gltfId, gltf, seed, extension);
@@ -103,6 +104,13 @@ export async function createGLTFLoader(url: string, context: Context) {
103
104
  return loader;
104
105
  }
105
106
 
107
+ /** Load a gltf file from a url. This is the core method used by Needle Engine to load gltf files. All known extensions are registered here.
108
+ * @param context The current context
109
+ * @param data The gltf data as string or ArrayBuffer
110
+ * @param path The path to the gltf file
111
+ * @param seed The seed for generating unique ids
112
+ * @returns The loaded gltf object
113
+ */
106
114
  export async function parseSync(context: Context, data: string | ArrayBuffer, path: string, seed: number | UIDProvider | null): Promise<GLTF | undefined> {
107
115
  if (typeof path !== "string") {
108
116
  console.warn("Parse gltf binary without path, this might lead to errors in resolving extensions. Please provide the source path of the gltf/glb file", path, typeof path);
@@ -153,6 +161,15 @@ export async function parseSync(context: Context, data: string | ArrayBuffer, pa
153
161
  });
154
162
  }
155
163
 
164
+ /**
165
+ * Load a gltf file from a url. This is the core method used by Needle Engine to load gltf files. All known extensions are registered here.
166
+ * @param context The current context
167
+ * @param url The url to the gltf file
168
+ * @param sourceId The source id of the gltf file - this is usually the url
169
+ * @param seed The seed for generating unique ids
170
+ * @param prog A progress callback
171
+ * @returns The loaded gltf object
172
+ */
156
173
  export async function loadSync(context: Context, url: string, sourceId: string, seed: number | UIDProvider | null, prog?: (ProgressEvent) => void): Promise<GLTF | undefined> {
157
174
  // better to create new loaders every time
158
175
  // (maybe we can cache them...)
@@ -11,6 +11,12 @@ const white = new Uint8Array(4);
11
11
  white[0] = 255; white[1] = 255; white[2] = 255; white[3] = 255;
12
12
  export const whiteDefaultTexture = new DataTexture(white, 1, 1, RGBAFormat);
13
13
 
14
+ /**
15
+ * Creates a new texture with a single color
16
+ * @param col Color to use
17
+ * @param size Size of the texture
18
+ * @returns A texture with the specified color
19
+ */
14
20
  export function createFlatTexture(col: RGBAColor | Color, size: number = 1) {
15
21
  const hasAlpha = "alpha" in col;
16
22
  const length = size * size;
@@ -31,6 +37,15 @@ export function createFlatTexture(col: RGBAColor | Color, size: number = 1) {
31
37
  return tex;
32
38
  }
33
39
 
40
+ /**
41
+ * Creates a new texture with three colors
42
+ * @param col0 First color
43
+ * @param col1 Second color
44
+ * @param col2 Third color
45
+ * @param width Width of the texture
46
+ * @param height Height of the texture
47
+ * @returns A texture with the specified colors
48
+ */
34
49
  export function createTrilightTexture<T extends Color>(col0: T, col1: T, col2: T, width: number = 1, height: number = 3) {
35
50
  const hasAlpha = false;// "alpha" in col0;
36
51
  const channels = 4;
@@ -62,11 +77,13 @@ export function createTrilightTexture<T extends Color>(col0: T, col1: T, col2: T
62
77
  return tex;
63
78
  }
64
79
 
80
+ /** @internal */
65
81
  export enum Stage {
66
82
  Vertex,
67
83
  Fragment,
68
84
  }
69
85
 
86
+ /** @internal */
70
87
  export class UnityShaderStage {
71
88
  stage: Stage;
72
89
  code: string;
@@ -105,9 +122,11 @@ class ShaderLib {
105
122
  }
106
123
  }
107
124
 
125
+ /** @internal */
108
126
  export const lib = new ShaderLib();
109
127
 
110
128
 
129
+ /** @internal */
111
130
  export function ToUnityMatrixArray(mat: Matrix4, buffer?: Array<Vector4>): Array<Vector4> {
112
131
  const arr = mat.elements;
113
132
  if (!buffer)
@@ -126,6 +145,8 @@ export function ToUnityMatrixArray(mat: Matrix4, buffer?: Array<Vector4>): Array
126
145
 
127
146
  const noAmbientLight: Array<number> = [];
128
147
  const copyBuffer: Array<number> = [];
148
+
149
+ /** @internal */
129
150
  export function SetUnitySphericalHarmonics(obj: object, array?: number[]) {
130
151
 
131
152
  if (noAmbientLight.length === 0) {
@@ -147,6 +168,7 @@ export function SetUnitySphericalHarmonics(obj: object, array?: number[]) {
147
168
  obj["unity_SHC"] = { value: new Vector4(array[24], array[25], array[26], 1) };
148
169
  }
149
170
 
171
+ /** @internal */
150
172
  export class ShaderBundle {
151
173
  readonly vertexShader: string;
152
174
  readonly fragmentShader: string;
@@ -159,6 +181,7 @@ export class ShaderBundle {
159
181
  }
160
182
  }
161
183
 
184
+ /** @internal */
162
185
  export async function FindShaderTechniques(shaderData: SHADERDATA.ShaderData, id: number): Promise<ShaderBundle | null> {
163
186
  // console.log(shaderData);
164
187
  if (!shaderData) {
@@ -191,6 +214,7 @@ export async function FindShaderTechniques(shaderData: SHADERDATA.ShaderData, id
191
214
  return null;
192
215
  }
193
216
 
217
+ /** @internal */
194
218
  async function loadShaderCode(shader: SHADERDATA.Shader) {
195
219
  const uri = shader.uri;
196
220
  if (!uri) return;
@@ -9,7 +9,8 @@ const _prevVisible = Symbol("previous-visibility");
9
9
  /**
10
10
  * A RenderTexture can be used to render a scene to a texture automatically by assigning it to the `Camera` component's `targetTexture` property.
11
11
  * You can then assign the `RenderTexture.texture` to materials to be displayed
12
- * @example ```ts
12
+ * @example Create a new RenderTexture and assign it to a camera and material
13
+ * ```typescript
13
14
  * // create new RenderTexture with a resolution
14
15
  * const rt = new RenderTexture(256, 256);
15
16
  * // assign to a camera
@@ -20,6 +21,9 @@ const _prevVisible = Symbol("previous-visibility");
20
21
  */
21
22
  export class RenderTexture extends WebGLRenderTarget {
22
23
 
24
+ /**
25
+ * Render the scene to the texture
26
+ */
23
27
  render(scene: Object3D, camera: Camera, renderer: WebGLRenderer | EffectComposer) {
24
28
  if (renderer instanceof EffectComposer) {
25
29
  if (!this["_unsupported_effectcomposer_warning"]) {