@needle-tools/engine 3.6.0-alpha.2 → 3.6.0-alpha.3
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 +6 -0
- package/dist/needle-engine.js +3336 -3300
- package/dist/needle-engine.light.js +7805 -7769
- package/dist/needle-engine.light.min.js +101 -101
- package/dist/needle-engine.light.umd.cjs +102 -102
- package/dist/needle-engine.min.js +112 -112
- package/dist/needle-engine.umd.cjs +111 -111
- package/lib/engine/engine_context.js +9 -6
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_context_registry.d.ts +3 -2
- package/lib/engine/engine_context_registry.js +8 -3
- package/lib/engine/engine_context_registry.js.map +1 -1
- package/lib/engine/engine_element.js +21 -7
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_scenetools.js +2 -5
- package/lib/engine/engine_scenetools.js.map +1 -1
- package/lib/engine/engine_types.d.ts +17 -1
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine-components/AnimationUtils.d.ts +1 -0
- package/lib/engine-components/AnimationUtils.js +12 -0
- package/lib/engine-components/AnimationUtils.js.map +1 -0
- package/lib/engine-components/CameraUtils.js +3 -0
- package/lib/engine-components/CameraUtils.js.map +1 -1
- package/lib/engine-components/Skybox.js +10 -3
- package/lib/engine-components/Skybox.js.map +1 -1
- package/lib/engine-components/api.d.ts +2 -0
- package/lib/engine-components/api.js +2 -0
- package/lib/engine-components/api.js.map +1 -1
- package/lib/needle-engine.d.ts +0 -1
- package/lib/needle-engine.js +0 -1
- package/lib/needle-engine.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/engine_context.ts +11 -8
- package/src/engine/engine_context_registry.ts +10 -4
- package/src/engine/engine_element.ts +26 -9
- package/src/engine/engine_scenetools.ts +2 -6
- package/src/engine/engine_types.ts +17 -2
- package/src/engine-components/AnimationUtils.ts +14 -0
- package/src/engine-components/CameraUtils.ts +3 -0
- package/src/engine-components/Skybox.ts +10 -4
- package/src/engine-components/api.ts +5 -1
- package/src/needle-engine.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skybox.js","sourceRoot":"","sources":["../../src/engine-components/Skybox.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,gCAAgC,EAAc,YAAY,EAAW,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1G,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAG9E,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAEtC,2BAA2B,CAAC,cAAc,CAAC,CAAC;AAC5C,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;AAEjD,SAAS,2BAA2B,CAAC,OAAiB,EAAE,GAAW,EAAE,MAAe,EAAE,WAAoB,EAAE,SAA+C;IACvJ,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Skybox.js","sourceRoot":"","sources":["../../src/engine-components/Skybox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine-components/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC9D,cAAc,sBAAsB,CAAC;AAErC,sDAAsD;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAA;AAExB,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine-components/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC9D,cAAc,sBAAsB,CAAC;AAErC,sDAAsD;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAA;AAExB,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGrC,OAAO,eAAe,CAAA;AACtB,OAAO,kBAAkB,CAAA"}
|
package/lib/needle-engine.d.ts
CHANGED
package/lib/needle-engine.js
CHANGED
|
@@ -2,7 +2,6 @@ import { makeErrorsVisibleForDevelopment } from "./engine/debug/debug_overlay";
|
|
|
2
2
|
makeErrorsVisibleForDevelopment();
|
|
3
3
|
import "./engine/engine_element";
|
|
4
4
|
import "./engine/engine_setup";
|
|
5
|
-
import "./engine-components/CameraUtils";
|
|
6
5
|
export * from "./engine/api";
|
|
7
6
|
export * from "./engine-components/api";
|
|
8
7
|
export * from "./engine-components-experimental/api";
|
package/lib/needle-engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,+BAA+B,EAAE,CAAC;AAElC,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,
|
|
1
|
+
{"version":3,"file":"needle-engine.js","sourceRoot":"","sources":["../src/needle-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAC/E,+BAA+B,EAAE,CAAC;AAElC,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AAErD,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;IACpC,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;CACrD;AACD,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;AAC9B,SAAS,cAAc,CAAC,GAAW;IAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KAC1B;AACL,CAAC;AACD,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAC;AAC3D,cAAc,CAAC,SAAS,CAAC,CAAC;AAE1B,OAAO,KAAK,UAAU,MAAM,wCAAwC,CAAC;AACrE,cAAc,CAAC,UAAU,CAAC,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE;IACzD,QAAQ,MAAM,EAAE;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,SAAS;QACb;YACI,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM;KACb;CACJ;AAED,wBAAwB;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;IACtB,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;CAC/B;;IACI,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAIjD,OAAO,yBAAyB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "3.6.0-alpha.
|
|
3
|
+
"version": "3.6.0-alpha.3",
|
|
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",
|
|
@@ -25,7 +25,7 @@ import { Application } from './engine_application';
|
|
|
25
25
|
import { LightDataRegistry, ILightDataRegistry } from './engine_lightdata';
|
|
26
26
|
import { PlayerViewManager } from './engine_playerview';
|
|
27
27
|
|
|
28
|
-
import { CoroutineData, ICamera, IComponent, IContext, ILight } from "./engine_types"
|
|
28
|
+
import { CoroutineData, GLTF, ICamera, IComponent, IContext, ILight } from "./engine_types"
|
|
29
29
|
import { destroy, foreachComponent } from './engine_gameobject';
|
|
30
30
|
import { ContextEvent, ContextRegistry } from './engine_context_registry';
|
|
31
31
|
import { delay } from './engine_utils';
|
|
@@ -379,10 +379,8 @@ export class Context implements IContext {
|
|
|
379
379
|
destroy(this.scene, true, true);
|
|
380
380
|
this.scene = new Scene();
|
|
381
381
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
this.renderer.clear();
|
|
385
|
-
}
|
|
382
|
+
// We do not want to clear the renderer here because when switching src we want to keep the last rendered frame in case the loading screen is not visible
|
|
383
|
+
// if a user wants to see the background they can still call setClearAlpha(0) and clear manually
|
|
386
384
|
}
|
|
387
385
|
|
|
388
386
|
dispose() {
|
|
@@ -394,6 +392,10 @@ export class Context implements IContext {
|
|
|
394
392
|
private internalOnDestroy() {
|
|
395
393
|
this.clear();
|
|
396
394
|
this.renderer?.setAnimationLoop(null);
|
|
395
|
+
if (this.renderer) {
|
|
396
|
+
this.renderer.setClearAlpha(0);
|
|
397
|
+
this.renderer.clear();
|
|
398
|
+
}
|
|
397
399
|
if (!this.isManagedExternally) {
|
|
398
400
|
this.renderer?.dispose();
|
|
399
401
|
}
|
|
@@ -554,7 +556,7 @@ export class Context implements IContext {
|
|
|
554
556
|
}
|
|
555
557
|
|
|
556
558
|
|
|
557
|
-
private async internalOnCreate(buildScene?: (context: Context, opts?: LoadingOptions) => Promise<void>, opts?: LoadingOptions) {
|
|
559
|
+
private async internalOnCreate(buildScene?: (context: Context, opts?: LoadingOptions) => Promise<GLTF[] | void>, opts?: LoadingOptions) {
|
|
558
560
|
|
|
559
561
|
this.clear();
|
|
560
562
|
// stop the animation loop if its running during creation
|
|
@@ -568,10 +570,11 @@ export class Context implements IContext {
|
|
|
568
570
|
|
|
569
571
|
// load and create scene
|
|
570
572
|
let prepare_succeeded = true;
|
|
573
|
+
let loadedFiles: GLTF[] | undefined | void = undefined;
|
|
571
574
|
try {
|
|
572
575
|
Context.Current = this;
|
|
573
576
|
if (buildScene)
|
|
574
|
-
await buildScene(this, opts);
|
|
577
|
+
loadedFiles = await buildScene(this, opts);
|
|
575
578
|
}
|
|
576
579
|
catch (err) {
|
|
577
580
|
console.error(err);
|
|
@@ -678,7 +681,7 @@ export class Context implements IContext {
|
|
|
678
681
|
this._isCreating = false;
|
|
679
682
|
this.restartRenderLoop();
|
|
680
683
|
this._dispatchReadyAfterFrame = true;
|
|
681
|
-
return ContextRegistry.dispatchCallback(ContextEvent.ContextCreated, this);
|
|
684
|
+
return ContextRegistry.dispatchCallback(ContextEvent.ContextCreated, this, { files: loadedFiles});
|
|
682
685
|
}
|
|
683
686
|
|
|
684
687
|
private _accumulatedTime = 0;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IComponent, IContext } from "./engine_types";
|
|
1
|
+
import { IComponent, IContext, LoadedGLTF } from "./engine_types";
|
|
2
2
|
|
|
3
3
|
export enum ContextEvent {
|
|
4
4
|
/** called when the context is registered to the registry, the context is not fully initialized at this point */
|
|
@@ -13,6 +13,7 @@ export enum ContextEvent {
|
|
|
13
13
|
export type ContextEventArgs = {
|
|
14
14
|
event: ContextEvent;
|
|
15
15
|
context: IContext;
|
|
16
|
+
files?: LoadedGLTF[]
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export type ContextCallback = (evt: ContextEventArgs) => void | Promise<any> | IComponent;
|
|
@@ -62,12 +63,17 @@ export class ContextRegistry {
|
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
/** @internal */
|
|
65
|
-
static dispatchCallback(evt: ContextEvent, context: IContext) {
|
|
66
|
+
static dispatchCallback(evt: ContextEvent, context: IContext, extras?: object) {
|
|
66
67
|
if (!this._callbacks[evt]) return true;
|
|
67
|
-
const
|
|
68
|
+
const cbArgs = { event: evt, context }
|
|
69
|
+
if (extras) {
|
|
70
|
+
for (const key in extras) {
|
|
71
|
+
cbArgs[key] = extras[key];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
68
74
|
const promises = new Array<Promise<any>>();
|
|
69
75
|
this._callbacks[evt].forEach(cb => {
|
|
70
|
-
const res = cb(
|
|
76
|
+
const res = cb(cbArgs)
|
|
71
77
|
if (res instanceof Promise) promises.push(res);
|
|
72
78
|
});
|
|
73
79
|
return Promise.all(promises);
|
|
@@ -6,10 +6,11 @@ import { getParam } from "./engine_utils";
|
|
|
6
6
|
import { setDracoDecoderPath, setDracoDecoderType, setKtx2TranscoderPath } from "./engine_loaders";
|
|
7
7
|
import { getLoader, registerLoader } from "../engine/engine_gltf";
|
|
8
8
|
import { NeedleGltfLoader } from "./engine_scenetools";
|
|
9
|
-
import { INeedleEngineComponent } from "./engine_types";
|
|
9
|
+
import { GLTF, INeedleEngineComponent, LoadedGLTF } from "./engine_types";
|
|
10
10
|
import { isLocalNetwork } from "./engine_networking_utils";
|
|
11
11
|
import { showBalloonWarning } from "./debug";
|
|
12
12
|
import { destroy } from "./engine_gameobject";
|
|
13
|
+
import { ContextRegistry } from "./engine_context_registry";
|
|
13
14
|
|
|
14
15
|
//
|
|
15
16
|
// registering loader here too to make sure it's imported when using engine via vanilla js
|
|
@@ -119,7 +120,7 @@ export class NeedleEngineHTMLElement extends HTMLElement implements INeedleEngin
|
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
disconnectedCallback() {
|
|
122
|
-
if(debug) console.warn("<needle-engine> disconnected");
|
|
123
|
+
if (debug) console.warn("<needle-engine> disconnected");
|
|
123
124
|
this._context?.dispose();
|
|
124
125
|
}
|
|
125
126
|
|
|
@@ -208,6 +209,7 @@ export class NeedleEngineHTMLElement extends HTMLElement implements INeedleEngin
|
|
|
208
209
|
if (debug) console.log(filesToLoad);
|
|
209
210
|
|
|
210
211
|
let loadFunction: any = null;
|
|
212
|
+
let loadedFiles: Array<LoadedGLTF> = [];
|
|
211
213
|
|
|
212
214
|
if (filesToLoad?.length > 0) {
|
|
213
215
|
loadFunction = async (ctx: Context) => {
|
|
@@ -251,17 +253,24 @@ export class NeedleEngineHTMLElement extends HTMLElement implements INeedleEngin
|
|
|
251
253
|
progressEventArgs.detail.totalProgress01 = this._loadingProgress01;
|
|
252
254
|
this.dispatchEvent(new CustomEvent("progress", progressEventArgs));
|
|
253
255
|
});
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
256
|
+
if (res) {
|
|
257
|
+
loadedFiles.push({
|
|
258
|
+
src: url,
|
|
259
|
+
file: res as GLTF
|
|
260
|
+
});
|
|
261
|
+
const obj = res.scene;
|
|
262
|
+
if (obj) {
|
|
263
|
+
// if the loading ID changed but the scene has already been loaded we want to dispose it
|
|
264
|
+
if (this._loadId !== loadId) {
|
|
265
|
+
destroy(obj, true, true)
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
GameObject.add(obj, ctx.scene, ctx);
|
|
260
269
|
}
|
|
261
|
-
GameObject.add(obj, ctx.scene, ctx);
|
|
262
270
|
}
|
|
263
271
|
}
|
|
264
272
|
if (this._loadId !== loadId) return;
|
|
273
|
+
return loadedFiles;
|
|
265
274
|
};
|
|
266
275
|
}
|
|
267
276
|
if (!loadFunction) {
|
|
@@ -312,6 +321,14 @@ export class NeedleEngineHTMLElement extends HTMLElement implements INeedleEngin
|
|
|
312
321
|
filesToLoad = src.split(",");
|
|
313
322
|
}
|
|
314
323
|
else filesToLoad = [src];
|
|
324
|
+
|
|
325
|
+
// filter out invalid or empty strings
|
|
326
|
+
for (let i = filesToLoad.length - 1; i >= 0; i--) {
|
|
327
|
+
const file = filesToLoad[i];
|
|
328
|
+
if (file === "null" || file === "undefined" || file?.length <= 0)
|
|
329
|
+
filesToLoad.splice(i, 1);
|
|
330
|
+
}
|
|
331
|
+
|
|
315
332
|
return filesToLoad;
|
|
316
333
|
}
|
|
317
334
|
|
|
@@ -89,10 +89,6 @@ async function handleLoadedGltf(context: Context, gltfId: string, gltf, seed: nu
|
|
|
89
89
|
if (printGltf)
|
|
90
90
|
console.warn("glTF", gltfId, gltf);
|
|
91
91
|
await getLoader().createBuiltinComponents(context, gltfId, gltf, seed, componentsExtension);
|
|
92
|
-
|
|
93
|
-
// load and assign animation
|
|
94
|
-
// we still need this for Animation component
|
|
95
|
-
// findAnimationsLate(context, gltf, context.new_scripts_pre_setup_callbacks, false);
|
|
96
92
|
}
|
|
97
93
|
|
|
98
94
|
export function createGLTFLoader(url: string, context: Context) {
|
|
@@ -174,8 +170,8 @@ export function findAnimationsLate(_context: Context, gltf, callbackarray, allow
|
|
|
174
170
|
}
|
|
175
171
|
|
|
176
172
|
export function findAnimations(gltf: GLTF, allowAddingAnimator: boolean = false) {
|
|
177
|
-
|
|
178
|
-
if (!gltf || !gltf.animations
|
|
173
|
+
console.log(gltf);
|
|
174
|
+
if (!gltf || !gltf.animations) return;
|
|
179
175
|
|
|
180
176
|
if (!allowAddingAnimator) {
|
|
181
177
|
// we only need to search if any animation component is in the scene
|
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
import { RenderTexture } from "./engine_texture";
|
|
2
|
-
import { Camera, Color, Material, Object3D, Vector3, Quaternion, Ray, Scene, Renderer, WebGLRenderer, Mesh } from "three";
|
|
2
|
+
import { Camera, Color, Material, Object3D, Vector3, Quaternion, Ray, Scene, Renderer, WebGLRenderer, Mesh, AnimationClip } from "three";
|
|
3
3
|
import { RGBAColor } from "../engine-components/js-extensions/RGBAColor";
|
|
4
4
|
import { CollisionDetectionMode, PhysicsMaterial, RigidbodyConstraints } from "./engine_physics.types";
|
|
5
5
|
import { CircularBuffer } from "./engine_utils";
|
|
6
6
|
|
|
7
|
+
export type GLTF = {
|
|
8
|
+
asset: { generator: string, version: string }
|
|
9
|
+
animations: AnimationClip[];
|
|
10
|
+
cameras: Camera[];
|
|
11
|
+
scene: Object3D;
|
|
12
|
+
scenes: Object3D[];
|
|
13
|
+
userData: object;
|
|
14
|
+
parser: any;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type LoadedGLTF = {
|
|
18
|
+
src: string;
|
|
19
|
+
file: GLTF;
|
|
20
|
+
}
|
|
21
|
+
|
|
7
22
|
/** used to find data registered via gltf files e.g. find lightmaps for a Renderer component that were shipped inside a gltf */
|
|
8
23
|
export declare type SourceIdentifier = string;
|
|
9
24
|
|
|
@@ -412,5 +427,5 @@ export interface IPhysicsEngine {
|
|
|
412
427
|
addFixedJoint(body1: IRigidbody, body2: IRigidbody);
|
|
413
428
|
addHingeJoint(body1: IRigidbody, body2: IRigidbody, anchor: Vec3, axis: Vec3);
|
|
414
429
|
|
|
415
|
-
debugRenderColliders
|
|
430
|
+
debugRenderColliders: boolean;
|
|
416
431
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GLTF } from "three/examples/jsm/loaders/GLTFLoader.js";
|
|
2
|
+
import { ContextEvent, ContextRegistry } from "../engine/engine_context_registry.js";
|
|
3
|
+
import { findAnimations } from "../engine/engine_scenetools.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
ContextRegistry.registerCallback(ContextEvent.ContextCreated, args => {
|
|
7
|
+
const autoplay = args.context.domElement.getAttribute("autoplay");
|
|
8
|
+
if (autoplay !== undefined && (autoplay === "" || autoplay === "true")) {
|
|
9
|
+
if (args.files) {
|
|
10
|
+
for (const file of args.files)
|
|
11
|
+
findAnimations(file.file as GLTF, true);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
});
|
|
@@ -52,6 +52,9 @@ ContextRegistry.registerCallback(ContextEvent.ContextCreated, (evt) => {
|
|
|
52
52
|
if (cameraObject) {
|
|
53
53
|
const orbit = getOrAddComponent(cameraObject, OrbitControls) as OrbitControls;
|
|
54
54
|
orbit.sourceId = "unknown";
|
|
55
|
+
const autoRotate = evt.context.domElement.getAttribute("auto-rotate");
|
|
56
|
+
orbit.autoRotate = autoRotate !== undefined && (autoRotate === "" || autoRotate === "true")
|
|
57
|
+
orbit.autoRotateSpeed = 0.5;
|
|
55
58
|
const ctx = evt.context;
|
|
56
59
|
const fitCamera = () => {
|
|
57
60
|
ctx.pre_render_callbacks.splice(ctx.pre_render_callbacks.indexOf(fitCamera), 1);
|
|
@@ -17,7 +17,6 @@ registerObservableAttribute("environment-image");
|
|
|
17
17
|
|
|
18
18
|
function createRemoteSkyboxComponent(context: IContext, url: string, skybox: boolean, environment: boolean, attribute: "skybox-image" | "environment-image") {
|
|
19
19
|
const remote = new RemoteSkybox();
|
|
20
|
-
remote.url = url;
|
|
21
20
|
remote.allowDrop = false;
|
|
22
21
|
remote.allowNetworking = false;
|
|
23
22
|
remote.background = skybox;
|
|
@@ -33,21 +32,29 @@ function createRemoteSkyboxComponent(context: IContext, url: string, skybox: boo
|
|
|
33
32
|
if (debug) console.log("Destroyed attribute remote skybox", attribute);
|
|
34
33
|
removeAttributeChangeCallback(context.domElement, attribute, urlChanged);
|
|
35
34
|
});
|
|
35
|
+
return remote.setSkybox(url);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
ContextRegistry.addContextCreatedCallback((args) => {
|
|
39
39
|
const context = args.context;
|
|
40
40
|
const skyboxImage = context.domElement.getAttribute("skybox-image");
|
|
41
41
|
const environmentImage = context.domElement.getAttribute("environment-image");
|
|
42
|
+
let promises = new Array<Promise<any>>();
|
|
42
43
|
|
|
43
44
|
if (skyboxImage) {
|
|
44
45
|
if (debug) console.log("Creating remote skybox to load " + skyboxImage);
|
|
45
|
-
createRemoteSkyboxComponent(context, skyboxImage, true, false, "skybox-image");
|
|
46
|
+
const promise = createRemoteSkyboxComponent(context, skyboxImage, true, false, "skybox-image");
|
|
47
|
+
promises.push(promise);
|
|
46
48
|
}
|
|
47
49
|
if (environmentImage) {
|
|
48
50
|
if (debug) console.log("Creating remote environment to load " + environmentImage);
|
|
49
|
-
createRemoteSkyboxComponent(context, environmentImage, false, true, "environment-image");
|
|
51
|
+
const promise = createRemoteSkyboxComponent(context, environmentImage, false, true, "environment-image");
|
|
52
|
+
promises.push(promise);
|
|
50
53
|
}
|
|
54
|
+
if (promises.length > 0) {
|
|
55
|
+
return Promise.all(promises);
|
|
56
|
+
}
|
|
57
|
+
return Promise.resolve();
|
|
51
58
|
});
|
|
52
59
|
|
|
53
60
|
|
|
@@ -192,7 +199,6 @@ export class RemoteSkybox extends Behaviour {
|
|
|
192
199
|
this._prevBackground = this.context.scene.background;
|
|
193
200
|
if (this.context.scene.environment !== envMap)
|
|
194
201
|
this._prevEnvironment = this.context.scene.environment;
|
|
195
|
-
|
|
196
202
|
if (debug) console.log("Set remote skybox", this.url);
|
|
197
203
|
if (this.environment)
|
|
198
204
|
this.context.scene.environment = envMap;
|
package/src/needle-engine.ts
CHANGED
|
@@ -3,8 +3,6 @@ makeErrorsVisibleForDevelopment();
|
|
|
3
3
|
|
|
4
4
|
import "./engine/engine_element";
|
|
5
5
|
import "./engine/engine_setup";
|
|
6
|
-
import "./engine-components/CameraUtils"
|
|
7
|
-
|
|
8
6
|
export * from "./engine/api";
|
|
9
7
|
export * from "./engine-components/api";
|
|
10
8
|
export * from "./engine-components-experimental/api";
|