fl-web-component 2.1.18 → 2.1.20
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/fl-web-component.common.js +70 -62
- package/dist/fl-web-component.common.js.map +1 -1
- package/dist/fl-web-component.css +1 -1
- package/dist/fl-web-component.css.map +1 -0
- package/package.json +1 -1
- package/packages/components/com-graphics/index.vue +19 -13
- package/packages/utils/StreamLoader.js +62 -62
- package/src/utils/threejs/measure-area.js +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.fl-model-containor[data-v-5d8eba59]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-5d8eba59] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-5d8eba59] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-5d8eba59] .circle-tag{width:10px;height:10px;margin-top:5px;border-radius:50%;background-color:#ff5000}[data-v-5d8eba59] .measure-label-font{word-break:break-all}[data-v-5d8eba59] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-5d8eba59]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-5d8eba59]{opacity:1;visibility:visible}.loading-content[data-v-5d8eba59]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-5d8eba59]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-5d8eba59 1s linear infinite;animation:spin-5d8eba59 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-5d8eba59{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-5d8eba59{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-5d8eba59]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-5d8eba59]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-5d8eba59]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-5d8eba59]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}.lil-gui button{-webkit-tap-highlight-color:transparent;background:none;border:none;color:#000;cursor:pointer;font-family:var(--font-family);font-size:var(--font-size);height:var(--widget-height);line-height:calc(var(--widget-height) - 4px);outline:none;text-align:right;text-transform:none;width:70%}@media (hover:hover){.lil-gui button:hover{background:none;border-color:none}}#konva-container[data-v-e9d7a15c]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-3fceaac3]{font-weight:bolder}.text[data-v-3fceaac3]{margin-top:20px}.description[data-v-3fceaac3]{margin-bottom:20px}.line[data-v-3fceaac3]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-3fceaac3]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.center .cen span[data-v-3fceaac3],.center .top span[data-v-3fceaac3]{color:#53a8ff;display:inline-block;width:40px;height:40px;text-align:center;line-height:30px;border:1px solid #53a8ff;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-3fceaac3]{margin:10px}.button[data-v-3fceaac3]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-3fceaac3]{font-family:iconfont!important;font-size:50px;font-style:normal;color:#53a8ff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-3fceaac3]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
|
|
1
|
+
@charset "UTF-8";.fl-model-containor[data-v-2dd6d693]{width:100%;height:100%;position:relative;cursor:pointer}[data-v-2dd6d693] .tips-label{width:60px;color:#000;font:12px Helvetica;margin-top:-3em;padding:5px;text-align:center;vertical-align:middle;background-color:khaki}[data-v-2dd6d693] .measure-label{max-width:100px;margin-top:-1em;border:10px;border-radius:5px;padding:3px 10px;cursor:pointer;color:#009bea;background-color:#f4f4f4;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.25);box-shadow:0 1px 3px 1px rgba(0,0,0,.25)}[data-v-2dd6d693] .circle-tag{width:10px;height:10px;margin-top:0;border-radius:50%;background-color:#ff5000}[data-v-2dd6d693] .measure-label-font{word-break:break-all}[data-v-2dd6d693] .mark-label-img{padding-top:5px;width:20px;height:20px}.loading-overlay[data-v-2dd6d693]{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;-webkit-transition:opacity .3s ease,visibility .3s ease;transition:opacity .3s ease,visibility .3s ease}.loading-overlay--visible[data-v-2dd6d693]{opacity:1;visibility:visible}.loading-content[data-v-2dd6d693]{background:#fff;border-radius:12px;padding:30px;text-align:center;-webkit-box-shadow:0 8px 32px rgba(0,0,0,.3);box-shadow:0 8px 32px rgba(0,0,0,.3);min-width:300px;max-width:400px}.loading-spinner[data-v-2dd6d693]{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #409eff;border-radius:50%;-webkit-animation:spin-2dd6d693 1s linear infinite;animation:spin-2dd6d693 1s linear infinite;margin:0 auto 20px}@-webkit-keyframes spin-2dd6d693{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin-2dd6d693{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-text[data-v-2dd6d693]{font-size:16px;font-weight:500;color:#333;margin-bottom:20px}.loading-this.progress-bar[data-v-2dd6d693]{width:100%;height:8px;background-color:#f0f0f0;border-radius:4px;overflow:hidden;margin-bottom:15px}.loading-this.progress-fill[data-v-2dd6d693]{height:100%;background:-webkit-gradient(linear,left top,right top,from(#409eff),to(#67c23a));background:linear-gradient(90deg,#409eff,#67c23a);border-radius:4px;-webkit-transition:width .3s ease;transition:width .3s ease}.loading-details[data-v-2dd6d693]{font-size:12px;color:#666;line-height:1.5}.lil-this.gui{background:hsla(0,0%,100%,.95)!important;border:1px solid #e0e0e0!important;border-radius:8px!important;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15)!important;box-shadow:0 4px 12px rgba(0,0,0,.15)!important;backdrop-filter:blur(10px)!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important}.lil-this.gui .title{background:linear-gradient(135deg,#f8f9fa,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important;font-weight:600!important;padding:0 12px!important;border-radius:8px 8px 0 0!important}.lil-this.gui .controller{border-bottom:1px solid #f1f3f4!important;background:transparent!important}.lil-this.gui .controller:last-child{border-bottom:none!important}.lil-this.gui .controller .name{color:#495057!important;font-weight:500!important;font-size:12px!important}.lil-this.gui .controller .widget{background:#f8f9fa!important;border:1px solid #ced4da!important;border-radius:4px!important;color:#495057!important}.lil-this.gui .controller .widget:focus,.lil-this.gui .controller .widget:hover{border-color:#80bdff!important;-webkit-box-shadow:0 0 0 2px rgba(0,123,255,.25)!important;box-shadow:0 0 0 2px rgba(0,123,255,.25)!important}.lil-this.gui .controller .widget:focus{outline:none!important}.lil-this.gui .controller input[type=range]{background:#e9ecef!important;height:4px!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;border-radius:2px!important}.lil-this.gui .controller.number .fill{border-right:solid #008de9}.lil-this.gui .controller input[type=range]::-webkit-slider-thumb{background:#007bff!important;border:2px solid #fff!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;-webkit-appearance:none!important;appearance:none!important;cursor:pointer!important}.lil-this.gui .controller input[type=range]::-moz-range-thumb{background:#007bff!important;border:2px solid #fff!important;box-shadow:0 2px 4px rgba(0,0,0,.2)!important;width:16px!important;height:16px!important;border-radius:50%!important;cursor:pointer!important}.lil-this.gui .controller .option{background:#fff!important;color:#495057!important;border-bottom:1px solid #f1f3f4!important}.lil-this.gui .controller .option:hover{background:#f8f9fa!important}.lil-this.gui .controller .option:last-child{border-bottom:none!important}.lil-this.gui input:active{background:#e6eff4}.lil-this.gui .controller button{background:linear-gradient(135deg,#007bff,#0056b3)!important;color:#fff!important;border:none!important;border-radius:4px!important;font-weight:500!important;-webkit-transition:all .2s ease!important;transition:all .2s ease!important}.lil-this.gui .controller button:hover{background:linear-gradient(135deg,#0056b3,#004085)!important;-webkit-transform:translateY(-1px)!important;transform:translateY(-1px)!important;-webkit-box-shadow:0 4px 8px rgba(0,123,255,.3)!important;box-shadow:0 4px 8px rgba(0,123,255,.3)!important}.lil-this.gui .controller .color{border:2px solid #fff!important;border-radius:4px!important;-webkit-box-shadow:0 2px 4px rgba(0,0,0,.1)!important;box-shadow:0 2px 4px rgba(0,0,0,.1)!important}.lil-this.gui .controller.number .slider,.lil-this.gui .controller.number .slider:hover{background-color:#e6eff4}.lil-this.gui input,.lil-this.gui input:hover,.lil-this.gui input[type=number]:focus,.lil-this.gui input[type=text]:focus{background:#e6eff4}.lil-this.gui .controller>.name{min-width:25px}.lil-this.gui .controller.number input{color:#2e3136}.lil-this.gui .controller.number .slider:active{background-color:#e6eff4}.lil-this.gui .folder>.title{background:linear-gradient(135deg,#f1f3f4,#e9ecef)!important;color:#495057!important;border-bottom:1px solid #dee2e6!important}.lil-this.gui .folder>.title:before{color:#6c757d!important}.lil-this.gui .folder.closed>.children{display:none!important}.lil-gui button{-webkit-tap-highlight-color:transparent;background:none;border:none;color:#000;cursor:pointer;font-family:var(--font-family);font-size:var(--font-size);height:var(--widget-height);line-height:calc(var(--widget-height) - 4px);outline:none;text-align:right;text-transform:none;width:70%}@media (hover:hover){.lil-gui button:hover{background:none;border-color:none}}#konva-container[data-v-e9d7a15c]{z-index:3;width:100%;height:100%;cursor:pointer;overflow:hidden}span[data-v-3fceaac3]{font-weight:bolder}.text[data-v-3fceaac3]{margin-top:20px}.description[data-v-3fceaac3]{margin-bottom:20px}.line[data-v-3fceaac3]{border-bottom:1px solid #dcdfe6;margin:20px 0}.center[data-v-3fceaac3]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.center .cen span[data-v-3fceaac3],.center .top span[data-v-3fceaac3]{color:#53a8ff;display:inline-block;width:40px;height:40px;text-align:center;line-height:30px;border:1px solid #53a8ff;padding:5px;margin-bottom:10px;background-color:#e9f3ff}.center .cen span[data-v-3fceaac3]{margin:10px}.button[data-v-3fceaac3]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:end;margin-top:20px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216) format("woff2"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216) format("woff"),url(//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216) format("truetype")}.iconfont[data-v-3fceaac3]{font-family:iconfont!important;font-size:50px;font-style:normal;color:#53a8ff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-shubiao[data-v-3fceaac3]:before{content:""}.main_body[data-v-4b17bce0]{position:relative;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.classification_title[data-v-4b17bce0]{margin:0 0 10px 0;color:#fff;font-size:14px;cursor:default}.toolbar[data-v-4b17bce0]{z-index:10;position:absolute;width:520px;padding:8px 16px;border-radius:6px;-webkit-box-shadow:0 2px 10px 0 rgba(6,29,44,.25);box-shadow:0 2px 10px 0 rgba(6,29,44,.25);background-color:#fff;top:10px;left:50%;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translateX(-50%);transform:translateX(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.icon_toolbar[data-v-4b17bce0],.text_toolbar[data-v-4b17bce0]{float:left;width:32px;height:32px;padding:0!important;background-repeat:no-repeat;background-size:24px;background-position:50%}.icon_active[data-v-4b17bce0],.icon_toolbar[data-v-4b17bce0]:hover,.text_toolbar[data-v-4b17bce0]:hover{background-color:#eee}[data-v-4b17bce0].icon_color .el-color-picker__trigger{height:24px;margin-top:4px;width:24px!important}[data-v-4b17bce0].el-color-picker--medium,[data-v-4b17bce0].el-color-picker--medium .el-color-picker__trigger{width:24px!important;height:24px!important}.canvas_container[data-v-4b17bce0]{position:relative;width:100%;height:100%;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.canvas_container canvas[data-v-4b17bce0]{position:absolute;left:0}.canvas_container #ctx_front[data-v-4b17bce0]{z-index:5;background-color:transparent}.canvas_container #ctx_back[data-v-4b17bce0]{z-index:3}.canvas_container #ctx_base[data-v-4b17bce0]{z-index:1}#text[data-v-4b17bce0]{position:absolute;z-index:-1;resize:none;outline:none;border:1px dashed #9c9c9c;overflow:hidden;background:transparent;line-height:30px;display:none}#text[data-v-4b17bce0]:hover{border:1px dashed #53a8ff}#svg-component[data-v-2572c0e2],#svg-tigger[data-v-2572c0e2]{cursor:pointer;height:100%;width:100%;position:relative}#toolbar-show[data-v-2572c0e2]{z-index:20;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;background:#fff}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack://fl-web-component/packages/components/com-graphics/index.vue?vue&type=style&index=0&id=f8ae62c2&lang=scss&scoped=true","webpack://fl-web-component/packages/components/com-graphics/index.vue?vue&type=style&index=1&id=f8ae62c2&lang=css","webpack://fl-web-component/packages/components/com-flcanvas/index.vue?vue&type=style&index=0&id=9a4a041c&lang=scss&scoped=true","webpack://fl-web-component/packages/components/com-graphics/per-control.vue?vue&type=style&index=0&id=5dd9113a&lang=scss&scoped=true","webpack://fl-web-component/packages/components/com-graphics/component/ann-tool.vue?vue&type=style&index=0&id=5006df4e&scoped=true&lang=scss","webpack://fl-web-component/packages/components/com-graphics/pid.vue?vue&type=style&index=0&id=3951dc18&lang=scss&scoped=true"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA,C;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C","file":"fl-web-component.css","sourcesContent":["@charset \"UTF-8\";\n.fl-model-containor[data-v-f8ae62c2] {\n width: 100%;\n height: 100%;\n position: relative;\n cursor: pointer;\n}\n[data-v-f8ae62c2] .tips-label {\n width: 60px;\n color: #000;\n font: 12px Helvetica;\n margin-top: -3em;\n padding: 5px;\n text-align: center;\n vertical-align: middle;\n background-color: khaki;\n}\n[data-v-f8ae62c2] .measure-label {\n max-width: 100px;\n margin-top: -1em;\n border: 10px;\n border-radius: 5px;\n padding: 3px 10px;\n cursor: pointer;\n color: #009bea;\n background-color: #f4f4f4;\n -webkit-box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.25);\n box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.25);\n}\n[data-v-f8ae62c2] .circle-tag {\n width: 10px;\n height: 10px;\n margin-top: 0;\n border-radius: 50%;\n background-color: #ff5000;\n}\n[data-v-f8ae62c2] .measure-label-font {\n word-break: break-all;\n}\n[data-v-f8ae62c2] .mark-label-img {\n padding-top: 5px;\n width: 20px;\n height: 20px;\n}\n\n/* 加载指示器样式 */\n.loading-overlay[data-v-f8ae62c2] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.7);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n z-index: 1000;\n opacity: 0;\n visibility: hidden;\n -webkit-transition: opacity 0.3s ease, visibility 0.3s ease;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n}\n.loading-overlay--visible[data-v-f8ae62c2] {\n opacity: 1;\n visibility: visible;\n}\n.loading-content[data-v-f8ae62c2] {\n background: white;\n border-radius: 12px;\n padding: 30px;\n text-align: center;\n -webkit-box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n min-width: 300px;\n max-width: 400px;\n}\n.loading-spinner[data-v-f8ae62c2] {\n width: 40px;\n height: 40px;\n border: 4px solid #f3f3f3;\n border-top: 4px solid #409eff;\n border-radius: 50%;\n -webkit-animation: spin-f8ae62c2 1s linear infinite;\n animation: spin-f8ae62c2 1s linear infinite;\n margin: 0 auto 20px;\n}\n@-webkit-keyframes spin-f8ae62c2 {\n0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n}\n100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n@keyframes spin-f8ae62c2 {\n0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n}\n100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n}\n.loading-text[data-v-f8ae62c2] {\n font-size: 16px;\n font-weight: 500;\n color: #333;\n margin-bottom: 20px;\n}\n.loading-this.progress-bar[data-v-f8ae62c2] {\n width: 100%;\n height: 8px;\n background-color: #f0f0f0;\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 15px;\n}\n.loading-this.progress-fill[data-v-f8ae62c2] {\n height: 100%;\n background: -webkit-gradient(linear, left top, right top, from(#409eff), to(#67c23a));\n background: linear-gradient(90deg, #409eff 0%, #67c23a 100%);\n border-radius: 4px;\n -webkit-transition: width 0.3s ease;\n transition: width 0.3s ease;\n}\n.loading-details[data-v-f8ae62c2] {\n font-size: 12px;\n color: #666;\n line-height: 1.5;\n}","\r\n/* 自定义lil-gui样式 - 浅色主题 */\n.lil-this.gui {\r\n background: rgba(255, 255, 255, 0.95) !important;\r\n border: 1px solid #e0e0e0 !important;\r\n border-radius: 8px !important;\r\n -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;\r\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;\r\n backdrop-filter: blur(10px) !important;\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n}\n.lil-this.gui .title {\r\n background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) !important;\r\n color: #495057 !important;\r\n border-bottom: 1px solid #dee2e6 !important;\r\n font-weight: 600 !important;\r\n padding: 0px 12px !important;\r\n border-radius: 8px 8px 0 0 !important;\n}\n.lil-this.gui .controller {\r\n border-bottom: 1px solid #f1f3f4 !important;\r\n background: transparent !important;\n}\n.lil-this.gui .controller:last-child {\r\n border-bottom: none !important;\n}\n.lil-this.gui .controller .name {\r\n color: #495057 !important;\r\n font-weight: 500 !important;\r\n font-size: 12px !important;\n}\n.lil-this.gui .controller .widget {\r\n background: #f8f9fa !important;\r\n border: 1px solid #ced4da !important;\r\n border-radius: 4px !important;\r\n color: #495057 !important;\n}\n.lil-this.gui .controller .widget:hover {\r\n border-color: #80bdff !important;\r\n -webkit-box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25) !important;\r\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25) !important;\n}\n.lil-this.gui .controller .widget:focus {\r\n border-color: #80bdff !important;\r\n -webkit-box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25) !important;\r\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25) !important;\r\n outline: none !important;\n}\n.lil-this.gui .controller input[type='range'] {\r\n background: #e9ecef !important;\r\n height: 4px !important;\r\n -webkit-appearance: none !important;\r\n -moz-appearance: none !important;\r\n appearance: none !important;\r\n border-radius: 2px !important;\n}\n.lil-this.gui .controller.number .fill {\r\n border-right: solid #008de9;\n}\n.lil-this.gui .controller input[type='range']::-webkit-slider-thumb {\r\n background: #007bff !important;\r\n border: 2px solid #ffffff !important;\r\n -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2) !important;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2) !important;\r\n width: 16px !important;\r\n height: 16px !important;\r\n border-radius: 50% !important;\r\n -webkit-appearance: none !important;\r\n appearance: none !important;\r\n cursor: pointer !important;\n}\n.lil-this.gui .controller input[type='range']::-moz-range-thumb {\r\n background: #007bff !important;\r\n border: 2px solid #ffffff !important;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2) !important;\r\n width: 16px !important;\r\n height: 16px !important;\r\n border-radius: 50% !important;\r\n cursor: pointer !important;\n}\n.lil-this.gui .controller .option {\r\n background: #ffffff !important;\r\n color: #495057 !important;\r\n border-bottom: 1px solid #f1f3f4 !important;\n}\n.lil-this.gui .controller .option:hover {\r\n background: #f8f9fa !important;\n}\n.lil-this.gui .controller .option:last-child {\r\n border-bottom: none !important;\n}\n.lil-this.gui input:active {\r\n background: #e6eff4;\n}\n.lil-this.gui .controller button {\r\n background: linear-gradient(135deg, #007bff 0%, #0056b3 100%) !important;\r\n color: #ffffff !important;\r\n border: none !important;\r\n border-radius: 4px !important;\r\n font-weight: 500 !important;\r\n -webkit-transition: all 0.2s ease !important;\r\n transition: all 0.2s ease !important;\n}\n.lil-this.gui .controller button:hover {\r\n background: linear-gradient(135deg, #0056b3 0%, #004085 100%) !important;\r\n -webkit-transform: translateY(-1px) !important;\r\n transform: translateY(-1px) !important;\r\n -webkit-box-shadow: 0 4px 8px rgba(0, 123, 255, 0.3) !important;\r\n box-shadow: 0 4px 8px rgba(0, 123, 255, 0.3) !important;\n}\n.lil-this.gui .controller .color {\r\n border: 2px solid #ffffff !important;\r\n border-radius: 4px !important;\r\n -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;\n}\n.lil-this.gui .controller.number .slider {\r\n background-color: #e6eff4;\n}\n.lil-this.gui .controller.number .slider:hover {\r\n background-color: #e6eff4;\n}\n.lil-this.gui input:hover {\r\n background: #e6eff4;\n}\n.lil-this.gui input[type='number']:focus,\r\n.lil-this.gui input[type='text']:focus,\r\n.lil-this.gui input {\r\n background: #e6eff4;\n}\n.lil-this.gui .controller > .name {\r\n min-width: 25px;\n}\n.lil-this.gui .controller.number input {\r\n color: #2e3136;\n}\n.lil-this.gui .controller.number .slider:active {\r\n background-color: #e6eff4;\n}\n.lil-this.gui .folder > .title {\r\n background: linear-gradient(135deg, #f1f3f4 0%, #e9ecef 100%) !important;\r\n color: #495057 !important;\r\n border-bottom: 1px solid #dee2e6 !important;\n}\n.lil-this.gui .folder > .title:before {\r\n color: #6c757d !important;\n}\n.lil-this.gui .folder.closed > .children {\r\n display: none !important;\n}\n.lil-gui button {\r\n -webkit-tap-highlight-color: transparent;\r\n background: none;\r\n border: none;\r\n color: #000000;\r\n cursor: pointer;\r\n font-family: var(--font-family);\r\n font-size: var(--font-size);\r\n height: var(--widget-height);\r\n line-height: calc(var(--widget-height) - 4px);\r\n outline: none;\r\n text-align: right;\r\n text-transform: none;\r\n width: 70%;\n}\n@media (hover: hover) {\n.lil-gui button:hover {\r\n background: none;\r\n border-color: none;\n}\n}\r\n","#konva-container[data-v-9a4a041c] {\n z-index: 3;\n width: 100%;\n height: 100%;\n cursor: pointer;\n overflow: hidden;\n}","@charset \"UTF-8\";\nspan[data-v-5dd9113a] {\n font-weight: bolder;\n}\n.text[data-v-5dd9113a] {\n margin-top: 20px;\n}\n.description[data-v-5dd9113a] {\n margin-bottom: 20px;\n}\n.line[data-v-5dd9113a] {\n border-bottom: 1px solid #dcdfe6;\n margin: 20px 0;\n}\n.center[data-v-5dd9113a] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.center .top span[data-v-5dd9113a],\n.center .cen span[data-v-5dd9113a] {\n color: #53a8ff;\n display: inline-block;\n width: 40px;\n height: 40px;\n text-align: center;\n line-height: 30px;\n border: 1px solid #53a8ff;\n padding: 5px;\n margin-bottom: 10px;\n background-color: #e9f3ff;\n}\n.center .cen span[data-v-5dd9113a] {\n margin: 10px;\n}\n.button[data-v-5dd9113a] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: end;\n -ms-flex-pack: end;\n justify-content: end;\n margin-top: 20px;\n}\n@font-face {\n font-family: \"iconfont\";\n /* Project id 3226805 */\n src: url(\"//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216\") format(\"woff2\"), url(\"//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216\") format(\"woff\"), url(\"//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216\") format(\"truetype\");\n}\n.iconfont[data-v-5dd9113a] {\n font-family: \"iconfont\" !important;\n font-size: 50px;\n font-style: normal;\n color: #53a8ff;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.icon-shubiao[data-v-5dd9113a]:before {\n content: \"\";\n}",".main_body[data-v-5006df4e] {\n position: relative;\n width: 100%;\n height: 100%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n overflow: hidden;\n}\n.classification_title[data-v-5006df4e] {\n margin: 0 0 10px 0;\n color: #fff;\n font-size: 14px;\n cursor: default;\n}\n.toolbar[data-v-5006df4e] {\n z-index: 10;\n position: absolute;\n width: 520px;\n padding: 8px 16px;\n border-radius: 6px;\n -webkit-box-shadow: 0px 2px 10px 0px rgba(6, 29, 44, 0.25);\n box-shadow: 0px 2px 10px 0px rgba(6, 29, 44, 0.25);\n background-color: #fff;\n top: 10px;\n left: 50%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: distribute;\n justify-content: space-around;\n}\n.icon_toolbar[data-v-5006df4e],\n.text_toolbar[data-v-5006df4e] {\n float: left;\n width: 32px;\n height: 32px;\n padding: 0px !important;\n background-repeat: no-repeat;\n background-size: 24px;\n background-position: center;\n}\n.icon_toolbar[data-v-5006df4e]:hover,\n.text_toolbar[data-v-5006df4e]:hover,\n.icon_active[data-v-5006df4e] {\n background-color: #eeeeee;\n}\n[data-v-5006df4e].icon_color .el-color-picker__trigger {\n height: 24px;\n margin-top: 4px;\n width: 24px !important;\n}\n[data-v-5006df4e].el-color-picker--medium,[data-v-5006df4e].el-color-picker--medium .el-color-picker__trigger {\n width: 24px !important;\n height: 24px !important;\n}\n.canvas_container[data-v-5006df4e] {\n position: relative;\n width: 100%;\n height: 100%;\n overflow: auto;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n.canvas_container canvas[data-v-5006df4e] {\n position: absolute;\n left: 0;\n}\n.canvas_container #ctx_front[data-v-5006df4e] {\n z-index: 5;\n background-color: transparent;\n}\n.canvas_container #ctx_back[data-v-5006df4e] {\n z-index: 3;\n}\n.canvas_container #ctx_base[data-v-5006df4e] {\n z-index: 1;\n}\n#text[data-v-5006df4e] {\n position: absolute;\n z-index: -1;\n resize: none;\n outline: none;\n border: 1px dashed #9c9c9c;\n overflow: hidden;\n background: transparent;\n line-height: 30px;\n display: none;\n}\n#text[data-v-5006df4e]:hover {\n border: 1px dashed #53a8ff;\n}","#svg-component[data-v-3951dc18],\n#svg-tigger[data-v-3951dc18] {\n cursor: pointer;\n height: 100%;\n width: 100%;\n position: relative;\n}\n#toolbar-show[data-v-3951dc18] {\n z-index: 20;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n overflow: hidden;\n background: #fff;\n}"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -93,7 +93,10 @@ var clippingMesh = [],
|
|
|
93
93
|
sceneBoundingBoxHelper = null, // 场景包围盒辅助线
|
|
94
94
|
boundingBoxVisible = false; // 包围盒是否可见
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
const FIRST_PERSON_GROUND_HEIGHT = 1680;
|
|
97
|
+
const FIRST_PERSON_POINTER_SPEED = 0.3;
|
|
98
|
+
|
|
99
|
+
var removeSpeed = 1000,
|
|
97
100
|
upSpeed = 200; //控制器移动速度 , //控制跳起时的速度
|
|
98
101
|
var roamConfig = {
|
|
99
102
|
loop: false,
|
|
@@ -312,7 +315,7 @@ export default {
|
|
|
312
315
|
this[item] = [];
|
|
313
316
|
});
|
|
314
317
|
['removeSpeed', 'upSpeed'].forEach(item => {
|
|
315
|
-
this[item] = 200;
|
|
318
|
+
this[item] = item === 'removeSpeed' ? 1000 : 200;
|
|
316
319
|
});
|
|
317
320
|
|
|
318
321
|
this.gui = null;
|
|
@@ -7704,7 +7707,7 @@ export default {
|
|
|
7704
7707
|
Number.isFinite(customMoveSpeed) && customMoveSpeed > 0
|
|
7705
7708
|
? customMoveSpeed
|
|
7706
7709
|
: defaultMoveSpeed;
|
|
7707
|
-
const minMoveSpeed = Math.max(
|
|
7710
|
+
const minMoveSpeed = Math.max(1000, optionMoveSpeed * 0.1);
|
|
7708
7711
|
const maxMoveSpeed = Math.max(16000, optionMoveSpeed * 2);
|
|
7709
7712
|
let nextMoveSpeed = optionMoveSpeed;
|
|
7710
7713
|
|
|
@@ -7761,7 +7764,8 @@ export default {
|
|
|
7761
7764
|
// 开启第一视角
|
|
7762
7765
|
startFirstPer(options) {
|
|
7763
7766
|
let { moveSpeed = 200, jumpSpeed = 200 } = options || {};
|
|
7764
|
-
this.removeSpeed =
|
|
7767
|
+
this.removeSpeed = 3500;
|
|
7768
|
+
// this.removeSpeed = this.getFirstPersonMoveSpeed(moveSpeed);
|
|
7765
7769
|
const jumpConfig = this.getFirstPersonJumpConfig(jumpSpeed);
|
|
7766
7770
|
this.upSpeed = jumpConfig.jumpSpeed;
|
|
7767
7771
|
this.firstPersonGravity = jumpConfig.gravity;
|
|
@@ -7787,6 +7791,7 @@ export default {
|
|
|
7787
7791
|
this.camera.rotation.z = 0;
|
|
7788
7792
|
|
|
7789
7793
|
this.pointControls = new PointerLockControls(this.camera, this.renderer.domElement);
|
|
7794
|
+
this.pointControls.pointerSpeed = FIRST_PERSON_POINTER_SPEED;
|
|
7790
7795
|
this.pointControls.lock();
|
|
7791
7796
|
if (!this._onFirstPersonChange) {
|
|
7792
7797
|
this._onFirstPersonChange = () => {
|
|
@@ -7854,20 +7859,21 @@ export default {
|
|
|
7854
7859
|
let control = this.pointControls.object;
|
|
7855
7860
|
// 获取刷新时间
|
|
7856
7861
|
let delta = this.clock.getDelta();
|
|
7857
|
-
const
|
|
7858
|
-
//
|
|
7859
|
-
this.velocity.x -= this.velocity.x *
|
|
7860
|
-
this.velocity.z -= this.velocity.z *
|
|
7862
|
+
const damping = 10.0;
|
|
7863
|
+
// 速度采用阻尼加速,保证 removeSpeed 表示最终移动速度,而不是加速度。
|
|
7864
|
+
this.velocity.x -= this.velocity.x * damping * delta;
|
|
7865
|
+
this.velocity.z -= this.velocity.z * damping * delta;
|
|
7861
7866
|
this.velocity.y -= (this.firstPersonGravity || 9.8 * 100.0) * delta; // 默认下降的速度
|
|
7862
7867
|
// 获取当前按键的方向并获取朝哪个方向移动
|
|
7863
7868
|
this.direction.z = Number(this.moveForward) - Number(this.moveBackward);
|
|
7864
7869
|
this.direction.x = Number(this.moveRight) - Number(this.moveLeft);
|
|
7865
7870
|
// 将法向量的值归一化
|
|
7866
7871
|
this.direction.normalize();
|
|
7872
|
+
const acceleration = this.removeSpeed * damping;
|
|
7867
7873
|
if (this.moveForward || this.moveBackward)
|
|
7868
|
-
this.velocity.z -= this.direction.z *
|
|
7874
|
+
this.velocity.z -= this.direction.z * acceleration * delta;
|
|
7869
7875
|
if (this.moveLeft || this.moveRight)
|
|
7870
|
-
this.velocity.x -= this.direction.x *
|
|
7876
|
+
this.velocity.x -= this.direction.x * acceleration * delta;
|
|
7871
7877
|
// }
|
|
7872
7878
|
// 复制相机的位置
|
|
7873
7879
|
this.downRaycaster.ray.origin.copy(control.position);
|
|
@@ -7888,9 +7894,9 @@ export default {
|
|
|
7888
7894
|
this.pointControls.moveForward(-this.velocity.z * delta);
|
|
7889
7895
|
control.position.y += this.velocity.y * delta;
|
|
7890
7896
|
// 保证控制器的y轴在平面上
|
|
7891
|
-
if (control.position.y <
|
|
7897
|
+
if (control.position.y < FIRST_PERSON_GROUND_HEIGHT) {
|
|
7892
7898
|
this.velocity.y = -0 / 10;
|
|
7893
|
-
control.position.y =
|
|
7899
|
+
control.position.y = FIRST_PERSON_GROUND_HEIGHT;
|
|
7894
7900
|
this.canJump = true;
|
|
7895
7901
|
}
|
|
7896
7902
|
if (this.noObserver) {
|
|
@@ -9387,7 +9393,7 @@ export default {
|
|
|
9387
9393
|
::v-deep .circle-tag {
|
|
9388
9394
|
width: 10px;
|
|
9389
9395
|
height: 10px;
|
|
9390
|
-
margin-top:
|
|
9396
|
+
margin-top: 0;
|
|
9391
9397
|
border-radius: 50%;
|
|
9392
9398
|
background-color: #ff5000;
|
|
9393
9399
|
}
|
|
@@ -1468,68 +1468,68 @@ export class StreamLoader {
|
|
|
1468
1468
|
}
|
|
1469
1469
|
}
|
|
1470
1470
|
|
|
1471
|
-
async getBox({ id, projectId = this.projectId || 0, isDebug }) {
|
|
1472
|
-
// 1. 尝试从 IndexedDB 读取
|
|
1473
|
-
const cached = await this._getFromDB(id, projectId);
|
|
1474
|
-
if (cached && !isDebug) {
|
|
1475
|
-
return cached;
|
|
1476
|
-
}
|
|
1477
|
-
|
|
1478
|
-
const getLegacyBox = async () => {
|
|
1479
|
-
if (!this.modelApi || typeof this.modelApi.getBox !== 'function') {
|
|
1480
|
-
throw new Error('modelApi.getBox is not available');
|
|
1481
|
-
}
|
|
1482
|
-
const res = await this.modelApi.getBox({ id, projectId });
|
|
1483
|
-
if (!res) return null;
|
|
1484
|
-
this._applyPrefixId(res, 'id', id);
|
|
1485
|
-
this._saveToDB(id, res, projectId);
|
|
1486
|
-
return res;
|
|
1487
|
-
};
|
|
1488
|
-
|
|
1489
|
-
// 2. 未配置批次数接口时,兼容旧版一次性请求。
|
|
1490
|
-
if (!this.modelApi || typeof this.modelApi.getMeshBatchCount !== 'function') {
|
|
1491
|
-
return getLegacyBox();
|
|
1492
|
-
}
|
|
1493
|
-
|
|
1494
|
-
// 3. 先获取批次数量,再顺序拉取每一批包围盒数据。
|
|
1495
|
-
let batchResult;
|
|
1496
|
-
try {
|
|
1497
|
-
batchResult = await this.modelApi.getMeshBatchCount({ id, projectId });
|
|
1498
|
-
} catch (error) {
|
|
1499
|
-
const status = error && error.response ? error.response.status : error && error.status;
|
|
1500
|
-
if (status === 404) {
|
|
1501
|
-
return getLegacyBox();
|
|
1502
|
-
}
|
|
1503
|
-
throw error;
|
|
1504
|
-
}
|
|
1505
|
-
const batchCount = Number(
|
|
1506
|
-
batchResult && typeof batchResult === 'object' ? batchResult.index : batchResult
|
|
1507
|
-
);
|
|
1508
|
-
if (!Number.isInteger(batchCount) || batchCount < 0) {
|
|
1509
|
-
throw new Error('Invalid getBox batch count');
|
|
1510
|
-
}
|
|
1511
|
-
if (batchCount === 0) {
|
|
1512
|
-
return [];
|
|
1513
|
-
}
|
|
1514
|
-
|
|
1515
|
-
const boxList = [];
|
|
1516
|
-
for (let index = 0; index < batchCount; index++) {
|
|
1517
|
-
const batch = await this.modelApi.getBox({ id, projectId, index });
|
|
1518
|
-
if (!batch) {
|
|
1519
|
-
throw new Error(`Failed to get box batch: ${index}`);
|
|
1520
|
-
}
|
|
1521
|
-
if (Array.isArray(batch)) {
|
|
1522
|
-
boxList.push(...batch);
|
|
1523
|
-
} else {
|
|
1524
|
-
boxList.push(batch);
|
|
1525
|
-
}
|
|
1526
|
-
}
|
|
1527
|
-
|
|
1528
|
-
// 4. 全部批次成功后统一处理并写入完整缓存。
|
|
1529
|
-
this._applyPrefixId(boxList, 'id', id);
|
|
1530
|
-
this._saveToDB(id, boxList, projectId);
|
|
1531
|
-
return boxList;
|
|
1532
|
-
}
|
|
1471
|
+
async getBox({ id, projectId = this.projectId || 0, isDebug }) {
|
|
1472
|
+
// 1. 尝试从 IndexedDB 读取
|
|
1473
|
+
const cached = await this._getFromDB(id, projectId);
|
|
1474
|
+
if (cached && !isDebug) {
|
|
1475
|
+
return cached;
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
const getLegacyBox = async () => {
|
|
1479
|
+
if (!this.modelApi || typeof this.modelApi.getBox !== 'function') {
|
|
1480
|
+
throw new Error('modelApi.getBox is not available');
|
|
1481
|
+
}
|
|
1482
|
+
const res = await this.modelApi.getBox({ id, projectId });
|
|
1483
|
+
if (!res) return null;
|
|
1484
|
+
this._applyPrefixId(res, 'id', id);
|
|
1485
|
+
this._saveToDB(id, res, projectId);
|
|
1486
|
+
return res;
|
|
1487
|
+
};
|
|
1488
|
+
|
|
1489
|
+
// 2. 未配置批次数接口时,兼容旧版一次性请求。
|
|
1490
|
+
if (!this.modelApi || typeof this.modelApi.getMeshBatchCount !== 'function') {
|
|
1491
|
+
return getLegacyBox();
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
// 3. 先获取批次数量,再顺序拉取每一批包围盒数据。
|
|
1495
|
+
let batchResult;
|
|
1496
|
+
try {
|
|
1497
|
+
batchResult = await this.modelApi.getMeshBatchCount({ id, projectId });
|
|
1498
|
+
} catch (error) {
|
|
1499
|
+
const status = error && error.response ? error.response.status : error && error.status;
|
|
1500
|
+
if (status === 404) {
|
|
1501
|
+
return getLegacyBox();
|
|
1502
|
+
}
|
|
1503
|
+
throw error;
|
|
1504
|
+
}
|
|
1505
|
+
const batchCount = Number(
|
|
1506
|
+
batchResult && typeof batchResult === 'object' ? batchResult.index : batchResult
|
|
1507
|
+
);
|
|
1508
|
+
if (!Number.isInteger(batchCount) || batchCount < 0) {
|
|
1509
|
+
throw new Error('Invalid getBox batch count');
|
|
1510
|
+
}
|
|
1511
|
+
if (batchCount === 0) {
|
|
1512
|
+
return [];
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
const boxList = [];
|
|
1516
|
+
for (let index = 0; index < batchCount; index++) {
|
|
1517
|
+
const batch = await this.modelApi.getBox({ id, projectId, index });
|
|
1518
|
+
if (!batch) {
|
|
1519
|
+
throw new Error(`Failed to get box batch: ${index}`);
|
|
1520
|
+
}
|
|
1521
|
+
if (Array.isArray(batch)) {
|
|
1522
|
+
boxList.push(...batch);
|
|
1523
|
+
} else {
|
|
1524
|
+
boxList.push(batch);
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
// 4. 全部批次成功后统一处理并写入完整缓存。
|
|
1529
|
+
this._applyPrefixId(boxList, 'id', id);
|
|
1530
|
+
this._saveToDB(id, boxList, projectId);
|
|
1531
|
+
return boxList;
|
|
1532
|
+
}
|
|
1533
1533
|
|
|
1534
1534
|
async handleCameraControlForStream(args) {
|
|
1535
1535
|
// 性能优化注释:禁用 range 被注释字段的解构声明与初始化
|
|
@@ -427,10 +427,13 @@ MeasureArea.prototype = {
|
|
|
427
427
|
transparent: true,
|
|
428
428
|
opacity: 0.5,
|
|
429
429
|
side: THREE.DoubleSide,
|
|
430
|
+
depthTest: false,
|
|
431
|
+
depthWrite: false,
|
|
430
432
|
name: this.measureName
|
|
431
433
|
});
|
|
432
434
|
const mesh = new THREE.Mesh(geom, material);
|
|
433
435
|
mesh.frustumCulled = false;
|
|
436
|
+
mesh.renderOrder = 998;
|
|
434
437
|
_this.markMeasureObject(mesh);
|
|
435
438
|
_this.polygonMesh = mesh;
|
|
436
439
|
_this.scene.add(mesh);
|