@needle-tools/engine 2.65.2-pre → 2.66.1-pre
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 +23 -0
- package/dist/needle-engine.js +7866 -7756
- package/dist/needle-engine.umd.cjs +223 -223
- package/lib/engine/debug/debug_overlay.js +4 -1
- package/lib/engine/debug/debug_overlay.js.map +1 -1
- package/lib/engine/engine_addressables.js +2 -2
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_element.d.ts +1 -0
- package/lib/engine/engine_element.js +4 -1
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_element_loading.d.ts +3 -2
- package/lib/engine/engine_element_loading.js +18 -14
- package/lib/engine/engine_element_loading.js.map +1 -1
- package/lib/engine/engine_gameobject.js +6 -3
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_gizmos.js +3 -1
- package/lib/engine/engine_gizmos.js.map +1 -1
- package/lib/engine/engine_networking.d.ts +3 -1
- package/lib/engine/engine_networking.js +10 -8
- package/lib/engine/engine_networking.js.map +1 -1
- package/lib/engine/engine_physics.d.ts +29 -1
- package/lib/engine/engine_physics.js +99 -10
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_setup.js +3 -0
- package/lib/engine/engine_setup.js.map +1 -1
- package/lib/engine/extensions/NEEDLE_render_objects.js +9 -0
- package/lib/engine/extensions/NEEDLE_render_objects.js.map +1 -1
- package/lib/engine-components/Animator.js +0 -1
- package/lib/engine-components/Animator.js.map +1 -1
- package/lib/engine-components/CharacterController.d.ts +1 -0
- package/lib/engine-components/CharacterController.js +14 -9
- package/lib/engine-components/CharacterController.js.map +1 -1
- package/lib/engine-components/Collider.js +14 -1
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/ParticleSystem.d.ts +5 -1
- package/lib/engine-components/ParticleSystem.js +41 -6
- package/lib/engine-components/ParticleSystem.js.map +1 -1
- package/lib/engine-components/ParticleSystemModules.d.ts +2 -0
- package/lib/engine-components/ParticleSystemModules.js +26 -0
- package/lib/engine-components/ParticleSystemModules.js.map +1 -1
- package/lib/engine-components/ParticleSystemSubEmitter.js +5 -2
- package/lib/engine-components/ParticleSystemSubEmitter.js.map +1 -1
- package/lib/engine-components/Renderer.js +9 -5
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/ScreenCapture.js +3 -3
- package/lib/engine-components/ScreenCapture.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.js +3 -3
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SyncedCamera.js +1 -1
- package/lib/engine-components/SyncedCamera.js.map +1 -1
- package/lib/engine-components/SyncedTransform.js +2 -2
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/TestRunner.js +1 -1
- package/lib/engine-components/TestRunner.js.map +1 -1
- package/lib/engine-components/WebARSessionRoot.js +3 -2
- package/lib/engine-components/WebARSessionRoot.js.map +1 -1
- package/lib/engine-components/WebXRAvatar.js.map +1 -1
- package/lib/engine-components/WebXRGrabRendering.js +2 -2
- package/lib/engine-components/WebXRGrabRendering.js.map +1 -1
- package/lib/engine-components/WebXRSync.js +2 -2
- package/lib/engine-components/WebXRSync.js.map +1 -1
- package/lib/engine-components-experimental/networking/PlayerSync.js +1 -1
- package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/meta.js +3 -0
- package/plugins/vite/poster-client.js +6 -4
- package/src/engine/debug/debug_overlay.ts +4 -1
- package/src/engine/engine_addressables.ts +2 -2
- package/src/engine/engine_element.ts +8 -1
- package/src/engine/engine_element_loading.ts +18 -14
- package/src/engine/engine_gameobject.ts +584 -583
- package/src/engine/engine_gizmos.ts +3 -2
- package/src/engine/engine_networking.ts +10 -8
- package/src/engine/engine_physics.ts +113 -10
- package/src/engine/engine_setup.ts +4 -0
- package/src/engine/extensions/NEEDLE_render_objects.ts +10 -1
- package/src/engine-components/Animator.ts +0 -1
- package/src/engine-components/CharacterController.ts +12 -9
- package/src/engine-components/Collider.ts +16 -2
- package/src/engine-components/ParticleSystem.ts +45 -9
- package/src/engine-components/ParticleSystemModules.ts +28 -1
- package/src/engine-components/ParticleSystemSubEmitter.ts +5 -3
- package/src/engine-components/Renderer.ts +14 -11
- package/src/engine-components/ScreenCapture.ts +3 -3
- package/src/engine-components/SpectatorCamera.ts +3 -3
- package/src/engine-components/SyncedCamera.ts +1 -1
- package/src/engine-components/SyncedTransform.ts +2 -2
- package/src/engine-components/TestRunner.ts +1 -1
- package/src/engine-components/WebARSessionRoot.ts +3 -2
- package/src/engine-components/WebXRAvatar.ts +0 -1
- package/src/engine-components/WebXRGrabRendering.ts +2 -2
- package/src/engine-components/WebXRSync.ts +2 -2
- package/src/engine-components-experimental/networking/PlayerSync.ts +1 -1
|
@@ -22,7 +22,7 @@ export class PlayerSync extends Behaviour {
|
|
|
22
22
|
this.context.connection.beginListen(RoomEvents.JoinedRoom, this.joinedRoomFunction);
|
|
23
23
|
}
|
|
24
24
|
onDisable() {
|
|
25
|
-
this.context.connection.
|
|
25
|
+
this.context.connection.stopListen(RoomEvents.JoinedRoom, this.joinedRoomFunction);
|
|
26
26
|
}
|
|
27
27
|
async onUserJoined(_model) {
|
|
28
28
|
const instance = await this.asset?.instantiateSynced({ parent: this.gameObject }, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerSync.js","sourceRoot":"","sources":["../../../../src/engine-components-experimental/networking/PlayerSync.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAKzE,MAAM,OAAO,UAAW,SAAQ,SAAS;IAErC,KAAK,CAAkB;IAEf,kBAAkB,CAAY;IAEtC,KAAK;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAmB,CAAC,CAAA;IACxF,CAAC;IACD,SAAS;QACL,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"PlayerSync.js","sourceRoot":"","sources":["../../../../src/engine-components-experimental/networking/PlayerSync.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": "2.
|
|
3
|
+
"version": "2.66.1-pre",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development, and can be deployed anywhere. It is flexible, extensible, and collaboration and XR come naturally.",
|
|
5
5
|
"main": "dist/needle-engine.umd.cjs",
|
|
6
6
|
"module": "lib/needle-engine.js",
|
package/plugins/vite/meta.js
CHANGED
|
@@ -58,6 +58,9 @@ export const needleMeta = (command, config, userSettings) => {
|
|
|
58
58
|
tags.push({ tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } });
|
|
59
59
|
tags.push({ tag: 'meta', attrs: { name: 'twitter:image', content: url } });
|
|
60
60
|
tags.push({ tag: 'meta', attrs: { name: 'og:image', content: url } });
|
|
61
|
+
// Keep in sync with poster
|
|
62
|
+
tags.push({ tag: 'meta', attrs: { name: 'og:image:width', content: 1080 } });
|
|
63
|
+
tags.push({ tag: 'meta', attrs: { name: 'og:image:height', content: 1080 } });
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
66
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
2
|
async function generatePoster() {
|
|
4
3
|
const { screenshot } = await import("@needle-tools/engine/src/engine/engine_utils_screenshot");
|
|
5
4
|
|
|
@@ -7,12 +6,15 @@ async function generatePoster() {
|
|
|
7
6
|
const needleEngine = document.querySelector("needle-engine");
|
|
8
7
|
if (!needleEngine) return null;
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
// Keep in sync with og:image:width meta tags
|
|
10
|
+
// https://developers.facebook.com/docs/sharing/best-practices/
|
|
11
|
+
const width = 1080;
|
|
12
|
+
const height = 1080;
|
|
12
13
|
const context = await needleEngine.getContext();
|
|
13
14
|
|
|
14
15
|
// wait a fixed time for e.g. fonts to load
|
|
15
|
-
|
|
16
|
+
while(context.time.frameCount < 2)
|
|
17
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
16
18
|
|
|
17
19
|
const mimeType = "image/webp";
|
|
18
20
|
console.log("Generating poster...");
|
|
@@ -41,7 +41,10 @@ export function makeErrorsVisibleForDevelopment() {
|
|
|
41
41
|
}, true);
|
|
42
42
|
window.addEventListener("unhandledrejection", (event) => {
|
|
43
43
|
if (!event) return;
|
|
44
|
-
|
|
44
|
+
if (event.reason)
|
|
45
|
+
addLog(LogType.Error, event.reason.message, event.reason.stack);
|
|
46
|
+
else
|
|
47
|
+
addLog(LogType.Error, "unhandled rejection");
|
|
45
48
|
onReceivedError();
|
|
46
49
|
});
|
|
47
50
|
}
|
|
@@ -237,8 +237,8 @@ export class AssetReference {
|
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
let count = AssetReference.currentlyInstantiating.get(this.uri);
|
|
240
|
-
// allow up to
|
|
241
|
-
if (count !== undefined && count >=
|
|
240
|
+
// allow up to 10000 instantiations of the same prefab in the same frame
|
|
241
|
+
if (count !== undefined && count >= 10000) {
|
|
242
242
|
console.error("Recursive or too many instantiations of " + this.uri + " in the same frame (" + count + ")");
|
|
243
243
|
return null;
|
|
244
244
|
}
|
|
@@ -69,6 +69,8 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
69
69
|
super();
|
|
70
70
|
this._overlay_ar = new AROverlayHandler();
|
|
71
71
|
this._context = new Context({ domElement: this });
|
|
72
|
+
// TODO: do we want to rename this event?
|
|
73
|
+
this.addEventListener("ready", this.onReady);
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
async connectedCallback() {
|
|
@@ -252,6 +254,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
252
254
|
console.error("Needle Engine: No files to load", src);
|
|
253
255
|
return;
|
|
254
256
|
}
|
|
257
|
+
|
|
255
258
|
const currentHash = this.getAttribute("hash");
|
|
256
259
|
if (currentHash !== null && currentHash !== undefined)
|
|
257
260
|
this._context.hash = currentHash;
|
|
@@ -267,7 +270,7 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
267
270
|
|
|
268
271
|
this._loadingProgress01 = 1;
|
|
269
272
|
if (useDefaultLoading)
|
|
270
|
-
this._loadingView?.
|
|
273
|
+
this._loadingView?.onLoadingUpdate(1, "creating scene");
|
|
271
274
|
this.classList.remove("loading");
|
|
272
275
|
this.classList.add("loading-finished");
|
|
273
276
|
if (debug)
|
|
@@ -278,8 +281,12 @@ export class EngineElement extends HTMLElement implements INeedleEngineComponent
|
|
|
278
281
|
src: alias ?? src
|
|
279
282
|
}
|
|
280
283
|
}));
|
|
284
|
+
|
|
281
285
|
}
|
|
282
286
|
|
|
287
|
+
private onReady = () => this._loadingView?.onLoadingFinished();
|
|
288
|
+
|
|
289
|
+
|
|
283
290
|
private registerEventFromAttribute(eventName: string, code: string) {
|
|
284
291
|
if (typeof code === "string" && code.length > 0) {
|
|
285
292
|
// indirect eval https://esbuild.github.io/content-types/#direct-eval
|
|
@@ -14,7 +14,7 @@ export class LoadingElementOptions {
|
|
|
14
14
|
|
|
15
15
|
export interface ILoadingViewHandler {
|
|
16
16
|
onLoadingBegin(message?: string);
|
|
17
|
-
onLoadingUpdate(progress: LoadingProgressArgs, message?: string);
|
|
17
|
+
onLoadingUpdate(progress: LoadingProgressArgs | number, message?: string);
|
|
18
18
|
onLoadingFinished(message?: string);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -110,9 +110,11 @@ export class EngineLoadingView implements ILoadingViewHandler {
|
|
|
110
110
|
this.updateDisplay();
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
onLoadingFinished(
|
|
113
|
+
onLoadingFinished() {
|
|
114
|
+
if (debug)
|
|
115
|
+
console.warn("Finished Loading");
|
|
114
116
|
this.loadingProgress = 1;
|
|
115
|
-
this.
|
|
117
|
+
this.onDoneLoading();
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
setMessage(message: string) {
|
|
@@ -125,27 +127,29 @@ export class EngineLoadingView implements ILoadingViewHandler {
|
|
|
125
127
|
private smoothProgressLoop() {
|
|
126
128
|
if (this._progressLoop) return;
|
|
127
129
|
let dt = 1 / 12;
|
|
128
|
-
const max = 1 - .05;
|
|
129
130
|
if (debugRendering) {
|
|
130
131
|
dt = 1 / 500;
|
|
131
132
|
if (typeof debugRendering === "number") dt *= debugRendering;
|
|
132
133
|
}
|
|
133
134
|
this._progressLoop = setInterval(() => {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (debug) console.log("Hiding loading element");
|
|
137
|
-
this._loadingElement.style.display = "none";
|
|
138
|
-
this._loadingElement.remove();
|
|
139
|
-
}
|
|
140
|
-
clearInterval(this._progressLoop);
|
|
141
|
-
this._progressLoop = null;
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
135
|
+
// increate loading speed when almost done
|
|
136
|
+
if (this.loadingProgress >= .95) dt = .9;
|
|
144
137
|
this._progress = Mathf.lerp(this._progress, this.loadingProgress, dt * this.loadingProgress);
|
|
145
138
|
this.updateDisplay();
|
|
146
139
|
}, dt);
|
|
147
140
|
}
|
|
148
141
|
|
|
142
|
+
private onDoneLoading() {
|
|
143
|
+
if (this._loadingElement) {
|
|
144
|
+
if (debug) console.log("Hiding loading element");
|
|
145
|
+
this._loadingElement.style.display = "none";
|
|
146
|
+
this._loadingElement.remove();
|
|
147
|
+
}
|
|
148
|
+
if (this._progressLoop)
|
|
149
|
+
clearInterval(this._progressLoop);
|
|
150
|
+
this._progressLoop = null;
|
|
151
|
+
}
|
|
152
|
+
|
|
149
153
|
private updateDisplay() {
|
|
150
154
|
const t = this._progress;
|
|
151
155
|
const percent = (t * 100).toFixed(0) + "%";
|