@3driseai/3drise-viewer 0.1.26 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animationsV2/ClipPlayer.d.ts +3 -0
- package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +67 -8
- package/dist/animationsV2/ClipsRuntime.d.ts +39 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +245 -14
- package/dist/animationsV2/appliers.d.ts +5 -0
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +25 -7
- package/dist/animationsV2/index.d.ts +1 -1
- package/dist/animationsV2/index.d.ts.map +1 -1
- package/dist/animationsV2/normalize.d.ts.map +1 -1
- package/dist/animationsV2/normalize.js +18 -7
- package/dist/animationsV2/sequenceUtils.d.ts +42 -1
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +103 -3
- package/dist/animationsV2/types.d.ts +20 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.d.ts +8 -2
- package/dist/components/AdvancedGrid.d.ts.map +1 -1
- package/dist/components/AdvancedGrid.js +31 -14
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +7 -5
- package/dist/components/Bubbles.d.ts +7 -1
- package/dist/components/Bubbles.d.ts.map +1 -1
- package/dist/components/Bubbles.js +42 -22
- package/dist/components/ChladniGrid.d.ts +8 -4
- package/dist/components/ChladniGrid.d.ts.map +1 -1
- package/dist/components/ChladniGrid.js +31 -13
- package/dist/components/CircuitGrid.d.ts +8 -11
- package/dist/components/CircuitGrid.d.ts.map +1 -1
- package/dist/components/CircuitGrid.js +31 -13
- package/dist/components/CloudsGenerator.d.ts +1 -1
- package/dist/components/CloudsGenerator.js +1 -1
- package/dist/components/ContourGrid.d.ts +8 -14
- package/dist/components/ContourGrid.d.ts.map +1 -1
- package/dist/components/ContourGrid.js +31 -13
- package/dist/components/EffectsGenerator.d.ts +7 -1
- package/dist/components/EffectsGenerator.d.ts.map +1 -1
- package/dist/components/EffectsGenerator.js +39 -38
- package/dist/components/EnvironmentManager.d.ts +4 -4
- package/dist/components/EnvironmentManager.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.d.ts +8 -4
- package/dist/components/FlowNetGrid.d.ts.map +1 -1
- package/dist/components/FlowNetGrid.js +31 -13
- package/dist/components/FractalGrid.d.ts +8 -12
- package/dist/components/FractalGrid.d.ts.map +1 -1
- package/dist/components/FractalGrid.js +31 -13
- package/dist/components/GirihGrid.d.ts +8 -1
- package/dist/components/GirihGrid.d.ts.map +1 -1
- package/dist/components/GirihGrid.js +31 -13
- package/dist/components/Glyphs.d.ts +7 -1
- package/dist/components/Glyphs.d.ts.map +1 -1
- package/dist/components/Glyphs.js +40 -34
- package/dist/components/GravWaveGrid.d.ts +8 -1
- package/dist/components/GravWaveGrid.d.ts.map +1 -1
- package/dist/components/GravWaveGrid.js +31 -13
- package/dist/components/GridsGenerator.d.ts +7 -1
- package/dist/components/GridsGenerator.d.ts.map +1 -1
- package/dist/components/GridsGenerator.js +20 -18
- package/dist/components/HexGrid.d.ts +8 -10
- package/dist/components/HexGrid.d.ts.map +1 -1
- package/dist/components/HexGrid.js +31 -13
- package/dist/components/HyperbolicGrid.d.ts +8 -4
- package/dist/components/HyperbolicGrid.d.ts.map +1 -1
- package/dist/components/HyperbolicGrid.js +31 -13
- package/dist/components/LandscapeBuilder.d.ts +1 -1
- package/dist/components/LandscapeBuilder.d.ts.map +1 -1
- package/dist/components/LandscapeBuilder.js +1 -1
- package/dist/components/LandscapeObject.d.ts +1 -1
- package/dist/components/LandscapeObject.d.ts.map +1 -1
- package/dist/components/LandscapeObject.js +1 -1
- package/dist/components/MoireGrid.d.ts +8 -12
- package/dist/components/MoireGrid.d.ts.map +1 -1
- package/dist/components/MoireGrid.js +31 -13
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +2 -2
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +37 -3
- package/dist/components/OceanBuilder.d.ts +1 -1
- package/dist/components/OceanBuilder.js +1 -1
- package/dist/components/ParticlesGenerator.d.ts.map +1 -1
- package/dist/components/ParticlesGenerator.js +6 -0
- package/dist/components/QuasiGrid.d.ts +8 -11
- package/dist/components/QuasiGrid.d.ts.map +1 -1
- package/dist/components/QuasiGrid.js +31 -13
- package/dist/components/RadarGrid.d.ts +8 -13
- package/dist/components/RadarGrid.d.ts.map +1 -1
- package/dist/components/RadarGrid.js +31 -13
- package/dist/components/ReactionDiffusionGrid.d.ts +8 -1
- package/dist/components/ReactionDiffusionGrid.d.ts.map +1 -1
- package/dist/components/ReactionDiffusionGrid.js +33 -139
- package/dist/components/SceneBuilder.js +1 -1
- package/dist/components/SkySystem.d.ts +1 -1
- package/dist/components/SparklesBurst.d.ts +7 -1
- package/dist/components/SparklesBurst.d.ts.map +1 -1
- package/dist/components/SparklesBurst.js +31 -28
- package/dist/components/TerrainBuilder.d.ts +1 -1
- package/dist/components/TerrainBuilder.d.ts.map +1 -1
- package/dist/components/TerrainBuilder.js +1 -1
- package/dist/components/VoronoiGrid.d.ts +8 -10
- package/dist/components/VoronoiGrid.d.ts.map +1 -1
- package/dist/components/VoronoiGrid.js +31 -13
- package/dist/components/WallpaperGrid.d.ts +8 -1
- package/dist/components/WallpaperGrid.d.ts.map +1 -1
- package/dist/components/WallpaperGrid.js +33 -210
- package/dist/components/effects/AuraEffect.d.ts +8 -3
- package/dist/components/effects/AuraEffect.d.ts.map +1 -1
- package/dist/components/effects/AuraEffect.js +49 -24
- package/dist/components/effects/AuroraEffect.d.ts +8 -3
- package/dist/components/effects/AuroraEffect.d.ts.map +1 -1
- package/dist/components/effects/AuroraEffect.js +45 -25
- package/dist/components/effects/BlackHoleEffect.d.ts +8 -3
- package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -1
- package/dist/components/effects/BlackHoleEffect.js +42 -21
- package/dist/components/effects/ConstellationEffect.d.ts +8 -3
- package/dist/components/effects/ConstellationEffect.d.ts.map +1 -1
- package/dist/components/effects/ConstellationEffect.js +49 -23
- package/dist/components/effects/DandelionSeedsEffect.d.ts +7 -2
- package/dist/components/effects/DandelionSeedsEffect.d.ts.map +1 -1
- package/dist/components/effects/DandelionSeedsEffect.js +19 -9
- package/dist/components/effects/DataStreamEffect.d.ts +8 -3
- package/dist/components/effects/DataStreamEffect.d.ts.map +1 -1
- package/dist/components/effects/DataStreamEffect.js +54 -26
- package/dist/components/effects/DnaHelixEffect.d.ts +8 -3
- package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -1
- package/dist/components/effects/DnaHelixEffect.js +62 -30
- package/dist/components/effects/FallingLeavesEffect.d.ts +7 -2
- package/dist/components/effects/FallingLeavesEffect.d.ts.map +1 -1
- package/dist/components/effects/FallingLeavesEffect.js +19 -9
- package/dist/components/effects/FieldLinesEffect.d.ts +8 -3
- package/dist/components/effects/FieldLinesEffect.d.ts.map +1 -1
- package/dist/components/effects/FieldLinesEffect.js +30 -20
- package/dist/components/effects/Fire.d.ts +8 -3
- package/dist/components/effects/Fire.d.ts.map +1 -1
- package/dist/components/effects/Fire.js +47 -10
- package/dist/components/effects/FireflySwarmEffect.d.ts +7 -2
- package/dist/components/effects/FireflySwarmEffect.d.ts.map +1 -1
- package/dist/components/effects/FireflySwarmEffect.js +19 -9
- package/dist/components/effects/Flares.d.ts +10 -3
- package/dist/components/effects/Flares.d.ts.map +1 -1
- package/dist/components/effects/Flares.js +53 -56
- package/dist/components/effects/ForcefieldEffect.d.ts +8 -3
- package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -1
- package/dist/components/effects/ForcefieldEffect.js +52 -33
- package/dist/components/effects/GalaxyEffect.d.ts +7 -2
- package/dist/components/effects/GalaxyEffect.d.ts.map +1 -1
- package/dist/components/effects/GalaxyEffect.js +19 -9
- package/dist/components/effects/HarmonicShellEffect.d.ts +8 -3
- package/dist/components/effects/HarmonicShellEffect.d.ts.map +1 -1
- package/dist/components/effects/HarmonicShellEffect.js +30 -22
- package/dist/components/effects/HologramEffect.d.ts +8 -3
- package/dist/components/effects/HologramEffect.d.ts.map +1 -1
- package/dist/components/effects/HologramEffect.js +52 -23
- package/dist/components/effects/IceCrystalsEffect.d.ts +8 -3
- package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -1
- package/dist/components/effects/IceCrystalsEffect.js +36 -21
- package/dist/components/effects/IceHaloEffect.d.ts +7 -2
- package/dist/components/effects/IceHaloEffect.d.ts.map +1 -1
- package/dist/components/effects/IceHaloEffect.js +19 -9
- package/dist/components/effects/LichtenbergEffect.d.ts +7 -2
- package/dist/components/effects/LichtenbergEffect.d.ts.map +1 -1
- package/dist/components/effects/LichtenbergEffect.js +19 -9
- package/dist/components/effects/LightningEffect.d.ts +8 -3
- package/dist/components/effects/LightningEffect.d.ts.map +1 -1
- package/dist/components/effects/LightningEffect.js +54 -32
- package/dist/components/effects/MoleculesEffect.d.ts +8 -3
- package/dist/components/effects/MoleculesEffect.d.ts.map +1 -1
- package/dist/components/effects/MoleculesEffect.js +31 -21
- package/dist/components/effects/MurmurationEffect.d.ts +7 -2
- package/dist/components/effects/MurmurationEffect.d.ts.map +1 -1
- package/dist/components/effects/MurmurationEffect.js +19 -9
- package/dist/components/effects/NeuralNetworkEffect.d.ts +8 -3
- package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -1
- package/dist/components/effects/NeuralNetworkEffect.js +66 -33
- package/dist/components/effects/OrbEffect.d.ts +8 -3
- package/dist/components/effects/OrbEffect.d.ts.map +1 -1
- package/dist/components/effects/OrbEffect.js +89 -42
- package/dist/components/effects/PlanetaryRingsEffect.d.ts +7 -2
- package/dist/components/effects/PlanetaryRingsEffect.d.ts.map +1 -1
- package/dist/components/effects/PlanetaryRingsEffect.js +19 -9
- package/dist/components/effects/PortalEffect.d.ts +8 -3
- package/dist/components/effects/PortalEffect.d.ts.map +1 -1
- package/dist/components/effects/PortalEffect.js +41 -25
- package/dist/components/effects/ShockwaveEffect.d.ts +7 -2
- package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
- package/dist/components/effects/ShockwaveEffect.js +19 -9
- package/dist/components/effects/SmokePlumeEffect.d.ts +8 -3
- package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -1
- package/dist/components/effects/SmokePlumeEffect.js +30 -20
- package/dist/components/effects/SmokeRibbon.d.ts +8 -2
- package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
- package/dist/components/effects/SmokeRibbon.js +34 -24
- package/dist/components/effects/SmokeRingEffect.d.ts +8 -3
- package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -1
- package/dist/components/effects/SmokeRingEffect.js +33 -21
- package/dist/components/effects/StrangeAttractorEffect.d.ts +8 -3
- package/dist/components/effects/StrangeAttractorEffect.d.ts.map +1 -1
- package/dist/components/effects/StrangeAttractorEffect.js +30 -20
- package/dist/components/effects/VolumetricFogEffect.d.ts +8 -3
- package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -1
- package/dist/components/effects/VolumetricFogEffect.js +38 -20
- package/dist/components/effects/WaterCausticsEffect.d.ts +7 -2
- package/dist/components/effects/WaterCausticsEffect.d.ts.map +1 -1
- package/dist/components/effects/WaterCausticsEffect.js +19 -9
- package/dist/components/effects/index.d.ts +0 -1
- package/dist/components/effects/index.d.ts.map +1 -1
- package/dist/components/effects/index.js +0 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/components/landscape/LandscapeMesh.js +1 -1
- package/dist/components/landscape/types.d.ts +1 -1
- package/dist/components/landscape/types.d.ts.map +1 -1
- package/dist/components/particles/MagneticBottleParticles.d.ts +17 -0
- package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -0
- package/dist/components/particles/MagneticBottleParticles.js +618 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts +17 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -0
- package/dist/components/particles/ShapeBurstParticles.js +588 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts +17 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -0
- package/dist/components/particles/ShapeFlowParticles.js +755 -0
- package/dist/components/particles/index.d.ts +6 -0
- package/dist/components/particles/index.d.ts.map +1 -1
- package/dist/components/particles/index.js +3 -0
- package/dist/components/terrain/types.d.ts +1 -1
- package/dist/components/terrain/types.d.ts.map +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
- package/dist/components/volumetricClouds/types.d.ts +1 -1
- package/dist/components/volumetricClouds/types.d.ts.map +1 -1
- package/dist/components/water/types.d.ts +1 -1
- package/dist/components/water/types.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useConfigDriver.d.ts +22 -0
- package/dist/hooks/useConfigDriver.d.ts.map +1 -0
- package/dist/hooks/useConfigDriver.js +43 -0
- package/dist/hooks/useConfigLive.d.ts +1 -1
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.d.ts +1 -1
- package/dist/hooks/useThunder.d.ts +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/interactions/index.d.ts +2 -1
- package/dist/interactions/index.d.ts.map +1 -1
- package/dist/interactions/index.js +1 -1
- package/dist/interactions/runner.d.ts +18 -3
- package/dist/interactions/runner.d.ts.map +1 -1
- package/dist/interactions/runner.js +25 -2
- package/dist/operations/catalogue/curlSmoke.d.ts +3 -0
- package/dist/operations/catalogue/curlSmoke.d.ts.map +1 -0
- package/dist/operations/catalogue/curlSmoke.js +178 -0
- package/dist/operations/catalogue/displayImage.d.ts.map +1 -1
- package/dist/operations/catalogue/displayImage.js +1 -0
- package/dist/operations/catalogue/dissolve.d.ts +3 -0
- package/dist/operations/catalogue/dissolve.d.ts.map +1 -0
- package/dist/operations/catalogue/dissolve.js +57 -0
- package/dist/operations/catalogue/emberAsh.d.ts +3 -0
- package/dist/operations/catalogue/emberAsh.d.ts.map +1 -0
- package/dist/operations/catalogue/emberAsh.js +171 -0
- package/dist/operations/catalogue/fade.d.ts.map +1 -1
- package/dist/operations/catalogue/fade.js +1 -0
- package/dist/operations/catalogue/flip.d.ts +3 -0
- package/dist/operations/catalogue/flip.d.ts.map +1 -0
- package/dist/operations/catalogue/flip.js +69 -0
- package/dist/operations/catalogue/flock.d.ts +3 -0
- package/dist/operations/catalogue/flock.d.ts.map +1 -0
- package/dist/operations/catalogue/flock.js +163 -0
- package/dist/operations/catalogue/focus.d.ts.map +1 -1
- package/dist/operations/catalogue/focus.js +1 -0
- package/dist/operations/catalogue/frame.d.ts +3 -0
- package/dist/operations/catalogue/frame.d.ts.map +1 -0
- package/dist/operations/catalogue/frame.js +44 -0
- package/dist/operations/catalogue/frost.d.ts +3 -0
- package/dist/operations/catalogue/frost.d.ts.map +1 -0
- package/dist/operations/catalogue/frost.js +111 -0
- package/dist/operations/catalogue/fxInstances.d.ts +21 -0
- package/dist/operations/catalogue/fxInstances.d.ts.map +1 -0
- package/dist/operations/catalogue/fxInstances.js +47 -0
- package/dist/operations/catalogue/fxPoints.d.ts +22 -0
- package/dist/operations/catalogue/fxPoints.d.ts.map +1 -0
- package/dist/operations/catalogue/fxPoints.js +70 -0
- package/dist/operations/catalogue/glow.d.ts.map +1 -1
- package/dist/operations/catalogue/glow.js +2 -1
- package/dist/operations/catalogue/heatCracks.d.ts +3 -0
- package/dist/operations/catalogue/heatCracks.d.ts.map +1 -0
- package/dist/operations/catalogue/heatCracks.js +134 -0
- package/dist/operations/catalogue/hologram.d.ts +3 -0
- package/dist/operations/catalogue/hologram.d.ts.map +1 -0
- package/dist/operations/catalogue/hologram.js +118 -0
- package/dist/operations/catalogue/inkBloom.d.ts +3 -0
- package/dist/operations/catalogue/inkBloom.d.ts.map +1 -0
- package/dist/operations/catalogue/inkBloom.js +156 -0
- package/dist/operations/catalogue/ivy.d.ts +13 -0
- package/dist/operations/catalogue/ivy.d.ts.map +1 -0
- package/dist/operations/catalogue/ivy.js +469 -0
- package/dist/operations/catalogue/jelly.d.ts +3 -0
- package/dist/operations/catalogue/jelly.d.ts.map +1 -0
- package/dist/operations/catalogue/jelly.js +50 -0
- package/dist/operations/catalogue/kintsugi.d.ts +3 -0
- package/dist/operations/catalogue/kintsugi.d.ts.map +1 -0
- package/dist/operations/catalogue/kintsugi.js +173 -0
- package/dist/operations/catalogue/lidarScan.d.ts +3 -0
- package/dist/operations/catalogue/lidarScan.d.ts.map +1 -0
- package/dist/operations/catalogue/lidarScan.js +240 -0
- package/dist/operations/catalogue/liquidMetal.d.ts +3 -0
- package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -0
- package/dist/operations/catalogue/liquidMetal.js +122 -0
- package/dist/operations/catalogue/metalize.d.ts +3 -0
- package/dist/operations/catalogue/metalize.d.ts.map +1 -0
- package/dist/operations/catalogue/metalize.js +135 -0
- package/dist/operations/catalogue/moveToFront.d.ts.map +1 -1
- package/dist/operations/catalogue/moveToFront.js +1 -0
- package/dist/operations/catalogue/orbit.d.ts +3 -0
- package/dist/operations/catalogue/orbit.d.ts.map +1 -0
- package/dist/operations/catalogue/orbit.js +29 -0
- package/dist/operations/catalogue/particleSwarm.d.ts +3 -0
- package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -0
- package/dist/operations/catalogue/particleSwarm.js +138 -0
- package/dist/operations/catalogue/petalPeel.d.ts +3 -0
- package/dist/operations/catalogue/petalPeel.d.ts.map +1 -0
- package/dist/operations/catalogue/petalPeel.js +137 -0
- package/dist/operations/catalogue/petrify.d.ts +3 -0
- package/dist/operations/catalogue/petrify.d.ts.map +1 -0
- package/dist/operations/catalogue/petrify.js +94 -0
- package/dist/operations/catalogue/portal.d.ts +3 -0
- package/dist/operations/catalogue/portal.d.ts.map +1 -0
- package/dist/operations/catalogue/portal.js +224 -0
- package/dist/operations/catalogue/print3d.d.ts +3 -0
- package/dist/operations/catalogue/print3d.d.ts.map +1 -0
- package/dist/operations/catalogue/print3d.js +275 -0
- package/dist/operations/catalogue/rainBeads.d.ts +3 -0
- package/dist/operations/catalogue/rainBeads.d.ts.map +1 -0
- package/dist/operations/catalogue/rainBeads.js +223 -0
- package/dist/operations/catalogue/restPose.d.ts +21 -0
- package/dist/operations/catalogue/restPose.d.ts.map +1 -0
- package/dist/operations/catalogue/restPose.js +55 -0
- package/dist/operations/catalogue/rimLight.d.ts +3 -0
- package/dist/operations/catalogue/rimLight.d.ts.map +1 -0
- package/dist/operations/catalogue/rimLight.js +72 -0
- package/dist/operations/catalogue/sandErosion.d.ts +3 -0
- package/dist/operations/catalogue/sandErosion.d.ts.map +1 -0
- package/dist/operations/catalogue/sandErosion.js +167 -0
- package/dist/operations/catalogue/shaderLayers.d.ts +74 -0
- package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -0
- package/dist/operations/catalogue/shaderLayers.js +322 -0
- package/dist/operations/catalogue/shatter.d.ts +3 -0
- package/dist/operations/catalogue/shatter.d.ts.map +1 -0
- package/dist/operations/catalogue/shatter.js +267 -0
- package/dist/operations/catalogue/silkDrape.d.ts +3 -0
- package/dist/operations/catalogue/silkDrape.d.ts.map +1 -0
- package/dist/operations/catalogue/silkDrape.js +340 -0
- package/dist/operations/catalogue/spin.d.ts +3 -0
- package/dist/operations/catalogue/spin.d.ts.map +1 -0
- package/dist/operations/catalogue/spin.js +42 -0
- package/dist/operations/catalogue/surfaceSample.d.ts +17 -0
- package/dist/operations/catalogue/surfaceSample.d.ts.map +1 -0
- package/dist/operations/catalogue/surfaceSample.js +187 -0
- package/dist/operations/catalogue/swirl.d.ts +3 -0
- package/dist/operations/catalogue/swirl.d.ts.map +1 -0
- package/dist/operations/catalogue/swirl.js +69 -0
- package/dist/operations/catalogue/teleport.d.ts +3 -0
- package/dist/operations/catalogue/teleport.d.ts.map +1 -0
- package/dist/operations/catalogue/teleport.js +213 -0
- package/dist/operations/catalogue/transitionField.d.ts +124 -0
- package/dist/operations/catalogue/transitionField.d.ts.map +1 -0
- package/dist/operations/catalogue/transitionField.js +278 -0
- package/dist/operations/catalogue/unweave.d.ts +3 -0
- package/dist/operations/catalogue/unweave.d.ts.map +1 -0
- package/dist/operations/catalogue/unweave.js +233 -0
- package/dist/operations/catalogue/visibility.d.ts.map +1 -1
- package/dist/operations/catalogue/visibility.js +1 -0
- package/dist/operations/catalogue/voxelize.d.ts +3 -0
- package/dist/operations/catalogue/voxelize.d.ts.map +1 -0
- package/dist/operations/catalogue/voxelize.js +148 -0
- package/dist/operations/catalogue/warmup.d.ts +22 -0
- package/dist/operations/catalogue/warmup.d.ts.map +1 -0
- package/dist/operations/catalogue/warmup.js +106 -0
- package/dist/operations/catalogue/zoom.d.ts.map +1 -1
- package/dist/operations/catalogue/zoom.js +1 -0
- package/dist/operations/index.d.ts +4 -2
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +4 -2
- package/dist/operations/objectEffects.d.ts +46 -0
- package/dist/operations/objectEffects.d.ts.map +1 -0
- package/dist/operations/objectEffects.js +136 -0
- package/dist/operations/registry.d.ts +7 -2
- package/dist/operations/registry.d.ts.map +1 -1
- package/dist/operations/registry.js +45 -3
- package/dist/operations/runtime.d.ts +40 -2
- package/dist/operations/runtime.d.ts.map +1 -1
- package/dist/operations/runtime.js +164 -8
- package/dist/operations/types.d.ts +29 -3
- package/dist/operations/types.d.ts.map +1 -1
- package/dist/operations/types.js +6 -0
- package/dist/operations/useObjectEffectLayers.d.ts +4 -0
- package/dist/operations/useObjectEffectLayers.d.ts.map +1 -0
- package/dist/operations/useObjectEffectLayers.js +42 -0
- package/dist/operations/useOperationsRuntime.d.ts.map +1 -1
- package/dist/operations/useOperationsRuntime.js +42 -4
- package/dist/presets/landscapePresets.d.ts +1 -1
- package/dist/presets/landscapePresets.d.ts.map +1 -1
- package/dist/presets/landscapePresets.js +1 -1
- package/dist/presets/landscapeTypes.d.ts +1 -1
- package/dist/presets/landscapeTypes.d.ts.map +1 -1
- package/dist/presets/landscapeTypes.js +1 -1
- package/dist/presets/oceanSurfacePresets.d.ts +1 -1
- package/dist/presets/terrainPresets.d.ts +1 -1
- package/dist/presets/terrainPresets.d.ts.map +1 -1
- package/dist/presets/volumetricCloudPresets.d.ts +1 -1
- package/dist/types/cloudConfigs.d.ts +2 -309
- package/dist/types/cloudConfigs.d.ts.map +1 -1
- package/dist/types/cloudConfigs.js +2 -339
- package/dist/types/index.d.ts +8 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/landscapeConfigs.d.ts +2 -217
- package/dist/types/landscapeConfigs.d.ts.map +1 -1
- package/dist/types/landscapeConfigs.js +2 -256
- package/dist/types/oceanConfigs.d.ts +2 -289
- package/dist/types/oceanConfigs.d.ts.map +1 -1
- package/dist/types/oceanConfigs.js +2 -380
- package/dist/types/terrainConfigs.d.ts +2 -250
- package/dist/types/terrainConfigs.d.ts.map +1 -1
- package/dist/types/terrainConfigs.js +2 -292
- package/dist/utils/cloudUniforms.d.ts +1 -1
- package/dist/utils/configAnimations.d.ts +6 -0
- package/dist/utils/configAnimations.d.ts.map +1 -1
- package/dist/utils/configAnimations.js +14 -0
- package/dist/utils/gridConfig.d.ts +19 -0
- package/dist/utils/gridConfig.d.ts.map +1 -0
- package/dist/utils/gridConfig.js +52 -0
- package/dist/utils/handleCloudsAnimations.d.ts +1 -1
- package/dist/utils/handleCloudsAnimations.js +1 -1
- package/dist/utils/hasHoverAnimation.d.ts.map +1 -1
- package/dist/utils/hasHoverAnimation.js +0 -2
- package/dist/utils/landscapeUniforms.d.ts +1 -1
- package/dist/utils/landscapeUniforms.d.ts.map +1 -1
- package/dist/utils/oceanUniforms.d.ts +1 -1
- package/dist/utils/particleShape.d.ts +33 -0
- package/dist/utils/particleShape.d.ts.map +1 -0
- package/dist/utils/particleShape.js +207 -0
- package/dist/utils/particleTrails.d.ts.map +1 -1
- package/dist/utils/particleTrails.js +29 -14
- package/dist/utils/terrainUniforms.d.ts +1 -1
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrbEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/OrbEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OrbEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/OrbEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,CAAC;IAClB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAqND,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA8HvC,CAAC;AACF,eAAe,SAAS,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { useFrame } from '@react-three/fiber';
|
|
4
4
|
import * as THREE from 'three';
|
|
5
|
-
import {
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
// ── Shared vert (normal + viewDir) ────────────────────────────────────────────
|
|
8
10
|
const sharedVert = /* glsl */ `
|
|
9
11
|
varying vec3 vNormal;
|
|
@@ -26,6 +28,7 @@ const coreFrag = /* glsl */ `
|
|
|
26
28
|
uniform float uNoiseAmount;
|
|
27
29
|
uniform float uIntensity;
|
|
28
30
|
uniform float uPulseSpeed;
|
|
31
|
+
uniform float uPulsePhase; // integrated on the CPU: pulse speed changes never jump
|
|
29
32
|
|
|
30
33
|
varying vec3 vNormal;
|
|
31
34
|
varying vec3 vViewDir;
|
|
@@ -56,7 +59,7 @@ const coreFrag = /* glsl */ `
|
|
|
56
59
|
// Solar flares: ultra-sharp spikes where FBM peaks
|
|
57
60
|
float flares = smoothstep(0.70, 0.85, f) * 6.0;
|
|
58
61
|
|
|
59
|
-
float pulse = 0.85 + 0.15 * sin(
|
|
62
|
+
float pulse = 0.85 + 0.15 * sin(uPulsePhase * 2.3);
|
|
60
63
|
float limb = 1.0 - abs(dot(vNormal, vViewDir)) * 0.4; // limb darkening
|
|
61
64
|
|
|
62
65
|
// Color: white-hot core cells, outer-color cool lanes
|
|
@@ -78,6 +81,7 @@ const plasmaFrag = /* glsl */ `
|
|
|
78
81
|
uniform float uOpacity;
|
|
79
82
|
uniform float uNoiseAmount;
|
|
80
83
|
uniform float uPulseSpeed;
|
|
84
|
+
uniform float uPulsePhase; // integrated on the CPU: pulse speed changes never jump
|
|
81
85
|
uniform float uIntensity;
|
|
82
86
|
|
|
83
87
|
varying vec3 vNormal;
|
|
@@ -116,7 +120,7 @@ const plasmaFrag = /* glsl */ `
|
|
|
116
120
|
// Plasma cells: lower threshold dimmer glow
|
|
117
121
|
float plasma = smoothstep(0.50, 0.65, f) * 0.5;
|
|
118
122
|
|
|
119
|
-
float pulse = 0.6 + 0.4 * sin(
|
|
123
|
+
float pulse = 0.6 + 0.4 * sin(uPulsePhase + uLayerIndex * 2.4);
|
|
120
124
|
|
|
121
125
|
vec3 col = iriCol + iriCol * (tendril * 2.0 + plasma);
|
|
122
126
|
col = mix(col, uInnerColor, tendril * 0.3); // brightest tendrils go white
|
|
@@ -135,6 +139,7 @@ const glowFrag = /* glsl */ `
|
|
|
135
139
|
uniform vec3 uOuterColor;
|
|
136
140
|
uniform float uOpacity;
|
|
137
141
|
uniform float uPulseSpeed;
|
|
142
|
+
uniform float uPulsePhase; // integrated on the CPU: pulse speed changes never jump
|
|
138
143
|
|
|
139
144
|
varying vec3 vNormal;
|
|
140
145
|
varying vec3 vViewDir;
|
|
@@ -142,7 +147,7 @@ const glowFrag = /* glsl */ `
|
|
|
142
147
|
void main() {
|
|
143
148
|
float ndv = abs(dot(normalize(vNormal), normalize(vViewDir)));
|
|
144
149
|
float fresnel = pow(1.0 - ndv, 1.2);
|
|
145
|
-
float pulse = 0.55 + 0.45 * sin(
|
|
150
|
+
float pulse = 0.55 + 0.45 * sin(uPulsePhase * 0.7 + 1.2);
|
|
146
151
|
float alpha = fresnel * uOpacity * pulse * 0.5;
|
|
147
152
|
if (alpha < 0.003) discard;
|
|
148
153
|
// Slowly cycle hue of the outer glow
|
|
@@ -182,72 +187,102 @@ const coronaFrag = /* glsl */ `
|
|
|
182
187
|
gl_FragColor = vec4(col * (1.0 + pulse), alpha);
|
|
183
188
|
}
|
|
184
189
|
`;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
190
|
+
/** Knobs that rebuild the orb (layer count, radii, the corona mount): commit only, never live. */
|
|
191
|
+
const STRUCTURAL = ['glowLayers', 'coreSize', 'coronaEnabled'];
|
|
192
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
193
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.orb.map((p) => p.value));
|
|
194
|
+
const _color = new THREE.Color();
|
|
195
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
196
|
+
function applyConfig(colors, core, shells, glow, corona, c) {
|
|
197
|
+
_color.set(c.innerColor);
|
|
198
|
+
colors.inner.set(_color.r, _color.g, _color.b);
|
|
199
|
+
_color.set(c.outerColor);
|
|
200
|
+
colors.outer.set(_color.r, _color.g, _color.b);
|
|
201
|
+
_color.set(c.coronaColor);
|
|
202
|
+
colors.corona.set(_color.r, _color.g, _color.b);
|
|
203
|
+
const pulse = c.pulseSpeed * c.speed;
|
|
204
|
+
for (const m of [core, ...shells]) {
|
|
205
|
+
const u = m.uniforms;
|
|
206
|
+
u.uOpacity.value = c.opacity;
|
|
207
|
+
u.uNoiseAmount.value = c.noiseAmount;
|
|
208
|
+
u.uIntensity.value = c.intensity;
|
|
209
|
+
u.uPulseSpeed.value = pulse;
|
|
210
|
+
}
|
|
211
|
+
glow.uniforms.uOpacity.value = c.opacity * 0.6;
|
|
212
|
+
glow.uniforms.uPulseSpeed.value = pulse;
|
|
213
|
+
corona.uniforms.uOpacity.value = c.opacity * 0.85;
|
|
214
|
+
corona.uniforms.uIntensity.value = c.intensity;
|
|
215
|
+
}
|
|
216
|
+
const OrbEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
217
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.orb, config), [config]);
|
|
218
|
+
const { coreSize, glowLayers, coronaEnabled } = cfg;
|
|
188
219
|
const rootRef = useRef(null);
|
|
189
220
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
|
|
221
|
+
// the knobs read per frame (speed), from the last merged config
|
|
222
|
+
const cur = useRef(cfg);
|
|
223
|
+
// shared by every material, so one write recolours the whole orb
|
|
224
|
+
const colors = useMemo(() => ({ inner: new THREE.Vector3(), outer: new THREE.Vector3(), corona: new THREE.Vector3() }), []);
|
|
193
225
|
const coreR = boundingRadius * coreSize;
|
|
194
|
-
// Core material
|
|
226
|
+
// Core material - boiling solar surface
|
|
195
227
|
const coreMat = useMemo(() => new THREE.ShaderMaterial({
|
|
196
228
|
vertexShader: sharedVert,
|
|
197
229
|
fragmentShader: coreFrag,
|
|
198
230
|
uniforms: {
|
|
199
231
|
u_time: { value: 0 },
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
232
|
+
uPulsePhase: { value: 0 },
|
|
233
|
+
uInnerColor: { value: colors.inner },
|
|
234
|
+
uOuterColor: { value: colors.outer },
|
|
235
|
+
uOpacity: { value: 1 },
|
|
236
|
+
uNoiseAmount: { value: 0.45 },
|
|
237
|
+
uIntensity: { value: 1 },
|
|
238
|
+
uPulseSpeed: { value: 1 },
|
|
206
239
|
},
|
|
207
240
|
transparent: true,
|
|
208
241
|
depthWrite: false,
|
|
209
242
|
blending: THREE.AdditiveBlending,
|
|
210
|
-
}), [
|
|
211
|
-
// Plasma shell materials
|
|
243
|
+
}), [colors]);
|
|
244
|
+
// Plasma shell materials - one per layer
|
|
212
245
|
const shellMats = useMemo(() => Array.from({ length: glowLayers }, (_, i) => new THREE.ShaderMaterial({
|
|
213
246
|
vertexShader: sharedVert,
|
|
214
247
|
fragmentShader: plasmaFrag,
|
|
215
248
|
uniforms: {
|
|
216
249
|
u_time: { value: 0 },
|
|
250
|
+
uPulsePhase: { value: 0 },
|
|
217
251
|
uLayerIndex: { value: glowLayers > 1 ? i / (glowLayers - 1) : 0 },
|
|
218
|
-
uInnerColor: { value:
|
|
219
|
-
uOuterColor: { value:
|
|
220
|
-
uOpacity: { value:
|
|
221
|
-
uNoiseAmount: { value:
|
|
222
|
-
uPulseSpeed: { value:
|
|
223
|
-
uIntensity: { value:
|
|
252
|
+
uInnerColor: { value: colors.inner },
|
|
253
|
+
uOuterColor: { value: colors.outer },
|
|
254
|
+
uOpacity: { value: 1 },
|
|
255
|
+
uNoiseAmount: { value: 0.45 },
|
|
256
|
+
uPulseSpeed: { value: 1 },
|
|
257
|
+
uIntensity: { value: 1 },
|
|
224
258
|
},
|
|
225
259
|
transparent: true,
|
|
226
260
|
depthWrite: false,
|
|
227
261
|
blending: THREE.AdditiveBlending,
|
|
228
262
|
side: THREE.BackSide,
|
|
229
|
-
})), [glowLayers,
|
|
263
|
+
})), [glowLayers, colors]);
|
|
230
264
|
// Outer diffuse glow
|
|
231
265
|
const glowMat = useMemo(() => new THREE.ShaderMaterial({
|
|
232
266
|
vertexShader: sharedVert,
|
|
233
267
|
fragmentShader: glowFrag,
|
|
234
268
|
uniforms: {
|
|
235
269
|
u_time: { value: 0 },
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
270
|
+
uPulsePhase: { value: 0 },
|
|
271
|
+
uOuterColor: { value: colors.outer },
|
|
272
|
+
uOpacity: { value: 0.6 },
|
|
273
|
+
uPulseSpeed: { value: 1 },
|
|
239
274
|
},
|
|
240
275
|
transparent: true,
|
|
241
276
|
depthWrite: false,
|
|
242
277
|
blending: THREE.AdditiveBlending,
|
|
243
278
|
side: THREE.BackSide,
|
|
244
|
-
}), [
|
|
245
|
-
// Corona ring geometry
|
|
279
|
+
}), [colors]);
|
|
280
|
+
// Corona ring geometry - torus with per-vertex angle attribute for color flow
|
|
246
281
|
const { coronaGeo, coronaMat } = useMemo(() => {
|
|
247
282
|
const tubeSegs = 80;
|
|
248
283
|
const geo = new THREE.TorusGeometry(coreR * 2.8, coreR * 0.12, 8, tubeSegs);
|
|
249
284
|
const count = geo.attributes.position.count;
|
|
250
|
-
// Per-vertex angle around the ring (0
|
|
285
|
+
// Per-vertex angle around the ring (0 -> 2pi)
|
|
251
286
|
const angles = new Float32Array(count);
|
|
252
287
|
// TorusGeometry vertices go around the major circle; approximate angle from XZ
|
|
253
288
|
const pos = geo.attributes.position;
|
|
@@ -260,28 +295,40 @@ const OrbEffect = ({ boundingRadius, config, animations, onObjectReady, onObject
|
|
|
260
295
|
fragmentShader: coronaFrag,
|
|
261
296
|
uniforms: {
|
|
262
297
|
u_time: { value: 0 },
|
|
263
|
-
uCoronaColor: { value:
|
|
264
|
-
uOpacity: { value:
|
|
265
|
-
uIntensity: { value:
|
|
298
|
+
uCoronaColor: { value: colors.corona },
|
|
299
|
+
uOpacity: { value: 0.85 },
|
|
300
|
+
uIntensity: { value: 1 },
|
|
266
301
|
},
|
|
267
302
|
transparent: true,
|
|
268
303
|
depthWrite: false,
|
|
269
304
|
blending: THREE.AdditiveBlending,
|
|
270
305
|
});
|
|
271
306
|
return { coronaGeo: geo, coronaMat: mat };
|
|
272
|
-
}, [coreR,
|
|
307
|
+
}, [coreR, colors]);
|
|
308
|
+
useEffect(() => () => coreMat.dispose(), [coreMat]);
|
|
309
|
+
useEffect(() => () => shellMats.forEach((m) => m.dispose()), [shellMats]);
|
|
310
|
+
useEffect(() => () => glowMat.dispose(), [glowMat]);
|
|
311
|
+
useEffect(() => () => { coronaGeo.dispose(); coronaMat.dispose(); }, [coronaGeo, coronaMat]);
|
|
312
|
+
const push = useCallback((merged) => {
|
|
313
|
+
cur.current = merged;
|
|
314
|
+
applyConfig(colors, coreMat, shellMats, glowMat, coronaMat, merged);
|
|
315
|
+
}, [colors, coreMat, shellMats, glowMat, coronaMat]);
|
|
316
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
317
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
273
318
|
const coronaGroupRef = useRef(null);
|
|
274
319
|
const allMats = useMemo(() => [coreMat, ...shellMats, glowMat, coronaMat], [coreMat, shellMats, glowMat, coronaMat]);
|
|
275
320
|
useFrame((state, delta) => {
|
|
276
321
|
const t = state.clock.getElapsedTime();
|
|
277
|
-
|
|
322
|
+
const dt = Math.min(delta, 0.1);
|
|
323
|
+
for (const mat of allMats) {
|
|
278
324
|
mat.uniforms.u_time.value = t;
|
|
325
|
+
// integrated, so changing the pulse speed never makes the pulse jump
|
|
326
|
+
if (mat.uniforms.uPulsePhase)
|
|
327
|
+
mat.uniforms.uPulsePhase.value += dt * mat.uniforms.uPulseSpeed.value;
|
|
328
|
+
}
|
|
279
329
|
// Tilt the corona ring and rotate slowly
|
|
280
330
|
if (coronaGroupRef.current) {
|
|
281
|
-
coronaGroupRef.current.rotation.z += delta * speed * 0.4;
|
|
282
|
-
}
|
|
283
|
-
if (animations?.length) {
|
|
284
|
-
applyGenerativeAnimations(allMats, animations, startValuesCacheRef.current, Date.now(), false);
|
|
331
|
+
coronaGroupRef.current.rotation.z += delta * cur.current.speed * 0.4;
|
|
285
332
|
}
|
|
286
333
|
});
|
|
287
334
|
const glowR = coreR * (3.5 + glowLayers * 0.6);
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { AnimationOptions, PlanetaryRingsConfig } from '@3driseai/3drise-core';
|
|
2
|
+
import type { AnimationOptions, PlanetaryRingsConfig, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface PlanetaryRingsEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: PlanetaryRingsConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
/** True when the effect is attached to an object, so it can react to the host. */
|
|
9
14
|
hasHost?: boolean;
|
|
10
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanetaryRingsEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/PlanetaryRingsEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"PlanetaryRingsEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/PlanetaryRingsEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAIxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AA2bD,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAqC7D,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import {
|
|
5
|
+
import { EFFECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
6
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* A Saturn-like ring system: Keplerian shear shapes icy clumps, resonant moons open gaps and spiral density waves, and the planet casts a soft shadow. Use for planets, sci-fi, space scenes.
|
|
9
11
|
*
|
|
@@ -414,7 +416,7 @@ function build(u, c, bound, env) {
|
|
|
414
416
|
},
|
|
415
417
|
};
|
|
416
418
|
}
|
|
417
|
-
/**
|
|
419
|
+
/** A value for every knob: the base the renderer draws and keyframes interpolate from. */
|
|
418
420
|
const DEFAULTS = {
|
|
419
421
|
intensity: 1,
|
|
420
422
|
speed: 1,
|
|
@@ -431,27 +433,35 @@ const DEFAULTS = {
|
|
|
431
433
|
gapColor: '#8fa2b6',
|
|
432
434
|
dustColor: '#ffd3a1',
|
|
433
435
|
};
|
|
434
|
-
|
|
436
|
+
/** Knobs that rebuild the object: they change on commit, never through the live path. */
|
|
437
|
+
const STRUCTURAL = [];
|
|
438
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
439
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.planetaryRings.map((p) => p.value));
|
|
440
|
+
const PlanetaryRingsEffect = ({ boundingRadius, config, id, keyframes, mouseMove, hasHost = false, onObjectReady, onObjectDispose }) => {
|
|
435
441
|
const rootRef = useRef(null);
|
|
436
|
-
const animCache = useRef({});
|
|
437
442
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
438
443
|
// a standalone effect gets boundingRadius 1
|
|
439
444
|
const b = boundingRadius > 0 ? boundingRadius : 1;
|
|
440
|
-
const cfg = useMemo(() => (
|
|
445
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULTS, config), [config]);
|
|
441
446
|
const env = useMemo(() => ({ hasHost: hasHost }), [hasHost]);
|
|
442
447
|
// uniforms outlive the objects, so keyframe animations survive a rebuild
|
|
443
448
|
const uniforms = useMemo(() => createUniforms(), []);
|
|
444
449
|
// rebuilt only when the host size or a structural knob changes
|
|
445
|
-
const instance = useMemo(() => build(uniforms,
|
|
450
|
+
const instance = useMemo(() => build(uniforms, cfg, b, env), [uniforms, b, env]);
|
|
446
451
|
useEffect(() => () => instance.dispose(), [instance]);
|
|
447
452
|
useLayoutEffect(() => {
|
|
448
453
|
applyConfig(uniforms, cfg, b, env);
|
|
449
454
|
instance.apply(cfg);
|
|
450
455
|
}, [instance, uniforms, cfg, b, env]);
|
|
456
|
+
// Committed config + live drag + keyframes + pointer, merged into the one push point
|
|
457
|
+
// (the uniforms, then the instance's own cheap per-config step).
|
|
458
|
+
const push = useCallback((merged) => {
|
|
459
|
+
applyConfig(uniforms, merged, b, env);
|
|
460
|
+
instance.apply(merged);
|
|
461
|
+
}, [instance, uniforms, b, env]);
|
|
462
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
451
463
|
useFrame((state, delta) => {
|
|
452
464
|
instance.update(Math.min(delta, 0.1), state.camera);
|
|
453
|
-
if (animations?.length)
|
|
454
|
-
applyGenerativeAnimations(instance.materials, animations, animCache.current, Date.now(), false);
|
|
455
465
|
});
|
|
456
466
|
return (_jsx("group", { ref: rootRef, children: _jsx("primitive", { object: instance.object }) }));
|
|
457
467
|
};
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import type { AnimationOptions,
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { PortalConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface PortalEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: PortalConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
}
|
|
9
14
|
declare const PortalEffect: React.FC<PortalEffectProps>;
|
|
10
15
|
export default PortalEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PortalEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/PortalEffect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PortalEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/PortalEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAgPD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgE7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import * as THREE from 'three';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
3
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
|
+
import { DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from "@3driseai/3drise-core";
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* A wormhole portal lying under the host.
|
|
9
11
|
*
|
|
@@ -58,6 +60,7 @@ const portalVert = /* glsl */ `
|
|
|
58
60
|
const portalFrag = /* glsl */ `
|
|
59
61
|
uniform float uTime;
|
|
60
62
|
uniform float uRotationSpeed;
|
|
63
|
+
uniform float uSpin; // integrated on the CPU: rotation speed changes never jump
|
|
61
64
|
uniform float uSpiralTurns;
|
|
62
65
|
uniform float uThroatSize;
|
|
63
66
|
uniform vec3 uInnerGlowColor;
|
|
@@ -125,7 +128,7 @@ const portalFrag = /* glsl */ `
|
|
|
125
128
|
if (r > 1.0) discard;
|
|
126
129
|
float theta = atan(vP.y, vP.x);
|
|
127
130
|
float rt = uThroatSize;
|
|
128
|
-
float t =
|
|
131
|
+
float t = uSpin;
|
|
129
132
|
float aa = fwidth(r) * 1.5;
|
|
130
133
|
|
|
131
134
|
// ---- throat: the other side, compressed toward the rim like a fisheye.
|
|
@@ -166,6 +169,7 @@ const infallVert = /* glsl */ `
|
|
|
166
169
|
attribute vec3 aSeed; // x: start angle, y: phase, z: random
|
|
167
170
|
uniform float uTime;
|
|
168
171
|
uniform float uRotationSpeed;
|
|
172
|
+
uniform float uSpin; // integrated on the CPU: rotation speed changes never jump
|
|
169
173
|
uniform float uThroatSize;
|
|
170
174
|
uniform float uFunnelDepth;
|
|
171
175
|
uniform float uRadius;
|
|
@@ -176,7 +180,7 @@ const infallVert = /* glsl */ `
|
|
|
176
180
|
void main(){
|
|
177
181
|
// Matter spirals in on r = r0 exp(-k tau) with Keplerian angular speed;
|
|
178
182
|
// the angle is the closed-form integral of Omega = Omega0 r^-1.5.
|
|
179
|
-
float life = fract(aSeed.y +
|
|
183
|
+
float life = fract(aSeed.y + uSpin * 0.05 * (0.7 + 0.6 * aSeed.z));
|
|
180
184
|
float r0 = 0.95;
|
|
181
185
|
float rt = uThroatSize;
|
|
182
186
|
float k = log(r0 / rt);
|
|
@@ -209,15 +213,35 @@ const infallFrag = /* glsl */ `
|
|
|
209
213
|
gl_FragColor = vec4(col * a, a);
|
|
210
214
|
}
|
|
211
215
|
`;
|
|
212
|
-
|
|
213
|
-
|
|
216
|
+
/** Knobs that rebuild the object: commit only, never live. */
|
|
217
|
+
const STRUCTURAL = ['particleCount'];
|
|
218
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
219
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.portal.map((p) => p.value));
|
|
220
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
221
|
+
function applyConfig(u, c, bound) {
|
|
222
|
+
u.uSpeed.value = c.speed;
|
|
223
|
+
u.uBound.value = bound;
|
|
224
|
+
u.uIntensity.value = c.intensity;
|
|
225
|
+
u.uOpacity.value = c.opacity;
|
|
226
|
+
u.uRadius.value = c.radius;
|
|
227
|
+
u.uSpiralTurns.value = c.spiralTurns;
|
|
228
|
+
u.uRotationSpeed.value = c.rotationSpeed;
|
|
229
|
+
u.uThroatSize.value = c.throatSize;
|
|
230
|
+
u.uFunnelDepth.value = c.funnelDepth;
|
|
231
|
+
u.uInnerGlowColor.value.set(c.innerGlowColor);
|
|
232
|
+
u.uOuterGlowColor.value.set(c.outerGlowColor);
|
|
233
|
+
u.uOtherSideColor.value.set(c.otherSideColor);
|
|
234
|
+
}
|
|
235
|
+
const PortalEffect = ({ boundingRadius, config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
236
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.portal, config), [config]);
|
|
237
|
+
const { particleRingEnabled, particleCount } = cfg;
|
|
214
238
|
const rootRef = useRef(null);
|
|
215
|
-
const animCache = useRef({});
|
|
216
239
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
217
240
|
// a standalone effect gets boundingRadius 1; guard against an empty host
|
|
218
241
|
const b = boundingRadius > 0 ? boundingRadius : 1;
|
|
219
242
|
const uniforms = useMemo(() => ({
|
|
220
243
|
uTime: { value: 0 },
|
|
244
|
+
uSpin: { value: 0 },
|
|
221
245
|
uSpeed: { value: 1 },
|
|
222
246
|
uBound: { value: 1 },
|
|
223
247
|
uIntensity: { value: 1 },
|
|
@@ -247,24 +271,16 @@ const PortalEffect = ({ boundingRadius, config, animations, onObjectReady, onObj
|
|
|
247
271
|
return g;
|
|
248
272
|
}, [particleCount]);
|
|
249
273
|
useEffect(() => () => infallGeometry.dispose(), [infallGeometry]);
|
|
250
|
-
|
|
251
|
-
uniforms
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
uniforms.uRadius.value = radius;
|
|
256
|
-
uniforms.uSpiralTurns.value = spiralTurns;
|
|
257
|
-
uniforms.uRotationSpeed.value = rotationSpeed;
|
|
258
|
-
uniforms.uThroatSize.value = throatSize;
|
|
259
|
-
uniforms.uFunnelDepth.value = funnelDepth;
|
|
260
|
-
uniforms.uInnerGlowColor.value.set(innerGlowColor);
|
|
261
|
-
uniforms.uOuterGlowColor.value.set(outerGlowColor);
|
|
262
|
-
uniforms.uOtherSideColor.value.set(otherSideColor);
|
|
263
|
-
}, [uniforms, speed, b, intensity, opacity, radius, spiralTurns, rotationSpeed, throatSize, funnelDepth, innerGlowColor, outerGlowColor, otherSideColor]);
|
|
274
|
+
const push = useCallback((merged) => {
|
|
275
|
+
applyConfig(uniforms, merged, b);
|
|
276
|
+
}, [uniforms, b]);
|
|
277
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
278
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
264
279
|
useFrame((_, delta) => {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
280
|
+
const dt = delta * uniforms.uSpeed.value;
|
|
281
|
+
uniforms.uTime.value += dt;
|
|
282
|
+
// the swirl angle is integrated, so changing the rotation speed never makes it jump
|
|
283
|
+
uniforms.uSpin.value += dt * uniforms.uRotationSpeed.value;
|
|
268
284
|
});
|
|
269
285
|
return (_jsx("group", { ref: rootRef, children: _jsxs("group", { rotation: [-Math.PI / 2, 0, 0], position: [0, -b * 0.75, 0], children: [_jsx("mesh", { geometry: discGeometry, material: materials[0], frustumCulled: false }), _jsx("points", { geometry: infallGeometry, material: materials[1], visible: particleRingEnabled, frustumCulled: false })] }) }));
|
|
270
286
|
};
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { AnimationOptions, ShockwaveConfig } from '@3driseai/3drise-core';
|
|
2
|
+
import type { AnimationOptions, ShockwaveConfig, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface ShockwaveEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: ShockwaveConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
/** True when the effect is attached to an object, so it can react to the host. */
|
|
9
14
|
hasHost?: boolean;
|
|
10
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShockwaveEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/ShockwaveEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ShockwaveEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/ShockwaveEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAIxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIhG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,kFAAkF;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAkiBD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqCnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { useFrame } from '@react-three/fiber';
|
|
5
|
-
import {
|
|
5
|
+
import { EFFECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
6
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
6
7
|
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
8
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
7
9
|
/**
|
|
8
10
|
* A Sedov–Taylor blast wave: a razor-bright front over a compressed shell that bursts out, slows and cools, raising dust and a brief condensation dome. Use for explosions, impacts, sci-fi pulses.
|
|
9
11
|
*
|
|
@@ -514,7 +516,7 @@ function build(u, c, bound, env) {
|
|
|
514
516
|
},
|
|
515
517
|
};
|
|
516
518
|
}
|
|
517
|
-
/**
|
|
519
|
+
/** A value for every knob: the base the renderer draws and keyframes interpolate from. */
|
|
518
520
|
const DEFAULTS = {
|
|
519
521
|
intensity: 1,
|
|
520
522
|
speed: 1,
|
|
@@ -531,27 +533,35 @@ const DEFAULTS = {
|
|
|
531
533
|
dust: 0.5,
|
|
532
534
|
condensation: 0.3,
|
|
533
535
|
};
|
|
534
|
-
|
|
536
|
+
/** Knobs that rebuild the object: they change on commit, never through the live path. */
|
|
537
|
+
const STRUCTURAL = [];
|
|
538
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
539
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.shockwave.map((p) => p.value));
|
|
540
|
+
const ShockwaveEffect = ({ boundingRadius, config, id, keyframes, mouseMove, hasHost = false, onObjectReady, onObjectDispose }) => {
|
|
535
541
|
const rootRef = useRef(null);
|
|
536
|
-
const animCache = useRef({});
|
|
537
542
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
538
543
|
// a standalone effect gets boundingRadius 1
|
|
539
544
|
const b = boundingRadius > 0 ? boundingRadius : 1;
|
|
540
|
-
const cfg = useMemo(() => (
|
|
545
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULTS, config), [config]);
|
|
541
546
|
const env = useMemo(() => ({ hasHost: hasHost }), [hasHost]);
|
|
542
547
|
// uniforms outlive the objects, so keyframe animations survive a rebuild
|
|
543
548
|
const uniforms = useMemo(() => createUniforms(), []);
|
|
544
549
|
// rebuilt only when the host size or a structural knob changes
|
|
545
|
-
const instance = useMemo(() => build(uniforms,
|
|
550
|
+
const instance = useMemo(() => build(uniforms, cfg, b, env), [uniforms, b, env]);
|
|
546
551
|
useEffect(() => () => instance.dispose(), [instance]);
|
|
547
552
|
useLayoutEffect(() => {
|
|
548
553
|
applyConfig(uniforms, cfg, b, env);
|
|
549
554
|
instance.apply(cfg);
|
|
550
555
|
}, [instance, uniforms, cfg, b, env]);
|
|
556
|
+
// Committed config + live drag + keyframes + pointer, merged into the one push point
|
|
557
|
+
// (the uniforms, then the instance's own cheap per-config step).
|
|
558
|
+
const push = useCallback((merged) => {
|
|
559
|
+
applyConfig(uniforms, merged, b, env);
|
|
560
|
+
instance.apply(merged);
|
|
561
|
+
}, [instance, uniforms, b, env]);
|
|
562
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
551
563
|
useFrame((state, delta) => {
|
|
552
564
|
instance.update(Math.min(delta, 0.1), state.camera);
|
|
553
|
-
if (animations?.length)
|
|
554
|
-
applyGenerativeAnimations(instance.materials, animations, animCache.current, Date.now(), false);
|
|
555
565
|
});
|
|
556
566
|
return (_jsx("group", { ref: rootRef, children: _jsx("primitive", { object: instance.object }) }));
|
|
557
567
|
};
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import type { AnimationOptions,
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SmokePlumeConfig, AnimationOptions, MouseMoveDomain } from "@3driseai/3drise-core";
|
|
3
3
|
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
4
4
|
export interface SmokePlumeEffectProps extends ObjectReadyProps {
|
|
5
5
|
boundingRadius: number;
|
|
6
6
|
config: SmokePlumeConfig;
|
|
7
|
-
|
|
7
|
+
/** Scene object id of a standalone effect: the live-edit handle is found by it. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** Keyframes on this effect's config knobs (animations.effect.animations). */
|
|
10
|
+
keyframes?: AnimationOptions[];
|
|
11
|
+
/** Pointer bindings on this effect's config knobs (mouseMove.effect). */
|
|
12
|
+
mouseMove?: MouseMoveDomain;
|
|
8
13
|
}
|
|
9
14
|
declare const SmokePlumeEffect: React.FC<SmokePlumeEffectProps>;
|
|
10
15
|
export default SmokePlumeEffect;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmokePlumeEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/SmokePlumeEffect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SmokePlumeEffect.d.ts","sourceRoot":"","sources":["../../../src/components/effects/SmokePlumeEffect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,mFAAmF;IACnF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,yEAAyE;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAgLD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoDrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|