angular-three-soba 1.11.1 → 1.12.1

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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9iYWtlLXNoYWRvd3MvYmFrZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlcHRoLWJ1ZmZlci9kZXB0aC1idWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmJvL2Zibyc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUtc29iYS9taXNjL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FuaW1hdGlvbnMvYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWtlLXNoYWRvd3MvYmFrZS1zaGFkb3dzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RlcHRoLWJ1ZmZlci9kZXB0aC1idWZmZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmJvL2Zibyc7XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { injectBeforeRender, injectNgtDestroy, injectNgtRef, is } from 'angular-three';
2
+ import { AnimationMixer } from 'three';
3
+ export function injectNgtsAnimations() {
4
+ let ref = injectNgtRef();
5
+ const mixer = new AnimationMixer(null);
6
+ const cleanUps = [];
7
+ injectNgtDestroy(() => {
8
+ cleanUps.forEach((cleanUp) => cleanUp());
9
+ });
10
+ injectBeforeRender(({ delta }) => mixer.update(delta));
11
+ const api = (clips, object) => {
12
+ let cached = {};
13
+ const actions = {};
14
+ const names = [];
15
+ if (object) {
16
+ if (is.ref(object)) {
17
+ ref = object;
18
+ }
19
+ else {
20
+ ref.nativeElement = object;
21
+ }
22
+ }
23
+ for (const clip of clips) {
24
+ names.push(clip.name);
25
+ Object.defineProperty(actions, clip.name, {
26
+ enumerable: true,
27
+ get: () => {
28
+ if (ref.nativeElement) {
29
+ const name = clip.name;
30
+ return cached[name] || (cached[name] = mixer.clipAction(clip, ref.nativeElement));
31
+ }
32
+ },
33
+ });
34
+ }
35
+ cleanUps.push(() => {
36
+ cached = {};
37
+ Object.values(actions).forEach((action) => {
38
+ if (ref.nativeElement) {
39
+ mixer.uncacheAction(action, ref.nativeElement);
40
+ }
41
+ });
42
+ mixer.stopAllAction();
43
+ });
44
+ api.clips = clips;
45
+ api.actions = actions;
46
+ api.names = names;
47
+ };
48
+ api.ref = ref;
49
+ api.mixer = mixer;
50
+ return api;
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS1zb2JhL21pc2Mvc3JjL2xpYi9hbmltYXRpb25zL2FuaW1hdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxFQUFFLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFXdkMsTUFBTSxVQUFVLG9CQUFvQjtJQUNoQyxJQUFJLEdBQUcsR0FBRyxZQUFZLEVBQWtCLENBQUM7SUFFekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSyxDQUFDLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsRUFBb0IsQ0FBQztJQUV0QyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7UUFDbEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXZELE1BQU0sR0FBRyxHQUFHLENBQ1IsS0FBVSxFQUNWLE1BQXdELEVBQzFELEVBQUU7UUFDQSxJQUFJLE1BQU0sR0FBRyxFQUEwRCxDQUFDO1FBQ3hFLE1BQU0sT0FBTyxHQUFHLEVBQTBELENBQUM7UUFDM0UsTUFBTSxLQUFLLEdBQUcsRUFBaUIsQ0FBQztRQUVoQyxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEIsR0FBRyxHQUFHLE1BQU0sQ0FBQzthQUNoQjtpQkFBTTtnQkFDSCxHQUFHLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQzthQUM5QjtTQUNKO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDdEMsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQ04sSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFO3dCQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBMkIsQ0FBQzt3QkFDOUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7cUJBQ3JGO2dCQUNMLENBQUM7YUFDSixDQUFDLENBQUM7U0FDTjtRQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxHQUFHLEVBQTBELENBQUM7WUFDcEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFO29CQUNuQixLQUFLLENBQUMsYUFBYSxDQUFDLE1BQTZCLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUN6RTtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUYsR0FBYyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDN0IsR0FBYyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDakMsR0FBYyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0lBRUYsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDZCxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVsQixPQUFPLEdBQWEsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3ROZ3REZXN0cm95LCBpbmplY3ROZ3RSZWYsIGlzLCBOZ3RJbmplY3RlZFJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uTWl4ZXIgfSBmcm9tICd0aHJlZSc7XG5cbnR5cGUgQXBpPFQgZXh0ZW5kcyBUSFJFRS5BbmltYXRpb25DbGlwPiA9IHtcbiAgICAoY2xpcHM6IFRbXSwgb2JqZWN0PzogVEhSRUUuT2JqZWN0M0QgfCBOZ3RJbmplY3RlZFJlZjxUSFJFRS5PYmplY3QzRD4pOiB2b2lkO1xuICAgIHJlZjogTmd0SW5qZWN0ZWRSZWY8VEhSRUUuT2JqZWN0M0Q+O1xuICAgIGNsaXBzOiBUSFJFRS5BbmltYXRpb25DbGlwW107XG4gICAgbWl4ZXI6IFRIUkVFLkFuaW1hdGlvbk1peGVyO1xuICAgIG5hbWVzOiBUWyduYW1lJ11bXTtcbiAgICBhY3Rpb25zOiB7IFtrZXkgaW4gVFsnbmFtZSddXTogVEhSRUUuQW5pbWF0aW9uQWN0aW9uIHwgbnVsbCB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndHNBbmltYXRpb25zPFQgZXh0ZW5kcyBUSFJFRS5BbmltYXRpb25DbGlwPigpIHtcbiAgICBsZXQgcmVmID0gaW5qZWN0Tmd0UmVmPFRIUkVFLk9iamVjdDNEPigpO1xuXG4gICAgY29uc3QgbWl4ZXIgPSBuZXcgQW5pbWF0aW9uTWl4ZXIobnVsbCEpO1xuICAgIGNvbnN0IGNsZWFuVXBzID0gW10gYXMgKCgpID0+IHZvaWQpW107XG5cbiAgICBpbmplY3ROZ3REZXN0cm95KCgpID0+IHtcbiAgICAgICAgY2xlYW5VcHMuZm9yRWFjaCgoY2xlYW5VcCkgPT4gY2xlYW5VcCgpKTtcbiAgICB9KTtcblxuICAgIGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiBtaXhlci51cGRhdGUoZGVsdGEpKTtcblxuICAgIGNvbnN0IGFwaSA9IDxUIGV4dGVuZHMgVEhSRUUuQW5pbWF0aW9uQ2xpcD4oXG4gICAgICAgIGNsaXBzOiBUW10sXG4gICAgICAgIG9iamVjdD86IFRIUkVFLk9iamVjdDNEIHwgTmd0SW5qZWN0ZWRSZWY8VEhSRUUuT2JqZWN0M0Q+XG4gICAgKSA9PiB7XG4gICAgICAgIGxldCBjYWNoZWQgPSB7fSBhcyB7IFtrZXkgaW4gVFsnbmFtZSddXTogVEhSRUUuQW5pbWF0aW9uQWN0aW9uIHwgbnVsbCB9O1xuICAgICAgICBjb25zdCBhY3Rpb25zID0ge30gYXMgeyBba2V5IGluIFRbJ25hbWUnXV06IFRIUkVFLkFuaW1hdGlvbkFjdGlvbiB8IG51bGwgfTtcbiAgICAgICAgY29uc3QgbmFtZXMgPSBbXSBhcyBUWyduYW1lJ11bXTtcblxuICAgICAgICBpZiAob2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoaXMucmVmKG9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICByZWYgPSBvYmplY3Q7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlZi5uYXRpdmVFbGVtZW50ID0gb2JqZWN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBjbGlwIG9mIGNsaXBzKSB7XG4gICAgICAgICAgICBuYW1lcy5wdXNoKGNsaXAubmFtZSk7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYWN0aW9ucywgY2xpcC5uYW1lLCB7XG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gY2xpcC5uYW1lIGFzIGtleW9mIHR5cGVvZiBjYWNoZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkW25hbWVdIHx8IChjYWNoZWRbbmFtZV0gPSBtaXhlci5jbGlwQWN0aW9uKGNsaXAsIHJlZi5uYXRpdmVFbGVtZW50KSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjbGVhblVwcy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgIGNhY2hlZCA9IHt9IGFzIHsgW2tleSBpbiBUWyduYW1lJ11dOiBUSFJFRS5BbmltYXRpb25BY3Rpb24gfCBudWxsIH07XG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKGFjdGlvbnMpLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBtaXhlci51bmNhY2hlQWN0aW9uKGFjdGlvbiBhcyBUSFJFRS5BbmltYXRpb25DbGlwLCByZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtaXhlci5zdG9wQWxsQWN0aW9uKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIChhcGkgYXMgQXBpPFQ+KS5jbGlwcyA9IGNsaXBzO1xuICAgICAgICAoYXBpIGFzIEFwaTxUPikuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIChhcGkgYXMgQXBpPFQ+KS5uYW1lcyA9IG5hbWVzO1xuICAgIH07XG5cbiAgICBhcGkucmVmID0gcmVmO1xuICAgIGFwaS5taXhlciA9IG1peGVyO1xuXG4gICAgcmV0dXJuIGFwaSBhcyBBcGk8VD47XG59XG4iXX0=
@@ -1,10 +1,61 @@
1
+ import { injectNgtRef, injectNgtDestroy, injectBeforeRender, is, NgtRxStore, NgtStore, safeDetectChanges } from 'angular-three';
2
+ import * as THREE from 'three';
3
+ import { AnimationMixer } from 'three';
1
4
  import * as i0 from '@angular/core';
2
5
  import { inject, Directive } from '@angular/core';
3
- import { NgtRxStore, NgtStore, injectNgtRef, injectNgtDestroy, safeDetectChanges, injectBeforeRender } from 'angular-three';
4
6
  import { isObservable, of, takeUntil, combineLatest, map } from 'rxjs';
5
- import * as THREE from 'three';
6
7
  import { __rest } from 'tslib';
7
8
 
9
+ function injectNgtsAnimations() {
10
+ let ref = injectNgtRef();
11
+ const mixer = new AnimationMixer(null);
12
+ const cleanUps = [];
13
+ injectNgtDestroy(() => {
14
+ cleanUps.forEach((cleanUp) => cleanUp());
15
+ });
16
+ injectBeforeRender(({ delta }) => mixer.update(delta));
17
+ const api = (clips, object) => {
18
+ let cached = {};
19
+ const actions = {};
20
+ const names = [];
21
+ if (object) {
22
+ if (is.ref(object)) {
23
+ ref = object;
24
+ }
25
+ else {
26
+ ref.nativeElement = object;
27
+ }
28
+ }
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
+ cleanUps.push(() => {
42
+ cached = {};
43
+ Object.values(actions).forEach((action) => {
44
+ if (ref.nativeElement) {
45
+ mixer.uncacheAction(action, ref.nativeElement);
46
+ }
47
+ });
48
+ mixer.stopAllAction();
49
+ });
50
+ api.clips = clips;
51
+ api.actions = actions;
52
+ api.names = names;
53
+ };
54
+ api.ref = ref;
55
+ api.mixer = mixer;
56
+ return api;
57
+ }
58
+
8
59
  class NgtsBakeShadows extends NgtRxStore {
9
60
  constructor() {
10
61
  super(...arguments);
@@ -95,5 +146,5 @@ function injectNgtsDepthBuffer(paramsFactory = (params) => params) {
95
146
  * Generated bundle index. Do not edit.
96
147
  */
97
148
 
98
- export { NgtsBakeShadows, injectNgtsDepthBuffer, injectNgtsFBO };
149
+ export { NgtsBakeShadows, injectNgtsAnimations, injectNgtsDepthBuffer, injectNgtsFBO };
99
150
  //# 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 { AnimationMixer } from 'three';\n\ntype Api<T extends THREE.AnimationClip> = {\n (clips: T[], object?: THREE.Object3D | NgtInjectedRef<THREE.Object3D>): void;\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 let ref = injectNgtRef<THREE.Object3D>();\n\n const mixer = new AnimationMixer(null!);\n const cleanUps = [] as (() => void)[];\n\n injectNgtDestroy(() => {\n cleanUps.forEach((cleanUp) => cleanUp());\n });\n\n injectBeforeRender(({ delta }) => mixer.update(delta));\n\n const api = <T extends THREE.AnimationClip>(\n clips: T[],\n object?: THREE.Object3D | NgtInjectedRef<THREE.Object3D>\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 if (object) {\n if (is.ref(object)) {\n ref = object;\n } else {\n ref.nativeElement = object;\n }\n }\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 cleanUps.push(() => {\n cached = {} as { [key in T['name']]: THREE.AnimationAction | null };\n Object.values(actions).forEach((action) => {\n if (ref.nativeElement) {\n mixer.uncacheAction(action as THREE.AnimationClip, ref.nativeElement);\n }\n });\n mixer.stopAllAction();\n });\n\n (api as Api<T>).clips = clips;\n (api as Api<T>).actions = actions;\n (api as Api<T>).names = names;\n };\n\n api.ref = ref;\n api.mixer = mixer;\n\n return api as Api<T>;\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,59 @@
1
+ import { injectNgtRef, injectNgtDestroy, injectBeforeRender, is, NgtRxStore, NgtStore, safeDetectChanges } from 'angular-three';
2
+ import * as THREE from 'three';
3
+ import { AnimationMixer } from 'three';
1
4
  import * as i0 from '@angular/core';
2
5
  import { inject, Directive } from '@angular/core';
3
- import { NgtRxStore, NgtStore, injectNgtRef, injectNgtDestroy, safeDetectChanges, injectBeforeRender } from 'angular-three';
4
6
  import { isObservable, of, takeUntil, combineLatest, map } from 'rxjs';
5
- import * as THREE from 'three';
7
+
8
+ function injectNgtsAnimations() {
9
+ let ref = injectNgtRef();
10
+ const mixer = new AnimationMixer(null);
11
+ const cleanUps = [];
12
+ injectNgtDestroy(() => {
13
+ cleanUps.forEach((cleanUp) => cleanUp());
14
+ });
15
+ injectBeforeRender(({ delta }) => mixer.update(delta));
16
+ const api = (clips, object) => {
17
+ let cached = {};
18
+ const actions = {};
19
+ const names = [];
20
+ if (object) {
21
+ if (is.ref(object)) {
22
+ ref = object;
23
+ }
24
+ else {
25
+ ref.nativeElement = object;
26
+ }
27
+ }
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
+ cleanUps.push(() => {
41
+ cached = {};
42
+ Object.values(actions).forEach((action) => {
43
+ if (ref.nativeElement) {
44
+ mixer.uncacheAction(action, ref.nativeElement);
45
+ }
46
+ });
47
+ mixer.stopAllAction();
48
+ });
49
+ api.clips = clips;
50
+ api.actions = actions;
51
+ api.names = names;
52
+ };
53
+ api.ref = ref;
54
+ api.mixer = mixer;
55
+ return api;
56
+ }
6
57
 
7
58
  class NgtsBakeShadows extends NgtRxStore {
8
59
  constructor() {
@@ -99,5 +150,5 @@ function injectNgtsDepthBuffer(paramsFactory = (params) => params) {
99
150
  * Generated bundle index. Do not edit.
100
151
  */
101
152
 
102
- export { NgtsBakeShadows, injectNgtsDepthBuffer, injectNgtsFBO };
153
+ export { NgtsBakeShadows, injectNgtsAnimations, injectNgtsDepthBuffer, injectNgtsFBO };
103
154
  //# 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 { AnimationMixer } from 'three';\n\ntype Api<T extends THREE.AnimationClip> = {\n (clips: T[], object?: THREE.Object3D | NgtInjectedRef<THREE.Object3D>): void;\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 let ref = injectNgtRef<THREE.Object3D>();\n\n const mixer = new AnimationMixer(null!);\n const cleanUps = [] as (() => void)[];\n\n injectNgtDestroy(() => {\n cleanUps.forEach((cleanUp) => cleanUp());\n });\n\n injectBeforeRender(({ delta }) => mixer.update(delta));\n\n const api = <T extends THREE.AnimationClip>(\n clips: T[],\n object?: THREE.Object3D | NgtInjectedRef<THREE.Object3D>\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 if (object) {\n if (is.ref(object)) {\n ref = object;\n } else {\n ref.nativeElement = object;\n }\n }\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 cleanUps.push(() => {\n cached = {} as { [key in T['name']]: THREE.AnimationAction | null };\n Object.values(actions).forEach((action) => {\n if (ref.nativeElement) {\n mixer.uncacheAction(action as THREE.AnimationClip, ref.nativeElement);\n }\n });\n mixer.stopAllAction();\n });\n\n (api as Api<T>).clips = clips;\n (api as Api<T>).actions = actions;\n (api as Api<T>).names = names;\n };\n\n api.ref = ref;\n api.mixer = mixer;\n\n return api as Api<T>;\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
@@ -1,3 +1,4 @@
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';
@@ -0,0 +1,13 @@
1
+ import { NgtInjectedRef } from 'angular-three';
2
+ type Api<T extends THREE.AnimationClip> = {
3
+ (clips: T[], object?: THREE.Object3D | NgtInjectedRef<THREE.Object3D>): void;
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>(): Api<T>;
13
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-soba",
3
- "version": "1.11.1",
3
+ "version": "1.12.1",
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",
@@ -5,5 +5,5 @@
5
5
  },
6
6
  "main": "./src/index.js",
7
7
  "types": "./src/index.d.ts",
8
- "version": "1.11.1"
8
+ "version": "1.12.1"
9
9
  }