angular-three-soba 2.0.0-beta.13 → 2.0.0-beta.15
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/esm2022/loaders/progress/progress.mjs +27 -20
- package/esm2022/performances/index.mjs +2 -1
- package/esm2022/performances/instances/instances.mjs +17 -24
- package/fesm2022/angular-three-soba-loaders.mjs +26 -19
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +17 -24
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/package.json +1 -1
- package/performances/index.d.ts +1 -0
- package/performances/instances/instances.d.ts +4 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, inject, runInInjectionContext, signal } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, inject, runInInjectionContext, signal, untracked } from '@angular/core';
|
|
2
2
|
import { assertInjectionContext, safeDetectChanges } from 'angular-three';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
export function injectNgtsProgress(injector) {
|
|
@@ -8,38 +8,45 @@ export function injectNgtsProgress(injector) {
|
|
|
8
8
|
const progress = signal({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
|
|
9
9
|
let saveLastTotalLoaded = 0;
|
|
10
10
|
THREE.DefaultLoadingManager.onStart = (item, loaded, total) => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
untracked(() => {
|
|
12
|
+
progress.update((prev) => ({
|
|
13
|
+
...prev,
|
|
14
|
+
active: true,
|
|
15
|
+
item,
|
|
16
|
+
loaded,
|
|
17
|
+
total,
|
|
18
|
+
progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
|
|
19
|
+
}));
|
|
20
|
+
});
|
|
19
21
|
safeDetectChanges(cdr);
|
|
20
22
|
};
|
|
21
23
|
THREE.DefaultLoadingManager.onLoad = () => {
|
|
22
|
-
|
|
24
|
+
untracked(() => {
|
|
25
|
+
progress.update((prev) => ({ ...prev, active: false }));
|
|
26
|
+
});
|
|
23
27
|
safeDetectChanges(cdr);
|
|
24
|
-
cdr.detectChanges();
|
|
25
28
|
};
|
|
26
29
|
THREE.DefaultLoadingManager.onError = (url) => {
|
|
27
|
-
|
|
30
|
+
untracked(() => {
|
|
31
|
+
progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
|
|
32
|
+
});
|
|
28
33
|
safeDetectChanges(cdr);
|
|
29
34
|
};
|
|
30
35
|
THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
|
|
31
36
|
if (loaded === total)
|
|
32
37
|
saveLastTotalLoaded = total;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
untracked(() => {
|
|
39
|
+
progress.update((prev) => ({
|
|
40
|
+
...prev,
|
|
41
|
+
item,
|
|
42
|
+
loaded,
|
|
43
|
+
total,
|
|
44
|
+
progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
40
47
|
safeDetectChanges(cdr);
|
|
41
48
|
};
|
|
42
49
|
return progress.asReadonly();
|
|
43
50
|
});
|
|
44
51
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbG9hZGVycy9zcmMvcHJvZ3Jlc3MvcHJvZ3Jlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQW1CO0lBQ3JELFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxPQUFPLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQU9wQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5RSxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUU1QixLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3RCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFCLEdBQUcsSUFBSTtvQkFDUCxNQUFNLEVBQUUsSUFBSTtvQkFDWixJQUFJO29CQUNKLE1BQU07b0JBQ04sS0FBSztvQkFDTCxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLENBQUMsR0FBRyxHQUFHO2lCQUNoRixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDO1FBRUYsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztZQUNILGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztRQUVGLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekUsQ0FBQyxDQUFDLENBQUM7WUFDSCxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUM7UUFFRixLQUFLLENBQUMscUJBQXFCLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoRSxJQUFJLE1BQU0sS0FBSyxLQUFLO2dCQUFFLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNsRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFCLEdBQUcsSUFBSTtvQkFDUCxJQUFJO29CQUNKLE1BQU07b0JBQ04sS0FBSztvQkFDTCxRQUFRLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRztpQkFDdkYsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsLCB1bnRyYWNrZWQsIHR5cGUgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydEluamVjdGlvbkNvbnRleHQsIHNhZmVEZXRlY3RDaGFuZ2VzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzUHJvZ3Jlc3MoaW5qZWN0b3I/OiBJbmplY3Rvcikge1xuXHRpbmplY3RvciA9IGFzc2VydEluamVjdGlvbkNvbnRleHQoaW5qZWN0Tmd0c1Byb2dyZXNzLCBpbmplY3Rvcik7XG5cdHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG5cdFx0Y29uc3QgcHJvZ3Jlc3MgPSBzaWduYWw8e1xuXHRcdFx0ZXJyb3JzOiBzdHJpbmdbXTtcblx0XHRcdGFjdGl2ZTogYm9vbGVhbjtcblx0XHRcdHByb2dyZXNzOiBudW1iZXI7XG5cdFx0XHRpdGVtOiBzdHJpbmc7XG5cdFx0XHRsb2FkZWQ6IG51bWJlcjtcblx0XHRcdHRvdGFsOiBudW1iZXI7XG5cdFx0fT4oeyBlcnJvcnM6IFtdLCBhY3RpdmU6IGZhbHNlLCBwcm9ncmVzczogMCwgaXRlbTogJycsIGxvYWRlZDogMCwgdG90YWw6IDAgfSk7XG5cblx0XHRsZXQgc2F2ZUxhc3RUb3RhbExvYWRlZCA9IDA7XG5cblx0XHRUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXIub25TdGFydCA9IChpdGVtLCBsb2FkZWQsIHRvdGFsKSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRwcm9ncmVzcy51cGRhdGUoKHByZXYpID0+ICh7XG5cdFx0XHRcdFx0Li4ucHJldixcblx0XHRcdFx0XHRhY3RpdmU6IHRydWUsXG5cdFx0XHRcdFx0aXRlbSxcblx0XHRcdFx0XHRsb2FkZWQsXG5cdFx0XHRcdFx0dG90YWwsXG5cdFx0XHRcdFx0cHJvZ3Jlc3M6ICgobG9hZGVkIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkgLyAodG90YWwgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSkgKiAxMDAsXG5cdFx0XHRcdH0pKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRzYWZlRGV0ZWN0Q2hhbmdlcyhjZHIpO1xuXHRcdH07XG5cblx0XHRUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXIub25Mb2FkID0gKCkgPT4ge1xuXHRcdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdFx0cHJvZ3Jlc3MudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBhY3RpdmU6IGZhbHNlIH0pKTtcblx0XHRcdH0pO1xuXHRcdFx0c2FmZURldGVjdENoYW5nZXMoY2RyKTtcblx0XHR9O1xuXG5cdFx0VEhSRUUuRGVmYXVsdExvYWRpbmdNYW5hZ2VyLm9uRXJyb3IgPSAodXJsKSA9PiB7XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRwcm9ncmVzcy51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIGVycm9yczogWy4uLnByZXYuZXJyb3JzLCB1cmxdIH0pKTtcblx0XHRcdH0pO1xuXHRcdFx0c2FmZURldGVjdENoYW5nZXMoY2RyKTtcblx0XHR9O1xuXG5cdFx0VEhSRUUuRGVmYXVsdExvYWRpbmdNYW5hZ2VyLm9uUHJvZ3Jlc3MgPSAoaXRlbSwgbG9hZGVkLCB0b3RhbCkgPT4ge1xuXHRcdFx0aWYgKGxvYWRlZCA9PT0gdG90YWwpIHNhdmVMYXN0VG90YWxMb2FkZWQgPSB0b3RhbDtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHByb2dyZXNzLnVwZGF0ZSgocHJldikgPT4gKHtcblx0XHRcdFx0XHQuLi5wcmV2LFxuXHRcdFx0XHRcdGl0ZW0sXG5cdFx0XHRcdFx0bG9hZGVkLFxuXHRcdFx0XHRcdHRvdGFsLFxuXHRcdFx0XHRcdHByb2dyZXNzOiAoKGxvYWRlZCAtIHNhdmVMYXN0VG90YWxMb2FkZWQpIC8gKHRvdGFsIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkpICogMTAwIHx8IDEwMCxcblx0XHRcdFx0fSkpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHNhZmVEZXRlY3RDaGFuZ2VzKGNkcik7XG5cdFx0fTtcblxuXHRcdHJldHVybiBwcm9ncmVzcy5hc1JlYWRvbmx5KCk7XG5cdH0pO1xufVxuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './adaptive-dpr/adaptive-dpr';
|
|
2
2
|
export * from './adaptive-events/adaptive-events';
|
|
3
3
|
export * from './instances/instances';
|
|
4
|
+
export * from './instances/position-mesh';
|
|
4
5
|
export * from './points/points';
|
|
5
6
|
export * from './segments/segment-object';
|
|
6
7
|
export * from './segments/segments';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvcGVyZm9ybWFuY2VzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZGFwdGl2ZS1kcHIvYWRhcHRpdmUtZHByJztcbmV4cG9ydCAqIGZyb20gJy4vYWRhcHRpdmUtZXZlbnRzL2FkYXB0aXZlLWV2ZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2luc3RhbmNlcy9pbnN0YW5jZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnN0YW5jZXMvcG9zaXRpb24tbWVzaCc7XG5leHBvcnQgKiBmcm9tICcuL3BvaW50cy9wb2ludHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWdtZW50cy9zZWdtZW50LW9iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3NlZ21lbnRzL3NlZ21lbnRzJztcbiJdfQ==
|
|
@@ -77,13 +77,14 @@ export class NgtsInstances {
|
|
|
77
77
|
this.limit = this.inputs.select('limit');
|
|
78
78
|
this.positionMeshes = signal([]);
|
|
79
79
|
this.meshes = this.positionMeshes.asReadonly();
|
|
80
|
-
this.
|
|
81
|
-
|
|
82
|
-
const
|
|
80
|
+
this.buffers = computed(() => {
|
|
81
|
+
const limit = this.limit();
|
|
82
|
+
const matrices = new Float32Array(limit * 16);
|
|
83
83
|
for (let i = 0; i < limit; i++) {
|
|
84
84
|
tempMatrix.identity().toArray(matrices, i * 16);
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
const colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);
|
|
87
|
+
return { matrices, colors };
|
|
87
88
|
});
|
|
88
89
|
this.api = {
|
|
89
90
|
getParent: () => this.instancesRef,
|
|
@@ -106,6 +107,9 @@ export class NgtsInstances {
|
|
|
106
107
|
const instancedMesh = this.instancesRef.nativeElement;
|
|
107
108
|
if (!instancedMesh)
|
|
108
109
|
return;
|
|
110
|
+
// NOTE: not sure why matrices ends up a different instance than array
|
|
111
|
+
// we reassign it here
|
|
112
|
+
instancedMesh.instanceMatrix.array = untracked(this.buffers).matrices;
|
|
109
113
|
checkUpdate(instancedMesh.instanceMatrix);
|
|
110
114
|
});
|
|
111
115
|
}
|
|
@@ -113,14 +117,13 @@ export class NgtsInstances {
|
|
|
113
117
|
let count = 0;
|
|
114
118
|
let updateRange = 0;
|
|
115
119
|
injectBeforeRender(() => {
|
|
116
|
-
const [{ frames, limit, range }, instancedMesh, instances, matrices, colors] = [
|
|
120
|
+
const [{ frames, limit, range }, instancedMesh, instances, { matrices, colors }] = [
|
|
117
121
|
this.inputs.get(),
|
|
118
122
|
this.instancesRef.nativeElement,
|
|
119
123
|
this.meshes(),
|
|
120
|
-
this.
|
|
121
|
-
this.colors(),
|
|
124
|
+
this.buffers(),
|
|
122
125
|
];
|
|
123
|
-
if (frames === Infinity || count < frames) {
|
|
126
|
+
if ((frames === Infinity || count < frames) && instancedMesh) {
|
|
124
127
|
instancedMesh.updateMatrix();
|
|
125
128
|
instancedMesh.updateMatrixWorld();
|
|
126
129
|
parentMatrix.copy(instancedMesh.matrixWorld).invert();
|
|
@@ -138,7 +141,7 @@ export class NgtsInstances {
|
|
|
138
141
|
instance.matrixWorld.decompose(translation, rotation, scale);
|
|
139
142
|
instanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);
|
|
140
143
|
instanceMatrix.toArray(matrices, i * 16);
|
|
141
|
-
instancedMesh.instanceMatrix
|
|
144
|
+
checkUpdate(instancedMesh.instanceMatrix);
|
|
142
145
|
instance.color.toArray(colors, i * 3);
|
|
143
146
|
checkUpdate(instancedMesh.instanceColor);
|
|
144
147
|
}
|
|
@@ -153,21 +156,16 @@ export class NgtsInstances {
|
|
|
153
156
|
[ref]="instancesRef"
|
|
154
157
|
[matrixAutoUpdate]="false"
|
|
155
158
|
[raycast]="nullRaycast"
|
|
156
|
-
*args="[undefined, undefined, 0]"
|
|
157
159
|
ngtCompound
|
|
158
160
|
>
|
|
159
161
|
<ngt-instanced-buffer-attribute
|
|
162
|
+
*args="[buffers().matrices, 16]"
|
|
160
163
|
attach="instanceMatrix"
|
|
161
|
-
[count]="matrices().length / 16"
|
|
162
|
-
[array]="matrices()"
|
|
163
|
-
[itemSize]="16"
|
|
164
164
|
[usage]="DynamicDrawUsage"
|
|
165
165
|
/>
|
|
166
166
|
<ngt-instanced-buffer-attribute
|
|
167
|
+
*args="[buffers().colors, 3]"
|
|
167
168
|
attach="instanceColor"
|
|
168
|
-
[count]="colors().length / 3"
|
|
169
|
-
[array]="colors()"
|
|
170
|
-
[itemSize]="3"
|
|
171
169
|
[usage]="DynamicDrawUsage"
|
|
172
170
|
/>
|
|
173
171
|
<ng-container *ngTemplateOutlet="content" />
|
|
@@ -185,21 +183,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
185
183
|
[ref]="instancesRef"
|
|
186
184
|
[matrixAutoUpdate]="false"
|
|
187
185
|
[raycast]="nullRaycast"
|
|
188
|
-
*args="[undefined, undefined, 0]"
|
|
189
186
|
ngtCompound
|
|
190
187
|
>
|
|
191
188
|
<ngt-instanced-buffer-attribute
|
|
189
|
+
*args="[buffers().matrices, 16]"
|
|
192
190
|
attach="instanceMatrix"
|
|
193
|
-
[count]="matrices().length / 16"
|
|
194
|
-
[array]="matrices()"
|
|
195
|
-
[itemSize]="16"
|
|
196
191
|
[usage]="DynamicDrawUsage"
|
|
197
192
|
/>
|
|
198
193
|
<ngt-instanced-buffer-attribute
|
|
194
|
+
*args="[buffers().colors, 3]"
|
|
199
195
|
attach="instanceColor"
|
|
200
|
-
[count]="colors().length / 3"
|
|
201
|
-
[array]="colors()"
|
|
202
|
-
[itemSize]="3"
|
|
203
196
|
[usage]="DynamicDrawUsage"
|
|
204
197
|
/>
|
|
205
198
|
<ng-container *ngTemplateOutlet="content" />
|
|
@@ -224,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
224
217
|
type: ContentChild,
|
|
225
218
|
args: [NgtsSobaContent, { static: true, read: TemplateRef }]
|
|
226
219
|
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvaW5zdGFuY2VzL2luc3RhbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLEVBQUUsRUFDRixPQUFPLEVBRVAsV0FBVyxHQUdYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0MsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFxQmxFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN2RCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxD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QyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN0QyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN6QztnQkFDRCxLQUFLLEVBQUUsQ0FBQzthQUNSO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXJHVyxhQUFhO2tHQUFiLGFBQWEsaU1BSGQsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLCtEQXVCeEIsZUFBZSwyQkFBd0IsV0FBVywyQ0FsRHREOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeUJULDREQUNTLE9BQU8sZ0ZBQUUsZ0JBQWdCOzsyRkFJdkIsYUFBYTtrQkFqQ3pCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3BDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQzswRUFPUyxZQUFZO3NCQUFwQixLQUFLO2dCQUV5QixNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJTSxNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFJTyxPQUFPO3NCQUF0QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQkFJMEMsT0FBTztzQkFBMUUsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENvbnRlbnRDaGlsZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRmb3J3YXJkUmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRJbnB1dCxcblx0Tmdab25lLFxuXHRzaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHR1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Y2hlY2tVcGRhdGUsXG5cdGNyZWF0ZUluamVjdGlvblRva2VuLFxuXHRleHRlbmQsXG5cdGluamVjdEJlZm9yZVJlbmRlcixcblx0aW5qZWN0Tmd0UmVmLFxuXHRpcyxcblx0Tmd0QXJncyxcblx0Tmd0UmVmLFxuXHRzaWduYWxTdG9yZSxcblx0dHlwZSBOZ3RHcm91cCxcblx0dHlwZSBOZ3RJbnN0YW5jZWRNZXNoLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNTb2JhQ29udGVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS91dGlscyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUsIEluc3RhbmNlZE1lc2ggfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBQb3NpdGlvbk1lc2ggfSBmcm9tICcuL3Bvc2l0aW9uLW1lc2gnO1xuXG5leHRlbmQoeyBQb3NpdGlvbk1lc2gsIEluc3RhbmNlZE1lc2gsIEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSB9KTtcblxuZXhwb3J0IHR5cGUgTmd0c0luc3RhbmNlc1N0YXRlID0ge1xuXHRyYW5nZT86IG51bWJlcjtcblx0bGltaXQ6IG51bWJlcjtcblx0ZnJhbWVzOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3QtcG9zaXRpb24tbWVzaCc6IFBvc2l0aW9uTWVzaCAmIE5ndEdyb3VwO1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1pbnN0YW5jZWQtbWVzaFxuXHRcdCAqL1xuXHRcdCduZ3RzLWluc3RhbmNlcyc6IE5ndHNJbnN0YW5jZXNTdGF0ZSAmIE5ndEluc3RhbmNlZE1lc2g7XG5cdH1cbn1cblxuY29uc3QgcGFyZW50TWF0cml4ID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgaW5zdGFuY2VNYXRyaXggPSAvKkBfX1BVUkVfXyovIG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5jb25zdCB0ZW1wTWF0cml4ID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgdHJhbnNsYXRpb24gPSAvKkBfX1BVUkVfXyovIG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5jb25zdCByb3RhdGlvbiA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IHNjYWxlID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndHNJbnN0YW5jZXNBcGksIHByb3ZpZGVOZ3RzSW5zdGFuY2VzQXBpXSA9IGNyZWF0ZUluamVjdGlvblRva2VuKFxuXHQoaW5zdGFuY2VzOiBOZ3RzSW5zdGFuY2VzKSA9PiBpbnN0YW5jZXMuYXBpLFxuXHR7IGlzUm9vdDogZmFsc2UsIGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndHNJbnN0YW5jZXMpXSB9LFxuKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1pbnN0YW5jZScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wb3NpdGlvbi1tZXNoXG5cdFx0XHRbcmVmXT1cImluc3RhbmNlUmVmXCJcblx0XHRcdFtpbnN0YW5jZV09XCJpbnN0YW5jZXNBcGkuZ2V0UGFyZW50KClcIlxuXHRcdFx0W2luc3RhbmNlS2V5XT1cImluc3RhbmNlUmVmXCJcblx0XHRcdG5ndENvbXBvdW5kXG5cdFx0PlxuXHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHQ8L25ndC1wb3NpdGlvbi1tZXNoPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNJbnN0YW5jZSB7XG5cdEBJbnB1dCgpIGluc3RhbmNlUmVmID0gaW5qZWN0Tmd0UmVmPFBvc2l0aW9uTWVzaD4oKTtcblxuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdGluc3RhbmNlc0FwaSA9IGluamVjdE5ndHNJbnN0YW5jZXNBcGkoKTtcblxuXHRuZ09uSW5pdCgpIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5pbnN0YW5jZXNBcGkuc3Vic2NyaWJlKHRoaXMuaW5zdGFuY2VSZWYpKTtcblx0XHRcdFx0b25DbGVhbnVwKGNsZWFudXApO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2VzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWluc3RhbmNlZC1tZXNoXG5cdFx0XHRbdXNlckRhdGFdPVwieyBpbnN0YW5jZXM6IG1lc2hlcygpIH1cIlxuXHRcdFx0W3JlZl09XCJpbnN0YW5jZXNSZWZcIlxuXHRcdFx0W21hdHJpeEF1dG9VcGRhdGVdPVwiZmFsc2VcIlxuXHRcdFx0W3JheWNhc3RdPVwibnVsbFJheWNhc3RcIlxuXHRcdFx0KmFyZ3M9XCJbdW5kZWZpbmVkLCB1bmRlZmluZWQsIDBdXCJcblx0XHRcdG5ndENvbXBvdW5kXG5cdFx0PlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZU1hdHJpeFwiXG5cdFx0XHRcdFtjb3VudF09XCJtYXRyaWNlcygpLmxlbmd0aCAvIDE2XCJcblx0XHRcdFx0W2FycmF5XT1cIm1hdHJpY2VzKClcIlxuXHRcdFx0XHRbaXRlbVNpemVdPVwiMTZcIlxuXHRcdFx0XHRbdXNhZ2VdPVwiRHluYW1pY0RyYXdVc2FnZVwiXG5cdFx0XHQvPlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZUNvbG9yXCJcblx0XHRcdFx0W2NvdW50XT1cImNvbG9ycygpLmxlbmd0aCAvIDNcIlxuXHRcdFx0XHRbYXJyYXldPVwiY29sb3JzKClcIlxuXHRcdFx0XHRbaXRlbVNpemVdPVwiM1wiXG5cdFx0XHRcdFt1c2FnZV09XCJEeW5hbWljRHJhd1VzYWdlXCJcblx0XHRcdC8+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiIC8+XG5cdFx0PC9uZ3QtaW5zdGFuY2VkLW1lc2g+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzLCBOZ1RlbXBsYXRlT3V0bGV0XSxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndHNJbnN0YW5jZXNBcGkoKV0sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0luc3RhbmNlcyB7XG5cdER5bmFtaWNEcmF3VXNhZ2UgPSBUSFJFRS5EeW5hbWljRHJhd1VzYWdlO1xuXHRudWxsUmF5Y2FzdCA9ICgpID0+IG51bGw7XG5cblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RzSW5zdGFuY2VzU3RhdGU+KHsgbGltaXQ6IDEwMDAsIGZyYW1lczogSW5maW5pdHkgfSk7XG5cblx0QElucHV0KCkgaW5zdGFuY2VzUmVmID0gaW5qZWN0Tmd0UmVmPEluc3RhbmNlZE1lc2g+KCk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdyYW5nZScgfSkgc2V0IF9yYW5nZShyYW5nZTogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcmFuZ2UgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2xpbWl0JyB9KSBzZXQgX2xpbWl0KGxpbWl0OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBsaW1pdCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZnJhbWVzJyB9KSBzZXQgX2ZyYW1lcyhmcmFtZXM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZyYW1lcyB9KTtcblx0fVxuXG5cdEBDb250ZW50Q2hpbGQoTmd0c1NvYmFDb250ZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29udGVudCE6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG5cdHByaXZhdGUgbGltaXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2xpbWl0Jyk7XG5cblx0cHJpdmF0ZSBwb3NpdGlvbk1lc2hlcyA9IHNpZ25hbDxOZ3RSZWY8UG9zaXRpb25NZXNoPltdPihbXSk7XG5cdG1lc2hlcyA9IHRoaXMucG9zaXRpb25NZXNoZXMuYXNSZWFkb25seSgpO1xuXG5cdG1hdHJpY2VzID0gY29tcHV0ZWQoKCkgPT4gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmxpbWl0KCkgKiAxNikpO1xuXHRjb2xvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW2xpbWl0LCBtYXRyaWNlc10gPSBbdGhpcy5saW1pdCgpLCB0aGlzLm1hdHJpY2VzKCldO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuXHRcdFx0dGVtcE1hdHJpeC5pZGVudGl0eSgpLnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgRmxvYXQzMkFycmF5KFsuLi5BcnJheS5mcm9tKHsgbGVuZ3RoOiBsaW1pdCAqIDMgfSwgKCkgPT4gMSldKTtcblx0fSk7XG5cblx0YXBpID0ge1xuXHRcdGdldFBhcmVudDogKCkgPT4gdGhpcy5pbnN0YW5jZXNSZWYsXG5cdFx0c3Vic2NyaWJlOiAobWVzaFJlZjogTmd0UmVmPFBvc2l0aW9uTWVzaD4pID0+IHtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucG9zaXRpb25NZXNoZXMudXBkYXRlKChzKSA9PiBbLi4ucywgbWVzaFJlZl0pO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucG9zaXRpb25NZXNoZXMudXBkYXRlKChzKSA9PiBzLmZpbHRlcigocG9zaXRpb25NZXNoKSA9PiBwb3NpdGlvbk1lc2ggIT09IG1lc2hSZWYpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5jaGVja1VwZGF0ZSgpO1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIGNoZWNrVXBkYXRlKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGxldCB1cGRhdGVSYW5nZSA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IGZyYW1lcywgbGltaXQsIHJhbmdlIH0sIGluc3RhbmNlZE1lc2gsIGluc3RhbmNlcywgbWF0cmljZXMsIGNvbG9yc10gPSBbXG5cdFx0XHRcdHRoaXMuaW5wdXRzLmdldCgpLFxuXHRcdFx0XHR0aGlzLmluc3RhbmNlc1JlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLm1lc2hlcygpLFxuXHRcdFx0XHR0aGlzLm1hdHJpY2VzKCksXG5cdFx0XHRcdHRoaXMuY29sb3JzKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpIHtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC51cGRhdGVNYXRyaXgoKTtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0XHRwYXJlbnRNYXRyaXguY29weShpbnN0YW5jZWRNZXNoLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblxuXHRcdFx0XHR1cGRhdGVSYW5nZSA9IE1hdGgubWluKGxpbWl0LCByYW5nZSAhPT0gdW5kZWZpbmVkID8gcmFuZ2UgOiBsaW1pdCwgaW5zdGFuY2VzLmxlbmd0aCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2guY291bnQgPSB1cGRhdGVSYW5nZTtcblx0XHRcdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC51cGRhdGVSYW5nZS5jb3VudCA9IHVwZGF0ZVJhbmdlICogMTY7XG5cdFx0XHRcdGlmIChpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IpIHtcblx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IudXBkYXRlUmFuZ2UuY291bnQgPSB1cGRhdGVSYW5nZSAqIDM7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGluc3RhbmNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlUmVmID0gaW5zdGFuY2VzW2ldO1xuXHRcdFx0XHRcdGNvbnN0IGluc3RhbmNlID0gaXMucmVmKGluc3RhbmNlUmVmKSA/IGluc3RhbmNlUmVmLm5hdGl2ZUVsZW1lbnQgOiBpbnN0YW5jZVJlZjtcblx0XHRcdFx0XHQvLyBNdWx0aXBseSB0aGUgaW52ZXJzZSBvZiB0aGUgSW5zdGFuY2VkTWVzaCB3b3JsZCBtYXRyaXggb3IgZWxzZVxuXHRcdFx0XHRcdC8vIEluc3RhbmNlcyB3aWxsIGJlIGRvdWJsZS10cmFuc2Zvcm1lZCBpZiA8SW5zdGFuY2VzPiBpc24ndCBhdCBpZGVudGl0eVxuXHRcdFx0XHRcdGluc3RhbmNlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKTtcblx0XHRcdFx0XHRpbnN0YW5jZU1hdHJpeC5jb21wb3NlKHRyYW5zbGF0aW9uLCByb3RhdGlvbiwgc2NhbGUpLnByZW11bHRpcGx5KHBhcmVudE1hdHJpeCk7XG5cdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXgudG9BcnJheShtYXRyaWNlcywgaSAqIDE2KTtcblx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRpbnN0YW5jZS5jb2xvci50b0FycmF5KGNvbG9ycywgaSAqIDMpO1xuXHRcdFx0XHRcdGNoZWNrVXBkYXRlKGluc3RhbmNlZE1lc2guaW5zdGFuY2VDb2xvcik7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y291bnQrKztcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3BlcmZvcm1hbmNlcy9zcmMvaW5zdGFuY2VzL2luc3RhbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ04sU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLEVBQUUsRUFDRixPQUFPLEVBRVAsV0FBVyxHQUdYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFL0MsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFxQmxFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN2RCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxD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bW1vbic7XG5pbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0Zm9yd2FyZFJlZixcblx0aW5qZWN0LFxuXHRJbmplY3Rvcixcblx0SW5wdXQsXG5cdE5nWm9uZSxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGNoZWNrVXBkYXRlLFxuXHRjcmVhdGVJbmplY3Rpb25Ub2tlbixcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aXMsXG5cdE5ndEFyZ3MsXG5cdE5ndFJlZixcblx0c2lnbmFsU3RvcmUsXG5cdHR5cGUgTmd0R3JvdXAsXG5cdHR5cGUgTmd0SW5zdGFuY2VkTWVzaCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RzU29iYUNvbnRlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvdXRpbHMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlLCBJbnN0YW5jZWRNZXNoIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgUG9zaXRpb25NZXNoIH0gZnJvbSAnLi9wb3NpdGlvbi1tZXNoJztcblxuZXh0ZW5kKHsgUG9zaXRpb25NZXNoLCBJbnN0YW5jZWRNZXNoLCBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUgfSk7XG5cbmV4cG9ydCB0eXBlIE5ndHNJbnN0YW5jZXNTdGF0ZSA9IHtcblx0cmFuZ2U/OiBudW1iZXI7XG5cdGxpbWl0OiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xufTtcblxuZGVjbGFyZSBnbG9iYWwge1xuXHRpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtZ3JvdXBcblx0XHQgKi9cblx0XHQnbmd0LXBvc2l0aW9uLW1lc2gnOiBQb3NpdGlvbk1lc2ggJiBOZ3RHcm91cDtcblx0XHQvKipcblx0XHQgKiBAZXh0ZW5kcyBuZ3QtaW5zdGFuY2VkLW1lc2hcblx0XHQgKi9cblx0XHQnbmd0cy1pbnN0YW5jZXMnOiBOZ3RzSW5zdGFuY2VzU3RhdGUgJiBOZ3RJbnN0YW5jZWRNZXNoO1xuXHR9XG59XG5cbmNvbnN0IHBhcmVudE1hdHJpeCA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbmNvbnN0IGluc3RhbmNlTWF0cml4ID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuTWF0cml4NCgpO1xuY29uc3QgdGVtcE1hdHJpeCA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLk1hdHJpeDQoKTtcbmNvbnN0IHRyYW5zbGF0aW9uID0gLypAX19QVVJFX18qLyBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3Qgcm90YXRpb24gPSAvKkBfX1BVUkVfXyovIG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBzY2FsZSA9IC8qQF9fUFVSRV9fKi8gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuZXhwb3J0IGNvbnN0IFtpbmplY3ROZ3RzSW5zdGFuY2VzQXBpLCBwcm92aWRlTmd0c0luc3RhbmNlc0FwaV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbihcblx0KGluc3RhbmNlczogTmd0c0luc3RhbmNlcykgPT4gaW5zdGFuY2VzLmFwaSxcblx0eyBpc1Jvb3Q6IGZhbHNlLCBkZXBzOiBbZm9yd2FyZFJlZigoKSA9PiBOZ3RzSW5zdGFuY2VzKV0gfSxcbik7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtaW5zdGFuY2UnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcG9zaXRpb24tbWVzaFxuXHRcdFx0W3JlZl09XCJpbnN0YW5jZVJlZlwiXG5cdFx0XHRbaW5zdGFuY2VdPVwiaW5zdGFuY2VzQXBpLmdldFBhcmVudCgpXCJcblx0XHRcdFtpbnN0YW5jZUtleV09XCJpbnN0YW5jZVJlZlwiXG5cdFx0XHRuZ3RDb21wb3VuZFxuXHRcdD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcG9zaXRpb24tbWVzaD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSW5zdGFuY2Uge1xuXHRASW5wdXQoKSBpbnN0YW5jZVJlZiA9IGluamVjdE5ndFJlZjxQb3NpdGlvbk1lc2g+KCk7XG5cblx0cHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXHRpbnN0YW5jZXNBcGkgPSBpbmplY3ROZ3RzSW5zdGFuY2VzQXBpKCk7XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjbGVhbnVwID0gdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuaW5zdGFuY2VzQXBpLnN1YnNjcmliZSh0aGlzLmluc3RhbmNlUmVmKSk7XG5cdFx0XHRcdG9uQ2xlYW51cChjbGVhbnVwKTtcblx0XHRcdH0sXG5cdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0KTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWluc3RhbmNlcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1pbnN0YW5jZWQtbWVzaFxuXHRcdFx0W3VzZXJEYXRhXT1cInsgaW5zdGFuY2VzOiBtZXNoZXMoKSB9XCJcblx0XHRcdFtyZWZdPVwiaW5zdGFuY2VzUmVmXCJcblx0XHRcdFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCJcblx0XHRcdFtyYXljYXN0XT1cIm51bGxSYXljYXN0XCJcblx0XHRcdG5ndENvbXBvdW5kXG5cdFx0PlxuXHRcdFx0PG5ndC1pbnN0YW5jZWQtYnVmZmVyLWF0dHJpYnV0ZVxuXHRcdFx0XHQqYXJncz1cIltidWZmZXJzKCkubWF0cmljZXMsIDE2XVwiXG5cdFx0XHRcdGF0dGFjaD1cImluc3RhbmNlTWF0cml4XCJcblx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZ3QtaW5zdGFuY2VkLWJ1ZmZlci1hdHRyaWJ1dGVcblx0XHRcdFx0KmFyZ3M9XCJbYnVmZmVycygpLmNvbG9ycywgM11cIlxuXHRcdFx0XHRhdHRhY2g9XCJpbnN0YW5jZUNvbG9yXCJcblx0XHRcdFx0W3VzYWdlXT1cIkR5bmFtaWNEcmF3VXNhZ2VcIlxuXHRcdFx0Lz5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCIgLz5cblx0XHQ8L25ndC1pbnN0YW5jZWQtbWVzaD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3MsIE5nVGVtcGxhdGVPdXRsZXRdLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlTmd0c0luc3RhbmNlc0FwaSgpXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzSW5zdGFuY2VzIHtcblx0RHluYW1pY0RyYXdVc2FnZSA9IFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2U7XG5cdG51bGxSYXljYXN0ID0gKCkgPT4gbnVsbDtcblxuXHRwcml2YXRlIGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNJbnN0YW5jZXNTdGF0ZT4oeyBsaW1pdDogMTAwMCwgZnJhbWVzOiBJbmZpbml0eSB9KTtcblxuXHRASW5wdXQoKSBpbnN0YW5jZXNSZWYgPSBpbmplY3ROZ3RSZWY8SW5zdGFuY2VkTWVzaD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ3JhbmdlJyB9KSBzZXQgX3JhbmdlKHJhbmdlOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyByYW5nZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbGltaXQnIH0pIHNldCBfbGltaXQobGltaXQ6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGxpbWl0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmcmFtZXMnIH0pIHNldCBfZnJhbWVzKGZyYW1lczogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZnJhbWVzIH0pO1xuXHR9XG5cblx0QENvbnRlbnRDaGlsZChOZ3RzU29iYUNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBjb250ZW50ITogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cblx0cHJpdmF0ZSBsaW1pdCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnbGltaXQnKTtcblxuXHRwcml2YXRlIHBvc2l0aW9uTWVzaGVzID0gc2lnbmFsPE5ndFJlZjxQb3NpdGlvbk1lc2g+W10+KFtdKTtcblx0bWVzaGVzID0gdGhpcy5wb3NpdGlvbk1lc2hlcy5hc1JlYWRvbmx5KCk7XG5cblx0YnVmZmVycyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBsaW1pdCA9IHRoaXMubGltaXQoKTtcblx0XHRjb25zdCBtYXRyaWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkobGltaXQgKiAxNik7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcblx0XHRcdHRlbXBNYXRyaXguaWRlbnRpdHkoKS50b0FycmF5KG1hdHJpY2VzLCBpICogMTYpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXkoWy4uLkFycmF5LmZyb20oeyBsZW5ndGg6IGxpbWl0ICogMyB9LCAoKSA9PiAxKV0pO1xuXHRcdHJldHVybiB7IG1hdHJpY2VzLCBjb2xvcnMgfTtcblx0fSk7XG5cblx0YXBpID0ge1xuXHRcdGdldFBhcmVudDogKCkgPT4gdGhpcy5pbnN0YW5jZXNSZWYsXG5cdFx0c3Vic2NyaWJlOiAobWVzaFJlZjogTmd0UmVmPFBvc2l0aW9uTWVzaD4pID0+IHtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucG9zaXRpb25NZXNoZXMudXBkYXRlKChzKSA9PiBbLi4ucywgbWVzaFJlZl0pO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucG9zaXRpb25NZXNoZXMudXBkYXRlKChzKSA9PiBzLmZpbHRlcigocG9zaXRpb25NZXNoKSA9PiBwb3NpdGlvbk1lc2ggIT09IG1lc2hSZWYpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXHRcdH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5jaGVja1VwZGF0ZSgpO1xuXHRcdHRoaXMuYmVmb3JlUmVuZGVyKCk7XG5cdH1cblxuXHRwcml2YXRlIGNoZWNrVXBkYXRlKCkge1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudDtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0Ly8gTk9URTogbm90IHN1cmUgd2h5IG1hdHJpY2VzIGVuZHMgdXAgYSBkaWZmZXJlbnQgaW5zdGFuY2UgdGhhbiBhcnJheVxuXHRcdFx0Ly8gd2UgcmVhc3NpZ24gaXQgaGVyZVxuXHRcdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC5hcnJheSA9IHVudHJhY2tlZCh0aGlzLmJ1ZmZlcnMpLm1hdHJpY2VzO1xuXHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGxldCB1cGRhdGVSYW5nZSA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IFt7IGZyYW1lcywgbGltaXQsIHJhbmdlIH0sIGluc3RhbmNlZE1lc2gsIGluc3RhbmNlcywgeyBtYXRyaWNlcywgY29sb3JzIH1dID0gW1xuXHRcdFx0XHR0aGlzLmlucHV0cy5nZXQoKSxcblx0XHRcdFx0dGhpcy5pbnN0YW5jZXNSZWYubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5tZXNoZXMoKSxcblx0XHRcdFx0dGhpcy5idWZmZXJzKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKChmcmFtZXMgPT09IEluZmluaXR5IHx8IGNvdW50IDwgZnJhbWVzKSAmJiBpbnN0YW5jZWRNZXNoKSB7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2gudXBkYXRlTWF0cml4KCk7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2gudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0cGFyZW50TWF0cml4LmNvcHkoaW5zdGFuY2VkTWVzaC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7XG5cblx0XHRcdFx0dXBkYXRlUmFuZ2UgPSBNYXRoLm1pbihsaW1pdCwgcmFuZ2UgIT09IHVuZGVmaW5lZCA/IHJhbmdlIDogbGltaXQsIGluc3RhbmNlcy5sZW5ndGgpO1xuXHRcdFx0XHRpbnN0YW5jZWRNZXNoLmNvdW50ID0gdXBkYXRlUmFuZ2U7XG5cdFx0XHRcdGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgudXBkYXRlUmFuZ2UuY291bnQgPSB1cGRhdGVSYW5nZSAqIDE2O1xuXHRcdFx0XHRpZiAoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yKSB7XG5cdFx0XHRcdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZUNvbG9yLnVwZGF0ZVJhbmdlLmNvdW50ID0gdXBkYXRlUmFuZ2UgKiAzO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRjb25zdCBpbnN0YW5jZVJlZiA9IGluc3RhbmNlc1tpXTtcblx0XHRcdFx0XHRjb25zdCBpbnN0YW5jZSA9IGlzLnJlZihpbnN0YW5jZVJlZikgPyBpbnN0YW5jZVJlZi5uYXRpdmVFbGVtZW50IDogaW5zdGFuY2VSZWY7XG5cdFx0XHRcdFx0Ly8gTXVsdGlwbHkgdGhlIGludmVyc2Ugb2YgdGhlIEluc3RhbmNlZE1lc2ggd29ybGQgbWF0cml4IG9yIGVsc2Vcblx0XHRcdFx0XHQvLyBJbnN0YW5jZXMgd2lsbCBiZSBkb3VibGUtdHJhbnNmb3JtZWQgaWYgPEluc3RhbmNlcz4gaXNuJ3QgYXQgaWRlbnRpdHlcblx0XHRcdFx0XHRpbnN0YW5jZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodHJhbnNsYXRpb24sIHJvdGF0aW9uLCBzY2FsZSk7XG5cdFx0XHRcdFx0aW5zdGFuY2VNYXRyaXguY29tcG9zZSh0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlKS5wcmVtdWx0aXBseShwYXJlbnRNYXRyaXgpO1xuXHRcdFx0XHRcdGluc3RhbmNlTWF0cml4LnRvQXJyYXkobWF0cmljZXMsIGkgKiAxNik7XG5cdFx0XHRcdFx0Y2hlY2tVcGRhdGUoaW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeCk7XG5cdFx0XHRcdFx0aW5zdGFuY2UuY29sb3IudG9BcnJheShjb2xvcnMsIGkgKiAzKTtcblx0XHRcdFx0XHRjaGVja1VwZGF0ZShpbnN0YW5jZWRNZXNoLmluc3RhbmNlQ29sb3IpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvdW50Kys7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { injectNgtLoader, assertInjectionContext, safeDetectChanges, signalStore
|
|
|
2
2
|
import { DRACOLoader, MeshoptDecoder, GLTFLoader } from 'three-stdlib';
|
|
3
3
|
import { NgIf } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { runInInjectionContext, inject, ChangeDetectorRef, signal, computed, effect,
|
|
5
|
+
import { runInInjectionContext, inject, ChangeDetectorRef, signal, untracked, computed, effect, Component, ChangeDetectionStrategy, Input, ViewChild } from '@angular/core';
|
|
6
6
|
import * as THREE from 'three';
|
|
7
7
|
|
|
8
8
|
let dracoLoader = null;
|
|
@@ -40,35 +40,42 @@ function injectNgtsProgress(injector) {
|
|
|
40
40
|
const progress = signal({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
|
|
41
41
|
let saveLastTotalLoaded = 0;
|
|
42
42
|
THREE.DefaultLoadingManager.onStart = (item, loaded, total) => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
untracked(() => {
|
|
44
|
+
progress.update((prev) => ({
|
|
45
|
+
...prev,
|
|
46
|
+
active: true,
|
|
47
|
+
item,
|
|
48
|
+
loaded,
|
|
49
|
+
total,
|
|
50
|
+
progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
|
|
51
|
+
}));
|
|
52
|
+
});
|
|
51
53
|
safeDetectChanges(cdr);
|
|
52
54
|
};
|
|
53
55
|
THREE.DefaultLoadingManager.onLoad = () => {
|
|
54
|
-
|
|
56
|
+
untracked(() => {
|
|
57
|
+
progress.update((prev) => ({ ...prev, active: false }));
|
|
58
|
+
});
|
|
55
59
|
safeDetectChanges(cdr);
|
|
56
|
-
cdr.detectChanges();
|
|
57
60
|
};
|
|
58
61
|
THREE.DefaultLoadingManager.onError = (url) => {
|
|
59
|
-
|
|
62
|
+
untracked(() => {
|
|
63
|
+
progress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));
|
|
64
|
+
});
|
|
60
65
|
safeDetectChanges(cdr);
|
|
61
66
|
};
|
|
62
67
|
THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
|
|
63
68
|
if (loaded === total)
|
|
64
69
|
saveLastTotalLoaded = total;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
untracked(() => {
|
|
71
|
+
progress.update((prev) => ({
|
|
72
|
+
...prev,
|
|
73
|
+
item,
|
|
74
|
+
loaded,
|
|
75
|
+
total,
|
|
76
|
+
progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
|
|
77
|
+
}));
|
|
78
|
+
});
|
|
72
79
|
safeDetectChanges(cdr);
|
|
73
80
|
};
|
|
74
81
|
return progress.asReadonly();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/gltf-loader/gltf-loader.ts","../../../../libs/soba/loaders/src/progress/progress.ts","../../../../libs/soba/loaders/src/loader/loader.ts","../../../../libs/soba/loaders/src/texture-loader/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import type { Injector, Signal } from '@angular/core';\nimport { injectNgtLoader, type NgtLoaderResults, type NgtObjectMap } from 'angular-three';\nimport { DRACOLoader, GLTF, GLTFLoader, MeshoptDecoder } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: THREE.Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(\n\t\t\t\ttypeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/',\n\t\t\t);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport type NgtsGLTF<T extends Partial<NgtObjectMap>> = GLTF & NgtObjectMap & T;\n\nexport function injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> {\n\treturn injectNgtLoader(() => GLTFLoader, path, {\n\t\textensions: _extensions(useDraco, useMeshOpt, extensions),\n\t\tinjector,\n\t});\n}\n\ninjectNgtsGLTFLoader['preload'] = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n) => {\n\t(injectNgtLoader as any)['preload'](() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));\n};\n","import { ChangeDetectorRef, inject, runInInjectionContext, signal, type Injector } from '@angular/core';\nimport { assertInjectionContext, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsProgress(injector?: Injector) {\n\tinjector = assertInjectionContext(injectNgtsProgress, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tTHREE.DefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tprogress.update((prev) => ({\n\t\t\t\t...prev,\n\t\t\t\tactive: true,\n\t\t\t\titem,\n\t\t\t\tloaded,\n\t\t\t\ttotal,\n\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t}));\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onLoad = () => {\n\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\tsafeDetectChanges(cdr);\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onError = (url) => {\n\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tprogress.update((prev) => ({\n\t\t\t\t...prev,\n\t\t\t\titem,\n\t\t\t\tloaded,\n\t\t\t\ttotal,\n\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t}));\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tInput,\n\tViewChild,\n\tcomputed,\n\teffect,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { signalStore } from 'angular-three';\nimport { injectNgtsProgress } from '../progress/progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderState {\n\tcontainerClass?: string;\n\tinnerClass?: string;\n\tbarClass?: string;\n\tdataClass?: string;\n\tdataInterpolation: (value: number) => string;\n\tinitialState: (value: boolean) => boolean;\n}\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<div\n\t\t\t*ngIf=\"shown()\"\n\t\t\tclass=\"ngts-loader-container\"\n\t\t\t[class]=\"container() || ''\"\n\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"inner() || ''\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"ngts-loader-bar\"\n\t\t\t\t\t\t[class]=\"bar() || ''\"\n\t\t\t\t\t\t[style.--ngts-loader-bar-scale]=\"progress() / 100\"\n\t\t\t\t\t></div>\n\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"data() || ''\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./loader.css'],\n\timports: [NgIf],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate inputs = signalStore<NgtsLoaderState>({\n\t\tdataInterpolation: defaultDataInterpolation,\n\t\tinitialState: (active) => active,\n\t});\n\n\tprivate progressState = injectNgtsProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\tcontainer = this.inputs.select('containerClass');\n\tinner = this.inputs.select('innerClass');\n\tbar = this.inputs.select('barClass');\n\tdata = this.inputs.select('dataClass');\n\n\t@Input({ alias: 'containerClass' }) set _containerClass(containerClass: string) {\n\t\tthis.inputs.set({ containerClass });\n\t}\n\n\t@Input({ alias: 'innerClass' }) set _innerClass(innerClass: string) {\n\t\tthis.inputs.set({ innerClass });\n\t}\n\n\t@Input({ alias: 'barClass' }) set _barClass(barClass: string) {\n\t\tthis.inputs.set({ barClass });\n\t}\n\n\t@Input({ alias: 'dataClass' }) set _dataClass(dataClass: string) {\n\t\tthis.inputs.set({ dataClass });\n\t}\n\n\t@Input({ alias: 'dataInterpolation' }) set _dataInterpolation(dataInterpolation: (value: number) => string) {\n\t\tthis.inputs.set({ dataInterpolation });\n\t}\n\n\t@Input({ alias: 'initialState' }) set _initialState(initialState: (value: boolean) => boolean) {\n\t\tthis.inputs.set({ initialState });\n\t}\n\n\t@ViewChild('progressSpanRef') progressSpanRef?: ElementRef<HTMLSpanElement>;\n\n\tshown = signal(this.inputs.get('initialState')(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\tconst _dataInterpolation = this.inputs.select('dataInterpolation');\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [_dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tif (!this.progressSpanRef?.nativeElement) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tthis.progressSpanRef.nativeElement.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, runInInjectionContext, type Injector, type Signal } from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtStore, type NgtLoaderResults } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{\n\t\tonLoad,\n\t\tinjector,\n\t}: {\n\t\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n\t\tinjector?: Injector;\n\t} = {},\n): Signal<NgtLoaderResults<TInput, THREE.Texture> | null> {\n\tinjector = assertInjectionContext(injectNgtsTextureLoader, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst result = injectNgtLoader(() => THREE.TextureLoader, input, { injector });\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t? textures\n\t\t\t\t: textures instanceof THREE.Texture\n\t\t\t\t? [textures]\n\t\t\t\t: Object.values(textures);\n\t\t\tif (onLoad) onLoad(array);\n\t\t\tarray.forEach(store.get('gl').initTexture);\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\ninjectNgtsTextureLoader['preload'] = <TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n) => {\n\t(injectNgtLoader as any).preload(() => THREE.TextureLoader, input);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/gltf-loader/gltf-loader.ts","../../../../libs/soba/loaders/src/progress/progress.ts","../../../../libs/soba/loaders/src/loader/loader.ts","../../../../libs/soba/loaders/src/texture-loader/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import type { Injector, Signal } from '@angular/core';\nimport { injectNgtLoader, type NgtLoaderResults, type NgtObjectMap } from 'angular-three';\nimport { DRACOLoader, GLTF, GLTFLoader, MeshoptDecoder } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: THREE.Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(\n\t\t\t\ttypeof useDraco === 'string' ? useDraco : 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/',\n\t\t\t);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport type NgtsGLTF<T extends Partial<NgtObjectMap>> = GLTF & NgtObjectMap & T;\n\nexport function injectNgtsGLTFLoader<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> {\n\treturn injectNgtLoader(() => GLTFLoader, path, {\n\t\textensions: _extensions(useDraco, useMeshOpt, extensions),\n\t\tinjector,\n\t});\n}\n\ninjectNgtsGLTFLoader['preload'] = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t} = {},\n) => {\n\t(injectNgtLoader as any)['preload'](() => GLTFLoader, path, _extensions(useDraco, useMeshOpt, extensions));\n};\n","import { ChangeDetectorRef, inject, runInInjectionContext, signal, untracked, type Injector } from '@angular/core';\nimport { assertInjectionContext, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsProgress(injector?: Injector) {\n\tinjector = assertInjectionContext(injectNgtsProgress, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tTHREE.DefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tactive: true,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onLoad = () => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\t});\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onError = (url) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\t});\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\tTHREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tsafeDetectChanges(cdr);\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tInput,\n\tViewChild,\n\tcomputed,\n\teffect,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { signalStore } from 'angular-three';\nimport { injectNgtsProgress } from '../progress/progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderState {\n\tcontainerClass?: string;\n\tinnerClass?: string;\n\tbarClass?: string;\n\tdataClass?: string;\n\tdataInterpolation: (value: number) => string;\n\tinitialState: (value: boolean) => boolean;\n}\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t<div\n\t\t\t*ngIf=\"shown()\"\n\t\t\tclass=\"ngts-loader-container\"\n\t\t\t[class]=\"container() || ''\"\n\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"inner() || ''\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"ngts-loader-bar\"\n\t\t\t\t\t\t[class]=\"bar() || ''\"\n\t\t\t\t\t\t[style.--ngts-loader-bar-scale]=\"progress() / 100\"\n\t\t\t\t\t></div>\n\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"data() || ''\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrls: ['./loader.css'],\n\timports: [NgIf],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate inputs = signalStore<NgtsLoaderState>({\n\t\tdataInterpolation: defaultDataInterpolation,\n\t\tinitialState: (active) => active,\n\t});\n\n\tprivate progressState = injectNgtsProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\tcontainer = this.inputs.select('containerClass');\n\tinner = this.inputs.select('innerClass');\n\tbar = this.inputs.select('barClass');\n\tdata = this.inputs.select('dataClass');\n\n\t@Input({ alias: 'containerClass' }) set _containerClass(containerClass: string) {\n\t\tthis.inputs.set({ containerClass });\n\t}\n\n\t@Input({ alias: 'innerClass' }) set _innerClass(innerClass: string) {\n\t\tthis.inputs.set({ innerClass });\n\t}\n\n\t@Input({ alias: 'barClass' }) set _barClass(barClass: string) {\n\t\tthis.inputs.set({ barClass });\n\t}\n\n\t@Input({ alias: 'dataClass' }) set _dataClass(dataClass: string) {\n\t\tthis.inputs.set({ dataClass });\n\t}\n\n\t@Input({ alias: 'dataInterpolation' }) set _dataInterpolation(dataInterpolation: (value: number) => string) {\n\t\tthis.inputs.set({ dataInterpolation });\n\t}\n\n\t@Input({ alias: 'initialState' }) set _initialState(initialState: (value: boolean) => boolean) {\n\t\tthis.inputs.set({ initialState });\n\t}\n\n\t@ViewChild('progressSpanRef') progressSpanRef?: ElementRef<HTMLSpanElement>;\n\n\tshown = signal(this.inputs.get('initialState')(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\tconst _dataInterpolation = this.inputs.select('dataInterpolation');\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [_dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tif (!this.progressSpanRef?.nativeElement) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tthis.progressSpanRef.nativeElement.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, runInInjectionContext, type Injector, type Signal } from '@angular/core';\nimport { assertInjectionContext, injectNgtLoader, injectNgtStore, type NgtLoaderResults } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsTextureLoader<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{\n\t\tonLoad,\n\t\tinjector,\n\t}: {\n\t\tonLoad?: (texture: THREE.Texture | THREE.Texture[]) => void;\n\t\tinjector?: Injector;\n\t} = {},\n): Signal<NgtLoaderResults<TInput, THREE.Texture> | null> {\n\tinjector = assertInjectionContext(injectNgtsTextureLoader, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst result = injectNgtLoader(() => THREE.TextureLoader, input, { injector });\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t? textures\n\t\t\t\t: textures instanceof THREE.Texture\n\t\t\t\t? [textures]\n\t\t\t\t: Object.values(textures);\n\t\t\tif (onLoad) onLoad(array);\n\t\t\tarray.forEach(store.get('gl').initTexture);\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\ninjectNgtsTextureLoader['preload'] = <TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n) => {\n\t(injectNgtLoader as any).preload(() => THREE.TextureLoader, input);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -193,13 +193,14 @@ class NgtsInstances {
|
|
|
193
193
|
this.limit = this.inputs.select('limit');
|
|
194
194
|
this.positionMeshes = signal([]);
|
|
195
195
|
this.meshes = this.positionMeshes.asReadonly();
|
|
196
|
-
this.
|
|
197
|
-
|
|
198
|
-
const
|
|
196
|
+
this.buffers = computed(() => {
|
|
197
|
+
const limit = this.limit();
|
|
198
|
+
const matrices = new Float32Array(limit * 16);
|
|
199
199
|
for (let i = 0; i < limit; i++) {
|
|
200
200
|
tempMatrix.identity().toArray(matrices, i * 16);
|
|
201
201
|
}
|
|
202
|
-
|
|
202
|
+
const colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);
|
|
203
|
+
return { matrices, colors };
|
|
203
204
|
});
|
|
204
205
|
this.api = {
|
|
205
206
|
getParent: () => this.instancesRef,
|
|
@@ -222,6 +223,9 @@ class NgtsInstances {
|
|
|
222
223
|
const instancedMesh = this.instancesRef.nativeElement;
|
|
223
224
|
if (!instancedMesh)
|
|
224
225
|
return;
|
|
226
|
+
// NOTE: not sure why matrices ends up a different instance than array
|
|
227
|
+
// we reassign it here
|
|
228
|
+
instancedMesh.instanceMatrix.array = untracked(this.buffers).matrices;
|
|
225
229
|
checkUpdate(instancedMesh.instanceMatrix);
|
|
226
230
|
});
|
|
227
231
|
}
|
|
@@ -229,14 +233,13 @@ class NgtsInstances {
|
|
|
229
233
|
let count = 0;
|
|
230
234
|
let updateRange = 0;
|
|
231
235
|
injectBeforeRender(() => {
|
|
232
|
-
const [{ frames, limit, range }, instancedMesh, instances, matrices, colors] = [
|
|
236
|
+
const [{ frames, limit, range }, instancedMesh, instances, { matrices, colors }] = [
|
|
233
237
|
this.inputs.get(),
|
|
234
238
|
this.instancesRef.nativeElement,
|
|
235
239
|
this.meshes(),
|
|
236
|
-
this.
|
|
237
|
-
this.colors(),
|
|
240
|
+
this.buffers(),
|
|
238
241
|
];
|
|
239
|
-
if (frames === Infinity || count < frames) {
|
|
242
|
+
if ((frames === Infinity || count < frames) && instancedMesh) {
|
|
240
243
|
instancedMesh.updateMatrix();
|
|
241
244
|
instancedMesh.updateMatrixWorld();
|
|
242
245
|
parentMatrix.copy(instancedMesh.matrixWorld).invert();
|
|
@@ -254,7 +257,7 @@ class NgtsInstances {
|
|
|
254
257
|
instance.matrixWorld.decompose(translation, rotation, scale);
|
|
255
258
|
instanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);
|
|
256
259
|
instanceMatrix.toArray(matrices, i * 16);
|
|
257
|
-
instancedMesh.instanceMatrix
|
|
260
|
+
checkUpdate(instancedMesh.instanceMatrix);
|
|
258
261
|
instance.color.toArray(colors, i * 3);
|
|
259
262
|
checkUpdate(instancedMesh.instanceColor);
|
|
260
263
|
}
|
|
@@ -269,21 +272,16 @@ class NgtsInstances {
|
|
|
269
272
|
[ref]="instancesRef"
|
|
270
273
|
[matrixAutoUpdate]="false"
|
|
271
274
|
[raycast]="nullRaycast"
|
|
272
|
-
*args="[undefined, undefined, 0]"
|
|
273
275
|
ngtCompound
|
|
274
276
|
>
|
|
275
277
|
<ngt-instanced-buffer-attribute
|
|
278
|
+
*args="[buffers().matrices, 16]"
|
|
276
279
|
attach="instanceMatrix"
|
|
277
|
-
[count]="matrices().length / 16"
|
|
278
|
-
[array]="matrices()"
|
|
279
|
-
[itemSize]="16"
|
|
280
280
|
[usage]="DynamicDrawUsage"
|
|
281
281
|
/>
|
|
282
282
|
<ngt-instanced-buffer-attribute
|
|
283
|
+
*args="[buffers().colors, 3]"
|
|
283
284
|
attach="instanceColor"
|
|
284
|
-
[count]="colors().length / 3"
|
|
285
|
-
[array]="colors()"
|
|
286
|
-
[itemSize]="3"
|
|
287
285
|
[usage]="DynamicDrawUsage"
|
|
288
286
|
/>
|
|
289
287
|
<ng-container *ngTemplateOutlet="content" />
|
|
@@ -301,21 +299,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
301
299
|
[ref]="instancesRef"
|
|
302
300
|
[matrixAutoUpdate]="false"
|
|
303
301
|
[raycast]="nullRaycast"
|
|
304
|
-
*args="[undefined, undefined, 0]"
|
|
305
302
|
ngtCompound
|
|
306
303
|
>
|
|
307
304
|
<ngt-instanced-buffer-attribute
|
|
305
|
+
*args="[buffers().matrices, 16]"
|
|
308
306
|
attach="instanceMatrix"
|
|
309
|
-
[count]="matrices().length / 16"
|
|
310
|
-
[array]="matrices()"
|
|
311
|
-
[itemSize]="16"
|
|
312
307
|
[usage]="DynamicDrawUsage"
|
|
313
308
|
/>
|
|
314
309
|
<ngt-instanced-buffer-attribute
|
|
310
|
+
*args="[buffers().colors, 3]"
|
|
315
311
|
attach="instanceColor"
|
|
316
|
-
[count]="colors().length / 3"
|
|
317
|
-
[array]="colors()"
|
|
318
|
-
[itemSize]="3"
|
|
319
312
|
[usage]="DynamicDrawUsage"
|
|
320
313
|
/>
|
|
321
314
|
<ng-container *ngTemplateOutlet="content" />
|
|
@@ -959,5 +952,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
|
|
|
959
952
|
* Generated bundle index. Do not edit.
|
|
960
953
|
*/
|
|
961
954
|
|
|
962
|
-
export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsInstance, NgtsInstances, NgtsPoint, NgtsPoints, NgtsPointsBuffers, NgtsPointsInstances, NgtsSegment, NgtsSegments, SegmentObject, injectNgtsInstancesApi, injectNgtsPointsInstanceApi, injectNgtsSegmentsApi, provideNgtsInstancesApi, provideNgtsPointsInstancesApi, provideNgtsSegmentsApi };
|
|
955
|
+
export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsInstance, NgtsInstances, NgtsPoint, NgtsPoints, NgtsPointsBuffers, NgtsPointsInstances, NgtsSegment, NgtsSegments, PositionMesh, SegmentObject, injectNgtsInstancesApi, injectNgtsPointsInstanceApi, injectNgtsSegmentsApi, provideNgtsInstancesApi, provideNgtsPointsInstancesApi, provideNgtsSegmentsApi };
|
|
963
956
|
//# sourceMappingURL=angular-three-soba-performances.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/adaptive-dpr/adaptive-dpr.ts","../../../../libs/soba/performances/src/adaptive-events/adaptive-events.ts","../../../../libs/soba/performances/src/instances/position-mesh.ts","../../../../libs/soba/performances/src/instances/instances.ts","../../../../libs/soba/performances/src/points/points-input.ts","../../../../libs/soba/performances/src/points/position-point.ts","../../../../libs/soba/performances/src/points/points.ts","../../../../libs/soba/performances/src/segments/segment-object.ts","../../../../libs/soba/performances/src/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { Directive, Input, effect, signal, untracked } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr', standalone: true })\nexport class NgtsAdaptiveDpr {\n\tprivate pixelated = signal(false);\n\t@Input({ alias: 'pixelated' }) set _pixelated(pixelated: boolean) {\n\t\tthis.pixelated.set(pixelated);\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate current = this.store.select('performance', 'current');\n\tprivate active = this.store.get('internal', 'active');\n\tprivate setDpr = this.store.get('setDpr');\n\tprivate initialDpr = this.store.get('viewport', 'initialDpr');\n\tprivate domElement = this.store.get('gl', 'domElement');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tonCleanup(() => {\n\t\t\t\tif (this.active) {\n\t\t\t\t\tthis.setDpr(this.initialDpr);\n\t\t\t\t}\n\t\t\t\tif (this.pixelated() && this.domElement) {\n\t\t\t\t\tthis.domElement.style.imageRendering = 'auto';\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setDpr(current * this.initialDpr);\n\t\t\tif (untracked(this.pixelated) && this.domElement) {\n\t\t\t\tthis.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-events', standalone: true })\nexport class NgtsAdaptiveEvents {\n\tprivate store = injectNgtStore();\n\tprivate setEvents = this.store.get('setEvents');\n\tprivate current = this.store.select('performance', 'current');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst enabled = this.store.get('events', 'enabled');\n\t\t\tonCleanup(() => {\n\t\t\t\tthis.setEvents({ enabled });\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setEvents({ enabled: current === 1 });\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceIntersects: THREE.Intersection[] = /*@__PURE__*/ [];\nconst _mesh = /*@__PURE__*/ new THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>();\n\nexport class PositionMesh extends THREE.Group {\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.InstancedMesh | undefined>;\n\tinstanceKey: ElementRef<PositionMesh | undefined>;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof THREE.Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tcomputed,\n\tContentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tNgtArgs,\n\tNgtRef,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtInstancedMesh,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { InstancedBufferAttribute, InstancedMesh } from 'three';\nimport { PositionMesh } from './position-mesh';\n\nextend({ PositionMesh, InstancedMesh, InstancedBufferAttribute });\n\nexport type NgtsInstancesState = {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-mesh': PositionMesh & NgtGroup;\n\t\t/**\n\t\t * @extends ngt-instanced-mesh\n\t\t */\n\t\t'ngts-instances': NgtsInstancesState & NgtInstancedMesh;\n\t}\n}\n\nconst parentMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst instanceMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst tempMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst translation = /*@__PURE__*/ new THREE.Vector3();\nconst rotation = /*@__PURE__*/ new THREE.Quaternion();\nconst scale = /*@__PURE__*/ new THREE.Vector3();\n\nexport const [injectNgtsInstancesApi, provideNgtsInstancesApi] = createInjectionToken(\n\t(instances: NgtsInstances) => instances.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-instance',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-mesh\n\t\t\t[ref]=\"instanceRef\"\n\t\t\t[instance]=\"instancesApi.getParent()\"\n\t\t\t[instanceKey]=\"instanceRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstance {\n\t@Input() instanceRef = injectNgtRef<PositionMesh>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tinstancesApi = injectNgtsInstancesApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.instancesApi.subscribe(this.instanceRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t[userData]=\"{ instances: meshes() }\"\n\t\t\t[ref]=\"instancesRef\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\t*args=\"[undefined, undefined, 0]\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[count]=\"matrices().length / 16\"\n\t\t\t\t[array]=\"matrices()\"\n\t\t\t\t[itemSize]=\"16\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[count]=\"colors().length / 3\"\n\t\t\t\t[array]=\"colors()\"\n\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngt-instanced-mesh>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tproviders: [provideNgtsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstances {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\tnullRaycast = () => null;\n\n\tprivate inputs = signalStore<NgtsInstancesState>({ limit: 1000, frames: Infinity });\n\n\t@Input() instancesRef = injectNgtRef<InstancedMesh>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positionMeshes = signal<NgtRef<PositionMesh>[]>([]);\n\tmeshes = this.positionMeshes.asReadonly();\n\n\tmatrices = computed(() => new Float32Array(this.limit() * 16));\n\tcolors = computed(() => {\n\t\tconst [limit, matrices] = [this.limit(), this.matrices()];\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\t\treturn new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t});\n\n\tapi = {\n\t\tgetParent: () => this.instancesRef,\n\t\tsubscribe: (meshRef: NgtRef<PositionMesh>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionMeshes.update((s) => [...s, meshRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionMeshes.update((s) => s.filter((positionMesh) => positionMesh !== meshRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdate();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdate() {\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancesRef.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet count = 0;\n\t\tlet updateRange = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [{ frames, limit, range }, instancedMesh, instances, matrices, colors] = [\n\t\t\t\tthis.inputs.get(),\n\t\t\t\tthis.instancesRef.nativeElement,\n\t\t\t\tthis.meshes(),\n\t\t\t\tthis.matrices(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tupdateRange = Math.min(limit, range !== undefined ? range : limit, instances.length);\n\t\t\t\tinstancedMesh.count = updateRange;\n\t\t\t\tinstancedMesh.instanceMatrix.updateRange.count = updateRange * 16;\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tinstancedMesh.instanceColor.updateRange.count = updateRange * 3;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < instances.length; i++) {\n\t\t\t\t\tconst instanceRef = instances[i];\n\t\t\t\t\tconst instance = is.ref(instanceRef) ? instanceRef.nativeElement : instanceRef;\n\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\tinstancedMesh.instanceMatrix.needsUpdate = true;\n\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t}\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, Input, computed } from '@angular/core';\nimport { injectNgtRef, signalStore } from 'angular-three';\nimport type { Points } from 'three';\n\nexport type NgtsPointsInstancesState = {\n\tlimit: number;\n\trange?: number;\n};\n\nexport type NgtsPointsBuffersState = {\n\t// a buffer containing all points position\n\tpositions: Float32Array;\n\tcolors?: Float32Array;\n\tsizes?: Float32Array;\n\t// The size of the points in the buffer\n\tstride: 2 | 3;\n};\n\n@Directive()\nexport abstract class NgtsPointsInput {\n\tprotected inputs = signalStore<NgtsPointsBuffersState & NgtsPointsInstancesState>({\n\t\tstride: 3,\n\t\tlimit: 1000,\n\t});\n\n\t@Input() pointsRef = injectNgtRef<Points>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'positions' }) set _positions(positions: Float32Array) {\n\t\tthis.inputs.set({ positions });\n\t}\n\n\t@Input({ alias: 'colors' }) set _colors(colors: Float32Array) {\n\t\tthis.inputs.set({ colors });\n\t}\n\n\t@Input({ alias: 'sizes' }) set _sizes(sizes: Float32Array) {\n\t\tthis.inputs.set({ sizes });\n\t}\n\n\t@Input({ alias: 'stride' }) set _stride(stride: 2 | 3) {\n\t\tthis.inputs.set({ stride });\n\t}\n\n\tlimit = this.inputs.select('limit');\n\trange = this.inputs.select('range');\n\tpositions = this.inputs.select('positions');\n\tcolors = this.inputs.select('colors');\n\tcolorsLength = computed(() => this.colors()?.length || 0);\n\tsizes = this.inputs.select('sizes');\n\tsizesLength = computed(() => this.sizes()?.length || 0);\n\tstride = this.inputs.select('stride');\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _inverseMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _ray = /*@__PURE__*/ new THREE.Ray();\nconst _sphere = /*@__PURE__*/ new THREE.Sphere();\nconst _position = /*@__PURE__*/ new THREE.Vector3();\n\nexport class PositionPoint extends THREE.Group {\n\tsize: number;\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.Points | undefined>;\n\tinstanceKey: ElementRef<PositionPoint | undefined>;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new THREE.Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tTemplateRef,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\ttype NgtGroup,\n\ttype NgtPoints,\n\ttype NgtRef,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\nimport { NgtsPointsInput, type NgtsPointsBuffersState, type NgtsPointsInstancesState } from './points-input';\nimport { PositionPoint } from './position-point';\n\nextend({ Points, BufferGeometry, BufferAttribute, PositionPoint });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-instances': NgtsPointsInstancesState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-buffers': NgtsPointsBuffersState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points': (NgtsPointsBuffersState | NgtsPointsInstancesState) & NgtsPoints;\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-point': PositionPoint & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsPointsInstanceApi, provideNgtsPointsInstancesApi] = createInjectionToken(\n\tfunction pointsInstancesApi(instances: NgtsPointsInstances) {\n\t\treturn instances.api;\n\t},\n\t{ isRoot: false, deps: [forwardRef(() => NgtsPointsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-points-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t[ref]=\"pointsInput.pointsRef\"\n\t\t\t[userData]=\"{ instances: points() }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / 3\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"colors().length / 3\"\n\t\t\t\t\t[array]=\"colors()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"sizes().length\"\n\t\t\t\t\t[array]=\"sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tproviders: [provideNgtsPointsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsInstances {\n\tnullRaycast = () => null;\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tprivate positionPoints = signal<NgtRef<PositionPoint>[]>([]);\n\tprivate parentMatrix = new THREE.Matrix4();\n\tprivate position = new THREE.Vector3();\n\n\tpoints = this.positionPoints.asReadonly();\n\tpositions = computed(() => new Float32Array(this.pointsInput.limit() * 3));\n\tcolors = computed(() => Float32Array.from({ length: this.pointsInput.limit() * 3 }, () => 1));\n\tsizes = computed(() => Float32Array.from({ length: this.pointsInput.limit() }, () => 1));\n\n\tinjector = inject(Injector);\n\n\tapi = {\n\t\tgetParent: () => this.pointsInput.pointsRef,\n\t\tsubscribe: (pointRef: NgtRef<PositionPoint>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionPoints.update((s) => [...s, pointRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionPoints.update((s) => s.filter((positionPoint) => positionPoint !== pointRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdatePositionAttribute();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdatePositionAttribute() {\n\t\teffect(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [limit, range, positionPoints, positions, colors, sizes] = [\n\t\t\t\tthis.pointsInput.limit(),\n\t\t\t\tthis.pointsInput.range(),\n\t\t\t\tthis.positionPoints(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t\tthis.sizes(),\n\t\t\t];\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tthis.parentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tpositionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < positionPoints.length; i++) {\n\t\t\t\tconst positionPointRef = positionPoints[i];\n\t\t\t\tconst positionPoint = is.ref(positionPointRef) ? positionPointRef.nativeElement : positionPointRef;\n\t\t\t\tif (!positionPoint) continue;\n\t\t\t\tpositionPoint.getWorldPosition(this.position).applyMatrix4(this.parentMatrix);\n\t\t\t\tthis.position.toArray(positions, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\n\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t}\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-point',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-point\n\t\t\t[instance]=\"pointsInstancesApi.getParent()\"\n\t\t\t[ref]=\"pointRef\"\n\t\t\t[instanceKey]=\"pointRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoint implements OnInit {\n\t@Input() pointRef = injectNgtRef<PositionPoint>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tpointsInstancesApi = injectNgtsPointsInstanceApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.pointsInstancesApi.subscribe(this.pointRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffers',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points [ref]=\"pointsInput.pointsRef\" ngtCompound>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"pointsInput.positions().length / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.positions()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"pointsInput.colorsLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.colors()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"pointsInput.sizesLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsBuffers {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tstore = injectNgtStore();\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [sizes, colors] = [this.pointsInput.sizes(), this.pointsInput.colors()];\n\t\t\tconst attr = points.geometry.attributes;\n\t\t\tcheckUpdate(attr['position']);\n\t\t\tif (colors) checkUpdate(attr['color']);\n\t\t\tif (sizes) checkUpdate(attr['size']);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-points-buffers *ngIf=\"positions()\">\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngts-points-buffers>\n\t\t<ngts-points-instances *ngIf=\"!positions()\" #pointsInstances>\n\t\t\t<!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->\n\t\t\t<ng-container *ngTemplateOutlet=\"content; injector: pointsInstances.injector\" />\n\t\t</ngts-points-instances>\n\t`,\n\timports: [NgIf, NgtsPointsBuffers, NgtsPointsInstances, NgTemplateOutlet],\n\tproviders: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoints extends NgtsPointsInput {\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n}\n","import * as THREE from 'three';\n\nexport class SegmentObject {\n\tcolor: THREE.Color;\n\tstart: THREE.Vector3;\n\tend: THREE.Vector3;\n\tconstructor() {\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.start = new THREE.Vector3(0, 0, 0);\n\t\tthis.end = new THREE.Vector3(0, 0, 0);\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtRef,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtColor,\n\ttype NgtVector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\nexport type NgtsSegmentState = {\n\tstart?: NgtVector3;\n\tend?: NgtVector3;\n\tcolor?: NgtColor;\n};\n\nexport type NgtsSegmentsState = {\n\tlimit: number;\n\tlineWidth: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngt-segment-object': SegmentObject;\n\t\t'ngts-segment': NgtsSegmentState;\n\t\t'ngts-segments': NgtsSegmentsState;\n\t}\n}\n\nconst normPos = (pos: NgtsSegmentState['start']): SegmentObject['start'] =>\n\tpos instanceof THREE.Vector3\n\t\t? pos\n\t\t: new THREE.Vector3(...((typeof pos === 'number' ? [pos, pos, pos] : pos) as [number, number, number]));\n\nextend({ SegmentObject });\n\nexport const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken(\n\t(segments: NgtsSegments) => segments.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsSegments)] },\n);\n\n@Component({\n\tselector: 'ngts-segment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-segment-object [ref]=\"segmentRef\" [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegment implements OnInit {\n\tprivate inputs = signalStore<NgtsSegmentState>({});\n\n\t@Input() segmentRef = injectNgtRef<SegmentObject>();\n\n\t@Input({ alias: 'start' }) set _start(start: NgtVector3) {\n\t\tthis.inputs.set({ start });\n\t}\n\n\t@Input({ alias: 'end' }) set _end(end: NgtVector3) {\n\t\tthis.inputs.set({ end });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: NgtColor) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\tprivate segmentsApi = injectNgtsSegmentsApi();\n\tprivate injector = inject(Injector);\n\tprivate zone = inject(NgZone);\n\n\tprivate start = this.inputs.select('start');\n\tprivate end = this.inputs.select('end');\n\n\tnormalizedStart = computed(() => normPos(this.start()));\n\tnormalizedEnd = computed(() => normPos(this.end()));\n\tcolor = this.inputs.select('color');\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => {\n\t\t\t\t\tconst api = this.segmentsApi();\n\t\t\t\t\treturn api.subscribe(this.segmentRef);\n\t\t\t\t});\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-segments',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line]\" [ref]=\"segmentsRef\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[material]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\tngtCompound\n\t\t\t\t[vertexColors]=\"true\"\n\t\t\t\t[resolution]=\"resolution\"\n\t\t\t\t[linewidth]=\"lineWidth()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tproviders: [provideNgtsSegmentsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegments {\n\tprivate inputs = signalStore<NgtsSegmentsState>({ limit: 1000, lineWidth: 1 });\n\n\t@Input() segmentsRef = injectNgtRef<Line2>();\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'lineWidth' }) set _lineWidth(lineWidth: number) {\n\t\tthis.inputs.set({ lineWidth });\n\t}\n\n\tprivate segments = signal<NgtRef<SegmentObject>[]>([]);\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positions = computed(() => Array(this.limit() * 6).fill(0));\n\tprivate colors = computed(() => Array(this.limit() * 6).fill(0));\n\n\tresolution = new THREE.Vector2(512, 512);\n\tlineWidth = this.inputs.select('lineWidth');\n\tline = new Line2();\n\tmaterial = new LineMaterial();\n\tgeometry = new LineSegmentsGeometry();\n\n\tapi = computed(() => ({\n\t\tsubscribe: (segmentRef: NgtRef<SegmentObject>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.segments.update((s) => [...s, segmentRef]);\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.segments.update((s) => s.filter((segment) => segment !== segmentRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t}));\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [segments, limit, positions, colors] = [\n\t\t\t\tthis.segments(),\n\t\t\t\tthis.limit(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segmentRef = segments[i];\n\t\t\t\tconst segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-performances.mjs","sources":["../../../../libs/soba/performances/src/adaptive-dpr/adaptive-dpr.ts","../../../../libs/soba/performances/src/adaptive-events/adaptive-events.ts","../../../../libs/soba/performances/src/instances/position-mesh.ts","../../../../libs/soba/performances/src/instances/instances.ts","../../../../libs/soba/performances/src/points/points-input.ts","../../../../libs/soba/performances/src/points/position-point.ts","../../../../libs/soba/performances/src/points/points.ts","../../../../libs/soba/performances/src/segments/segment-object.ts","../../../../libs/soba/performances/src/segments/segments.ts","../../../../libs/soba/performances/src/angular-three-soba-performances.ts"],"sourcesContent":["import { Directive, Input, effect, signal, untracked } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-dpr', standalone: true })\nexport class NgtsAdaptiveDpr {\n\tprivate pixelated = signal(false);\n\t@Input({ alias: 'pixelated' }) set _pixelated(pixelated: boolean) {\n\t\tthis.pixelated.set(pixelated);\n\t}\n\n\tprivate store = injectNgtStore();\n\tprivate current = this.store.select('performance', 'current');\n\tprivate active = this.store.get('internal', 'active');\n\tprivate setDpr = this.store.get('setDpr');\n\tprivate initialDpr = this.store.get('viewport', 'initialDpr');\n\tprivate domElement = this.store.get('gl', 'domElement');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tonCleanup(() => {\n\t\t\t\tif (this.active) {\n\t\t\t\t\tthis.setDpr(this.initialDpr);\n\t\t\t\t}\n\t\t\t\tif (this.pixelated() && this.domElement) {\n\t\t\t\t\tthis.domElement.style.imageRendering = 'auto';\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setDpr(current * this.initialDpr);\n\t\t\tif (untracked(this.pixelated) && this.domElement) {\n\t\t\t\tthis.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-adaptive-events', standalone: true })\nexport class NgtsAdaptiveEvents {\n\tprivate store = injectNgtStore();\n\tprivate setEvents = this.store.get('setEvents');\n\tprivate current = this.store.select('performance', 'current');\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst enabled = this.store.get('events', 'enabled');\n\t\t\tonCleanup(() => {\n\t\t\t\tthis.setEvents({ enabled });\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst current = this.current();\n\t\t\tthis.setEvents({ enabled: current === 1 });\n\t\t});\n\t}\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _instanceIntersects: THREE.Intersection[] = /*@__PURE__*/ [];\nconst _mesh = /*@__PURE__*/ new THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>();\n\nexport class PositionMesh extends THREE.Group {\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.InstancedMesh | undefined>;\n\tinstanceKey: ElementRef<PositionMesh | undefined>;\n\tconstructor() {\n\t\tsuper();\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\t// And this will allow the virtual instance to receive events\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent) return;\n\t\tif (!parent.geometry || !parent.material) return;\n\t\t_mesh.geometry = parent.geometry;\n\t\tconst matrixWorld = parent.matrixWorld;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.count) return;\n\t\t// calculate the world matrix for each instance\n\t\tparent.getMatrixAt(instanceId, _instanceLocalMatrix);\n\t\t_instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n\t\t// the mesh represents this single instance\n\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\t\t// raycast side according to instance material\n\t\tif (parent.material instanceof THREE.Material) _mesh.material.side = parent.material.side;\n\t\telse _mesh.material.side = parent.material[0].side;\n\t\t_mesh.raycast(raycaster, _instanceIntersects);\n\t\t// process the result of raycast\n\t\tfor (let i = 0, l = _instanceIntersects.length; i < l; i++) {\n\t\t\tconst intersect = _instanceIntersects[i];\n\t\t\tintersect.instanceId = instanceId;\n\t\t\tintersect.object = this;\n\t\t\tintersects.push(intersect);\n\t\t}\n\t\t_instanceIntersects.length = 0;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tcomputed,\n\tContentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tNgtArgs,\n\tNgtRef,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtInstancedMesh,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { InstancedBufferAttribute, InstancedMesh } from 'three';\nimport { PositionMesh } from './position-mesh';\n\nextend({ PositionMesh, InstancedMesh, InstancedBufferAttribute });\n\nexport type NgtsInstancesState = {\n\trange?: number;\n\tlimit: number;\n\tframes: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-mesh': PositionMesh & NgtGroup;\n\t\t/**\n\t\t * @extends ngt-instanced-mesh\n\t\t */\n\t\t'ngts-instances': NgtsInstancesState & NgtInstancedMesh;\n\t}\n}\n\nconst parentMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst instanceMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst tempMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst translation = /*@__PURE__*/ new THREE.Vector3();\nconst rotation = /*@__PURE__*/ new THREE.Quaternion();\nconst scale = /*@__PURE__*/ new THREE.Vector3();\n\nexport const [injectNgtsInstancesApi, provideNgtsInstancesApi] = createInjectionToken(\n\t(instances: NgtsInstances) => instances.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-instance',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-mesh\n\t\t\t[ref]=\"instanceRef\"\n\t\t\t[instance]=\"instancesApi.getParent()\"\n\t\t\t[instanceKey]=\"instanceRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstance {\n\t@Input() instanceRef = injectNgtRef<PositionMesh>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tinstancesApi = injectNgtsInstancesApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.instancesApi.subscribe(this.instanceRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-instanced-mesh\n\t\t\t[userData]=\"{ instances: meshes() }\"\n\t\t\t[ref]=\"instancesRef\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\t*args=\"[buffers().matrices, 16]\"\n\t\t\t\tattach=\"instanceMatrix\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ngt-instanced-buffer-attribute\n\t\t\t\t*args=\"[buffers().colors, 3]\"\n\t\t\t\tattach=\"instanceColor\"\n\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t/>\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngt-instanced-mesh>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tproviders: [provideNgtsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsInstances {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\tnullRaycast = () => null;\n\n\tprivate inputs = signalStore<NgtsInstancesState>({ limit: 1000, frames: Infinity });\n\n\t@Input() instancesRef = injectNgtRef<InstancedMesh>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positionMeshes = signal<NgtRef<PositionMesh>[]>([]);\n\tmeshes = this.positionMeshes.asReadonly();\n\n\tbuffers = computed(() => {\n\t\tconst limit = this.limit();\n\t\tconst matrices = new Float32Array(limit * 16);\n\n\t\tfor (let i = 0; i < limit; i++) {\n\t\t\ttempMatrix.identity().toArray(matrices, i * 16);\n\t\t}\n\n\t\tconst colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);\n\t\treturn { matrices, colors };\n\t});\n\n\tapi = {\n\t\tgetParent: () => this.instancesRef,\n\t\tsubscribe: (meshRef: NgtRef<PositionMesh>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionMeshes.update((s) => [...s, meshRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionMeshes.update((s) => s.filter((positionMesh) => positionMesh !== meshRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdate();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdate() {\n\t\teffect(() => {\n\t\t\tconst instancedMesh = this.instancesRef.nativeElement;\n\t\t\tif (!instancedMesh) return;\n\t\t\t// NOTE: not sure why matrices ends up a different instance than array\n\t\t\t// we reassign it here\n\t\t\tinstancedMesh.instanceMatrix.array = untracked(this.buffers).matrices;\n\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet count = 0;\n\t\tlet updateRange = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [{ frames, limit, range }, instancedMesh, instances, { matrices, colors }] = [\n\t\t\t\tthis.inputs.get(),\n\t\t\t\tthis.instancesRef.nativeElement,\n\t\t\t\tthis.meshes(),\n\t\t\t\tthis.buffers(),\n\t\t\t];\n\t\t\tif ((frames === Infinity || count < frames) && instancedMesh) {\n\t\t\t\tinstancedMesh.updateMatrix();\n\t\t\t\tinstancedMesh.updateMatrixWorld();\n\t\t\t\tparentMatrix.copy(instancedMesh.matrixWorld).invert();\n\n\t\t\t\tupdateRange = Math.min(limit, range !== undefined ? range : limit, instances.length);\n\t\t\t\tinstancedMesh.count = updateRange;\n\t\t\t\tinstancedMesh.instanceMatrix.updateRange.count = updateRange * 16;\n\t\t\t\tif (instancedMesh.instanceColor) {\n\t\t\t\t\tinstancedMesh.instanceColor.updateRange.count = updateRange * 3;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < instances.length; i++) {\n\t\t\t\t\tconst instanceRef = instances[i];\n\t\t\t\t\tconst instance = is.ref(instanceRef) ? instanceRef.nativeElement : instanceRef;\n\t\t\t\t\t// Multiply the inverse of the InstancedMesh world matrix or else\n\t\t\t\t\t// Instances will be double-transformed if <Instances> isn't at identity\n\t\t\t\t\tinstance.matrixWorld.decompose(translation, rotation, scale);\n\t\t\t\t\tinstanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);\n\t\t\t\t\tinstanceMatrix.toArray(matrices, i * 16);\n\t\t\t\t\tcheckUpdate(instancedMesh.instanceMatrix);\n\t\t\t\t\tinstance.color.toArray(colors, i * 3);\n\t\t\t\t\tcheckUpdate(instancedMesh.instanceColor);\n\t\t\t\t}\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, Input, computed } from '@angular/core';\nimport { injectNgtRef, signalStore } from 'angular-three';\nimport type { Points } from 'three';\n\nexport type NgtsPointsInstancesState = {\n\tlimit: number;\n\trange?: number;\n};\n\nexport type NgtsPointsBuffersState = {\n\t// a buffer containing all points position\n\tpositions: Float32Array;\n\tcolors?: Float32Array;\n\tsizes?: Float32Array;\n\t// The size of the points in the buffer\n\tstride: 2 | 3;\n};\n\n@Directive()\nexport abstract class NgtsPointsInput {\n\tprotected inputs = signalStore<NgtsPointsBuffersState & NgtsPointsInstancesState>({\n\t\tstride: 3,\n\t\tlimit: 1000,\n\t});\n\n\t@Input() pointsRef = injectNgtRef<Points>();\n\n\t@Input({ alias: 'range' }) set _range(range: number) {\n\t\tthis.inputs.set({ range });\n\t}\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'positions' }) set _positions(positions: Float32Array) {\n\t\tthis.inputs.set({ positions });\n\t}\n\n\t@Input({ alias: 'colors' }) set _colors(colors: Float32Array) {\n\t\tthis.inputs.set({ colors });\n\t}\n\n\t@Input({ alias: 'sizes' }) set _sizes(sizes: Float32Array) {\n\t\tthis.inputs.set({ sizes });\n\t}\n\n\t@Input({ alias: 'stride' }) set _stride(stride: 2 | 3) {\n\t\tthis.inputs.set({ stride });\n\t}\n\n\tlimit = this.inputs.select('limit');\n\trange = this.inputs.select('range');\n\tpositions = this.inputs.select('positions');\n\tcolors = this.inputs.select('colors');\n\tcolorsLength = computed(() => this.colors()?.length || 0);\n\tsizes = this.inputs.select('sizes');\n\tsizesLength = computed(() => this.sizes()?.length || 0);\n\tstride = this.inputs.select('stride');\n}\n","import { ElementRef } from '@angular/core';\nimport * as THREE from 'three';\n\nconst _inverseMatrix = /*@__PURE__*/ new THREE.Matrix4();\nconst _ray = /*@__PURE__*/ new THREE.Ray();\nconst _sphere = /*@__PURE__*/ new THREE.Sphere();\nconst _position = /*@__PURE__*/ new THREE.Vector3();\n\nexport class PositionPoint extends THREE.Group {\n\tsize: number;\n\tcolor: THREE.Color;\n\tinstance: ElementRef<THREE.Points | undefined>;\n\tinstanceKey: ElementRef<PositionPoint | undefined>;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.size = 0;\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.instance = new ElementRef(undefined);\n\t\tthis.instanceKey = new ElementRef(undefined);\n\t}\n\n\t// This will allow the virtual instance have bounds\n\tget geometry() {\n\t\treturn this.instance.nativeElement?.geometry;\n\t}\n\n\toverride raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]) {\n\t\tconst parent = this.instance.nativeElement;\n\t\tif (!parent || !parent.geometry) return;\n\t\tconst instanceId = parent.userData['instances'].indexOf(this.instanceKey);\n\t\t// If the instance wasn't found or exceeds the parents draw range, bail out\n\t\tif (instanceId === -1 || instanceId > parent.geometry.drawRange.count) return;\n\n\t\tconst threshold = raycaster.params.Points?.threshold ?? 1;\n\t\t_sphere.set(this.getWorldPosition(_position), threshold);\n\t\tif (raycaster.ray.intersectsSphere(_sphere) === false) return;\n\n\t\t_inverseMatrix.copy(parent.matrixWorld).invert();\n\t\t_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n\n\t\tconst localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\t\tconst rayPointDistanceSq = _ray.distanceSqToPoint(this.position);\n\n\t\tif (rayPointDistanceSq < localThresholdSq) {\n\t\t\tconst intersectPoint = new THREE.Vector3();\n\t\t\t_ray.closestPointToPoint(this.position, intersectPoint);\n\t\t\tintersectPoint.applyMatrix4(this.matrixWorld);\n\t\t\tconst distance = raycaster.ray.origin.distanceTo(intersectPoint);\n\t\t\tif (distance < raycaster.near || distance > raycaster.far) return;\n\t\t\tintersects.push({\n\t\t\t\tdistance: distance,\n\t\t\t\tdistanceToRay: Math.sqrt(rayPointDistanceSq),\n\t\t\t\tpoint: intersectPoint,\n\t\t\t\tindex: instanceId,\n\t\t\t\tface: null,\n\t\t\t\tobject: this,\n\t\t\t});\n\t\t}\n\t}\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tTemplateRef,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tcheckUpdate,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\ttype NgtGroup,\n\ttype NgtPoints,\n\ttype NgtRef,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\nimport { NgtsPointsInput, type NgtsPointsBuffersState, type NgtsPointsInstancesState } from './points-input';\nimport { PositionPoint } from './position-point';\n\nextend({ Points, BufferGeometry, BufferAttribute, PositionPoint });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-instances': NgtsPointsInstancesState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points-buffers': NgtsPointsBuffersState & NgtPoints;\n\t\t/**\n\t\t * @extends ngt-points\n\t\t */\n\t\t'ngts-points': (NgtsPointsBuffersState | NgtsPointsInstancesState) & NgtsPoints;\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngt-position-point': PositionPoint & NgtGroup;\n\t}\n}\n\nexport const [injectNgtsPointsInstanceApi, provideNgtsPointsInstancesApi] = createInjectionToken(\n\tfunction pointsInstancesApi(instances: NgtsPointsInstances) {\n\t\treturn instances.api;\n\t},\n\t{ isRoot: false, deps: [forwardRef(() => NgtsPointsInstances)] },\n);\n\n@Component({\n\tselector: 'ngts-points-instances',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points\n\t\t\t[ref]=\"pointsInput.pointsRef\"\n\t\t\t[userData]=\"{ instances: points() }\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t[raycast]=\"nullRaycast\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"positions().length / 3\"\n\t\t\t\t\t[array]=\"positions()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"colors().length / 3\"\n\t\t\t\t\t[array]=\"colors()\"\n\t\t\t\t\t[itemSize]=\"3\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"sizes().length\"\n\t\t\t\t\t[array]=\"sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tproviders: [provideNgtsPointsInstancesApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsInstances {\n\tnullRaycast = () => null;\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tprivate positionPoints = signal<NgtRef<PositionPoint>[]>([]);\n\tprivate parentMatrix = new THREE.Matrix4();\n\tprivate position = new THREE.Vector3();\n\n\tpoints = this.positionPoints.asReadonly();\n\tpositions = computed(() => new Float32Array(this.pointsInput.limit() * 3));\n\tcolors = computed(() => Float32Array.from({ length: this.pointsInput.limit() * 3 }, () => 1));\n\tsizes = computed(() => Float32Array.from({ length: this.pointsInput.limit() }, () => 1));\n\n\tinjector = inject(Injector);\n\n\tapi = {\n\t\tgetParent: () => this.pointsInput.pointsRef,\n\t\tsubscribe: (pointRef: NgtRef<PositionPoint>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.positionPoints.update((s) => [...s, pointRef]);\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.positionPoints.update((s) => s.filter((positionPoint) => positionPoint !== pointRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t};\n\n\tconstructor() {\n\t\tthis.checkUpdatePositionAttribute();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate checkUpdatePositionAttribute() {\n\t\teffect(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [limit, range, positionPoints, positions, colors, sizes] = [\n\t\t\t\tthis.pointsInput.limit(),\n\t\t\t\tthis.pointsInput.range(),\n\t\t\t\tthis.positionPoints(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t\tthis.sizes(),\n\t\t\t];\n\n\t\t\tpoints.updateMatrix();\n\t\t\tpoints.updateMatrixWorld();\n\t\t\tthis.parentMatrix.copy(points.matrixWorld).invert();\n\n\t\t\tpoints.geometry.drawRange.count = Math.min(\n\t\t\t\tlimit,\n\t\t\t\trange !== undefined ? range : limit,\n\t\t\t\tpositionPoints.length,\n\t\t\t);\n\n\t\t\tfor (let i = 0; i < positionPoints.length; i++) {\n\t\t\t\tconst positionPointRef = positionPoints[i];\n\t\t\t\tconst positionPoint = is.ref(positionPointRef) ? positionPointRef.nativeElement : positionPointRef;\n\t\t\t\tif (!positionPoint) continue;\n\t\t\t\tpositionPoint.getWorldPosition(this.position).applyMatrix4(this.parentMatrix);\n\t\t\t\tthis.position.toArray(positions, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['position']);\n\t\t\t\tpositionPoint.matrixWorldNeedsUpdate = true;\n\n\t\t\t\tpositionPoint.color.toArray(colors, i * 3);\n\t\t\t\tcheckUpdate(points.geometry.attributes['color']);\n\n\t\t\t\tsizes.set([positionPoint.size], i);\n\t\t\t\tcheckUpdate(points.geometry.attributes['size']);\n\t\t\t}\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-point',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-position-point\n\t\t\t[instance]=\"pointsInstancesApi.getParent()\"\n\t\t\t[ref]=\"pointRef\"\n\t\t\t[instanceKey]=\"pointRef\"\n\t\t\tngtCompound\n\t\t>\n\t\t\t<ng-content />\n\t\t</ngt-position-point>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoint implements OnInit {\n\t@Input() pointRef = injectNgtRef<PositionPoint>();\n\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\tpointsInstancesApi = injectNgtsPointsInstanceApi();\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => this.pointsInstancesApi.subscribe(this.pointRef));\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points-buffers',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-points [ref]=\"pointsInput.pointsRef\" ngtCompound>\n\t\t\t<ngt-buffer-geometry>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.position\"\n\t\t\t\t\t[count]=\"pointsInput.positions().length / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.positions()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.color\"\n\t\t\t\t\t[count]=\"pointsInput.colorsLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.colors()\"\n\t\t\t\t\t[itemSize]=\"pointsInput.stride()\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t\t<ngt-buffer-attribute\n\t\t\t\t\tattach=\"attributes.size\"\n\t\t\t\t\t[count]=\"pointsInput.sizesLength() / pointsInput.stride()\"\n\t\t\t\t\t[array]=\"pointsInput.sizes()\"\n\t\t\t\t\t[itemSize]=\"1\"\n\t\t\t\t\t[usage]=\"DynamicDrawUsage\"\n\t\t\t\t/>\n\t\t\t</ngt-buffer-geometry>\n\t\t\t<ng-content />\n\t\t</ngt-points>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointsBuffers {\n\tDynamicDrawUsage = THREE.DynamicDrawUsage;\n\n\tpointsInput = inject(NgtsPointsInput);\n\n\tstore = injectNgtStore();\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst points = this.pointsInput.pointsRef.nativeElement;\n\t\t\tif (!points) return;\n\t\t\tconst [sizes, colors] = [this.pointsInput.sizes(), this.pointsInput.colors()];\n\t\t\tconst attr = points.geometry.attributes;\n\t\t\tcheckUpdate(attr['position']);\n\t\t\tif (colors) checkUpdate(attr['color']);\n\t\t\tif (sizes) checkUpdate(attr['size']);\n\t\t});\n\t}\n}\n\n@Component({\n\tselector: 'ngts-points',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngts-points-buffers *ngIf=\"positions()\">\n\t\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t\t</ngts-points-buffers>\n\t\t<ngts-points-instances *ngIf=\"!positions()\" #pointsInstances>\n\t\t\t<!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->\n\t\t\t<ng-container *ngTemplateOutlet=\"content; injector: pointsInstances.injector\" />\n\t\t</ngts-points-instances>\n\t`,\n\timports: [NgIf, NgtsPointsBuffers, NgtsPointsInstances, NgTemplateOutlet],\n\tproviders: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPoints extends NgtsPointsInput {\n\t@ContentChild(NgtsSobaContent, { static: true, read: TemplateRef }) content!: TemplateRef<unknown>;\n}\n","import * as THREE from 'three';\n\nexport class SegmentObject {\n\tcolor: THREE.Color;\n\tstart: THREE.Vector3;\n\tend: THREE.Vector3;\n\tconstructor() {\n\t\tthis.color = new THREE.Color('white');\n\t\tthis.start = new THREE.Vector3(0, 0, 0);\n\t\tthis.end = new THREE.Vector3(0, 0, 0);\n\t}\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tcomputed,\n\teffect,\n\tforwardRef,\n\tinject,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tNgtArgs,\n\tNgtRef,\n\tcreateInjectionToken,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtColor,\n\ttype NgtVector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';\nimport { SegmentObject } from './segment-object';\n\nexport type NgtsSegmentState = {\n\tstart?: NgtVector3;\n\tend?: NgtVector3;\n\tcolor?: NgtColor;\n};\n\nexport type NgtsSegmentsState = {\n\tlimit: number;\n\tlineWidth: number;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngt-segment-object': SegmentObject;\n\t\t'ngts-segment': NgtsSegmentState;\n\t\t'ngts-segments': NgtsSegmentsState;\n\t}\n}\n\nconst normPos = (pos: NgtsSegmentState['start']): SegmentObject['start'] =>\n\tpos instanceof THREE.Vector3\n\t\t? pos\n\t\t: new THREE.Vector3(...((typeof pos === 'number' ? [pos, pos, pos] : pos) as [number, number, number]));\n\nextend({ SegmentObject });\n\nexport const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken(\n\t(segments: NgtsSegments) => segments.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsSegments)] },\n);\n\n@Component({\n\tselector: 'ngts-segment',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-segment-object [ref]=\"segmentRef\" [color]=\"color()\" [start]=\"normalizedStart()\" [end]=\"normalizedEnd()\" />\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegment implements OnInit {\n\tprivate inputs = signalStore<NgtsSegmentState>({});\n\n\t@Input() segmentRef = injectNgtRef<SegmentObject>();\n\n\t@Input({ alias: 'start' }) set _start(start: NgtVector3) {\n\t\tthis.inputs.set({ start });\n\t}\n\n\t@Input({ alias: 'end' }) set _end(end: NgtVector3) {\n\t\tthis.inputs.set({ end });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: NgtColor) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\tprivate segmentsApi = injectNgtsSegmentsApi();\n\tprivate injector = inject(Injector);\n\tprivate zone = inject(NgZone);\n\n\tprivate start = this.inputs.select('start');\n\tprivate end = this.inputs.select('end');\n\n\tnormalizedStart = computed(() => normPos(this.start()));\n\tnormalizedEnd = computed(() => normPos(this.end()));\n\tcolor = this.inputs.select('color');\n\n\tngOnInit() {\n\t\teffect(\n\t\t\t(onCleanup) => {\n\t\t\t\tconst cleanup = this.zone.runOutsideAngular(() => {\n\t\t\t\t\tconst api = this.segmentsApi();\n\t\t\t\t\treturn api.subscribe(this.segmentRef);\n\t\t\t\t});\n\t\t\t\tonCleanup(cleanup);\n\t\t\t},\n\t\t\t{ injector: this.injector },\n\t\t);\n\t}\n}\n\n@Component({\n\tselector: 'ngts-segments',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[line]\" [ref]=\"segmentsRef\">\n\t\t\t<ngt-primitive *args=\"[geometry]\" attach=\"geometry\" />\n\t\t\t<ngt-primitive\n\t\t\t\t*args=\"[material]\"\n\t\t\t\tattach=\"material\"\n\t\t\t\tngtCompound\n\t\t\t\t[vertexColors]=\"true\"\n\t\t\t\t[resolution]=\"resolution\"\n\t\t\t\t[linewidth]=\"lineWidth()\"\n\t\t\t/>\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tproviders: [provideNgtsSegmentsApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSegments {\n\tprivate inputs = signalStore<NgtsSegmentsState>({ limit: 1000, lineWidth: 1 });\n\n\t@Input() segmentsRef = injectNgtRef<Line2>();\n\n\t@Input({ alias: 'limit' }) set _limit(limit: number) {\n\t\tthis.inputs.set({ limit });\n\t}\n\n\t@Input({ alias: 'lineWidth' }) set _lineWidth(lineWidth: number) {\n\t\tthis.inputs.set({ lineWidth });\n\t}\n\n\tprivate segments = signal<NgtRef<SegmentObject>[]>([]);\n\tprivate limit = this.inputs.select('limit');\n\n\tprivate positions = computed(() => Array(this.limit() * 6).fill(0));\n\tprivate colors = computed(() => Array(this.limit() * 6).fill(0));\n\n\tresolution = new THREE.Vector2(512, 512);\n\tlineWidth = this.inputs.select('lineWidth');\n\tline = new Line2();\n\tmaterial = new LineMaterial();\n\tgeometry = new LineSegmentsGeometry();\n\n\tapi = computed(() => ({\n\t\tsubscribe: (segmentRef: NgtRef<SegmentObject>) => {\n\t\t\tuntracked(() => {\n\t\t\t\tthis.segments.update((s) => [...s, segmentRef]);\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis.segments.update((s) => s.filter((segment) => segment !== segmentRef));\n\t\t\t\t});\n\t\t\t};\n\t\t},\n\t}));\n\n\tconstructor() {\n\t\tthis.beforeRender();\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [segments, limit, positions, colors] = [\n\t\t\t\tthis.segments(),\n\t\t\t\tthis.limit(),\n\t\t\t\tthis.positions(),\n\t\t\t\tthis.colors(),\n\t\t\t];\n\t\t\tfor (let i = 0; i < limit; i++) {\n\t\t\t\tconst segmentRef = segments[i];\n\t\t\t\tconst segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;\n\t\t\t\tif (segment) {\n\t\t\t\t\tpositions[i * 6 + 0] = segment.start.x;\n\t\t\t\t\tpositions[i * 6 + 1] = segment.start.y;\n\t\t\t\t\tpositions[i * 6 + 2] = segment.start.z;\n\n\t\t\t\t\tpositions[i * 6 + 3] = segment.end.x;\n\t\t\t\t\tpositions[i * 6 + 4] = segment.end.y;\n\t\t\t\t\tpositions[i * 6 + 5] = segment.end.z;\n\n\t\t\t\t\tcolors[i * 6 + 0] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 1] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 2] = segment.color.b;\n\n\t\t\t\t\tcolors[i * 6 + 3] = segment.color.r;\n\t\t\t\t\tcolors[i * 6 + 4] = segment.color.g;\n\t\t\t\t\tcolors[i * 6 + 5] = segment.color.b;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.geometry.setColors(colors);\n\t\t\tthis.geometry.setPositions(positions);\n\t\t\tthis.line.computeLineDistances();\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/performances/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './adaptive-dpr/adaptive-dpr';
|
|
2
2
|
export * from './adaptive-events/adaptive-events';
|
|
3
3
|
export * from './instances/instances';
|
|
4
|
+
export * from './instances/position-mesh';
|
|
4
5
|
export * from './points/points';
|
|
5
6
|
export * from './segments/segment-object';
|
|
6
7
|
export * from './segments/segments';
|
|
@@ -63,8 +63,10 @@ export declare class NgtsInstances {
|
|
|
63
63
|
private limit;
|
|
64
64
|
private positionMeshes;
|
|
65
65
|
meshes: import("@angular/core").Signal<NgtRef<PositionMesh>[]>;
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
buffers: import("@angular/core").Signal<{
|
|
67
|
+
matrices: Float32Array;
|
|
68
|
+
colors: Float32Array;
|
|
69
|
+
}>;
|
|
68
70
|
api: {
|
|
69
71
|
getParent: () => import("angular-three").NgtInjectedRef<THREE.InstancedMesh<THREE.BufferGeometry<THREE.NormalBufferAttributes>, THREE.Material | THREE.Material[]>>;
|
|
70
72
|
subscribe: (meshRef: NgtRef<PositionMesh>) => () => void;
|