@3driseai/3drise-viewer 0.1.26 → 0.1.27

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 (456) 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/Bubbles.d.ts +7 -1
  25. package/dist/components/Bubbles.d.ts.map +1 -1
  26. package/dist/components/Bubbles.js +42 -22
  27. package/dist/components/ChladniGrid.d.ts +8 -4
  28. package/dist/components/ChladniGrid.d.ts.map +1 -1
  29. package/dist/components/ChladniGrid.js +31 -13
  30. package/dist/components/CircuitGrid.d.ts +8 -11
  31. package/dist/components/CircuitGrid.d.ts.map +1 -1
  32. package/dist/components/CircuitGrid.js +31 -13
  33. package/dist/components/CloudsGenerator.d.ts +1 -1
  34. package/dist/components/CloudsGenerator.js +1 -1
  35. package/dist/components/ContourGrid.d.ts +8 -14
  36. package/dist/components/ContourGrid.d.ts.map +1 -1
  37. package/dist/components/ContourGrid.js +31 -13
  38. package/dist/components/EffectsGenerator.d.ts +7 -1
  39. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  40. package/dist/components/EffectsGenerator.js +39 -38
  41. package/dist/components/EnvironmentManager.d.ts +4 -4
  42. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  43. package/dist/components/FlowNetGrid.d.ts +8 -4
  44. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  45. package/dist/components/FlowNetGrid.js +31 -13
  46. package/dist/components/FractalGrid.d.ts +8 -12
  47. package/dist/components/FractalGrid.d.ts.map +1 -1
  48. package/dist/components/FractalGrid.js +31 -13
  49. package/dist/components/GirihGrid.d.ts +8 -1
  50. package/dist/components/GirihGrid.d.ts.map +1 -1
  51. package/dist/components/GirihGrid.js +31 -13
  52. package/dist/components/Glyphs.d.ts +7 -1
  53. package/dist/components/Glyphs.d.ts.map +1 -1
  54. package/dist/components/Glyphs.js +40 -34
  55. package/dist/components/GravWaveGrid.d.ts +8 -1
  56. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  57. package/dist/components/GravWaveGrid.js +31 -13
  58. package/dist/components/GridsGenerator.d.ts +7 -1
  59. package/dist/components/GridsGenerator.d.ts.map +1 -1
  60. package/dist/components/GridsGenerator.js +20 -18
  61. package/dist/components/HexGrid.d.ts +8 -10
  62. package/dist/components/HexGrid.d.ts.map +1 -1
  63. package/dist/components/HexGrid.js +31 -13
  64. package/dist/components/HyperbolicGrid.d.ts +8 -4
  65. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  66. package/dist/components/HyperbolicGrid.js +31 -13
  67. package/dist/components/LandscapeBuilder.d.ts +1 -1
  68. package/dist/components/LandscapeBuilder.d.ts.map +1 -1
  69. package/dist/components/LandscapeBuilder.js +1 -1
  70. package/dist/components/LandscapeObject.d.ts +1 -1
  71. package/dist/components/LandscapeObject.d.ts.map +1 -1
  72. package/dist/components/LandscapeObject.js +1 -1
  73. package/dist/components/MoireGrid.d.ts +8 -12
  74. package/dist/components/MoireGrid.d.ts.map +1 -1
  75. package/dist/components/MoireGrid.js +31 -13
  76. package/dist/components/ObjectNode.d.ts.map +1 -1
  77. package/dist/components/ObjectNode.js +2 -2
  78. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  79. package/dist/components/ObjectsRenderer.js +37 -3
  80. package/dist/components/OceanBuilder.d.ts +1 -1
  81. package/dist/components/OceanBuilder.js +1 -1
  82. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  83. package/dist/components/ParticlesGenerator.js +6 -0
  84. package/dist/components/QuasiGrid.d.ts +8 -11
  85. package/dist/components/QuasiGrid.d.ts.map +1 -1
  86. package/dist/components/QuasiGrid.js +31 -13
  87. package/dist/components/RadarGrid.d.ts +8 -13
  88. package/dist/components/RadarGrid.d.ts.map +1 -1
  89. package/dist/components/RadarGrid.js +31 -13
  90. package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
  91. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  92. package/dist/components/ReactionDiffusionGrid.js +33 -139
  93. package/dist/components/SceneBuilder.js +1 -1
  94. package/dist/components/SkySystem.d.ts +1 -1
  95. package/dist/components/SparklesBurst.d.ts +7 -1
  96. package/dist/components/SparklesBurst.d.ts.map +1 -1
  97. package/dist/components/SparklesBurst.js +31 -28
  98. package/dist/components/TerrainBuilder.d.ts +1 -1
  99. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  100. package/dist/components/TerrainBuilder.js +1 -1
  101. package/dist/components/VoronoiGrid.d.ts +8 -10
  102. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  103. package/dist/components/VoronoiGrid.js +31 -13
  104. package/dist/components/WallpaperGrid.d.ts +8 -1
  105. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  106. package/dist/components/WallpaperGrid.js +33 -210
  107. package/dist/components/effects/AuraEffect.d.ts +8 -3
  108. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  109. package/dist/components/effects/AuraEffect.js +49 -24
  110. package/dist/components/effects/AuroraEffect.d.ts +8 -3
  111. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  112. package/dist/components/effects/AuroraEffect.js +45 -25
  113. package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
  114. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  115. package/dist/components/effects/BlackHoleEffect.js +42 -21
  116. package/dist/components/effects/ConstellationEffect.d.ts +8 -3
  117. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  118. package/dist/components/effects/ConstellationEffect.js +49 -23
  119. package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
  120. package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
  121. package/dist/components/effects/DandelionSeedsEffect.js +19 -9
  122. package/dist/components/effects/DataStreamEffect.d.ts +8 -3
  123. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  124. package/dist/components/effects/DataStreamEffect.js +54 -26
  125. package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
  126. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  127. package/dist/components/effects/DnaHelixEffect.js +62 -30
  128. package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
  129. package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
  130. package/dist/components/effects/FallingLeavesEffect.js +19 -9
  131. package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
  132. package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
  133. package/dist/components/effects/FieldLinesEffect.js +30 -20
  134. package/dist/components/effects/Fire.d.ts +8 -3
  135. package/dist/components/effects/Fire.d.ts.map +1 -1
  136. package/dist/components/effects/Fire.js +47 -10
  137. package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
  138. package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
  139. package/dist/components/effects/FireflySwarmEffect.js +19 -9
  140. package/dist/components/effects/Flares.d.ts +10 -3
  141. package/dist/components/effects/Flares.d.ts.map +1 -1
  142. package/dist/components/effects/Flares.js +53 -56
  143. package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
  144. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  145. package/dist/components/effects/ForcefieldEffect.js +52 -33
  146. package/dist/components/effects/GalaxyEffect.d.ts +7 -2
  147. package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
  148. package/dist/components/effects/GalaxyEffect.js +19 -9
  149. package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
  150. package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
  151. package/dist/components/effects/HarmonicShellEffect.js +30 -22
  152. package/dist/components/effects/HologramEffect.d.ts +8 -3
  153. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  154. package/dist/components/effects/HologramEffect.js +52 -23
  155. package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
  156. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  157. package/dist/components/effects/IceCrystalsEffect.js +36 -21
  158. package/dist/components/effects/IceHaloEffect.d.ts +7 -2
  159. package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
  160. package/dist/components/effects/IceHaloEffect.js +19 -9
  161. package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
  162. package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
  163. package/dist/components/effects/LichtenbergEffect.js +19 -9
  164. package/dist/components/effects/LightningEffect.d.ts +8 -3
  165. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  166. package/dist/components/effects/LightningEffect.js +54 -32
  167. package/dist/components/effects/MoleculesEffect.d.ts +8 -3
  168. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  169. package/dist/components/effects/MoleculesEffect.js +31 -21
  170. package/dist/components/effects/MurmurationEffect.d.ts +7 -2
  171. package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
  172. package/dist/components/effects/MurmurationEffect.js +19 -9
  173. package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
  174. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  175. package/dist/components/effects/NeuralNetworkEffect.js +66 -33
  176. package/dist/components/effects/OrbEffect.d.ts +8 -3
  177. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  178. package/dist/components/effects/OrbEffect.js +89 -42
  179. package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
  180. package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
  181. package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
  182. package/dist/components/effects/PortalEffect.d.ts +8 -3
  183. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  184. package/dist/components/effects/PortalEffect.js +41 -25
  185. package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
  186. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  187. package/dist/components/effects/ShockwaveEffect.js +19 -9
  188. package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
  189. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  190. package/dist/components/effects/SmokePlumeEffect.js +30 -20
  191. package/dist/components/effects/SmokeRibbon.d.ts +8 -2
  192. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  193. package/dist/components/effects/SmokeRibbon.js +34 -24
  194. package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
  195. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  196. package/dist/components/effects/SmokeRingEffect.js +33 -21
  197. package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
  198. package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
  199. package/dist/components/effects/StrangeAttractorEffect.js +30 -20
  200. package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
  201. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  202. package/dist/components/effects/VolumetricFogEffect.js +38 -20
  203. package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
  204. package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
  205. package/dist/components/effects/WaterCausticsEffect.js +19 -9
  206. package/dist/components/effects/index.d.ts +0 -1
  207. package/dist/components/effects/index.d.ts.map +1 -1
  208. package/dist/components/effects/index.js +0 -1
  209. package/dist/components/index.d.ts +0 -1
  210. package/dist/components/index.d.ts.map +1 -1
  211. package/dist/components/index.js +0 -1
  212. package/dist/components/landscape/LandscapeMesh.js +1 -1
  213. package/dist/components/landscape/types.d.ts +1 -1
  214. package/dist/components/landscape/types.d.ts.map +1 -1
  215. package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
  216. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
  217. package/dist/components/particles/MagneticBottleParticles.js +618 -0
  218. package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
  219. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
  220. package/dist/components/particles/ShapeBurstParticles.js +588 -0
  221. package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
  222. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
  223. package/dist/components/particles/ShapeFlowParticles.js +755 -0
  224. package/dist/components/particles/index.d.ts +6 -0
  225. package/dist/components/particles/index.d.ts.map +1 -1
  226. package/dist/components/particles/index.js +3 -0
  227. package/dist/components/terrain/types.d.ts +1 -1
  228. package/dist/components/terrain/types.d.ts.map +1 -1
  229. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
  230. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  231. package/dist/components/volumetricClouds/types.d.ts +1 -1
  232. package/dist/components/volumetricClouds/types.d.ts.map +1 -1
  233. package/dist/components/water/types.d.ts +1 -1
  234. package/dist/components/water/types.d.ts.map +1 -1
  235. package/dist/constants.d.ts +1 -1
  236. package/dist/constants.d.ts.map +1 -1
  237. package/dist/constants.js +1 -1
  238. package/dist/hooks/index.d.ts +2 -0
  239. package/dist/hooks/index.d.ts.map +1 -1
  240. package/dist/hooks/index.js +1 -0
  241. package/dist/hooks/useConfigDriver.d.ts +22 -0
  242. package/dist/hooks/useConfigDriver.d.ts.map +1 -0
  243. package/dist/hooks/useConfigDriver.js +43 -0
  244. package/dist/hooks/useConfigLive.d.ts +1 -1
  245. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  246. package/dist/hooks/useLandscapeMaps.d.ts +1 -1
  247. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
  248. package/dist/hooks/useOceanMaterial.d.ts +1 -1
  249. package/dist/hooks/useThunder.d.ts +1 -1
  250. package/dist/index.d.ts +1 -2
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +1 -2
  253. package/dist/interactions/index.d.ts +2 -1
  254. package/dist/interactions/index.d.ts.map +1 -1
  255. package/dist/interactions/index.js +1 -1
  256. package/dist/interactions/runner.d.ts +18 -3
  257. package/dist/interactions/runner.d.ts.map +1 -1
  258. package/dist/interactions/runner.js +25 -2
  259. package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
  260. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
  261. package/dist/operations/catalogue/curlSmoke.js +178 -0
  262. package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
  263. package/dist/operations/catalogue/displayImage.js +1 -0
  264. package/dist/operations/catalogue/dissolve.d.ts +3 -0
  265. package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
  266. package/dist/operations/catalogue/dissolve.js +57 -0
  267. package/dist/operations/catalogue/emberAsh.d.ts +3 -0
  268. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
  269. package/dist/operations/catalogue/emberAsh.js +171 -0
  270. package/dist/operations/catalogue/fade.d.ts.map +1 -1
  271. package/dist/operations/catalogue/fade.js +1 -0
  272. package/dist/operations/catalogue/flip.d.ts +3 -0
  273. package/dist/operations/catalogue/flip.d.ts.map +1 -0
  274. package/dist/operations/catalogue/flip.js +69 -0
  275. package/dist/operations/catalogue/flock.d.ts +3 -0
  276. package/dist/operations/catalogue/flock.d.ts.map +1 -0
  277. package/dist/operations/catalogue/flock.js +163 -0
  278. package/dist/operations/catalogue/focus.d.ts.map +1 -1
  279. package/dist/operations/catalogue/focus.js +1 -0
  280. package/dist/operations/catalogue/frame.d.ts +3 -0
  281. package/dist/operations/catalogue/frame.d.ts.map +1 -0
  282. package/dist/operations/catalogue/frame.js +44 -0
  283. package/dist/operations/catalogue/frost.d.ts +3 -0
  284. package/dist/operations/catalogue/frost.d.ts.map +1 -0
  285. package/dist/operations/catalogue/frost.js +111 -0
  286. package/dist/operations/catalogue/fxInstances.d.ts +21 -0
  287. package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
  288. package/dist/operations/catalogue/fxInstances.js +47 -0
  289. package/dist/operations/catalogue/fxPoints.d.ts +22 -0
  290. package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
  291. package/dist/operations/catalogue/fxPoints.js +70 -0
  292. package/dist/operations/catalogue/glow.d.ts.map +1 -1
  293. package/dist/operations/catalogue/glow.js +2 -1
  294. package/dist/operations/catalogue/heatCracks.d.ts +3 -0
  295. package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
  296. package/dist/operations/catalogue/heatCracks.js +134 -0
  297. package/dist/operations/catalogue/hologram.d.ts +3 -0
  298. package/dist/operations/catalogue/hologram.d.ts.map +1 -0
  299. package/dist/operations/catalogue/hologram.js +118 -0
  300. package/dist/operations/catalogue/inkBloom.d.ts +3 -0
  301. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
  302. package/dist/operations/catalogue/inkBloom.js +156 -0
  303. package/dist/operations/catalogue/ivy.d.ts +13 -0
  304. package/dist/operations/catalogue/ivy.d.ts.map +1 -0
  305. package/dist/operations/catalogue/ivy.js +469 -0
  306. package/dist/operations/catalogue/jelly.d.ts +3 -0
  307. package/dist/operations/catalogue/jelly.d.ts.map +1 -0
  308. package/dist/operations/catalogue/jelly.js +50 -0
  309. package/dist/operations/catalogue/kintsugi.d.ts +3 -0
  310. package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
  311. package/dist/operations/catalogue/kintsugi.js +173 -0
  312. package/dist/operations/catalogue/lidarScan.d.ts +3 -0
  313. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
  314. package/dist/operations/catalogue/lidarScan.js +240 -0
  315. package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
  316. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
  317. package/dist/operations/catalogue/liquidMetal.js +122 -0
  318. package/dist/operations/catalogue/metalize.d.ts +3 -0
  319. package/dist/operations/catalogue/metalize.d.ts.map +1 -0
  320. package/dist/operations/catalogue/metalize.js +135 -0
  321. package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
  322. package/dist/operations/catalogue/moveToFront.js +1 -0
  323. package/dist/operations/catalogue/orbit.d.ts +3 -0
  324. package/dist/operations/catalogue/orbit.d.ts.map +1 -0
  325. package/dist/operations/catalogue/orbit.js +29 -0
  326. package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
  327. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
  328. package/dist/operations/catalogue/particleSwarm.js +138 -0
  329. package/dist/operations/catalogue/petalPeel.d.ts +3 -0
  330. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
  331. package/dist/operations/catalogue/petalPeel.js +137 -0
  332. package/dist/operations/catalogue/petrify.d.ts +3 -0
  333. package/dist/operations/catalogue/petrify.d.ts.map +1 -0
  334. package/dist/operations/catalogue/petrify.js +94 -0
  335. package/dist/operations/catalogue/portal.d.ts +3 -0
  336. package/dist/operations/catalogue/portal.d.ts.map +1 -0
  337. package/dist/operations/catalogue/portal.js +224 -0
  338. package/dist/operations/catalogue/print3d.d.ts +3 -0
  339. package/dist/operations/catalogue/print3d.d.ts.map +1 -0
  340. package/dist/operations/catalogue/print3d.js +275 -0
  341. package/dist/operations/catalogue/rainBeads.d.ts +3 -0
  342. package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
  343. package/dist/operations/catalogue/rainBeads.js +223 -0
  344. package/dist/operations/catalogue/restPose.d.ts +21 -0
  345. package/dist/operations/catalogue/restPose.d.ts.map +1 -0
  346. package/dist/operations/catalogue/restPose.js +55 -0
  347. package/dist/operations/catalogue/rimLight.d.ts +3 -0
  348. package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
  349. package/dist/operations/catalogue/rimLight.js +72 -0
  350. package/dist/operations/catalogue/sandErosion.d.ts +3 -0
  351. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
  352. package/dist/operations/catalogue/sandErosion.js +167 -0
  353. package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
  354. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
  355. package/dist/operations/catalogue/shaderLayers.js +322 -0
  356. package/dist/operations/catalogue/shatter.d.ts +3 -0
  357. package/dist/operations/catalogue/shatter.d.ts.map +1 -0
  358. package/dist/operations/catalogue/shatter.js +267 -0
  359. package/dist/operations/catalogue/silkDrape.d.ts +3 -0
  360. package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
  361. package/dist/operations/catalogue/silkDrape.js +340 -0
  362. package/dist/operations/catalogue/spin.d.ts +3 -0
  363. package/dist/operations/catalogue/spin.d.ts.map +1 -0
  364. package/dist/operations/catalogue/spin.js +42 -0
  365. package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
  366. package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
  367. package/dist/operations/catalogue/surfaceSample.js +187 -0
  368. package/dist/operations/catalogue/swirl.d.ts +3 -0
  369. package/dist/operations/catalogue/swirl.d.ts.map +1 -0
  370. package/dist/operations/catalogue/swirl.js +69 -0
  371. package/dist/operations/catalogue/teleport.d.ts +3 -0
  372. package/dist/operations/catalogue/teleport.d.ts.map +1 -0
  373. package/dist/operations/catalogue/teleport.js +213 -0
  374. package/dist/operations/catalogue/transitionField.d.ts +124 -0
  375. package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
  376. package/dist/operations/catalogue/transitionField.js +278 -0
  377. package/dist/operations/catalogue/unweave.d.ts +3 -0
  378. package/dist/operations/catalogue/unweave.d.ts.map +1 -0
  379. package/dist/operations/catalogue/unweave.js +233 -0
  380. package/dist/operations/catalogue/visibility.d.ts.map +1 -1
  381. package/dist/operations/catalogue/visibility.js +1 -0
  382. package/dist/operations/catalogue/voxelize.d.ts +3 -0
  383. package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
  384. package/dist/operations/catalogue/voxelize.js +148 -0
  385. package/dist/operations/catalogue/warmup.d.ts +22 -0
  386. package/dist/operations/catalogue/warmup.d.ts.map +1 -0
  387. package/dist/operations/catalogue/warmup.js +106 -0
  388. package/dist/operations/catalogue/zoom.d.ts.map +1 -1
  389. package/dist/operations/catalogue/zoom.js +1 -0
  390. package/dist/operations/index.d.ts +4 -2
  391. package/dist/operations/index.d.ts.map +1 -1
  392. package/dist/operations/index.js +4 -2
  393. package/dist/operations/objectEffects.d.ts +46 -0
  394. package/dist/operations/objectEffects.d.ts.map +1 -0
  395. package/dist/operations/objectEffects.js +136 -0
  396. package/dist/operations/registry.d.ts +7 -2
  397. package/dist/operations/registry.d.ts.map +1 -1
  398. package/dist/operations/registry.js +45 -3
  399. package/dist/operations/runtime.d.ts +40 -2
  400. package/dist/operations/runtime.d.ts.map +1 -1
  401. package/dist/operations/runtime.js +164 -8
  402. package/dist/operations/types.d.ts +29 -3
  403. package/dist/operations/types.d.ts.map +1 -1
  404. package/dist/operations/types.js +6 -0
  405. package/dist/operations/useObjectEffectLayers.d.ts +4 -0
  406. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
  407. package/dist/operations/useObjectEffectLayers.js +42 -0
  408. package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
  409. package/dist/operations/useOperationsRuntime.js +42 -4
  410. package/dist/presets/landscapePresets.d.ts +1 -1
  411. package/dist/presets/landscapePresets.d.ts.map +1 -1
  412. package/dist/presets/landscapePresets.js +1 -1
  413. package/dist/presets/landscapeTypes.d.ts +1 -1
  414. package/dist/presets/landscapeTypes.d.ts.map +1 -1
  415. package/dist/presets/landscapeTypes.js +1 -1
  416. package/dist/presets/oceanSurfacePresets.d.ts +1 -1
  417. package/dist/presets/terrainPresets.d.ts +1 -1
  418. package/dist/presets/terrainPresets.d.ts.map +1 -1
  419. package/dist/presets/volumetricCloudPresets.d.ts +1 -1
  420. package/dist/types/cloudConfigs.d.ts +2 -309
  421. package/dist/types/cloudConfigs.d.ts.map +1 -1
  422. package/dist/types/cloudConfigs.js +2 -339
  423. package/dist/types/index.d.ts +8 -8
  424. package/dist/types/index.d.ts.map +1 -1
  425. package/dist/types/index.js +4 -4
  426. package/dist/types/landscapeConfigs.d.ts +2 -217
  427. package/dist/types/landscapeConfigs.d.ts.map +1 -1
  428. package/dist/types/landscapeConfigs.js +2 -256
  429. package/dist/types/oceanConfigs.d.ts +2 -289
  430. package/dist/types/oceanConfigs.d.ts.map +1 -1
  431. package/dist/types/oceanConfigs.js +2 -380
  432. package/dist/types/terrainConfigs.d.ts +2 -250
  433. package/dist/types/terrainConfigs.d.ts.map +1 -1
  434. package/dist/types/terrainConfigs.js +2 -292
  435. package/dist/utils/cloudUniforms.d.ts +1 -1
  436. package/dist/utils/configAnimations.d.ts +6 -0
  437. package/dist/utils/configAnimations.d.ts.map +1 -1
  438. package/dist/utils/configAnimations.js +14 -0
  439. package/dist/utils/gridConfig.d.ts +19 -0
  440. package/dist/utils/gridConfig.d.ts.map +1 -0
  441. package/dist/utils/gridConfig.js +52 -0
  442. package/dist/utils/handleCloudsAnimations.d.ts +1 -1
  443. package/dist/utils/handleCloudsAnimations.js +1 -1
  444. package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
  445. package/dist/utils/hasHoverAnimation.js +0 -2
  446. package/dist/utils/landscapeUniforms.d.ts +1 -1
  447. package/dist/utils/landscapeUniforms.d.ts.map +1 -1
  448. package/dist/utils/oceanUniforms.d.ts +1 -1
  449. package/dist/utils/particleShape.d.ts +33 -0
  450. package/dist/utils/particleShape.d.ts.map +1 -0
  451. package/dist/utils/particleShape.js +207 -0
  452. package/dist/utils/particleTrails.d.ts.map +1 -1
  453. package/dist/utils/particleTrails.js +29 -14
  454. package/dist/utils/terrainUniforms.d.ts +1 -1
  455. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  456. package/package.json +2 -2
@@ -0,0 +1,178 @@
1
+ // Curl smoke — the object comes apart as soft smoke. Its surface is sampled into
2
+ // wisps that start out in the surface's own colours and fade to smoke as they
3
+ // leave. Each wisp is carried along a divergence-free curl-noise flow (the curl of
4
+ // a 3D noise potential, integrated along its path in the shader), so the smoke
5
+ // swirls into eddies and filaments instead of scattering. It rises on its own
6
+ // buoyancy, and every wisp swells and thins as it goes. Normal "over" blending,
7
+ // not additive glow, so it reads as smoke — pale on a dark scene, or dark as ink.
8
+ // Reverting draws the smoke back in and the object re-forms.
9
+ // With Disappear off (always, as an object effect) the whole object becomes
10
+ // smoke in its own shape: as the front passes, the surface gives way to wisps
11
+ // that stay on the shape — each one lifts a little off its spot on the curl flow,
12
+ // fades and is re-emitted, so the silhouette reads as living smoke — while one in
13
+ // ten curls off as a soft trail. Reverting gathers it back into the solid.
14
+ import { Color, Vector3 } from 'three';
15
+ import { defineOperation } from '../types.js';
16
+ import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
17
+ import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, hideMeshes, runProgress, setFieldParams, surfaceLayer, } from './transitionField.js';
18
+ import { sampleSurfaceCached } from './surfaceSample.js';
19
+ import { GLSL_POINT_SIZE, createFxPoints, disposeFxPoints } from './fxPoints.js';
20
+ const P = 'Smk';
21
+ /** Disappear off: the in / out run takes this share of the duration (it only goes to 1, not END). */
22
+ const KEEP_SPEED = 0.6;
23
+ const KEY = 'curlSmoke';
24
+ const STATE = '__opCurlSmoke';
25
+ /** A wisp lives LIFE progress units after the front passes it. */
26
+ const LIFE = 1.0;
27
+ const END = 1 + LIFE;
28
+ /** Curl of a 3D noise potential, and a path integrated through it (GLSL). */
29
+ const CURL = /* glsl */ `
30
+ vec3 smkPot(vec3 p) { return vec3(fxNoise(p), fxNoise(p + vec3(31.4, 7.7, 19.1)), fxNoise(p + vec3(-11.3, 43.9, 5.2))); }
31
+ vec3 smkCurl(vec3 p) {
32
+ const float e = 0.08;
33
+ vec3 dx = (smkPot(p + vec3(e, 0.0, 0.0)) - smkPot(p - vec3(e, 0.0, 0.0))) / (2.0 * e);
34
+ vec3 dy = (smkPot(p + vec3(0.0, e, 0.0)) - smkPot(p - vec3(0.0, e, 0.0))) / (2.0 * e);
35
+ vec3 dz = (smkPot(p + vec3(0.0, 0.0, e)) - smkPot(p - vec3(0.0, 0.0, e))) / (2.0 * e);
36
+ return vec3(dy.z - dz.y, dz.x - dx.z, dx.y - dy.x);
37
+ }
38
+ `;
39
+ export default defineOperation({
40
+ value: 'curlSmoke',
41
+ label: 'Curl smoke',
42
+ description: 'Turn the targets into soft smoke that swirls away (or, Disappear off, keeps their shape) — reverting draws it back in',
43
+ channel: 'visual',
44
+ multi: true,
45
+ toggles: true,
46
+ usableIn: ['interaction', 'action', 'object'],
47
+ params: {
48
+ direction: { type: 'select', label: 'Direction', default: 'up', options: DIRECTION_OPTIONS },
49
+ smoke: { type: 'color', label: 'Smoke', default: '#d4d8df', hint: 'Pale for a dark scene, dark for ink on a light one' },
50
+ wisps: { type: 'number', label: 'Wisps', default: 24000, min: 4000, max: 90000, step: 1000 },
51
+ puff: { type: 'number', label: 'Softness', default: 1, min: 0.3, max: 3, step: 0.05, unit: '×', hint: 'How far each wisp swells' },
52
+ rise: { type: 'number', label: 'Rise', default: 1, min: 0, max: 3, step: 0.05, unit: '×' },
53
+ swirl: { type: 'number', label: 'Swirl', default: 1, min: 0.2, max: 3, step: 0.05, unit: '×' },
54
+ scale: { type: 'number', label: 'Front pattern', default: 2.5, min: 0.5, max: 12, step: 0.1 },
55
+ duration: { type: 'number', label: 'Duration', default: 4.5, min: 0.3, max: 14, step: 0.1, unit: 's' },
56
+ disappear: { type: 'boolean', label: 'Disappear', default: true, hint: 'Off: the whole object becomes smoke in its own shape and stays' },
57
+ },
58
+ objectParams: { disappear: false },
59
+ apply(target, p, ctx) {
60
+ let st = target.userData[STATE];
61
+ if (!st) {
62
+ const field = createFieldState(target);
63
+ field.edgeWidth.value = 0.035;
64
+ const own = {
65
+ field, smoke: { value: new Color() }, up: { value: new Vector3(0, 1, 0) }, rise: { value: 1 }, swirl: { value: 1 }, puff: { value: 1 }, dens: { value: 1 },
66
+ keep: { value: 0 },
67
+ mats: new Set(),
68
+ };
69
+ const sample = sampleSurfaceCached(target, Math.round(Number(p.wisps)), 23);
70
+ own.points = createFxPoints(target, sample, {
71
+ additive: false,
72
+ uniforms: { ...fieldUniforms(P, field), uSmkSmoke: own.smoke, uSmkUp: own.up, uSmkRise: own.rise, uSmkSwirl: own.swirl, uSmkPuff: own.puff, uSmkDens: own.dens, uSmkKeep: own.keep },
73
+ vertexPars: fieldGlsl(P) + GLSL_POINT_SIZE + CURL,
74
+ vertexMain: /* glsl */ `
75
+ float f = SmkField(SmkNorm(aP));
76
+ float E = uSmkExtent;
77
+ if (uSmkKeep > 0.5) {
78
+ // smoke in the object's own shape: switched on as the front passes, then each
79
+ // wisp cycles on its spot — lifts a little on the curl flow, fades, is re-emitted
80
+ float w = clamp((uSmkProgress - SmkBirthOf(f)) / 0.12, 0.0, 1.0);
81
+ if (w <= 0.0) { gl_Position = vec4(2.0, 2.0, 2.0, 1.0); gl_PointSize = 0.0; vColor = vec3(0.0); vAlpha = 0.0; return; }
82
+ float trail = step(0.9, aR.w); // one in ten curls off as a soft trail
83
+ float al = fract(uSmkTime * 0.2 * (0.7 + 0.6 * aR.y) + aR.x);
84
+ vec3 kq = aP / E * (4.0 * uSmkSwirl) + aR.xyz * 0.15;
85
+ vec3 kd = vec3(0.0);
86
+ float kh = al * mix(0.12, 0.3, trail);
87
+ for (int i = 0; i < 6; i++) {
88
+ vec3 v = smkCurl(kq + vec3(0.0, uSmkTime * 0.05, 0.0));
89
+ kd += v * kh;
90
+ kq += v * kh * 1.4 + uSmkUp * kh * 0.9 * uSmkRise;
91
+ }
92
+ vec3 kl = aP + aN * (E * (0.004 + 0.012 * al))
93
+ + kd * (E * mix(0.06, 0.45, trail) / uSmkSwirl)
94
+ + uSmkUp * (E * uSmkRise * mix(0.012 * al, 0.35 * al * al, trail));
95
+ vec4 kmv = modelViewMatrix * vec4(kl, 1.0);
96
+ gl_Position = projectionMatrix * kmv;
97
+ // smoke, with a hint of the surface's colours so the form still reads
98
+ vColor = mix(uSmkSmoke * (0.8 + 0.3 * aR.z), aC, 0.18);
99
+ float kg = 1.0 + mix(2.2, 9.0, trail) * uSmkPuff * al;
100
+ vAlpha = w * smoothstep(0.0, 0.2, al) * (1.0 - smoothstep(0.55, 1.0, al)) * clamp(0.26 * uSmkDens / kg, 0.0, 0.5) * (0.5 + 0.5 * aR.z);
101
+ gl_PointSize = clamp(fxPointPx(E * 0.0105 * kg, kmv), 1.0, 90.0);
102
+ return;
103
+ }
104
+ float a = (uSmkProgress - SmkBirthOf(f)) / ${LIFE.toFixed(2)};
105
+ 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; }
106
+ // integrate the path through the curl flow; the step grows with age, so the
107
+ // path is a smooth function of a (no state, same wisp every frame)
108
+ vec3 q = aP / E * (4.0 * uSmkSwirl) + aR.xyz * 0.15;
109
+ vec3 drift = vec3(0.0);
110
+ float h = a * 0.26;
111
+ for (int i = 0; i < 8; i++) {
112
+ vec3 v = smkCurl(q + vec3(0.0, uSmkTime * 0.05, 0.0));
113
+ drift += v * h;
114
+ q += v * h * 1.4 + uSmkUp * h * 0.9 * uSmkRise;
115
+ }
116
+ float ease = a * (0.35 + 0.65 * a);
117
+ vec3 local = aP + aN * (0.03 * E * sqrt(a))
118
+ + drift * (0.5 * E / uSmkSwirl)
119
+ + uSmkUp * (E * 0.55 * uSmkRise * ease * (0.6 + 0.8 * aR.y));
120
+ vec4 mv = modelViewMatrix * vec4(local, 1.0);
121
+ gl_Position = projectionMatrix * mv;
122
+ // colour: the surface's own, turning to smoke as it leaves
123
+ vColor = mix(aC, uSmkSmoke * (0.8 + 0.3 * aR.z), smoothstep(0.0, 0.35, a));
124
+ // a wisp swells and thins: roughly constant "mass" as it spreads
125
+ float grow = 1.0 + 12.0 * uSmkPuff * a * (0.6 + 0.8 * aR.z);
126
+ vAlpha = smoothstep(0.0, 0.05, a) * (1.0 - smoothstep(0.45, 1.0, a)) * clamp(0.3 * uSmkDens / grow, 0.0, 0.7) * (0.5 + 0.5 * aR.w);
127
+ gl_PointSize = clamp(fxPointPx(E * 0.0065 * grow, mv), 1.0, 90.0);`,
128
+ });
129
+ const layer = surfaceLayer(P, field, 'stain');
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.smoke.value.set(String(p.smoke));
142
+ s.field.edgeColor.value.set(String(p.smoke));
143
+ s.rise.value = Number(p.rise);
144
+ s.swirl.value = Number(p.swirl);
145
+ s.puff.value = Number(p.puff);
146
+ // the smoke's overall density must not depend on how many wisps carry it
147
+ s.dens.value = 12000 / Math.max(1000, s.points.geometry.getAttribute('aP').count);
148
+ // world up in the target's own space (smoke rises whatever the object's rotation)
149
+ target.updateWorldMatrix(true, false);
150
+ s.up.value.set(0, 1, 0).transformDirection(target.matrixWorld.clone().invert());
151
+ s.points.visible = true;
152
+ s.keep.value = p.disappear === false ? 1 : 0;
153
+ if (s.keep.value) {
154
+ return runProgress(target, s.field, 1, { duration: Number(p.duration) * KEEP_SPEED, ease: 'none', hold: true });
155
+ }
156
+ return runProgress(target, s.field, END, {
157
+ duration: Number(p.duration), ease: 'none',
158
+ onComplete: () => { hideMeshes(target, KEY, true); s.points.visible = false; },
159
+ });
160
+ },
161
+ revert(target, p) {
162
+ const s = target.userData[STATE];
163
+ if (!s)
164
+ return;
165
+ hideMeshes(target, KEY, false);
166
+ s.points.visible = true;
167
+ // same speed back, from wherever it got to
168
+ const span = s.keep.value ? 1 / KEEP_SPEED : END;
169
+ return runProgress(target, s.field, 0, {
170
+ duration: Number(p.duration) * Math.min(1, Math.max(0.1, s.field.progress.value / span)), ease: 'none',
171
+ onComplete: () => {
172
+ s.mats.forEach(m => removeLayer(m, KEY));
173
+ disposeFxPoints(s.points);
174
+ delete target.userData[STATE];
175
+ },
176
+ });
177
+ },
178
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"displayImage.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/displayImage.ts"],"names":[],"mappings":";AAGA,wBA4BG"}
1
+ {"version":3,"file":"displayImage.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/displayImage.ts"],"names":[],"mappings":";AAGA,wBA6BG"}
@@ -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"}