@3driseai/3drise-viewer 0.1.26 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/ApollonianGrid.d.ts +25 -0
- package/dist/components/ApollonianGrid.d.ts.map +1 -0
- package/dist/components/ApollonianGrid.js +80 -0
- 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/ConformalGrid.d.ts +25 -0
- package/dist/components/ConformalGrid.d.ts.map +1 -0
- package/dist/components/ConformalGrid.js +97 -0
- 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 +9 -3
- package/dist/components/GridsGenerator.d.ts.map +1 -1
- package/dist/components/GridsGenerator.js +41 -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/HilbertGrid.d.ts +25 -0
- package/dist/components/HilbertGrid.d.ts.map +1 -0
- package/dist/components/HilbertGrid.js +93 -0
- 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/LensingGrid.d.ts +25 -0
- package/dist/components/LensingGrid.d.ts.map +1 -0
- package/dist/components/LensingGrid.js +81 -0
- 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/ParastichyGrid.d.ts +25 -0
- package/dist/components/ParastichyGrid.d.ts.map +1 -0
- package/dist/components/ParastichyGrid.js +82 -0
- package/dist/components/ParticlesGenerator.d.ts.map +1 -1
- package/dist/components/ParticlesGenerator.js +6 -0
- package/dist/components/PhyllotaxisGrid.d.ts +25 -0
- package/dist/components/PhyllotaxisGrid.d.ts.map +1 -0
- package/dist/components/PhyllotaxisGrid.js +95 -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/TruchetGrid.d.ts +25 -0
- package/dist/components/TruchetGrid.d.ts.map +1 -0
- package/dist/components/TruchetGrid.js +82 -0
- 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 +14 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -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/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/gridConfigs.d.ts +103 -0
- package/dist/types/gridConfigs.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -9
- 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,24 +1,19 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { RadarGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface RadarGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: RadarGridConfig;
|
|
6
7
|
groupProps?: ThreeElements['group'];
|
|
8
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Keyframes on this grid's config knobs (animations.grid.animations). */
|
|
11
|
+
keyframes?: AnimationOptions[];
|
|
12
|
+
/** Pointer bindings on this grid's config knobs (mouseMove.grid). */
|
|
13
|
+
mouseMove?: MouseMoveDomain;
|
|
7
14
|
}
|
|
8
15
|
/** RadarGridConfig — the single source of truth for a radar grid instance. */
|
|
9
16
|
export declare const defaultRadarGridConfig: RadarGridConfig;
|
|
10
|
-
|
|
11
|
-
* A polar HUD — concentric rings and radial spokes instead of an X/Y lattice,
|
|
12
|
-
* masked to a disc of `fadeDistance` rather than filling its square plane.
|
|
13
|
-
*
|
|
14
|
-
* A sweep arm rotates with a decaying trail, contacts light as it crosses them
|
|
15
|
-
* and fade until it comes back around, and `lineMode` 1 sends ping rings out
|
|
16
|
-
* from the focus point. Set `sweepWidth` to 0 for a static instrument face,
|
|
17
|
-
* `spokes` to 0 for rings only.
|
|
18
|
-
*
|
|
19
|
-
* Note that `fadeDistance` is the disc radius here, so keep `size` at least
|
|
20
|
-
* twice it or the disc gets clipped by its own plane.
|
|
21
|
-
*/
|
|
22
|
-
export declare function RadarGrid({ config, groupProps, onObjectReady, onObjectDispose }: RadarGridProps): import("react").JSX.Element;
|
|
17
|
+
export declare function RadarGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: RadarGridProps): import("react").JSX.Element;
|
|
23
18
|
export default RadarGrid;
|
|
24
19
|
//# sourceMappingURL=RadarGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadarGrid.d.ts","sourceRoot":"","sources":["../../src/components/RadarGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"RadarGrid.d.ts","sourceRoot":"","sources":["../../src/components/RadarGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACpD,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,EAAE,eA4BpC,CAAC;AAuBF,wBAAgB,SAAS,CAAC,EAAE,MAA+B,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,cAAc,+BA6ClJ;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo, useRef } from 'react';
|
|
2
|
+
import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
5
5
|
import { useGridSurface } from '../hooks/useGridSurface.js';
|
|
6
|
-
import {
|
|
6
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
7
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
8
|
+
import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
|
|
9
|
+
import { RadarGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <radarGridMaterial> via extend().
|
|
8
11
|
void RadarGridMaterial;
|
|
9
12
|
/** RadarGridConfig — the single source of truth for a radar grid instance. */
|
|
@@ -48,24 +51,39 @@ export const defaultRadarGridConfig = {
|
|
|
48
51
|
* Note that `fadeDistance` is the disc radius here, so keep `size` at least
|
|
49
52
|
* twice it or the disc gets clipped by its own plane.
|
|
50
53
|
*/
|
|
51
|
-
|
|
54
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
55
|
+
const VARIANT = ['spokes', 'sweepWidth', 'blipDensity'];
|
|
56
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
57
|
+
const DERIVE = {};
|
|
58
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
59
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'spokes'];
|
|
60
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
61
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.radarGrid ?? []).map((p) => p.value));
|
|
62
|
+
export function RadarGrid({ config = defaultRadarGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
52
63
|
const matRef = useRef(null);
|
|
53
64
|
const rootRef = useRef(null);
|
|
54
65
|
const meshRef = useRef(null);
|
|
55
66
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
56
|
-
|
|
67
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
68
|
+
// and for a keyframe or pointer binding to start from.
|
|
69
|
+
const base = useMemo(() => withConfigDefaults(defaultRadarGridConfig, config), [config]);
|
|
70
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
57
71
|
const segs = segments ?? (displace > 0
|
|
58
72
|
? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 4))
|
|
59
73
|
: 1);
|
|
60
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
61
|
-
const colors = useMemo(() => ({
|
|
62
|
-
line: new THREE.Color(lineColor),
|
|
63
|
-
section: new THREE.Color(sectionColor),
|
|
64
|
-
cell: new THREE.Color(cellColor),
|
|
65
|
-
glow: new THREE.Color(glowColor),
|
|
66
|
-
bg: new THREE.Color(bgColor),
|
|
67
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
68
74
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
69
|
-
|
|
75
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
76
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
77
|
+
const baseRef = useRef(base);
|
|
78
|
+
baseRef.current = base;
|
|
79
|
+
const setMaterial = useCallback((m) => {
|
|
80
|
+
matRef.current = m;
|
|
81
|
+
if (m)
|
|
82
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
83
|
+
}, []);
|
|
84
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
85
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
86
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
87
|
+
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("radarGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, RadarGridMaterial.key)] }) }));
|
|
70
88
|
}
|
|
71
89
|
export default RadarGrid;
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { ReactionDiffusionGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface ReactionDiffusionGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: ReactionDiffusionGridConfig;
|
|
6
7
|
groupProps?: ThreeElements['group'];
|
|
8
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Keyframes on this grid's config knobs (animations.grid.animations). */
|
|
11
|
+
keyframes?: AnimationOptions[];
|
|
12
|
+
/** Pointer bindings on this grid's config knobs (mouseMove.grid). */
|
|
13
|
+
mouseMove?: MouseMoveDomain;
|
|
7
14
|
}
|
|
8
15
|
/** ReactionDiffusionGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
9
16
|
export declare const defaultReactionDiffusionGridConfig: ReactionDiffusionGridConfig;
|
|
10
17
|
/**
|
|
11
18
|
* A Gray-Scott reaction-diffusion field simulated on the GPU and sampled by the plane: coral, labyrinths and dividing spots grow, merge and keep evolving, wrapped seamlessly as a torus.
|
|
12
19
|
*/
|
|
13
|
-
export declare function ReactionDiffusionGrid({ config, groupProps, onObjectReady, onObjectDispose }: ReactionDiffusionGridProps): import("react").JSX.Element;
|
|
20
|
+
export declare function ReactionDiffusionGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: ReactionDiffusionGridProps): import("react").JSX.Element;
|
|
14
21
|
export default ReactionDiffusionGrid;
|
|
15
22
|
//# sourceMappingURL=ReactionDiffusionGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionDiffusionGrid.d.ts","sourceRoot":"","sources":["../../src/components/ReactionDiffusionGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactionDiffusionGrid.d.ts","sourceRoot":"","sources":["../../src/components/ReactionDiffusionGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAChE,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,wGAAwG;AACxG,eAAO,MAAM,kCAAkC,EAAE,2BA6BhD,CAAC;AA+LF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,MAA2C,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,0BAA0B,+BA0DtL;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import { useEffect, useMemo, useRef, useCallback, useLayoutEffect } from 'react';
|
|
3
3
|
import * as THREE from 'three';
|
|
4
4
|
import { useFrame } from '@react-three/fiber';
|
|
5
5
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
6
6
|
import { useGridSurface } from '../hooks/useGridSurface.js';
|
|
7
|
-
import {
|
|
7
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
8
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
9
|
+
import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
|
|
10
|
+
import { ReactionDiffusionGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
8
11
|
// Side-effect import registers <reactionDiffusionGridMaterial> via extend().
|
|
9
12
|
void ReactionDiffusionGridMaterial;
|
|
10
13
|
/** ReactionDiffusionGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
@@ -38,124 +41,6 @@ export const defaultReactionDiffusionGridConfig = {
|
|
|
38
41
|
reveal: 1,
|
|
39
42
|
revealDuration: 0,
|
|
40
43
|
};
|
|
41
|
-
const gridFragHeader = /* glsl */ `
|
|
42
|
-
precision highp float;
|
|
43
|
-
|
|
44
|
-
uniform float u_time;
|
|
45
|
-
uniform float u_cellSize;
|
|
46
|
-
uniform float u_lineWidth;
|
|
47
|
-
uniform float u_sectionSize;
|
|
48
|
-
uniform float u_sectionWidth;
|
|
49
|
-
uniform vec3 u_lineColor;
|
|
50
|
-
uniform vec3 u_sectionColor;
|
|
51
|
-
uniform vec3 u_cellColor;
|
|
52
|
-
uniform vec3 u_glowColor;
|
|
53
|
-
uniform vec3 u_bgColor;
|
|
54
|
-
uniform float u_bgOpacity;
|
|
55
|
-
uniform float u_lineMode;
|
|
56
|
-
uniform float u_cellMode;
|
|
57
|
-
uniform float u_animSpeed;
|
|
58
|
-
uniform float u_animScale;
|
|
59
|
-
uniform float u_animIntensity;
|
|
60
|
-
uniform float u_fadeDistance;
|
|
61
|
-
uniform float u_fadeStrength;
|
|
62
|
-
uniform vec2 u_focus;
|
|
63
|
-
uniform float u_reveal;
|
|
64
|
-
|
|
65
|
-
varying vec2 vGridPos;
|
|
66
|
-
|
|
67
|
-
float lineAt(float c, float width, float fp){
|
|
68
|
-
float d = abs(fract(c - 0.5) - 0.5);
|
|
69
|
-
return 1.0 - clamp(d / max(fp * max(width, 0.05), 1e-6), 0.0, 1.0);
|
|
70
|
-
}
|
|
71
|
-
`;
|
|
72
|
-
const gridCommon = /* glsl */ `
|
|
73
|
-
const float PI = 3.14159265359;
|
|
74
|
-
const float TAU = 6.28318530718;
|
|
75
|
-
|
|
76
|
-
float hash21(vec2 p){
|
|
77
|
-
p = fract(p * vec2(123.34, 456.21));
|
|
78
|
-
p += dot(p, p + 45.32);
|
|
79
|
-
return fract(p.x * p.y);
|
|
80
|
-
}
|
|
81
|
-
`;
|
|
82
|
-
const gridTail = /* glsl */ `
|
|
83
|
-
// ---- line animation --------------------------------------------------
|
|
84
|
-
float lineAnim = 1.0;
|
|
85
|
-
if (u_lineMode > 0.5){
|
|
86
|
-
if (u_lineMode < 1.5){
|
|
87
|
-
lineAnim = 0.5 + 0.5 * sin(cellDist * u_animScale - t);
|
|
88
|
-
} else if (u_lineMode < 2.5){
|
|
89
|
-
lineAnim = 0.5 + 0.5 * sin(flowCoord * u_animScale - t);
|
|
90
|
-
} else if (u_lineMode < 3.5){
|
|
91
|
-
float s = fract(scanCoord * 0.05 * u_animScale - t * 0.15);
|
|
92
|
-
lineAnim = 0.25 + smoothstep(0.0, 0.15, s) * (1.0 - smoothstep(0.15, 0.35, s));
|
|
93
|
-
} else {
|
|
94
|
-
lineAnim = 0.5 + 0.5 * sin(t);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
lineAnim = mix(1.0, lineAnim, u_animIntensity);
|
|
98
|
-
|
|
99
|
-
// ---- cell fill -------------------------------------------------------
|
|
100
|
-
float cell = 0.0;
|
|
101
|
-
if (u_cellMode > 0.5){
|
|
102
|
-
if (u_cellMode < 1.5){
|
|
103
|
-
cell = 0.5 + 0.5 * sin(flowCoord * 0.5 * u_animScale - t);
|
|
104
|
-
} else if (u_cellMode < 2.5){
|
|
105
|
-
cell = 0.5 + 0.5 * sin(t * (0.6 + cellH) + cellH * TAU);
|
|
106
|
-
} else if (u_cellMode < 3.5){
|
|
107
|
-
cell = smoothstep(0.6, 1.0, sin(cellDist * u_animScale - t));
|
|
108
|
-
} else {
|
|
109
|
-
cell = step(0.5, cellH) * (0.5 + 0.5 * sin(t));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
cell *= u_animIntensity * edgeKeep;
|
|
113
|
-
|
|
114
|
-
float tone = step(0.55, cellH);
|
|
115
|
-
|
|
116
|
-
vec3 col = u_bgColor * u_bgOpacity;
|
|
117
|
-
float a = u_bgOpacity;
|
|
118
|
-
|
|
119
|
-
col += mix(u_cellColor, u_cellColor * 2.2, tone) * cell;
|
|
120
|
-
a = max(a, cell * 0.9);
|
|
121
|
-
float linesI = lines * lineAnim;
|
|
122
|
-
col += u_lineColor * linesI; a = max(a, linesI);
|
|
123
|
-
float accentI = accent * lineAnim;
|
|
124
|
-
col += u_sectionColor * accentI; a = max(a, accentI);
|
|
125
|
-
col += u_glowColor * (linesI * 0.2 + cell * 0.35) * u_animIntensity;
|
|
126
|
-
|
|
127
|
-
col = col * regionMask + extraCol;
|
|
128
|
-
a = max(a * regionMask, extraA);
|
|
129
|
-
|
|
130
|
-
float fade = 1.0 - smoothstep(1.0 - u_fadeStrength, 1.0, fadeR);
|
|
131
|
-
col *= fade;
|
|
132
|
-
a *= fade;
|
|
133
|
-
|
|
134
|
-
// ---- reveal ----------------------------------------------------------
|
|
135
|
-
// The build boundary sweeps outward from the focus point with a bright
|
|
136
|
-
// leading edge, so the grid reads as assembling itself.
|
|
137
|
-
if (u_reveal < 0.999){
|
|
138
|
-
float rd = length(vGridPos - u_focus) / max(u_fadeDistance, 1e-4);
|
|
139
|
-
float edge = u_reveal * 1.1;
|
|
140
|
-
float mask = 1.0 - smoothstep(edge - 0.05, edge, rd);
|
|
141
|
-
float front = mask * smoothstep(edge - 0.22, edge - 0.05, rd);
|
|
142
|
-
col = col * mask + u_glowColor * front * (a * 1.8 + 0.08);
|
|
143
|
-
a = max(a * mask, front * 0.10);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (a < 0.002) discard;
|
|
147
|
-
gl_FragColor = vec4(col, a);
|
|
148
|
-
}
|
|
149
|
-
`;
|
|
150
|
-
const gridVertexHead = /* glsl */ `
|
|
151
|
-
uniform float u_time;
|
|
152
|
-
uniform float u_cellSize;
|
|
153
|
-
uniform float u_displace;
|
|
154
|
-
uniform float u_animSpeed;
|
|
155
|
-
uniform float u_animScale;
|
|
156
|
-
|
|
157
|
-
varying vec2 vGridPos;
|
|
158
|
-
`;
|
|
159
44
|
// ---------------------------------------------------------------------------
|
|
160
45
|
// Gray-Scott reaction-diffusion. Two chemicals diffuse at different rates and
|
|
161
46
|
// react as u + 2v -> 3v: the autocatalyst v eats u, u is fed in at rate F and
|
|
@@ -237,12 +122,6 @@ const seedFrag = /* glsl */ `
|
|
|
237
122
|
gl_FragColor = vec4(1.0 - 0.5 * blob, 0.25 * blob, 0.0, 1.0);
|
|
238
123
|
}
|
|
239
124
|
`;
|
|
240
|
-
function createExtraUniforms() {
|
|
241
|
-
return {
|
|
242
|
-
u_field: { value: null },
|
|
243
|
-
u_tileCells: { value: 7 },
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
125
|
/** The simulation: two half-float targets ping-ponged through the Gray-Scott step. */
|
|
247
126
|
function createRuntime(u, renderer, c) {
|
|
248
127
|
const targetOptions = {
|
|
@@ -335,26 +214,41 @@ function disposeRuntime(rt) {
|
|
|
335
214
|
rt.simMaterial.dispose();
|
|
336
215
|
rt.seedMaterial.dispose();
|
|
337
216
|
}
|
|
217
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
218
|
+
const VARIANT = ['feed', 'kill', 'variation', 'tileCells'];
|
|
219
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
220
|
+
const DERIVE = {};
|
|
221
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
222
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'tileCells'];
|
|
223
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
224
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.reactionDiffusionGrid ?? []).map((p) => p.value));
|
|
338
225
|
/**
|
|
339
226
|
* A Gray-Scott reaction-diffusion field simulated on the GPU and sampled by the plane: coral, labyrinths and dividing spots grow, merge and keep evolving, wrapped seamlessly as a torus.
|
|
340
227
|
*/
|
|
341
|
-
export function ReactionDiffusionGrid({ config = defaultReactionDiffusionGridConfig, groupProps, onObjectReady, onObjectDispose }) {
|
|
228
|
+
export function ReactionDiffusionGrid({ config = defaultReactionDiffusionGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
342
229
|
const matRef = useRef(null);
|
|
343
230
|
const rootRef = useRef(null);
|
|
344
231
|
const meshRef = useRef(null);
|
|
345
232
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
346
|
-
|
|
233
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
234
|
+
// and for a keyframe or pointer binding to start from.
|
|
235
|
+
const base = useMemo(() => withConfigDefaults(defaultReactionDiffusionGridConfig, config), [config]);
|
|
236
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
347
237
|
// the relief follows the pattern itself, which is a few texels wide
|
|
348
238
|
const segs = segments ?? (displace > 0 ? Math.min(512, Math.max(128, Math.ceil(size / Math.max(cellSize, 1e-4)) * 12)) : 1);
|
|
349
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
350
|
-
const colors = useMemo(() => ({
|
|
351
|
-
line: new THREE.Color(lineColor),
|
|
352
|
-
section: new THREE.Color(sectionColor),
|
|
353
|
-
cell: new THREE.Color(cellColor),
|
|
354
|
-
glow: new THREE.Color(glowColor),
|
|
355
|
-
bg: new THREE.Color(bgColor),
|
|
356
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
357
239
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
240
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
241
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
242
|
+
const baseRef = useRef(base);
|
|
243
|
+
baseRef.current = base;
|
|
244
|
+
const setMaterial = useCallback((m) => {
|
|
245
|
+
matRef.current = m;
|
|
246
|
+
if (m)
|
|
247
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
248
|
+
}, []);
|
|
249
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
250
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
251
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
358
252
|
// the simulation behind this grid: created on mount, stepped every frame
|
|
359
253
|
const runtimeRef = useRef(null);
|
|
360
254
|
useFrame((state, delta) => {
|
|
@@ -362,8 +256,8 @@ export function ReactionDiffusionGrid({ config = defaultReactionDiffusionGridCon
|
|
|
362
256
|
if (!mat)
|
|
363
257
|
return;
|
|
364
258
|
if (!runtimeRef.current)
|
|
365
|
-
runtimeRef.current = createRuntime(mat.uniforms, state.gl,
|
|
366
|
-
updateRuntime(runtimeRef.current, mat.uniforms,
|
|
259
|
+
runtimeRef.current = createRuntime(mat.uniforms, state.gl, base);
|
|
260
|
+
updateRuntime(runtimeRef.current, mat.uniforms, base, Math.min(delta, 0.1), state.gl);
|
|
367
261
|
});
|
|
368
262
|
useEffect(() => () => {
|
|
369
263
|
if (runtimeRef.current) {
|
|
@@ -371,6 +265,6 @@ export function ReactionDiffusionGrid({ config = defaultReactionDiffusionGridCon
|
|
|
371
265
|
runtimeRef.current = null;
|
|
372
266
|
}
|
|
373
267
|
}, []);
|
|
374
|
-
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("reactionDiffusionGridMaterial", { ref:
|
|
268
|
+
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("reactionDiffusionGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, ReactionDiffusionGridMaterial.key)] }) }));
|
|
375
269
|
}
|
|
376
270
|
export default ReactionDiffusionGrid;
|
|
@@ -148,7 +148,7 @@ const SceneBuilder = forwardRef(({ project, width = "100%", height = "100vh", st
|
|
|
148
148
|
onSceneInitialized();
|
|
149
149
|
}
|
|
150
150
|
onSceneReady?.(sceneHandle);
|
|
151
|
-
}, children: _jsxs(Physics, { gravity: physicsSettings.gravity, paused: !physicsSettings.enabled, debug: physicsSettings.debug, children: [_jsx(LightsManager, { config: lighting[0], onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), environment && _jsx(EnvironmentManager, { environment: environment, timeSettings: timeSettings, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), _jsx(CameraController, { settings: camera, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), _jsx(ObjectsRenderer, { cameraSettings: camera, generalObjectSettings: generalObjectSettings, createdObjects: sceneObjects, onObjectsReady: undefined, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, sequences: animationSequences, clips: animationClips, actionSequences: actionSequences, handleObjectClick: onObjectClick ? (object, ref, event) => onObjectClick(object, ref, event) : undefined }), _jsx(ClipPlayer, { autoplay: clipAutoplay, getSettings: (state) => resolveElementSettings(state, {
|
|
151
|
+
}, children: _jsxs(Physics, { gravity: physicsSettings.gravity, paused: !physicsSettings.enabled, debug: physicsSettings.debug, children: [_jsx(LightsManager, { config: lighting[0], onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), environment && _jsx(EnvironmentManager, { environment: environment, timeSettings: timeSettings, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), _jsx(CameraController, { settings: camera, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }), _jsx(ObjectsRenderer, { cameraSettings: camera, generalObjectSettings: generalObjectSettings, createdObjects: sceneObjects, onObjectsReady: undefined, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, sequences: animationSequences, clips: animationClips, actionSequences: actionSequences, handleObjectClick: onObjectClick ? (object, ref, event) => onObjectClick(object, ref, event) : undefined }), _jsx(ClipPlayer, { autoplay: clipAutoplay, getAction: (id) => actionSequences?.find((a) => a.id === id), getSettings: (state) => resolveElementSettings(state, {
|
|
152
152
|
objects: sceneObjects,
|
|
153
153
|
camera,
|
|
154
154
|
sky: environment?.sky,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import type { TimeSettings, SkySettings, FogSettings } from '@3driseai/3drise-core';
|
|
4
|
-
import type { VolumetricCloudsSettings } from '
|
|
4
|
+
import type { VolumetricCloudsSettings } from '@3driseai/3drise-core';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
/**
|
|
7
7
|
* Sky, sun and everything lit by them.
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
2
|
-
import type { SparklesBurstConfig } from '@3driseai/3drise-core';
|
|
2
|
+
import type { AnimationOptions, MouseMoveDomain, SparklesBurstConfig } from '@3driseai/3drise-core';
|
|
3
3
|
import React from "react";
|
|
4
4
|
export interface SparklesBurstProps extends ObjectReadyProps {
|
|
5
5
|
config: SparklesBurstConfig;
|
|
6
6
|
boundingRadius?: number;
|
|
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;
|
|
7
13
|
}
|
|
8
14
|
declare const SparklesBurst: React.FC<SparklesBurstProps>;
|
|
9
15
|
export default SparklesBurst;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparklesBurst.d.ts","sourceRoot":"","sources":["../../src/components/SparklesBurst.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SparklesBurst.d.ts","sourceRoot":"","sources":["../../src/components/SparklesBurst.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IACxD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,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;CAC/B;AAsBD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2C/C,CAAC;AACF,eAAe,aAAa,CAAC"}
|
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
3
|
-
import {
|
|
3
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
4
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
5
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
4
6
|
import { useFrame } from '@react-three/fiber';
|
|
5
7
|
import * as THREE from 'three';
|
|
6
|
-
import { SparklesBurstMaterial } from '@3driseai/3drise-core';
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
import { SparklesBurstMaterial, DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
9
|
+
/** Knobs that rebuild the plane or retime the burst cycle: commit only, never live. */
|
|
10
|
+
const STRUCTURAL = ['scale', 'loop', 'durationMs'];
|
|
11
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyConfig pushes. */
|
|
12
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.sparklesBurst.map((p) => p.value));
|
|
13
|
+
/** The single push point: every config knob reaches its uniform here. */
|
|
14
|
+
function applyConfig(material, c) {
|
|
15
|
+
const u = material.uniforms;
|
|
16
|
+
u.uCoreColor.value.set(c.coreColor);
|
|
17
|
+
u.uBurstColor.value.set(c.burstColor);
|
|
18
|
+
u.uRayCount.value = Math.max(3, c.rayCount);
|
|
19
|
+
u.uIntensity.value = c.intensity;
|
|
20
|
+
u.uOpacity.value = c.opacity;
|
|
21
|
+
u.uHoverColor.value.set(c.hoverColor);
|
|
22
|
+
u.uHoverRadius.value = c.hoverRadius;
|
|
23
|
+
u.uHoverIntensity.value = c.hoverIntensity;
|
|
24
|
+
}
|
|
25
|
+
const SparklesBurst = ({ config, boundingRadius, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
26
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.sparklesBurst, config), [config]);
|
|
27
|
+
const planeSize = useMemo(() => Math.max(0.05, cfg.scale), [cfg.scale]);
|
|
9
28
|
const geometry = useMemo(() => new THREE.PlaneGeometry(planeSize, planeSize, 1, 1), [planeSize]);
|
|
10
29
|
const material = useMemo(() => {
|
|
11
30
|
const m = new SparklesBurstMaterial();
|
|
@@ -15,42 +34,26 @@ const SparklesBurst = ({ config, boundingRadius, onObjectReady, onObjectDispose
|
|
|
15
34
|
m.blending = THREE.AdditiveBlending;
|
|
16
35
|
return m;
|
|
17
36
|
}, []);
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
const u = material.uniforms;
|
|
20
|
-
u.uCoreColor.value.set(config.coreColor ?? '#ffffff');
|
|
21
|
-
u.uBurstColor.value.set(config.burstColor ?? '#ffaa00');
|
|
22
|
-
u.uRayCount.value = Math.max(3, config.rayCount ?? 8);
|
|
23
|
-
u.uIntensity.value = config.intensity ?? 1.0;
|
|
24
|
-
u.uOpacity.value = config.opacity ?? 1.0;
|
|
25
|
-
u.uHoverColor.value.set(config.hoverColor ?? '#ffffff');
|
|
26
|
-
u.uHoverRadius.value = config.hoverRadius ?? 0.3;
|
|
27
|
-
u.uHoverIntensity.value = config.hoverIntensity ?? 0.0;
|
|
28
|
-
}, [
|
|
29
|
-
config.coreColor,
|
|
30
|
-
config.burstColor,
|
|
31
|
-
config.rayCount,
|
|
32
|
-
config.intensity,
|
|
33
|
-
config.opacity,
|
|
34
|
-
config.hoverColor,
|
|
35
|
-
config.hoverRadius,
|
|
36
|
-
config.hoverIntensity,
|
|
37
|
-
material,
|
|
38
|
-
]);
|
|
39
37
|
useEffect(() => () => { geometry.dispose(); material.dispose(); }, [geometry, material]);
|
|
40
38
|
// Track elapsed time JS-side so loop on/off toggles cleanly without
|
|
41
39
|
// depending on the global clock for the progress phase.
|
|
42
40
|
const startRef = useRef(null);
|
|
43
41
|
const rootRef = useRef(null);
|
|
44
42
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
43
|
+
const push = useCallback((merged) => {
|
|
44
|
+
applyConfig(material, merged);
|
|
45
|
+
}, [material]);
|
|
46
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
47
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
45
48
|
// Reset start when loop toggles so behaviour is predictable.
|
|
46
|
-
useEffect(() => { startRef.current = null; }, [
|
|
49
|
+
useEffect(() => { startRef.current = null; }, [cfg.loop, cfg.durationMs]);
|
|
47
50
|
useFrame((state) => {
|
|
48
51
|
const now = state.clock.getElapsedTime();
|
|
49
52
|
if (startRef.current === null)
|
|
50
53
|
startRef.current = now;
|
|
51
54
|
const elapsedMs = (now - startRef.current) * 1000;
|
|
52
|
-
const duration = Math.max(1,
|
|
53
|
-
const loop =
|
|
55
|
+
const duration = Math.max(1, cfg.durationMs);
|
|
56
|
+
const loop = cfg.loop;
|
|
54
57
|
const progress = loop
|
|
55
58
|
? (elapsedMs % duration) / duration
|
|
56
59
|
: Math.min(elapsedMs / duration, 1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SkySettings, TimeSettings } from '@3driseai/3drise-core';
|
|
3
3
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
4
|
-
import type { ProceduralTerrainSettings } from '
|
|
4
|
+
import type { ProceduralTerrainSettings } from '@3driseai/3drise-core';
|
|
5
5
|
export interface TerrainBuilderProps extends ObjectReadyProps {
|
|
6
6
|
/** Accepts a partial or older-shaped blob — including core's retired flat
|
|
7
7
|
* `TerrainSettings`, which has no `config` and normalises to nothing rather
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerrainBuilder.d.ts","sourceRoot":"","sources":["../../src/components/TerrainBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TerrainBuilder.d.ts","sourceRoot":"","sources":["../../src/components/TerrainBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAOvE,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD;;mEAE+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+BjD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { normalizeTerrain, normalizeTerrainQuality } from '
|
|
3
|
+
import { normalizeTerrain, normalizeTerrainQuality } from '@3driseai/3drise-core';
|
|
4
4
|
import Mountains from './terrain/Mountains.js';
|
|
5
5
|
import Dunes from './terrain/Dunes.js';
|
|
6
6
|
import Hills from './terrain/Hills.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ThreeElements } from '@react-three/fiber';
|
|
2
|
+
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
|
+
import type { TruchetGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
5
|
+
export interface TruchetGridProps extends ObjectReadyProps {
|
|
6
|
+
config?: TruchetGridConfig;
|
|
7
|
+
groupProps?: ThreeElements['group'];
|
|
8
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** Keyframes on this grid's config knobs (animations.grid.animations). */
|
|
11
|
+
keyframes?: AnimationOptions[];
|
|
12
|
+
/** Pointer bindings on this grid's config knobs (mouseMove.grid). */
|
|
13
|
+
mouseMove?: MouseMoveDomain;
|
|
14
|
+
}
|
|
15
|
+
/** TruchetGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
16
|
+
export declare const defaultTruchetGridConfig: TruchetGridConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Smith quarter-circle Truchet tiles: arcs always meet arcs, so the plane fills with endless two-coloured loops. Tiles re-deal by turning a quarter turn, and comets travel the loops in one direction.
|
|
19
|
+
*
|
|
20
|
+
* The grid always lies flat: any other orientation, and any movement of the
|
|
21
|
+
* whole, is the parent object's transform. Only what happens inside it animates.
|
|
22
|
+
*/
|
|
23
|
+
export declare function TruchetGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: TruchetGridProps): import("react").JSX.Element;
|
|
24
|
+
export default TruchetGrid;
|
|
25
|
+
//# sourceMappingURL=TruchetGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TruchetGrid.d.ts","sourceRoot":"","sources":["../../src/components/TruchetGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACtD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAKD,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,EAAE,iBA2BtC,CAAC;AAWF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BA4CxJ;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
5
|
+
import { useGridSurface } from '../hooks/useGridSurface.js';
|
|
6
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
7
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
8
|
+
import { applyGridConfig, GRID_STRUCTURAL } from '../utils/gridConfig.js';
|
|
9
|
+
import { TruchetGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
10
|
+
// Side-effect import registers <truchetGridMaterial> via extend().
|
|
11
|
+
void TruchetGridMaterial;
|
|
12
|
+
/** TruchetGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
13
|
+
export const defaultTruchetGridConfig = {
|
|
14
|
+
cellSize: 3,
|
|
15
|
+
size: 50,
|
|
16
|
+
segments: undefined,
|
|
17
|
+
lineMode: 0,
|
|
18
|
+
cellMode: 0,
|
|
19
|
+
lineWidth: 1.3,
|
|
20
|
+
sectionSize: 4,
|
|
21
|
+
sectionWidth: 1.2,
|
|
22
|
+
animSpeed: 1,
|
|
23
|
+
animScale: 0.5,
|
|
24
|
+
animIntensity: 0.6,
|
|
25
|
+
fadeDistance: undefined,
|
|
26
|
+
fadeStrength: 0.7,
|
|
27
|
+
displace: 0,
|
|
28
|
+
flip: 0.25,
|
|
29
|
+
bias: 0.5,
|
|
30
|
+
pulse: 0.8,
|
|
31
|
+
regionFill: 0.8,
|
|
32
|
+
lineColor: '#a052e0',
|
|
33
|
+
sectionColor: '#4a2a66',
|
|
34
|
+
cellColor: '#2a0f45',
|
|
35
|
+
glowColor: '#ff7ad9',
|
|
36
|
+
bgColor: '#07030d',
|
|
37
|
+
bgOpacity: 0,
|
|
38
|
+
reveal: 1,
|
|
39
|
+
revealDuration: 0,
|
|
40
|
+
};
|
|
41
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
42
|
+
const VARIANT = ['flip', 'bias', 'pulse', 'regionFill'];
|
|
43
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
44
|
+
const DERIVE = {};
|
|
45
|
+
/** Knobs that reshape the plane or pick a mode: they change on commit, never through the live path. */
|
|
46
|
+
const STRUCTURAL = [...GRID_STRUCTURAL];
|
|
47
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
48
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.truchetGrid ?? []).map((p) => p.value));
|
|
49
|
+
/**
|
|
50
|
+
* Smith quarter-circle Truchet tiles: arcs always meet arcs, so the plane fills with endless two-coloured loops. Tiles re-deal by turning a quarter turn, and comets travel the loops in one direction.
|
|
51
|
+
*
|
|
52
|
+
* The grid always lies flat: any other orientation, and any movement of the
|
|
53
|
+
* whole, is the parent object's transform. Only what happens inside it animates.
|
|
54
|
+
*/
|
|
55
|
+
export function TruchetGrid({ config = defaultTruchetGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
56
|
+
const matRef = useRef(null);
|
|
57
|
+
const rootRef = useRef(null);
|
|
58
|
+
const meshRef = useRef(null);
|
|
59
|
+
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
60
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
61
|
+
// and for a keyframe or pointer binding to start from.
|
|
62
|
+
const base = useMemo(() => withConfigDefaults(defaultTruchetGridConfig, config), [config]);
|
|
63
|
+
const { cellSize, size, segments, displace, reveal, revealDuration } = base;
|
|
64
|
+
const segs = segments ?? (displace > 0
|
|
65
|
+
? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
|
|
66
|
+
: 1);
|
|
67
|
+
useGridSurface(matRef, meshRef, { reveal, revealDuration });
|
|
68
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
69
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
70
|
+
const baseRef = useRef(base);
|
|
71
|
+
baseRef.current = base;
|
|
72
|
+
const setMaterial = useCallback((m) => {
|
|
73
|
+
matRef.current = m;
|
|
74
|
+
if (m)
|
|
75
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
76
|
+
}, []);
|
|
77
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
78
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
79
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
80
|
+
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: [-Math.PI / 2, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("truchetGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, TruchetGridMaterial.key)] }) }));
|
|
81
|
+
}
|
|
82
|
+
export default TruchetGrid;
|