@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.
Files changed (237) hide show
  1. package/dist/animationsV2/ClipPlayer.d.ts.map +1 -1
  2. package/dist/animationsV2/ClipPlayer.js +14 -12
  3. package/dist/animationsV2/ClipsRuntime.d.ts +13 -0
  4. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  5. package/dist/animationsV2/ClipsRuntime.js +115 -4
  6. package/dist/animationsV2/appliers.d.ts.map +1 -1
  7. package/dist/animationsV2/appliers.js +21 -2
  8. package/dist/animationsV2/clipUtils.d.ts.map +1 -1
  9. package/dist/animationsV2/clipUtils.js +5 -1
  10. package/dist/animationsV2/sequenceUtils.d.ts +5 -0
  11. package/dist/animationsV2/sequenceUtils.d.ts.map +1 -1
  12. package/dist/animationsV2/sequenceUtils.js +14 -5
  13. package/dist/animationsV2/sunSystemLive.d.ts +12 -0
  14. package/dist/animationsV2/sunSystemLive.d.ts.map +1 -0
  15. package/dist/animationsV2/sunSystemLive.js +8 -0
  16. package/dist/animationsV2/types.d.ts +6 -0
  17. package/dist/animationsV2/types.d.ts.map +1 -1
  18. package/dist/api/sceneHandle.d.ts +3 -1
  19. package/dist/api/sceneHandle.d.ts.map +1 -1
  20. package/dist/api/sceneHandle.js +2 -2
  21. package/dist/components/AdaptiveResolution.d.ts +9 -0
  22. package/dist/components/AdaptiveResolution.d.ts.map +1 -0
  23. package/dist/components/AdaptiveResolution.js +61 -0
  24. package/dist/components/CameraController.d.ts.map +1 -1
  25. package/dist/components/CameraController.js +24 -7
  26. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  27. package/dist/components/EffectsGenerator.js +43 -38
  28. package/dist/components/GeometryShape.d.ts.map +1 -1
  29. package/dist/components/GeometryShape.js +22 -2
  30. package/dist/components/MoonDisc.d.ts.map +1 -1
  31. package/dist/components/MoonDisc.js +2 -1
  32. package/dist/components/ObjectNode.d.ts.map +1 -1
  33. package/dist/components/ObjectNode.js +6 -17
  34. package/dist/components/OceanBuilder.d.ts +4 -1
  35. package/dist/components/OceanBuilder.d.ts.map +1 -1
  36. package/dist/components/OceanBuilder.js +2 -1
  37. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  38. package/dist/components/ParticlesGenerator.js +46 -24
  39. package/dist/components/PickVolume.d.ts +17 -0
  40. package/dist/components/PickVolume.d.ts.map +1 -0
  41. package/dist/components/PickVolume.js +20 -0
  42. package/dist/components/SceneBuilder.d.ts.map +1 -1
  43. package/dist/components/SceneBuilder.js +5 -2
  44. package/dist/components/SkyStars.d.ts.map +1 -1
  45. package/dist/components/SkyStars.js +83 -2
  46. package/dist/components/Skybox.d.ts.map +1 -1
  47. package/dist/components/Skybox.js +2 -1
  48. package/dist/components/SunLight.d.ts.map +1 -1
  49. package/dist/components/SunLight.js +3 -2
  50. package/dist/components/TextGenerator.d.ts.map +1 -1
  51. package/dist/components/TextGenerator.js +3 -2
  52. package/dist/components/index.d.ts +2 -8
  53. package/dist/components/index.d.ts.map +1 -1
  54. package/dist/components/index.js +2 -4
  55. package/dist/components/lightBulb/LightBulb.d.ts.map +1 -1
  56. package/dist/components/lightBulb/LightBulb.js +7 -2
  57. package/dist/components/particles/BioluminescentWakeParticles.d.ts +5 -0
  58. package/dist/components/particles/BioluminescentWakeParticles.d.ts.map +1 -1
  59. package/dist/components/particles/BioluminescentWakeParticles.js +2 -1
  60. package/dist/components/particles/BrownianDustParticles.d.ts +5 -0
  61. package/dist/components/particles/BrownianDustParticles.d.ts.map +1 -1
  62. package/dist/components/particles/BrownianDustParticles.js +2 -0
  63. package/dist/components/particles/ChladniSandParticles.d.ts +5 -0
  64. package/dist/components/particles/ChladniSandParticles.d.ts.map +1 -1
  65. package/dist/components/particles/ChladniSandParticles.js +2 -1
  66. package/dist/components/particles/ElectronOrbitalsParticles.d.ts +5 -0
  67. package/dist/components/particles/ElectronOrbitalsParticles.d.ts.map +1 -1
  68. package/dist/components/particles/ElectronOrbitalsParticles.js +2 -1
  69. package/dist/components/particles/FaradayPowderParticles.d.ts +5 -0
  70. package/dist/components/particles/FaradayPowderParticles.d.ts.map +1 -1
  71. package/dist/components/particles/FaradayPowderParticles.js +2 -1
  72. package/dist/components/particles/FireworksParticles.d.ts +22 -0
  73. package/dist/components/particles/FireworksParticles.d.ts.map +1 -0
  74. package/dist/components/particles/FireworksParticles.js +1649 -0
  75. package/dist/components/particles/GrinderSparksParticles.d.ts +5 -0
  76. package/dist/components/particles/GrinderSparksParticles.d.ts.map +1 -1
  77. package/dist/components/particles/GrinderSparksParticles.js +2 -1
  78. package/dist/components/particles/MagneticBottleParticles.d.ts +5 -0
  79. package/dist/components/particles/MagneticBottleParticles.d.ts.map +1 -1
  80. package/dist/components/particles/MagneticBottleParticles.js +2 -1
  81. package/dist/components/particles/NeonRainParticles.d.ts +5 -0
  82. package/dist/components/particles/NeonRainParticles.d.ts.map +1 -1
  83. package/dist/components/particles/NeonRainParticles.js +2 -1
  84. package/dist/components/particles/ShapeBurstParticles.d.ts +5 -0
  85. package/dist/components/particles/ShapeBurstParticles.d.ts.map +1 -1
  86. package/dist/components/particles/ShapeBurstParticles.js +2 -1
  87. package/dist/components/particles/ShapeFlowParticles.d.ts +5 -0
  88. package/dist/components/particles/ShapeFlowParticles.d.ts.map +1 -1
  89. package/dist/components/particles/ShapeFlowParticles.js +2 -1
  90. package/dist/components/particles/TidalStreamParticles.d.ts +5 -0
  91. package/dist/components/particles/TidalStreamParticles.d.ts.map +1 -1
  92. package/dist/components/particles/TidalStreamParticles.js +2 -0
  93. package/dist/components/particles/index.d.ts +2 -0
  94. package/dist/components/particles/index.d.ts.map +1 -1
  95. package/dist/components/particles/index.js +1 -0
  96. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  97. package/dist/components/terrain/TerrainSurface.js +26 -4
  98. package/dist/components/text/PlainText.d.ts +15 -0
  99. package/dist/components/text/PlainText.d.ts.map +1 -0
  100. package/dist/components/text/PlainText.js +4 -0
  101. package/dist/components/text/TextObjectView.d.ts +3 -1
  102. package/dist/components/text/TextObjectView.d.ts.map +1 -1
  103. package/dist/components/text/TextObjectView.js +9 -3
  104. package/dist/components/text/engine/looks/index.d.ts.map +1 -1
  105. package/dist/components/text/engine/looks/index.js +2 -1
  106. package/dist/components/text/engine/looks/plain.d.ts +146 -0
  107. package/dist/components/text/engine/looks/plain.d.ts.map +1 -0
  108. package/dist/components/text/engine/looks/plain.js +104 -0
  109. package/dist/components/text/fonts/bebas-neue.outline.d.ts +3 -0
  110. package/dist/components/text/fonts/bebas-neue.outline.d.ts.map +1 -0
  111. package/dist/components/text/fonts/bebas-neue.outline.js +4 -0
  112. package/dist/components/text/fonts/bebas-neue.strokes.d.ts +3 -0
  113. package/dist/components/text/fonts/bebas-neue.strokes.d.ts.map +1 -0
  114. package/dist/components/text/fonts/bebas-neue.strokes.js +4 -0
  115. package/dist/components/text/fonts/index.d.ts +1 -1
  116. package/dist/components/text/fonts/index.d.ts.map +1 -1
  117. package/dist/components/text/fonts/index.js +15 -1
  118. package/dist/components/text/fonts/inter.outline.d.ts +3 -0
  119. package/dist/components/text/fonts/inter.outline.d.ts.map +1 -0
  120. package/dist/components/text/fonts/inter.outline.js +4 -0
  121. package/dist/components/text/fonts/inter.strokes.d.ts +3 -0
  122. package/dist/components/text/fonts/inter.strokes.d.ts.map +1 -0
  123. package/dist/components/text/fonts/inter.strokes.js +4 -0
  124. package/dist/components/text/fonts/lora.outline.d.ts +3 -0
  125. package/dist/components/text/fonts/lora.outline.d.ts.map +1 -0
  126. package/dist/components/text/fonts/lora.outline.js +4 -0
  127. package/dist/components/text/fonts/lora.strokes.d.ts +3 -0
  128. package/dist/components/text/fonts/lora.strokes.d.ts.map +1 -0
  129. package/dist/components/text/fonts/lora.strokes.js +4 -0
  130. package/dist/components/text/fonts/montserrat.outline.d.ts +3 -0
  131. package/dist/components/text/fonts/montserrat.outline.d.ts.map +1 -0
  132. package/dist/components/text/fonts/montserrat.outline.js +4 -0
  133. package/dist/components/text/fonts/montserrat.strokes.d.ts +3 -0
  134. package/dist/components/text/fonts/montserrat.strokes.d.ts.map +1 -0
  135. package/dist/components/text/fonts/montserrat.strokes.js +4 -0
  136. package/dist/components/text/fonts/oswald.outline.d.ts +3 -0
  137. package/dist/components/text/fonts/oswald.outline.d.ts.map +1 -0
  138. package/dist/components/text/fonts/oswald.outline.js +4 -0
  139. package/dist/components/text/fonts/oswald.strokes.d.ts +3 -0
  140. package/dist/components/text/fonts/oswald.strokes.d.ts.map +1 -0
  141. package/dist/components/text/fonts/oswald.strokes.js +4 -0
  142. package/dist/components/text/fonts/playfair-display.outline.d.ts +3 -0
  143. package/dist/components/text/fonts/playfair-display.outline.d.ts.map +1 -0
  144. package/dist/components/text/fonts/playfair-display.outline.js +4 -0
  145. package/dist/components/text/fonts/playfair-display.strokes.d.ts +3 -0
  146. package/dist/components/text/fonts/playfair-display.strokes.d.ts.map +1 -0
  147. package/dist/components/text/fonts/playfair-display.strokes.js +4 -0
  148. package/dist/components/text/fonts/roboto.outline.d.ts +3 -0
  149. package/dist/components/text/fonts/roboto.outline.d.ts.map +1 -0
  150. package/dist/components/text/fonts/roboto.outline.js +4 -0
  151. package/dist/components/text/fonts/roboto.strokes.d.ts +3 -0
  152. package/dist/components/text/fonts/roboto.strokes.d.ts.map +1 -0
  153. package/dist/components/text/fonts/roboto.strokes.js +4 -0
  154. package/dist/components/text/index.d.ts +2 -0
  155. package/dist/components/text/index.d.ts.map +1 -1
  156. package/dist/components/text/index.js +1 -0
  157. package/dist/components/text/useTextObject.d.ts +1 -0
  158. package/dist/components/text/useTextObject.d.ts.map +1 -1
  159. package/dist/components/text/useTextObject.js +23 -11
  160. package/dist/components/water/OceanSurface.d.ts.map +1 -1
  161. package/dist/components/water/OceanSurface.js +5 -1
  162. package/dist/components/water/types.d.ts +3 -1
  163. package/dist/components/water/types.d.ts.map +1 -1
  164. package/dist/constants.d.ts +1 -1
  165. package/dist/constants.d.ts.map +1 -1
  166. package/dist/constants.js +3 -1
  167. package/dist/hooks/useOceanMaterial.d.ts +6 -2
  168. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  169. package/dist/hooks/useOceanMaterial.js +22 -2
  170. package/dist/hooks/useOrbitTargetFollow.d.ts +10 -0
  171. package/dist/hooks/useOrbitTargetFollow.d.ts.map +1 -0
  172. package/dist/hooks/useOrbitTargetFollow.js +194 -0
  173. package/dist/index.d.ts +2 -1
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +2 -1
  176. package/dist/operations/catalogue/flock.d.ts.map +1 -1
  177. package/dist/operations/catalogue/flock.js +44 -9
  178. package/dist/operations/catalogue/inkBloom.d.ts.map +1 -1
  179. package/dist/operations/catalogue/inkBloom.js +46 -9
  180. package/dist/operations/catalogue/liquidMetal.d.ts.map +1 -1
  181. package/dist/operations/catalogue/liquidMetal.js +41 -12
  182. package/dist/operations/catalogue/particleSwarm.d.ts.map +1 -1
  183. package/dist/operations/catalogue/particleSwarm.js +29 -9
  184. package/dist/operations/catalogue/petalPeel.d.ts.map +1 -1
  185. package/dist/operations/catalogue/petalPeel.js +33 -9
  186. package/dist/operations/catalogue/portal.d.ts.map +1 -1
  187. package/dist/operations/catalogue/portal.js +33 -11
  188. package/dist/operations/catalogue/sandErosion.d.ts.map +1 -1
  189. package/dist/operations/catalogue/sandErosion.js +36 -14
  190. package/dist/operations/catalogue/teleport.d.ts.map +1 -1
  191. package/dist/operations/catalogue/teleport.js +43 -12
  192. package/dist/operations/catalogue/unweave.d.ts.map +1 -1
  193. package/dist/operations/catalogue/unweave.js +34 -15
  194. package/dist/operations/catalogue/voxelize.d.ts.map +1 -1
  195. package/dist/operations/catalogue/voxelize.js +37 -10
  196. package/dist/shaders/glsl/terrainCore.glsl.d.ts +18 -3
  197. package/dist/shaders/glsl/terrainCore.glsl.d.ts.map +1 -1
  198. package/dist/shaders/glsl/terrainCore.glsl.js +42 -21
  199. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +36 -11
  200. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
  201. package/dist/shaders/ocean/OceanSurfaceMaterial.js +96 -5
  202. package/dist/triggers/engine.d.ts +1 -1
  203. package/dist/triggers/engine.d.ts.map +1 -1
  204. package/dist/triggers/engine.js +3 -0
  205. package/dist/triggers/hosts/actions.d.ts.map +1 -1
  206. package/dist/triggers/hosts/actions.js +3 -1
  207. package/dist/triggers/hosts/interactions.d.ts.map +1 -1
  208. package/dist/triggers/hosts/interactions.js +1 -1
  209. package/dist/triggers/hosts/timelineCues.js +1 -1
  210. package/dist/triggers/kinds/change.d.ts +4 -0
  211. package/dist/triggers/kinds/change.d.ts.map +1 -0
  212. package/dist/triggers/kinds/change.js +50 -0
  213. package/dist/triggers/kinds/index.d.ts +1 -0
  214. package/dist/triggers/kinds/index.d.ts.map +1 -1
  215. package/dist/triggers/kinds/index.js +1 -0
  216. package/dist/utils/CameraSingleton.d.ts +4 -0
  217. package/dist/utils/CameraSingleton.d.ts.map +1 -1
  218. package/dist/utils/CameraSingleton.js +4 -0
  219. package/dist/utils/deviceTier.d.ts +2 -0
  220. package/dist/utils/deviceTier.d.ts.map +1 -0
  221. package/dist/utils/deviceTier.js +16 -0
  222. package/dist/utils/environmentDrawOrder.d.ts +23 -0
  223. package/dist/utils/environmentDrawOrder.d.ts.map +1 -0
  224. package/dist/utils/environmentDrawOrder.js +22 -0
  225. package/dist/utils/pickProxy.d.ts +11 -0
  226. package/dist/utils/pickProxy.d.ts.map +1 -0
  227. package/dist/utils/pickProxy.js +36 -0
  228. package/dist/utils/shapes.d.ts +4 -0
  229. package/dist/utils/shapes.d.ts.map +1 -1
  230. package/dist/utils/shapes.js +4 -1
  231. package/dist/utils/terrainUniforms.d.ts +7 -0
  232. package/dist/utils/terrainUniforms.d.ts.map +1 -1
  233. package/dist/utils/terrainUniforms.js +15 -2
  234. package/dist/utils/textShape.d.ts +24 -0
  235. package/dist/utils/textShape.d.ts.map +1 -0
  236. package/dist/utils/textShape.js +102 -0
  237. 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,CAuJzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
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
- const zoomRestore = useRef(null);
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
- const z = zoomRestore.current;
162
- if (z?.controls)
163
- z.controls.enableZoom = z.enableZoom;
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
- const z = zoomRestore.current;
191
- if (wheelActive && controls && !z) {
192
- zoomRestore.current = { controls, enableZoom: controls.enableZoom !== false };
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 ((!wheelActive || z?.controls !== controls) && z) {
196
- if (z.controls)
197
- z.controls.enableZoom = z.enableZoom;
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":"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"}
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 idsOf = (c) => (c?.kind === 'effect' ? c.effect?.targets ?? [] : c?.kind === 'effectClip' ? c.use?.targets ?? [] : []);
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;AAgB/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;AAsLD,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"}
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,CAsBzE;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"}
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":"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"}
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
- if (cmd?.kind !== 'action')
139
- continue;
140
- const action = getAction(cmd.ref);
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 action.targets) {
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":"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"}
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":"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"}
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;;;;;;;;;;OAUG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;IAC9D,+FAA+F;IAC/F,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1D,sEAAsE;IACtE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC3D;AAED,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5H,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE;QACL,IAAI,IAAI,eAAe,EAAE,CAAC;QAC1B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7B,0FAA0F;QAC1F,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAChC,gFAAgF;QAChF,KAAK,IAAI,IAAI,CAAC;KACjB,CAAC;IACF,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACpC,SAAS,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG;QAC1C;;;;WAIG;QACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QACpD,qDAAqD;QACrD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACpC,CAAC;IACF,sDAAsD;IACtD,MAAM,EAAE,WAAW,CAAC;IACpB,4FAA4F;IAC5F,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACxF;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAoBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,iBAAiB,GAAG,WAAW,CA6OjF"}
@@ -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"}