@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.
- package/CHANGELOG.md +11 -0
- package/dist/needle-engine.js +2824 -2711
- package/dist/needle-engine.light.js +1522 -1409
- package/dist/needle-engine.light.min.js +151 -146
- package/dist/needle-engine.light.umd.cjs +124 -119
- package/dist/needle-engine.min.js +110 -105
- package/dist/needle-engine.umd.cjs +124 -119
- package/lib/engine/engine_addressables.d.ts +22 -3
- package/lib/engine/engine_addressables.js +36 -4
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_input.d.ts +4 -0
- package/lib/engine/engine_input.js +4 -0
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_instancing.d.ts +3 -0
- package/lib/engine/engine_instancing.js +3 -0
- package/lib/engine/engine_instancing.js.map +1 -1
- package/lib/engine/engine_license.d.ts +4 -0
- package/lib/engine/engine_license.js +37 -13
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine/engine_networking_instantiate.d.ts +1 -0
- package/lib/engine/engine_networking_instantiate.js +1 -0
- package/lib/engine/engine_networking_instantiate.js.map +1 -1
- package/lib/engine/engine_scenetools.d.ts +17 -0
- package/lib/engine/engine_scenetools.js +17 -0
- package/lib/engine/engine_scenetools.js.map +1 -1
- package/lib/engine/engine_shaders.d.ts +22 -0
- package/lib/engine/engine_shaders.js +23 -0
- package/lib/engine/engine_shaders.js.map +1 -1
- package/lib/engine/engine_texture.d.ts +5 -1
- package/lib/engine/engine_texture.js +5 -1
- package/lib/engine/engine_texture.js.map +1 -1
- package/lib/engine/engine_three_utils.d.ts +46 -2
- package/lib/engine/engine_three_utils.js +47 -1
- package/lib/engine/engine_three_utils.js.map +1 -1
- package/lib/engine/engine_types.d.ts +8 -0
- package/lib/engine/engine_types.js +8 -1
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine/engine_util_decorator.d.ts +2 -1
- package/lib/engine/engine_util_decorator.js +2 -1
- package/lib/engine/engine_util_decorator.js.map +1 -1
- package/lib/engine/engine_utils.js +4 -1
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +2 -1
- package/lib/engine/webcomponents/needle menu/needle-menu.js +13 -3
- package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
- package/lib/engine-components/Component.d.ts +1 -1
- package/lib/engine-components/ContactShadows.js +5 -0
- package/lib/engine-components/ContactShadows.js.map +1 -1
- package/lib/engine-components/OrbitControls.js +8 -0
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.d.ts +50 -0
- package/lib/engine-components/SceneSwitcher.js +66 -0
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/engine_addressables.ts +36 -4
- package/src/engine/engine_input.ts +5 -1
- package/src/engine/engine_instancing.ts +3 -0
- package/src/engine/engine_license.ts +33 -12
- package/src/engine/engine_networking_instantiate.ts +2 -0
- package/src/engine/engine_scenetools.ts +17 -0
- package/src/engine/engine_shaders.ts +24 -0
- package/src/engine/engine_texture.ts +5 -1
- package/src/engine/engine_three_utils.ts +56 -7
- package/src/engine/engine_types.ts +8 -1
- package/src/engine/engine_util_decorator.ts +3 -2
- package/src/engine/engine_utils.ts +3 -1
- package/src/engine/webcomponents/needle menu/needle-menu.ts +15 -3
- package/src/engine-components/Component.ts +1 -1
- package/src/engine-components/ContactShadows.ts +9 -1
- package/src/engine-components/OrbitControls.ts +7 -0
- 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
|
+
"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
|
-
|
|
49
|
-
|
|
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
|
-
/**
|
|
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.
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
+
left: 0;
|
|
120
|
+
right: 0;
|
|
121
|
+
top:0;
|
|
122
|
+
bottom: 0;
|
|
123
|
+
padding: 10%;
|
|
119
124
|
color: white;
|
|
120
|
-
font-size:
|
|
125
|
+
font-size: 20px;
|
|
121
126
|
font-family: sans-serif;
|
|
122
127
|
text-align: center;
|
|
123
|
-
|
|
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
|
|
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 (
|
|
135
|
-
|
|
136
|
-
|
|
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
|
|
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"]) {
|