@3driseai/3drise-viewer 0.1.29 → 0.1.31
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.map +1 -1
- package/dist/animationsV2/ClipPlayer.js +14 -12
- package/dist/animationsV2/ClipsRuntime.d.ts +13 -0
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +115 -4
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +21 -2
- package/dist/animationsV2/clipUtils.d.ts.map +1 -1
- package/dist/animationsV2/clipUtils.js +5 -1
- package/dist/animationsV2/sequenceUtils.d.ts +5 -0
- package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
- package/dist/animationsV2/sequenceUtils.js +14 -5
- package/dist/animationsV2/sunSystemLive.d.ts +12 -0
- package/dist/animationsV2/sunSystemLive.d.ts.map +1 -0
- package/dist/animationsV2/sunSystemLive.js +8 -0
- package/dist/animationsV2/types.d.ts +6 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/api/sceneHandle.d.ts +3 -1
- package/dist/api/sceneHandle.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +2 -2
- package/dist/components/AdaptiveResolution.d.ts +9 -0
- package/dist/components/AdaptiveResolution.d.ts.map +1 -0
- package/dist/components/AdaptiveResolution.js +61 -0
- package/dist/components/CameraController.d.ts.map +1 -1
- package/dist/components/CameraController.js +24 -7
- package/dist/components/EffectsGenerator.d.ts.map +1 -1
- package/dist/components/EffectsGenerator.js +43 -38
- package/dist/components/GeometryShape.d.ts.map +1 -1
- package/dist/components/GeometryShape.js +22 -2
- package/dist/components/MoonDisc.d.ts.map +1 -1
- package/dist/components/MoonDisc.js +2 -1
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +6 -17
- package/dist/components/OceanBuilder.d.ts +4 -1
- package/dist/components/OceanBuilder.d.ts.map +1 -1
- package/dist/components/OceanBuilder.js +2 -1
- package/dist/components/ParticlesGenerator.d.ts.map +1 -1
- package/dist/components/ParticlesGenerator.js +46 -24
- package/dist/components/PickVolume.d.ts +17 -0
- package/dist/components/PickVolume.d.ts.map +1 -0
- package/dist/components/PickVolume.js +20 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +5 -2
- package/dist/components/SkyStars.d.ts.map +1 -1
- package/dist/components/SkyStars.js +83 -2
- package/dist/components/Skybox.d.ts.map +1 -1
- package/dist/components/Skybox.js +2 -1
- package/dist/components/SunLight.d.ts.map +1 -1
- package/dist/components/SunLight.js +3 -2
- package/dist/components/TextGenerator.d.ts.map +1 -1
- package/dist/components/TextGenerator.js +3 -2
- package/dist/components/index.d.ts +2 -8
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -4
- package/dist/components/lightBulb/LightBulb.d.ts.map +1 -1
- package/dist/components/lightBulb/LightBulb.js +7 -2
- package/dist/components/particles/BioluminescentWakeParticles.d.ts +5 -0
- package/dist/components/particles/BioluminescentWakeParticles.d.ts.map +1 -1
- package/dist/components/particles/BioluminescentWakeParticles.js +2 -1
- package/dist/components/particles/BrownianDustParticles.d.ts +5 -0
- package/dist/components/particles/BrownianDustParticles.d.ts.map +1 -1
- package/dist/components/particles/BrownianDustParticles.js +2 -0
- package/dist/components/particles/ChladniSandParticles.d.ts +5 -0
- package/dist/components/particles/ChladniSandParticles.d.ts.map +1 -1
- package/dist/components/particles/ChladniSandParticles.js +2 -1
- package/dist/components/particles/ElectronOrbitalsParticles.d.ts +5 -0
- package/dist/components/particles/ElectronOrbitalsParticles.d.ts.map +1 -1
- package/dist/components/particles/ElectronOrbitalsParticles.js +2 -1
- package/dist/components/particles/FaradayPowderParticles.d.ts +5 -0
- package/dist/components/particles/FaradayPowderParticles.d.ts.map +1 -1
- package/dist/components/particles/FaradayPowderParticles.js +2 -1
- package/dist/components/particles/FireworksParticles.d.ts +22 -0
- package/dist/components/particles/FireworksParticles.d.ts.map +1 -0
- package/dist/components/particles/FireworksParticles.js +1649 -0
- package/dist/components/particles/GrinderSparksParticles.d.ts +5 -0
- package/dist/components/particles/GrinderSparksParticles.d.ts.map +1 -1
- package/dist/components/particles/GrinderSparksParticles.js +2 -1
- package/dist/components/particles/MagneticBottleParticles.d.ts +5 -0
- package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -1
- package/dist/components/particles/MagneticBottleParticles.js +2 -1
- package/dist/components/particles/NeonRainParticles.d.ts +5 -0
- package/dist/components/particles/NeonRainParticles.d.ts.map +1 -1
- package/dist/components/particles/NeonRainParticles.js +2 -1
- package/dist/components/particles/ShapeBurstParticles.d.ts +5 -0
- package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -1
- package/dist/components/particles/ShapeBurstParticles.js +2 -1
- package/dist/components/particles/ShapeFlowParticles.d.ts +5 -0
- package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -1
- package/dist/components/particles/ShapeFlowParticles.js +2 -1
- package/dist/components/particles/TidalStreamParticles.d.ts +5 -0
- package/dist/components/particles/TidalStreamParticles.d.ts.map +1 -1
- package/dist/components/particles/TidalStreamParticles.js +2 -0
- package/dist/components/particles/index.d.ts +2 -0
- package/dist/components/particles/index.d.ts.map +1 -1
- package/dist/components/particles/index.js +1 -0
- package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
- package/dist/components/terrain/TerrainSurface.js +26 -4
- package/dist/components/text/PlainText.d.ts +15 -0
- package/dist/components/text/PlainText.d.ts.map +1 -0
- package/dist/components/text/PlainText.js +4 -0
- package/dist/components/text/TextObjectView.d.ts +3 -1
- package/dist/components/text/TextObjectView.d.ts.map +1 -1
- package/dist/components/text/TextObjectView.js +9 -3
- package/dist/components/text/engine/looks/index.d.ts.map +1 -1
- package/dist/components/text/engine/looks/index.js +2 -1
- package/dist/components/text/engine/looks/plain.d.ts +146 -0
- package/dist/components/text/engine/looks/plain.d.ts.map +1 -0
- package/dist/components/text/engine/looks/plain.js +104 -0
- package/dist/components/text/fonts/bebas-neue.outline.d.ts +3 -0
- package/dist/components/text/fonts/bebas-neue.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/bebas-neue.outline.js +4 -0
- package/dist/components/text/fonts/bebas-neue.strokes.d.ts +3 -0
- package/dist/components/text/fonts/bebas-neue.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/bebas-neue.strokes.js +4 -0
- package/dist/components/text/fonts/index.d.ts +1 -1
- package/dist/components/text/fonts/index.d.ts.map +1 -1
- package/dist/components/text/fonts/index.js +15 -1
- package/dist/components/text/fonts/inter.outline.d.ts +3 -0
- package/dist/components/text/fonts/inter.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/inter.outline.js +4 -0
- package/dist/components/text/fonts/inter.strokes.d.ts +3 -0
- package/dist/components/text/fonts/inter.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/inter.strokes.js +4 -0
- package/dist/components/text/fonts/lora.outline.d.ts +3 -0
- package/dist/components/text/fonts/lora.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/lora.outline.js +4 -0
- package/dist/components/text/fonts/lora.strokes.d.ts +3 -0
- package/dist/components/text/fonts/lora.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/lora.strokes.js +4 -0
- package/dist/components/text/fonts/montserrat.outline.d.ts +3 -0
- package/dist/components/text/fonts/montserrat.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/montserrat.outline.js +4 -0
- package/dist/components/text/fonts/montserrat.strokes.d.ts +3 -0
- package/dist/components/text/fonts/montserrat.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/montserrat.strokes.js +4 -0
- package/dist/components/text/fonts/oswald.outline.d.ts +3 -0
- package/dist/components/text/fonts/oswald.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/oswald.outline.js +4 -0
- package/dist/components/text/fonts/oswald.strokes.d.ts +3 -0
- package/dist/components/text/fonts/oswald.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/oswald.strokes.js +4 -0
- package/dist/components/text/fonts/playfair-display.outline.d.ts +3 -0
- package/dist/components/text/fonts/playfair-display.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/playfair-display.outline.js +4 -0
- package/dist/components/text/fonts/playfair-display.strokes.d.ts +3 -0
- package/dist/components/text/fonts/playfair-display.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/playfair-display.strokes.js +4 -0
- package/dist/components/text/fonts/roboto.outline.d.ts +3 -0
- package/dist/components/text/fonts/roboto.outline.d.ts.map +1 -0
- package/dist/components/text/fonts/roboto.outline.js +4 -0
- package/dist/components/text/fonts/roboto.strokes.d.ts +3 -0
- package/dist/components/text/fonts/roboto.strokes.d.ts.map +1 -0
- package/dist/components/text/fonts/roboto.strokes.js +4 -0
- package/dist/components/text/index.d.ts +2 -0
- package/dist/components/text/index.d.ts.map +1 -1
- package/dist/components/text/index.js +1 -0
- package/dist/components/text/useTextObject.d.ts +1 -0
- package/dist/components/text/useTextObject.d.ts.map +1 -1
- package/dist/components/text/useTextObject.js +23 -11
- package/dist/components/water/OceanSurface.d.ts.map +1 -1
- package/dist/components/water/OceanSurface.js +5 -1
- package/dist/components/water/types.d.ts +3 -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 +3 -1
- package/dist/hooks/useOceanMaterial.d.ts +6 -2
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.js +22 -2
- package/dist/hooks/useOrbitTargetFollow.d.ts +10 -0
- package/dist/hooks/useOrbitTargetFollow.d.ts.map +1 -0
- package/dist/hooks/useOrbitTargetFollow.js +194 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/operations/catalogue/flock.d.ts.map +1 -1
- package/dist/operations/catalogue/flock.js +44 -9
- package/dist/operations/catalogue/inkBloom.d.ts.map +1 -1
- package/dist/operations/catalogue/inkBloom.js +46 -9
- package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -1
- package/dist/operations/catalogue/liquidMetal.js +41 -12
- package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -1
- package/dist/operations/catalogue/particleSwarm.js +29 -9
- package/dist/operations/catalogue/petalPeel.d.ts.map +1 -1
- package/dist/operations/catalogue/petalPeel.js +33 -9
- package/dist/operations/catalogue/portal.d.ts.map +1 -1
- package/dist/operations/catalogue/portal.js +33 -11
- package/dist/operations/catalogue/sandErosion.d.ts.map +1 -1
- package/dist/operations/catalogue/sandErosion.js +36 -14
- package/dist/operations/catalogue/teleport.d.ts.map +1 -1
- package/dist/operations/catalogue/teleport.js +43 -12
- package/dist/operations/catalogue/unweave.d.ts.map +1 -1
- package/dist/operations/catalogue/unweave.js +34 -15
- package/dist/operations/catalogue/voxelize.d.ts.map +1 -1
- package/dist/operations/catalogue/voxelize.js +37 -10
- package/dist/shaders/glsl/terrainCore.glsl.d.ts +18 -3
- package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/terrainCore.glsl.js +42 -21
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +36 -11
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
- package/dist/shaders/ocean/OceanSurfaceMaterial.js +96 -5
- package/dist/triggers/engine.d.ts +1 -1
- package/dist/triggers/engine.d.ts.map +1 -1
- package/dist/triggers/engine.js +3 -0
- package/dist/triggers/hosts/actions.d.ts.map +1 -1
- package/dist/triggers/hosts/actions.js +3 -1
- package/dist/triggers/hosts/interactions.d.ts.map +1 -1
- package/dist/triggers/hosts/interactions.js +1 -1
- package/dist/triggers/hosts/timelineCues.js +1 -1
- package/dist/triggers/kinds/change.d.ts +4 -0
- package/dist/triggers/kinds/change.d.ts.map +1 -0
- package/dist/triggers/kinds/change.js +50 -0
- package/dist/triggers/kinds/index.d.ts +1 -0
- package/dist/triggers/kinds/index.d.ts.map +1 -1
- package/dist/triggers/kinds/index.js +1 -0
- package/dist/utils/CameraSingleton.d.ts +4 -0
- package/dist/utils/CameraSingleton.d.ts.map +1 -1
- package/dist/utils/CameraSingleton.js +4 -0
- package/dist/utils/deviceTier.d.ts +2 -0
- package/dist/utils/deviceTier.d.ts.map +1 -0
- package/dist/utils/deviceTier.js +16 -0
- package/dist/utils/environmentDrawOrder.d.ts +23 -0
- package/dist/utils/environmentDrawOrder.d.ts.map +1 -0
- package/dist/utils/environmentDrawOrder.js +22 -0
- package/dist/utils/pickProxy.d.ts +11 -0
- package/dist/utils/pickProxy.d.ts.map +1 -0
- package/dist/utils/pickProxy.js +36 -0
- package/dist/utils/shapes.d.ts +4 -0
- package/dist/utils/shapes.d.ts.map +1 -1
- package/dist/utils/shapes.js +4 -1
- package/dist/utils/terrainUniforms.d.ts +7 -0
- package/dist/utils/terrainUniforms.d.ts.map +1 -1
- package/dist/utils/terrainUniforms.js +15 -2
- package/dist/utils/textShape.d.ts +24 -0
- package/dist/utils/textShape.d.ts.map +1 -0
- package/dist/utils/textShape.js +102 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipPlayer.d.ts","sourceRoot":"","sources":["../../src/animationsV2/ClipPlayer.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACpC,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IACvD,6FAA6F;IAC7F,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;QAAC,KAAK,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;CACzE;AAcD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"ClipPlayer.d.ts","sourceRoot":"","sources":["../../src/animationsV2/ClipPlayer.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACpC,wDAAwD;IACxD,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IACvD,6FAA6F;IAC7F,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;QAAC,KAAK,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;CACzE;AAcD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyJzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -156,12 +156,14 @@ const ClipPlayer = ({ getSettings, getAction, autoplay }) => {
|
|
|
156
156
|
};
|
|
157
157
|
}, [gl]);
|
|
158
158
|
// --- zoom: OrbitControls must not zoom while the wheel drives a sequence -----------
|
|
159
|
-
|
|
159
|
+
// Held off every frame while one runs (the camera settings sync may write it back), and
|
|
160
|
+
// handed back afterwards with the authored setting (so the Controls zoom switch wins).
|
|
161
|
+
const zoomHeld = useRef(null);
|
|
162
|
+
const authoredZoom = () => settingsRef.current('camera')?.controls?.enableZoom !== false;
|
|
160
163
|
useEffect(() => () => {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
zoomRestore.current = null;
|
|
164
|
+
if (zoomHeld.current)
|
|
165
|
+
zoomHeld.current.enableZoom = authoredZoom();
|
|
166
|
+
zoomHeld.current = null;
|
|
165
167
|
}, []);
|
|
166
168
|
// --- camera: OrbitControls sit out while an animation drives the camera ------------
|
|
167
169
|
// Their update (damping residue, min / max distance and angle limits, auto-rotate)
|
|
@@ -187,15 +189,15 @@ const ClipPlayer = ({ getSettings, getAction, autoplay }) => {
|
|
|
187
189
|
cameraHeld.current = null;
|
|
188
190
|
}
|
|
189
191
|
const wheelActive = ClipsRuntime.getDrivenSequences().some(d => d.driver === 'mouseWheel');
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
192
|
+
if (wheelActive && controls) {
|
|
193
|
+
if (zoomHeld.current && zoomHeld.current !== controls)
|
|
194
|
+
zoomHeld.current.enableZoom = authoredZoom();
|
|
195
|
+
zoomHeld.current = controls;
|
|
193
196
|
controls.enableZoom = false;
|
|
194
197
|
}
|
|
195
|
-
else if (
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
zoomRestore.current = null;
|
|
198
|
+
else if (zoomHeld.current) {
|
|
199
|
+
zoomHeld.current.enableZoom = authoredZoom();
|
|
200
|
+
zoomHeld.current = null;
|
|
199
201
|
}
|
|
200
202
|
});
|
|
201
203
|
return null;
|
|
@@ -48,6 +48,10 @@ declare class ClipsRuntime {
|
|
|
48
48
|
private pendingRestore;
|
|
49
49
|
/** last written value per property (targetKey -> JSON) */
|
|
50
50
|
private written;
|
|
51
|
+
/** Discrete values laid last tick, per element (JSON) — to see which elements changed. */
|
|
52
|
+
private laid;
|
|
53
|
+
/** Element -> frames left to re-write its continuous tracks (the layer just changed it). */
|
|
54
|
+
private rewrite;
|
|
51
55
|
/** values written straight from outside (a UI slider): targetKey -> value. */
|
|
52
56
|
private live;
|
|
53
57
|
debug: boolean;
|
|
@@ -98,6 +102,12 @@ declare class ClipsRuntime {
|
|
|
98
102
|
pose(clip: AnimationClip, t: number): void;
|
|
99
103
|
/** The clip data changed (editor edit): keep time and play state, use the new tracks. */
|
|
100
104
|
updateClip(clip: AnimationClip): void;
|
|
105
|
+
/**
|
|
106
|
+
* A timeline's cue lanes changed under it (a Change cue's settings edited, a lane's
|
|
107
|
+
* command swapped): let go of every lane it holds; the next tick switches the lanes
|
|
108
|
+
* back on at the playhead with their new commands.
|
|
109
|
+
*/
|
|
110
|
+
resyncCues(host: 'sequence' | 'clip', timelineId: string): void;
|
|
101
111
|
getTime(clipId: string): number;
|
|
102
112
|
isPlaying(clipId: string): boolean;
|
|
103
113
|
isActive(clipId: string): boolean;
|
|
@@ -180,6 +190,9 @@ declare class ClipsRuntime {
|
|
|
180
190
|
*/
|
|
181
191
|
private advanceSequence;
|
|
182
192
|
private finishSequence;
|
|
193
|
+
/** Owners already reported for an element (one report per pair until reset). */
|
|
194
|
+
private clashed;
|
|
195
|
+
private noteLayerClash;
|
|
183
196
|
private emit;
|
|
184
197
|
private bump;
|
|
185
198
|
/** A state change: notifies both kinds of subscribers. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipsRuntime.d.ts","sourceRoot":"","sources":["../../src/animationsV2/ClipsRuntime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClipsRuntime.d.ts","sourceRoot":"","sources":["../../src/animationsV2/ClipsRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,14 @@
|
|
|
24
24
|
// A property that stops being driven (stop, a 'restore' end, a sequence entry
|
|
25
25
|
// scrubbed back before its start) is written back to its authored value.
|
|
26
26
|
//
|
|
27
|
+
// Discrete tracks (structural properties: material variant, shape, particle count…)
|
|
28
|
+
// can't be written to a live object. Their winning values at the playhead are laid over
|
|
29
|
+
// the elements' settings as ONE SceneActions layer ('timeline'), recomputed every tick:
|
|
30
|
+
// the element re-renders with them, and when nothing drives them any more (stop,
|
|
31
|
+
// restore, scrub out) the layer drops them — no restore of their own. A continuous
|
|
32
|
+
// track on an element the layer just changed is re-written for a few frames, because
|
|
33
|
+
// the re-render may have rebuilt what it writes to (a new material).
|
|
34
|
+
//
|
|
27
35
|
// Sequence cues switch actions (SceneActions) by time: each tick a sequence works
|
|
28
36
|
// out which of its actions should be on at its current time and applies / reverts
|
|
29
37
|
// only what changed. It reverts only what it applied itself — an action already on
|
|
@@ -31,13 +39,31 @@
|
|
|
31
39
|
// driven); a posed sequence (the editor's scrub) applies patches only. Stopping
|
|
32
40
|
// the sequence reverts its actions; a 'hold' finish keeps them.
|
|
33
41
|
//
|
|
34
|
-
import { SceneActions } from '@3driseai/3drise-core';
|
|
42
|
+
import { SceneActions, expandMaterialVariant } from '@3driseai/3drise-core';
|
|
43
|
+
import { logTrigger } from '../triggers/log.js';
|
|
35
44
|
import { getAtPath, sampleTrack } from './clipUtils.js';
|
|
36
45
|
import { applyValue, clearApplierCaches, isApplicable, isTargetMounted } from './appliers.js';
|
|
37
46
|
import { readNodeValue, restoreNodeTrack } from './nodeTracks.js';
|
|
38
47
|
import { cueStatesAt, entryLocalTime, isEntryActive, resolveSequence, cueCommand, clipCueSchedule, firedBetween, } from './sequenceUtils.js';
|
|
39
48
|
/** Longest an autoplaying sequence waits for its targets. */
|
|
40
49
|
const MAX_TARGET_WAIT_MS = 8000;
|
|
50
|
+
/** The SceneActions layer discrete tracks are set through. */
|
|
51
|
+
const TIMELINE_LAYER = 'timeline';
|
|
52
|
+
/** Frames a changed element's continuous tracks are re-written for (its re-render may rebuild their target). */
|
|
53
|
+
const REWRITE_FRAMES = 30;
|
|
54
|
+
/** Deep patch from flat (path -> value) pairs. */
|
|
55
|
+
function patchOf(pairs) {
|
|
56
|
+
const out = {};
|
|
57
|
+
for (const [path, value, node] of pairs) {
|
|
58
|
+
// A part's switch track sits under its node override (node keys may contain dots: no split).
|
|
59
|
+
const parts = node ? ['config', 'nodeOverrides', node, ...path.split('.')] : path.split('.');
|
|
60
|
+
let cur = out;
|
|
61
|
+
for (let i = 0; i < parts.length - 1; i++)
|
|
62
|
+
cur = (cur[parts[i]] ??= {});
|
|
63
|
+
cur[parts[parts.length - 1]] = value;
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
41
67
|
const targetKey = (state, node, path) => `${state}|${node ?? ''}|${path}`;
|
|
42
68
|
class ClipsRuntime {
|
|
43
69
|
cueRunner = null;
|
|
@@ -57,6 +83,10 @@ class ClipsRuntime {
|
|
|
57
83
|
pendingRestore = [];
|
|
58
84
|
/** last written value per property (targetKey -> JSON) */
|
|
59
85
|
written = new Map();
|
|
86
|
+
/** Discrete values laid last tick, per element (JSON) — to see which elements changed. */
|
|
87
|
+
laid = new Map();
|
|
88
|
+
/** Element -> frames left to re-write its continuous tracks (the layer just changed it). */
|
|
89
|
+
rewrite = new Map();
|
|
60
90
|
/** values written straight from outside (a UI slider): targetKey -> value. */
|
|
61
91
|
live = new Map();
|
|
62
92
|
// --- diagnostics ------------------------------------------------------------------
|
|
@@ -155,6 +185,10 @@ class ClipsRuntime {
|
|
|
155
185
|
this.sequences.clear();
|
|
156
186
|
this.pendingRestore = [];
|
|
157
187
|
this.written.clear();
|
|
188
|
+
this.laid.clear();
|
|
189
|
+
this.rewrite.clear();
|
|
190
|
+
this.clashed.clear();
|
|
191
|
+
SceneActions.setLayer(TIMELINE_LAYER, null);
|
|
158
192
|
clearApplierCaches();
|
|
159
193
|
this.bumpState();
|
|
160
194
|
}
|
|
@@ -228,6 +262,19 @@ class ClipsRuntime {
|
|
|
228
262
|
this.written.clear(); // values may have changed under the same time
|
|
229
263
|
this.bumpState();
|
|
230
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* A timeline's cue lanes changed under it (a Change cue's settings edited, a lane's
|
|
267
|
+
* command swapped): let go of every lane it holds; the next tick switches the lanes
|
|
268
|
+
* back on at the playhead with their new commands.
|
|
269
|
+
*/
|
|
270
|
+
resyncCues(host, timelineId) {
|
|
271
|
+
const inst = host === 'clip' ? this.clips.get(timelineId) : this.sequences.get(timelineId);
|
|
272
|
+
if (!inst)
|
|
273
|
+
return;
|
|
274
|
+
this.releaseCues(inst.owned, host, timelineId);
|
|
275
|
+
inst.cueState.clear();
|
|
276
|
+
this.bump();
|
|
277
|
+
}
|
|
231
278
|
getTime(clipId) { return this.clips.get(clipId)?.time ?? 0; }
|
|
232
279
|
isPlaying(clipId) { return !!this.clips.get(clipId)?.playing; }
|
|
233
280
|
isActive(clipId) { return this.clips.has(clipId); }
|
|
@@ -497,10 +544,39 @@ class ClipsRuntime {
|
|
|
497
544
|
const winners = new Map();
|
|
498
545
|
for (const p of this.proposals())
|
|
499
546
|
winners.set(targetKey(p.state, p.node, p.path), p);
|
|
547
|
+
// Discrete winners -> the patch layer (a no-op when unchanged).
|
|
548
|
+
const discrete = new Map();
|
|
549
|
+
for (const p of winners.values()) {
|
|
550
|
+
if (!p.discrete)
|
|
551
|
+
continue;
|
|
552
|
+
const list = discrete.get(p.state) ?? [];
|
|
553
|
+
list.push([p.path, p.value, p.node]);
|
|
554
|
+
discrete.set(p.state, list);
|
|
555
|
+
}
|
|
556
|
+
const layer = {};
|
|
557
|
+
// A material variant switch track stands for the variant's full settings (expanded here).
|
|
558
|
+
for (const [state, pairs] of discrete)
|
|
559
|
+
layer[state] = expandMaterialVariant(patchOf(pairs));
|
|
560
|
+
for (const state of new Set([...this.laid.keys(), ...discrete.keys()])) {
|
|
561
|
+
const json = layer[state] ? JSON.stringify(layer[state]) : '';
|
|
562
|
+
if ((this.laid.get(state) ?? '') === json)
|
|
563
|
+
continue;
|
|
564
|
+
if (json)
|
|
565
|
+
this.laid.set(state, json);
|
|
566
|
+
else
|
|
567
|
+
this.laid.delete(state);
|
|
568
|
+
this.rewrite.set(state, REWRITE_FRAMES);
|
|
569
|
+
// Switch tracks over an action / Change cue setting the same thing: reported, not resolved.
|
|
570
|
+
if (json)
|
|
571
|
+
this.noteLayerClash(state, layer[state]);
|
|
572
|
+
}
|
|
573
|
+
SceneActions.setLayer(TIMELINE_LAYER, layer);
|
|
500
574
|
const failed = [];
|
|
501
575
|
for (const [key, p] of winners) {
|
|
576
|
+
if (p.discrete)
|
|
577
|
+
continue;
|
|
502
578
|
const json = JSON.stringify(p.value);
|
|
503
|
-
if (this.written.get(key) === json)
|
|
579
|
+
if (this.written.get(key) === json && !this.rewrite.has(p.state))
|
|
504
580
|
continue;
|
|
505
581
|
// Recorded only when it landed: a target that is not mounted yet (a model still
|
|
506
582
|
// loading) is retried next frame instead of being skipped for good.
|
|
@@ -511,6 +587,12 @@ class ClipsRuntime {
|
|
|
511
587
|
}
|
|
512
588
|
if (failed.length)
|
|
513
589
|
this.dlogEvery('failed', 1000, `writes not landed (${failed.length})`, failed.slice(0, 12));
|
|
590
|
+
for (const [state, n] of this.rewrite) {
|
|
591
|
+
if (n <= 1)
|
|
592
|
+
this.rewrite.delete(state);
|
|
593
|
+
else
|
|
594
|
+
this.rewrite.set(state, n - 1);
|
|
595
|
+
}
|
|
514
596
|
if (anyPlaying)
|
|
515
597
|
this.bump();
|
|
516
598
|
}
|
|
@@ -525,7 +607,10 @@ class ClipsRuntime {
|
|
|
525
607
|
missing.add(t.node ? `${t.state} › ${t.node}` : t.state);
|
|
526
608
|
}
|
|
527
609
|
}
|
|
528
|
-
const
|
|
610
|
+
const ENV = ['camera', 'sky', 'clouds', 'ocean', 'terrain'];
|
|
611
|
+
const idsOf = (c) => (c?.kind === 'effect' ? c.effect?.targets ?? []
|
|
612
|
+
: c?.kind === 'effectClip' ? c.use?.targets ?? []
|
|
613
|
+
: c?.kind === 'change' ? (c.targets ?? []).map((t) => t?.state).filter((s) => s && !ENV.includes(s)) : []);
|
|
529
614
|
for (const sc of inst.schedule.cues) {
|
|
530
615
|
const cmd = cueCommand(sc.cue);
|
|
531
616
|
for (const id of idsOf(cmd))
|
|
@@ -562,6 +647,15 @@ class ClipsRuntime {
|
|
|
562
647
|
if ((state.get(key) ?? false) === on) {
|
|
563
648
|
if (!wanted.has(key))
|
|
564
649
|
state.delete(key);
|
|
650
|
+
else if (on) {
|
|
651
|
+
// The lane's command changed under it (a Change cue edited, a lane re-targeted): re-apply it.
|
|
652
|
+
const cmd = commandOf.get(key);
|
|
653
|
+
const prev = owned.get(key);
|
|
654
|
+
if (cmd && prev && prev !== cmd && JSON.stringify(prev) !== JSON.stringify(cmd) && this.cueRunner) {
|
|
655
|
+
if (this.cueRunner(cmd, 'apply', { ...opts, getAction: this.ctx?.getAction }))
|
|
656
|
+
owned.set(key, cmd);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
565
659
|
continue;
|
|
566
660
|
}
|
|
567
661
|
if (wanted.has(key))
|
|
@@ -673,6 +767,8 @@ class ClipsRuntime {
|
|
|
673
767
|
this.pendingRestore = [];
|
|
674
768
|
const done = new Set();
|
|
675
769
|
for (const track of tracks) {
|
|
770
|
+
if (track.discrete)
|
|
771
|
+
continue; // the layer drops it on its own
|
|
676
772
|
const key = targetKey(track.state, track.node, track.path);
|
|
677
773
|
if (done.has(key))
|
|
678
774
|
continue;
|
|
@@ -790,6 +886,21 @@ class ClipsRuntime {
|
|
|
790
886
|
if (inst.seq.endMode === 'restore')
|
|
791
887
|
this.stopSequence(inst.seq.id);
|
|
792
888
|
}
|
|
889
|
+
/** Owners already reported for an element (one report per pair until reset). */
|
|
890
|
+
clashed = new Set();
|
|
891
|
+
noteLayerClash(state, patch) {
|
|
892
|
+
for (const owner of SceneActions.overlaps(state, patch, `layer:${TIMELINE_LAYER}`)) {
|
|
893
|
+
const key = `${state}|${owner}`;
|
|
894
|
+
if (this.clashed.has(key))
|
|
895
|
+
continue;
|
|
896
|
+
this.clashed.add(key);
|
|
897
|
+
const who = owner.startsWith('layer:change:') ? `Change cue ${owner.slice(13)}` : owner.startsWith('layer:') ? owner.slice(6) : `action ${owner}`;
|
|
898
|
+
logTrigger({
|
|
899
|
+
type: 'clash', kind: 'animationClip', subject: state, source: { host: 'clip', id: 'switch-tracks' }, chain: [],
|
|
900
|
+
detail: `a switch track sets the same settings on ${state} as ${who} — the last one to change wins`,
|
|
901
|
+
});
|
|
902
|
+
}
|
|
903
|
+
}
|
|
793
904
|
emit(e) {
|
|
794
905
|
this.eventListeners.forEach(l => { try {
|
|
795
906
|
l(e);
|
|
@@ -818,7 +929,7 @@ function* sampleTracks(tracks, t) {
|
|
|
818
929
|
const value = sampleTrack(track, t);
|
|
819
930
|
if (value === undefined)
|
|
820
931
|
continue;
|
|
821
|
-
yield { state: track.state, node: track.node, path: track.path, value };
|
|
932
|
+
yield { state: track.state, node: track.node, path: track.path, value, discrete: !!track.discrete };
|
|
822
933
|
}
|
|
823
934
|
}
|
|
824
935
|
const clipsRuntime = new ClipsRuntime();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appliers.d.ts","sourceRoot":"","sources":["../../src/animationsV2/appliers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"appliers.d.ts","sourceRoot":"","sources":["../../src/animationsV2/appliers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAiB/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,qDAAqD;IACrD,QAAQ,EAAE,GAAG,CAAC;IACd,yFAAyF;IACzF,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACpC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;CACxD;AAWD,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAwMD,uFAAuF;AACvF,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAIlH;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAKxF;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE"}
|
|
@@ -4,7 +4,8 @@ import { CLOUD_LIVE_KEY } from '../hooks/useCloudLive.js';
|
|
|
4
4
|
import { OCEAN_LIVE_KEY } from '../hooks/useOceanLive.js';
|
|
5
5
|
import { TERRAIN_LIVE_KEY } from '../hooks/useTerrainLive.js';
|
|
6
6
|
import { createSunPosition } from '../utils/utils3d.js';
|
|
7
|
-
import { sunAnglesFromDirection } from '@3driseai/3drise-core';
|
|
7
|
+
import { sunAnglesFromDirection, skySystemManager } from '@3driseai/3drise-core';
|
|
8
|
+
import { sunSystemLive, SUN_SYSTEM_LIVE_PATHS, TIME_PATHS } from './sunSystemLive.js';
|
|
8
9
|
import { publishRenderedSky, sceneOf } from '../utils/renderedSky.js';
|
|
9
10
|
import { applyNodeValue, clearNodeCaches, nodesFor } from './nodeTracks.js';
|
|
10
11
|
// --- live-target caches (cleared when the scene changes under us) -------------
|
|
@@ -202,8 +203,26 @@ const applyTerrain = (ctx, _state, path, value) => {
|
|
|
202
203
|
return false;
|
|
203
204
|
handle.config(path.slice('config.'.length), value);
|
|
204
205
|
};
|
|
206
|
+
/**
|
|
207
|
+
* Time: the Sky System clock and rig. `hour` seeks the clock (sun, moon, sky colours and
|
|
208
|
+
* the key light all follow it); the rest are live multipliers the Sky System reads per frame.
|
|
209
|
+
*/
|
|
210
|
+
const applyTime = (_ctx, _state, path, value) => {
|
|
211
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
212
|
+
return false;
|
|
213
|
+
if (path === 'hour') {
|
|
214
|
+
skySystemManager.setTime(((value % 24) + 24) % 24);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (SUN_SYSTEM_LIVE_PATHS.includes(path)) {
|
|
218
|
+
sunSystemLive[path] = Math.max(0, value);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
return false;
|
|
222
|
+
};
|
|
205
223
|
const APPLIERS = [
|
|
206
224
|
{ match: (s) => s === 'camera', apply: applyCamera },
|
|
225
|
+
{ match: (s, p) => s === 'time' && TIME_PATHS.includes(p), apply: applyTime },
|
|
207
226
|
// Environment before the generic path families: the ocean's `config.*` is not an object's.
|
|
208
227
|
{ match: (s) => s === 'sky', apply: applySky },
|
|
209
228
|
{ match: (s) => s === 'clouds', apply: applyClouds },
|
|
@@ -226,7 +245,7 @@ export function applyValue(ctx, state, path, value, node) {
|
|
|
226
245
|
export function isTargetMounted(ctx, state, node) {
|
|
227
246
|
if (state === 'camera')
|
|
228
247
|
return !!ctx.camera;
|
|
229
|
-
if (state === 'sky' || state === 'clouds' || state === 'ocean' || state === 'terrain')
|
|
248
|
+
if (state === 'sky' || state === 'clouds' || state === 'ocean' || state === 'terrain' || state === 'time')
|
|
230
249
|
return true;
|
|
231
250
|
if (node)
|
|
232
251
|
return nodesFor(state, node).length > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipUtils.d.ts","sourceRoot":"","sources":["../../src/animationsV2/clipUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOlF,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,WAAqF,CAAC;AAExH,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAOrD;AAMD,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAwB,CAAC;AAC9E,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,WAAgB,CAAC;AAC1E,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAgD,CAAC;AAEnG,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAaD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"clipUtils.d.ts","sourceRoot":"","sources":["../../src/animationsV2/clipUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOlF,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,WAAqF,CAAC;AAExH,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAOrD;AAMD,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAwB,CAAC;AAC9E,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,WAAgB,CAAC;AAC1E,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAgD,CAAC;AAEnG,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAaD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAyBzE;AAMD,eAAO,MAAM,QAAQ,GAAI,MAAM,QAAQ,EAAE,eAAwC,CAAC;AAElF,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAOtF;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,aAAa,CAc9G;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAKrF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAQtG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,aAAa,CAQ9F;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,GAAG,SAAS,CAMvG;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAIzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAEhE;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAQvF"}
|
|
@@ -54,6 +54,10 @@ export function sampleTrack(track, t) {
|
|
|
54
54
|
const keys = track.keys;
|
|
55
55
|
if (keys.length === 0)
|
|
56
56
|
return undefined;
|
|
57
|
+
// A switch track switches AT its first key: before it the element keeps its authored value
|
|
58
|
+
// (an eased track holds its first value before it, so a move can start later than 0).
|
|
59
|
+
if (t < keys[0].t - 1e-9 && track.discrete)
|
|
60
|
+
return undefined;
|
|
57
61
|
if (t <= keys[0].t)
|
|
58
62
|
return keys[0].value;
|
|
59
63
|
const last = keys[keys.length - 1];
|
|
@@ -71,7 +75,7 @@ export function sampleTrack(track, t) {
|
|
|
71
75
|
}
|
|
72
76
|
const a = keys[lo];
|
|
73
77
|
const b = keys[hi];
|
|
74
|
-
if (isSteppedValue(a.value) || isSteppedValue(b.value))
|
|
78
|
+
if (track.discrete || isSteppedValue(a.value) || isSteppedValue(b.value))
|
|
75
79
|
return a.value;
|
|
76
80
|
const span = b.t - a.t;
|
|
77
81
|
const p = span > 0 ? easeProgress(a.ease, (t - a.t) / span) : 1;
|
|
@@ -19,6 +19,11 @@ export interface ScheduledCue {
|
|
|
19
19
|
stepIndex: number;
|
|
20
20
|
/** Sequence seconds. */
|
|
21
21
|
time: number;
|
|
22
|
+
/**
|
|
23
|
+
* Set on a step clip's own cue (the ScheduledClip id it came from). Its `cue` is a
|
|
24
|
+
* sequence-shaped copy (id `${entryId}:${cueId}`) — edit it in the clip, not here.
|
|
25
|
+
*/
|
|
26
|
+
fromClip?: string;
|
|
22
27
|
}
|
|
23
28
|
export interface SequenceSchedule {
|
|
24
29
|
/** In priority order (schedule index = activation order). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequenceUtils.d.ts","sourceRoot":"","sources":["../../src/animationsV2/sequenceUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sequenceUtils.d.ts","sourceRoot":"","sources":["../../src/animationsV2/sequenceUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,16 @@ export function resolveSequence(seq, clips) {
|
|
|
33
33
|
const time = Math.min(cursor, steps[stepIndex].start + safeDelay(cue.at));
|
|
34
34
|
cues.push({ cue, subject: cueSubject(cue), stepIndex, time });
|
|
35
35
|
});
|
|
36
|
+
// Each step clip's own cues, on the sequence clock.
|
|
37
|
+
for (const e of entries) {
|
|
38
|
+
const speed = safeSpeed(e.stepClip.speed);
|
|
39
|
+
const stepStart = steps[e.stepIndex].start;
|
|
40
|
+
for (const c of clipCueSchedule(e.clip)) {
|
|
41
|
+
const time = Math.min(e.end, e.start + c.time / speed);
|
|
42
|
+
const cue = { ...c.cue, id: `${e.id}:${c.cue.id}`, stepId: seq.steps[e.stepIndex].id, at: time - stepStart };
|
|
43
|
+
cues.push({ cue, subject: c.subject, stepIndex: e.stepIndex, time, fromClip: e.id });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
36
46
|
cues.sort((a, b) => a.time - b.time); // stable: authored order breaks ties
|
|
37
47
|
return { entries, steps, cues, duration: cursor };
|
|
38
48
|
}
|
|
@@ -135,13 +145,12 @@ export function findCueConflicts(seq, clips, getAction) {
|
|
|
135
145
|
if (sc.cue.mode !== 'apply')
|
|
136
146
|
continue;
|
|
137
147
|
const cmd = cueCommand(sc.cue);
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (!action?.targets?.length)
|
|
148
|
+
// an action's patches, or a Change cue's own
|
|
149
|
+
const targets = cmd?.kind === 'action' ? getAction(cmd.ref)?.targets : cmd?.kind === 'change' ? cmd.targets : undefined;
|
|
150
|
+
if (!targets?.length)
|
|
142
151
|
continue;
|
|
143
152
|
const entries = schedule.entries.filter(e => e.stepIndex === sc.stepIndex);
|
|
144
|
-
for (const target of
|
|
153
|
+
for (const target of targets) {
|
|
145
154
|
const paths = patchPaths(target.patch);
|
|
146
155
|
for (const e of entries) {
|
|
147
156
|
for (const track of e.clip.tracks) {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface SunSystemLive {
|
|
2
|
+
moonSize?: number;
|
|
3
|
+
sunSize?: number;
|
|
4
|
+
intensity?: number;
|
|
5
|
+
moonIntensity?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const sunSystemLive: SunSystemLive;
|
|
8
|
+
export declare const SUN_SYSTEM_LIVE_PATHS: readonly ["moonSize", "sunSize", "intensity", "moonIntensity"];
|
|
9
|
+
/** Every path the `time` target accepts. */
|
|
10
|
+
export declare const TIME_PATHS: readonly ["hour", "moonSize", "sunSize", "intensity", "moonIntensity"];
|
|
11
|
+
export declare function resetSunSystemLive(): void;
|
|
12
|
+
//# sourceMappingURL=sunSystemLive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sunSystemLive.d.ts","sourceRoot":"","sources":["../../src/animationsV2/sunSystemLive.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,aAAa,EAAE,aAAkB,CAAC;AAE/C,eAAO,MAAM,qBAAqB,gEAAiE,CAAC;AACpG,4CAA4C;AAC5C,eAAO,MAAM,UAAU,wEAA8C,CAAC;AAEtE,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const sunSystemLive = {};
|
|
2
|
+
export const SUN_SYSTEM_LIVE_PATHS = ['moonSize', 'sunSize', 'intensity', 'moonIntensity'];
|
|
3
|
+
/** Every path the `time` target accepts. */
|
|
4
|
+
export const TIME_PATHS = ['hour', ...SUN_SYSTEM_LIVE_PATHS];
|
|
5
|
+
export function resetSunSystemLive() {
|
|
6
|
+
for (const k of SUN_SYSTEM_LIVE_PATHS)
|
|
7
|
+
delete sunSystemLive[k];
|
|
8
|
+
}
|
|
@@ -27,6 +27,12 @@ export interface Track {
|
|
|
27
27
|
/** Sorted by t. */
|
|
28
28
|
keys: Keyframe[];
|
|
29
29
|
muted?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* A structural property (core getDiscreteTrackSpecs): never written per frame. Its value
|
|
32
|
+
* holds from one key to the next (no easing), and the runtime sets it through the
|
|
33
|
+
* SceneActions patch layer — the element re-renders, as when an action changes it.
|
|
34
|
+
*/
|
|
35
|
+
discrete?: boolean;
|
|
30
36
|
}
|
|
31
37
|
export interface AnimationClip {
|
|
32
38
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/animationsV2/types.ts"],"names":[],"mappings":"AAMA,wFAAwF;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAChB,QAAQ,GAAG,MAAM,GACjB,YAAY,GAAG,aAAa,GAAG,eAAe,GAC9C,aAAa,GAAG,cAAc,GAAG,gBAAgB,GACjD,aAAa,GAAG,cAAc,GAAG,gBAAgB,GACjD,YAAY,GAAG,aAAa,GAAG,eAAe,GAC9C,YAAY,GAAG,aAAa,GAAG,eAAe,GAC9C,YAAY,GAAG,aAAa,GAAG,eAAe,GAC9C,gBAAgB,GAAG,eAAe,CAAC;AAEvC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACvB,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,QAAQ,CAAC;IAChB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qJAAqJ;IACrJ,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/animationsV2/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,10 +62,12 @@ export type SceneValue = number | boolean | string | number[];
|
|
|
62
62
|
/** Write live properties of the scene — what a slider or colour picker does. */
|
|
63
63
|
export interface SceneValues {
|
|
64
64
|
/**
|
|
65
|
-
* Write one property now. `target` is `sky` | `camera` | `clouds` | `ocean` | `terrain`, or an
|
|
65
|
+
* Write one property now. `target` is `sky` | `camera` | `clouds` | `ocean` | `terrain` | `time`, or an
|
|
66
66
|
* object ref (key, id or exact name), with `/NodeName` to address a part of a model. `path` is a
|
|
67
67
|
* settings path as clip tracks use it (`materialSettings.opacity`, `meshSettings.position.y`,
|
|
68
68
|
* `config.intensity`, `sky:elevation`; for a model node: `position`, `rotation.y`, `material.color`).
|
|
69
|
+
* `time` drives the Sky System: `hour` (the clock — sun, moon, sky, light), `moonSize`, `sunSize`,
|
|
70
|
+
* `intensity`, `moonIntensity` (`sky` is the analytic sky, not the Sky System).
|
|
69
71
|
* A `.x` / `.y` / `.z` suffix writes one component of a vector. Nothing is saved: this is the
|
|
70
72
|
* live scene, like an animation frame, and a page reload puts it back. False when the target or
|
|
71
73
|
* path is not writable (see `check`).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sceneHandle.d.ts","sourceRoot":"","sources":["../../src/api/sceneHandle.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAc,KAAK,gBAAgB,EAAuB,MAAM,aAAa,CAAC;AAErF,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,0FAA0F;IAC1F,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC7B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa,CAAC,IAAI;IAC/B,IAAI,IAAI,IAAI,EAAE,CAAC;IACf,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACvD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,0GAA0G;AAC1G,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE9D,gFAAgF;AAChF,MAAM,WAAW,WAAW;IACxB
|
|
1
|
+
{"version":3,"file":"sceneHandle.d.ts","sourceRoot":"","sources":["../../src/api/sceneHandle.ts"],"names":[],"mappings":"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"}
|
package/dist/api/sceneHandle.js
CHANGED
|
@@ -182,7 +182,7 @@ export function createSceneHandle(getSource) {
|
|
|
182
182
|
},
|
|
183
183
|
};
|
|
184
184
|
// ----- values ----------------------------------------------------------------------
|
|
185
|
-
const ENVIRONMENT = ['camera', 'sky', 'clouds', 'ocean', 'terrain'];
|
|
185
|
+
const ENVIRONMENT = ['camera', 'sky', 'clouds', 'ocean', 'terrain', 'time'];
|
|
186
186
|
const COMPONENT = { x: 0, y: 1, z: 2 };
|
|
187
187
|
/** `engine/Door` -> { state: <object id>, node: 'Door' }; quiet when it is unknown (this runs on a poll). */
|
|
188
188
|
function target(ref) {
|
|
@@ -207,7 +207,7 @@ export function createSceneHandle(getSource) {
|
|
|
207
207
|
check(ref, path) {
|
|
208
208
|
const t = target(ref);
|
|
209
209
|
if (!t)
|
|
210
|
-
return `no target "${ref}". Use sky, camera, clouds, ocean, terrain or an object${ref.includes('/') ? ' (and sky/camera/… take no node)' : ''}.`;
|
|
210
|
+
return `no target "${ref}". Use sky, camera, clouds, ocean, terrain, time or an object${ref.includes('/') ? ' (and sky/camera/… take no node)' : ''}.`;
|
|
211
211
|
const c = t.node ? undefined : component(t.state, t.node, path);
|
|
212
212
|
if (!t.node && !ClipsRuntime.canSetLiveValue(t.state, c ? c.base : path))
|
|
213
213
|
return `"${path}" cannot be written live on ${ref}.`;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const MOBILE_MAX_DPR = 1.5;
|
|
3
|
+
export interface AdaptiveResolutionProps {
|
|
4
|
+
/** The canvas's own dpr setting (number or [min, max]); its max is the ceiling. */
|
|
5
|
+
max?: number | [number, number];
|
|
6
|
+
}
|
|
7
|
+
declare const AdaptiveResolution: React.FC<AdaptiveResolutionProps>;
|
|
8
|
+
export default AdaptiveResolution;
|
|
9
|
+
//# sourceMappingURL=AdaptiveResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdaptiveResolution.d.ts","sourceRoot":"","sources":["../../src/components/AdaptiveResolution.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAyBpE,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,MAAM,WAAW,uBAAuB;IACpC,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAID,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmCzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|