@cognite/reveal 4.2.0-dev.20230512 → 4.2.0-dev.20230516

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 (27) hide show
  1. package/dist/api-entry-points/core.d.ts +1 -0
  2. package/dist/index.js +131 -127
  3. package/dist/index.js.map +1 -1
  4. package/dist/packages/360-images/index.d.ts +1 -0
  5. package/dist/packages/360-images/src/Image360Facade.d.ts +2 -1
  6. package/dist/packages/360-images/src/annotation/ImageAnnotationObject.d.ts +2 -0
  7. package/dist/packages/360-images/src/annotation/PolygonAnnotationData.d.ts +3 -3
  8. package/dist/packages/360-images/src/collection/DefaultImage360Collection.d.ts +1 -0
  9. package/dist/packages/360-images/src/collection/Image360CollectionFactory.d.ts +3 -1
  10. package/dist/packages/360-images/src/entity/Image360Entity.d.ts +3 -3
  11. package/dist/packages/360-images/src/icons/IconCollection.d.ts +13 -7
  12. package/dist/packages/3d-overlays/index.d.ts +9 -0
  13. package/dist/packages/{360-images/src/icons → 3d-overlays/src}/IconOctree.d.ts +6 -6
  14. package/dist/packages/3d-overlays/src/Overlay3D.d.ts +29 -0
  15. package/dist/packages/3d-overlays/src/Overlay3DCollection.d.ts +34 -0
  16. package/dist/packages/3d-overlays/src/Overlay3DIcon.d.ts +70 -0
  17. package/dist/packages/3d-overlays/src/OverlayCollection.d.ts +38 -0
  18. package/dist/packages/3d-overlays/src/OverlayPointsObject.d.ts +26 -0
  19. package/dist/packages/api/src/api-helpers/Image360ApiHelper.d.ts +2 -2
  20. package/dist/packages/api/src/public/migration/Cognite3DViewer.d.ts +5 -1
  21. package/dist/packages/api/src/public/migration/types.d.ts +9 -0
  22. package/dist/packages/tools/index.d.ts +1 -0
  23. package/dist/packages/tools/src/SmartOverlay/SmartOverlayTool.d.ts +86 -0
  24. package/package.json +11 -11
  25. package/dist/packages/360-images/src/icons/Image360Icon.d.ts +0 -29
  26. package/dist/packages/360-images/src/icons/InstancedIconSprite.d.ts +0 -16
  27. package/dist/packages/tools/src/types.d.ts +0 -4
@@ -14,3 +14,4 @@ export { Image360AnnotationAppearance } from './src/annotation/types';
14
14
  export { Image360AnnotationIntersection } from './src/annotation/Image360AnnotationIntersection';
15
15
  export { Image360Annotation } from './src/annotation/Image360Annotation';
16
16
  export { DefaultImage360Collection } from './src/collection/DefaultImage360Collection';
17
+ export { IconsOptions } from './src/icons/IconCollection';
@@ -14,7 +14,8 @@ export declare class Image360Facade<T> {
14
14
  private readonly _image360Cache;
15
15
  get collections(): DefaultImage360Collection[];
16
16
  set allIconsVisibility(visible: boolean);
17
- set allHoverIconsVisibility(visible: boolean);
17
+ set allIconsSelected(visible: boolean);
18
+ set hoverIconVisibility(visible: boolean);
18
19
  set allIconCullingScheme(scheme: IconCullingScheme);
19
20
  constructor(_entityFactory: Image360CollectionFactory<T>);
20
21
  create(dataProviderFilter: T, postTransform?: THREE.Matrix4, preComputedRotation?: boolean): Promise<DefaultImage360Collection>;
@@ -16,6 +16,8 @@ export declare class ImageAnnotationObject implements Image360Annotation {
16
16
  get annotation(): AnnotationModel;
17
17
  static createAnnotationObject(annotation: AnnotationModel, face: FaceType): ImageAnnotationObject | undefined;
18
18
  private static createObjectData;
19
+ private static createObjectDetectionAnnotationData;
20
+ private static createAssetLinkAnnotationData;
19
21
  private constructor();
20
22
  private getRotationFromFace;
21
23
  private initializeTransform;
@@ -2,12 +2,12 @@
2
2
  * Copyright 2023 Cognite AS
3
3
  */
4
4
  import { BufferGeometry, Matrix4, ShapeGeometry } from 'three';
5
- import { AnnotationsObjectDetection } from '@cognite/sdk';
5
+ import { AnnotationsPolygon } from '@cognite/sdk';
6
6
  import { ImageAnnotationObjectData } from './ImageAnnotationData';
7
7
  export declare class PolygonAnnotationData implements ImageAnnotationObjectData {
8
8
  private readonly _geometry;
9
- constructor(annotation: AnnotationsObjectDetection);
10
- createGeometry(annotation: AnnotationsObjectDetection): ShapeGeometry;
9
+ constructor(polygon: AnnotationsPolygon);
10
+ createGeometry(polygon: AnnotationsPolygon): ShapeGeometry;
11
11
  getGeometry(): BufferGeometry;
12
12
  getNormalizationMatrix(): Matrix4;
13
13
  }
@@ -66,6 +66,7 @@ export declare class DefaultImage360Collection implements Image360Collection {
66
66
  */
67
67
  off(event: 'image360Entered', callback: Image360EnteredDelegate): void;
68
68
  off(event: 'image360Exited', callback: Image360ExitedDelegate): void;
69
+ setSelectedForAll(selected: boolean): void;
69
70
  setSelectedVisibility(visible: boolean): void;
70
71
  setCullingScheme(scheme: IconCullingScheme): void;
71
72
  remove(entity: Image360Entity): void;
@@ -4,11 +4,13 @@
4
4
  import { Image360Provider } from '../../../data-providers';
5
5
  import { BeforeSceneRenderedDelegate, DeviceDescriptor, EventTrigger, SceneHandler } from '../../../utilities';
6
6
  import { DefaultImage360Collection } from './DefaultImage360Collection';
7
+ import { IconsOptions } from '../icons/IconCollection';
7
8
  export declare class Image360CollectionFactory<T> {
8
9
  private readonly _image360DataProvider;
9
10
  private readonly _sceneHandler;
10
11
  private readonly _onBeforeSceneRendered;
12
+ private readonly _iconsOptions;
11
13
  private readonly _device;
12
- constructor(image360DataProvider: Image360Provider<T>, sceneHandler: SceneHandler, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>, device: DeviceDescriptor);
14
+ constructor(image360DataProvider: Image360Provider<T>, sceneHandler: SceneHandler, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>, device: DeviceDescriptor, iconsOptions?: IconsOptions);
13
15
  create(dataProviderFilter: T, postTransform: THREE.Matrix4, preMultipliedRotation: boolean): Promise<DefaultImage360Collection>;
14
16
  }
@@ -3,12 +3,12 @@
3
3
  */
4
4
  import { DeviceDescriptor, SceneHandler } from '../../../utilities';
5
5
  import { Image360DataProvider } from '../../../data-providers';
6
- import { Image360Icon } from '../icons/Image360Icon';
7
6
  import { Image360, Image360Metadata } from './Image360';
8
7
  import { Historical360ImageSet } from '../../../data-providers/src/types';
9
8
  import { Image360RevisionEntity } from './Image360RevisionEntity';
10
9
  import { Image360VisualizationBox } from './Image360VisualizationBox';
11
10
  import { ImageAnnotationObject } from '../annotation/ImageAnnotationObject';
11
+ import { Overlay3DIcon } from '../../../3d-overlays';
12
12
  export declare class Image360Entity implements Image360 {
13
13
  private readonly _revisions;
14
14
  private readonly _imageMetadata;
@@ -27,13 +27,13 @@ export declare class Image360Entity implements Image360 {
27
27
  * image during normal visualization.
28
28
  * @returns Image360Icon
29
29
  */
30
- get icon(): Image360Icon;
30
+ get icon(): Overlay3DIcon;
31
31
  /**
32
32
  * The object containing the unit cube with the 360 images.
33
33
  * @returns Image360Visualization
34
34
  */
35
35
  get image360Visualization(): Image360VisualizationBox;
36
- constructor(image360Metadata: Historical360ImageSet, sceneHandler: SceneHandler, imageProvider: Image360DataProvider, transform: THREE.Matrix4, icon: Image360Icon, device: DeviceDescriptor);
36
+ constructor(image360Metadata: Historical360ImageSet, sceneHandler: SceneHandler, imageProvider: Image360DataProvider, transform: THREE.Matrix4, icon: Overlay3DIcon, device: DeviceDescriptor);
37
37
  /**
38
38
  * List all historical images for this entity.
39
39
  * @returns A list of available revisions.
@@ -3,16 +3,20 @@
3
3
  */
4
4
  import { Vector3 } from 'three';
5
5
  import { BeforeSceneRenderedDelegate, EventTrigger, SceneHandler } from '../../../utilities';
6
- import { Image360Icon } from './Image360Icon';
6
+ import { Overlay3DIcon } from '../../../3d-overlays';
7
7
  export type IconCullingScheme = 'clustered' | 'proximity';
8
+ export type IconsOptions = {
9
+ platformMaxPointsSize?: number;
10
+ };
8
11
  export declare class IconCollection {
9
- private readonly MIN_PIXEL_SIZE;
10
- private readonly MAX_PIXEL_SIZE;
12
+ private static readonly MinPixelSize;
13
+ private static readonly DefaultMaxPixelSize;
14
+ private readonly _maxPixelSize;
11
15
  private readonly _sceneHandler;
12
- private readonly _hoverIconTexture;
13
16
  private readonly _sharedTexture;
17
+ private readonly _hoverSprite;
14
18
  private readonly _icons;
15
- private readonly _iconsSprite;
19
+ private readonly _pointsObject;
16
20
  private readonly _computeClustersEventHandler;
17
21
  private readonly _computeProximityPointsEventHandler;
18
22
  private readonly _onBeforeSceneRenderedEvent;
@@ -21,14 +25,16 @@ export declare class IconCollection {
21
25
  private _iconCullingScheme;
22
26
  private _proximityRadius;
23
27
  private _proximityPointLimit;
24
- get icons(): Image360Icon[];
28
+ get icons(): Overlay3DIcon[];
29
+ set hoverSpriteVisibility(value: boolean);
25
30
  setCullingScheme(scheme: IconCullingScheme): void;
26
31
  set360IconCullingRestrictions(radius: number, pointLimit: number): void;
27
- constructor(points: Vector3[], sceneHandler: SceneHandler, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>);
32
+ constructor(points: Vector3[], sceneHandler: SceneHandler, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>, iconOptions?: IconsOptions);
28
33
  private setIconClustersByLOD;
29
34
  private computeProximityPoints;
30
35
  private initializeImage360Icons;
31
36
  dispose(): void;
37
+ private createHoverSprite;
32
38
  private createOuterRingsTexture;
33
39
  private createHoverIconTexture;
34
40
  }
@@ -0,0 +1,9 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ export { Overlay3DCollection } from './src/Overlay3DCollection';
5
+ export { OverlayPointsObject, OverlayPointsParameters } from './src/OverlayPointsObject';
6
+ export { Overlay3DIcon } from './src/Overlay3DIcon';
7
+ export { Overlay3D } from './src/Overlay3D';
8
+ export { OverlayCollection, OverlayInfo, DefaultMetadataType } from './src/OverlayCollection';
9
+ export { IconOctree } from './src/IconOctree';
@@ -3,13 +3,13 @@
3
3
  */
4
4
  import { Node, PointOctant, PointOctree } from 'sparse-octree';
5
5
  import { Box3, Matrix4 } from 'three';
6
- import { Image360Icon } from '../icons/Image360Icon';
7
- export declare class IconOctree extends PointOctree<Image360Icon> {
6
+ import { Overlay3DIcon } from './Overlay3DIcon';
7
+ export declare class IconOctree extends PointOctree<Overlay3DIcon> {
8
8
  private readonly _nodeCenters;
9
- static getMinimalOctreeBoundsFromIcons(icons: Image360Icon[]): Box3;
10
- constructor(icons: Image360Icon[], bounds: Box3, maxLeafSize: number);
11
- getNodeIcon(node: Node): Image360Icon | undefined;
12
- getLODByScreenArea(areaThreshold: number, projection: Matrix4, minimumLevel?: number): Set<PointOctant<Image360Icon>>;
9
+ static getMinimalOctreeBoundsFromIcons(icons: Overlay3DIcon[]): Box3;
10
+ constructor(icons: Overlay3DIcon[], bounds: Box3, maxLeafSize: number);
11
+ getNodeIcon(node: Node): Overlay3DIcon | undefined;
12
+ getLODByScreenArea(areaThreshold: number, projection: Matrix4, minimumLevel?: number): Set<PointOctant<Overlay3DIcon>>;
13
13
  private populateNodeCenters;
14
14
  private filterEmptyLeaves;
15
15
  private hasChildren;
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ export interface Overlay3D<MetadataType> {
5
+ /**
6
+ * Set whether this overlay should be visible.
7
+ * */
8
+ set visible(visible: boolean);
9
+ /**
10
+ * Get whether this overlay is visible.
11
+ */
12
+ get visible(): boolean;
13
+ /**
14
+ * Get the position of this overlay.
15
+ */
16
+ get position(): THREE.Vector3;
17
+ /**
18
+ * Set the display color of this overlay.
19
+ * */
20
+ setColor(color: THREE.Color): void;
21
+ /**
22
+ * Get the display color of this overlay.
23
+ * */
24
+ get color(): THREE.Color;
25
+ /**
26
+ * Get the metadata associated with this overlay.
27
+ * */
28
+ getMetadata(): MetadataType | undefined;
29
+ }
@@ -0,0 +1,34 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { Color, Texture, Object3D } from 'three';
5
+ import { Overlay3D } from './Overlay3D';
6
+ import { DefaultMetadataType, OverlayCollection, OverlayInfo } from './OverlayCollection';
7
+ export type Overlay3DCollectionOptions = {
8
+ overlayTexture?: Texture;
9
+ maxPointSize?: number;
10
+ defaultOverlayColor?: Color;
11
+ };
12
+ export declare class Overlay3DCollection<MetadataType = DefaultMetadataType> extends Object3D implements OverlayCollection<MetadataType> {
13
+ private readonly MinPixelSize;
14
+ private readonly MaxPixelSize;
15
+ private readonly DefaultMaxPoints;
16
+ private readonly defaultOverlayColor;
17
+ private readonly _sharedTexture;
18
+ private readonly _overlayPoints;
19
+ private readonly _iconRadius;
20
+ private _overlays;
21
+ private _octree;
22
+ constructor(overlayInfos?: OverlayInfo<MetadataType>[], options?: Overlay3DCollectionOptions);
23
+ setVisibility(visibility: boolean): void;
24
+ getOverlays(): Overlay3D<MetadataType>[];
25
+ addOverlays(overlayInfos: OverlayInfo<MetadataType>[]): Overlay3D<MetadataType>[];
26
+ sortOverlaysRelativeToCamera(camera: THREE.Camera): void;
27
+ removeOverlays(overlays: Overlay3D<MetadataType>[]): void;
28
+ removeAllOverlays(): void;
29
+ private rebuildOctree;
30
+ private updatePointsObject;
31
+ private initializeOverlay3DIcons;
32
+ dispose(): void;
33
+ private createCircleTexture;
34
+ }
@@ -0,0 +1,70 @@
1
+ /*!
2
+ * Copyright 2022 Cognite AS
3
+ */
4
+ import { PerspectiveCamera, Ray, Vector3, Color } from 'three';
5
+ import { Overlay3D } from './Overlay3D';
6
+ import { DefaultMetadataType } from './OverlayCollection';
7
+ export type IconParameters = {
8
+ position: THREE.Vector3;
9
+ color?: THREE.Color;
10
+ minPixelSize: number;
11
+ maxPixelSize: number;
12
+ iconRadius: number;
13
+ hoverSprite?: THREE.Sprite;
14
+ };
15
+ export type SetAdaptiveScaleDelegate = (args: {
16
+ camera: THREE.Camera;
17
+ renderSize: THREE.Vector2;
18
+ domElement: HTMLElement;
19
+ }) => void;
20
+ export type ParametersChangeDelegate = (event: {
21
+ color: THREE.Color;
22
+ visble: boolean;
23
+ }) => void;
24
+ export type SelectedDelegate = (event: {
25
+ selected: boolean;
26
+ }) => void;
27
+ export type IconEvent = 'selected' | 'parametersChange';
28
+ export declare class Overlay3DIcon<MetadataType = DefaultMetadataType> implements Overlay3D<MetadataType> {
29
+ private readonly _position;
30
+ private readonly _minPixelSize;
31
+ private readonly _maxPixelSize;
32
+ private readonly _setAdaptiveScale;
33
+ private readonly _iconRadius;
34
+ private readonly _hoverSprite?;
35
+ private readonly _iconMetadata?;
36
+ private readonly _raycastBoundingSphere;
37
+ private _adaptiveScale;
38
+ private _visible;
39
+ private _culled;
40
+ private _selected;
41
+ private _color;
42
+ private readonly _ndcPosition;
43
+ private readonly _events;
44
+ constructor(iconParameters: IconParameters, iconMetadata?: MetadataType);
45
+ on(event: 'selected', callback: SelectedDelegate): void;
46
+ on(event: 'parametersChange', callback: ParametersChangeDelegate): void;
47
+ off(event: 'selected', callback: SelectedDelegate): void;
48
+ off(event: 'parametersChange', callback: ParametersChangeDelegate): void;
49
+ set selected(newValue: boolean);
50
+ get selected(): boolean;
51
+ updateHoverSpriteScale(): void;
52
+ updateAdaptiveScale(delegateArguments: {
53
+ renderSize: THREE.Vector2;
54
+ camera: PerspectiveCamera;
55
+ domElement: HTMLElement;
56
+ }): void;
57
+ setColor(color: Color): void;
58
+ get color(): Color;
59
+ getMetadata(): MetadataType | undefined;
60
+ get adaptiveScale(): number;
61
+ set culled(culled: boolean);
62
+ get culled(): boolean;
63
+ set visible(visible: boolean);
64
+ get visible(): boolean;
65
+ get position(): Vector3;
66
+ intersect(ray: Ray): Vector3 | null;
67
+ dispose(): void;
68
+ private setupAdaptiveScaling;
69
+ private computeAdaptiveScaling;
70
+ }
@@ -0,0 +1,38 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { Overlay3D } from './Overlay3D';
5
+ export type DefaultMetadataType = {
6
+ text?: string;
7
+ [key: string]: string | undefined;
8
+ };
9
+ export type OverlayInfo<MetadataType = DefaultMetadataType> = {
10
+ position: THREE.Vector3;
11
+ metadata?: MetadataType;
12
+ color?: THREE.Color;
13
+ };
14
+ export interface OverlayCollection<MetadataType> {
15
+ /**
16
+ * Get all overlays in the collection.
17
+ * */
18
+ getOverlays(): Overlay3D<MetadataType>[];
19
+ /**
20
+ * Add overlays to the collection.
21
+ * @param overlays Overlays to add to the collection.
22
+ * @returns The added overlays.
23
+ */
24
+ addOverlays(overlays: OverlayInfo<MetadataType>[]): Overlay3D<MetadataType>[];
25
+ /**
26
+ * Remove overlays from the collection.
27
+ * @param overlays Overlays to remove from the collection.
28
+ */
29
+ removeOverlays(overlays: Overlay3D<MetadataType>[]): void;
30
+ /**
31
+ * Remove all overlays from the collection.
32
+ */
33
+ removeAllOverlays(): void;
34
+ /**
35
+ * Sets whether overlays in the collection should be visible.
36
+ */
37
+ setVisibility(visibility: boolean): void;
38
+ }
@@ -0,0 +1,26 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { Color, DepthModes, Group, Texture, Vector3 } from 'three';
5
+ export type OverlayPointsParameters = {
6
+ spriteTexture: Texture;
7
+ minPixelSize: number;
8
+ maxPixelSize: number;
9
+ radius: number;
10
+ colorTint?: Color;
11
+ depthMode?: DepthModes;
12
+ collectionOpacity?: number;
13
+ };
14
+ export declare class OverlayPointsObject extends Group {
15
+ private readonly _geometry;
16
+ private readonly _frontMaterial;
17
+ private readonly _positionBuffer;
18
+ private readonly _positionAttribute;
19
+ private readonly _colorBuffer;
20
+ private readonly _colorAttribute;
21
+ constructor(maxNumberOfPoints: number, materialParameters: OverlayPointsParameters);
22
+ setPoints(points: Vector3[], colors?: Color[]): void;
23
+ dispose(): void;
24
+ private initializePoints;
25
+ private createIconsMaterial;
26
+ }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import * as THREE from 'three';
5
5
  import { CogniteClient, Metadata } from '@cognite/sdk';
6
- import { Image360Collection, Image360Entity, Image360, Image360RevisionEntity, Image360AnnotationIntersection } from '../../../360-images';
6
+ import { Image360Collection, Image360Entity, Image360, IconsOptions, Image360RevisionEntity, Image360AnnotationIntersection } from '../../../360-images';
7
7
  import { BeforeSceneRenderedDelegate, EventTrigger, InputHandler, SceneHandler } from '../../../utilities';
8
8
  import { ProxyCameraManager } from '../../../camera-manager';
9
9
  export declare class Image360ApiHelper {
@@ -19,7 +19,7 @@ export declare class Image360ApiHelper {
19
19
  private readonly _image360Navigation;
20
20
  private readonly _onBeforeSceneRenderedEvent;
21
21
  private _cachedCameraManager;
22
- constructor(cogniteClient: CogniteClient, sceneHandler: SceneHandler, domElement: HTMLElement, activeCameraManager: ProxyCameraManager, inputHandler: InputHandler, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>);
22
+ constructor(cogniteClient: CogniteClient, sceneHandler: SceneHandler, domElement: HTMLElement, activeCameraManager: ProxyCameraManager, inputHandler: InputHandler, onBeforeSceneRendered: EventTrigger<BeforeSceneRenderedDelegate>, iconsOptions?: IconsOptions);
23
23
  get needsRedraw(): boolean;
24
24
  resetRedraw(): void;
25
25
  private getNormalizedOffset;
@@ -5,7 +5,7 @@ import * as THREE from 'three';
5
5
  import { PointerEventDelegate, SceneRenderedDelegate, DisposedDelegate, BeforeSceneRenderedDelegate } from '../../../../utilities';
6
6
  import { CogniteCadModel } from '../../../../cad-model';
7
7
  import { PointCloudBudget, CognitePointCloudModel } from '../../../../pointclouds';
8
- import { AddImage360Options, AddModelOptions, Cognite3DViewerOptions, Intersection, CadModelBudget, ResolutionOptions } from './types';
8
+ import { AddImage360Options, AddModelOptions, Cognite3DViewerOptions, Intersection, CadModelBudget, ResolutionOptions, RenderParameters } from './types';
9
9
  import { CogniteModel } from '../types';
10
10
  import { ViewerState } from '../../utilities/ViewStateHelper';
11
11
  import { CameraManager, CameraChangeDelegate, CameraStopDelegate } from '../../../../camera-manager';
@@ -35,6 +35,10 @@ export declare class Cognite3DViewer {
35
35
  * The DOM element cannot be changed after the viewer has been created.
36
36
  */
37
37
  get domElement(): HTMLElement;
38
+ /**
39
+ * Returns parameters of THREE.WebGLRenderer used by the viewer.
40
+ */
41
+ get renderParameters(): RenderParameters;
38
42
  /**
39
43
  * Returns the renderer used to produce images from 3D geometry.
40
44
  */
@@ -18,6 +18,15 @@ import { EdlOptions } from '../../../../rendering';
18
18
  * @param itemsCulled Number of items deemed unnecessary to load in this batch.
19
19
  */
20
20
  export type OnLoadingCallback = (itemsLoaded: number, itemsRequested: number, itemsCulled: number) => void;
21
+ /**
22
+ * Some parameters of THREE.WebGLRenderer initialized with {@link Cognite3DViewer}.
23
+ */
24
+ export type RenderParameters = {
25
+ /**
26
+ * Current width and height of the renderer's output canvas, in pixels.
27
+ */
28
+ renderSize: THREE.Vector2;
29
+ };
21
30
  /**
22
31
  * @module @cognite/reveal
23
32
  */
@@ -5,6 +5,7 @@ export { HtmlOverlayTool, HtmlOverlayOptions, HtmlOverlayToolOptions, HtmlOverla
5
5
  export { DebugCameraTool } from './src/DebugCameraTool';
6
6
  export { AxisViewTool } from './src/AxisView/AxisViewTool';
7
7
  export { AxisBoxConfig, AxisBoxCompassConfig, AxisBoxFaceConfig, Corner, AbsolutePosition, RelativePosition } from './src/AxisView/types';
8
+ export { SmartOverlayTool, SmartOverlayToolParameters, OverlayEventHandler, OverlayToolEvent } from './src/SmartOverlay/SmartOverlayTool';
8
9
  export { TimelineTool } from './src/Timeline/TimelineTool';
9
10
  export { Keyframe } from './src/Timeline/Keyframe';
10
11
  export { TimelineDateUpdateDelegate } from './src/Timeline/types';
@@ -0,0 +1,86 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { Cognite3DViewer } from '../../../api';
5
+ import { DisposedDelegate } from '../../../utilities';
6
+ import * as THREE from 'three';
7
+ import { OverlayInfo, DefaultMetadataType, OverlayCollection, Overlay3D } from '../../../3d-overlays';
8
+ import { Cognite3DViewerToolBase } from '../Cognite3DViewerToolBase';
9
+ export type OverlayToolEvent = 'hover' | 'click' | 'disposed';
10
+ export type OverlayEventHandler<MetadataType> = (event: {
11
+ targetOverlay: Overlay3D<MetadataType>;
12
+ htmlOverlay: HTMLElement;
13
+ mousePosition: {
14
+ clientX: number;
15
+ clientY: number;
16
+ };
17
+ }) => void;
18
+ export type SmartOverlayToolParameters = {
19
+ /**
20
+ * Max point markers size in pixels. Different platforms has limitations for this value.
21
+ * On Android and MacOS in Chrome maximum is 64. Windows in Chrome and MacOS Safari desktops can support up to 500.
22
+ * Default is 64.
23
+ */
24
+ maxPointSize?: number;
25
+ /**
26
+ * Sets default overlay color for newly added labels.
27
+ */
28
+ defaultOverlayColor: THREE.Color;
29
+ };
30
+ export declare class SmartOverlayTool<MetadataType = DefaultMetadataType> extends Cognite3DViewerToolBase {
31
+ private readonly _viewer;
32
+ private readonly _textOverlay;
33
+ private readonly _defaultOverlayColor;
34
+ private readonly _defaultTextOverlayToCursorOffset;
35
+ private readonly _temporaryVec;
36
+ private readonly _raycaster;
37
+ private _overlayCollections;
38
+ private _isVisible;
39
+ private _textOverlayVisible;
40
+ private readonly _events;
41
+ constructor(viewer: Cognite3DViewer, toolParameters?: SmartOverlayToolParameters);
42
+ /**
43
+ * Creates new OverlayCollection.
44
+ * @param overlays Array of overlays to add.
45
+ * @returns Overlay group containing it's id.
46
+ */
47
+ createOverlayCollection(overlays?: OverlayInfo<MetadataType>[]): OverlayCollection<MetadataType>;
48
+ /**
49
+ * Removes overlays that were added with addOverlays method.
50
+ * @param overlayCollection Id of the overlay group to remove.
51
+ */
52
+ removeOverlayCollection(overlayCollection: OverlayCollection<MetadataType>): void;
53
+ /**
54
+ * Gets all added overlay collections.
55
+ */
56
+ get collections(): OverlayCollection<MetadataType>[];
57
+ /**
58
+ * Sets whether overlays are visible.
59
+ */
60
+ set visible(visible: boolean);
61
+ get visible(): boolean;
62
+ set textOverlayVisible(visible: boolean);
63
+ get textOverlayVisible(): boolean;
64
+ /**
65
+ * Removes all overlays.
66
+ */
67
+ clear(): void;
68
+ /**
69
+ * Subscribes to overlay events.
70
+ * @param event event to subscribe to.
71
+ * @param eventHandler
72
+ */
73
+ on(event: 'hover', eventHandler: OverlayEventHandler<MetadataType>): void;
74
+ on(event: 'click', eventHandler: OverlayEventHandler<MetadataType>): void;
75
+ on(event: 'disposed', eventHandler: DisposedDelegate): void;
76
+ off(event: 'hover', eventHandler: OverlayEventHandler<MetadataType>): void;
77
+ off(event: 'click', eventHandler: OverlayEventHandler<MetadataType>): void;
78
+ off(event: 'disposed', eventHandler: DisposedDelegate): void;
79
+ dispose(): void;
80
+ private readonly onMouseMove;
81
+ private readonly onMouseClick;
82
+ private positionTextOverlay;
83
+ private intersectPointsMarkers;
84
+ private convertPixelCoordinatesToNormalized;
85
+ private createTextOverlay;
86
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognite/reveal",
3
- "version": "4.2.0-dev.20230512",
3
+ "version": "4.2.0-dev.20230516",
4
4
  "description": "WebGL based 3D viewer for CAD and point clouds processed in Cognite Data Fusion.",
5
5
  "homepage": "https://github.com/cognitedata/reveal/tree/master/viewer",
6
6
  "repository": {
@@ -91,14 +91,14 @@
91
91
  "@types/jsdom": "21.1.1",
92
92
  "@types/lodash": "4.14.194",
93
93
  "@types/mixpanel-browser": "2.38.1",
94
- "@types/node": "18.16.5",
94
+ "@types/node": "18.16.7",
95
95
  "@types/random-seed": "0.3.3",
96
96
  "@types/skmeans": "0.11.4",
97
97
  "@types/stats": "0.16.30",
98
98
  "@types/three": "0.152.0",
99
99
  "@types/tween.js": "18.5.1",
100
- "@typescript-eslint/eslint-plugin": "5.59.2",
101
- "@typescript-eslint/parser": "5.59.2",
100
+ "@typescript-eslint/eslint-plugin": "5.59.5",
101
+ "@typescript-eslint/parser": "5.59.5",
102
102
  "concurrently": "8.0.1",
103
103
  "cross-env": "7.0.3",
104
104
  "dat.gui": "0.7.9",
@@ -111,7 +111,7 @@
111
111
  "eslint-plugin-unused-imports": "2.0.0",
112
112
  "file-loader": "6.2.0",
113
113
  "gl": "6.0.2",
114
- "glob": "10.2.2",
114
+ "glob": "10.2.3",
115
115
  "glslify-loader": "2.0.0",
116
116
  "html-webpack-plugin": "5.5.1",
117
117
  "jest": "29.5.0",
@@ -120,12 +120,12 @@
120
120
  "jest-extended": "3.2.4",
121
121
  "jest-image-snapshot": "6.1.0",
122
122
  "jest-puppeteer": "8.0.6",
123
- "jsdom": "21.1.2",
123
+ "jsdom": "22.0.0",
124
124
  "moq.ts": "10.0.6",
125
125
  "nock": "13.3.1",
126
126
  "prettier": "2.8.8",
127
127
  "process": "0.11.10",
128
- "puppeteer": "19.11.1",
128
+ "puppeteer": "20.1.1",
129
129
  "random-seed": "0.3.0",
130
130
  "raw-loader": "4.0.2",
131
131
  "remove-files-webpack-plugin": "1.5.0",
@@ -137,10 +137,10 @@
137
137
  "ts-loader": "9.4.2",
138
138
  "tsc-alias": "1.8.6",
139
139
  "typescript": "5.0.4",
140
- "wasm-pack": "0.10.3",
141
- "webpack": "5.82.0",
142
- "webpack-cli": "5.1.0",
143
- "webpack-dev-server": "4.14.0",
140
+ "wasm-pack": "0.11.1",
141
+ "webpack": "5.82.1",
142
+ "webpack-cli": "5.1.1",
143
+ "webpack-dev-server": "4.15.0",
144
144
  "webpack-node-externals": "3.0.0",
145
145
  "whatwg-fetch": "3.6.2",
146
146
  "workerize-loader": "2.0.2"
@@ -1,29 +0,0 @@
1
- /*!
2
- * Copyright 2022 Cognite AS
3
- */
4
- import { BeforeSceneRenderedDelegate, EventTrigger, SceneHandler } from '../../../utilities';
5
- import * as THREE from 'three';
6
- import { Ray, Vector3 } from 'three';
7
- export declare class Image360Icon {
8
- private readonly _hoverSprite;
9
- private readonly _position;
10
- private readonly _sceneHandler;
11
- private readonly _minPixelSize;
12
- private readonly _maxPixelSize;
13
- private readonly _iconRadius;
14
- private readonly _setAdaptiveScale;
15
- private readonly _onRenderTrigger;
16
- private _adaptiveScale;
17
- private _visible;
18
- private _culled;
19
- constructor(position: THREE.Vector3, hoverIconTexture: THREE.CanvasTexture, sceneHandler: SceneHandler, minPixelSize: number, maxPixelSize: number, iconRadius: number, onRenderTrigger: EventTrigger<BeforeSceneRenderedDelegate>);
20
- setVisibility(visible: boolean): void;
21
- setCulled(culled: boolean): void;
22
- isVisible(): boolean;
23
- get position(): Vector3;
24
- set hoverSpriteVisible(visible: boolean);
25
- intersect(ray: Ray): Vector3 | null;
26
- dispose(): void;
27
- private setupAdaptiveScaling;
28
- private createHoverSprite;
29
- }
@@ -1,16 +0,0 @@
1
- /*!
2
- * Copyright 2023 Cognite AS
3
- */
4
- import { Color, Group, Texture, Vector3 } from 'three';
5
- export declare class InstancedIconSprite extends Group {
6
- private readonly _geometry;
7
- private readonly _frontMaterial;
8
- private readonly _backMaterial;
9
- private readonly _positionBuffer;
10
- private readonly _positionAttribute;
11
- constructor(maxNumberOfPoints: number, spriteTexture: Texture, minPixelSize: number, maxPixelSize: number, radius: number, colorTint?: Color);
12
- setPoints(points: Vector3[]): void;
13
- dispose(): void;
14
- private initializePoints;
15
- private createIconsMaterial;
16
- }
@@ -1,4 +0,0 @@
1
- /*!
2
- * Copyright 2021 Cognite AS
3
- */
4
- export type DisposedDelegate = () => void;