@3driseai/3drise-viewer 0.1.25 → 0.1.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animationsV2/ClipPlayer.d.ts +16 -0
- package/dist/animationsV2/ClipPlayer.d.ts.map +1 -0
- package/dist/animationsV2/ClipPlayer.js +199 -0
- package/dist/animationsV2/ClipsRuntime.d.ts +150 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -0
- package/dist/animationsV2/ClipsRuntime.js +707 -0
- package/dist/animationsV2/appliers.d.ts +21 -0
- package/dist/animationsV2/appliers.d.ts.map +1 -0
- package/dist/animationsV2/appliers.js +222 -0
- package/dist/animationsV2/clipUtils.d.ts +33 -0
- package/dist/animationsV2/clipUtils.d.ts.map +1 -0
- package/dist/animationsV2/clipUtils.js +164 -0
- package/dist/animationsV2/elementSettings.d.ts +15 -0
- package/dist/animationsV2/elementSettings.d.ts.map +1 -0
- package/dist/animationsV2/elementSettings.js +16 -0
- package/dist/animationsV2/index.d.ts +16 -0
- package/dist/animationsV2/index.d.ts.map +1 -0
- package/dist/animationsV2/index.js +12 -0
- package/dist/animationsV2/nodeTracks.d.ts +13 -0
- package/dist/animationsV2/nodeTracks.d.ts.map +1 -0
- package/dist/animationsV2/nodeTracks.js +165 -0
- package/dist/animationsV2/normalize.d.ts +4 -0
- package/dist/animationsV2/normalize.d.ts.map +1 -0
- package/dist/animationsV2/normalize.js +60 -0
- package/dist/animationsV2/sequenceUtils.d.ts +98 -0
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -0
- package/dist/animationsV2/sequenceUtils.js +220 -0
- package/dist/animationsV2/types.d.ts +115 -0
- package/dist/animationsV2/types.d.ts.map +1 -0
- package/dist/animationsV2/types.js +8 -0
- package/dist/api/sceneHandle.d.ts +56 -17
- package/dist/api/sceneHandle.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +154 -77
- 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/CameraController.d.ts.map +1 -1
- package/dist/components/CameraController.js +0 -44
- 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/Clouds.d.ts.map +1 -1
- package/dist/components/Clouds.js +0 -34
- 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/CreatedObject.d.ts.map +1 -1
- package/dist/components/CreatedObject.js +19 -1
- 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/EnvironmentManager.js +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 +4 -1
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +57 -3
- package/dist/components/Ocean.d.ts.map +1 -1
- package/dist/components/Ocean.js +0 -63
- 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.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +19 -4
- package/dist/components/SkyController.d.ts.map +1 -1
- package/dist/components/SkyController.js +0 -39
- 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/Stars.d.ts.map +1 -1
- package/dist/components/Stars.js +3 -47
- 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/TerrainSurface.d.ts.map +1 -1
- package/dist/components/terrain/TerrainSurface.js +0 -5
- 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/VolumetricCloudsPass.js +0 -6
- 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 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -2
- 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/useInteraction.d.ts +6 -7
- package/dist/hooks/useInteraction.d.ts.map +1 -1
- package/dist/hooks/useInteraction.js +87 -268
- package/dist/hooks/useLandscapeMaps.d.ts +1 -1
- package/dist/hooks/useLandscapeMaps.d.ts.map +1 -1
- package/dist/hooks/useObjectAnimation.d.ts.map +1 -1
- package/dist/hooks/useObjectAnimation.js +0 -2
- package/dist/hooks/useOceanMaterial.d.ts +1 -1
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.js +0 -5
- package/dist/hooks/useRuntimeSettings.d.ts +1 -1
- package/dist/hooks/useRuntimeSettings.js +1 -1
- package/dist/hooks/useThunder.d.ts +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/interactions/index.d.ts +4 -0
- package/dist/interactions/index.d.ts.map +1 -0
- package/dist/interactions/index.js +1 -0
- package/dist/interactions/runner.d.ts +24 -0
- package/dist/interactions/runner.d.ts.map +1 -0
- package/dist/interactions/runner.js +46 -0
- 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 +3 -0
- package/dist/operations/catalogue/displayImage.d.ts.map +1 -0
- package/dist/operations/catalogue/displayImage.js +40 -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 +3 -0
- package/dist/operations/catalogue/fade.d.ts.map +1 -0
- package/dist/operations/catalogue/fade.js +45 -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 +3 -0
- package/dist/operations/catalogue/focus.d.ts.map +1 -0
- package/dist/operations/catalogue/focus.js +23 -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 +3 -0
- package/dist/operations/catalogue/glow.d.ts.map +1 -0
- package/dist/operations/catalogue/glow.js +50 -0
- 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/materialFx.d.ts +6 -0
- package/dist/operations/catalogue/materialFx.d.ts.map +1 -0
- package/dist/operations/catalogue/materialFx.js +13 -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 +3 -0
- package/dist/operations/catalogue/moveToFront.d.ts.map +1 -0
- package/dist/operations/catalogue/moveToFront.js +26 -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 +3 -0
- package/dist/operations/catalogue/visibility.d.ts.map +1 -0
- package/dist/operations/catalogue/visibility.js +25 -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 +3 -0
- package/dist/operations/catalogue/zoom.d.ts.map +1 -0
- package/dist/operations/catalogue/zoom.js +33 -0
- package/dist/operations/index.d.ts +7 -0
- package/dist/operations/index.d.ts.map +1 -0
- package/dist/operations/index.js +6 -0
- 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 +16 -0
- package/dist/operations/registry.d.ts.map +1 -0
- package/dist/operations/registry.js +63 -0
- package/dist/operations/runtime.d.ts +60 -0
- package/dist/operations/runtime.d.ts.map +1 -0
- package/dist/operations/runtime.js +317 -0
- package/dist/operations/types.d.ts +122 -0
- package/dist/operations/types.d.ts.map +1 -0
- package/dist/operations/types.js +9 -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 +3 -0
- package/dist/operations/useOperationsRuntime.d.ts.map +1 -0
- package/dist/operations/useOperationsRuntime.js +69 -0
- 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,11 +1,34 @@
|
|
|
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 { BubblesPointsMaterial } from '@3driseai/3drise-core';
|
|
8
|
+
import { BubblesPointsMaterial, DEFAULT_GENERATIVE_EFFECTS, EFFECTS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
9
|
const MAX_BUBBLES = 256;
|
|
8
|
-
|
|
10
|
+
/** Nothing rebuilds the pool: it is a fixed ring buffer of MAX_BUBBLES. */
|
|
11
|
+
const STRUCTURAL = [];
|
|
12
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what the push point applies. */
|
|
13
|
+
const ANIMATABLE = new Set(EFFECTS_ANIMATABLE.bubbles.map((p) => p.value));
|
|
14
|
+
/** The single push point: every config knob that lives on the material reaches it here. */
|
|
15
|
+
function applyConfig(material, c) {
|
|
16
|
+
const u = material.uniforms;
|
|
17
|
+
const [cA, cB, cC] = c.colors;
|
|
18
|
+
u.uColorA.value.set(cA);
|
|
19
|
+
u.uColorB.value.set(cB);
|
|
20
|
+
u.uColorC.value.set(cC);
|
|
21
|
+
u.uScale.value = (c.scale) / 10;
|
|
22
|
+
u.uOpacity.value = c.opacity;
|
|
23
|
+
u.uIridescence.value = c.iridescence;
|
|
24
|
+
// speed is integrated into uTime on the CPU (see useFrame), so the shader's
|
|
25
|
+
// uTime * uSpeed never jumps when the speed changes
|
|
26
|
+
u.uSpeed.value = 1;
|
|
27
|
+
}
|
|
28
|
+
const Bubbles = ({ config, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) => {
|
|
29
|
+
const cfg = useMemo(() => withConfigDefaults(DEFAULT_GENERATIVE_EFFECTS.bubbles, config), [config]);
|
|
30
|
+
// the knobs read per frame by the simulation, from the last merged config
|
|
31
|
+
const cur = useRef(cfg);
|
|
9
32
|
const positions = useMemo(() => new Float32Array(MAX_BUBBLES * 3), []);
|
|
10
33
|
const velocities = useMemo(() => new Float32Array(MAX_BUBBLES * 3), []);
|
|
11
34
|
const ages = useMemo(() => new Float32Array(MAX_BUBBLES), []);
|
|
@@ -31,28 +54,25 @@ const Bubbles = ({ config, onObjectReady, onObjectDispose }) => {
|
|
|
31
54
|
m.blending = THREE.NormalBlending;
|
|
32
55
|
return m;
|
|
33
56
|
}, []);
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
const u = material.uniforms;
|
|
36
|
-
const [cA, cB, cC] = config.colors ?? ['#aaccff', '#ffaadd', '#aaffcc'];
|
|
37
|
-
u.uColorA.value.set(cA);
|
|
38
|
-
u.uColorB.value.set(cB);
|
|
39
|
-
u.uColorC.value.set(cC);
|
|
40
|
-
u.uScale.value = (config.scale ?? 1) / 10;
|
|
41
|
-
u.uOpacity.value = config.opacity ?? 0.6;
|
|
42
|
-
u.uIridescence.value = config.iridescence ?? 0.7;
|
|
43
|
-
u.uSpeed.value = config.speed ?? 1;
|
|
44
|
-
}, [config.colors, config.scale, config.opacity, config.iridescence, config.speed, material]);
|
|
45
57
|
useEffect(() => () => { geometry.dispose(); material.dispose(); }, [geometry, material]);
|
|
46
58
|
const spawnAccum = useRef(0);
|
|
47
59
|
const rootRef = useRef(null);
|
|
48
60
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
61
|
+
const push = useCallback((merged) => {
|
|
62
|
+
cur.current = merged;
|
|
63
|
+
applyConfig(material, merged);
|
|
64
|
+
}, [material]);
|
|
65
|
+
useLayoutEffect(() => { push(cfg); }, [push, cfg]);
|
|
66
|
+
useConfigDriver({ rootRef, id, family: 'effects', base: cfg, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
49
67
|
useFrame((state, delta) => {
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
const
|
|
68
|
+
const c = cur.current;
|
|
69
|
+
const speed = c.speed;
|
|
70
|
+
// one integrated clock drives the shader and the CPU wobble, so speed changes never jump
|
|
71
|
+
const t = (material.uniforms.uTime.value += Math.min(delta, 0.1) * speed);
|
|
72
|
+
const scale = c.scale;
|
|
73
|
+
const spawnRate = c.spawnRate;
|
|
74
|
+
const floatSpeed = (c.floatSpeed) * speed;
|
|
75
|
+
const lifetimeMs = c.lifetimeMs;
|
|
56
76
|
spawnAccum.current += spawnRate * delta;
|
|
57
77
|
let toSpawn = Math.floor(spawnAccum.current);
|
|
58
78
|
spawnAccum.current -= toSpawn;
|
|
@@ -61,7 +81,7 @@ const Bubbles = ({ config, onObjectReady, onObjectDispose }) => {
|
|
|
61
81
|
while (toSpawn > 0 && scan < MAX_BUBBLES) {
|
|
62
82
|
if (alive[scan] === 0) {
|
|
63
83
|
const base = scan * 3;
|
|
64
|
-
// Spawn at local origin with small lateral jitter
|
|
84
|
+
// Spawn at local origin with small lateral jitter - parent group's
|
|
65
85
|
// transform places the system in world space.
|
|
66
86
|
positions[base + 0] = (Math.random() - 0.5) * 0.2 * scale;
|
|
67
87
|
positions[base + 1] = (Math.random() - 0.5) * 0.1 * scale;
|
|
@@ -90,7 +110,7 @@ const Bubbles = ({ config, onObjectReady, onObjectDispose }) => {
|
|
|
90
110
|
}
|
|
91
111
|
velocities[base + 0] *= 0.99;
|
|
92
112
|
velocities[base + 2] *= 0.99;
|
|
93
|
-
const wobble = Math.sin(
|
|
113
|
+
const wobble = Math.sin(t * 1.3 + phases[j]) * 0.05;
|
|
94
114
|
positions[base + 0] += velocities[base + 0] * delta + wobble * delta;
|
|
95
115
|
positions[base + 1] += velocities[base + 1] * delta;
|
|
96
116
|
positions[base + 2] += velocities[base + 2] * delta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../src/components/CameraController.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"CameraController.d.ts","sourceRoot":"","sources":["../../src/components/CameraController.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,UAAU,qBAAsB,SAAQ,gBAAgB;IACpD,QAAQ,EAAE,WAAW,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;CAC/C;AAGD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+G5D,CAAC;AACF,eAAe,gBAAgB,CAAC"}
|
|
@@ -4,7 +4,6 @@ import { useEffect, useRef } from 'react';
|
|
|
4
4
|
import { useFrame, useThree } from '@react-three/fiber';
|
|
5
5
|
import { useCameraAnimation } from '../hooks/useCameraAnimation.js';
|
|
6
6
|
import { cameraManager } from '../utils/CameraSingleton.js';
|
|
7
|
-
import { useAnimationEvents } from '../hooks/useAnimationEvents.js';
|
|
8
7
|
import { usePathAnimation } from '../hooks/usePathAnimation.js';
|
|
9
8
|
import { OrbitControls } from "@react-three/drei";
|
|
10
9
|
import { useRuntimeSettings } from '../hooks/useRuntimeSettings.js';
|
|
@@ -103,49 +102,6 @@ export const CameraController = ({ enableAutoAnimation = true, animationDuration
|
|
|
103
102
|
cam.updateProjectionMatrix();
|
|
104
103
|
}
|
|
105
104
|
}, [fov, near, far]);
|
|
106
|
-
// Handle animation events (step-based animations)
|
|
107
|
-
useAnimationEvents({
|
|
108
|
-
onStepStart: (event) => {
|
|
109
|
-
if (event.step?.transitions) {
|
|
110
|
-
const stepDuration = event.step.duration ?? 1; // 0 = instant (actions)
|
|
111
|
-
event.step.transitions.forEach((transition) => {
|
|
112
|
-
const { state, properties, pathId } = transition;
|
|
113
|
-
if (state === 'camera') {
|
|
114
|
-
isInAnimatedTransition.current = true;
|
|
115
|
-
if (pathId) {
|
|
116
|
-
const offset = camera
|
|
117
|
-
? [camera.position.x, camera.position.y, camera.position.z]
|
|
118
|
-
: [0, 0, 0];
|
|
119
|
-
startPathAnimation(pathId, stepDuration, {
|
|
120
|
-
offset,
|
|
121
|
-
applyRotation: false
|
|
122
|
-
});
|
|
123
|
-
transformAnimationProgress.current = 0;
|
|
124
|
-
}
|
|
125
|
-
const startSettings = properties.from ?
|
|
126
|
-
{
|
|
127
|
-
position: properties.from.position,
|
|
128
|
-
// orientation: properties.from.orientation,
|
|
129
|
-
} : {
|
|
130
|
-
position: camera.position,
|
|
131
|
-
// orientation: camera.rotation,
|
|
132
|
-
};
|
|
133
|
-
const targetSettings = properties.to;
|
|
134
|
-
// startSettings.position && camera.position.set(startSettings.position[0], startSettings.position[1], startSettings.position[2]);
|
|
135
|
-
// camera.rotation.set(startSettings.orientation[0], startSettings.orientation[1], startSettings.orientation[2]);
|
|
136
|
-
animateCamera(targetSettings, stepDuration, event.step?.ease, properties.to.target)
|
|
137
|
-
.then(() => {
|
|
138
|
-
isInAnimatedTransition.current = false;
|
|
139
|
-
if (properties.to.target) {
|
|
140
|
-
controlsRef.current?.target.set(properties.to.target[0], properties.to.target[1], properties.to.target[2]);
|
|
141
|
-
}
|
|
142
|
-
;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
105
|
// Frame loop for path animations and mouse handlers
|
|
150
106
|
useFrame((state, delta) => {
|
|
151
107
|
if (isPathAnimating()) {
|
|
@@ -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 { ChladniGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface ChladniGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: ChladniGridConfig;
|
|
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
|
/** ChladniGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
9
16
|
export declare const defaultChladniGridConfig: ChladniGridConfig;
|
|
10
|
-
|
|
11
|
-
* Chladni plates: the nodal lines of a standing wave on a square plate, with sand settling on them, drifting slowly between two neighbouring resonances.
|
|
12
|
-
*/
|
|
13
|
-
export declare function ChladniGrid({ config, groupProps, onObjectReady, onObjectDispose }: ChladniGridProps): import("react").JSX.Element;
|
|
17
|
+
export declare function ChladniGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: ChladniGridProps): import("react").JSX.Element;
|
|
14
18
|
export default ChladniGrid;
|
|
15
19
|
//# sourceMappingURL=ChladniGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChladniGrid.d.ts","sourceRoot":"","sources":["../../src/components/ChladniGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChladniGrid.d.ts","sourceRoot":"","sources":["../../src/components/ChladniGrid.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,iBA6BtC,CAAC;AAcF,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"}
|
|
@@ -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 { ChladniGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <chladniGridMaterial> via extend().
|
|
8
11
|
void ChladniGridMaterial;
|
|
9
12
|
/** ChladniGridConfig defaults. Must match the catalog entry in grid-defaults.json exactly. */
|
|
@@ -40,23 +43,38 @@ export const defaultChladniGridConfig = {
|
|
|
40
43
|
/**
|
|
41
44
|
* Chladni plates: the nodal lines of a standing wave on a square plate, with sand settling on them, drifting slowly between two neighbouring resonances.
|
|
42
45
|
*/
|
|
43
|
-
|
|
46
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
47
|
+
const VARIANT = ['modeN', 'modeM', 'morph', 'grain'];
|
|
48
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
49
|
+
const DERIVE = {};
|
|
50
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
51
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'modeN', 'modeM'];
|
|
52
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
53
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.chladniGrid ?? []).map((p) => p.value));
|
|
54
|
+
export function ChladniGrid({ config = defaultChladniGridConfig, 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(defaultChladniGridConfig, config), [config]);
|
|
62
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
49
63
|
// the displacement is the standing wave itself, so the mesh has to resolve every mode
|
|
50
64
|
const segs = segments ?? (displace > 0 ? Math.min(512, Math.max(96, Math.ceil(size / Math.max(cellSize, 1e-4)) * 48)) : 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("chladniGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, ChladniGridMaterial.key)] }) }));
|
|
61
79
|
}
|
|
62
80
|
export default ChladniGrid;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { CircuitGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface CircuitGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: CircuitGridConfig;
|
|
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
|
/** CircuitGridConfig — the single source of truth for a circuit grid instance. */
|
|
9
16
|
export declare const defaultCircuitGridConfig: CircuitGridConfig;
|
|
10
|
-
|
|
11
|
-
* A Truchet circuit board on a shader plane.
|
|
12
|
-
*
|
|
13
|
-
* Each tile carries two quarter-arcs and half the tiles are mirrored, which is
|
|
14
|
-
* what chains them into long meandering traces instead of disconnected curves.
|
|
15
|
-
* `lineMode` 2 sends light pulses travelling along those traces; the other
|
|
16
|
-
* modes match the rest of the grid family (static, ripple, scan, pulse).
|
|
17
|
-
* `chipChance` sprinkles IC packages across the board and `sectionSize` lays
|
|
18
|
-
* straight buses over the weave.
|
|
19
|
-
*/
|
|
20
|
-
export declare function CircuitGrid({ config, groupProps, onObjectReady, onObjectDispose }: CircuitGridProps): import("react").JSX.Element;
|
|
17
|
+
export declare function CircuitGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: CircuitGridProps): import("react").JSX.Element;
|
|
21
18
|
export default CircuitGrid;
|
|
22
19
|
//# sourceMappingURL=CircuitGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitGrid.d.ts","sourceRoot":"","sources":["../../src/components/CircuitGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"CircuitGrid.d.ts","sourceRoot":"","sources":["../../src/components/CircuitGrid.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,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,EAAE,iBA4BtC,CAAC;AAqBF,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BA6CxJ;AAED,eAAe,WAAW,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 { CircuitGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <circuitGridMaterial> via extend().
|
|
8
11
|
void CircuitGridMaterial;
|
|
9
12
|
/** CircuitGridConfig — the single source of truth for a circuit grid instance. */
|
|
@@ -46,24 +49,39 @@ export const defaultCircuitGridConfig = {
|
|
|
46
49
|
* `chipChance` sprinkles IC packages across the board and `sectionSize` lays
|
|
47
50
|
* straight buses over the weave.
|
|
48
51
|
*/
|
|
49
|
-
|
|
52
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
53
|
+
const VARIANT = ['powered', 'chipChance', 'padSize'];
|
|
54
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
55
|
+
const DERIVE = {};
|
|
56
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
57
|
+
const STRUCTURAL = [...GRID_STRUCTURAL];
|
|
58
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
59
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.circuitGrid ?? []).map((p) => p.value));
|
|
60
|
+
export function CircuitGrid({ config = defaultCircuitGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
50
61
|
const matRef = useRef(null);
|
|
51
62
|
const rootRef = useRef(null);
|
|
52
63
|
const meshRef = useRef(null);
|
|
53
64
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
54
|
-
|
|
65
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
66
|
+
// and for a keyframe or pointer binding to start from.
|
|
67
|
+
const base = useMemo(() => withConfigDefaults(defaultCircuitGridConfig, config), [config]);
|
|
68
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
55
69
|
const segs = segments ?? (displace > 0
|
|
56
70
|
? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
|
|
57
71
|
: 1);
|
|
58
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
59
|
-
const colors = useMemo(() => ({
|
|
60
|
-
line: new THREE.Color(lineColor),
|
|
61
|
-
section: new THREE.Color(sectionColor),
|
|
62
|
-
cell: new THREE.Color(cellColor),
|
|
63
|
-
glow: new THREE.Color(glowColor),
|
|
64
|
-
bg: new THREE.Color(bgColor),
|
|
65
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
66
72
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
67
|
-
|
|
73
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
74
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
75
|
+
const baseRef = useRef(base);
|
|
76
|
+
baseRef.current = base;
|
|
77
|
+
const setMaterial = useCallback((m) => {
|
|
78
|
+
matRef.current = m;
|
|
79
|
+
if (m)
|
|
80
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
81
|
+
}, []);
|
|
82
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
83
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
84
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
85
|
+
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("circuitGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, CircuitGridMaterial.key)] }) }));
|
|
68
86
|
}
|
|
69
87
|
export default CircuitGrid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Clouds.d.ts","sourceRoot":"","sources":["../../src/components/Clouds.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Clouds.d.ts","sourceRoot":"","sources":["../../src/components/Clouds.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAO7D,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACjD,QAAQ,EAAE,qBAAqB,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B;AAmFD,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAoJjC,CAAC;AACF,eAAe,MAAM,CAAC"}
|
|
@@ -4,7 +4,6 @@ import { useRef, useCallback } from 'react';
|
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
import { useThree, useFrame } from '@react-three/fiber';
|
|
6
6
|
import { useSkySystem } from '../hooks/useSkySystem.js';
|
|
7
|
-
import { useAnimationEvents } from '../hooks/useAnimationEvents.js';
|
|
8
7
|
import { useNumericAnimation } from '../hooks/useNumericAnimation.js';
|
|
9
8
|
import { calculateTimeProgress, applyEasing, gsapEasingMap, interpolateValue, interpolateMouseMoveProperty, } from '@3driseai/3drise-core';
|
|
10
9
|
const CLOUD_COLORS = {
|
|
@@ -142,39 +141,6 @@ const Clouds = ({ settings, timeSettings = defaultTimeSettings, onObjectReady, o
|
|
|
142
141
|
onTimeUpdate: handleTimeUpdate,
|
|
143
142
|
enabled: visible,
|
|
144
143
|
});
|
|
145
|
-
// Legacy sequence-driven `speed`/`scale` anims via `useAnimationEvents`
|
|
146
|
-
useAnimationEvents({
|
|
147
|
-
onStepStart: (event) => {
|
|
148
|
-
if (!event.step?.transitions)
|
|
149
|
-
return;
|
|
150
|
-
for (const transition of event.step.transitions) {
|
|
151
|
-
if (transition.state !== 'clouds' || !meshRef.current)
|
|
152
|
-
continue;
|
|
153
|
-
const toProps = transition.properties.to || {};
|
|
154
|
-
const fromProps = transition.properties.from || {};
|
|
155
|
-
if (toProps.visible !== undefined)
|
|
156
|
-
meshRef.current.visible = toProps.visible;
|
|
157
|
-
const KEYS = ['speed', 'scale'];
|
|
158
|
-
const from = {};
|
|
159
|
-
const to = {};
|
|
160
|
-
for (const k of KEYS) {
|
|
161
|
-
const toVal = toProps[k];
|
|
162
|
-
if (toVal === undefined)
|
|
163
|
-
continue;
|
|
164
|
-
to[k] = toVal;
|
|
165
|
-
const sourceFallback = k === 'speed' ? baseSpeed : scale;
|
|
166
|
-
from[k] = fromProps[k] ?? sourceFallback;
|
|
167
|
-
}
|
|
168
|
-
if (Object.keys(to).length > 0) {
|
|
169
|
-
animateNumeric(from, to, (updated) => {
|
|
170
|
-
numericOverrideRef.current = { ...numericOverrideRef.current, ...updated };
|
|
171
|
-
}, () => {
|
|
172
|
-
numericOverrideRef.current = null;
|
|
173
|
-
}, event.step?.duration);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
144
|
useFrame((state) => {
|
|
179
145
|
const mesh = meshRef.current;
|
|
180
146
|
if (!mesh || !mesh.visible || !mesh.material)
|
|
@@ -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 { VolumetricCloudsSettings } from '
|
|
4
|
+
import type { VolumetricCloudsSettings } from '@3driseai/3drise-core';
|
|
5
5
|
export interface CloudsGeneratorProps extends ObjectReadyProps {
|
|
6
6
|
/** Accepts a partial or older-shaped blob: a published scene loads whatever was
|
|
7
7
|
* saved the day it was authored, and every block is merged over its defaults. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { CLOUD_DECK_DEFAULTS, normalizeCirrus, normalizeCloudDeck, normalizeCloudQuality, normalizeThunder } from '
|
|
3
|
+
import { CLOUD_DECK_DEFAULTS, normalizeCirrus, normalizeCloudDeck, normalizeCloudQuality, normalizeThunder } from '@3driseai/3drise-core';
|
|
4
4
|
import Cumulus from './volumetricClouds/Cumulus.js';
|
|
5
5
|
import Stratocumulus from './volumetricClouds/Stratocumulus.js';
|
|
6
6
|
import Cumulonimbus from './volumetricClouds/Cumulonimbus.js';
|
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
import type { ThreeElements } from '@react-three/fiber';
|
|
2
2
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
3
|
import type { ContourGridConfig } from '../types/gridConfigs';
|
|
4
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
5
|
export interface ContourGridProps extends ObjectReadyProps {
|
|
5
6
|
config?: ContourGridConfig;
|
|
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
|
/** ContourGridConfig — the single source of truth for a contour grid instance. */
|
|
9
16
|
export declare const defaultContourGridConfig: ContourGridConfig;
|
|
10
|
-
|
|
11
|
-
* Topographic iso-lines over a drifting terrain field — minor contours every
|
|
12
|
-
* step, index contours every `sectionSize`.
|
|
13
|
-
*
|
|
14
|
-
* `displace` is literal here rather than decorative: the vertex stage raises the
|
|
15
|
-
* surface to exactly the elevation the contours describe, because both stages
|
|
16
|
-
* evaluate the same terrain function. That is also why the two must stay in
|
|
17
|
-
* sync — any divergence slides the lines off the landform they describe.
|
|
18
|
-
*
|
|
19
|
-
* `cellSize` is the horizontal scale of the terrain, so it is much larger than
|
|
20
|
-
* on the lattice grids; `roughness` runs from rolling to craggy and `warp`
|
|
21
|
-
* bends the contours into ridges and valleys.
|
|
22
|
-
*/
|
|
23
|
-
export declare function ContourGrid({ config, groupProps, onObjectReady, onObjectDispose }: ContourGridProps): import("react").JSX.Element;
|
|
17
|
+
export declare function ContourGrid({ config, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }: ContourGridProps): import("react").JSX.Element;
|
|
24
18
|
export default ContourGrid;
|
|
25
19
|
//# sourceMappingURL=ContourGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContourGrid.d.ts","sourceRoot":"","sources":["../../src/components/ContourGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ContourGrid.d.ts","sourceRoot":"","sources":["../../src/components/ContourGrid.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,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,EAAE,iBA4BtC,CAAC;AAwBF,wBAAgB,WAAW,CAAC,EAAE,MAAiC,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,gBAAgB,+BA+CxJ;AAED,eAAe,WAAW,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 { ContourGridMaterial, GRIDS_ANIMATABLE } from '@3driseai/3drise-core';
|
|
7
10
|
// Side-effect import registers <contourGridMaterial> via extend().
|
|
8
11
|
void ContourGridMaterial;
|
|
9
12
|
/** ContourGridConfig — the single source of truth for a contour grid instance. */
|
|
@@ -49,26 +52,41 @@ export const defaultContourGridConfig = {
|
|
|
49
52
|
* on the lattice grids; `roughness` runs from rolling to craggy and `warp`
|
|
50
53
|
* bends the contours into ridges and valleys.
|
|
51
54
|
*/
|
|
52
|
-
|
|
55
|
+
/** This grid's own uniforms (u_<key>), pushed by applyGridConfig beside the shared surface knobs. */
|
|
56
|
+
const VARIANT = ['levels', 'roughness', 'warp'];
|
|
57
|
+
/** No computed uniforms: every knob maps straight to its u_<key>. */
|
|
58
|
+
const DERIVE = {};
|
|
59
|
+
/** Knobs that rebuild the plane or pick a mode: they change on commit, never through the live path. */
|
|
60
|
+
const STRUCTURAL = [...GRID_STRUCTURAL, 'levels'];
|
|
61
|
+
/** Knobs a keyframe or pointer binding may drive per frame — exactly what applyGridConfig pushes. */
|
|
62
|
+
const ANIMATABLE = new Set((GRIDS_ANIMATABLE.contourGrid ?? []).map((p) => p.value));
|
|
63
|
+
export function ContourGrid({ config = defaultContourGridConfig, groupProps, id, keyframes, mouseMove, onObjectReady, onObjectDispose }) {
|
|
53
64
|
const matRef = useRef(null);
|
|
54
65
|
const rootRef = useRef(null);
|
|
55
66
|
const meshRef = useRef(null);
|
|
56
67
|
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
57
|
-
|
|
68
|
+
// The committed config over this grid's defaults: every knob has a value to render
|
|
69
|
+
// and for a keyframe or pointer binding to start from.
|
|
70
|
+
const base = useMemo(() => withConfigDefaults(defaultContourGridConfig, config), [config]);
|
|
71
|
+
const { cellSize, size, segments, flat, displace, followMouse, reveal, revealDuration } = base;
|
|
58
72
|
// Terrain needs a far denser mesh than the lattice grids: the silhouette is
|
|
59
73
|
// the whole point, and it is only as good as the tessellation carrying it.
|
|
60
74
|
const segs = segments ?? (displace > 0
|
|
61
75
|
? Math.min(384, Math.max(128, Math.ceil(size / Math.max(cellSize, 1e-4)) * 48))
|
|
62
76
|
: 1);
|
|
63
|
-
const fade = fadeDistance ?? size * 0.5;
|
|
64
|
-
const colors = useMemo(() => ({
|
|
65
|
-
line: new THREE.Color(lineColor),
|
|
66
|
-
section: new THREE.Color(sectionColor),
|
|
67
|
-
cell: new THREE.Color(cellColor),
|
|
68
|
-
glow: new THREE.Color(glowColor),
|
|
69
|
-
bg: new THREE.Color(bgColor),
|
|
70
|
-
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
71
77
|
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
72
|
-
|
|
78
|
+
// One push point for every uniform the config owns: the committed config when the
|
|
79
|
+
// material mounts or the config commits, the merged one while anything overrides it.
|
|
80
|
+
const baseRef = useRef(base);
|
|
81
|
+
baseRef.current = base;
|
|
82
|
+
const setMaterial = useCallback((m) => {
|
|
83
|
+
matRef.current = m;
|
|
84
|
+
if (m)
|
|
85
|
+
applyGridConfig(m, baseRef.current, VARIANT, DERIVE);
|
|
86
|
+
}, []);
|
|
87
|
+
useLayoutEffect(() => { applyGridConfig(matRef.current, base, VARIANT, DERIVE); }, [base]);
|
|
88
|
+
const push = useCallback((merged) => applyGridConfig(matRef.current, merged, VARIANT, DERIVE), []);
|
|
89
|
+
useConfigDriver({ rootRef, id, family: 'grids', base, structural: STRUCTURAL, allowed: ANIMATABLE, keyframes, mouseMove, push });
|
|
90
|
+
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("contourGridMaterial", { ref: setMaterial, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide }, ContourGridMaterial.key)] }) }));
|
|
73
91
|
}
|
|
74
92
|
export default ContourGrid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatedObject.d.ts","sourceRoot":"","sources":["../../src/components/CreatedObject.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreatedObject.d.ts","sourceRoot":"","sources":["../../src/components/CreatedObject.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAWnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,UAAU,kBAAmB,SAAQ,gBAAgB;IACjD,aAAa,EAAE,qBAAqB,CAAC;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CACpH;AAKD,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAsG9C,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useRef, useEffect, useState, useReducer, memo } from "react";
|
|
2
|
+
import { useRef, useEffect, useState, useReducer, memo, useContext } from "react";
|
|
3
|
+
import { ObjectHoverContext } from "../interactions/runner.js";
|
|
3
4
|
import { ModelMaterialPassContext } from "./ModelMaterialPassContext.js";
|
|
4
5
|
import { DEFAULT_EDGES_SETTINGS } from "@3driseai/3drise-core";
|
|
5
6
|
import { useMaterialApplication } from "../hooks/useMaterialApplication.js";
|
|
@@ -12,11 +13,16 @@ import AnimatedObject from "./AnimatedObject.js";
|
|
|
12
13
|
import { useFrameEffects } from "../hooks/useFrameEffects.js";
|
|
13
14
|
import { useObjectEdges } from "../hooks/useObjectEdges.js";
|
|
14
15
|
import { useObjectReady } from "../hooks/useObjectReady.js";
|
|
16
|
+
/** One hovered part of an object: the intersected mesh (+ instance). */
|
|
17
|
+
const hoverKey = (e) => `${e.object?.uuid}/${e.instanceId ?? ''}`;
|
|
15
18
|
const CreatedObject = memo(({ createdObject, children, shouldApply3driseMaterial = true, onObjectReady, onObjectDispose, handleObjectClick, }) => {
|
|
16
19
|
const isSelected = false;
|
|
17
20
|
// const isSelected = useObjectSelection(createdObject.id);
|
|
18
21
|
// const { handleObjectClick: contextHandleObjectClick } = useSceneClick();
|
|
19
22
|
const meshRef = useRef(null);
|
|
23
|
+
// 'mouseEnter' / 'mouseLeave' interactions (ObjectsRenderer).
|
|
24
|
+
const onHover = useContext(ObjectHoverContext);
|
|
25
|
+
const hoveredPartsRef = useRef(new Set());
|
|
20
26
|
const transformRef = useRef(null);
|
|
21
27
|
// const baseColorRef = useRef<string>(("color" in createdObject.materialSettings && createdObject.materialSettings.color) || '#ffffff');
|
|
22
28
|
// const [hovered, setHovered] = useState(false);
|
|
@@ -67,6 +73,14 @@ const CreatedObject = memo(({ createdObject, children, shouldApply3driseMaterial
|
|
|
67
73
|
// Only handle if this is the actual mesh group, not a child
|
|
68
74
|
if (e.eventObject !== meshRef.current)
|
|
69
75
|
return;
|
|
76
|
+
// R3F fires enter / leave on this group once per hovered DESCENDANT (and per
|
|
77
|
+
// intersection), so a model with overlapping meshes fires several at once.
|
|
78
|
+
// Track the hovered parts and report only the first enter / last leave —
|
|
79
|
+
// otherwise two-state effects (glow, fade…) toggle on and straight back off.
|
|
80
|
+
const wasHovered = hoveredPartsRef.current.size > 0;
|
|
81
|
+
hoveredPartsRef.current.add(hoverKey(e));
|
|
82
|
+
if (!wasHovered)
|
|
83
|
+
onHover?.(createdObject, meshRef.current, 'mouseEnter');
|
|
70
84
|
if (createdObject.type === 'particles' || createdObject.type === 'gallery')
|
|
71
85
|
return;
|
|
72
86
|
// e.stopPropagation();
|
|
@@ -79,6 +93,10 @@ const CreatedObject = memo(({ createdObject, children, shouldApply3driseMaterial
|
|
|
79
93
|
// Only handle if this is the actual mesh group, not a child
|
|
80
94
|
if (e.eventObject !== meshRef.current)
|
|
81
95
|
return;
|
|
96
|
+
hoveredPartsRef.current.delete(hoverKey(e));
|
|
97
|
+
if (hoveredPartsRef.current.size > 0)
|
|
98
|
+
return; // still over another part of this object
|
|
99
|
+
onHover?.(createdObject, meshRef.current, 'mouseLeave');
|
|
82
100
|
if (createdObject.type === 'particles' || createdObject.type === 'gallery')
|
|
83
101
|
return;
|
|
84
102
|
handlePointerLeave();
|