@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.
- package/README.md +225 -0
- package/dist/components/AdvancedGrid.d.ts +16 -0
- package/dist/components/AdvancedGrid.d.ts.map +1 -0
- package/dist/components/AdvancedGrid.js +63 -0
- package/dist/components/AnimatedObject.d.ts.map +1 -1
- package/dist/components/AnimatedObject.js +6 -4
- package/dist/components/CameraController.d.ts.map +1 -1
- package/dist/components/CameraController.js +0 -6
- package/dist/components/CircuitGrid.d.ts +22 -0
- package/dist/components/CircuitGrid.d.ts.map +1 -0
- package/dist/components/CircuitGrid.js +69 -0
- package/dist/components/Clouds.d.ts.map +1 -1
- package/dist/components/Clouds.js +0 -5
- package/dist/components/ContourGrid.d.ts +25 -0
- package/dist/components/ContourGrid.d.ts.map +1 -0
- package/dist/components/ContourGrid.js +74 -0
- package/dist/components/CreatedObject.d.ts.map +1 -1
- package/dist/components/CreatedObject.js +3 -6
- package/dist/components/CustomPrimitive.d.ts.map +1 -1
- package/dist/components/CustomPrimitive.js +1 -6
- package/dist/components/EffectsGenerator.d.ts.map +1 -1
- package/dist/components/EffectsGenerator.js +0 -2
- package/dist/components/EffectsGroup.d.ts +6 -0
- package/dist/components/EffectsGroup.d.ts.map +1 -1
- package/dist/components/EffectsGroup.js +14 -4
- package/dist/components/FractalGrid.d.ts +23 -0
- package/dist/components/FractalGrid.d.ts.map +1 -0
- package/dist/components/FractalGrid.js +72 -0
- package/dist/components/Frame.d.ts.map +1 -1
- package/dist/components/Frame.js +2 -3
- package/dist/components/GalleryLayout.d.ts.map +1 -1
- package/dist/components/GalleryLayout.js +0 -3
- package/dist/components/GeometryShape.d.ts.map +1 -1
- package/dist/components/GeometryShape.js +19 -7
- package/dist/components/Glyphs.d.ts.map +1 -1
- package/dist/components/Glyphs.js +0 -1
- package/dist/components/GridsGenerator.d.ts +4 -1
- package/dist/components/GridsGenerator.d.ts.map +1 -1
- package/dist/components/GridsGenerator.js +28 -4
- package/dist/components/HdrPlaylistRenderer.d.ts.map +1 -1
- package/dist/components/HdrPlaylistRenderer.js +0 -1
- package/dist/components/HexGrid.d.ts +25 -0
- package/dist/components/HexGrid.d.ts.map +1 -0
- package/dist/components/HexGrid.js +72 -0
- package/dist/components/ImageGeometry.js +1 -1
- package/dist/components/Letter.d.ts.map +1 -1
- package/dist/components/Letter.js +1 -6
- package/dist/components/MoireGrid.d.ts +23 -0
- package/dist/components/MoireGrid.d.ts.map +1 -0
- package/dist/components/MoireGrid.js +76 -0
- package/dist/components/Moon.d.ts.map +1 -1
- package/dist/components/Moon.js +0 -1
- package/dist/components/ObjectNode.d.ts +1 -2
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +18 -29
- package/dist/components/ObjectNodeApi.d.ts +1 -2
- package/dist/components/ObjectNodeApi.d.ts.map +1 -1
- package/dist/components/ObjectNodeApi.js +7 -3
- package/dist/components/ObjectsRenderer.d.ts.map +1 -1
- package/dist/components/ObjectsRenderer.js +1 -4
- package/dist/components/ObjectsRendererApi.d.ts.map +1 -1
- package/dist/components/ObjectsRendererApi.js +4 -2
- package/dist/components/Ocean.d.ts.map +1 -1
- package/dist/components/Ocean.js +1 -4
- package/dist/components/ParticlesR3f.d.ts +0 -1
- package/dist/components/ParticlesR3f.d.ts.map +1 -1
- package/dist/components/ParticlesR3f.js +63 -12
- package/dist/components/PathRenderer.d.ts.map +1 -1
- package/dist/components/PathRenderer.js +0 -1
- package/dist/components/PointCloud.d.ts.map +1 -1
- package/dist/components/PointCloud.js +50 -10
- package/dist/components/ProjectLoader.d.ts.map +1 -1
- package/dist/components/ProjectLoader.js +0 -28
- package/dist/components/QuasiGrid.d.ts +22 -0
- package/dist/components/QuasiGrid.d.ts.map +1 -0
- package/dist/components/QuasiGrid.js +68 -0
- package/dist/components/RadarGrid.d.ts +24 -0
- package/dist/components/RadarGrid.d.ts.map +1 -0
- package/dist/components/RadarGrid.js +71 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +0 -1
- package/dist/components/ShootingStar.js +2 -2
- package/dist/components/ShootingStars.d.ts.map +1 -1
- package/dist/components/ShootingStars.js +0 -1
- package/dist/components/SkyController.d.ts.map +1 -1
- package/dist/components/SkyController.js +0 -3
- package/dist/components/Skybox.d.ts +5 -0
- package/dist/components/Skybox.d.ts.map +1 -1
- package/dist/components/Skybox.js +0 -1
- package/dist/components/SparklesBurst.d.ts.map +1 -1
- package/dist/components/SparklesBurst.js +0 -1
- package/dist/components/VoronoiGrid.d.ts +21 -0
- package/dist/components/VoronoiGrid.d.ts.map +1 -0
- package/dist/components/VoronoiGrid.js +67 -0
- package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -1
- package/dist/components/effects/ShockwaveEffect.js +0 -1
- package/dist/components/effects/SmokeRibbon.d.ts.map +1 -1
- package/dist/components/effects/SmokeRibbon.js +0 -1
- package/dist/components/index.d.ts +19 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +9 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -0
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/use3driseShader.d.ts.map +1 -1
- package/dist/hooks/use3driseShader.js +0 -9
- package/dist/hooks/useAnimationEvents.d.ts.map +1 -1
- package/dist/hooks/useAnimationEvents.js +0 -19
- package/dist/hooks/useCameraAnimation.d.ts.map +1 -1
- package/dist/hooks/useCameraAnimation.js +0 -5
- package/dist/hooks/useContinuousEffects.d.ts +2 -3
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.js +16 -61
- package/dist/hooks/useFrameAnimations.d.ts.map +1 -1
- package/dist/hooks/useFrameAnimations.js +0 -4
- package/dist/hooks/useGridSurface.d.ts +46 -0
- package/dist/hooks/useGridSurface.d.ts.map +1 -0
- package/dist/hooks/useGridSurface.js +66 -0
- package/dist/hooks/useGsapAnimation.d.ts.map +1 -1
- package/dist/hooks/useGsapAnimation.js +0 -3
- package/dist/hooks/useInteraction.d.ts.map +1 -1
- package/dist/hooks/useInteraction.js +0 -25
- package/dist/hooks/useInteractionEffects.d.ts +2 -2
- package/dist/hooks/useInteractionEffects.d.ts.map +1 -1
- package/dist/hooks/useInteractionEffects.js +3 -1
- package/dist/hooks/useMaterialApplication.d.ts +2 -2
- package/dist/hooks/useMaterialApplication.d.ts.map +1 -1
- package/dist/hooks/useMaterialApplication.js +9 -21
- package/dist/hooks/useMaterialOptions.d.ts +2 -2
- package/dist/hooks/useMaterialOptions.d.ts.map +1 -1
- package/dist/hooks/useMaterialOptions.js +13 -37
- package/dist/hooks/useMeshController.d.ts.map +1 -1
- package/dist/hooks/useMeshController.js +0 -16
- package/dist/hooks/useObjectAnimation.d.ts +13 -2
- package/dist/hooks/useObjectAnimation.d.ts.map +1 -1
- package/dist/hooks/useObjectAnimation.js +26 -28
- package/dist/hooks/useObjectEdges.d.ts +2 -1
- package/dist/hooks/useObjectEdges.d.ts.map +1 -1
- package/dist/hooks/useObjectEdges.js +18 -52
- package/dist/hooks/useObjectEffects.d.ts.map +1 -1
- package/dist/hooks/useObjectEffects.js +0 -4
- package/dist/hooks/useRegisterScene.d.ts +17 -0
- package/dist/hooks/useRegisterScene.d.ts.map +1 -0
- package/dist/hooks/useRegisterScene.js +33 -0
- package/dist/hooks/useSequenceAnimation.d.ts +2 -2
- package/dist/hooks/useSequenceAnimation.d.ts.map +1 -1
- package/dist/hooks/useSequenceAnimation.js +5 -70
- package/dist/hooks/useShadowApplication.d.ts +2 -2
- package/dist/hooks/useShadowApplication.d.ts.map +1 -1
- package/dist/hooks/useShadowApplication.js +6 -2
- package/dist/hooks/useSkyAnimation.d.ts.map +1 -1
- package/dist/hooks/useSkyAnimation.js +0 -1
- package/dist/hooks/useSkySystem.d.ts.map +1 -1
- package/dist/hooks/useSkySystem.js +0 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/services/AnimationsManager.d.ts.map +1 -1
- package/dist/services/AnimationsManager.js +0 -1
- package/dist/shaders/CircuitGridMaterial.d.ts +76 -0
- package/dist/shaders/CircuitGridMaterial.d.ts.map +1 -0
- package/dist/shaders/CircuitGridMaterial.js +298 -0
- package/dist/shaders/ContourGridMaterial.d.ts +80 -0
- package/dist/shaders/ContourGridMaterial.d.ts.map +1 -0
- package/dist/shaders/ContourGridMaterial.js +259 -0
- package/dist/shaders/FractalGridMaterial.d.ts +76 -0
- package/dist/shaders/FractalGridMaterial.d.ts.map +1 -0
- package/dist/shaders/FractalGridMaterial.js +247 -0
- package/dist/shaders/HexGridMaterial.d.ts +73 -0
- package/dist/shaders/HexGridMaterial.d.ts.map +1 -0
- package/dist/shaders/HexGridMaterial.js +265 -0
- package/dist/shaders/MoireGridMaterial.d.ts +79 -0
- package/dist/shaders/MoireGridMaterial.d.ts.map +1 -0
- package/dist/shaders/MoireGridMaterial.js +271 -0
- package/dist/shaders/QuasiGridMaterial.d.ts +76 -0
- package/dist/shaders/QuasiGridMaterial.d.ts.map +1 -0
- package/dist/shaders/QuasiGridMaterial.js +238 -0
- package/dist/shaders/RadarGridMaterial.d.ts +77 -0
- package/dist/shaders/RadarGridMaterial.d.ts.map +1 -0
- package/dist/shaders/RadarGridMaterial.js +291 -0
- package/dist/shaders/VoronoiGridMaterial.d.ts +73 -0
- package/dist/shaders/VoronoiGridMaterial.d.ts.map +1 -0
- package/dist/shaders/VoronoiGridMaterial.js +266 -0
- package/dist/types/gridConfigs.d.ts +202 -0
- package/dist/types/gridConfigs.d.ts.map +1 -0
- package/dist/types/gridConfigs.js +11 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/handleGenerativeEffectsAnimations.d.ts +0 -1
- package/dist/utils/handleGenerativeEffectsAnimations.d.ts.map +1 -1
- package/dist/utils/handleGenerativeEffectsAnimations.js +0 -29
- package/dist/utils/pointsMaterialOwnership.d.ts +9 -0
- package/dist/utils/pointsMaterialOwnership.d.ts.map +1 -0
- package/dist/utils/pointsMaterialOwnership.js +14 -0
- package/dist/utils/resolveObject3D.d.ts +20 -0
- package/dist/utils/resolveObject3D.d.ts.map +1 -0
- package/dist/utils/resolveObject3D.js +9 -0
- package/dist/utils/shapes.d.ts.map +1 -1
- package/dist/utils/shapes.js +0 -1
- package/package.json +4 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
3
|
-
import { useRef, useState
|
|
3
|
+
import { useRef, useState } from 'react';
|
|
4
4
|
import { useFrame } from '@react-three/fiber';
|
|
5
5
|
import { useCursor, Text, Text3D, Center } from '@react-three/drei';
|
|
6
6
|
import MaterialLibrary from './MaterialLibrary.js';
|
|
@@ -49,11 +49,6 @@ export default function Letter({ letterData, config, materialSettings, hoverSett
|
|
|
49
49
|
const color = 'color' in materialSettings ? materialSettings.color : '#ffffff';
|
|
50
50
|
const opacity = 'opacity' in materialSettings ? materialSettings.opacity : 1;
|
|
51
51
|
const useDreiMaterials = materialSettings.materialType === 'advanced';
|
|
52
|
-
useEffect(() => {
|
|
53
|
-
if (useDreiMaterials && renderMode === 'bitmap') {
|
|
54
|
-
console.warn('[Letter] Advanced materials not supported with bitmap text. Switch to text3d render mode.');
|
|
55
|
-
}
|
|
56
|
-
}, [useDreiMaterials, renderMode]);
|
|
57
52
|
useCursor(hovered);
|
|
58
53
|
const fontInfo = font ? fontManager.getFont(font) : null;
|
|
59
54
|
const bitmapFontUrl = fontInfo?.googleFont;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ThreeElements } from '@react-three/fiber';
|
|
2
|
+
import type { ObjectReadyProps } from '../types/objectReady';
|
|
3
|
+
import type { MoireGridConfig } from '../types/gridConfigs';
|
|
4
|
+
export interface MoireGridProps extends ObjectReadyProps {
|
|
5
|
+
config?: MoireGridConfig;
|
|
6
|
+
groupProps?: ThreeElements['group'];
|
|
7
|
+
}
|
|
8
|
+
/** MoireGridConfig — the single source of truth for a moire grid instance. */
|
|
9
|
+
export declare const defaultMoireGridConfig: MoireGridConfig;
|
|
10
|
+
/**
|
|
11
|
+
* Two overlaid lattices, counter-rotating.
|
|
12
|
+
*
|
|
13
|
+
* Nothing draws the moire pattern — it emerges from where the two line sets
|
|
14
|
+
* nearly coincide, which is why it moves the way real interference does. Small
|
|
15
|
+
* `layerAngle` and `layerScale` values near 1 give the long, slow beats; larger
|
|
16
|
+
* ones break up into fine cross-hatch. `spin` 0 freezes it at `layerAngle`.
|
|
17
|
+
*
|
|
18
|
+
* `shape` picks what the two layers are made of. Rings have no orientation, so
|
|
19
|
+
* for that shape the layers are offset from each other rather than rotated.
|
|
20
|
+
*/
|
|
21
|
+
export declare function MoireGrid({ config, groupProps, onObjectReady, onObjectDispose }: MoireGridProps): import("react").JSX.Element;
|
|
22
|
+
export default MoireGrid;
|
|
23
|
+
//# sourceMappingURL=MoireGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MoireGrid.d.ts","sourceRoot":"","sources":["../../src/components/MoireGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACpD,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,UAAU,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACvC;AAWD,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,EAAE,eA6BpC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAA+B,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,cAAc,+BAkExH;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useRef } from 'react';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import { useObjectReady } from '../hooks/useObjectReady.js';
|
|
5
|
+
import { useGridSurface } from '../hooks/useGridSurface.js';
|
|
6
|
+
import { MoireGridMaterial } from '@3driseai/3drise-core';
|
|
7
|
+
// Side-effect import registers <moireGridMaterial> via extend().
|
|
8
|
+
void MoireGridMaterial;
|
|
9
|
+
const SHAPE_INDEX = {
|
|
10
|
+
square: 0,
|
|
11
|
+
hex: 1,
|
|
12
|
+
rings: 2,
|
|
13
|
+
};
|
|
14
|
+
/** MoireGridConfig — the single source of truth for a moire grid instance. */
|
|
15
|
+
export const defaultMoireGridConfig = {
|
|
16
|
+
cellSize: 2.8,
|
|
17
|
+
size: 50,
|
|
18
|
+
segments: undefined,
|
|
19
|
+
flat: true,
|
|
20
|
+
lineMode: 0,
|
|
21
|
+
cellMode: 2, // steady nodes; the interference carries the motion
|
|
22
|
+
lineWidth: 1.4,
|
|
23
|
+
sectionSize: 12,
|
|
24
|
+
sectionWidth: 0,
|
|
25
|
+
animSpeed: 1,
|
|
26
|
+
animScale: 1,
|
|
27
|
+
animIntensity: 1,
|
|
28
|
+
fadeDistance: undefined,
|
|
29
|
+
fadeStrength: 0.7,
|
|
30
|
+
displace: 0,
|
|
31
|
+
shape: 'square',
|
|
32
|
+
layerAngle: 0.05,
|
|
33
|
+
layerScale: 1.06,
|
|
34
|
+
spin: 1,
|
|
35
|
+
lineColor: '#226bd9',
|
|
36
|
+
sectionColor: '#f2599e',
|
|
37
|
+
cellColor: '#0d1a40',
|
|
38
|
+
glowColor: '#99d9ff',
|
|
39
|
+
bgColor: '#02040d',
|
|
40
|
+
bgOpacity: 0,
|
|
41
|
+
followMouse: false,
|
|
42
|
+
reveal: 1,
|
|
43
|
+
revealDuration: 0,
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Two overlaid lattices, counter-rotating.
|
|
47
|
+
*
|
|
48
|
+
* Nothing draws the moire pattern — it emerges from where the two line sets
|
|
49
|
+
* nearly coincide, which is why it moves the way real interference does. Small
|
|
50
|
+
* `layerAngle` and `layerScale` values near 1 give the long, slow beats; larger
|
|
51
|
+
* ones break up into fine cross-hatch. `spin` 0 freezes it at `layerAngle`.
|
|
52
|
+
*
|
|
53
|
+
* `shape` picks what the two layers are made of. Rings have no orientation, so
|
|
54
|
+
* for that shape the layers are offset from each other rather than rotated.
|
|
55
|
+
*/
|
|
56
|
+
export function MoireGrid({ config = defaultMoireGridConfig, groupProps, onObjectReady, onObjectDispose }) {
|
|
57
|
+
const matRef = useRef(null);
|
|
58
|
+
const rootRef = useRef(null);
|
|
59
|
+
const meshRef = useRef(null);
|
|
60
|
+
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
61
|
+
const { cellSize, size, segments, flat, lineMode, cellMode, lineWidth, sectionSize, sectionWidth, animSpeed, animScale, animIntensity, fadeDistance, fadeStrength, displace, shape, layerAngle, layerScale, spin, lineColor, sectionColor, cellColor, glowColor, bgColor, bgOpacity, followMouse, reveal, revealDuration, } = config;
|
|
62
|
+
const segs = segments ?? (displace > 0
|
|
63
|
+
? Math.min(256, Math.max(64, Math.ceil(size / Math.max(cellSize, 1e-4)) * 2))
|
|
64
|
+
: 1);
|
|
65
|
+
const fade = fadeDistance ?? size * 0.5;
|
|
66
|
+
const colors = useMemo(() => ({
|
|
67
|
+
line: new THREE.Color(lineColor),
|
|
68
|
+
section: new THREE.Color(sectionColor),
|
|
69
|
+
cell: new THREE.Color(cellColor),
|
|
70
|
+
glow: new THREE.Color(glowColor),
|
|
71
|
+
bg: new THREE.Color(bgColor),
|
|
72
|
+
}), [lineColor, sectionColor, cellColor, glowColor, bgColor]);
|
|
73
|
+
useGridSurface(matRef, meshRef, { followMouse, reveal, revealDuration });
|
|
74
|
+
return (_jsx("group", { ref: rootRef, ...groupProps, children: _jsxs("mesh", { ref: meshRef, rotation: flat ? [-Math.PI / 2, 0, 0] : [0, 0, 0], children: [_jsx("planeGeometry", { args: [size, size, segs, segs] }), _jsx("moireGridMaterial", { ref: matRef, transparent: true, depthWrite: false, blending: THREE.AdditiveBlending, side: THREE.DoubleSide, u_cellSize: cellSize, u_lineWidth: lineWidth, u_sectionSize: sectionSize, u_sectionWidth: sectionWidth, u_lineMode: lineMode, u_cellMode: cellMode, u_animSpeed: animSpeed, u_animScale: animScale, u_animIntensity: animIntensity, u_fadeDistance: fade, u_fadeStrength: fadeStrength, u_displace: displace, u_shape: SHAPE_INDEX[shape] ?? 0, u_layerAngle: layerAngle, u_layerScale: layerScale, u_spin: spin, u_lineColor: colors.line, u_sectionColor: colors.section, u_cellColor: colors.cell, u_glowColor: colors.glow, u_bgColor: colors.bg, u_bgOpacity: bgOpacity }, MoireGridMaterial.key)] }) }));
|
|
75
|
+
}
|
|
76
|
+
export default MoireGrid;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Moon.d.ts","sourceRoot":"","sources":["../../src/components/Moon.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,YAAY,EAAE,YAAY,EAAE,CAAC;AAG7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"Moon.d.ts","sourceRoot":"","sources":["../../src/components/Moon.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IAC/C,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,YAAY,EAAE,YAAY,EAAE,CAAC;AAG7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAyD7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/dist/components/Moon.js
CHANGED
|
@@ -17,7 +17,6 @@ const Moon = ({ settings, sunPosition, onObjectReady, onObjectDispose }) => {
|
|
|
17
17
|
loader.setCrossOrigin('anonymous');
|
|
18
18
|
let cancelled = false;
|
|
19
19
|
loader.load(MOON_TEXTURE_URL, (loaded) => {
|
|
20
|
-
console.log("Moon texture loaded:", loaded);
|
|
21
20
|
if (!cancelled)
|
|
22
21
|
setTexture(loaded);
|
|
23
22
|
}, undefined, () => {
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { ObjectReadyProps } from "../types/objectReady";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Object3D } from "three";
|
|
4
|
-
import type {
|
|
4
|
+
import type { CreatedObjectSettings, ObjectTreeNode } from "@3driseai/3drise-core";
|
|
5
5
|
import { type ThreeEvent } from "@react-three/fiber";
|
|
6
6
|
type ObjectNodeProps = ObjectReadyProps & {
|
|
7
7
|
node: ObjectTreeNode;
|
|
8
|
-
cameraSettings: CameraState;
|
|
9
8
|
handleObjectClick?: (object: CreatedObjectSettings, ref: Object3D, event: ThreeEvent<MouseEvent>) => void;
|
|
10
9
|
};
|
|
11
10
|
declare const ObjectNode: React.FC<ObjectNodeProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectNode.d.ts","sourceRoot":"","sources":["../../src/components/ObjectNode.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ObjectNode.d.ts","sourceRoot":"","sources":["../../src/components/ObjectNode.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAe,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,KAAK,eAAe,GAAG,gBAAgB,GAAG;IACtC,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAC7G,CAAC;AAgBF,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAyGzC,CAAC;AACF,eAAe,UAAU,CAAC"}
|
|
@@ -13,15 +13,7 @@ import LightObject from "./LightObject.js";
|
|
|
13
13
|
import EnvironmentObject from "./EnvironmentObject.js";
|
|
14
14
|
import Galaxy from "./Galaxy.js";
|
|
15
15
|
import GridGenerator from "./GridsGenerator.js";
|
|
16
|
-
|
|
17
|
-
'effect',
|
|
18
|
-
// 'gallery',
|
|
19
|
-
'earth',
|
|
20
|
-
'space',
|
|
21
|
-
'shootingStars',
|
|
22
|
-
'grid',
|
|
23
|
-
// 'moon'
|
|
24
|
-
]);
|
|
16
|
+
import { SELF_MANAGED_MATERIAL } from "../constants.js";
|
|
25
17
|
// const EffectsLayer: React.FC<{ effects: CreatedObjectSettings['effects'] }> = ({ effects }) =>
|
|
26
18
|
// effects?.length ? (
|
|
27
19
|
// <>
|
|
@@ -30,14 +22,13 @@ const SELF_MANAGED_MATERIAL = new Set([
|
|
|
30
22
|
// ))}
|
|
31
23
|
// </>
|
|
32
24
|
// ) : null;
|
|
33
|
-
const GroupWithChildren = ({ createdObject, children,
|
|
25
|
+
const GroupWithChildren = ({ createdObject, children, onObjectReady, onObjectDispose, handleObjectClick, renderObject }) => {
|
|
34
26
|
const isGroup = createdObject.type === 'group';
|
|
35
27
|
const selfManagedMaterial = SELF_MANAGED_MATERIAL.has(createdObject.type);
|
|
36
|
-
return (_jsxs(CreatedObject, { createdObject: createdObject, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, shouldApply3driseMaterial: !isGroup && !selfManagedMaterial, children: [!isGroup && renderObject(createdObject, handleObjectClick), children.map(childNode => (_jsx(ObjectNode, { node: childNode,
|
|
28
|
+
return (_jsxs(CreatedObject, { createdObject: createdObject, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, shouldApply3driseMaterial: !isGroup && !selfManagedMaterial, children: [!isGroup && renderObject(createdObject, handleObjectClick), children.map(childNode => (_jsx(ObjectNode, { node: childNode, handleObjectClick: handleObjectClick, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }, childNode.objectId)))] }, createdObject.id));
|
|
37
29
|
};
|
|
38
|
-
const ObjectNode = ({ node,
|
|
30
|
+
const ObjectNode = ({ node, onObjectReady, onObjectDispose, handleObjectClick }) => {
|
|
39
31
|
const { children, createdObject } = node;
|
|
40
|
-
// console.log(createdObject.meshSettings.name, createdObject.actions, createdObject.mouseMove)
|
|
41
32
|
// Children describe themselves with their own settings; the scene above
|
|
42
33
|
// knows them by the node's createdObject, so relabel on the way up.
|
|
43
34
|
const relabel = useCallback((obj) => ({
|
|
@@ -47,7 +38,7 @@ const ObjectNode = ({ node, cameraSettings, onObjectReady, onObjectDispose, hand
|
|
|
47
38
|
// Specialized renderers for each object type
|
|
48
39
|
const renderers = useMemo(() => ({
|
|
49
40
|
group: () => null,
|
|
50
|
-
mesh: (obj,
|
|
41
|
+
mesh: (obj, onObjectReady) => (_jsx(CustomPrimitive, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick }, obj.id)),
|
|
51
42
|
// water: (obj: CreatedObjectSettings, cameraSettings: CameraState, onObjectReady?: (object: CreatedObjectSettings, ref: Object3D) => void) => (
|
|
52
43
|
// <Ocean
|
|
53
44
|
// settings={obj}
|
|
@@ -63,7 +54,7 @@ const ObjectNode = ({ node, cameraSettings, onObjectReady, onObjectDispose, hand
|
|
|
63
54
|
// settings={obj}
|
|
64
55
|
// />
|
|
65
56
|
// ),
|
|
66
|
-
model: (obj,
|
|
57
|
+
model: (obj, onObjectReady) => (_jsx(CustomPrimitive, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick }, obj.id)),
|
|
67
58
|
// custom_primitive: (obj: CreatedObjectSettings, cameraSettings: CameraState, onObjectReady?: (object: CreatedObjectSettings, ref: Object3D) => void) => (
|
|
68
59
|
// <CustomPrimitive
|
|
69
60
|
// key={obj.id}
|
|
@@ -72,27 +63,27 @@ const ObjectNode = ({ node, cameraSettings, onObjectReady, onObjectDispose, hand
|
|
|
72
63
|
// handleObjectClick={handleObjectClick}
|
|
73
64
|
// />
|
|
74
65
|
// ),
|
|
75
|
-
text: (obj,
|
|
66
|
+
text: (obj, onObjectReady) => {
|
|
76
67
|
const renderMode = obj.config?.renderMode ?? 'bitmap';
|
|
77
68
|
return (_jsx(_Fragment, { children: renderMode === 'text3d'
|
|
78
69
|
? _jsx(Text3D, { textSettings: obj, ...relabel(obj) })
|
|
79
70
|
: _jsx(Text2D, { textSettings: obj, ...relabel(obj) }) }));
|
|
80
71
|
},
|
|
81
|
-
particles: (obj,
|
|
72
|
+
particles: (obj, onObjectReady) => {
|
|
82
73
|
const particlesSettings = obj;
|
|
83
|
-
return (_jsxs(_Fragment, { children: [particlesSettings.config?.particles && (_jsx(ParticlesR3f, { particlesSettings: particlesSettings,
|
|
74
|
+
return (_jsxs(_Fragment, { children: [particlesSettings.config?.particles && (_jsx(ParticlesR3f, { particlesSettings: particlesSettings, duration: 1, transitionSettings: particlesSettings.meshSettings, ...relabel(obj) })), particlesSettings.config?.paths && (_jsx(Lines, { createdObject: particlesSettings, ...relabel(obj) }))] }));
|
|
84
75
|
},
|
|
85
|
-
path: (obj,
|
|
86
|
-
grid: (obj,
|
|
76
|
+
path: (obj, onObjectReady) => (_jsx(PathRenderer, { pathSettings: obj.config, ...relabel(obj) }, obj.id)),
|
|
77
|
+
grid: (obj, onObjectReady) => (
|
|
87
78
|
// <GridHelper {...(obj.config as GridConfig)} side={2} />
|
|
88
79
|
_jsx(GridGenerator, { config: obj.config, ...relabel(obj) })),
|
|
89
80
|
effect: (obj) => (_jsx(EffectsGenerator, { settings: {
|
|
90
81
|
config: obj.config,
|
|
91
82
|
}, ...relabel(obj) }, obj.id)),
|
|
92
|
-
gallery: (obj,
|
|
93
|
-
light: (obj,
|
|
94
|
-
environment: (obj,
|
|
95
|
-
space: (obj,
|
|
83
|
+
gallery: (obj, onObjectReady) => (_jsx(GalleryLayout, { createdObject: obj, handleObjectClick: handleObjectClick, ...relabel(obj) })),
|
|
84
|
+
light: (obj, onObjectReady) => (_jsx(LightObject, { createdObject: obj, ...relabel(obj) })),
|
|
85
|
+
environment: (obj, onObjectReady) => (_jsx(EnvironmentObject, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
86
|
+
space: (obj, onObjectReady) => (_jsx(Galaxy, { createdObject: obj, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose })),
|
|
96
87
|
// rain: (obj: CreatedObjectSettings, cameraSettings: CameraState, onObjectReady?: (object: CreatedObjectSettings, ref: Object3D) => void) => (
|
|
97
88
|
// <Rain
|
|
98
89
|
// settings={obj}
|
|
@@ -115,18 +106,16 @@ const ObjectNode = ({ node, cameraSettings, onObjectReady, onObjectDispose, hand
|
|
|
115
106
|
// ),
|
|
116
107
|
}), [handleObjectClick, onObjectReady, onObjectDispose, relabel]);
|
|
117
108
|
const renderObject = useCallback((obj, handleObjectClick) => {
|
|
118
|
-
// console.log('Rendering object:', obj);
|
|
119
109
|
const renderer = renderers[obj.type];
|
|
120
|
-
return renderer?.(obj,
|
|
121
|
-
}, [
|
|
110
|
+
return renderer?.(obj, onObjectReady) ?? null;
|
|
111
|
+
}, [onObjectReady, renderers]);
|
|
122
112
|
if (!createdObject) {
|
|
123
|
-
console.warn(`createdObject not found.`);
|
|
124
113
|
return null;
|
|
125
114
|
}
|
|
126
115
|
const hasChildren = children.length > 0;
|
|
127
116
|
const shouldRenderAsGroup = hasChildren || createdObject.type === 'group' || createdObject.type === 'effect';
|
|
128
117
|
const renderedObject = shouldRenderAsGroup
|
|
129
|
-
? _jsx(GroupWithChildren, { createdObject: createdObject, children: children,
|
|
118
|
+
? _jsx(GroupWithChildren, { createdObject: createdObject, children: children, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, renderObject: renderObject })
|
|
130
119
|
: _jsx(CreatedObject, { createdObject: createdObject, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick, shouldApply3driseMaterial: !SELF_MANAGED_MATERIAL.has(createdObject.type), children: renderObject(createdObject) }, createdObject.id);
|
|
131
120
|
// createdObject.effects
|
|
132
121
|
// ? <>
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { ObjectReadyProps } from '../types/objectReady';
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Object3D } from "three";
|
|
4
|
-
import type {
|
|
4
|
+
import type { CreatedObjectSettings } from "@3driseai/3drise-core";
|
|
5
5
|
import { type ThreeEvent } from "@react-three/fiber";
|
|
6
6
|
type ObjectNodeApiProps = ObjectReadyProps & {
|
|
7
7
|
objectId: string;
|
|
8
|
-
cameraSettings: CameraState;
|
|
9
8
|
handleObjectClick?: (object: CreatedObjectSettings, ref: Object3D, event: ThreeEvent<MouseEvent>) => void;
|
|
10
9
|
};
|
|
11
10
|
declare const ObjectNodeApi: React.FC<ObjectNodeApiProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectNodeApi.d.ts","sourceRoot":"","sources":["../../src/components/ObjectNodeApi.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ObjectNodeApi.d.ts","sourceRoot":"","sources":["../../src/components/ObjectNodeApi.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAe,qBAAqB,EAAkB,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,KAAK,kBAAkB,GAAG,gBAAgB,GAAG;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CAC7G,CAAC;AAGF,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAc/C,CAAC;AACF,eAAe,aAAa,CAAC"}
|
|
@@ -2,17 +2,21 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
// import { apiFetch } from '../utils/apiFetch';
|
|
4
4
|
import ObjectNode from './ObjectNode.js';
|
|
5
|
+
import { useRegisterScene } from '../hooks/useRegisterScene.js';
|
|
5
6
|
import { dataCenterServer } from '../constants.js';
|
|
6
|
-
const ObjectNodeApi = ({ objectId,
|
|
7
|
+
const ObjectNodeApi = ({ objectId, onObjectReady, onObjectDispose, handleObjectClick }) => {
|
|
8
|
+
// Publish the host application's canvas so id-based lookups resolve here
|
|
9
|
+
// too — SceneBuilder is not in this tree to do it.
|
|
10
|
+
useRegisterScene();
|
|
7
11
|
const [node, setNode] = useState(null);
|
|
8
12
|
useEffect(() => {
|
|
9
13
|
fetch(`${dataCenterServer}scene-objects/${objectId}/tree`)
|
|
10
14
|
.then(res => res.ok ? res.json() : Promise.reject(res.status))
|
|
11
15
|
.then(({ tree }) => setNode(tree))
|
|
12
|
-
.catch(
|
|
16
|
+
.catch(() => { });
|
|
13
17
|
}, [objectId]);
|
|
14
18
|
if (!node)
|
|
15
19
|
return null;
|
|
16
|
-
return (_jsx(ObjectNode, { node: node,
|
|
20
|
+
return (_jsx(ObjectNode, { node: node, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose, handleObjectClick: handleObjectClick }));
|
|
17
21
|
};
|
|
18
22
|
export default ObjectNodeApi;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectsRenderer.d.ts","sourceRoot":"","sources":["../../src/components/ObjectsRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI1H,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,UAAU,oBAAqB,SAAQ,gBAAgB;IACnD,cAAc,EAAE,WAAW,CAAC;IAC5B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1G,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAGD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ObjectsRenderer.d.ts","sourceRoot":"","sources":["../../src/components/ObjectsRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI1H,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,UAAU,oBAAqB,SAAQ,gBAAgB;IACnD,cAAc,EAAE,WAAW,CAAC;IAC5B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1G,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAGD,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA0ClD,CAAC;AAEH,eAAe,eAAe,CAAC"}
|
|
@@ -14,7 +14,6 @@ const ObjectsRenderer = memo(({ cameraSettings, createdObjects, generalObjectSet
|
|
|
14
14
|
const handleObjectReady = useCallback((object, ref) => {
|
|
15
15
|
readyObjectsCount.current += 1;
|
|
16
16
|
if (readyObjectsCount.current === objectsTree.length) {
|
|
17
|
-
console.log("All objects are ready!");
|
|
18
17
|
onObjectsReady && onObjectsReady();
|
|
19
18
|
}
|
|
20
19
|
onObjectReady && onObjectReady(object, ref);
|
|
@@ -35,8 +34,6 @@ const ObjectsRenderer = memo(({ cameraSettings, createdObjects, generalObjectSet
|
|
|
35
34
|
sequences,
|
|
36
35
|
});
|
|
37
36
|
const handleObjectClickHandler = (createdObject, ref, event) => {
|
|
38
|
-
console.log('Object clicked:', createdObject.meshSettings.name);
|
|
39
|
-
console.log('Object ref:', ref);
|
|
40
37
|
const clickInteractions = filterInteractionsByEvent(createdObject.actions, "click");
|
|
41
38
|
clickInteractions.forEach((interaction) => {
|
|
42
39
|
executeInteraction({ interaction, ref, createdObject });
|
|
@@ -45,7 +42,7 @@ const ObjectsRenderer = memo(({ cameraSettings, createdObjects, generalObjectSet
|
|
|
45
42
|
handleObjectClick(createdObject, ref, event);
|
|
46
43
|
}
|
|
47
44
|
};
|
|
48
|
-
return (_jsx("group", { ref: groupRef, name: "main-objects", position: generalObjectSettings.meshSettings.position, rotation: generalObjectSettings.meshSettings.rotation, scale: generalObjectSettings.meshSettings.scale, children: objectsTree.map(node => (_jsx(ObjectNode, { node: node,
|
|
45
|
+
return (_jsx("group", { ref: groupRef, name: "main-objects", position: generalObjectSettings.meshSettings.position, rotation: generalObjectSettings.meshSettings.rotation, scale: generalObjectSettings.meshSettings.scale, children: objectsTree.map(node => (_jsx(ObjectNode, { node: node, onObjectReady: handleObjectReady, onObjectDispose: handleObjectDispose, handleObjectClick: handleObjectClickHandler }, node.objectId))) }));
|
|
49
46
|
});
|
|
50
47
|
ObjectsRenderer.displayName = 'ObjectsRenderer';
|
|
51
48
|
export default ObjectsRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectsRendererApi.d.ts","sourceRoot":"","sources":["../../src/components/ObjectsRendererApi.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectsRendererApi.d.ts","sourceRoot":"","sources":["../../src/components/ObjectsRendererApi.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,WAAW,CAAC;IAC5B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1G,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C;AAGD;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA0DzD,CAAC;AACF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import ObjectsRenderer from './ObjectsRenderer.js';
|
|
4
|
+
import { useRegisterScene } from '../hooks/useRegisterScene.js';
|
|
4
5
|
/**
|
|
5
6
|
* ObjectsRendererApi
|
|
6
7
|
*
|
|
@@ -16,6 +17,9 @@ import ObjectsRenderer from './ObjectsRenderer.js';
|
|
|
16
17
|
* />
|
|
17
18
|
*/
|
|
18
19
|
const ObjectsRendererApi = ({ objectIds, cameraSettings, generalObjectSettings, apiBaseUrl = 'http://localhost:3001', onObjectsReady, handleObjectClick, onError, onLoading, onObjectReady, onObjectDispose, }) => {
|
|
20
|
+
// Publish the host application's canvas so id-based lookups resolve here
|
|
21
|
+
// too — SceneBuilder is not in this tree to do it.
|
|
22
|
+
useRegisterScene();
|
|
19
23
|
const [createdObjects, setCreatedObjects] = useState([]);
|
|
20
24
|
const [isLoading, setIsLoading] = useState(true);
|
|
21
25
|
const [error, setError] = useState(null);
|
|
@@ -59,7 +63,6 @@ const ObjectsRendererApi = ({ objectIds, cameraSettings, generalObjectSettings,
|
|
|
59
63
|
onError?.(error);
|
|
60
64
|
setIsLoading(false);
|
|
61
65
|
onLoading?.(false);
|
|
62
|
-
console.error('Failed to fetch scene objects:', error);
|
|
63
66
|
}
|
|
64
67
|
};
|
|
65
68
|
fetchObjects();
|
|
@@ -68,7 +71,6 @@ const ObjectsRendererApi = ({ objectIds, cameraSettings, generalObjectSettings,
|
|
|
68
71
|
return (_jsx("group", { children: _jsxs("mesh", { position: [0, 0, 0], children: [_jsx("sphereGeometry", { args: [0.5, 32, 32] }), _jsx("meshStandardMaterial", { color: 0x00ff00, wireframe: true })] }) }));
|
|
69
72
|
}
|
|
70
73
|
if (error) {
|
|
71
|
-
console.error('ObjectsRendererApi Error:', error);
|
|
72
74
|
return (_jsx("group", { children: _jsxs("mesh", { position: [0, 0, 0], children: [_jsx("sphereGeometry", { args: [0.5, 32, 32] }), _jsx("meshStandardMaterial", { color: 0xff0000, wireframe: true })] }) }));
|
|
73
75
|
}
|
|
74
76
|
return (_jsx(ObjectsRenderer, { cameraSettings: cameraSettings, createdObjects: createdObjects, generalObjectSettings: generalObjectSettings, onObjectsReady: onObjectsReady, handleObjectClick: handleObjectClick, onObjectReady: onObjectReady, onObjectDispose: onObjectDispose }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ocean.d.ts","sourceRoot":"","sources":["../../src/components/Ocean.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAU7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAChD,QAAQ,EAAE,qBAAqB,CAAC;CACnC;AAGD,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"Ocean.d.ts","sourceRoot":"","sources":["../../src/components/Ocean.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAU7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAChD,QAAQ,EAAE,qBAAqB,CAAC;CACnC;AAGD,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA6J/B,CAAC;AACF,eAAe,KAAK,CAAC"}
|
package/dist/components/Ocean.js
CHANGED
|
@@ -26,7 +26,7 @@ const Ocean = ({ settings, onObjectReady, onObjectDispose }) => {
|
|
|
26
26
|
const position = meshSettings.position || [0, -1, 0];
|
|
27
27
|
const rotation = meshSettings.rotation || [-Math.PI / 2, 0, 0];
|
|
28
28
|
const scale = meshSettings.scale || 1;
|
|
29
|
-
useMaterialApplication(meshSettings.visible ? meshRef
|
|
29
|
+
useMaterialApplication(meshSettings.visible ? meshRef : null, materialSettings);
|
|
30
30
|
useWaterEnvironment(meshSettings.visible ? meshRef : { current: null });
|
|
31
31
|
useWaterReflections(meshSettings.visible ? meshRef : { current: null }, {
|
|
32
32
|
waterPosition: new THREE.Vector3(...position),
|
|
@@ -136,7 +136,6 @@ const Ocean = ({ settings, onObjectReady, onObjectDispose }) => {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
// ── PER-DOMAIN ANIMATIONS ───────────────────────────────────────────────
|
|
140
139
|
const now = Date.now();
|
|
141
140
|
const transformAnims = animations?.transform?.animations;
|
|
142
141
|
if (transformAnims?.length) {
|
|
@@ -146,7 +145,6 @@ const Ocean = ({ settings, onObjectReady, onObjectDispose }) => {
|
|
|
146
145
|
if (materialAnims?.length) {
|
|
147
146
|
handleMaterialAnimations({ object: mesh, materialSettings: materialSettings, startValuesCache: matAnimCacheRef.current }, materialAnims, now, false);
|
|
148
147
|
}
|
|
149
|
-
// ── PER-DOMAIN MOUSE-MOVE ───────────────────────────────────────────────
|
|
150
148
|
const mm = mouseMove;
|
|
151
149
|
const isPerDomain = mm && ('transform' in mm || 'material' in mm);
|
|
152
150
|
if (isPerDomain) {
|
|
@@ -159,7 +157,6 @@ const Ocean = ({ settings, onObjectReady, onObjectDispose }) => {
|
|
|
159
157
|
}
|
|
160
158
|
}
|
|
161
159
|
});
|
|
162
|
-
// console.log(rotation)
|
|
163
160
|
return (_jsx("mesh", { ref: meshRef,
|
|
164
161
|
// name={settings.meshSettings.name || 'Water'}
|
|
165
162
|
// position={position}
|
|
@@ -3,7 +3,6 @@ import type { ParticlesSettings } from '@3driseai/3drise-core';
|
|
|
3
3
|
import React from "react";
|
|
4
4
|
interface ParticlesR3fProps extends ObjectReadyProps {
|
|
5
5
|
particlesSettings: ParticlesSettings;
|
|
6
|
-
cameraFov?: number;
|
|
7
6
|
duration?: number;
|
|
8
7
|
transitionSettings?: Record<string, unknown>;
|
|
9
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesR3f.d.ts","sourceRoot":"","sources":["../../src/components/ParticlesR3f.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAO7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ParticlesR3f.d.ts","sourceRoot":"","sources":["../../src/components/ParticlesR3f.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAO7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,iBAAkB,SAAQ,gBAAgB;IAChD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAMD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoJ7C,CAAC;AACF,eAAe,YAAY,CAAC"}
|
|
@@ -5,8 +5,9 @@ import { useFrame } from '@react-three/fiber';
|
|
|
5
5
|
import { useParticlePositions } from '../hooks/useParticlePositions.js';
|
|
6
6
|
import { useParticlesColors } from '../hooks/useParticlesColors.js';
|
|
7
7
|
import { useParticlesTextures } from '../hooks/useParticlesTextures.js';
|
|
8
|
-
import { handleShapeAnimation, buildShaderEffectsMaterial, structureKey } from '@3driseai/3drise-core';
|
|
8
|
+
import { handleShapeAnimation, buildShaderEffectsMaterial, structureKey, SELF_OWNED_MATERIAL_KEY, applyVertexEffects, partitionShaderEffects, LOCAL_POINTER_SCALE } from '@3driseai/3drise-core';
|
|
9
9
|
import { update3driseShaderUniforms } from '../hooks/use3driseShader.js';
|
|
10
|
+
import { ownsShaderEffectsMaterial } from '../utils/pointsMaterialOwnership.js';
|
|
10
11
|
function normalizeEffects(raw) {
|
|
11
12
|
return Array.isArray(raw) ? raw : [];
|
|
12
13
|
}
|
|
@@ -71,42 +72,92 @@ const ParticlesR3f = ({ particlesSettings, duration = 1, transitionSettings, onO
|
|
|
71
72
|
const activeEffects = useMemo(() => normalizeEffects(particlesSettings.animations?.material?.shaderEffects), [particlesSettings.animations?.material?.shaderEffects]);
|
|
72
73
|
const pointerRadius = particlesSettings.animations?.material
|
|
73
74
|
?.shaderEffectsPointerRadius ?? 0.4;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
// Position effects displace the geometry from the CPU and leave `.material`
|
|
76
|
+
// alone, so they compose with any material. Only the rest still need the
|
|
77
|
+
// shader shell — and only the shell takes ownership of `.material`.
|
|
78
|
+
const { position: positionEffects, shell: shellEffects } = useMemo(() => partitionShaderEffects(activeEffects), [activeEffects]);
|
|
79
|
+
const hasPositionEffects = positionEffects.some(effect => effect.enabled);
|
|
80
|
+
const effectsKey = useMemo(() => structureKey(shellEffects), [shellEffects]);
|
|
81
|
+
const ownsMaterial = ownsShaderEffectsMaterial(particlesSettings.materialSettings, shellEffects);
|
|
82
|
+
const material = useMemo(() => ownsMaterial ? buildShaderEffectsMaterial({
|
|
83
|
+
effects: shellEffects,
|
|
77
84
|
initialColor: color,
|
|
78
85
|
initialOpacity: opacity,
|
|
79
86
|
initialPointSize: pointSize,
|
|
80
87
|
initialParticleUVScale: particleUVScale,
|
|
81
88
|
initialPointerEffectRadius: pointerRadius,
|
|
82
|
-
}),
|
|
89
|
+
}) : null,
|
|
83
90
|
// Rebuild when the structural set of effects changes; not on parameter tweaks.
|
|
84
91
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
85
|
-
[effectsKey]);
|
|
92
|
+
[effectsKey, ownsMaterial]);
|
|
93
|
+
// With position effects on, the attribute gets its own buffer: the shape
|
|
94
|
+
// animation writes this frame's morph into it, and the effects displace from
|
|
95
|
+
// a snapshot of that into the same buffer. Without a separate buffer the
|
|
96
|
+
// shape animation would read back its own displaced output next frame.
|
|
97
|
+
const displayPositions = useMemo(() => (hasPositionEffects && basePositions.current
|
|
98
|
+
? new Float32Array(basePositions.current)
|
|
99
|
+
: basePositions.current), [hasPositionEffects, basePositions.current]);
|
|
100
|
+
const frameBaseRef = useRef(null);
|
|
86
101
|
useEffect(() => {
|
|
87
102
|
materialRef.current = material;
|
|
88
103
|
return () => {
|
|
89
|
-
material
|
|
104
|
+
material?.dispose();
|
|
90
105
|
};
|
|
91
106
|
}, [material]);
|
|
107
|
+
// Tell useMaterialApplication's traversal to leave this object alone while we
|
|
108
|
+
// own its material. Set imperatively rather than through a `userData` prop:
|
|
109
|
+
// R3F replaces the whole object on every render, which would wipe the
|
|
110
|
+
// applyTexture handle stashed above.
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
const points = pointsRef.current;
|
|
113
|
+
if (!points)
|
|
114
|
+
return;
|
|
115
|
+
points.userData[SELF_OWNED_MATERIAL_KEY] = ownsMaterial;
|
|
116
|
+
return () => {
|
|
117
|
+
if (points.userData)
|
|
118
|
+
delete points.userData[SELF_OWNED_MATERIAL_KEY];
|
|
119
|
+
};
|
|
120
|
+
}, [ownsMaterial]);
|
|
92
121
|
useFrame((state, delta) => {
|
|
93
|
-
|
|
94
|
-
if (!mat || !pointsRef.current || !basePositions.current)
|
|
122
|
+
if (!pointsRef.current || !basePositions.current)
|
|
95
123
|
return;
|
|
124
|
+
const mat = materialRef.current;
|
|
96
125
|
if (meshSettings.visible) {
|
|
126
|
+
// Geometry animation is independent of who owns the material.
|
|
97
127
|
handleShapeAnimation(delta, speed, animationProgress, pointsRef, basePositions, targetPositions);
|
|
98
|
-
|
|
128
|
+
if (mat)
|
|
129
|
+
handleColorsAnimation(materialRef, delta, speed);
|
|
99
130
|
}
|
|
131
|
+
if (hasPositionEffects && displayPositions && displayPositions !== basePositions.current) {
|
|
132
|
+
if (!frameBaseRef.current || frameBaseRef.current.length !== displayPositions.length)
|
|
133
|
+
frameBaseRef.current = new Float32Array(displayPositions.length);
|
|
134
|
+
// Snapshot the shape-animated positions as this frame's baseline so
|
|
135
|
+
// the effects do not compound over time.
|
|
136
|
+
frameBaseRef.current.set(displayPositions);
|
|
137
|
+
const moved = applyVertexEffects(frameBaseRef.current, displayPositions, positionEffects, {
|
|
138
|
+
time: state.clock.getElapsedTime(),
|
|
139
|
+
pointerX: state.pointer.x * LOCAL_POINTER_SCALE,
|
|
140
|
+
pointerY: state.pointer.y * LOCAL_POINTER_SCALE,
|
|
141
|
+
pointerRadius: pointerRadius * LOCAL_POINTER_SCALE,
|
|
142
|
+
});
|
|
143
|
+
if (moved) {
|
|
144
|
+
const attribute = pointsRef.current.geometry?.attributes?.position;
|
|
145
|
+
if (attribute)
|
|
146
|
+
attribute.needsUpdate = true;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (!mat)
|
|
150
|
+
return;
|
|
100
151
|
if (prevTexture.current)
|
|
101
152
|
mat.uniforms.uTexture.value = prevTexture.current;
|
|
102
153
|
if (currentTexture.current)
|
|
103
154
|
mat.uniforms.uTargetTexture.value = currentTexture.current;
|
|
104
155
|
mat.uniforms.uHasTexture.value = !!currentTexture.current;
|
|
105
156
|
handleTextureAnimation(materialRef, delta, speed);
|
|
106
|
-
update3driseShaderUniforms(mat.uniforms,
|
|
157
|
+
update3driseShaderUniforms(mat.uniforms, shellEffects, state.clock.getElapsedTime(), { x: state.pointer.x, y: state.pointer.y }, { pointerRadius });
|
|
107
158
|
});
|
|
108
159
|
if (!basePositions.current)
|
|
109
160
|
return null;
|
|
110
|
-
return (_jsxs("points", { name: name, ref: pointsRef, raycast: () => null, position: [0, 0, 0], rotation: [0, 0, 0], scale: [1, 1, 1], children: [_jsxs("bufferGeometry", { children: [_jsx("bufferAttribute", { attach: "attributes-position", count: basePositions.current.length / 3, array: basePositions.current, itemSize: 3, args: [basePositions.current, 3] }), uvs && (_jsx("bufferAttribute", { attach: "attributes-aUV", count: uvs.length / 2, array: uvs, itemSize: 2, args: [uvs, 2] }))] }), _jsx("primitive", { object: material, attach: "material" })] }));
|
|
161
|
+
return (_jsxs("points", { name: name, ref: pointsRef, raycast: () => null, position: [0, 0, 0], rotation: [0, 0, 0], scale: [1, 1, 1], children: [_jsxs("bufferGeometry", { children: [_jsx("bufferAttribute", { attach: "attributes-position", count: (displayPositions ?? basePositions.current).length / 3, array: displayPositions ?? basePositions.current, itemSize: 3, args: [displayPositions ?? basePositions.current, 3] }), uvs && (_jsx("bufferAttribute", { attach: "attributes-aUV", count: uvs.length / 2, array: uvs, itemSize: 2, args: [uvs, 2] }))] }), material && _jsx("primitive", { object: material, attach: "material" })] }));
|
|
111
162
|
};
|
|
112
163
|
export default ParticlesR3f;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathRenderer.d.ts","sourceRoot":"","sources":["../../src/components/PathRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"PathRenderer.d.ts","sourceRoot":"","sources":["../../src/components/PathRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACvD,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8B7C,CAAC;AACF,eAAe,YAAY,CAAC"}
|
|
@@ -8,7 +8,6 @@ import PathGeometry from './PathGeometry.js';
|
|
|
8
8
|
const PathRenderer = ({ pathSettings, color = '#ffa500', showPoints = true, showLine = true, showCurve = true, onObjectReady, onObjectDispose, }) => {
|
|
9
9
|
const rootRef = useRef(null);
|
|
10
10
|
useObjectReady(rootRef, pathSettings, onObjectReady, onObjectDispose);
|
|
11
|
-
console.log("Rendering Path with settings:", pathSettings);
|
|
12
11
|
const pointSize = pathSettings.pointSize ?? 0.1;
|
|
13
12
|
const lineWidth = pathSettings.lineWidth ?? 2;
|
|
14
13
|
const points = pathSettings?.points || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloud.d.ts","sourceRoot":"","sources":["../../src/components/PointCloud.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"PointCloud.d.ts","sourceRoot":"","sources":["../../src/components/PointCloud.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAO7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,eAAgB,SAAQ,gBAAgB;IAC9C,SAAS,EAAE,YAAY,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACjC;AAyBD,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0HzC,CAAC;AACF,eAAe,UAAU,CAAC"}
|