angular-three-soba 2.2.0 → 2.3.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.
Files changed (136) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +148 -148
  2. package/abstractions/lib/edges.d.ts +166 -166
  3. package/abstractions/lib/grid.d.ts +30 -30
  4. package/abstractions/lib/line.d.ts +10 -9
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +3 -3
  7. package/abstractions/lib/text-3d.d.ts +38 -38
  8. package/abstractions/lib/text.d.ts +2 -3
  9. package/cameras/lib/cube-camera.d.ts +2 -2
  10. package/cameras/lib/orthographic-camera.d.ts +7 -8
  11. package/cameras/lib/perspective-camera.d.ts +2 -3
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +1 -1
  14. package/esm2022/abstractions/lib/billboard.mjs +3 -3
  15. package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
  16. package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
  17. package/esm2022/abstractions/lib/edges.mjs +30 -34
  18. package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
  19. package/esm2022/abstractions/lib/grid.mjs +3 -3
  20. package/esm2022/abstractions/lib/helper.mjs +18 -20
  21. package/esm2022/abstractions/lib/line.mjs +25 -28
  22. package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
  23. package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
  24. package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
  25. package/esm2022/abstractions/lib/text-3d.mjs +14 -17
  26. package/esm2022/abstractions/lib/text.mjs +11 -16
  27. package/esm2022/cameras/lib/camera-content.mjs +3 -3
  28. package/esm2022/cameras/lib/cube-camera.mjs +18 -27
  29. package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
  30. package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
  31. package/esm2022/controls/lib/camera-controls.mjs +3 -3
  32. package/esm2022/controls/lib/orbit-controls.mjs +3 -3
  33. package/esm2022/controls/lib/scroll-controls.mjs +124 -130
  34. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
  35. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
  36. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
  37. package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
  38. package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
  39. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
  40. package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
  41. package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
  42. package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
  43. package/esm2022/loaders/lib/loader.mjs +3 -3
  44. package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
  45. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
  46. package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
  47. package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
  48. package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
  49. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
  50. package/esm2022/materials/lib/point-material.mjs +3 -3
  51. package/esm2022/misc/lib/bake-shadows.mjs +8 -10
  52. package/esm2022/misc/lib/computed-attribute.mjs +15 -19
  53. package/esm2022/misc/lib/decal.mjs +56 -53
  54. package/esm2022/misc/lib/fbo.mjs +10 -10
  55. package/esm2022/misc/lib/html/html-content.mjs +62 -67
  56. package/esm2022/misc/lib/html/html.mjs +3 -3
  57. package/esm2022/misc/lib/intersect.mjs +6 -9
  58. package/esm2022/misc/lib/sampler.mjs +42 -42
  59. package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
  60. package/esm2022/performances/lib/adaptive-events.mjs +12 -16
  61. package/esm2022/performances/lib/detailed.mjs +14 -18
  62. package/esm2022/performances/lib/instances/instances.mjs +16 -22
  63. package/esm2022/performances/lib/points/points.mjs +19 -25
  64. package/esm2022/performances/lib/segments/segments.mjs +11 -14
  65. package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
  66. package/esm2022/staging/index.mjs +3 -2
  67. package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
  68. package/esm2022/staging/lib/backdrop.mjs +19 -23
  69. package/esm2022/staging/lib/bb-anchor.mjs +3 -3
  70. package/esm2022/staging/lib/bounds.mjs +39 -43
  71. package/esm2022/staging/lib/camera-shake.mjs +14 -18
  72. package/esm2022/staging/lib/caustics.mjs +24 -28
  73. package/esm2022/staging/lib/center.mjs +28 -32
  74. package/esm2022/staging/lib/contact-shadows.mjs +3 -3
  75. package/esm2022/staging/lib/environment/environment.mjs +338 -0
  76. package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
  77. package/esm2022/staging/lib/float.mjs +3 -3
  78. package/esm2022/staging/lib/lightformer.mjs +18 -22
  79. package/esm2022/staging/lib/mask.mjs +8 -12
  80. package/esm2022/staging/lib/matcap-texture.mjs +9 -11
  81. package/esm2022/staging/lib/normal-texture.mjs +9 -11
  82. package/esm2022/staging/lib/randomized-lights.mjs +9 -13
  83. package/esm2022/staging/lib/render-texture.mjs +19 -20
  84. package/esm2022/staging/lib/sky.mjs +3 -3
  85. package/esm2022/staging/lib/spot-light.mjs +32 -40
  86. package/esm2022/staging/lib/stage.mjs +13 -17
  87. package/esm2022/stats/lib/stats.mjs +21 -27
  88. package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
  89. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  90. package/fesm2022/angular-three-soba-cameras.mjs +57 -64
  91. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  92. package/fesm2022/angular-three-soba-controls.mjs +129 -135
  93. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  94. package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
  95. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  96. package/fesm2022/angular-three-soba-loaders.mjs +3 -3
  97. package/fesm2022/angular-three-soba-materials.mjs +52 -62
  98. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  99. package/fesm2022/angular-three-soba-misc.mjs +188 -195
  100. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  101. package/fesm2022/angular-three-soba-performances.mjs +90 -114
  102. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  103. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  104. package/fesm2022/angular-three-soba-staging.mjs +427 -430
  105. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  106. package/fesm2022/angular-three-soba-stats.mjs +20 -26
  107. package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
  108. package/materials/lib/custom-shader-material.d.ts +3 -3
  109. package/materials/lib/mesh-refraction-material.d.ts +3 -3
  110. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  111. package/misc/lib/computed-attribute.d.ts +5 -5
  112. package/misc/lib/decal.d.ts +5 -5
  113. package/misc/lib/html/html-content.d.ts +6 -6
  114. package/misc/lib/html/html.d.ts +1 -1
  115. package/misc/lib/sampler.d.ts +2 -4
  116. package/package.json +12 -12
  117. package/performances/lib/instances/instances.d.ts +11 -11
  118. package/performances/lib/points/points.d.ts +20 -20
  119. package/performances/lib/segments/segments.d.ts +4 -4
  120. package/shaders/lib/mesh-refraction-material.d.ts +2 -5
  121. package/staging/index.d.ts +2 -1
  122. package/staging/lib/camera-shake.d.ts +0 -1
  123. package/staging/lib/caustics.d.ts +1 -1
  124. package/staging/lib/center.d.ts +2 -2
  125. package/staging/lib/contact-shadows.d.ts +1 -1
  126. package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
  127. package/staging/lib/environment/inject-environment.d.ts +33 -0
  128. package/staging/lib/lightformer.d.ts +1 -1
  129. package/staging/lib/mask.d.ts +1 -1
  130. package/staging/lib/matcap-texture.d.ts +0 -1
  131. package/staging/lib/normal-texture.d.ts +0 -1
  132. package/staging/lib/render-texture.d.ts +1 -1
  133. package/staging/lib/sky.d.ts +1 -1
  134. package/staging/lib/spot-light.d.ts +2 -2
  135. package/staging/lib/stage.d.ts +7 -6
  136. package/esm2022/staging/lib/environment.mjs +0 -481
@@ -1,9 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, computed, untracked, input, viewChild, contentChild, TemplateRef, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, afterNextRender } from '@angular/core';
2
+ import { Directive, computed, effect, untracked, input, viewChild, contentChild, TemplateRef, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, afterNextRender } from '@angular/core';
3
3
  import { NgTemplateOutlet } from '@angular/common';
4
4
  import { injectStore, merge, pick, omit, extend, injectBeforeRender, NgtArgs } from 'angular-three';
5
5
  import { assertInjector } from 'ngxtension/assert-injector';
6
- import { injectAutoEffect } from 'ngxtension/auto-effect';
7
6
  import { mergeInputs } from 'ngxtension/inject-inputs';
8
7
  import { WebGLCubeRenderTarget, HalfFloatType, CubeCamera, Group, OrthographicCamera, PerspectiveCamera } from 'three';
9
8
  import { injectFBO } from 'angular-three-soba/misc';
@@ -12,17 +11,16 @@ class NgtsCameraContent {
12
11
  static ngTemplateContextGuard(_, ctx) {
13
12
  return true;
14
13
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[cameraContent]", ngImport: i0 }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCameraContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: NgtsCameraContent, isStandalone: true, selector: "ng-template[cameraContent]", ngImport: i0 }); }
17
16
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCameraContent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCameraContent, decorators: [{
19
18
  type: Directive,
20
19
  args: [{ standalone: true, selector: 'ng-template[cameraContent]' }]
21
20
  }] });
22
21
 
23
22
  function injectCubeCamera(options, { injector } = {}) {
24
23
  return assertInjector(injectCubeCamera, injector, () => {
25
- const autoEffect = injectAutoEffect();
26
24
  const store = injectStore();
27
25
  const gl = store.select('gl');
28
26
  const scene = store.select('scene');
@@ -36,29 +34,23 @@ function injectCubeCamera(options, { injector } = {}) {
36
34
  fbo.texture.type = HalfFloatType;
37
35
  return fbo;
38
36
  });
39
- autoEffect(() => {
37
+ effect((onCleanup) => {
40
38
  const _fbo = fbo();
41
- return () => {
42
- _fbo.dispose();
43
- };
39
+ onCleanup(() => _fbo.dispose());
44
40
  });
45
- const camera = computed(() => {
46
- return new CubeCamera(near(), far(), fbo());
47
- });
48
- const update = computed(() => {
41
+ const camera = computed(() => new CubeCamera(near(), far(), fbo()));
42
+ const update = () => {
49
43
  const [_scene, _gl, _camera, { envMap, fog }] = [scene(), gl(), camera(), untracked(mergedOptions)];
50
44
  let originalFog;
51
45
  let originalBackground;
52
- return () => {
53
- originalFog = _scene.fog;
54
- originalBackground = _scene.background;
55
- _scene.background = envMap || originalBackground;
56
- _scene.fog = fog || originalFog;
57
- _camera.update(_gl, _scene);
58
- _scene.fog = originalFog;
59
- _scene.background = originalBackground;
60
- };
61
- });
46
+ originalFog = _scene.fog;
47
+ originalBackground = _scene.background;
48
+ _scene.background = envMap || originalBackground;
49
+ _scene.fog = fog || originalFog;
50
+ _camera.update(_gl, _scene);
51
+ _scene.fog = originalFog;
52
+ _scene.background = originalBackground;
53
+ };
62
54
  return { fbo, camera, update };
63
55
  });
64
56
  }
@@ -84,17 +76,16 @@ class NgtsCubeCamera {
84
76
  if (!group)
85
77
  return;
86
78
  const frames = this.options().frames;
87
- const update = this.cubeCamera.update();
88
79
  if (frames === Infinity || count < frames) {
89
80
  group.visible = false;
90
- update();
81
+ this.cubeCamera.update();
91
82
  group.visible = true;
92
83
  count++;
93
84
  }
94
85
  });
95
86
  }
96
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCubeCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsCubeCamera, isStandalone: true, selector: "ngts-cube-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCubeCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsCubeCamera, isStandalone: true, selector: "ngts-cube-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
98
89
  <ngt-group [parameters]="parameters()">
99
90
  <ngt-primitive *args="[camera()]" />
100
91
  <ngt-group #group>
@@ -103,7 +94,7 @@ class NgtsCubeCamera {
103
94
  </ngt-group>
104
95
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
96
  }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsCubeCamera, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCubeCamera, decorators: [{
107
98
  type: Component,
108
99
  args: [{
109
100
  selector: 'ngts-cube-camera',
@@ -146,7 +137,6 @@ class NgtsOrthographicCamera {
146
137
  this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
147
138
  this.cameraRef = viewChild.required('camera');
148
139
  this.groupRef = viewChild.required('group');
149
- this.autoEffect = injectAutoEffect();
150
140
  this.store = injectStore();
151
141
  this.camera = this.store.select('camera');
152
142
  this.size = this.store.select('size');
@@ -161,21 +151,23 @@ class NgtsOrthographicCamera {
161
151
  this.texture = pick(this.fbo, 'texture');
162
152
  extend({ OrthographicCamera, Group });
163
153
  afterNextRender(() => {
164
- this.autoEffect(() => {
165
- if (!this.manual()) {
166
- this.cameraRef().nativeElement.updateProjectionMatrix();
167
- }
168
- });
169
- this.autoEffect(() => {
170
- if (this.makeDefault()) {
171
- const oldCam = untracked(this.camera);
172
- this.store.update({ camera: this.cameraRef().nativeElement });
173
- return () => this.store.update(() => ({ camera: oldCam }));
174
- }
175
- return;
176
- });
177
154
  this.cameraRef().nativeElement.updateProjectionMatrix();
178
155
  });
156
+ effect(() => {
157
+ const manual = this.manual();
158
+ if (manual)
159
+ return;
160
+ const camera = this.cameraRef().nativeElement;
161
+ camera.updateProjectionMatrix();
162
+ });
163
+ effect((onCleanup) => {
164
+ const makeDefault = this.makeDefault();
165
+ if (!makeDefault)
166
+ return;
167
+ const oldCam = untracked(this.camera);
168
+ this.store.update({ camera: this.cameraRef().nativeElement });
169
+ onCleanup(() => this.store.update(() => ({ camera: oldCam })));
170
+ });
179
171
  let count = 0;
180
172
  let oldEnvMap = null;
181
173
  injectBeforeRender(({ gl, scene }) => {
@@ -199,8 +191,8 @@ class NgtsOrthographicCamera {
199
191
  }
200
192
  });
201
193
  }
202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
203
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsOrthographicCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsOrthographicCamera, isStandalone: true, selector: "ngts-orthographic-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
204
196
  <ngt-orthographic-camera
205
197
  #camera
206
198
  [left]="left()"
@@ -217,7 +209,7 @@ class NgtsOrthographicCamera {
217
209
  </ngt-group>
218
210
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
219
211
  }
220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsOrthographicCamera, decorators: [{
221
213
  type: Component,
222
214
  args: [{
223
215
  selector: 'ngts-orthographic-camera',
@@ -258,7 +250,6 @@ class NgtsPerspectiveCamera {
258
250
  this.cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });
259
251
  this.cameraRef = viewChild.required('camera');
260
252
  this.groupRef = viewChild.required('group');
261
- this.autoEffect = injectAutoEffect();
262
253
  this.store = injectStore();
263
254
  this.camera = this.store.select('camera');
264
255
  this.size = this.store.select('size');
@@ -269,22 +260,24 @@ class NgtsPerspectiveCamera {
269
260
  this.texture = pick(this.fbo, 'texture');
270
261
  extend({ PerspectiveCamera, Group });
271
262
  afterNextRender(() => {
272
- this.autoEffect(() => {
273
- if (!this.manual()) {
274
- this.cameraRef().nativeElement.aspect = this.size().width / this.size().height;
275
- this.cameraRef().nativeElement.updateProjectionMatrix();
276
- }
277
- });
278
- this.autoEffect(() => {
279
- if (this.makeDefault()) {
280
- const oldCam = untracked(this.camera);
281
- this.store.update({ camera: this.cameraRef().nativeElement });
282
- return () => this.store.update(() => ({ camera: oldCam }));
283
- }
284
- return;
285
- });
286
263
  this.cameraRef().nativeElement.updateProjectionMatrix();
287
264
  });
265
+ effect(() => {
266
+ const manual = this.manual();
267
+ if (manual)
268
+ return;
269
+ const [camera, size] = [this.cameraRef().nativeElement, this.size()];
270
+ camera.aspect = size.width / size.height;
271
+ camera.updateProjectionMatrix();
272
+ });
273
+ effect((onCleanup) => {
274
+ const makeDefault = this.makeDefault();
275
+ if (!makeDefault)
276
+ return;
277
+ const oldCam = untracked(this.camera);
278
+ this.store.update({ camera: this.cameraRef().nativeElement });
279
+ onCleanup(() => this.store.update(() => ({ camera: oldCam })));
280
+ });
288
281
  let count = 0;
289
282
  let oldEnvMap = null;
290
283
  injectBeforeRender(({ gl, scene }) => {
@@ -308,8 +301,8 @@ class NgtsPerspectiveCamera {
308
301
  }
309
302
  });
310
303
  }
311
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPerspectiveCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
312
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
304
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPerspectiveCamera, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
305
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsPerspectiveCamera, isStandalone: true, selector: "ngts-perspective-camera", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "content", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "cameraContent", first: true, predicate: NgtsCameraContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
313
306
  <ngt-perspective-camera #camera [parameters]="parameters()">
314
307
  <ng-container [ngTemplateOutlet]="content() ?? null" />
315
308
  </ngt-perspective-camera>
@@ -319,7 +312,7 @@ class NgtsPerspectiveCamera {
319
312
  </ngt-group>
320
313
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
321
314
  }
322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsPerspectiveCamera, decorators: [{
323
316
  type: Component,
324
317
  args: [{
325
318
  selector: 'ngts-perspective-camera',
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/cube-camera.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, Signal } from '@angular/core';\nimport { Texture } from 'three';\n\n@Directive({ standalone: true, selector: 'ng-template[cameraContent]' })\nexport class NgtsCameraContent {\n\tstatic ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is { $implicit: Signal<Texture> } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tInjector,\n\tinput,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, merge, NgtArgs, NgtGroup, omit, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CubeCamera, Fog, FogExp2, Group, HalfFloatType, Texture, WebGLCubeRenderTarget } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface CubeCameraOptions {\n\t/** Resolution of the FBO, 256 */\n\tresolution?: number;\n\t/** Camera near, 0.1 */\n\tnear?: number;\n\t/** Camera far, 1000 */\n\tfar?: number;\n\t/** Custom environment map that is temporarily set as the scenes background */\n\tenvMap?: Texture;\n\t/** Custom fog that is temporarily set as the scenes fog */\n\tfog?: Fog | FogExp2;\n}\n\nexport function injectCubeCamera(options: () => CubeCameraOptions, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectCubeCamera, injector, () => {\n\t\tconst autoEffect = injectAutoEffect();\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\tconst scene = store.select('scene');\n\n\t\t// backfill the options with default values\n\t\tconst mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');\n\t\tconst resolution = pick(mergedOptions, 'resolution');\n\t\tconst near = pick(mergedOptions, 'near');\n\t\tconst far = pick(mergedOptions, 'far');\n\n\t\tconst fbo = computed(() => {\n\t\t\tconst fbo = new WebGLCubeRenderTarget(resolution());\n\t\t\tfbo.texture.type = HalfFloatType;\n\t\t\treturn fbo;\n\t\t});\n\n\t\tautoEffect(() => {\n\t\t\tconst _fbo = fbo();\n\t\t\treturn () => {\n\t\t\t\t_fbo.dispose();\n\t\t\t};\n\t\t});\n\n\t\tconst camera = computed(() => {\n\t\t\treturn new CubeCamera(near()!, far()!, fbo());\n\t\t});\n\n\t\tconst update = computed(() => {\n\t\t\tconst [_scene, _gl, _camera, { envMap, fog }] = [scene(), gl(), camera(), untracked(mergedOptions)];\n\t\t\tlet originalFog: Fog | FogExp2;\n\t\t\tlet originalBackground: Texture;\n\n\t\t\treturn () => {\n\t\t\t\toriginalFog = _scene.fog as Fog | FogExp2;\n\t\t\t\toriginalBackground = _scene.background as Texture;\n\t\t\t\t_scene.background = envMap || originalBackground;\n\t\t\t\t_scene.fog = fog || originalFog;\n\t\t\t\t_camera.update(_gl, _scene);\n\t\t\t\t_scene.fog = originalFog;\n\t\t\t\t_scene.background = originalBackground;\n\t\t\t};\n\t\t});\n\n\t\treturn { fbo, camera, update };\n\t});\n}\n\nexport interface NgtsCubeCameraOptions extends Partial<NgtGroup>, CubeCameraOptions {\n\tframes: number;\n}\n\nconst defaultOptions: NgtsCubeCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tnear: 0.1,\n\tfar: 1000,\n};\n\n@Component({\n\tselector: 'ngts-cube-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[camera()]\" />\n\t\t\t<ngt-group #group>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCubeCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);\n\n\tprivate cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));\n\n\tcamera = this.cubeCamera.camera;\n\ttexture = pick(this.cubeCamera.fbo, 'texture');\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tcameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\tif (!group) return;\n\n\t\t\tconst frames = this.options().frames;\n\t\t\tconst update = this.cubeCamera.update();\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tupdate();\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tafterNextRender,\n\tcomputed,\n\tcontentChild,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtOrthographicCamera, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, OrthographicCamera, Texture } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsOrthographicCameraOptions extends Partial<NgtOrthographicCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t#camera\n\t\t\t[left]=\"left()\"\n\t\t\t[right]=\"right()\"\n\t\t\t[top]=\"top()\"\n\t\t\t[bottom]=\"bottom()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-orthographic-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'envMap',\n\t\t'makeDefault',\n\t\t'manual',\n\t\t'frames',\n\t\t'resolution',\n\t\t'left',\n\t\t'top',\n\t\t'bottom',\n\t\t'right',\n\t]);\n\n\tcontent = contentChild(TemplateRef);\n\tcameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<OrthographicCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\n\tprivate camera = this.store.select('camera');\n\tsize = this.store.select('size');\n\n\tleft = computed(() => this.options().left ?? this.size().width / -2);\n\tright = computed(() => this.options().right ?? this.size().width / 2);\n\ttop = computed(() => this.options().top ?? this.size().height / 2);\n\tbottom = computed(() => this.options().bottom ?? this.size().height / -2);\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\ttexture = pick(this.fbo, 'texture');\n\n\tconstructor() {\n\t\textend({ OrthographicCamera, Group });\n\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (!this.manual()) {\n\t\t\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (this.makeDefault()) {\n\t\t\t\t\tconst oldCam = untracked(this.camera);\n\t\t\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\t\t\treturn () => this.store.update(() => ({ camera: oldCam }));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t});\n\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tafterNextRender,\n\tcontentChild,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtPerspectiveCamera, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, PerspectiveCamera, Texture } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<NgtPerspectiveCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-perspective-camera #camera [parameters]=\"parameters()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-perspective-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);\n\n\tcontent = contentChild(TemplateRef);\n\tcameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<PerspectiveCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate autoEffect = injectAutoEffect();\n\tprivate store = injectStore();\n\n\tprivate camera = this.store.select('camera');\n\tprivate size = this.store.select('size');\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\ttexture = pick(this.fbo, 'texture');\n\n\tconstructor() {\n\t\textend({ PerspectiveCamera, Group });\n\n\t\tafterNextRender(() => {\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (!this.manual()) {\n\t\t\t\t\tthis.cameraRef().nativeElement.aspect = this.size().width / this.size().height;\n\t\t\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.autoEffect(() => {\n\t\t\t\tif (this.makeDefault()) {\n\t\t\t\t\tconst oldCam = untracked(this.camera);\n\t\t\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\t\t\treturn () => this.store.update(() => ({ camera: oldCam }));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t});\n\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/cube-camera.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive, Signal } from '@angular/core';\nimport { Texture } from 'three';\n\n@Directive({ standalone: true, selector: 'ng-template[cameraContent]' })\nexport class NgtsCameraContent {\n\tstatic ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is { $implicit: Signal<Texture> } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, merge, NgtArgs, NgtGroup, omit, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { CubeCamera, Fog, FogExp2, Group, HalfFloatType, Texture, WebGLCubeRenderTarget } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface CubeCameraOptions {\n\t/** Resolution of the FBO, 256 */\n\tresolution?: number;\n\t/** Camera near, 0.1 */\n\tnear?: number;\n\t/** Camera far, 1000 */\n\tfar?: number;\n\t/** Custom environment map that is temporarily set as the scenes background */\n\tenvMap?: Texture;\n\t/** Custom fog that is temporarily set as the scenes fog */\n\tfog?: Fog | FogExp2;\n}\n\nexport function injectCubeCamera(options: () => CubeCameraOptions, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectCubeCamera, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst gl = store.select('gl');\n\t\tconst scene = store.select('scene');\n\n\t\t// backfill the options with default values\n\t\tconst mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');\n\t\tconst resolution = pick(mergedOptions, 'resolution');\n\t\tconst near = pick(mergedOptions, 'near');\n\t\tconst far = pick(mergedOptions, 'far');\n\n\t\tconst fbo = computed(() => {\n\t\t\tconst fbo = new WebGLCubeRenderTarget(resolution());\n\t\t\tfbo.texture.type = HalfFloatType;\n\t\t\treturn fbo;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _fbo = fbo();\n\t\t\tonCleanup(() => _fbo.dispose());\n\t\t});\n\n\t\tconst camera = computed(() => new CubeCamera(near()!, far()!, fbo()));\n\t\tconst update = () => {\n\t\t\tconst [_scene, _gl, _camera, { envMap, fog }] = [scene(), gl(), camera(), untracked(mergedOptions)];\n\t\t\tlet originalFog: Fog | FogExp2;\n\t\t\tlet originalBackground: Texture;\n\n\t\t\toriginalFog = _scene.fog as Fog | FogExp2;\n\t\t\toriginalBackground = _scene.background as Texture;\n\t\t\t_scene.background = envMap || originalBackground;\n\t\t\t_scene.fog = fog || originalFog;\n\t\t\t_camera.update(_gl, _scene);\n\t\t\t_scene.fog = originalFog;\n\t\t\t_scene.background = originalBackground;\n\t\t};\n\n\t\treturn { fbo, camera, update };\n\t});\n}\n\nexport interface NgtsCubeCameraOptions extends Partial<NgtGroup>, CubeCameraOptions {\n\tframes: number;\n}\n\nconst defaultOptions: NgtsCubeCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tnear: 0.1,\n\tfar: 1000,\n};\n\n@Component({\n\tselector: 'ngts-cube-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[camera()]\" />\n\t\t\t<ngt-group #group>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCubeCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);\n\n\tprivate cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));\n\n\tcamera = this.cubeCamera.camera;\n\ttexture = pick(this.cubeCamera.fbo, 'texture');\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tcameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\tif (!group) return;\n\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tthis.cubeCamera.update();\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tafterNextRender,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtOrthographicCamera, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, OrthographicCamera, Texture } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsOrthographicCameraOptions extends Partial<NgtOrthographicCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t#camera\n\t\t\t[left]=\"left()\"\n\t\t\t[right]=\"right()\"\n\t\t\t[top]=\"top()\"\n\t\t\t[bottom]=\"bottom()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-orthographic-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'envMap',\n\t\t'makeDefault',\n\t\t'manual',\n\t\t'frames',\n\t\t'resolution',\n\t\t'left',\n\t\t'top',\n\t\t'bottom',\n\t\t'right',\n\t]);\n\n\tcontent = contentChild(TemplateRef);\n\tcameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<OrthographicCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate camera = this.store.select('camera');\n\tprotected size = this.store.select('size');\n\n\tprotected left = computed(() => this.options().left ?? this.size().width / -2);\n\tprotected right = computed(() => this.options().right ?? this.size().width / 2);\n\tprotected top = computed(() => this.options().top ?? this.size().height / 2);\n\tprotected bottom = computed(() => this.options().bottom ?? this.size().height / -2);\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\tprotected texture = pick(this.fbo, 'texture');\n\n\tconstructor() {\n\t\textend({ OrthographicCamera, Group });\n\n\t\tafterNextRender(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = untracked(this.camera);\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tafterNextRender,\n\tcontentChild,\n\teffect,\n\tinput,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { NgtPerspectiveCamera, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Color, Group, PerspectiveCamera, Texture } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<NgtPerspectiveCamera> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-perspective-camera #camera [parameters]=\"parameters()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-perspective-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container [ngTemplateOutlet]=\"cameraContent() ?? null\" [ngTemplateOutletContext]=\"{ $implicit: texture }\" />\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['envMap', 'makeDefault', 'manual', 'frames', 'resolution']);\n\n\tcontent = contentChild(TemplateRef);\n\tcameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<PerspectiveCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate camera = this.store.select('camera');\n\tprivate size = this.store.select('size');\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprivate fbo = injectFBO(() => ({ width: this.resolution() }));\n\tprotected texture = pick(this.fbo, 'texture');\n\n\tconstructor() {\n\t\textend({ PerspectiveCamera, Group });\n\n\t\tafterNextRender(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\t\t\tconst [camera, size] = [this.cameraRef().nativeElement, this.size()];\n\t\t\tcamera.aspect = size.width / size.height;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = untracked(this.camera);\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: Color | Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo(),\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}