iflow-engine-base 3.4.12 → 3.5.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/assets/hdr/99.hdr +0 -0
- package/dist/bim-engine-sdk.es.js +16288 -12765
- package/dist/bim-engine-sdk.es.js.map +1 -1
- package/dist/bim-engine-sdk.umd.js +188 -188
- package/dist/bim-engine-sdk.umd.js.map +1 -1
- package/dist/iflow-engine-base.css +1 -1
- package/dist/index.d.ts +204 -18
- package/package.json +1 -1
|
@@ -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;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}}
|
|
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(0px 0px 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(0px 0px 3px rgba(0,0,0,.3));text-align:center}.measureLabel{position:absolute;fill:#fff;font-family:tahoma;font-size:14px;stroke:#009bea;font-weight:200;pointer-events:none;text-anchor:middle}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(0px 0px 2px rgb(0,195,255))}.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
|
@@ -509,10 +509,14 @@ declare class Clipping {
|
|
|
509
509
|
sectionBox: any;
|
|
510
510
|
sectionFace: any;
|
|
511
511
|
clippingStencil: any;
|
|
512
|
+
clippingCSGSimple: ClippingCSGOptimizedSimple | null;
|
|
512
513
|
currentClippingMode: string;
|
|
514
|
+
fillCutFace: boolean;
|
|
513
515
|
constructor(engine: any);
|
|
514
516
|
init(): void;
|
|
515
517
|
scaleBox(): void;
|
|
518
|
+
setFillCutFace(b: boolean): void;
|
|
519
|
+
getFillCutFace(): boolean;
|
|
516
520
|
clippingModel(models: any): void;
|
|
517
521
|
updateClippingValue(value: any): void;
|
|
518
522
|
active(type: string): void;
|
|
@@ -543,6 +547,141 @@ declare class Clipping {
|
|
|
543
547
|
}): void;
|
|
544
548
|
}
|
|
545
549
|
|
|
550
|
+
/**
|
|
551
|
+
* ClippingCSGOptimizedSimple
|
|
552
|
+
*
|
|
553
|
+
* 作用:
|
|
554
|
+
* 1. 根据剖切平面,计算模型与“薄片平面体”的 CSG 相交结果。
|
|
555
|
+
* 2. 从相交结果中提取贴近平面的帽面三角形(cap)。
|
|
556
|
+
* 3. 合并 cap 几何并加入场景,作为剖切补面。
|
|
557
|
+
*
|
|
558
|
+
* 设计要点:
|
|
559
|
+
* - 先粗筛(octree box / mesh box),再做重计算(CSG),避免全量布尔运算。
|
|
560
|
+
* - 对补面做极小偏移,避免补面材质本身也挂 clippingPlanes 时被同平面裁掉。
|
|
561
|
+
* - 每次更新前先 clear,保证场景中只存在当前补面。
|
|
562
|
+
*/
|
|
563
|
+
declare class ClippingCSGOptimizedSimple {
|
|
564
|
+
/** 引擎实例(包含 scene / models / engineStatus / octreeBox 等) */
|
|
565
|
+
private engine;
|
|
566
|
+
/** three-bvh-csg 计算器,负责执行布尔操作 */
|
|
567
|
+
private readonly evaluator;
|
|
568
|
+
/** 场景中补面 Mesh 的统一名前缀 */
|
|
569
|
+
private readonly fillMeshName;
|
|
570
|
+
/**
|
|
571
|
+
* 当前生成的补面集合。
|
|
572
|
+
* key:平面唯一键(face 或 plane-i-name)
|
|
573
|
+
* value:对应补面 Mesh
|
|
574
|
+
*/
|
|
575
|
+
private readonly fillMeshes;
|
|
576
|
+
/** 单次最多参与 CSG 的候选 Mesh 数量(保护性能) */
|
|
577
|
+
private readonly maxCandidates;
|
|
578
|
+
/** 单个 mesh 最大三角面阈值(过大直接跳过,保护实时交互) */
|
|
579
|
+
private readonly maxTriangleCountPerMesh;
|
|
580
|
+
/** 补面统一材质(由你在构造器中挂了 clippingPlanes) */
|
|
581
|
+
private fillMaterial;
|
|
582
|
+
private readonly fillTextureRepeat;
|
|
583
|
+
private readonly fillTextureRotation;
|
|
584
|
+
constructor(engine: any);
|
|
585
|
+
/**
|
|
586
|
+
* 清理当前所有补面。
|
|
587
|
+
* - 从 scene 移除 mesh
|
|
588
|
+
* - 释放 geometry / material 资源
|
|
589
|
+
*/
|
|
590
|
+
clear(): void;
|
|
591
|
+
/**
|
|
592
|
+
* 单平面补面入口(face/x/y/z 模式可用)。
|
|
593
|
+
* 每次调用先 clear,再构建当前平面的补面。
|
|
594
|
+
*/
|
|
595
|
+
updataFace(plane: any): void;
|
|
596
|
+
/**
|
|
597
|
+
* 多平面补面入口(box 模式可用)。
|
|
598
|
+
* 约定:传入的每个合法平面都分别生成一份补面。
|
|
599
|
+
*/
|
|
600
|
+
updataFaces(planes: any[]): void;
|
|
601
|
+
/**
|
|
602
|
+
* 构建某一个平面的补面。
|
|
603
|
+
*
|
|
604
|
+
* 主流程:
|
|
605
|
+
* 1) 拿场景包围盒,确定平面体尺寸。
|
|
606
|
+
* 2) 基于 octree 与 plane 相交,筛候选 mesh。
|
|
607
|
+
* 3) 再按 mesh world box 与复杂度做二次筛选。
|
|
608
|
+
* 4) 对每个候选 mesh 执行 CSG INTERSECTION。
|
|
609
|
+
* 5) 从交集几何中提取贴近平面的 cap 三角形。
|
|
610
|
+
* 6) 合并 cap,做轻微偏移,创建补面 mesh。
|
|
611
|
+
*/
|
|
612
|
+
private buildSinglePlaneFill;
|
|
613
|
+
/**
|
|
614
|
+
* 获取补面偏移距离。
|
|
615
|
+
* - 可通过 engine.engineStatus.clippingFaceOffset 覆盖
|
|
616
|
+
* - 默认按模型尺度自适应并带最小值
|
|
617
|
+
*/
|
|
618
|
+
private getFaceOffsetDistance;
|
|
619
|
+
/**
|
|
620
|
+
* 获取补面偏移方向。
|
|
621
|
+
* - 可通过 engine.engineStatus.clippingFaceOffsetSign 指定(1/-1)
|
|
622
|
+
* - 默认 -1,即沿 -normal 方向偏移
|
|
623
|
+
*/
|
|
624
|
+
private getFaceOffsetSign;
|
|
625
|
+
/**
|
|
626
|
+
* 使用 octree + plane 相交快速收集候选 mesh。
|
|
627
|
+
*
|
|
628
|
+
* 过程:
|
|
629
|
+
* - 遍历 engineStatus.models -> lod.octreeBox
|
|
630
|
+
* - 只取与 plane 相交的 octree 节点元素 id
|
|
631
|
+
* - 跳过隐藏/半透明/实例化节点
|
|
632
|
+
* - 收集节点 infos 里的 mesh,并按 uuid 去重
|
|
633
|
+
*/
|
|
634
|
+
private collectCandidateMeshesFromOctree;
|
|
635
|
+
/**
|
|
636
|
+
* 收集当前 model url 下需要忽略的元素 id(隐藏 + 半透明)。
|
|
637
|
+
*/
|
|
638
|
+
private getIgnoredIds;
|
|
639
|
+
/**
|
|
640
|
+
* 深度遍历 octree,返回与 plane 相交节点中的 element id 集合。
|
|
641
|
+
*/
|
|
642
|
+
private collectIntersectElementIds;
|
|
643
|
+
/**
|
|
644
|
+
* 将引擎 octree 节点坐标转换为 three.js 的 Box3(含单位/坐标系转换)。
|
|
645
|
+
*/
|
|
646
|
+
private octreeNodeToBox3;
|
|
647
|
+
/**
|
|
648
|
+
* 候选 mesh 二次筛选:
|
|
649
|
+
* - 必须存在有效 position
|
|
650
|
+
* - 三角面数不能超过阈值
|
|
651
|
+
* - world bbox 必须与 plane 相交
|
|
652
|
+
*/
|
|
653
|
+
private filterMeshesByBoxAndComplexity;
|
|
654
|
+
/**
|
|
655
|
+
* 构造“薄片平面体” Brush:
|
|
656
|
+
* - 几何为 BoxGeometry(size, size, thickness)
|
|
657
|
+
* - 旋转到 plane.normal
|
|
658
|
+
* - 平移到 plane 上
|
|
659
|
+
*/
|
|
660
|
+
private createPlaneBrush;
|
|
661
|
+
/**
|
|
662
|
+
* 将场景 mesh 转为世界坐标 Brush。
|
|
663
|
+
*/
|
|
664
|
+
private createWorldBrushFromMesh;
|
|
665
|
+
/**
|
|
666
|
+
* 统一 CSG 输入属性,避免属性不一致报错(例如 uv 缺失)。
|
|
667
|
+
* 目标属性固定为:position / normal / uv
|
|
668
|
+
*/
|
|
669
|
+
private toCsgReadyGeometry;
|
|
670
|
+
/**
|
|
671
|
+
* 从 CSG 相交结果中提取补面三角形。
|
|
672
|
+
*
|
|
673
|
+
* 判定条件:
|
|
674
|
+
* - 三角形法线与 plane.normal 足够平行(|dot| >= 0.9)
|
|
675
|
+
* - 三角形顶点到平面的距离 spread 足够小
|
|
676
|
+
* - 三角形平均距离落在薄片附近,且位于有效侧
|
|
677
|
+
*
|
|
678
|
+
* 提取后将三角形顶点投影回 plane,保证补面共面。
|
|
679
|
+
*/
|
|
680
|
+
private extractPlaneCapGeometry;
|
|
681
|
+
private applyPlanarUv;
|
|
682
|
+
private getPlaneBasis;
|
|
683
|
+
}
|
|
684
|
+
|
|
546
685
|
declare class ComposerModule {
|
|
547
686
|
private engine;
|
|
548
687
|
composer: any;
|
|
@@ -1431,11 +1570,11 @@ declare class EngineModelModule {
|
|
|
1431
1570
|
/**
|
|
1432
1571
|
* 设置输出 Pass 开关
|
|
1433
1572
|
*/
|
|
1434
|
-
|
|
1573
|
+
setOutputPass(enabled: boolean): void;
|
|
1435
1574
|
/**
|
|
1436
1575
|
* 设置 FXAA Pass 开关
|
|
1437
1576
|
*/
|
|
1438
|
-
|
|
1577
|
+
setFXAA(enabled: boolean): void;
|
|
1439
1578
|
/**
|
|
1440
1579
|
* 设置性能模式
|
|
1441
1580
|
*/
|
|
@@ -2588,8 +2727,15 @@ declare class MiniMap {
|
|
|
2588
2727
|
private miniMapContainer;
|
|
2589
2728
|
private overlayCanvas;
|
|
2590
2729
|
private overlayCtx;
|
|
2730
|
+
private levelToolbar;
|
|
2731
|
+
private modelSelect;
|
|
2732
|
+
private levelSelect;
|
|
2733
|
+
private levelModels;
|
|
2734
|
+
private levelDataSignature;
|
|
2735
|
+
private selectedModelUrl;
|
|
2591
2736
|
private isVisible;
|
|
2592
2737
|
private readonly mapSize;
|
|
2738
|
+
private readonly levelJumpEyeOffset;
|
|
2593
2739
|
private currentHalfSize;
|
|
2594
2740
|
private readonly minHalfSize;
|
|
2595
2741
|
private readonly maxHalfSize;
|
|
@@ -2600,33 +2746,33 @@ declare class MiniMap {
|
|
|
2600
2746
|
private dragMode;
|
|
2601
2747
|
private lastMouseX;
|
|
2602
2748
|
private lastMouseY;
|
|
2749
|
+
private readonly loadingCompletedEventName;
|
|
2750
|
+
private readonly onLoadingCompleted;
|
|
2603
2751
|
constructor(engine: any);
|
|
2604
2752
|
getstate(): boolean;
|
|
2605
2753
|
private init;
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2754
|
+
private initLevelSelectors;
|
|
2755
|
+
private createSelectElement;
|
|
2756
|
+
private bindControlEventBlock;
|
|
2757
|
+
private readonly onModelChange;
|
|
2758
|
+
private readonly onLevelChange;
|
|
2759
|
+
private refreshLevelSelectors;
|
|
2760
|
+
private pickSelectedModelUrl;
|
|
2761
|
+
private fillModelSelect;
|
|
2762
|
+
private refreshLevelOptionsByModel;
|
|
2763
|
+
private jumpToElevation;
|
|
2764
|
+
private collectModelLevels;
|
|
2765
|
+
private normalizeLevelData;
|
|
2766
|
+
private getModelDisplayName;
|
|
2767
|
+
private buildLevelSignature;
|
|
2610
2768
|
private worldToPixel;
|
|
2611
|
-
/** 小地图像素坐标 → 世界坐标 XZ */
|
|
2612
2769
|
private pixelToWorld;
|
|
2613
2770
|
private setupEvents;
|
|
2614
|
-
/** 滚轮缩放小地图视野 */
|
|
2615
2771
|
private readonly onWheel;
|
|
2616
|
-
/**
|
|
2617
|
-
* 点击指示器(中心 25px 范围)→ 进入旋转拖拽模式
|
|
2618
|
-
* 点击其他位置 → 计算世界坐标,直接将相机传送过去
|
|
2619
|
-
*/
|
|
2620
2772
|
private readonly onMouseDown;
|
|
2621
2773
|
private readonly onMouseMove;
|
|
2622
2774
|
private readonly onMouseUp;
|
|
2623
|
-
/**
|
|
2624
|
-
* 传送:点击小地图空白区域 → 计算世界坐标,将相机和 target 平移过去
|
|
2625
|
-
*/
|
|
2626
2775
|
private handleTeleport;
|
|
2627
|
-
/**
|
|
2628
|
-
* 旋转:拖动指示器尖端 → 绕 controls.target 旋转主相机水平轨道角
|
|
2629
|
-
*/
|
|
2630
2776
|
private handleRotate;
|
|
2631
2777
|
private drawOverlay;
|
|
2632
2778
|
show(): void;
|
|
@@ -3653,46 +3799,86 @@ declare interface SearchResult {
|
|
|
3653
3799
|
description?: string;
|
|
3654
3800
|
}
|
|
3655
3801
|
|
|
3802
|
+
/** 引擎设置管理器,负责渲染、显示和环境参数的统一管理 */
|
|
3656
3803
|
declare class Setting {
|
|
3804
|
+
/** 引擎实例引用 */
|
|
3657
3805
|
private engine;
|
|
3806
|
+
/** 当前生效的设置项 */
|
|
3658
3807
|
private settings;
|
|
3808
|
+
/** 环境设置的应用版本号,用于防止异步操作的竞态条件 */
|
|
3659
3809
|
private environmentApplyVersion;
|
|
3660
3810
|
constructor(engine: any);
|
|
3811
|
+
/** 初始化(当前为空实现) */
|
|
3661
3812
|
init(): void;
|
|
3813
|
+
/** 获取当前设置的深拷贝 */
|
|
3662
3814
|
getSettings(): EngineSettings;
|
|
3815
|
+
/** 获取地面、HDR、天空的预设列表 */
|
|
3663
3816
|
getPresetLists(): {
|
|
3664
3817
|
ground: SettingPresetItem[];
|
|
3665
3818
|
hdr: SettingPresetItem[];
|
|
3666
3819
|
sky: SettingPresetItem[];
|
|
3667
3820
|
};
|
|
3821
|
+
/** 批量更新设置(支持部分更新) */
|
|
3668
3822
|
setSettings(data: Partial<EngineSettings>): Promise<void>;
|
|
3823
|
+
/** 重置所有设置为默认值 */
|
|
3669
3824
|
resetToDefault(): Promise<void>;
|
|
3825
|
+
/** 设置渲染模式(simple: 简易, balance: 均衡, advanced: 高级) */
|
|
3670
3826
|
setRenderMode(mode: RenderMode): void;
|
|
3827
|
+
/** 设置对比度(0~100) */
|
|
3671
3828
|
setContrast(value: number): void;
|
|
3829
|
+
/** 设置饱和度(0~100) */
|
|
3672
3830
|
setSaturation(value: number): void;
|
|
3831
|
+
/** 设置阴影强度(0~100) */
|
|
3673
3832
|
setShadowIntensity(value: number): void;
|
|
3833
|
+
/** 设置光照强度(0~100),调整环境光亮度 */
|
|
3674
3834
|
setLightIntensity(value: number): void;
|
|
3835
|
+
/** 设置 GTAO(屏幕空间环境光遮蔽)强度(0~100) */
|
|
3675
3836
|
setGTAOIntensity(value: number): void;
|
|
3837
|
+
/** 设置是否显示模型边缘线 */
|
|
3676
3838
|
setShowEdge(show: boolean): void;
|
|
3839
|
+
/** 设置边缘线透明度(0~100) */
|
|
3677
3840
|
setEdgeOpacity(value: number): void;
|
|
3841
|
+
/** 设置是否显示网格 */
|
|
3678
3842
|
setShowGrid(show: boolean): void;
|
|
3843
|
+
/** 设置是否显示楼层 */
|
|
3679
3844
|
setShowLevel(show: boolean): void;
|
|
3845
|
+
/** 设置是否显示地面 */
|
|
3680
3846
|
setShowGround(show: boolean): void;
|
|
3847
|
+
/** 设置当前使用的地面 ID */
|
|
3681
3848
|
setGroundId(id: string): void;
|
|
3849
|
+
/** 设置地面高度 */
|
|
3682
3850
|
setGroundHeight(height: number): void;
|
|
3851
|
+
/** 设置环境类型(none: 无, hdr: HDR贴图, sky: 天空) */
|
|
3683
3852
|
setEnvironmentType(type: EnvironmentType): Promise<void>;
|
|
3853
|
+
/** 设置 HDR 贴图 ID,当前环境为 hdr 时立即生效 */
|
|
3684
3854
|
setHdrId(id: string): Promise<void>;
|
|
3855
|
+
/** 设置 HDR 强度(0~100),仅在 hdr 模式下生效 */
|
|
3685
3856
|
setHdrIntensity(value: number): void;
|
|
3857
|
+
/** 设置天空预设方案,当前环境为 sky 时立即生效 */
|
|
3686
3858
|
setSkyPreset(preset: SkyPresetName): void;
|
|
3859
|
+
/** 设置天空自定义参数,当前环境为 sky 时立即生效 */
|
|
3687
3860
|
setSkyParams(params: SkyParams): void;
|
|
3861
|
+
/** 设置天空亮度(0~100),仅在 sky 模式下生效 */
|
|
3688
3862
|
setSkyIntensity(value: number): void;
|
|
3863
|
+
/** 直接设置场景中环境光的强度 */
|
|
3689
3864
|
setAmbientLightIntensity(intensity: number): void;
|
|
3865
|
+
/** 一次性应用所有渲染设置 */
|
|
3690
3866
|
private _applyRenderSettings;
|
|
3867
|
+
/** 一次性应用所有显示设置 */
|
|
3691
3868
|
private _applyDisplaySettings;
|
|
3869
|
+
/**
|
|
3870
|
+
* 应用环境设置。
|
|
3871
|
+
* 先关闭当前 HDR 和天空,再根据类型重新启用。
|
|
3872
|
+
* 使用版本号机制防止多次异步调用之间的竞态条件。
|
|
3873
|
+
*/
|
|
3692
3874
|
private _applyEnvironmentSettings;
|
|
3875
|
+
/** 在场景中查找平行光并执行回调操作 */
|
|
3693
3876
|
private _updateDirectionalLight;
|
|
3877
|
+
/** 合并环境设置,处理 skyPreset 与 skyParams 的联动关系 */
|
|
3694
3878
|
private _mergeEnvironmentSettings;
|
|
3879
|
+
/** 将原始数据转换为标准预设项 */
|
|
3695
3880
|
private _toPresetItem;
|
|
3881
|
+
/** 深拷贝工具方法 */
|
|
3696
3882
|
private _clone;
|
|
3697
3883
|
}
|
|
3698
3884
|
|