@terraware/web-components 4.2.21 → 4.2.22-rc.0
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/components/VirtualWalkthrough/SplatModel.d.ts +8 -1
- package/components/VirtualWalkthrough/SplatModel.d.ts.map +1 -1
- package/components/VirtualWalkthrough/SplatModel.js +6 -2
- package/components/VirtualWalkthrough/VirtualWalkthroughViewer.d.ts +3 -1
- package/components/VirtualWalkthrough/VirtualWalkthroughViewer.d.ts.map +1 -1
- package/components/VirtualWalkthrough/VirtualWalkthroughViewer.js +3 -1
- package/components/VirtualWalkthrough/splatFormat.d.ts +17 -0
- package/components/VirtualWalkthrough/splatFormat.d.ts.map +1 -0
- package/components/VirtualWalkthrough/splatFormat.js +50 -0
- package/components/VirtualWalkthrough/splatFormat.test.js +51 -0
- package/package.json +1 -1
- package/virtualWalkthrough.d.ts +3 -1
- package/virtualWalkthrough.d.ts.map +1 -1
- package/virtualWalkthrough.js +2 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { SplatFormat } from './splatFormat';
|
|
2
3
|
export interface SplatModelProps {
|
|
3
4
|
splatSrc: string;
|
|
5
|
+
/**
|
|
6
|
+
* Splat format of `splatSrc`. Inferred from the URL when omitted, which covers bundled `.sog`,
|
|
7
|
+
* unbundled sog (`meta.json`), streamed LOD sog (`lod-meta.json`) and `.ply` sources. Set this
|
|
8
|
+
* explicitly when the URL hides the filename.
|
|
9
|
+
*/
|
|
10
|
+
splatFormat?: SplatFormat;
|
|
4
11
|
rotation?: [number, number, number];
|
|
5
12
|
cropAabbMin?: [number, number, number];
|
|
6
13
|
cropAabbMax?: [number, number, number];
|
|
@@ -10,6 +17,6 @@ export interface SplatModelProps {
|
|
|
10
17
|
revealRain?: boolean;
|
|
11
18
|
onError?: (error: Error) => void;
|
|
12
19
|
}
|
|
13
|
-
declare const _default: React.MemoExoticComponent<({ splatSrc, rotation, cropAabbMin, cropAabbMax, cropEdgeScaleFactor, cropFade, cropFadeDistance, revealRain, onError, }: SplatModelProps) => import("react/jsx-runtime").JSX.Element | null>;
|
|
20
|
+
declare const _default: React.MemoExoticComponent<({ splatSrc, splatFormat, rotation, cropAabbMin, cropAabbMax, cropEdgeScaleFactor, cropFade, cropFadeDistance, revealRain, onError, }: SplatModelProps) => import("react/jsx-runtime").JSX.Element | null>;
|
|
14
21
|
export default _default;
|
|
15
22
|
//# sourceMappingURL=SplatModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplatModel.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/SplatModel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SplatModel.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/SplatModel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAU/C,OAAO,EAAE,WAAW,EAA0C,MAAM,eAAe,CAAC;AAEpF,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;yLAaE,eAAe;AAkClB,wBAAgC"}
|
|
@@ -6,9 +6,11 @@ import BlockingSpinner from './BlockingSpinner';
|
|
|
6
6
|
import SplatCrop from './SplatCrop';
|
|
7
7
|
import SplatFadeCrop from './SplatFadeCrop';
|
|
8
8
|
import SplatRevealRain from './SplatRevealRain';
|
|
9
|
+
import { detectSplatFormat, splatLoaderFilename } from './splatFormat';
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
const SplatModel = ({
|
|
11
12
|
splatSrc,
|
|
13
|
+
splatFormat,
|
|
12
14
|
rotation,
|
|
13
15
|
cropAabbMin,
|
|
14
16
|
cropAabbMax,
|
|
@@ -18,14 +20,16 @@ const SplatModel = ({
|
|
|
18
20
|
revealRain = false,
|
|
19
21
|
onError
|
|
20
22
|
}) => {
|
|
21
|
-
//
|
|
23
|
+
// The loader selects its parser from this filename rather than from splatSrc, so it has to name the
|
|
24
|
+
// format we are actually loading. See splatFormat.ts.
|
|
25
|
+
const filename = splatLoaderFilename(splatFormat ?? detectSplatFormat(splatSrc));
|
|
22
26
|
const {
|
|
23
27
|
asset,
|
|
24
28
|
loading,
|
|
25
29
|
error
|
|
26
30
|
} = useSplat(splatSrc, {
|
|
27
31
|
file: {
|
|
28
|
-
filename
|
|
32
|
+
filename
|
|
29
33
|
}
|
|
30
34
|
});
|
|
31
35
|
useEffect(() => {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AnnotationProps } from './Annotation';
|
|
2
2
|
import { SplatControlsStrings } from './SplatControls';
|
|
3
|
+
import { SplatFormat } from './splatFormat';
|
|
3
4
|
export interface VirtualWalkthroughViewerProps {
|
|
4
5
|
splatSrc: string;
|
|
6
|
+
splatFormat?: SplatFormat;
|
|
5
7
|
origin?: [number, number, number];
|
|
6
8
|
cameraPosition?: [number, number, number];
|
|
7
9
|
sceneBounds?: {
|
|
@@ -24,6 +26,6 @@ export interface VirtualWalkthroughViewerProps {
|
|
|
24
26
|
onToggleFullScreen?: () => void;
|
|
25
27
|
maxImagesPerAnnotation?: number;
|
|
26
28
|
}
|
|
27
|
-
declare const VirtualWalkthroughViewer: ({ splatSrc, origin, cameraPosition, sceneBounds, groundPlane: groundPlaneProp, skyColor, groundColor, averageCameraHeight, scaleFactor, annotations, onSaveAnnotations, strings, editable, showFreeFly, isFullScreen, onToggleFullScreen, maxImagesPerAnnotation, }: VirtualWalkthroughViewerProps) => import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
declare const VirtualWalkthroughViewer: ({ splatSrc, splatFormat, origin, cameraPosition, sceneBounds, groundPlane: groundPlaneProp, skyColor, groundColor, averageCameraHeight, scaleFactor, annotations, onSaveAnnotations, strings, editable, showFreeFly, isFullScreen, onToggleFullScreen, maxImagesPerAnnotation, }: VirtualWalkthroughViewerProps) => import("react/jsx-runtime").JSX.Element;
|
|
28
30
|
export default VirtualWalkthroughViewer;
|
|
29
31
|
//# sourceMappingURL=VirtualWalkthroughViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualWalkthroughViewer.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/VirtualWalkthroughViewer.tsx"],"names":[],"mappings":"AAYA,OAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAK3D,OAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"VirtualWalkthroughViewer.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/VirtualWalkthroughViewer.tsx"],"names":[],"mappings":"AAYA,OAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAK3D,OAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAKtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,iBAAiB,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,QAAA,MAAM,wBAAwB,GAAI,kRAmB/B,6BAA6B,4CAmU/B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
|
|
@@ -24,6 +24,7 @@ const DEFAULT_FOCUS_POINT = [0, 0.1, 0];
|
|
|
24
24
|
const DEFAULT_POSITION = [1, 0.1, 0];
|
|
25
25
|
const VirtualWalkthroughViewer = ({
|
|
26
26
|
splatSrc,
|
|
27
|
+
splatFormat,
|
|
27
28
|
origin = DEFAULT_FOCUS_POINT,
|
|
28
29
|
cameraPosition = DEFAULT_POSITION,
|
|
29
30
|
sceneBounds,
|
|
@@ -195,9 +196,10 @@ const VirtualWalkthroughViewer = ({
|
|
|
195
196
|
const canSave = useMemo(() => localAnnotations.every(annotation => annotation.title && annotation.title.trim() !== ''), [localAnnotations]);
|
|
196
197
|
const splatModel = useMemo(() => /*#__PURE__*/_jsx(SplatModel, {
|
|
197
198
|
splatSrc: splatSrc,
|
|
199
|
+
splatFormat: splatFormat,
|
|
198
200
|
rotation: [-180, 0, 0],
|
|
199
201
|
revealRain: isHighPerformance
|
|
200
|
-
}, 'splat'), [isHighPerformance, splatSrc]);
|
|
202
|
+
}, 'splat'), [isHighPerformance, splatSrc, splatFormat]);
|
|
201
203
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
202
204
|
children: [/*#__PURE__*/_jsx(GradientSky, {
|
|
203
205
|
topColor: skyColor || '#FFFFFF',
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const LOADER_FILENAMES: {
|
|
2
|
+
readonly sog: "model.sog";
|
|
3
|
+
readonly sogUnbundled: "meta.json";
|
|
4
|
+
readonly sogStreamed: "lod-meta.json";
|
|
5
|
+
readonly ply: "model.ply";
|
|
6
|
+
};
|
|
7
|
+
export type SplatFormat = keyof typeof LOADER_FILENAMES;
|
|
8
|
+
/**
|
|
9
|
+
* Format assumed when a URL is too opaque to tell us anything. Kept as the bundled `.sog` archive so
|
|
10
|
+
* that existing extensionless splat URLs keep loading the way they did before the other formats were
|
|
11
|
+
* supported.
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_SPLAT_FORMAT: SplatFormat;
|
|
14
|
+
export declare const splatLoaderFilename: (format: SplatFormat) => string;
|
|
15
|
+
export declare const detectSplatFormat: (splatSrc: string) => SplatFormat;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=splatFormat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splatFormat.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/splatFormat.ts"],"names":[],"mappings":"AAoBA,QAAA,MAAM,gBAAgB;;;;;CAKZ,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAmB,CAAC;AAEvD,eAAO,MAAM,mBAAmB,GAAI,QAAQ,WAAW,KAAG,MAAkC,CAAC;AAE7F,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,WAkBpD,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The playcanvas gsplat loader picks its parser from the asset's `filename`, not from the URL it
|
|
3
|
+
* actually downloads, because a splat is frequently served from a signed or extensionless URL. Each
|
|
4
|
+
* supported format therefore maps to a canonical filename whose extension/basename routes the asset
|
|
5
|
+
* to the matching engine parser:
|
|
6
|
+
*
|
|
7
|
+
* model.sog -> SogBundleParser sog packed into a single zip archive
|
|
8
|
+
* meta.json -> SogParser the same sog data left unpacked as separate files
|
|
9
|
+
* lod-meta.json -> GSplatOctreeParser sog with LOD levels, streamed in as the camera moves
|
|
10
|
+
* model.ply -> PlyParser
|
|
11
|
+
*
|
|
12
|
+
* `sog` and `sogUnbundled` are two packagings of one format, not two formats: both parsers build a
|
|
13
|
+
* GSplatSogData/GSplatSogResource and both await every texture before the resource exists. Only
|
|
14
|
+
* `sogStreamed` streams — playcanvas.d.ts on GSplatOctreeResource#numSplats: "Not all of these are
|
|
15
|
+
* resident at runtime: the LOD streaming system selects a subset per node based on view distance and
|
|
16
|
+
* the configured splat budget."
|
|
17
|
+
*
|
|
18
|
+
* Only the filename is faked; the textures an unbundled or streamed sog references are still
|
|
19
|
+
* resolved relative to the real URL, so no rewriting of splatSrc is needed.
|
|
20
|
+
*/
|
|
21
|
+
const LOADER_FILENAMES = {
|
|
22
|
+
sog: 'model.sog',
|
|
23
|
+
sogUnbundled: 'meta.json',
|
|
24
|
+
sogStreamed: 'lod-meta.json',
|
|
25
|
+
ply: 'model.ply'
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Format assumed when a URL is too opaque to tell us anything. Kept as the bundled `.sog` archive so
|
|
29
|
+
* that existing extensionless splat URLs keep loading the way they did before the other formats were
|
|
30
|
+
* supported.
|
|
31
|
+
*/
|
|
32
|
+
export const DEFAULT_SPLAT_FORMAT = 'sog';
|
|
33
|
+
export const splatLoaderFilename = format => LOADER_FILENAMES[format];
|
|
34
|
+
export const detectSplatFormat = splatSrc => {
|
|
35
|
+
const path = splatSrc.split(/[?#]/)[0];
|
|
36
|
+
const basename = path.slice(path.lastIndexOf('/') + 1).toLowerCase();
|
|
37
|
+
if (basename === 'lod-meta.json') {
|
|
38
|
+
return 'sogStreamed';
|
|
39
|
+
}
|
|
40
|
+
if (basename === 'meta.json') {
|
|
41
|
+
return 'sogUnbundled';
|
|
42
|
+
}
|
|
43
|
+
if (basename.endsWith('.ply')) {
|
|
44
|
+
return 'ply';
|
|
45
|
+
}
|
|
46
|
+
if (basename.endsWith('.sog')) {
|
|
47
|
+
return 'sog';
|
|
48
|
+
}
|
|
49
|
+
return DEFAULT_SPLAT_FORMAT;
|
|
50
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { detectSplatFormat, splatLoaderFilename } from './splatFormat';
|
|
2
|
+
describe('detectSplatFormat', () => {
|
|
3
|
+
it('detects a bundled .sog archive', () => {
|
|
4
|
+
expect(detectSplatFormat('https://example.com/scenes/7154.sog')).toBe('sog');
|
|
5
|
+
});
|
|
6
|
+
it('detects an unbundled sog meta.json', () => {
|
|
7
|
+
expect(detectSplatFormat('https://example.com/scenes/7154/meta.json')).toBe('sogUnbundled');
|
|
8
|
+
});
|
|
9
|
+
it('detects a streamed LOD sog lod-meta.json', () => {
|
|
10
|
+
expect(detectSplatFormat('https://example.com/scenes/7154/lod-meta.json')).toBe('sogStreamed');
|
|
11
|
+
});
|
|
12
|
+
it('detects a .ply model', () => {
|
|
13
|
+
expect(detectSplatFormat('https://example.com/scenes/7154.ply')).toBe('ply');
|
|
14
|
+
});
|
|
15
|
+
it('ignores query strings on signed urls', () => {
|
|
16
|
+
expect(detectSplatFormat('https://example.com/7154/meta.json?rlkey=abc123&raw=1')).toBe('sogUnbundled');
|
|
17
|
+
});
|
|
18
|
+
it('ignores url fragments', () => {
|
|
19
|
+
expect(detectSplatFormat('https://example.com/7154/lod-meta.json#frag')).toBe('sogStreamed');
|
|
20
|
+
});
|
|
21
|
+
it('is case insensitive', () => {
|
|
22
|
+
expect(detectSplatFormat('https://example.com/7154/Meta.JSON')).toBe('sogUnbundled');
|
|
23
|
+
expect(detectSplatFormat('https://example.com/7154.SOG')).toBe('sog');
|
|
24
|
+
});
|
|
25
|
+
it('handles a bare filename with no directory', () => {
|
|
26
|
+
expect(detectSplatFormat('meta.json')).toBe('sogUnbundled');
|
|
27
|
+
});
|
|
28
|
+
it('does not mistake lod-meta.json for the unbundled format', () => {
|
|
29
|
+
expect(detectSplatFormat('https://example.com/lod-meta.json')).not.toBe('sogUnbundled');
|
|
30
|
+
});
|
|
31
|
+
it('does not treat an arbitrary .json file as a sog manifest', () => {
|
|
32
|
+
expect(detectSplatFormat('https://example.com/scene.json')).toBe('sog');
|
|
33
|
+
});
|
|
34
|
+
it('falls back to the bundled sog format for extensionless urls', () => {
|
|
35
|
+
expect(detectSplatFormat('https://example.com/assets/abc123?raw=1')).toBe('sog');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('splatLoaderFilename', () => {
|
|
39
|
+
it('maps the bundled format to a .sog filename so the loader picks the sog bundle parser', () => {
|
|
40
|
+
expect(splatLoaderFilename('sog')).toBe('model.sog');
|
|
41
|
+
});
|
|
42
|
+
it('maps the unbundled format to meta.json so the loader picks the plain sog parser', () => {
|
|
43
|
+
expect(splatLoaderFilename('sogUnbundled')).toBe('meta.json');
|
|
44
|
+
});
|
|
45
|
+
it('maps the streamed format to the exact basename the octree parser matches on', () => {
|
|
46
|
+
expect(splatLoaderFilename('sogStreamed')).toBe('lod-meta.json');
|
|
47
|
+
});
|
|
48
|
+
it('maps ply to a .ply filename', () => {
|
|
49
|
+
expect(splatLoaderFilename('ply')).toBe('model.ply');
|
|
50
|
+
});
|
|
51
|
+
});
|
package/package.json
CHANGED
package/virtualWalkthrough.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ import { TfXrNavigation } from './components/VirtualWalkthrough/TfXrNavigation';
|
|
|
18
18
|
import VirtualWalkthroughViewer from './components/VirtualWalkthrough/VirtualWalkthroughViewer';
|
|
19
19
|
import { BoundaryRingScript, boundaryRingMesh } from './components/VirtualWalkthrough/boundary-ring';
|
|
20
20
|
import { computeGroundPlane, yOnPlane } from './components/VirtualWalkthrough/groundPlane';
|
|
21
|
+
import { detectSplatFormat, splatLoaderFilename } from './components/VirtualWalkthrough/splatFormat';
|
|
21
22
|
import { WalkthroughCamera } from './components/VirtualWalkthrough/walkthrough-camera';
|
|
22
23
|
import { useDevicePerformance } from './hooks/useDevicePerformance';
|
|
23
24
|
export type { AnnotationProps, AnnotationIconType } from './components/VirtualWalkthrough/Annotation';
|
|
@@ -29,6 +30,7 @@ export type { BoundaryRingGeometry, BoundaryRingGeometryParams } from './compone
|
|
|
29
30
|
export type { GroundPlane } from './components/VirtualWalkthrough/groundPlane';
|
|
30
31
|
export type { BoundaryRingProps } from './components/VirtualWalkthrough/BoundaryRing';
|
|
31
32
|
export type { SplatModelProps } from './components/VirtualWalkthrough/SplatModel';
|
|
33
|
+
export type { SplatFormat } from './components/VirtualWalkthrough/splatFormat';
|
|
32
34
|
export type { VirtualWalkthroughViewerProps } from './components/VirtualWalkthrough/VirtualWalkthroughViewer';
|
|
33
|
-
export { Annotation, AnnotationEditPane, AnnotationPanel, Application, AutoRotator, BlockingSpinner, BoundaryRing, boundaryRingMesh, BoundaryRingScript, CameraInfo, computeGroundPlane, ControlsInfoPane, GradientSky, SplatControls, SplatCrop, SplatFadeCrop, SplatModel, SplatRevealRain, TfAnnotationManager, TfXrNavigation, useDevicePerformance, VirtualWalkthroughViewer, WalkthroughCamera, yOnPlane, };
|
|
35
|
+
export { Annotation, AnnotationEditPane, AnnotationPanel, Application, AutoRotator, BlockingSpinner, BoundaryRing, boundaryRingMesh, BoundaryRingScript, CameraInfo, computeGroundPlane, ControlsInfoPane, detectSplatFormat, GradientSky, SplatControls, SplatCrop, SplatFadeCrop, splatLoaderFilename, SplatModel, SplatRevealRain, TfAnnotationManager, TfXrNavigation, useDevicePerformance, VirtualWalkthroughViewer, WalkthroughCamera, yOnPlane, };
|
|
34
36
|
//# sourceMappingURL=virtualWalkthrough.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualWalkthrough.d.ts","sourceRoot":"","sources":["../src/virtualWalkthrough.ts"],"names":[],"mappings":"AAOA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,kBAAkB,MAAM,oDAAoD,CAAC;AACpF,OAAO,eAAe,MAAM,iDAAiD,CAAC;AAC9E,OAAO,WAAW,MAAM,6CAA6C,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,eAAe,MAAM,iDAAiD,CAAC;AAC9E,OAAO,YAAY,MAAM,8CAA8C,CAAC;AACxE,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,gBAAgB,MAAM,kDAAkD,CAAC;AAChF,OAAO,WAAW,MAAM,6CAA6C,CAAC;AACtE,OAAO,aAAa,MAAM,+CAA+C,CAAC;AAC1E,OAAO,SAAS,MAAM,2CAA2C,CAAC;AAClE,OAAO,aAAa,MAAM,+CAA+C,CAAC;AAC1E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,eAAe,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,wBAAwB,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AACtG,YAAY,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACjG,YAAY,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC9G,YAAY,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AACtH,YAAY,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAClF,YAAY,EAAE,6BAA6B,EAAE,MAAM,0DAA0D,CAAC;AAE9G,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,QAAQ,GACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"virtualWalkthrough.d.ts","sourceRoot":"","sources":["../src/virtualWalkthrough.ts"],"names":[],"mappings":"AAOA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,kBAAkB,MAAM,oDAAoD,CAAC;AACpF,OAAO,eAAe,MAAM,iDAAiD,CAAC;AAC9E,OAAO,WAAW,MAAM,6CAA6C,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC1E,OAAO,eAAe,MAAM,iDAAiD,CAAC;AAC9E,OAAO,YAAY,MAAM,8CAA8C,CAAC;AACxE,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,gBAAgB,MAAM,kDAAkD,CAAC;AAChF,OAAO,WAAW,MAAM,6CAA6C,CAAC;AACtE,OAAO,aAAa,MAAM,+CAA+C,CAAC;AAC1E,OAAO,SAAS,MAAM,2CAA2C,CAAC;AAClE,OAAO,aAAa,MAAM,+CAA+C,CAAC;AAC1E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,eAAe,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,wBAAwB,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AACtG,YAAY,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACjG,YAAY,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC9G,YAAY,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AACtH,YAAY,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,YAAY,EAAE,6BAA6B,EAAE,MAAM,0DAA0D,CAAC;AAE9G,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,QAAQ,GACT,CAAC"}
|
package/virtualWalkthrough.js
CHANGED
|
@@ -25,6 +25,7 @@ import { TfXrNavigation } from './components/VirtualWalkthrough/TfXrNavigation';
|
|
|
25
25
|
import VirtualWalkthroughViewer from './components/VirtualWalkthrough/VirtualWalkthroughViewer';
|
|
26
26
|
import { BoundaryRingScript, boundaryRingMesh } from './components/VirtualWalkthrough/boundary-ring';
|
|
27
27
|
import { computeGroundPlane, yOnPlane } from './components/VirtualWalkthrough/groundPlane';
|
|
28
|
+
import { detectSplatFormat, splatLoaderFilename } from './components/VirtualWalkthrough/splatFormat';
|
|
28
29
|
import { WalkthroughCamera } from './components/VirtualWalkthrough/walkthrough-camera';
|
|
29
30
|
import { useDevicePerformance } from './hooks/useDevicePerformance';
|
|
30
|
-
export { Annotation, AnnotationEditPane, AnnotationPanel, Application, AutoRotator, BlockingSpinner, BoundaryRing, boundaryRingMesh, BoundaryRingScript, CameraInfo, computeGroundPlane, ControlsInfoPane, GradientSky, SplatControls, SplatCrop, SplatFadeCrop, SplatModel, SplatRevealRain, TfAnnotationManager, TfXrNavigation, useDevicePerformance, VirtualWalkthroughViewer, WalkthroughCamera, yOnPlane };
|
|
31
|
+
export { Annotation, AnnotationEditPane, AnnotationPanel, Application, AutoRotator, BlockingSpinner, BoundaryRing, boundaryRingMesh, BoundaryRingScript, CameraInfo, computeGroundPlane, ControlsInfoPane, detectSplatFormat, GradientSky, SplatControls, SplatCrop, SplatFadeCrop, splatLoaderFilename, SplatModel, SplatRevealRain, TfAnnotationManager, TfXrNavigation, useDevicePerformance, VirtualWalkthroughViewer, WalkthroughCamera, yOnPlane };
|