@3driseai/3drise-viewer 0.1.5 → 0.1.7

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 (203) hide show
  1. package/README.md +225 -0
  2. package/dist/components/AdvancedGrid.d.ts +16 -0
  3. package/dist/components/AdvancedGrid.d.ts.map +1 -0
  4. package/dist/components/AdvancedGrid.js +63 -0
  5. package/dist/components/AnimatedObject.d.ts.map +1 -1
  6. package/dist/components/AnimatedObject.js +6 -4
  7. package/dist/components/CameraController.d.ts.map +1 -1
  8. package/dist/components/CameraController.js +0 -6
  9. package/dist/components/CircuitGrid.d.ts +22 -0
  10. package/dist/components/CircuitGrid.d.ts.map +1 -0
  11. package/dist/components/CircuitGrid.js +69 -0
  12. package/dist/components/Clouds.d.ts.map +1 -1
  13. package/dist/components/Clouds.js +0 -5
  14. package/dist/components/ContourGrid.d.ts +25 -0
  15. package/dist/components/ContourGrid.d.ts.map +1 -0
  16. package/dist/components/ContourGrid.js +74 -0
  17. package/dist/components/CreatedObject.d.ts.map +1 -1
  18. package/dist/components/CreatedObject.js +3 -6
  19. package/dist/components/CustomPrimitive.d.ts.map +1 -1
  20. package/dist/components/CustomPrimitive.js +1 -6
  21. package/dist/components/EffectsGenerator.d.ts.map +1 -1
  22. package/dist/components/EffectsGenerator.js +0 -2
  23. package/dist/components/EffectsGroup.d.ts +6 -0
  24. package/dist/components/EffectsGroup.d.ts.map +1 -1
  25. package/dist/components/EffectsGroup.js +14 -4
  26. package/dist/components/FractalGrid.d.ts +23 -0
  27. package/dist/components/FractalGrid.d.ts.map +1 -0
  28. package/dist/components/FractalGrid.js +72 -0
  29. package/dist/components/Frame.d.ts.map +1 -1
  30. package/dist/components/Frame.js +2 -3
  31. package/dist/components/GalleryLayout.d.ts.map +1 -1
  32. package/dist/components/GalleryLayout.js +0 -3
  33. package/dist/components/GeometryShape.d.ts.map +1 -1
  34. package/dist/components/GeometryShape.js +19 -7
  35. package/dist/components/Glyphs.d.ts.map +1 -1
  36. package/dist/components/Glyphs.js +0 -1
  37. package/dist/components/GridsGenerator.d.ts +4 -1
  38. package/dist/components/GridsGenerator.d.ts.map +1 -1
  39. package/dist/components/GridsGenerator.js +28 -4
  40. package/dist/components/HdrPlaylistRenderer.d.ts.map +1 -1
  41. package/dist/components/HdrPlaylistRenderer.js +0 -1
  42. package/dist/components/HexGrid.d.ts +25 -0
  43. package/dist/components/HexGrid.d.ts.map +1 -0
  44. package/dist/components/HexGrid.js +72 -0
  45. package/dist/components/ImageGeometry.js +1 -1
  46. package/dist/components/Letter.d.ts.map +1 -1
  47. package/dist/components/Letter.js +1 -6
  48. package/dist/components/MoireGrid.d.ts +23 -0
  49. package/dist/components/MoireGrid.d.ts.map +1 -0
  50. package/dist/components/MoireGrid.js +76 -0
  51. package/dist/components/Moon.d.ts.map +1 -1
  52. package/dist/components/Moon.js +0 -1
  53. package/dist/components/ObjectNode.d.ts +1 -2
  54. package/dist/components/ObjectNode.d.ts.map +1 -1
  55. package/dist/components/ObjectNode.js +18 -29
  56. package/dist/components/ObjectNodeApi.d.ts +1 -2
  57. package/dist/components/ObjectNodeApi.d.ts.map +1 -1
  58. package/dist/components/ObjectNodeApi.js +7 -3
  59. package/dist/components/ObjectsRenderer.d.ts.map +1 -1
  60. package/dist/components/ObjectsRenderer.js +1 -4
  61. package/dist/components/ObjectsRendererApi.d.ts.map +1 -1
  62. package/dist/components/ObjectsRendererApi.js +4 -2
  63. package/dist/components/Ocean.d.ts.map +1 -1
  64. package/dist/components/Ocean.js +1 -4
  65. package/dist/components/ParticlesR3f.d.ts +0 -1
  66. package/dist/components/ParticlesR3f.d.ts.map +1 -1
  67. package/dist/components/ParticlesR3f.js +63 -12
  68. package/dist/components/PathRenderer.d.ts.map +1 -1
  69. package/dist/components/PathRenderer.js +0 -1
  70. package/dist/components/PointCloud.d.ts.map +1 -1
  71. package/dist/components/PointCloud.js +50 -10
  72. package/dist/components/ProjectLoader.d.ts.map +1 -1
  73. package/dist/components/ProjectLoader.js +0 -28
  74. package/dist/components/QuasiGrid.d.ts +22 -0
  75. package/dist/components/QuasiGrid.d.ts.map +1 -0
  76. package/dist/components/QuasiGrid.js +68 -0
  77. package/dist/components/RadarGrid.d.ts +24 -0
  78. package/dist/components/RadarGrid.d.ts.map +1 -0
  79. package/dist/components/RadarGrid.js +71 -0
  80. package/dist/components/SceneBuilder.d.ts.map +1 -1
  81. package/dist/components/SceneBuilder.js +0 -1
  82. package/dist/components/ShootingStar.js +2 -2
  83. package/dist/components/ShootingStars.d.ts.map +1 -1
  84. package/dist/components/ShootingStars.js +0 -1
  85. package/dist/components/SkyController.d.ts.map +1 -1
  86. package/dist/components/SkyController.js +0 -3
  87. package/dist/components/Skybox.d.ts +5 -0
  88. package/dist/components/Skybox.d.ts.map +1 -1
  89. package/dist/components/Skybox.js +0 -1
  90. package/dist/components/SparklesBurst.d.ts.map +1 -1
  91. package/dist/components/SparklesBurst.js +0 -1
  92. package/dist/components/VoronoiGrid.d.ts +21 -0
  93. package/dist/components/VoronoiGrid.d.ts.map +1 -0
  94. package/dist/components/VoronoiGrid.js +67 -0
  95. package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
  96. package/dist/components/effects/ShockwaveEffect.js +0 -1
  97. package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
  98. package/dist/components/effects/SmokeRibbon.js +0 -1
  99. package/dist/components/index.d.ts +19 -2
  100. package/dist/components/index.d.ts.map +1 -1
  101. package/dist/components/index.js +9 -1
  102. package/dist/constants.d.ts +1 -0
  103. package/dist/constants.d.ts.map +1 -1
  104. package/dist/constants.js +6 -0
  105. package/dist/hooks/index.d.ts +4 -1
  106. package/dist/hooks/index.d.ts.map +1 -1
  107. package/dist/hooks/index.js +3 -1
  108. package/dist/hooks/use3driseShader.d.ts.map +1 -1
  109. package/dist/hooks/use3driseShader.js +0 -9
  110. package/dist/hooks/useAnimationEvents.d.ts.map +1 -1
  111. package/dist/hooks/useAnimationEvents.js +0 -19
  112. package/dist/hooks/useCameraAnimation.d.ts.map +1 -1
  113. package/dist/hooks/useCameraAnimation.js +0 -5
  114. package/dist/hooks/useContinuousEffects.d.ts +2 -3
  115. package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
  116. package/dist/hooks/useContinuousEffects.js +16 -61
  117. package/dist/hooks/useFrameAnimations.d.ts.map +1 -1
  118. package/dist/hooks/useFrameAnimations.js +0 -4
  119. package/dist/hooks/useGridSurface.d.ts +46 -0
  120. package/dist/hooks/useGridSurface.d.ts.map +1 -0
  121. package/dist/hooks/useGridSurface.js +66 -0
  122. package/dist/hooks/useGsapAnimation.d.ts.map +1 -1
  123. package/dist/hooks/useGsapAnimation.js +0 -3
  124. package/dist/hooks/useInteraction.d.ts.map +1 -1
  125. package/dist/hooks/useInteraction.js +0 -25
  126. package/dist/hooks/useInteractionEffects.d.ts +2 -2
  127. package/dist/hooks/useInteractionEffects.d.ts.map +1 -1
  128. package/dist/hooks/useInteractionEffects.js +3 -1
  129. package/dist/hooks/useMaterialApplication.d.ts +2 -2
  130. package/dist/hooks/useMaterialApplication.d.ts.map +1 -1
  131. package/dist/hooks/useMaterialApplication.js +9 -21
  132. package/dist/hooks/useMaterialOptions.d.ts +2 -2
  133. package/dist/hooks/useMaterialOptions.d.ts.map +1 -1
  134. package/dist/hooks/useMaterialOptions.js +13 -37
  135. package/dist/hooks/useMeshController.d.ts.map +1 -1
  136. package/dist/hooks/useMeshController.js +0 -16
  137. package/dist/hooks/useObjectAnimation.d.ts +13 -2
  138. package/dist/hooks/useObjectAnimation.d.ts.map +1 -1
  139. package/dist/hooks/useObjectAnimation.js +26 -28
  140. package/dist/hooks/useObjectEdges.d.ts +2 -1
  141. package/dist/hooks/useObjectEdges.d.ts.map +1 -1
  142. package/dist/hooks/useObjectEdges.js +18 -52
  143. package/dist/hooks/useObjectEffects.d.ts.map +1 -1
  144. package/dist/hooks/useObjectEffects.js +0 -4
  145. package/dist/hooks/useRegisterScene.d.ts +17 -0
  146. package/dist/hooks/useRegisterScene.d.ts.map +1 -0
  147. package/dist/hooks/useRegisterScene.js +33 -0
  148. package/dist/hooks/useSequenceAnimation.d.ts +2 -2
  149. package/dist/hooks/useSequenceAnimation.d.ts.map +1 -1
  150. package/dist/hooks/useSequenceAnimation.js +5 -70
  151. package/dist/hooks/useShadowApplication.d.ts +2 -2
  152. package/dist/hooks/useShadowApplication.d.ts.map +1 -1
  153. package/dist/hooks/useShadowApplication.js +6 -2
  154. package/dist/hooks/useSkyAnimation.d.ts.map +1 -1
  155. package/dist/hooks/useSkyAnimation.js +0 -1
  156. package/dist/hooks/useSkySystem.d.ts.map +1 -1
  157. package/dist/hooks/useSkySystem.js +0 -1
  158. package/dist/index.d.ts +3 -1
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +2 -1
  161. package/dist/services/AnimationsManager.d.ts.map +1 -1
  162. package/dist/services/AnimationsManager.js +0 -1
  163. package/dist/shaders/CircuitGridMaterial.d.ts +76 -0
  164. package/dist/shaders/CircuitGridMaterial.d.ts.map +1 -0
  165. package/dist/shaders/CircuitGridMaterial.js +298 -0
  166. package/dist/shaders/ContourGridMaterial.d.ts +80 -0
  167. package/dist/shaders/ContourGridMaterial.d.ts.map +1 -0
  168. package/dist/shaders/ContourGridMaterial.js +259 -0
  169. package/dist/shaders/FractalGridMaterial.d.ts +76 -0
  170. package/dist/shaders/FractalGridMaterial.d.ts.map +1 -0
  171. package/dist/shaders/FractalGridMaterial.js +247 -0
  172. package/dist/shaders/HexGridMaterial.d.ts +73 -0
  173. package/dist/shaders/HexGridMaterial.d.ts.map +1 -0
  174. package/dist/shaders/HexGridMaterial.js +265 -0
  175. package/dist/shaders/MoireGridMaterial.d.ts +79 -0
  176. package/dist/shaders/MoireGridMaterial.d.ts.map +1 -0
  177. package/dist/shaders/MoireGridMaterial.js +271 -0
  178. package/dist/shaders/QuasiGridMaterial.d.ts +76 -0
  179. package/dist/shaders/QuasiGridMaterial.d.ts.map +1 -0
  180. package/dist/shaders/QuasiGridMaterial.js +238 -0
  181. package/dist/shaders/RadarGridMaterial.d.ts +77 -0
  182. package/dist/shaders/RadarGridMaterial.d.ts.map +1 -0
  183. package/dist/shaders/RadarGridMaterial.js +291 -0
  184. package/dist/shaders/VoronoiGridMaterial.d.ts +73 -0
  185. package/dist/shaders/VoronoiGridMaterial.d.ts.map +1 -0
  186. package/dist/shaders/VoronoiGridMaterial.js +266 -0
  187. package/dist/types/gridConfigs.d.ts +202 -0
  188. package/dist/types/gridConfigs.d.ts.map +1 -0
  189. package/dist/types/gridConfigs.js +11 -0
  190. package/dist/types/index.d.ts +1 -0
  191. package/dist/types/index.d.ts.map +1 -1
  192. package/dist/utils/handleGenerativeEffectsAnimations.d.ts +0 -1
  193. package/dist/utils/handleGenerativeEffectsAnimations.d.ts.map +1 -1
  194. package/dist/utils/handleGenerativeEffectsAnimations.js +0 -29
  195. package/dist/utils/pointsMaterialOwnership.d.ts +9 -0
  196. package/dist/utils/pointsMaterialOwnership.d.ts.map +1 -0
  197. package/dist/utils/pointsMaterialOwnership.js +14 -0
  198. package/dist/utils/resolveObject3D.d.ts +20 -0
  199. package/dist/utils/resolveObject3D.d.ts.map +1 -0
  200. package/dist/utils/resolveObject3D.js +9 -0
  201. package/dist/utils/shapes.d.ts.map +1 -1
  202. package/dist/utils/shapes.js +0 -1
  203. package/package.json +4 -4
@@ -1,35 +1,33 @@
1
+ import { useRef } from 'react';
2
+ import { useFrame } from '@react-three/fiber';
1
3
  import { findById } from '@3driseai/3drise-core';
2
4
  import { useContinuousEffects } from "./useContinuousEffects.js";
3
5
  import { useMouseMove } from "./useInteractionEffects.js";
4
6
  import { useSequenceAnimation } from "./useSequenceAnimation.js";
5
- const DEBUG_OBJECT_ANIMATION = false;
6
- const debugLog = (...args) => {
7
- if (DEBUG_OBJECT_ANIMATION) {
8
- console.log('[useObjectAnimation]', ...args);
9
- }
10
- };
11
- export const useObjectAnimation = (objectSettings, animateMaterial, options = {}, ref) => {
7
+ /**
8
+ * Drive every continuous animation for one scene object.
9
+ *
10
+ * Pass the **ref** the caller put on its own group. The hooks below read
11
+ * `.current` inside useFrame, so the object resolves as soon as React attaches
12
+ * it — no re-render required, and no per-render scene traversal.
13
+ *
14
+ * With no `object` at all, the object is looked up by id once, from inside the
15
+ * frame loop, as a fallback for callers that only hold settings. That path
16
+ * needs `SceneStore.scene` to be populated (see `useRegisterScene`).
17
+ */
18
+ export const useObjectAnimation = (objectSettings, animateMaterial, options = {}, object) => {
12
19
  const { enabled = true, hovered = false } = options;
13
- const objectRef = ref || findById(objectSettings?.id);
14
- // console.log(objectSettings?.id, objectRef);
15
- // debugLog('hook run', {
16
- // objectId: objectSettings?.id,
17
- // hasRefArg: !!ref,
18
- // resolvedObject: objectRef ? { name: objectRef.name, id: objectRef.userData?.id } : null,
19
- // enabled,
20
- // hovered,
21
- // animateMaterial,
22
- // });
23
- if (!objectRef) {
24
- debugLog('No object ref found, skipping animation setup', {
25
- name: objectSettings?.meshSettings.name,
26
- hasRefArg: !!ref,
27
- });
28
- // return null;
29
- }
30
- // console.log(hovered)
31
- const continuousResult = useContinuousEffects(objectSettings, { enabled, animateMaterial, hovered }, objectRef);
32
- const mouseMoveResult = useMouseMove(objectSettings, { enabled, animateMaterial }, objectRef);
33
- useSequenceAnimation(objectSettings?.id, objectRef);
20
+ // Fallback for ref-less callers. Resolved in the frame loop rather than
21
+ // during render, because at render time the object is not in the scene yet.
22
+ const fallbackRef = useRef(null);
23
+ useFrame(() => {
24
+ if (object || fallbackRef.current || !objectSettings?.id)
25
+ return;
26
+ fallbackRef.current = findById(objectSettings.id);
27
+ });
28
+ const source = object ?? fallbackRef;
29
+ const continuousResult = useContinuousEffects(objectSettings, { enabled, animateMaterial, hovered }, source);
30
+ const mouseMoveResult = useMouseMove(objectSettings, { enabled, animateMaterial }, source);
31
+ useSequenceAnimation(objectSettings?.id, source);
34
32
  return { ...continuousResult, ...mouseMoveResult };
35
33
  };
@@ -1,3 +1,4 @@
1
1
  import type { ObjectEdges } from '@3driseai/3drise-core';
2
- export declare function useObjectEdges(objectId: string, edgesSettings: ObjectEdges): void;
2
+ import type { Object3DSource } from '../utils/resolveObject3D';
3
+ export declare function useObjectEdges(objectId: string, edgesSettings: ObjectEdges, objectSource?: Object3DSource): void;
3
4
  //# sourceMappingURL=useObjectEdges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectEdges.d.ts","sourceRoot":"","sources":["../../src/hooks/useObjectEdges.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAiKzD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,GAAG,IAAI,CAkCjF"}
1
+ {"version":3,"file":"useObjectEdges.d.ts","sourceRoot":"","sources":["../../src/hooks/useObjectEdges.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAmH/D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CA6ChH"}
@@ -1,59 +1,14 @@
1
- import { useEffect, useMemo, useRef } from 'react';
2
- import { BoxGeometry, BufferGeometry, CylinderGeometry, EdgesGeometry, Group, LineSegments, Mesh, MeshBasicMaterial, Points, PointsMaterial, Quaternion, Vector3, Float32BufferAttribute, } from 'three';
1
+ import { useEffect, useMemo, useRef, useState } from 'react';
2
+ import { BoxGeometry, CylinderGeometry, EdgesGeometry, Group, LineSegments, Mesh, MeshBasicMaterial, Points, PointsMaterial, Quaternion, Vector3, } from 'three';
3
3
  import { useFrame } from '@react-three/fiber';
4
- import { collectMeshes, computeThreshold, buildSubdividedEdgeGeometry, EDGES_GROUP_KEY, animateUniforms, cacheChildrenWithMaterials, findById } from '@3driseai/3drise-core';
4
+ import { collectMeshes, computeThreshold, buildSubdividedEdgeGeometry, buildSegmentQuadGeometry, EDGES_GROUP_KEY, animateUniforms, cacheChildrenWithMaterials, findById } from '@3driseai/3drise-core';
5
5
  import { useMaterialApplication } from './useMaterialApplication.js';
6
+ import { resolveObject3D } from '../utils/resolveObject3D.js';
6
7
  ;
7
8
  // import { animateUniforms, cacheChildrenWithMaterials } from "~/utils/materialUtils";
8
9
  const DEFAULT_TUBE_RADIUS = 0.01;
9
10
  const DEFAULT_CUBE_SIZE = 0.02;
10
11
  // ─── Builders ────────────────────────────────────────────────────────────────
11
- function edgesGeoToQuadMesh(edgesGeo, thickness = 0.008) {
12
- const src = edgesGeo.attributes.position;
13
- const segCount = src.count / 2; // each segment = 2 vertices
14
- const positions = [];
15
- const uvs = [];
16
- const indices = [];
17
- const start = new Vector3();
18
- const end = new Vector3();
19
- const dir = new Vector3();
20
- const up = new Vector3(0, 1, 0);
21
- const right = new Vector3();
22
- for (let i = 0; i < segCount; i++) {
23
- start.fromBufferAttribute(src, i * 2);
24
- end.fromBufferAttribute(src, i * 2 + 1);
25
- dir.subVectors(end, start).normalize();
26
- // Perpendicular axis — fallback to X if segment is vertical
27
- right.crossVectors(dir, up).normalize();
28
- if (right.lengthSq() < 0.0001) {
29
- right.set(1, 0, 0);
30
- }
31
- const rx = right.x * thickness;
32
- const ry = right.y * thickness;
33
- const rz = right.z * thickness;
34
- const base = i * 4;
35
- // v0 start-bottom uv(0,0)
36
- positions.push(start.x - rx, start.y - ry, start.z - rz);
37
- uvs.push(0, 0);
38
- // v1 end-bottom uv(1,0)
39
- positions.push(end.x - rx, end.y - ry, end.z - rz);
40
- uvs.push(1, 0);
41
- // v2 start-top uv(0,1)
42
- positions.push(start.x + rx, start.y + ry, start.z + rz);
43
- uvs.push(0, 1);
44
- // v3 end-top uv(1,1)
45
- positions.push(end.x + rx, end.y + ry, end.z + rz);
46
- uvs.push(1, 1);
47
- indices.push(base, base + 1, base + 2);
48
- indices.push(base + 1, base + 3, base + 2);
49
- }
50
- const geo = new BufferGeometry();
51
- geo.setAttribute("position", new Float32BufferAttribute(positions, 3));
52
- geo.setAttribute("uv", new Float32BufferAttribute(uvs, 2));
53
- geo.setIndex(indices);
54
- geo.computeVertexNormals();
55
- return new Mesh(geo);
56
- }
57
12
  function buildLineGroup(object, localParent) {
58
13
  const g = new Group();
59
14
  for (const { mesh, matrixRelativeToRoot } of collectMeshes(object, localParent)) {
@@ -63,7 +18,7 @@ function buildLineGroup(object, localParent) {
63
18
  const quaternion = new Quaternion();
64
19
  const scale = new Vector3();
65
20
  matrixRelativeToRoot.decompose(position, quaternion, scale);
66
- const quadMesh = edgesGeoToQuadMesh(edgesGeo);
21
+ const quadMesh = new Mesh(buildSegmentQuadGeometry(edgesGeo.attributes.position));
67
22
  quadMesh.position.copy(position);
68
23
  quadMesh.quaternion.copy(quaternion);
69
24
  quadMesh.scale.copy(scale);
@@ -162,9 +117,20 @@ function disposeGroup(group) {
162
117
  });
163
118
  }
164
119
  // ─── Hook ─────────────────────────────────────────────────────────────────────
165
- export function useObjectEdges(objectId, edgesSettings) {
120
+ export function useObjectEdges(objectId, edgesSettings, objectSource) {
166
121
  const childrenWithMaterialsRef = useRef([]);
167
- const object = findById(objectId);
122
+ const edgesEnabled = !!edgesSettings?.enabled;
123
+ // Resolved in an effect, never during render: a ref only attaches after the
124
+ // render that mounts it, and findById is a full scene traverse. Gating on
125
+ // `enabled` keeps the many objects with no edges from paying for it at all.
126
+ const [object, setObject] = useState(null);
127
+ useEffect(() => {
128
+ if (!edgesEnabled) {
129
+ setObject(null);
130
+ return;
131
+ }
132
+ setObject(resolveObject3D(objectSource) ?? findById(objectId));
133
+ }, [edgesEnabled, objectId, objectSource]);
168
134
  const edgesGroup = useMemo(() => {
169
135
  if (!object || !edgesSettings.enabled)
170
136
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectEffects.d.ts","sourceRoot":"","sources":["../../src/hooks/useObjectEffects.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,qBAAqB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IAClE,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CAoJzD;AACD,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"useObjectEffects.d.ts","sourceRoot":"","sources":["../../src/hooks/useObjectEffects.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,qBAAqB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,iBAAiB,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAED,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IAClE,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,sBAAsB,CAgJzD;AACD,eAAe,gBAAgB,CAAC"}
@@ -18,7 +18,6 @@ export function useObjectEffects() {
18
18
  // Vanish Effect
19
19
  // ============================================================================
20
20
  const vanishObject = useCallback((object, duration = 1.0, ease = "power2.inOut") => {
21
- console.log('[useObjectEffects] vanishObject:', object.uuid);
22
21
  object.traverse((child) => {
23
22
  if (child.isMesh) {
24
23
  const mesh = child;
@@ -44,7 +43,6 @@ export function useObjectEffects() {
44
43
  vanishedObjects.current.add(object.uuid);
45
44
  }, []);
46
45
  const restoreVanishedObject = useCallback((object, duration = 1.0, ease = "power2.inOut") => {
47
- console.log('[useObjectEffects] restoreVanishedObject:', object.uuid);
48
46
  object.visible = true;
49
47
  object.traverse((child) => {
50
48
  if (child.isMesh) {
@@ -72,7 +70,6 @@ export function useObjectEffects() {
72
70
  // Glow Effect
73
71
  // ============================================================================
74
72
  const animateGlowEffect = useCallback((object) => {
75
- console.log('[useObjectEffects] animateGlowEffect:', object.uuid);
76
73
  object.traverse((child) => {
77
74
  if (child.isMesh) {
78
75
  const mesh = child;
@@ -105,7 +102,6 @@ export function useObjectEffects() {
105
102
  glowingObjects.current.add(object.uuid);
106
103
  }, []);
107
104
  const removeGlow = useCallback((object) => {
108
- console.log('[useObjectEffects] removeGlow:', object.uuid);
109
105
  object.traverse((child) => {
110
106
  if (child.isMesh) {
111
107
  const mesh = child;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Publish the surrounding canvas's scene and renderer to `SceneStore`.
3
+ *
4
+ * `SceneStore` backs the id-based lookups in `findById` / `findByName`, which
5
+ * click interactions use to target objects *other* than the one clicked. It was
6
+ * previously only ever populated by `SceneBuilder`, so those lookups returned
7
+ * null for anything rendered into a host application's own <Canvas>.
8
+ *
9
+ * Call this from any component that renders 3dRise content inside a canvas it
10
+ * does not own. Must be called inside a <Canvas>.
11
+ *
12
+ * Note that `SceneStore` is a module-level singleton: with several independent
13
+ * canvases on one page, the last one mounted wins.
14
+ */
15
+ export declare function useRegisterScene(): void;
16
+ export default useRegisterScene;
17
+ //# sourceMappingURL=useRegisterScene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRegisterScene.d.ts","sourceRoot":"","sources":["../../src/hooks/useRegisterScene.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAcvC;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { useEffect } from 'react';
2
+ import { useThree } from '@react-three/fiber';
3
+ import { SceneStore } from '@3driseai/3drise-core';
4
+ /**
5
+ * Publish the surrounding canvas's scene and renderer to `SceneStore`.
6
+ *
7
+ * `SceneStore` backs the id-based lookups in `findById` / `findByName`, which
8
+ * click interactions use to target objects *other* than the one clicked. It was
9
+ * previously only ever populated by `SceneBuilder`, so those lookups returned
10
+ * null for anything rendered into a host application's own <Canvas>.
11
+ *
12
+ * Call this from any component that renders 3dRise content inside a canvas it
13
+ * does not own. Must be called inside a <Canvas>.
14
+ *
15
+ * Note that `SceneStore` is a module-level singleton: with several independent
16
+ * canvases on one page, the last one mounted wins.
17
+ */
18
+ export function useRegisterScene() {
19
+ const scene = useThree(state => state.scene);
20
+ const gl = useThree(state => state.gl);
21
+ useEffect(() => {
22
+ SceneStore.scene = scene;
23
+ SceneStore.gl = gl;
24
+ return () => {
25
+ // Only clear what we set — another canvas may have taken over.
26
+ if (SceneStore.scene === scene)
27
+ SceneStore.scene = null;
28
+ if (SceneStore.gl === gl)
29
+ SceneStore.gl = null;
30
+ };
31
+ }, [scene, gl]);
32
+ }
33
+ export default useRegisterScene;
@@ -1,4 +1,4 @@
1
- import type { Object3D } from "three";
1
+ import type { Object3DSource } from '../utils/resolveObject3D';
2
2
  /**
3
3
  * useSequenceAnimation
4
4
  *
@@ -9,6 +9,6 @@ import type { Object3D } from "three";
9
9
  * Designed to be called inside useObjectAnimation so that AnimatedObject stays
10
10
  * a thin group wrapper.
11
11
  */
12
- export declare const useSequenceAnimation: (objectId: string | undefined, objectRef: Object3D | null | undefined) => void;
12
+ export declare const useSequenceAnimation: (objectId: string | undefined, objectSource?: Object3DSource) => void;
13
13
  export default useSequenceAnimation;
14
14
  //# sourceMappingURL=useSequenceAnimation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSequenceAnimation.d.ts","sourceRoot":"","sources":["../../src/hooks/useSequenceAnimation.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AA2BtC;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,GAAG,SAAS,EAAE,WAAW,QAAQ,GAAG,IAAI,GAAG,SAAS,KAAG,IAyN3G,CAAC;AACF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"useSequenceAnimation.d.ts","sourceRoot":"","sources":["../../src/hooks/useSequenceAnimation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAqB/D;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,GAAG,SAAS,EAAE,eAAe,cAAc,KAAG,IA6JlG,CAAC;AACF,eAAe,oBAAoB,CAAC"}
@@ -4,12 +4,7 @@ import { AnimationsManager, findById } from '@3driseai/3drise-core';
4
4
  import { useAnimationEvents } from './useAnimationEvents.js';
5
5
  import { usePathAnimation } from './usePathAnimation.js';
6
6
  import { snapshotMaterialValues, interpolateMaterialProps } from '../utils/materialUtils.js';
7
- const DEBUG_SEQUENCE_ANIMATION = true;
8
- const debugLog = (...args) => {
9
- if (DEBUG_SEQUENCE_ANIMATION) {
10
- console.log('[useSequenceAnimation]', ...args);
11
- }
12
- };
7
+ import { resolveObject3D } from '../utils/resolveObject3D.js';
13
8
  // ─────────────────────────────────────────────────────────────────────────────
14
9
  // Helpers
15
10
  // ─────────────────────────────────────────────────────────────────────────────
@@ -39,15 +34,12 @@ function extractMaterialProps(props) {
39
34
  * Designed to be called inside useObjectAnimation so that AnimatedObject stays
40
35
  * a thin group wrapper.
41
36
  */
42
- export const useSequenceAnimation = (objectId, objectRef) => {
37
+ export const useSequenceAnimation = (objectId, objectSource) => {
43
38
  const { startPathAnimation, updatePathAnimation, stopPathAnimation, isAnimating: isPathAnimating } = usePathAnimation();
44
39
  const resolveObject = () => {
45
- const resolved = objectRef ?? (objectId ? findById(objectId) : null);
46
- // console.log('Resolved object for sequence animation', {
47
- // objectId,
48
- // hasRefArg: !!objectRef,
49
- // resolved: resolved ? { name: resolved.name, id: resolved.userData?.id } : null,
50
- // });
40
+ // Called from the frame loop, so a ref resolves as soon as React
41
+ // attaches it. findById stays as a fallback for id-only callers.
42
+ const resolved = resolveObject3D(objectSource) ?? (objectId ? findById(objectId) : null);
51
43
  return resolved;
52
44
  };
53
45
  // Active step state. Null = no sequence step currently animating.
@@ -56,7 +48,6 @@ export const useSequenceAnimation = (objectId, objectRef) => {
56
48
  const progressRef = useRef(1);
57
49
  const updateProgressRef = (p) => {
58
50
  progressRef.current = p;
59
- // console.log('Progress update', { objectId, progress: p });
60
51
  };
61
52
  const updateStepRef = (state) => {
62
53
  stepRef.current = state;
@@ -65,51 +56,20 @@ export const useSequenceAnimation = (objectId, objectRef) => {
65
56
  useAnimationEvents({
66
57
  onStepStart: (event) => {
67
58
  if (!objectId || !event.step?.transitions) {
68
- // debugLog('stepStart ignored: missing objectId or transitions', {
69
- // objectId,
70
- // hasTransitions: !!event.step?.transitions,
71
- // sequenceId: event.sequenceId,
72
- // stepIndex: event.stepIndex,
73
- // });
74
59
  return;
75
60
  }
76
- // debugLog('stepStart received', {
77
- // objectId,
78
- // sequenceId: event.sequenceId,
79
- // stepIndex: event.stepIndex,
80
- // transitionStates: event.step.transitions.map(t => t.state),
81
- // resolvedObject: resolvedObject ? {
82
- // name: resolvedObject.name,
83
- // id: resolvedObject.userData?.id,
84
- // } : null,
85
- // });
86
61
  // Find the transition targeting this object
87
62
  const transitionIndex = event.step.transitions.findIndex(t => t.state === objectId);
88
63
  if (transitionIndex === -1) {
89
- // debugLog('no matching transition for objectId', {
90
- // objectId,
91
- // availableStates: event.step.transitions.map(t => t.state),
92
- // });
93
64
  return;
94
65
  }
95
- console.log('TRANSTITION START', objectId);
96
66
  const resolvedObject = resolveObject();
97
- console.log(objectId, resolvedObject?.name);
98
67
  const transition = event.step.transitions[transitionIndex];
99
68
  const stagger = event.step.stagger || 0;
100
69
  const staggerOffsetMs = transitionIndex * stagger * 1000;
101
70
  const d = event.step.duration || 1;
102
71
  const ease = event.step.ease || 'linear';
103
72
  const { properties, pathId = null } = transition;
104
- console.log('Starting sequence step', resolvedObject?.name, properties);
105
- // debugLog('matched transition', {
106
- // objectId,
107
- // pathId,
108
- // duration: d,
109
- // ease,
110
- // fromKeys: Object.keys(properties.from || {}),
111
- // toKeys: Object.keys(properties.to || {}),
112
- // });
113
73
  // Visibility shortcut
114
74
  if (properties.to?.visible === false) {
115
75
  if (resolvedObject)
@@ -145,13 +105,6 @@ export const useSequenceAnimation = (objectId, objectRef) => {
145
105
  ? snapshotMaterialValues(resolvedObject, missingFromKeys)
146
106
  : {};
147
107
  const materialFrom = { ...materialFromExplicit };
148
- // debugLog('material from/to', {
149
- // objectId,
150
- // materialFromExplicit,
151
- // snapshotted,
152
- // materialFrom,
153
- // materialToProps,
154
- // });
155
108
  updateStepRef({
156
109
  startTime: performance.now() + staggerOffsetMs,
157
110
  duration: d,
@@ -167,10 +120,8 @@ export const useSequenceAnimation = (objectId, objectRef) => {
167
120
  visibilityOverride: null,
168
121
  pathId,
169
122
  });
170
- // console.log(stepRef.current)
171
123
  updateProgressRef(0);
172
124
  if (pathId) {
173
- debugLog('starting path animation', { objectId, pathId, duration: d, ease });
174
125
  startPathAnimation(pathId, d, { ease });
175
126
  }
176
127
  else {
@@ -184,11 +135,6 @@ export const useSequenceAnimation = (objectId, objectRef) => {
184
135
  const isForThisObject = event.step.transitions.some(t => t.state === objectId);
185
136
  if (!isForThisObject)
186
137
  return;
187
- // debugLog('stepEnd received', {
188
- // objectId,
189
- // sequenceId: event.sequenceId,
190
- // stepIndex: event.stepIndex,
191
- // });
192
138
  // Let useFrame finish the last frame at p=1 naturally; just clear step
193
139
  // after a microtask so the final interpolated position is applied.
194
140
  // Promise.resolve().then(() => {
@@ -204,7 +150,6 @@ export const useSequenceAnimation = (objectId, objectRef) => {
204
150
  const isForThisObject = event.sequence.steps.some(s => s.transitions.some(t => t.state === objectId));
205
151
  if (!isForThisObject)
206
152
  return;
207
- debugLog('sequenceEnd received', { objectId, sequenceId: event.sequenceId });
208
153
  updateStepRef(null);
209
154
  updateProgressRef(1);
210
155
  }
@@ -213,13 +158,11 @@ export const useSequenceAnimation = (objectId, objectRef) => {
213
158
  useFrame((_state, delta) => {
214
159
  const resolvedObject = resolveObject();
215
160
  // Only skip if truly finished (p>=1). During stagger wait, p=0 and we still need to apply fromPosition.
216
- // console.log(stepRef.current)
217
161
  if (!stepRef.current || !resolvedObject)
218
162
  return;
219
163
  const step = stepRef.current;
220
164
  // Time-based progress drives property interpolation regardless of transform mode.
221
165
  const p = AnimationsManager.getProgressFromTime(step.startTime, step.duration, step.ease);
222
- // console.log(p)
223
166
  // updateProgressRef(p);
224
167
  // Path-based: delegate to usePathAnimation
225
168
  if (step.pathId) {
@@ -241,14 +184,6 @@ export const useSequenceAnimation = (objectId, objectRef) => {
241
184
  resolvedObject.rotation.set(...rot);
242
185
  resolvedObject.scale.set(...sca);
243
186
  }
244
- if (p === 0 || p >= 0.99) {
245
- // debugLog('frame progress', {
246
- // objectId,
247
- // progress: p,
248
- // materialKeys: Object.keys(step.materialTo),
249
- // pathId: step.pathId,
250
- // });
251
- }
252
187
  // — Material properties —
253
188
  interpolateMaterialProps(resolvedObject, step.materialFrom, step.materialTo, p);
254
189
  if (p >= 1) {
@@ -1,3 +1,3 @@
1
- import { Object3D } from "three";
2
- export declare const useShadowApplication: (obj: Object3D | null | undefined, castShadow: boolean | undefined, receiveShadow: boolean | undefined, triggerKey?: unknown) => void;
1
+ import type { Object3DSource } from "../utils/resolveObject3D";
2
+ export declare const useShadowApplication: (source: Object3DSource, castShadow: boolean | undefined, receiveShadow: boolean | undefined, triggerKey?: unknown) => void;
3
3
  //# sourceMappingURL=useShadowApplication.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useShadowApplication.d.ts","sourceRoot":"","sources":["../../src/hooks/useShadowApplication.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,eAAO,MAAM,oBAAoB,GAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,OAAO,GAAG,SAAS,EAAE,eAAe,OAAO,GAAG,SAAS,EAAE,aAAa,OAAO,KAAG,IAalK,CAAC"}
1
+ {"version":3,"file":"useShadowApplication.d.ts","sourceRoot":"","sources":["../../src/hooks/useShadowApplication.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,oBAAoB,GAAI,QAAQ,cAAc,EAAE,YAAY,OAAO,GAAG,SAAS,EAAE,eAAe,OAAO,GAAG,SAAS,EAAE,aAAa,OAAO,KAAG,IAgBxJ,CAAC"}
@@ -15,8 +15,12 @@
15
15
  //
16
16
  import { useEffect } from 'react';
17
17
  import { traverseSkippingEdgesAndEffects } from '@3driseai/3drise-core';
18
- export const useShadowApplication = (obj, castShadow, receiveShadow, triggerKey) => {
18
+ import { resolveObject3D } from "../utils/resolveObject3D.js";
19
+ export const useShadowApplication = (source, castShadow, receiveShadow, triggerKey) => {
19
20
  useEffect(() => {
21
+ // Read the ref here, not at the call site: effects run after React has
22
+ // attached refs, so this is the first point the object reliably exists.
23
+ const obj = resolveObject3D(source);
20
24
  if (!obj)
21
25
  return;
22
26
  const cast = castShadow ?? false;
@@ -27,5 +31,5 @@ export const useShadowApplication = (obj, castShadow, receiveShadow, triggerKey)
27
31
  child.receiveShadow = receive;
28
32
  }
29
33
  });
30
- }, [obj, castShadow, receiveShadow, triggerKey]);
34
+ }, [source, castShadow, receiveShadow, triggerKey]);
31
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useSkyAnimation.d.ts","sourceRoot":"","sources":["../../src/hooks/useSkyAnimation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,MAAM,WAAW,aAAa;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,eAAe,IAAI;IAC3B,oBAAoB,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAClL,CA8BJ"}
1
+ {"version":3,"file":"useSkyAnimation.d.ts","sourceRoot":"","sources":["../../src/hooks/useSkyAnimation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,MAAM,WAAW,aAAa;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,eAAe,IAAI;IAC3B,oBAAoB,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAClL,CA6BJ"}
@@ -29,7 +29,6 @@ export function useSkyAnimation() {
29
29
  }
30
30
  });
31
31
  const animateSkyTransition = useCallback((from, to, onUpdate, onComplete, duration = 3) => {
32
- console.log('Initiating sky animation', { from, to, duration });
33
32
  animRef.current = { from, to, duration, elapsed: 0, onUpdate, onComplete };
34
33
  }, []);
35
34
  return { animateSkyTransition };
@@ -1 +1 @@
1
- {"version":3,"file":"useSkySystem.d.ts","sourceRoot":"","sources":["../../src/hooks/useSkySystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC;CACxC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAsD7E;AACD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"useSkySystem.d.ts","sourceRoot":"","sources":["../../src/hooks/useSkySystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC;CACxC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAqD7E;AACD,eAAe,YAAY,CAAC"}
@@ -27,7 +27,6 @@ export function useSkySystem(options) {
27
27
  if (!enabled || !timeSettings.enabled || !timeSettings.autoAnimate)
28
28
  return;
29
29
  const state = skySystemManager.getState();
30
- // console.log(state.timeInHours)
31
30
  if (previousTimeOfDayRef.current !== null &&
32
31
  previousTimeOfDayRef.current !== state.timeOfDay) {
33
32
  onTimeOfDayChange?.(state.timeOfDay, state.elapsedTime);
package/dist/index.d.ts CHANGED
@@ -8,8 +8,10 @@ export { cameraManager } from './utils/CameraSingleton';
8
8
  export { applyAnchorSettings, createCurves, createSunPosition, randomRange, } from './utils/utils3d';
9
9
  export { applyAnchorSettings as applyAnchorSettingsLegacy } from './utils/anchorUtils';
10
10
  export * from './utils/shapes';
11
- export { DEBUG_GENERATIVE_EFFECTS, applyGenerativeAnimations, } from './utils/handleGenerativeEffectsAnimations';
11
+ export { applyGenerativeAnimations } from './utils/handleGenerativeEffectsAnimations';
12
12
  export { hasHoverAnimation } from './utils/hasHoverAnimation';
13
13
  export { findById } from './utils/sceneQuery';
14
+ export { resolveObject3D } from './utils/resolveObject3D';
15
+ export type { Object3DRefLike, Object3DSource } from './utils/resolveObject3D';
14
16
  export * from './utils/textEffects';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG5F,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAExB,YAAY,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,GAAG,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,mBAAmB,IAAI,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvF,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,GAAG,MAAM,2CAA2C,CAAC;AACjH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAG5F,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAExB,YAAY,EAAE,oBAAoB,IAAI,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,GAAG,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,mBAAmB,IAAI,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvF,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC/E,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -11,7 +11,8 @@ export { cameraManager } from './utils/CameraSingleton.js';
11
11
  export { applyAnchorSettings, createCurves, createSunPosition, randomRange, } from './utils/utils3d.js';
12
12
  export { applyAnchorSettings as applyAnchorSettingsLegacy } from './utils/anchorUtils.js';
13
13
  export * from './utils/shapes.js';
14
- export { DEBUG_GENERATIVE_EFFECTS, applyGenerativeAnimations, } from './utils/handleGenerativeEffectsAnimations.js';
14
+ export { applyGenerativeAnimations } from './utils/handleGenerativeEffectsAnimations.js';
15
15
  export { hasHoverAnimation } from './utils/hasHoverAnimation.js';
16
16
  export { findById } from './utils/sceneQuery.js';
17
+ export { resolveObject3D } from './utils/resolveObject3D.js';
17
18
  export * from './utils/textEffects.js';
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationsManager.d.ts","sourceRoot":"","sources":["../../src/services/AnimationsManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3F,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAEhD;;;;GAIG;AACH,cAAM,iBAAiB;IACnB,OAAO,CAAC,SAAS,CAKd;IACH,OAAO,CAAC,KAAK,CAAa;IAC1B,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAGtD,GAAG,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAGvD,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAUjC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiB,GAAG,MAAM;IAIzF,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB;IAY5D,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAC3C,WAAW,IAAI,UAAU,EAAE;IAC3B,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;IAKtE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAC5B,UAAU,IAAI,IAAI;CACrB;;AACD,wBAAuC"}
1
+ {"version":3,"file":"AnimationsManager.d.ts","sourceRoot":"","sources":["../../src/services/AnimationsManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC3F,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAEhD;;;;GAIG;AACH,cAAM,iBAAiB;IACnB,OAAO,CAAC,SAAS,CAKd;IACH,OAAO,CAAC,KAAK,CAAa;IAC1B,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAGtD,GAAG,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAGvD,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IASjC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiB,GAAG,MAAM;IAIzF,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB;IAY5D,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAC3C,WAAW,IAAI,UAAU,EAAE;IAC3B,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;IAKtE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAC5B,UAAU,IAAI,IAAI;CACrB;;AACD,wBAAuC"}
@@ -24,7 +24,6 @@ class AnimationsManager {
24
24
  l(event);
25
25
  }
26
26
  catch (e) {
27
- console.error('[AnimationsManager] listener error:', e);
28
27
  }
29
28
  });
30
29
  }