angular-three-soba 1.11.1 → 1.12.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/misc/index.mjs +2 -1
- package/esm2020/misc/lib/animations/animations.mjs +51 -0
- package/fesm2015/angular-three-soba-misc.mjs +53 -4
- package/fesm2015/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2020/angular-three-soba-misc.mjs +53 -4
- package/fesm2020/angular-three-soba-misc.mjs.map +1 -1
- package/misc/index.d.ts +1 -0
- package/misc/lib/animations/animations.d.ts +13 -0
- package/package.json +3 -3
- package/plugin/package.json +1 -1
package/esm2020/misc/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
export * from './lib/animations/animations';
|
|
1
2
|
export * from './lib/bake-shadows/bake-shadows';
|
|
2
3
|
export * from './lib/depth-buffer/depth-buffer';
|
|
3
4
|
export * from './lib/fbo/fbo';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FuaW1hdGlvbnMvYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWtlLXNoYWRvd3MvYmFrZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlcHRoLWJ1ZmZlci9kZXB0aC1idWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmJvL2Zibyc7XG4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { injectBeforeRender, injectNgtDestroy, injectNgtRef, is } from 'angular-three';
|
|
2
|
+
import { isObservable } from 'rxjs';
|
|
3
|
+
import { AnimationMixer } from 'three';
|
|
4
|
+
export function injectNgtsAnimations(clips, object) {
|
|
5
|
+
let ref = injectNgtRef();
|
|
6
|
+
let sub;
|
|
7
|
+
if (object) {
|
|
8
|
+
if (isObservable(object)) {
|
|
9
|
+
sub = object.subscribe((val) => {
|
|
10
|
+
ref.nativeElement = val;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
else if (is.ref(object)) {
|
|
14
|
+
ref = object;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
ref.nativeElement = object;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const mixer = new AnimationMixer(ref.nativeElement);
|
|
21
|
+
let cached = {};
|
|
22
|
+
const actions = {};
|
|
23
|
+
const names = [];
|
|
24
|
+
for (const clip of clips) {
|
|
25
|
+
names.push(clip.name);
|
|
26
|
+
Object.defineProperty(actions, clip.name, {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: () => {
|
|
29
|
+
if (ref.nativeElement) {
|
|
30
|
+
const name = clip.name;
|
|
31
|
+
return cached[name] || (cached[name] = mixer.clipAction(clip, ref.nativeElement));
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const api = { ref, clips, actions, names, mixer };
|
|
37
|
+
injectNgtDestroy(() => {
|
|
38
|
+
if (sub)
|
|
39
|
+
sub.unsubscribe();
|
|
40
|
+
cached = {};
|
|
41
|
+
Object.values(api.actions).forEach((action) => {
|
|
42
|
+
if (ref.nativeElement) {
|
|
43
|
+
mixer.uncacheAction(action, ref.nativeElement);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
mixer.stopAllAction();
|
|
47
|
+
});
|
|
48
|
+
injectBeforeRender(({ delta }) => mixer.update(delta));
|
|
49
|
+
return api;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL21pc2Mvc3JjL2xpYi9hbmltYXRpb25zL2FuaW1hdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxFQUFFLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxZQUFZLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFVdkMsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxLQUFVLEVBQ1YsTUFBcUY7SUFFckYsSUFBSSxHQUFHLEdBQUcsWUFBWSxFQUFrQixDQUFDO0lBRXpDLElBQUksR0FBaUIsQ0FBQztJQUV0QixJQUFJLE1BQU0sRUFBRTtRQUNSLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RCLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzNCLEdBQUcsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkIsR0FBRyxHQUFHLE1BQU0sQ0FBQztTQUNoQjthQUFNO1lBQ0gsR0FBRyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDOUI7S0FDSjtJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVwRCxJQUFJLE1BQU0sR0FBRyxFQUEwRCxDQUFDO0lBQ3hFLE1BQU0sT0FBTyxHQUFHLEVBQTBELENBQUM7SUFDM0UsTUFBTSxLQUFLLEdBQUcsRUFBaUIsQ0FBQztJQUVoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3RDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQ04sSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFO29CQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBMkIsQ0FBQztvQkFDOUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7aUJBQ3JGO1lBQ0wsQ0FBQztTQUNKLENBQUMsQ0FBQztLQUNOO0lBRUQsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFFbEQsZ0JBQWdCLENBQUMsR0FBRyxFQUFFO1FBQ2xCLElBQUksR0FBRztZQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsRUFBMEQsQ0FBQztRQUNwRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxQyxJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUU7Z0JBQ25CLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBNkIsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDekU7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUVILGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXZELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0Tmd0RGVzdHJveSwgaW5qZWN0Tmd0UmVmLCBpcywgTmd0SW5qZWN0ZWRSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmltYXRpb25NaXhlciB9IGZyb20gJ3RocmVlJztcblxudHlwZSBBcGk8VCBleHRlbmRzIFRIUkVFLkFuaW1hdGlvbkNsaXA+ID0ge1xuICAgIHJlZjogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuT2JqZWN0M0Q+O1xuICAgIGNsaXBzOiBUSFJFRS5BbmltYXRpb25DbGlwW107XG4gICAgbWl4ZXI6IFRIUkVFLkFuaW1hdGlvbk1peGVyO1xuICAgIG5hbWVzOiBUWyduYW1lJ11bXTtcbiAgICBhY3Rpb25zOiB7IFtrZXkgaW4gVFsnbmFtZSddXTogVEhSRUUuQW5pbWF0aW9uQWN0aW9uIHwgbnVsbCB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNBbmltYXRpb25zPFQgZXh0ZW5kcyBUSFJFRS5BbmltYXRpb25DbGlwPihcbiAgICBjbGlwczogVFtdLFxuICAgIG9iamVjdD86IE9ic2VydmFibGU8VEhSRUUuT2JqZWN0M0Q+IHwgVEhSRUUuT2JqZWN0M0QgfCBOZ3RJbmplY3RlZFJlZjxUSFJFRS5PYmplY3QzRD5cbik6IEFwaTxUPiB7XG4gICAgbGV0IHJlZiA9IGluamVjdE5ndFJlZjxUSFJFRS5PYmplY3QzRD4oKTtcblxuICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIGlmIChvYmplY3QpIHtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShvYmplY3QpKSB7XG4gICAgICAgICAgICBzdWIgPSBvYmplY3Quc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgICAgICAgICByZWYubmF0aXZlRWxlbWVudCA9IHZhbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGlzLnJlZihvYmplY3QpKSB7XG4gICAgICAgICAgICByZWYgPSBvYmplY3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWYubmF0aXZlRWxlbWVudCA9IG9iamVjdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1peGVyID0gbmV3IEFuaW1hdGlvbk1peGVyKHJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIGxldCBjYWNoZWQgPSB7fSBhcyB7IFtrZXkgaW4gVFsnbmFtZSddXTogVEhSRUUuQW5pbWF0aW9uQWN0aW9uIHwgbnVsbCB9O1xuICAgIGNvbnN0IGFjdGlvbnMgPSB7fSBhcyB7IFtrZXkgaW4gVFsnbmFtZSddXTogVEhSRUUuQW5pbWF0aW9uQWN0aW9uIHwgbnVsbCB9O1xuICAgIGNvbnN0IG5hbWVzID0gW10gYXMgVFsnbmFtZSddW107XG5cbiAgICBmb3IgKGNvbnN0IGNsaXAgb2YgY2xpcHMpIHtcbiAgICAgICAgbmFtZXMucHVzaChjbGlwLm5hbWUpO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aW9ucywgY2xpcC5uYW1lLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZ2V0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjbGlwLm5hbWUgYXMga2V5b2YgdHlwZW9mIGNhY2hlZDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFtuYW1lXSB8fCAoY2FjaGVkW25hbWVdID0gbWl4ZXIuY2xpcEFjdGlvbihjbGlwLCByZWYubmF0aXZlRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGFwaSA9IHsgcmVmLCBjbGlwcywgYWN0aW9ucywgbmFtZXMsIG1peGVyIH07XG5cbiAgICBpbmplY3ROZ3REZXN0cm95KCgpID0+IHtcbiAgICAgICAgaWYgKHN1Yikgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGNhY2hlZCA9IHt9IGFzIHsgW2tleSBpbiBUWyduYW1lJ11dOiBUSFJFRS5BbmltYXRpb25BY3Rpb24gfCBudWxsIH07XG4gICAgICAgIE9iamVjdC52YWx1ZXMoYXBpLmFjdGlvbnMpLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbWl4ZXIudW5jYWNoZUFjdGlvbihhY3Rpb24gYXMgVEhSRUUuQW5pbWF0aW9uQ2xpcCwgcmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbWl4ZXIuc3RvcEFsbEFjdGlvbigpO1xuICAgIH0pO1xuXG4gICAgaW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IG1peGVyLnVwZGF0ZShkZWx0YSkpO1xuXG4gICAgcmV0dXJuIGFwaTtcbn1cbiJdfQ==
|
|
@@ -1,10 +1,59 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { inject, Directive } from '@angular/core';
|
|
3
|
-
import { NgtRxStore, NgtStore, injectNgtRef, injectNgtDestroy, safeDetectChanges, injectBeforeRender } from 'angular-three';
|
|
1
|
+
import { injectNgtRef, is, injectNgtDestroy, injectBeforeRender, NgtRxStore, NgtStore, safeDetectChanges } from 'angular-three';
|
|
4
2
|
import { isObservable, of, takeUntil, combineLatest, map } from 'rxjs';
|
|
5
3
|
import * as THREE from 'three';
|
|
4
|
+
import { AnimationMixer } from 'three';
|
|
5
|
+
import * as i0 from '@angular/core';
|
|
6
|
+
import { inject, Directive } from '@angular/core';
|
|
6
7
|
import { __rest } from 'tslib';
|
|
7
8
|
|
|
9
|
+
function injectNgtsAnimations(clips, object) {
|
|
10
|
+
let ref = injectNgtRef();
|
|
11
|
+
let sub;
|
|
12
|
+
if (object) {
|
|
13
|
+
if (isObservable(object)) {
|
|
14
|
+
sub = object.subscribe((val) => {
|
|
15
|
+
ref.nativeElement = val;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
else if (is.ref(object)) {
|
|
19
|
+
ref = object;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
ref.nativeElement = object;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const mixer = new AnimationMixer(ref.nativeElement);
|
|
26
|
+
let cached = {};
|
|
27
|
+
const actions = {};
|
|
28
|
+
const names = [];
|
|
29
|
+
for (const clip of clips) {
|
|
30
|
+
names.push(clip.name);
|
|
31
|
+
Object.defineProperty(actions, clip.name, {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: () => {
|
|
34
|
+
if (ref.nativeElement) {
|
|
35
|
+
const name = clip.name;
|
|
36
|
+
return cached[name] || (cached[name] = mixer.clipAction(clip, ref.nativeElement));
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const api = { ref, clips, actions, names, mixer };
|
|
42
|
+
injectNgtDestroy(() => {
|
|
43
|
+
if (sub)
|
|
44
|
+
sub.unsubscribe();
|
|
45
|
+
cached = {};
|
|
46
|
+
Object.values(api.actions).forEach((action) => {
|
|
47
|
+
if (ref.nativeElement) {
|
|
48
|
+
mixer.uncacheAction(action, ref.nativeElement);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
mixer.stopAllAction();
|
|
52
|
+
});
|
|
53
|
+
injectBeforeRender(({ delta }) => mixer.update(delta));
|
|
54
|
+
return api;
|
|
55
|
+
}
|
|
56
|
+
|
|
8
57
|
class NgtsBakeShadows extends NgtRxStore {
|
|
9
58
|
constructor() {
|
|
10
59
|
super(...arguments);
|
|
@@ -95,5 +144,5 @@ function injectNgtsDepthBuffer(paramsFactory = (params) => params) {
|
|
|
95
144
|
* Generated bundle index. Do not edit.
|
|
96
145
|
*/
|
|
97
146
|
|
|
98
|
-
export { NgtsBakeShadows, injectNgtsDepthBuffer, injectNgtsFBO };
|
|
147
|
+
export { NgtsBakeShadows, injectNgtsAnimations, injectNgtsDepthBuffer, injectNgtsFBO };
|
|
99
148
|
//# sourceMappingURL=angular-three-soba-misc.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/angular-three-soba/misc/src/lib/bake-shadows/bake-shadows.ts","../../../../libs/angular-three-soba/misc/src/lib/fbo/fbo.ts","../../../../libs/angular-three-soba/misc/src/lib/depth-buffer/depth-buffer.ts","../../../../libs/angular-three-soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { Directive, inject, OnInit } from '@angular/core';\nimport { NgtRxStore, NgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows extends NgtRxStore implements OnInit {\n private readonly store = inject(NgtStore);\n\n ngOnInit() {\n this.effect(this.store.select('gl'), (gl) => {\n gl.shadowMap.autoUpdate = false;\n gl.shadowMap.needsUpdate = true;\n\n return () => {\n gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;\n };\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { injectNgtDestroy, injectNgtRef, NgtStore, safeDetectChanges } from 'angular-three';\nimport { isObservable, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n /** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n samples?: number;\n /** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n depth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n width?: number | FBOSettings;\n height?: number;\n settings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(\n paramsFactory: (defaultParams: Partial<NgtsFBOParams>) => NgtsFBOParams | Observable<NgtsFBOParams>\n) {\n const store = inject(NgtStore);\n const targetRef = injectNgtRef<THREE.WebGLRenderTarget>();\n const { destroy$, cdr } = injectNgtDestroy(() => {\n targetRef.nativeElement?.dispose();\n });\n const params = paramsFactory({});\n const params$ = isObservable(params) ? params : of(params);\n\n params$.pipe(takeUntil(destroy$)).subscribe(({ width, height, settings }) => {\n const { gl, size, viewport } = store.get();\n const _width = typeof width === 'number' ? width : size.width * viewport.dpr;\n const _height = typeof height === 'number' ? height : size.height * viewport.dpr;\n const _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n const { samples = 0, depth, ...targetSettings } = _settings;\n\n if (!targetRef.nativeElement) {\n const target = new THREE.WebGLRenderTarget(_width, _height, {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: gl.outputEncoding,\n type: THREE.HalfFloatType,\n ...targetSettings,\n });\n if (depth) target.depthTexture = new THREE.DepthTexture(_width, _height, THREE.FloatType);\n\n target.samples = samples;\n targetRef.nativeElement = target;\n }\n\n targetRef.nativeElement.setSize(_width, _height);\n if (samples) targetRef.nativeElement.samples = samples;\n safeDetectChanges(cdr);\n });\n\n return targetRef;\n}\n","import { inject } from '@angular/core';\nimport { injectBeforeRender, injectNgtDestroy, injectNgtRef, NgtStore } from 'angular-three';\nimport { combineLatest, isObservable, map, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n size: number;\n frames: number;\n}\n\nexport function injectNgtsDepthBuffer(\n paramsFactory: (\n defaultParams: Partial<NgtsDepthBufferParams>\n ) => NgtsDepthBufferParams | Observable<NgtsDepthBufferParams> = (params) => params as NgtsDepthBufferParams\n) {\n const depthBufferRef = injectNgtRef<THREE.DepthTexture>();\n\n const store = inject(NgtStore);\n const { destroy$ } = injectNgtDestroy();\n\n const params = paramsFactory({ size: 256, frames: Infinity });\n const params$ = isObservable(params) ? params : of(params);\n\n let rawParams = { size: 256, frames: Infinity };\n\n const fbo = injectNgtsFBO(() => {\n return combineLatest([params$, store.select('size'), store.select('viewport', 'dpr')]).pipe(\n map(([params, size, dpr]) => {\n rawParams = params;\n const w = params.size || size.width * dpr;\n const h = params.size || size.height * dpr;\n const depthTexture = new THREE.DepthTexture(w, h);\n depthTexture.format = THREE.DepthFormat;\n depthTexture.type = THREE.UnsignedShortType;\n const depthConfig = { depthTexture };\n\n return { width: w, height: h, settings: depthConfig };\n })\n );\n });\n\n let count = 0;\n injectBeforeRender(({ gl, scene, camera }) => {\n if ((rawParams.frames === Infinity || count < rawParams.frames) && fbo.nativeElement) {\n gl.setRenderTarget(fbo.nativeElement);\n gl.render(scene, camera);\n gl.setRenderTarget(null);\n count++;\n }\n });\n\n fbo.$.pipe(takeUntil(destroy$)).subscribe((fbo) => {\n depthBufferRef.nativeElement = fbo.depthTexture;\n });\n\n return depthBufferRef;\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-misc.mjs","sources":["../../../../libs/angular-three-soba/misc/src/lib/animations/animations.ts","../../../../libs/angular-three-soba/misc/src/lib/bake-shadows/bake-shadows.ts","../../../../libs/angular-three-soba/misc/src/lib/fbo/fbo.ts","../../../../libs/angular-three-soba/misc/src/lib/depth-buffer/depth-buffer.ts","../../../../libs/angular-three-soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { injectBeforeRender, injectNgtDestroy, injectNgtRef, is, NgtInjectedRef } from 'angular-three';\nimport { isObservable, Observable, Subscription } from 'rxjs';\nimport { AnimationMixer } from 'three';\n\ntype Api<T extends THREE.AnimationClip> = {\n ref: NgtInjectedRef<THREE.Object3D>;\n clips: THREE.AnimationClip[];\n mixer: THREE.AnimationMixer;\n names: T['name'][];\n actions: { [key in T['name']]: THREE.AnimationAction | null };\n};\n\nexport function injectNgtsAnimations<T extends THREE.AnimationClip>(\n clips: T[],\n object?: Observable<THREE.Object3D> | THREE.Object3D | NgtInjectedRef<THREE.Object3D>\n): Api<T> {\n let ref = injectNgtRef<THREE.Object3D>();\n\n let sub: Subscription;\n\n if (object) {\n if (isObservable(object)) {\n sub = object.subscribe((val) => {\n ref.nativeElement = val;\n });\n } else if (is.ref(object)) {\n ref = object;\n } else {\n ref.nativeElement = object;\n }\n }\n\n const mixer = new AnimationMixer(ref.nativeElement);\n\n let cached = {} as { [key in T['name']]: THREE.AnimationAction | null };\n const actions = {} as { [key in T['name']]: THREE.AnimationAction | null };\n const names = [] as T['name'][];\n\n for (const clip of clips) {\n names.push(clip.name);\n Object.defineProperty(actions, clip.name, {\n enumerable: true,\n get: () => {\n if (ref.nativeElement) {\n const name = clip.name as keyof typeof cached;\n return cached[name] || (cached[name] = mixer.clipAction(clip, ref.nativeElement));\n }\n },\n });\n }\n\n const api = { ref, clips, actions, names, mixer };\n\n injectNgtDestroy(() => {\n if (sub) sub.unsubscribe();\n cached = {} as { [key in T['name']]: THREE.AnimationAction | null };\n Object.values(api.actions).forEach((action) => {\n if (ref.nativeElement) {\n mixer.uncacheAction(action as THREE.AnimationClip, ref.nativeElement);\n }\n });\n mixer.stopAllAction();\n });\n\n injectBeforeRender(({ delta }) => mixer.update(delta));\n\n return api;\n}\n","import { Directive, inject, OnInit } from '@angular/core';\nimport { NgtRxStore, NgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows extends NgtRxStore implements OnInit {\n private readonly store = inject(NgtStore);\n\n ngOnInit() {\n this.effect(this.store.select('gl'), (gl) => {\n gl.shadowMap.autoUpdate = false;\n gl.shadowMap.needsUpdate = true;\n\n return () => {\n gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;\n };\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { injectNgtDestroy, injectNgtRef, NgtStore, safeDetectChanges } from 'angular-three';\nimport { isObservable, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n /** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n samples?: number;\n /** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n depth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n width?: number | FBOSettings;\n height?: number;\n settings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(\n paramsFactory: (defaultParams: Partial<NgtsFBOParams>) => NgtsFBOParams | Observable<NgtsFBOParams>\n) {\n const store = inject(NgtStore);\n const targetRef = injectNgtRef<THREE.WebGLRenderTarget>();\n const { destroy$, cdr } = injectNgtDestroy(() => {\n targetRef.nativeElement?.dispose();\n });\n const params = paramsFactory({});\n const params$ = isObservable(params) ? params : of(params);\n\n params$.pipe(takeUntil(destroy$)).subscribe(({ width, height, settings }) => {\n const { gl, size, viewport } = store.get();\n const _width = typeof width === 'number' ? width : size.width * viewport.dpr;\n const _height = typeof height === 'number' ? height : size.height * viewport.dpr;\n const _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n const { samples = 0, depth, ...targetSettings } = _settings;\n\n if (!targetRef.nativeElement) {\n const target = new THREE.WebGLRenderTarget(_width, _height, {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: gl.outputEncoding,\n type: THREE.HalfFloatType,\n ...targetSettings,\n });\n if (depth) target.depthTexture = new THREE.DepthTexture(_width, _height, THREE.FloatType);\n\n target.samples = samples;\n targetRef.nativeElement = target;\n }\n\n targetRef.nativeElement.setSize(_width, _height);\n if (samples) targetRef.nativeElement.samples = samples;\n safeDetectChanges(cdr);\n });\n\n return targetRef;\n}\n","import { inject } from '@angular/core';\nimport { injectBeforeRender, injectNgtDestroy, injectNgtRef, NgtStore } from 'angular-three';\nimport { combineLatest, isObservable, map, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n size: number;\n frames: number;\n}\n\nexport function injectNgtsDepthBuffer(\n paramsFactory: (\n defaultParams: Partial<NgtsDepthBufferParams>\n ) => NgtsDepthBufferParams | Observable<NgtsDepthBufferParams> = (params) => params as NgtsDepthBufferParams\n) {\n const depthBufferRef = injectNgtRef<THREE.DepthTexture>();\n\n const store = inject(NgtStore);\n const { destroy$ } = injectNgtDestroy();\n\n const params = paramsFactory({ size: 256, frames: Infinity });\n const params$ = isObservable(params) ? params : of(params);\n\n let rawParams = { size: 256, frames: Infinity };\n\n const fbo = injectNgtsFBO(() => {\n return combineLatest([params$, store.select('size'), store.select('viewport', 'dpr')]).pipe(\n map(([params, size, dpr]) => {\n rawParams = params;\n const w = params.size || size.width * dpr;\n const h = params.size || size.height * dpr;\n const depthTexture = new THREE.DepthTexture(w, h);\n depthTexture.format = THREE.DepthFormat;\n depthTexture.type = THREE.UnsignedShortType;\n const depthConfig = { depthTexture };\n\n return { width: w, height: h, settings: depthConfig };\n })\n );\n });\n\n let count = 0;\n injectBeforeRender(({ gl, scene, camera }) => {\n if ((rawParams.frames === Infinity || count < rawParams.frames) && fbo.nativeElement) {\n gl.setRenderTarget(fbo.nativeElement);\n gl.render(scene, camera);\n gl.setRenderTarget(null);\n count++;\n }\n });\n\n fbo.$.pipe(takeUntil(destroy$)).subscribe((fbo) => {\n depthBufferRef.nativeElement = fbo.depthTexture;\n });\n\n return depthBufferRef;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,57 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { inject, Directive } from '@angular/core';
|
|
3
|
-
import { NgtRxStore, NgtStore, injectNgtRef, injectNgtDestroy, safeDetectChanges, injectBeforeRender } from 'angular-three';
|
|
1
|
+
import { injectNgtRef, is, injectNgtDestroy, injectBeforeRender, NgtRxStore, NgtStore, safeDetectChanges } from 'angular-three';
|
|
4
2
|
import { isObservable, of, takeUntil, combineLatest, map } from 'rxjs';
|
|
5
3
|
import * as THREE from 'three';
|
|
4
|
+
import { AnimationMixer } from 'three';
|
|
5
|
+
import * as i0 from '@angular/core';
|
|
6
|
+
import { inject, Directive } from '@angular/core';
|
|
7
|
+
|
|
8
|
+
function injectNgtsAnimations(clips, object) {
|
|
9
|
+
let ref = injectNgtRef();
|
|
10
|
+
let sub;
|
|
11
|
+
if (object) {
|
|
12
|
+
if (isObservable(object)) {
|
|
13
|
+
sub = object.subscribe((val) => {
|
|
14
|
+
ref.nativeElement = val;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
else if (is.ref(object)) {
|
|
18
|
+
ref = object;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
ref.nativeElement = object;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const mixer = new AnimationMixer(ref.nativeElement);
|
|
25
|
+
let cached = {};
|
|
26
|
+
const actions = {};
|
|
27
|
+
const names = [];
|
|
28
|
+
for (const clip of clips) {
|
|
29
|
+
names.push(clip.name);
|
|
30
|
+
Object.defineProperty(actions, clip.name, {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: () => {
|
|
33
|
+
if (ref.nativeElement) {
|
|
34
|
+
const name = clip.name;
|
|
35
|
+
return cached[name] || (cached[name] = mixer.clipAction(clip, ref.nativeElement));
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const api = { ref, clips, actions, names, mixer };
|
|
41
|
+
injectNgtDestroy(() => {
|
|
42
|
+
if (sub)
|
|
43
|
+
sub.unsubscribe();
|
|
44
|
+
cached = {};
|
|
45
|
+
Object.values(api.actions).forEach((action) => {
|
|
46
|
+
if (ref.nativeElement) {
|
|
47
|
+
mixer.uncacheAction(action, ref.nativeElement);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
mixer.stopAllAction();
|
|
51
|
+
});
|
|
52
|
+
injectBeforeRender(({ delta }) => mixer.update(delta));
|
|
53
|
+
return api;
|
|
54
|
+
}
|
|
6
55
|
|
|
7
56
|
class NgtsBakeShadows extends NgtRxStore {
|
|
8
57
|
constructor() {
|
|
@@ -99,5 +148,5 @@ function injectNgtsDepthBuffer(paramsFactory = (params) => params) {
|
|
|
99
148
|
* Generated bundle index. Do not edit.
|
|
100
149
|
*/
|
|
101
150
|
|
|
102
|
-
export { NgtsBakeShadows, injectNgtsDepthBuffer, injectNgtsFBO };
|
|
151
|
+
export { NgtsBakeShadows, injectNgtsAnimations, injectNgtsDepthBuffer, injectNgtsFBO };
|
|
103
152
|
//# sourceMappingURL=angular-three-soba-misc.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/angular-three-soba/misc/src/lib/bake-shadows/bake-shadows.ts","../../../../libs/angular-three-soba/misc/src/lib/fbo/fbo.ts","../../../../libs/angular-three-soba/misc/src/lib/depth-buffer/depth-buffer.ts","../../../../libs/angular-three-soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { Directive, inject, OnInit } from '@angular/core';\nimport { NgtRxStore, NgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows extends NgtRxStore implements OnInit {\n private readonly store = inject(NgtStore);\n\n ngOnInit() {\n this.effect(this.store.select('gl'), (gl) => {\n gl.shadowMap.autoUpdate = false;\n gl.shadowMap.needsUpdate = true;\n\n return () => {\n gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;\n };\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { injectNgtDestroy, injectNgtRef, NgtStore, safeDetectChanges } from 'angular-three';\nimport { isObservable, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n /** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n samples?: number;\n /** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n depth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n width?: number | FBOSettings;\n height?: number;\n settings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(\n paramsFactory: (defaultParams: Partial<NgtsFBOParams>) => NgtsFBOParams | Observable<NgtsFBOParams>\n) {\n const store = inject(NgtStore);\n const targetRef = injectNgtRef<THREE.WebGLRenderTarget>();\n const { destroy$, cdr } = injectNgtDestroy(() => {\n targetRef.nativeElement?.dispose();\n });\n const params = paramsFactory({});\n const params$ = isObservable(params) ? params : of(params);\n\n params$.pipe(takeUntil(destroy$)).subscribe(({ width, height, settings }) => {\n const { gl, size, viewport } = store.get();\n const _width = typeof width === 'number' ? width : size.width * viewport.dpr;\n const _height = typeof height === 'number' ? height : size.height * viewport.dpr;\n const _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n const { samples = 0, depth, ...targetSettings } = _settings;\n\n if (!targetRef.nativeElement) {\n const target = new THREE.WebGLRenderTarget(_width, _height, {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: gl.outputEncoding,\n type: THREE.HalfFloatType,\n ...targetSettings,\n });\n if (depth) target.depthTexture = new THREE.DepthTexture(_width, _height, THREE.FloatType);\n\n target.samples = samples;\n targetRef.nativeElement = target;\n }\n\n targetRef.nativeElement.setSize(_width, _height);\n if (samples) targetRef.nativeElement.samples = samples;\n safeDetectChanges(cdr);\n });\n\n return targetRef;\n}\n","import { inject } from '@angular/core';\nimport { injectBeforeRender, injectNgtDestroy, injectNgtRef, NgtStore } from 'angular-three';\nimport { combineLatest, isObservable, map, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n size: number;\n frames: number;\n}\n\nexport function injectNgtsDepthBuffer(\n paramsFactory: (\n defaultParams: Partial<NgtsDepthBufferParams>\n ) => NgtsDepthBufferParams | Observable<NgtsDepthBufferParams> = (params) => params as NgtsDepthBufferParams\n) {\n const depthBufferRef = injectNgtRef<THREE.DepthTexture>();\n\n const store = inject(NgtStore);\n const { destroy$ } = injectNgtDestroy();\n\n const params = paramsFactory({ size: 256, frames: Infinity });\n const params$ = isObservable(params) ? params : of(params);\n\n let rawParams = { size: 256, frames: Infinity };\n\n const fbo = injectNgtsFBO(() => {\n return combineLatest([params$, store.select('size'), store.select('viewport', 'dpr')]).pipe(\n map(([params, size, dpr]) => {\n rawParams = params;\n const w = params.size || size.width * dpr;\n const h = params.size || size.height * dpr;\n const depthTexture = new THREE.DepthTexture(w, h);\n depthTexture.format = THREE.DepthFormat;\n depthTexture.type = THREE.UnsignedShortType;\n const depthConfig = { depthTexture };\n\n return { width: w, height: h, settings: depthConfig };\n })\n );\n });\n\n let count = 0;\n injectBeforeRender(({ gl, scene, camera }) => {\n if ((rawParams.frames === Infinity || count < rawParams.frames) && fbo.nativeElement) {\n gl.setRenderTarget(fbo.nativeElement);\n gl.render(scene, camera);\n gl.setRenderTarget(null);\n count++;\n }\n });\n\n fbo.$.pipe(takeUntil(destroy$)).subscribe((fbo) => {\n depthBufferRef.nativeElement = fbo.depthTexture;\n });\n\n return depthBufferRef;\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-misc.mjs","sources":["../../../../libs/angular-three-soba/misc/src/lib/animations/animations.ts","../../../../libs/angular-three-soba/misc/src/lib/bake-shadows/bake-shadows.ts","../../../../libs/angular-three-soba/misc/src/lib/fbo/fbo.ts","../../../../libs/angular-three-soba/misc/src/lib/depth-buffer/depth-buffer.ts","../../../../libs/angular-three-soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { injectBeforeRender, injectNgtDestroy, injectNgtRef, is, NgtInjectedRef } from 'angular-three';\nimport { isObservable, Observable, Subscription } from 'rxjs';\nimport { AnimationMixer } from 'three';\n\ntype Api<T extends THREE.AnimationClip> = {\n ref: NgtInjectedRef<THREE.Object3D>;\n clips: THREE.AnimationClip[];\n mixer: THREE.AnimationMixer;\n names: T['name'][];\n actions: { [key in T['name']]: THREE.AnimationAction | null };\n};\n\nexport function injectNgtsAnimations<T extends THREE.AnimationClip>(\n clips: T[],\n object?: Observable<THREE.Object3D> | THREE.Object3D | NgtInjectedRef<THREE.Object3D>\n): Api<T> {\n let ref = injectNgtRef<THREE.Object3D>();\n\n let sub: Subscription;\n\n if (object) {\n if (isObservable(object)) {\n sub = object.subscribe((val) => {\n ref.nativeElement = val;\n });\n } else if (is.ref(object)) {\n ref = object;\n } else {\n ref.nativeElement = object;\n }\n }\n\n const mixer = new AnimationMixer(ref.nativeElement);\n\n let cached = {} as { [key in T['name']]: THREE.AnimationAction | null };\n const actions = {} as { [key in T['name']]: THREE.AnimationAction | null };\n const names = [] as T['name'][];\n\n for (const clip of clips) {\n names.push(clip.name);\n Object.defineProperty(actions, clip.name, {\n enumerable: true,\n get: () => {\n if (ref.nativeElement) {\n const name = clip.name as keyof typeof cached;\n return cached[name] || (cached[name] = mixer.clipAction(clip, ref.nativeElement));\n }\n },\n });\n }\n\n const api = { ref, clips, actions, names, mixer };\n\n injectNgtDestroy(() => {\n if (sub) sub.unsubscribe();\n cached = {} as { [key in T['name']]: THREE.AnimationAction | null };\n Object.values(api.actions).forEach((action) => {\n if (ref.nativeElement) {\n mixer.uncacheAction(action as THREE.AnimationClip, ref.nativeElement);\n }\n });\n mixer.stopAllAction();\n });\n\n injectBeforeRender(({ delta }) => mixer.update(delta));\n\n return api;\n}\n","import { Directive, inject, OnInit } from '@angular/core';\nimport { NgtRxStore, NgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows extends NgtRxStore implements OnInit {\n private readonly store = inject(NgtStore);\n\n ngOnInit() {\n this.effect(this.store.select('gl'), (gl) => {\n gl.shadowMap.autoUpdate = false;\n gl.shadowMap.needsUpdate = true;\n\n return () => {\n gl.shadowMap.autoUpdate = gl.shadowMap.needsUpdate = true;\n };\n });\n }\n}\n","import { inject } from '@angular/core';\nimport { injectNgtDestroy, injectNgtRef, NgtStore, safeDetectChanges } from 'angular-three';\nimport { isObservable, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n /** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n samples?: number;\n /** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n depth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n width?: number | FBOSettings;\n height?: number;\n settings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(\n paramsFactory: (defaultParams: Partial<NgtsFBOParams>) => NgtsFBOParams | Observable<NgtsFBOParams>\n) {\n const store = inject(NgtStore);\n const targetRef = injectNgtRef<THREE.WebGLRenderTarget>();\n const { destroy$, cdr } = injectNgtDestroy(() => {\n targetRef.nativeElement?.dispose();\n });\n const params = paramsFactory({});\n const params$ = isObservable(params) ? params : of(params);\n\n params$.pipe(takeUntil(destroy$)).subscribe(({ width, height, settings }) => {\n const { gl, size, viewport } = store.get();\n const _width = typeof width === 'number' ? width : size.width * viewport.dpr;\n const _height = typeof height === 'number' ? height : size.height * viewport.dpr;\n const _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n const { samples = 0, depth, ...targetSettings } = _settings;\n\n if (!targetRef.nativeElement) {\n const target = new THREE.WebGLRenderTarget(_width, _height, {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n encoding: gl.outputEncoding,\n type: THREE.HalfFloatType,\n ...targetSettings,\n });\n if (depth) target.depthTexture = new THREE.DepthTexture(_width, _height, THREE.FloatType);\n\n target.samples = samples;\n targetRef.nativeElement = target;\n }\n\n targetRef.nativeElement.setSize(_width, _height);\n if (samples) targetRef.nativeElement.samples = samples;\n safeDetectChanges(cdr);\n });\n\n return targetRef;\n}\n","import { inject } from '@angular/core';\nimport { injectBeforeRender, injectNgtDestroy, injectNgtRef, NgtStore } from 'angular-three';\nimport { combineLatest, isObservable, map, Observable, of, takeUntil } from 'rxjs';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n size: number;\n frames: number;\n}\n\nexport function injectNgtsDepthBuffer(\n paramsFactory: (\n defaultParams: Partial<NgtsDepthBufferParams>\n ) => NgtsDepthBufferParams | Observable<NgtsDepthBufferParams> = (params) => params as NgtsDepthBufferParams\n) {\n const depthBufferRef = injectNgtRef<THREE.DepthTexture>();\n\n const store = inject(NgtStore);\n const { destroy$ } = injectNgtDestroy();\n\n const params = paramsFactory({ size: 256, frames: Infinity });\n const params$ = isObservable(params) ? params : of(params);\n\n let rawParams = { size: 256, frames: Infinity };\n\n const fbo = injectNgtsFBO(() => {\n return combineLatest([params$, store.select('size'), store.select('viewport', 'dpr')]).pipe(\n map(([params, size, dpr]) => {\n rawParams = params;\n const w = params.size || size.width * dpr;\n const h = params.size || size.height * dpr;\n const depthTexture = new THREE.DepthTexture(w, h);\n depthTexture.format = THREE.DepthFormat;\n depthTexture.type = THREE.UnsignedShortType;\n const depthConfig = { depthTexture };\n\n return { width: w, height: h, settings: depthConfig };\n })\n );\n });\n\n let count = 0;\n injectBeforeRender(({ gl, scene, camera }) => {\n if ((rawParams.frames === Infinity || count < rawParams.frames) && fbo.nativeElement) {\n gl.setRenderTarget(fbo.nativeElement);\n gl.render(scene, camera);\n gl.setRenderTarget(null);\n count++;\n }\n });\n\n fbo.$.pipe(takeUntil(destroy$)).subscribe((fbo) => {\n depthBufferRef.nativeElement = fbo.depthTexture;\n });\n\n return depthBufferRef;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/misc/index.d.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { NgtInjectedRef } from 'angular-three';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
type Api<T extends THREE.AnimationClip> = {
|
|
4
|
+
ref: NgtInjectedRef<THREE.Object3D>;
|
|
5
|
+
clips: THREE.AnimationClip[];
|
|
6
|
+
mixer: THREE.AnimationMixer;
|
|
7
|
+
names: T['name'][];
|
|
8
|
+
actions: {
|
|
9
|
+
[key in T['name']]: THREE.AnimationAction | null;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare function injectNgtsAnimations<T extends THREE.AnimationClip>(clips: T[], object?: Observable<THREE.Object3D> | THREE.Object3D | NgtInjectedRef<THREE.Object3D>): Api<T>;
|
|
13
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-soba",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -115,9 +115,9 @@
|
|
|
115
115
|
"three-mesh-bvh": "^0.5.0",
|
|
116
116
|
"three-stdlib": "^2.0.0",
|
|
117
117
|
"troika-three-text": "^0.47.0",
|
|
118
|
-
"rxjs": "~7.8.0",
|
|
119
118
|
"@storybook/addons": "6.5.16",
|
|
120
|
-
"@storybook/theming": "6.5.16"
|
|
119
|
+
"@storybook/theming": "6.5.16",
|
|
120
|
+
"rxjs": "~7.8.0"
|
|
121
121
|
},
|
|
122
122
|
"dependencies": {
|
|
123
123
|
"@nrwl/devkit": "^15.0.0",
|
package/plugin/package.json
CHANGED