angular-three 1.7.1 → 1.8.0
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/esm2020/index.mjs +2 -1
- package/esm2020/lib/canvas.mjs +2 -1
- package/esm2020/lib/renderer/renderer.mjs +8 -2
- package/esm2020/lib/routed-scene.mjs +18 -0
- package/esm2020/lib/stores/store.mjs +31 -1
- package/fesm2015/angular-three.mjs +56 -2
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +55 -2
- package/fesm2020/angular-three.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/renderer/renderer.d.ts +1 -0
- package/lib/routed-scene.d.ts +6 -0
- package/lib/stores/store.d.ts +1 -0
- package/package.json +3 -2
- package/plugin/package.json +1 -1
|
@@ -6,6 +6,7 @@ import * as THREE from 'three';
|
|
|
6
6
|
import { DOCUMENT, NgForOf, NgIf } from '@angular/common';
|
|
7
7
|
import { RxState, selectSlice } from '@rx-angular/state';
|
|
8
8
|
import { __classPrivateFieldGet } from 'tslib';
|
|
9
|
+
import { RouterOutlet } from '@angular/router';
|
|
9
10
|
|
|
10
11
|
const idCache = {};
|
|
11
12
|
function makeId(event) {
|
|
@@ -894,6 +895,27 @@ class NgtStore extends NgtRxStore {
|
|
|
894
895
|
this.set({ ready: true });
|
|
895
896
|
this.invalidate();
|
|
896
897
|
}
|
|
898
|
+
destroy(canvas) {
|
|
899
|
+
this.set((state) => ({
|
|
900
|
+
internal: { ...state.internal, active: false },
|
|
901
|
+
}));
|
|
902
|
+
setTimeout(() => {
|
|
903
|
+
const { gl, xr, events } = this.get();
|
|
904
|
+
if (gl) {
|
|
905
|
+
if (events.disconnect) {
|
|
906
|
+
events.disconnect();
|
|
907
|
+
}
|
|
908
|
+
gl.renderLists.dispose();
|
|
909
|
+
gl.forceContextLoss();
|
|
910
|
+
if (gl.xr && gl.xr.enabled) {
|
|
911
|
+
gl.xr.setAnimationLoop(null);
|
|
912
|
+
xr.disconnect();
|
|
913
|
+
}
|
|
914
|
+
dispose(this.get());
|
|
915
|
+
rootStateMap.delete(canvas);
|
|
916
|
+
}
|
|
917
|
+
}, 500);
|
|
918
|
+
}
|
|
897
919
|
resize() {
|
|
898
920
|
const state = this.get();
|
|
899
921
|
let oldSize = state.size;
|
|
@@ -937,6 +959,15 @@ function computeInitialSize(canvas, defaultSize) {
|
|
|
937
959
|
}
|
|
938
960
|
return { width: 0, height: 0, top: 0, left: 0 };
|
|
939
961
|
}
|
|
962
|
+
// Disposes an object and all its properties
|
|
963
|
+
function dispose(obj) {
|
|
964
|
+
if (obj.dispose && !is.scene(obj))
|
|
965
|
+
obj.dispose();
|
|
966
|
+
for (const p in obj) {
|
|
967
|
+
p.dispose?.();
|
|
968
|
+
delete obj[p];
|
|
969
|
+
}
|
|
970
|
+
}
|
|
940
971
|
|
|
941
972
|
const NGT_COMPOUND_PREFIXES = new InjectionToken('NgtCompoundPrefixes');
|
|
942
973
|
|
|
@@ -1932,6 +1963,7 @@ class NgtRendererFactory {
|
|
|
1932
1963
|
this.compoundPrefixes = inject(NGT_COMPOUND_PREFIXES);
|
|
1933
1964
|
this.document = inject(DOCUMENT);
|
|
1934
1965
|
this.rendererMap = new Map();
|
|
1966
|
+
this.routedSet = new Set();
|
|
1935
1967
|
this.portals = [];
|
|
1936
1968
|
this.rendererStore = new NgtRendererStore({
|
|
1937
1969
|
store: this.store,
|
|
@@ -1945,9 +1977,14 @@ class NgtRendererFactory {
|
|
|
1945
1977
|
const delegateRenderer = this.delegateRendererFactory.createRenderer(hostElement, type);
|
|
1946
1978
|
if (!type)
|
|
1947
1979
|
return delegateRenderer;
|
|
1980
|
+
if (type['type']['isRoutedScene']) {
|
|
1981
|
+
this.routedSet.add(type.id);
|
|
1982
|
+
}
|
|
1948
1983
|
let renderer = this.rendererMap.get(type.id);
|
|
1949
1984
|
if (!renderer) {
|
|
1950
|
-
renderer = new NgtRenderer(delegateRenderer, this.rendererStore, this.catalogue,
|
|
1985
|
+
renderer = new NgtRenderer(delegateRenderer, this.rendererStore, this.catalogue,
|
|
1986
|
+
// setting root scene if there's no routed scene OR this component is the routed Scene
|
|
1987
|
+
!hostElement && (this.routedSet.size === 0 || this.routedSet.has(type.id)));
|
|
1951
1988
|
this.rendererMap.set(type.id, renderer);
|
|
1952
1989
|
}
|
|
1953
1990
|
return renderer;
|
|
@@ -2477,6 +2514,7 @@ class NgtCanvas extends NgtRxStore {
|
|
|
2477
2514
|
if (this.glEnvInjector)
|
|
2478
2515
|
this.glEnvInjector.destroy();
|
|
2479
2516
|
injectNgtLoader.destroy();
|
|
2517
|
+
this.store.destroy(this.glCanvas.nativeElement);
|
|
2480
2518
|
super.ngOnDestroy();
|
|
2481
2519
|
}
|
|
2482
2520
|
overrideDetectChanges() {
|
|
@@ -2980,9 +3018,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImpor
|
|
|
2980
3018
|
args: ['portalContentAnchor', { read: ViewContainerRef, static: true }]
|
|
2981
3019
|
}] } });
|
|
2982
3020
|
|
|
3021
|
+
class NgtRoutedScene {
|
|
3022
|
+
}
|
|
3023
|
+
NgtRoutedScene.isRoutedScene = true;
|
|
3024
|
+
NgtRoutedScene.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRoutedScene, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3025
|
+
NgtRoutedScene.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.3", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `<router-outlet />`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
3026
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: NgtRoutedScene, decorators: [{
|
|
3027
|
+
type: Component,
|
|
3028
|
+
args: [{
|
|
3029
|
+
standalone: true,
|
|
3030
|
+
selector: 'ngt-routed-scene',
|
|
3031
|
+
template: `<router-outlet />`,
|
|
3032
|
+
imports: [RouterOutlet],
|
|
3033
|
+
}]
|
|
3034
|
+
}] });
|
|
3035
|
+
|
|
2983
3036
|
/**
|
|
2984
3037
|
* Generated bundle index. Do not edit.
|
|
2985
3038
|
*/
|
|
2986
3039
|
|
|
2987
|
-
export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtPush, NgtRepeat, NgtRxStore, NgtStore, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, createLoop, createRunInContext, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, is, makeDefaultCamera, makeDefaultRenderer, makeDpr, makeId, makeObjectGraph, prepare, rootStateMap, safeDetectChanges, startWithUndefined, tapEffect, updateCamera };
|
|
3040
|
+
export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtPush, NgtRepeat, NgtRoutedScene, NgtRxStore, NgtStore, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, createLoop, createRunInContext, extend, flushGlobalEffects, getLocalState, injectBeforeRender, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, is, makeDefaultCamera, makeDefaultRenderer, makeDpr, makeId, makeObjectGraph, prepare, rootStateMap, safeDetectChanges, startWithUndefined, tapEffect, updateCamera };
|
|
2988
3041
|
//# sourceMappingURL=angular-three.mjs.map
|