@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/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<number | null>;
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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}