@3driseai/3drise-viewer 0.1.26 → 0.1.28

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 (476) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts +3 -0
  2. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  3. package/dist/animationsV2/ClipPlayer.js +67 -8
  4. package/dist/animationsV2/ClipsRuntime.d.ts +39 -0
  5. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  6. package/dist/animationsV2/ClipsRuntime.js +245 -14
  7. package/dist/animationsV2/appliers.d.ts +5 -0
  8. package/dist/animationsV2/appliers.d.ts.map +1 -1
  9. package/dist/animationsV2/appliers.js +25 -7
  10. package/dist/animationsV2/index.d.ts +1 -1
  11. package/dist/animationsV2/index.d.ts.map +1 -1
  12. package/dist/animationsV2/normalize.d.ts.map +1 -1
  13. package/dist/animationsV2/normalize.js +18 -7
  14. package/dist/animationsV2/sequenceUtils.d.ts +42 -1
  15. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  16. package/dist/animationsV2/sequenceUtils.js +103 -3
  17. package/dist/animationsV2/types.d.ts +20 -0
  18. package/dist/animationsV2/types.d.ts.map +1 -1
  19. package/dist/components/AdvancedGrid.d.ts +8 -2
  20. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  21. package/dist/components/AdvancedGrid.js +31 -14
  22. package/dist/components/AnimatedObject.d.ts.map +1 -1
  23. package/dist/components/AnimatedObject.js +7 -5
  24. package/dist/components/ApollonianGrid.d.ts +25 -0
  25. package/dist/components/ApollonianGrid.d.ts.map +1 -0
  26. package/dist/components/ApollonianGrid.js +80 -0
  27. package/dist/components/Bubbles.d.ts +7 -1
  28. package/dist/components/Bubbles.d.ts.map +1 -1
  29. package/dist/components/Bubbles.js +42 -22
  30. package/dist/components/ChladniGrid.d.ts +8 -4
  31. package/dist/components/ChladniGrid.d.ts.map +1 -1
  32. package/dist/components/ChladniGrid.js +31 -13
  33. package/dist/components/CircuitGrid.d.ts +8 -11
  34. package/dist/components/CircuitGrid.d.ts.map +1 -1
  35. package/dist/components/CircuitGrid.js +31 -13
  36. package/dist/components/CloudsGenerator.d.ts +1 -1
  37. package/dist/components/CloudsGenerator.js +1 -1
  38. package/dist/components/ConformalGrid.d.ts +25 -0
  39. package/dist/components/ConformalGrid.d.ts.map +1 -0
  40. package/dist/components/ConformalGrid.js +97 -0
  41. package/dist/components/ContourGrid.d.ts +8 -14
  42. package/dist/components/ContourGrid.d.ts.map +1 -1
  43. package/dist/components/ContourGrid.js +31 -13
  44. package/dist/components/EffectsGenerator.d.ts +7 -1
  45. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  46. package/dist/components/EffectsGenerator.js +39 -38
  47. package/dist/components/EnvironmentManager.d.ts +4 -4
  48. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  49. package/dist/components/FlowNetGrid.d.ts +8 -4
  50. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  51. package/dist/components/FlowNetGrid.js +31 -13
  52. package/dist/components/FractalGrid.d.ts +8 -12
  53. package/dist/components/FractalGrid.d.ts.map +1 -1
  54. package/dist/components/FractalGrid.js +31 -13
  55. package/dist/components/GirihGrid.d.ts +8 -1
  56. package/dist/components/GirihGrid.d.ts.map +1 -1
  57. package/dist/components/GirihGrid.js +31 -13
  58. package/dist/components/Glyphs.d.ts +7 -1
  59. package/dist/components/Glyphs.d.ts.map +1 -1
  60. package/dist/components/Glyphs.js +40 -34
  61. package/dist/components/GravWaveGrid.d.ts +8 -1
  62. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  63. package/dist/components/GravWaveGrid.js +31 -13
  64. package/dist/components/GridsGenerator.d.ts +9 -3
  65. package/dist/components/GridsGenerator.d.ts.map +1 -1
  66. package/dist/components/GridsGenerator.js +41 -18
  67. package/dist/components/HexGrid.d.ts +8 -10
  68. package/dist/components/HexGrid.d.ts.map +1 -1
  69. package/dist/components/HexGrid.js +31 -13
  70. package/dist/components/HilbertGrid.d.ts +25 -0
  71. package/dist/components/HilbertGrid.d.ts.map +1 -0
  72. package/dist/components/HilbertGrid.js +93 -0
  73. package/dist/components/HyperbolicGrid.d.ts +8 -4
  74. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  75. package/dist/components/HyperbolicGrid.js +31 -13
  76. package/dist/components/LandscapeBuilder.d.ts +1 -1
  77. package/dist/components/LandscapeBuilder.d.ts.map +1 -1
  78. package/dist/components/LandscapeBuilder.js +1 -1
  79. package/dist/components/LandscapeObject.d.ts +1 -1
  80. package/dist/components/LandscapeObject.d.ts.map +1 -1
  81. package/dist/components/LandscapeObject.js +1 -1
  82. package/dist/components/LensingGrid.d.ts +25 -0
  83. package/dist/components/LensingGrid.d.ts.map +1 -0
  84. package/dist/components/LensingGrid.js +81 -0
  85. package/dist/components/MoireGrid.d.ts +8 -12
  86. package/dist/components/MoireGrid.d.ts.map +1 -1
  87. package/dist/components/MoireGrid.js +31 -13
  88. package/dist/components/ObjectNode.d.ts.map +1 -1
  89. package/dist/components/ObjectNode.js +2 -2
  90. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  91. package/dist/components/ObjectsRenderer.js +37 -3
  92. package/dist/components/OceanBuilder.d.ts +1 -1
  93. package/dist/components/OceanBuilder.js +1 -1
  94. package/dist/components/ParastichyGrid.d.ts +25 -0
  95. package/dist/components/ParastichyGrid.d.ts.map +1 -0
  96. package/dist/components/ParastichyGrid.js +82 -0
  97. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  98. package/dist/components/ParticlesGenerator.js +6 -0
  99. package/dist/components/PhyllotaxisGrid.d.ts +25 -0
  100. package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
  101. package/dist/components/PhyllotaxisGrid.js +95 -0
  102. package/dist/components/QuasiGrid.d.ts +8 -11
  103. package/dist/components/QuasiGrid.d.ts.map +1 -1
  104. package/dist/components/QuasiGrid.js +31 -13
  105. package/dist/components/RadarGrid.d.ts +8 -13
  106. package/dist/components/RadarGrid.d.ts.map +1 -1
  107. package/dist/components/RadarGrid.js +31 -13
  108. package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
  109. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  110. package/dist/components/ReactionDiffusionGrid.js +33 -139
  111. package/dist/components/SceneBuilder.js +1 -1
  112. package/dist/components/SkySystem.d.ts +1 -1
  113. package/dist/components/SparklesBurst.d.ts +7 -1
  114. package/dist/components/SparklesBurst.d.ts.map +1 -1
  115. package/dist/components/SparklesBurst.js +31 -28
  116. package/dist/components/TerrainBuilder.d.ts +1 -1
  117. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  118. package/dist/components/TerrainBuilder.js +1 -1
  119. package/dist/components/TruchetGrid.d.ts +25 -0
  120. package/dist/components/TruchetGrid.d.ts.map +1 -0
  121. package/dist/components/TruchetGrid.js +82 -0
  122. package/dist/components/VoronoiGrid.d.ts +8 -10
  123. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  124. package/dist/components/VoronoiGrid.js +31 -13
  125. package/dist/components/WallpaperGrid.d.ts +8 -1
  126. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  127. package/dist/components/WallpaperGrid.js +33 -210
  128. package/dist/components/effects/AuraEffect.d.ts +8 -3
  129. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  130. package/dist/components/effects/AuraEffect.js +49 -24
  131. package/dist/components/effects/AuroraEffect.d.ts +8 -3
  132. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  133. package/dist/components/effects/AuroraEffect.js +45 -25
  134. package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
  135. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  136. package/dist/components/effects/BlackHoleEffect.js +42 -21
  137. package/dist/components/effects/ConstellationEffect.d.ts +8 -3
  138. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  139. package/dist/components/effects/ConstellationEffect.js +49 -23
  140. package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
  141. package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
  142. package/dist/components/effects/DandelionSeedsEffect.js +19 -9
  143. package/dist/components/effects/DataStreamEffect.d.ts +8 -3
  144. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  145. package/dist/components/effects/DataStreamEffect.js +54 -26
  146. package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
  147. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  148. package/dist/components/effects/DnaHelixEffect.js +62 -30
  149. package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
  150. package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
  151. package/dist/components/effects/FallingLeavesEffect.js +19 -9
  152. package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
  153. package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
  154. package/dist/components/effects/FieldLinesEffect.js +30 -20
  155. package/dist/components/effects/Fire.d.ts +8 -3
  156. package/dist/components/effects/Fire.d.ts.map +1 -1
  157. package/dist/components/effects/Fire.js +47 -10
  158. package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
  159. package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
  160. package/dist/components/effects/FireflySwarmEffect.js +19 -9
  161. package/dist/components/effects/Flares.d.ts +10 -3
  162. package/dist/components/effects/Flares.d.ts.map +1 -1
  163. package/dist/components/effects/Flares.js +53 -56
  164. package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
  165. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  166. package/dist/components/effects/ForcefieldEffect.js +52 -33
  167. package/dist/components/effects/GalaxyEffect.d.ts +7 -2
  168. package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
  169. package/dist/components/effects/GalaxyEffect.js +19 -9
  170. package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
  171. package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
  172. package/dist/components/effects/HarmonicShellEffect.js +30 -22
  173. package/dist/components/effects/HologramEffect.d.ts +8 -3
  174. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  175. package/dist/components/effects/HologramEffect.js +52 -23
  176. package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
  177. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  178. package/dist/components/effects/IceCrystalsEffect.js +36 -21
  179. package/dist/components/effects/IceHaloEffect.d.ts +7 -2
  180. package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
  181. package/dist/components/effects/IceHaloEffect.js +19 -9
  182. package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
  183. package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
  184. package/dist/components/effects/LichtenbergEffect.js +19 -9
  185. package/dist/components/effects/LightningEffect.d.ts +8 -3
  186. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  187. package/dist/components/effects/LightningEffect.js +54 -32
  188. package/dist/components/effects/MoleculesEffect.d.ts +8 -3
  189. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  190. package/dist/components/effects/MoleculesEffect.js +31 -21
  191. package/dist/components/effects/MurmurationEffect.d.ts +7 -2
  192. package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
  193. package/dist/components/effects/MurmurationEffect.js +19 -9
  194. package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
  195. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  196. package/dist/components/effects/NeuralNetworkEffect.js +66 -33
  197. package/dist/components/effects/OrbEffect.d.ts +8 -3
  198. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  199. package/dist/components/effects/OrbEffect.js +89 -42
  200. package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
  201. package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
  202. package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
  203. package/dist/components/effects/PortalEffect.d.ts +8 -3
  204. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  205. package/dist/components/effects/PortalEffect.js +41 -25
  206. package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
  207. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  208. package/dist/components/effects/ShockwaveEffect.js +19 -9
  209. package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
  210. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  211. package/dist/components/effects/SmokePlumeEffect.js +30 -20
  212. package/dist/components/effects/SmokeRibbon.d.ts +8 -2
  213. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  214. package/dist/components/effects/SmokeRibbon.js +34 -24
  215. package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
  216. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  217. package/dist/components/effects/SmokeRingEffect.js +33 -21
  218. package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
  219. package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
  220. package/dist/components/effects/StrangeAttractorEffect.js +30 -20
  221. package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
  222. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  223. package/dist/components/effects/VolumetricFogEffect.js +38 -20
  224. package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
  225. package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
  226. package/dist/components/effects/WaterCausticsEffect.js +19 -9
  227. package/dist/components/effects/index.d.ts +0 -1
  228. package/dist/components/effects/index.d.ts.map +1 -1
  229. package/dist/components/effects/index.js +0 -1
  230. package/dist/components/index.d.ts +14 -1
  231. package/dist/components/index.d.ts.map +1 -1
  232. package/dist/components/index.js +7 -1
  233. package/dist/components/landscape/LandscapeMesh.js +1 -1
  234. package/dist/components/landscape/types.d.ts +1 -1
  235. package/dist/components/landscape/types.d.ts.map +1 -1
  236. package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
  237. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
  238. package/dist/components/particles/MagneticBottleParticles.js +618 -0
  239. package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
  240. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
  241. package/dist/components/particles/ShapeBurstParticles.js +588 -0
  242. package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
  243. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
  244. package/dist/components/particles/ShapeFlowParticles.js +755 -0
  245. package/dist/components/particles/index.d.ts +6 -0
  246. package/dist/components/particles/index.d.ts.map +1 -1
  247. package/dist/components/particles/index.js +3 -0
  248. package/dist/components/terrain/types.d.ts +1 -1
  249. package/dist/components/terrain/types.d.ts.map +1 -1
  250. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
  251. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  252. package/dist/components/volumetricClouds/types.d.ts +1 -1
  253. package/dist/components/volumetricClouds/types.d.ts.map +1 -1
  254. package/dist/components/water/types.d.ts +1 -1
  255. package/dist/components/water/types.d.ts.map +1 -1
  256. package/dist/hooks/index.d.ts +2 -0
  257. package/dist/hooks/index.d.ts.map +1 -1
  258. package/dist/hooks/index.js +1 -0
  259. package/dist/hooks/useConfigDriver.d.ts +22 -0
  260. package/dist/hooks/useConfigDriver.d.ts.map +1 -0
  261. package/dist/hooks/useConfigDriver.js +43 -0
  262. package/dist/hooks/useConfigLive.d.ts +1 -1
  263. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  264. package/dist/hooks/useLandscapeMaps.d.ts +1 -1
  265. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
  266. package/dist/hooks/useOceanMaterial.d.ts +1 -1
  267. package/dist/hooks/useThunder.d.ts +1 -1
  268. package/dist/index.d.ts +1 -2
  269. package/dist/index.d.ts.map +1 -1
  270. package/dist/index.js +1 -2
  271. package/dist/interactions/index.d.ts +2 -1
  272. package/dist/interactions/index.d.ts.map +1 -1
  273. package/dist/interactions/index.js +1 -1
  274. package/dist/interactions/runner.d.ts +18 -3
  275. package/dist/interactions/runner.d.ts.map +1 -1
  276. package/dist/interactions/runner.js +25 -2
  277. package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
  278. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
  279. package/dist/operations/catalogue/curlSmoke.js +178 -0
  280. package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
  281. package/dist/operations/catalogue/displayImage.js +1 -0
  282. package/dist/operations/catalogue/dissolve.d.ts +3 -0
  283. package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
  284. package/dist/operations/catalogue/dissolve.js +57 -0
  285. package/dist/operations/catalogue/emberAsh.d.ts +3 -0
  286. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
  287. package/dist/operations/catalogue/emberAsh.js +171 -0
  288. package/dist/operations/catalogue/fade.d.ts.map +1 -1
  289. package/dist/operations/catalogue/fade.js +1 -0
  290. package/dist/operations/catalogue/flip.d.ts +3 -0
  291. package/dist/operations/catalogue/flip.d.ts.map +1 -0
  292. package/dist/operations/catalogue/flip.js +69 -0
  293. package/dist/operations/catalogue/flock.d.ts +3 -0
  294. package/dist/operations/catalogue/flock.d.ts.map +1 -0
  295. package/dist/operations/catalogue/flock.js +163 -0
  296. package/dist/operations/catalogue/focus.d.ts.map +1 -1
  297. package/dist/operations/catalogue/focus.js +1 -0
  298. package/dist/operations/catalogue/frame.d.ts +3 -0
  299. package/dist/operations/catalogue/frame.d.ts.map +1 -0
  300. package/dist/operations/catalogue/frame.js +44 -0
  301. package/dist/operations/catalogue/frost.d.ts +3 -0
  302. package/dist/operations/catalogue/frost.d.ts.map +1 -0
  303. package/dist/operations/catalogue/frost.js +111 -0
  304. package/dist/operations/catalogue/fxInstances.d.ts +21 -0
  305. package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
  306. package/dist/operations/catalogue/fxInstances.js +47 -0
  307. package/dist/operations/catalogue/fxPoints.d.ts +22 -0
  308. package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
  309. package/dist/operations/catalogue/fxPoints.js +70 -0
  310. package/dist/operations/catalogue/glow.d.ts.map +1 -1
  311. package/dist/operations/catalogue/glow.js +2 -1
  312. package/dist/operations/catalogue/heatCracks.d.ts +3 -0
  313. package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
  314. package/dist/operations/catalogue/heatCracks.js +134 -0
  315. package/dist/operations/catalogue/hologram.d.ts +3 -0
  316. package/dist/operations/catalogue/hologram.d.ts.map +1 -0
  317. package/dist/operations/catalogue/hologram.js +118 -0
  318. package/dist/operations/catalogue/inkBloom.d.ts +3 -0
  319. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
  320. package/dist/operations/catalogue/inkBloom.js +156 -0
  321. package/dist/operations/catalogue/ivy.d.ts +13 -0
  322. package/dist/operations/catalogue/ivy.d.ts.map +1 -0
  323. package/dist/operations/catalogue/ivy.js +469 -0
  324. package/dist/operations/catalogue/jelly.d.ts +3 -0
  325. package/dist/operations/catalogue/jelly.d.ts.map +1 -0
  326. package/dist/operations/catalogue/jelly.js +50 -0
  327. package/dist/operations/catalogue/kintsugi.d.ts +3 -0
  328. package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
  329. package/dist/operations/catalogue/kintsugi.js +173 -0
  330. package/dist/operations/catalogue/lidarScan.d.ts +3 -0
  331. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
  332. package/dist/operations/catalogue/lidarScan.js +240 -0
  333. package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
  334. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
  335. package/dist/operations/catalogue/liquidMetal.js +122 -0
  336. package/dist/operations/catalogue/metalize.d.ts +3 -0
  337. package/dist/operations/catalogue/metalize.d.ts.map +1 -0
  338. package/dist/operations/catalogue/metalize.js +135 -0
  339. package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
  340. package/dist/operations/catalogue/moveToFront.js +1 -0
  341. package/dist/operations/catalogue/orbit.d.ts +3 -0
  342. package/dist/operations/catalogue/orbit.d.ts.map +1 -0
  343. package/dist/operations/catalogue/orbit.js +29 -0
  344. package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
  345. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
  346. package/dist/operations/catalogue/particleSwarm.js +138 -0
  347. package/dist/operations/catalogue/petalPeel.d.ts +3 -0
  348. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
  349. package/dist/operations/catalogue/petalPeel.js +137 -0
  350. package/dist/operations/catalogue/petrify.d.ts +3 -0
  351. package/dist/operations/catalogue/petrify.d.ts.map +1 -0
  352. package/dist/operations/catalogue/petrify.js +94 -0
  353. package/dist/operations/catalogue/portal.d.ts +3 -0
  354. package/dist/operations/catalogue/portal.d.ts.map +1 -0
  355. package/dist/operations/catalogue/portal.js +224 -0
  356. package/dist/operations/catalogue/print3d.d.ts +3 -0
  357. package/dist/operations/catalogue/print3d.d.ts.map +1 -0
  358. package/dist/operations/catalogue/print3d.js +275 -0
  359. package/dist/operations/catalogue/rainBeads.d.ts +3 -0
  360. package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
  361. package/dist/operations/catalogue/rainBeads.js +223 -0
  362. package/dist/operations/catalogue/restPose.d.ts +21 -0
  363. package/dist/operations/catalogue/restPose.d.ts.map +1 -0
  364. package/dist/operations/catalogue/restPose.js +55 -0
  365. package/dist/operations/catalogue/rimLight.d.ts +3 -0
  366. package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
  367. package/dist/operations/catalogue/rimLight.js +72 -0
  368. package/dist/operations/catalogue/sandErosion.d.ts +3 -0
  369. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
  370. package/dist/operations/catalogue/sandErosion.js +167 -0
  371. package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
  372. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
  373. package/dist/operations/catalogue/shaderLayers.js +322 -0
  374. package/dist/operations/catalogue/shatter.d.ts +3 -0
  375. package/dist/operations/catalogue/shatter.d.ts.map +1 -0
  376. package/dist/operations/catalogue/shatter.js +267 -0
  377. package/dist/operations/catalogue/silkDrape.d.ts +3 -0
  378. package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
  379. package/dist/operations/catalogue/silkDrape.js +340 -0
  380. package/dist/operations/catalogue/spin.d.ts +3 -0
  381. package/dist/operations/catalogue/spin.d.ts.map +1 -0
  382. package/dist/operations/catalogue/spin.js +42 -0
  383. package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
  384. package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
  385. package/dist/operations/catalogue/surfaceSample.js +187 -0
  386. package/dist/operations/catalogue/swirl.d.ts +3 -0
  387. package/dist/operations/catalogue/swirl.d.ts.map +1 -0
  388. package/dist/operations/catalogue/swirl.js +69 -0
  389. package/dist/operations/catalogue/teleport.d.ts +3 -0
  390. package/dist/operations/catalogue/teleport.d.ts.map +1 -0
  391. package/dist/operations/catalogue/teleport.js +213 -0
  392. package/dist/operations/catalogue/transitionField.d.ts +124 -0
  393. package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
  394. package/dist/operations/catalogue/transitionField.js +278 -0
  395. package/dist/operations/catalogue/unweave.d.ts +3 -0
  396. package/dist/operations/catalogue/unweave.d.ts.map +1 -0
  397. package/dist/operations/catalogue/unweave.js +233 -0
  398. package/dist/operations/catalogue/visibility.d.ts.map +1 -1
  399. package/dist/operations/catalogue/visibility.js +1 -0
  400. package/dist/operations/catalogue/voxelize.d.ts +3 -0
  401. package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
  402. package/dist/operations/catalogue/voxelize.js +148 -0
  403. package/dist/operations/catalogue/warmup.d.ts +22 -0
  404. package/dist/operations/catalogue/warmup.d.ts.map +1 -0
  405. package/dist/operations/catalogue/warmup.js +106 -0
  406. package/dist/operations/catalogue/zoom.d.ts.map +1 -1
  407. package/dist/operations/catalogue/zoom.js +1 -0
  408. package/dist/operations/index.d.ts +4 -2
  409. package/dist/operations/index.d.ts.map +1 -1
  410. package/dist/operations/index.js +4 -2
  411. package/dist/operations/objectEffects.d.ts +46 -0
  412. package/dist/operations/objectEffects.d.ts.map +1 -0
  413. package/dist/operations/objectEffects.js +136 -0
  414. package/dist/operations/registry.d.ts +7 -2
  415. package/dist/operations/registry.d.ts.map +1 -1
  416. package/dist/operations/registry.js +45 -3
  417. package/dist/operations/runtime.d.ts +40 -2
  418. package/dist/operations/runtime.d.ts.map +1 -1
  419. package/dist/operations/runtime.js +164 -8
  420. package/dist/operations/types.d.ts +29 -3
  421. package/dist/operations/types.d.ts.map +1 -1
  422. package/dist/operations/types.js +6 -0
  423. package/dist/operations/useObjectEffectLayers.d.ts +4 -0
  424. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
  425. package/dist/operations/useObjectEffectLayers.js +42 -0
  426. package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
  427. package/dist/operations/useOperationsRuntime.js +42 -4
  428. package/dist/presets/landscapePresets.d.ts +1 -1
  429. package/dist/presets/landscapePresets.d.ts.map +1 -1
  430. package/dist/presets/landscapePresets.js +1 -1
  431. package/dist/presets/landscapeTypes.d.ts +1 -1
  432. package/dist/presets/landscapeTypes.d.ts.map +1 -1
  433. package/dist/presets/landscapeTypes.js +1 -1
  434. package/dist/presets/oceanSurfacePresets.d.ts +1 -1
  435. package/dist/presets/terrainPresets.d.ts +1 -1
  436. package/dist/presets/terrainPresets.d.ts.map +1 -1
  437. package/dist/presets/volumetricCloudPresets.d.ts +1 -1
  438. package/dist/types/cloudConfigs.d.ts +2 -309
  439. package/dist/types/cloudConfigs.d.ts.map +1 -1
  440. package/dist/types/cloudConfigs.js +2 -339
  441. package/dist/types/gridConfigs.d.ts +103 -0
  442. package/dist/types/gridConfigs.d.ts.map +1 -1
  443. package/dist/types/index.d.ts +9 -9
  444. package/dist/types/index.d.ts.map +1 -1
  445. package/dist/types/index.js +4 -4
  446. package/dist/types/landscapeConfigs.d.ts +2 -217
  447. package/dist/types/landscapeConfigs.d.ts.map +1 -1
  448. package/dist/types/landscapeConfigs.js +2 -256
  449. package/dist/types/oceanConfigs.d.ts +2 -289
  450. package/dist/types/oceanConfigs.d.ts.map +1 -1
  451. package/dist/types/oceanConfigs.js +2 -380
  452. package/dist/types/terrainConfigs.d.ts +2 -250
  453. package/dist/types/terrainConfigs.d.ts.map +1 -1
  454. package/dist/types/terrainConfigs.js +2 -292
  455. package/dist/utils/cloudUniforms.d.ts +1 -1
  456. package/dist/utils/configAnimations.d.ts +6 -0
  457. package/dist/utils/configAnimations.d.ts.map +1 -1
  458. package/dist/utils/configAnimations.js +14 -0
  459. package/dist/utils/gridConfig.d.ts +19 -0
  460. package/dist/utils/gridConfig.d.ts.map +1 -0
  461. package/dist/utils/gridConfig.js +52 -0
  462. package/dist/utils/handleCloudsAnimations.d.ts +1 -1
  463. package/dist/utils/handleCloudsAnimations.js +1 -1
  464. package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
  465. package/dist/utils/hasHoverAnimation.js +0 -2
  466. package/dist/utils/landscapeUniforms.d.ts +1 -1
  467. package/dist/utils/landscapeUniforms.d.ts.map +1 -1
  468. package/dist/utils/oceanUniforms.d.ts +1 -1
  469. package/dist/utils/particleShape.d.ts +33 -0
  470. package/dist/utils/particleShape.d.ts.map +1 -0
  471. package/dist/utils/particleShape.js +207 -0
  472. package/dist/utils/particleTrails.d.ts.map +1 -1
  473. package/dist/utils/particleTrails.js +29 -14
  474. package/dist/utils/terrainUniforms.d.ts +1 -1
  475. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  476. package/package.json +2 -2
@@ -4,6 +4,7 @@ export default defineOperation({
4
4
  value: 'displayImage',
5
5
  label: 'Show image',
6
6
  description: "Show the clicked frame's image on the target",
7
+ channel: 'visual',
7
8
  multi: false,
8
9
  toggles: false,
9
10
  usableIn: ['interaction'],
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=dissolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dissolve.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/dissolve.ts"],"names":[],"mappings":";AAcA,wBA2CG"}
@@ -0,0 +1,57 @@
1
+ // Dissolve — the targets burn away along a calm noise front with a glowing edge;
2
+ // reverting grows them back. Built on the shared transition field, so it has the
3
+ // same directions as every other transition (including screen left/right) and
4
+ // shares its root-space pattern (no swimming, multi-mesh models dissolve as one).
5
+ import { defineOperation } from '../types.js';
6
+ import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
7
+ import { DIRECTION_OPTIONS, createFieldState, hideMeshes, runProgress, setFieldParams, surfaceLayer } from './transitionField.js';
8
+ const P = 'Dis';
9
+ const KEY = 'dissolve';
10
+ const STATE = '__opDissolve';
11
+ export default defineOperation({
12
+ value: 'dissolve',
13
+ label: 'Dissolve',
14
+ description: 'Burn the targets away along a glowing edge — reverting grows them back',
15
+ channel: 'visual',
16
+ multi: true,
17
+ toggles: true,
18
+ usableIn: ['interaction', 'action'],
19
+ params: {
20
+ direction: { type: 'select', label: 'Direction', default: 'noise', options: DIRECTION_OPTIONS },
21
+ edgeColor: { type: 'color', label: 'Edge colour', default: '#ff7a2e' },
22
+ edgeWidth: { type: 'number', label: 'Edge width', default: 0.08, min: 0.01, max: 0.3, step: 0.01 },
23
+ scale: { type: 'number', label: 'Grain', default: 3, min: 0.5, max: 12, step: 0.1, hint: 'Size of the burn pattern — higher = finer' },
24
+ duration: { type: 'number', label: 'Duration', default: 1.6, min: 0.1, max: 10, step: 0.05, unit: 's' },
25
+ },
26
+ apply(target, p, ctx) {
27
+ let st = target.userData[STATE];
28
+ if (!st) {
29
+ st = { field: createFieldState(target), mats: new Set() };
30
+ const own = st;
31
+ const layer = surfaceLayer(P, own.field, 'ember');
32
+ forEachMeshMaterial(target, (mat, mesh) => {
33
+ if (mesh.userData?.__opFxHelper)
34
+ return;
35
+ if (addLayer(mat, KEY, layer))
36
+ own.mats.add(mat);
37
+ });
38
+ target.userData[STATE] = st;
39
+ }
40
+ const s = st;
41
+ setFieldParams(s.field, p, target, ctx);
42
+ return runProgress(target, s.field, 1, {
43
+ duration: Number(p.duration), ease: 'power1.in',
44
+ onComplete: () => hideMeshes(target, KEY, true),
45
+ });
46
+ },
47
+ revert(target, p) {
48
+ const s = target.userData[STATE];
49
+ if (!s)
50
+ return;
51
+ hideMeshes(target, KEY, false);
52
+ return runProgress(target, s.field, 0, {
53
+ duration: Number(p.duration), ease: 'power1.out',
54
+ onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
55
+ });
56
+ },
57
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=emberAsh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emberAsh.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/emberAsh.ts"],"names":[],"mappings":";AAoFA,wBA0FG"}
@@ -0,0 +1,171 @@
1
+ // Ember ash — the object burns the way wood and paper do, not the way a dissolve
2
+ // does: a dull-red front chars the surface to charcoal, glowing embers breathe
3
+ // in the cracks just behind it, the charcoal pales to powdery grey ash, and the
4
+ // ash comes away in flakes that a wind carries off — tumbling, curling in
5
+ // turbulence, rising on the heat, a few still glowing as they cool.
6
+ // Reverting runs the fire backwards: the flakes blow back and the object un-burns.
7
+ import { Color, Vector3 } from 'three';
8
+ import { defineOperation } from '../types.js';
9
+ import { GLSL_WORLEY, addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
10
+ import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, hideMeshes, runProgress, screenRight, setFieldParams, } from './transitionField.js';
11
+ import { sampleSurfaceCached } from './surfaceSample.js';
12
+ import { GLSL_POINT_SIZE, createFxPoints, disposeFxPoints } from './fxPoints.js';
13
+ const P = 'Ash';
14
+ const KEY = 'emberAsh';
15
+ const STATE = '__opEmberAsh';
16
+ /** The ash front trails the char front by LAG; flakes fly for LIFE (progress units). */
17
+ const LAG = 0.3;
18
+ const LIFE = 0.7;
19
+ const END = 1 + LAG + LIFE;
20
+ /** Shared GLSL: the char front, the ash front, and where a point stands between them. */
21
+ const FRONTS = /* glsl */ `
22
+ float ashChar(float f) { return smoothstep(0.0, 0.12, AshThreshold() - f); }
23
+ float ashAshT() {
24
+ float pa = clamp((uAshProgress - ${LAG.toFixed(2)}) / 1.0, 0.0, 1.0);
25
+ return pa * (1.0 + 2.0 * uAshEdgeWidth) - uAshEdgeWidth;
26
+ }
27
+ `;
28
+ function surfaceLayerFor(st) {
29
+ return {
30
+ uniforms: { ...fieldUniforms(P, st.field), uAshEmber: st.ember },
31
+ common: `varying vec3 vAshQ;\nvarying vec3 vAshR;\n${fieldGlsl(P)}\n${GLSL_WORLEY}\n${FRONTS}`,
32
+ vertex: /* glsl */ `
33
+ vAshR = (uAshRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
34
+ vAshQ = AshNorm(vAshR);`,
35
+ diffuse: /* glsl */ `
36
+ {
37
+ float f = AshField(vAshQ);
38
+ float ta = ashAshT();
39
+ if (f < ta) discard; // gone to the wind
40
+ float ch = ashChar(f);
41
+ float toAsh = 1.0 - smoothstep(0.0, 0.14, f - ta); // pales just before it flakes
42
+ vec3 charcoal = vec3(0.045, 0.04, 0.036) * (0.7 + 0.6 * fxNoise(vAshR / uAshExtent * 60.0));
43
+ vec3 ash = vec3(0.58, 0.56, 0.53) * (0.8 + 0.3 * fxNoise(vAshR / uAshExtent * 90.0));
44
+ diffuseColor.rgb = mix(diffuseColor.rgb, charcoal, ch * 0.96);
45
+ diffuseColor.rgb = mix(diffuseColor.rgb, ash, toAsh);
46
+ }`,
47
+ material: /* glsl */ `
48
+ {
49
+ float ch = ashChar(AshField(vAshQ));
50
+ roughnessFactor = mix(roughnessFactor, 0.95, ch);
51
+ metalnessFactor = mix(metalnessFactor, 0.0, ch);
52
+ }`,
53
+ fragment: /* glsl */ `
54
+ {
55
+ float f = AshField(vAshQ);
56
+ float tc = AshThreshold();
57
+ float ch = ashChar(f);
58
+ float ta = ashAshT();
59
+ float toAsh = 1.0 - smoothstep(0.0, 0.14, f - ta);
60
+ // embers live in the cracks just behind the char front, and die as it turns to ash
61
+ vec3 cell = fxWorley(vAshR / uAshExtent * 22.0);
62
+ float crack = 1.0 - smoothstep(0.0, 0.08, cell.y - cell.x);
63
+ float speck = step(0.78, fxNoise(vAshR / uAshExtent * 75.0));
64
+ float heat = ch * (1.0 - toAsh) * exp(-max(tc - f, 0.0) / 0.12);
65
+ float breathe = 0.7 + 0.3 * sin(uAshTime * 2.1 + cell.z * 6.2832);
66
+ float glow = heat * breathe * (crack * 0.9 + speck * 0.6);
67
+ vec3 emberC = mix(uAshEmber * vec3(0.5, 0.12, 0.02), uAshEmber, glow);
68
+ // the front itself: a dull red line, never white-hot
69
+ float front = exp(-abs(tc - f) / 0.018) * step(0.0001, uAshProgress) * step(uAshProgress, 0.9999);
70
+ outgoingLight += emberC * glow * 1.5 + uAshEmber * vec3(0.9, 0.35, 0.12) * front * 0.7;
71
+ }`,
72
+ };
73
+ }
74
+ export default defineOperation({
75
+ value: 'emberAsh',
76
+ label: 'Ember ash',
77
+ description: 'Char the targets to glowing charcoal, then pale ash that the wind blows away — reverting un-burns them',
78
+ channel: 'visual',
79
+ multi: true,
80
+ toggles: true,
81
+ usableIn: ['interaction', 'action'],
82
+ params: {
83
+ direction: { type: 'select', label: 'Burn direction', default: 'up', options: DIRECTION_OPTIONS },
84
+ wind: { type: 'select', label: 'Wind', default: 'left', options: [{ value: 'left', label: 'Left → right' }, { value: 'right', label: 'Right → left' }, { value: 'up', label: 'Rising' }] },
85
+ windStrength: { type: 'number', label: 'Wind strength', default: 1, min: 0, max: 4, step: 0.05, unit: '×' },
86
+ ember: { type: 'color', label: 'Ember colour', default: '#ff6a1f' },
87
+ flakes: { type: 'number', label: 'Ash flakes', default: 16000, min: 2000, max: 80000, step: 1000 },
88
+ flakeSize: { type: 'number', label: 'Flake size', default: 1, min: 0.2, max: 4, step: 0.1, unit: '×' },
89
+ scale: { type: 'number', label: 'Burn pattern', default: 2.5, min: 0.5, max: 12, step: 0.1 },
90
+ duration: { type: 'number', label: 'Duration', default: 4, min: 0.3, max: 14, step: 0.1, unit: 's' },
91
+ },
92
+ apply(target, p, ctx) {
93
+ let st = target.userData[STATE];
94
+ if (!st) {
95
+ const field = createFieldState(target);
96
+ field.edgeWidth.value = 0.05;
97
+ const own = { field, wind: { value: new Vector3(1, 0, 0) }, windStrength: { value: 1 }, ember: { value: new Color() }, flake: { value: 1 }, mats: new Set() };
98
+ const sample = sampleSurfaceCached(target, Math.round(Number(p.flakes)), 7);
99
+ own.points = createFxPoints(target, sample, {
100
+ additive: false,
101
+ uniforms: { ...fieldUniforms(P, field), uAshWind: own.wind, uAshWindK: own.windStrength, uAshEmber: own.ember, uAshFlake: own.flake },
102
+ vertexPars: fieldGlsl(P) + GLSL_POINT_SIZE + FRONTS,
103
+ vertexMain: /* glsl */ `
104
+ float f = AshField(AshNorm(aP));
105
+ // a flake leaves when the ash front reaches it
106
+ float born = ${LAG.toFixed(2)} + AshBirthOf(f);
107
+ float a = (uAshProgress - born) / ${LIFE.toFixed(2)};
108
+ if (a <= 0.0 || a >= 1.0) { gl_Position = vec4(2.0, 2.0, 2.0, 1.0); gl_PointSize = 0.0; vColor = vec3(0.0); vAlpha = 0.0; return; }
109
+ float E = uAshExtent;
110
+ // wind: accelerating along the wind, curling in slow turbulence, lifted by the heat
111
+ vec3 np = aP / E * 2.2 + aR.xyz * 5.0;
112
+ vec3 turb = vec3(fxNoise(np + vec3(a * 1.6, 0.0, 0.0)), fxNoise(np + vec3(17.0, a * 1.6, 3.0)), fxNoise(np + vec3(5.0, 11.0, a * 1.6))) - 0.5;
113
+ vec3 local = aP + aN * (0.02 * E * sqrt(a))
114
+ + uAshWind * (E * uAshWindK * (0.5 * a + 1.3 * a * a) * (0.7 + 0.6 * aR.x))
115
+ + turb * (0.5 * E * a)
116
+ + vec3(0.0, 0.22 * E * a * (0.5 + aR.y), 0.0);
117
+ vec4 mv = modelViewMatrix * vec4(local, 1.0);
118
+ gl_Position = projectionMatrix * mv;
119
+ // most flakes are grey ash; one in six still glows, cooling as it flies
120
+ float glowing = step(0.83, aR.w);
121
+ vec3 ash = mix(vec3(0.66, 0.64, 0.6), vec3(0.24, 0.23, 0.22), aR.z);
122
+ vec3 hot = mix(uAshEmber * 1.8, uAshEmber * vec3(0.35, 0.08, 0.02), a);
123
+ vColor = mix(ash, hot, glowing);
124
+ vAlpha = smoothstep(0.0, 0.05, a) * (1.0 - smoothstep(0.7, 1.0, a));
125
+ // a tumbling flake shows its face, then its edge
126
+ float tumble = 0.35 + 0.65 * abs(sin(a * (9.0 + 12.0 * aR.y) + aR.x * 6.28));
127
+ gl_PointSize = clamp(fxPointPx(E * 0.0055 * uAshFlake * (0.5 + aR.z) * tumble, mv), 1.0, 14.0);`,
128
+ });
129
+ const layer = surfaceLayerFor(own);
130
+ forEachMeshMaterial(target, (mat, mesh) => {
131
+ if (mesh.userData?.__opFxHelper)
132
+ return;
133
+ if (addLayer(mat, KEY, layer))
134
+ own.mats.add(mat);
135
+ });
136
+ st = own;
137
+ target.userData[STATE] = st;
138
+ }
139
+ const s = st;
140
+ setFieldParams(s.field, p, target, ctx);
141
+ s.ember.value.set(String(p.ember));
142
+ s.windStrength.value = Number(p.windStrength);
143
+ s.flake.value = Number(p.flakeSize);
144
+ if (p.wind === 'up')
145
+ s.wind.value.set(0, 1, 0);
146
+ else {
147
+ const r = screenRight(target, ctx);
148
+ s.wind.value.copy(p.wind === 'right' ? r.negate() : r);
149
+ }
150
+ s.points.visible = true;
151
+ return runProgress(target, s.field, END, {
152
+ duration: Number(p.duration), ease: 'none',
153
+ onComplete: () => { hideMeshes(target, KEY, true); s.points.visible = false; },
154
+ });
155
+ },
156
+ revert(target, p) {
157
+ const s = target.userData[STATE];
158
+ if (!s)
159
+ return;
160
+ hideMeshes(target, KEY, false);
161
+ s.points.visible = true;
162
+ return runProgress(target, s.field, 0, {
163
+ duration: Number(p.duration), ease: 'none',
164
+ onComplete: () => {
165
+ s.mats.forEach(m => removeLayer(m, KEY));
166
+ disposeFxPoints(s.points);
167
+ delete target.userData[STATE];
168
+ },
169
+ });
170
+ },
171
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"fade.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/fade.ts"],"names":[],"mappings":";AAMA,wBAoCG"}
1
+ {"version":3,"file":"fade.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/fade.ts"],"names":[],"mappings":";AAMA,wBAqCG"}
@@ -6,6 +6,7 @@ export default defineOperation({
6
6
  value: 'fade',
7
7
  label: 'Fade out',
8
8
  description: 'Fade the targets away (to a set opacity)',
9
+ channel: 'visual',
9
10
  multi: true,
10
11
  toggles: true,
11
12
  usableIn: ['interaction', 'action'],
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=flip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flip.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/flip.ts"],"names":[],"mappings":";AAaA,wBAoDG"}
@@ -0,0 +1,69 @@
1
+ // Flip — a proper little jump: crouch (anticipation), spring up, a full flip in
2
+ // the air about the object's centre, and a squash on landing. One-shot, lands
3
+ // exactly on the rest pose.
4
+ import { gsap } from 'gsap';
5
+ import { Quaternion, Vector3 } from 'three';
6
+ import { defineOperation } from '../types.js';
7
+ import { acquireRest, poseAbout, releaseRest } from './restPose.js';
8
+ const KEY = '__opFlip';
9
+ const AXES = { x: new Vector3(1, 0, 0), z: new Vector3(0, 0, 1), y: new Vector3(0, 1, 0) };
10
+ const NO_TURN = new Quaternion();
11
+ const smooth = (x) => x * x * (3 - 2 * x);
12
+ export default defineOperation({
13
+ value: 'flip',
14
+ label: 'Flip',
15
+ description: 'Crouch, jump and flip in the air, landing with a squash',
16
+ channel: 'transform',
17
+ multi: true,
18
+ toggles: false,
19
+ usableIn: ['interaction', 'action'],
20
+ params: {
21
+ axis: { type: 'select', label: 'Flip', default: 'x', options: [{ value: 'x', label: 'Forward (X)' }, { value: 'z', label: 'Sideways (Z)' }, { value: 'y', label: 'Twist (Y)' }] },
22
+ height: { type: 'number', label: 'Jump height', default: 0.45, min: 0.1, max: 4, step: 0.05, hint: 'A fraction of the object’s own height' },
23
+ reverse: { type: 'boolean', label: 'Backwards', default: false },
24
+ duration: { type: 'number', label: 'Duration', default: 1.3, min: 0.3, max: 5, step: 0.05, unit: 's' },
25
+ },
26
+ apply(target, p) {
27
+ const running = target.userData[KEY];
28
+ if (running) {
29
+ gsap.killTweensOf(running.proxy);
30
+ releaseRest(target);
31
+ }
32
+ const rest = acquireRest(target);
33
+ const proxy = { u: 0 };
34
+ target.userData[KEY] = { proxy };
35
+ const axis = AXES[String(p.axis)] ?? AXES.x;
36
+ const dir = p.reverse ? -1 : 1;
37
+ const h = rest.size.y * Number(p.height);
38
+ const q = new Quaternion(), s = new Vector3(), off = new Vector3();
39
+ const CROUCH = 0.18, LAND = 0.82;
40
+ gsap.to(proxy, {
41
+ u: 1, duration: Number(p.duration), ease: 'none',
42
+ onUpdate: () => {
43
+ const u = proxy.u;
44
+ if (u < CROUCH) {
45
+ // anticipation: squash down and release, about the base
46
+ const v = u / CROUCH;
47
+ const sy = 1 - 0.16 * Math.sin(Math.PI * v);
48
+ const sxz = 1 / Math.sqrt(sy);
49
+ poseAbout(target, rest, rest.bottomLocal, NO_TURN, s.set(sxz, sy, sxz));
50
+ }
51
+ else if (u < LAND) {
52
+ // ballistic hop + a full turn about the centre, eased so it hangs at the top
53
+ const v = (u - CROUCH) / (LAND - CROUCH);
54
+ off.set(0, 4 * h * v * (1 - v), 0);
55
+ q.setFromAxisAngle(axis, dir * 2 * Math.PI * smooth(v));
56
+ poseAbout(target, rest, rest.centerLocal, q, s.set(1, 1, 1), off);
57
+ }
58
+ else {
59
+ // landing: squash that rings out once
60
+ const v = (u - LAND) / (1 - LAND);
61
+ const sy = 1 - 0.14 * Math.sin(Math.PI * v) * (1 - v * 0.4);
62
+ const sxz = 1 / Math.sqrt(sy);
63
+ poseAbout(target, rest, rest.bottomLocal, NO_TURN, s.set(sxz, sy, sxz));
64
+ }
65
+ },
66
+ onComplete: () => { delete target.userData[KEY]; releaseRest(target); },
67
+ });
68
+ },
69
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=flock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flock.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/flock.ts"],"names":[],"mappings":";AA6CA,wBAwHG"}
@@ -0,0 +1,163 @@
1
+ // Flock — the surface takes flight: every spot becomes a small bird (a real lit
2
+ // instanced mesh, flapping its wings, carrying the colour of the spot it left).
3
+ // As the front passes, birds hop off the surface, then fly away in curving
4
+ // streams — out and up, or all toward one side of the screen — accelerating
5
+ // until they are gone. Birds always face the way they fly, so on revert they
6
+ // fly back in (head first) and settle into place as the surface re-forms.
7
+ import { BufferAttribute, BufferGeometry, Vector3 } from 'three';
8
+ import { defineOperation } from '../types.js';
9
+ import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
10
+ import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, hideMeshes, runProgress, screenRight, setFieldParams, surfaceLayer, } from './transitionField.js';
11
+ import { sampleSurfaceCached } from './surfaceSample.js';
12
+ import { createFxInstances, disposeFxInstances } from './fxInstances.js';
13
+ const P = 'Flk';
14
+ const KEY = 'flock';
15
+ const STATE = '__opFlock';
16
+ const LIFE = 1.0;
17
+ /** A unit bird in its own frame: x = right, y = up, z = forward. aWing marks the flapping tips. */
18
+ function birdGeometry() {
19
+ const v = [
20
+ // body
21
+ 0, 0, 0.5, -0.07, 0, -0.45, 0.07, 0, -0.45,
22
+ // left wing (tip flaps)
23
+ 0, 0, 0.18, -0.95, 0, -0.12, 0, 0, -0.22,
24
+ // right wing
25
+ 0, 0, 0.18, 0, 0, -0.22, 0.95, 0, -0.12,
26
+ // tail
27
+ 0, 0, -0.35, -0.18, 0, -0.62, 0.18, 0, -0.62,
28
+ ];
29
+ const wing = [0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0];
30
+ const g = new BufferGeometry();
31
+ g.setAttribute('position', new BufferAttribute(new Float32Array(v), 3));
32
+ g.setAttribute('normal', new BufferAttribute(new Float32Array(Array(12).fill([0, 1, 0]).flat()), 3));
33
+ g.setAttribute('aWing', new BufferAttribute(new Float32Array(wing), 1));
34
+ return g;
35
+ }
36
+ export default defineOperation({
37
+ value: 'flock',
38
+ label: 'Flock',
39
+ description: 'Turn the targets into a flock of birds that takes off and flies away — reverting flies them home',
40
+ channel: 'visual',
41
+ multi: true,
42
+ toggles: true,
43
+ usableIn: ['interaction', 'action'],
44
+ params: {
45
+ direction: { type: 'select', label: 'Take-off order', default: 'down', options: DIRECTION_OPTIONS },
46
+ exit: { type: 'select', label: 'Fly', default: 'away', options: [{ value: 'away', label: 'Out and up' }, { value: 'left', label: 'To the right' }, { value: 'right', label: 'To the left' }, { value: 'up', label: 'Straight up' }] },
47
+ birds: { type: 'number', label: 'Birds', default: 1400, min: 100, max: 12000, step: 100 },
48
+ birdSize: { type: 'number', label: 'Bird size', default: 1, min: 0.3, max: 4, step: 0.05, unit: '×' },
49
+ speed: { type: 'number', label: 'Speed', default: 1, min: 0.2, max: 4, step: 0.05, unit: '×' },
50
+ edgeColor: { type: 'color', label: 'Edge colour', default: '#ffffff' },
51
+ scale: { type: 'number', label: 'Pattern', default: 2.5, min: 0.5, max: 12, step: 0.1 },
52
+ duration: { type: 'number', label: 'Duration', default: 3.4, min: 0.3, max: 14, step: 0.1, unit: 's' },
53
+ },
54
+ apply(target, p, ctx) {
55
+ let st = target.userData[STATE];
56
+ if (!st) {
57
+ const field = createFieldState(target);
58
+ field.edgeWidth.value = 0.04;
59
+ const own = {
60
+ field, exit: { value: new Vector3(1, 0, 0) }, mode: { value: 0 }, speed: { value: 1 }, dirSign: { value: 1 }, bird: { value: 1 }, mats: new Set(),
61
+ };
62
+ const sample = sampleSurfaceCached(target, Math.round(Number(p.birds)), 53);
63
+ const n = sample.count;
64
+ const pos = sample.position.slice(0, n * 3);
65
+ own.mesh = createFxInstances(target, {
66
+ geometry: birdGeometry(),
67
+ count: n, positions: pos, colors: sample.color.slice(0, n * 3),
68
+ attributes: { aFlkP: [pos, 3], aFlkN: [sample.normal.slice(0, n * 3), 3], aFlkR: [sample.random.slice(0, n * 4), 4] },
69
+ layerKey: 'flockInstances', roughness: 0.65, metalness: 0, doubleSided: true,
70
+ layer: {
71
+ uniforms: { ...fieldUniforms(P, field), uFlkExit: own.exit, uFlkMode: own.mode, uFlkSpeed: own.speed, uFlkDirSign: own.dirSign, uFlkBird: own.bird },
72
+ common: fieldGlsl(P),
73
+ vertexPars: /* glsl */ `
74
+ attribute float aWing; attribute vec3 aFlkP; attribute vec3 aFlkN; attribute vec4 aFlkR;
75
+ float flkAge() { return (uFlkProgress - FlkBirthOf(FlkField(FlkNorm(aFlkP)))) / ${LIFE.toFixed(1)}; }
76
+ // offset from the bird's home spot at age a (0..1)
77
+ vec3 flkPath(float a) {
78
+ float E = uFlkExtent;
79
+ float take = smoothstep(0.0, 0.1, a);
80
+ vec3 hop = (aFlkN * 0.06 + vec3(0.0, 0.05, 0.0)) * E * take;
81
+ float t = max(a - 0.06, 0.0);
82
+ vec3 C = uFlkMin + uFlkSize * 0.5;
83
+ vec3 away = normalize(vec3(aFlkP.x - C.x, 0.0, aFlkP.z - C.z) + (aFlkR.xyz - 0.5) * 0.7 + vec3(1e-3, 0.0, 0.0));
84
+ vec3 dir = uFlkMode < 0.5
85
+ ? normalize(away + vec3(0.0, 0.55 + 0.45 * aFlkR.y, 0.0))
86
+ : normalize(uFlkExit + (aFlkR.xyz - 0.5) * 0.45 + vec3(0.0, 0.2 + 0.2 * aFlkR.y, 0.0));
87
+ float dist = E * uFlkSpeed * (1.0 * t + 5.5 * t * t);
88
+ vec3 sideV = normalize(cross(dir, vec3(0.0, 1.0, 0.0)) + vec3(1e-3));
89
+ vec3 curve = sideV * sin(t * 4.0 + aFlkR.z * 6.28) * 0.28 * E * t
90
+ + vec3(0.0, 1.0, 0.0) * sin(t * 3.0 + aFlkR.w * 6.28) * 0.12 * E * t;
91
+ return hop + dir * dist + curve;
92
+ }
93
+ // the bird's frame: facing the way it moves (backwards in time when reverting)
94
+ mat3 flkFrame(float a) {
95
+ float a0 = min(a, 0.99);
96
+ vec3 v = (flkPath(a0 + 0.01) - flkPath(a0)) * uFlkDirSign;
97
+ vec3 fwd = length(v) > 1e-6 ? normalize(v) : vec3(0.0, 0.0, 1.0);
98
+ vec3 right = normalize(cross(fwd, vec3(0.0, 1.0, 0.0)) + vec3(1e-4));
99
+ vec3 up = cross(right, fwd);
100
+ return mat3(right, up, fwd);
101
+ }`,
102
+ normal: `{ objectNormal = flkFrame(clamp(flkAge(), 0.0, 1.0)) * objectNormal; }`,
103
+ vertex: /* glsl */ `
104
+ {
105
+ float a = flkAge();
106
+ if (a <= 0.0) { transformed *= 0.0; }
107
+ else {
108
+ a = min(a, 1.0);
109
+ vec3 v = transformed;
110
+ // wing beat: fast, with a little variation per bird
111
+ v.y += abs(aWing) * sin(uFlkTime * (16.0 + 6.0 * aFlkR.x) + aFlkR.y * 6.28) * 0.38;
112
+ float size = uFlkExtent * 0.03 * uFlkBird * (0.8 + 0.4 * aFlkR.w);
113
+ float sc = smoothstep(0.0, 0.06, a) * (1.0 - smoothstep(0.88, 1.0, a));
114
+ transformed = flkFrame(a) * (v * size * sc) + flkPath(a);
115
+ }
116
+ }`,
117
+ },
118
+ });
119
+ const layer = surfaceLayer(P, field, 'tint');
120
+ forEachMeshMaterial(target, (mat, m) => {
121
+ if (m.userData?.__opFxHelper)
122
+ return;
123
+ if (addLayer(mat, KEY, layer))
124
+ own.mats.add(mat);
125
+ });
126
+ st = own;
127
+ target.userData[STATE] = st;
128
+ }
129
+ const s = st;
130
+ setFieldParams(s.field, p, target, ctx);
131
+ s.speed.value = Number(p.speed);
132
+ s.bird.value = Number(p.birdSize);
133
+ s.dirSign.value = 1;
134
+ s.mode.value = p.exit === 'away' ? 0 : 1;
135
+ if (p.exit === 'up')
136
+ s.exit.value.set(0, 1, 0);
137
+ else if (p.exit === 'left' || p.exit === 'right') {
138
+ const r = screenRight(target, ctx);
139
+ s.exit.value.copy(p.exit === 'left' ? r : r.negate());
140
+ }
141
+ s.mesh.visible = true;
142
+ return runProgress(target, s.field, 1 + LIFE, {
143
+ duration: Number(p.duration), ease: 'power1.in',
144
+ onComplete: () => { hideMeshes(target, KEY, true); s.mesh.visible = false; },
145
+ });
146
+ },
147
+ revert(target, p) {
148
+ const s = target.userData[STATE];
149
+ if (!s)
150
+ return;
151
+ hideMeshes(target, KEY, false);
152
+ s.mesh.visible = true;
153
+ s.dirSign.value = -1;
154
+ return runProgress(target, s.field, 0, {
155
+ duration: Number(p.duration), ease: 'power1.out',
156
+ onComplete: () => {
157
+ s.mats.forEach(m => removeLayer(m, KEY));
158
+ disposeFxInstances(s.mesh);
159
+ delete target.userData[STATE];
160
+ },
161
+ });
162
+ },
163
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/focus.ts"],"names":[],"mappings":";AAGA,wBAmBG"}
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/focus.ts"],"names":[],"mappings":";AAGA,wBAoBG"}
@@ -4,6 +4,7 @@ export default defineOperation({
4
4
  value: 'focus',
5
5
  label: 'Look at',
6
6
  description: 'Turn the camera to face the target, without moving it',
7
+ channel: 'camera',
7
8
  multi: false,
8
9
  toggles: true,
9
10
  usableIn: ['interaction', 'action'],
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/frame.ts"],"names":[],"mappings":";AAOA,wBAkCG"}
@@ -0,0 +1,44 @@
1
+ // Frame — fly the camera so the whole target fills the view, from the side the
2
+ // camera is already on (unlike Zoom, which stands a fixed distance in front of
3
+ // the target's face). Reverting flies back.
4
+ import { Box3, Sphere, Vector3 } from 'three';
5
+ import cameraManager from '../../utils/CameraSingleton.js';
6
+ import { defineOperation } from '../types.js';
7
+ export default defineOperation({
8
+ value: 'frame',
9
+ label: 'Frame',
10
+ description: 'Fly the camera so the whole target fits the view, keeping the current viewing side',
11
+ channel: 'camera',
12
+ multi: false,
13
+ toggles: true,
14
+ usableIn: ['interaction', 'action'],
15
+ exclusive: { group: 'camera', release: 'handover' },
16
+ params: {
17
+ margin: { type: 'number', label: 'Margin', default: 1.25, min: 1, max: 4, step: 0.05, unit: '×', hint: 'Room around the object — 1 fits it edge to edge' },
18
+ duration: { type: 'number', label: 'Duration', default: 1.2, min: 0, max: 10, step: 0.05, unit: 's' },
19
+ },
20
+ apply(target, p, ctx) {
21
+ const pose = ctx.tools.cameraPose();
22
+ const cam = cameraManager.getCamera();
23
+ if (!pose || !cam)
24
+ return;
25
+ const sphere = new Box3().setFromObject(target).getBoundingSphere(new Sphere());
26
+ if (!Number.isFinite(sphere.radius) || sphere.radius <= 0)
27
+ return;
28
+ ctx.saveCameraHome();
29
+ // the tighter of the vertical and horizontal fields of view decides the distance
30
+ const vFov = (cam.fov * Math.PI) / 180;
31
+ const hFov = 2 * Math.atan(Math.tan(vFov / 2) * cam.aspect);
32
+ const fit = sphere.radius / Math.sin(Math.min(vFov, hFov) / 2);
33
+ const dist = Math.max(fit * Number(p.margin), cam.near * 2);
34
+ const dir = new Vector3(...pose.position).sub(sphere.center);
35
+ if (dir.lengthSq() < 1e-8)
36
+ dir.set(0, 0, 1);
37
+ const to = sphere.center.clone().add(dir.normalize().multiplyScalar(dist));
38
+ const c = sphere.center;
39
+ void ctx.tools.animateCamera({ position: [to.x, to.y, to.z] }, Number(p.duration), 'power3.inOut', [c.x, c.y, c.z]);
40
+ },
41
+ revert(_target, p, ctx) {
42
+ ctx.restoreCameraHome(Number(p.duration), 'power3.inOut');
43
+ },
44
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=frost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frost.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/frost.ts"],"names":[],"mappings":";AAoEA,wBA4CG"}