viral-viewer-2 7.2.0 → 7.2.2

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 (74) hide show
  1. package/dist/batched-mesh-simplifier-D-o3ukyo.mjs +128 -0
  2. package/dist/components/animation/viral-animation.d.ts +1 -1
  3. package/dist/components/avatar-manager/viral-avatar-manager.d.ts +1 -1
  4. package/dist/components/camera/viral-camera.d.ts +9 -8
  5. package/dist/components/custom-objects/index.d.ts +2 -3
  6. package/dist/components/custom-objects/viral-avatar.d.ts +2 -2
  7. package/dist/components/custom-objects/viral-batched-mesh.d.ts +14 -4
  8. package/dist/components/custom-objects/{viral-merged-model.d.ts → viral-bim-world.d.ts} +14 -6
  9. package/dist/components/custom-objects/viral-bim.model.d.ts +11 -0
  10. package/dist/components/custom-objects/viral-instanced-mesh-v2.d.ts +14 -3
  11. package/dist/components/data-manager/viral-data-manager.d.ts +1 -1
  12. package/dist/components/duplication-analyzer/viral-duplication-analyzer.d.ts +1 -1
  13. package/dist/components/event-handler/keyboard/viral-keyboard.d.ts +1 -1
  14. package/dist/components/event-handler/mouse/viral-mouse.d.ts +1 -4
  15. package/dist/components/event-handler/viral-centralized-event-handler.d.ts +1 -10
  16. package/dist/components/event-handler/viral-lifecycle-event-handler.d.ts +2 -2
  17. package/dist/components/loader/viral-point-cloud.loader.d.ts +2 -2
  18. package/dist/components/loader/viral-revit.loader.d.ts +3 -4
  19. package/dist/components/loader/viral-three.loader.d.ts +2 -2
  20. package/dist/components/loader/viral.loader.d.ts +1 -1
  21. package/dist/components/material/viral-material-manager.d.ts +2 -2
  22. package/dist/components/post-processing/post-processing-renderer.d.ts +51 -6
  23. package/dist/components/post-processing/screen-space-edges-pass.d.ts +7 -1
  24. package/dist/components/post-processing/selection-outline-pass.d.ts +65 -0
  25. package/dist/components/renderer/viral-renderer.d.ts +1 -1
  26. package/dist/components/scene/viral-scene.d.ts +4 -7
  27. package/dist/components/section-box/viral-section-box.d.ts +66 -25
  28. package/dist/components/stats/viral-stats.d.ts +1 -1
  29. package/dist/components/visibility-manager/viral-visibility-manager.d.ts +44 -24
  30. package/dist/components/worker/bounding-box-intersect.worker.d.ts +1 -1
  31. package/dist/components/worker/bounding-box.worker.d.ts +1 -1
  32. package/dist/components/worker/graph-layout.worker.d.ts +1 -1
  33. package/dist/components/worker/{load-element-batch.worker.d.ts → load-batched-element.worker.d.ts} +3 -3
  34. package/dist/entities/archive-elements.d.ts +1 -1
  35. package/dist/entities/data-tree.d.ts +7 -2
  36. package/dist/entities/index.d.ts +9 -9
  37. package/dist/gui/batch-debug-panel/viral-batch-debug-panel.d.ts +1 -1
  38. package/dist/gui/context-menu/viral-context-menu.d.ts +1 -1
  39. package/dist/gui/draggable-modal/viral-draggable-modal.d.ts +1 -1
  40. package/dist/gui/instanced-debug-panel/viral-instanced-debug-panel.d.ts +1 -1
  41. package/dist/gui/navigation-cube/components/cube-camera.d.ts +2 -2
  42. package/dist/gui/navigation-cube/components/cube-renderer.d.ts +1 -1
  43. package/dist/gui/navigation-cube/components/cube-scene.d.ts +2 -2
  44. package/dist/gui/navigation-cube/components/cube.mouse.d.ts +1 -1
  45. package/dist/gui/navigation-cube/viral-navigation-cube.d.ts +2 -2
  46. package/dist/gui/pivot-point/viral-pivot-point.d.ts +1 -1
  47. package/dist/gui/render-debug-panel/viral-render-debug-panel.d.ts +1 -1
  48. package/dist/gui/spinner/viral-spinner.d.ts +1 -1
  49. package/dist/gui/tools/tools/viral-tool-ambient-occlusion.d.ts +2 -2
  50. package/dist/gui/tools/tools/viral-tool-avatar.d.ts +2 -2
  51. package/dist/gui/tools/tools/viral-tool-dark-mode.d.ts +2 -2
  52. package/dist/gui/tools/tools/viral-tool-elevation.d.ts +3 -3
  53. package/dist/gui/tools/tools/viral-tool-export-scene.d.ts +2 -2
  54. package/dist/gui/tools/tools/viral-tool-measure.d.ts +3 -3
  55. package/dist/gui/tools/tools/viral-tool-sunlight.d.ts +2 -2
  56. package/dist/gui/tools/viral-tools.d.ts +2 -2
  57. package/dist/index.d.ts +8 -8
  58. package/dist/index.mjs +10808 -35
  59. package/dist/utils/batched-mesh-simplifier.d.ts +2 -2
  60. package/dist/utils/geometry-simplifier.d.ts +1 -1
  61. package/dist/viral-viewer-api.d.ts +19 -21
  62. package/package.json +49 -42
  63. package/dist/batched-mesh-simplifier-Bqx1Evd9.mjs +0 -1076
  64. package/dist/components/custom-objects/viral-edge-mesh.d.ts +0 -133
  65. package/dist/components/custom-objects/viral-instanced-mesh-v3.d.ts +0 -123
  66. package/dist/components/custom-objects/viral-instanced-mesh.d.ts +0 -41
  67. package/dist/components/custom-objects/viral-main.model.d.ts +0 -16
  68. package/dist/components/custom-objects/viral-mesh.abstract.d.ts +0 -3
  69. package/dist/components/custom-objects/viral-mesh.d.ts +0 -13
  70. package/dist/components/custom-objects/viral-seperate-model.d.ts +0 -18
  71. package/dist/components/handler/geometry.handler.d.ts +0 -12
  72. package/dist/components/lod-generator/viral-lod-generator.d.ts +0 -116
  73. package/dist/index-DRYwg_CR.mjs +0 -326870
  74. /package/dist/components/worker-script/{load-element-batch.script.d.ts → load-batched-element.script.d.ts} +0 -0
@@ -1,133 +0,0 @@
1
- import { Object3D } from "three";
2
- import { LineMaterial } from "three/examples/jsm/Addons";
3
- import { ViralBatchedMesh } from "./viral-batched-mesh";
4
- import { ViralInstancedMeshV2 } from "./viral-instanced-mesh-v2";
5
- export declare class ViralEdgeMesh extends Object3D {
6
- private _edgeLines;
7
- private _edgeMaterial;
8
- private _edgeThreshold;
9
- private _edgeRanges;
10
- private _batchedMeshes;
11
- private _instancedMeshes;
12
- private _hiddenElements;
13
- private _isolatedElements;
14
- private _xrayMode;
15
- constructor();
16
- /**
17
- * Initialize edge mesh with material and threshold
18
- */
19
- initialize(material: LineMaterial, thresholdDeg?: number): void;
20
- /**
21
- * Add a batched mesh to be included in edge generation
22
- */
23
- addBatchedMesh(mesh: ViralBatchedMesh): void;
24
- /**
25
- * Add an instanced mesh to be included in edge generation
26
- */
27
- addInstancedMesh(mesh: ViralInstancedMeshV2): void;
28
- /**
29
- * Remove a mesh from edge generation
30
- */
31
- removeMesh(mesh: ViralBatchedMesh | ViralInstancedMeshV2): void;
32
- /**
33
- * Build the unified edge mesh from all registered meshes
34
- */
35
- buildEdges(): void;
36
- /**
37
- * Extract edge data from a batched mesh
38
- */
39
- private _extractBatchedMeshEdges;
40
- /**
41
- * Extract edge data from an instanced mesh
42
- */
43
- private _extractInstancedMeshEdges;
44
- /**
45
- * Track edge ranges for batched mesh elements
46
- */
47
- private _trackBatchedEdgeRanges;
48
- /**
49
- * Track edge ranges for instanced mesh elements
50
- */
51
- private _trackInstancedEdgeRanges;
52
- /**
53
- * Rebuild edges when meshes are updated
54
- */
55
- refresh(): void;
56
- /**
57
- * Show edges
58
- */
59
- show(): void;
60
- /**
61
- * Hide edges
62
- */
63
- hide(): void;
64
- /**
65
- * Hide edges for specific elements
66
- */
67
- hideElements(elements: {
68
- modelId: string;
69
- elementId: string;
70
- }[]): void;
71
- /**
72
- * Show only specific elements (isolate) with x-ray mode option
73
- */
74
- isolateElements(elements: {
75
- modelId: string;
76
- elementId: string;
77
- }[], xrayMode?: boolean): void;
78
- /**
79
- * Enable/disable x-ray mode for current isolation
80
- */
81
- setXrayMode(enabled: boolean): void;
82
- /**
83
- * Get current x-ray mode state
84
- */
85
- get isXrayMode(): boolean;
86
- /**
87
- * Reset all edge visibility
88
- */
89
- resetVisibility(): void;
90
- /**
91
- * Update edge visibility based on hidden/isolated elements
92
- */
93
- private _updateEdgeVisibility;
94
- /**
95
- * Set visibility for a specific element in the visibility mask
96
- */
97
- private _setElementVisibility;
98
- /**
99
- * Update edges when source meshes are modified
100
- */
101
- onMeshUpdated(mesh: ViralBatchedMesh | ViralInstancedMeshV2): void;
102
- /**
103
- * Get total vertex count in the edge mesh
104
- */
105
- getTotalEdgeVertexCount(): number;
106
- /**
107
- * Check if edges are currently visible
108
- */
109
- get isVisible(): boolean;
110
- /**
111
- * Get the number of registered meshes
112
- */
113
- getMeshCount(): {
114
- batched: number;
115
- instanced: number;
116
- };
117
- /**
118
- * Clear all edge data
119
- */
120
- private _clearEdges;
121
- /**
122
- * Dispose of the edge mesh and clean up resources
123
- */
124
- dispose(): void;
125
- /**
126
- * Update edge material
127
- */
128
- updateMaterial(material: LineMaterial): void;
129
- /**
130
- * Update edge threshold and rebuild if necessary
131
- */
132
- updateThreshold(thresholdDeg: number): void;
133
- }
@@ -1,123 +0,0 @@
1
- import { Box3, Color, Material, Vector3, InstancedMesh } from "three";
2
- import { BufferElement } from "../..";
3
- import { LineMaterial } from "three/examples/jsm/Addons";
4
- export declare class ViralInstancedMeshV3 extends InstancedMesh {
5
- globalMaterialIndex: number;
6
- private _bufferElement;
7
- private _originalColor;
8
- private _elementMap;
9
- private _selectedElements;
10
- private _hidingElements;
11
- private _isolatingElements;
12
- private _edgeLines;
13
- private _edgeThreshold;
14
- private _edgeMaterial;
15
- private _isGeneratedLights;
16
- private _pointLight;
17
- private _originalTransforms;
18
- constructor(material: Material);
19
- addBufferElement(bufferElement: BufferElement, materialColor: Color): void;
20
- private _setupInstanceData;
21
- private _createGeometryFromBuffer;
22
- private _transformArrayToMatrix4;
23
- private _generateGeometryKey;
24
- batch(newBufferElements: BufferElement[]): void;
25
- select(elements: {
26
- modelId: string;
27
- elementId: string;
28
- }[], excepts?: {
29
- elements: {
30
- modelId: string;
31
- elementId: string;
32
- }[];
33
- color: {
34
- r: number;
35
- g: number;
36
- b: number;
37
- };
38
- }[]): void;
39
- changeColor(elements: {
40
- modelId: string;
41
- elementId: string;
42
- }[], color: {
43
- r: number;
44
- g: number;
45
- b: number;
46
- }): void;
47
- resetColor(modelId: string | null, elementId?: string, excepts?: {
48
- elements: {
49
- modelId: string;
50
- elementId: string;
51
- }[];
52
- color: {
53
- r: number;
54
- g: number;
55
- b: number;
56
- };
57
- }[]): void;
58
- get selectedElements(): {
59
- modelId: string;
60
- elementId: string;
61
- }[];
62
- get bufferElements(): BufferElement[];
63
- hide(elements?: {
64
- modelId: string;
65
- elementId: string;
66
- }[]): void;
67
- isolate(elements?: {
68
- modelId: string;
69
- elementId: string;
70
- }[]): {
71
- modelId: string;
72
- elementId: string;
73
- }[];
74
- isolateModel(modelIds: string[]): void;
75
- reset(): void;
76
- private showAllInstances;
77
- enableEdgePerElement(material: LineMaterial, thresholdDeg?: number): void;
78
- disableEdge(): void;
79
- enableEdge(): void;
80
- refreshEdgesIfAny(): void;
81
- private _buildEdges;
82
- isolateEdge(elements?: {
83
- modelId: string;
84
- elementId: string;
85
- }[]): void;
86
- hideEdge(elements?: {
87
- modelId: string;
88
- elementId: string;
89
- }[]): void;
90
- edgeReset(): void;
91
- enableRaycasting(): void;
92
- private _customRaycast;
93
- findElementByInstanceIndex(instanceIndex: number): {
94
- modelId: string;
95
- elementId: string;
96
- } | null;
97
- findElementByInstancedMeshAndIndex(instancedMesh: InstancedMesh, instanceIndex: number): {
98
- modelId: string;
99
- elementId: string;
100
- } | null;
101
- findElementByFaceIndex(faceIndex: number): {
102
- modelId: string;
103
- elementId: string;
104
- } | null;
105
- getInstancedMeshes(): InstancedMesh[];
106
- getElements(elements: {
107
- modelId: string;
108
- elementId: string;
109
- }[]): BufferElement[];
110
- getElementsByModel(modelIndex: number): BufferElement[];
111
- getElementBoxs(elements: {
112
- modelId: string;
113
- elementId: string;
114
- }[]): Box3 | null;
115
- getTotalVertexCount(): number;
116
- getObjectCount(): number;
117
- get isBatching(): boolean;
118
- enableLights(): void;
119
- disableLights(): void;
120
- calculateCenter(buffer: Float32Array): Vector3 | null;
121
- private getFarthestDistance;
122
- dispose(): this;
123
- }
@@ -1,41 +0,0 @@
1
- import { BufferGeometry, InstancedMesh, LineBasicMaterial, Material, Mesh } from "three";
2
- import { Dictionary } from "../../types";
3
- import { AbstractViralMesh } from "./viral-mesh.abstract";
4
- export declare class ViralInstancedMesh extends InstancedMesh implements AbstractViralMesh {
5
- private _originMesh;
6
- private _isOrigin;
7
- overrideHoverMeshes: Mesh<BufferGeometry, Material>[];
8
- overrideSelectMeshes: Mesh<BufferGeometry, Material>[];
9
- _tempHoveredIndexs: number[];
10
- hoveredIndexs: Dictionary<number, Material>;
11
- _tempSelectedIndexs: number[];
12
- selectedIndexs: Dictionary<number, Material>;
13
- /**
14
- *
15
- * @param geometry geometry for instanced mesh
16
- * @param materials materials for instanced mesh, can be both 1 or array
17
- * @param count number of instance in mesh
18
- * @param _host share the same logic with parent, when we push temp mesh into scene, we must binding original viral instanced mesh to host to recall/ reprogress later
19
- */
20
- constructor(geometry: BufferGeometry, materials: Material[] | Material, count: number);
21
- hideAts(indexs: number[]): void;
22
- hideObjects(reverseToOriginal?: boolean): void;
23
- isolateAts(indexs: number[]): void;
24
- isolateObjects(reverseToOriginal?: boolean): void;
25
- hoverAts(indexs: number[], material: Material): void;
26
- selectAts(indexs: number[], material: Material): void;
27
- overrideObjects(reverseToOriginal?: boolean): void;
28
- totalSelectedIndex(): number[];
29
- getSelectedElementIds(): any[];
30
- reverseIndex(clearHoverIndexs?: boolean, clearSelectIndexs?: boolean): void;
31
- reverseToOriginal(reverseHoverMeshes?: boolean, reverseSelectMeshes?: boolean, reverseInstanceData?: boolean): void;
32
- getDistinctNumbers(numbers: number[]): number[];
33
- private _edgeLines;
34
- private _edgeGroup;
35
- enableEdge(material: LineBasicMaterial): void;
36
- disableEdge(): void;
37
- /**
38
- * ! Disposes of the ViralMesh properly, when dispose we dont need to dispose material
39
- */
40
- dispose(): void;
41
- }
@@ -1,16 +0,0 @@
1
- import { Dictionary, RenderMaterial, ViralutionElement } from "../..";
2
- import { ViralSeperateModel } from "./viral-seperate-model";
3
- /**
4
- * this is a wrapper to manage whole BIM Model
5
- */
6
- export declare class ViralMainModel {
7
- modelId: number;
8
- elements: ViralutionElement[];
9
- materials: RenderMaterial[];
10
- mapMaterialsToMaterialManager: Dictionary<number, number>;
11
- /**
12
- * @deprecated don't use this anymore
13
- */
14
- seperateModel: ViralSeperateModel;
15
- dispose(): void;
16
- }
@@ -1,3 +0,0 @@
1
- export declare abstract class AbstractViralMesh {
2
- dispose(): void;
3
- }
@@ -1,13 +0,0 @@
1
- import { Box3, BufferGeometry, LineBasicMaterial, Material, Mesh } from "three";
2
- import { AbstractViralMesh } from "./viral-mesh.abstract";
3
- export declare class ViralMesh extends Mesh implements AbstractViralMesh {
4
- constructor(geometry?: BufferGeometry, material?: Material);
5
- get bounds(): Box3;
6
- private _edgeLines;
7
- enableEdge(material: LineBasicMaterial): void;
8
- disableEdge(): void;
9
- /**
10
- * ! Disposes of the ViralMesh properly, when dispose we dont need to dispose material
11
- */
12
- dispose(): void;
13
- }
@@ -1,18 +0,0 @@
1
- import { Box3, LineBasicMaterial, Mesh } from "three";
2
- import { ViralMesh } from "./viral-mesh";
3
- import { ViralInstancedMesh } from "./viral-instanced-mesh";
4
- /**
5
- * *this class is a wrapper, it stand for a whole bim model
6
- * we will manage through this class
7
- */
8
- export declare class ViralSeperateModel extends Mesh {
9
- constructor();
10
- get bounds(): Box3;
11
- private _viralMeshes;
12
- addViralMesh(mesh: ViralMesh): void;
13
- private _viralInstancedMeshes;
14
- addViralInstancedMesh(mesh: ViralInstancedMesh): void;
15
- enableEdge(material: LineBasicMaterial): void;
16
- disableEdge(): void;
17
- dispose(): void;
18
- }
@@ -1,12 +0,0 @@
1
- import { RevitTransform, ViralPoint, ViralViewerApi } from "../..";
2
- /**
3
- * @deprecated this class we dont need anymore because now we switch 100% to merge model
4
- */
5
- export declare class ViralGeometryHandler {
6
- viralViewerApi: ViralViewerApi;
7
- constructor(viralViewerApi: ViralViewerApi);
8
- generateBuffer(indices: number[], vertices: ViralPoint[], transform?: RevitTransform | null): Float32Array;
9
- mergeFloat32Arrays(buffers: Float32Array<ArrayBuffer>[]): Float32Array;
10
- isGeneratingMergeModel: boolean;
11
- generateMergeModel(): void;
12
- }
@@ -1,116 +0,0 @@
1
- import { BufferGeometry, Vector3 } from "three";
2
- import { ViralBatchedMesh, ViralMergedModel } from "../..";
3
- export declare enum LODStrategy {
4
- VERTEX_DECIMATION = "vertex_decimation",
5
- TRIANGLE_REDUCTION = "triangle_reduction",
6
- GEOMETRIC_SIMPLIFICATION = "geometric_simplification",
7
- BOUNDING_BOX_REPLACEMENT = "bounding_box_replacement"
8
- }
9
- export interface LODLevel {
10
- distance: number;
11
- reductionRatio: number;
12
- strategy: LODStrategy;
13
- }
14
- export interface LODResult {
15
- level: number;
16
- geometry: BufferGeometry;
17
- vertexCount: number;
18
- triangleCount: number;
19
- reductionRatio: number;
20
- }
21
- export declare class FastLODGenerator {
22
- private workerPool;
23
- private lodLevels;
24
- constructor(numberOfWorkers?: number);
25
- private initializeWorkerPool;
26
- /**
27
- * Generate all LOD levels for a mesh concurrently
28
- */
29
- generateLODsForMesh(mesh: ViralBatchedMesh, customLODLevels?: LODLevel[]): Promise<Map<number, LODResult>>;
30
- /**
31
- * Generate LODs for entire merged model
32
- */
33
- generateLODsForMergedModel(mergedModel: ViralMergedModel): Promise<Map<string, Map<number, LODResult>>>;
34
- /**
35
- * Generate LOD for instanced mesh (base geometry only)
36
- */
37
- private generateLODsForInstancedMesh;
38
- /**
39
- * Generate single LOD level
40
- */
41
- private generateSingleLOD;
42
- /**
43
- * Quick LOD generation with preset configurations
44
- */
45
- generateQuickLODs(mergedModel: ViralMergedModel, preset?: "performance" | "balanced" | "quality"): Promise<Map<string, Map<number, LODResult>>>;
46
- /**
47
- * Set custom LOD levels
48
- */
49
- setLODLevels(levels: LODLevel[]): void;
50
- /**
51
- * Get current LOD configuration
52
- */
53
- getLODLevels(): LODLevel[];
54
- dispose(): void;
55
- }
56
- export declare class LODManager {
57
- private lodData;
58
- private mergedModel;
59
- private originalMeshes;
60
- private currentLODLevels;
61
- constructor(mergedModel: ViralMergedModel, lodData: Map<string, Map<number, LODResult>>);
62
- private cacheOriginalMeshes;
63
- /**
64
- * Update LOD levels based on camera distance
65
- */
66
- updateLODBasedOnCamera(cameraPosition: Vector3): void;
67
- private calculateDistanceToMesh;
68
- private determineOptimalLODLevel;
69
- private switchToLODLevel;
70
- /**
71
- * Get current LOD statistics
72
- */
73
- getLODStats(): Map<string, {
74
- level: number;
75
- vertexCount: number;
76
- reductionRatio: number;
77
- }>;
78
- /**
79
- * Force specific LOD level for all meshes
80
- */
81
- setGlobalLODLevel(level: number): void;
82
- /**
83
- * Reset all meshes to highest detail (LOD 0)
84
- */
85
- resetToHighestDetail(): void;
86
- /**
87
- * Get available LOD levels for a specific mesh
88
- */
89
- getAvailableLODLevels(meshId: string): number[];
90
- }
91
- export declare class LODPerformanceMonitor {
92
- private frameCount;
93
- private lastFrameTime;
94
- private currentFPS;
95
- private lodManager;
96
- private performanceHistory;
97
- constructor(lodManager: LODManager);
98
- private startMonitoring;
99
- private recordPerformanceData;
100
- getCurrentFPS(): number;
101
- getAverageFPS(): number;
102
- getPerformanceReport(): {
103
- currentFPS: number;
104
- averageFPS: number;
105
- currentLODStats: any;
106
- recommendations: string[];
107
- };
108
- }
109
- export interface LODPresetConfig {
110
- name: string;
111
- levels: LODLevel[];
112
- description: string;
113
- }
114
- export declare const LODPresets: Record<string, LODPresetConfig>;
115
- export declare function detectDeviceCapability(): "mobile" | "desktop" | "workstation";
116
- export declare function getOptimalWorkerCount(): number;