angular-three-soba 2.0.0-beta.7 → 2.0.0-beta.8

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 (296) hide show
  1. package/abstractions/billboard/billboard.d.ts +11 -7
  2. package/abstractions/detailed/detailed.d.ts +26 -0
  3. package/abstractions/edges/edges.d.ts +23 -11
  4. package/abstractions/grid/grid.d.ts +41 -50
  5. package/abstractions/index.d.ts +1 -7
  6. package/abstractions/text/text.d.ts +10 -4
  7. package/abstractions/text-3d/text-3d.d.ts +47 -40
  8. package/cameras/camera/camera-content.d.ts +1 -1
  9. package/cameras/camera/camera.d.ts +16 -13
  10. package/cameras/cube-camera/cube-camera.d.ts +50 -23
  11. package/cameras/index.d.ts +0 -1
  12. package/cameras/orthographic-camera/orthographic-camera.d.ts +29 -18
  13. package/cameras/perspective-camera/perspective-camera.d.ts +10 -1
  14. package/controls/orbit-controls/orbit-controls.d.ts +30 -13
  15. package/esm2022/abstractions/billboard/billboard.mjs +36 -33
  16. package/esm2022/abstractions/detailed/detailed.mjs +64 -0
  17. package/esm2022/abstractions/edges/edges.mjs +58 -63
  18. package/esm2022/abstractions/grid/grid.mjs +140 -110
  19. package/esm2022/abstractions/index.mjs +2 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -122
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +119 -121
  22. package/esm2022/cameras/camera/camera-content.mjs +5 -6
  23. package/esm2022/cameras/camera/camera.mjs +48 -42
  24. package/esm2022/cameras/cube-camera/cube-camera.mjs +129 -99
  25. package/esm2022/cameras/index.mjs +1 -2
  26. package/esm2022/cameras/orthographic-camera/orthographic-camera.mjs +78 -75
  27. package/esm2022/cameras/perspective-camera/perspective-camera.mjs +25 -26
  28. package/esm2022/controls/orbit-controls/orbit-controls.mjs +94 -90
  29. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  30. package/esm2022/loaders/loader/loader.mjs +92 -87
  31. package/esm2022/loaders/progress/progress.mjs +1 -1
  32. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  33. package/esm2022/materials/index.mjs +2 -1
  34. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  35. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  36. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +99 -97
  37. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  38. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  39. package/esm2022/materials/point-material/point-material.mjs +46 -0
  40. package/esm2022/misc/animations/animations.mjs +20 -16
  41. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  42. package/esm2022/misc/caustics/caustics.mjs +387 -0
  43. package/esm2022/misc/decal/decal.mjs +187 -0
  44. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  45. package/esm2022/misc/example/example.mjs +160 -0
  46. package/esm2022/misc/fbo/fbo.mjs +35 -35
  47. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  48. package/esm2022/misc/html/html.mjs +304 -0
  49. package/esm2022/misc/index.mjs +10 -1
  50. package/esm2022/misc/sampler/sampler.mjs +142 -0
  51. package/esm2022/misc/shadow/shadow.mjs +111 -0
  52. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  53. package/esm2022/misc/trail/trail.mjs +209 -0
  54. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  55. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  56. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  57. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  58. package/esm2022/modifiers/index.mjs +2 -0
  59. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  60. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  61. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  62. package/esm2022/performances/index.mjs +6 -0
  63. package/esm2022/performances/points/points-input.mjs +64 -0
  64. package/esm2022/performances/points/points.mjs +329 -0
  65. package/esm2022/performances/points/position-point.mjs +54 -0
  66. package/esm2022/performances/segments/segment-object.mjs +9 -0
  67. package/esm2022/performances/segments/segments.mjs +182 -0
  68. package/esm2022/shaders/blur-pass/blur-pass.mjs +1 -1
  69. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  70. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  71. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  72. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  73. package/esm2022/shaders/grid-material/grid-material.mjs +29 -14
  74. package/esm2022/shaders/index.mjs +5 -3
  75. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  76. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +1 -1
  77. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  78. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  79. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  80. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  81. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  82. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  83. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  84. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  85. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  86. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  87. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  88. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  89. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  90. package/esm2022/staging/bb-anchor/bb-anchor.mjs +70 -0
  91. package/esm2022/staging/bounds/bounds.mjs +144 -143
  92. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  93. package/esm2022/staging/center/center.mjs +106 -91
  94. package/esm2022/staging/cloud/cloud.mjs +118 -124
  95. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  96. package/esm2022/staging/environment/assets.mjs +12 -12
  97. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  98. package/esm2022/staging/environment/environment-ground.mjs +18 -20
  99. package/esm2022/staging/environment/environment-input.mjs +97 -84
  100. package/esm2022/staging/environment/environment-map.mjs +33 -33
  101. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  102. package/esm2022/staging/environment/environment.mjs +34 -51
  103. package/esm2022/staging/environment/utils.mjs +35 -14
  104. package/esm2022/staging/float/float.mjs +70 -58
  105. package/esm2022/staging/index.mjs +7 -3
  106. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  107. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  108. package/esm2022/staging/sky/sky.mjs +85 -80
  109. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  110. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  111. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  112. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  113. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  114. package/esm2022/staging/spot-light/volumetric-mesh.mjs +61 -78
  115. package/esm2022/staging/stage/stage.mjs +304 -290
  116. package/esm2022/staging/stars/stars.mjs +101 -102
  117. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  118. package/esm2022/staging/wireframe/wireframe.mjs +224 -0
  119. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  120. package/esm2022/utils/content/content.mjs +15 -0
  121. package/esm2022/utils/index.mjs +2 -0
  122. package/fesm2022/angular-three-soba-abstractions.mjs +505 -2087
  123. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  124. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  125. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  126. package/fesm2022/angular-three-soba-controls.mjs +93 -88
  127. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  128. package/fesm2022/angular-three-soba-loaders.mjs +94 -90
  129. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  130. package/fesm2022/angular-three-soba-materials.mjs +655 -590
  131. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  132. package/fesm2022/angular-three-soba-misc.mjs +2198 -89
  133. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  134. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  135. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  136. package/fesm2022/angular-three-soba-performances.mjs +697 -0
  137. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  138. package/fesm2022/angular-three-soba-shaders.mjs +501 -264
  139. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-staging.mjs +2870 -2555
  141. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  142. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  143. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  144. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  145. package/loaders/loader/loader.d.ts +19 -17
  146. package/loaders/progress/progress.d.ts +1 -1
  147. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  148. package/materials/index.d.ts +1 -0
  149. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  150. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  151. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  152. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  153. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  154. package/materials/point-material/point-material.d.ts +24 -0
  155. package/metadata.json +1 -0
  156. package/misc/animations/animations.d.ts +6 -4
  157. package/misc/caustics/caustics.d.ts +87 -0
  158. package/misc/decal/decal.d.ts +49 -0
  159. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  160. package/misc/example/example.d.ts +81 -0
  161. package/misc/fbo/fbo.d.ts +2 -2
  162. package/misc/html/html-wrapper.d.ts +559 -0
  163. package/misc/html/html.d.ts +214 -0
  164. package/misc/index.d.ts +9 -0
  165. package/misc/sampler/sampler.d.ts +67 -0
  166. package/misc/shadow/shadow.d.ts +37 -0
  167. package/misc/stats-gl/stats-gl.d.ts +24 -0
  168. package/misc/trail/trail.d.ts +57 -0
  169. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  170. package/misc/trail-texture/trail-texture.d.ts +50 -0
  171. package/modifiers/README.md +3 -0
  172. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  173. package/modifiers/index.d.ts +1 -0
  174. package/package.json +30 -22
  175. package/performances/README.md +3 -0
  176. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  177. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  178. package/performances/index.d.ts +5 -0
  179. package/performances/points/points-input.d.ts +32 -0
  180. package/performances/points/points.d.ts +92 -0
  181. package/{performance/instances/position-mesh.d.ts → performances/points/position-point.d.ts} +4 -3
  182. package/performances/segments/segment-object.d.ts +7 -0
  183. package/performances/segments/segments.d.ts +124 -0
  184. package/shaders/grid-material/grid-material.d.ts +33 -0
  185. package/shaders/index.d.ts +4 -2
  186. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +146 -1
  187. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  188. package/shaders/shader-material/shader-material.d.ts +2 -2
  189. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  190. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  191. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  192. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  193. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  194. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  195. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  196. package/staging/backdrop/backdrop.d.ts +30 -0
  197. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  198. package/staging/bounds/bounds.d.ts +100 -24
  199. package/staging/camera-shake/camera-shake.d.ts +30 -19
  200. package/staging/center/center.d.ts +43 -35
  201. package/staging/cloud/cloud.d.ts +26 -23
  202. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  203. package/staging/environment/assets.d.ts +9 -9
  204. package/staging/environment/environment-cube.d.ts +9 -5
  205. package/staging/environment/environment-ground.d.ts +7 -7
  206. package/staging/environment/environment-input.d.ts +36 -36
  207. package/staging/environment/environment-map.d.ts +10 -5
  208. package/staging/environment/environment-portal.d.ts +10 -5
  209. package/staging/environment/environment.d.ts +0 -4
  210. package/staging/environment/utils.d.ts +2 -2
  211. package/staging/float/float.d.ts +14 -10
  212. package/staging/index.d.ts +6 -2
  213. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  214. package/staging/normal-texture/normal-texture.d.ts +16 -0
  215. package/staging/sky/sky.d.ts +28 -21
  216. package/staging/sparkles/sparkles.d.ts +35 -21
  217. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  218. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  219. package/staging/spot-light/spot-light-input.d.ts +25 -25
  220. package/staging/spot-light/spot-light.d.ts +31 -15
  221. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  222. package/staging/stage/stage.d.ts +88 -63
  223. package/staging/stars/stars.d.ts +27 -16
  224. package/staging/wireframe/wireframe-input.d.ts +65 -0
  225. package/staging/wireframe/wireframe.d.ts +28 -0
  226. package/utils/README.md +3 -0
  227. package/utils/content/content.d.ts +8 -0
  228. package/utils/index.d.ts +1 -0
  229. package/web-types.json +1 -0
  230. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  231. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  232. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  233. package/abstractions/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -12
  234. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  235. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  236. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  237. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  238. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  239. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  240. package/abstractions/line/line-input.d.ts +0 -42
  241. package/abstractions/line/line.d.ts +0 -35
  242. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  243. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  244. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  245. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  246. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  247. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  248. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  249. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  250. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  251. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  252. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  253. package/esm2022/abstractions/line/line-input.mjs +0 -113
  254. package/esm2022/abstractions/line/line.mjs +0 -165
  255. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  256. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  257. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  258. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  259. package/esm2022/performance/detailed/detailed.mjs +0 -61
  260. package/esm2022/performance/index.mjs +0 -7
  261. package/esm2022/performance/instances/instance.mjs +0 -48
  262. package/esm2022/performance/instances/instances.mjs +0 -189
  263. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  264. package/esm2022/performance/stats/stats.mjs +0 -79
  265. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  266. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  267. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  268. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  269. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -258
  270. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  271. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  272. package/performance/README.md +0 -3
  273. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  274. package/performance/detailed/detailed.d.ts +0 -20
  275. package/performance/index.d.ts +0 -6
  276. package/performance/instances/instance.d.ts +0 -9
  277. package/performance/instances/instances.d.ts +0 -35
  278. package/performance/stats/stats.d.ts +0 -18
  279. package/plugin/generators.json +0 -19
  280. package/plugin/libs/plugin/README.md +0 -11
  281. package/plugin/package.json +0 -9
  282. package/plugin/src/generators/init/compat.d.ts +0 -2
  283. package/plugin/src/generators/init/compat.js +0 -6
  284. package/plugin/src/generators/init/compat.js.map +0 -1
  285. package/plugin/src/generators/init/init.d.ts +0 -7
  286. package/plugin/src/generators/init/init.js +0 -28
  287. package/plugin/src/generators/init/init.js.map +0 -1
  288. package/plugin/src/generators/init/schema.json +0 -6
  289. package/plugin/src/index.d.ts +0 -1
  290. package/plugin/src/index.js +0 -6
  291. package/plugin/src/index.js.map +0 -1
  292. package/staging/caustics/caustisc.d.ts +0 -70
  293. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  294. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  295. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  296. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/animations/animations.ts","../../../../libs/soba/misc/src/bake-shadows/bake-shadows.ts","../../../../libs/soba/misc/src/fbo/fbo.ts","../../../../libs/soba/misc/src/depth-buffer/depth-buffer.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { DestroyRef, Injector, effect, inject, runInInjectionContext } from '@angular/core';\nimport { assertInjectionContext, injectBeforeRender, injectNgtRef, type NgtInjectedRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsAnimations(\n animationsFactory: () => THREE.AnimationClip[],\n { ref, injector }: { ref?: NgtInjectedRef<THREE.Object3D> | THREE.Object3D; injector?: Injector } = {}\n) {\n injector = assertInjectionContext(injectNgtsAnimations, injector);\n return runInInjectionContext(injector, () => {\n let actualRef = injectNgtRef<THREE.Object3D>();\n\n if (ref) {\n if (ref instanceof THREE.Object3D) {\n actualRef.nativeElement = ref;\n } else {\n actualRef = ref;\n }\n }\n\n const mixer = new THREE.AnimationMixer(null!);\n const actions = {} as Record<string, THREE.AnimationAction>;\n let cached = {} as Record<string, THREE.AnimationAction>;\n\n const clips = [] as THREE.AnimationClip[];\n const names = [] as string[];\n\n inject(DestroyRef).onDestroy(() => {\n // clear cached\n cached = {};\n // uncache actions\n Object.values(actions).forEach((action) => {\n mixer.uncacheAction(action as unknown as THREE.AnimationClip, actualRef.untracked);\n });\n // stop all actions\n mixer.stopAllAction();\n });\n\n injectBeforeRender(({ delta }) => mixer.update(delta));\n\n effect(() => {\n const actual = actualRef.nativeElement;\n if (!actual) return;\n const animations = animationsFactory();\n\n for (let i = 0; i < animations.length; i++) {\n const clip = animations[i];\n\n names.push(clip.name);\n clips.push(clip);\n\n Object.defineProperty(actions, clip.name, {\n enumerable: true,\n get: () => {\n return cached[clip.name] || (cached[clip.name] = mixer.clipAction(clip, actual));\n },\n });\n\n if (i === 0) {\n actions[clip.name].play();\n }\n }\n });\n\n return { ref: actualRef, actions, mixer, names, clips };\n });\n}\n","import { Directive, effect, inject } from '@angular/core';\nimport { NgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows {\n constructor() {\n const store = inject(NgtStore);\n const gl = store.select('gl');\n effect((onCleanup) => {\n gl().shadowMap.autoUpdate = false;\n gl().shadowMap.needsUpdate = true;\n onCleanup(() => {\n gl().shadowMap.autoUpdate = gl().shadowMap.needsUpdate = true;\n });\n });\n }\n}\n","import {\n ChangeDetectorRef,\n computed,\n DestroyRef,\n effect,\n inject,\n Injector,\n runInInjectionContext,\n signal,\n untracked,\n} from '@angular/core';\nimport { assertInjectionContext, NgtStore, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n /** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n samples?: number;\n /** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n depth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n width?: number | FBOSettings;\n height?: number;\n settings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(fboParams: () => NgtsFBOParams, { injector }: { injector?: Injector } = {}) {\n injector = assertInjectionContext(injectNgtsFBO, injector);\n return runInInjectionContext(injector, () => {\n const store = inject(NgtStore);\n const cdr = inject(ChangeDetectorRef);\n\n const targetRef = signal<THREE.WebGLRenderTarget>(null!);\n\n inject(DestroyRef).onDestroy(() => targetRef().dispose());\n\n requestAnimationFrame(() => {\n const size = store.select('size');\n const dpr = store.select('viewport', 'dpr');\n const trigger = computed(() => {\n const { width, height, settings } = fboParams();\n const _width = typeof width === 'number' ? width : size().width * dpr();\n const _height = typeof height === 'number' ? height : size().height * dpr();\n const _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n return { width: _width, height: _height, settings: _settings };\n });\n\n effect(\n () => {\n const { width, height, settings } = trigger();\n const { samples = 0, depth, ...targetSettings } = settings;\n let untrackedTarget = untracked(targetRef);\n if (!untrackedTarget) {\n const target = new THREE.WebGLRenderTarget(width, height, {\n minFilter: THREE.LinearFilter,\n magFilter: THREE.LinearFilter,\n type: THREE.HalfFloatType,\n ...targetSettings,\n });\n if (depth) target.depthTexture = new THREE.DepthTexture(width, height, THREE.FloatType);\n\n target.samples = samples;\n targetRef.set(target);\n untrackedTarget = untracked(targetRef);\n }\n\n untrackedTarget.setSize(width, height);\n if (samples) untrackedTarget.samples = samples;\n safeDetectChanges(cdr);\n },\n { allowSignalWrites: true, injector }\n );\n });\n\n return targetRef.asReadonly();\n });\n}\n","import {\n ChangeDetectorRef,\n computed,\n effect,\n inject,\n Injector,\n runInInjectionContext,\n signal,\n untracked,\n} from '@angular/core';\nimport { assertInjectionContext, injectBeforeRender, NgtStore, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n size: number;\n frames: number;\n}\n\nexport function injectNgtsDepthBuffer(\n paramsFactory: () => Partial<NgtsDepthBufferParams> = () => ({}),\n { injector }: { injector?: Injector } = {}\n) {\n injector = assertInjectionContext(injectNgtsDepthBuffer, injector);\n return runInInjectionContext(injector, () => {\n const depthBufferRef = signal<THREE.DepthTexture>(null!);\n const store = inject(NgtStore);\n const cdr = inject(ChangeDetectorRef);\n\n const size = store.select('size');\n const dpr = store.select('viewport', 'dpr');\n\n requestAnimationFrame(() => {\n const fboParams = computed(() => {\n const params = { size: 256, frames: Infinity, ...paramsFactory() };\n const width = params.size || size().width * dpr();\n const height = params.size || size().height * dpr();\n const depthTexture = new THREE.DepthTexture(width, height);\n depthTexture.format = THREE.DepthFormat;\n depthTexture.type = THREE.UnsignedShortType;\n return { width, height, settings: { depthTexture } };\n });\n\n const fboRef = injectNgtsFBO(fboParams, { injector });\n\n effect(\n () => {\n const fbo = fboRef();\n if (fbo) {\n depthBufferRef.set(fbo.depthTexture);\n safeDetectChanges(cdr);\n }\n },\n { allowSignalWrites: true, injector }\n );\n\n let count = 0;\n injectBeforeRender(\n ({ gl, scene, camera }) => {\n const params = { size: 256, frames: Infinity, ...paramsFactory() };\n const fbo = untracked(fboRef);\n if ((params.frames === Infinity || count < params.frames) && fbo) {\n gl.setRenderTarget(fbo);\n gl.render(scene, camera);\n gl.setRenderTarget(null);\n count++;\n }\n },\n { injector }\n );\n });\n\n return depthBufferRef.asReadonly();\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-misc.mjs","sources":["../../../../libs/soba/misc/src/animations/animations.ts","../../../../libs/soba/misc/src/bake-shadows/bake-shadows.ts","../../../../libs/soba/misc/src/fbo/fbo.ts","../../../../libs/soba/misc/src/caustics/caustics.ts","../../../../libs/soba/misc/src/decal/decal.ts","../../../../libs/soba/misc/src/depth-buffer/depth-buffer.ts","../../../../libs/soba/misc/src/example/example.ts","../../../../libs/soba/misc/src/html/html-wrapper.ts","../../../../libs/soba/misc/src/html/html.ts","../../../../libs/soba/misc/src/sampler/sampler.ts","../../../../libs/soba/misc/src/shadow/shadow.ts","../../../../libs/soba/misc/src/stats-gl/stats-gl.ts","../../../../libs/soba/misc/src/trail-texture/trail-texture.ts","../../../../libs/soba/misc/src/trail-texture/inject-trail-texture.ts","../../../../libs/soba/misc/src/trail/trail.ts","../../../../libs/soba/misc/src/angular-three-soba-misc.ts"],"sourcesContent":["import { Injector, computed, effect, runInInjectionContext } from '@angular/core';\nimport { assertInjectionContext, injectBeforeRender, injectNgtRef, type NgtRef } from 'angular-three';\nimport * as THREE from 'three';\n\nexport function injectNgtsAnimations(\n\tanimationsFactory: () => THREE.AnimationClip[],\n\t{\n\t\tref,\n\t\tinjector,\n\t\tplayFirstClip = true,\n\t}: { ref?: NgtRef<THREE.Object3D>; playFirstClip?: boolean; injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsAnimations, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tlet actualRef = injectNgtRef<THREE.Object3D>();\n\n\t\tif (ref) {\n\t\t\tif (ref instanceof THREE.Object3D) {\n\t\t\t\tactualRef.nativeElement = ref;\n\t\t\t} else {\n\t\t\t\tactualRef = ref;\n\t\t\t}\n\t\t}\n\n\t\tconst mixer = new THREE.AnimationMixer(null!);\n\t\tconst actions = {} as Record<string, THREE.AnimationAction>;\n\t\tlet cached = {} as Record<string, THREE.AnimationAction>;\n\t\tlet object: THREE.Object3D | null = null;\n\n\t\tconst clips = [] as THREE.AnimationClip[];\n\t\tconst names = [] as string[];\n\n\t\tinjectBeforeRender(({ delta }) => mixer.update(delta));\n\n\t\tconst ready = computed(() => !!actualRef.nativeElement && !!animationsFactory().length);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst actual = actualRef.nativeElement;\n\t\t\tif (!actual) return;\n\t\t\tobject = actual;\n\t\t\tconst animations = animationsFactory();\n\n\t\t\tfor (let i = 0; i < animations.length; i++) {\n\t\t\t\tconst clip = animations[i];\n\n\t\t\t\tnames.push(clip.name);\n\t\t\t\tclips.push(clip);\n\n\t\t\t\tObject.defineProperty(actions, clip.name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => {\n\t\t\t\t\t\treturn cached[clip.name] || (cached[clip.name] = mixer.clipAction(clip, actual));\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (i === 0 && playFirstClip) {\n\t\t\t\t\tactions[clip.name].play();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// clear cached\n\t\t\t\tcached = {};\n\t\t\t\t// stop all actions\n\t\t\t\tmixer.stopAllAction();\n\t\t\t\t// uncache actions\n\t\t\t\tObject.values(actions).forEach((action) => {\n\t\t\t\t\tmixer.uncacheAction(action as unknown as THREE.AnimationClip, object!);\n\t\t\t\t});\n\n\t\t\t\tobject = null;\n\t\t\t});\n\t\t});\n\n\t\treturn { ref: actualRef, actions, mixer, names, clips, ready };\n\t});\n}\n","import { Directive, effect } from '@angular/core';\nimport { injectNgtStore } from 'angular-three';\n\n@Directive({ selector: 'ngts-bake-shadows', standalone: true })\nexport class NgtsBakeShadows {\n\tconstructor() {\n\t\tconst store = injectNgtStore();\n\t\tconst glShadowMap = store.select('gl', 'shadowMap');\n\t\teffect((onCleanup) => {\n\t\t\tconst shadowMap = glShadowMap();\n\t\t\tshadowMap.autoUpdate = false;\n\t\t\tshadowMap.needsUpdate = true;\n\t\t\tonCleanup(() => {\n\t\t\t\tshadowMap.autoUpdate = shadowMap.needsUpdate = true;\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tDestroyRef,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\ttype Injector,\n} from '@angular/core';\nimport { assertInjectionContext, injectNgtRef, injectNgtStore, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\n\ninterface FBOSettings extends THREE.WebGLRenderTargetOptions {\n\t/** Defines the count of MSAA samples. Can only be used with WebGL 2. Default: 0 */\n\tsamples?: number;\n\t/** If set, the scene depth will be rendered into buffer.depthTexture. Default: false */\n\tdepth?: boolean;\n}\n\nexport interface NgtsFBOParams {\n\twidth?: number | FBOSettings;\n\theight?: number;\n\tsettings?: FBOSettings;\n}\n\nexport function injectNgtsFBO(fboParams: () => NgtsFBOParams, { injector }: { injector?: Injector } = {}) {\n\tinjector = assertInjectionContext(injectNgtsFBO, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst store = injectNgtStore();\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst targetRef = injectNgtRef<THREE.WebGLRenderTarget | null>(null);\n\n\t\tinject(DestroyRef).onDestroy(() => targetRef.nativeElement?.dispose());\n\n\t\tconst size = store.select('size');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\t\tconst fboSettings = computed(() => {\n\t\t\tconst { width, height, settings } = fboParams();\n\t\t\tconst _width = typeof width === 'number' ? width : size().width * dpr();\n\t\t\tconst _height = typeof height === 'number' ? height : size().height * dpr();\n\t\t\tconst _settings = (typeof width === 'number' ? settings : (width as FBOSettings)) || {};\n\n\t\t\treturn { width: _width, height: _height, settings: _settings };\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst { width, height, settings } = fboSettings();\n\t\t\tconst { samples = 0, depth, ...targetSettings } = settings;\n\t\t\tlet untrackedTarget = targetRef.untracked;\n\t\t\tif (!untrackedTarget) {\n\t\t\t\tconst target = new THREE.WebGLRenderTarget(width, height, {\n\t\t\t\t\tminFilter: THREE.LinearFilter,\n\t\t\t\t\tmagFilter: THREE.LinearFilter,\n\t\t\t\t\ttype: THREE.HalfFloatType,\n\t\t\t\t\t...targetSettings,\n\t\t\t\t});\n\t\t\t\tif (depth) target.depthTexture = new THREE.DepthTexture(width, height, THREE.FloatType);\n\n\t\t\t\ttarget.samples = samples;\n\t\t\t\ttargetRef.nativeElement = target;\n\t\t\t\tuntrackedTarget = targetRef.untracked;\n\t\t\t}\n\n\t\t\tif (untrackedTarget) {\n\t\t\t\tuntrackedTarget.setSize(width, height);\n\t\t\t\tif (samples) untrackedTarget.samples = samples;\n\t\t\t\tsafeDetectChanges(cdr);\n\t\t\t}\n\t\t});\n\n\t\treturn targetRef;\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, Input } from '@angular/core';\nimport { extend, injectNgtRef, injectNgtStore, NgtGroup, signalStore } from 'angular-three';\nimport { NgtsEdges } from 'angular-three-soba/abstractions';\nimport { CausticsMaterial, CausticsProjectionMaterial } from 'angular-three-soba/shaders';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { Group, LineBasicMaterial, Mesh, OrthographicCamera, PlaneGeometry, Scene } from 'three';\nimport { FullScreenQuad } from 'three-stdlib';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nextend({ Group, Scene, Mesh, PlaneGeometry, OrthographicCamera, CausticsProjectionMaterial, LineBasicMaterial });\n\nconst NORMALPROPS = {\n\tdepth: true,\n\tminFilter: THREE.LinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.UnsignedByteType,\n};\n\nconst CAUSTICPROPS = {\n\tminFilter: THREE.LinearMipmapLinearFilter,\n\tmagFilter: THREE.LinearFilter,\n\ttype: THREE.FloatType,\n\tgenerateMipmaps: true,\n};\n\ntype CausticsMaterialType = THREE.ShaderMaterial & {\n\tcameraMatrixWorld?: THREE.Matrix4;\n\tcameraProjectionMatrixInv?: THREE.Matrix4;\n\tlightPlaneNormal?: THREE.Vector3;\n\tlightPlaneConstant?: number;\n\tnormalTexture?: THREE.Texture | null;\n\tdepthTexture?: THREE.Texture | null;\n\tlightDir?: THREE.Vector3;\n\tnear?: number;\n\tfar?: number;\n\tmodelMatrix?: THREE.Matrix4;\n\tworldRadius?: number;\n\tior?: number;\n\tbounces?: number;\n\tresolution?: number;\n\tsize?: number;\n\tintensity?: number;\n};\n\ntype CausticsProjectionMaterialType = THREE.MeshNormalMaterial & {\n\tviewMatrix: { value?: THREE.Matrix4 };\n\tcolor?: THREE.Color;\n\tcausticsTexture?: THREE.Texture;\n\tcausticsTextureB?: THREE.Texture;\n\tlightProjMatrix?: THREE.Matrix4;\n\tlightViewMatrix?: THREE.Matrix4;\n};\n\nfunction createNormalMaterial(side: THREE.Side = THREE.FrontSide) {\n\tconst viewMatrix = { value: new THREE.Matrix4() };\n\treturn Object.assign(new THREE.MeshNormalMaterial({ side }), {\n\t\tviewMatrix,\n\t\tonBeforeCompile: (shader: any) => {\n\t\t\tshader.uniforms.viewMatrix = viewMatrix;\n\t\t\tshader.fragmentShader =\n\t\t\t\t`vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n }\\n` +\n\t\t\t\tshader.fragmentShader.replace(\n\t\t\t\t\t'#include <normal_fragment_maps>',\n\t\t\t\t\t`#include <normal_fragment_maps>\n normal = inverseTransformDirection( normal, viewMatrix );\\n`,\n\t\t\t\t);\n\t\t},\n\t});\n}\n\nexport type NgtsCausticsState = {\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\tframes: number;\n\t/** Enables visual cues to help you stage your scene, default: false */\n\tdebug: boolean;\n\t/** Will display caustics only and skip the models, default: false */\n\tcausticsOnly: boolean;\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\tbackside: boolean;\n\t/** The IOR refraction index, default: 1.1 */\n\tior: number;\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\tbacksideIOR: number;\n\t/** The texel size, default: 0.3125 */\n\tworldRadius: number;\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\tintensity: number;\n\t/** Caustics color, default: white */\n\tcolor: THREE.ColorRepresentation;\n\t/** Buffer resolution, default: 2048 */\n\tresolution: number;\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\tlightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-caustics': NgtsCausticsState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-caustics',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group [ref]=\"causticsRef\" ngtCompound>\n\t\t\t<ngt-scene [ref]=\"sceneRef\">\n\t\t\t\t<ngt-orthographic-camera [ref]=\"cameraRef\" [up]=\"[0, 1, 0]\" />\n\t\t\t\t<ng-content />\n\t\t\t</ngt-scene>\n\t\t\t<ngt-mesh [renderOrder]=\"2\" [ref]=\"planeRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t<ngt-caustics-projection-material\n\t\t\t\t\t*ngIf=\"causticsTargetFbo.nativeElement && causticsTargetBFbo.nativeElement\"\n\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t[causticsTexture]=\"causticsTargetFbo.nativeElement.texture\"\n\t\t\t\t\t[causticsTextureB]=\"causticsTargetBFbo.nativeElement.texture\"\n\t\t\t\t\t[blending]=\"CustomBlending\"\n\t\t\t\t\t[blendSrc]=\"OneFactor\"\n\t\t\t\t\t[blendDst]=\"SrcAlphaFactor\"\n\t\t\t\t\t[depthWrite]=\"false\"\n\t\t\t\t/>\n\n\t\t\t\t<ngts-edges *ngIf=\"debug()\">\n\t\t\t\t\t<ngt-line-basic-material *ngtsSobaContent color=\"#ffff00\" [toneMapped]=\"false\" />\n\t\t\t\t</ngts-edges>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\timports: [NgIf, NgtsEdges, NgtsSobaContent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCaustics {\n\tCustomBlending = THREE.CustomBlending;\n\tOneFactor = THREE.OneFactor;\n\tSrcAlphaFactor = THREE.SrcAlphaFactor;\n\tMath = Math;\n\n\tprivate inputs = signalStore<NgtsCausticsState>({\n\t\tframes: 1,\n\t\tior: 1.1,\n\t\tcolor: 'white',\n\t\tcausticsOnly: false,\n\t\tbackside: false,\n\t\tbacksideIOR: 1.1,\n\t\tworldRadius: 0.3125,\n\t\tintensity: 0.05,\n\t\tresolution: 2024,\n\t\tlightSource: [5, 5, 5],\n\t});\n\n\t@Input() causticsRef = injectNgtRef<THREE.Group>();\n\n\t/** How many frames it will render, set it to Infinity for runtime, default: 1 */\n\t@Input({ alias: 'frames' }) set _frames(frames: number) {\n\t\tthis.inputs.set({ frames });\n\t}\n\t/** Enables visual cues to help you stage your scene, default: false */\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\t/** Will display caustics only and skip the models, default: false */\n\t@Input({ alias: 'causticsOnly' }) set _causticsOnly(causticsOnly: boolean) {\n\t\tthis.inputs.set({ causticsOnly });\n\t}\n\t/** Will include back faces and enable the backsideIOR prop, default: false */\n\t@Input({ alias: 'backside' }) set _backside(backside: boolean) {\n\t\tthis.inputs.set({ backside });\n\t}\n\t/** The IOR refraction index, default: 1.1 */\n\t@Input({ alias: 'ior' }) set _ior(ior: number) {\n\t\tthis.inputs.set({ ior });\n\t}\n\t/** The IOR refraction index for back faces (only available when backside is enabled), default: 1.1 */\n\t@Input({ alias: 'backsideIOR' }) set _backsideIOR(backsideIOR: number) {\n\t\tthis.inputs.set({ backsideIOR });\n\t}\n\t/** The texel size, default: 0.3125 */\n\t@Input({ alias: 'worldRadius' }) set _worldRadius(worldRadius: number) {\n\t\tthis.inputs.set({ worldRadius });\n\t}\n\t/** Intensity of the prjected caustics, default: 0.05 */\n\t@Input({ alias: 'intensity' }) set _intensity(intensity: number) {\n\t\tthis.inputs.set({ intensity });\n\t}\n\t/** Caustics color, default: white */\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\t/** Buffer resolution, default: 2048 */\n\t@Input({ alias: 'resolution' }) set _resolution(resolution: number) {\n\t\tthis.inputs.set({ resolution });\n\t}\n\t/** Camera position, it will point towards the contents bounds center, default: [5, 5, 5] */\n\t@Input({ alias: 'lightSource' }) set _lightSource(\n\t\tlightSource: [x: number, y: number, z: number] | ElementRef<THREE.Object3D>,\n\t) {\n\t\tthis.inputs.set({ lightSource });\n\t}\n\n\tprivate resolution = this.inputs.select('resolution');\n\n\tprivate normalTargetSettings = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: NORMALPROPS,\n\t}));\n\n\tprivate causticsTargetSettings = computed(() => ({\n\t\twidth: this.resolution(),\n\t\theight: this.resolution(),\n\t\tsettings: CAUSTICPROPS,\n\t}));\n\n\tprivate normalTargetFbo = injectNgtsFBO(this.normalTargetSettings);\n\tprivate normalTargetBFbo = injectNgtsFBO(this.normalTargetSettings);\n\tcausticsTargetFbo = injectNgtsFBO(this.causticsTargetSettings);\n\tcausticsTargetBFbo = injectNgtsFBO(this.causticsTargetSettings);\n\n\tprivate store = injectNgtStore();\n\n\tcolor = this.inputs.select('color');\n\tdebug = this.inputs.select('debug');\n\n\tplaneRef = injectNgtRef<THREE.Mesh>();\n\tsceneRef = injectNgtRef<THREE.Scene>();\n\tcameraRef = injectNgtRef<THREE.OrthographicCamera>();\n\n\tprivate sceneChildren = this.sceneRef.children();\n\tprivate planeChildren = this.planeRef.children('both');\n\tprivate causticsChildren = this.causticsRef.children();\n\n\tconstructor() {\n\t\tthis.updateWorldMatrix();\n\t\tthis.setBeforeRender();\n\t}\n\n\tprivate updateWorldMatrix() {\n\t\teffect(() => {\n\t\t\tconst [caustics] = [\n\t\t\t\tthis.causticsRef.nativeElement,\n\t\t\t\tthis.inputs.state(),\n\t\t\t\tthis.causticsChildren(),\n\t\t\t\tthis.sceneChildren(),\n\t\t\t];\n\t\t\tif (!caustics) return;\n\t\t\tcaustics.updateWorldMatrix(false, true);\n\t\t});\n\t}\n\n\tprivate setBeforeRender() {\n\t\tconst causticsMaterial = new CausticsMaterial() as CausticsMaterialType;\n\t\tconst causticsQuad = new FullScreenQuad(causticsMaterial);\n\n\t\tconst normalMaterial = createNormalMaterial();\n\t\tconst normalMaterialB = createNormalMaterial(THREE.BackSide);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [\n\t\t\t\tcaustics,\n\t\t\t\tscene,\n\t\t\t\tcamera,\n\t\t\t\tnormalTarget,\n\t\t\t\tnormalTargetB,\n\t\t\t\tcausticsTarget,\n\t\t\t\tcausticsTargetB,\n\t\t\t\tplane,\n\t\t\t\tsceneChildren,\n\t\t\t] = [\n\t\t\t\tthis.causticsRef.nativeElement,\n\t\t\t\tthis.sceneRef.nativeElement,\n\t\t\t\tthis.cameraRef.nativeElement,\n\t\t\t\tthis.normalTargetFbo.nativeElement,\n\t\t\t\tthis.normalTargetBFbo.nativeElement,\n\t\t\t\tthis.causticsTargetFbo.nativeElement,\n\t\t\t\tthis.causticsTargetBFbo.nativeElement,\n\t\t\t\tthis.planeRef.nativeElement,\n\t\t\t\tthis.sceneChildren(),\n\t\t\t\tthis.planeChildren(),\n\t\t\t];\n\n\t\t\tif (!caustics) return;\n\t\t\tcaustics.updateWorldMatrix(false, true);\n\n\t\t\tif (sceneChildren.length > 1) {\n\t\t\t\tconst v = new THREE.Vector3();\n\t\t\t\tconst lpF = new THREE.Frustum();\n\t\t\t\tconst lpM = new THREE.Matrix4();\n\t\t\t\tconst lpP = new THREE.Plane();\n\n\t\t\t\tconst lightDir = new THREE.Vector3();\n\t\t\t\tconst lightDirInv = new THREE.Vector3();\n\t\t\t\tconst bounds = new THREE.Box3();\n\t\t\t\tconst focusPos = new THREE.Vector3();\n\n\t\t\t\tlet count = 0;\n\t\t\t\tconst sub = this.store.get('internal').subscribe(({ gl }) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tframes,\n\t\t\t\t\t\tlightSource,\n\t\t\t\t\t\tresolution,\n\t\t\t\t\t\tworldRadius,\n\t\t\t\t\t\tintensity,\n\t\t\t\t\t\tbackside,\n\t\t\t\t\t\tbacksideIOR,\n\t\t\t\t\t\tior,\n\t\t\t\t\t\tcausticsOnly,\n\t\t\t\t\t} = this.inputs.get();\n\n\t\t\t\t\tif (frames === Infinity || count++ < frames) {\n\t\t\t\t\t\tif (Array.isArray(lightSource)) lightDir.fromArray(lightSource).normalize();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlightDir.copy(\n\t\t\t\t\t\t\t\tcaustics.worldToLocal(lightSource.nativeElement.getWorldPosition(v)).normalize(),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tlightDirInv.copy(lightDir).multiplyScalar(-1);\n\n\t\t\t\t\t\tlet boundsVertices: THREE.Vector3[] = [];\n\t\t\t\t\t\tscene.parent?.matrixWorld.identity();\n\t\t\t\t\t\tbounds.setFromObject(scene, true);\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.min.y, bounds.max.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.min.x, bounds.max.y, bounds.max.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.min.y, bounds.max.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.min.z));\n\t\t\t\t\t\tboundsVertices.push(new THREE.Vector3(bounds.max.x, bounds.max.y, bounds.max.z));\n\n\t\t\t\t\t\tconst worldVerts = boundsVertices.map((v) => v.clone());\n\n\t\t\t\t\t\tbounds.getCenter(focusPos);\n\t\t\t\t\t\tboundsVertices = boundsVertices.map((v) => v.clone().sub(focusPos));\n\t\t\t\t\t\tconst lightPlane = lpP.set(lightDirInv, 0);\n\t\t\t\t\t\tconst projectedVerts = boundsVertices.map((v) =>\n\t\t\t\t\t\t\tlightPlane.projectPoint(v, new THREE.Vector3()),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst centralVert = projectedVerts\n\t\t\t\t\t\t\t.reduce((a, b) => a.add(b), v.set(0, 0, 0))\n\t\t\t\t\t\t\t.divideScalar(projectedVerts.length);\n\t\t\t\t\t\tconst radius = projectedVerts\n\t\t\t\t\t\t\t.map((v) => v.distanceTo(centralVert))\n\t\t\t\t\t\t\t.reduce((a, b) => Math.max(a, b));\n\t\t\t\t\t\tconst dirLength = boundsVertices.map((x) => x.dot(lightDir)).reduce((a, b) => Math.max(a, b));\n\n\t\t\t\t\t\t// Shadows\n\t\t\t\t\t\tcamera.position.copy(lightDir.clone().multiplyScalar(dirLength).add(focusPos));\n\t\t\t\t\t\tcamera.lookAt(scene.localToWorld(focusPos.clone()));\n\t\t\t\t\t\tconst dirMatrix = lpM.lookAt(camera.position, focusPos, v.set(0, 1, 0));\n\t\t\t\t\t\tcamera.left = -radius;\n\t\t\t\t\t\tcamera.right = radius;\n\t\t\t\t\t\tcamera.top = radius;\n\t\t\t\t\t\tcamera.bottom = -radius;\n\t\t\t\t\t\tconst yOffset = v.set(0, radius, 0).applyMatrix4(dirMatrix);\n\t\t\t\t\t\tconst yTime = (camera.position.y + yOffset.y) / lightDir.y;\n\t\t\t\t\t\tcamera.near = 0.1;\n\t\t\t\t\t\tcamera.far = yTime;\n\t\t\t\t\t\tcamera.updateProjectionMatrix();\n\t\t\t\t\t\tcamera.updateMatrixWorld();\n\n\t\t\t\t\t\t// Now find size of ground plane\n\t\t\t\t\t\tconst groundProjectedCoords = worldVerts.map((v) =>\n\t\t\t\t\t\t\tv.add(lightDir.clone().multiplyScalar(-v.y / lightDir.y)),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst centerPos = groundProjectedCoords\n\t\t\t\t\t\t\t.reduce((a, b) => a.add(b), v.set(0, 0, 0))\n\t\t\t\t\t\t\t.divideScalar(groundProjectedCoords.length);\n\t\t\t\t\t\tconst maxSize =\n\t\t\t\t\t\t\t2 *\n\t\t\t\t\t\t\tgroundProjectedCoords\n\t\t\t\t\t\t\t\t.map((v) => Math.hypot(v.x - centerPos.x, v.z - centerPos.z))\n\t\t\t\t\t\t\t\t.reduce((a, b) => Math.max(a, b));\n\t\t\t\t\t\tplane.scale.setScalar(maxSize);\n\t\t\t\t\t\tplane.position.copy(centerPos);\n\n\t\t\t\t\t\t// if (debug) helper.current?.update();\n\n\t\t\t\t\t\t// Inject uniforms\n\t\t\t\t\t\tnormalMaterialB.viewMatrix.value = normalMaterial.viewMatrix.value = camera.matrixWorldInverse;\n\n\t\t\t\t\t\tconst dirLightNearPlane = lpF.setFromProjectionMatrix(\n\t\t\t\t\t\t\tlpM.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse),\n\t\t\t\t\t\t).planes[4];\n\n\t\t\t\t\t\tcausticsMaterial.cameraMatrixWorld = camera.matrixWorld;\n\t\t\t\t\t\tcausticsMaterial.cameraProjectionMatrixInv = camera.projectionMatrixInverse;\n\t\t\t\t\t\tcausticsMaterial.lightDir = lightDirInv;\n\n\t\t\t\t\t\tcausticsMaterial.lightPlaneNormal = dirLightNearPlane.normal;\n\t\t\t\t\t\tcausticsMaterial.lightPlaneConstant = dirLightNearPlane.constant;\n\n\t\t\t\t\t\tcausticsMaterial.near = camera.near;\n\t\t\t\t\t\tcausticsMaterial.far = camera.far;\n\t\t\t\t\t\tcausticsMaterial.resolution = resolution;\n\t\t\t\t\t\tcausticsMaterial.size = radius;\n\t\t\t\t\t\tcausticsMaterial.intensity = intensity;\n\t\t\t\t\t\tcausticsMaterial.worldRadius = worldRadius;\n\n\t\t\t\t\t\t// Switch the scene on\n\t\t\t\t\t\tscene.visible = true;\n\n\t\t\t\t\t\t// Render front face normals\n\t\t\t\t\t\tgl.setRenderTarget(normalTarget);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tscene.overrideMaterial = normalMaterial;\n\t\t\t\t\t\tgl.render(scene, camera);\n\n\t\t\t\t\t\t// Render back face normals, if enabled\n\t\t\t\t\t\tgl.setRenderTarget(normalTargetB);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tif (backside) {\n\t\t\t\t\t\t\tscene.overrideMaterial = normalMaterialB;\n\t\t\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Remove the override material\n\t\t\t\t\t\tscene.overrideMaterial = null;\n\n\t\t\t\t\t\t// Render front face caustics\n\t\t\t\t\t\tcausticsMaterial.ior = ior;\n\t\t\t\t\t\t(plane.material as CausticsProjectionMaterialType).lightProjMatrix = camera.projectionMatrix;\n\t\t\t\t\t\t(plane.material as CausticsProjectionMaterialType).lightViewMatrix = camera.matrixWorldInverse;\n\t\t\t\t\t\tcausticsMaterial.normalTexture = normalTarget?.texture;\n\t\t\t\t\t\tcausticsMaterial.depthTexture = normalTarget?.depthTexture;\n\t\t\t\t\t\tgl.setRenderTarget(causticsTarget);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tcausticsQuad.render(gl);\n\n\t\t\t\t\t\t// Render back face caustics, if enabled\n\t\t\t\t\t\tcausticsMaterial.ior = backsideIOR;\n\t\t\t\t\t\tcausticsMaterial.normalTexture = normalTargetB?.texture;\n\t\t\t\t\t\tcausticsMaterial.depthTexture = normalTargetB?.depthTexture;\n\t\t\t\t\t\tgl.setRenderTarget(causticsTargetB);\n\t\t\t\t\t\tgl.clear();\n\t\t\t\t\t\tif (backside) causticsQuad.render(gl);\n\n\t\t\t\t\t\t// Reset render target\n\t\t\t\t\t\tgl.setRenderTarget(null);\n\n\t\t\t\t\t\t// Switch the scene off if caustics is all that's wanted\n\t\t\t\t\t\tif (causticsOnly) scene.visible = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tonCleanup(() => sub());\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, Input } from '@angular/core';\nimport {\n\tapplyProps,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtEuler,\n\ttype NgtMesh,\n\ttype NgtRef,\n\ttype NgtVector3,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { AxesHelper, BoxGeometry, Mesh, MeshNormalMaterial } from 'three';\nimport { DecalGeometry } from 'three-stdlib';\n\nextend({ Mesh, BoxGeometry, MeshNormalMaterial, AxesHelper });\n\nexport type NgtsDecalState = {\n\tdebug: boolean;\n\tmesh?: NgtRef<THREE.Mesh>;\n\tposition: NgtVector3;\n\trotation: NgtEuler | number;\n\tscale: NgtVector3;\n\tmap?: THREE.Texture;\n\tpolygonOffsetFactor: number;\n\tdepthTest: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-mesh\n\t\t */\n\t\t'ngts-decal': NgtsDecalState & NgtMesh;\n\t}\n}\n\nfunction vecToArray(vec: number[] | NgtVector3 | NgtEuler | number = [0, 0, 0]) {\n\tif (Array.isArray(vec)) {\n\t\treturn vec;\n\t}\n\n\tif (vec instanceof THREE.Vector3 || vec instanceof THREE.Euler) {\n\t\treturn [vec.x, vec.y, vec.z];\n\t}\n\n\treturn [vec, vec, vec];\n}\n\n@Component({\n\tselector: 'ngts-decal',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh [ref]=\"decalRef\" ngtCompound>\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.transparent\" />\n\t\t\t<ngt-value [rawValue]=\"true\" attach=\"material.polygonOffset\" />\n\t\t\t<ngt-value [rawValue]=\"polygonOffsetFactor()\" attach=\"material.polygonOffsetFactor\" />\n\t\t\t<ngt-value [rawValue]=\"depthTest()\" attach=\"material.depthTest\" />\n\t\t\t<ngt-value [rawValue]=\"map()\" attach=\"material.map\" />\n\t\t\t<ng-content />\n\n\t\t\t<ngt-mesh *ngIf=\"debug()\" [ref]=\"helperRef\">\n\t\t\t\t<ngt-box-geometry />\n\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t<ngt-axes-helper />\n\t\t\t</ngt-mesh>\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgIf],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsDecal {\n\tprivate inputs = signalStore<NgtsDecalState>({\n\t\tdebug: false,\n\t\tdepthTest: false,\n\t\tpolygonOffsetFactor: -10,\n\t\tposition: [0, 0, 0],\n\t\trotation: [0, 0, 0],\n\t\tscale: 1,\n\t});\n\n\t@Input() decalRef = injectNgtRef<Mesh>();\n\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\n\t@Input({ alias: 'mesh' }) set _mesh(mesh: NgtRef<THREE.Mesh>) {\n\t\tthis.inputs.set({ mesh });\n\t}\n\n\t@Input({ alias: 'position' }) set _position(position: NgtVector3) {\n\t\tthis.inputs.set({ position });\n\t}\n\n\t@Input({ alias: 'rotation' }) set _rotation(rotation: NgtEuler | number) {\n\t\tthis.inputs.set({ rotation });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: NgtVector3) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'map' }) set _map(map: THREE.Texture) {\n\t\tthis.inputs.set({ map });\n\t}\n\n\t@Input({ alias: 'polygonOffsetFactor' }) set _polygonOffsetFactor(polygonOffsetFactor: number) {\n\t\tthis.inputs.set({ polygonOffsetFactor });\n\t}\n\n\t@Input({ alias: 'depthTest' }) set _depthTest(depthTest: boolean) {\n\t\tthis.inputs.set({ depthTest });\n\t}\n\n\tprivate mesh = this.inputs.select('mesh');\n\tprivate __position = this.inputs.select('position');\n\tprivate __rotation = this.inputs.select('rotation');\n\tprivate __scale = this.inputs.select('scale');\n\tprivate position = computed(() => vecToArray(this.__position()));\n\tprivate rotation = computed(() => vecToArray(this.__rotation()));\n\tprivate scale = computed(() => vecToArray(this.__scale()));\n\n\thelperRef = injectNgtRef<Mesh>();\n\n\tdebug = this.inputs.select('debug');\n\tdepthTest = this.inputs.select('depthTest');\n\tpolygonOffsetFactor = this.inputs.select('polygonOffsetFactor');\n\tmap = this.inputs.select('map');\n\n\tconstructor() {\n\t\tthis.processDecal();\n\t}\n\n\tprivate processDecal() {\n\t\teffect((onCleanup) => {\n\t\t\tconst decal = this.decalRef.nativeElement;\n\t\t\tif (!decal) return;\n\n\t\t\tconst [mesh, position, rotation, scale, helper] = [\n\t\t\t\tthis.mesh(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.rotation(),\n\t\t\t\tthis.scale(),\n\t\t\t\tthis.helperRef.nativeElement,\n\t\t\t];\n\n\t\t\tconst parent = mesh ? (is.ref(mesh) ? mesh.nativeElement : mesh) : decal.parent;\n\t\t\tif (!(parent instanceof Mesh)) {\n\t\t\t\tthrow new Error('[NGT] ngts-decal must have a ngt-mesh as parent or specify its \"mesh\" input');\n\t\t\t}\n\n\t\t\tconst state = {\n\t\t\t\tposition: new THREE.Vector3(),\n\t\t\t\trotation: new THREE.Euler(),\n\t\t\t\tscale: new THREE.Vector3(1, 1, 1),\n\t\t\t};\n\n\t\t\tif (parent) {\n\t\t\t\tapplyProps(state, { position, scale });\n\n\t\t\t\t// Zero out the parents matrix world for this operation\n\t\t\t\tconst matrixWorld = parent.matrixWorld.clone();\n\t\t\t\tparent.matrixWorld.identity();\n\n\t\t\t\tif (!rotation || typeof rotation === 'number') {\n\t\t\t\t\tconst o = new THREE.Object3D();\n\n\t\t\t\t\to.position.copy(state.position);\n\t\t\t\t\to.lookAt(parent.position);\n\t\t\t\t\tif (typeof rotation === 'number') o.rotateZ(rotation);\n\t\t\t\t\tapplyProps(state, { rotation: o.rotation });\n\t\t\t\t} else {\n\t\t\t\t\tapplyProps(state, { rotation });\n\t\t\t\t}\n\n\t\t\t\tdecal.geometry = new DecalGeometry(parent, state.position, state.rotation, state.scale);\n\t\t\t\tif (helper) {\n\t\t\t\t\tapplyProps(helper, state);\n\t\t\t\t\t// Prevent the helpers from blocking rays\n\t\t\t\t\thelper.traverse((child) => (child.raycast = () => null));\n\t\t\t\t}\n\t\t\t\t// Reset parents matix-world\n\t\t\t\tparent.matrixWorld = matrixWorld;\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tdecal.geometry.dispose();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n","import { ChangeDetectorRef, computed, effect, inject, runInInjectionContext, type Injector } from '@angular/core';\nimport {\n\tassertInjectionContext,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tsafeDetectChanges,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { injectNgtsFBO } from '../fbo/fbo';\n\nexport interface NgtsDepthBufferParams {\n\tsize: number;\n\tframes: number;\n}\n\nexport function injectNgtsDepthBuffer(\n\tparamsFactory: () => Partial<NgtsDepthBufferParams> = () => ({}),\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsDepthBuffer, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst depthBufferRef = injectNgtRef<THREE.DepthTexture | null>(null);\n\t\tconst store = injectNgtStore();\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst size = store.select('size');\n\t\tconst dpr = store.select('viewport', 'dpr');\n\n\t\tconst fboParams = computed(() => {\n\t\t\tconst params = { size: 256, frames: Infinity, ...paramsFactory() };\n\t\t\tconst width = params.size || size().width * dpr();\n\t\t\tconst height = params.size || size().height * dpr();\n\t\t\tconst depthTexture = new THREE.DepthTexture(width, height);\n\t\t\tdepthTexture.format = THREE.DepthFormat;\n\t\t\tdepthTexture.type = THREE.UnsignedShortType;\n\t\t\treturn { width, height, settings: { depthTexture } };\n\t\t});\n\n\t\tconst fboRef = injectNgtsFBO(fboParams, { injector });\n\n\t\teffect(() => {\n\t\t\tconst fbo = fboRef.nativeElement;\n\t\t\tif (fbo) {\n\t\t\t\tdepthBufferRef.nativeElement = fbo.depthTexture;\n\t\t\t\tsafeDetectChanges(cdr);\n\t\t\t}\n\t\t});\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(\n\t\t\t({ gl, scene, camera }) => {\n\t\t\t\tconst params = { size: 256, frames: Infinity, ...paramsFactory() };\n\t\t\t\tconst fbo = fboRef.untracked;\n\t\t\t\tif ((params.frames === Infinity || count < params.frames) && fbo) {\n\t\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\t\tgl.render(scene, camera);\n\t\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ injector },\n\t\t);\n\n\t\treturn depthBufferRef;\n\t});\n}\n","import { NgIf } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed, forwardRef, signal } from '@angular/core';\nimport { createInjectionToken, extend, injectNgtRef, signalStore } from 'angular-three';\nimport { NgtsText3D } from 'angular-three-soba/abstractions';\nimport { NgtsCenter } from 'angular-three-soba/staging';\nimport { Group, MeshNormalMaterial, MeshStandardMaterial } from 'three';\n\n/**\n * define states of a component. usually acts for inputs signalStore\n */\nexport type NgtsExampleState = {\n\tfont: string;\n\tcolor: THREE.ColorRepresentation;\n\tdebug: boolean;\n\tbevelSize: number;\n};\n\n/**\n * augment HTMLElementTagNameMap with the selector of the component.\n * the type is usually the Inputs' state and the root THREE element\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t\\/**\n\t\t * @extends ngt-group\n\t\t *\\/\n\t\t'ngts-example': NgtsExampleState & NgtGroup;\n\t}\n}\n\n*/\n\n/**\n * make sure soba's component extends all regular THREE entities that it needs\n */\nextend({ Group, MeshNormalMaterial, MeshStandardMaterial });\n\n/**\n * We can setup public API for this soba component with createInjectionToken + forwardRef\n * the `example.api` is **usually** a computed property in the component class\n *\n * @see Bounds for example\n */\nexport const [injectNgtsExampleApi, provideNgtsExampleApi] = createInjectionToken(\n\t(example: NgtsExample) => example.api,\n\t{ isRoot: false, deps: [forwardRef(() => NgtsExample)] },\n);\n\n@Component({\n\tselector: 'ngts-example',\n\tstandalone: true,\n\ttemplate: `\n\t\t<!-- ngtCompound is used by the Renderer to spread props from ngts-example down to ngt-group -->\n\t\t<!-- i.e: <ngts-example [position]=\"[1, 1, 1]\" />, [1, 1, 1] will be passed down to ngt-group -->\n\t\t<!-- [ref] is used with the Input so that the consumer can pass an external ref and control this internal ngt-group -->\n\t\t<ngt-group ngtCompound [ref]=\"exampleRef\">\n\t\t\t<ngts-center [top]=\"true\">\n\t\t\t\t<ngts-text-3d\n\t\t\t\t\t[bevelEnabled]=\"true\"\n\t\t\t\t\t[bevelSize]=\"bevelSize()\"\n\t\t\t\t\t[font]=\"font()\"\n\t\t\t\t\t[text]=\"count().toString()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-mesh-standard-material *ngIf=\"!debug(); else withDebug\" [color]=\"color()\" />\n\t\t\t\t\t<ng-template #withDebug>\n\t\t\t\t\t\t<ngt-mesh-normal-material [wireframe]=\"true\" />\n\t\t\t\t\t</ng-template>\n\t\t\t\t</ngts-text-3d>\n\t\t\t</ngts-center>\n\t\t\t<!-- use Content Projection here so consumers can pass in children for ngt-group -->\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\t/**\n\t * can definitely use other Soba components\n\t */\n\timports: [NgtsCenter, NgtsText3D, NgIf],\n\t/**\n\t * call the API provider here to actually provide the API for the component's children\n\t */\n\tproviders: [provideNgtsExampleApi()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\n/**\n * @description this component is only for documentation purposes.\n */\nexport class NgtsExample {\n\t/**\n\t * use signalStore to store inputs with default inputs\n\t */\n\tprivate inputs = signalStore<NgtsExampleState>({ color: '#cbcbcb', bevelSize: 0.04, debug: false });\n\n\t/**\n\t * a soba component usually has a Input for the component ref and this Input always has a default value with injectNgtRef\n\t */\n\t@Input() exampleRef = injectNgtRef<Group>();\n\n\t/**\n\t * setup Input for the Inputs state. Use alias to have an easier time to setup computed\n\t *\n\t * @example: this way \"private font\" and \"set _font\" won't conflict\n\t * private font = this.inputs.select('font');\n\t */\n\t@Input({ alias: 'font', required: true }) set _font(font: string) {\n\t\tthis.inputs.set({ font });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'debug' }) set _debug(debug: boolean) {\n\t\tthis.inputs.set({ debug });\n\t}\n\n\t@Input({ alias: 'bevelSize' }) set _bevelSize(bevelSize: number) {\n\t\tthis.inputs.set({ bevelSize });\n\t}\n\n\t/**\n\t * exposes signals from inputs\n\t */\n\tbevelSize = this.inputs.select('bevelSize');\n\tfont = this.inputs.select('font');\n\tdebug = this.inputs.select('debug');\n\tcolor = this.inputs.select('color');\n\n\t/**\n\t * can have internal state\n\t */\n\tcount = signal(0);\n\n\t/**\n\t * Expose the public API for this soba component\n\t */\n\tapi = computed(() => ({\n\t\tbevelSize: this.bevelSize(),\n\t\tincrement: () => this.count.update((v) => v + 1),\n\t\tdecrement: () => this.count.update((v) => v - 1),\n\t}));\n}\n","import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEmbeddedViewRef,\n\tTemplateRef,\n\tViewChild,\n\tViewContainerRef,\n\tcomputed,\n\teffect,\n\tinject,\n\tuntracked,\n} from '@angular/core';\nimport { HTML, injectBeforeRender, injectNgtStore, is, safeDetectChanges } from 'angular-three';\nimport * as THREE from 'three';\nimport { injectNgtsHtmlInputs } from './html';\n\nconst v1 = new THREE.Vector3();\nconst v2 = new THREE.Vector3();\nconst v3 = new THREE.Vector3();\n\nexport function defaultCalculatePosition(\n\tel: THREE.Object3D,\n\tcamera: THREE.Camera,\n\tsize: { width: number; height: number },\n) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tobjectPos.project(camera);\n\tconst widthHalf = size.width / 2;\n\tconst heightHalf = size.height / 2;\n\treturn [objectPos.x * widthHalf + widthHalf, -(objectPos.y * heightHalf) + heightHalf];\n}\n\nfunction isObjectBehindCamera(el: THREE.Object3D, camera: THREE.Camera) {\n\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\tconst deltaCamObj = objectPos.sub(cameraPos);\n\tconst camDir = camera.getWorldDirection(v3);\n\treturn deltaCamObj.angleTo(camDir) > Math.PI / 2;\n}\n\nfunction isObjectVisible(\n\tel: THREE.Object3D,\n\tcamera: THREE.Camera,\n\traycaster: THREE.Raycaster,\n\tocclude: THREE.Object3D[],\n) {\n\tconst elPos = v1.setFromMatrixPosition(el.matrixWorld);\n\tconst screenPos = elPos.clone();\n\tscreenPos.project(camera);\n\traycaster.setFromCamera(screenPos as any, camera);\n\tconst intersects = raycaster.intersectObjects(occlude, true);\n\tif (intersects.length) {\n\t\tconst intersectionDistance = intersects[0].distance;\n\t\tconst pointDistance = elPos.distanceTo(raycaster.ray.origin);\n\t\treturn pointDistance < intersectionDistance;\n\t}\n\treturn true;\n}\n\nfunction objectScale(el: THREE.Object3D, camera: THREE.Camera) {\n\tif (camera instanceof THREE.OrthographicCamera) {\n\t\treturn camera.zoom;\n\t} else if (camera instanceof THREE.PerspectiveCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst vFOV = (camera.fov * Math.PI) / 180;\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst scaleFOV = 2 * Math.tan(vFOV / 2) * dist;\n\t\treturn 1 / scaleFOV;\n\t} else {\n\t\treturn 1;\n\t}\n}\n\nfunction objectZIndex(el: THREE.Object3D, camera: THREE.Camera, zIndexRange: Array<number>) {\n\tif (camera instanceof THREE.PerspectiveCamera || camera instanceof THREE.OrthographicCamera) {\n\t\tconst objectPos = v1.setFromMatrixPosition(el.matrixWorld);\n\t\tconst cameraPos = v2.setFromMatrixPosition(camera.matrixWorld);\n\t\tconst dist = objectPos.distanceTo(cameraPos);\n\t\tconst A = (zIndexRange[1] - zIndexRange[0]) / (camera.far - camera.near);\n\t\tconst B = zIndexRange[1] - A * camera.far;\n\t\treturn Math.round(A * dist + B);\n\t}\n\treturn undefined;\n}\n\nconst epsilon = (value: number) => (Math.abs(value) < 1e-10 ? 0 : value);\n\nfunction getCSSMatrix(matrix: THREE.Matrix4, multipliers: number[], prepend = '') {\n\tlet matrix3d = 'matrix3d(';\n\tfor (let i = 0; i !== 16; i++) {\n\t\tmatrix3d += epsilon(multipliers[i] * matrix.elements[i]) + (i !== 15 ? ',' : ')');\n\t}\n\treturn prepend + matrix3d;\n}\n\nconst getCameraCSSMatrix = ((multipliers: number[]) => {\n\treturn (matrix: THREE.Matrix4) => getCSSMatrix(matrix, multipliers);\n})([1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, 1]);\n\nconst getObjectCSSMatrix = ((scaleMultipliers: (n: number) => number[]) => {\n\treturn (matrix: THREE.Matrix4, factor: number) =>\n\t\tgetCSSMatrix(matrix, scaleMultipliers(factor), 'translate(-50%,-50%)');\n})((f: number) => [1 / f, 1 / f, 1 / f, 1, -1 / f, -1 / f, -1 / f, -1, 1 / f, 1 / f, 1 / f, 1, 1, 1, 1, 1]);\n\n@Component({\n\tselector: 'ngts-html-wrapper',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ng-template #transformTemplate>\n\t\t\t<div #transformedOuterDiv [style]=\"styles()\">\n\t\t\t\t<div #transformedInnerDiv [style]=\"transformInnerStyles()\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"renderTemplate; context: { styles: htmlInputs.style }\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ng-template>\n\n\t\t<ng-template #renderTemplate let-renderedStyles=\"styles\">\n\t\t\t<div #renderedDiv [class]=\"htmlInputs.renderedDivClass()\" [style]=\"renderedStyles()\">\n\t\t\t\t<ng-container #renderAnchor />\n\t\t\t</div>\n\t\t</ng-template>\n\t`,\n\timports: [NgTemplateOutlet],\n})\nexport class NgtsHtmlWrapper {\n\tstatic [HTML] = true;\n\n\thtmlInputs = injectNgtsHtmlInputs();\n\n\t@ViewChild('transformTemplate', { static: true }) transformTemplate!: TemplateRef<unknown>;\n\t@ViewChild('renderTemplate', { static: true }) renderTemplate!: TemplateRef<unknown>;\n\n\t@ViewChild('transformedOuterDiv') outerDiv?: ElementRef<HTMLElement>;\n\t@ViewChild('transformedInnerDiv') innerDiv?: ElementRef<HTMLElement>;\n\t@ViewChild('renderAnchor', { read: ViewContainerRef }) renderAnchor?: ViewContainerRef;\n\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\tprivate connected = this.store.select('events', 'connected', { equal: Object.is });\n\tprivate viewport = this.store.select('viewport');\n\tprivate scene = this.store.select('scene');\n\tprivate camera = this.store.select('camera');\n\tprivate size = this.store.select('size');\n\tprivate raycaster = this.store.select('raycaster');\n\n\tprivate isMeshSizeSet = false;\n\n\tprivate document = inject(DOCUMENT);\n\tprivate vcr = inject(ViewContainerRef);\n\n\tprivate portalElement = computed(() => {\n\t\tconst portal = this.htmlInputs.portal();\n\t\tif (!portal) return null;\n\t\treturn is.ref(portal) ? portal.nativeElement : portal;\n\t});\n\n\tprivate element = computed(() => this.document.createElement(this.htmlInputs.as()) as HTMLElement);\n\tprivate target = computed(() => {\n\t\tconst portalElement = this.portalElement();\n\t\tif (portalElement) return portalElement;\n\t\tconst connected = this.connected();\n\t\tif (connected) return connected as HTMLElement;\n\t\treturn this.gl().domElement.parentElement!;\n\t});\n\n\tstyles = computed(() => {\n\t\tconst [style, center, transform, size, fullscreen] = [\n\t\t\tthis.htmlInputs.style(),\n\t\t\tthis.htmlInputs.center(),\n\t\t\tthis.htmlInputs.transform(),\n\t\t\tthis.size(),\n\t\t\tthis.htmlInputs.fullscreen(),\n\t\t];\n\n\t\tif (transform) {\n\t\t\treturn {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\twidth: size.width,\n\t\t\t\theight: size.height,\n\t\t\t\ttransformStyle: 'preserve-3d',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tposition: 'absolute',\n\t\t\ttransform: center ? 'translate3d(-50%,-50%,0)' : 'none',\n\t\t\t...(fullscreen && {\n\t\t\t\ttop: -size.height / 2,\n\t\t\t\tleft: -size.width / 2,\n\t\t\t\twidth: size.width,\n\t\t\t\theight: size.height,\n\t\t\t}),\n\t\t\t...(style || {}),\n\t\t};\n\t});\n\ttransformInnerStyles = computed(() => ({ position: 'absolute', pointerEvents: this.htmlInputs.pointerEvents() }));\n\n\tconstructor() {\n\t\tthis.setCanvasElementStyle();\n\t\tthis.appendElement();\n\t\tthis.setWrapperClass();\n\t\tthis.render();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate setCanvasElementStyle() {\n\t\teffect(() => {\n\t\t\tconst el = untracked(this.gl).domElement!;\n\t\t\tconst occlude = this.htmlInputs.occlude();\n\t\t\tif (occlude && occlude === 'blending') {\n\t\t\t\tel.style.zIndex = `${Math.floor(untracked(this.htmlInputs.zIndexRange)[0] / 2)}`;\n\t\t\t\tel.style.position = 'absolute';\n\t\t\t\tel.style.pointerEvents = 'none';\n\t\t\t} else {\n\t\t\t\tel.style.zIndex = null!;\n\t\t\t\tel.style.position = null!;\n\t\t\t\tel.style.pointerEvents = null!;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate appendElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [group, element] = [this.htmlInputs.groupRef.nativeElement, this.element()];\n\t\t\tif (group && element) {\n\t\t\t\tconst [target, transform, scene, camera, size, calculatePosition, prepend] = [\n\t\t\t\t\tthis.target(),\n\t\t\t\t\tthis.htmlInputs.transform(),\n\t\t\t\t\tuntracked(this.scene),\n\t\t\t\t\tuntracked(this.camera),\n\t\t\t\t\tuntracked(this.size),\n\t\t\t\t\tuntracked(this.htmlInputs.calculatePosition),\n\t\t\t\t\tuntracked(this.htmlInputs.prepend),\n\t\t\t\t];\n\t\t\t\tscene.updateMatrixWorld();\n\t\t\t\tif (transform) {\n\t\t\t\t\telement.style.cssText = `position:absolute;top:0;left:0;pointer-events:none;overflow:hidden;`;\n\t\t\t\t} else {\n\t\t\t\t\tconst vec = calculatePosition(group, camera, size);\n\t\t\t\t\telement.style.cssText = `position:absolute;top:0;left:0;transform:translate3d(${vec[0]}px,${vec[1]}px,0);transform-origin:0 0;`;\n\t\t\t\t}\n\n\t\t\t\tif (target) {\n\t\t\t\t\tif (prepend) target.prepend(element);\n\t\t\t\t\telse target.appendChild(element);\n\t\t\t\t}\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tif (target) target.removeChild(element);\n\t\t\t\t\tthis.vcr.clear();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setWrapperClass() {\n\t\teffect(() => {\n\t\t\tconst [element, wrapperClass] = [this.element(), this.htmlInputs.wrapperClass()];\n\t\t\tif (element && wrapperClass) {\n\t\t\t\telement.className = wrapperClass;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate render() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [{ transform }, element, content] = [\n\t\t\t\tthis.htmlInputs.state(),\n\t\t\t\tthis.element(),\n\t\t\t\tthis.htmlInputs.content(),\n\t\t\t];\n\n\t\t\tif (element) {\n\t\t\t\tthis.isMeshSizeSet = false;\n\t\t\t\tconst params: Parameters<ViewContainerRef['createEmbeddedView']> = transform\n\t\t\t\t\t? [this.transformTemplate, {}]\n\t\t\t\t\t: [this.renderTemplate, { styles: this.styles }];\n\n\t\t\t\tconst ref = this.vcr.createEmbeddedView(...params);\n\t\t\t\tif (ref.rootNodes?.[0]) {\n\t\t\t\t\tif (element.hasChildNodes()) {\n\t\t\t\t\t\telement.replaceChildren(...ref.rootNodes);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.append(...ref.rootNodes);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsafeDetectChanges(ref);\n\n\t\t\t\tlet contentRef: EmbeddedViewRef<unknown>;\n\t\t\t\tlet contentParent: HTMLElement;\n\t\t\t\t/**\n\t\t\t\t * NOTE: utilizing rAF here so that renderAnchor (ViewContainerRef) has a chance to be resolved\n\t\t\t\t * TODO: Another approach is to call render() in ngOnInit and pass in an injector to the effect\n\t\t\t\t */\n\t\t\t\tconst rAF = requestAnimationFrame(() => {\n\t\t\t\t\tif (content && this.renderAnchor) {\n\t\t\t\t\t\tcontentRef = this.renderAnchor.createEmbeddedView(content);\n\t\t\t\t\t\tcontentParent = ref.rootNodes[0].lastElementChild || ref.rootNodes[0];\n\t\t\t\t\t\twhile (contentParent && contentParent.lastElementChild) {\n\t\t\t\t\t\t\tcontentParent = contentParent.lastElementChild as HTMLElement;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (contentRef.rootNodes?.[0]) {\n\t\t\t\t\t\t\tif (contentParent.hasChildNodes()) {\n\t\t\t\t\t\t\t\tcontentParent.replaceChildren(...contentRef.rootNodes);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontentParent.append(...contentRef.rootNodes);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsafeDetectChanges(contentRef);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tonCleanup(() => {\n\t\t\t\t\tcancelAnimationFrame(rAF);\n\n\t\t\t\t\tif (contentRef && contentParent) {\n\t\t\t\t\t\tcontentRef.rootNodes.forEach((node) => {\n\t\t\t\t\t\t\tif (contentParent.hasChildNodes()) {\n\t\t\t\t\t\t\t\tcontentParent.removeChild(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tnode.remove();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tcontentRef.destroy();\n\t\t\t\t\t}\n\n\t\t\t\t\tref.rootNodes.forEach((node) => {\n\t\t\t\t\t\tif (element.hasChildNodes()) {\n\t\t\t\t\t\t\telement.removeChild(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.remove();\n\t\t\t\t\t});\n\t\t\t\t\tref.destroy();\n\t\t\t\t\tthis.renderAnchor?.clear();\n\t\t\t\t\tthis.vcr.clear();\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tlet oldPosition = [0, 0];\n\t\tlet oldZoom = 0;\n\t\tlet visible = true;\n\t\tinjectBeforeRender((gl) => {\n\t\t\tconst [\n\t\t\t\tgroup,\n\t\t\t\tcamera,\n\t\t\t\ttransform,\n\t\t\t\tcalculatePosition,\n\t\t\t\tsize,\n\t\t\t\teps,\n\t\t\t\tisRayCastOcclusion,\n\t\t\t\tocclude,\n\t\t\t\tscene,\n\t\t\t\traycaster,\n\t\t\t\telement,\n\t\t\t\tzIndexRange,\n\t\t\t\tsprite,\n\t\t\t\tdistanceFactor,\n\t\t\t\tocclusionMeshRef,\n\t\t\t\tgeometry,\n\t\t\t\tviewport,\n\t\t\t\tscale,\n\t\t\t] = [\n\t\t\t\tthis.htmlInputs.groupRef.nativeElement,\n\t\t\t\tthis.camera(),\n\t\t\t\tthis.htmlInputs.transform(),\n\t\t\t\tthis.htmlInputs.calculatePosition(),\n\t\t\t\tthis.size(),\n\t\t\t\tthis.htmlInputs.eps(),\n\t\t\t\tthis.htmlInputs.isRayCastOcclusion(),\n\t\t\t\tthis.htmlInputs.occlude(),\n\t\t\t\tthis.scene(),\n\t\t\t\tthis.raycaster(),\n\t\t\t\tthis.element(),\n\t\t\t\tthis.htmlInputs.zIndexRange(),\n\t\t\t\tthis.htmlInputs.sprite(),\n\t\t\t\tthis.htmlInputs.distanceFactor(),\n\t\t\t\tthis.htmlInputs.occlusionMeshRef.nativeElement,\n\t\t\t\tthis.htmlInputs.geometry(),\n\t\t\t\tthis.viewport(),\n\t\t\t\tthis.htmlInputs.scale(),\n\t\t\t];\n\t\t\tif (group && element) {\n\t\t\t\tcamera.updateMatrixWorld();\n\t\t\t\tgroup.updateWorldMatrix(true, false);\n\t\t\t\tconst vec = transform ? oldPosition : calculatePosition(group, camera, size);\n\n\t\t\t\tif (\n\t\t\t\t\ttransform ||\n\t\t\t\t\tMath.abs(oldZoom - camera.zoom) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[0] - vec[0]) > eps ||\n\t\t\t\t\tMath.abs(oldPosition[1] - vec[1]) > eps\n\t\t\t\t) {\n\t\t\t\t\tconst isBehindCamera = isObjectBehindCamera(group, camera);\n\t\t\t\t\tlet raytraceTarget: null | undefined | boolean | THREE.Object3D[] = false;\n\n\t\t\t\t\tif (isRayCastOcclusion) {\n\t\t\t\t\t\tif (occlude !== 'blending') {\n\t\t\t\t\t\t\traytraceTarget = [scene];\n\t\t\t\t\t\t} else if (Array.isArray(occlude)) {\n\t\t\t\t\t\t\traytraceTarget = occlude.map((item) => (is.ref(item) ? item.nativeElement : item));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst previouslyVisible = visible;\n\t\t\t\t\tif (raytraceTarget) {\n\t\t\t\t\t\tconst isVisible = isObjectVisible(group, camera, raycaster, raytraceTarget);\n\t\t\t\t\t\tvisible = isVisible && !isBehindCamera;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvisible = !isBehindCamera;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (previouslyVisible !== visible) {\n\t\t\t\t\t\tif (this.htmlInputs.occluded.observed) {\n\t\t\t\t\t\t\tthis.htmlInputs.occluded.emit(!visible);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement.style.display = visible ? 'block' : 'none';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst halfRange = Math.floor(zIndexRange[0] / 2);\n\t\t\t\t\tconst zRange = occlude\n\t\t\t\t\t\t? isRayCastOcclusion //\n\t\t\t\t\t\t\t? [zIndexRange[0], halfRange]\n\t\t\t\t\t\t\t: [halfRange - 1, 0]\n\t\t\t\t\t\t: zIndexRange;\n\n\t\t\t\t\telement.style.zIndex = `${objectZIndex(group, camera, zRange)}`;\n\n\t\t\t\t\tif (transform) {\n\t\t\t\t\t\tconst [widthHalf, heightHalf] = [size.width / 2, size.height / 2];\n\t\t\t\t\t\tconst fov = camera.projectionMatrix.elements[5] * heightHalf;\n\t\t\t\t\t\tconst { isOrthographicCamera, top, left, bottom, right } = camera as THREE.OrthographicCamera;\n\t\t\t\t\t\tconst cameraMatrix = getCameraCSSMatrix(camera.matrixWorldInverse);\n\t\t\t\t\t\tconst cameraTransform = isOrthographicCamera\n\t\t\t\t\t\t\t? `scale(${fov})translate(${epsilon(-(right + left) / 2)}px,${epsilon(\n\t\t\t\t\t\t\t\t\t(top + bottom) / 2,\n\t\t\t\t\t\t\t )}px)`\n\t\t\t\t\t\t\t: `translateZ(${fov}px)`;\n\t\t\t\t\t\tlet matrix = group.matrixWorld;\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tmatrix = camera.matrixWorldInverse\n\t\t\t\t\t\t\t\t.clone()\n\t\t\t\t\t\t\t\t.transpose()\n\t\t\t\t\t\t\t\t.copyPosition(matrix)\n\t\t\t\t\t\t\t\t.scale(group.scale);\n\t\t\t\t\t\t\tmatrix.elements[3] = matrix.elements[7] = matrix.elements[11] = 0;\n\t\t\t\t\t\t\tmatrix.elements[15] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.style.width = size.width + 'px';\n\t\t\t\t\t\telement.style.height = size.height + 'px';\n\t\t\t\t\t\telement.style.perspective = isOrthographicCamera ? '' : `${fov}px`;\n\t\t\t\t\t\tif (this.outerDiv?.nativeElement && this.innerDiv?.nativeElement) {\n\t\t\t\t\t\t\tthis.outerDiv.nativeElement.style.width = size.width + 'px';\n\t\t\t\t\t\t\tthis.outerDiv.nativeElement.style.height = size.height + 'px';\n\t\t\t\t\t\t\tthis.outerDiv.nativeElement.style.transform = `${cameraTransform}${cameraMatrix}translate(${widthHalf}px,${heightHalf}px)`;\n\t\t\t\t\t\t\tthis.innerDiv.nativeElement.style.transform = getObjectCSSMatrix(\n\t\t\t\t\t\t\t\tmatrix,\n\t\t\t\t\t\t\t\t1 / ((distanceFactor || 10) / 400),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst scale = distanceFactor === undefined ? 1 : objectScale(group, camera) * distanceFactor;\n\t\t\t\t\t\telement.style.transform = `translate3d(${vec[0]}px,${vec[1]}px,0) scale(${scale})`;\n\t\t\t\t\t}\n\t\t\t\t\toldPosition = vec;\n\t\t\t\t\toldZoom = camera.zoom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isRayCastOcclusion && occlusionMeshRef && !this.isMeshSizeSet) {\n\t\t\t\tif (transform) {\n\t\t\t\t\tif (this.outerDiv?.nativeElement) {\n\t\t\t\t\t\tconst el = this.outerDiv.nativeElement.children[0];\n\n\t\t\t\t\t\tif (el?.clientWidth && el?.clientHeight) {\n\t\t\t\t\t\t\tconst { isOrthographicCamera } = camera as THREE.OrthographicCamera;\n\n\t\t\t\t\t\t\tif (isOrthographicCamera || geometry) {\n\t\t\t\t\t\t\t\tif (scale !== 1) {\n\t\t\t\t\t\t\t\t\tif (!Array.isArray(scale)) {\n\t\t\t\t\t\t\t\t\t\tocclusionMeshRef.scale.setScalar(1 / (scale as number));\n\t\t\t\t\t\t\t\t\t} else if (scale instanceof THREE.Vector3) {\n\t\t\t\t\t\t\t\t\t\tocclusionMeshRef.scale.copy(scale.clone().divideScalar(1));\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tocclusionMeshRef.scale.set(1 / scale[0], 1 / scale[1], 1 / scale[2]);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst ratio = (distanceFactor || 10) / 400;\n\t\t\t\t\t\t\t\tconst w = el.clientWidth * ratio;\n\t\t\t\t\t\t\t\tconst h = el.clientHeight * ratio;\n\n\t\t\t\t\t\t\t\tocclusionMeshRef.scale.set(w, h, 1);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.isMeshSizeSet = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst ele = element.children[0];\n\n\t\t\t\t\tif (ele?.clientWidth && ele?.clientHeight) {\n\t\t\t\t\t\tconst ratio = 1 / viewport.factor;\n\t\t\t\t\t\tconst w = ele.clientWidth * ratio;\n\t\t\t\t\t\tconst h = ele.clientHeight * ratio;\n\n\t\t\t\t\t\tocclusionMeshRef.scale.set(w, h, 1);\n\n\t\t\t\t\t\tthis.isMeshSizeSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tocclusionMeshRef.lookAt(gl.camera.position);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tContentChild,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tTemplateRef,\n\tcomputed,\n\tforwardRef,\n} from '@angular/core';\nimport {\n\tcreateInjectionToken,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtGroup,\n\ttype NgtRef,\n\ttype NgtVector3,\n} from 'angular-three';\nimport { NgtsSobaContent } from 'angular-three-soba/utils';\nimport * as THREE from 'three';\nimport { Group, Mesh, PlaneGeometry, ShaderMaterial } from 'three';\nimport { NgtsHtmlWrapper, defaultCalculatePosition } from './html-wrapper';\n\nextend({ Group, PlaneGeometry, Mesh, ShaderMaterial });\n\ntype PointerEventsProperties =\n\t| 'auto'\n\t| 'none'\n\t| 'visiblePainted'\n\t| 'visibleFill'\n\t| 'visibleStroke'\n\t| 'visible'\n\t| 'painted'\n\t| 'fill'\n\t| 'stroke'\n\t| 'all'\n\t| 'inherit';\n\nexport type NgtsHtmlState = {\n\tas: keyof HTMLElementTagNameMap;\n\tprepend: boolean;\n\ttransform: boolean;\n\tzIndexRange: Array<number>;\n\tcalculatePosition: typeof defaultCalculatePosition;\n\tfullscreen: boolean;\n\tcenter: boolean;\n\tsprite: boolean;\n\tpointerEvents: PointerEventsProperties;\n\teps: number;\n\tscale: NgtVector3;\n\tcontent?: TemplateRef<unknown>;\n\tdistanceFactor?: number;\n\tstyle?: CSSStyleDeclaration;\n\trenderedDivClass?: string;\n\twrapperClass?: string;\n\tportal?: NgtRef<HTMLElement>;\n\tocclude: NgtRef<THREE.Object3D>[] | boolean | 'raycast' | 'blending';\n\tmaterial?: NgtRef<THREE.Material>;\n\tgeometry?: NgtRef<THREE.BufferGeometry>;\n\tcastShadow: boolean; // Cast shadow for occlusion plane\n\treceiveShadow: boolean; // Receive shadow for occlusion plane\n};\n\nexport const [injectNgtsHtmlInputs, provideNgtsHtmlInputs] = createInjectionToken(\n\t(html: NgtsHtml) => ({ state: html.inputs.state, ...html.state }),\n\t{ isRoot: false, deps: [forwardRef(() => NgtsHtml)] },\n);\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-html': NgtsHtmlState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-html',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"groupRef\" [scale]=\"scale()\">\n\t\t\t<ngt-mesh\n\t\t\t\t*ngIf=\"occlude() && !isRayCastOcclusion()\"\n\t\t\t\t[castShadow]=\"castShadow()\"\n\t\t\t\t[receiveShadow]=\"receiveShadow()\"\n\t\t\t\t[ref]=\"occlusionMeshRef\"\n\t\t\t>\n\t\t\t\t<ngt-plane-geometry *ngIf=\"geometry()\" />\n\t\t\t\t<ngt-shader-material\n\t\t\t\t\t*ngIf=\"material()\"\n\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t[vertexShader]=\"shaders().vertexShader\"\n\t\t\t\t\t[fragmentShader]=\"shaders().fragmentShader\"\n\t\t\t\t/>\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\n\t\t<ngts-html-wrapper />\n\t`,\n\timports: [NgIf, NgtsHtmlWrapper],\n\tproviders: [provideNgtsHtmlInputs()],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsHtml {\n\tDoubleSide = THREE.DoubleSide;\n\n\tinputs = signalStore<NgtsHtmlState>({\n\t\tas: 'div',\n\t\tprepend: false,\n\t\ttransform: false,\n\t\tfullscreen: false,\n\t\tcenter: false,\n\t\tsprite: false,\n\t\tzIndexRange: [16777271, 0],\n\t\teps: 0.001,\n\t\tscale: 1,\n\t\tcalculatePosition: defaultCalculatePosition,\n\t\tpointerEvents: 'auto',\n\t\tocclude: false,\n\t\tcastShadow: false,\n\t\treceiveShadow: false,\n\t});\n\n\t@ContentChild(NgtsSobaContent, { read: TemplateRef }) set content(content: TemplateRef<unknown>) {\n\t\tthis.inputs.set({ content });\n\t}\n\n\t@Input() groupRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'as' }) set _as(as: keyof HTMLElementTagNameMap) {\n\t\tthis.inputs.set({ as });\n\t}\n\n\t@Input({ alias: 'zIndexRange' }) set _zIndexRange(zIndexRange: Array<number>) {\n\t\tthis.inputs.set({ zIndexRange });\n\t}\n\n\t@Input({ alias: 'portal' }) set _portal(portal: NgtRef<HTMLElement>) {\n\t\tthis.inputs.set({ portal });\n\t}\n\n\t@Input({ alias: 'occlude' }) set _occlude(occlude: NgtsHtmlState['occlude']) {\n\t\tthis.inputs.set({ occlude });\n\t}\n\n\t@Input({ alias: 'castShadow' }) set _castShadow(castShadow: NgtsHtmlState['castShadow']) {\n\t\tthis.inputs.set({ castShadow });\n\t}\n\n\t@Input({ alias: 'receiveShadow' }) set _receiveShadow(receiveShadow: NgtsHtmlState['receiveShadow']) {\n\t\tthis.inputs.set({ receiveShadow });\n\t}\n\n\t@Input({ alias: 'material' }) set _material(material: NgtsHtmlState['material']) {\n\t\tthis.inputs.set({ material });\n\t}\n\n\t@Input({ alias: 'geometry' }) set _geometry(geometry: NgtsHtmlState['geometry']) {\n\t\tthis.inputs.set({ geometry });\n\t}\n\n\t@Input({ alias: 'scale' }) set _scale(scale: NgtsHtmlState['scale']) {\n\t\tthis.inputs.set({ scale });\n\t}\n\n\t@Input({ alias: 'prepend' }) set _prepend(prepend: boolean) {\n\t\tthis.inputs.set({ prepend });\n\t}\n\n\t@Input({ alias: 'transform' }) set _transform(transform: boolean) {\n\t\tthis.inputs.set({ transform });\n\t}\n\n\t@Input({ alias: 'center' }) set _center(center: boolean) {\n\t\tthis.inputs.set({ center });\n\t}\n\n\t@Input({ alias: 'sprite' }) set _sprite(sprite: boolean) {\n\t\tthis.inputs.set({ sprite });\n\t}\n\n\t@Input({ alias: 'fullscreen' }) set _fullscreen(fullscreen: boolean) {\n\t\tthis.inputs.set({ fullscreen });\n\t}\n\n\t@Input({ alias: 'eps' }) set _eps(eps: number) {\n\t\tthis.inputs.set({ eps });\n\t}\n\n\t@Input({ alias: 'distanceFactor' }) set _distanceFactor(distanceFactor: number) {\n\t\tthis.inputs.set({ distanceFactor });\n\t}\n\n\t@Input({ alias: 'wrapperClass' }) set _wrapperClass(wrapperClass: string) {\n\t\tthis.inputs.set({ wrapperClass });\n\t}\n\n\t@Input({ alias: 'renderedDivClass' }) set _renderedDivClass(renderedDivClass: string) {\n\t\tthis.inputs.set({ renderedDivClass });\n\t}\n\n\t@Input({ alias: 'style' }) set _style(style: CSSStyleDeclaration) {\n\t\tthis.inputs.set({ style });\n\t}\n\n\t@Input({ alias: 'pointerEvents' }) set _pointerEvents(pointerEvents: PointerEventsProperties) {\n\t\tthis.inputs.set({ pointerEvents });\n\t}\n\n\t@Input({ alias: 'calculatePosition' }) set _calculatePosition(\n\t\tcalculatePosition: NgtsHtmlState['calculatePosition'],\n\t) {\n\t\tthis.inputs.set({ calculatePosition });\n\t}\n\n\t@Output() occluded = new EventEmitter<boolean>();\n\n\tocclusionMeshRef = injectNgtRef<Mesh>();\n\n\tprivate transform = this.inputs.select('transform');\n\n\tisRayCastOcclusion = computed(() => {\n\t\tconst occlude = this.occlude();\n\t\treturn (\n\t\t\t(occlude && occlude !== 'blending') || (Array.isArray(occlude) && !!occlude.length && is.ref(occlude[0]))\n\t\t);\n\t});\n\n\tocclude = this.inputs.select('occlude');\n\tcastShadow = this.inputs.select('castShadow');\n\treceiveShadow = this.inputs.select('receiveShadow');\n\tgeometry = this.inputs.select('geometry');\n\tmaterial = this.inputs.select('material');\n\tscale = this.inputs.select('scale');\n\n\tshaders = computed(() => {\n\t\tconst transform = this.transform();\n\t\treturn {\n\t\t\tvertexShader: !transform\n\t\t\t\t? /* glsl */ `\n /*\n This shader is from the THREE's SpriteMaterial.\n We need to turn the backing plane into a Sprite\n (make it always face the camera) if \"transfrom\"\n is false.\n */\n #include <common>\n\n void main() {\n vec2 center = vec2(0., 1.);\n float rotation = 0.0;\n\n // This is somewhat arbitrary, but it seems to work well\n // Need to figure out how to derive this dynamically if it even matters\n float size = 0.03;\n\n vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n vec2 scale;\n scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale * size;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n\n gl_Position = projectionMatrix * mvPosition;\n }\n `\n\t\t\t\t: undefined,\n\t\t\tfragmentShader: /* glsl */ `\n void main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n `,\n\t\t};\n\t});\n\n\tstate = {\n\t\tzIndexRange: this.inputs.select('zIndexRange'),\n\t\tprepend: this.inputs.select('prepend'),\n\t\ttransform: this.transform,\n\t\tcenter: this.inputs.select('center'),\n\t\tfullscreen: this.inputs.select('fullscreen'),\n\t\tcalculatePosition: this.inputs.select('calculatePosition'),\n\t\twrapperClass: this.inputs.select('wrapperClass'),\n\t\trenderedDivClass: this.inputs.select('renderedDivClass'),\n\t\tstyle: this.inputs.select('style'),\n\t\tpointerEvents: this.inputs.select('pointerEvents'),\n\t\teps: this.inputs.select('eps'),\n\t\tdistanceFactor: this.inputs.select('distanceFactor'),\n\t\tsprite: this.inputs.select('sprite'),\n\t\tas: this.inputs.select('as'),\n\t\tportal: this.inputs.select('portal'),\n\t\tcontent: this.inputs.select('content'),\n\t\tocclude: this.occlude,\n\t\tisRayCastOcclusion: this.isRayCastOcclusion,\n\t\tocclusionMeshRef: this.occlusionMeshRef,\n\t\toccluded: this.occluded,\n\t\tgeometry: this.geometry,\n\t\tscale: this.scale,\n\t\tgroupRef: this.groupRef,\n\t};\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInjector,\n\tInput,\n\tcomputed,\n\teffect,\n\tinject,\n\trunInInjectionContext,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport {\n\tNgtGroup,\n\tassertInjectionContext,\n\tcheckUpdate,\n\textend,\n\tinjectNgtRef,\n\tis,\n\tsignalStore,\n\ttype NgtRef,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { MeshSurfaceSampler } from 'three-stdlib';\n\ntype SamplePayload = {\n\t/**\n\t * The position of the sample.\n\t */\n\tposition: THREE.Vector3;\n\t/**\n\t * The normal of the mesh at the sampled position.\n\t */\n\tnormal: THREE.Vector3;\n\t/**\n\t * The vertex color of the mesh at the sampled position.\n\t */\n\tcolor: THREE.Color;\n};\n\ntype TransformPayload = SamplePayload & {\n\t/**\n\t * The dummy object used to transform each instance.\n\t * This object's matrix will be updated after transforming & it will be used\n\t * to set the instance's matrix.\n\t */\n\tdummy: THREE.Object3D;\n\t/**\n\t * The mesh that's initially passed to the sampler.\n\t * Use this if you need to apply transforms from your mesh to your instances\n\t * or if you need to grab attributes from the geometry.\n\t */\n\tsampledMesh: THREE.Mesh;\n};\n\nexport type NgtsSurfaceSamplerTransformFn = (payload: TransformPayload, i: number) => void;\n\nexport type NgtsSurfaceSamplerState = {\n\tcount: number;\n\tmesh: NgtRef<THREE.Mesh>;\n\ttransform?: NgtsSurfaceSamplerTransformFn;\n\tweight?: string;\n\tinstancedMesh?: NgtRef<THREE.InstancedMesh>;\n};\n\nconst defaultState: Omit<NgtsSurfaceSamplerState, 'mesh'> = {\n\tcount: 16,\n};\n\nexport function injectNgtsSurfaceSampler(\n\tsurfaceSamplerState: () => (Partial<Omit<NgtsSurfaceSamplerState, 'mesh'>> & { mesh: NgtRef<THREE.Mesh> }) | null,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsSurfaceSampler, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst state = computed(() => {\n\t\t\tconst _state = surfaceSamplerState();\n\t\t\tif (!_state) return null;\n\t\t\treturn { ...defaultState, ..._state };\n\t\t});\n\t\tconst _buffer = signal(\n\t\t\t(() => {\n\t\t\t\tconst arr = Array.from({ length: state()?.count || defaultState.count }, () => [\n\t\t\t\t\t1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,\n\t\t\t\t]).flat();\n\t\t\t\treturn new THREE.InstancedBufferAttribute(Float32Array.from(arr), 16);\n\t\t\t})(),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst _state = state();\n\t\t\tif (!_state) return;\n\t\t\tconst { mesh, count, transform, instancedMesh, weight } = _state;\n\t\t\tconst meshObj = is.ref(mesh) ? mesh.nativeElement : mesh;\n\t\t\tif (!meshObj) return;\n\t\t\tconst instancedMeshObj = is.ref(instancedMesh) ? instancedMesh.nativeElement : instancedMesh;\n\t\t\tconst buffer = untracked(_buffer);\n\n\t\t\tconst sampler = new MeshSurfaceSampler(meshObj);\n\n\t\t\tif (weight) {\n\t\t\t\tsampler.setWeightAttribute(weight);\n\t\t\t}\n\n\t\t\tsampler.build();\n\n\t\t\tconst position = new THREE.Vector3();\n\t\t\tconst normal = new THREE.Vector3();\n\t\t\tconst color = new THREE.Color();\n\t\t\tconst dummy = new THREE.Object3D();\n\n\t\t\tmeshObj.updateMatrixWorld(true);\n\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tsampler.sample(position, normal, color);\n\n\t\t\t\tif (typeof transform === 'function') {\n\t\t\t\t\ttransform({ dummy, sampledMesh: meshObj, position, normal, color }, i);\n\t\t\t\t} else {\n\t\t\t\t\tdummy.position.copy(position);\n\t\t\t\t}\n\n\t\t\t\tdummy.updateMatrix();\n\n\t\t\t\tif (instancedMeshObj) {\n\t\t\t\t\tinstancedMeshObj.setMatrixAt(i, dummy.matrix);\n\t\t\t\t}\n\n\t\t\t\tdummy.matrix.toArray(buffer.array, i * 16);\n\t\t\t}\n\n\t\t\tif (instancedMeshObj) {\n\t\t\t\tcheckUpdate(instancedMeshObj.instanceMatrix);\n\t\t\t}\n\n\t\t\tcheckUpdate(buffer);\n\n\t\t\tuntracked(() => {\n\t\t\t\t_buffer.set(buffer.clone() as THREE.InstancedBufferAttribute);\n\t\t\t});\n\t\t});\n\n\t\treturn _buffer.asReadonly();\n\t});\n}\n\nextend({ Group });\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-group\n\t\t */\n\t\t'ngts-sampler': NgtsSurfaceSamplerState & NgtGroup;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-sampler',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group ngtCompound [ref]=\"samplerRef\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsSampler {\n\tprivate inputs = signalStore<NgtsSurfaceSamplerState>({ count: 16 });\n\n\t@Input() samplerRef = injectNgtRef<Group>();\n\n\t@Input({ alias: 'count' }) set _count(count: number) {\n\t\tthis.inputs.set({ count });\n\t}\n\n\t@Input({ alias: 'mesh' }) set _mesh(mesh: NgtRef<THREE.Mesh>) {\n\t\tthis.inputs.set({ mesh });\n\t}\n\n\t@Input({ alias: 'transform' }) set _transform(transform: NgtsSurfaceSamplerTransformFn) {\n\t\tthis.inputs.set({ transform });\n\t}\n\n\t@Input({ alias: 'weight' }) set _weight(weight: string) {\n\t\tthis.inputs.set({ weight });\n\t}\n\n\t@Input({ alias: 'instancedMesh' }) set _instancedMesh(instancedMesh: NgtRef<THREE.InstancedMesh>) {\n\t\tthis.inputs.set({ instancedMesh });\n\t}\n\n\tprivate surfaceSamplerState = computed(() => {\n\t\tconst sampler = this.samplerRef.nativeElement;\n\t\tif (!sampler) return null;\n\t\tconst { count, weight, transform, mesh, instancedMesh } = this.inputs.state();\n\n\t\tconst instancedMeshRef =\n\t\t\tinstancedMesh ??\n\t\t\t(sampler.children.find((child) => child.hasOwnProperty('instanceMatrix')) as THREE.InstancedMesh);\n\n\t\tconst meshRef = mesh ?? (sampler.children.find((child) => child.type === 'Mesh') as THREE.Mesh);\n\n\t\treturn { count, weight, transform, mesh: meshRef, instancedMesh: instancedMeshRef };\n\t});\n\n\tconstructor() {\n\t\tconst injector = inject(Injector);\n\t\teffect(() => {\n\t\t\tinjectNgtsSurfaceSampler(this.surfaceSamplerState, { injector });\n\t\t});\n\t}\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, computed } from '@angular/core';\nimport { NgtArgs, NgtMesh, extend, injectNgtRef, signalStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { CanvasTexture, Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\n\nexport type NgtsShadowState = {\n\tcolorStop: number;\n\tfog: boolean;\n\tcolor: THREE.ColorRepresentation;\n\topacity: number;\n\tdepthWrite: boolean;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t/**\n\t\t * @extends ngt-mesh\n\t\t */\n\t\t'ngts-shadow': NgtsShadowState & NgtMesh;\n\t}\n}\n\nextend({ Mesh, CanvasTexture, PlaneGeometry, MeshBasicMaterial });\n\n@Component({\n\tselector: 'ngts-shadow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-mesh ngtCompound [ref]=\"shadowRef\" [rotation]=\"[-Math.PI / 2, 0, 0]\">\n\t\t\t<ngt-plane-geometry />\n\t\t\t<ngt-mesh-basic-material\n\t\t\t\t[transparent]=\"true\"\n\t\t\t\t[opacity]=\"opacity()\"\n\t\t\t\t[fog]=\"fog()\"\n\t\t\t\t[depthWrite]=\"depthWrite()\"\n\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t>\n\t\t\t\t<ngt-canvas-texture *args=\"[canvas()]\" attach=\"map\" />\n\t\t\t</ngt-mesh-basic-material>\n\t\t\t<ng-content />\n\t\t</ngt-mesh>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsShadow {\n\tMath = Math;\n\tDoubleSide = THREE.DoubleSide;\n\n\tprivate inputs = signalStore<NgtsShadowState>({\n\t\tfog: false,\n\t\tdepthWrite: false,\n\t\tcolorStop: 0.0,\n\t\tcolor: 'black',\n\t\topacity: 0.5,\n\t});\n\n\t@Input() shadowRef = injectNgtRef<Mesh>();\n\n\t@Input({ alias: 'colorStop' }) set _colorStop(colorStop: number) {\n\t\tthis.inputs.set({ colorStop });\n\t}\n\n\t@Input({ alias: 'fog' }) set _fog(fog: boolean) {\n\t\tthis.inputs.set({ fog });\n\t}\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'opacity' }) set _opacity(opacity: number) {\n\t\tthis.inputs.set({ opacity });\n\t}\n\n\t@Input({ alias: 'depthWrite' }) set _depthWrite(depthWrite: boolean) {\n\t\tthis.inputs.set({ depthWrite });\n\t}\n\n\tprivate colorStop = this.inputs.select('colorStop');\n\tprivate color = this.inputs.select('color');\n\n\topacity = this.inputs.select('opacity');\n\tfog = this.inputs.select('fog');\n\tdepthWrite = this.inputs.select('depthWrite');\n\n\tcanvas = computed(() => {\n\t\tconst [colorStop, color] = [this.colorStop(), this.color()];\n\t\tconst canvas = document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\t\tconst context = canvas.getContext('2d') as CanvasRenderingContext2D;\n\t\tconst gradient = context.createRadialGradient(\n\t\t\tcanvas.width / 2,\n\t\t\tcanvas.height / 2,\n\t\t\t0,\n\t\t\tcanvas.width / 2,\n\t\t\tcanvas.height / 2,\n\t\t\tcanvas.width / 2,\n\t\t);\n\t\tgradient.addColorStop(colorStop, new THREE.Color(color).getStyle());\n\t\tgradient.addColorStop(1, 'rgba(0,0,0,0)');\n\t\tcontext.fillStyle = gradient;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\treturn canvas;\n\t});\n}\n\n//\n//\n// type Props = JSX.IntrinsicElements['mesh'] & {\n// colorStop?: number\n// fog?: boolean\n// color?: Color | number | string\n// opacity?: number\n// depthWrite?: boolean\n// }\n//\n// export const Shadow = React.forwardRef(\n// (\n// { fog = false, renderOrder, depthWrite = false, colorStop = 0.0, color = 'black', opacity = 0.5, ...props }: Props,\n// ref\n// ) => {\n// const canvas = React.useMemo(() => {\n// const canvas = document.createElement('canvas')\n// canvas.width = 128\n// canvas.height = 128\n// const context = canvas.getContext('2d') as CanvasRenderingContext2D\n// const gradient = context.createRadialGradient(\n// canvas.width / 2,\n// canvas.height / 2,\n// 0,\n// canvas.width / 2,\n// canvas.height / 2,\n// canvas.width / 2\n// )\n// gradient.addColorStop(colorStop, new Color(color).getStyle())\n// gradient.addColorStop(1, 'rgba(0,0,0,0)')\n// context.fillStyle = gradient\n// context.fillRect(0, 0, canvas.width, canvas.height)\n// return canvas\n// }, [color, colorStop])\n// return (\n// <mesh renderOrder={renderOrder} ref={ref as React.MutableRefObject<Mesh>} rotation-x={-Math.PI / 2} {...props}>\n// <planeGeometry />\n// <meshBasicMaterial transparent opacity={opacity} fog={fog} depthWrite={depthWrite} side={DoubleSide}>\n// <canvasTexture attach=\"map\" args={[canvas]} />\n// </meshBasicMaterial>\n// </mesh>\n// )\n// }\n// )\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, Input, computed, effect, inject } from '@angular/core';\nimport { NgtRef, addAfterEffect, addEffect, injectNgtStore, is, signalStore } from 'angular-three';\nimport Stats from 'stats-gl';\n\nexport type NgtsStatsGLState = {\n\tparent?: NgtRef<HTMLElement>;\n\tcontainerClass?: string;\n\tconfig?: ConstructorParameters<typeof Stats>[0];\n};\n\n@Directive({ selector: 'ngts-stats-gl', standalone: true })\nexport class NgtsStatsGL {\n\tprivate inputs = signalStore<NgtsStatsGLState>();\n\n\t@Input({ alias: 'parent' }) set _parent(parent: NgtRef<HTMLElement>) {\n\t\tthis.inputs.set({ parent });\n\t}\n\n\t@Input({ alias: 'containerClass' }) set _containerClass(containerClass: string) {\n\t\tthis.inputs.set({ containerClass });\n\t}\n\n\t@Input({ alias: 'config' }) set _config(config: NgtsStatsGLState['config']) {\n\t\tthis.inputs.set({ config });\n\t}\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectNgtStore();\n\tprivate gl = this.store.select('gl');\n\n\tprivate config = this.inputs.select('config');\n\tprivate parent = this.inputs.select('parent');\n\tprivate containerClass = this.inputs.select('containerClass');\n\n\tprivate stats = computed(() => {\n\t\tconst [config, gl] = [this.config() || {}, this.gl()];\n\t\tconst stats = new Stats(config);\n\t\tstats.init(gl.domElement);\n\t\treturn stats;\n\t});\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [parent, stats, containerClass] = [this.parent(), this.stats(), this.containerClass()];\n\t\t\tconst node = parent ? (is.ref(parent) ? parent.nativeElement : parent) : this.document.body;\n\t\t\tnode.appendChild(stats.container);\n\t\t\tif (containerClass) stats.container.classList.add(...containerClass.split(' ').filter(Boolean));\n\n\t\t\tconst begin = addEffect(() => stats.begin());\n\t\t\tconst end = addAfterEffect(() => stats.end());\n\t\t\tonCleanup(() => {\n\t\t\t\tnode.removeChild(stats.container);\n\t\t\t\tbegin();\n\t\t\t\tend();\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Texture } from 'three';\n\nexport type Point = {\n\tx: number;\n\ty: number;\n\tage: number;\n\tforce: number;\n};\n\nexport type TrailConfig = {\n\t/** texture size (default: 256x256) */\n\tsize?: number;\n\t/** Max age (ms) of trail points (default: 750) */\n\tmaxAge?: number;\n\t/** Trail radius (default: 0.3) */\n\tradius?: number;\n\t/** Canvas trail opacity (default: 0.2) */\n\tintensity?: number;\n\t/** Add points in between slow pointer events (default: 0) */\n\tinterpolate?: number;\n\t/** Moving average of pointer force (default: 0) */\n\tsmoothing?: number;\n\t/** Minimum pointer force (default: 0.3) */\n\tminForce?: number;\n\t/** Blend mode (default: 'screen') */\n\tblend?: CanvasRenderingContext2D['globalCompositeOperation'];\n\t/** Easing (default: easeCircOut) */\n\tease?: (t: number) => number;\n};\n\n// default ease\nconst easeCircleOut = (x: number) => Math.sqrt(1 - Math.pow(x - 1, 2));\n\n// smooth new sample (measurement) based on previous sample (current)\nfunction smoothAverage(current: number, measurement: number, smoothing = 0.9) {\n\treturn measurement * smoothing + current * (1.0 - smoothing);\n}\n\nexport class TrailTexture {\n\ttrail: Point[];\n\tcanvas!: HTMLCanvasElement;\n\tctx!: CanvasRenderingContext2D;\n\ttexture!: Texture;\n\tforce: number;\n\tsize: number;\n\tmaxAge: number;\n\tradius: number;\n\tintensity: number;\n\tease: (t: number) => number;\n\tminForce: number;\n\tinterpolate: number;\n\tsmoothing: number;\n\tblend: CanvasRenderingContext2D['globalCompositeOperation'];\n\n\tconstructor({\n\t\tsize = 256,\n\t\tmaxAge = 750,\n\t\tradius = 0.3,\n\t\tintensity = 0.2,\n\t\tinterpolate = 0,\n\t\tsmoothing = 0,\n\t\tminForce = 0.3,\n\t\tblend = 'screen', // source-over is canvas default. Others are slower\n\t\tease = easeCircleOut,\n\t}: TrailConfig = {}) {\n\t\tthis.size = size;\n\t\tthis.maxAge = maxAge;\n\t\tthis.radius = radius;\n\t\tthis.intensity = intensity;\n\t\tthis.ease = ease;\n\t\tthis.interpolate = interpolate;\n\t\tthis.smoothing = smoothing;\n\t\tthis.minForce = minForce;\n\t\tthis.blend = blend as GlobalCompositeOperation;\n\n\t\tthis.trail = [];\n\t\tthis.force = 0;\n\t\tthis.initTexture();\n\t}\n\n\tinitTexture() {\n\t\tthis.canvas = document.createElement('canvas');\n\t\tthis.canvas.width = this.canvas.height = this.size;\n\t\tthis.ctx = this.canvas.getContext('2d')!;\n\t\tthis.ctx.fillStyle = 'black';\n\t\tthis.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n\t\tthis.texture = new Texture(this.canvas);\n\n\t\tthis.canvas.id = 'touchTexture';\n\t\tthis.canvas.style.width = this.canvas.style.height = `${this.canvas.width}px`;\n\t}\n\n\tupdate(delta: number) {\n\t\tthis.clear();\n\n\t\t// age points\n\t\tthis.trail.forEach((point, i) => {\n\t\t\tpoint.age += delta * 1000;\n\t\t\t// remove old\n\t\t\tif (point.age > this.maxAge) {\n\t\t\t\tthis.trail.splice(i, 1);\n\t\t\t}\n\t\t});\n\n\t\t// reset force when empty (when smoothing)\n\t\tif (!this.trail.length) this.force = 0;\n\n\t\tthis.trail.forEach((point) => {\n\t\t\tthis.drawTouch(point);\n\t\t});\n\n\t\tthis.texture.needsUpdate = true;\n\t}\n\n\tclear() {\n\t\tthis.ctx.globalCompositeOperation = 'source-over';\n\t\tthis.ctx.fillStyle = 'black';\n\t\tthis.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\t}\n\n\taddTouch(point: Pick<Point, 'x' | 'y'>) {\n\t\tconst last = this.trail[this.trail.length - 1];\n\n\t\tif (last) {\n\t\t\tconst dx = last.x - point.x;\n\t\t\tconst dy = last.y - point.y;\n\t\t\tconst dd = dx * dx + dy * dy;\n\n\t\t\tconst force = Math.max(this.minForce, Math.min(dd * 10000, 1));\n\n\t\t\tthis.force = smoothAverage(force, this.force, this.smoothing);\n\n\t\t\tif (!!this.interpolate) {\n\t\t\t\tconst lines = Math.ceil(dd / Math.pow((this.radius * 0.5) / this.interpolate, 2));\n\n\t\t\t\tif (lines > 1) {\n\t\t\t\t\tfor (let i = 1; i < lines; i++) {\n\t\t\t\t\t\tthis.trail.push({\n\t\t\t\t\t\t\tx: last.x - (dx / lines) * i,\n\t\t\t\t\t\t\ty: last.y - (dy / lines) * i,\n\t\t\t\t\t\t\tage: 0,\n\t\t\t\t\t\t\tforce,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.trail.push({ x: point.x, y: point.y, age: 0, force: this.force });\n\t}\n\n\tdrawTouch(point: Point) {\n\t\tconst pos = {\n\t\t\tx: point.x * this.size,\n\t\t\ty: (1 - point.y) * this.size,\n\t\t};\n\n\t\tlet intensity = 1;\n\t\tif (point.age < this.maxAge * 0.3) {\n\t\t\tintensity = this.ease(point.age / (this.maxAge * 0.3));\n\t\t} else {\n\t\t\tintensity = this.ease(1 - (point.age - this.maxAge * 0.3) / (this.maxAge * 0.7));\n\t\t}\n\n\t\tintensity *= point.force;\n\n\t\t// apply blending\n\t\tthis.ctx.globalCompositeOperation = this.blend;\n\n\t\tconst radius = this.size * this.radius * intensity;\n\t\tconst grd = this.ctx.createRadialGradient(\n\t\t\tpos.x,\n\t\t\tpos.y,\n\t\t\tMath.max(0, radius * 0.25),\n\t\t\tpos.x,\n\t\t\tpos.y,\n\t\t\tMath.max(0, radius),\n\t\t);\n\t\tgrd.addColorStop(0, `rgba(255, 255, 255, ${this.intensity})`);\n\t\tgrd.addColorStop(1, `rgba(0, 0, 0, 0.0)`);\n\n\t\tthis.ctx.beginPath();\n\t\tthis.ctx.fillStyle = grd;\n\t\tthis.ctx.arc(pos.x, pos.y, Math.max(0, radius), 0, Math.PI * 2);\n\t\tthis.ctx.fill();\n\t}\n}\n","import { Injector, computed, runInInjectionContext } from '@angular/core';\nimport { NgtThreeEvent, assertInjectionContext, injectBeforeRender } from 'angular-three';\nimport { TrailTexture, type TrailConfig } from './trail-texture';\n\nexport function injectNgtsTrailTexture(\n\ttrailConfigFn: () => Partial<TrailConfig>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsTrailTexture, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst config = computed(() => trailConfigFn() || {});\n\t\tconst trail = computed(() => new TrailTexture(config()));\n\t\tconst texture = computed(() => trail().texture);\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\ttrail().update(delta);\n\t\t});\n\n\t\tconst onMove = (ev: NgtThreeEvent<PointerEvent>) => trail().addTouch(ev.uv!);\n\n\t\treturn { texture, onMove };\n\t});\n}\n","import {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tComponent,\n\tInput,\n\tcomputed,\n\teffect,\n\trunInInjectionContext,\n\ttype Injector,\n} from '@angular/core';\nimport {\n\tNgtPortal,\n\tNgtPortalContent,\n\tNgtRef,\n\tassertInjectionContext,\n\textend,\n\tinjectBeforeRender,\n\tinjectNgtRef,\n\tinjectNgtStore,\n\tis,\n\tsignalStore,\n} from 'angular-three';\nimport { MeshLineGeometry, MeshLineMaterial } from 'meshline';\nimport * as THREE from 'three';\nimport { Group, Mesh } from 'three';\n\nconst shiftLeft = (collection: Float32Array, steps = 1): Float32Array => {\n\tcollection.set(collection.subarray(steps));\n\tcollection.fill(-Infinity, -steps);\n\treturn collection;\n};\n\nexport type NgtsTrailSettings = {\n\twidth: number;\n\tlength: number;\n\tdecay: number;\n\t/**\n\t * Wether to use the target's world or local positions\n\t */\n\tlocal: boolean;\n\t// Min distance between previous and current points\n\tstride: number;\n\t// Number of frames to wait before next calculation\n\tinterval: number;\n};\n\nconst defaultSettings: NgtsTrailSettings = {\n\twidth: 0.2,\n\tlength: 1,\n\tdecay: 1,\n\tlocal: false,\n\tstride: 0,\n\tinterval: 1,\n};\n\nexport function injectNgtsTrail(\n\ttargetFactory: () => NgtRef<THREE.Object3D> | null,\n\tsettingsFactory: () => Partial<NgtsTrailSettings>,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\tinjector = assertInjectionContext(injectNgtsTrail, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst points = injectNgtRef<Float32Array>();\n\t\tlet frameCount = 0;\n\n\t\tconst prevPosition = new THREE.Vector3();\n\t\tconst worldPosition = new THREE.Vector3();\n\n\t\tconst _target = computed(() => {\n\t\t\tconst _target = targetFactory();\n\t\t\tif (is.ref(_target)) return _target.nativeElement;\n\t\t\treturn _target;\n\t\t});\n\n\t\tconst _settings = computed(() => ({ ...defaultSettings, ...settingsFactory() }));\n\t\tconst _length = computed(() => _settings().length);\n\n\t\teffect(() => {\n\t\t\tconst [target, length] = [_target(), _length()];\n\t\t\tif (target) {\n\t\t\t\tpoints.nativeElement = Float32Array.from({ length: length * 10 * 3 }, (_, i) =>\n\t\t\t\t\ttarget.position.getComponent(i % 3),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [target, _points, { local, decay, stride, interval }] = [\n\t\t\t\t_target(),\n\t\t\t\tpoints.nativeElement,\n\t\t\t\t_settings(),\n\t\t\t];\n\t\t\tif (!target) return;\n\t\t\tif (!_points) return;\n\n\t\t\tif (frameCount === 0) {\n\t\t\t\tlet newPosition: THREE.Vector3;\n\t\t\t\tif (local) {\n\t\t\t\t\tnewPosition = target.position;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.getWorldPosition(worldPosition);\n\t\t\t\t\tnewPosition = worldPosition;\n\t\t\t\t}\n\n\t\t\t\tconst steps = 1 * decay;\n\t\t\t\tfor (let i = 0; i < steps; i++) {\n\t\t\t\t\tif (newPosition.distanceTo(prevPosition) < stride) continue;\n\n\t\t\t\t\tshiftLeft(_points, 3);\n\t\t\t\t\t_points.set(newPosition.toArray(), _points.length - 3);\n\t\t\t\t}\n\t\t\t\tprevPosition.copy(newPosition);\n\t\t\t}\n\n\t\t\tframeCount++;\n\t\t\tframeCount = frameCount % interval;\n\t\t});\n\n\t\treturn points;\n\t});\n}\n\nexport type NgtsTrailState = {\n\tcolor: THREE.ColorRepresentation;\n\tattenuation: (width: number) => number;\n\tsettings: NgtsTrailSettings;\n\ttarget?: NgtRef<THREE.Object3D>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-trail': NgtsTrailState;\n\t}\n}\n\nextend({ Group, Mesh });\n\n@Component({\n\tselector: 'ngts-trail',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group>\n\t\t\t<ngt-portal [container]=\"scene()\" [autoRender]=\"false\">\n\t\t\t\t<ng-template ngtPortalContent>\n\t\t\t\t\t<ngt-mesh [ref]=\"trailRef\" [geometry]=\"geometry\" [material]=\"material()\" />\n\t\t\t\t</ng-template>\n\t\t\t</ngt-portal>\n\t\t\t<ngt-group [ref]=\"groupRef\">\n\t\t\t\t<ng-content />\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtPortal, NgtPortalContent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsTrail {\n\tprivate inputs = signalStore<NgtsTrailState>({ settings: defaultSettings, color: 'hotpink' });\n\n\t@Input() trailRef = injectNgtRef<Mesh>();\n\n\t@Input({ alias: 'color' }) set _color(color: THREE.ColorRepresentation) {\n\t\tthis.inputs.set({ color });\n\t}\n\n\t@Input({ alias: 'attenuation' }) set _attenuation(attenuation: (width: number) => number) {\n\t\tthis.inputs.set({ attenuation });\n\t}\n\n\t@Input({ alias: 'target' }) set _target(target: NgtRef<THREE.Object3D>) {\n\t\tthis.inputs.set({ target });\n\t}\n\n\t@Input({ alias: 'settings' }) set _settings(settings: Partial<NgtsTrailSettings>) {\n\t\tthis.inputs.set({ settings: { ...defaultSettings, ...settings } });\n\t}\n\n\tgroupRef = injectNgtRef<Group>();\n\n\tprivate children = this.groupRef.children('both');\n\n\tprivate store = injectNgtStore();\n\tprivate size = this.store.select('size');\n\n\tprivate target = this.inputs.select('target');\n\tprivate settings = this.inputs.select('settings');\n\tprivate width = computed(() => this.settings().width);\n\tprivate color = this.inputs.select('color');\n\tprivate attenuation = this.inputs.select('attenuation');\n\n\tprivate anchor = computed(() => {\n\t\tconst target = this.target();\n\t\tif (target) return target;\n\t\tconst group = this.groupRef.nativeElement;\n\t\tif (group) {\n\t\t\treturn group.children.find((child) => child instanceof THREE.Object3D) || null;\n\t\t}\n\t\treturn null;\n\t});\n\n\tprivate points = injectNgtsTrail(this.anchor, this.settings);\n\n\tscene = this.store.select('scene');\n\tgeometry = new MeshLineGeometry();\n\tmaterial = computed(() => {\n\t\tconst [width, color, size] = [this.width(), this.color(), this.size()];\n\n\t\tconst m = new MeshLineMaterial({\n\t\t\tlineWidth: 0.1 * width,\n\t\t\tcolor,\n\t\t\tsizeAttenuation: 1,\n\t\t\tresolution: new THREE.Vector2(size.width, size.height),\n\t\t});\n\n\t\t// TODO: understand this first\n\t\t// Get and apply first <meshLineMaterial /> from children\n\t\t// let matOverride: React.ReactElement | undefined;\n\t\t// if (children) {\n\t\t// \tif (Array.isArray(children)) {\n\t\t// \t\tmatOverride = children.find((child: React.ReactNode) => {\n\t\t// \t\t\tconst c = child as React.ReactElement;\n\t\t// \t\t\treturn typeof c.type === 'string' && c.type === 'meshLineMaterial';\n\t\t// \t\t}) as React.ReactElement | undefined;\n\t\t// \t} else {\n\t\t// \t\tconst c = children as React.ReactElement;\n\t\t// \t\tif (typeof c.type === 'string' && c.type === 'meshLineMaterial') {\n\t\t// \t\t\tmatOverride = c;\n\t\t// \t\t}\n\t\t// \t}\n\t\t// }\n\t\t// if (typeof matOverride?.props === 'object') {\n\t\t// \tm.setValues(matOverride.props);\n\t\t// }\n\n\t\treturn m;\n\t});\n\n\tconstructor() {\n\t\tthis.setMaterialSize();\n\t\tthis.beforeRender();\n\t}\n\n\tprivate setMaterialSize() {\n\t\teffect(() => {\n\t\t\tconst [material, size] = [this.material(), this.size()];\n\t\t\tmaterial.uniforms['resolution'].value.set(size.width, size.height);\n\t\t});\n\t}\n\n\tprivate beforeRender() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst [points, attenuation] = [this.points.nativeElement, this.attenuation()];\n\t\t\tif (!points) return;\n\t\t\tthis.geometry.setPoints(points, attenuation);\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, effect, untracked, Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
3
+ import { signalStore, injectNgtRef, prepare, NgtArgs, NgtPortal, NgtPortalContent } from 'angular-three';
4
+ import * as THREE from 'three';
5
+ import { Flow } from 'three-stdlib';
6
+
7
+ class NgtsCurveModifier {
8
+ set _curve(curve) {
9
+ this.inputs.set({ curve });
10
+ }
11
+ constructor() {
12
+ this.inputs = signalStore();
13
+ this.curve = this.inputs.select('curve');
14
+ this.sceneRef = injectNgtRef(prepare(new THREE.Scene()));
15
+ this.sceneRefChildren = this.sceneRef.children();
16
+ this.modifierObject = signal(null);
17
+ effect(() => {
18
+ this.sceneRefChildren();
19
+ untracked(() => {
20
+ this.modifier = new Flow(this.sceneRef.nativeElement.children[0]);
21
+ this.modifierObject.set(this.modifier.object3D);
22
+ });
23
+ });
24
+ effect(() => {
25
+ const curve = this.curve();
26
+ this.modifierObject();
27
+ if (curve) {
28
+ this.modifier?.updateCurve(0, curve);
29
+ }
30
+ });
31
+ }
32
+ moveAlongCurve(value) {
33
+ this.modifier?.moveAlongCurve(value);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsCurveModifier, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NgtsCurveModifier, isStandalone: true, selector: "ngts-curve-modifier", inputs: { _curve: ["curve", "_curve"] }, ngImport: i0, template: `
37
+ <ngt-portal [container]="sceneRef" [autoRender]="false">
38
+ <ng-template ngtPortalContent>
39
+ <ng-content />
40
+ </ng-template>
41
+ </ngt-portal>
42
+ <ngt-primitive *args="[modifierObject()]" />
43
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtPortal, selector: "ngt-portal", inputs: ["container", "state", "autoRender", "autoRenderPriority"], outputs: ["beforeRender"] }, { kind: "directive", type: NgtPortalContent, selector: "ng-template[ngtPortalContent]" }] }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NgtsCurveModifier, decorators: [{
46
+ type: Component,
47
+ args: [{
48
+ selector: 'ngts-curve-modifier',
49
+ standalone: true,
50
+ template: `
51
+ <ngt-portal [container]="sceneRef" [autoRender]="false">
52
+ <ng-template ngtPortalContent>
53
+ <ng-content />
54
+ </ng-template>
55
+ </ngt-portal>
56
+ <ngt-primitive *args="[modifierObject()]" />
57
+ `,
58
+ imports: [NgtArgs, NgtPortal, NgtPortalContent],
59
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
60
+ }]
61
+ }], ctorParameters: function () { return []; }, propDecorators: { _curve: [{
62
+ type: Input,
63
+ args: [{ alias: 'curve' }]
64
+ }] } });
65
+
66
+ /**
67
+ * Generated bundle index. Do not edit.
68
+ */
69
+
70
+ export { NgtsCurveModifier };
71
+ //# sourceMappingURL=angular-three-soba-modifiers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-soba-modifiers.mjs","sources":["../../../../libs/soba/modifiers/src/curve-modifier/curve-modifier.ts","../../../../libs/soba/modifiers/src/angular-three-soba-modifiers.ts"],"sourcesContent":["import { CUSTOM_ELEMENTS_SCHEMA, Component, Input, effect, signal, untracked } from '@angular/core';\nimport { NgtArgs, NgtPortal, NgtPortalContent, injectNgtRef, prepare, signalStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { Flow } from 'three-stdlib';\n\nexport type NgtsCurveModifierState = {\n\tcurve?: THREE.Curve<THREE.Vector3>;\n};\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'ngts-curve-modifier': NgtsCurveModifierState;\n\t}\n}\n\n@Component({\n\tselector: 'ngts-curve-modifier',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-portal [container]=\"sceneRef\" [autoRender]=\"false\">\n\t\t\t<ng-template ngtPortalContent>\n\t\t\t\t<ng-content />\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t\t<ngt-primitive *args=\"[modifierObject()]\" />\n\t`,\n\timports: [NgtArgs, NgtPortal, NgtPortalContent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsCurveModifier {\n\tprivate inputs = signalStore<NgtsCurveModifierState>();\n\n\t@Input({ alias: 'curve' }) set _curve(curve: THREE.Curve<THREE.Vector3>) {\n\t\tthis.inputs.set({ curve });\n\t}\n\n\tprivate curve = this.inputs.select('curve');\n\n\tsceneRef = injectNgtRef(prepare(new THREE.Scene()));\n\tprivate sceneRefChildren = this.sceneRef.children();\n\n\tprivate modifier?: Flow;\n\tmodifierObject = signal<THREE.Object3D | null>(null);\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.sceneRefChildren();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.modifier = new Flow(this.sceneRef.nativeElement.children[0] as THREE.Mesh);\n\t\t\t\tthis.modifierObject.set(this.modifier.object3D);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst curve = this.curve();\n\t\t\tthis.modifierObject();\n\t\t\tif (curve) {\n\t\t\t\tthis.modifier?.updateCurve(0, curve);\n\t\t\t}\n\t\t});\n\t}\n\n\tmoveAlongCurve(value: number) {\n\t\tthis.modifier?.moveAlongCurve(value);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MA6Ba,iBAAiB,CAAA;IAG7B,IAA+B,MAAM,CAAC,KAAiC,EAAA;QACtE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3B;AAUD,IAAA,WAAA,GAAA;QAdQ,IAAM,CAAA,MAAA,GAAG,WAAW,EAA0B,CAAC;QAM/C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAE5C,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGpD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;QAGpD,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAe,CAAC,CAAC;gBAChF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,YAAA,IAAI,KAAK,EAAE;gBACV,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrC,aAAA;AACF,SAAC,CAAC,CAAC;KACH;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;KACrC;8GAnCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAXnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,iBAAA,CAAA;0EAI+B,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;;;AChC1B;;AAEG;;;;"}