angular-three-soba 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/loaders/index.mjs +4 -1
- package/esm2020/loaders/lib/loader/loader.mjs +133 -0
- package/esm2020/loaders/lib/progress/progress.mjs +39 -0
- package/esm2020/loaders/lib/texture-loader/texture-loader.mjs +19 -0
- package/esm2020/misc/angular-three-soba-misc.mjs +5 -0
- package/esm2020/misc/index.mjs +2 -0
- package/esm2020/misc/lib/bake-shadows/bake-shadows.mjs +25 -0
- package/esm2020/performance/angular-three-soba-performance.mjs +5 -0
- package/esm2020/performance/index.mjs +5 -0
- package/esm2020/performance/lib/adaptive/adaptive-dpr.mjs +46 -0
- package/esm2020/performance/lib/adaptive/adaptive-events.mjs +36 -0
- package/esm2020/performance/lib/detailed/detailed.mjs +50 -0
- package/esm2020/performance/lib/stats/stats.mjs +63 -0
- package/esm2020/shaders/angular-three-soba-shaders.mjs +5 -0
- package/esm2020/shaders/index.mjs +2 -0
- package/esm2020/shaders/lib/shader-material/shader-material.mjs +34 -0
- package/esm2020/staging/angular-three-soba-staging.mjs +5 -0
- package/esm2020/staging/index.mjs +13 -0
- package/esm2020/staging/lib/accumulative-shadows/accumulative-shadows.mjs +276 -0
- package/esm2020/staging/lib/accumulative-shadows/progressive-light-map.mjs +109 -0
- package/esm2020/staging/lib/accumulative-shadows/randomized-lights.mjs +196 -0
- package/esm2020/staging/lib/bounds/bounds.mjs +283 -0
- package/esm2020/staging/lib/center/center.mjs +142 -0
- package/esm2020/staging/lib/contact-shadows/contact-shadows.mjs +227 -0
- package/esm2020/staging/lib/environment/assets.mjs +13 -0
- package/esm2020/staging/lib/environment/environment-cube.mjs +40 -0
- package/esm2020/staging/lib/environment/environment-ground.mjs +66 -0
- package/esm2020/staging/lib/environment/environment-inputs.mjs +86 -0
- package/esm2020/staging/lib/environment/environment-map.mjs +38 -0
- package/esm2020/staging/lib/environment/environment-portal.mjs +110 -0
- package/esm2020/staging/lib/environment/environment.mjs +163 -0
- package/esm2020/staging/lib/environment/utils.mjs +70 -0
- package/esm2020/staging/lib/float/float.mjs +76 -0
- package/esm2020/staging/lib/sky/sky.mjs +111 -0
- package/esm2020/staging/lib/sparkles/sparkles.mjs +209 -0
- package/esm2020/staging/lib/stage/stage.mjs +369 -0
- package/esm2020/staging/lib/stars/stars.mjs +171 -0
- package/fesm2015/angular-three-soba-loaders.mjs +187 -3
- package/fesm2015/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2015/angular-three-soba-misc.mjs +32 -0
- package/fesm2015/angular-three-soba-misc.mjs.map +1 -0
- package/fesm2015/angular-three-soba-performance.mjs +191 -0
- package/fesm2015/angular-three-soba-performance.mjs.map +1 -0
- package/fesm2015/angular-three-soba-shaders.mjs +38 -0
- package/fesm2015/angular-three-soba-shaders.mjs.map +1 -0
- package/fesm2015/angular-three-soba-staging.mjs +2647 -0
- package/fesm2015/angular-three-soba-staging.mjs.map +1 -0
- package/fesm2020/angular-three-soba-loaders.mjs +186 -3
- package/fesm2020/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2020/angular-three-soba-misc.mjs +32 -0
- package/fesm2020/angular-three-soba-misc.mjs.map +1 -0
- package/fesm2020/angular-three-soba-performance.mjs +191 -0
- package/fesm2020/angular-three-soba-performance.mjs.map +1 -0
- package/fesm2020/angular-three-soba-shaders.mjs +41 -0
- package/fesm2020/angular-three-soba-shaders.mjs.map +1 -0
- package/fesm2020/angular-three-soba-staging.mjs +2654 -0
- package/fesm2020/angular-three-soba-staging.mjs.map +1 -0
- package/loaders/index.d.ts +3 -0
- package/loaders/lib/loader/loader.d.ts +26 -0
- package/loaders/lib/progress/progress.d.ts +16 -0
- package/loaders/lib/texture-loader/texture-loader.d.ts +5 -0
- package/misc/README.md +3 -0
- package/misc/index.d.ts +1 -0
- package/misc/lib/bake-shadows/bake-shadows.d.ts +9 -0
- package/package.json +37 -2
- package/performance/README.md +3 -0
- package/performance/index.d.ts +4 -0
- package/performance/lib/adaptive/adaptive-dpr.d.ts +11 -0
- package/performance/lib/adaptive/adaptive-events.d.ts +10 -0
- package/performance/lib/detailed/detailed.d.ts +12 -0
- package/performance/lib/stats/stats.d.ts +14 -0
- package/plugin/package.json +1 -1
- package/plugin/src/generators/init/init.js +13 -17
- package/plugin/src/generators/init/init.js.map +1 -1
- package/shaders/README.md +3 -0
- package/shaders/index.d.ts +1 -0
- package/shaders/lib/shader-material/shader-material.d.ts +6 -0
- package/staging/README.md +3 -0
- package/staging/index.d.ts +12 -0
- package/staging/lib/accumulative-shadows/accumulative-shadows.d.ts +64 -0
- package/staging/lib/accumulative-shadows/progressive-light-map.d.ts +34 -0
- package/staging/lib/accumulative-shadows/randomized-lights.d.ts +42 -0
- package/staging/lib/bounds/bounds.d.ts +48 -0
- package/staging/lib/center/center.d.ts +40 -0
- package/staging/lib/contact-shadows/contact-shadows.d.ts +29 -0
- package/staging/lib/environment/assets.d.ts +13 -0
- package/staging/lib/environment/environment-cube.d.ts +11 -0
- package/staging/lib/environment/environment-ground.d.ts +9 -0
- package/staging/lib/environment/environment-inputs.d.ts +28 -0
- package/staging/lib/environment/environment-map.d.ts +10 -0
- package/staging/lib/environment/environment-portal.d.ts +15 -0
- package/staging/lib/environment/environment.d.ts +12 -0
- package/staging/lib/environment/utils.d.ts +8 -0
- package/staging/lib/float/float.d.ts +16 -0
- package/staging/lib/sky/sky.d.ts +21 -0
- package/staging/lib/sparkles/sparkles.d.ts +29 -0
- package/staging/lib/stage/stage.d.ts +87 -0
- package/staging/lib/stars/stars.d.ts +20 -0
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export * from './lib/gltf-loader/gltf-loader';
|
|
2
|
-
|
|
2
|
+
export * from './lib/loader/loader';
|
|
3
|
+
export * from './lib/progress/progress';
|
|
4
|
+
export * from './lib/texture-loader/texture-loader';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ2x0Zi1sb2FkZXIvZ2x0Zi1sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGVyL2xvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9ncmVzcy9wcm9ncmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZXh0dXJlLWxvYWRlci90ZXh0dXJlLWxvYWRlcic7XG4iXX0=
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
3
|
+
import { NgtPush, NgtRxStore, startWithUndefined } from 'angular-three';
|
|
4
|
+
import { combineLatest, map, of, switchMap, timer, withLatestFrom } from 'rxjs';
|
|
5
|
+
import { injectNgtsProgress } from '../progress/progress';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const defaultDataInterpolation = (p) => `Loading ${p.toFixed(2)}%`;
|
|
8
|
+
export class NgtsLoader extends NgtRxStore {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.progress = injectNgtsProgress();
|
|
12
|
+
this.vm$ = combineLatest([
|
|
13
|
+
this.select('shown'),
|
|
14
|
+
this.select('containerClass').pipe(startWithUndefined()),
|
|
15
|
+
this.select('innerClass').pipe(startWithUndefined()),
|
|
16
|
+
this.select('barClass').pipe(startWithUndefined()),
|
|
17
|
+
this.select('dataClass').pipe(startWithUndefined()),
|
|
18
|
+
this.progress.select('progress'),
|
|
19
|
+
this.progress.select('active'),
|
|
20
|
+
]).pipe(map(([shown, containerClass, innerClass, barClass, dataClass, progress, active]) => {
|
|
21
|
+
return { shown, containerClass, innerClass, barClass, dataClass, progress, active };
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
set containerClass(containerClass) {
|
|
25
|
+
this.set({ containerClass });
|
|
26
|
+
}
|
|
27
|
+
set innerClass(innerClass) {
|
|
28
|
+
this.set({ innerClass });
|
|
29
|
+
}
|
|
30
|
+
set barClass(barClass) {
|
|
31
|
+
this.set({ barClass });
|
|
32
|
+
}
|
|
33
|
+
set dataClass(dataClass) {
|
|
34
|
+
this.set({ dataClass });
|
|
35
|
+
}
|
|
36
|
+
set dataInterpolation(dataInterpolation) {
|
|
37
|
+
this.set({ dataInterpolation });
|
|
38
|
+
}
|
|
39
|
+
set initialState(initialState) {
|
|
40
|
+
this.set({ initialState });
|
|
41
|
+
}
|
|
42
|
+
initialize() {
|
|
43
|
+
super.initialize();
|
|
44
|
+
this.set({ dataInterpolation: defaultDataInterpolation, initialState: (active) => active });
|
|
45
|
+
}
|
|
46
|
+
ngOnInit() {
|
|
47
|
+
this.set({ shown: this.get('initialState')(this.progress.get('active')) });
|
|
48
|
+
this.connect('shown', this.progress.select('active').pipe(withLatestFrom(this.select('shown')), switchMap(([active, shown]) => {
|
|
49
|
+
if (shown !== active)
|
|
50
|
+
return timer(300).pipe(map(() => active));
|
|
51
|
+
return of(shown);
|
|
52
|
+
})));
|
|
53
|
+
let progressRef = 0;
|
|
54
|
+
let rafId;
|
|
55
|
+
this.effect(combineLatest([this.select('dataInterpolation'), this.progress.select('progress')]), ([dataInterpolation, progress]) => {
|
|
56
|
+
const updateProgress = () => {
|
|
57
|
+
if (!this.progressSpanRef?.nativeElement)
|
|
58
|
+
return;
|
|
59
|
+
progressRef += (progress - progressRef) / 2;
|
|
60
|
+
if (progressRef > 0.95 * progress || progress === 100)
|
|
61
|
+
progressRef = progress;
|
|
62
|
+
this.progressSpanRef.nativeElement.innerText = dataInterpolation(progressRef);
|
|
63
|
+
if (progressRef < progress) {
|
|
64
|
+
rafId = requestAnimationFrame(updateProgress);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
updateProgress();
|
|
68
|
+
return () => cancelAnimationFrame(rafId);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
NgtsLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsLoader, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
NgtsLoader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtsLoader, isStandalone: true, selector: "ngts-loader", inputs: { containerClass: "containerClass", innerClass: "innerClass", barClass: "barClass", dataClass: "dataClass", dataInterpolation: "dataInterpolation", initialState: "initialState" }, viewQueries: [{ propertyName: "progressSpanRef", first: true, predicate: ["progressSpanRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
74
|
+
<ng-container *ngIf="vm$ | ngtPush as vm">
|
|
75
|
+
<div
|
|
76
|
+
*ngIf="vm.shown"
|
|
77
|
+
class="ngts-loader-container"
|
|
78
|
+
[class]="vm.containerClass"
|
|
79
|
+
[style.--ngts-loader-container-opacity]="vm.active ? 1 : 0"
|
|
80
|
+
>
|
|
81
|
+
<div>
|
|
82
|
+
<div class="ngts-loader-inner" [class]="vm.innerClass">
|
|
83
|
+
<div
|
|
84
|
+
class="ngts-loader-bar"
|
|
85
|
+
[class]="vm.barClass"
|
|
86
|
+
[style.--ngts-loader-bar-scale]="vm.progress / 100"
|
|
87
|
+
></div>
|
|
88
|
+
<span #progressSpanRef class="ngts-loader-data" [class]="vm.dataClass"></span>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</ng-container>
|
|
93
|
+
`, isInline: true, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: NgtPush, name: "ngtPush" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsLoader, decorators: [{
|
|
95
|
+
type: Component,
|
|
96
|
+
args: [{ selector: 'ngts-loader', standalone: true, template: `
|
|
97
|
+
<ng-container *ngIf="vm$ | ngtPush as vm">
|
|
98
|
+
<div
|
|
99
|
+
*ngIf="vm.shown"
|
|
100
|
+
class="ngts-loader-container"
|
|
101
|
+
[class]="vm.containerClass"
|
|
102
|
+
[style.--ngts-loader-container-opacity]="vm.active ? 1 : 0"
|
|
103
|
+
>
|
|
104
|
+
<div>
|
|
105
|
+
<div class="ngts-loader-inner" [class]="vm.innerClass">
|
|
106
|
+
<div
|
|
107
|
+
class="ngts-loader-bar"
|
|
108
|
+
[class]="vm.barClass"
|
|
109
|
+
[style.--ngts-loader-bar-scale]="vm.progress / 100"
|
|
110
|
+
></div>
|
|
111
|
+
<span #progressSpanRef class="ngts-loader-data" [class]="vm.dataClass"></span>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</ng-container>
|
|
116
|
+
`, imports: [NgIf, AsyncPipe, NgtPush], changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:white;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"] }]
|
|
117
|
+
}], propDecorators: { containerClass: [{
|
|
118
|
+
type: Input
|
|
119
|
+
}], innerClass: [{
|
|
120
|
+
type: Input
|
|
121
|
+
}], barClass: [{
|
|
122
|
+
type: Input
|
|
123
|
+
}], dataClass: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], dataInterpolation: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], initialState: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], progressSpanRef: [{
|
|
130
|
+
type: ViewChild,
|
|
131
|
+
args: ['progressSpanRef']
|
|
132
|
+
}] } });
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbG9hZGVycy9zcmMvbGliL2xvYWRlci9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFMUQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUE4QjNFLE1BQU0sT0FBTyxVQUFXLFNBQVEsVUFBVTtJQTVCMUM7O1FBNkJxQixhQUFRLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQUV4QyxRQUFHLEdBQUcsYUFBYSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQ2pDLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FDTCxDQUFDO0tBb0VMO0lBbEVHLElBQWEsY0FBYyxDQUFDLGNBQXNCO1FBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFhLFVBQVUsQ0FBQyxVQUFrQjtRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsUUFBZ0I7UUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWEsU0FBUyxDQUFDLFNBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFhLGlCQUFpQixDQUFDLGlCQUE0QztRQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFhLFlBQVksQ0FBQyxZQUF5QztRQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBSVEsVUFBVTtRQUNmLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxPQUFPLENBQ1IsT0FBTyxFQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDL0IsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDcEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEtBQUssS0FBSyxNQUFNO2dCQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDTCxDQUNKLENBQUM7UUFFRixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxLQUErQyxDQUFDO1FBRXBELElBQUksQ0FBQyxNQUFNLENBQ1AsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFDbkYsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFhO29CQUFFLE9BQU87Z0JBQ2pELFdBQVcsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLElBQUksV0FBVyxHQUFHLElBQUksR0FBRyxRQUFRLElBQUksUUFBUSxLQUFLLEdBQUc7b0JBQUUsV0FBVyxHQUFHLFFBQVEsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLFdBQVcsR0FBRyxRQUFRLEVBQUU7b0JBQ3hCLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDakQ7WUFDTCxDQUFDLENBQUM7WUFFRixjQUFjLEVBQUUsQ0FBQztZQUVqQixPQUFPLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7dUdBbEZRLFVBQVU7MkZBQVYsVUFBVSw4WUF6QlQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBb0JULDI4QkFFUyxJQUFJLHdGQUFhLE9BQU87MkZBR3pCLFVBQVU7a0JBNUJ0QixTQUFTOytCQUNJLGFBQWEsY0FDWCxJQUFJLFlBQ047Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBb0JULFdBRVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxtQkFDbEIsdUJBQXVCLENBQUMsTUFBTTs4QkFtQmxDLGNBQWM7c0JBQTFCLEtBQUs7Z0JBSU8sVUFBVTtzQkFBdEIsS0FBSztnQkFJTyxRQUFRO3NCQUFwQixLQUFLO2dCQUlPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8saUJBQWlCO3NCQUE3QixLQUFLO2dCQUlPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBSXdCLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0UHVzaCwgTmd0UnhTdG9yZSwgc3RhcnRXaXRoVW5kZWZpbmVkIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIG9mLCBzd2l0Y2hNYXAsIHRpbWVyLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c1Byb2dyZXNzIH0gZnJvbSAnLi4vcHJvZ3Jlc3MvcHJvZ3Jlc3MnO1xuXG5jb25zdCBkZWZhdWx0RGF0YUludGVycG9sYXRpb24gPSAocDogbnVtYmVyKSA9PiBgTG9hZGluZyAke3AudG9GaXhlZCgyKX0lYDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWxvYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidm0kIHwgbmd0UHVzaCBhcyB2bVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidm0uc2hvd25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibmd0cy1sb2FkZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0uY29udGFpbmVyQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS4tLW5ndHMtbG9hZGVyLWNvbnRhaW5lci1vcGFjaXR5XT1cInZtLmFjdGl2ZSA/IDEgOiAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmd0cy1sb2FkZXItaW5uZXJcIiBbY2xhc3NdPVwidm0uaW5uZXJDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmd0cy1sb2FkZXItYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0uYmFyQ2xhc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLW5ndHMtbG9hZGVyLWJhci1zY2FsZV09XCJ2bS5wcm9ncmVzcyAvIDEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAjcHJvZ3Jlc3NTcGFuUmVmIGNsYXNzPVwibmd0cy1sb2FkZXItZGF0YVwiIFtjbGFzc109XCJ2bS5kYXRhQ2xhc3NcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJ2xvYWRlci5jc3MnXSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgQXN5bmNQaXBlLCBOZ3RQdXNoXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0xvYWRlciBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZ3Jlc3MgPSBpbmplY3ROZ3RzUHJvZ3Jlc3MoKTtcblxuICAgIHJlYWRvbmx5IHZtJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnNlbGVjdCgnc2hvd24nKSxcbiAgICAgICAgdGhpcy5zZWxlY3QoJ2NvbnRhaW5lckNsYXNzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdpbm5lckNsYXNzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgIHRoaXMuc2VsZWN0KCdiYXJDbGFzcycpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICB0aGlzLnNlbGVjdCgnZGF0YUNsYXNzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgIHRoaXMucHJvZ3Jlc3Muc2VsZWN0KCdwcm9ncmVzcycpLFxuICAgICAgICB0aGlzLnByb2dyZXNzLnNlbGVjdCgnYWN0aXZlJyksXG4gICAgXSkucGlwZShcbiAgICAgICAgbWFwKChbc2hvd24sIGNvbnRhaW5lckNsYXNzLCBpbm5lckNsYXNzLCBiYXJDbGFzcywgZGF0YUNsYXNzLCBwcm9ncmVzcywgYWN0aXZlXSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgc2hvd24sIGNvbnRhaW5lckNsYXNzLCBpbm5lckNsYXNzLCBiYXJDbGFzcywgZGF0YUNsYXNzLCBwcm9ncmVzcywgYWN0aXZlIH07XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIEBJbnB1dCgpIHNldCBjb250YWluZXJDbGFzcyhjb250YWluZXJDbGFzczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgY29udGFpbmVyQ2xhc3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGlubmVyQ2xhc3MoaW5uZXJDbGFzczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgaW5uZXJDbGFzcyB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgYmFyQ2xhc3MoYmFyQ2xhc3M6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IGJhckNsYXNzIH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBkYXRhQ2xhc3MoZGF0YUNsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXQoeyBkYXRhQ2xhc3MgfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGRhdGFJbnRlcnBvbGF0aW9uKGRhdGFJbnRlcnBvbGF0aW9uOiAodmFsdWU6IG51bWJlcikgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgZGF0YUludGVycG9sYXRpb24gfSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGluaXRpYWxTdGF0ZShpbml0aWFsU3RhdGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldCh7IGluaXRpYWxTdGF0ZSB9KTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdwcm9ncmVzc1NwYW5SZWYnKSBwcm9ncmVzc1NwYW5SZWY/OiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD47XG5cbiAgICBvdmVycmlkZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMuc2V0KHsgZGF0YUludGVycG9sYXRpb246IGRlZmF1bHREYXRhSW50ZXJwb2xhdGlvbiwgaW5pdGlhbFN0YXRlOiAoYWN0aXZlOiBib29sZWFuKSA9PiBhY3RpdmUgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hvd246IHRoaXMuZ2V0KCdpbml0aWFsU3RhdGUnKSh0aGlzLnByb2dyZXNzLmdldCgnYWN0aXZlJykpIH0pO1xuICAgICAgICB0aGlzLmNvbm5lY3QoXG4gICAgICAgICAgICAnc2hvd24nLFxuICAgICAgICAgICAgdGhpcy5wcm9ncmVzcy5zZWxlY3QoJ2FjdGl2ZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zZWxlY3QoJ3Nob3duJykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoW2FjdGl2ZSwgc2hvd25dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93biAhPT0gYWN0aXZlKSByZXR1cm4gdGltZXIoMzAwKS5waXBlKG1hcCgoKSA9PiBhY3RpdmUpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHNob3duKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBwcm9ncmVzc1JlZiA9IDA7XG4gICAgICAgIGxldCByYWZJZDogUmV0dXJuVHlwZTx0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPjtcblxuICAgICAgICB0aGlzLmVmZmVjdChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VsZWN0KCdkYXRhSW50ZXJwb2xhdGlvbicpLCB0aGlzLnByb2dyZXNzLnNlbGVjdCgncHJvZ3Jlc3MnKV0pLFxuICAgICAgICAgICAgKFtkYXRhSW50ZXJwb2xhdGlvbiwgcHJvZ3Jlc3NdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlUHJvZ3Jlc3MgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9ncmVzc1NwYW5SZWY/Lm5hdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3NSZWYgKz0gKHByb2dyZXNzIC0gcHJvZ3Jlc3NSZWYpIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2dyZXNzUmVmID4gMC45NSAqIHByb2dyZXNzIHx8IHByb2dyZXNzID09PSAxMDApIHByb2dyZXNzUmVmID0gcHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NTcGFuUmVmLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gZGF0YUludGVycG9sYXRpb24ocHJvZ3Jlc3NSZWYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvZ3Jlc3NSZWYgPCBwcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlUHJvZ3Jlc3MpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHVwZGF0ZVByb2dyZXNzKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { injectNgtDestroy, NgtRxStore } from 'angular-three';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
export function injectNgtsProgress() {
|
|
4
|
+
const progress = new NgtRxStore();
|
|
5
|
+
progress.set({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });
|
|
6
|
+
const { cdr } = injectNgtDestroy(() => progress.ngOnDestroy());
|
|
7
|
+
let saveLastTotalLoaded = 0;
|
|
8
|
+
THREE.DefaultLoadingManager.onStart = (item, loaded, total) => {
|
|
9
|
+
progress.set({
|
|
10
|
+
active: true,
|
|
11
|
+
item,
|
|
12
|
+
loaded,
|
|
13
|
+
total,
|
|
14
|
+
progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,
|
|
15
|
+
});
|
|
16
|
+
cdr.detectChanges();
|
|
17
|
+
};
|
|
18
|
+
THREE.DefaultLoadingManager.onLoad = () => {
|
|
19
|
+
progress.set({ active: false });
|
|
20
|
+
cdr.detectChanges();
|
|
21
|
+
};
|
|
22
|
+
THREE.DefaultLoadingManager.onError = (url) => {
|
|
23
|
+
progress.set({ errors: [...progress.get('errors'), url] });
|
|
24
|
+
cdr.detectChanges();
|
|
25
|
+
};
|
|
26
|
+
THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
|
|
27
|
+
if (loaded === total)
|
|
28
|
+
saveLastTotalLoaded = total;
|
|
29
|
+
progress.set({
|
|
30
|
+
item,
|
|
31
|
+
loaded,
|
|
32
|
+
total,
|
|
33
|
+
progress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,
|
|
34
|
+
});
|
|
35
|
+
cdr.detectChanges();
|
|
36
|
+
};
|
|
37
|
+
return progress;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9saWIvcHJvZ3Jlc3MvcHJvZ3Jlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixNQUFNLFVBQVUsa0JBQWtCO0lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUksVUFBVSxFQU8zQixDQUFDO0lBQ0wsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDL0QsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFFNUIsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDMUQsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNULE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSTtZQUNKLE1BQU07WUFDTixLQUFLO1lBQ0wsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsR0FBRztTQUNuRixDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMscUJBQXFCLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDMUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzdELElBQUksTUFBTSxLQUFLLEtBQUs7WUFBRSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDbEQsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUNULElBQUk7WUFDSixNQUFNO1lBQ04sS0FBSztZQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHO1NBQzFGLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFFRixPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0Tmd0RGVzdHJveSwgTmd0UnhTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Tmd0c1Byb2dyZXNzKCkge1xuICAgIGNvbnN0IHByb2dyZXNzID0gbmV3IE5ndFJ4U3RvcmU8e1xuICAgICAgICBlcnJvcnM6IHN0cmluZ1tdO1xuICAgICAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgICAgIHByb2dyZXNzOiBudW1iZXI7XG4gICAgICAgIGl0ZW06IHN0cmluZztcbiAgICAgICAgbG9hZGVkOiBudW1iZXI7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgfT4oKTtcbiAgICBwcm9ncmVzcy5zZXQoeyBlcnJvcnM6IFtdLCBhY3RpdmU6IGZhbHNlLCBwcm9ncmVzczogMCwgaXRlbTogJycsIGxvYWRlZDogMCwgdG90YWw6IDAgfSk7XG4gICAgY29uc3QgeyBjZHIgfSA9IGluamVjdE5ndERlc3Ryb3koKCkgPT4gcHJvZ3Jlc3MubmdPbkRlc3Ryb3koKSk7XG4gICAgbGV0IHNhdmVMYXN0VG90YWxMb2FkZWQgPSAwO1xuXG4gICAgVEhSRUUuRGVmYXVsdExvYWRpbmdNYW5hZ2VyLm9uU3RhcnQgPSAoaXRlbSwgbG9hZGVkLCB0b3RhbCkgPT4ge1xuICAgICAgICBwcm9ncmVzcy5zZXQoe1xuICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIGxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6ICgobG9hZGVkIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkgLyAodG90YWwgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSkgKiAxMDAsXG4gICAgICAgIH0pO1xuICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICBUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXIub25Mb2FkID0gKCkgPT4ge1xuICAgICAgICBwcm9ncmVzcy5zZXQoeyBhY3RpdmU6IGZhbHNlIH0pO1xuICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICBUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXIub25FcnJvciA9ICh1cmwpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3Muc2V0KHsgZXJyb3JzOiBbLi4ucHJvZ3Jlc3MuZ2V0KCdlcnJvcnMnKSwgdXJsXSB9KTtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgVEhSRUUuRGVmYXVsdExvYWRpbmdNYW5hZ2VyLm9uUHJvZ3Jlc3MgPSAoaXRlbSwgbG9hZGVkLCB0b3RhbCkgPT4ge1xuICAgICAgICBpZiAobG9hZGVkID09PSB0b3RhbCkgc2F2ZUxhc3RUb3RhbExvYWRlZCA9IHRvdGFsO1xuICAgICAgICBwcm9ncmVzcy5zZXQoe1xuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIGxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsLFxuICAgICAgICAgICAgcHJvZ3Jlc3M6ICgobG9hZGVkIC0gc2F2ZUxhc3RUb3RhbExvYWRlZCkgLyAodG90YWwgLSBzYXZlTGFzdFRvdGFsTG9hZGVkKSkgKiAxMDAgfHwgMTAwLFxuICAgICAgICB9KTtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb2dyZXNzO1xufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { injectNgtLoader, NgtStore } from 'angular-three';
|
|
3
|
+
import { tap } from 'rxjs';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
export const IsObject = (url) => url === Object(url) && !Array.isArray(url) && typeof url !== 'function';
|
|
6
|
+
export function injectNgtsTextureLoader(input, onLoad) {
|
|
7
|
+
const store = inject(NgtStore);
|
|
8
|
+
return injectNgtLoader(() => THREE.TextureLoader, input).pipe(tap((textures) => {
|
|
9
|
+
const array = Array.isArray(textures)
|
|
10
|
+
? textures
|
|
11
|
+
: textures instanceof THREE.Texture
|
|
12
|
+
? [textures]
|
|
13
|
+
: Object.values(textures);
|
|
14
|
+
if (onLoad)
|
|
15
|
+
onLoad(array);
|
|
16
|
+
array.forEach(store.get('gl').initTexture);
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dHVyZS1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9sb2FkZXJzL3NyYy9saWIvdGV4dHVyZS1sb2FkZXIvdGV4dHVyZS1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFvQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFRLEVBQWlDLEVBQUUsQ0FDaEUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDO0FBRTVFLE1BQU0sVUFBVSx1QkFBdUIsQ0FDbkMsS0FBa0MsRUFDbEMsTUFBMkQ7SUFFM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE9BQU8sZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN6RCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNiLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxRQUFRO1lBQ1YsQ0FBQyxDQUFDLFFBQVEsWUFBWSxLQUFLLENBQUMsT0FBTztnQkFDbkMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUNaLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLElBQUksTUFBTTtZQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQ2tELENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0TG9hZGVyLCBOZ3RMb2FkZXJSZXN1bHRzLCBOZ3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBjb25zdCBJc09iamVjdCA9ICh1cmw6IGFueSk6IHVybCBpcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0+XG4gICAgdXJsID09PSBPYmplY3QodXJsKSAmJiAhQXJyYXkuaXNBcnJheSh1cmwpICYmIHR5cGVvZiB1cmwgIT09ICdmdW5jdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ3RzVGV4dHVyZUxvYWRlcjxUSW5wdXQgZXh0ZW5kcyBzdHJpbmdbXSB8IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgIGlucHV0OiBUSW5wdXQgfCBPYnNlcnZhYmxlPFRJbnB1dD4sXG4gICAgb25Mb2FkPzogKHRleHR1cmU6IFRIUkVFLlRleHR1cmUgfCBUSFJFRS5UZXh0dXJlW10pID0+IHZvaWRcbik6IE9ic2VydmFibGU8Tmd0TG9hZGVyUmVzdWx0czxUSW5wdXQsIFRIUkVFLlRleHR1cmU+PiB7XG4gICAgY29uc3Qgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICAgIHJldHVybiBpbmplY3ROZ3RMb2FkZXIoKCkgPT4gVEhSRUUuVGV4dHVyZUxvYWRlciwgaW5wdXQpLnBpcGUoXG4gICAgICAgIHRhcCgodGV4dHVyZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuaXNBcnJheSh0ZXh0dXJlcylcbiAgICAgICAgICAgICAgICA/IHRleHR1cmVzXG4gICAgICAgICAgICAgICAgOiB0ZXh0dXJlcyBpbnN0YW5jZW9mIFRIUkVFLlRleHR1cmVcbiAgICAgICAgICAgICAgICA/IFt0ZXh0dXJlc11cbiAgICAgICAgICAgICAgICA6IE9iamVjdC52YWx1ZXModGV4dHVyZXMpO1xuICAgICAgICAgICAgaWYgKG9uTG9hZCkgb25Mb2FkKGFycmF5KTtcbiAgICAgICAgICAgIGFycmF5LmZvckVhY2goc3RvcmUuZ2V0KCdnbCcpLmluaXRUZXh0dXJlKTtcbiAgICAgICAgfSlcbiAgICApIGFzIE9ic2VydmFibGU8Tmd0TG9hZGVyUmVzdWx0czxUSW5wdXQsIFRIUkVFLlRleHR1cmU+Pjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLW1pc2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtbWlzYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib/bake-shadows/bake-shadows';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYmFrZS1zaGFkb3dzL2Jha2Utc2hhZG93cyc7XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Directive, inject } from '@angular/core';
|
|
2
|
+
import { NgtRxStore, NgtStore } from 'angular-three';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class NgtsBakeShadows extends NgtRxStore {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.store = inject(NgtStore);
|
|
8
|
+
}
|
|
9
|
+
ngOnInit() {
|
|
10
|
+
this.effect(this.store.select('gl'), (gl) => {
|
|
11
|
+
gl.shadowMap.autoUpdate = false;
|
|
12
|
+
gl.shadowMap.needsUpdate = true;
|
|
13
|
+
return () => {
|
|
14
|
+
gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
NgtsBakeShadows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsBakeShadows, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
20
|
+
NgtsBakeShadows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtsBakeShadows, isStandalone: true, selector: "ngts-bake-shadows", usesInheritance: true, ngImport: i0 });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsBakeShadows, decorators: [{
|
|
22
|
+
type: Directive,
|
|
23
|
+
args: [{ selector: 'ngts-bake-shadows', standalone: true }]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFrZS1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvbWlzYy9zcmMvbGliL2Jha2Utc2hhZG93cy9iYWtlLXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3JELE1BQU0sT0FBTyxlQUFnQixTQUFRLFVBQVU7SUFEL0M7O1FBRXFCLFVBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FZN0M7SUFWRyxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3hDLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNoQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFFaEMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQzlELENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBWlEsZUFBZTtnR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtYmFrZS1zaGFkb3dzJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNCYWtlU2hhZG93cyBleHRlbmRzIE5ndFJ4U3RvcmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuc3RvcmUuc2VsZWN0KCdnbCcpLCAoZ2wpID0+IHtcbiAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZmFsc2U7XG4gICAgICAgICAgICBnbC5zaGFkb3dNYXAubmVlZHNVcGRhdGUgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGdsLnNoYWRvd01hcC5hdXRvVXBkYXRlID0gZ2wuc2hhZG93TWFwLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLXBlcmZvcm1hbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2FuZ3VsYXItdGhyZWUtc29iYS1wZXJmb3JtYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './lib/adaptive/adaptive-dpr';
|
|
2
|
+
export * from './lib/adaptive/adaptive-events';
|
|
3
|
+
export * from './lib/detailed/detailed';
|
|
4
|
+
export * from './lib/stats/stats';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FkYXB0aXZlL2FkYXB0aXZlLWRwcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV0YWlsZWQvZGV0YWlsZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RhdHMvc3RhdHMnO1xuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Directive, inject, Input } from '@angular/core';
|
|
2
|
+
import { RxActionFactory } from '@rx-angular/state/actions';
|
|
3
|
+
import { NgtRxStore, NgtStore } from 'angular-three';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NgtsAdaptiveDpr extends NgtRxStore {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.store = inject(NgtStore);
|
|
9
|
+
this.actions = inject((RxActionFactory)).create();
|
|
10
|
+
this.pixelated = false;
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
this.effect(this.actions.restorePixel$, () => {
|
|
14
|
+
const domElement = this.store.get('gl', 'domElement');
|
|
15
|
+
return () => {
|
|
16
|
+
const active = this.store.get('internal', 'active');
|
|
17
|
+
const setDpr = this.store.get('setDpr');
|
|
18
|
+
const initialDpr = this.store.get('viewport', 'initialDpr');
|
|
19
|
+
if (active)
|
|
20
|
+
setDpr(initialDpr);
|
|
21
|
+
if (this.pixelated && domElement)
|
|
22
|
+
domElement.style.imageRendering = 'auto';
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
this.actions.restorePixel();
|
|
26
|
+
this.hold(this.store.select('performance', 'current'), (performanceCurrent) => {
|
|
27
|
+
const { gl, viewport, setDpr } = this.store.get();
|
|
28
|
+
setDpr(performanceCurrent * viewport.initialDpr);
|
|
29
|
+
if (this.pixelated && gl.domElement)
|
|
30
|
+
gl.domElement.style.imageRendering = performanceCurrent === 1 ? 'auto' : 'pixelated';
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
NgtsAdaptiveDpr.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsAdaptiveDpr, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
35
|
+
NgtsAdaptiveDpr.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { pixelated: "pixelated" }, providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
|
|
37
|
+
type: Directive,
|
|
38
|
+
args: [{
|
|
39
|
+
selector: 'ngts-adaptive-dpr',
|
|
40
|
+
standalone: true,
|
|
41
|
+
providers: [RxActionFactory],
|
|
42
|
+
}]
|
|
43
|
+
}], propDecorators: { pixelated: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZHByLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1kcHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBVTtJQUwvQzs7UUFNcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBdUMsQ0FBQSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFM0UsY0FBUyxHQUFHLEtBQUssQ0FBQztLQXVCOUI7SUFyQkcsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN0RCxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQzVELElBQUksTUFBTTtvQkFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVO29CQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztZQUMvRSxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQzFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbEQsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLFVBQVU7Z0JBQy9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NEdBMUJRLGVBQWU7Z0dBQWYsZUFBZSxvR0FGYixDQUFDLGVBQWUsQ0FBQzsyRkFFbkIsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMvQjs4QkFLWSxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJ4QWN0aW9uRmFjdG9yeSB9IGZyb20gJ0ByeC1hbmd1bGFyL3N0YXRlL2FjdGlvbnMnO1xuaW1wb3J0IHsgTmd0UnhTdG9yZSwgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLWFkYXB0aXZlLWRwcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtSeEFjdGlvbkZhY3RvcnldLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQWRhcHRpdmVEcHIgZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KE5ndFN0b3JlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnMgPSBpbmplY3QoUnhBY3Rpb25GYWN0b3J5PHsgcmVzdG9yZVBpeGVsOiB2b2lkIH0+KS5jcmVhdGUoKTtcblxuICAgIEBJbnB1dCgpIHBpeGVsYXRlZCA9IGZhbHNlO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWZmZWN0KHRoaXMuYWN0aW9ucy5yZXN0b3JlUGl4ZWwkLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5zdG9yZS5nZXQoJ2dsJywgJ2RvbUVsZW1lbnQnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5zdG9yZS5nZXQoJ2ludGVybmFsJywgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNldERwciA9IHRoaXMuc3RvcmUuZ2V0KCdzZXREcHInKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbml0aWFsRHByID0gdGhpcy5zdG9yZS5nZXQoJ3ZpZXdwb3J0JywgJ2luaXRpYWxEcHInKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSBzZXREcHIoaW5pdGlhbERwcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGl4ZWxhdGVkICYmIGRvbUVsZW1lbnQpIGRvbUVsZW1lbnQuc3R5bGUuaW1hZ2VSZW5kZXJpbmcgPSAnYXV0byc7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFjdGlvbnMucmVzdG9yZVBpeGVsKCk7XG5cbiAgICAgICAgdGhpcy5ob2xkKHRoaXMuc3RvcmUuc2VsZWN0KCdwZXJmb3JtYW5jZScsICdjdXJyZW50JyksIChwZXJmb3JtYW5jZUN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZ2wsIHZpZXdwb3J0LCBzZXREcHIgfSA9IHRoaXMuc3RvcmUuZ2V0KCk7XG4gICAgICAgICAgICBzZXREcHIocGVyZm9ybWFuY2VDdXJyZW50ICogdmlld3BvcnQuaW5pdGlhbERwcik7XG4gICAgICAgICAgICBpZiAodGhpcy5waXhlbGF0ZWQgJiYgZ2wuZG9tRWxlbWVudClcbiAgICAgICAgICAgICAgICBnbC5kb21FbGVtZW50LnN0eWxlLmltYWdlUmVuZGVyaW5nID0gcGVyZm9ybWFuY2VDdXJyZW50ID09PSAxID8gJ2F1dG8nIDogJ3BpeGVsYXRlZCc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Directive, inject } from '@angular/core';
|
|
2
|
+
import { RxActionFactory } from '@rx-angular/state/actions';
|
|
3
|
+
import { NgtRxStore, NgtStore } from 'angular-three';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class NgtsAdaptiveEvents extends NgtRxStore {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.store = inject(NgtStore);
|
|
9
|
+
this.actions = inject((RxActionFactory)).create();
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.effect(this.actions.setEvents$, () => {
|
|
13
|
+
const enabled = this.store.get('events', 'enabled');
|
|
14
|
+
return () => {
|
|
15
|
+
const setEvents = this.store.get('setEvents');
|
|
16
|
+
setEvents({ enabled });
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
this.actions.setEvents();
|
|
20
|
+
this.hold(this.store.select('performance', 'current'), (current) => {
|
|
21
|
+
const setEvents = this.store.get('setEvents');
|
|
22
|
+
setEvents({ enabled: current === 1 });
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
NgtsAdaptiveEvents.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsAdaptiveEvents, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
+
NgtsAdaptiveEvents.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", providers: [RxActionFactory], usesInheritance: true, ngImport: i0 });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
|
|
29
|
+
type: Directive,
|
|
30
|
+
args: [{
|
|
31
|
+
selector: 'ngts-adaptive-events',
|
|
32
|
+
standalone: true,
|
|
33
|
+
providers: [RxActionFactory],
|
|
34
|
+
}]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRpdmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvcGVyZm9ybWFuY2Uvc3JjL2xpYi9hZGFwdGl2ZS9hZGFwdGl2ZS1ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9yRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsVUFBVTtJQUxsRDs7UUFNcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QixZQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZUFBb0MsQ0FBQSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7S0FpQnBGO0lBZkcsUUFBUTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRCxPQUFPLEdBQUcsRUFBRTtnQkFDUixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUMvRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsrR0FsQlEsa0JBQWtCO21HQUFsQixrQkFBa0IsbUVBRmhCLENBQUMsZUFBZSxDQUFDOzJGQUVuQixrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSeEFjdGlvbkZhY3RvcnkgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZS9hY3Rpb25zJztcbmltcG9ydCB7IE5ndFJ4U3RvcmUsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbmd0cy1hZGFwdGl2ZS1ldmVudHMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbUnhBY3Rpb25GYWN0b3J5XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0FkYXB0aXZlRXZlbnRzIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChOZ3RTdG9yZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zID0gaW5qZWN0KFJ4QWN0aW9uRmFjdG9yeTx7IHNldEV2ZW50czogdm9pZCB9PikuY3JlYXRlKCk7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZmZlY3QodGhpcy5hY3Rpb25zLnNldEV2ZW50cyQsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVuYWJsZWQgPSB0aGlzLnN0b3JlLmdldCgnZXZlbnRzJywgJ2VuYWJsZWQnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5nZXQoJ3NldEV2ZW50cycpO1xuICAgICAgICAgICAgICAgIHNldEV2ZW50cyh7IGVuYWJsZWQgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLnNldEV2ZW50cygpO1xuXG4gICAgICAgIHRoaXMuaG9sZCh0aGlzLnN0b3JlLnNlbGVjdCgncGVyZm9ybWFuY2UnLCAnY3VycmVudCcpLCAoY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5nZXQoJ3NldEV2ZW50cycpO1xuICAgICAgICAgICAgc2V0RXZlbnRzKHsgZW5hYmxlZDogY3VycmVudCA9PT0gMSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
+
import { extend, injectNgtRef, NgtRxStore } from 'angular-three';
|
|
3
|
+
import { combineLatest } from 'rxjs';
|
|
4
|
+
import { LOD } from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
extend({ LOD });
|
|
7
|
+
export class NgtsDetailed extends NgtRxStore {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.lodRef = injectNgtRef();
|
|
11
|
+
}
|
|
12
|
+
set distances(distances) {
|
|
13
|
+
this.set({ distances });
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.updateLodChildren();
|
|
17
|
+
}
|
|
18
|
+
updateLodChildren() {
|
|
19
|
+
this.hold(combineLatest([this.lodRef.children$(), this.select('distances')]), ([children, distances]) => {
|
|
20
|
+
this.lodRef.nativeElement.levels.length = 0;
|
|
21
|
+
children.forEach((child, index) => {
|
|
22
|
+
this.lodRef.nativeElement.addLevel(child, distances[index]);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
NgtsDetailed.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsDetailed, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
NgtsDetailed.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.2", type: NgtsDetailed, isStandalone: true, selector: "ngts-detailed[distances]", inputs: { lodRef: "lodRef", distances: "distances" }, usesInheritance: true, ngImport: i0, template: `
|
|
29
|
+
<ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="$any($event).object.update($any($event).state.camera)">
|
|
30
|
+
<ng-content />
|
|
31
|
+
</ngt-lOD>
|
|
32
|
+
`, isInline: true });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsDetailed, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{
|
|
36
|
+
selector: 'ngts-detailed[distances]',
|
|
37
|
+
standalone: true,
|
|
38
|
+
template: `
|
|
39
|
+
<ngt-lOD [ref]="lodRef" ngtCompound (beforeRender)="$any($event).object.update($any($event).state.camera)">
|
|
40
|
+
<ng-content />
|
|
41
|
+
</ngt-lOD>
|
|
42
|
+
`,
|
|
43
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
44
|
+
}]
|
|
45
|
+
}], propDecorators: { lodRef: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], distances: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL2RldGFpbGVkL2RldGFpbGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRTVCLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFZaEIsTUFBTSxPQUFPLFlBQWEsU0FBUSxVQUFVO0lBVjVDOztRQVdhLFdBQU0sR0FBRyxZQUFZLEVBQU8sQ0FBQztLQWtCekM7SUFoQkcsSUFBYSxTQUFTLENBQUMsU0FBbUI7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDcEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDNUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7eUdBbEJRLFlBQVk7NkZBQVosWUFBWSxpS0FQWDs7OztLQUlUOzJGQUdRLFlBQVk7a0JBVnhCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7OztLQUlUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQzs4QkFFWSxNQUFNO3NCQUFkLEtBQUs7Z0JBRU8sU0FBUztzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3ROZ3RSZWYsIE5ndFJ4U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExPRCB9IGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKHsgTE9EIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndHMtZGV0YWlsZWRbZGlzdGFuY2VzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmd0LWxPRCBbcmVmXT1cImxvZFJlZlwiIG5ndENvbXBvdW5kIChiZWZvcmVSZW5kZXIpPVwiJGFueSgkZXZlbnQpLm9iamVjdC51cGRhdGUoJGFueSgkZXZlbnQpLnN0YXRlLmNhbWVyYSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgIDwvbmd0LWxPRD5cbiAgICBgLFxuICAgIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0RldGFpbGVkIGV4dGVuZHMgTmd0UnhTdG9yZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgbG9kUmVmID0gaW5qZWN0Tmd0UmVmPExPRD4oKTtcblxuICAgIEBJbnB1dCgpIHNldCBkaXN0YW5jZXMoZGlzdGFuY2VzOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLnNldCh7IGRpc3RhbmNlcyB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2RDaGlsZHJlbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9kQ2hpbGRyZW4oKSB7XG4gICAgICAgIHRoaXMuaG9sZChjb21iaW5lTGF0ZXN0KFt0aGlzLmxvZFJlZi5jaGlsZHJlbiQoKSwgdGhpcy5zZWxlY3QoJ2Rpc3RhbmNlcycpXSksIChbY2hpbGRyZW4sIGRpc3RhbmNlc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9kUmVmLm5hdGl2ZUVsZW1lbnQubGV2ZWxzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZFJlZi5uYXRpdmVFbGVtZW50LmFkZExldmVsKGNoaWxkLCBkaXN0YW5jZXNbaW5kZXhdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Directive, inject, Input } from '@angular/core';
|
|
3
|
+
import { addAfterEffect, addEffect, NgtRxStore, startWithUndefined } from 'angular-three';
|
|
4
|
+
import { combineLatest } from 'rxjs';
|
|
5
|
+
import * as Stats from 'stats.js';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class NgtsStats extends NgtRxStore {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.document = inject(DOCUMENT);
|
|
11
|
+
this.stats = new Stats();
|
|
12
|
+
}
|
|
13
|
+
set showPanel(showPanel) {
|
|
14
|
+
this.set({ showPanel: showPanel === undefined ? this.get('showPanel') : showPanel });
|
|
15
|
+
}
|
|
16
|
+
set parent(parent) {
|
|
17
|
+
this.set({ parent });
|
|
18
|
+
}
|
|
19
|
+
set classes(classes) {
|
|
20
|
+
this.set({ classes });
|
|
21
|
+
}
|
|
22
|
+
initialize() {
|
|
23
|
+
super.initialize();
|
|
24
|
+
this.set({ showPanel: 0 });
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
this.effect(combineLatest([
|
|
28
|
+
this.select('showPanel'),
|
|
29
|
+
this.select('parent').pipe(startWithUndefined()),
|
|
30
|
+
this.select('classes').pipe(startWithUndefined()),
|
|
31
|
+
]), ([showPanel, parent, classes]) => {
|
|
32
|
+
const node = parent && parent.nativeElement ? parent.nativeElement : this.document.body;
|
|
33
|
+
this.stats.showPanel(showPanel);
|
|
34
|
+
node.appendChild(this.stats.dom);
|
|
35
|
+
if (classes) {
|
|
36
|
+
this.stats.dom.classList.add(...classes.split(' ').filter((cls) => cls));
|
|
37
|
+
}
|
|
38
|
+
const begin = addEffect(() => this.stats.begin());
|
|
39
|
+
const end = addAfterEffect(() => this.stats.end());
|
|
40
|
+
return () => {
|
|
41
|
+
node.removeChild(this.stats.dom);
|
|
42
|
+
begin();
|
|
43
|
+
end();
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
NgtsStats.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsStats, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
49
|
+
NgtsStats.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.2", type: NgtsStats, isStandalone: true, selector: "ngts-stats", inputs: { showPanel: "showPanel", parent: "parent", classes: "classes" }, usesInheritance: true, ngImport: i0 });
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.2", ngImport: i0, type: NgtsStats, decorators: [{
|
|
51
|
+
type: Directive,
|
|
52
|
+
args: [{
|
|
53
|
+
selector: 'ngts-stats',
|
|
54
|
+
standalone: true,
|
|
55
|
+
}]
|
|
56
|
+
}], propDecorators: { showPanel: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], parent: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], classes: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9wZXJmb3JtYW5jZS9zcmMvbGliL3N0YXRzL3N0YXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQWtCLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sS0FBSyxLQUFLLE1BQU0sVUFBVSxDQUFDOztBQU1sQyxNQUFNLE9BQU8sU0FBVSxTQUFRLFVBQVU7SUFKekM7O1FBS3FCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7S0EyQ3hDO0lBekNHLElBQWEsU0FBUyxDQUFDLFNBQWlCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsTUFBbUM7UUFDbkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVRLFVBQVU7UUFDZixLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FDUCxhQUFhLENBQUM7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDcEQsQ0FBQyxFQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDcEY7WUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sR0FBRyxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsQ0FBQztnQkFDUixHQUFHLEVBQUUsQ0FBQztZQUNWLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7c0dBNUNRLFNBQVM7MEZBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQUpyQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBS2dCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBSU8sTUFBTTtzQkFBbEIsS0FBSztnQkFJTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFkZEFmdGVyRWZmZWN0LCBhZGRFZmZlY3QsIE5ndEluamVjdGVkUmVmLCBOZ3RSeFN0b3JlLCBzdGFydFdpdGhVbmRlZmluZWQgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFN0YXRzIGZyb20gJ3N0YXRzLmpzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICduZ3RzLXN0YXRzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzU3RhdHMgZXh0ZW5kcyBOZ3RSeFN0b3JlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXRzID0gbmV3IFN0YXRzKCk7XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvd1BhbmVsKHNob3dQYW5lbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2hvd1BhbmVsOiBzaG93UGFuZWwgPT09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0KCdzaG93UGFuZWwnKSA6IHNob3dQYW5lbCB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgcGFyZW50KHBhcmVudDogTmd0SW5qZWN0ZWRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIHRoaXMuc2V0KHsgcGFyZW50IH0pO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHNldCBjbGFzc2VzKGNsYXNzZXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNldCh7IGNsYXNzZXMgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLnNldCh7IHNob3dQYW5lbDogMCB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5lZmZlY3QoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdCgnc2hvd1BhbmVsJyksXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoJ3BhcmVudCcpLnBpcGUoc3RhcnRXaXRoVW5kZWZpbmVkKCkpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCdjbGFzc2VzJykucGlwZShzdGFydFdpdGhVbmRlZmluZWQoKSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIChbc2hvd1BhbmVsLCBwYXJlbnQsIGNsYXNzZXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHBhcmVudCAmJiBwYXJlbnQubmF0aXZlRWxlbWVudCA/IHBhcmVudC5uYXRpdmVFbGVtZW50IDogdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdHMuc2hvd1BhbmVsKHNob3dQYW5lbCk7XG4gICAgICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZCh0aGlzLnN0YXRzLmRvbSk7XG4gICAgICAgICAgICAgICAgaWYgKGNsYXNzZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0cy5kb20uY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLnNwbGl0KCcgJykuZmlsdGVyKChjbHM6IHN0cmluZykgPT4gY2xzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGJlZ2luID0gYWRkRWZmZWN0KCgpID0+IHRoaXMuc3RhdHMuYmVnaW4oKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gYWRkQWZ0ZXJFZmZlY3QoKCkgPT4gdGhpcy5zdGF0cy5lbmQoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVDaGlsZCh0aGlzLnN0YXRzLmRvbSk7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luKCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZCgpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLXNoYWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtc2hhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib/shader-material/shader-material';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zaGFkZXJzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhZGVyLW1hdGVyaWFsL3NoYWRlci1tYXRlcmlhbCc7XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export function shaderMaterial(uniforms, vertexShader, fragmentShader, onInit) {
|
|
3
|
+
const material = class extends THREE.ShaderMaterial {
|
|
4
|
+
constructor(parameters = {}) {
|
|
5
|
+
const entries = Object.entries(uniforms);
|
|
6
|
+
// Create unforms and shaders
|
|
7
|
+
super({
|
|
8
|
+
uniforms: entries.reduce((acc, [name, value]) => {
|
|
9
|
+
const uniform = THREE.UniformsUtils.clone({ [name]: { value } });
|
|
10
|
+
return {
|
|
11
|
+
...acc,
|
|
12
|
+
...uniform,
|
|
13
|
+
};
|
|
14
|
+
}, {}),
|
|
15
|
+
vertexShader,
|
|
16
|
+
fragmentShader,
|
|
17
|
+
});
|
|
18
|
+
this.key = '';
|
|
19
|
+
// Create getter/setters
|
|
20
|
+
entries.forEach(([name]) => Object.defineProperty(this, name, {
|
|
21
|
+
get: () => this.uniforms[name].value,
|
|
22
|
+
set: (v) => (this.uniforms[name].value = v),
|
|
23
|
+
}));
|
|
24
|
+
// Assign parameters, this might include uniforms
|
|
25
|
+
Object.assign(this, parameters);
|
|
26
|
+
// Call onInit
|
|
27
|
+
if (onInit)
|
|
28
|
+
onInit(this);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
material.key = THREE.MathUtils.generateUUID();
|
|
32
|
+
return material;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlLXNvYmEvc2hhZGVycy9zcmMvbGliL3NoYWRlci1tYXRlcmlhbC9zaGFkZXItbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFL0IsTUFBTSxVQUFVLGNBQWMsQ0FDMUIsUUFpQkMsRUFDRCxZQUFvQixFQUNwQixjQUFzQixFQUN0QixNQUFrRDtJQUVsRCxNQUFNLFFBQVEsR0FBRyxLQUFNLFNBQVEsS0FBSyxDQUFDLGNBQWM7UUFFL0MsWUFBWSxVQUFVLEdBQUcsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLDZCQUE2QjtZQUM3QixLQUFLLENBQUM7Z0JBQ0YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtvQkFDNUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNqRSxPQUFPO3dCQUNILEdBQUcsR0FBRzt3QkFDTixHQUFHLE9BQU87cUJBQ2IsQ0FBQztnQkFDTixDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNOLFlBQVk7Z0JBQ1osY0FBYzthQUNqQixDQUFDLENBQUM7WUFkQSxRQUFHLEdBQUcsRUFBRSxDQUFDO1lBZVosd0JBQXdCO1lBQ3hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDdkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUM5QixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUNwQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2FBQzlDLENBQUMsQ0FDTCxDQUFDO1lBRUYsaURBQWlEO1lBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hDLGNBQWM7WUFDZCxJQUFJLE1BQU07Z0JBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7S0FDd0QsQ0FBQztJQUM5RCxRQUFRLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDOUMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNoYWRlck1hdGVyaWFsKFxuICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIFtuYW1lOiBzdHJpbmddOlxuICAgICAgICAgICAgfCBUSFJFRS5DdWJlVGV4dHVyZVxuICAgICAgICAgICAgfCBUSFJFRS5UZXh0dXJlXG4gICAgICAgICAgICB8IEludDMyQXJyYXlcbiAgICAgICAgICAgIHwgRmxvYXQzMkFycmF5XG4gICAgICAgICAgICB8IFRIUkVFLk1hdHJpeDRcbiAgICAgICAgICAgIHwgVEhSRUUuTWF0cml4M1xuICAgICAgICAgICAgfCBUSFJFRS5RdWF0ZXJuaW9uXG4gICAgICAgICAgICB8IFRIUkVFLlZlY3RvcjRcbiAgICAgICAgICAgIHwgVEhSRUUuVmVjdG9yM1xuICAgICAgICAgICAgfCBUSFJFRS5WZWN0b3IyXG4gICAgICAgICAgICB8IFRIUkVFLkNvbG9yXG4gICAgICAgICAgICB8IG51bWJlclxuICAgICAgICAgICAgfCBib29sZWFuXG4gICAgICAgICAgICB8IEFycmF5PGFueT5cbiAgICAgICAgICAgIHwgbnVsbDtcbiAgICB9LFxuICAgIHZlcnRleFNoYWRlcjogc3RyaW5nLFxuICAgIGZyYWdtZW50U2hhZGVyOiBzdHJpbmcsXG4gICAgb25Jbml0PzogKG1hdGVyaWFsPzogVEhSRUUuU2hhZGVyTWF0ZXJpYWwpID0+IHZvaWRcbikge1xuICAgIGNvbnN0IG1hdGVyaWFsID0gY2xhc3MgZXh0ZW5kcyBUSFJFRS5TaGFkZXJNYXRlcmlhbCB7XG4gICAgICAgIHB1YmxpYyBrZXkgPSAnJztcbiAgICAgICAgY29uc3RydWN0b3IocGFyYW1ldGVycyA9IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXModW5pZm9ybXMpO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIHVuZm9ybXMgYW5kIHNoYWRlcnNcbiAgICAgICAgICAgIHN1cGVyKHtcbiAgICAgICAgICAgICAgICB1bmlmb3JtczogZW50cmllcy5yZWR1Y2UoKGFjYywgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bmlmb3JtID0gVEhSRUUuVW5pZm9ybXNVdGlscy5jbG9uZSh7IFtuYW1lXTogeyB2YWx1ZSB9IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udW5pZm9ybSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LCB7fSksXG4gICAgICAgICAgICAgICAgdmVydGV4U2hhZGVyLFxuICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBDcmVhdGUgZ2V0dGVyL3NldHRlcnNcbiAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaCgoW25hbWVdKSA9PlxuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldDogKCkgPT4gdGhpcy51bmlmb3Jtc1tuYW1lXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2V0OiAodikgPT4gKHRoaXMudW5pZm9ybXNbbmFtZV0udmFsdWUgPSB2KSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQXNzaWduIHBhcmFtZXRlcnMsIHRoaXMgbWlnaHQgaW5jbHVkZSB1bmlmb3Jtc1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIC8vIENhbGwgb25Jbml0XG4gICAgICAgICAgICBpZiAob25Jbml0KSBvbkluaXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9IGFzIHVua25vd24gYXMgdHlwZW9mIFRIUkVFLlNoYWRlck1hdGVyaWFsICYgeyBrZXk6IHN0cmluZyB9O1xuICAgIG1hdGVyaWFsLmtleSA9IFRIUkVFLk1hdGhVdGlscy5nZW5lcmF0ZVVVSUQoKTtcbiAgICByZXR1cm4gbWF0ZXJpYWw7XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1zb2JhLXN0YWdpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9hbmd1bGFyLXRocmVlLXNvYmEtc3RhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { NgtsAccumulativeShadows } from './lib/accumulative-shadows/accumulative-shadows';
|
|
2
|
+
export { NgtsRandomizedLights } from './lib/accumulative-shadows/randomized-lights';
|
|
3
|
+
export * from './lib/bounds/bounds';
|
|
4
|
+
export * from './lib/center/center';
|
|
5
|
+
export * from './lib/contact-shadows/contact-shadows';
|
|
6
|
+
export * from './lib/environment/assets';
|
|
7
|
+
export * from './lib/environment/environment';
|
|
8
|
+
export * from './lib/float/float';
|
|
9
|
+
export * from './lib/sky/sky';
|
|
10
|
+
export * from './lib/sparkles/sparkles';
|
|
11
|
+
export * from './lib/stage/stage';
|
|
12
|
+
export * from './lib/stars/stars';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5ndHNBY2N1bXVsYXRpdmVTaGFkb3dzIH0gZnJvbSAnLi9saWIvYWNjdW11bGF0aXZlLXNoYWRvd3MvYWNjdW11bGF0aXZlLXNoYWRvd3MnO1xuZXhwb3J0IHsgTmd0c1JhbmRvbWl6ZWRMaWdodHMgfSBmcm9tICcuL2xpYi9hY2N1bXVsYXRpdmUtc2hhZG93cy9yYW5kb21pemVkLWxpZ2h0cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ib3VuZHMvYm91bmRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NlbnRlci9jZW50ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udGFjdC1zaGFkb3dzL2NvbnRhY3Qtc2hhZG93cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnZpcm9ubWVudC9hc3NldHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmxvYXQvZmxvYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2t5L3NreSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcGFya2xlcy9zcGFya2xlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFnZS9zdGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdGFycy9zdGFycyc7XG4iXX0=
|