iflow-engine-base 3.4.2 → 3.4.4

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 (41) hide show
  1. package/dist/assets/hdr/10.hdr +0 -0
  2. package/dist/assets/hdr/11.hdr +0 -0
  3. package/dist/assets/hdr/12.hdr +0 -0
  4. package/dist/assets/hdr/13.hdr +0 -0
  5. package/dist/assets/hdr/14.hdr +0 -0
  6. package/dist/assets/hdr/15.hdr +0 -0
  7. package/dist/assets/hdr/16.hdr +0 -0
  8. package/dist/assets/hdr/17.hdr +0 -0
  9. package/dist/assets/hdr/8.hdr +0 -0
  10. package/dist/bim-engine-sdk.es.js +4303 -3861
  11. package/dist/bim-engine-sdk.es.js.map +1 -1
  12. package/dist/bim-engine-sdk.umd.js +169 -169
  13. package/dist/bim-engine-sdk.umd.js.map +1 -1
  14. package/dist/iflow-engine-base.css +1 -1
  15. package/dist/index.d.ts +85 -91
  16. package/dist/texture/ground/concrete01.jpg +0 -0
  17. package/dist/texture/ground/concrete02.jpg +0 -0
  18. package/dist/texture/ground/grass01.jpg +0 -0
  19. package/dist/texture/ground/grass02.jpg +0 -0
  20. package/dist/texture/ground/grass03.jpg +0 -0
  21. package/dist/texture/ground/grass04.jpg +0 -0
  22. package/dist/texture/ground/road01.jpg +0 -0
  23. package/dist/texture/ground/road02.jpg +0 -0
  24. package/dist/texture/ground/tiles01.jpg +0 -0
  25. package/dist/texture/ground/tiles02.jpg +0 -0
  26. package/dist/texture/ground/wood01.jpg +0 -0
  27. package/dist/texture/ground/z01.jpg +0 -0
  28. package/dist/texture/ground/z02.jpg +0 -0
  29. package/package.json +1 -1
  30. package/dist/assets/ground//346/267/267/345/207/235/345/234/23749.jpg +0 -0
  31. package/dist/assets/ground//350/212/261/350/215/21103.jpg +0 -0
  32. package/dist/assets/hdr/001.hdr +0 -0
  33. /package/dist/assets/hdr/{/347/272/257/345/207/200-/345/244/232/344/272/221.hdr" → 1.hdr} +0 -0
  34. /package/dist/assets/hdr/{/347/272/257/345/207/200-/350/220/275/346/227/245.hdr" → 2.hdr} +0 -0
  35. /package/dist/assets/hdr/{/347/272/257/345/207/200-/345/260/221/344/272/221.hdr" → 3.hdr} +0 -0
  36. /package/dist/assets/hdr/{/347/272/257/345/207/200-/346/227/240/344/272/221.hdr" → 4.hdr} +0 -0
  37. /package/dist/assets/hdr/{/347/272/257/345/207/200-/345/244/234/346/231/232.hdr" → 5.hdr} +0 -0
  38. /package/dist/assets/hdr/{/347/272/257/345/207/200-/351/230/264/345/244/251.hdr" → 6.hdr} +0 -0
  39. /package/dist/assets/hdr/{/347/272/257/345/207/200-/344/270/255/344/272/221.hdr" → 7.hdr} +0 -0
  40. /package/dist/assets/hdr/{/345/237/216/345/270/202/346/210/267/345/244/226/345/244/251/347/251/272-/346/227/240/344/272/221.hdr" → 9.hdr} +0 -0
  41. /package/dist/{textture → texture}/waternormals.jpg +0 -0
@@ -1 +1 @@
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}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.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;padding:5px;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}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}
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}.tagDiv{color:gray;background:#fffc;padding:5px;font-size:12px}.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;stroke:#009bea;fill:#009bea;filter:drop-shadow(1px 1px 2px rgba(0,0,0,.3))}.measureBack{cursor:pointer;pointer-events:auto;fill:#fff;padding:5px;top:-50px;rx:5;ry:5;filter:drop-shadow(1px 1px 2px rgba(0,0,0,.3))}.measureLabel{position:absolute;fill:#fff;font-size:14px;stroke:#009bea;font-weight:100;pointer-events:none}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(2px 1px 2px rgba(255,255,255,1))}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}.panorama-annotation-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1000;overflow:hidden}.panorama-annotation{position:absolute;pointer-events:auto;cursor:pointer;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .2s ease;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.panorama-annotation:hover{z-index:1001;transform:translate(-50%,-50%) scale(1.1)}.panorama-annotation-icon{width:40px;height:40px}.panorama-annotation-icon img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.panorama-annotation-text{max-width:200px;text-align:center;line-height:1.4}.panorama-annotation-link{transition:background-color .2s ease,transform .2s ease}.panorama-annotation-link:hover{z-index:1002}.panorama-annotation-link img{display:block;flex-shrink:0}.panorama-annotation.hidden{display:none!important}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.panorama-annotation.loading{animation:pulse 1.5s ease-in-out infinite}@media(max-width:768px){.panorama-annotation-icon{width:32px;height:32px}.panorama-annotation-text,.panorama-annotation-link{font-size:12px!important;padding:6px 10px!important}}
package/dist/index.d.ts CHANGED
@@ -1475,6 +1475,7 @@ declare class EngineModelModule {
1475
1475
  declare class EngineStatus {
1476
1476
  private engine;
1477
1477
  isFree: boolean;
1478
+ isForceFree: boolean;
1478
1479
  highlightModels: any[];
1479
1480
  hideModels: any[];
1480
1481
  translucentModels: any[];
@@ -1671,7 +1672,8 @@ declare enum EventType {
1671
1672
  EngineFree = "engine-free",
1672
1673
  EngineBusy = "engine-busy",
1673
1674
  MeasureChanged = "measure-changed",
1674
- SectionMove = "section-move"
1675
+ SectionMove = "section-move",
1676
+ LoadingCompleted = "loading_completed"
1675
1677
  }
1676
1678
 
1677
1679
  /**
@@ -1863,6 +1865,12 @@ declare class Ground {
1863
1865
  show(): void;
1864
1866
  hide(): void;
1865
1867
  dispose(): void;
1868
+ /**
1869
+ * 兼容项目内本地 three 渲染器。
1870
+ * 本地渲染器会向 lights uniforms 写入 directional/spot/point 的 shadowMap,
1871
+ * 但 npm Water 使用的 three 版本没有把这些 sampler 挂到 UniformsLib['lights'] 上。
1872
+ */
1873
+ private ensureWaterShadowUniforms;
1866
1874
  private _dispose;
1867
1875
  }
1868
1876
 
@@ -1898,66 +1906,41 @@ declare class Hdr {
1898
1906
  private isVisible;
1899
1907
  private currentIntensity;
1900
1908
  private currentTexture;
1909
+ private currentEnvironmentTexture;
1901
1910
  private skybox;
1902
1911
  private readonly textureCache;
1912
+ private previousBackground;
1913
+ private previousEnvironment;
1914
+ private previousBackgroundIntensity;
1915
+ private previousEnvironmentIntensity;
1916
+ private previousAmbientLightIntensity;
1917
+ private previousToneMapping;
1918
+ private previousToneMappingExposure;
1903
1919
  private readonly hdrList;
1904
1920
  constructor(engine: any);
1905
- /**
1906
- * 获取 HDR 列表
1907
- */
1908
1921
  getHdrList(): HdrItem[];
1909
- /**
1910
- * 切换 HDR 背景
1911
- * @param id - HDR id,"0" 表示清除 HDR
1912
- */
1913
1922
  setHdr(id: string): Promise<void>;
1914
- /**
1915
- * 设置 HDR 天空球可见性(不影响环境光照)
1916
- * @param visible - true 显示,false 隐藏
1917
- */
1918
1923
  setVisible(visible: boolean): void;
1919
- /**
1920
- * 获取当前 HDR id
1921
- */
1922
1924
  getCurrentHdrId(): string;
1923
- /**
1924
- * 获取 HDR 背景是否可见
1925
- */
1926
1925
  getVisible(): boolean;
1927
- /**
1928
- * 设置 HDR 整体亮度
1929
- * @param intensity - 亮度倍率,1 为原始亮度,推荐范围 0.1 ~ 3
1930
- */
1931
1926
  setIntensity(intensity: number): void;
1932
- /**
1933
- * 获取当前 HDR 亮度
1934
- */
1935
1927
  getIntensity(): number;
1936
- /**
1937
- * 动态添加自定义 HDR 条目(用于外部扩展)
1938
- */
1939
1928
  addHdrItem(item: HdrItem): void;
1940
- /**
1941
- * 释放所有缓存纹理
1942
- */
1943
1929
  dispose(): void;
1944
1930
  private _loadHdr;
1945
1931
  private _applyTexture;
1946
- /**
1947
- * 创建超大天空球,兼容正交/透视两种相机
1948
- * - radius 5000:远超任何场景对象,确保始终在背景层
1949
- * - BackSide:从内部观察球面
1950
- * - depthWrite false + renderOrder -1:不写入深度缓冲,始终渲染在最底层
1951
- * - frustumCulled false:防止大球被裁剪掉
1952
- */
1932
+ private _captureSceneState;
1953
1933
  private _createSkybox;
1934
+ private _updateSkyboxIntensity;
1954
1935
  private _removeSkybox;
1955
1936
  private _clearHdr;
1937
+ private _getAmbientLightIntensity;
1938
+ private _setAmbientLightIntensity;
1956
1939
  }
1957
1940
 
1958
1941
  declare interface HdrItem {
1959
1942
  id: string;
1960
- name: string;
1943
+ names: string[];
1961
1944
  url?: string;
1962
1945
  }
1963
1946
 
@@ -2042,21 +2025,56 @@ declare class InteractionModule {
2042
2025
  private engine;
2043
2026
  private behavior;
2044
2027
  private isCtrlDown;
2045
- private readonly highlightedInstances;
2046
- private readonly highlightColor;
2028
+ private isShiftDown;
2029
+ private hoverOldId;
2030
+ private timeOutEvent;
2031
+ private selectionBox;
2032
+ private isBoxSelecting;
2033
+ private selectionStart;
2034
+ private selectionEnd;
2035
+ private suppressClickOnce;
2036
+ private readonly selectionThreshold;
2037
+ private readonly tempInstanceMatrix;
2038
+ private readonly tempScale;
2047
2039
  constructor(engine: any);
2048
2040
  init(): void;
2049
2041
  active(): void;
2050
2042
  disActive(): void;
2051
2043
  handelKeyCtrlUp(): void;
2052
2044
  handelKeyCtrlDown(): void;
2053
- private hoverOldId;
2054
- private timeOutEvent;
2045
+ handelKeyShiftUp(): void;
2046
+ handelKeyShiftDown(): void;
2047
+ handleMouseDown(event: any): void;
2055
2048
  handleMouseMove(event: any): void;
2049
+ handleMouseUp(event: any): void;
2056
2050
  getCatchMeshs(event: any, retainShow?: boolean): any;
2057
2051
  handleMouseClick(event: any): void;
2058
2052
  handleMouseDoubleClick(event: any): void;
2059
2053
  handleMouseClickInstance(raycaster: any): any;
2054
+ private ensureSelectionBox;
2055
+ private updateSelectionBox;
2056
+ private hideSelectionBox;
2057
+ private cancelBoxSelection;
2058
+ private clearHoverTimeout;
2059
+ private clearHoverFeedback;
2060
+ private hasSelectionBox;
2061
+ private getSelectionRect;
2062
+ private isContainMode;
2063
+ private isBoxSelectionModifierDown;
2064
+ private isBoxDeselectMode;
2065
+ private collectModelsInSelection;
2066
+ private applyBoxSelection;
2067
+ private applyBoxDeselection;
2068
+ private excludeHighlightedModels;
2069
+ private keepHighlightedModels;
2070
+ private removeModelsFromHighlightState;
2071
+ private getNodeWorldBox;
2072
+ private getInstanceWorldBox;
2073
+ private projectBoxToScreenRect;
2074
+ private containsRect;
2075
+ private intersectsRect;
2076
+ private getMergedBox;
2077
+ private getSceneModel;
2060
2078
  }
2061
2079
 
2062
2080
  declare class InteractionModule2d {
@@ -2600,6 +2618,7 @@ declare class ModelEdge {
2600
2618
  private show;
2601
2619
  getModelEdge(url: string, id: Number): any;
2602
2620
  hideModelEdge(url: string, id: Number): void;
2621
+ setOpacity(opacity: number): void;
2603
2622
  showModelEdge(url: string, id: Number): void;
2604
2623
  }
2605
2624
 
@@ -3643,89 +3662,64 @@ declare class SkyManager {
3643
3662
  private sky;
3644
3663
  private sun;
3645
3664
  private params;
3665
+ private currentIntensity;
3666
+ private currentEnvironmentTarget;
3646
3667
  private readonly skyScale;
3647
3668
  private readonly skyName;
3648
- /** 激活天空前相机的 far,关闭时恢复 */
3649
3669
  private savedCameraFar;
3670
+ private previousBackground;
3671
+ private previousEnvironment;
3672
+ private previousBackgroundIntensity;
3673
+ private previousEnvironmentIntensity;
3674
+ private previousToneMapping;
3675
+ private previousToneMappingExposure;
3676
+ private hasCapturedSceneState;
3650
3677
  constructor(engine: any);
3651
- /**
3652
- * 激活天空球:创建 Sky 并加入场景,应用当前参数
3653
- */
3654
3678
  activate(): void;
3655
- /**
3656
- * 关闭天空球:从场景移除并释放,或仅隐藏
3657
- * @param remove - true 从场景移除并 dispose,false 仅隐藏
3658
- */
3659
3679
  close(remove?: boolean): void;
3660
- /**
3661
- * 是否已激活(天空对象存在且已加入场景)
3662
- */
3663
3680
  isActive(): boolean;
3664
- /**
3665
- * 获取当前参数(副本)
3666
- */
3667
3681
  getParams(): Readonly<Required<SkyParams>>;
3668
- /**
3669
- * 使用对象设置参数(支持部分字段),并立即应用到天空与渲染器
3670
- */
3671
3682
  setParams(params: SkyParams): void;
3672
- /**
3673
- * 应用预设
3674
- */
3675
3683
  setPreset(name: SkyPresetName): void;
3676
- /**
3677
- * 获取所有预设名称
3678
- */
3679
3684
  getPresetNames(): SkyPresetName[];
3680
- /**
3681
- * 更新云层动画时间(每帧调用一次,例如在渲染循环中)
3682
- * 同时根据当前相机类型(透视/正交)同步曝光,保证切换相机后天空亮度正确。
3683
- * @param time - 秒,不传则使用 performance.now() * 0.001
3684
- */
3685
+ getPresetList(): SkyPresetInfo[];
3686
+ setIntensity(intensity: number): void;
3687
+ getIntensity(): number;
3685
3688
  update(time?: number): void;
3686
- /** 当前相机是否为正交相机 */
3687
3689
  private _isOrthographicCamera;
3688
- /** 获取当前相机有效曝光(正交相机使用 orthoExposureScale 补偿) */
3689
3690
  private _getEffectiveExposure;
3690
- /** 扩大相机 far 以容纳天空盒,避免被裁剪成黑屏(支持透视与正交) */
3691
3691
  private _expandCameraFarForSky;
3692
- /** 关闭天空时恢复相机 far(支持透视与正交) */
3693
3692
  private _restoreCameraFar;
3694
3693
  private _applyParamsToSky;
3695
- /** Set shader uniform if it exists on current Sky material to avoid runtime errors with stock shader. */
3694
+ private _captureSceneState;
3695
+ private _restoreSceneState;
3696
+ private _refreshEnvironmentMap;
3697
+ private _disposeEnvironmentTarget;
3696
3698
  private _setUniformValue;
3697
3699
  }
3698
3700
 
3699
- /** 天空球参数(与 Three.js Sky 材质 uniform 及曝光对应) */
3700
3701
  declare interface SkyParams {
3701
- /** 大气浑浊度,0~20,默认 10 */
3702
3702
  turbidity?: number;
3703
- /** 瑞利散射,0~4,默认 3 */
3704
3703
  rayleigh?: number;
3705
- /** Mie 系数,0~0.1,默认 0.005 */
3706
3704
  mieCoefficient?: number;
3707
- /** Mie 方向性,0~1,默认 0.7 */
3708
3705
  mieDirectionalG?: number;
3709
- /** 太阳仰角(度),0~90,默认 2 */
3710
3706
  elevation?: number;
3711
- /** 太阳方位角(度),-180~180,默认 180 */
3712
3707
  azimuth?: number;
3713
- /** 渲染器曝光,0~1,默认 0.5 */
3714
3708
  exposure?: number;
3715
- /** 正交相机下的曝光倍数,用于补偿正交投影下天空偏暗,默认 1.5 */
3716
3709
  orthoExposureScale?: number;
3717
- /** 云层覆盖,0~1,默认 0.4 */
3718
3710
  cloudCoverage?: number;
3719
- /** 云层密度,0~1,默认 0.4 */
3720
3711
  cloudDensity?: number;
3721
- /** 云层高度感,0~1,默认 0.5 */
3722
3712
  cloudElevation?: number;
3723
- /** 是否显示日盘,默认 true */
3724
3713
  showSunDisc?: boolean;
3725
3714
  }
3726
3715
 
3727
- /** 预设名称 */
3728
- declare type SkyPresetName = 'default' | 'sunset' | 'overcast' | 'clear' | 'night';
3716
+ declare interface SkyPresetInfo {
3717
+ id: SkyPresetName;
3718
+ names: string[];
3719
+ params: SkyParams;
3720
+ }
3721
+
3722
+ declare type SkyPresetName = 'sunrise_clear' | 'morning_mist' | 'noon_clear' | 'afternoon_cloudy' | 'sunset_glow' | 'blue_hour' | 'overcast_day' | 'storm_rain' | 'snow_day' | 'moonlit_night';
3729
3723
 
3730
3724
  /**
3731
3725
  * 步骤接口
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iflow-engine-base",
3
- "version": "3.4.2",
3
+ "version": "3.4.4",
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",
Binary file
File without changes