@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,15 +1,22 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { GirihGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface GirihGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: GirihGridConfig;
|
|
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
|
/** GirihGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
9
16
|
export declare const defaultGirihGridConfig: GirihGridConfig;
|
|
10
17
|
/**
|
|
11
18
|
* An Islamic star pattern drawn by Hankin polygons-in-contact. One ray per dihedral sector, from the edge midpoint to the sector bisector, generates the whole interlaced star-and-rosette strapwork over an octagon-square, hexagonal or trihexagonal tiling.
|
|
12
19
|
*/
|
|
13
|
-
export declare function GirihGrid({ config, groupProps, onObjectReady, onObjectDispose }: GirihGridProps): import("react").JSX.Element;
|
|
20
|
+
export declare function GirihGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: GirihGridProps): import("react").JSX.Element;
|
|
14
21
|
export default GirihGrid;
|
|
15
22
|
//# sourceMappingURL=GirihGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GirihGrid.d.ts","sourceRoot":"","sources":["../../src/components/GirihGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"GirihGrid.d.ts","sourceRoot":"","sources":["../../src/components/GirihGrid.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,4FAA4F;AAC5F,eAAO,MAAM,sBAAsB,EAAE,eA6BpC,CAAC;AAWF;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAA+B,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,cAAc,+BA2ClJ;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 { GirihGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <girihGridMaterial> via extend().
|
|
8
11
|
void GirihGridMaterial;
|
|
9
12
|
/** GirihGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
@@ -37,26 +40,41 @@ export const defaultGirihGridConfig = {
|
|
|
37
40
|
reveal: 1,
|
|
38
41
|
revealDuration: 0,
|
|
39
42
|
};
|
|
43
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
44
|
+
const VARIANT = ['contactAngle', 'strapWidth', 'angleDrift'];
|
|
45
|
+
/** Computed uniforms: the tiling index is a whole number. */
|
|
46
|
+
const DERIVE = { tiling: (c) => Math.round(c.tiling) };
|
|
47
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
48
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'tiling'];
|
|
49
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
50
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.girihGrid ?? []).map((p) => p.value));
|
|
40
51
|
/**
|
|
41
52
|
* An Islamic star pattern drawn by Hankin polygons-in-contact. One ray per dihedral sector, from the edge midpoint to the sector bisector, generates the whole interlaced star-and-rosette strapwork over an octagon-square, hexagonal or trihexagonal tiling.
|
|
42
53
|
*/
|
|
43
|
-
export function GirihGrid({ config = defaultGirihGridConfig, groupProps, onObjectReady, onObjectDispose }) {
|
|
54
|
+
export function GirihGrid({ config = defaultGirihGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
44
55
|
const matRef = useRef(null);
|
|
45
56
|
const rootRef = useRef(null);
|
|
46
57
|
const meshRef = useRef(null);
|
|
47
58
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
48
|
-
|
|
59
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
60
|
+
// and for a keyframe or pointer binding to start from.
|
|
61
|
+
const base = useMemo(() => withConfigDefaults(defaultGirihGridConfig, config), [config]);
|
|
62
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
49
63
|
// the relief follows the star outlines, which are a fraction of a cell wide
|
|
50
64
|
const segs = segments ?? (displace > 0 ? Math.min(512, Math.max(128, Math.ceil(size / Math.max(cellSize, 1e-4)) * 24)) : 1);
|
|
51
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
52
|
-
const colors = useMemo(() => ({
|
|
53
|
-
line: new THREE.Color(lineColor),
|
|
54
|
-
section: new THREE.Color(sectionColor),
|
|
55
|
-
cell: new THREE.Color(cellColor),
|
|
56
|
-
glow: new THREE.Color(glowColor),
|
|
57
|
-
bg: new THREE.Color(bgColor),
|
|
58
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
59
65
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
60
|
-
|
|
66
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
67
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
68
|
+
const baseRef = useRef(base);
|
|
69
|
+
baseRef.current = base;
|
|
70
|
+
const setMaterial = useCallback((m) => {
|
|
71
|
+
matRef.current = m;
|
|
72
|
+
if (m)
|
|
73
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
74
|
+
}, []);
|
|
75
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
76
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
77
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
78
|
+
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("girihGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, GirihGridMaterial.key)] }) }));
|
|
61
79
|
}
|
|
62
80
|
export default GirihGrid;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
2
|
-
import type { GlyphsConfig } from '@3driseai/3drise-core';
|
|
2
|
+
import type { AnimationOptions, GlyphsConfig, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
3
3
|
import React from "react";
|
|
4
4
|
export interface GlyphsProps extends ObjectReadyProps {
|
|
5
5
|
config: GlyphsConfig;
|
|
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 Glyphs: React.FC<GlyphsProps>;
|
|
9
15
|
export default Glyphs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Glyphs.d.ts","sourceRoot":"","sources":["../../src/components/Glyphs.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Glyphs.d.ts","sourceRoot":"","sources":["../../src/components/Glyphs.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,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;AA0BD,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAuCjC,CAAC;AACF,eAAe,MAAM,CAAC"}
|
|
@@ -1,19 +1,43 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useRef } from 'react';
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
3
3
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
4
|
-
import {
|
|
4
|
+
import { useConfigDriver } from '../hooks/useConfigDriver.js';
|
|
5
|
+
import { withConfigDefaults } from '../utils/configAnimations.js';
|
|
5
6
|
import { useFrame } from '@react-three/fiber';
|
|
6
7
|
import * as THREE from 'three';
|
|
7
|
-
import { GlyphRingMaterial } from '@3driseai/3drise-core';
|
|
8
|
-
|
|
8
|
+
import { GlyphRingMaterial, DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
9
|
+
/** Knobs that resize the plane: commit only, never live. */
|
|
10
|
+
const STRUCTURAL = ['ringRadius'];
|
|
11
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
12
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.glyphs.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.uRingColor.value.set(c.ringColor);
|
|
17
|
+
u.uGlyphsColor.value.set(c.glyphsColor);
|
|
18
|
+
u.uShadesMultiplier.value = c.shadesMultiplier;
|
|
19
|
+
u.uHoverColor.value.set(c.hoverColor);
|
|
20
|
+
u.uHoverRadius.value = c.hoverRadius;
|
|
21
|
+
u.uHoverIntensity.value = c.hoverIntensity;
|
|
22
|
+
u.uGlyphCount.value = Math.max(3, c.glyphCount);
|
|
23
|
+
// the morph rate is integrated into uTime on the CPU (see useFrame), so the
|
|
24
|
+
// shader's uTime * uMorphSpeed never jumps when the speed changes
|
|
25
|
+
u.uMorphSpeed.value = 1;
|
|
26
|
+
u.uIntensity.value = c.intensity;
|
|
27
|
+
u.uOpacity.value = c.opacity;
|
|
28
|
+
}
|
|
29
|
+
const Glyphs = ({ config, boundingRadius, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
30
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.glyphs, config), [config]);
|
|
9
31
|
const rootRef = useRef(null);
|
|
10
32
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
33
|
+
// the knobs read per frame (rotationSpeed, morphSpeed), from the last merged config
|
|
34
|
+
const cur = useRef(cfg);
|
|
11
35
|
// The ring sits at r=0.55 within UV space, so the plane must span 2 * ringRadius / 0.55
|
|
12
36
|
// for the ring's outer edge to land at the configured `ringRadius` in world units.
|
|
13
37
|
const planeSize = useMemo(() => {
|
|
14
|
-
const r = Math.max(0.05, (boundingRadius ??
|
|
38
|
+
const r = Math.max(0.05, (boundingRadius ?? cfg.ringRadius) * 2);
|
|
15
39
|
return (2 * r) / 0.55;
|
|
16
|
-
}, [boundingRadius,
|
|
40
|
+
}, [boundingRadius, cfg.ringRadius]);
|
|
17
41
|
const geometry = useMemo(() => new THREE.PlaneGeometry(planeSize, planeSize, 1, 1), [planeSize]);
|
|
18
42
|
const material = useMemo(() => {
|
|
19
43
|
const m = new GlyphRingMaterial();
|
|
@@ -23,35 +47,17 @@ const Glyphs = ({ config, boundingRadius, onObjectReady, onObjectDispose }) => {
|
|
|
23
47
|
m.blending = THREE.AdditiveBlending;
|
|
24
48
|
return m;
|
|
25
49
|
}, []);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
const u = material.uniforms;
|
|
28
|
-
u.uRingColor.value.set(config.ringColor ?? '#88ccff');
|
|
29
|
-
u.uGlyphsColor.value.set(config.glyphsColor ?? '#88ccff');
|
|
30
|
-
u.uShadesMultiplier.value = config.shadesMultiplier ?? 0.0;
|
|
31
|
-
u.uHoverColor.value.set(config.hoverColor ?? '#ffffff');
|
|
32
|
-
u.uHoverRadius.value = config.hoverRadius ?? 0.3;
|
|
33
|
-
u.uHoverIntensity.value = config.hoverIntensity ?? 0.0;
|
|
34
|
-
u.uGlyphCount.value = Math.max(3, config.glyphCount ?? 12);
|
|
35
|
-
u.uMorphSpeed.value = config.morphSpeed ?? 0.4;
|
|
36
|
-
u.uIntensity.value = config.intensity ?? 1.5;
|
|
37
|
-
u.uOpacity.value = config.opacity ?? 1.0;
|
|
38
|
-
}, [
|
|
39
|
-
config.ringColor,
|
|
40
|
-
config.glyphsColor,
|
|
41
|
-
config.shadesMultiplier,
|
|
42
|
-
config.hoverColor,
|
|
43
|
-
config.hoverRadius,
|
|
44
|
-
config.hoverIntensity,
|
|
45
|
-
config.glyphCount,
|
|
46
|
-
config.morphSpeed,
|
|
47
|
-
config.intensity,
|
|
48
|
-
config.opacity,
|
|
49
|
-
material,
|
|
50
|
-
]);
|
|
51
50
|
useEffect(() => () => { geometry.dispose(); material.dispose(); }, [geometry, material]);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
const push = useCallback((merged) => {
|
|
52
|
+
cur.current = merged;
|
|
53
|
+
applyConfig(material, merged);
|
|
54
|
+
}, [material]);
|
|
55
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
56
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
57
|
+
useFrame((_, delta) => {
|
|
58
|
+
const dt = Math.min(delta, 0.1);
|
|
59
|
+
material.uniforms.uTime.value += dt * cur.current.morphSpeed;
|
|
60
|
+
const rotSpeed = cur.current.rotationSpeed;
|
|
55
61
|
material.uniforms.uRotation.value += delta * rotSpeed * 0.15;
|
|
56
62
|
});
|
|
57
63
|
if (!config.enabled)
|
|
@@ -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 { GravWaveGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface GravWaveGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: GravWaveGridConfig;
|
|
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
|
/** GravWaveGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
9
16
|
export declare const defaultGravWaveGridConfig: GravWaveGridConfig;
|
|
10
17
|
/**
|
|
11
18
|
* A spacetime lattice around a binary black-hole inspiral. The Newtonian wells pinch the lines, and quadrupole waves, evaluated at the retarded time, spiral outward and chirp toward the merger before the remnant rings down.
|
|
12
19
|
*/
|
|
13
|
-
export declare function GravWaveGrid({ config, groupProps, onObjectReady, onObjectDispose }: GravWaveGridProps): import("react").JSX.Element;
|
|
20
|
+
export declare function GravWaveGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: GravWaveGridProps): import("react").JSX.Element;
|
|
14
21
|
export default GravWaveGrid;
|
|
15
22
|
//# sourceMappingURL=GravWaveGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GravWaveGrid.d.ts","sourceRoot":"","sources":["../../src/components/GravWaveGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"GravWaveGrid.d.ts","sourceRoot":"","sources":["../../src/components/GravWaveGrid.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,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,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,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB,EAAE,kBA6BvC,CAAC;AAWF;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,MAAkC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,iBAAiB,+BA2C3J;AAED,eAAe,YAAY,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 { GravWaveGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <gravWaveGridMaterial> via extend().
|
|
8
11
|
void GravWaveGridMaterial;
|
|
9
12
|
/** GravWaveGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
@@ -37,26 +40,41 @@ export const defaultGravWaveGridConfig = {
|
|
|
37
40
|
reveal: 1,
|
|
38
41
|
revealDuration: 0,
|
|
39
42
|
};
|
|
43
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
44
|
+
const VARIANT = ['strain', 'chirpTime', 'waveSpeed', 'massRatio'];
|
|
45
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
46
|
+
const DERIVE = {};
|
|
47
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
48
|
+
const STRUCTURAL = [...GRID_STRUCTURAL];
|
|
49
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
50
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.gravWaveGrid ?? []).map((p) => p.value));
|
|
40
51
|
/**
|
|
41
52
|
* A spacetime lattice around a binary black-hole inspiral. The Newtonian wells pinch the lines, and quadrupole waves, evaluated at the retarded time, spiral outward and chirp toward the merger before the remnant rings down.
|
|
42
53
|
*/
|
|
43
|
-
export function GravWaveGrid({ config = defaultGravWaveGridConfig, groupProps, onObjectReady, onObjectDispose }) {
|
|
54
|
+
export function GravWaveGrid({ config = defaultGravWaveGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
44
55
|
const matRef = useRef(null);
|
|
45
56
|
const rootRef = useRef(null);
|
|
46
57
|
const meshRef = useRef(null);
|
|
47
58
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
48
|
-
|
|
59
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
60
|
+
// and for a keyframe or pointer binding to start from.
|
|
61
|
+
const base = useMemo(() => withConfigDefaults(defaultGravWaveGridConfig, config), [config]);
|
|
62
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
49
63
|
// the wells are about a cell wide and the waves reach two-cell wavelengths near merger
|
|
50
64
|
const segs = segments ?? (displace > 0 ? Math.min(512, Math.max(128, Math.ceil(size / Math.max(cellSize, 1e-4)) * 8)) : 1);
|
|
51
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
52
|
-
const colors = useMemo(() => ({
|
|
53
|
-
line: new THREE.Color(lineColor),
|
|
54
|
-
section: new THREE.Color(sectionColor),
|
|
55
|
-
cell: new THREE.Color(cellColor),
|
|
56
|
-
glow: new THREE.Color(glowColor),
|
|
57
|
-
bg: new THREE.Color(bgColor),
|
|
58
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
59
65
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
60
|
-
|
|
66
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
67
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
68
|
+
const baseRef = useRef(base);
|
|
69
|
+
baseRef.current = base;
|
|
70
|
+
const setMaterial = useCallback((m) => {
|
|
71
|
+
matRef.current = m;
|
|
72
|
+
if (m)
|
|
73
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
74
|
+
}, []);
|
|
75
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
76
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
77
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
78
|
+
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("gravWaveGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, GravWaveGridMaterial.key)] }) }));
|
|
61
79
|
}
|
|
62
80
|
export default GravWaveGrid;
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
2
2
|
import type { ChladniGridConfig, CircuitGridConfig, ContourGridConfig, FlowNetGridConfig, FractalGridConfig, HexGridConfig, HyperbolicGridConfig, MoireGridConfig, QuasiGridConfig, RadarGridConfig, VoronoiGridConfig, GravWaveGridConfig, GirihGridConfig, WallpaperGridConfig, ReactionDiffusionGridConfig } from '../types/gridConfigs';
|
|
3
3
|
import React from "react";
|
|
4
|
-
import type { GridConfig, MyGridConfig } from "@3driseai/3drise-core";
|
|
4
|
+
import type { AnimationOptions, GridConfig, MouseMoveDomain, MyGridConfig } from "@3driseai/3drise-core";
|
|
5
5
|
/** Every grid config this generator knows how to render. */
|
|
6
6
|
export type GridGeneratorConfig = GridConfig | MyGridConfig | HexGridConfig | CircuitGridConfig | VoronoiGridConfig | RadarGridConfig | MoireGridConfig | FractalGridConfig | ContourGridConfig | QuasiGridConfig | FlowNetGridConfig | ChladniGridConfig | HyperbolicGridConfig | GravWaveGridConfig | GirihGridConfig | WallpaperGridConfig | ReactionDiffusionGridConfig;
|
|
7
7
|
type GridGeneratorProps = ObjectReadyProps & {
|
|
8
8
|
config: GridGeneratorConfig & {
|
|
9
9
|
type: string;
|
|
10
10
|
};
|
|
11
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
12
|
+
id?: string;
|
|
13
|
+
/** Keyframes on the grid's config knobs (the object's animations.grid.animations). */
|
|
14
|
+
keyframes?: AnimationOptions[];
|
|
15
|
+
/** Pointer bindings on the grid's config knobs (the object's mouseMove.grid). */
|
|
16
|
+
mouseMove?: MouseMoveDomain;
|
|
11
17
|
};
|
|
12
18
|
declare const GridGenerator: React.FC<GridGeneratorProps>;
|
|
13
19
|
export default GridGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridsGenerator.d.ts","sourceRoot":"","sources":["../../src/components/GridsGenerator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAkB9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"GridsGenerator.d.ts","sourceRoot":"","sources":["../../src/components/GridsGenerator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC9B,MAAM,sBAAsB,CAAC;AAkB9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzG,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GACzB,UAAU,GACV,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,2BAA2B,CAAC;AAElC,KAAK,kBAAkB,GAAG,gBAAgB,GAAG;IACzC,MAAM,EAAE,mBAAmB,GAAG;QAC1B,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B,CAAC;AAGF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+C/C,CAAC;AACF,eAAe,aAAa,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useRef } from 'react';
|
|
3
3
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
4
4
|
import GridHelper from "./GridHelper.js";
|
|
5
|
-
import
|
|
5
|
+
import AdvancedGrid from "./AdvancedGrid.js";
|
|
6
6
|
import CircuitGrid from "./CircuitGrid.js";
|
|
7
7
|
import ContourGrid from "./ContourGrid.js";
|
|
8
8
|
import FractalGrid from "./FractalGrid.js";
|
|
@@ -18,48 +18,50 @@ import GravWaveGrid from "./GravWaveGrid.js";
|
|
|
18
18
|
import GirihGrid from "./GirihGrid.js";
|
|
19
19
|
import WallpaperGrid from "./WallpaperGrid.js";
|
|
20
20
|
import ReactionDiffusionGrid from "./ReactionDiffusionGrid.js";
|
|
21
|
-
const GridGenerator = ({ config, onObjectReady, onObjectDispose }) => {
|
|
21
|
+
const GridGenerator = ({ config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
22
22
|
// The other branches render components that report themselves; the
|
|
23
23
|
// native <gridHelper> is a plain three object, so this component holds its
|
|
24
24
|
// ref and reports on its behalf. The ref stays null on the other branches,
|
|
25
25
|
// which the hook treats as nothing to report.
|
|
26
26
|
const nativeGridRef = useRef(null);
|
|
27
27
|
useObjectReady(nativeGridRef, config, onObjectReady, onObjectDispose);
|
|
28
|
+
// Grids on the config pattern (listed in GRIDS_ANIMATABLE) take the domain drivers.
|
|
29
|
+
const driven = { id, keyframes, mouseMove };
|
|
28
30
|
switch (config.type) {
|
|
29
31
|
case "basic":
|
|
30
32
|
return _jsx(GridHelper, { ...config, side: 2, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
31
33
|
case "advancedGrid":
|
|
32
|
-
return _jsx(
|
|
34
|
+
return _jsx(AdvancedGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
33
35
|
case "hexGrid":
|
|
34
|
-
return _jsx(HexGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
36
|
+
return _jsx(HexGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
35
37
|
case "circuitGrid":
|
|
36
|
-
return _jsx(CircuitGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
38
|
+
return _jsx(CircuitGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
37
39
|
case "voronoiGrid":
|
|
38
|
-
return _jsx(VoronoiGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
40
|
+
return _jsx(VoronoiGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
39
41
|
case "radarGrid":
|
|
40
|
-
return _jsx(RadarGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
42
|
+
return _jsx(RadarGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
41
43
|
case "moireGrid":
|
|
42
|
-
return _jsx(MoireGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
44
|
+
return _jsx(MoireGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
43
45
|
case "fractalGrid":
|
|
44
|
-
return _jsx(FractalGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
46
|
+
return _jsx(FractalGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
45
47
|
case "contourGrid":
|
|
46
|
-
return _jsx(ContourGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
48
|
+
return _jsx(ContourGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
47
49
|
case "quasiGrid":
|
|
48
|
-
return _jsx(QuasiGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
50
|
+
return _jsx(QuasiGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
49
51
|
case "flowNetGrid":
|
|
50
|
-
return _jsx(FlowNetGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
52
|
+
return _jsx(FlowNetGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
51
53
|
case "chladniGrid":
|
|
52
|
-
return _jsx(ChladniGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
54
|
+
return _jsx(ChladniGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
53
55
|
case "hyperbolicGrid":
|
|
54
|
-
return _jsx(HyperbolicGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
56
|
+
return _jsx(HyperbolicGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
55
57
|
case "gravWaveGrid":
|
|
56
|
-
return _jsx(GravWaveGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
58
|
+
return _jsx(GravWaveGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
57
59
|
case "girihGrid":
|
|
58
|
-
return _jsx(GirihGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
60
|
+
return _jsx(GirihGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
59
61
|
case "wallpaperGrid":
|
|
60
|
-
return _jsx(WallpaperGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
62
|
+
return _jsx(WallpaperGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
61
63
|
case "reactionDiffusionGrid":
|
|
62
|
-
return _jsx(ReactionDiffusionGrid, { config: config, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
64
|
+
return _jsx(ReactionDiffusionGrid, { config: config, ...driven, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose });
|
|
63
65
|
default:
|
|
64
66
|
return _jsx("gridHelper", { ...config, ref: nativeGridRef });
|
|
65
67
|
}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { HexGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface HexGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: HexGridConfig;
|
|
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
|
/**
|
|
9
16
|
* HexGridConfig — the single source of truth for a honeycomb grid instance.
|
|
@@ -11,15 +18,6 @@ export interface HexGridProps extends ObjectReadyProps {
|
|
|
11
18
|
* any preset/serialisation layer, matching `defaultMyGridConfig`.
|
|
12
19
|
*/
|
|
13
20
|
export declare const defaultHexGridConfig: HexGridConfig;
|
|
14
|
-
|
|
15
|
-
* A honeycomb grid on a shader plane.
|
|
16
|
-
*
|
|
17
|
-
* Same knobs as `AdvancedGrid` — `lineMode` / `cellMode` run 0..4 through
|
|
18
|
-
* static, ripple, flow, scan and pulse — applied to a hex lattice instead of a
|
|
19
|
-
* square one, so ripples propagate as hexagons rather than circles. With
|
|
20
|
-
* `displace > 0` and `plateau` on, every hex lifts to its own height and the
|
|
21
|
-
* surface breaks into plates.
|
|
22
|
-
*/
|
|
23
|
-
export declare function HexGrid({ config, groupProps, onObjectReady, onObjectDispose }: HexGridProps): import("react").JSX.Element;
|
|
21
|
+
export declare function HexGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: HexGridProps): import("react").JSX.Element;
|
|
24
22
|
export default HexGrid;
|
|
25
23
|
//# sourceMappingURL=HexGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HexGrid.d.ts","sourceRoot":"","sources":["../../src/components/HexGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"HexGrid.d.ts","sourceRoot":"","sources":["../../src/components/HexGrid.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,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IAClD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,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;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,aA0BlC,CAAC;AAoBF,wBAAgB,OAAO,CAAC,EAAE,MAA6B,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,YAAY,+BA+C5I;AAED,eAAe,OAAO,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 { HexGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <hexGridMaterial> via extend() in HexGridMaterial.ts.
|
|
8
11
|
void HexGridMaterial;
|
|
9
12
|
/**
|
|
@@ -47,26 +50,41 @@ export const defaultHexGridConfig = {
|
|
|
47
50
|
* `displace > 0` and `plateau` on, every hex lifts to its own height and the
|
|
48
51
|
* surface breaks into plates.
|
|
49
52
|
*/
|
|
50
|
-
|
|
53
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
54
|
+
const VARIANT = [];
|
|
55
|
+
/** Computed uniforms (clamps, enum indices, booleans as 0/1). */
|
|
56
|
+
const DERIVE = { plateau: (c) => c.plateau ? 1 : 0 };
|
|
57
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
58
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'plateau'];
|
|
59
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
60
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.hexGrid ?? []).map((p) => p.value));
|
|
61
|
+
export function HexGrid({ config = defaultHexGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
51
62
|
const matRef = useRef(null);
|
|
52
63
|
const rootRef = useRef(null);
|
|
53
64
|
const meshRef = useRef(null);
|
|
54
65
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
55
|
-
|
|
66
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
67
|
+
// and for a keyframe or pointer binding to start from.
|
|
68
|
+
const base = useMemo(() => withConfigDefaults(defaultHexGridConfig, config), [config]);
|
|
69
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
56
70
|
// Plateaus need a dense mesh: the vertical walls between hexes are only as
|
|
57
71
|
// crisp as the tessellation that has to fake them.
|
|
58
72
|
const segs = segments ?? (displace > 0
|
|
59
73
|
? Math.min(512, Math.max(96, Math.ceil(size / Math.max(cellSize, 1e-4)) * 4))
|
|
60
74
|
: 1);
|
|
61
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
62
|
-
const colors = useMemo(() => ({
|
|
63
|
-
line: new THREE.Color(lineColor),
|
|
64
|
-
section: new THREE.Color(sectionColor),
|
|
65
|
-
cell: new THREE.Color(cellColor),
|
|
66
|
-
glow: new THREE.Color(glowColor),
|
|
67
|
-
bg: new THREE.Color(bgColor),
|
|
68
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
69
75
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
70
|
-
|
|
76
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
77
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
78
|
+
const baseRef = useRef(base);
|
|
79
|
+
baseRef.current = base;
|
|
80
|
+
const setMaterial = useCallback((m) => {
|
|
81
|
+
matRef.current = m;
|
|
82
|
+
if (m)
|
|
83
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
84
|
+
}, []);
|
|
85
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
86
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
87
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
88
|
+
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("hexGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, HexGridMaterial.key)] }) }));
|
|
71
89
|
}
|
|
72
90
|
export default HexGrid;
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { HyperbolicGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface HyperbolicGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: HyperbolicGridConfig;
|
|
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
|
/** HyperbolicGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
9
16
|
export declare const defaultHyperbolicGridConfig: HyperbolicGridConfig;
|
|
10
|
-
|
|
11
|
-
* An Escher-style {p,q} tiling of the Poincare disk. A slow Mobius translation glides the tiling through itself, and the tiles shrink without end toward the rim.
|
|
12
|
-
*/
|
|
13
|
-
export declare function HyperbolicGrid({ config, groupProps, onObjectReady, onObjectDispose }: HyperbolicGridProps): import("react").JSX.Element;
|
|
17
|
+
export declare function HyperbolicGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: HyperbolicGridProps): import("react").JSX.Element;
|
|
14
18
|
export default HyperbolicGrid;
|
|
15
19
|
//# sourceMappingURL=HyperbolicGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperbolicGrid.d.ts","sourceRoot":"","sources":["../../src/components/HyperbolicGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"HyperbolicGrid.d.ts","sourceRoot":"","sources":["../../src/components/HyperbolicGrid.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,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,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,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,EAAE,oBA4BzC,CAAC;AAcF,wBAAgB,cAAc,CAAC,EAAE,MAAoC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,mBAAmB,+BA4CjK;AAED,eAAe,cAAc,CAAC"}
|