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

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 (321) 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 +24 -12
  4. package/abstractions/grid/grid.d.ts +50 -0
  5. package/abstractions/index.d.ts +2 -7
  6. package/abstractions/text/text.d.ts +10 -5
  7. package/abstractions/text-3d/text-3d.d.ts +51 -41
  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 +31 -12
  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 +180 -0
  19. package/esm2022/abstractions/index.mjs +3 -8
  20. package/esm2022/abstractions/text/text.mjs +123 -124
  21. package/esm2022/abstractions/text-3d/text-3d.mjs +120 -115
  22. package/esm2022/cameras/camera/camera-content.mjs +6 -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 +105 -85
  29. package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
  30. package/esm2022/gizmos/gizmo-helper/gizmo-helper.mjs +197 -0
  31. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/constants.mjs +31 -0
  32. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +93 -0
  33. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +150 -0
  34. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.mjs +66 -0
  35. package/esm2022/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +71 -0
  36. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +195 -0
  37. package/esm2022/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +272 -0
  38. package/esm2022/gizmos/index.mjs +4 -0
  39. package/esm2022/loaders/gltf-loader/gltf-loader.mjs +3 -6
  40. package/esm2022/loaders/loader/loader.mjs +92 -87
  41. package/esm2022/loaders/progress/progress.mjs +29 -29
  42. package/esm2022/loaders/texture-loader/texture-loader.mjs +4 -4
  43. package/esm2022/materials/index.mjs +2 -1
  44. package/esm2022/materials/mesh-distort-material/mesh-distort-material.mjs +60 -51
  45. package/esm2022/materials/mesh-reflector-material/mesh-reflector-material.mjs +239 -255
  46. package/esm2022/materials/mesh-refraction-material/mesh-refraction-material.mjs +102 -99
  47. package/esm2022/materials/mesh-transmission-material/mesh-transmission-material.mjs +167 -146
  48. package/esm2022/materials/mesh-wobble-material/mesh-wobble-material.mjs +44 -42
  49. package/esm2022/materials/point-material/point-material.mjs +50 -0
  50. package/esm2022/misc/animations/animations.mjs +36 -32
  51. package/esm2022/misc/bake-shadows/bake-shadows.mjs +13 -13
  52. package/esm2022/misc/caustics/caustics.mjs +387 -0
  53. package/esm2022/misc/decal/decal.mjs +187 -0
  54. package/esm2022/misc/depth-buffer/depth-buffer.mjs +33 -35
  55. package/esm2022/misc/example/example.mjs +160 -0
  56. package/esm2022/misc/fbo/fbo.mjs +35 -35
  57. package/esm2022/misc/html/html-wrapper.mjs +478 -0
  58. package/esm2022/misc/html/html.mjs +304 -0
  59. package/esm2022/misc/index.mjs +10 -1
  60. package/esm2022/misc/sampler/sampler.mjs +142 -0
  61. package/esm2022/misc/shadow/shadow.mjs +111 -0
  62. package/esm2022/misc/stats-gl/stats-gl.mjs +61 -0
  63. package/esm2022/misc/trail/trail.mjs +209 -0
  64. package/esm2022/misc/trail-texture/inject-trail-texture.mjs +17 -0
  65. package/esm2022/misc/trail-texture/trail-texture.mjs +106 -0
  66. package/esm2022/modifiers/angular-three-soba-modifiers.mjs +5 -0
  67. package/esm2022/modifiers/curve-modifier/curve-modifier.mjs +64 -0
  68. package/esm2022/modifiers/index.mjs +2 -0
  69. package/esm2022/performances/adaptive-dpr/adaptive-dpr.mjs +44 -0
  70. package/esm2022/performances/adaptive-events/adaptive-events.mjs +27 -0
  71. package/esm2022/performances/angular-three-soba-performances.mjs +5 -0
  72. package/esm2022/performances/index.mjs +8 -0
  73. package/esm2022/performances/instances/instances.mjs +220 -0
  74. package/esm2022/performances/instances/position-mesh.mjs +52 -0
  75. package/esm2022/performances/points/points-input.mjs +64 -0
  76. package/esm2022/performances/points/points.mjs +326 -0
  77. package/esm2022/performances/points/position-point.mjs +54 -0
  78. package/esm2022/performances/segments/segment-object.mjs +9 -0
  79. package/esm2022/performances/segments/segments.mjs +182 -0
  80. package/esm2022/shaders/blur-pass/blur-pass.mjs +2 -2
  81. package/esm2022/shaders/caustics/caustics-material.mjs +130 -0
  82. package/esm2022/shaders/caustics/caustics-projection-material.mjs +31 -0
  83. package/esm2022/shaders/convolution-material/convolution-material.mjs +1 -1
  84. package/esm2022/shaders/discard-material/discard-material.mjs +1 -1
  85. package/esm2022/shaders/grid-material/grid-material.mjs +77 -0
  86. package/esm2022/shaders/index.mjs +6 -3
  87. package/esm2022/shaders/mesh-distort-material/mesh-distort-material.mjs +42 -41
  88. package/esm2022/shaders/mesh-reflector-material/mesh-reflector-material.mjs +2 -2
  89. package/esm2022/shaders/mesh-refraction-material/mesh-refraction-material.mjs +2 -2
  90. package/esm2022/shaders/mesh-transmission-material/mesh-transmission-material.mjs +4 -4
  91. package/esm2022/shaders/mesh-wobble-material/mesh-wobble-material.mjs +1 -1
  92. package/esm2022/shaders/shader-material/shader-material.mjs +1 -1
  93. package/esm2022/shaders/soft-shadow-material/soft-shadow-material.mjs +17 -25
  94. package/esm2022/shaders/sparkles-material/sparkles-material.mjs +32 -46
  95. package/esm2022/shaders/spot-light-material/spot-light-material.mjs +7 -7
  96. package/esm2022/shaders/star-field-material/star-field-material.mjs +3 -2
  97. package/esm2022/shaders/wireframe-material/wireframe-material.mjs +247 -0
  98. package/esm2022/staging/accumulative-shadows/accumulative-shadows.mjs +160 -176
  99. package/esm2022/staging/accumulative-shadows/progressive-light-map.mjs +1 -1
  100. package/esm2022/staging/accumulative-shadows/randomized-lights.mjs +126 -128
  101. package/esm2022/staging/backdrop/backdrop.mjs +77 -0
  102. package/esm2022/staging/bb-anchor/bb-anchor.mjs +69 -0
  103. package/esm2022/staging/bounds/bounds.mjs +144 -143
  104. package/esm2022/staging/camera-shake/camera-shake.mjs +86 -80
  105. package/esm2022/staging/center/center.mjs +129 -112
  106. package/esm2022/staging/cloud/cloud.mjs +118 -124
  107. package/esm2022/staging/contact-shadows/contact-shadows.mjs +131 -134
  108. package/esm2022/staging/environment/assets.mjs +12 -12
  109. package/esm2022/staging/environment/environment-cube.mjs +28 -30
  110. package/esm2022/staging/environment/environment-ground.mjs +17 -19
  111. package/esm2022/staging/environment/environment-input.mjs +98 -85
  112. package/esm2022/staging/environment/environment-map.mjs +33 -33
  113. package/esm2022/staging/environment/environment-portal.mjs +75 -97
  114. package/esm2022/staging/environment/environment.mjs +34 -51
  115. package/esm2022/staging/environment/utils.mjs +37 -15
  116. package/esm2022/staging/float/float.mjs +70 -58
  117. package/esm2022/staging/index.mjs +7 -3
  118. package/esm2022/staging/matcap-texture/matcap-texture.mjs +64 -0
  119. package/esm2022/staging/normal-texture/normal-texture.mjs +53 -0
  120. package/esm2022/staging/sky/sky.mjs +85 -80
  121. package/esm2022/staging/sparkles/sparkles.mjs +108 -105
  122. package/esm2022/staging/spot-light/shadow-mesh-input.mjs +63 -0
  123. package/esm2022/staging/spot-light/shadow-mesh.mjs +266 -0
  124. package/esm2022/staging/spot-light/spot-light-input.mjs +67 -58
  125. package/esm2022/staging/spot-light/spot-light.mjs +51 -64
  126. package/esm2022/staging/spot-light/volumetric-mesh.mjs +67 -70
  127. package/esm2022/staging/stage/stage.mjs +305 -290
  128. package/esm2022/staging/stars/stars.mjs +101 -102
  129. package/esm2022/staging/wireframe/wireframe-input.mjs +191 -0
  130. package/esm2022/staging/wireframe/wireframe.mjs +228 -0
  131. package/esm2022/utils/angular-three-soba-utils.mjs +5 -0
  132. package/esm2022/utils/content/content.mjs +15 -0
  133. package/esm2022/utils/index.mjs +2 -0
  134. package/fesm2022/angular-three-soba-abstractions.mjs +514 -1947
  135. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  136. package/fesm2022/angular-three-soba-cameras.mjs +302 -259
  137. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  138. package/fesm2022/angular-three-soba-controls.mjs +104 -83
  139. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  140. package/fesm2022/angular-three-soba-gizmos.mjs +1043 -0
  141. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
  142. package/fesm2022/angular-three-soba-loaders.mjs +121 -117
  143. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  144. package/fesm2022/angular-three-soba-materials.mjs +662 -592
  145. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  146. package/fesm2022/angular-three-soba-misc.mjs +2214 -105
  147. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  148. package/fesm2022/angular-three-soba-modifiers.mjs +71 -0
  149. package/fesm2022/angular-three-soba-modifiers.mjs.map +1 -0
  150. package/fesm2022/angular-three-soba-performances.mjs +956 -0
  151. package/fesm2022/angular-three-soba-performances.mjs.map +1 -0
  152. package/fesm2022/angular-three-soba-shaders.mjs +549 -252
  153. package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
  154. package/fesm2022/angular-three-soba-staging.mjs +2899 -2563
  155. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  156. package/fesm2022/angular-three-soba-utils.mjs +22 -0
  157. package/fesm2022/angular-three-soba-utils.mjs.map +1 -0
  158. package/gizmos/README.md +3 -0
  159. package/gizmos/gizmo-helper/gizmo-helper.d.ts +69 -0
  160. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +22 -0
  161. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +29 -0
  162. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube-input.d.ts +33 -0
  163. package/gizmos/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +10 -0
  164. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +40 -0
  165. package/gizmos/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +30 -0
  166. package/gizmos/index.d.ts +3 -0
  167. package/loaders/gltf-loader/gltf-loader.d.ts +4 -3
  168. package/loaders/loader/loader.d.ts +19 -17
  169. package/loaders/progress/progress.d.ts +1 -1
  170. package/loaders/texture-loader/texture-loader.d.ts +2 -2
  171. package/materials/index.d.ts +1 -0
  172. package/materials/mesh-distort-material/mesh-distort-material.d.ts +25 -15
  173. package/materials/mesh-reflector-material/mesh-reflector-material.d.ts +74 -56
  174. package/materials/mesh-refraction-material/mesh-refraction-material.d.ts +33 -21
  175. package/materials/mesh-transmission-material/mesh-transmission-material.d.ts +55 -39
  176. package/materials/mesh-wobble-material/mesh-wobble-material.d.ts +19 -10
  177. package/materials/point-material/point-material.d.ts +24 -0
  178. package/metadata.json +1 -0
  179. package/misc/animations/animations.d.ts +6 -4
  180. package/misc/caustics/caustics.d.ts +87 -0
  181. package/misc/decal/decal.d.ts +49 -0
  182. package/misc/depth-buffer/depth-buffer.d.ts +2 -2
  183. package/misc/example/example.d.ts +81 -0
  184. package/misc/fbo/fbo.d.ts +2 -2
  185. package/misc/html/html-wrapper.d.ts +559 -0
  186. package/misc/html/html.d.ts +214 -0
  187. package/misc/index.d.ts +9 -0
  188. package/misc/sampler/sampler.d.ts +67 -0
  189. package/misc/shadow/shadow.d.ts +37 -0
  190. package/misc/stats-gl/stats-gl.d.ts +24 -0
  191. package/misc/trail/trail.d.ts +57 -0
  192. package/misc/trail-texture/inject-trail-texture.d.ts +9 -0
  193. package/misc/trail-texture/trail-texture.d.ts +50 -0
  194. package/modifiers/README.md +3 -0
  195. package/modifiers/curve-modifier/curve-modifier.d.ts +23 -0
  196. package/modifiers/index.d.ts +1 -0
  197. package/package.json +31 -16
  198. package/performances/README.md +3 -0
  199. package/performances/adaptive-dpr/adaptive-dpr.d.ts +14 -0
  200. package/{performance/adaptive → performances/adaptive-events}/adaptive-events.d.ts +3 -0
  201. package/performances/index.d.ts +7 -0
  202. package/performances/instances/instances.d.ts +79 -0
  203. package/{performance → performances}/instances/position-mesh.d.ts +1 -1
  204. package/performances/points/points-input.d.ts +32 -0
  205. package/performances/points/points.d.ts +92 -0
  206. package/performances/points/position-point.d.ts +11 -0
  207. package/performances/segments/segment-object.d.ts +7 -0
  208. package/performances/segments/segments.d.ts +124 -0
  209. package/shaders/grid-material/grid-material.d.ts +37 -0
  210. package/shaders/index.d.ts +5 -2
  211. package/shaders/mesh-distort-material/mesh-distort-material.d.ts +147 -2
  212. package/shaders/mesh-transmission-material/mesh-transmission-material.d.ts +1 -1
  213. package/shaders/shader-material/shader-material.d.ts +2 -2
  214. package/shaders/soft-shadow-material/soft-shadow-material.d.ts +10 -1
  215. package/shaders/sparkles-material/sparkles-material.d.ts +15 -1
  216. package/shaders/spot-light-material/spot-light-material.d.ts +11 -2
  217. package/shaders/star-field-material/star-field-material.d.ts +11 -1
  218. package/shaders/wireframe-material/wireframe-material.d.ts +58 -0
  219. package/staging/accumulative-shadows/accumulative-shadows.d.ts +89 -39
  220. package/staging/accumulative-shadows/randomized-lights.d.ts +40 -27
  221. package/staging/backdrop/backdrop.d.ts +30 -0
  222. package/staging/bb-anchor/bb-anchor.d.ts +27 -0
  223. package/staging/bounds/bounds.d.ts +100 -24
  224. package/staging/camera-shake/camera-shake.d.ts +30 -19
  225. package/staging/center/center.d.ts +43 -35
  226. package/staging/cloud/cloud.d.ts +26 -23
  227. package/staging/contact-shadows/contact-shadows.d.ts +41 -28
  228. package/staging/environment/assets.d.ts +9 -9
  229. package/staging/environment/environment-cube.d.ts +9 -5
  230. package/staging/environment/environment-ground.d.ts +7 -7
  231. package/staging/environment/environment-input.d.ts +37 -37
  232. package/staging/environment/environment-map.d.ts +10 -5
  233. package/staging/environment/environment-portal.d.ts +10 -5
  234. package/staging/environment/environment.d.ts +0 -4
  235. package/staging/environment/utils.d.ts +2 -2
  236. package/staging/float/float.d.ts +14 -10
  237. package/staging/index.d.ts +6 -2
  238. package/staging/matcap-texture/matcap-texture.d.ts +13 -0
  239. package/staging/normal-texture/normal-texture.d.ts +16 -0
  240. package/staging/sky/sky.d.ts +28 -21
  241. package/staging/sparkles/sparkles.d.ts +36 -22
  242. package/staging/spot-light/shadow-mesh-input.d.ts +29 -0
  243. package/staging/spot-light/shadow-mesh.d.ts +37 -0
  244. package/staging/spot-light/spot-light-input.d.ts +25 -25
  245. package/staging/spot-light/spot-light.d.ts +31 -15
  246. package/staging/spot-light/volumetric-mesh.d.ts +15 -9
  247. package/staging/stage/stage.d.ts +89 -65
  248. package/staging/stars/stars.d.ts +28 -17
  249. package/staging/wireframe/wireframe-input.d.ts +65 -0
  250. package/staging/wireframe/wireframe.d.ts +28 -0
  251. package/utils/README.md +3 -0
  252. package/utils/content/content.d.ts +8 -0
  253. package/utils/index.d.ts +1 -0
  254. package/web-types.json +1 -0
  255. package/abstractions/catmull-rom-line/catmull-rom-line.d.ts +0 -25
  256. package/abstractions/cubic-bezier-line/cubic-bezier-line.d.ts +0 -25
  257. package/abstractions/gizmo-helper/gizmo-helper.d.ts +0 -34
  258. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.d.ts +0 -22
  259. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.d.ts +0 -30
  260. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.d.ts +0 -32
  261. package/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.d.ts +0 -14
  262. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.d.ts +0 -47
  263. package/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.d.ts +0 -40
  264. package/abstractions/line/line-input.d.ts +0 -42
  265. package/abstractions/line/line.d.ts +0 -35
  266. package/abstractions/quadratic-bezier-line/quadratic-bezier-line.d.ts +0 -23
  267. package/esm2022/abstractions/catmull-rom-line/catmull-rom-line.mjs +0 -131
  268. package/esm2022/abstractions/cubic-bezier-line/cubic-bezier-line.mjs +0 -113
  269. package/esm2022/abstractions/gizmo-helper/gizmo-helper.mjs +0 -210
  270. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/constants.mjs +0 -31
  271. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-edge.mjs +0 -95
  272. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-face.mjs +0 -155
  273. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube-inputs.mjs +0 -62
  274. package/esm2022/abstractions/gizmo-helper/gizmo-viewcube/gizmo-viewcube.mjs +0 -80
  275. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport-axis.mjs +0 -206
  276. package/esm2022/abstractions/gizmo-helper/gizmo-viewport/gizmo-viewport.mjs +0 -273
  277. package/esm2022/abstractions/line/line-input.mjs +0 -113
  278. package/esm2022/abstractions/line/line.mjs +0 -165
  279. package/esm2022/abstractions/quadratic-bezier-line/quadratic-bezier-line.mjs +0 -128
  280. package/esm2022/performance/adaptive/adaptive-dpr.mjs +0 -46
  281. package/esm2022/performance/adaptive/adaptive-events.mjs +0 -31
  282. package/esm2022/performance/angular-three-soba-performance.mjs +0 -5
  283. package/esm2022/performance/detailed/detailed.mjs +0 -61
  284. package/esm2022/performance/index.mjs +0 -7
  285. package/esm2022/performance/instances/instance.mjs +0 -48
  286. package/esm2022/performance/instances/instances.mjs +0 -189
  287. package/esm2022/performance/instances/position-mesh.mjs +0 -52
  288. package/esm2022/performance/stats/stats.mjs +0 -79
  289. package/esm2022/shaders/caustics-material/caustics-material.mjs +0 -128
  290. package/esm2022/shaders/caustics-material/caustics-projection-material.mjs +0 -33
  291. package/esm2022/staging/caustics/caustisc.mjs +0 -384
  292. package/esm2022/staging/spot-light/spot-light-shadow-mesh-input.mjs +0 -57
  293. package/esm2022/staging/spot-light/spot-light-shadow-mesh.mjs +0 -256
  294. package/fesm2022/angular-three-soba-performance.mjs +0 -487
  295. package/fesm2022/angular-three-soba-performance.mjs.map +0 -1
  296. package/performance/README.md +0 -3
  297. package/performance/adaptive/adaptive-dpr.d.ts +0 -8
  298. package/performance/detailed/detailed.d.ts +0 -20
  299. package/performance/index.d.ts +0 -6
  300. package/performance/instances/instance.d.ts +0 -9
  301. package/performance/instances/instances.d.ts +0 -35
  302. package/performance/stats/stats.d.ts +0 -18
  303. package/plugin/generators.json +0 -19
  304. package/plugin/libs/plugin/README.md +0 -11
  305. package/plugin/package.json +0 -9
  306. package/plugin/src/generators/init/compat.d.ts +0 -2
  307. package/plugin/src/generators/init/compat.js +0 -6
  308. package/plugin/src/generators/init/compat.js.map +0 -1
  309. package/plugin/src/generators/init/init.d.ts +0 -4
  310. package/plugin/src/generators/init/init.js +0 -22
  311. package/plugin/src/generators/init/init.js.map +0 -1
  312. package/plugin/src/generators/init/schema.json +0 -6
  313. package/plugin/src/index.d.ts +0 -1
  314. package/plugin/src/index.js +0 -6
  315. package/plugin/src/index.js.map +0 -1
  316. package/staging/caustics/caustisc.d.ts +0 -70
  317. package/staging/spot-light/spot-light-shadow-mesh-input.d.ts +0 -29
  318. package/staging/spot-light/spot-light-shadow-mesh.d.ts +0 -38
  319. /package/{abstractions → gizmos}/gizmo-helper/gizmo-viewcube/constants.d.ts +0 -0
  320. /package/shaders/{caustics-material → caustics}/caustics-material.d.ts +0 -0
  321. /package/shaders/{caustics-material → caustics}/caustics-projection-material.d.ts +0 -0
@@ -0,0 +1,956 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, effect, untracked, Directive, Input, ElementRef, forwardRef, inject, NgZone, Injector, Component, CUSTOM_ELEMENTS_SCHEMA, computed, TemplateRef, ContentChild } from '@angular/core';
3
+ import { injectNgtStore, extend, createInjectionToken, injectNgtRef, signalStore, checkUpdate, injectBeforeRender, is, NgtArgs } from 'angular-three';
4
+ import { NgTemplateOutlet, NgIf } from '@angular/common';
5
+ import { NgtsSobaContent } from 'angular-three-soba/utils';
6
+ import * as THREE from 'three';
7
+ import { InstancedMesh, InstancedBufferAttribute, Points, BufferGeometry, BufferAttribute } from 'three';
8
+ import { Line2, LineMaterial, LineSegmentsGeometry } from 'three-stdlib';
9
+
10
+ class NgtsAdaptiveDpr {
11
+ set _pixelated(pixelated) {
12
+ this.pixelated.set(pixelated);
13
+ }
14
+ constructor() {
15
+ this.pixelated = signal(false);
16
+ this.store = injectNgtStore();
17
+ this.current = this.store.select('performance', 'current');
18
+ this.active = this.store.get('internal', 'active');
19
+ this.setDpr = this.store.get('setDpr');
20
+ this.initialDpr = this.store.get('viewport', 'initialDpr');
21
+ this.domElement = this.store.get('gl', 'domElement');
22
+ effect((onCleanup) => {
23
+ onCleanup(() => {
24
+ if (this.active) {
25
+ this.setDpr(this.initialDpr);
26
+ }
27
+ if (this.pixelated() && this.domElement) {
28
+ this.domElement.style.imageRendering = 'auto';
29
+ }
30
+ });
31
+ });
32
+ effect(() => {
33
+ const current = this.current();
34
+ this.setDpr(current * this.initialDpr);
35
+ if (untracked(this.pixelated) && this.domElement) {
36
+ this.domElement.style.imageRendering = current === 1 ? 'auto' : 'pixelated';
37
+ }
38
+ });
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveDpr, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
41
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsAdaptiveDpr, isStandalone: true, selector: "ngts-adaptive-dpr", inputs: { _pixelated: ["pixelated", "_pixelated"] }, ngImport: i0 }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveDpr, decorators: [{
44
+ type: Directive,
45
+ args: [{ selector: 'ngts-adaptive-dpr', standalone: true }]
46
+ }], ctorParameters: function () { return []; }, propDecorators: { _pixelated: [{
47
+ type: Input,
48
+ args: [{ alias: 'pixelated' }]
49
+ }] } });
50
+
51
+ class NgtsAdaptiveEvents {
52
+ constructor() {
53
+ this.store = injectNgtStore();
54
+ this.setEvents = this.store.get('setEvents');
55
+ this.current = this.store.select('performance', 'current');
56
+ effect((onCleanup) => {
57
+ const enabled = this.store.get('events', 'enabled');
58
+ onCleanup(() => {
59
+ this.setEvents({ enabled });
60
+ });
61
+ });
62
+ effect(() => {
63
+ const current = this.current();
64
+ this.setEvents({ enabled: current === 1 });
65
+ });
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
68
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsAdaptiveEvents, isStandalone: true, selector: "ngts-adaptive-events", ngImport: i0 }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsAdaptiveEvents, decorators: [{
71
+ type: Directive,
72
+ args: [{ selector: 'ngts-adaptive-events', standalone: true }]
73
+ }], ctorParameters: function () { return []; } });
74
+
75
+ const _instanceLocalMatrix = /*@__PURE__*/ new THREE.Matrix4();
76
+ const _instanceWorldMatrix = /*@__PURE__*/ new THREE.Matrix4();
77
+ const _instanceIntersects = [];
78
+ const _mesh = /*@__PURE__*/ new THREE.Mesh();
79
+ class PositionMesh extends THREE.Group {
80
+ constructor() {
81
+ super();
82
+ this.color = new THREE.Color('white');
83
+ this.instance = new ElementRef(undefined);
84
+ this.instanceKey = new ElementRef(undefined);
85
+ }
86
+ // This will allow the virtual instance have bounds
87
+ get geometry() {
88
+ return this.instance.nativeElement?.geometry;
89
+ }
90
+ // And this will allow the virtual instance to receive events
91
+ raycast(raycaster, intersects) {
92
+ const parent = this.instance.nativeElement;
93
+ if (!parent)
94
+ return;
95
+ if (!parent.geometry || !parent.material)
96
+ return;
97
+ _mesh.geometry = parent.geometry;
98
+ const matrixWorld = parent.matrixWorld;
99
+ const instanceId = parent.userData['instances'].indexOf(this.instanceKey);
100
+ // If the instance wasn't found or exceeds the parents draw range, bail out
101
+ if (instanceId === -1 || instanceId > parent.count)
102
+ return;
103
+ // calculate the world matrix for each instance
104
+ parent.getMatrixAt(instanceId, _instanceLocalMatrix);
105
+ _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);
106
+ // the mesh represents this single instance
107
+ _mesh.matrixWorld = _instanceWorldMatrix;
108
+ // raycast side according to instance material
109
+ if (parent.material instanceof THREE.Material)
110
+ _mesh.material.side = parent.material.side;
111
+ else
112
+ _mesh.material.side = parent.material[0].side;
113
+ _mesh.raycast(raycaster, _instanceIntersects);
114
+ // process the result of raycast
115
+ for (let i = 0, l = _instanceIntersects.length; i < l; i++) {
116
+ const intersect = _instanceIntersects[i];
117
+ intersect.instanceId = instanceId;
118
+ intersect.object = this;
119
+ intersects.push(intersect);
120
+ }
121
+ _instanceIntersects.length = 0;
122
+ }
123
+ }
124
+
125
+ extend({ PositionMesh, InstancedMesh, InstancedBufferAttribute });
126
+ const parentMatrix = /*@__PURE__*/ new THREE.Matrix4();
127
+ const instanceMatrix = /*@__PURE__*/ new THREE.Matrix4();
128
+ const tempMatrix = /*@__PURE__*/ new THREE.Matrix4();
129
+ const translation = /*@__PURE__*/ new THREE.Vector3();
130
+ const rotation = /*@__PURE__*/ new THREE.Quaternion();
131
+ const scale = /*@__PURE__*/ new THREE.Vector3();
132
+ const [injectNgtsInstancesApi, provideNgtsInstancesApi] = createInjectionToken((instances) => instances.api, { isRoot: false, deps: [forwardRef(() => NgtsInstances)] });
133
+ class NgtsInstance {
134
+ constructor() {
135
+ this.instanceRef = injectNgtRef();
136
+ this.zone = inject(NgZone);
137
+ this.injector = inject(Injector);
138
+ this.instancesApi = injectNgtsInstancesApi();
139
+ }
140
+ ngOnInit() {
141
+ effect((onCleanup) => {
142
+ const cleanup = this.zone.runOutsideAngular(() => this.instancesApi.subscribe(this.instanceRef));
143
+ onCleanup(cleanup);
144
+ }, { injector: this.injector });
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstance, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsInstance, isStandalone: true, selector: "ngts-instance", inputs: { instanceRef: "instanceRef" }, ngImport: i0, template: `
148
+ <ngt-position-mesh
149
+ [ref]="instanceRef"
150
+ [instance]="instancesApi.getParent()"
151
+ [instanceKey]="instanceRef"
152
+ ngtCompound
153
+ >
154
+ <ng-content />
155
+ </ngt-position-mesh>
156
+ `, isInline: true }); }
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstance, decorators: [{
159
+ type: Component,
160
+ args: [{
161
+ selector: 'ngts-instance',
162
+ standalone: true,
163
+ template: `
164
+ <ngt-position-mesh
165
+ [ref]="instanceRef"
166
+ [instance]="instancesApi.getParent()"
167
+ [instanceKey]="instanceRef"
168
+ ngtCompound
169
+ >
170
+ <ng-content />
171
+ </ngt-position-mesh>
172
+ `,
173
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
174
+ }]
175
+ }], propDecorators: { instanceRef: [{
176
+ type: Input
177
+ }] } });
178
+ class NgtsInstances {
179
+ set _range(range) {
180
+ this.inputs.set({ range });
181
+ }
182
+ set _limit(limit) {
183
+ this.inputs.set({ limit });
184
+ }
185
+ set _frames(frames) {
186
+ this.inputs.set({ frames });
187
+ }
188
+ constructor() {
189
+ this.DynamicDrawUsage = THREE.DynamicDrawUsage;
190
+ this.nullRaycast = () => null;
191
+ this.inputs = signalStore({ limit: 1000, frames: Infinity });
192
+ this.instancesRef = injectNgtRef();
193
+ this.limit = this.inputs.select('limit');
194
+ this.positionMeshes = signal([]);
195
+ this.meshes = this.positionMeshes.asReadonly();
196
+ this.buffers = computed(() => {
197
+ const limit = this.limit();
198
+ const matrices = new Float32Array(limit * 16);
199
+ for (let i = 0; i < limit; i++) {
200
+ tempMatrix.identity().toArray(matrices, i * 16);
201
+ }
202
+ const colors = new Float32Array([...Array.from({ length: limit * 3 }, () => 1)]);
203
+ return { matrices, colors };
204
+ });
205
+ this.api = {
206
+ getParent: () => this.instancesRef,
207
+ subscribe: (meshRef) => {
208
+ untracked(() => {
209
+ this.positionMeshes.update((s) => [...s, meshRef]);
210
+ });
211
+ return () => {
212
+ untracked(() => {
213
+ this.positionMeshes.update((s) => s.filter((positionMesh) => positionMesh !== meshRef));
214
+ });
215
+ };
216
+ },
217
+ };
218
+ this.checkUpdate();
219
+ this.beforeRender();
220
+ }
221
+ checkUpdate() {
222
+ effect(() => {
223
+ const instancedMesh = this.instancesRef.nativeElement;
224
+ if (!instancedMesh)
225
+ return;
226
+ // NOTE: not sure why matrices ends up a different instance than array
227
+ // we reassign it here
228
+ instancedMesh.instanceMatrix.array = untracked(this.buffers).matrices;
229
+ checkUpdate(instancedMesh.instanceMatrix);
230
+ });
231
+ }
232
+ beforeRender() {
233
+ let count = 0;
234
+ let updateRange = 0;
235
+ injectBeforeRender(() => {
236
+ const [{ frames, limit, range }, instancedMesh, instances, { matrices, colors }] = [
237
+ this.inputs.get(),
238
+ this.instancesRef.nativeElement,
239
+ this.meshes(),
240
+ this.buffers(),
241
+ ];
242
+ if ((frames === Infinity || count < frames) && instancedMesh) {
243
+ instancedMesh.updateMatrix();
244
+ instancedMesh.updateMatrixWorld();
245
+ parentMatrix.copy(instancedMesh.matrixWorld).invert();
246
+ updateRange = Math.min(limit, range !== undefined ? range : limit, instances.length);
247
+ instancedMesh.count = updateRange;
248
+ instancedMesh.instanceMatrix.updateRange.count = updateRange * 16;
249
+ if (instancedMesh.instanceColor) {
250
+ instancedMesh.instanceColor.updateRange.count = updateRange * 3;
251
+ }
252
+ for (let i = 0; i < instances.length; i++) {
253
+ const instanceRef = instances[i];
254
+ const instance = is.ref(instanceRef) ? instanceRef.nativeElement : instanceRef;
255
+ // Multiply the inverse of the InstancedMesh world matrix or else
256
+ // Instances will be double-transformed if <Instances> isn't at identity
257
+ instance.matrixWorld.decompose(translation, rotation, scale);
258
+ instanceMatrix.compose(translation, rotation, scale).premultiply(parentMatrix);
259
+ instanceMatrix.toArray(matrices, i * 16);
260
+ checkUpdate(instancedMesh.instanceMatrix);
261
+ instance.color.toArray(colors, i * 3);
262
+ checkUpdate(instancedMesh.instanceColor);
263
+ }
264
+ count++;
265
+ }
266
+ });
267
+ }
268
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
269
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsInstances, isStandalone: true, selector: "ngts-instances", inputs: { instancesRef: "instancesRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _frames: ["frames", "_frames"] }, providers: [provideNgtsInstancesApi()], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
270
+ <ngt-instanced-mesh
271
+ [userData]="{ instances: meshes() }"
272
+ [ref]="instancesRef"
273
+ [matrixAutoUpdate]="false"
274
+ [raycast]="nullRaycast"
275
+ ngtCompound
276
+ >
277
+ <ngt-instanced-buffer-attribute
278
+ *args="[buffers().matrices, 16]"
279
+ attach="instanceMatrix"
280
+ [usage]="DynamicDrawUsage"
281
+ />
282
+ <ngt-instanced-buffer-attribute
283
+ *args="[buffers().colors, 3]"
284
+ attach="instanceColor"
285
+ [usage]="DynamicDrawUsage"
286
+ />
287
+ <ng-container *ngTemplateOutlet="content" />
288
+ </ngt-instanced-mesh>
289
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
290
+ }
291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsInstances, decorators: [{
292
+ type: Component,
293
+ args: [{
294
+ selector: 'ngts-instances',
295
+ standalone: true,
296
+ template: `
297
+ <ngt-instanced-mesh
298
+ [userData]="{ instances: meshes() }"
299
+ [ref]="instancesRef"
300
+ [matrixAutoUpdate]="false"
301
+ [raycast]="nullRaycast"
302
+ ngtCompound
303
+ >
304
+ <ngt-instanced-buffer-attribute
305
+ *args="[buffers().matrices, 16]"
306
+ attach="instanceMatrix"
307
+ [usage]="DynamicDrawUsage"
308
+ />
309
+ <ngt-instanced-buffer-attribute
310
+ *args="[buffers().colors, 3]"
311
+ attach="instanceColor"
312
+ [usage]="DynamicDrawUsage"
313
+ />
314
+ <ng-container *ngTemplateOutlet="content" />
315
+ </ngt-instanced-mesh>
316
+ `,
317
+ imports: [NgtArgs, NgTemplateOutlet],
318
+ providers: [provideNgtsInstancesApi()],
319
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
320
+ }]
321
+ }], ctorParameters: function () { return []; }, propDecorators: { instancesRef: [{
322
+ type: Input
323
+ }], _range: [{
324
+ type: Input,
325
+ args: [{ alias: 'range' }]
326
+ }], _limit: [{
327
+ type: Input,
328
+ args: [{ alias: 'limit' }]
329
+ }], _frames: [{
330
+ type: Input,
331
+ args: [{ alias: 'frames' }]
332
+ }], content: [{
333
+ type: ContentChild,
334
+ args: [NgtsSobaContent, { static: true, read: TemplateRef }]
335
+ }] } });
336
+
337
+ class NgtsPointsInput {
338
+ constructor() {
339
+ this.inputs = signalStore({
340
+ stride: 3,
341
+ limit: 1000,
342
+ });
343
+ this.pointsRef = injectNgtRef();
344
+ this.limit = this.inputs.select('limit');
345
+ this.range = this.inputs.select('range');
346
+ this.positions = this.inputs.select('positions');
347
+ this.colors = this.inputs.select('colors');
348
+ this.colorsLength = computed(() => this.colors()?.length || 0);
349
+ this.sizes = this.inputs.select('sizes');
350
+ this.sizesLength = computed(() => this.sizes()?.length || 0);
351
+ this.stride = this.inputs.select('stride');
352
+ }
353
+ set _range(range) {
354
+ this.inputs.set({ range });
355
+ }
356
+ set _limit(limit) {
357
+ this.inputs.set({ limit });
358
+ }
359
+ set _positions(positions) {
360
+ this.inputs.set({ positions });
361
+ }
362
+ set _colors(colors) {
363
+ this.inputs.set({ colors });
364
+ }
365
+ set _sizes(sizes) {
366
+ this.inputs.set({ sizes });
367
+ }
368
+ set _stride(stride) {
369
+ this.inputs.set({ stride });
370
+ }
371
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
372
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPointsInput, inputs: { pointsRef: "pointsRef", _range: ["range", "_range"], _limit: ["limit", "_limit"], _positions: ["positions", "_positions"], _colors: ["colors", "_colors"], _sizes: ["sizes", "_sizes"], _stride: ["stride", "_stride"] }, ngImport: i0 }); }
373
+ }
374
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInput, decorators: [{
375
+ type: Directive
376
+ }], propDecorators: { pointsRef: [{
377
+ type: Input
378
+ }], _range: [{
379
+ type: Input,
380
+ args: [{ alias: 'range' }]
381
+ }], _limit: [{
382
+ type: Input,
383
+ args: [{ alias: 'limit' }]
384
+ }], _positions: [{
385
+ type: Input,
386
+ args: [{ alias: 'positions' }]
387
+ }], _colors: [{
388
+ type: Input,
389
+ args: [{ alias: 'colors' }]
390
+ }], _sizes: [{
391
+ type: Input,
392
+ args: [{ alias: 'sizes' }]
393
+ }], _stride: [{
394
+ type: Input,
395
+ args: [{ alias: 'stride' }]
396
+ }] } });
397
+
398
+ const _inverseMatrix = /*@__PURE__*/ new THREE.Matrix4();
399
+ const _ray = /*@__PURE__*/ new THREE.Ray();
400
+ const _sphere = /*@__PURE__*/ new THREE.Sphere();
401
+ const _position = /*@__PURE__*/ new THREE.Vector3();
402
+ class PositionPoint extends THREE.Group {
403
+ constructor() {
404
+ super();
405
+ this.size = 0;
406
+ this.color = new THREE.Color('white');
407
+ this.instance = new ElementRef(undefined);
408
+ this.instanceKey = new ElementRef(undefined);
409
+ }
410
+ // This will allow the virtual instance have bounds
411
+ get geometry() {
412
+ return this.instance.nativeElement?.geometry;
413
+ }
414
+ raycast(raycaster, intersects) {
415
+ const parent = this.instance.nativeElement;
416
+ if (!parent || !parent.geometry)
417
+ return;
418
+ const instanceId = parent.userData['instances'].indexOf(this.instanceKey);
419
+ // If the instance wasn't found or exceeds the parents draw range, bail out
420
+ if (instanceId === -1 || instanceId > parent.geometry.drawRange.count)
421
+ return;
422
+ const threshold = raycaster.params.Points?.threshold ?? 1;
423
+ _sphere.set(this.getWorldPosition(_position), threshold);
424
+ if (raycaster.ray.intersectsSphere(_sphere) === false)
425
+ return;
426
+ _inverseMatrix.copy(parent.matrixWorld).invert();
427
+ _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);
428
+ const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);
429
+ const localThresholdSq = localThreshold * localThreshold;
430
+ const rayPointDistanceSq = _ray.distanceSqToPoint(this.position);
431
+ if (rayPointDistanceSq < localThresholdSq) {
432
+ const intersectPoint = new THREE.Vector3();
433
+ _ray.closestPointToPoint(this.position, intersectPoint);
434
+ intersectPoint.applyMatrix4(this.matrixWorld);
435
+ const distance = raycaster.ray.origin.distanceTo(intersectPoint);
436
+ if (distance < raycaster.near || distance > raycaster.far)
437
+ return;
438
+ intersects.push({
439
+ distance: distance,
440
+ distanceToRay: Math.sqrt(rayPointDistanceSq),
441
+ point: intersectPoint,
442
+ index: instanceId,
443
+ face: null,
444
+ object: this,
445
+ });
446
+ }
447
+ }
448
+ }
449
+
450
+ extend({ Points, BufferGeometry, BufferAttribute, PositionPoint });
451
+ const [injectNgtsPointsInstanceApi, provideNgtsPointsInstancesApi] = createInjectionToken(function pointsInstancesApi(instances) {
452
+ return instances.api;
453
+ }, { isRoot: false, deps: [forwardRef(() => NgtsPointsInstances)] });
454
+ class NgtsPointsInstances {
455
+ constructor() {
456
+ this.nullRaycast = () => null;
457
+ this.DynamicDrawUsage = THREE.DynamicDrawUsage;
458
+ this.pointsInput = inject(NgtsPointsInput);
459
+ this.positionPoints = signal([]);
460
+ this.parentMatrix = new THREE.Matrix4();
461
+ this.position = new THREE.Vector3();
462
+ this.points = this.positionPoints.asReadonly();
463
+ this.positions = computed(() => new Float32Array(this.pointsInput.limit() * 3));
464
+ this.colors = computed(() => Float32Array.from({ length: this.pointsInput.limit() * 3 }, () => 1));
465
+ this.sizes = computed(() => Float32Array.from({ length: this.pointsInput.limit() }, () => 1));
466
+ this.injector = inject(Injector);
467
+ this.api = {
468
+ getParent: () => this.pointsInput.pointsRef,
469
+ subscribe: (pointRef) => {
470
+ untracked(() => {
471
+ this.positionPoints.update((s) => [...s, pointRef]);
472
+ });
473
+ return () => {
474
+ untracked(() => {
475
+ this.positionPoints.update((s) => s.filter((positionPoint) => positionPoint !== pointRef));
476
+ });
477
+ };
478
+ },
479
+ };
480
+ this.checkUpdatePositionAttribute();
481
+ this.beforeRender();
482
+ }
483
+ checkUpdatePositionAttribute() {
484
+ effect(() => {
485
+ const points = this.pointsInput.pointsRef.nativeElement;
486
+ if (!points)
487
+ return;
488
+ checkUpdate(points.geometry.attributes['position']);
489
+ });
490
+ }
491
+ beforeRender() {
492
+ injectBeforeRender(() => {
493
+ const points = this.pointsInput.pointsRef.nativeElement;
494
+ if (!points)
495
+ return;
496
+ const [limit, range, positionPoints, positions, colors, sizes] = [
497
+ this.pointsInput.limit(),
498
+ this.pointsInput.range(),
499
+ this.positionPoints(),
500
+ this.positions(),
501
+ this.colors(),
502
+ this.sizes(),
503
+ ];
504
+ points.updateMatrix();
505
+ points.updateMatrixWorld();
506
+ this.parentMatrix.copy(points.matrixWorld).invert();
507
+ points.geometry.drawRange.count = Math.min(limit, range !== undefined ? range : limit, positionPoints.length);
508
+ for (let i = 0; i < positionPoints.length; i++) {
509
+ const positionPointRef = positionPoints[i];
510
+ const positionPoint = is.ref(positionPointRef) ? positionPointRef.nativeElement : positionPointRef;
511
+ if (!positionPoint)
512
+ continue;
513
+ positionPoint.getWorldPosition(this.position).applyMatrix4(this.parentMatrix);
514
+ this.position.toArray(positions, i * 3);
515
+ checkUpdate(points.geometry.attributes['position']);
516
+ positionPoint.matrixWorldNeedsUpdate = true;
517
+ positionPoint.color.toArray(colors, i * 3);
518
+ checkUpdate(points.geometry.attributes['color']);
519
+ sizes.set([positionPoint.size], i);
520
+ checkUpdate(points.geometry.attributes['size']);
521
+ }
522
+ });
523
+ }
524
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInstances, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
525
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPointsInstances, isStandalone: true, selector: "ngts-points-instances", providers: [provideNgtsPointsInstancesApi()], ngImport: i0, template: `
526
+ <ngt-points
527
+ [ref]="pointsInput.pointsRef"
528
+ [userData]="{ instances: points() }"
529
+ [matrixAutoUpdate]="false"
530
+ [raycast]="nullRaycast"
531
+ ngtCompound
532
+ >
533
+ <ngt-buffer-geometry>
534
+ <ngt-buffer-attribute
535
+ attach="attributes.position"
536
+ [count]="positions().length / 3"
537
+ [array]="positions()"
538
+ [itemSize]="3"
539
+ [usage]="DynamicDrawUsage"
540
+ />
541
+ <ngt-buffer-attribute
542
+ attach="attributes.color"
543
+ [count]="colors().length / 3"
544
+ [array]="colors()"
545
+ [itemSize]="3"
546
+ [usage]="DynamicDrawUsage"
547
+ />
548
+ <ngt-buffer-attribute
549
+ attach="attributes.size"
550
+ [count]="sizes().length"
551
+ [array]="sizes()"
552
+ [itemSize]="1"
553
+ [usage]="DynamicDrawUsage"
554
+ />
555
+ </ngt-buffer-geometry>
556
+ <ng-content />
557
+ </ngt-points>
558
+ `, isInline: true }); }
559
+ }
560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsInstances, decorators: [{
561
+ type: Component,
562
+ args: [{
563
+ selector: 'ngts-points-instances',
564
+ standalone: true,
565
+ template: `
566
+ <ngt-points
567
+ [ref]="pointsInput.pointsRef"
568
+ [userData]="{ instances: points() }"
569
+ [matrixAutoUpdate]="false"
570
+ [raycast]="nullRaycast"
571
+ ngtCompound
572
+ >
573
+ <ngt-buffer-geometry>
574
+ <ngt-buffer-attribute
575
+ attach="attributes.position"
576
+ [count]="positions().length / 3"
577
+ [array]="positions()"
578
+ [itemSize]="3"
579
+ [usage]="DynamicDrawUsage"
580
+ />
581
+ <ngt-buffer-attribute
582
+ attach="attributes.color"
583
+ [count]="colors().length / 3"
584
+ [array]="colors()"
585
+ [itemSize]="3"
586
+ [usage]="DynamicDrawUsage"
587
+ />
588
+ <ngt-buffer-attribute
589
+ attach="attributes.size"
590
+ [count]="sizes().length"
591
+ [array]="sizes()"
592
+ [itemSize]="1"
593
+ [usage]="DynamicDrawUsage"
594
+ />
595
+ </ngt-buffer-geometry>
596
+ <ng-content />
597
+ </ngt-points>
598
+ `,
599
+ providers: [provideNgtsPointsInstancesApi()],
600
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
601
+ }]
602
+ }], ctorParameters: function () { return []; } });
603
+ class NgtsPoint {
604
+ constructor() {
605
+ this.pointRef = injectNgtRef();
606
+ this.zone = inject(NgZone);
607
+ this.injector = inject(Injector);
608
+ this.pointsInstancesApi = injectNgtsPointsInstanceApi();
609
+ }
610
+ ngOnInit() {
611
+ effect((onCleanup) => {
612
+ const cleanup = this.zone.runOutsideAngular(() => this.pointsInstancesApi.subscribe(this.pointRef));
613
+ onCleanup(cleanup);
614
+ }, { injector: this.injector });
615
+ }
616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPoint, isStandalone: true, selector: "ngts-point", inputs: { pointRef: "pointRef" }, ngImport: i0, template: `
618
+ <ngt-position-point
619
+ [instance]="pointsInstancesApi.getParent()"
620
+ [ref]="pointRef"
621
+ [instanceKey]="pointRef"
622
+ ngtCompound
623
+ >
624
+ <ng-content />
625
+ </ngt-position-point>
626
+ `, isInline: true }); }
627
+ }
628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoint, decorators: [{
629
+ type: Component,
630
+ args: [{
631
+ selector: 'ngts-point',
632
+ standalone: true,
633
+ template: `
634
+ <ngt-position-point
635
+ [instance]="pointsInstancesApi.getParent()"
636
+ [ref]="pointRef"
637
+ [instanceKey]="pointRef"
638
+ ngtCompound
639
+ >
640
+ <ng-content />
641
+ </ngt-position-point>
642
+ `,
643
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
644
+ }]
645
+ }], propDecorators: { pointRef: [{
646
+ type: Input
647
+ }] } });
648
+ class NgtsPointsBuffers {
649
+ constructor() {
650
+ this.DynamicDrawUsage = THREE.DynamicDrawUsage;
651
+ this.pointsInput = inject(NgtsPointsInput);
652
+ this.store = injectNgtStore();
653
+ injectBeforeRender(() => {
654
+ const points = this.pointsInput.pointsRef.nativeElement;
655
+ if (!points)
656
+ return;
657
+ const [sizes, colors] = [this.pointsInput.sizes(), this.pointsInput.colors()];
658
+ const attr = points.geometry.attributes;
659
+ checkUpdate(attr['position']);
660
+ if (colors)
661
+ checkUpdate(attr['color']);
662
+ if (sizes)
663
+ checkUpdate(attr['size']);
664
+ });
665
+ }
666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsBuffers, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
667
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPointsBuffers, isStandalone: true, selector: "ngts-points-buffers", ngImport: i0, template: `
668
+ <ngt-points [ref]="pointsInput.pointsRef" ngtCompound>
669
+ <ngt-buffer-geometry>
670
+ <ngt-buffer-attribute
671
+ attach="attributes.position"
672
+ [count]="pointsInput.positions().length / pointsInput.stride()"
673
+ [array]="pointsInput.positions()"
674
+ [itemSize]="pointsInput.stride()"
675
+ [usage]="DynamicDrawUsage"
676
+ />
677
+ <ngt-buffer-attribute
678
+ attach="attributes.color"
679
+ [count]="pointsInput.colorsLength() / pointsInput.stride()"
680
+ [array]="pointsInput.colors()"
681
+ [itemSize]="pointsInput.stride()"
682
+ [usage]="DynamicDrawUsage"
683
+ />
684
+ <ngt-buffer-attribute
685
+ attach="attributes.size"
686
+ [count]="pointsInput.sizesLength() / pointsInput.stride()"
687
+ [array]="pointsInput.sizes()"
688
+ [itemSize]="1"
689
+ [usage]="DynamicDrawUsage"
690
+ />
691
+ </ngt-buffer-geometry>
692
+ <ng-content />
693
+ </ngt-points>
694
+ `, isInline: true }); }
695
+ }
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPointsBuffers, decorators: [{
697
+ type: Component,
698
+ args: [{
699
+ selector: 'ngts-points-buffers',
700
+ standalone: true,
701
+ template: `
702
+ <ngt-points [ref]="pointsInput.pointsRef" ngtCompound>
703
+ <ngt-buffer-geometry>
704
+ <ngt-buffer-attribute
705
+ attach="attributes.position"
706
+ [count]="pointsInput.positions().length / pointsInput.stride()"
707
+ [array]="pointsInput.positions()"
708
+ [itemSize]="pointsInput.stride()"
709
+ [usage]="DynamicDrawUsage"
710
+ />
711
+ <ngt-buffer-attribute
712
+ attach="attributes.color"
713
+ [count]="pointsInput.colorsLength() / pointsInput.stride()"
714
+ [array]="pointsInput.colors()"
715
+ [itemSize]="pointsInput.stride()"
716
+ [usage]="DynamicDrawUsage"
717
+ />
718
+ <ngt-buffer-attribute
719
+ attach="attributes.size"
720
+ [count]="pointsInput.sizesLength() / pointsInput.stride()"
721
+ [array]="pointsInput.sizes()"
722
+ [itemSize]="1"
723
+ [usage]="DynamicDrawUsage"
724
+ />
725
+ </ngt-buffer-geometry>
726
+ <ng-content />
727
+ </ngt-points>
728
+ `,
729
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
730
+ }]
731
+ }], ctorParameters: function () { return []; } });
732
+ class NgtsPoints extends NgtsPointsInput {
733
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoints, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
734
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsPoints, isStandalone: true, selector: "ngts-points", providers: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }], queries: [{ propertyName: "content", first: true, predicate: NgtsSobaContent, descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: `
735
+ <ngts-points-buffers *ngIf="positions()">
736
+ <ng-container *ngTemplateOutlet="content" />
737
+ </ngts-points-buffers>
738
+ <ngts-points-instances *ngIf="!positions()" #pointsInstances>
739
+ <!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->
740
+ <ng-container *ngTemplateOutlet="content; injector: pointsInstances.injector" />
741
+ </ngts-points-instances>
742
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgtsPointsBuffers, selector: "ngts-points-buffers" }, { kind: "component", type: NgtsPointsInstances, selector: "ngts-points-instances" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
743
+ }
744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsPoints, decorators: [{
745
+ type: Component,
746
+ args: [{
747
+ selector: 'ngts-points',
748
+ standalone: true,
749
+ template: `
750
+ <ngts-points-buffers *ngIf="positions()">
751
+ <ng-container *ngTemplateOutlet="content" />
752
+ </ngts-points-buffers>
753
+ <ngts-points-instances *ngIf="!positions()" #pointsInstances>
754
+ <!-- NOTE: passing in the injector to templateOutlet allow the consumers to abstract ngts-point -->
755
+ <ng-container *ngTemplateOutlet="content; injector: pointsInstances.injector" />
756
+ </ngts-points-instances>
757
+ `,
758
+ imports: [NgIf, NgtsPointsBuffers, NgtsPointsInstances, NgTemplateOutlet],
759
+ providers: [{ provide: NgtsPointsInput, useExisting: NgtsPoints }],
760
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
761
+ }]
762
+ }], propDecorators: { content: [{
763
+ type: ContentChild,
764
+ args: [NgtsSobaContent, { static: true, read: TemplateRef }]
765
+ }] } });
766
+
767
+ class SegmentObject {
768
+ constructor() {
769
+ this.color = new THREE.Color('white');
770
+ this.start = new THREE.Vector3(0, 0, 0);
771
+ this.end = new THREE.Vector3(0, 0, 0);
772
+ }
773
+ }
774
+
775
+ const normPos = (pos) => pos instanceof THREE.Vector3
776
+ ? pos
777
+ : new THREE.Vector3(...(typeof pos === 'number' ? [pos, pos, pos] : pos));
778
+ extend({ SegmentObject });
779
+ const [injectNgtsSegmentsApi, provideNgtsSegmentsApi] = createInjectionToken((segments) => segments.api, { isRoot: false, deps: [forwardRef(() => NgtsSegments)] });
780
+ class NgtsSegment {
781
+ constructor() {
782
+ this.inputs = signalStore({});
783
+ this.segmentRef = injectNgtRef();
784
+ this.segmentsApi = injectNgtsSegmentsApi();
785
+ this.injector = inject(Injector);
786
+ this.zone = inject(NgZone);
787
+ this.start = this.inputs.select('start');
788
+ this.end = this.inputs.select('end');
789
+ this.normalizedStart = computed(() => normPos(this.start()));
790
+ this.normalizedEnd = computed(() => normPos(this.end()));
791
+ this.color = this.inputs.select('color');
792
+ }
793
+ set _start(start) {
794
+ this.inputs.set({ start });
795
+ }
796
+ set _end(end) {
797
+ this.inputs.set({ end });
798
+ }
799
+ set _color(color) {
800
+ this.inputs.set({ color });
801
+ }
802
+ ngOnInit() {
803
+ effect((onCleanup) => {
804
+ const cleanup = this.zone.runOutsideAngular(() => {
805
+ const api = this.segmentsApi();
806
+ return api.subscribe(this.segmentRef);
807
+ });
808
+ onCleanup(cleanup);
809
+ }, { injector: this.injector });
810
+ }
811
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
812
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegment, isStandalone: true, selector: "ngts-segment", inputs: { segmentRef: "segmentRef", _start: ["start", "_start"], _end: ["end", "_end"], _color: ["color", "_color"] }, ngImport: i0, template: `
813
+ <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
814
+ `, isInline: true }); }
815
+ }
816
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegment, decorators: [{
817
+ type: Component,
818
+ args: [{
819
+ selector: 'ngts-segment',
820
+ standalone: true,
821
+ template: `
822
+ <ngt-segment-object [ref]="segmentRef" [color]="color()" [start]="normalizedStart()" [end]="normalizedEnd()" />
823
+ `,
824
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
825
+ }]
826
+ }], propDecorators: { segmentRef: [{
827
+ type: Input
828
+ }], _start: [{
829
+ type: Input,
830
+ args: [{ alias: 'start' }]
831
+ }], _end: [{
832
+ type: Input,
833
+ args: [{ alias: 'end' }]
834
+ }], _color: [{
835
+ type: Input,
836
+ args: [{ alias: 'color' }]
837
+ }] } });
838
+ class NgtsSegments {
839
+ set _limit(limit) {
840
+ this.inputs.set({ limit });
841
+ }
842
+ set _lineWidth(lineWidth) {
843
+ this.inputs.set({ lineWidth });
844
+ }
845
+ constructor() {
846
+ this.inputs = signalStore({ limit: 1000, lineWidth: 1 });
847
+ this.segmentsRef = injectNgtRef();
848
+ this.segments = signal([]);
849
+ this.limit = this.inputs.select('limit');
850
+ this.positions = computed(() => Array(this.limit() * 6).fill(0));
851
+ this.colors = computed(() => Array(this.limit() * 6).fill(0));
852
+ this.resolution = new THREE.Vector2(512, 512);
853
+ this.lineWidth = this.inputs.select('lineWidth');
854
+ this.line = new Line2();
855
+ this.material = new LineMaterial();
856
+ this.geometry = new LineSegmentsGeometry();
857
+ this.api = computed(() => ({
858
+ subscribe: (segmentRef) => {
859
+ untracked(() => {
860
+ this.segments.update((s) => [...s, segmentRef]);
861
+ });
862
+ return () => {
863
+ untracked(() => {
864
+ this.segments.update((s) => s.filter((segment) => segment !== segmentRef));
865
+ });
866
+ };
867
+ },
868
+ }));
869
+ this.beforeRender();
870
+ }
871
+ beforeRender() {
872
+ injectBeforeRender(() => {
873
+ const [segments, limit, positions, colors] = [
874
+ this.segments(),
875
+ this.limit(),
876
+ this.positions(),
877
+ this.colors(),
878
+ ];
879
+ for (let i = 0; i < limit; i++) {
880
+ const segmentRef = segments[i];
881
+ const segment = is.ref(segmentRef) ? segmentRef.nativeElement : segmentRef;
882
+ if (segment) {
883
+ positions[i * 6 + 0] = segment.start.x;
884
+ positions[i * 6 + 1] = segment.start.y;
885
+ positions[i * 6 + 2] = segment.start.z;
886
+ positions[i * 6 + 3] = segment.end.x;
887
+ positions[i * 6 + 4] = segment.end.y;
888
+ positions[i * 6 + 5] = segment.end.z;
889
+ colors[i * 6 + 0] = segment.color.r;
890
+ colors[i * 6 + 1] = segment.color.g;
891
+ colors[i * 6 + 2] = segment.color.b;
892
+ colors[i * 6 + 3] = segment.color.r;
893
+ colors[i * 6 + 4] = segment.color.g;
894
+ colors[i * 6 + 5] = segment.color.b;
895
+ }
896
+ }
897
+ this.geometry.setColors(colors);
898
+ this.geometry.setPositions(positions);
899
+ this.line.computeLineDistances();
900
+ });
901
+ }
902
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
903
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: NgtsSegments, isStandalone: true, selector: "ngts-segments", inputs: { segmentsRef: "segmentsRef", _limit: ["limit", "_limit"], _lineWidth: ["lineWidth", "_lineWidth"] }, providers: [provideNgtsSegmentsApi()], ngImport: i0, template: `
904
+ <ngt-primitive *args="[line]" [ref]="segmentsRef">
905
+ <ngt-primitive *args="[geometry]" attach="geometry" />
906
+ <ngt-primitive
907
+ *args="[material]"
908
+ attach="material"
909
+ ngtCompound
910
+ [vertexColors]="true"
911
+ [resolution]="resolution"
912
+ [linewidth]="lineWidth()"
913
+ />
914
+ <ng-content />
915
+ </ngt-primitive>
916
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
917
+ }
918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: NgtsSegments, decorators: [{
919
+ type: Component,
920
+ args: [{
921
+ selector: 'ngts-segments',
922
+ standalone: true,
923
+ template: `
924
+ <ngt-primitive *args="[line]" [ref]="segmentsRef">
925
+ <ngt-primitive *args="[geometry]" attach="geometry" />
926
+ <ngt-primitive
927
+ *args="[material]"
928
+ attach="material"
929
+ ngtCompound
930
+ [vertexColors]="true"
931
+ [resolution]="resolution"
932
+ [linewidth]="lineWidth()"
933
+ />
934
+ <ng-content />
935
+ </ngt-primitive>
936
+ `,
937
+ imports: [NgtArgs],
938
+ providers: [provideNgtsSegmentsApi()],
939
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
940
+ }]
941
+ }], ctorParameters: function () { return []; }, propDecorators: { segmentsRef: [{
942
+ type: Input
943
+ }], _limit: [{
944
+ type: Input,
945
+ args: [{ alias: 'limit' }]
946
+ }], _lineWidth: [{
947
+ type: Input,
948
+ args: [{ alias: 'lineWidth' }]
949
+ }] } });
950
+
951
+ /**
952
+ * Generated bundle index. Do not edit.
953
+ */
954
+
955
+ export { NgtsAdaptiveDpr, NgtsAdaptiveEvents, NgtsInstance, NgtsInstances, NgtsPoint, NgtsPoints, NgtsPointsBuffers, NgtsPointsInstances, NgtsSegment, NgtsSegments, PositionMesh, SegmentObject, injectNgtsInstancesApi, injectNgtsPointsInstanceApi, injectNgtsSegmentsApi, provideNgtsInstancesApi, provideNgtsPointsInstancesApi, provideNgtsSegmentsApi };
956
+ //# sourceMappingURL=angular-three-soba-performances.mjs.map