angular-three-soba 2.0.0-beta.21 → 2.0.0-beta.224

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 (277) hide show
  1. package/controls/orbit-controls/orbit-controls.d.ts +13 -19
  2. package/esm2022/controls/orbit-controls/orbit-controls.mjs +31 -75
  3. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +14 -8
  4. package/esm2022/loaders/loader/loader.mjs +44 -92
  5. package/esm2022/loaders/progress/progress.mjs +8 -9
  6. package/esm2022/loaders/texture-loader/texture-loader.mjs +20 -16
  7. package/fesm2022/angular-three-soba-controls.mjs +30 -74
  8. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  9. package/fesm2022/angular-three-soba-loaders.mjs +78 -117
  10. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  11. package/loaders/gltf-loader/gltf-loader.d.ts +12 -1
  12. package/loaders/loader/loader.d.ts +8 -21
  13. package/loaders/texture-loader/texture-loader.d.ts +9 -3
  14. package/metadata.json +1 -1
  15. package/package.json +4 -63
  16. package/web-types.json +1 -1
  17. package/abstractions/README.md +0 -3
  18. package/abstractions/billboard/billboard.d.ts +0 -28
  19. package/abstractions/detailed/detailed.d.ts +0 -26
  20. package/abstractions/edges/edges.d.ts +0 -34
  21. package/abstractions/grid/grid.d.ts +0 -50
  22. package/abstractions/index.d.ts +0 -6
  23. package/abstractions/text/text.d.ts +0 -82
  24. package/abstractions/text-3d/text-3d.d.ts +0 -84
  25. package/assets/distort.vert.glsl +0 -1
  26. package/cameras/README.md +0 -3
  27. package/cameras/camera/camera-content.d.ts +0 -13
  28. package/cameras/camera/camera.d.ts +0 -26
  29. package/cameras/cube-camera/cube-camera.d.ts +0 -69
  30. package/cameras/index.d.ts +0 -4
  31. package/cameras/orthographic-camera/orthographic-camera.d.ts +0 -37
  32. package/cameras/perspective-camera/perspective-camera.d.ts +0 -18
  33. package/esm2022/abstractions/angular-three-soba-abstractions.mjs +0 -5
  34. package/esm2022/abstractions/billboard/billboard.mjs +0 -74
  35. package/esm2022/abstractions/detailed/detailed.mjs +0 -64
  36. package/esm2022/abstractions/edges/edges.mjs +0 -88
  37. package/esm2022/abstractions/grid/grid.mjs +0 -180
  38. package/esm2022/abstractions/index.mjs +0 -7
  39. package/esm2022/abstractions/text/text.mjs +0 -274
  40. package/esm2022/abstractions/text-3d/text-3d.mjs +0 -172
  41. package/esm2022/cameras/angular-three-soba-cameras.mjs +0 -5
  42. package/esm2022/cameras/camera/camera-content.mjs +0 -21
  43. package/esm2022/cameras/camera/camera.mjs +0 -77
  44. package/esm2022/cameras/cube-camera/cube-camera.mjs +0 -161
  45. package/esm2022/cameras/index.mjs +0 -5
  46. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +0 -102
  47. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +0 -46
  48. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +0 -5
  49. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +0 -197
  50. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  51. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -93
  52. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -150
  53. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +0 -66
  54. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -71
  55. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -195
  56. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -272
  57. package/esm2022/gizmos/index.mjs +0 -4
  58. package/esm2022/materials/angular-three-soba-materials.mjs +0 -5
  59. package/esm2022/materials/index.mjs +0 -7
  60. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +0 -82
  61. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +0 -367
  62. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +0 -171
  63. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +0 -278
  64. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +0 -68
  65. package/esm2022/materials/point-material/point-material.mjs +0 -50
  66. package/esm2022/misc/angular-three-soba-misc.mjs +0 -5
  67. package/esm2022/misc/animations/animations.mjs +0 -59
  68. package/esm2022/misc/bake-shadows/bake-shadows.mjs +0 -24
  69. package/esm2022/misc/caustics/caustics.mjs +0 -387
  70. package/esm2022/misc/decal/decal.mjs +0 -187
  71. package/esm2022/misc/depth-buffer/depth-buffer.mjs +0 -44
  72. package/esm2022/misc/example/example.mjs +0 -160
  73. package/esm2022/misc/fbo/fbo.mjs +0 -47
  74. package/esm2022/misc/html/html-wrapper.mjs +0 -478
  75. package/esm2022/misc/html/html.mjs +0 -304
  76. package/esm2022/misc/index.mjs +0 -14
  77. package/esm2022/misc/sampler/sampler.mjs +0 -142
  78. package/esm2022/misc/shadow/shadow.mjs +0 -111
  79. package/esm2022/misc/stats-gl/stats-gl.mjs +0 -61
  80. package/esm2022/misc/trail/trail.mjs +0 -209
  81. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +0 -17
  82. package/esm2022/misc/trail-texture/trail-texture.mjs +0 -106
  83. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +0 -5
  84. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +0 -64
  85. package/esm2022/modifiers/index.mjs +0 -2
  86. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +0 -44
  87. package/esm2022/performances/adaptive-events/adaptive-events.mjs +0 -27
  88. package/esm2022/performances/angular-three-soba-performances.mjs +0 -5
  89. package/esm2022/performances/index.mjs +0 -8
  90. package/esm2022/performances/instances/instances.mjs +0 -220
  91. package/esm2022/performances/instances/position-mesh.mjs +0 -52
  92. package/esm2022/performances/points/points-input.mjs +0 -64
  93. package/esm2022/performances/points/points.mjs +0 -326
  94. package/esm2022/performances/points/position-point.mjs +0 -54
  95. package/esm2022/performances/segments/segment-object.mjs +0 -9
  96. package/esm2022/performances/segments/segments.mjs +0 -182
  97. package/esm2022/shaders/angular-three-soba-shaders.mjs +0 -5
  98. package/esm2022/shaders/blur-pass/blur-pass.mjs +0 -61
  99. package/esm2022/shaders/caustics/caustics-material.mjs +0 -130
  100. package/esm2022/shaders/caustics/caustics-projection-material.mjs +0 -31
  101. package/esm2022/shaders/convolution-material/convolution-material.mjs +0 -94
  102. package/esm2022/shaders/discard-material/discard-material.mjs +0 -3
  103. package/esm2022/shaders/grid-material/grid-material.mjs +0 -77
  104. package/esm2022/shaders/index.mjs +0 -18
  105. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +0 -56
  106. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +0 -223
  107. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +0 -170
  108. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +0 -268
  109. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +0 -37
  110. package/esm2022/shaders/shader-material/shader-material.mjs +0 -34
  111. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +0 -25
  112. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +0 -33
  113. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +0 -86
  114. package/esm2022/shaders/star-field-material/star-field-material.mjs +0 -33
  115. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +0 -247
  116. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +0 -267
  117. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +0 -108
  118. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +0 -206
  119. package/esm2022/staging/angular-three-soba-staging.mjs +0 -5
  120. package/esm2022/staging/backdrop/backdrop.mjs +0 -77
  121. package/esm2022/staging/bb-anchor/bb-anchor.mjs +0 -69
  122. package/esm2022/staging/bounds/bounds.mjs +0 -308
  123. package/esm2022/staging/camera-shake/camera-shake.mjs +0 -123
  124. package/esm2022/staging/center/center.mjs +0 -165
  125. package/esm2022/staging/cloud/cloud.mjs +0 -158
  126. package/esm2022/staging/contact-shadows/contact-shadows.mjs +0 -246
  127. package/esm2022/staging/environment/assets.mjs +0 -13
  128. package/esm2022/staging/environment/environment-cube.mjs +0 -47
  129. package/esm2022/staging/environment/environment-ground.mjs +0 -41
  130. package/esm2022/staging/environment/environment-input.mjs +0 -119
  131. package/esm2022/staging/environment/environment-map.mjs +0 -53
  132. package/esm2022/staging/environment/environment-portal.mjs +0 -113
  133. package/esm2022/staging/environment/environment.mjs +0 -61
  134. package/esm2022/staging/environment/utils.mjs +0 -106
  135. package/esm2022/staging/float/float.mjs +0 -94
  136. package/esm2022/staging/index.mjs +0 -22
  137. package/esm2022/staging/matcap-texture/matcap-texture.mjs +0 -64
  138. package/esm2022/staging/normal-texture/normal-texture.mjs +0 -53
  139. package/esm2022/staging/sky/sky.mjs +0 -119
  140. package/esm2022/staging/sparkles/sparkles.mjs +0 -164
  141. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +0 -63
  142. package/esm2022/staging/spot-light/shadow-mesh.mjs +0 -266
  143. package/esm2022/staging/spot-light/spot-light-input.mjs +0 -84
  144. package/esm2022/staging/spot-light/spot-light.mjs +0 -81
  145. package/esm2022/staging/spot-light/volumetric-mesh.mjs +0 -98
  146. package/esm2022/staging/stage/stage.mjs +0 -389
  147. package/esm2022/staging/stars/stars.mjs +0 -147
  148. package/esm2022/staging/wireframe/wireframe-input.mjs +0 -191
  149. package/esm2022/staging/wireframe/wireframe.mjs +0 -228
  150. package/esm2022/utils/angular-three-soba-utils.mjs +0 -5
  151. package/esm2022/utils/content/content.mjs +0 -15
  152. package/esm2022/utils/index.mjs +0 -2
  153. package/fesm2022/angular-three-soba-abstractions.mjs +0 -838
  154. package/fesm2022/angular-three-soba-abstractions.mjs.map +0 -1
  155. package/fesm2022/angular-three-soba-cameras.mjs +0 -394
  156. package/fesm2022/angular-three-soba-cameras.mjs.map +0 -1
  157. package/fesm2022/angular-three-soba-gizmos.mjs +0 -1043
  158. package/fesm2022/angular-three-soba-gizmos.mjs.map +0 -1
  159. package/fesm2022/angular-three-soba-materials.mjs +0 -1001
  160. package/fesm2022/angular-three-soba-materials.mjs.map +0 -1
  161. package/fesm2022/angular-three-soba-misc.mjs +0 -2278
  162. package/fesm2022/angular-three-soba-misc.mjs.map +0 -1
  163. package/fesm2022/angular-three-soba-modifiers.mjs +0 -71
  164. package/fesm2022/angular-three-soba-modifiers.mjs.map +0 -1
  165. package/fesm2022/angular-three-soba-performances.mjs +0 -956
  166. package/fesm2022/angular-three-soba-performances.mjs.map +0 -1
  167. package/fesm2022/angular-three-soba-shaders.mjs +0 -1589
  168. package/fesm2022/angular-three-soba-shaders.mjs.map +0 -1
  169. package/fesm2022/angular-three-soba-staging.mjs +0 -4162
  170. package/fesm2022/angular-three-soba-staging.mjs.map +0 -1
  171. package/fesm2022/angular-three-soba-utils.mjs +0 -22
  172. package/fesm2022/angular-three-soba-utils.mjs.map +0 -1
  173. package/gizmos/README.md +0 -3
  174. package/gizmos/gizmo-helper/gizmo-helper.d.ts +0 -69
  175. package/gizmos/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  176. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  177. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -29
  178. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +0 -33
  179. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -10
  180. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -40
  181. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -30
  182. package/gizmos/index.d.ts +0 -3
  183. package/materials/README.md +0 -3
  184. package/materials/index.d.ts +0 -6
  185. package/materials/mesh-distort-material/mesh-distort-material.d.ts +0 -40
  186. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +0 -99
  187. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +0 -62
  188. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +0 -107
  189. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +0 -29
  190. package/materials/point-material/point-material.d.ts +0 -24
  191. package/misc/README.md +0 -3
  192. package/misc/animations/animations.d.ts +0 -15
  193. package/misc/bake-shadows/bake-shadows.d.ts +0 -6
  194. package/misc/caustics/caustics.d.ts +0 -87
  195. package/misc/decal/decal.d.ts +0 -49
  196. package/misc/depth-buffer/depth-buffer.d.ts +0 -9
  197. package/misc/example/example.d.ts +0 -81
  198. package/misc/fbo/fbo.d.ts +0 -17
  199. package/misc/html/html-wrapper.d.ts +0 -559
  200. package/misc/html/html.d.ts +0 -214
  201. package/misc/index.d.ts +0 -13
  202. package/misc/sampler/sampler.d.ts +0 -67
  203. package/misc/shadow/shadow.d.ts +0 -37
  204. package/misc/stats-gl/stats-gl.d.ts +0 -24
  205. package/misc/trail/trail.d.ts +0 -57
  206. package/misc/trail-texture/inject-trail-texture.d.ts +0 -9
  207. package/misc/trail-texture/trail-texture.d.ts +0 -50
  208. package/modifiers/README.md +0 -3
  209. package/modifiers/curve-modifier/curve-modifier.d.ts +0 -23
  210. package/modifiers/index.d.ts +0 -1
  211. package/performances/README.md +0 -3
  212. package/performances/adaptive-dpr/adaptive-dpr.d.ts +0 -14
  213. package/performances/adaptive-events/adaptive-events.d.ts +0 -9
  214. package/performances/index.d.ts +0 -7
  215. package/performances/instances/instances.d.ts +0 -79
  216. package/performances/instances/position-mesh.d.ts +0 -10
  217. package/performances/points/points-input.d.ts +0 -32
  218. package/performances/points/points.d.ts +0 -92
  219. package/performances/points/position-point.d.ts +0 -11
  220. package/performances/segments/segment-object.d.ts +0 -7
  221. package/performances/segments/segments.d.ts +0 -124
  222. package/shaders/README.md +0 -3
  223. package/shaders/blur-pass/blur-pass.d.ts +0 -23
  224. package/shaders/caustics/caustics-material.d.ts +0 -4
  225. package/shaders/caustics/caustics-projection-material.d.ts +0 -4
  226. package/shaders/convolution-material/convolution-material.d.ts +0 -7
  227. package/shaders/discard-material/discard-material.d.ts +0 -3
  228. package/shaders/grid-material/grid-material.d.ts +0 -37
  229. package/shaders/index.d.ts +0 -17
  230. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +0 -295
  231. package/shaders/mesh-reflector-material/mesh-reflector-material.d.ts +0 -50
  232. package/shaders/mesh-refraction-material/mesh-refraction-material.d.ts +0 -4
  233. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +0 -25
  234. package/shaders/mesh-wobble-material/mesh-wobble-material.d.ts +0 -16
  235. package/shaders/shader-material/shader-material.d.ts +0 -6
  236. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +0 -19
  237. package/shaders/sparkles-material/sparkles-material.d.ts +0 -17
  238. package/shaders/spot-light-material/spot-light-material.d.ts +0 -13
  239. package/shaders/star-field-material/star-field-material.d.ts +0 -13
  240. package/shaders/wireframe-material/wireframe-material.d.ts +0 -58
  241. package/staging/README.md +0 -3
  242. package/staging/accumulative-shadows/accumulative-shadows.d.ts +0 -146
  243. package/staging/accumulative-shadows/progressive-light-map.d.ts +0 -34
  244. package/staging/accumulative-shadows/randomized-lights.d.ts +0 -90
  245. package/staging/backdrop/backdrop.d.ts +0 -30
  246. package/staging/bb-anchor/bb-anchor.d.ts +0 -27
  247. package/staging/bounds/bounds.d.ts +0 -134
  248. package/staging/camera-shake/camera-shake.d.ts +0 -43
  249. package/staging/center/center.d.ts +0 -70
  250. package/staging/cloud/cloud.d.ts +0 -51
  251. package/staging/contact-shadows/contact-shadows.d.ts +0 -70
  252. package/staging/environment/assets.d.ts +0 -13
  253. package/staging/environment/environment-cube.d.ts +0 -15
  254. package/staging/environment/environment-ground.d.ts +0 -13
  255. package/staging/environment/environment-input.d.ts +0 -68
  256. package/staging/environment/environment-map.d.ts +0 -16
  257. package/staging/environment/environment-portal.d.ts +0 -18
  258. package/staging/environment/environment.d.ts +0 -8
  259. package/staging/environment/utils.d.ts +0 -7
  260. package/staging/float/float.d.ts +0 -31
  261. package/staging/index.d.ts +0 -21
  262. package/staging/matcap-texture/matcap-texture.d.ts +0 -13
  263. package/staging/normal-texture/normal-texture.d.ts +0 -16
  264. package/staging/sky/sky.d.ts +0 -48
  265. package/staging/sparkles/sparkles.d.ts +0 -63
  266. package/staging/spot-light/shadow-mesh-input.d.ts +0 -29
  267. package/staging/spot-light/shadow-mesh.d.ts +0 -37
  268. package/staging/spot-light/spot-light-input.d.ts +0 -38
  269. package/staging/spot-light/spot-light.d.ts +0 -39
  270. package/staging/spot-light/volumetric-mesh.d.ts +0 -24
  271. package/staging/stage/stage.d.ts +0 -130
  272. package/staging/stars/stars.d.ts +0 -45
  273. package/staging/wireframe/wireframe-input.d.ts +0 -65
  274. package/staging/wireframe/wireframe.d.ts +0 -28
  275. package/utils/README.md +0 -3
  276. package/utils/content/content.d.ts +0 -8
  277. package/utils/index.d.ts +0 -1
@@ -1,246 +0,0 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
2
- import { extend, injectBeforeRender, injectNgtRef, injectNgtStore, NgtArgs, signalStore, } from 'angular-three';
3
- import * as THREE from 'three';
4
- import { Group, Mesh, MeshBasicMaterial, OrthographicCamera } from 'three';
5
- import { HorizontalBlurShader, VerticalBlurShader } from 'three-stdlib';
6
- import * as i0 from "@angular/core";
7
- extend({ Group, Mesh, MeshBasicMaterial, OrthographicCamera });
8
- export class NgtsContactShadows {
9
- set _opacity(opacity) {
10
- this.inputs.set({ opacity });
11
- }
12
- set _width(width) {
13
- this.inputs.set({ width });
14
- }
15
- set _height(height) {
16
- this.inputs.set({ height });
17
- }
18
- set _blur(blur) {
19
- this.inputs.set({ blur });
20
- }
21
- set _far(far) {
22
- this.inputs.set({ far });
23
- }
24
- set _smooth(smooth) {
25
- this.inputs.set({ smooth });
26
- }
27
- set _resolution(resolution) {
28
- this.inputs.set({ resolution });
29
- }
30
- set _frames(frames) {
31
- this.inputs.set({ frames });
32
- }
33
- set _scale(scale) {
34
- this.inputs.set({ scale });
35
- }
36
- set _color(color) {
37
- this.inputs.set({ color });
38
- }
39
- set _depthWrite(depthWrite) {
40
- this.inputs.set({ depthWrite });
41
- }
42
- set _renderOrder(renderOrder) {
43
- this.inputs.set({ renderOrder });
44
- }
45
- constructor() {
46
- this.inputs = signalStore({
47
- scale: 10,
48
- frames: Infinity,
49
- opacity: 1,
50
- width: 1,
51
- height: 1,
52
- blur: 1,
53
- far: 10,
54
- resolution: 512,
55
- smooth: true,
56
- color: '#000000',
57
- depthWrite: false,
58
- renderOrder: 0,
59
- });
60
- this.contactShadowsRef = injectNgtRef();
61
- this.Math = Math;
62
- this.store = injectNgtStore();
63
- this.shadowCameraRef = injectNgtRef();
64
- this.scale = this.inputs.select('scale');
65
- this.width = this.inputs.select('width');
66
- this.height = this.inputs.select('height');
67
- this.far = this.inputs.select('far');
68
- this.resolution = this.inputs.select('resolution');
69
- this.color = this.inputs.select('color');
70
- this.scaledWidth = computed(() => {
71
- const scale = this.scale();
72
- return this.width() * (Array.isArray(scale) ? scale[0] : scale || 1);
73
- });
74
- this.scaledHeight = computed(() => {
75
- const scale = this.scale();
76
- return this.height() * (Array.isArray(scale) ? scale[1] : scale || 1);
77
- });
78
- this.renderOrder = this.inputs.select('renderOrder');
79
- this.opacity = this.inputs.select('opacity');
80
- this.depthWrite = this.inputs.select('depthWrite');
81
- this.cameraArgs = computed(() => {
82
- const width = this.scaledWidth();
83
- const height = this.scaledHeight();
84
- return [-width / 2, width / 2, height / 2, -height / 2, 0, this.far()];
85
- });
86
- this.contactShadows = computed(() => {
87
- const color = this.color();
88
- const resolution = this.resolution();
89
- const renderTarget = new THREE.WebGLRenderTarget(resolution, resolution);
90
- const renderTargetBlur = new THREE.WebGLRenderTarget(resolution, resolution);
91
- renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false;
92
- const planeGeometry = new THREE.PlaneGeometry(this.scaledWidth(), this.scaledHeight()).rotateX(Math.PI / 2);
93
- const blurPlane = new Mesh(planeGeometry);
94
- const depthMaterial = new THREE.MeshDepthMaterial();
95
- depthMaterial.depthTest = depthMaterial.depthWrite = false;
96
- depthMaterial.onBeforeCompile = (shader) => {
97
- shader.uniforms = {
98
- ...shader.uniforms,
99
- ucolor: { value: new THREE.Color(color) },
100
- };
101
- shader.fragmentShader = shader.fragmentShader.replace(`void main() {`, //
102
- `uniform vec3 ucolor;
103
- void main() {
104
- `);
105
- shader.fragmentShader = shader.fragmentShader.replace('vec4( vec3( 1.0 - fragCoordZ ), opacity );',
106
- // Colorize the shadow, multiply by the falloff so that the center can remain darker
107
- 'vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );');
108
- };
109
- const horizontalBlurMaterial = new THREE.ShaderMaterial(HorizontalBlurShader);
110
- const verticalBlurMaterial = new THREE.ShaderMaterial(VerticalBlurShader);
111
- verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false;
112
- return {
113
- renderTarget,
114
- planeGeometry,
115
- depthMaterial,
116
- blurPlane,
117
- horizontalBlurMaterial,
118
- verticalBlurMaterial,
119
- renderTargetBlur,
120
- };
121
- });
122
- injectBeforeRender(this.beforeRender.bind(this, 0));
123
- }
124
- beforeRender(count, { scene, gl }) {
125
- const { frames = Infinity, blur = 1, smooth = true } = this.inputs.get();
126
- const { depthMaterial, renderTarget } = this.contactShadows();
127
- const shadowCamera = this.shadowCameraRef.nativeElement;
128
- if (shadowCamera && (frames === Infinity || count < frames)) {
129
- const initialBackground = scene.background;
130
- scene.background = null;
131
- const initialOverrideMaterial = scene.overrideMaterial;
132
- scene.overrideMaterial = depthMaterial;
133
- gl.setRenderTarget(renderTarget);
134
- gl.render(scene, shadowCamera);
135
- scene.overrideMaterial = initialOverrideMaterial;
136
- this.blurShadows(blur);
137
- if (smooth)
138
- this.blurShadows(blur * 0.4);
139
- gl.setRenderTarget(null);
140
- scene.background = initialBackground;
141
- count++;
142
- }
143
- }
144
- blurShadows(blur) {
145
- const { blurPlane, horizontalBlurMaterial, verticalBlurMaterial, renderTargetBlur, renderTarget } = this.contactShadows();
146
- const gl = this.store.get('gl');
147
- const shadowCamera = this.shadowCameraRef.nativeElement;
148
- blurPlane.visible = true;
149
- blurPlane.material = horizontalBlurMaterial;
150
- horizontalBlurMaterial.uniforms['tDiffuse'].value = renderTarget.texture;
151
- horizontalBlurMaterial.uniforms['h'].value = (blur * 1) / 256;
152
- gl.setRenderTarget(renderTargetBlur);
153
- gl.render(blurPlane, shadowCamera);
154
- blurPlane.material = verticalBlurMaterial;
155
- verticalBlurMaterial.uniforms['tDiffuse'].value = renderTargetBlur.texture;
156
- verticalBlurMaterial.uniforms['v'].value = (blur * 1) / 256;
157
- gl.setRenderTarget(renderTarget);
158
- gl.render(blurPlane, shadowCamera);
159
- blurPlane.visible = false;
160
- }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsContactShadows, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsContactShadows, isStandalone: true, selector: "ngts-contact-shadows", inputs: { contactShadowsRef: "contactShadowsRef", _opacity: ["opacity", "_opacity"], _width: ["width", "_width"], _height: ["height", "_height"], _blur: ["blur", "_blur"], _far: ["far", "_far"], _smooth: ["smooth", "_smooth"], _resolution: ["resolution", "_resolution"], _frames: ["frames", "_frames"], _scale: ["scale", "_scale"], _color: ["color", "_color"], _depthWrite: ["depthWrite", "_depthWrite"], _renderOrder: ["renderOrder", "_renderOrder"] }, ngImport: i0, template: `
163
- <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
164
- <ngt-mesh
165
- [renderOrder]="renderOrder() ?? 0"
166
- [geometry]="contactShadows().planeGeometry"
167
- [scale]="[1, -1, 1]"
168
- [rotation]="[-Math.PI / 2, 0, 0]"
169
- >
170
- <ngt-mesh-basic-material
171
- [map]="contactShadows().renderTarget.texture"
172
- [transparent]="true"
173
- [opacity]="opacity() ?? 1"
174
- [depthWrite]="depthWrite() ?? false"
175
- />
176
- </ngt-mesh>
177
- <ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
178
- </ngt-group>
179
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
180
- }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsContactShadows, decorators: [{
182
- type: Component,
183
- args: [{
184
- selector: 'ngts-contact-shadows',
185
- standalone: true,
186
- template: `
187
- <ngt-group ngtCompound [ref]="contactShadowsRef" [rotation]="[Math.PI / 2, 0, 0]">
188
- <ngt-mesh
189
- [renderOrder]="renderOrder() ?? 0"
190
- [geometry]="contactShadows().planeGeometry"
191
- [scale]="[1, -1, 1]"
192
- [rotation]="[-Math.PI / 2, 0, 0]"
193
- >
194
- <ngt-mesh-basic-material
195
- [map]="contactShadows().renderTarget.texture"
196
- [transparent]="true"
197
- [opacity]="opacity() ?? 1"
198
- [depthWrite]="depthWrite() ?? false"
199
- />
200
- </ngt-mesh>
201
- <ngt-orthographic-camera *args="cameraArgs()" [ref]="shadowCameraRef" />
202
- </ngt-group>
203
- `,
204
- imports: [NgtArgs],
205
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
206
- }]
207
- }], ctorParameters: function () { return []; }, propDecorators: { contactShadowsRef: [{
208
- type: Input
209
- }], _opacity: [{
210
- type: Input,
211
- args: [{ alias: 'opacity' }]
212
- }], _width: [{
213
- type: Input,
214
- args: [{ alias: 'width' }]
215
- }], _height: [{
216
- type: Input,
217
- args: [{ alias: 'height' }]
218
- }], _blur: [{
219
- type: Input,
220
- args: [{ alias: 'blur' }]
221
- }], _far: [{
222
- type: Input,
223
- args: [{ alias: 'far' }]
224
- }], _smooth: [{
225
- type: Input,
226
- args: [{ alias: 'smooth' }]
227
- }], _resolution: [{
228
- type: Input,
229
- args: [{ alias: 'resolution' }]
230
- }], _frames: [{
231
- type: Input,
232
- args: [{ alias: 'frames' }]
233
- }], _scale: [{
234
- type: Input,
235
- args: [{ alias: 'scale' }]
236
- }], _color: [{
237
- type: Input,
238
- args: [{ alias: 'color' }]
239
- }], _depthWrite: [{
240
- type: Input,
241
- args: [{ alias: 'depthWrite' }]
242
- }], _renderOrder: [{
243
- type: Input,
244
- args: [{ alias: 'renderOrder' }]
245
- }] } });
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1zaGFkb3dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2NvbnRhY3Qtc2hhZG93cy9jb250YWN0LXNoYWRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFDTixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixjQUFjLEVBQ2QsT0FBTyxFQUNQLFdBQVcsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRXhFLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBa0QvRCxNQUFNLE9BQU8sa0JBQWtCO0lBa0I5QixJQUFpQyxRQUFRLENBQUMsT0FBZTtRQUN4RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQStCLE1BQU0sQ0FBQyxLQUFhO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBZ0MsT0FBTyxDQUFDLE1BQWM7UUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFF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QkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSUksS0FBSztzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBSUssSUFBSTtzQkFBaEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBSVMsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSVUsV0FBVztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBSUUsT0FBTztzQkFBdEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7Z0JBSUssTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSU0sTUFBTTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBSVcsV0FBVztzQkFBOUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBSU8sWUFBWTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdE5ndFJlZixcblx0aW5qZWN0Tmd0U3RvcmUsXG5cdE5ndEFyZ3MsXG5cdHNpZ25hbFN0b3JlLFxuXHR0eXBlIE5ndEdyb3VwLFxuXHR0eXBlIE5ndFJlbmRlclN0YXRlLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEdyb3VwLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbEJsdXJTaGFkZXIsIFZlcnRpY2FsQmx1clNoYWRlciB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmV4dGVuZCh7IEdyb3VwLCBNZXNoLCBNZXNoQmFzaWNNYXRlcmlhbCwgT3J0aG9ncmFwaGljQ2FtZXJhIH0pO1xuXG5leHBvcnQgdHlwZSBOZ3RzQ29udGFjdFNoYWRvd3NTdGF0ZSA9IHtcblx0b3BhY2l0eTogbnVtYmVyO1xuXHR3aWR0aDogbnVtYmVyO1xuXHRoZWlnaHQ6IG51bWJlcjtcblx0Ymx1cjogbnVtYmVyO1xuXHRmYXI6IG51bWJlcjtcblx0c21vb3RoOiBib29sZWFuO1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdGZyYW1lczogbnVtYmVyO1xuXHRzY2FsZTogbnVtYmVyIHwgW3g6IG51bWJlciwgeTogbnVtYmVyXTtcblx0Y29sb3I6IFRIUkVFLkNvbG9yUmVwcmVzZW50YXRpb247XG5cdGRlcHRoV3JpdGU6IGJvb2xlYW47XG5cdHJlbmRlck9yZGVyOiBudW1iZXI7XG59O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG5cdGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuXHRcdC8qKlxuXHRcdCAqIEBleHRlbmRzIG5ndC1ncm91cFxuXHRcdCAqL1xuXHRcdCduZ3RzLWNvbnRhY3Qtc2hhZG93cyc6IE5ndHNDb250YWN0U2hhZG93c1N0YXRlICYgTmd0R3JvdXA7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jb250YWN0LXNoYWRvd3MnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgbmd0Q29tcG91bmQgW3JlZl09XCJjb250YWN0U2hhZG93c1JlZlwiIFtyb3RhdGlvbl09XCJbTWF0aC5QSSAvIDIsIDAsIDBdXCI+XG5cdFx0XHQ8bmd0LW1lc2hcblx0XHRcdFx0W3JlbmRlck9yZGVyXT1cInJlbmRlck9yZGVyKCkgPz8gMFwiXG5cdFx0XHRcdFtnZW9tZXRyeV09XCJjb250YWN0U2hhZG93cygpLnBsYW5lR2VvbWV0cnlcIlxuXHRcdFx0XHRbc2NhbGVdPVwiWzEsIC0xLCAxXVwiXG5cdFx0XHRcdFtyb3RhdGlvbl09XCJbLU1hdGguUEkgLyAyLCAwLCAwXVwiXG5cdFx0XHQ+XG5cdFx0XHRcdDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbFxuXHRcdFx0XHRcdFttYXBdPVwiY29udGFjdFNoYWRvd3MoKS5yZW5kZXJUYXJnZXQudGV4dHVyZVwiXG5cdFx0XHRcdFx0W3RyYW5zcGFyZW50XT1cInRydWVcIlxuXHRcdFx0XHRcdFtvcGFjaXR5XT1cIm9wYWNpdHkoKSA/PyAxXCJcblx0XHRcdFx0XHRbZGVwdGhXcml0ZV09XCJkZXB0aFdyaXRlKCkgPz8gZmFsc2VcIlxuXHRcdFx0XHQvPlxuXHRcdFx0PC9uZ3QtbWVzaD5cblx0XHRcdDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYSAqYXJncz1cImNhbWVyYUFyZ3MoKVwiIFtyZWZdPVwic2hhZG93Q2FtZXJhUmVmXCIgLz5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDb250YWN0U2hhZG93cyB7XG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8Tmd0c0NvbnRhY3RTaGFkb3dzU3RhdGU+KHtcblx0XHRzY2FsZTogMTAsXG5cdFx0ZnJhbWVzOiBJbmZpbml0eSxcblx0XHRvcGFjaXR5OiAxLFxuXHRcdHdpZHRoOiAxLFxuXHRcdGhlaWdodDogMSxcblx0XHRibHVyOiAxLFxuXHRcdGZhcjogMTAsXG5cdFx0cmVzb2x1dGlvbjogNTEyLFxuXHRcdHNtb290aDogdHJ1ZSxcblx0XHRjb2xvcjogJyMwMDAwMDAnLFxuXHRcdGRlcHRoV3JpdGU6IGZhbHNlLFxuXHRcdHJlbmRlck9yZGVyOiAwLFxuXHR9KTtcblxuXHRASW5wdXQoKSBjb250YWN0U2hhZG93c1JlZiA9IGluamVjdE5ndFJlZjxHcm91cD4oKTtcblxuXHRASW5wdXQoeyBhbGlhczogJ29wYWNpdHknIH0pIHNldCBfb3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBvcGFjaXR5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICd3aWR0aCcgfSkgc2V0IF93aWR0aCh3aWR0aDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgd2lkdGggfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2hlaWdodCcgfSkgc2V0IF9oZWlnaHQoaGVpZ2h0OiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBoZWlnaHQgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2JsdXInIH0pIHNldCBfYmx1cihibHVyOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBibHVyIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmYXInIH0pIHNldCBfZmFyKGZhcjogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZmFyIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzbW9vdGgnIH0pIHNldCBfc21vb3RoKHNtb290aDogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNtb290aCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVzb2x1dGlvbicgfSkgc2V0IF9yZXNvbHV0aW9uKHJlc29sdXRpb246IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlc29sdXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZyYW1lcycgfSkgc2V0IF9mcmFtZXMoZnJhbWVzOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBmcmFtZXMgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NjYWxlJyB9KSBzZXQgX3NjYWxlKHNjYWxlOiBudW1iZXIgfCBbeDogbnVtYmVyLCB5OiBudW1iZXJdKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgc2NhbGUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2NvbG9yJyB9KSBzZXQgX2NvbG9yKGNvbG9yOiBUSFJFRS5Db2xvclJlcHJlc2VudGF0aW9uKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgY29sb3IgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2RlcHRoV3JpdGUnIH0pIHNldCBfZGVwdGhXcml0ZShkZXB0aFdyaXRlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGVwdGhXcml0ZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVuZGVyT3JkZXInIH0pIHNldCBfcmVuZGVyT3JkZXIocmVuZGVyT3JkZXI6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlbmRlck9yZGVyIH0pO1xuXHR9XG5cblx0TWF0aCA9IE1hdGg7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cblx0c2hhZG93Q2FtZXJhUmVmID0gaW5qZWN0Tmd0UmVmPE9ydGhvZ3JhcGhpY0NhbWVyYT4oKTtcblxuXHRwcml2YXRlIHNjYWxlID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdzY2FsZScpO1xuXHRwcml2YXRlIHdpZHRoID0gdGhpcy5pbnB1dHMuc2VsZWN0KCd3aWR0aCcpO1xuXHRwcml2YXRlIGhlaWdodCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnaGVpZ2h0Jyk7XG5cdHByaXZhdGUgZmFyID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmYXInKTtcblx0cHJpdmF0ZSByZXNvbHV0aW9uID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZXNvbHV0aW9uJyk7XG5cdHByaXZhdGUgY29sb3IgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2NvbG9yJyk7XG5cblx0cHJpdmF0ZSBzY2FsZWRXaWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGUoKTtcblx0XHRyZXR1cm4gdGhpcy53aWR0aCgpICogKEFycmF5LmlzQXJyYXkoc2NhbGUpID8gc2NhbGVbMF0gOiBzY2FsZSB8fCAxKTtcblx0fSk7XG5cdHByaXZhdGUgc2NhbGVkSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZSgpO1xuXHRcdHJldHVybiB0aGlzLmhlaWdodCgpICogKEFycmF5LmlzQXJyYXkoc2NhbGUpID8gc2NhbGVbMV0gOiBzY2FsZSB8fCAxKTtcblx0fSk7XG5cblx0cmVuZGVyT3JkZXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3JlbmRlck9yZGVyJyk7XG5cdG9wYWNpdHkgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ29wYWNpdHknKTtcblx0ZGVwdGhXcml0ZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZGVwdGhXcml0ZScpO1xuXG5cdGNhbWVyYUFyZ3MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3Qgd2lkdGggPSB0aGlzLnNjYWxlZFdpZHRoKCk7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gdGhpcy5zY2FsZWRIZWlnaHQoKTtcblx0XHRyZXR1cm4gWy13aWR0aCAvIDIsIHdpZHRoIC8gMiwgaGVpZ2h0IC8gMiwgLWhlaWdodCAvIDIsIDAsIHRoaXMuZmFyKCldO1xuXHR9KTtcblx0Y29udGFjdFNoYWRvd3MgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgY29sb3IgPSB0aGlzLmNvbG9yKCk7XG5cdFx0Y29uc3QgcmVzb2x1dGlvbiA9IHRoaXMucmVzb2x1dGlvbigpO1xuXHRcdGNvbnN0IHJlbmRlclRhcmdldCA9IG5ldyBUSFJFRS5XZWJHTFJlbmRlclRhcmdldChyZXNvbHV0aW9uLCByZXNvbHV0aW9uKTtcblx0XHRjb25zdCByZW5kZXJUYXJnZXRCbHVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0KHJlc29sdXRpb24sIHJlc29sdXRpb24pO1xuXHRcdHJlbmRlclRhcmdldEJsdXIudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMgPSByZW5kZXJUYXJnZXQudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMgPSBmYWxzZTtcblx0XHRjb25zdCBwbGFuZUdlb21ldHJ5ID0gbmV3IFRIUkVFLlBsYW5lR2VvbWV0cnkodGhpcy5zY2FsZWRXaWR0aCgpLCB0aGlzLnNjYWxlZEhlaWdodCgpKS5yb3RhdGVYKE1hdGguUEkgLyAyKTtcblx0XHRjb25zdCBibHVyUGxhbmUgPSBuZXcgTWVzaChwbGFuZUdlb21ldHJ5KTtcblx0XHRjb25zdCBkZXB0aE1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hEZXB0aE1hdGVyaWFsKCk7XG5cdFx0ZGVwdGhNYXRlcmlhbC5kZXB0aFRlc3QgPSBkZXB0aE1hdGVyaWFsLmRlcHRoV3JpdGUgPSBmYWxzZTtcblx0XHRkZXB0aE1hdGVyaWFsLm9uQmVmb3JlQ29tcGlsZSA9IChzaGFkZXIpID0+IHtcblx0XHRcdHNoYWRlci51bmlmb3JtcyA9IHtcblx0XHRcdFx0Li4uc2hhZGVyLnVuaWZvcm1zLFxuXHRcdFx0XHR1Y29sb3I6IHsgdmFsdWU6IG5ldyBUSFJFRS5Db2xvcihjb2xvcikgfSxcblx0XHRcdH07XG5cdFx0XHRzaGFkZXIuZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXIuZnJhZ21lbnRTaGFkZXIucmVwbGFjZShcblx0XHRcdFx0YHZvaWQgbWFpbigpIHtgLCAvL1xuXHRcdFx0XHRgdW5pZm9ybSB2ZWMzIHVjb2xvcjtcbiAgICAgICAgICAgICAgICAgdm9pZCBtYWluKCkge1xuICAgICAgICAgICAgICAgIGAsXG5cdFx0XHQpO1xuXHRcdFx0c2hhZGVyLmZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyLnJlcGxhY2UoXG5cdFx0XHRcdCd2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTsnLFxuXHRcdFx0XHQvLyBDb2xvcml6ZSB0aGUgc2hhZG93LCBtdWx0aXBseSBieSB0aGUgZmFsbG9mZiBzbyB0aGF0IHRoZSBjZW50ZXIgY2FuIHJlbWFpbiBkYXJrZXJcblx0XHRcdFx0J3ZlYzQoIHVjb2xvciAqIGZyYWdDb29yZFogKiAyLjAsICggMS4wIC0gZnJhZ0Nvb3JkWiApICogMS4wICk7Jyxcblx0XHRcdCk7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGhvcml6b250YWxCbHVyTWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoSG9yaXpvbnRhbEJsdXJTaGFkZXIpO1xuXHRcdGNvbnN0IHZlcnRpY2FsQmx1ck1hdGVyaWFsID0gbmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKFZlcnRpY2FsQmx1clNoYWRlcik7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwuZGVwdGhUZXN0ID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbC5kZXB0aFRlc3QgPSBmYWxzZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRyZW5kZXJUYXJnZXQsXG5cdFx0XHRwbGFuZUdlb21ldHJ5LFxuXHRcdFx0ZGVwdGhNYXRlcmlhbCxcblx0XHRcdGJsdXJQbGFuZSxcblx0XHRcdGhvcml6b250YWxCbHVyTWF0ZXJpYWwsXG5cdFx0XHR2ZXJ0aWNhbEJsdXJNYXRlcmlhbCxcblx0XHRcdHJlbmRlclRhcmdldEJsdXIsXG5cdFx0fTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKHRoaXMuYmVmb3JlUmVuZGVyLmJpbmQodGhpcywgMCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVSZW5kZXIoY291bnQ6IG51bWJlciwgeyBzY2VuZSwgZ2wgfTogTmd0UmVuZGVyU3RhdGUpIHtcblx0XHRjb25zdCB7IGZyYW1lcyA9IEluZmluaXR5LCBibHVyID0gMSwgc21vb3RoID0gdHJ1ZSB9ID0gdGhpcy5pbnB1dHMuZ2V0KCk7XG5cdFx0Y29uc3QgeyBkZXB0aE1hdGVyaWFsLCByZW5kZXJUYXJnZXQgfSA9IHRoaXMuY29udGFjdFNoYWRvd3MoKTtcblx0XHRjb25zdCBzaGFkb3dDYW1lcmEgPSB0aGlzLnNoYWRvd0NhbWVyYVJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdGlmIChzaGFkb3dDYW1lcmEgJiYgKGZyYW1lcyA9PT0gSW5maW5pdHkgfHwgY291bnQgPCBmcmFtZXMpKSB7XG5cdFx0XHRjb25zdCBpbml0aWFsQmFja2dyb3VuZCA9IHNjZW5lLmJhY2tncm91bmQ7XG5cdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gbnVsbDtcblx0XHRcdGNvbnN0IGluaXRpYWxPdmVycmlkZU1hdGVyaWFsID0gc2NlbmUub3ZlcnJpZGVNYXRlcmlhbDtcblx0XHRcdHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgPSBkZXB0aE1hdGVyaWFsO1xuXHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCk7XG5cdFx0XHRnbC5yZW5kZXIoc2NlbmUsIHNoYWRvd0NhbWVyYSk7XG5cdFx0XHRzY2VuZS5vdmVycmlkZU1hdGVyaWFsID0gaW5pdGlhbE92ZXJyaWRlTWF0ZXJpYWw7XG5cblx0XHRcdHRoaXMuYmx1clNoYWRvd3MoYmx1cik7XG5cdFx0XHRpZiAoc21vb3RoKSB0aGlzLmJsdXJTaGFkb3dzKGJsdXIgKiAwLjQpO1xuXG5cdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRzY2VuZS5iYWNrZ3JvdW5kID0gaW5pdGlhbEJhY2tncm91bmQ7XG5cdFx0XHRjb3VudCsrO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgYmx1clNoYWRvd3MoYmx1cjogbnVtYmVyKSB7XG5cdFx0Y29uc3QgeyBibHVyUGxhbmUsIGhvcml6b250YWxCbHVyTWF0ZXJpYWwsIHZlcnRpY2FsQmx1ck1hdGVyaWFsLCByZW5kZXJUYXJnZXRCbHVyLCByZW5kZXJUYXJnZXQgfSA9XG5cdFx0XHR0aGlzLmNvbnRhY3RTaGFkb3dzKCk7XG5cdFx0Y29uc3QgZ2wgPSB0aGlzLnN0b3JlLmdldCgnZ2wnKTtcblx0XHRjb25zdCBzaGFkb3dDYW1lcmEgPSB0aGlzLnNoYWRvd0NhbWVyYVJlZi5uYXRpdmVFbGVtZW50O1xuXG5cdFx0Ymx1clBsYW5lLnZpc2libGUgPSB0cnVlO1xuXG5cdFx0Ymx1clBsYW5lLm1hdGVyaWFsID0gaG9yaXpvbnRhbEJsdXJNYXRlcmlhbDtcblx0XHRob3Jpem9udGFsQmx1ck1hdGVyaWFsLnVuaWZvcm1zWyd0RGlmZnVzZSddLnZhbHVlID0gcmVuZGVyVGFyZ2V0LnRleHR1cmU7XG5cdFx0aG9yaXpvbnRhbEJsdXJNYXRlcmlhbC51bmlmb3Jtc1snaCddLnZhbHVlID0gKGJsdXIgKiAxKSAvIDI1NjtcblxuXHRcdGdsLnNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXRCbHVyKTtcblx0XHRnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG5cdFx0Ymx1clBsYW5lLm1hdGVyaWFsID0gdmVydGljYWxCbHVyTWF0ZXJpYWw7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3REaWZmdXNlJ10udmFsdWUgPSByZW5kZXJUYXJnZXRCbHVyLnRleHR1cmU7XG5cdFx0dmVydGljYWxCbHVyTWF0ZXJpYWwudW5pZm9ybXNbJ3YnXS52YWx1ZSA9IChibHVyICogMSkgLyAyNTY7XG5cblx0XHRnbC5zZXRSZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KTtcblx0XHRnbC5yZW5kZXIoYmx1clBsYW5lLCBzaGFkb3dDYW1lcmEpO1xuXG5cdFx0Ymx1clBsYW5lLnZpc2libGUgPSBmYWxzZTtcblx0fVxufVxuIl19
@@ -1,13 +0,0 @@
1
- export const ENVIRONMENT_PRESETS = {
2
- apartment: 'lebombo_1k.hdr',
3
- city: 'potsdamer_platz_1k.hdr',
4
- dawn: 'kiara_1_dawn_1k.hdr',
5
- forest: 'forest_slope_1k.hdr',
6
- lobby: 'st_fagans_interior_1k.hdr',
7
- night: 'dikhololo_night_1k.hdr',
8
- park: 'rooitou_park_1k.hdr',
9
- studio: 'studio_small_03_1k.hdr',
10
- sunset: 'venice_sunset_1k.hdr',
11
- warehouse: 'empty_warehouse_01_1k.hdr',
12
- };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNsQyxTQUFTLEVBQUUsZ0JBQWdCO0lBQzNCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixNQUFNLEVBQUUscUJBQXFCO0lBQzdCLEtBQUssRUFBRSwyQkFBMkI7SUFDbEMsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsTUFBTSxFQUFFLHNCQUFzQjtJQUM5QixTQUFTLEVBQUUsMkJBQTJCO0NBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRU5WSVJPTk1FTlRfUFJFU0VUUyA9IHtcblx0YXBhcnRtZW50OiAnbGVib21ib18xay5oZHInLFxuXHRjaXR5OiAncG90c2RhbWVyX3BsYXR6XzFrLmhkcicsXG5cdGRhd246ICdraWFyYV8xX2Rhd25fMWsuaGRyJyxcblx0Zm9yZXN0OiAnZm9yZXN0X3Nsb3BlXzFrLmhkcicsXG5cdGxvYmJ5OiAnc3RfZmFnYW5zX2ludGVyaW9yXzFrLmhkcicsXG5cdG5pZ2h0OiAnZGlraG9sb2xvX25pZ2h0XzFrLmhkcicsXG5cdHBhcms6ICdyb29pdG91X3BhcmtfMWsuaGRyJyxcblx0c3R1ZGlvOiAnc3R1ZGlvX3NtYWxsXzAzXzFrLmhkcicsXG5cdHN1bnNldDogJ3ZlbmljZV9zdW5zZXRfMWsuaGRyJyxcblx0d2FyZWhvdXNlOiAnZW1wdHlfd2FyZWhvdXNlXzAxXzFrLmhkcicsXG59O1xuXG5leHBvcnQgdHlwZSBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSA9IGtleW9mIHR5cGVvZiBFTlZJUk9OTUVOVF9QUkVTRVRTO1xuIl19
@@ -1,47 +0,0 @@
1
- import { Directive, Input, effect, inject } from '@angular/core';
2
- import { injectNgtStore, signalStore } from 'angular-three';
3
- import { NgtsEnvironmentInput } from './environment-input';
4
- import { injectNgtsEnvironment, setEnvProps } from './utils';
5
- import * as i0 from "@angular/core";
6
- export class NgtsEnvironmentCube {
7
- set _background(background) {
8
- this.inputs.set({ background });
9
- }
10
- constructor() {
11
- this.environmentInput = inject(NgtsEnvironmentInput);
12
- this.inputs = signalStore({ background: false });
13
- this.store = injectNgtStore();
14
- this.scene = this.store.select('scene');
15
- this.background = this.inputs.select('background');
16
- this.textureRef = injectNgtsEnvironment(this.environmentInput.params);
17
- this.setEnvProps();
18
- }
19
- setEnvProps() {
20
- effect((onCleanup) => {
21
- const [defaultScene, scene, background, blur, texture] = [
22
- this.scene(),
23
- this.environmentInput.scene(),
24
- this.background(),
25
- this.environmentInput.blur(),
26
- this.textureRef.nativeElement,
27
- ];
28
- if (!texture)
29
- return;
30
- const cleanUp = setEnvProps(background, scene, defaultScene, texture, blur);
31
- onCleanup(cleanUp);
32
- });
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentCube, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentCube, isStandalone: true, selector: "ngts-environment-cube", inputs: { _background: ["background", "_background"] }, ngImport: i0 }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentCube, decorators: [{
38
- type: Directive,
39
- args: [{
40
- selector: 'ngts-environment-cube',
41
- standalone: true,
42
- }]
43
- }], ctorParameters: function () { return []; }, propDecorators: { _background: [{
44
- type: Input,
45
- args: [{ alias: 'background' }]
46
- }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtY3ViZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9zdGFnaW5nL3NyYy9lbnZpcm9ubWVudC9lbnZpcm9ubWVudC1jdWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFrQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBTTdELE1BQU0sT0FBTyxtQkFBbUI7SUFLL0IsSUFBb0MsV0FBVyxDQUFDLFVBQW1CO1FBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBUUQ7UUFkQSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUV4QyxXQUFNLEdBQUcsV0FBVyxDQUFnRCxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBTTNGLFVBQUssR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN6QixVQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHeEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxXQUFXO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO2FBQzdCLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FoQ1csbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzBFQU1vQyxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSwgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0LCB0eXBlIE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGUgfSBmcm9tICcuL2Vudmlyb25tZW50LWlucHV0JztcbmltcG9ydCB7IGluamVjdE5ndHNFbnZpcm9ubWVudCwgc2V0RW52UHJvcHMgfSBmcm9tICcuL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lbnZpcm9ubWVudC1jdWJlJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50Q3ViZSB7XG5cdGVudmlyb25tZW50SW5wdXQgPSBpbmplY3QoTmd0c0Vudmlyb25tZW50SW5wdXQpO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8UGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlLCAnYmFja2dyb3VuZCc+Pih7IGJhY2tncm91bmQ6IGZhbHNlIH0pO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmFja2dyb3VuZCcgfSkgc2V0IF9iYWNrZ3JvdW5kKGJhY2tncm91bmQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgc2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRwcml2YXRlIGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0cHJpdmF0ZSB0ZXh0dXJlUmVmID0gaW5qZWN0Tmd0c0Vudmlyb25tZW50KHRoaXMuZW52aXJvbm1lbnRJbnB1dC5wYXJhbXMpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0RW52UHJvcHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0RW52UHJvcHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkZWZhdWx0U2NlbmUsIHNjZW5lLCBiYWNrZ3JvdW5kLCBibHVyLCB0ZXh0dXJlXSA9IFtcblx0XHRcdFx0dGhpcy5zY2VuZSgpLFxuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50SW5wdXQuc2NlbmUoKSxcblx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kKCksXG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ibHVyKCksXG5cdFx0XHRcdHRoaXMudGV4dHVyZVJlZi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XTtcblx0XHRcdGlmICghdGV4dHVyZSkgcmV0dXJuO1xuXHRcdFx0Y29uc3QgY2xlYW5VcCA9IHNldEVudlByb3BzKGJhY2tncm91bmQhLCBzY2VuZSwgZGVmYXVsdFNjZW5lLCB0ZXh0dXJlLCBibHVyKTtcblx0XHRcdG9uQ2xlYW51cChjbGVhblVwKTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,41 +0,0 @@
1
- import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, inject } from '@angular/core';
2
- import { extend, NgtArgs } from 'angular-three';
3
- import { GroundProjectedEnv } from 'three-stdlib';
4
- import { NgtsEnvironmentInput } from './environment-input';
5
- import { NgtsEnvironmentMap } from './environment-map';
6
- import { injectNgtsEnvironment } from './utils';
7
- import * as i0 from "@angular/core";
8
- extend({ GroundProjectedEnv });
9
- export class NgtsEnvironmentGround {
10
- constructor() {
11
- this.environmentInput = inject(NgtsEnvironmentInput);
12
- this.defaultTexture = injectNgtsEnvironment(this.environmentInput.params);
13
- this.texture = computed(() => {
14
- const defaultTexture = this.defaultTexture.nativeElement;
15
- return this.environmentInput.map() || defaultTexture;
16
- });
17
- this.groundArgs = computed(() => (this.texture() ? [this.texture()] : []));
18
- this.height = computed(() => this.environmentInput.ground()?.height);
19
- this.radius = computed(() => this.environmentInput.ground()?.radius);
20
- this.scale = computed(() => this.environmentInput.ground()?.scale ?? 1000);
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentGround, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentGround, isStandalone: true, selector: "ngts-environment-ground", ngImport: i0, template: `
24
- <ngts-environment-map [map]="texture()" [background]="!!environmentInput.background()" />
25
- <ngt-ground-projected-env *args="groundArgs()" [scale]="scale()" [height]="height()" [radius]="radius()" />
26
- `, isInline: true, dependencies: [{ kind: "directive", type: NgtsEnvironmentMap, selector: "ngts-environment-map", inputs: ["map", "background"] }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentGround, decorators: [{
29
- type: Component,
30
- args: [{
31
- selector: 'ngts-environment-ground',
32
- standalone: true,
33
- template: `
34
- <ngts-environment-map [map]="texture()" [background]="!!environmentInput.background()" />
35
- <ngt-ground-projected-env *args="groundArgs()" [scale]="scale()" [height]="height()" [radius]="radius()" />
36
- `,
37
- imports: [NgtsEnvironmentMap, NgtArgs],
38
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
39
- }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtZ3JvdW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Vudmlyb25tZW50LWdyb3VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFaEQsTUFBTSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0FBWS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFWbEM7UUFXQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3RSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxjQUFjLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBVSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztLQUMvRTs4R0FiWSxxQkFBcUI7a0dBQXJCLHFCQUFxQixtRkFQdkI7OztFQUdULDREQUNTLGtCQUFrQixnR0FBRSxPQUFPOzsyRkFHekIscUJBQXFCO2tCQVZqQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7OztFQUdUO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IEdyb3VuZFByb2plY3RlZEVudiB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5pbXBvcnQgeyBOZ3RzRW52aXJvbm1lbnRJbnB1dCB9IGZyb20gJy4vZW52aXJvbm1lbnQtaW5wdXQnO1xuaW1wb3J0IHsgTmd0c0Vudmlyb25tZW50TWFwIH0gZnJvbSAnLi9lbnZpcm9ubWVudC1tYXAnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0c0Vudmlyb25tZW50IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4dGVuZCh7IEdyb3VuZFByb2plY3RlZEVudiB9KTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1lbnZpcm9ubWVudC1ncm91bmQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3RzLWVudmlyb25tZW50LW1hcCBbbWFwXT1cInRleHR1cmUoKVwiIFtiYWNrZ3JvdW5kXT1cIiEhZW52aXJvbm1lbnRJbnB1dC5iYWNrZ3JvdW5kKClcIiAvPlxuXHRcdDxuZ3QtZ3JvdW5kLXByb2plY3RlZC1lbnYgKmFyZ3M9XCJncm91bmRBcmdzKClcIiBbc2NhbGVdPVwic2NhbGUoKVwiIFtoZWlnaHRdPVwiaGVpZ2h0KClcIiBbcmFkaXVzXT1cInJhZGl1cygpXCIgLz5cblx0YCxcblx0aW1wb3J0czogW05ndHNFbnZpcm9ubWVudE1hcCwgTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50R3JvdW5kIHtcblx0ZW52aXJvbm1lbnRJbnB1dCA9IGluamVjdChOZ3RzRW52aXJvbm1lbnRJbnB1dCk7XG5cdHByaXZhdGUgZGVmYXVsdFRleHR1cmUgPSBpbmplY3ROZ3RzRW52aXJvbm1lbnQodGhpcy5lbnZpcm9ubWVudElucHV0LnBhcmFtcyk7XG5cblx0dGV4dHVyZSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBkZWZhdWx0VGV4dHVyZSA9IHRoaXMuZGVmYXVsdFRleHR1cmUubmF0aXZlRWxlbWVudDtcblx0XHRyZXR1cm4gdGhpcy5lbnZpcm9ubWVudElucHV0Lm1hcCgpIHx8IGRlZmF1bHRUZXh0dXJlO1xuXHR9KTtcblxuXHRncm91bmRBcmdzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMudGV4dHVyZSgpID8gW3RoaXMudGV4dHVyZSgpXSA6IFtdKSk7XG5cdGhlaWdodCA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmVudmlyb25tZW50SW5wdXQuZ3JvdW5kKCkgYXMgYW55KT8uaGVpZ2h0KTtcblx0cmFkaXVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ncm91bmQoKSBhcyBhbnkpPy5yYWRpdXMpO1xuXHRzY2FsZSA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmVudmlyb25tZW50SW5wdXQuZ3JvdW5kKCkgYXMgYW55KT8uc2NhbGUgPz8gMTAwMCk7XG59XG4iXX0=
@@ -1,119 +0,0 @@
1
- import { Directive, ElementRef, Input, computed } from '@angular/core';
2
- import { signalStore } from 'angular-three';
3
- import * as i0 from "@angular/core";
4
- export class NgtsEnvironmentInput {
5
- constructor() {
6
- this.inputs = signalStore({});
7
- this.frames = this.inputs.select('frames');
8
- this.near = this.inputs.select('near');
9
- this.far = this.inputs.select('far');
10
- this.resolution = this.inputs.select('resolution');
11
- this.background = this.inputs.select('background');
12
- this.blur = this.inputs.select('blur');
13
- this.map = this.inputs.select('map');
14
- this.files = this.inputs.select('files');
15
- this.path = this.inputs.select('path');
16
- this.preset = this.inputs.select('preset');
17
- this.scene = this.inputs.select('scene');
18
- this.extensions = this.inputs.select('extensions');
19
- this.ground = this.inputs.select('ground');
20
- this.encoding = this.inputs.select('encoding');
21
- this.params = computed(() => ({
22
- files: this.files(),
23
- path: this.path(),
24
- preset: this.preset(),
25
- extensions: this.extensions(),
26
- encoding: this.encoding(),
27
- }));
28
- }
29
- set _frames(frames) {
30
- this.inputs.set({ frames });
31
- }
32
- set _near(near) {
33
- this.inputs.set({ near });
34
- }
35
- set _far(far) {
36
- this.inputs.set({ far });
37
- }
38
- set _resolution(resolution) {
39
- this.inputs.set({ resolution });
40
- }
41
- set _background(background) {
42
- this.inputs.set({ background });
43
- }
44
- set _blur(blur) {
45
- this.inputs.set({ blur });
46
- }
47
- set _map(map) {
48
- this.inputs.set({ map });
49
- }
50
- set _files(files) {
51
- this.inputs.set({ files });
52
- }
53
- set _path(path) {
54
- this.inputs.set({ path });
55
- }
56
- set _preset(preset) {
57
- this.inputs.set({ preset });
58
- }
59
- set _scene(scene) {
60
- this.inputs.set({ scene });
61
- }
62
- set _extensions(extensions) {
63
- this.inputs.set({ extensions });
64
- }
65
- set _ground(ground) {
66
- this.inputs.set({ ground });
67
- }
68
- set _encoding(encoding) {
69
- this.inputs.set({ encoding });
70
- }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
72
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentInput, inputs: { _frames: ["frames", "_frames"], _near: ["near", "_near"], _far: ["far", "_far"], _resolution: ["resolution", "_resolution"], _background: ["background", "_background"], _blur: ["blur", "_blur"], _map: ["map", "_map"], _files: ["files", "_files"], _path: ["path", "_path"], _preset: ["preset", "_preset"], _scene: ["scene", "_scene"], _extensions: ["extensions", "_extensions"], _ground: ["ground", "_ground"], _encoding: ["encoding", "_encoding"] }, ngImport: i0 }); }
73
- }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentInput, decorators: [{
75
- type: Directive
76
- }], propDecorators: { _frames: [{
77
- type: Input,
78
- args: [{ alias: 'frames' }]
79
- }], _near: [{
80
- type: Input,
81
- args: [{ alias: 'near' }]
82
- }], _far: [{
83
- type: Input,
84
- args: [{ alias: 'far' }]
85
- }], _resolution: [{
86
- type: Input,
87
- args: [{ alias: 'resolution' }]
88
- }], _background: [{
89
- type: Input,
90
- args: [{ alias: 'background' }]
91
- }], _blur: [{
92
- type: Input,
93
- args: [{ alias: 'blur' }]
94
- }], _map: [{
95
- type: Input,
96
- args: [{ alias: 'map' }]
97
- }], _files: [{
98
- type: Input,
99
- args: [{ alias: 'files' }]
100
- }], _path: [{
101
- type: Input,
102
- args: [{ alias: 'path' }]
103
- }], _preset: [{
104
- type: Input,
105
- args: [{ alias: 'preset' }]
106
- }], _scene: [{
107
- type: Input,
108
- args: [{ alias: 'scene' }]
109
- }], _extensions: [{
110
- type: Input,
111
- args: [{ alias: 'extensions' }]
112
- }], _ground: [{
113
- type: Input,
114
- args: [{ alias: 'ground' }]
115
- }], _encoding: [{
116
- type: Input,
117
- args: [{ alias: 'encoding' }]
118
- }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvZW52aXJvbm1lbnQvZW52aXJvbm1lbnQtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXNCNUMsTUFBTSxPQUFnQixvQkFBb0I7SUFEMUM7UUFFQyxXQUFNLEdBQUcsV0FBVyxDQUE0QixFQUFFLENBQUMsQ0FBQztRQTBEcEQsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxRQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsUUFBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLFVBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxTQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENB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LEVBQUU7Z0JBSVEsU0FBUztzQkFBMUMsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB0eXBlIHsgTG9hZGVyLCBTY2VuZSwgVGV4dHVyZSwgVGV4dHVyZUVuY29kaW5nIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHR5cGUgeyBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZSB9IGZyb20gJy4vYXNzZXRzJztcblxuZXhwb3J0IHR5cGUgTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZSA9IHtcblx0ZnJhbWVzPzogbnVtYmVyO1xuXHRuZWFyPzogbnVtYmVyO1xuXHRmYXI/OiBudW1iZXI7XG5cdHJlc29sdXRpb24/OiBudW1iZXI7XG5cdGJhY2tncm91bmQ/OiBib29sZWFuIHwgJ29ubHknO1xuXHRibHVyPzogbnVtYmVyO1xuXHRtYXA/OiBUZXh0dXJlO1xuXHRmaWxlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuXHRwYXRoPzogc3RyaW5nO1xuXHRwcmVzZXQ/OiBOZ3RzRW52aXJvbm1lbnRQcmVzZXRzVHlwZTtcblx0c2NlbmU/OiBTY2VuZSB8IEVsZW1lbnRSZWY8U2NlbmU+O1xuXHRleHRlbnNpb25zPzogKGxvYWRlcjogTG9hZGVyKSA9PiB2b2lkO1xuXHRncm91bmQ/OiBib29sZWFuIHwgeyByYWRpdXM/OiBudW1iZXI7IGhlaWdodD86IG51bWJlcjsgc2NhbGU/OiBudW1iZXIgfTtcblx0ZW5jb2Rpbmc/OiBUZXh0dXJlRW5jb2Rpbmc7XG59O1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RzRW52aXJvbm1lbnRJbnB1dCB7XG5cdGlucHV0cyA9IHNpZ25hbFN0b3JlPE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGU+KHt9KTtcblxuXHRASW5wdXQoeyBhbGlhczogJ2ZyYW1lcycgfSkgc2V0IF9mcmFtZXMoZnJhbWVzOiBOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlWydmcmFtZXMnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZyYW1lcyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbmVhcicgfSkgc2V0IF9uZWFyKG5lYXI6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ25lYXInXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG5lYXIgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2ZhcicgfSkgc2V0IF9mYXIoZmFyOiBOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlWydmYXInXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZhciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncmVzb2x1dGlvbicgfSkgc2V0IF9yZXNvbHV0aW9uKHJlc29sdXRpb246IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ3Jlc29sdXRpb24nXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHJlc29sdXRpb24gfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2JhY2tncm91bmQnIH0pIHNldCBfYmFja2dyb3VuZChiYWNrZ3JvdW5kOiBOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlWydiYWNrZ3JvdW5kJ10pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdibHVyJyB9KSBzZXQgX2JsdXIoYmx1cjogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnYmx1ciddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYmx1ciB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWFwJyB9KSBzZXQgX21hcChtYXA6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ21hcCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgbWFwIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdmaWxlcycgfSkgc2V0IF9maWxlcyhmaWxlczogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnZmlsZXMnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGZpbGVzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdwYXRoJyB9KSBzZXQgX3BhdGgocGF0aDogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsncGF0aCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcGF0aCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAncHJlc2V0JyB9KSBzZXQgX3ByZXNldChwcmVzZXQ6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ3ByZXNldCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcHJlc2V0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzY2VuZScgfSkgc2V0IF9zY2VuZShzY2VuZTogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnc2NlbmUnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNjZW5lIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdleHRlbnNpb25zJyB9KSBzZXQgX2V4dGVuc2lvbnMoZXh0ZW5zaW9uczogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnZXh0ZW5zaW9ucyddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZXh0ZW5zaW9ucyB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZ3JvdW5kJyB9KSBzZXQgX2dyb3VuZChncm91bmQ6IE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGVbJ2dyb3VuZCddKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZ3JvdW5kIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdlbmNvZGluZycgfSkgc2V0IF9lbmNvZGluZyhlbmNvZGluZzogTmd0c0Vudmlyb25tZW50SW5wdXRTdGF0ZVsnZW5jb2RpbmcnXSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGVuY29kaW5nIH0pO1xuXHR9XG5cblx0ZnJhbWVzID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdmcmFtZXMnKTtcblx0bmVhciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnbmVhcicpO1xuXHRmYXIgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2ZhcicpO1xuXHRyZXNvbHV0aW9uID0gdGhpcy5pbnB1dHMuc2VsZWN0KCdyZXNvbHV0aW9uJyk7XG5cdGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0Ymx1ciA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnYmx1cicpO1xuXHRtYXAgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ21hcCcpO1xuXHRmaWxlcyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZmlsZXMnKTtcblx0cGF0aCA9IHRoaXMuaW5wdXRzLnNlbGVjdCgncGF0aCcpO1xuXHRwcmVzZXQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ3ByZXNldCcpO1xuXHRzY2VuZSA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnc2NlbmUnKTtcblx0ZXh0ZW5zaW9ucyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZXh0ZW5zaW9ucycpO1xuXHRncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2dyb3VuZCcpO1xuXHRlbmNvZGluZyA9IHRoaXMuaW5wdXRzLnNlbGVjdCgnZW5jb2RpbmcnKTtcblxuXHRwYXJhbXMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdGZpbGVzOiB0aGlzLmZpbGVzKCksXG5cdFx0cGF0aDogdGhpcy5wYXRoKCksXG5cdFx0cHJlc2V0OiB0aGlzLnByZXNldCgpLFxuXHRcdGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucygpLFxuXHRcdGVuY29kaW5nOiB0aGlzLmVuY29kaW5nKCksXG5cdH0pKTtcbn1cbiJdfQ==
@@ -1,53 +0,0 @@
1
- import { Directive, Input, effect, inject } from '@angular/core';
2
- import { injectNgtStore, signalStore } from 'angular-three';
3
- import { NgtsEnvironmentInput } from './environment-input';
4
- import { setEnvProps } from './utils';
5
- import * as i0 from "@angular/core";
6
- export class NgtsEnvironmentMap {
7
- set _map(map) {
8
- this.inputs.set({ map });
9
- }
10
- set _background(background) {
11
- this.inputs.set({ background });
12
- }
13
- constructor() {
14
- this.environmentInput = inject(NgtsEnvironmentInput);
15
- this.store = injectNgtStore();
16
- this.inputs = signalStore({ background: false });
17
- this.scene = this.store.select('scene');
18
- this.background = this.inputs.select('background');
19
- this.map = this.inputs.select('map');
20
- this.setEnvProps();
21
- }
22
- setEnvProps() {
23
- effect((onCleanup) => {
24
- const [defaultScene, scene, background, blur, texture] = [
25
- this.scene(),
26
- this.environmentInput.scene(),
27
- this.background(),
28
- this.environmentInput.blur(),
29
- this.map(),
30
- ];
31
- if (!texture)
32
- return;
33
- const cleanUp = setEnvProps(background, scene, defaultScene, texture, blur);
34
- onCleanup(cleanUp);
35
- });
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentMap, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsEnvironmentMap, isStandalone: true, selector: "ngts-environment-map", inputs: { _map: ["map", "_map"], _background: ["background", "_background"] }, ngImport: i0 }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsEnvironmentMap, decorators: [{
41
- type: Directive,
42
- args: [{
43
- selector: 'ngts-environment-map',
44
- standalone: true,
45
- }]
46
- }], ctorParameters: function () { return []; }, propDecorators: { _map: [{
47
- type: Input,
48
- args: [{ alias: 'map' }]
49
- }], _background: [{
50
- type: Input,
51
- args: [{ alias: 'background' }]
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2Vudmlyb25tZW50L2Vudmlyb25tZW50LW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBa0MsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQU10QyxNQUFNLE9BQU8sa0JBQWtCO0lBTTlCLElBQTZCLElBQUksQ0FBQyxHQUFrQjtRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQW9DLFdBQVcsQ0FBQyxVQUFtQjtRQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEO1FBYkEscUJBQWdCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsVUFBSyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXpCLFdBQU0sR0FBRyxXQUFXLENBQXdELEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFjbkcsVUFBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxRQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFMdkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFNTyxXQUFXO1FBQ2xCLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ3hELElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDNUIsSUFBSSxDQUFDLEdBQUcsRUFBRTthQUNWLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxVQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0UsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FuQ1csa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzBFQU82QixJQUFJO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQkFJYSxXQUFXO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RTdG9yZSwgc2lnbmFsU3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNFbnZpcm9ubWVudElucHV0LCB0eXBlIE5ndHNFbnZpcm9ubWVudElucHV0U3RhdGUgfSBmcm9tICcuL2Vudmlyb25tZW50LWlucHV0JztcbmltcG9ydCB7IHNldEVudlByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25ndHMtZW52aXJvbm1lbnQtbWFwJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0Vudmlyb25tZW50TWFwIHtcblx0ZW52aXJvbm1lbnRJbnB1dCA9IGluamVjdChOZ3RzRW52aXJvbm1lbnRJbnB1dCk7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3ROZ3RTdG9yZSgpO1xuXG5cdHByaXZhdGUgaW5wdXRzID0gc2lnbmFsU3RvcmU8UGljazxOZ3RzRW52aXJvbm1lbnRJbnB1dFN0YXRlLCAnbWFwJyB8ICdiYWNrZ3JvdW5kJz4+KHsgYmFja2dyb3VuZDogZmFsc2UgfSk7XG5cblx0QElucHV0KHsgYWxpYXM6ICdtYXAnIH0pIHNldCBfbWFwKG1hcDogVEhSRUUuVGV4dHVyZSkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1hcCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYmFja2dyb3VuZCcgfSkgc2V0IF9iYWNrZ3JvdW5kKGJhY2tncm91bmQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBiYWNrZ3JvdW5kIH0pO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5zZXRFbnZQcm9wcygpO1xuXHR9XG5cblx0cHJpdmF0ZSBzY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXHRwcml2YXRlIGJhY2tncm91bmQgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ2JhY2tncm91bmQnKTtcblx0cHJpdmF0ZSBtYXAgPSB0aGlzLmlucHV0cy5zZWxlY3QoJ21hcCcpO1xuXG5cdHByaXZhdGUgc2V0RW52UHJvcHMoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkZWZhdWx0U2NlbmUsIHNjZW5lLCBiYWNrZ3JvdW5kLCBibHVyLCB0ZXh0dXJlXSA9IFtcblx0XHRcdFx0dGhpcy5zY2VuZSgpLFxuXHRcdFx0XHR0aGlzLmVudmlyb25tZW50SW5wdXQuc2NlbmUoKSxcblx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kKCksXG5cdFx0XHRcdHRoaXMuZW52aXJvbm1lbnRJbnB1dC5ibHVyKCksXG5cdFx0XHRcdHRoaXMubWFwKCksXG5cdFx0XHRdO1xuXHRcdFx0aWYgKCF0ZXh0dXJlKSByZXR1cm47XG5cdFx0XHRjb25zdCBjbGVhblVwID0gc2V0RW52UHJvcHMoYmFja2dyb3VuZCEsIHNjZW5lLCBkZWZhdWx0U2NlbmUsIHRleHR1cmUsIGJsdXIpO1xuXHRcdFx0b25DbGVhbnVwKGNsZWFuVXApO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=