vim-web 0.3.44-dev.47 → 0.3.44-dev.51

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 (206) hide show
  1. package/dist/style.css +16 -1
  2. package/dist/types/core-viewers/index.d.ts +3 -0
  3. package/dist/types/core-viewers/shared/baseInputHandler.d.ts +29 -0
  4. package/dist/types/core-viewers/shared/index.d.ts +9 -0
  5. package/dist/types/core-viewers/shared/inputHandler.d.ts +115 -28
  6. package/dist/types/core-viewers/shared/keyboardHandler.d.ts +2 -2
  7. package/dist/types/core-viewers/shared/mouseHandler.d.ts +9 -9
  8. package/dist/types/core-viewers/shared/raycaster.d.ts +13 -0
  9. package/dist/types/core-viewers/shared/selection.d.ts +45 -0
  10. package/dist/types/core-viewers/shared/touchHandler.d.ts +2 -2
  11. package/dist/types/core-viewers/shared/vim.d.ts +35 -0
  12. package/dist/types/core-viewers/ultra/{viewer/camera.d.ts → camera.d.ts} +14 -5
  13. package/dist/types/core-viewers/ultra/{viewer/colorManager.d.ts → colorManager.d.ts} +6 -6
  14. package/dist/types/core-viewers/ultra/{viewer/decoder.d.ts → decoder.d.ts} +0 -8
  15. package/dist/types/core-viewers/ultra/element3d.d.ts +15 -0
  16. package/dist/types/core-viewers/ultra/index.d.ts +28 -9
  17. package/dist/types/core-viewers/ultra/inputAdapter.d.ts +5 -0
  18. package/dist/types/core-viewers/ultra/nodeState.d.ts +113 -0
  19. package/dist/types/core-viewers/ultra/raycaster.d.ts +52 -0
  20. package/dist/types/core-viewers/ultra/{viewer/color.d.ts → remoteColor.d.ts} +3 -3
  21. package/dist/types/core-viewers/ultra/{viewer/renderer.d.ts → renderer.d.ts} +9 -3
  22. package/dist/types/core-viewers/ultra/{viewer/rpcClient.d.ts → rpcClient.d.ts} +27 -28
  23. package/dist/types/core-viewers/ultra/rpcMarshal.d.ts +62 -0
  24. package/dist/types/core-viewers/ultra/{viewer/rpcSafeClient.d.ts → rpcSafeClient.d.ts} +22 -23
  25. package/dist/types/core-viewers/{utils/math3d.d.ts → ultra/rpcTypes.d.ts} +22 -22
  26. package/dist/types/core-viewers/ultra/selection.d.ts +4 -0
  27. package/dist/types/core-viewers/ultra/{viewer/socketClient.d.ts → socketClient.d.ts} +4 -11
  28. package/dist/types/core-viewers/ultra/{viewer/ultraCoreViewer.d.ts → viewer.d.ts} +18 -15
  29. package/dist/types/core-viewers/ultra/vim.d.ts +48 -0
  30. package/dist/types/core-viewers/webgl/index.d.ts +2 -20
  31. package/dist/types/core-viewers/webgl/loader/{colorAttributes.d.ts → colorAttribute.d.ts} +4 -4
  32. package/dist/types/core-viewers/webgl/loader/{object3D.d.ts → element3d.d.ts} +12 -9
  33. package/dist/types/core-viewers/webgl/loader/geometry.d.ts +76 -78
  34. package/dist/types/core-viewers/webgl/loader/index.d.ts +23 -0
  35. package/dist/types/core-viewers/webgl/loader/materials/index.d.ts +9 -0
  36. package/dist/types/core-viewers/webgl/loader/materials/{viewerMaterials.d.ts → materials.d.ts} +4 -4
  37. package/dist/types/core-viewers/webgl/loader/mesh.d.ts +7 -7
  38. package/dist/types/core-viewers/webgl/loader/progressive/insertableGeometry.d.ts +2 -2
  39. package/dist/types/core-viewers/webgl/loader/progressive/insertableMesh.d.ts +1 -1
  40. package/dist/types/core-viewers/webgl/loader/progressive/insertableSubmesh.d.ts +1 -1
  41. package/dist/types/core-viewers/webgl/loader/progressive/instancedMesh.d.ts +1 -1
  42. package/dist/types/core-viewers/webgl/loader/progressive/instancedSubmesh.d.ts +1 -1
  43. package/dist/types/core-viewers/webgl/loader/progressive/legacyMeshFactory.d.ts +2 -2
  44. package/dist/types/core-viewers/webgl/loader/progressive/subsetBuilder.d.ts +2 -2
  45. package/dist/types/core-viewers/webgl/loader/progressive/subsetRequest.d.ts +2 -2
  46. package/dist/types/core-viewers/webgl/loader/progressive/vimRequest.d.ts +3 -3
  47. package/dist/types/core-viewers/webgl/loader/scene.d.ts +11 -14
  48. package/dist/types/core-viewers/webgl/loader/vim.d.ts +15 -19
  49. package/dist/types/core-viewers/webgl/loader/vimSettings.d.ts +2 -2
  50. package/dist/types/core-viewers/webgl/loader/{objectAttributes.d.ts → webglAttribute.d.ts} +4 -4
  51. package/dist/types/core-viewers/webgl/viewer/camera/camera.d.ts +8 -102
  52. package/dist/types/core-viewers/webgl/viewer/camera/cameraMovement.d.ts +5 -5
  53. package/dist/types/core-viewers/webgl/viewer/camera/cameraMovementLerp.d.ts +2 -2
  54. package/dist/types/core-viewers/webgl/viewer/camera/cameraMovementSnap.d.ts +2 -2
  55. package/dist/types/core-viewers/webgl/viewer/camera/{orthographic.d.ts → cameraOrthographic.d.ts} +1 -1
  56. package/dist/types/core-viewers/webgl/viewer/camera/{perspective.d.ts → cameraPerspective.d.ts} +1 -1
  57. package/dist/types/core-viewers/webgl/viewer/camera/index.d.ts +7 -0
  58. package/dist/types/core-viewers/webgl/viewer/environment/environment.d.ts +5 -5
  59. package/dist/types/core-viewers/webgl/viewer/environment/index.d.ts +3 -0
  60. package/dist/types/core-viewers/webgl/viewer/environment/{cameraLight.d.ts → light.d.ts} +2 -2
  61. package/dist/types/core-viewers/webgl/viewer/environment/skybox.d.ts +3 -3
  62. package/dist/types/core-viewers/webgl/viewer/gizmos/axes/axesSettings.d.ts +3 -2
  63. package/dist/types/core-viewers/webgl/viewer/gizmos/axes/gizmoAxes.d.ts +1 -1
  64. package/dist/types/core-viewers/webgl/viewer/gizmos/axes/index.d.ts +3 -0
  65. package/dist/types/core-viewers/webgl/viewer/gizmos/gizmoOrbit.d.ts +2 -2
  66. package/dist/types/core-viewers/webgl/viewer/gizmos/gizmos.d.ts +0 -5
  67. package/dist/types/core-viewers/webgl/viewer/gizmos/index.d.ts +7 -0
  68. package/dist/types/core-viewers/webgl/viewer/gizmos/markers/gizmoMarker.d.ts +63 -15
  69. package/dist/types/core-viewers/webgl/viewer/gizmos/markers/gizmoMarkers.d.ts +30 -7
  70. package/dist/types/core-viewers/webgl/viewer/gizmos/markers/index.d.ts +2 -0
  71. package/dist/types/core-viewers/webgl/viewer/gizmos/measure/index.d.ts +3 -0
  72. package/dist/types/core-viewers/webgl/viewer/gizmos/measure/measure.d.ts +4 -3
  73. package/dist/types/core-viewers/webgl/viewer/gizmos/sectionBox/index.d.ts +7 -0
  74. package/dist/types/core-viewers/webgl/viewer/gizmos/sectionBox/sectionBoxGizmo.d.ts +1 -1
  75. package/dist/types/core-viewers/webgl/viewer/gizmos/sectionBox/sectionBoxHandle.d.ts +4 -4
  76. package/dist/types/core-viewers/webgl/viewer/gizmos/sectionBox/sectionBoxHandles.d.ts +1 -1
  77. package/dist/types/core-viewers/webgl/viewer/gizmos/sectionBox/sectionBoxInputs.d.ts +1 -7
  78. package/dist/types/core-viewers/webgl/viewer/index.d.ts +10 -0
  79. package/dist/types/core-viewers/webgl/viewer/inputsAdapter.d.ts +3 -0
  80. package/dist/types/core-viewers/webgl/viewer/raycaster.d.ts +34 -43
  81. package/dist/types/core-viewers/webgl/viewer/rendering/index.d.ts +4 -0
  82. package/dist/types/core-viewers/webgl/viewer/rendering/mergePass.d.ts +2 -2
  83. package/dist/types/core-viewers/webgl/viewer/rendering/renderScene.d.ts +7 -7
  84. package/dist/types/core-viewers/webgl/viewer/rendering/renderer.d.ts +8 -5
  85. package/dist/types/core-viewers/webgl/viewer/rendering/renderingComposer.d.ts +2 -2
  86. package/dist/types/core-viewers/webgl/viewer/rendering/renderingSection.d.ts +2 -2
  87. package/dist/types/core-viewers/webgl/viewer/selection.d.ts +6 -89
  88. package/dist/types/core-viewers/webgl/viewer/settings/index.d.ts +3 -0
  89. package/dist/types/core-viewers/webgl/viewer/settings/{defaultViewerSettings.d.ts → viewerDefaultSettings.d.ts} +1 -1
  90. package/dist/types/core-viewers/webgl/viewer/settings/viewerSettings.d.ts +2 -9
  91. package/dist/types/core-viewers/webgl/viewer/settings/viewerSettingsParsing.d.ts +1 -1
  92. package/dist/types/core-viewers/webgl/viewer/viewer.d.ts +13 -13
  93. package/dist/types/index.d.ts +2 -3
  94. package/dist/types/react-viewers/bim/bimInfoData.d.ts +2 -2
  95. package/dist/types/react-viewers/bim/bimInfoObject.d.ts +4 -4
  96. package/dist/types/react-viewers/bim/bimInfoPanel.d.ts +3 -3
  97. package/dist/types/react-viewers/bim/bimInfoVim.d.ts +4 -4
  98. package/dist/types/react-viewers/bim/bimPanel.d.ts +10 -10
  99. package/dist/types/react-viewers/bim/bimSearch.d.ts +2 -2
  100. package/dist/types/react-viewers/bim/bimTree.d.ts +8 -6
  101. package/dist/types/react-viewers/bim/bimTreeData.d.ts +5 -4
  102. package/dist/types/react-viewers/bim/index.d.ts +8 -0
  103. package/dist/types/react-viewers/container.d.ts +3 -3
  104. package/dist/types/react-viewers/controlbar/controlBar.d.ts +0 -4
  105. package/dist/types/react-viewers/controlbar/controlBarButton.d.ts +1 -4
  106. package/dist/types/react-viewers/controlbar/controlBarIds.d.ts +36 -30
  107. package/dist/types/react-viewers/controlbar/controlBarSection.d.ts +2 -4
  108. package/dist/types/react-viewers/controlbar/index.d.ts +5 -0
  109. package/dist/types/react-viewers/controlbar/style.d.ts +10 -0
  110. package/dist/types/react-viewers/errors/index.d.ts +3 -0
  111. package/dist/types/react-viewers/helpers/cameraObserver.d.ts +2 -2
  112. package/dist/types/react-viewers/helpers/cursor.d.ts +5 -3
  113. package/dist/types/react-viewers/helpers/element.d.ts +3 -2
  114. package/dist/types/react-viewers/helpers/index.d.ts +10 -0
  115. package/dist/types/react-viewers/helpers/loadRequest.d.ts +6 -6
  116. package/dist/types/react-viewers/helpers/reactUtils.d.ts +8 -2
  117. package/dist/types/react-viewers/helpers/utils.d.ts +1 -1
  118. package/dist/types/react-viewers/{panels/icons.d.ts → icons.d.ts} +7 -0
  119. package/dist/types/react-viewers/index.d.ts +10 -11
  120. package/dist/types/react-viewers/panels/axesPanel.d.ts +2 -2
  121. package/dist/types/react-viewers/panels/contextMenu.d.ts +8 -8
  122. package/dist/types/react-viewers/panels/genericPanel.d.ts +22 -0
  123. package/dist/types/react-viewers/panels/index.d.ts +14 -0
  124. package/dist/types/react-viewers/panels/loadingBox.d.ts +2 -2
  125. package/dist/types/react-viewers/panels/modal.d.ts +5 -5
  126. package/dist/types/react-viewers/panels/renderSettingsPanel.d.ts +4 -0
  127. package/dist/types/react-viewers/panels/restOfScreen.d.ts +1 -1
  128. package/dist/types/react-viewers/{sidePanel → panels}/sidePanel.d.ts +3 -3
  129. package/dist/types/react-viewers/panels/toast.d.ts +3 -3
  130. package/dist/types/react-viewers/settings/index.d.ts +5 -0
  131. package/dist/types/react-viewers/settings/menuSettings.d.ts +2 -2
  132. package/dist/types/react-viewers/settings/settings.d.ts +10 -49
  133. package/dist/types/react-viewers/settings/settingsState.d.ts +8 -8
  134. package/dist/types/react-viewers/settings/settingsStorage.d.ts +6 -6
  135. package/dist/types/react-viewers/settings/userBoolean.d.ts +17 -0
  136. package/dist/types/react-viewers/state/cameraState.d.ts +2 -1
  137. package/dist/types/react-viewers/state/controlBarState.d.ts +21 -30
  138. package/dist/types/react-viewers/state/index.d.ts +9 -0
  139. package/dist/types/react-viewers/state/measureState.d.ts +2 -2
  140. package/dist/types/react-viewers/state/pointerState.d.ts +5 -5
  141. package/dist/types/react-viewers/state/sharedIsolation.d.ts +36 -0
  142. package/dist/types/react-viewers/state/viewerInputs.d.ts +2 -2
  143. package/dist/types/react-viewers/ultra/camera.d.ts +3 -0
  144. package/dist/types/react-viewers/ultra/controlBar.d.ts +6 -0
  145. package/dist/types/react-viewers/ultra/errors/ultraErrors.d.ts +3 -3
  146. package/dist/types/react-viewers/ultra/index.d.ts +2 -2
  147. package/dist/types/react-viewers/ultra/isolation.d.ts +3 -0
  148. package/dist/types/react-viewers/ultra/modal.d.ts +5 -0
  149. package/dist/types/react-viewers/ultra/sectionBox.d.ts +3 -0
  150. package/dist/types/react-viewers/ultra/viewer.d.ts +21 -0
  151. package/dist/types/react-viewers/ultra/{ultraComponentRef.d.ts → viewerRef.d.ts} +9 -7
  152. package/dist/types/react-viewers/webgl/camera.d.ts +3 -0
  153. package/dist/types/react-viewers/webgl/index.d.ts +3 -8
  154. package/dist/types/react-viewers/webgl/inputsBindings.d.ts +8 -0
  155. package/dist/types/react-viewers/webgl/isolation.d.ts +2 -0
  156. package/dist/types/react-viewers/webgl/{webglLoading.d.ts → loading.d.ts} +8 -8
  157. package/dist/types/react-viewers/webgl/sectionBox.d.ts +3 -0
  158. package/dist/types/react-viewers/webgl/viewer.d.ts +28 -0
  159. package/dist/types/react-viewers/webgl/{webglComponentRef.d.ts → viewerRef.d.ts} +20 -20
  160. package/dist/types/react-viewers/webgl/viewerState.d.ts +7 -5
  161. package/dist/types/utils/index.d.ts +11 -0
  162. package/dist/types/utils/interfaces.d.ts +3 -0
  163. package/dist/types/utils/math3d.d.ts +19 -0
  164. package/dist/types/utils/partial.d.ts +7 -0
  165. package/dist/types/{core-viewers/utils/requestResult.d.ts → utils/result.d.ts} +1 -1
  166. package/dist/types/utils/strings.d.ts +7 -0
  167. package/dist/types/{core-viewers/ultra/viewer → utils}/validation.d.ts +11 -10
  168. package/dist/vim-web.iife.js +21072 -20980
  169. package/dist/vim-web.iife.js.map +1 -1
  170. package/dist/vim-web.js +21056 -20964
  171. package/dist/vim-web.js.map +1 -1
  172. package/package.json +1 -1
  173. package/dist/types/core-viewers/shared/coreInputHandler.d.ts +0 -110
  174. package/dist/types/core-viewers/ultra/viewer/marshal.d.ts +0 -86
  175. package/dist/types/core-viewers/ultra/viewer/selection.d.ts +0 -99
  176. package/dist/types/core-viewers/ultra/viewer/ultraInputsAdapter.d.ts +0 -5
  177. package/dist/types/core-viewers/ultra/viewer/vim.d.ts +0 -111
  178. package/dist/types/core-viewers/utils/result.d.ts +0 -11
  179. package/dist/types/core-viewers/webgl/viewer/gizmos/gizmoRectangle.d.ts +0 -51
  180. package/dist/types/core-viewers/webgl/viewer/webglInputsAdapter.d.ts +0 -3
  181. package/dist/types/react-viewers/helpers/isolation.d.ts +0 -128
  182. package/dist/types/react-viewers/ultra/ultraCameraState.d.ts +0 -3
  183. package/dist/types/react-viewers/ultra/ultraComponent.d.ts +0 -23
  184. package/dist/types/react-viewers/ultra/ultraControlBarState.d.ts +0 -8
  185. package/dist/types/react-viewers/ultra/ultraModal.d.ts +0 -4
  186. package/dist/types/react-viewers/ultra/ultraSectionBoxState.d.ts +0 -3
  187. package/dist/types/react-viewers/webgl/webgInputsBindings.d.ts +0 -8
  188. package/dist/types/react-viewers/webgl/webglCameraState.d.ts +0 -2
  189. package/dist/types/react-viewers/webgl/webglComponent.d.ts +0 -28
  190. package/dist/types/react-viewers/webgl/webglSectionBoxState.d.ts +0 -3
  191. /package/dist/types/core-viewers/ultra/{viewer/decoderWithWorker.d.ts → decoderWithWorker.d.ts} +0 -0
  192. /package/dist/types/core-viewers/ultra/{viewer/loadRequest.d.ts → loadRequest.d.ts} +0 -0
  193. /package/dist/types/core-viewers/ultra/{viewer/logger.d.ts → logger.d.ts} +0 -0
  194. /package/dist/types/core-viewers/ultra/{viewer/protocol.d.ts → protocol.d.ts} +0 -0
  195. /package/dist/types/core-viewers/ultra/{viewer/sectionBox.d.ts → sectionBox.d.ts} +0 -0
  196. /package/dist/types/core-viewers/ultra/{viewer/streamLogger.d.ts → streamLogger.d.ts} +0 -0
  197. /package/dist/types/core-viewers/ultra/{viewer/streamRenderer.d.ts → streamRenderer.d.ts} +0 -0
  198. /package/dist/types/core-viewers/ultra/{viewer/viewport.d.ts → viewport.d.ts} +0 -0
  199. /package/dist/types/core-viewers/ultra/{viewer/vimCollection.d.ts → vimCollection.d.ts} +0 -0
  200. /package/dist/types/core-viewers/webgl/viewer/camera/{ICamera.d.ts → cameraInterface.d.ts} +0 -0
  201. /package/dist/types/react-viewers/{sidePanel → state}/sideState.d.ts +0 -0
  202. /package/dist/types/{core-viewers/utils → utils}/array.d.ts +0 -0
  203. /package/dist/types/{core-viewers/utils → utils}/debounce.d.ts +0 -0
  204. /package/dist/types/{core-viewers/utils → utils}/promise.d.ts +0 -0
  205. /package/dist/types/{core-viewers/utils → utils}/threeUtils.d.ts +0 -0
  206. /package/dist/types/{core-viewers/utils → utils}/url.d.ts +0 -0
@@ -2,63 +2,111 @@ import { Vim } from '../../../loader/vim';
2
2
  import { Viewer } from '../../viewer';
3
3
  import * as THREE from 'three';
4
4
  import { SimpleInstanceSubmesh } from '../../../loader/mesh';
5
+ import { IVimObject } from '../../../../shared/vim';
5
6
  /**
6
- * Marker gizmo that display an interactive sphere at a 3D positions
7
+ * Marker gizmo that displays an interactive sphere at a 3D position.
7
8
  * Marker gizmos are still under development.
8
9
  */
9
- export declare class GizmoMarker {
10
+ export declare class Marker implements IVimObject {
10
11
  readonly type = "Marker";
11
12
  private _viewer;
12
13
  private _submesh;
14
+ private static _tmpMatrix;
15
+ private static _unitVector;
13
16
  /**
14
- * The vim object from which this object came from.
17
+ * The Vim object from which this object came.
18
+ * Can be undefined if the object is not part of a Vim.
15
19
  */
16
20
  vim: Vim | undefined;
17
21
  /**
18
- * The bim element index associated with this object.
22
+ * The BIM element index associated with this object.
23
+ * Can be undefined if the object is not part of a Vim.
19
24
  */
20
25
  element: number | undefined;
21
26
  /**
22
- * The geometry instances associated with this object.
27
+ * The geometry instances associated with this object.
28
+ * This is used when the marker is derived from multiple instances.
23
29
  */
24
30
  instances: number[] | undefined;
31
+ /**
32
+ * The index of the marker in the marker collection.
33
+ */
34
+ get index(): number;
25
35
  private _outlineAttribute;
26
36
  private _visibleAttribute;
27
37
  private _coloredAttribute;
28
38
  private _focusedAttribute;
29
39
  private _colorAttribute;
40
+ /**
41
+ * Constructs a new Marker object.
42
+ * @param viewer - The viewer managing rendering and interaction.
43
+ * @param submesh - The instanced submesh this marker is bound to.
44
+ */
30
45
  constructor(viewer: Viewer, submesh: SimpleInstanceSubmesh);
46
+ /**
47
+ * Updates the underlying submesh and rebinds all attributes to the new mesh.
48
+ * @param mesh - The new submesh to bind to this marker.
49
+ */
31
50
  updateMesh(mesh: SimpleInstanceSubmesh): void;
32
- /** Sets the position of the marker in the 3d scene */
51
+ /**
52
+ * Sets the world position of the marker.
53
+ */
33
54
  set position(value: THREE.Vector3);
55
+ /**
56
+ * Gets the world position of the marker.
57
+ */
34
58
  get position(): THREE.Vector3;
35
59
  /**
36
- * Always false
60
+ * Always false; marker is a gizmo and not an actual mesh.
37
61
  */
38
62
  get hasMesh(): boolean;
39
63
  /**
40
- * Applies a color override instead of outlines.
64
+ * Gets whether the marker is outlined (highlighted).
41
65
  */
42
66
  get outline(): boolean;
67
+ /**
68
+ * Sets whether the marker is outlined (highlighted).
69
+ */
43
70
  set outline(value: boolean);
44
71
  /**
45
- * Enlarges the gizmo to indicate focus.
72
+ * Gets whether the marker is focused (enlarged).
46
73
  */
47
74
  get focused(): boolean;
75
+ /**
76
+ * Sets whether the marker is focused (enlarged).
77
+ */
48
78
  set focused(value: boolean);
49
79
  /**
50
- * Determines if the gizmo will be rendered.
80
+ * Gets whether the marker is visible in the scene.
51
81
  */
52
82
  get visible(): boolean;
83
+ /**
84
+ * Sets whether the marker is visible in the scene.
85
+ */
53
86
  set visible(value: boolean);
87
+ /**
88
+ * Gets the current color override for the marker.
89
+ */
54
90
  get color(): THREE.Color;
55
- set color(color: THREE.Color);
91
+ /**
92
+ * Sets the color override for the marker.
93
+ * Passing undefined disables the override.
94
+ */
95
+ set color(color: THREE.Color | undefined);
96
+ /**
97
+ * Gets the uniform scale factor applied to the marker.
98
+ */
56
99
  get size(): number;
100
+ /**
101
+ * Sets the uniform scale factor for the marker.
102
+ * Only updates the matrix if the size has changed.
103
+ */
57
104
  set size(value: number);
58
105
  /**
59
- * Retrieves the bounding box of the object from cache or computes it if needed.
60
- * Returns a unit box arount the marker position.
61
- * @returns {THREE.Box3 | undefined} The bounding box of the object.
106
+ * Retrieves the bounding box of the object.
107
+ * Returns a unit-sized box centered at the marker position.
108
+ * Returned as a promise to satisfy interface, but computed synchronously.
109
+ * @returns The bounding box of the marker.
62
110
  */
63
- getBoundingBox(): THREE.Box3;
111
+ getBoundingBox(): Promise<THREE.Box3>;
64
112
  }
@@ -1,29 +1,52 @@
1
1
  import { Viewer } from '../../viewer';
2
2
  import * as THREE from 'three';
3
- import { GizmoMarker } from './gizmoMarker';
3
+ import { Marker } from './gizmoMarker';
4
4
  /**
5
5
  * API for adding and managing sprite markers in the scene.
6
+ * Uses THREE.InstancedMesh for performance.
6
7
  */
7
8
  export declare class GizmoMarkers {
8
9
  private _viewer;
9
10
  private _markers;
10
11
  private _mesh;
12
+ private _reusableMatrix;
13
+ /**
14
+ * Constructs the marker manager and sets up an initial instanced mesh.
15
+ * @param viewer - The rendering context this marker system belongs to.
16
+ */
11
17
  constructor(viewer: Viewer);
12
- getMarkerFromIndex(index: number): GizmoMarker;
18
+ /**
19
+ * Returns the marker at the given index.
20
+ * @param index - The marker index.
21
+ * @returns The Marker instance or undefined.
22
+ */
23
+ getMarkerFromIndex(index: number): Marker | undefined;
24
+ /**
25
+ * Creates a new instanced mesh with given capacity, optionally reusing geometry/material.
26
+ * @param previous - Optional mesh to reuse properties from.
27
+ * @param capacity - Number of instances the mesh should support.
28
+ * @returns A new THREE.InstancedMesh.
29
+ */
13
30
  private createMesh;
31
+ /**
32
+ * Doubles the mesh capacity and copies over all instance data and marker bindings.
33
+ */
14
34
  private resizeMesh;
15
35
  /**
16
36
  * Adds a sprite marker at the specified position.
17
- * @param {THREE.Vector3} position - The position at which to add the marker.
37
+ * Resizes mesh if capacity is reached.
38
+ * @param position - The world position to add the marker at.
39
+ * @returns The newly created Marker.
18
40
  */
19
- add(position: THREE.Vector3): GizmoMarker;
41
+ add(position: THREE.Vector3): Marker;
20
42
  /**
21
43
  * Removes the specified marker from the scene.
22
- * @param {GizmoMarker} marker - The marker to remove.
44
+ * Uses swap-and-pop to maintain dense storage.
45
+ * @param marker - The marker to remove.
23
46
  */
24
- remove(marker: GizmoMarker): void;
47
+ remove(marker: Marker): void;
25
48
  /**
26
- * Removes all markers from the scene.
49
+ * Removes all markers from the scene and resets mesh count.
27
50
  */
28
51
  clear(): void;
29
52
  }
@@ -0,0 +1,2 @@
1
+ export * from './gizmoMarker';
2
+ export * from './gizmoMarkers';
@@ -0,0 +1,3 @@
1
+ export * from './measure';
2
+ export * from './measureGizmo';
3
+ export * from './measureHtml';
@@ -2,7 +2,7 @@
2
2
  * @module viw-webgl-viewer/gizmos/measure
3
3
  */
4
4
  import * as THREE from 'three';
5
- import { RaycastResult } from '../../raycaster';
5
+ import { IRaycastResult } from '../../raycaster';
6
6
  import { Viewer } from '../../viewer';
7
7
  /**
8
8
  * Interacts with the measure tool.
@@ -77,14 +77,15 @@ export declare class Measure implements IMeasure {
77
77
  * Do not override viewer.onMouseClick while this flow is active.
78
78
  */
79
79
  start(): Promise<void>;
80
+ private onClick;
80
81
  /**
81
82
  * Should be private.
82
83
  */
83
- onFirstClick(hit: RaycastResult): void;
84
+ onFirstClick(hit: IRaycastResult): void;
84
85
  /**
85
86
  * Should be private.
86
87
  */
87
- onSecondClick(hit: RaycastResult): boolean;
88
+ onSecondClick(hit: IRaycastResult): boolean;
88
89
  /**
89
90
  * Aborts the current measure flow, fails the related promise.
90
91
  */
@@ -0,0 +1,7 @@
1
+ export * from './sectionBox';
2
+ export * from './sectionBoxGizmo';
3
+ export * from './sectionBoxHandle';
4
+ export * from './sectionBoxHandles';
5
+ export * from './sectionBoxInputs';
6
+ export * from './SectionBoxMesh';
7
+ export * from './sectionBoxOutline';
@@ -3,7 +3,7 @@ import { SectionBoxMesh } from './SectionBoxMesh';
3
3
  import { SectionBoxOutline } from './sectionBoxOutline';
4
4
  import { SectionBoxHandles } from './sectionBoxHandles';
5
5
  import { Renderer } from '../../rendering/renderer';
6
- import { ICamera } from '../../camera/camera';
6
+ import { ICamera } from '../../camera';
7
7
  export declare class SectionBoxGizmo {
8
8
  private _renderer;
9
9
  readonly cube: SectionBoxMesh;
@@ -1,8 +1,8 @@
1
1
  import * as THREE from 'three';
2
- import { ICamera } from '../../camera/camera';
3
- export type Axis = 'x' | 'y' | 'z';
2
+ import { ICamera } from '../../camera';
3
+ export type AxisName = 'x' | 'y' | 'z';
4
4
  export declare class SectionBoxHandle extends THREE.Mesh {
5
- readonly axis: Axis;
5
+ readonly axis: AxisName;
6
6
  readonly sign: number;
7
7
  private _forward;
8
8
  private _color;
@@ -10,7 +10,7 @@ export declare class SectionBoxHandle extends THREE.Mesh {
10
10
  private _materials;
11
11
  private _camera;
12
12
  private _camSub;
13
- constructor(axes: Axis, sign: number, size: number, color?: THREE.Color);
13
+ constructor(axes: AxisName, sign: number, size: number, color?: THREE.Color);
14
14
  trackCamera(camera: ICamera): void;
15
15
  update(): void;
16
16
  setPosition(position: THREE.Vector3): void;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import * as THREE from 'three';
5
5
  import { SectionBoxHandle } from './sectionBoxHandle';
6
- import { ICamera } from '../../camera/camera';
6
+ import { ICamera } from '../../camera';
7
7
  export declare class SectionBoxHandles {
8
8
  readonly up: SectionBoxHandle;
9
9
  readonly down: SectionBoxHandle;
@@ -100,13 +100,6 @@ export declare class BoxInputs {
100
100
  * @returns A **new** `Box3` instance with updated min/max coordinates.
101
101
  */
102
102
  private stretch;
103
- /**
104
- * Prepares the internal raycaster for a given 2D pointer position.
105
- *
106
- * @param position - The pointer position in canvas coordinates.
107
- * @returns The updated raycaster pointing from the camera through this position.
108
- */
109
- private getRaycaster;
110
103
  /**
111
104
  * Raycasts into the handle meshes from the given pointer position.
112
105
  *
@@ -121,4 +114,5 @@ export declare class BoxInputs {
121
114
  * @returns The intersection point in 3D space, or `null` if none.
122
115
  */
123
116
  private raycastPlane;
117
+ private setupRaycaster;
124
118
  }
@@ -0,0 +1,10 @@
1
+ export * from './viewer';
2
+ export * from './settings';
3
+ export type * from './environment';
4
+ export type * from './gizmos';
5
+ export type * from './raycaster';
6
+ export { Layers } from './raycaster';
7
+ export type * from './selection';
8
+ export type * from './viewport';
9
+ export type * from './rendering';
10
+ export type * from './camera';
@@ -0,0 +1,3 @@
1
+ import { InputHandler } from "../../shared/inputHandler";
2
+ import { Viewer } from "./viewer";
3
+ export declare function createInputHandler(viewer: Viewer): InputHandler;
@@ -2,36 +2,38 @@
2
2
  * @module viw-webgl-viewer
3
3
  */
4
4
  import * as THREE from 'three';
5
- import { Object3D } from '../loader/object3D';
5
+ import { Element3D } from '../loader/element3d';
6
6
  import { RenderScene } from './rendering/renderScene';
7
7
  import { Camera } from './camera/camera';
8
8
  import { Renderer } from './rendering/renderer';
9
- import { GizmoMarker } from './gizmos/markers/gizmoMarker';
9
+ import { Marker } from './gizmos/markers/gizmoMarker';
10
+ import type { IRaycaster as IRaycasterBase, IRaycastResult as IRaycastResultBase } from '../../shared';
10
11
  /**
11
12
  * Type alias for an array of THREE.Intersection objects.
12
13
  */
13
14
  export type ThreeIntersectionList = THREE.Intersection<THREE.Object3D<THREE.Object3DEventMap>>[];
14
- export type ActionType = 'main' | 'double' | 'idle';
15
- export type ActionModifier = 'none' | 'shift' | 'ctrl';
15
+ export type RaycastableObject = Element3D | Marker;
16
+ export type IRaycastResult = IRaycastResultBase<RaycastableObject>;
17
+ export type IRaycaster = IRaycasterBase<RaycastableObject>;
18
+ export declare enum Layers {
19
+ Default = 0,
20
+ NoRaycast = 1
21
+ }
16
22
  /**
17
- * Aggregates detailed information about a raycasting result,
18
- * including the intersected object and the hit details.
23
+ * A simple container for raycast results.
19
24
  */
20
- export declare class RaycastResult {
21
- object: Object3D | GizmoMarker | undefined;
25
+ export declare class RaycastResult implements IRaycastResult {
26
+ object: Element3D | Marker | undefined;
22
27
  intersections: ThreeIntersectionList;
23
28
  firstHit: THREE.Intersection | undefined;
24
- constructor(intersections: ThreeIntersectionList);
25
- private getFirstVimHit;
26
- private getFirstMarkerHit;
27
- private getVimObjectFromHit;
28
- get isHit(): boolean;
29
- get distance(): number;
30
- get position(): THREE.Vector3;
31
- get threeId(): number;
32
- get faceIndex(): number;
29
+ get worldNormal(): THREE.Vector3;
30
+ get worldPosition(): THREE.Vector3;
31
+ constructor(intersections: ThreeIntersectionList, firstHit?: THREE.Intersection, object?: Element3D | Marker);
33
32
  }
34
- export declare class Raycaster {
33
+ /**
34
+ * Performs raycasting operations.
35
+ */
36
+ export declare class Raycaster implements IRaycaster {
35
37
  private _camera;
36
38
  private _scene;
37
39
  private _renderer;
@@ -40,39 +42,28 @@ export declare class Raycaster {
40
42
  /**
41
43
  * Performs a raycast from the camera using normalized screen coordinates.
42
44
  * Coordinates must be within [0, 1] for both x and y.
43
- * If the coordinates are out of bounds, an error is logged and an empty result is returned.
44
- *
45
- * @param {THREE.Vector2} position - The normalized screen position for raycasting.
46
45
  */
47
- raycastFromScreen(position: THREE.Vector2): RaycastResult;
48
- private filterHits;
46
+ raycastFromScreen(position: THREE.Vector2): Promise<RaycastResult>;
49
47
  /**
50
48
  * Performs a raycast from the camera towards a specified world position.
51
- *
52
- * @param {THREE.Vector3} position - The target world position for raycasting.
53
49
  */
54
- raycastFromWorld(position: THREE.Vector3): RaycastResult;
50
+ raycastFromWorld(position: THREE.Vector3): Promise<RaycastResult>;
51
+ private filterHits;
55
52
  /**
56
- * Performs a raycast starting from the camera's current target position.
53
+ * Processes the list of intersections to determine the first valid hit.
54
+ * It first checks for a marker hit, then for a model object hit.
57
55
  */
58
- raycastForward(): RaycastResult;
56
+ private processIntersections;
59
57
  /**
60
- * Creates and returns a THREE.Raycaster that casts a ray from the camera's position
61
- * through the provided normalized screen coordinate (x and y in the range [0, 1]).
62
- *
63
- * @param {THREE.Vector2} position - The normalized screen position for raycasting.
64
- * @param {THREE.Raycaster} target - Optional existing raycaster instance to update.
65
- * @returns {THREE.Raycaster} A configured raycaster for performing raycasting.
58
+ * Extracts the core model object from a raycast hit.
66
59
  */
67
- fromPoint2(position: THREE.Vector2, target?: THREE.Raycaster): THREE.Raycaster;
60
+ private getVimObjectFromHit;
68
61
  /**
69
- * Creates and returns a THREE.Raycaster that casts a ray from the camera's position
70
- * towards the specified world position.
71
- * The ray's direction is computed as the normalized vector from the camera position to the target position.
72
- *
73
- * @param {THREE.Vector3} position - The world position for raycasting.
74
- * @param {THREE.Raycaster} target - Optional existing raycaster instance to update.
75
- * @returns {THREE.Raycaster} A configured raycaster for performing raycasting.
62
+ * Creates a WebglRaycastResult from a list of intersections by processing the hits.
76
63
  */
77
- fromPoint3(position: THREE.Vector3, target?: THREE.Raycaster): THREE.Raycaster;
64
+ private createResultFromIntersections;
78
65
  }
66
+ /**
67
+ * Converts normalized screen coordinates (0-1 range) into Three.js NDC ([-1, 1] range).
68
+ */
69
+ export declare function threeNDCFromVector2(position: THREE.Vector2): THREE.Vector2;
@@ -0,0 +1,4 @@
1
+ export type * from './renderingSection';
2
+ export type * from './renderer';
3
+ export type * from './renderScene';
4
+ export type * from './renderingComposer';
@@ -3,14 +3,14 @@
3
3
  */
4
4
  import * as THREE from 'three';
5
5
  import { Pass } from 'three/examples/jsm/postprocessing/Pass';
6
- import { ViewerMaterials } from '../../loader/materials/viewerMaterials';
6
+ import { Materials } from '../../loader/materials/materials';
7
7
  /**
8
8
  * Merges a source buffer into the the current write buffer.
9
9
  */
10
10
  export declare class MergePass extends Pass {
11
11
  private _fsQuad;
12
12
  private _material;
13
- constructor(source: THREE.Texture, materials?: ViewerMaterials);
13
+ constructor(source: THREE.Texture, materials?: Materials);
14
14
  get source(): THREE.Texture;
15
15
  set source(value: THREE.Texture);
16
16
  dispose(): void;
@@ -2,26 +2,26 @@
2
2
  * @module viw-webgl-viewer/rendering
3
3
  */
4
4
  import * as THREE from 'three';
5
- import { Scene } from '../../loader/scene';
6
- import { ModelMaterial } from '../../loader/materials/viewerMaterials';
5
+ import { WebglScene } from '../../loader/scene';
6
+ import { ModelMaterial } from '../../loader/materials/materials';
7
7
  import { InstancedMesh } from '../../loader/progressive/instancedMesh';
8
8
  /**
9
9
  * Wrapper around the THREE scene that tracks bounding box and other information.
10
10
  */
11
11
  export declare class RenderScene {
12
- scene: THREE.Scene;
12
+ threeScene: THREE.Scene;
13
13
  boxUpdated: boolean;
14
14
  smallGhostThreshold: number | undefined;
15
15
  private _vimScenes;
16
16
  private _boundingBox;
17
17
  private _memory;
18
18
  private _2dCount;
19
+ private _outlineCount;
19
20
  private _modelMaterial;
20
- get meshes(): (import("../..").InsertableMesh | import("../../loader/mesh").Mesh | InstancedMesh)[];
21
+ get meshes(): (import("../..").InsertableMesh | import("../..").WebglMesh | InstancedMesh)[];
21
22
  constructor();
22
23
  get estimatedMemory(): number;
23
24
  has2dObjects(): boolean;
24
- hasOutline(): boolean;
25
25
  /** Clears the scene updated flags */
26
26
  clearUpdateFlags(): void;
27
27
  /**
@@ -37,13 +37,13 @@ export declare class RenderScene {
37
37
  /**
38
38
  * Add object to be rendered
39
39
  */
40
- add(target: Scene | THREE.Object3D): void;
40
+ add(target: WebglScene | THREE.Object3D): void;
41
41
  private count2dObjects;
42
42
  private unparent2dObjects;
43
43
  /**
44
44
  * Remove object from rendering
45
45
  */
46
- remove(target: Scene | THREE.Object3D): void;
46
+ remove(target: WebglScene | THREE.Object3D): void;
47
47
  /**
48
48
  * Removes all rendered objects
49
49
  */
@@ -2,10 +2,10 @@
2
2
  * @module viw-webgl-viewer/rendering
3
3
  */
4
4
  import * as THREE from 'three';
5
- import { IRenderer, Scene } from '../../loader/scene';
5
+ import { IRenderer, WebglScene } from '../../loader/scene';
6
6
  import { Viewport } from '../viewport';
7
7
  import { RenderScene } from './renderScene';
8
- import { ModelMaterial, ViewerMaterials } from '../../loader/materials/viewerMaterials';
8
+ import { ModelMaterial, Materials } from '../../loader/materials/materials';
9
9
  import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer';
10
10
  import { Camera } from '../camera/camera';
11
11
  import { RenderingSection } from './renderingSection';
@@ -41,6 +41,7 @@ export declare class Renderer implements IRenderer {
41
41
  private _onBoxUpdated;
42
42
  private _sceneUpdated;
43
43
  private maxMemory;
44
+ private _outlineCount;
44
45
  /**
45
46
  * Indicates whether the scene should be re-rendered on change only.
46
47
  */
@@ -51,7 +52,7 @@ export declare class Renderer implements IRenderer {
51
52
  */
52
53
  get needsUpdate(): boolean;
53
54
  set needsUpdate(value: boolean);
54
- constructor(scene: RenderScene, viewport: Viewport, materials: ViewerMaterials, camera: Camera, settings: ViewerSettings);
55
+ constructor(scene: RenderScene, viewport: Viewport, materials: Materials, camera: Camera, settings: ViewerSettings);
55
56
  /**
56
57
  * Removes all objects from rendering and disposes the WebGL context.
57
58
  */
@@ -93,6 +94,8 @@ export declare class Renderer implements IRenderer {
93
94
  * Notifies that a scene was updated this frame.
94
95
  */
95
96
  notifySceneUpdate(): void;
97
+ addOutline(): void;
98
+ removeOutline(): void;
96
99
  /**
97
100
  * Renders what is in the camera's view.
98
101
  */
@@ -101,12 +104,12 @@ export declare class Renderer implements IRenderer {
101
104
  * Adds an object to be rendered.
102
105
  * @param target The object or scene to add for rendering.
103
106
  */
104
- add(target: Scene | THREE.Object3D): boolean;
107
+ add(target: WebglScene | THREE.Object3D): boolean;
105
108
  /**
106
109
  * Removes an object from rendering.
107
110
  * @param target The object or scene to remove from rendering.
108
111
  */
109
- remove(target: Scene | THREE.Object3D): void;
112
+ remove(target: WebglScene | THREE.Object3D): void;
110
113
  /**
111
114
  * Clears all objects from rendering.
112
115
  */
@@ -4,7 +4,7 @@
4
4
  import * as THREE from 'three';
5
5
  import { Viewport } from '../viewport';
6
6
  import { RenderScene } from './renderScene';
7
- import { ViewerMaterials } from '../../loader/materials/viewerMaterials';
7
+ import { Materials } from '../../loader/materials/materials';
8
8
  import { Camera } from '../camera/camera';
9
9
  /**
10
10
  * Composer for managing the rendering pipeline including anti-aliasing and outline effects.
@@ -39,7 +39,7 @@ export declare class RenderingComposer {
39
39
  * @param materials - Materials used for rendering including outline and mask materials
40
40
  * @param camera - The camera used for rendering
41
41
  */
42
- constructor(renderer: THREE.WebGLRenderer, scene: RenderScene, viewport: Viewport, materials: ViewerMaterials, camera: Camera);
42
+ constructor(renderer: THREE.WebGLRenderer, scene: RenderScene, viewport: Viewport, materials: Materials, camera: Camera);
43
43
  /**
44
44
  * Initializes the main scene rendering pipeline
45
45
  * Creates render targets and sets up the main render pass
@@ -2,7 +2,7 @@
2
2
  * @module viw-webgl-viewer/rendering
3
3
  */
4
4
  import * as THREE from 'three';
5
- import { ViewerMaterials } from '../../loader/materials/viewerMaterials';
5
+ import { Materials } from '../../loader/materials/materials';
6
6
  import { Renderer } from './renderer';
7
7
  /**
8
8
  * Manages a section box from renderer clipping planes
@@ -22,7 +22,7 @@ export declare class RenderingSection {
22
22
  private maxZ;
23
23
  private minZ;
24
24
  private planes;
25
- constructor(renderer: Renderer, materials: ViewerMaterials);
25
+ constructor(renderer: Renderer, materials: Materials);
26
26
  /**
27
27
  * Resizes the section box to match the dimensions of the provided bounding box.
28
28
  * @param box The bounding box to match the section box to.