@ifc-lite/renderer 1.2.0 → 1.3.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/dist/constants.d.ts +125 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +124 -0
- package/dist/constants.js.map +1 -0
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +2 -1
- package/dist/device.js.map +1 -1
- package/dist/federation-registry.d.ts +98 -0
- package/dist/federation-registry.d.ts.map +1 -0
- package/dist/federation-registry.js +197 -0
- package/dist/federation-registry.js.map +1 -0
- package/dist/index.d.ts +40 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +343 -134
- package/dist/index.js.map +1 -1
- package/dist/picker.d.ts +3 -2
- package/dist/picker.d.ts.map +1 -1
- package/dist/picker.js +19 -10
- package/dist/picker.js.map +1 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +5 -3
- package/dist/pipeline.js.map +1 -1
- package/dist/scene.d.ts +32 -8
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +167 -16
- package/dist/scene.js.map +1 -1
- package/dist/section-plane.d.ts +14 -4
- package/dist/section-plane.d.ts.map +1 -1
- package/dist/section-plane.js +129 -53
- package/dist/section-plane.js.map +1 -1
- package/dist/snap-detector.d.ts +47 -1
- package/dist/snap-detector.d.ts.map +1 -1
- package/dist/snap-detector.js +443 -28
- package/dist/snap-detector.js.map +1 -1
- package/dist/types.d.ts +15 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -11,17 +11,19 @@ export { SectionPlaneRenderer } from './section-plane.js';
|
|
|
11
11
|
export { Raycaster } from './raycaster.js';
|
|
12
12
|
export { SnapDetector, SnapType } from './snap-detector.js';
|
|
13
13
|
export { BVH } from './bvh.js';
|
|
14
|
+
export { FederationRegistry, federationRegistry } from './federation-registry.js';
|
|
15
|
+
export type { ModelRange, GlobalIdLookup } from './federation-registry.js';
|
|
14
16
|
export * from './types.js';
|
|
15
17
|
export type { Ray, Vec3, Intersection } from './raycaster.js';
|
|
16
|
-
export type { SnapTarget, SnapOptions } from './snap-detector.js';
|
|
18
|
+
export type { SnapTarget, SnapOptions, EdgeLockInput, MagneticSnapResult } from './snap-detector.js';
|
|
17
19
|
export { ZeroCopyGpuUploader, createZeroCopyUploader, type WasmMemoryHandle, type GpuGeometryData, type GpuInstancedGeometryData, type ZeroCopyMeshMetadata, type ZeroCopyUploadResult, type ZeroCopyInstancedUploadResult, } from './zero-copy-uploader.js';
|
|
18
20
|
import { RenderPipeline } from './pipeline.js';
|
|
19
21
|
import { Camera } from './camera.js';
|
|
20
22
|
import { Scene } from './scene.js';
|
|
21
|
-
import type { RenderOptions, PickOptions, Mesh } from './types.js';
|
|
23
|
+
import type { RenderOptions, PickOptions, PickResult, Mesh } from './types.js';
|
|
22
24
|
import type { InstancedGeometry } from '@ifc-lite/wasm';
|
|
23
25
|
import { Raycaster, type Intersection } from './raycaster.js';
|
|
24
|
-
import { SnapDetector, type SnapTarget, type SnapOptions } from './snap-detector.js';
|
|
26
|
+
import { SnapDetector, type SnapTarget, type SnapOptions, type EdgeLockInput, type MagneticSnapResult } from './snap-detector.js';
|
|
25
27
|
/**
|
|
26
28
|
* Main renderer class
|
|
27
29
|
*/
|
|
@@ -40,11 +42,35 @@ export declare class Renderer {
|
|
|
40
42
|
private bvh;
|
|
41
43
|
private bvhCache;
|
|
42
44
|
private readonly BVH_THRESHOLD;
|
|
45
|
+
private lastRenderErrorTime;
|
|
46
|
+
private readonly RENDER_ERROR_THROTTLE_MS;
|
|
43
47
|
constructor(canvas: HTMLCanvasElement);
|
|
44
48
|
/**
|
|
45
49
|
* Initialize renderer
|
|
46
50
|
*/
|
|
47
51
|
init(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Load geometry from GeometryResult or MeshData array
|
|
54
|
+
* This is the main entry point for loading IFC geometry into the renderer
|
|
55
|
+
*
|
|
56
|
+
* @param geometry - Either a GeometryResult from geometry.process() or an array of MeshData
|
|
57
|
+
*/
|
|
58
|
+
loadGeometry(geometry: import('@ifc-lite/geometry').GeometryResult | import('@ifc-lite/geometry').MeshData[]): void;
|
|
59
|
+
/**
|
|
60
|
+
* Add multiple meshes to the scene (convenience method for streaming)
|
|
61
|
+
*
|
|
62
|
+
* @param meshes - Array of MeshData to add
|
|
63
|
+
* @param isStreaming - If true, throttles batch rebuilding for better streaming performance
|
|
64
|
+
*/
|
|
65
|
+
addMeshes(meshes: import('@ifc-lite/geometry').MeshData[], isStreaming?: boolean): void;
|
|
66
|
+
/**
|
|
67
|
+
* Update model bounds from mesh data
|
|
68
|
+
*/
|
|
69
|
+
private updateModelBounds;
|
|
70
|
+
/**
|
|
71
|
+
* Fit camera to view all loaded geometry
|
|
72
|
+
*/
|
|
73
|
+
fitToView(): void;
|
|
48
74
|
/**
|
|
49
75
|
* Add mesh to scene with per-mesh GPU resources for unique colors
|
|
50
76
|
*/
|
|
@@ -80,8 +106,9 @@ export declare class Renderer {
|
|
|
80
106
|
/**
|
|
81
107
|
* Pick object at screen coordinates
|
|
82
108
|
* Respects visibility filtering so users can only select visible elements
|
|
109
|
+
* Returns PickResult with expressId and modelIndex for multi-model support
|
|
83
110
|
*/
|
|
84
|
-
pick(x: number, y: number, options?: PickOptions): Promise<
|
|
111
|
+
pick(x: number, y: number, options?: PickOptions): Promise<PickResult | null>;
|
|
85
112
|
/**
|
|
86
113
|
* Raycast into the scene to get precise 3D intersection point
|
|
87
114
|
* This is more accurate than pick() as it returns the exact surface point
|
|
@@ -92,6 +119,15 @@ export declare class Renderer {
|
|
|
92
119
|
intersection: Intersection;
|
|
93
120
|
snap?: SnapTarget;
|
|
94
121
|
} | null;
|
|
122
|
+
/**
|
|
123
|
+
* Raycast with magnetic edge snapping behavior
|
|
124
|
+
* This provides the "stick and slide along edges" experience
|
|
125
|
+
*/
|
|
126
|
+
raycastSceneMagnetic(x: number, y: number, currentEdgeLock: EdgeLockInput, options?: PickOptions & {
|
|
127
|
+
snapOptions?: Partial<SnapOptions>;
|
|
128
|
+
}): MagneticSnapResult & {
|
|
129
|
+
intersection: Intersection | null;
|
|
130
|
+
};
|
|
95
131
|
/**
|
|
96
132
|
* Invalidate BVH cache (call when geometry changes)
|
|
97
133
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|