iflow-engine-base 2.0.2 → 2.0.3

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.
@@ -1 +1 @@
1
- .originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-image:url(/assets/viewcube/home.png);background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none}.measureBack{cursor:pointer;pointer-events:auto;fill:orange;top:-50px;rx:5;ry:5}.measureLabel{position:absolute;fill:#fff;font-size:14px;font-family:Arial,sans-serif;pointer-events:none}.measurePointer{fill:orange}.Hight{stroke:#fff;stroke-width:2}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}
1
+ .originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:0;font-size:10px;background:transparent;pointer-events:none}.originDiv{position:absolute;top:100px;left:100px;width:30px;height:30px;border-radius:50%;z-index:1000;pointer-events:none}.catchPoint{pointer-events:none;stroke:#08dfd7;fill:transparent;stroke-width:2}.catchLine{position:absolute;width:10px;height:10px;pointer-events:none;background-color:green}.catchPlane{position:absolute;width:10px;height:10px;pointer-events:none;background-color:#ff0}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-image:url(/assets/viewcube/home.png);background-size:100% 100%;background-repeat:no-repeat;background-color:#fff0;color:#fff;top:10px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.viewSettingWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-size:100% 100%;background-repeat:no-repeat;font-weight:800;background-color:#fff0;color:#fff;top:30px;right:100;width:20px;height:20px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:70px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.cameraToggleWrapper.show{display:flex}.cameraToggleWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.screenshotWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:20px;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:120px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.screenshotWrapper.show{display:flex}.screenshotWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.fullscreenWrapper{position:absolute;cursor:pointer;pointer-events:auto;background-color:#ffffffe6;color:#333;font-size:26px;font-weight:700;display:none;align-items:center;justify-content:center;border-radius:4px;box-shadow:0 2px 4px #0003;transition:all .3s ease;top:170px;right:90px;width:44px;height:44px;z-index:999;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.fullscreenWrapper.show{display:flex}.fullscreenWrapper:hover{background-color:#fff;box-shadow:0 3px 6px #0000004d;transform:scale(1.1)}.measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none}.measureBack{cursor:pointer;pointer-events:auto;fill:orange;top:-50px;rx:5;ry:5}.measureLabel{position:absolute;fill:#fff;font-size:14px;font-family:Arial,sans-serif;pointer-events:none}.measurePointer{fill:orange}.Hight{stroke:#fff;stroke-width:2}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}
package/dist/index.d.ts CHANGED
@@ -143,6 +143,7 @@ declare class ComposerModule {
143
143
  private engine;
144
144
  composer: any;
145
145
  private saturationPass;
146
+ private ssaoPass;
146
147
  constructor(engine: any);
147
148
  resize(width?: number, height?: number): void;
148
149
  init(): void;
@@ -242,6 +243,17 @@ declare class EngineKernelV2 {
242
243
  private controlsEnabledBeforePause;
243
244
  private animate;
244
245
  private onWindowResize;
246
+ private _fpsFrameCount;
247
+ private _fpsLastCheck;
248
+ private _fpsLastSwitch;
249
+ private _lowFpsCount;
250
+ private _highFpsCount;
251
+ private readonly _fpsCheckInterval;
252
+ private readonly _fpsSwitchCooldown;
253
+ private readonly _fpsThreshold;
254
+ private readonly _fpsUpgradeThreshold;
255
+ private readonly _lowFpsRequired;
256
+ private readonly _highFpsRequired;
245
257
  isMouseDown: boolean;
246
258
  isWheeling: boolean;
247
259
  scene: THREE.Scene | null;
@@ -289,9 +301,19 @@ declare class EngineKernelV2 {
289
301
  top: number;
290
302
  };
291
303
  version: string;
304
+ private versionEl;
292
305
  private container;
293
306
  constructor(options: any);
307
+ updateVersionDisplay(): void;
294
308
  updateLightPosition(camera: any, directionalLight: any): void;
309
+ /**
310
+ * 自适应渲染降级:将渲染模式降低一级
311
+ */
312
+ private _adaptiveRenderingDowngrade;
313
+ /**
314
+ * 自适应渲染升级:将渲染模式提升一级
315
+ */
316
+ private _adaptiveRenderingUpgrade;
295
317
  /**
296
318
  * 暂停渲染循环
297
319
  */
@@ -325,7 +347,9 @@ declare class EngineKernelV2 {
325
347
  declare class EngineModelModule {
326
348
  private engine;
327
349
  private currentMode;
350
+ private isManualMode;
328
351
  private gtaoPass;
352
+ private ssaoPass;
329
353
  private saturationPass;
330
354
  private outputPass;
331
355
  private fxaaPass;
@@ -335,7 +359,25 @@ declare class EngineModelModule {
335
359
  */
336
360
  init(): void;
337
361
  /**
338
- * 设置模式(公共接口,供 engine 调用)
362
+ * 手动切换渲染模式(用户调用),锁定自动适配
363
+ * @param model - "simple"(性能) | "balance"(平衡) | "advanced"(效果)
364
+ */
365
+ switchModel(model: string): void;
366
+ /**
367
+ * 自动切换渲染模式(引擎内部调用),若已手动设置则跳过
368
+ * @param model - "simple"(性能) | "balance"(平衡) | "advanced"(效果)
369
+ */
370
+ autoSwitch(model: string): void;
371
+ /**
372
+ * 恢复自动适配模式(解除手动锁定)
373
+ */
374
+ enableAutoMode(): void;
375
+ /**
376
+ * 是否处于手动锁定模式
377
+ */
378
+ get isManual(): boolean;
379
+ /**
380
+ * 设置模式(内部初始化使用,不影响手动锁定状态)
339
381
  * @param model - "simple"(性能) | "balance"(平衡) | "advanced"(效果)
340
382
  */
341
383
  setMode(model: string): void;
@@ -347,7 +389,7 @@ declare class EngineModelModule {
347
389
  * 缓存 Pass 引用
348
390
  */
349
391
  private cachePassReferences;
350
- private switchModel;
392
+ private applyMode;
351
393
  /**
352
394
  * 设置阴影开关
353
395
  */
@@ -356,6 +398,10 @@ declare class EngineModelModule {
356
398
  * 设置环境光遮蔽 (GTAO) 开关
357
399
  */
358
400
  private setGTAO;
401
+ /**
402
+ * 设置环境光遮蔽 (SSAO) 开关
403
+ */
404
+ private setSSAO;
359
405
  /**
360
406
  * 设置饱和度 Pass 开关
361
407
  */
@@ -377,9 +423,13 @@ declare class EngineModelModule {
377
423
  */
378
424
  setBalancedMode(): void;
379
425
  /**
380
- * 设置效果模式
426
+ * 设置效果模式(SSAO)
381
427
  */
382
428
  setQualityMode(): void;
429
+ /**
430
+ * 设置超高级模式(GTAO,最高质量)
431
+ */
432
+ setSuperQualityMode(): void;
383
433
  /**
384
434
  * 设置阴影质量
385
435
  * @param quality - "low"(1024) | "medium"(2048) | "high"(4096)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iflow-engine-base",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "BIM Engine SDK for Vue2, Vue3, React and HTML",
5
5
  "main": "./dist/bim-engine-sdk.umd.js",
6
6
  "module": "./dist/bim-engine-sdk.es.js",