@3driseai/3drise-viewer 0.1.28 → 0.1.29

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 (684) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  2. package/dist/animationsV2/ClipPlayer.js +13 -9
  3. package/dist/animationsV2/ClipsRuntime.d.ts +44 -3
  4. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  5. package/dist/animationsV2/ClipsRuntime.js +173 -55
  6. package/dist/animationsV2/appliers.d.ts.map +1 -1
  7. package/dist/animationsV2/appliers.js +21 -5
  8. package/dist/animationsV2/index.d.ts +1 -1
  9. package/dist/animationsV2/index.d.ts.map +1 -1
  10. package/dist/animationsV2/normalize.d.ts.map +1 -1
  11. package/dist/animationsV2/normalize.js +7 -3
  12. package/dist/animationsV2/sequenceUtils.d.ts +44 -6
  13. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  14. package/dist/animationsV2/sequenceUtils.js +58 -12
  15. package/dist/animationsV2/types.d.ts +22 -12
  16. package/dist/animationsV2/types.d.ts.map +1 -1
  17. package/dist/api/sceneHandle.d.ts +35 -1
  18. package/dist/api/sceneHandle.d.ts.map +1 -1
  19. package/dist/api/sceneHandle.js +88 -17
  20. package/dist/components/AdvancedGrid.d.ts +1 -5
  21. package/dist/components/AdvancedGrid.d.ts.map +1 -1
  22. package/dist/components/AdvancedGrid.js +6 -35
  23. package/dist/components/AnimatedObject.d.ts.map +1 -1
  24. package/dist/components/AnimatedObject.js +9 -4
  25. package/dist/components/ApollonianGrid.d.ts +1 -1
  26. package/dist/components/ApollonianGrid.d.ts.map +1 -1
  27. package/dist/components/ApollonianGrid.js +3 -28
  28. package/dist/components/ChladniGrid.d.ts +1 -1
  29. package/dist/components/ChladniGrid.d.ts.map +1 -1
  30. package/dist/components/ChladniGrid.js +6 -35
  31. package/dist/components/CircuitGrid.d.ts +1 -1
  32. package/dist/components/CircuitGrid.d.ts.map +1 -1
  33. package/dist/components/CircuitGrid.js +6 -34
  34. package/dist/components/ConformalGrid.d.ts +1 -1
  35. package/dist/components/ConformalGrid.d.ts.map +1 -1
  36. package/dist/components/ConformalGrid.js +3 -34
  37. package/dist/components/ContourGrid.d.ts +1 -1
  38. package/dist/components/ContourGrid.d.ts.map +1 -1
  39. package/dist/components/ContourGrid.js +6 -34
  40. package/dist/components/CustomPrimitive.js +1 -1
  41. package/dist/components/EnvironmentObject.d.ts.map +1 -1
  42. package/dist/components/EnvironmentObject.js +9 -7
  43. package/dist/components/FlowNetGrid.d.ts +1 -1
  44. package/dist/components/FlowNetGrid.d.ts.map +1 -1
  45. package/dist/components/FlowNetGrid.js +6 -34
  46. package/dist/components/FractalGrid.d.ts +1 -1
  47. package/dist/components/FractalGrid.d.ts.map +1 -1
  48. package/dist/components/FractalGrid.js +6 -37
  49. package/dist/components/Galaxy.d.ts.map +1 -1
  50. package/dist/components/Galaxy.js +9 -23
  51. package/dist/components/GirihGrid.d.ts +1 -1
  52. package/dist/components/GirihGrid.d.ts.map +1 -1
  53. package/dist/components/GirihGrid.js +6 -35
  54. package/dist/components/GravWaveGrid.d.ts +1 -1
  55. package/dist/components/GravWaveGrid.d.ts.map +1 -1
  56. package/dist/components/GravWaveGrid.js +6 -35
  57. package/dist/components/HexGrid.d.ts +1 -5
  58. package/dist/components/HexGrid.d.ts.map +1 -1
  59. package/dist/components/HexGrid.js +6 -36
  60. package/dist/components/HilbertGrid.d.ts +1 -1
  61. package/dist/components/HilbertGrid.d.ts.map +1 -1
  62. package/dist/components/HilbertGrid.js +3 -30
  63. package/dist/components/HyperbolicGrid.d.ts +1 -1
  64. package/dist/components/HyperbolicGrid.d.ts.map +1 -1
  65. package/dist/components/HyperbolicGrid.js +6 -34
  66. package/dist/components/LandObject.d.ts +9 -0
  67. package/dist/components/LandObject.d.ts.map +1 -0
  68. package/dist/components/LandObject.js +15 -0
  69. package/dist/components/LensingGrid.d.ts +1 -1
  70. package/dist/components/LensingGrid.d.ts.map +1 -1
  71. package/dist/components/LensingGrid.js +3 -29
  72. package/dist/components/LightsManager.d.ts.map +1 -1
  73. package/dist/components/LightsManager.js +8 -0
  74. package/dist/components/ModelBoundary.d.ts +2 -0
  75. package/dist/components/ModelBoundary.d.ts.map +1 -1
  76. package/dist/components/ModelBoundary.js +3 -0
  77. package/dist/components/ModelPrimitive.d.ts.map +1 -1
  78. package/dist/components/ModelPrimitive.js +6 -0
  79. package/dist/components/MoireGrid.d.ts +1 -1
  80. package/dist/components/MoireGrid.d.ts.map +1 -1
  81. package/dist/components/MoireGrid.js +6 -35
  82. package/dist/components/MoonDisc.d.ts +11 -0
  83. package/dist/components/MoonDisc.d.ts.map +1 -0
  84. package/dist/components/MoonDisc.js +128 -0
  85. package/dist/components/ObjectNode.d.ts.map +1 -1
  86. package/dist/components/ObjectNode.js +15 -4
  87. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  88. package/dist/components/ObjectsRenderer.js +7 -5
  89. package/dist/components/OceanBuilder.d.ts.map +1 -1
  90. package/dist/components/OceanBuilder.js +2 -0
  91. package/dist/components/ParastichyGrid.d.ts +1 -1
  92. package/dist/components/ParastichyGrid.d.ts.map +1 -1
  93. package/dist/components/ParastichyGrid.js +3 -30
  94. package/dist/components/PhyllotaxisGrid.d.ts +1 -1
  95. package/dist/components/PhyllotaxisGrid.d.ts.map +1 -1
  96. package/dist/components/PhyllotaxisGrid.js +3 -32
  97. package/dist/components/ProjectLoader.d.ts +5 -3
  98. package/dist/components/ProjectLoader.d.ts.map +1 -1
  99. package/dist/components/ProjectLoader.js +6 -3
  100. package/dist/components/QuasiGrid.d.ts +1 -1
  101. package/dist/components/QuasiGrid.d.ts.map +1 -1
  102. package/dist/components/QuasiGrid.js +6 -33
  103. package/dist/components/RadarGrid.d.ts +1 -1
  104. package/dist/components/RadarGrid.d.ts.map +1 -1
  105. package/dist/components/RadarGrid.js +6 -34
  106. package/dist/components/ReactionDiffusionGrid.d.ts +1 -1
  107. package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
  108. package/dist/components/ReactionDiffusionGrid.js +6 -35
  109. package/dist/components/SceneBuilder.d.ts +25 -3
  110. package/dist/components/SceneBuilder.d.ts.map +1 -1
  111. package/dist/components/SceneBuilder.js +68 -38
  112. package/dist/components/SkyController.d.ts +25 -1
  113. package/dist/components/SkyController.d.ts.map +1 -1
  114. package/dist/components/SkyController.js +189 -130
  115. package/dist/components/SkyMesh.d.ts.map +1 -1
  116. package/dist/components/SkyMesh.js +26 -1
  117. package/dist/components/SkyStars.d.ts +11 -0
  118. package/dist/components/SkyStars.d.ts.map +1 -0
  119. package/dist/components/SkyStars.js +187 -0
  120. package/dist/components/SkySystem.d.ts +3 -3
  121. package/dist/components/SkySystem.d.ts.map +1 -1
  122. package/dist/components/SkySystem.js +8 -2
  123. package/dist/components/Sun.d.ts +15 -1
  124. package/dist/components/Sun.d.ts.map +1 -1
  125. package/dist/components/Sun.js +64 -3
  126. package/dist/components/SunLight.d.ts +6 -1
  127. package/dist/components/SunLight.d.ts.map +1 -1
  128. package/dist/components/SunLight.js +96 -44
  129. package/dist/components/TerrainBuilder.d.ts.map +1 -1
  130. package/dist/components/TerrainBuilder.js +2 -0
  131. package/dist/components/TextGenerator.d.ts +9 -0
  132. package/dist/components/TextGenerator.d.ts.map +1 -0
  133. package/dist/components/TextGenerator.js +29 -0
  134. package/dist/components/TruchetGrid.d.ts +1 -1
  135. package/dist/components/TruchetGrid.d.ts.map +1 -1
  136. package/dist/components/TruchetGrid.js +3 -30
  137. package/dist/components/VoronoiGrid.d.ts +1 -1
  138. package/dist/components/VoronoiGrid.d.ts.map +1 -1
  139. package/dist/components/VoronoiGrid.js +6 -33
  140. package/dist/components/WallpaperGrid.d.ts +1 -1
  141. package/dist/components/WallpaperGrid.d.ts.map +1 -1
  142. package/dist/components/WallpaperGrid.js +6 -35
  143. package/dist/components/environment/Rain.d.ts +15 -0
  144. package/dist/components/environment/Rain.d.ts.map +1 -0
  145. package/dist/components/environment/Rain.js +110 -0
  146. package/dist/components/environment/Rainbow.d.ts +20 -0
  147. package/dist/components/environment/Rainbow.d.ts.map +1 -0
  148. package/dist/components/environment/Rainbow.js +974 -0
  149. package/dist/components/environment/Sandstorm.d.ts +20 -0
  150. package/dist/components/environment/Sandstorm.d.ts.map +1 -0
  151. package/dist/components/environment/Sandstorm.js +776 -0
  152. package/dist/components/environment/Snow.d.ts +20 -0
  153. package/dist/components/environment/Snow.d.ts.map +1 -0
  154. package/dist/components/environment/Snow.js +609 -0
  155. package/dist/components/environment/Thunderstorm.d.ts +20 -0
  156. package/dist/components/environment/Thunderstorm.d.ts.map +1 -0
  157. package/dist/components/environment/Thunderstorm.js +731 -0
  158. package/dist/components/environment/Tornado.d.ts +20 -0
  159. package/dist/components/environment/Tornado.d.ts.map +1 -0
  160. package/dist/components/environment/Tornado.js +762 -0
  161. package/dist/components/environment/index.d.ts +13 -0
  162. package/dist/components/environment/index.d.ts.map +1 -0
  163. package/dist/components/environment/index.js +7 -0
  164. package/dist/components/index.d.ts +10 -10
  165. package/dist/components/index.d.ts.map +1 -1
  166. package/dist/components/index.js +8 -6
  167. package/dist/components/land/LandPatch.d.ts +15 -0
  168. package/dist/components/land/LandPatch.d.ts.map +1 -0
  169. package/dist/components/land/LandPatch.js +170 -0
  170. package/dist/components/land/index.d.ts +3 -0
  171. package/dist/components/land/index.d.ts.map +1 -0
  172. package/dist/components/land/index.js +1 -0
  173. package/dist/components/space/Earth.d.ts +16 -0
  174. package/dist/components/space/Earth.d.ts.map +1 -0
  175. package/dist/components/space/Earth.js +75 -0
  176. package/dist/components/space/ShootingStar.d.ts +21 -0
  177. package/dist/components/space/ShootingStar.d.ts.map +1 -0
  178. package/dist/components/space/ShootingStar.js +101 -0
  179. package/dist/components/space/ShootingStars.d.ts +16 -0
  180. package/dist/components/space/ShootingStars.d.ts.map +1 -0
  181. package/dist/components/space/ShootingStars.js +71 -0
  182. package/dist/components/space/SolarSystem.d.ts +16 -0
  183. package/dist/components/space/SolarSystem.d.ts.map +1 -0
  184. package/dist/components/space/SolarSystem.js +141 -0
  185. package/dist/components/space/Stars.d.ts +20 -0
  186. package/dist/components/space/Stars.d.ts.map +1 -0
  187. package/dist/components/space/Stars.js +160 -0
  188. package/dist/components/space/index.d.ts +11 -0
  189. package/dist/components/space/index.d.ts.map +1 -0
  190. package/dist/components/space/index.js +8 -0
  191. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  192. package/dist/components/terrain/TerrainSurface.js +27 -3
  193. package/dist/components/terrain/types.d.ts +5 -1
  194. package/dist/components/terrain/types.d.ts.map +1 -1
  195. package/dist/components/text/BurnAwayText.d.ts +15 -0
  196. package/dist/components/text/BurnAwayText.d.ts.map +1 -0
  197. package/dist/components/text/BurnAwayText.js +4 -0
  198. package/dist/components/text/ChalkboardText.d.ts +15 -0
  199. package/dist/components/text/ChalkboardText.d.ts.map +1 -0
  200. package/dist/components/text/ChalkboardText.js +4 -0
  201. package/dist/components/text/ConstellationText.d.ts +15 -0
  202. package/dist/components/text/ConstellationText.d.ts.map +1 -0
  203. package/dist/components/text/ConstellationText.js +4 -0
  204. package/dist/components/text/EmbroideryText.d.ts +15 -0
  205. package/dist/components/text/EmbroideryText.d.ts.map +1 -0
  206. package/dist/components/text/EmbroideryText.js +4 -0
  207. package/dist/components/text/FourierSketchText.d.ts +15 -0
  208. package/dist/components/text/FourierSketchText.d.ts.map +1 -0
  209. package/dist/components/text/FourierSketchText.js +4 -0
  210. package/dist/components/text/FrostGrowthText.d.ts +15 -0
  211. package/dist/components/text/FrostGrowthText.d.ts.map +1 -0
  212. package/dist/components/text/FrostGrowthText.js +4 -0
  213. package/dist/components/text/HandwritingText.d.ts +15 -0
  214. package/dist/components/text/HandwritingText.d.ts.map +1 -0
  215. package/dist/components/text/HandwritingText.js +4 -0
  216. package/dist/components/text/InkBleedText.d.ts +15 -0
  217. package/dist/components/text/InkBleedText.d.ts.map +1 -0
  218. package/dist/components/text/InkBleedText.js +4 -0
  219. package/dist/components/text/LightPaintingText.d.ts +15 -0
  220. package/dist/components/text/LightPaintingText.d.ts.map +1 -0
  221. package/dist/components/text/LightPaintingText.js +4 -0
  222. package/dist/components/text/LiquidMetalText.d.ts +15 -0
  223. package/dist/components/text/LiquidMetalText.d.ts.map +1 -0
  224. package/dist/components/text/LiquidMetalText.js +4 -0
  225. package/dist/components/text/NeonTubeText.d.ts +15 -0
  226. package/dist/components/text/NeonTubeText.d.ts.map +1 -0
  227. package/dist/components/text/NeonTubeText.js +4 -0
  228. package/dist/components/text/PlasmaDischargeText.d.ts +15 -0
  229. package/dist/components/text/PlasmaDischargeText.d.ts.map +1 -0
  230. package/dist/components/text/PlasmaDischargeText.js +4 -0
  231. package/dist/components/text/TextObjectView.d.ts +12 -0
  232. package/dist/components/text/TextObjectView.d.ts.map +1 -0
  233. package/dist/components/text/TextObjectView.js +11 -0
  234. package/dist/components/text/engine/fieldkit.d.ts +24 -0
  235. package/dist/components/text/engine/fieldkit.d.ts.map +1 -0
  236. package/dist/components/text/engine/fieldkit.js +201 -0
  237. package/dist/components/text/engine/glyphs.d.ts +19 -0
  238. package/dist/components/text/engine/glyphs.d.ts.map +1 -0
  239. package/dist/components/text/engine/glyphs.js +269 -0
  240. package/dist/components/text/engine/looks/burnAway.d.ts +144 -0
  241. package/dist/components/text/engine/looks/burnAway.d.ts.map +1 -0
  242. package/dist/components/text/engine/looks/burnAway.js +593 -0
  243. package/dist/components/text/engine/looks/chalkboard.d.ts +135 -0
  244. package/dist/components/text/engine/looks/chalkboard.d.ts.map +1 -0
  245. package/dist/components/text/engine/looks/chalkboard.js +426 -0
  246. package/dist/components/text/engine/looks/constellation.d.ts +111 -0
  247. package/dist/components/text/engine/looks/constellation.d.ts.map +1 -0
  248. package/dist/components/text/engine/looks/constellation.js +496 -0
  249. package/dist/components/text/engine/looks/embroidery.d.ts +165 -0
  250. package/dist/components/text/engine/looks/embroidery.d.ts.map +1 -0
  251. package/dist/components/text/engine/looks/embroidery.js +645 -0
  252. package/dist/components/text/engine/looks/frostGrowth.d.ts +109 -0
  253. package/dist/components/text/engine/looks/frostGrowth.d.ts.map +1 -0
  254. package/dist/components/text/engine/looks/frostGrowth.js +727 -0
  255. package/dist/components/text/engine/looks/index.d.ts +2 -0
  256. package/dist/components/text/engine/looks/index.d.ts.map +1 -0
  257. package/dist/components/text/engine/looks/index.js +48 -0
  258. package/dist/components/text/engine/looks/inkBleed.d.ts +103 -0
  259. package/dist/components/text/engine/looks/inkBleed.d.ts.map +1 -0
  260. package/dist/components/text/engine/looks/inkBleed.js +590 -0
  261. package/dist/components/text/engine/looks/lightPainting.d.ts +132 -0
  262. package/dist/components/text/engine/looks/lightPainting.d.ts.map +1 -0
  263. package/dist/components/text/engine/looks/lightPainting.js +567 -0
  264. package/dist/components/text/engine/looks/liquidMetal.d.ts +135 -0
  265. package/dist/components/text/engine/looks/liquidMetal.d.ts.map +1 -0
  266. package/dist/components/text/engine/looks/liquidMetal.js +655 -0
  267. package/dist/components/text/engine/looks/plasmaDischarge.d.ts +126 -0
  268. package/dist/components/text/engine/looks/plasmaDischarge.d.ts.map +1 -0
  269. package/dist/components/text/engine/looks/plasmaDischarge.js +763 -0
  270. package/dist/components/text/engine/methods.d.ts +19 -0
  271. package/dist/components/text/engine/methods.d.ts.map +1 -0
  272. package/dist/components/text/engine/methods.js +126 -0
  273. package/dist/components/text/engine/playback.d.ts +40 -0
  274. package/dist/components/text/engine/playback.d.ts.map +1 -0
  275. package/dist/components/text/engine/playback.js +114 -0
  276. package/dist/components/text/engine/ribbon.d.ts +58 -0
  277. package/dist/components/text/engine/ribbon.d.ts.map +1 -0
  278. package/dist/components/text/engine/ribbon.js +250 -0
  279. package/dist/components/text/engine/variants.d.ts +159 -0
  280. package/dist/components/text/engine/variants.d.ts.map +1 -0
  281. package/dist/components/text/engine/variants.js +378 -0
  282. package/dist/components/text/fonts/architects-daughter.outline.d.ts +3 -0
  283. package/dist/components/text/fonts/architects-daughter.outline.d.ts.map +1 -0
  284. package/dist/components/text/fonts/architects-daughter.outline.js +4 -0
  285. package/dist/components/text/fonts/architects-daughter.strokes.d.ts +3 -0
  286. package/dist/components/text/fonts/architects-daughter.strokes.d.ts.map +1 -0
  287. package/dist/components/text/fonts/architects-daughter.strokes.js +4 -0
  288. package/dist/components/text/fonts/caveat.outline.d.ts +3 -0
  289. package/dist/components/text/fonts/caveat.outline.d.ts.map +1 -0
  290. package/dist/components/text/fonts/caveat.outline.js +4 -0
  291. package/dist/components/text/fonts/caveat.strokes.d.ts +3 -0
  292. package/dist/components/text/fonts/caveat.strokes.d.ts.map +1 -0
  293. package/dist/components/text/fonts/caveat.strokes.js +4 -0
  294. package/dist/components/text/fonts/courgette.outline.d.ts +3 -0
  295. package/dist/components/text/fonts/courgette.outline.d.ts.map +1 -0
  296. package/dist/components/text/fonts/courgette.outline.js +4 -0
  297. package/dist/components/text/fonts/courgette.strokes.d.ts +3 -0
  298. package/dist/components/text/fonts/courgette.strokes.d.ts.map +1 -0
  299. package/dist/components/text/fonts/courgette.strokes.js +4 -0
  300. package/dist/components/text/fonts/dancing-script.outline.d.ts +3 -0
  301. package/dist/components/text/fonts/dancing-script.outline.d.ts.map +1 -0
  302. package/dist/components/text/fonts/dancing-script.outline.js +4 -0
  303. package/dist/components/text/fonts/dancing-script.strokes.d.ts +3 -0
  304. package/dist/components/text/fonts/dancing-script.strokes.d.ts.map +1 -0
  305. package/dist/components/text/fonts/dancing-script.strokes.js +4 -0
  306. package/dist/components/text/fonts/gochi-hand.outline.d.ts +3 -0
  307. package/dist/components/text/fonts/gochi-hand.outline.d.ts.map +1 -0
  308. package/dist/components/text/fonts/gochi-hand.outline.js +4 -0
  309. package/dist/components/text/fonts/gochi-hand.strokes.d.ts +3 -0
  310. package/dist/components/text/fonts/gochi-hand.strokes.d.ts.map +1 -0
  311. package/dist/components/text/fonts/gochi-hand.strokes.js +4 -0
  312. package/dist/components/text/fonts/handlee.outline.d.ts +3 -0
  313. package/dist/components/text/fonts/handlee.outline.d.ts.map +1 -0
  314. package/dist/components/text/fonts/handlee.outline.js +4 -0
  315. package/dist/components/text/fonts/handlee.strokes.d.ts +3 -0
  316. package/dist/components/text/fonts/handlee.strokes.d.ts.map +1 -0
  317. package/dist/components/text/fonts/handlee.strokes.js +4 -0
  318. package/dist/components/text/fonts/index.d.ts +5 -0
  319. package/dist/components/text/fonts/index.d.ts.map +1 -0
  320. package/dist/components/text/fonts/index.js +44 -0
  321. package/dist/components/text/fonts/indie-flower.outline.d.ts +3 -0
  322. package/dist/components/text/fonts/indie-flower.outline.d.ts.map +1 -0
  323. package/dist/components/text/fonts/indie-flower.outline.js +4 -0
  324. package/dist/components/text/fonts/indie-flower.strokes.d.ts +3 -0
  325. package/dist/components/text/fonts/indie-flower.strokes.d.ts.map +1 -0
  326. package/dist/components/text/fonts/indie-flower.strokes.js +4 -0
  327. package/dist/components/text/fonts/kalam.outline.d.ts +3 -0
  328. package/dist/components/text/fonts/kalam.outline.d.ts.map +1 -0
  329. package/dist/components/text/fonts/kalam.outline.js +4 -0
  330. package/dist/components/text/fonts/kalam.strokes.d.ts +3 -0
  331. package/dist/components/text/fonts/kalam.strokes.d.ts.map +1 -0
  332. package/dist/components/text/fonts/kalam.strokes.js +4 -0
  333. package/dist/components/text/fonts/kaushan-script.outline.d.ts +3 -0
  334. package/dist/components/text/fonts/kaushan-script.outline.d.ts.map +1 -0
  335. package/dist/components/text/fonts/kaushan-script.outline.js +4 -0
  336. package/dist/components/text/fonts/kaushan-script.strokes.d.ts +3 -0
  337. package/dist/components/text/fonts/kaushan-script.strokes.d.ts.map +1 -0
  338. package/dist/components/text/fonts/kaushan-script.strokes.js +4 -0
  339. package/dist/components/text/fonts/mynerve.outline.d.ts +3 -0
  340. package/dist/components/text/fonts/mynerve.outline.d.ts.map +1 -0
  341. package/dist/components/text/fonts/mynerve.outline.js +4 -0
  342. package/dist/components/text/fonts/mynerve.strokes.d.ts +3 -0
  343. package/dist/components/text/fonts/mynerve.strokes.d.ts.map +1 -0
  344. package/dist/components/text/fonts/mynerve.strokes.js +4 -0
  345. package/dist/components/text/fonts/nanum-pen-script.outline.d.ts +3 -0
  346. package/dist/components/text/fonts/nanum-pen-script.outline.d.ts.map +1 -0
  347. package/dist/components/text/fonts/nanum-pen-script.outline.js +4 -0
  348. package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts +3 -0
  349. package/dist/components/text/fonts/nanum-pen-script.strokes.d.ts.map +1 -0
  350. package/dist/components/text/fonts/nanum-pen-script.strokes.js +4 -0
  351. package/dist/components/text/fonts/pacifico.outline.d.ts +3 -0
  352. package/dist/components/text/fonts/pacifico.outline.d.ts.map +1 -0
  353. package/dist/components/text/fonts/pacifico.outline.js +4 -0
  354. package/dist/components/text/fonts/pacifico.strokes.d.ts +3 -0
  355. package/dist/components/text/fonts/pacifico.strokes.d.ts.map +1 -0
  356. package/dist/components/text/fonts/pacifico.strokes.js +4 -0
  357. package/dist/components/text/fonts/patrick-hand.outline.d.ts +3 -0
  358. package/dist/components/text/fonts/patrick-hand.outline.d.ts.map +1 -0
  359. package/dist/components/text/fonts/patrick-hand.outline.js +4 -0
  360. package/dist/components/text/fonts/patrick-hand.strokes.d.ts +3 -0
  361. package/dist/components/text/fonts/patrick-hand.strokes.d.ts.map +1 -0
  362. package/dist/components/text/fonts/patrick-hand.strokes.js +4 -0
  363. package/dist/components/text/fonts/poppins.outline.d.ts +3 -0
  364. package/dist/components/text/fonts/poppins.outline.d.ts.map +1 -0
  365. package/dist/components/text/fonts/poppins.outline.js +4 -0
  366. package/dist/components/text/fonts/poppins.strokes.d.ts +3 -0
  367. package/dist/components/text/fonts/poppins.strokes.d.ts.map +1 -0
  368. package/dist/components/text/fonts/poppins.strokes.js +4 -0
  369. package/dist/components/text/fonts/satisfy.outline.d.ts +3 -0
  370. package/dist/components/text/fonts/satisfy.outline.d.ts.map +1 -0
  371. package/dist/components/text/fonts/satisfy.outline.js +4 -0
  372. package/dist/components/text/fonts/satisfy.strokes.d.ts +3 -0
  373. package/dist/components/text/fonts/satisfy.strokes.d.ts.map +1 -0
  374. package/dist/components/text/fonts/satisfy.strokes.js +4 -0
  375. package/dist/components/text/fonts/sriracha.outline.d.ts +3 -0
  376. package/dist/components/text/fonts/sriracha.outline.d.ts.map +1 -0
  377. package/dist/components/text/fonts/sriracha.outline.js +4 -0
  378. package/dist/components/text/fonts/sriracha.strokes.d.ts +3 -0
  379. package/dist/components/text/fonts/sriracha.strokes.d.ts.map +1 -0
  380. package/dist/components/text/fonts/sriracha.strokes.js +4 -0
  381. package/dist/components/text/index.d.ts +27 -0
  382. package/dist/components/text/index.d.ts.map +1 -0
  383. package/dist/components/text/index.js +13 -0
  384. package/dist/components/text/useTextObject.d.ts +21 -0
  385. package/dist/components/text/useTextObject.d.ts.map +1 -0
  386. package/dist/components/text/useTextObject.js +118 -0
  387. package/dist/components/water/OceanSurface.d.ts.map +1 -1
  388. package/dist/components/water/OceanSurface.js +3 -1
  389. package/dist/components/water/WaterBody.d.ts.map +1 -1
  390. package/dist/components/water/WaterBody.js +3 -1
  391. package/dist/components/water/types.d.ts +5 -1
  392. package/dist/components/water/types.d.ts.map +1 -1
  393. package/dist/constants.d.ts.map +1 -1
  394. package/dist/constants.js +4 -0
  395. package/dist/hooks/index.d.ts +2 -0
  396. package/dist/hooks/index.d.ts.map +1 -1
  397. package/dist/hooks/index.js +1 -0
  398. package/dist/hooks/useCloudSun.d.ts +9 -4
  399. package/dist/hooks/useCloudSun.d.ts.map +1 -1
  400. package/dist/hooks/useCloudSun.js +17 -7
  401. package/dist/hooks/useConfigLive.d.ts +3 -2
  402. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  403. package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
  404. package/dist/hooks/useContinuousEffects.js +4 -10
  405. package/dist/hooks/useEnvironmentProbe.d.ts +3 -22
  406. package/dist/hooks/useEnvironmentProbe.d.ts.map +1 -1
  407. package/dist/hooks/useEnvironmentProbe.js +47 -8
  408. package/dist/hooks/useGridSurface.d.ts +3 -10
  409. package/dist/hooks/useGridSurface.d.ts.map +1 -1
  410. package/dist/hooks/useGridSurface.js +5 -31
  411. package/dist/hooks/useInteraction.d.ts.map +1 -1
  412. package/dist/hooks/useInteraction.js +19 -72
  413. package/dist/hooks/useLightConfig.d.ts +2 -1
  414. package/dist/hooks/useLightConfig.d.ts.map +1 -1
  415. package/dist/hooks/useOceanMaterial.d.ts +6 -2
  416. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  417. package/dist/hooks/useOceanMaterial.js +37 -2
  418. package/dist/hooks/useSkyLive.d.ts +23 -0
  419. package/dist/hooks/useSkyLive.d.ts.map +1 -0
  420. package/dist/hooks/useSkyLive.js +30 -0
  421. package/dist/hooks/useSkyUniforms.d.ts.map +1 -1
  422. package/dist/hooks/useSkyUniforms.js +2 -10
  423. package/dist/hooks/useTerrainLive.d.ts +3 -1
  424. package/dist/hooks/useTerrainLive.d.ts.map +1 -1
  425. package/dist/hooks/useTerrainTextures.d.ts +38 -0
  426. package/dist/hooks/useTerrainTextures.d.ts.map +1 -0
  427. package/dist/hooks/useTerrainTextures.js +149 -0
  428. package/dist/index.d.ts +11 -2
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +8 -1
  431. package/dist/operations/catalogue/blastOff.d.ts +3 -0
  432. package/dist/operations/catalogue/blastOff.d.ts.map +1 -0
  433. package/dist/operations/catalogue/blastOff.js +118 -0
  434. package/dist/operations/catalogue/bounce.d.ts +3 -0
  435. package/dist/operations/catalogue/bounce.d.ts.map +1 -0
  436. package/dist/operations/catalogue/bounce.js +34 -0
  437. package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -1
  438. package/dist/operations/catalogue/curlSmoke.js +3 -1
  439. package/dist/operations/catalogue/dissolve.d.ts.map +1 -1
  440. package/dist/operations/catalogue/dissolve.js +2 -1
  441. package/dist/operations/catalogue/driftUp.d.ts +3 -0
  442. package/dist/operations/catalogue/driftUp.d.ts.map +1 -0
  443. package/dist/operations/catalogue/driftUp.js +57 -0
  444. package/dist/operations/catalogue/emberAsh.d.ts.map +1 -1
  445. package/dist/operations/catalogue/emberAsh.js +2 -1
  446. package/dist/operations/catalogue/flip.d.ts.map +1 -1
  447. package/dist/operations/catalogue/flip.js +19 -9
  448. package/dist/operations/catalogue/float.d.ts +3 -0
  449. package/dist/operations/catalogue/float.d.ts.map +1 -0
  450. package/dist/operations/catalogue/float.js +39 -0
  451. package/dist/operations/catalogue/flyBy.d.ts +3 -0
  452. package/dist/operations/catalogue/flyBy.d.ts.map +1 -0
  453. package/dist/operations/catalogue/flyBy.js +79 -0
  454. package/dist/operations/catalogue/frost.d.ts.map +1 -1
  455. package/dist/operations/catalogue/frost.js +10 -3
  456. package/dist/operations/catalogue/grow.d.ts +3 -0
  457. package/dist/operations/catalogue/grow.d.ts.map +1 -0
  458. package/dist/operations/catalogue/grow.js +19 -0
  459. package/dist/operations/catalogue/hologram.d.ts.map +1 -1
  460. package/dist/operations/catalogue/hologram.js +11 -5
  461. package/dist/operations/catalogue/jelly.d.ts.map +1 -1
  462. package/dist/operations/catalogue/jelly.js +18 -8
  463. package/dist/operations/catalogue/knockAway.d.ts +3 -0
  464. package/dist/operations/catalogue/knockAway.d.ts.map +1 -0
  465. package/dist/operations/catalogue/knockAway.js +74 -0
  466. package/dist/operations/catalogue/leafFall.d.ts +3 -0
  467. package/dist/operations/catalogue/leafFall.d.ts.map +1 -0
  468. package/dist/operations/catalogue/leafFall.js +74 -0
  469. package/dist/operations/catalogue/lidarScan.d.ts.map +1 -1
  470. package/dist/operations/catalogue/lidarScan.js +4 -1
  471. package/dist/operations/catalogue/metalize.d.ts.map +1 -1
  472. package/dist/operations/catalogue/metalize.js +8 -2
  473. package/dist/operations/catalogue/motionTrail.d.ts +6 -0
  474. package/dist/operations/catalogue/motionTrail.d.ts.map +1 -0
  475. package/dist/operations/catalogue/motionTrail.js +221 -0
  476. package/dist/operations/catalogue/petrify.d.ts.map +1 -1
  477. package/dist/operations/catalogue/petrify.js +9 -3
  478. package/dist/operations/catalogue/physicalExit.d.ts +55 -0
  479. package/dist/operations/catalogue/physicalExit.d.ts.map +1 -0
  480. package/dist/operations/catalogue/physicalExit.js +165 -0
  481. package/dist/operations/catalogue/physicalHeld.d.ts +41 -0
  482. package/dist/operations/catalogue/physicalHeld.d.ts.map +1 -0
  483. package/dist/operations/catalogue/physicalHeld.js +78 -0
  484. package/dist/operations/catalogue/physicalMix.d.ts +45 -0
  485. package/dist/operations/catalogue/physicalMix.d.ts.map +1 -0
  486. package/dist/operations/catalogue/physicalMix.js +144 -0
  487. package/dist/operations/catalogue/pop.d.ts +3 -0
  488. package/dist/operations/catalogue/pop.d.ts.map +1 -0
  489. package/dist/operations/catalogue/pop.js +44 -0
  490. package/dist/operations/catalogue/print3d.d.ts.map +1 -1
  491. package/dist/operations/catalogue/print3d.js +5 -1
  492. package/dist/operations/catalogue/pulse.d.ts +3 -0
  493. package/dist/operations/catalogue/pulse.d.ts.map +1 -0
  494. package/dist/operations/catalogue/pulse.js +29 -0
  495. package/dist/operations/catalogue/restPose.d.ts +5 -7
  496. package/dist/operations/catalogue/restPose.d.ts.map +1 -1
  497. package/dist/operations/catalogue/restPose.js +18 -48
  498. package/dist/operations/catalogue/rotate.d.ts +3 -0
  499. package/dist/operations/catalogue/rotate.d.ts.map +1 -0
  500. package/dist/operations/catalogue/rotate.js +49 -0
  501. package/dist/operations/catalogue/shake.d.ts +3 -0
  502. package/dist/operations/catalogue/shake.d.ts.map +1 -0
  503. package/dist/operations/catalogue/shake.js +31 -0
  504. package/dist/operations/catalogue/shatter.d.ts.map +1 -1
  505. package/dist/operations/catalogue/shatter.js +5 -1
  506. package/dist/operations/catalogue/slam.d.ts +3 -0
  507. package/dist/operations/catalogue/slam.d.ts.map +1 -0
  508. package/dist/operations/catalogue/slam.js +89 -0
  509. package/dist/operations/catalogue/slingshot.d.ts +3 -0
  510. package/dist/operations/catalogue/slingshot.d.ts.map +1 -0
  511. package/dist/operations/catalogue/slingshot.js +88 -0
  512. package/dist/operations/catalogue/spin.d.ts.map +1 -1
  513. package/dist/operations/catalogue/spin.js +24 -13
  514. package/dist/operations/catalogue/sway.d.ts +3 -0
  515. package/dist/operations/catalogue/sway.d.ts.map +1 -0
  516. package/dist/operations/catalogue/sway.js +23 -0
  517. package/dist/operations/catalogue/swirl.d.ts.map +1 -1
  518. package/dist/operations/catalogue/swirl.js +6 -5
  519. package/dist/operations/catalogue/trailCore.d.ts +89 -0
  520. package/dist/operations/catalogue/trailCore.d.ts.map +1 -0
  521. package/dist/operations/catalogue/trailCore.js +190 -0
  522. package/dist/operations/catalogue/trailGhosts.d.ts +5 -0
  523. package/dist/operations/catalogue/trailGhosts.d.ts.map +1 -0
  524. package/dist/operations/catalogue/trailGhosts.js +179 -0
  525. package/dist/operations/catalogue/trailStampStyles.d.ts +11 -0
  526. package/dist/operations/catalogue/trailStampStyles.d.ts.map +1 -0
  527. package/dist/operations/catalogue/trailStampStyles.js +479 -0
  528. package/dist/operations/catalogue/trailStamps.d.ts +57 -0
  529. package/dist/operations/catalogue/trailStamps.d.ts.map +1 -0
  530. package/dist/operations/catalogue/trailStamps.js +349 -0
  531. package/dist/operations/catalogue/trailStreaks.d.ts +3 -0
  532. package/dist/operations/catalogue/trailStreaks.d.ts.map +1 -0
  533. package/dist/operations/catalogue/trailStreaks.js +147 -0
  534. package/dist/operations/catalogue/transitionField.d.ts +30 -0
  535. package/dist/operations/catalogue/transitionField.d.ts.map +1 -1
  536. package/dist/operations/catalogue/transitionField.js +21 -0
  537. package/dist/operations/catalogue/turnAway.d.ts +3 -0
  538. package/dist/operations/catalogue/turnAway.d.ts.map +1 -0
  539. package/dist/operations/catalogue/turnAway.js +54 -0
  540. package/dist/operations/catalogue/vortexDrain.d.ts +3 -0
  541. package/dist/operations/catalogue/vortexDrain.d.ts.map +1 -0
  542. package/dist/operations/catalogue/vortexDrain.js +68 -0
  543. package/dist/operations/catalogue/warp.d.ts +3 -0
  544. package/dist/operations/catalogue/warp.d.ts.map +1 -0
  545. package/dist/operations/catalogue/warp.js +73 -0
  546. package/dist/operations/catalogue/whoosh.d.ts +3 -0
  547. package/dist/operations/catalogue/whoosh.d.ts.map +1 -0
  548. package/dist/operations/catalogue/whoosh.js +84 -0
  549. package/dist/operations/catalogue/wobble.d.ts +3 -0
  550. package/dist/operations/catalogue/wobble.d.ts.map +1 -0
  551. package/dist/operations/catalogue/wobble.js +23 -0
  552. package/dist/operations/clipPreview.d.ts +3 -0
  553. package/dist/operations/clipPreview.d.ts.map +1 -0
  554. package/dist/operations/clipPreview.js +20 -0
  555. package/dist/operations/groupFanout.d.ts +96 -0
  556. package/dist/operations/groupFanout.d.ts.map +1 -0
  557. package/dist/operations/groupFanout.js +365 -0
  558. package/dist/operations/groups.d.ts +20 -0
  559. package/dist/operations/groups.d.ts.map +1 -0
  560. package/dist/operations/groups.js +66 -0
  561. package/dist/operations/index.d.ts +5 -2
  562. package/dist/operations/index.d.ts.map +1 -1
  563. package/dist/operations/index.js +5 -2
  564. package/dist/operations/objectEffects.d.ts +161 -6
  565. package/dist/operations/objectEffects.d.ts.map +1 -1
  566. package/dist/operations/objectEffects.js +1091 -17
  567. package/dist/operations/registry.d.ts.map +1 -1
  568. package/dist/operations/registry.js +24 -2
  569. package/dist/operations/runtime.d.ts +57 -2
  570. package/dist/operations/runtime.d.ts.map +1 -1
  571. package/dist/operations/runtime.js +161 -18
  572. package/dist/operations/types.d.ts +60 -3
  573. package/dist/operations/types.d.ts.map +1 -1
  574. package/dist/operations/types.js +5 -1
  575. package/dist/operations/useObjectEffectLayers.d.ts +2 -2
  576. package/dist/operations/useObjectEffectLayers.d.ts.map +1 -1
  577. package/dist/operations/useObjectEffectLayers.js +31 -10
  578. package/dist/operations/usePresentedVisibility.d.ts +10 -0
  579. package/dist/operations/usePresentedVisibility.d.ts.map +1 -0
  580. package/dist/operations/usePresentedVisibility.js +53 -0
  581. package/dist/presets/terrainBiomes.d.ts +67 -0
  582. package/dist/presets/terrainBiomes.d.ts.map +1 -0
  583. package/dist/presets/terrainBiomes.js +294 -0
  584. package/dist/presets/terrainPresets.d.ts +6 -0
  585. package/dist/presets/terrainPresets.d.ts.map +1 -1
  586. package/dist/presets/terrainPresets.js +26 -38
  587. package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
  588. package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
  589. package/dist/shaders/glsl/oceanCore.glsl.js +17 -0
  590. package/dist/shaders/glsl/surfaceCore.glsl.d.ts +21 -0
  591. package/dist/shaders/glsl/surfaceCore.glsl.d.ts.map +1 -0
  592. package/dist/shaders/glsl/surfaceCore.glsl.js +120 -0
  593. package/dist/shaders/glsl/terrainCore.glsl.d.ts +16 -3
  594. package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
  595. package/dist/shaders/glsl/terrainCore.glsl.js +266 -20
  596. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +2 -0
  597. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
  598. package/dist/shaders/ocean/OceanSurfaceMaterial.js +3 -0
  599. package/dist/shaders/terrain/TerrainMaterial.d.ts +17 -0
  600. package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
  601. package/dist/shaders/terrain/TerrainMaterial.js +107 -8
  602. package/dist/triggers/engine.d.ts +44 -0
  603. package/dist/triggers/engine.d.ts.map +1 -0
  604. package/dist/triggers/engine.js +165 -0
  605. package/dist/triggers/hosts/actions.d.ts +8 -0
  606. package/dist/triggers/hosts/actions.d.ts.map +1 -0
  607. package/dist/triggers/hosts/actions.js +22 -0
  608. package/dist/triggers/hosts/interactions.d.ts +6 -0
  609. package/dist/triggers/hosts/interactions.d.ts.map +1 -0
  610. package/dist/triggers/hosts/interactions.js +4 -0
  611. package/dist/triggers/hosts/timelineCues.d.ts +2 -0
  612. package/dist/triggers/hosts/timelineCues.d.ts.map +1 -0
  613. package/dist/triggers/hosts/timelineCues.js +22 -0
  614. package/dist/triggers/index.d.ts +13 -0
  615. package/dist/triggers/index.d.ts.map +1 -0
  616. package/dist/triggers/index.js +9 -0
  617. package/dist/triggers/kinds/action.d.ts +2 -0
  618. package/dist/triggers/kinds/action.d.ts.map +1 -0
  619. package/dist/triggers/kinds/action.js +31 -0
  620. package/dist/triggers/kinds/animations.d.ts +2 -0
  621. package/dist/triggers/kinds/animations.d.ts.map +1 -0
  622. package/dist/triggers/kinds/animations.js +75 -0
  623. package/dist/triggers/kinds/effects.d.ts +2 -0
  624. package/dist/triggers/kinds/effects.d.ts.map +1 -0
  625. package/dist/triggers/kinds/effects.js +27 -0
  626. package/dist/triggers/kinds/index.d.ts +4 -0
  627. package/dist/triggers/kinds/index.d.ts.map +1 -0
  628. package/dist/triggers/kinds/index.js +4 -0
  629. package/dist/triggers/log.d.ts +21 -0
  630. package/dist/triggers/log.d.ts.map +1 -0
  631. package/dist/triggers/log.js +43 -0
  632. package/dist/triggers/readiness.d.ts +40 -0
  633. package/dist/triggers/readiness.d.ts.map +1 -0
  634. package/dist/triggers/readiness.js +158 -0
  635. package/dist/triggers/registry.d.ts +41 -0
  636. package/dist/triggers/registry.d.ts.map +1 -0
  637. package/dist/triggers/registry.js +7 -0
  638. package/dist/types/gridConfigs.d.ts +18 -23
  639. package/dist/types/gridConfigs.d.ts.map +1 -1
  640. package/dist/ui/UiAnchorUpdater.d.ts +10 -0
  641. package/dist/ui/UiAnchorUpdater.d.ts.map +1 -0
  642. package/dist/ui/UiAnchorUpdater.js +111 -0
  643. package/dist/ui/UiLayers.d.ts +20 -0
  644. package/dist/ui/UiLayers.d.ts.map +1 -0
  645. package/dist/ui/UiLayers.js +57 -0
  646. package/dist/ui/index.d.ts +9 -0
  647. package/dist/ui/index.d.ts.map +1 -0
  648. package/dist/ui/index.js +6 -0
  649. package/dist/ui/uiAnchors.d.ts +21 -0
  650. package/dist/ui/uiAnchors.d.ts.map +1 -0
  651. package/dist/ui/uiAnchors.js +22 -0
  652. package/dist/ui/uiBaseStyles.d.ts +2 -0
  653. package/dist/ui/uiBaseStyles.d.ts.map +1 -0
  654. package/dist/ui/uiBaseStyles.js +100 -0
  655. package/dist/ui/uiBinder.d.ts +30 -0
  656. package/dist/ui/uiBinder.d.ts.map +1 -0
  657. package/dist/ui/uiBinder.js +344 -0
  658. package/dist/utils/configAnimations.d.ts.map +1 -1
  659. package/dist/utils/configAnimations.js +5 -1
  660. package/dist/utils/gridConfig.d.ts +1 -1
  661. package/dist/utils/gridConfig.d.ts.map +1 -1
  662. package/dist/utils/gridConfig.js +1 -1
  663. package/dist/utils/landPatch.d.ts +33 -0
  664. package/dist/utils/landPatch.d.ts.map +1 -0
  665. package/dist/utils/landPatch.js +114 -0
  666. package/dist/utils/renderedSky.d.ts +32 -0
  667. package/dist/utils/renderedSky.d.ts.map +1 -0
  668. package/dist/utils/renderedSky.js +57 -0
  669. package/dist/utils/skyMoon.d.ts +35 -0
  670. package/dist/utils/skyMoon.d.ts.map +1 -0
  671. package/dist/utils/skyMoon.js +41 -0
  672. package/dist/utils/terrainHeight.d.ts +4 -0
  673. package/dist/utils/terrainHeight.d.ts.map +1 -0
  674. package/dist/utils/terrainHeight.js +150 -0
  675. package/dist/utils/terrainTextureResolver.d.ts +18 -0
  676. package/dist/utils/terrainTextureResolver.d.ts.map +1 -0
  677. package/dist/utils/terrainTextureResolver.js +17 -0
  678. package/dist/utils/terrainUniforms.d.ts +17 -0
  679. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  680. package/dist/utils/terrainUniforms.js +84 -0
  681. package/dist/utils/textureArrays.d.ts +29 -0
  682. package/dist/utils/textureArrays.d.ts.map +1 -0
  683. package/dist/utils/textureArrays.js +140 -0
  684. package/package.json +2 -2
@@ -7,17 +7,20 @@
7
7
  import { Color } from 'three';
8
8
  import { defineOperation } from '../types.js';
9
9
  import { addLayer, forEachMeshMaterial, removeLayer } from './shaderLayers.js';
10
- import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, runProgress, setFieldParams } from './transitionField.js';
10
+ import { DIRECTION_OPTIONS, createFieldState, fieldGlsl, fieldUniforms, goneGlsl, runProgress, setFieldParams, setReveal } from './transitionField.js';
11
11
  const P = 'Stn';
12
12
  const KEY = 'petrify';
13
13
  const STATE = '__opPetrify';
14
14
  function layerFor(st) {
15
15
  const amount = /* glsl */ `
16
16
  float stnD = StnThreshold() - StnField(vStnQ);
17
- float st = smoothstep(0.0, uStnEdgeWidth, stnD);`;
17
+ float st = smoothstep(0.0, uStnEdgeWidth, stnD);
18
+ // revealed by the stone: nothing ahead of the front, full stone right behind it
19
+ if (uStnReveal > 0.5) { if (stnD < 0.0) discard; st = 1.0; }
20
+ if (StnGone(vStnQ) > 0.5) { st = 0.0; stnD = -1.0; } // wiped by the look that replaces it`;
18
21
  return {
19
22
  uniforms: { ...fieldUniforms(P, st.field), uStnStone: st.stone },
20
- common: `varying vec3 vStnQ;\nvarying vec3 vStnR;\n${fieldGlsl(P)}`,
23
+ common: `varying vec3 vStnQ;\nvarying vec3 vStnR;\n${fieldGlsl(P)}\n${goneGlsl(P)}`,
21
24
  vertex: /* glsl */ `
22
25
  vStnR = (uStnRootInv * modelMatrix * vec4(transformed, 1.0)).xyz;
23
26
  vStnQ = StnNorm(vStnR);`,
@@ -54,6 +57,8 @@ export default defineOperation({
54
57
  multi: true,
55
58
  toggles: true,
56
59
  usableIn: ['interaction', 'action', 'object'],
60
+ presence: 'paint',
61
+ field: (target) => target.userData[STATE]?.field,
57
62
  stack: 'surface',
58
63
  params: {
59
64
  direction: { type: 'select', label: 'Direction', default: 'up', options: DIRECTION_OPTIONS },
@@ -86,6 +91,7 @@ export default defineOperation({
86
91
  const s = target.userData[STATE];
87
92
  if (!s)
88
93
  return;
94
+ setReveal(s.field, p);
89
95
  return runProgress(target, s.field, 0, {
90
96
  duration: Number(p.duration), ease: 'power1.inOut',
91
97
  onComplete: () => { s.mats.forEach(m => removeLayer(m, KEY)); delete target.userData[STATE]; },
@@ -0,0 +1,55 @@
1
+ import { Quaternion, Vector3 } from 'three';
2
+ import { type OperationDefinition, type OperationParamSpec, type OperationParams } from '../types';
3
+ /** What a path writes: a turn and scale about a pivot (object-local), plus a world offset. */
4
+ export interface ExitPose {
5
+ q: Quaternion;
6
+ s: Vector3;
7
+ off: Vector3;
8
+ /** 'center' or 'bottom' of the object's bounds. */
9
+ pivot: 'center' | 'bottom';
10
+ }
11
+ /** The world frame the path is laid out in, fixed when the motion starts. */
12
+ export interface ExitFrame {
13
+ /** World up. */
14
+ up: Vector3;
15
+ /** Screen right on the ground plane (world X with no camera). */
16
+ right: Vector3;
17
+ /** From the object towards the camera on the ground plane (world +Z with no camera). */
18
+ toward: Vector3;
19
+ /** From the object's base to the camera (world), or null without a camera. */
20
+ camera: Vector3 | null;
21
+ }
22
+ export interface ExitPathArgs<M> {
23
+ /** World size at rest, and its largest side. */
24
+ size: Vector3;
25
+ span: number;
26
+ p: OperationParams;
27
+ frame: ExitFrame;
28
+ /** Built once per run by `prepare` (tables, random draws). */
29
+ mem: M;
30
+ /** A turn given in WORLD axes, as the object-local turn ExitPose.q expects. */
31
+ local: (qWorld: Quaternion) => Quaternion;
32
+ /** The object's own axis (0 x, 1 y, 2 z) that lies closest to a WORLD direction at rest — for stretching along it. */
33
+ axis: (worldDir: Vector3) => 0 | 1 | 2;
34
+ }
35
+ export interface ExitSpec<M = unknown> {
36
+ value: string;
37
+ label: string;
38
+ description: string;
39
+ params: Record<string, OperationParamSpec>;
40
+ /** Per-run data shared by both paths (an integrated angle table…). */
41
+ prepare?: (args: Omit<ExitPathArgs<M>, 'mem' | 'local' | 'axis'>) => M;
42
+ /** u: 0 at rest → 1 gone. Must be the identity at u = 0 and scale ~0 at u = 1. */
43
+ exit: (u: number, out: ExitPose, a: ExitPathArgs<M>) => void;
44
+ /** v: 0 gone → 1 at rest. Scale ~0 at v = 0, the identity at v = 1. */
45
+ enter: (v: number, out: ExitPose, a: ExitPathArgs<M>) => void;
46
+ }
47
+ export declare const clamp01: (x: number) => number;
48
+ export declare const smooth: (a: number, b: number, x: number) => number;
49
+ /** Stretch by `k` along one local axis keeping the volume (the other two by 1/√k), times a uniform `size`. */
50
+ export declare function stretchAxis(s: Vector3, axis: 0 | 1 | 2, k: number, size?: number): void;
51
+ /** A damped ring that starts at 0, moves first in `+` and lands exactly at 0 at σ = 1. */
52
+ export declare const ring: (sg: number, cycles: number, decay?: number) => number;
53
+ /** Build a physical exit operation from its two paths. */
54
+ export declare function physicalExit<M = unknown>(spec: ExitSpec<M>): OperationDefinition;
55
+ //# sourceMappingURL=physicalExit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physicalExit.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/physicalExit.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAA0C,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3I,8FAA8F;AAC9F,MAAM,WAAW,QAAQ;IACrB,CAAC,EAAE,UAAU,CAAC;IACd,CAAC,EAAE,OAAO,CAAC;IACX,GAAG,EAAE,OAAO,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B;AAED,6EAA6E;AAC7E,MAAM,WAAW,SAAS;IACtB,gBAAgB;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAC;IACf,wFAAwF;IACxF,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,gDAAgD;IAChD,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,eAAe,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,8DAA8D;IAC9D,GAAG,EAAE,CAAC,CAAC;IACP,+EAA+E;IAC/E,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC;IAC1C,sHAAsH;IACtH,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC3C,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,kFAAkF;IAClF,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7D,uEAAuE;IACvE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACjE;AAeD,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,WAAgC,CAAC;AAClE,eAAO,MAAM,MAAM,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,WAA0E,CAAC;AAEjI,8GAA8G;AAC9G,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,SAAI,QAG3E;AAED,0FAA0F;AAC1F,eAAO,MAAM,IAAI,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,cAAS,WACqB,CAAC;AAiBhF,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CA+FhF"}
@@ -0,0 +1,165 @@
1
+ // Physical exits — the object leaves the scene by a motion of its own (blast off,
2
+ // drain into a vortex, fall like a leaf) and comes back by ANOTHER motion: a rocket
3
+ // lands, it does not un-launch. One shape for all of them:
4
+ //
5
+ // apply the exit path, u: 0 (at rest) → 1 (gone: scale ~0, then hidden)
6
+ // revert from gone: the entrance path, v: 0 (gone) → 1 (exactly at rest)
7
+ // from part-way out: back along the exit path (it turns round mid-flight)
8
+ // apply while it is still coming in: back along the entrance path (it turns round)
9
+ //
10
+ // Paths are pure functions of their own progress, written as physics in time (the
11
+ // tween is linear, the motion's easing is the physics), so a turn-round is seamless
12
+ // and `duration: 0` lands exactly. They ride on the object's transform through the
13
+ // physical mix (./physicalMix.ts) — never writing position / rotation / scale —
14
+ // so they stack with held motions and follow a moving base.
15
+ //
16
+ // presence 'vanish': as an object effect following visibility, shown = the entrance,
17
+ // hidden = the exit.
18
+ import { gsap } from 'gsap';
19
+ import { Quaternion, Vector3 } from 'three';
20
+ import { defineOperation } from '../types.js';
21
+ import { acquireRest, poseAbout, releaseRest } from './restPose.js';
22
+ import { mixBase } from './physicalMix.js';
23
+ const UP = new Vector3(0, 1, 0);
24
+ const GONE = 1e-4;
25
+ export const clamp01 = (x) => Math.min(1, Math.max(0, x));
26
+ export const smooth = (a, b, x) => { const v = clamp01((x - a) / (b - a)); return v * v * (3 - 2 * v); };
27
+ /** Stretch by `k` along one local axis keeping the volume (the other two by 1/√k), times a uniform `size`. */
28
+ export function stretchAxis(s, axis, k, size = 1) {
29
+ const o = 1 / Math.sqrt(Math.max(k, 0.02));
30
+ s.set(o * size, o * size, o * size).setComponent(axis, k * size);
31
+ }
32
+ /** A damped ring that starts at 0, moves first in `+` and lands exactly at 0 at σ = 1. */
33
+ export const ring = (sg, cycles, decay = 3) => Math.sin(2 * Math.PI * cycles * sg) * Math.exp(-decay * sg) * (1 - sg * sg);
34
+ /** The camera's ground-plane frame at trigger time (world X / +Z without a camera). */
35
+ function frameOf(target, ctx) {
36
+ const frame = { up: UP.clone(), right: new Vector3(1, 0, 0), toward: new Vector3(0, 0, 1), camera: null };
37
+ const cam = ctx?.tools?.cameraPose?.();
38
+ if (!cam)
39
+ return frame;
40
+ const at = mixBase(target).position.clone(); // where it stands at its base, not where a path left it
41
+ target.parent?.localToWorld(at);
42
+ frame.camera = new Vector3(cam.position[0], cam.position[1], cam.position[2]).sub(at);
43
+ const t = new Vector3(cam.position[0] - at.x, 0, cam.position[2] - at.z);
44
+ if (t.lengthSq() < 1e-8)
45
+ return frame;
46
+ frame.toward.copy(t.normalize());
47
+ frame.right.crossVectors(UP, frame.toward).normalize();
48
+ return frame;
49
+ }
50
+ /** Build a physical exit operation from its two paths. */
51
+ export function physicalExit(spec) {
52
+ const KEY = `__opExit_${spec.value}`;
53
+ const pose = { q: new Quaternion(), s: new Vector3(1, 1, 1), off: new Vector3(), pivot: 'center' };
54
+ const draw = (target, st) => {
55
+ const a = st.args;
56
+ pose.q.identity();
57
+ pose.s.set(1, 1, 1);
58
+ pose.off.set(0, 0, 0);
59
+ pose.pivot = 'center';
60
+ if (st.mode === 'exit')
61
+ spec.exit(st.t, pose, a);
62
+ else
63
+ spec.enter(st.t, pose, a);
64
+ pose.s.set(Math.max(pose.s.x, GONE), Math.max(pose.s.y, GONE), Math.max(pose.s.z, GONE));
65
+ const pivot = pose.pivot === 'bottom' ? st.rest.bottomLocal : st.rest.centerLocal;
66
+ poseAbout(target, st.rest, pivot, pose.q, pose.s, pose.off, KEY);
67
+ };
68
+ const setup = (target, st, p, ctx) => {
69
+ st.frame = frameOf(target, ctx);
70
+ const size = st.rest.size.clone();
71
+ const base = { size, span: Math.max(size.x, size.y, size.z, 1e-6), p, frame: st.frame };
72
+ // the object's world turn at its BASE (not the pose this path left it in)
73
+ const W = target.parent ? target.parent.getWorldQuaternion(new Quaternion()) : new Quaternion();
74
+ W.multiply(mixBase(target).quaternion);
75
+ const Wi = W.clone().invert();
76
+ const local = (qWorld) => qWorld.premultiply(Wi).multiply(W);
77
+ const _d = new Vector3();
78
+ const axis = (dir) => {
79
+ _d.copy(dir).applyQuaternion(Wi);
80
+ const x = Math.abs(_d.x), y = Math.abs(_d.y), z = Math.abs(_d.z);
81
+ return x >= y && x >= z ? 0 : y >= z ? 1 : 2;
82
+ };
83
+ st.args = { ...base, local, axis, mem: spec.prepare ? spec.prepare(base) : undefined };
84
+ };
85
+ /** Move along the current path to `to`; resolves when it gets there (or is replaced). */
86
+ const run = (target, st, to, seconds, done) => {
87
+ gsap.killTweensOf(st.proxy);
88
+ st.resolve?.();
89
+ st.proxy.t = st.t;
90
+ return new Promise(resolve => {
91
+ st.resolve = resolve;
92
+ const finish = () => { st.t = to; draw(target, st); st.resolve = undefined; done(); resolve(); };
93
+ if (seconds <= 1e-4 || Math.abs(to - st.t) < 1e-6) {
94
+ finish();
95
+ return;
96
+ }
97
+ gsap.to(st.proxy, {
98
+ t: to, duration: seconds, ease: 'none',
99
+ onUpdate: () => { st.t = st.proxy.t; draw(target, st); },
100
+ onComplete: finish,
101
+ });
102
+ });
103
+ };
104
+ const release = (target) => {
105
+ const st = target.userData[KEY];
106
+ if (!st)
107
+ return;
108
+ gsap.killTweensOf(st.proxy);
109
+ st.resolve?.();
110
+ delete target.userData[KEY];
111
+ releaseRest(target, KEY);
112
+ };
113
+ return defineOperation({
114
+ value: spec.value,
115
+ label: spec.label,
116
+ description: spec.description,
117
+ channel: 'transform',
118
+ multi: true,
119
+ toggles: true,
120
+ usableIn: ['interaction', 'action', 'object'],
121
+ presence: 'vanish',
122
+ params: spec.params,
123
+ apply(target, p, ctx) {
124
+ let st = target.userData[KEY];
125
+ if (!st) {
126
+ st = { rest: acquireRest(target, KEY), mode: 'exit', t: 0, proxy: { t: 0 }, frame: frameOf(target, ctx) };
127
+ target.userData[KEY] = st;
128
+ setup(target, st, p, ctx);
129
+ }
130
+ else
131
+ st.args = { ...st.args, p };
132
+ const D = Number(p.duration);
133
+ const s = st;
134
+ // still coming in: turn round along the entrance, back to gone
135
+ if (s.mode === 'enter' && s.t < 1)
136
+ return run(target, s, 0, D * s.t, () => { s.mode = 'exit'; s.t = 1; target.visible = false; });
137
+ if (s.mode === 'enter') {
138
+ s.mode = 'exit';
139
+ s.t = 0;
140
+ setup(target, s, p, ctx);
141
+ }
142
+ return run(target, s, 1, D * (1 - s.t), () => { target.visible = false; });
143
+ },
144
+ revert(target, p, ctx) {
145
+ const st = target.userData[KEY];
146
+ if (!st)
147
+ return;
148
+ st.args = { ...st.args, p };
149
+ target.visible = true; // it comes back shown (it may have gone while the object was hidden)
150
+ const D = Number(p.duration);
151
+ const done = () => release(target);
152
+ // part-way out: turn round along the exit
153
+ if (st.mode === 'exit' && st.t < 1)
154
+ return run(target, st, 0, D * st.t, done);
155
+ // gone: the entrance (re-laid out for where the camera is now)
156
+ if (st.mode === 'exit') {
157
+ st.mode = 'enter';
158
+ st.t = 0;
159
+ setup(target, st, p, ctx);
160
+ draw(target, st);
161
+ }
162
+ return run(target, st, 1, D * (1 - st.t), done);
163
+ },
164
+ });
165
+ }
@@ -0,0 +1,41 @@
1
+ import type { OperationDefinition, OperationParamSpec, OperationParams } from '../types';
2
+ import { type MixBody, type MixPart } from './physicalMix';
3
+ export interface HeldState<M> {
4
+ /** Strength 0..1 (the in / out envelope). */
5
+ amp: {
6
+ v: number;
7
+ };
8
+ /** The effect's current parameters (a live edit lands here). */
9
+ p: OperationParams;
10
+ body: MixBody;
11
+ /** The effect's own memory between frames. */
12
+ mem: M;
13
+ /** Leaving (the out is playing). */
14
+ out: boolean;
15
+ /** The motion's own clock, seconds — runs backwards while `__backward` is set. */
16
+ t: number;
17
+ resolve?: () => void;
18
+ }
19
+ export interface HeldPhysicalSpec<M> {
20
+ value: string;
21
+ label: string;
22
+ description: string;
23
+ params: Record<string, OperationParamSpec>;
24
+ /** Ease of the in / out envelope (default sine.inOut). */
25
+ ease?: string;
26
+ /** A repeating motion (see the header). Default true; false = a state that arrives and stays. */
27
+ periodic?: boolean;
28
+ memory: (body: MixBody, p: OperationParams) => M;
29
+ /** Fill `part` for this frame. `time` is the motion's clock and `dt` its step (negative when it runs backwards). */
30
+ move: (part: MixPart, st: HeldState<M>, time: number, dt: number) => void;
31
+ /** The out is starting (e.g. pick where to land). */
32
+ onOut?: (st: HeldState<M>) => void;
33
+ }
34
+ /** A periodic effect's pass. */
35
+ export declare const DURATION: Extract<OperationParamSpec, {
36
+ type: 'number';
37
+ }>;
38
+ /** How long a periodic effect takes to build up, and to settle, within a pass of `duration`. */
39
+ export declare const periodicEase: (duration: number) => number;
40
+ export declare function heldPhysical<M>(spec: HeldPhysicalSpec<M>): OperationDefinition;
41
+ //# sourceMappingURL=physicalHeld.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physicalHeld.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/physicalHeld.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAqB,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE9E,MAAM,WAAW,SAAS,CAAC,CAAC;IACxB,6CAA6C;IAC7C,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnB,gEAAgE;IAChE,CAAC,EAAE,eAAe,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,GAAG,EAAE,CAAC,CAAC;IACP,oCAAoC;IACpC,GAAG,EAAE,OAAO,CAAC;IACb,kFAAkF;IAClF,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC3C,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,KAAK,CAAC,CAAC;IACjD,oHAAoH;IACpH,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,qDAAqD;IACrD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACtC;AAED,gCAAgC;AAChC,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAgL,CAAC;AAEtP,gGAAgG;AAChG,eAAO,MAAM,YAAY,GAAI,UAAU,MAAM,WAAgD,CAAC;AAE9F,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAmD9E"}
@@ -0,0 +1,78 @@
1
+ // Held physical effects (float, sway, bounce…): one shape for all of them.
2
+ //
3
+ // in the motion's strength eases 0 → 1 while it is already moving
4
+ // hold it keeps moving for as long as the effect is on
5
+ // out the strength eases back to 0, the object settles on its base
6
+ //
7
+ // Two kinds:
8
+ // periodic a motion that repeats (float, sway, bounce…). `duration` is one PASS —
9
+ // in + moving + out. Whoever plays it decides how long it stays on: an
10
+ // object effect plays one pass and settles, or keeps it on with Loop
11
+ // (see ObjectEffectsController); an interaction keeps it on until toggled.
12
+ // `__backward` runs its clock backwards (playback reverse / yoyo).
13
+ // state it arrives and stays (grow). `duration` is the in / out time.
14
+ //
15
+ // The motion itself is a `move` function that fills the effect's part of the
16
+ // physical mix (./physicalMix.ts) each frame — so these stack with each other
17
+ // and ride on the object's own (authored / animated) transform.
18
+ import { gsap } from 'gsap';
19
+ import { defineOperation } from '../types.js';
20
+ import { joinMix, leaveMix } from './physicalMix.js';
21
+ /** A periodic effect's pass. */
22
+ export const DURATION = { type: 'number', label: 'Duration', default: 4, min: 0.2, max: 30, step: 0.1, unit: 's', hint: 'One pass: it builds up, moves and settles. With Loop it just keeps going' };
23
+ /** How long a periodic effect takes to build up, and to settle, within a pass of `duration`. */
24
+ export const periodicEase = (duration) => Math.min(0.8, Math.max(0, duration) * 0.25);
25
+ export function heldPhysical(spec) {
26
+ const KEY = `__op_${spec.value}`;
27
+ const periodic = spec.periodic !== false;
28
+ const easeTime = (p) => (periodic ? periodicEase(Number(p.duration)) : Number(p.duration));
29
+ const run = (target, st, to, duration, done) => {
30
+ gsap.killTweensOf(st.amp);
31
+ st.resolve?.(); // a run that is replaced still finishes for whoever waits on it
32
+ return new Promise((resolve) => {
33
+ st.resolve = resolve;
34
+ gsap.to(st.amp, {
35
+ v: to, duration, ease: spec.ease ?? 'sine.inOut',
36
+ onComplete: () => { if (st.resolve === resolve)
37
+ st.resolve = undefined; done?.(); resolve(); },
38
+ });
39
+ });
40
+ };
41
+ return defineOperation({
42
+ value: spec.value, label: spec.label, description: spec.description,
43
+ channel: 'transform', multi: true, toggles: true,
44
+ usableIn: ['interaction', 'action', 'object'],
45
+ periodic,
46
+ params: spec.params,
47
+ apply(target, p) {
48
+ let st = target.userData[KEY];
49
+ if (!st) {
50
+ const own = { amp: { v: 0 }, p, out: false, t: 0 };
51
+ const { body } = joinMix(target, KEY, (part, _time, dt) => {
52
+ const step = own.p.__backward === true ? -dt : dt;
53
+ own.t += step;
54
+ spec.move(part, own, own.t, step);
55
+ });
56
+ own.body = body;
57
+ own.mem = spec.memory(body, p);
58
+ st = own;
59
+ target.userData[KEY] = st;
60
+ }
61
+ st.p = p;
62
+ st.out = false;
63
+ return run(target, st, 1, easeTime(p));
64
+ },
65
+ revert(target, p) {
66
+ const st = target.userData[KEY];
67
+ if (!st)
68
+ return;
69
+ st.out = true;
70
+ spec.onOut?.(st);
71
+ // from part-way it takes part of the time (same speed both ways)
72
+ return run(target, st, 0, easeTime(p) * Math.min(1, Math.max(0.1, Math.abs(st.amp.v))), () => {
73
+ leaveMix(target, KEY);
74
+ delete target.userData[KEY];
75
+ });
76
+ },
77
+ });
78
+ }
@@ -0,0 +1,45 @@
1
+ import { Quaternion, Vector3 } from 'three';
2
+ import type { Object3D } from 'three';
3
+ /** One effect's contribution. Mutate it in place (in a tween's onUpdate, or in `sample`). */
4
+ export interface MixPart {
5
+ /** Turn about the pivot, in the object's own axes. */
6
+ q: Quaternion;
7
+ /** Scale about the pivot. */
8
+ s: Vector3;
9
+ /** The point that stays put under q / s, in the object's local space. */
10
+ pivot: Vector3;
11
+ /** Offset in world units. */
12
+ off: Vector3;
13
+ /** Called each frame before composing: time and delta in seconds. */
14
+ sample?: (part: MixPart, time: number, dt: number) => void;
15
+ }
16
+ /** What an effect needs to know about the object it moves (measured when its first part joined). */
17
+ export interface MixBody {
18
+ /** Bounds centre and bottom-centre, in the object's local space. */
19
+ centerLocal: Vector3;
20
+ bottomLocal: Vector3;
21
+ /** World-space size. */
22
+ size: Vector3;
23
+ }
24
+ /**
25
+ * Compose now — one object's mix, or all of them. Call it after something else
26
+ * wrote the object's transform in this frame (the object's frame hook does).
27
+ */
28
+ export declare function tickMix(target?: Object3D | null): void;
29
+ /** Add (or get) this effect's part on the object. `key` is the effect's own. */
30
+ export declare function joinMix(target: Object3D, key: string, sample?: MixPart['sample']): {
31
+ part: MixPart;
32
+ body: MixBody;
33
+ };
34
+ /** Take this effect's part off. With the last part gone the object is back on its base. */
35
+ export declare function leaveMix(target: Object3D, key: string): void;
36
+ /** Compose this object now (after changing a part outside the ticker). */
37
+ export declare function composeMix(target: Object3D): void;
38
+ /** The object's base transform while effects move it (its own transform otherwise). */
39
+ export declare function mixBase(target: Object3D): {
40
+ position: Vector3;
41
+ quaternion: Quaternion;
42
+ scale: Vector3;
43
+ };
44
+ export declare const isMixed: (target: Object3D) => boolean;
45
+ //# sourceMappingURL=physicalMix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physicalMix.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/physicalMix.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAQ,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,6FAA6F;AAC7F,MAAM,WAAW,OAAO;IACpB,sDAAsD;IACtD,CAAC,EAAE,UAAU,CAAC;IACd,6BAA6B;IAC7B,CAAC,EAAE,OAAO,CAAC;IACX,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;IACf,6BAA6B;IAC7B,GAAG,EAAE,OAAO,CAAC;IACb,qEAAqE;IACrE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D;AAED,oGAAoG;AACpG,MAAM,WAAW,OAAO;IACpB,oEAAoE;IACpE,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,IAAI,EAAE,OAAO,CAAC;CACjB;AA+DD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,QAK/C;AAED,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAmBnH;AAED,2FAA2F;AAC3F,wBAAgB,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,QAOrD;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,QAAqD;AAEhG,uFAAuF;AACvF,wBAAgB,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAGvG;AAED,eAAO,MAAM,OAAO,GAAI,QAAQ,QAAQ,YAAsB,CAAC"}
@@ -0,0 +1,144 @@
1
+ // Physical mix — how effects move an object without owning its transform.
2
+ //
3
+ // A physical effect never writes position / rotation / scale itself. It adds a
4
+ // *part* to the object's mix: a turn and a scale about a pivot, plus a world
5
+ // offset. Each frame the mix lays every part over the object's BASE transform —
6
+ // the one the scene authored or animates — and writes the result. So:
7
+ //
8
+ // - effects stack: float + sway + a jelly all show at once, in the order they joined;
9
+ // - the base stays free: move the object in the studio, keyframe it, play a clip —
10
+ // the effects ride on top. The mix notices any transform it did not write itself
11
+ // and takes it as the new base;
12
+ // - when the last part leaves, the object is back on its base exactly.
13
+ //
14
+ // The mix is composed from the gsap ticker and, for objects in the React tree,
15
+ // again from the object's own frame hook (after its property animations wrote,
16
+ // before the render) — see tickMix. Composing twice in a frame is harmless.
17
+ import { gsap } from 'gsap';
18
+ import { Box3, Quaternion, Vector3 } from 'three';
19
+ const mixes = new Map();
20
+ let ticking = false;
21
+ const _a = new Vector3(), _b = new Vector3(), _P = new Vector3(), _S = new Vector3(), _W = new Vector3();
22
+ const _Q = new Quaternion();
23
+ function measure(target) {
24
+ target.updateWorldMatrix(true, true);
25
+ const box = new Box3().setFromObject(target);
26
+ if (box.isEmpty())
27
+ return { centerLocal: new Vector3(), bottomLocal: new Vector3(), size: new Vector3(1, 1, 1) };
28
+ const c = box.getCenter(new Vector3());
29
+ const bottom = new Vector3(c.x, box.min.y, c.z);
30
+ return { centerLocal: target.worldToLocal(c.clone()), bottomLocal: target.worldToLocal(bottom), size: box.getSize(new Vector3()) };
31
+ }
32
+ /** Lay the parts over the base and write the transform. */
33
+ function compose(m) {
34
+ const t = m.target;
35
+ // a transform we did not write = the scene moved the object: that is the new base
36
+ if (!t.position.equals(m.lastP))
37
+ m.baseP.copy(t.position);
38
+ if (!t.quaternion.equals(m.lastQ))
39
+ m.baseQ.copy(t.quaternion);
40
+ if (!t.scale.equals(m.lastS))
41
+ m.baseS.copy(t.scale);
42
+ _P.copy(m.baseP);
43
+ _Q.copy(m.baseQ);
44
+ _S.copy(m.baseS);
45
+ _W.set(0, 0, 0);
46
+ for (const part of m.parts.values()) {
47
+ // the pivot keeps its place in the parent's space under this part's turn and scale
48
+ _a.copy(part.pivot).multiply(_S).applyQuaternion(_Q);
49
+ _Q.multiply(part.q);
50
+ _S.multiply(part.s);
51
+ _b.copy(part.pivot).multiply(_S).applyQuaternion(_Q);
52
+ _P.add(_a).sub(_b);
53
+ _W.add(part.off);
54
+ }
55
+ if (_W.lengthSq() > 0) {
56
+ if (t.parent) {
57
+ t.parent.localToWorld(_P).add(_W);
58
+ t.parent.worldToLocal(_P);
59
+ }
60
+ else
61
+ _P.add(_W);
62
+ }
63
+ t.position.copy(_P);
64
+ t.quaternion.copy(_Q);
65
+ t.scale.copy(_S);
66
+ m.lastP.copy(t.position);
67
+ m.lastQ.copy(t.quaternion);
68
+ m.lastS.copy(t.scale);
69
+ }
70
+ function step(m, now) {
71
+ // time moves once per frame, however often the mix is composed in it
72
+ const dt = m.stamp ? Math.min(0.1, (now - m.stamp) / 1000) : 0;
73
+ if (dt > 0 || !m.stamp) {
74
+ m.stamp = now;
75
+ m.time += dt;
76
+ for (const part of m.parts.values())
77
+ part.sample?.(part, m.time, dt);
78
+ }
79
+ compose(m);
80
+ }
81
+ const tickAll = () => { const now = performance.now(); mixes.forEach(m => step(m, now)); };
82
+ /**
83
+ * Compose now — one object's mix, or all of them. Call it after something else
84
+ * wrote the object's transform in this frame (the object's frame hook does).
85
+ */
86
+ export function tickMix(target) {
87
+ if (!mixes.size)
88
+ return;
89
+ if (!target) {
90
+ tickAll();
91
+ return;
92
+ }
93
+ const m = mixes.get(target);
94
+ if (m)
95
+ step(m, performance.now());
96
+ }
97
+ /** Add (or get) this effect's part on the object. `key` is the effect's own. */
98
+ export function joinMix(target, key, sample) {
99
+ let m = mixes.get(target);
100
+ if (!m) {
101
+ m = {
102
+ target, ...measure(target),
103
+ baseP: target.position.clone(), baseQ: target.quaternion.clone(), baseS: target.scale.clone(),
104
+ lastP: target.position.clone(), lastQ: target.quaternion.clone(), lastS: target.scale.clone(),
105
+ parts: new Map(), time: 0, stamp: 0,
106
+ };
107
+ mixes.set(target, m);
108
+ if (!ticking) {
109
+ ticking = true;
110
+ gsap.ticker.add(tickAll);
111
+ }
112
+ }
113
+ let part = m.parts.get(key);
114
+ if (!part) {
115
+ part = { q: new Quaternion(), s: new Vector3(1, 1, 1), pivot: m.centerLocal.clone(), off: new Vector3() };
116
+ m.parts.set(key, part);
117
+ }
118
+ if (sample)
119
+ part.sample = sample;
120
+ return { part, body: m };
121
+ }
122
+ /** Take this effect's part off. With the last part gone the object is back on its base. */
123
+ export function leaveMix(target, key) {
124
+ const m = mixes.get(target);
125
+ if (!m || !m.parts.delete(key))
126
+ return;
127
+ compose(m);
128
+ if (m.parts.size)
129
+ return;
130
+ mixes.delete(target);
131
+ if (!mixes.size && ticking) {
132
+ ticking = false;
133
+ gsap.ticker.remove(tickAll);
134
+ }
135
+ }
136
+ /** Compose this object now (after changing a part outside the ticker). */
137
+ export function composeMix(target) { const m = mixes.get(target); if (m)
138
+ compose(m); }
139
+ /** The object's base transform while effects move it (its own transform otherwise). */
140
+ export function mixBase(target) {
141
+ const m = mixes.get(target);
142
+ return m ? { position: m.baseP, quaternion: m.baseQ, scale: m.baseS } : target;
143
+ }
144
+ export const isMixed = (target) => mixes.has(target);
@@ -0,0 +1,3 @@
1
+ declare const _default: import("..").OperationDefinition;
2
+ export default _default;
3
+ //# sourceMappingURL=pop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pop.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/pop.ts"],"names":[],"mappings":";AASA,wBAoCG"}
@@ -0,0 +1,44 @@
1
+ // Pop — pressure builds inside the object: it inflates while its first shape
2
+ // modes ring faster and faster (it bulges unevenly, one way then the other —
3
+ // an underdamped spring being driven), then it bursts to nothing in a few frames.
4
+ // The way back: it pops out of nothing, overshoots and rings down like jelly
5
+ // until it is exactly at rest.
6
+ import { physicalExit, ring, smooth } from './physicalExit.js';
7
+ const INFLATE_END = 0.84;
8
+ export default physicalExit({
9
+ value: 'pop',
10
+ label: 'Pop',
11
+ description: 'Inflates and wobbles under rising pressure, then bursts to nothing — it pops back out of nothing and rings down',
12
+ params: {
13
+ inflate: { type: 'number', label: 'Inflate', default: 0.28, min: 0, max: 1, step: 0.01, hint: 'How much bigger it gets before it bursts' },
14
+ wobble: { type: 'number', label: 'Wobble', default: 0.09, min: 0, max: 0.3, step: 0.005, hint: 'How unevenly it bulges' },
15
+ rings: { type: 'number', label: 'Rings', default: 3, min: 1, max: 7, step: 0.5, hint: 'Wobbles as it settles on the way back' },
16
+ duration: { type: 'number', label: 'Duration', default: 1.1, min: 0.3, max: 5, step: 0.05, unit: 's' },
17
+ },
18
+ exit(u, out, a) {
19
+ const p = a.p;
20
+ const t = Math.min(1, u / INFLATE_END);
21
+ const k = 1 + Number(p.inflate) * Math.pow(smooth(0, 1, t), 1.4);
22
+ // the two shape modes, driven faster as the pressure rises (phase ∝ t + t²)
23
+ const amp = Number(p.wobble) * smooth(0.12, 0.9, t);
24
+ const ph = 2 * Math.PI * (2.2 * t + 5.5 * t * t);
25
+ const m1 = amp * Math.sin(ph), m2 = amp * Math.sin(1.37 * ph + 2.1);
26
+ // the burst: a last swell, gone within ~15% of the duration
27
+ const b = smooth(INFLATE_END, 1, u);
28
+ const burst = (1 + 0.22 * Math.sin(Math.PI * Math.min(1, b * 1.6))) * Math.pow(1 - b, 2);
29
+ const g = k * burst;
30
+ out.s.set(g * (1 + m1 - 0.5 * m2), g * (1 - m1), g * (1 + m2 - 0.5 * m1));
31
+ },
32
+ enter(v, out, a) {
33
+ const p = a.p;
34
+ // out of nothing: a quick spring past full size
35
+ const grow = 1 - Math.pow(1 - smooth(0, 0.22, v), 3);
36
+ const sg = Math.max(0, (v - 0.12) / 0.88);
37
+ const n = Number(p.rings);
38
+ const r = 0.22 * ring(sg, n / 2, 3.4); // overshoots first, rings down to exactly 1
39
+ // the ring alternates which way it bulges (the same shape modes as the exit)
40
+ const w = Number(p.wobble) * 1.8 * ring(sg, n / 2 + 0.25, 3.4);
41
+ const g = grow * (1 + r);
42
+ out.s.set(g * (1 + w), g * (1 - w), g * (1 + 0.6 * w));
43
+ },
44
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"print3d.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/print3d.ts"],"names":[],"mappings":";AA8MA,wBAgFG"}
1
+ {"version":3,"file":"print3d.d.ts","sourceRoot":"","sources":["../../../src/operations/catalogue/print3d.ts"],"names":[],"mappings":";AA+MA,wBAmFG"}