@3driseai/3drise-viewer 0.1.25 → 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 (509) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts +16 -0
  2. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -0
  3. package/dist/animationsV2/ClipPlayer.js +199 -0
  4. package/dist/animationsV2/ClipsRuntime.d.ts +150 -0
  5. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -0
  6. package/dist/animationsV2/ClipsRuntime.js +707 -0
  7. package/dist/animationsV2/appliers.d.ts +21 -0
  8. package/dist/animationsV2/appliers.d.ts.map +1 -0
  9. package/dist/animationsV2/appliers.js +222 -0
  10. package/dist/animationsV2/clipUtils.d.ts +33 -0
  11. package/dist/animationsV2/clipUtils.d.ts.map +1 -0
  12. package/dist/animationsV2/clipUtils.js +164 -0
  13. package/dist/animationsV2/elementSettings.d.ts +15 -0
  14. package/dist/animationsV2/elementSettings.d.ts.map +1 -0
  15. package/dist/animationsV2/elementSettings.js +16 -0
  16. package/dist/animationsV2/index.d.ts +16 -0
  17. package/dist/animationsV2/index.d.ts.map +1 -0
  18. package/dist/animationsV2/index.js +12 -0
  19. package/dist/animationsV2/nodeTracks.d.ts +13 -0
  20. package/dist/animationsV2/nodeTracks.d.ts.map +1 -0
  21. package/dist/animationsV2/nodeTracks.js +165 -0
  22. package/dist/animationsV2/normalize.d.ts +4 -0
  23. package/dist/animationsV2/normalize.d.ts.map +1 -0
  24. package/dist/animationsV2/normalize.js +60 -0
  25. package/dist/animationsV2/sequenceUtils.d.ts +98 -0
  26. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -0
  27. package/dist/animationsV2/sequenceUtils.js +220 -0
  28. package/dist/animationsV2/types.d.ts +115 -0
  29. package/dist/animationsV2/types.d.ts.map +1 -0
  30. package/dist/animationsV2/types.js +8 -0
  31. package/dist/api/sceneHandle.d.ts +56 -17
  32. package/dist/api/sceneHandle.d.ts.map +1 -1
  33. package/dist/api/sceneHandle.js +154 -77
  34. package/dist/components/AdvancedGrid.d.ts +8 -2
  35. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  36. package/dist/components/AdvancedGrid.js +31 -14
  37. package/dist/components/AnimatedObject.d.ts.map +1 -1
  38. package/dist/components/AnimatedObject.js +7 -5
  39. package/dist/components/Bubbles.d.ts +7 -1
  40. package/dist/components/Bubbles.d.ts.map +1 -1
  41. package/dist/components/Bubbles.js +42 -22
  42. package/dist/components/CameraController.d.ts.map +1 -1
  43. package/dist/components/CameraController.js +0 -44
  44. package/dist/components/ChladniGrid.d.ts +8 -4
  45. package/dist/components/ChladniGrid.d.ts.map +1 -1
  46. package/dist/components/ChladniGrid.js +31 -13
  47. package/dist/components/CircuitGrid.d.ts +8 -11
  48. package/dist/components/CircuitGrid.d.ts.map +1 -1
  49. package/dist/components/CircuitGrid.js +31 -13
  50. package/dist/components/Clouds.d.ts.map +1 -1
  51. package/dist/components/Clouds.js +0 -34
  52. package/dist/components/CloudsGenerator.d.ts +1 -1
  53. package/dist/components/CloudsGenerator.js +1 -1
  54. package/dist/components/ContourGrid.d.ts +8 -14
  55. package/dist/components/ContourGrid.d.ts.map +1 -1
  56. package/dist/components/ContourGrid.js +31 -13
  57. package/dist/components/CreatedObject.d.ts.map +1 -1
  58. package/dist/components/CreatedObject.js +19 -1
  59. package/dist/components/EffectsGenerator.d.ts +7 -1
  60. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  61. package/dist/components/EffectsGenerator.js +39 -38
  62. package/dist/components/EnvironmentManager.d.ts +4 -4
  63. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  64. package/dist/components/EnvironmentManager.js +1 -1
  65. package/dist/components/FlowNetGrid.d.ts +8 -4
  66. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  67. package/dist/components/FlowNetGrid.js +31 -13
  68. package/dist/components/FractalGrid.d.ts +8 -12
  69. package/dist/components/FractalGrid.d.ts.map +1 -1
  70. package/dist/components/FractalGrid.js +31 -13
  71. package/dist/components/GirihGrid.d.ts +8 -1
  72. package/dist/components/GirihGrid.d.ts.map +1 -1
  73. package/dist/components/GirihGrid.js +31 -13
  74. package/dist/components/Glyphs.d.ts +7 -1
  75. package/dist/components/Glyphs.d.ts.map +1 -1
  76. package/dist/components/Glyphs.js +40 -34
  77. package/dist/components/GravWaveGrid.d.ts +8 -1
  78. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  79. package/dist/components/GravWaveGrid.js +31 -13
  80. package/dist/components/GridsGenerator.d.ts +7 -1
  81. package/dist/components/GridsGenerator.d.ts.map +1 -1
  82. package/dist/components/GridsGenerator.js +20 -18
  83. package/dist/components/HexGrid.d.ts +8 -10
  84. package/dist/components/HexGrid.d.ts.map +1 -1
  85. package/dist/components/HexGrid.js +31 -13
  86. package/dist/components/HyperbolicGrid.d.ts +8 -4
  87. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  88. package/dist/components/HyperbolicGrid.js +31 -13
  89. package/dist/components/LandscapeBuilder.d.ts +1 -1
  90. package/dist/components/LandscapeBuilder.d.ts.map +1 -1
  91. package/dist/components/LandscapeBuilder.js +1 -1
  92. package/dist/components/LandscapeObject.d.ts +1 -1
  93. package/dist/components/LandscapeObject.d.ts.map +1 -1
  94. package/dist/components/LandscapeObject.js +1 -1
  95. package/dist/components/MoireGrid.d.ts +8 -12
  96. package/dist/components/MoireGrid.d.ts.map +1 -1
  97. package/dist/components/MoireGrid.js +31 -13
  98. package/dist/components/ObjectNode.d.ts.map +1 -1
  99. package/dist/components/ObjectNode.js +2 -2
  100. package/dist/components/ObjectsRenderer.d.ts +4 -1
  101. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  102. package/dist/components/ObjectsRenderer.js +57 -3
  103. package/dist/components/Ocean.d.ts.map +1 -1
  104. package/dist/components/Ocean.js +0 -63
  105. package/dist/components/OceanBuilder.d.ts +1 -1
  106. package/dist/components/OceanBuilder.js +1 -1
  107. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  108. package/dist/components/ParticlesGenerator.js +6 -0
  109. package/dist/components/QuasiGrid.d.ts +8 -11
  110. package/dist/components/QuasiGrid.d.ts.map +1 -1
  111. package/dist/components/QuasiGrid.js +31 -13
  112. package/dist/components/RadarGrid.d.ts +8 -13
  113. package/dist/components/RadarGrid.d.ts.map +1 -1
  114. package/dist/components/RadarGrid.js +31 -13
  115. package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
  116. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  117. package/dist/components/ReactionDiffusionGrid.js +33 -139
  118. package/dist/components/SceneBuilder.d.ts.map +1 -1
  119. package/dist/components/SceneBuilder.js +19 -4
  120. package/dist/components/SkyController.d.ts.map +1 -1
  121. package/dist/components/SkyController.js +0 -39
  122. package/dist/components/SkySystem.d.ts +1 -1
  123. package/dist/components/SparklesBurst.d.ts +7 -1
  124. package/dist/components/SparklesBurst.d.ts.map +1 -1
  125. package/dist/components/SparklesBurst.js +31 -28
  126. package/dist/components/Stars.d.ts.map +1 -1
  127. package/dist/components/Stars.js +3 -47
  128. package/dist/components/TerrainBuilder.d.ts +1 -1
  129. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  130. package/dist/components/TerrainBuilder.js +1 -1
  131. package/dist/components/VoronoiGrid.d.ts +8 -10
  132. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  133. package/dist/components/VoronoiGrid.js +31 -13
  134. package/dist/components/WallpaperGrid.d.ts +8 -1
  135. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  136. package/dist/components/WallpaperGrid.js +33 -210
  137. package/dist/components/effects/AuraEffect.d.ts +8 -3
  138. package/dist/components/effects/AuraEffect.d.ts.map +1 -1
  139. package/dist/components/effects/AuraEffect.js +49 -24
  140. package/dist/components/effects/AuroraEffect.d.ts +8 -3
  141. package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
  142. package/dist/components/effects/AuroraEffect.js +45 -25
  143. package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
  144. package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
  145. package/dist/components/effects/BlackHoleEffect.js +42 -21
  146. package/dist/components/effects/ConstellationEffect.d.ts +8 -3
  147. package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
  148. package/dist/components/effects/ConstellationEffect.js +49 -23
  149. package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
  150. package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
  151. package/dist/components/effects/DandelionSeedsEffect.js +19 -9
  152. package/dist/components/effects/DataStreamEffect.d.ts +8 -3
  153. package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
  154. package/dist/components/effects/DataStreamEffect.js +54 -26
  155. package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
  156. package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
  157. package/dist/components/effects/DnaHelixEffect.js +62 -30
  158. package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
  159. package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
  160. package/dist/components/effects/FallingLeavesEffect.js +19 -9
  161. package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
  162. package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
  163. package/dist/components/effects/FieldLinesEffect.js +30 -20
  164. package/dist/components/effects/Fire.d.ts +8 -3
  165. package/dist/components/effects/Fire.d.ts.map +1 -1
  166. package/dist/components/effects/Fire.js +47 -10
  167. package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
  168. package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
  169. package/dist/components/effects/FireflySwarmEffect.js +19 -9
  170. package/dist/components/effects/Flares.d.ts +10 -3
  171. package/dist/components/effects/Flares.d.ts.map +1 -1
  172. package/dist/components/effects/Flares.js +53 -56
  173. package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
  174. package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
  175. package/dist/components/effects/ForcefieldEffect.js +52 -33
  176. package/dist/components/effects/GalaxyEffect.d.ts +7 -2
  177. package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
  178. package/dist/components/effects/GalaxyEffect.js +19 -9
  179. package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
  180. package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
  181. package/dist/components/effects/HarmonicShellEffect.js +30 -22
  182. package/dist/components/effects/HologramEffect.d.ts +8 -3
  183. package/dist/components/effects/HologramEffect.d.ts.map +1 -1
  184. package/dist/components/effects/HologramEffect.js +52 -23
  185. package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
  186. package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
  187. package/dist/components/effects/IceCrystalsEffect.js +36 -21
  188. package/dist/components/effects/IceHaloEffect.d.ts +7 -2
  189. package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
  190. package/dist/components/effects/IceHaloEffect.js +19 -9
  191. package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
  192. package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
  193. package/dist/components/effects/LichtenbergEffect.js +19 -9
  194. package/dist/components/effects/LightningEffect.d.ts +8 -3
  195. package/dist/components/effects/LightningEffect.d.ts.map +1 -1
  196. package/dist/components/effects/LightningEffect.js +54 -32
  197. package/dist/components/effects/MoleculesEffect.d.ts +8 -3
  198. package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
  199. package/dist/components/effects/MoleculesEffect.js +31 -21
  200. package/dist/components/effects/MurmurationEffect.d.ts +7 -2
  201. package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
  202. package/dist/components/effects/MurmurationEffect.js +19 -9
  203. package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
  204. package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
  205. package/dist/components/effects/NeuralNetworkEffect.js +66 -33
  206. package/dist/components/effects/OrbEffect.d.ts +8 -3
  207. package/dist/components/effects/OrbEffect.d.ts.map +1 -1
  208. package/dist/components/effects/OrbEffect.js +89 -42
  209. package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
  210. package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
  211. package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
  212. package/dist/components/effects/PortalEffect.d.ts +8 -3
  213. package/dist/components/effects/PortalEffect.d.ts.map +1 -1
  214. package/dist/components/effects/PortalEffect.js +41 -25
  215. package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
  216. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  217. package/dist/components/effects/ShockwaveEffect.js +19 -9
  218. package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
  219. package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
  220. package/dist/components/effects/SmokePlumeEffect.js +30 -20
  221. package/dist/components/effects/SmokeRibbon.d.ts +8 -2
  222. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  223. package/dist/components/effects/SmokeRibbon.js +34 -24
  224. package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
  225. package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
  226. package/dist/components/effects/SmokeRingEffect.js +33 -21
  227. package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
  228. package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
  229. package/dist/components/effects/StrangeAttractorEffect.js +30 -20
  230. package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
  231. package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
  232. package/dist/components/effects/VolumetricFogEffect.js +38 -20
  233. package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
  234. package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
  235. package/dist/components/effects/WaterCausticsEffect.js +19 -9
  236. package/dist/components/effects/index.d.ts +0 -1
  237. package/dist/components/effects/index.d.ts.map +1 -1
  238. package/dist/components/effects/index.js +0 -1
  239. package/dist/components/index.d.ts +0 -1
  240. package/dist/components/index.d.ts.map +1 -1
  241. package/dist/components/index.js +0 -1
  242. package/dist/components/landscape/LandscapeMesh.js +1 -1
  243. package/dist/components/landscape/types.d.ts +1 -1
  244. package/dist/components/landscape/types.d.ts.map +1 -1
  245. package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
  246. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
  247. package/dist/components/particles/MagneticBottleParticles.js +618 -0
  248. package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
  249. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
  250. package/dist/components/particles/ShapeBurstParticles.js +588 -0
  251. package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
  252. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
  253. package/dist/components/particles/ShapeFlowParticles.js +755 -0
  254. package/dist/components/particles/index.d.ts +6 -0
  255. package/dist/components/particles/index.d.ts.map +1 -1
  256. package/dist/components/particles/index.js +3 -0
  257. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  258. package/dist/components/terrain/TerrainSurface.js +0 -5
  259. package/dist/components/terrain/types.d.ts +1 -1
  260. package/dist/components/terrain/types.d.ts.map +1 -1
  261. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
  262. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  263. package/dist/components/volumetricClouds/VolumetricCloudsPass.js +0 -6
  264. package/dist/components/volumetricClouds/types.d.ts +1 -1
  265. package/dist/components/volumetricClouds/types.d.ts.map +1 -1
  266. package/dist/components/water/types.d.ts +1 -1
  267. package/dist/components/water/types.d.ts.map +1 -1
  268. package/dist/constants.d.ts +1 -1
  269. package/dist/constants.d.ts.map +1 -1
  270. package/dist/constants.js +1 -1
  271. package/dist/hooks/index.d.ts +2 -2
  272. package/dist/hooks/index.d.ts.map +1 -1
  273. package/dist/hooks/index.js +1 -2
  274. package/dist/hooks/useConfigDriver.d.ts +22 -0
  275. package/dist/hooks/useConfigDriver.d.ts.map +1 -0
  276. package/dist/hooks/useConfigDriver.js +43 -0
  277. package/dist/hooks/useConfigLive.d.ts +1 -1
  278. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  279. package/dist/hooks/useInteraction.d.ts +6 -7
  280. package/dist/hooks/useInteraction.d.ts.map +1 -1
  281. package/dist/hooks/useInteraction.js +87 -268
  282. package/dist/hooks/useLandscapeMaps.d.ts +1 -1
  283. package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
  284. package/dist/hooks/useObjectAnimation.d.ts.map +1 -1
  285. package/dist/hooks/useObjectAnimation.js +0 -2
  286. package/dist/hooks/useOceanMaterial.d.ts +1 -1
  287. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  288. package/dist/hooks/useOceanMaterial.js +0 -5
  289. package/dist/hooks/useRuntimeSettings.d.ts +1 -1
  290. package/dist/hooks/useRuntimeSettings.js +1 -1
  291. package/dist/hooks/useThunder.d.ts +1 -1
  292. package/dist/index.d.ts +6 -4
  293. package/dist/index.d.ts.map +1 -1
  294. package/dist/index.js +4 -2
  295. package/dist/interactions/index.d.ts +4 -0
  296. package/dist/interactions/index.d.ts.map +1 -0
  297. package/dist/interactions/index.js +1 -0
  298. package/dist/interactions/runner.d.ts +24 -0
  299. package/dist/interactions/runner.d.ts.map +1 -0
  300. package/dist/interactions/runner.js +46 -0
  301. package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
  302. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
  303. package/dist/operations/catalogue/curlSmoke.js +178 -0
  304. package/dist/operations/catalogue/displayImage.d.ts +3 -0
  305. package/dist/operations/catalogue/displayImage.d.ts.map +1 -0
  306. package/dist/operations/catalogue/displayImage.js +40 -0
  307. package/dist/operations/catalogue/dissolve.d.ts +3 -0
  308. package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
  309. package/dist/operations/catalogue/dissolve.js +57 -0
  310. package/dist/operations/catalogue/emberAsh.d.ts +3 -0
  311. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
  312. package/dist/operations/catalogue/emberAsh.js +171 -0
  313. package/dist/operations/catalogue/fade.d.ts +3 -0
  314. package/dist/operations/catalogue/fade.d.ts.map +1 -0
  315. package/dist/operations/catalogue/fade.js +45 -0
  316. package/dist/operations/catalogue/flip.d.ts +3 -0
  317. package/dist/operations/catalogue/flip.d.ts.map +1 -0
  318. package/dist/operations/catalogue/flip.js +69 -0
  319. package/dist/operations/catalogue/flock.d.ts +3 -0
  320. package/dist/operations/catalogue/flock.d.ts.map +1 -0
  321. package/dist/operations/catalogue/flock.js +163 -0
  322. package/dist/operations/catalogue/focus.d.ts +3 -0
  323. package/dist/operations/catalogue/focus.d.ts.map +1 -0
  324. package/dist/operations/catalogue/focus.js +23 -0
  325. package/dist/operations/catalogue/frame.d.ts +3 -0
  326. package/dist/operations/catalogue/frame.d.ts.map +1 -0
  327. package/dist/operations/catalogue/frame.js +44 -0
  328. package/dist/operations/catalogue/frost.d.ts +3 -0
  329. package/dist/operations/catalogue/frost.d.ts.map +1 -0
  330. package/dist/operations/catalogue/frost.js +111 -0
  331. package/dist/operations/catalogue/fxInstances.d.ts +21 -0
  332. package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
  333. package/dist/operations/catalogue/fxInstances.js +47 -0
  334. package/dist/operations/catalogue/fxPoints.d.ts +22 -0
  335. package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
  336. package/dist/operations/catalogue/fxPoints.js +70 -0
  337. package/dist/operations/catalogue/glow.d.ts +3 -0
  338. package/dist/operations/catalogue/glow.d.ts.map +1 -0
  339. package/dist/operations/catalogue/glow.js +50 -0
  340. package/dist/operations/catalogue/heatCracks.d.ts +3 -0
  341. package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
  342. package/dist/operations/catalogue/heatCracks.js +134 -0
  343. package/dist/operations/catalogue/hologram.d.ts +3 -0
  344. package/dist/operations/catalogue/hologram.d.ts.map +1 -0
  345. package/dist/operations/catalogue/hologram.js +118 -0
  346. package/dist/operations/catalogue/inkBloom.d.ts +3 -0
  347. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
  348. package/dist/operations/catalogue/inkBloom.js +156 -0
  349. package/dist/operations/catalogue/ivy.d.ts +13 -0
  350. package/dist/operations/catalogue/ivy.d.ts.map +1 -0
  351. package/dist/operations/catalogue/ivy.js +469 -0
  352. package/dist/operations/catalogue/jelly.d.ts +3 -0
  353. package/dist/operations/catalogue/jelly.d.ts.map +1 -0
  354. package/dist/operations/catalogue/jelly.js +50 -0
  355. package/dist/operations/catalogue/kintsugi.d.ts +3 -0
  356. package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
  357. package/dist/operations/catalogue/kintsugi.js +173 -0
  358. package/dist/operations/catalogue/lidarScan.d.ts +3 -0
  359. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
  360. package/dist/operations/catalogue/lidarScan.js +240 -0
  361. package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
  362. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
  363. package/dist/operations/catalogue/liquidMetal.js +122 -0
  364. package/dist/operations/catalogue/materialFx.d.ts +6 -0
  365. package/dist/operations/catalogue/materialFx.d.ts.map +1 -0
  366. package/dist/operations/catalogue/materialFx.js +13 -0
  367. package/dist/operations/catalogue/metalize.d.ts +3 -0
  368. package/dist/operations/catalogue/metalize.d.ts.map +1 -0
  369. package/dist/operations/catalogue/metalize.js +135 -0
  370. package/dist/operations/catalogue/moveToFront.d.ts +3 -0
  371. package/dist/operations/catalogue/moveToFront.d.ts.map +1 -0
  372. package/dist/operations/catalogue/moveToFront.js +26 -0
  373. package/dist/operations/catalogue/orbit.d.ts +3 -0
  374. package/dist/operations/catalogue/orbit.d.ts.map +1 -0
  375. package/dist/operations/catalogue/orbit.js +29 -0
  376. package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
  377. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
  378. package/dist/operations/catalogue/particleSwarm.js +138 -0
  379. package/dist/operations/catalogue/petalPeel.d.ts +3 -0
  380. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
  381. package/dist/operations/catalogue/petalPeel.js +137 -0
  382. package/dist/operations/catalogue/petrify.d.ts +3 -0
  383. package/dist/operations/catalogue/petrify.d.ts.map +1 -0
  384. package/dist/operations/catalogue/petrify.js +94 -0
  385. package/dist/operations/catalogue/portal.d.ts +3 -0
  386. package/dist/operations/catalogue/portal.d.ts.map +1 -0
  387. package/dist/operations/catalogue/portal.js +224 -0
  388. package/dist/operations/catalogue/print3d.d.ts +3 -0
  389. package/dist/operations/catalogue/print3d.d.ts.map +1 -0
  390. package/dist/operations/catalogue/print3d.js +275 -0
  391. package/dist/operations/catalogue/rainBeads.d.ts +3 -0
  392. package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
  393. package/dist/operations/catalogue/rainBeads.js +223 -0
  394. package/dist/operations/catalogue/restPose.d.ts +21 -0
  395. package/dist/operations/catalogue/restPose.d.ts.map +1 -0
  396. package/dist/operations/catalogue/restPose.js +55 -0
  397. package/dist/operations/catalogue/rimLight.d.ts +3 -0
  398. package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
  399. package/dist/operations/catalogue/rimLight.js +72 -0
  400. package/dist/operations/catalogue/sandErosion.d.ts +3 -0
  401. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
  402. package/dist/operations/catalogue/sandErosion.js +167 -0
  403. package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
  404. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
  405. package/dist/operations/catalogue/shaderLayers.js +322 -0
  406. package/dist/operations/catalogue/shatter.d.ts +3 -0
  407. package/dist/operations/catalogue/shatter.d.ts.map +1 -0
  408. package/dist/operations/catalogue/shatter.js +267 -0
  409. package/dist/operations/catalogue/silkDrape.d.ts +3 -0
  410. package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
  411. package/dist/operations/catalogue/silkDrape.js +340 -0
  412. package/dist/operations/catalogue/spin.d.ts +3 -0
  413. package/dist/operations/catalogue/spin.d.ts.map +1 -0
  414. package/dist/operations/catalogue/spin.js +42 -0
  415. package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
  416. package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
  417. package/dist/operations/catalogue/surfaceSample.js +187 -0
  418. package/dist/operations/catalogue/swirl.d.ts +3 -0
  419. package/dist/operations/catalogue/swirl.d.ts.map +1 -0
  420. package/dist/operations/catalogue/swirl.js +69 -0
  421. package/dist/operations/catalogue/teleport.d.ts +3 -0
  422. package/dist/operations/catalogue/teleport.d.ts.map +1 -0
  423. package/dist/operations/catalogue/teleport.js +213 -0
  424. package/dist/operations/catalogue/transitionField.d.ts +124 -0
  425. package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
  426. package/dist/operations/catalogue/transitionField.js +278 -0
  427. package/dist/operations/catalogue/unweave.d.ts +3 -0
  428. package/dist/operations/catalogue/unweave.d.ts.map +1 -0
  429. package/dist/operations/catalogue/unweave.js +233 -0
  430. package/dist/operations/catalogue/visibility.d.ts +3 -0
  431. package/dist/operations/catalogue/visibility.d.ts.map +1 -0
  432. package/dist/operations/catalogue/visibility.js +25 -0
  433. package/dist/operations/catalogue/voxelize.d.ts +3 -0
  434. package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
  435. package/dist/operations/catalogue/voxelize.js +148 -0
  436. package/dist/operations/catalogue/warmup.d.ts +22 -0
  437. package/dist/operations/catalogue/warmup.d.ts.map +1 -0
  438. package/dist/operations/catalogue/warmup.js +106 -0
  439. package/dist/operations/catalogue/zoom.d.ts +3 -0
  440. package/dist/operations/catalogue/zoom.d.ts.map +1 -0
  441. package/dist/operations/catalogue/zoom.js +33 -0
  442. package/dist/operations/index.d.ts +7 -0
  443. package/dist/operations/index.d.ts.map +1 -0
  444. package/dist/operations/index.js +6 -0
  445. package/dist/operations/objectEffects.d.ts +46 -0
  446. package/dist/operations/objectEffects.d.ts.map +1 -0
  447. package/dist/operations/objectEffects.js +136 -0
  448. package/dist/operations/registry.d.ts +16 -0
  449. package/dist/operations/registry.d.ts.map +1 -0
  450. package/dist/operations/registry.js +63 -0
  451. package/dist/operations/runtime.d.ts +60 -0
  452. package/dist/operations/runtime.d.ts.map +1 -0
  453. package/dist/operations/runtime.js +317 -0
  454. package/dist/operations/types.d.ts +122 -0
  455. package/dist/operations/types.d.ts.map +1 -0
  456. package/dist/operations/types.js +9 -0
  457. package/dist/operations/useObjectEffectLayers.d.ts +4 -0
  458. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
  459. package/dist/operations/useObjectEffectLayers.js +42 -0
  460. package/dist/operations/useOperationsRuntime.d.ts +3 -0
  461. package/dist/operations/useOperationsRuntime.d.ts.map +1 -0
  462. package/dist/operations/useOperationsRuntime.js +69 -0
  463. package/dist/presets/landscapePresets.d.ts +1 -1
  464. package/dist/presets/landscapePresets.d.ts.map +1 -1
  465. package/dist/presets/landscapePresets.js +1 -1
  466. package/dist/presets/landscapeTypes.d.ts +1 -1
  467. package/dist/presets/landscapeTypes.d.ts.map +1 -1
  468. package/dist/presets/landscapeTypes.js +1 -1
  469. package/dist/presets/oceanSurfacePresets.d.ts +1 -1
  470. package/dist/presets/terrainPresets.d.ts +1 -1
  471. package/dist/presets/terrainPresets.d.ts.map +1 -1
  472. package/dist/presets/volumetricCloudPresets.d.ts +1 -1
  473. package/dist/types/cloudConfigs.d.ts +2 -309
  474. package/dist/types/cloudConfigs.d.ts.map +1 -1
  475. package/dist/types/cloudConfigs.js +2 -339
  476. package/dist/types/index.d.ts +8 -8
  477. package/dist/types/index.d.ts.map +1 -1
  478. package/dist/types/index.js +4 -4
  479. package/dist/types/landscapeConfigs.d.ts +2 -217
  480. package/dist/types/landscapeConfigs.d.ts.map +1 -1
  481. package/dist/types/landscapeConfigs.js +2 -256
  482. package/dist/types/oceanConfigs.d.ts +2 -289
  483. package/dist/types/oceanConfigs.d.ts.map +1 -1
  484. package/dist/types/oceanConfigs.js +2 -380
  485. package/dist/types/terrainConfigs.d.ts +2 -250
  486. package/dist/types/terrainConfigs.d.ts.map +1 -1
  487. package/dist/types/terrainConfigs.js +2 -292
  488. package/dist/utils/cloudUniforms.d.ts +1 -1
  489. package/dist/utils/configAnimations.d.ts +6 -0
  490. package/dist/utils/configAnimations.d.ts.map +1 -1
  491. package/dist/utils/configAnimations.js +14 -0
  492. package/dist/utils/gridConfig.d.ts +19 -0
  493. package/dist/utils/gridConfig.d.ts.map +1 -0
  494. package/dist/utils/gridConfig.js +52 -0
  495. package/dist/utils/handleCloudsAnimations.d.ts +1 -1
  496. package/dist/utils/handleCloudsAnimations.js +1 -1
  497. package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
  498. package/dist/utils/hasHoverAnimation.js +0 -2
  499. package/dist/utils/landscapeUniforms.d.ts +1 -1
  500. package/dist/utils/landscapeUniforms.d.ts.map +1 -1
  501. package/dist/utils/oceanUniforms.d.ts +1 -1
  502. package/dist/utils/particleShape.d.ts +33 -0
  503. package/dist/utils/particleShape.d.ts.map +1 -0
  504. package/dist/utils/particleShape.js +207 -0
  505. package/dist/utils/particleTrails.d.ts.map +1 -1
  506. package/dist/utils/particleTrails.js +29 -14
  507. package/dist/utils/terrainUniforms.d.ts +1 -1
  508. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  509. package/package.json +2 -2
@@ -0,0 +1,46 @@
1
+ // =============================================================================
2
+ // Interaction runner + hover bridge
3
+ // =============================================================================
4
+ //
5
+ // runInteraction(objectId, interaction) — run an interaction as if it were
6
+ // triggered (the studio's "Try it"). ObjectsRenderer registers the runner.
7
+ //
8
+ // ObjectHoverContext — ObjectsRenderer hands CreatedObject the hover handler, so
9
+ // 'mouseEnter' / 'mouseLeave' interactions fire without threading a prop through
10
+ // every renderer.
11
+ //
12
+ import { createContext } from 'react';
13
+ let effectPreviewer = null;
14
+ let effectPrewarmer = null;
15
+ let runner = null;
16
+ export function setInteractionRunner(next) {
17
+ runner = next;
18
+ return () => { if (runner === next)
19
+ runner = null; };
20
+ }
21
+ /** Run an interaction now. False when no scene is mounted or the object is not there. */
22
+ export function runInteraction(objectId, interaction, opts) {
23
+ return runner ? runner(objectId, interaction, opts) : false;
24
+ }
25
+ export function setEffectPreviewer(next) {
26
+ effectPreviewer = next;
27
+ return () => { if (effectPreviewer === next)
28
+ effectPreviewer = null; };
29
+ }
30
+ /**
31
+ * Play one effect of an interaction on object `objectId` ('self' resolves to it)
32
+ * and bring the scene back afterwards. False when no scene is mounted.
33
+ */
34
+ export function setEffectPrewarmer(next) {
35
+ effectPrewarmer = next;
36
+ return () => { if (effectPrewarmer === next)
37
+ effectPrewarmer = null; };
38
+ }
39
+ /** Compile an interaction effect's shaders ahead of time (no visible change), so its first play is instant. */
40
+ export function prewarmInteractionEffect(objectId, effect) {
41
+ return effectPrewarmer ? effectPrewarmer(objectId, effect) : Promise.resolve();
42
+ }
43
+ export function previewInteractionEffect(objectId, effect) {
44
+ return effectPreviewer ? effectPreviewer(objectId, effect) : Promise.resolve(false);
45
+ }
46
+ export const ObjectHoverContext = createContext(null);
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=curlSmoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curlSmoke.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/curlSmoke.ts"],"names":[],"mappings":";AAkDA,wBAwIG"}
@@ -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
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=displayImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"displayImage.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/displayImage.ts"],"names":[],"mappings":";AAGA,wBA6BG"}
@@ -0,0 +1,40 @@
1
+ import { texturesManager } from '@3driseai/3drise-core';
2
+ import { defineOperation } from '../types.js';
3
+ export default defineOperation({
4
+ value: 'displayImage',
5
+ label: 'Show image',
6
+ description: "Show the clicked frame's image on the target",
7
+ channel: 'visual',
8
+ multi: false,
9
+ toggles: false,
10
+ usableIn: ['interaction'],
11
+ galleryOnly: true,
12
+ async apply(target, _p, ctx) {
13
+ const url = ctx.self?.userData?.url;
14
+ if (!url)
15
+ return;
16
+ let applier;
17
+ let meshWithMap = null;
18
+ target.traverse((child) => {
19
+ if (!applier && typeof child.userData?.applyTexture === 'function')
20
+ applier = child.userData.applyTexture;
21
+ else if (!meshWithMap && child.material)
22
+ meshWithMap = child;
23
+ });
24
+ if (applier) {
25
+ applier(url);
26
+ return;
27
+ }
28
+ if (!meshWithMap)
29
+ return;
30
+ const name = url.split('/').pop()?.split('.')[0] || `texture-${Date.now()}`;
31
+ try {
32
+ const loaded = await texturesManager.loadTexture(name, url, 'images');
33
+ meshWithMap.material.map = loaded;
34
+ meshWithMap.material.needsUpdate = true;
35
+ }
36
+ catch {
37
+ // a missing image leaves the target as it was
38
+ }
39
+ },
40
+ });
@@ -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
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=fade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fade.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/fade.ts"],"names":[],"mappings":";AAMA,wBAqCG"}
@@ -0,0 +1,45 @@
1
+ import { gsap } from 'gsap';
2
+ import { defineOperation } from '../types.js';
3
+ import { forEachMaterial } from './materialFx.js';
4
+ const KEY = '__opFade';
5
+ export default defineOperation({
6
+ value: 'fade',
7
+ label: 'Fade out',
8
+ description: 'Fade the targets away (to a set opacity)',
9
+ channel: 'visual',
10
+ multi: true,
11
+ toggles: true,
12
+ usableIn: ['interaction', 'action'],
13
+ params: {
14
+ opacity: { type: 'number', label: 'To opacity', default: 0, min: 0, max: 1, step: 0.05, hint: '0 hides the object when the fade ends' },
15
+ duration: { type: 'number', label: 'Duration', default: 1, min: 0, max: 10, step: 0.05, unit: 's' },
16
+ },
17
+ apply(target, p) {
18
+ const to = Number(p.opacity);
19
+ forEachMaterial(target, (mat) => {
20
+ if (!mat.userData[KEY])
21
+ mat.userData[KEY] = { opacity: mat.opacity, transparent: mat.transparent };
22
+ mat.transparent = true;
23
+ mat.needsUpdate = true;
24
+ gsap.killTweensOf(mat, 'opacity');
25
+ gsap.to(mat, {
26
+ opacity: to, duration: Number(p.duration), ease: 'power2.inOut',
27
+ onComplete: () => { if (to <= 0)
28
+ target.visible = false; },
29
+ });
30
+ });
31
+ },
32
+ revert(target, p) {
33
+ target.visible = true;
34
+ forEachMaterial(target, (mat) => {
35
+ const orig = mat.userData[KEY];
36
+ if (!orig)
37
+ return;
38
+ gsap.killTweensOf(mat, 'opacity');
39
+ gsap.to(mat, {
40
+ opacity: orig.opacity, duration: Number(p.duration), ease: 'power2.inOut',
41
+ onComplete: () => { mat.transparent = orig.transparent; mat.needsUpdate = true; delete mat.userData[KEY]; },
42
+ });
43
+ });
44
+ },
45
+ });
@@ -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"}