angular-three 1.7.0 → 1.7.2
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/lib/canvas.mjs +2 -1
- package/esm2020/lib/renderer/renderer.mjs +11 -25
- package/esm2020/lib/stores/store.mjs +31 -1
- package/fesm2015/angular-three.mjs +42 -24
- package/fesm2015/angular-three.mjs.map +1 -1
- package/fesm2020/angular-three.mjs +41 -24
- package/fesm2020/angular-three.mjs.map +1 -1
- package/lib/renderer/renderer.d.ts +2 -2
- package/lib/stores/store.d.ts +1 -0
- package/package.json +1 -1
- package/plugin/package.json +1 -1
|
@@ -875,6 +875,27 @@ class NgtStore extends NgtRxStore {
|
|
|
875
875
|
this.set({ ready: true });
|
|
876
876
|
this.invalidate();
|
|
877
877
|
}
|
|
878
|
+
destroy(canvas) {
|
|
879
|
+
this.set((state) => ({
|
|
880
|
+
internal: Object.assign(Object.assign({}, state.internal), { active: false }),
|
|
881
|
+
}));
|
|
882
|
+
setTimeout(() => {
|
|
883
|
+
const { gl, xr, events } = this.get();
|
|
884
|
+
if (gl) {
|
|
885
|
+
if (events.disconnect) {
|
|
886
|
+
events.disconnect();
|
|
887
|
+
}
|
|
888
|
+
gl.renderLists.dispose();
|
|
889
|
+
gl.forceContextLoss();
|
|
890
|
+
if (gl.xr && gl.xr.enabled) {
|
|
891
|
+
gl.xr.setAnimationLoop(null);
|
|
892
|
+
xr.disconnect();
|
|
893
|
+
}
|
|
894
|
+
dispose(this.get());
|
|
895
|
+
rootStateMap.delete(canvas);
|
|
896
|
+
}
|
|
897
|
+
}, 500);
|
|
898
|
+
}
|
|
878
899
|
resize() {
|
|
879
900
|
const state = this.get();
|
|
880
901
|
let oldSize = state.size;
|
|
@@ -918,6 +939,16 @@ function computeInitialSize(canvas, defaultSize) {
|
|
|
918
939
|
}
|
|
919
940
|
return { width: 0, height: 0, top: 0, left: 0 };
|
|
920
941
|
}
|
|
942
|
+
// Disposes an object and all its properties
|
|
943
|
+
function dispose(obj) {
|
|
944
|
+
var _a;
|
|
945
|
+
if (obj.dispose && !is.scene(obj))
|
|
946
|
+
obj.dispose();
|
|
947
|
+
for (const p in obj) {
|
|
948
|
+
(_a = p.dispose) === null || _a === void 0 ? void 0 : _a.call(p);
|
|
949
|
+
delete obj[p];
|
|
950
|
+
}
|
|
951
|
+
}
|
|
921
952
|
|
|
922
953
|
const NGT_COMPOUND_PREFIXES = new InjectionToken('NgtCompoundPrefixes');
|
|
923
954
|
|
|
@@ -1912,34 +1943,21 @@ class NgtRendererFactory {
|
|
|
1912
1943
|
this.document = inject(DOCUMENT);
|
|
1913
1944
|
this.rendererMap = new Map();
|
|
1914
1945
|
this.portals = [];
|
|
1946
|
+
this.rendererStore = new NgtRendererStore({
|
|
1947
|
+
store: this.store,
|
|
1948
|
+
cdr: this.cdr,
|
|
1949
|
+
portals: this.portals,
|
|
1950
|
+
compoundPrefixes: this.compoundPrefixes,
|
|
1951
|
+
document: this.document,
|
|
1952
|
+
});
|
|
1915
1953
|
}
|
|
1916
1954
|
createRenderer(hostElement, type) {
|
|
1917
1955
|
const delegateRenderer = this.delegateRendererFactory.createRenderer(hostElement, type);
|
|
1918
1956
|
if (!type)
|
|
1919
1957
|
return delegateRenderer;
|
|
1920
1958
|
let renderer = this.rendererMap.get(type.id);
|
|
1921
|
-
if (renderer)
|
|
1922
|
-
return renderer;
|
|
1923
|
-
if (!hostElement) {
|
|
1924
|
-
const store = new NgtRendererStore({
|
|
1925
|
-
store: this.store,
|
|
1926
|
-
cdr: this.cdr,
|
|
1927
|
-
portals: this.portals,
|
|
1928
|
-
compoundPrefixes: this.compoundPrefixes,
|
|
1929
|
-
document: this.document,
|
|
1930
|
-
});
|
|
1931
|
-
renderer = new NgtRenderer(delegateRenderer, store, this.catalogue);
|
|
1932
|
-
this.rendererMap.set(type.id, renderer);
|
|
1933
|
-
}
|
|
1934
1959
|
if (!renderer) {
|
|
1935
|
-
|
|
1936
|
-
store: this.store,
|
|
1937
|
-
cdr: this.cdr,
|
|
1938
|
-
portals: this.portals,
|
|
1939
|
-
compoundPrefixes: this.compoundPrefixes,
|
|
1940
|
-
document: this.document,
|
|
1941
|
-
});
|
|
1942
|
-
renderer = new NgtRenderer(delegateRenderer, store, this.catalogue, false);
|
|
1960
|
+
renderer = new NgtRenderer(delegateRenderer, this.rendererStore, this.catalogue, !hostElement);
|
|
1943
1961
|
this.rendererMap.set(type.id, renderer);
|
|
1944
1962
|
}
|
|
1945
1963
|
return renderer;
|
|
@@ -1959,7 +1977,6 @@ class NgtRenderer {
|
|
|
1959
1977
|
this.store = store;
|
|
1960
1978
|
this.catalogue = catalogue;
|
|
1961
1979
|
this.root = root;
|
|
1962
|
-
this.first = false;
|
|
1963
1980
|
this.createText = this.delegate.createText.bind(this.delegate);
|
|
1964
1981
|
this.destroy = this.delegate.destroy.bind(this.delegate);
|
|
1965
1982
|
this.destroyNode = null;
|
|
@@ -1975,8 +1992,8 @@ class NgtRenderer {
|
|
|
1975
1992
|
createElement(name, namespace) {
|
|
1976
1993
|
const element = this.delegate.createElement(name, namespace);
|
|
1977
1994
|
// on first pass, we return the Root Scene as the root node
|
|
1978
|
-
if (this.root
|
|
1979
|
-
this.
|
|
1995
|
+
if (this.root) {
|
|
1996
|
+
this.root = false;
|
|
1980
1997
|
const node = this.store.createNode('three', this.store.rootScene);
|
|
1981
1998
|
node.__ngt_renderer__[13 /* NgtRendererClassId.injectorFactory */] = () => getDebugNode(element).injector;
|
|
1982
1999
|
return node;
|
|
@@ -2471,6 +2488,7 @@ class NgtCanvas extends NgtRxStore {
|
|
|
2471
2488
|
if (this.glEnvInjector)
|
|
2472
2489
|
this.glEnvInjector.destroy();
|
|
2473
2490
|
injectNgtLoader.destroy();
|
|
2491
|
+
this.store.destroy(this.glCanvas.nativeElement);
|
|
2474
2492
|
super.ngOnDestroy();
|
|
2475
2493
|
}
|
|
2476
2494
|
overrideDetectChanges() {
|