iflow-engine-base 3.12.1 → 3.12.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.
- package/dist/bim-engine-sdk.es.js +8 -8
- package/dist/bim-engine-sdk.umd.js +608 -608
- package/dist/chunks/{engine-2d-akww4-w0.js → engine-2d-DkVm5OrG.js} +3 -3
- package/dist/chunks/{engine-3d-8JWd9itJ.js → engine-3d-BcaOUY_t.js} +2767 -2138
- package/dist/chunks/{engine-720-BKnES9hd.js → engine-720-Bk8EPFS9.js} +1 -1
- package/dist/chunks/{engine-gaussian-B_kSQI3m.js → engine-gaussian-3AV9YIVN.js} +1 -1
- package/dist/chunks/{engine-gis-BqjUHNmF.js → engine-gis-j4GvT41d.js} +2 -2
- package/dist/chunks/{sdk-assets-DBrfrgg5.js → sdk-assets-Cr-wEweL.js} +1 -1
- package/dist/chunks/{sdk-runtime-Cfd1eUce.js → sdk-runtime-B4l79tmQ.js} +2 -2
- package/dist/chunks/{sdk-vendor-COe7cTIJ.js → sdk-vendor-VZI0bEcg.js} +1 -1
- package/dist/iflow-engine-base.css +1 -1
- package/dist/index.d.ts +256 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as R, at as S, h as E, aN as b, j as x, t as A, E as k, Q as F, p as I, W as y, a as v, T as f, i as P, Y as m, V as p, b as D } from "./three-vendor-Bx2tSp_D.js";
|
|
2
|
-
import { C as L, W as w, E as T, c as z, r as _ } from "./sdk-runtime-
|
|
2
|
+
import { C as L, W as w, E as T, c as z, r as _ } from "./sdk-runtime-B4l79tmQ.js";
|
|
3
3
|
class V {
|
|
4
4
|
scene;
|
|
5
5
|
panoramaSphere = null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as Js, C as st, t as Zs, V as v, b as N, O as $s, W as en, M as J, Q as ge, a as tn, f as qt, j as be, B as sn, h as ft, r as it, aO as ze, aP as Pt, aQ as at, X as Bt, aR as ms, aS as yn, aT as xn, aU as In, aV as Tn, U as wn, aW as En, aX as Bn, l as lt, aY as As, aZ as gs, a_ as vn, k as Cs, a$ as Fn, aw as Je, at as Ss, D as Kt, aj as bn, aN as ys, q as Dn, y as We, b0 as qe, aB as xs, s as Mn, b1 as Rn, a9 as Pn, b2 as On, b3 as nn, aD as Is, b4 as kn, ag as Ln, b5 as Ne, b6 as mt, p as Hn } from "./three-vendor-Bx2tSp_D.js";
|
|
2
|
-
import { C as Un, c as zn, E as _n, r as Qn } from "./sdk-runtime-
|
|
2
|
+
import { C as Un, c as zn, E as _n, r as Qn } from "./sdk-runtime-B4l79tmQ.js";
|
|
3
3
|
var De = /* @__PURE__ */ ((m) => (m.LoadStart = "gaussian-load-start", m.LoadProgress = "gaussian-load-progress", m.Loaded = "gaussian-loaded", m.LoadError = "gaussian-load-error", m.SceneRemoved = "gaussian-scene-removed", m.FpsUpdated = "gaussian-fps-updated", m.ViewChanged = "gaussian-view-changed", m))(De || {});
|
|
4
4
|
class Nn {
|
|
5
5
|
listeners = /* @__PURE__ */ new Map();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as xX, J as KN } from "./sdk-vendor-
|
|
1
|
+
import { g as xX, J as KN } from "./sdk-vendor-VZI0bEcg.js";
|
|
2
2
|
import { b7 as Ii, b8 as TX } from "./three-vendor-Bx2tSp_D.js";
|
|
3
|
-
import { l as vX, L as EX, E as CX, d as JN, e as wX, c as $C, a as SX, f as IX, r as DX, h as XC } from "./sdk-runtime-
|
|
3
|
+
import { l as vX, L as EX, E as CX, d as JN, e as wX, c as $C, a as SX, f as IX, r as DX, h as XC } from "./sdk-runtime-B4l79tmQ.js";
|
|
4
4
|
var QN = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
|
|
5
5
|
function Fb(e) {
|
|
6
6
|
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
|
|
@@ -2,7 +2,7 @@ import { b9 as w } from "./three-vendor-Bx2tSp_D.js";
|
|
|
2
2
|
const S = "__BIM_ENGINE_SDK_ASSET_BASE__", b = "__BIM_ENGINE_SDK_ASSET_FILE_MAP__", g = "__BIM_ENGINE_SDK_ASSET_FILE_URLS__", A = "__BIM_ENGINE_SDK_ASSET_FILE_SESSION__", j = "https://unpkg.com/iflow-engine-base@3.9.20/dist/", L = "https://__bim_engine_sdk_asset__/", M = ["assets/", "fonts/", "draco/", "basis/", "texture/", "prompt/"];
|
|
3
3
|
let _ = null;
|
|
4
4
|
async function R() {
|
|
5
|
-
return _ || (_ = import("./sdk-vendor-
|
|
5
|
+
return _ || (_ = import("./sdk-vendor-VZI0bEcg.js").then((t) => t.j).then((t) => t.default ?? t)), _;
|
|
6
6
|
}
|
|
7
7
|
function a() {
|
|
8
8
|
return typeof globalThis < "u" ? globalThis : null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { R as ve, b as B, V as ce, t as Te, ba as Ce } from "./three-vendor-Bx2tSp_D.js";
|
|
2
|
-
import { a as pe, J as ne, p as Ae, l as J } from "./sdk-vendor-
|
|
2
|
+
import { a as pe, J as ne, p as Ae, l as J } from "./sdk-vendor-VZI0bEcg.js";
|
|
3
3
|
class It {
|
|
4
4
|
/**
|
|
5
5
|
* 构造函数
|
|
@@ -1056,7 +1056,7 @@ class jt {
|
|
|
1056
1056
|
e.stopImmediatePropagation();
|
|
1057
1057
|
};
|
|
1058
1058
|
}
|
|
1059
|
-
const ot = "3.12.
|
|
1059
|
+
const ot = "3.12.4", st = {
|
|
1060
1060
|
version: ot
|
|
1061
1061
|
}, V = st.version;
|
|
1062
1062
|
function se() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:10px;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}.bim-mobile-roam-controls{position:absolute;left:0;right:0;bottom:max(40px,env(safe-area-inset-bottom));z-index:1200;display:flex;align-items:flex-end;justify-content:space-between;padding:0 60px;pointer-events:none;user-select:none;-webkit-user-select:none;touch-action:none}.bim-mobile-roam-pad,.bim-mobile-roam-look-group,.bim-mobile-roam-vertical-pad{pointer-events:auto}.engine-3d-search{position:absolute;inset:0;z-index:1500;display:none;pointer-events:none}.engine-3d-search--visible{display:block}.engine-3d-search__box{position:absolute;top:14%;left:50%;width:min(480px,calc(100% - 32px));transform:translate(-50%);overflow:hidden;border:1px solid rgba(148,163,184,.42);border-radius:10px;background:#0f172af5;box-shadow:0 18px 40px #00000059;color:#e2e8f0;pointer-events:auto}.engine-3d-search__input-row{display:flex;align-items:center;height:48px;gap:10px;padding:0 12px}.engine-3d-search__icon{display:flex;color:#93c5fd}.engine-3d-search__input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#f8fafc;font-size:14px}.engine-3d-search__input::placeholder{color:#94a3b8}.engine-3d-search__clear{width:24px;height:24px;border:0;border-radius:50%;background:#94a3b833;color:#e2e8f0;font-size:18px;cursor:pointer}.engine-3d-search__status{min-height:28px;box-sizing:border-box;padding:6px 14px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__list{max-height:300px;margin:0;padding:4px 0;overflow:auto;list-style:none}.engine-3d-search__pagination{display:none;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__page-button{border:0;border-radius:4px;padding:4px 8px;background:#94a3b833;color:inherit;cursor:pointer;font-size:12px}.engine-3d-search__page-button:disabled{cursor:not-allowed;opacity:.38}.engine-3d-search__item{display:flex;align-items:center;gap:8px;padding:9px 14px;cursor:pointer}.engine-3d-search__item:hover,.engine-3d-search__item--active{background:#3b82f633}.engine-3d-search__badge{flex:0 0 auto;padding:2px 5px;border-radius:3px;background:#3b82f638;color:#93c5fd;font-size:11px}.engine-3d-search__name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.engine-3d-search__id{flex:0 1 120px;overflow:hidden;color:#94a3b8;text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.engine-3d-search--light .engine-3d-search__box{border-color:#47556947;background:#fffffff7;box-shadow:0 18px 40px #0f172a2e;color:#172554}.engine-3d-search--light .engine-3d-search__input{color:#0f172a}.engine-3d-search--light .engine-3d-search__input::placeholder,.engine-3d-search--light .engine-3d-search__status,.engine-3d-search--light .engine-3d-search__id{color:#64748b}.engine-3d-search--light .engine-3d-search__clear{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__status{border-top-color:#47556924}.engine-3d-search--light .engine-3d-search__pagination{border-top-color:#47556924;color:#64748b}.engine-3d-search--light .engine-3d-search__page-button{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__item:hover,.engine-3d-search--light .engine-3d-search__item--active{background:#e0f2fe}.engine-3d-search--light .engine-3d-search__badge{background:#dbeafe;color:#1d4ed8}.bim-mobile-roam-move-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-button{width:44px;height:44px;border:1px solid rgba(255,255,255,.46);border-radius:8px;color:#fff;background:#14182094;box-shadow:0 4px 14px #00000038;font-size:15px;font-weight:600;line-height:1;touch-action:none}.bim-mobile-roam-button.is-round{width:48px;height:48px;border-radius:50%;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center}.bim-mobile-roam-button.is-active{background:#267effc7;border-color:#ffffffb8}.bim-mobile-roam-move-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-group{display:flex;align-items:center;gap:12px}.bim-mobile-roam-vertical-pad{display:flex;flex-direction:column;gap:10px;align-items:center}.bim-mobile-roam-look-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-look-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:46px;height:46px;border-radius:50%;background:#ffffffb8;box-shadow:0 2px 10px #00000042}@media(max-width:520px){.bim-mobile-roam-controls{padding:0 14px;bottom:max(14px,env(safe-area-inset-bottom))}.bim-mobile-roam-move-pad{width:96px;height:96px}.bim-mobile-roam-button{width:38px;height:38px;font-size:13px}.bim-mobile-roam-button.is-round{width:42px;height:42px;font-size:18px}.bim-mobile-roam-look-pad{width:96px;height:96px}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:38px;height:38px}}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;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;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}.measure-2d-selected.measureLine{stroke:#fff;fill:#fff;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measurePointer{fill:#fff;stroke:#00c3ff;stroke-width:2px;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measureBack{fill:#009bea;stroke:#fff;stroke-width:1px;filter:drop-shadow(0 0 4px rgb(0,195,255))}.measure-2d-selected.measureLabel{fill:#fff;stroke:none;font-weight:600}polygon.measure-2d-selected{fill:#00c3ff38}.markup-2d-layer{position:absolute;inset:0;pointer-events:none;z-index:30}.markup-2d-svg{position:absolute;inset:0;overflow:visible;pointer-events:none}.markup-2d-toolbar{position:absolute;top:8px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:6px;padding:6px;background:#fff;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 4px 14px #00000024;pointer-events:auto;-webkit-user-select:none;user-select:none;z-index:1300}.markup-2d-toolbar button,.markup-2d-toolbar input{height:28px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2937;font-size:12px}.markup-2d-toolbar button{width:28px;min-width:28px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.markup-2d-toolbar button:hover,.markup-2d-toolbar button.active{color:#1677ff;border-color:#1677ff;background:#eef6ff}.markup-2d-toolbar input[type=color]{width:34px;padding:2px}.markup-2d-toolbar input[type=number]{width:54px;padding:0 4px}.markup-2d-icon-button img{width:16px;height:16px;display:block;pointer-events:none}.markup-2d-divider{width:1px;height:22px;background:#e5e7eb}.markup-2d-shape{pointer-events:auto;cursor:pointer}.markup-2d-shape.selected{filter:drop-shadow(0 0 4px rgba(22,119,255,.9))}.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-version-text{position:absolute;right:10px;bottom:0;z-index:1000;color:#86d9ff;font-size:10px;background:transparent;pointer-events: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-cad-cursor--short-crosshair .engine-2d-cad-cursor__h{width:72px;left:0;transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__v{height:72px;top:0;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-workspace-tabs{position:absolute;left:12px;bottom:10px;z-index:40;display:flex;align-items:center;max-width:calc(100% - 24px);overflow-x:auto;background:var(--e2d-bg2, rgba(28, 33, 40, .92));border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:4px;box-shadow:0 4px 14px var(--e2d-shadow, rgba(0, 0, 0, .28))}.engine-2d-workspace-tabs__item{flex:0 0 auto;max-width:180px;height:28px;padding:0 12px;border:0;border-right:1px solid var(--e2d-border2, rgba(255, 255, 255, .1));background:transparent;color:var(--e2d-text2, #d7dde4);font-size:12px;line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.engine-2d-workspace-tabs__item:last-child{border-right:0}.engine-2d-workspace-tabs__item:hover:not(:disabled){background:var(--e2d-bg-hover, rgba(79, 195, 247, .12));color:var(--e2d-text-accent, #ffffff)}.engine-2d-workspace-tabs__item--active{background:var(--e2d-accent, #2f80ed);color:#fff;cursor:default}.engine-2d-workspace-tabs__item:disabled{opacity:.9}.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;color:var(--e2d-accent, #4fc3f7);background:#4fc3f71f}.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}}.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:none}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button:disabled,.cesium-button-disabled,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button-disabled:active{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:#282828b3;padding:7px;border-radius:5px;border:1px solid #444;font:700 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG,.cesium-animation-shuttleRingPointer,.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:#262626bf;border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;transform:translateY(-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px rgb(189,236,248)}.cesium-widget{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0px 0px 2px #000000;padding-right:5px}.cesium-widget-errorPanel{position:absolute;inset:0;text-align:center;background:#000000b3;z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:Open Sans,Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:Open Sans,Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:#303336cc;border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:600px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding:5px;background-color:#505050bf}.cesium-cesiumInspector-pickButton{background-color:#0000004d;border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:none}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader:before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader:before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:none;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:#303336cc;border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:transparent;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector-disabledElementsInfo{margin:5px 0 0;padding:0 0 0 20px;color:#eed202}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:none;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-VoxelInspector{width:300px;pointer-events:all}.cesium-VoxelInspector div,.cesium-VoxelInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-VoxelInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}.cesium-button.cesium-fullscreenButton,.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:#282828b3;color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:#0f0f0fe6;box-shadow:none;outline:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:#262626f2;color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:transparent;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:transparent;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:#ee880070;outline:none}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D{margin:0 0 3px}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic{margin:0 0 3px}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:#262626bf;padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible,.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:none}.cesium-navigation-button-left{border-radius:10px 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:#262626bf}.cesium-navigation-button-unselected{background-color:#000000bf}.cesium-navigation-button-unselected:hover{background-color:#4c4c4cbf}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,#747577cc,#3a4452cc 11%,#2e3238cc 46%,#353535cc 81% 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer,.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer,.cesium-viewer-voxelInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-i3s-explorer ul{list-style-type:none}.cesium-viewer-i3s-explorer .layersList{padding:0}.cesium-viewer-i3s-explorer input{margin:0 3px 0 0}.cesium-viewer-i3s-explorer .expandItem{cursor:pointer;-webkit-user-select:none;user-select:none;width:20px}.cesium-viewer-i3s-explorer .nested,.cesium-viewer-i3s-explorer #bsl-wrapper{display:none}.cesium-viewer-i3s-explorer .active{display:block}.cesium-viewer-i3s-explorer .li-wrapper{display:flex;flex-direction:row;align-content:center}.bim-engine-gis-container,.bim-engine-gis-container .cesium-viewer,.bim-engine-gis-container .cesium-viewer-cesiumWidgetContainer,.bim-engine-gis-container .cesium-widget,.bim-engine-gis-container canvas{width:100%;height:100%}.bim-engine-gis-container{position:relative;overflow:hidden;background:#111827}.bim-engine-gis-container .cesium-widget canvas{display:block}.bim-engine-gis-performance-monitor{position:absolute;top:8px;right:8px;z-index:1200;width:96px;padding:6px 8px;border:1px solid rgba(148,163,184,.32);border-radius:4px;background:#0f172ac7;color:#e5edf7;font-family:Consolas,Monaco,monospace;font-size:11px;line-height:15px;pointer-events:none;box-sizing:border-box}.bim-engine-gis-performance-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.bim-engine-gis-performance-value{color:#7dd3fc;font-weight:700;text-align:right}
|
|
1
|
+
.originRotate{width:10px;height:10px;background-color:red}.versionText{position:absolute;right:10px;color:#86d9ff;z-index:1000;bottom:10px;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}.bim-mobile-roam-controls{position:absolute;left:0;right:0;bottom:max(40px,env(safe-area-inset-bottom));z-index:1200;display:flex;align-items:flex-end;justify-content:space-between;padding:0 60px;pointer-events:none;user-select:none;-webkit-user-select:none;touch-action:none}.bim-mobile-roam-pad,.bim-mobile-roam-look-group,.bim-mobile-roam-vertical-pad{pointer-events:auto}.engine-3d-search{position:absolute;inset:0;z-index:1500;display:none;pointer-events:none}.engine-3d-search--visible{display:block}.engine-3d-search__box{position:absolute;top:14%;left:50%;width:min(480px,calc(100% - 32px));transform:translate(-50%);overflow:hidden;border:1px solid rgba(148,163,184,.42);border-radius:10px;background:#0f172af5;box-shadow:0 18px 40px #00000059;color:#e2e8f0;pointer-events:auto}.engine-3d-search__input-row{display:flex;align-items:center;height:48px;gap:10px;padding:0 12px}.engine-3d-search__icon{display:flex;color:#93c5fd}.engine-3d-search__input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#f8fafc;font-size:14px}.engine-3d-search__input::placeholder{color:#94a3b8}.engine-3d-search__clear{width:24px;height:24px;border:0;border-radius:50%;background:#94a3b833;color:#e2e8f0;font-size:18px;cursor:pointer}.engine-3d-search__status{min-height:28px;box-sizing:border-box;padding:6px 14px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__list{max-height:300px;margin:0;padding:4px 0;overflow:auto;list-style:none}.engine-3d-search__pagination{display:none;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid rgba(148,163,184,.16);color:#94a3b8;font-size:12px}.engine-3d-search__page-button{border:0;border-radius:4px;padding:4px 8px;background:#94a3b833;color:inherit;cursor:pointer;font-size:12px}.engine-3d-search__page-button:disabled{cursor:not-allowed;opacity:.38}.engine-3d-search__item{display:flex;align-items:center;gap:8px;padding:9px 14px;cursor:pointer}.engine-3d-search__item:hover,.engine-3d-search__item--active{background:#3b82f633}.engine-3d-search__badge{flex:0 0 auto;padding:2px 5px;border-radius:3px;background:#3b82f638;color:#93c5fd;font-size:11px}.engine-3d-search__name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.engine-3d-search__id{flex:0 1 120px;overflow:hidden;color:#94a3b8;text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.engine-3d-search--light .engine-3d-search__box{border-color:#47556947;background:#fffffff7;box-shadow:0 18px 40px #0f172a2e;color:#172554}.engine-3d-search--light .engine-3d-search__input{color:#0f172a}.engine-3d-search--light .engine-3d-search__input::placeholder,.engine-3d-search--light .engine-3d-search__status,.engine-3d-search--light .engine-3d-search__id{color:#64748b}.engine-3d-search--light .engine-3d-search__clear{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__status{border-top-color:#47556924}.engine-3d-search--light .engine-3d-search__pagination{border-top-color:#47556924;color:#64748b}.engine-3d-search--light .engine-3d-search__page-button{background:#e2e8f0;color:#334155}.engine-3d-search--light .engine-3d-search__item:hover,.engine-3d-search--light .engine-3d-search__item--active{background:#e0f2fe}.engine-3d-search--light .engine-3d-search__badge{background:#dbeafe;color:#1d4ed8}.bim-mobile-roam-move-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-button{width:44px;height:44px;border:1px solid rgba(255,255,255,.46);border-radius:8px;color:#fff;background:#14182094;box-shadow:0 4px 14px #00000038;font-size:15px;font-weight:600;line-height:1;touch-action:none}.bim-mobile-roam-button.is-round{width:48px;height:48px;border-radius:50%;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center}.bim-mobile-roam-button.is-active{background:#267effc7;border-color:#ffffffb8}.bim-mobile-roam-move-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-group{display:flex;align-items:center;gap:12px}.bim-mobile-roam-vertical-pad{display:flex;flex-direction:column;gap:10px;align-items:center}.bim-mobile-roam-look-pad{width:116px;height:116px;border:1px solid rgba(255,255,255,.34);border-radius:50%;display:flex;align-items:center;justify-content:center;background:#14182073;box-shadow:0 4px 16px #0000003d inset,0 4px 14px #0003;touch-action:none}.bim-mobile-roam-look-pad.is-active{border-color:#267effd6;background:#142c4a8a}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:46px;height:46px;border-radius:50%;background:#ffffffb8;box-shadow:0 2px 10px #00000042}@media(max-width:520px){.bim-mobile-roam-controls{padding:0 60px;bottom:max(40px,env(safe-area-inset-bottom))}.bim-mobile-roam-move-pad{width:96px;height:96px}.bim-mobile-roam-button{width:38px;height:38px;font-size:13px}.bim-mobile-roam-button.is-round{width:42px;height:42px;font-size:18px}.bim-mobile-roam-look-pad{width:96px;height:96px}.bim-mobile-roam-look-knob,.bim-mobile-roam-move-knob{width:38px;height:38px}}.ViewCube{position:absolute;width:120px;height:120px;top:0;right:0;z-index:999}.homeViewWrapper{position:absolute;cursor:pointer;pointer-events:auto;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;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}.measure-2d-selected.measureLine{stroke:#fff;fill:#fff;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measurePointer{fill:#fff;stroke:#00c3ff;stroke-width:2px;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measureBack{fill:#009bea;stroke:#fff;stroke-width:1px;filter:drop-shadow(0 0 4px rgb(0,195,255))}.measure-2d-selected.measureLabel{fill:#fff;stroke:none;font-weight:600}polygon.measure-2d-selected{fill:#00c3ff38}.markup-2d-layer{position:absolute;inset:0;pointer-events:none;z-index:30}.markup-2d-svg{position:absolute;inset:0;overflow:visible;pointer-events:none}.markup-2d-toolbar{position:absolute;top:8px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:6px;padding:6px;background:#fff;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 4px 14px #00000024;pointer-events:auto;-webkit-user-select:none;user-select:none;z-index:1300}.markup-2d-toolbar button,.markup-2d-toolbar input{height:28px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2937;font-size:12px}.markup-2d-toolbar button{width:28px;min-width:28px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.markup-2d-toolbar button:hover,.markup-2d-toolbar button.active{color:#1677ff;border-color:#1677ff;background:#eef6ff}.markup-2d-toolbar input[type=color]{width:34px;padding:2px}.markup-2d-toolbar input[type=number]{width:54px;padding:0 4px}.markup-2d-icon-button img{width:16px;height:16px;display:block;pointer-events:none}.markup-2d-divider{width:1px;height:22px;background:#e5e7eb}.markup-2d-shape{pointer-events:auto;cursor:pointer}.markup-2d-shape.selected{filter:drop-shadow(0 0 4px rgba(22,119,255,.9))}.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-version-text{position:absolute;right:10px;bottom:0;z-index:1000;color:#86d9ff;font-size:10px;background:transparent;pointer-events: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-cad-cursor--short-crosshair .engine-2d-cad-cursor__h{width:72px;left:0;transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__v{height:72px;top:0;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-workspace-tabs{position:absolute;left:12px;bottom:10px;z-index:40;display:flex;align-items:center;max-width:calc(100% - 24px);overflow-x:auto;background:var(--e2d-bg2, rgba(28, 33, 40, .92));border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:4px;box-shadow:0 4px 14px var(--e2d-shadow, rgba(0, 0, 0, .28))}.engine-2d-workspace-tabs__item{flex:0 0 auto;max-width:180px;height:28px;padding:0 12px;border:0;border-right:1px solid var(--e2d-border2, rgba(255, 255, 255, .1));background:transparent;color:var(--e2d-text2, #d7dde4);font-size:12px;line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.engine-2d-workspace-tabs__item:last-child{border-right:0}.engine-2d-workspace-tabs__item:hover:not(:disabled){background:var(--e2d-bg-hover, rgba(79, 195, 247, .12));color:var(--e2d-text-accent, #ffffff)}.engine-2d-workspace-tabs__item--active{background:var(--e2d-accent, #2f80ed);color:#fff;cursor:default}.engine-2d-workspace-tabs__item:disabled{opacity:.9}.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;color:var(--e2d-accent, #4fc3f7);background:#4fc3f71f}.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}}.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:none}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button:disabled,.cesium-button-disabled,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button-disabled:active{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:#282828b3;padding:7px;border-radius:5px;border:1px solid #444;font:700 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG,.cesium-animation-shuttleRingPointer,.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:#262626bf;border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;transform:translateY(-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px rgb(189,236,248)}.cesium-widget{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0px 0px 2px #000000;padding-right:5px}.cesium-widget-errorPanel{position:absolute;inset:0;text-align:center;background:#000000b3;z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:Open Sans,Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:Open Sans,Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:#303336cc;border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:600px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding:5px;background-color:#505050bf}.cesium-cesiumInspector-pickButton{background-color:#0000004d;border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:none}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader:before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader:before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:none;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:#303336cc;border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:transparent;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector-disabledElementsInfo{margin:5px 0 0;padding:0 0 0 20px;color:#eed202}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:none;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-VoxelInspector{width:300px;pointer-events:all}.cesium-VoxelInspector div,.cesium-VoxelInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-VoxelInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid white}.cesium-button.cesium-fullscreenButton,.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:#282828b3;color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:#0f0f0fe6;box-shadow:none;outline:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:#262626f2;color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:transparent;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:transparent;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:#ee880070;outline:none}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D{margin:0 0 3px}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic{margin:0 0 3px}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:#262626bf;padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible,.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:none}.cesium-navigation-button-left{border-radius:10px 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:#262626bf}.cesium-navigation-button-unselected{background-color:#000000bf}.cesium-navigation-button-unselected:hover{background-color:#4c4c4cbf}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,#747577cc,#3a4452cc 11%,#2e3238cc 46%,#353535cc 81% 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer,.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer,.cesium-viewer-voxelInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-i3s-explorer ul{list-style-type:none}.cesium-viewer-i3s-explorer .layersList{padding:0}.cesium-viewer-i3s-explorer input{margin:0 3px 0 0}.cesium-viewer-i3s-explorer .expandItem{cursor:pointer;-webkit-user-select:none;user-select:none;width:20px}.cesium-viewer-i3s-explorer .nested,.cesium-viewer-i3s-explorer #bsl-wrapper{display:none}.cesium-viewer-i3s-explorer .active{display:block}.cesium-viewer-i3s-explorer .li-wrapper{display:flex;flex-direction:row;align-content:center}.bim-engine-gis-container,.bim-engine-gis-container .cesium-viewer,.bim-engine-gis-container .cesium-viewer-cesiumWidgetContainer,.bim-engine-gis-container .cesium-widget,.bim-engine-gis-container canvas{width:100%;height:100%}.bim-engine-gis-container{position:relative;overflow:hidden;background:#111827}.bim-engine-gis-container .cesium-widget canvas{display:block}.bim-engine-gis-performance-monitor{position:absolute;top:8px;right:8px;z-index:1200;width:96px;padding:6px 8px;border:1px solid rgba(148,163,184,.32);border-radius:4px;background:#0f172ac7;color:#e5edf7;font-family:Consolas,Monaco,monospace;font-size:11px;line-height:15px;pointer-events:none;box-sizing:border-box}.bim-engine-gis-performance-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.bim-engine-gis-performance-value{color:#7dd3fc;font-weight:700;text-align:right}
|
package/dist/index.d.ts
CHANGED
|
@@ -641,6 +641,8 @@ declare class CameraModule {
|
|
|
641
641
|
perspectiveCamera: THREE.PerspectiveCamera;
|
|
642
642
|
orthographicCamera: THREE.OrthographicCamera;
|
|
643
643
|
constructor(engine: any);
|
|
644
|
+
/** 视图跳转前统一退出图钉查看态,避免批注锁定与相机动画冲突。 */
|
|
645
|
+
private exitDrawingPinView;
|
|
644
646
|
private getCameraAspect;
|
|
645
647
|
private getPerspectiveVisibleHeight;
|
|
646
648
|
getOrthographicVisibleHeight(camera?: THREE.OrthographicCamera): number;
|
|
@@ -1528,6 +1530,11 @@ declare class DrawingPin {
|
|
|
1528
1530
|
* 清空批注(便捷接口)
|
|
1529
1531
|
*/
|
|
1530
1532
|
clearAnnotation(): void;
|
|
1533
|
+
/**
|
|
1534
|
+
* 退出图钉查看态,清理查看批注并恢复相机交互。
|
|
1535
|
+
* 视图跳转类功能可调用此接口与图钉查看态保持互斥。
|
|
1536
|
+
*/
|
|
1537
|
+
exitViewMode(): boolean;
|
|
1531
1538
|
/**
|
|
1532
1539
|
* 图钉 view 模式下锁定相机控制,避免用户在只读查看阶段继续旋转视图。
|
|
1533
1540
|
*/
|
|
@@ -2473,6 +2480,8 @@ declare class EngineKernelV2 {
|
|
|
2473
2480
|
modelPlace: ModelPlace;
|
|
2474
2481
|
/** 基于当前引擎作为基准版本的模型差异比较器。 */
|
|
2475
2482
|
modelComparison: ModelComparison;
|
|
2483
|
+
/** 管理模型炸开代理对象,并保持炸开后的构件交互身份。 */
|
|
2484
|
+
modelExplode: ModelExplode;
|
|
2476
2485
|
models: any[];
|
|
2477
2486
|
reactBoundingClientRect: {
|
|
2478
2487
|
left: number;
|
|
@@ -4005,7 +4014,7 @@ declare class InteractionModule {
|
|
|
4005
4014
|
private removeModelsFromHighlightState;
|
|
4006
4015
|
private getNodeWorldBox;
|
|
4007
4016
|
/**
|
|
4008
|
-
* 获取 hover
|
|
4017
|
+
* 获取 hover 用的构件网格;实例节点可能同时保留 infos,必须优先按实例索引处理。
|
|
4009
4018
|
*/
|
|
4010
4019
|
private getNodeCatchMeshes;
|
|
4011
4020
|
private createInstanceCatchMesh;
|
|
@@ -4015,6 +4024,9 @@ declare class InteractionModule {
|
|
|
4015
4024
|
private intersectsRect;
|
|
4016
4025
|
private getMergedBox;
|
|
4017
4026
|
private getSceneModel;
|
|
4027
|
+
/** 从射线命中的对象还原真实构件 ID,兼容炸开代理和普通模型对象。 */
|
|
4028
|
+
private getHitModelId;
|
|
4029
|
+
private getEngineNode;
|
|
4018
4030
|
}
|
|
4019
4031
|
|
|
4020
4032
|
declare class InteractionModule2d {
|
|
@@ -5539,6 +5551,9 @@ declare class ModelEdge {
|
|
|
5539
5551
|
private indexes;
|
|
5540
5552
|
private highlightIndexes;
|
|
5541
5553
|
private highlightEdgeSyncVersion;
|
|
5554
|
+
private explodeHidden;
|
|
5555
|
+
private groupVisibleBeforeExplode;
|
|
5556
|
+
private highlightVisibleBeforeExplode;
|
|
5542
5557
|
private getModelEntry;
|
|
5543
5558
|
private getOrCreateItemIndex;
|
|
5544
5559
|
private getEdgePointsByIndex;
|
|
@@ -5549,6 +5564,8 @@ declare class ModelEdge {
|
|
|
5549
5564
|
disActive(): void;
|
|
5550
5565
|
isEnabled(): boolean;
|
|
5551
5566
|
getOpacity(): number;
|
|
5567
|
+
/** 炸开期间临时隐藏所有边线;退出炸开时恢复进入炸开前的可见状态。 */
|
|
5568
|
+
setExplodeHidden(hidden: boolean): void;
|
|
5552
5569
|
update(): void;
|
|
5553
5570
|
private hasPendingModelEdges;
|
|
5554
5571
|
private loadZipJsonAsync;
|
|
@@ -5572,6 +5589,242 @@ declare class ModelEdge {
|
|
|
5572
5589
|
showModelEdge(url: string, id: Number): void;
|
|
5573
5590
|
}
|
|
5574
5591
|
|
|
5592
|
+
/**
|
|
5593
|
+
* 模型炸开管理器。
|
|
5594
|
+
*
|
|
5595
|
+
* 设计目标:
|
|
5596
|
+
* 1. 炸开期间不直接修改原始构件顶点,而是创建临时代理网格承载位移。
|
|
5597
|
+
* 2. 代理对象保留原始 url/id,点选、高亮、显隐、框选和双击定位仍按完整构件工作。
|
|
5598
|
+
* 3. 原始渲染对象被临时隐藏或拆分隐藏,避免原位模型与代理模型重复显示。
|
|
5599
|
+
* 4. 炸开期间临时隐藏边线,避免边线与代理模型出现错位。
|
|
5600
|
+
*/
|
|
5601
|
+
declare class ModelExplode {
|
|
5602
|
+
private engine;
|
|
5603
|
+
/** 当前是否处于炸开模式;供外部滑块、交互模块判断是否需要走代理逻辑。 */
|
|
5604
|
+
private active;
|
|
5605
|
+
/** 当前炸开倍数。真实代理位移 = record.offsetLocal * factor。 */
|
|
5606
|
+
private factor;
|
|
5607
|
+
/** 本轮炸开创建的所有代理记录,按渲染片段保存。 */
|
|
5608
|
+
private records;
|
|
5609
|
+
/** 非空时表示动画仍在推进,EngineKernel 每帧会调用 update。 */
|
|
5610
|
+
private animation;
|
|
5611
|
+
/** 炸开期间被临时隐藏的高亮/透明/自定义颜色运行时对象,reset 时恢复可见性。 */
|
|
5612
|
+
private hiddenRuntimeObjects;
|
|
5613
|
+
/** 炸开代理专用高亮材质,避免复用原高亮对象导致位置不同步。 */
|
|
5614
|
+
private readonly highlightMaterial;
|
|
5615
|
+
/** 炸开代理专用半透明材质,与原模型透明状态保持一致。 */
|
|
5616
|
+
private readonly translucentMaterial;
|
|
5617
|
+
/** 初始化代理材质,并继承当前剖切平面配置。 */
|
|
5618
|
+
constructor(engine: any);
|
|
5619
|
+
/**
|
|
5620
|
+
* 启动炸开模式。
|
|
5621
|
+
*
|
|
5622
|
+
* 流程:
|
|
5623
|
+
* 1. 清理上一轮代理并恢复边线显示状态,保证重复调用不会叠加状态。
|
|
5624
|
+
* 2. 解析目标构件,未指定 targets 时默认对所有已加载模型执行整模型炸开。
|
|
5625
|
+
* 3. 基于目标包围盒计算每个构件的基础世界位移 offsetWorld。
|
|
5626
|
+
* 4. 为普通网格或实例网格创建代理对象,并隐藏对应原始渲染片段。
|
|
5627
|
+
* 5. 同步当前高亮、隐藏、半透明、自定义颜色状态,并在炸开期间隐藏边线。
|
|
5628
|
+
*/
|
|
5629
|
+
explode(options?: ModelExplodeOptions): void;
|
|
5630
|
+
/**
|
|
5631
|
+
* 设置炸开系数,常用于外部滑杆实时控制。
|
|
5632
|
+
*
|
|
5633
|
+
* factor 只改变代理 position,不重新创建代理,因此拖动滑块时不会破坏
|
|
5634
|
+
* 构件的交互身份和材质状态。
|
|
5635
|
+
*/
|
|
5636
|
+
setFactor(factor: number): void;
|
|
5637
|
+
/**
|
|
5638
|
+
* 每帧推进炸开动画;由 EngineKernel 的主渲染循环调用。
|
|
5639
|
+
* 动画本质上只是在 from/to 之间插值 factor,最终仍复用 setFactor 的统一同步链路。
|
|
5640
|
+
*/
|
|
5641
|
+
update(): void;
|
|
5642
|
+
/**
|
|
5643
|
+
* 清理炸开代理并按当前构件状态恢复原始渲染对象。
|
|
5644
|
+
*
|
|
5645
|
+
* reset 不简单地把所有原对象显示出来,而是重新检查隐藏/高亮/半透明/自定义颜色状态,
|
|
5646
|
+
* 避免用户在炸开期间执行显隐或改色后,退出炸开时丢失业务状态。
|
|
5647
|
+
*/
|
|
5648
|
+
reset(): void;
|
|
5649
|
+
/** 释放炸开管理器持有的专用材质,通常由 EngineKernel 销毁时调用。 */
|
|
5650
|
+
dispose(): void;
|
|
5651
|
+
/** 返回当前是否处于炸开模式。 */
|
|
5652
|
+
isActive(): boolean;
|
|
5653
|
+
/**
|
|
5654
|
+
* 判断某个构件是否已由炸开代理接管。
|
|
5655
|
+
* 八叉树、拾取和框选逻辑可据此跳过原位对象,避免命中已隐藏但仍存在于场景中的源构件。
|
|
5656
|
+
*/
|
|
5657
|
+
hasRecord(url: string, id: any): boolean;
|
|
5658
|
+
/**
|
|
5659
|
+
* 从命中的代理对象还原真实构件 ID,避免 Object3D.name 字符串化造成 nodesMap 查询失败。
|
|
5660
|
+
*/
|
|
5661
|
+
getObjectComponentId(object: any): string | number | null;
|
|
5662
|
+
/**
|
|
5663
|
+
* 返回炸开后用于悬浮高亮的代理网格。
|
|
5664
|
+
* 一个构件可能拆成多个代理片段,调用方应把返回数组整体当作一个完整构件处理。
|
|
5665
|
+
*/
|
|
5666
|
+
getCatchMeshes(url: string, id: any): THREE.Mesh[];
|
|
5667
|
+
/**
|
|
5668
|
+
* 返回炸开后的构件世界包围盒,供框选、双击定位等交互使用。
|
|
5669
|
+
* 这里以代理对象的实时 matrixWorld 为准,因此滑块拖动和动画过程中也能得到正确位置。
|
|
5670
|
+
*/
|
|
5671
|
+
getExplodedWorldBox(url: string, id: any): THREE.Box3 | null;
|
|
5672
|
+
/**
|
|
5673
|
+
* 对炸开代理做独立射线拾取;返回结构与 three.js Raycaster 结果兼容。
|
|
5674
|
+
* 调用方命中代理后,需要再通过 getObjectComponentId 还原真实构件 id。
|
|
5675
|
+
*/
|
|
5676
|
+
raycast(raycaster: THREE.Raycaster): THREE.Intersection[];
|
|
5677
|
+
/**
|
|
5678
|
+
* 同步当前高亮、隐藏、半透明和自定义颜色状态到炸开代理。
|
|
5679
|
+
* 该方法在模型工具模块改变状态后调用,保证炸开期间仍支持完整构件交互。
|
|
5680
|
+
*/
|
|
5681
|
+
syncVisualState(): void;
|
|
5682
|
+
private resolveTargets;
|
|
5683
|
+
/**
|
|
5684
|
+
* 构建本轮炸开需要的空间上下文。
|
|
5685
|
+
* 这里提前缓存整体包围盒、模型中心和分组包围盒,避免每个构件重复遍历 nodesMap。
|
|
5686
|
+
*/
|
|
5687
|
+
private buildExplodeContext;
|
|
5688
|
+
/**
|
|
5689
|
+
* 计算单个构件或分组的基础世界位移。
|
|
5690
|
+
*
|
|
5691
|
+
* radial/type/major 模式按爆炸原点到构件中心的原始向量移动:
|
|
5692
|
+
* newCenter = origin + (center - origin) * (1 + factor),
|
|
5693
|
+
* 因此真正应用到代理上的位移是 (center - origin) * factor。
|
|
5694
|
+
*/
|
|
5695
|
+
private computeOffset;
|
|
5696
|
+
/** 获取本模型的爆炸原点;优先使用业务传入的世界坐标 origin。 */
|
|
5697
|
+
private getExplodeCenter;
|
|
5698
|
+
/**
|
|
5699
|
+
* 根据构件索引创建一条炸开记录。
|
|
5700
|
+
* node.indexes 中的每一项对应一个普通合并网格 group 或一个 InstancedMesh 实例。
|
|
5701
|
+
*/
|
|
5702
|
+
private createRecord;
|
|
5703
|
+
/** 为普通合并网格中的单个构件片段创建代理网格。 */
|
|
5704
|
+
private createMeshProxy;
|
|
5705
|
+
/**
|
|
5706
|
+
* 为 InstancedMesh 中的单个实例创建代理网格。
|
|
5707
|
+
* 实例矩阵会被烘焙进 geometry,后续炸开只移动代理 position,拾取也按普通 Mesh 处理。
|
|
5708
|
+
*/
|
|
5709
|
+
private createInstanceProxy;
|
|
5710
|
+
/** 给代理对象写入稳定交互身份,避免依赖 name 的字符串化 id。 */
|
|
5711
|
+
private assignProxyIdentity;
|
|
5712
|
+
/**
|
|
5713
|
+
* 隐藏源渲染片段,避免与代理对象重复显示。
|
|
5714
|
+
* 普通合并网格通过重建 geometry groups 隐藏局部片段,实例网格通过零缩放矩阵隐藏单个实例。
|
|
5715
|
+
*/
|
|
5716
|
+
private hideSource;
|
|
5717
|
+
/**
|
|
5718
|
+
* 恢复源渲染片段。
|
|
5719
|
+
* 如果构件在炸开期间仍处于隐藏、高亮、半透明或自定义颜色状态,实例源对象继续保持隐藏,
|
|
5720
|
+
* 由对应状态对象负责显示,避免 reset 后出现原模型和状态模型叠加。
|
|
5721
|
+
*/
|
|
5722
|
+
private restoreSource;
|
|
5723
|
+
/**
|
|
5724
|
+
* 确保普通合并网格已进入可按构件片段控制的拆分状态。
|
|
5725
|
+
* 第一次拆分时保存原始片段状态,后续重复同步不覆盖 sourceState。
|
|
5726
|
+
*/
|
|
5727
|
+
private ensureSplitState;
|
|
5728
|
+
/**
|
|
5729
|
+
* 根据每个构件片段的可见性和材质槽位重建 geometry groups。
|
|
5730
|
+
* 连续且材质一致的片段会被合并成一个 group,减少炸开期间状态切换带来的 draw call。
|
|
5731
|
+
*/
|
|
5732
|
+
private rebuildSplitModelGroups;
|
|
5733
|
+
/**
|
|
5734
|
+
* 将业务状态映射到代理对象。
|
|
5735
|
+
* 代理对象不能依赖原场景中的高亮/透明临时对象,因为那些对象仍位于原模型位置。
|
|
5736
|
+
*/
|
|
5737
|
+
private applyProxyVisualState;
|
|
5738
|
+
/**
|
|
5739
|
+
* 生成代理专用自定义颜色材质。
|
|
5740
|
+
* 颜色和透明度相同的请求复用 record.customMaterial,避免滑块或状态同步时反复创建材质。
|
|
5741
|
+
*/
|
|
5742
|
+
private getCustomMaterial;
|
|
5743
|
+
/**
|
|
5744
|
+
* 隐藏原模型位置上的运行时状态对象。
|
|
5745
|
+
* 高亮、半透明和自定义颜色模块通常会创建额外 mesh;炸开时这些 mesh 不会自动跟随代理,
|
|
5746
|
+
* 因此这里临时隐藏它们,并由代理自己承载相同视觉状态。
|
|
5747
|
+
*/
|
|
5748
|
+
private hideRuntimeObjectsForExplodedRecords;
|
|
5749
|
+
/** 恢复 hideRuntimeObjectsForExplodedRecords 临时隐藏的运行时对象。 */
|
|
5750
|
+
private restoreRuntimeObjects;
|
|
5751
|
+
/** 从场景中移除代理对象,并释放代理持有的 geometry 和材质资源。 */
|
|
5752
|
+
private removeProxy;
|
|
5753
|
+
/**
|
|
5754
|
+
* 克隆源材质用于代理。
|
|
5755
|
+
* 当前普通构件代理以主材质为准;高亮、半透明和自定义颜色会在 applyProxyVisualState 中覆盖。
|
|
5756
|
+
*/
|
|
5757
|
+
private cloneProxyMaterial;
|
|
5758
|
+
/**
|
|
5759
|
+
* 读取构件节点的世界包围盒。
|
|
5760
|
+
* 节点 box 通常是模型局部坐标,返回前统一乘以模型组的 matrixWorld。
|
|
5761
|
+
*/
|
|
5762
|
+
private getNodeWorldBox;
|
|
5763
|
+
/** 计算单个模型在世界坐标下的整体包围盒,作为默认爆炸原点的依据。 */
|
|
5764
|
+
private getModelWorldBox;
|
|
5765
|
+
/** 兼容数字 id 和字符串 id 的 nodesMap 查询。 */
|
|
5766
|
+
private getNode;
|
|
5767
|
+
/** 按 url 从引擎模型列表中查找模型条目。 */
|
|
5768
|
+
private getEngineModel;
|
|
5769
|
+
/**
|
|
5770
|
+
* 获取分组 key。
|
|
5771
|
+
* radial/axis 使用构件自身作为分组;level/type/major 使用映射信息让同组构件共享位移方向。
|
|
5772
|
+
*/
|
|
5773
|
+
private getGroupKey;
|
|
5774
|
+
/**
|
|
5775
|
+
* 获取 InstancedMesh 单个实例的原始矩阵。
|
|
5776
|
+
* 优先读取加载器缓存的 matrixsClone/matrixs,避免 getMatrixAt 读到已被隐藏流程改写后的零矩阵。
|
|
5777
|
+
*/
|
|
5778
|
+
private getInstanceMatrix;
|
|
5779
|
+
/**
|
|
5780
|
+
* 将世界坐标位移转换成某个父节点下的局部位移。
|
|
5781
|
+
* 代理对象挂在源 mesh 的父节点下,直接使用世界位移会在模型组存在变换时产生偏差。
|
|
5782
|
+
*/
|
|
5783
|
+
private worldDeltaToLocalDelta;
|
|
5784
|
+
/** 判断构件当前是否处于高亮状态。 */
|
|
5785
|
+
private isHighlighted;
|
|
5786
|
+
/** 判断构件当前是否处于隐藏状态。 */
|
|
5787
|
+
private isHidden;
|
|
5788
|
+
/** 判断构件当前是否处于半透明状态。 */
|
|
5789
|
+
private isTranslucent;
|
|
5790
|
+
/**
|
|
5791
|
+
* reset 时判断实例源对象是否仍应保持隐藏。
|
|
5792
|
+
* 某些状态由独立运行时对象或代理承担显示,如果直接恢复原实例会造成重复显示。
|
|
5793
|
+
*/
|
|
5794
|
+
private shouldKeepOriginalInstanceHidden;
|
|
5795
|
+
/** 统一比较构件 id,兼容业务侧传入数字或字符串。 */
|
|
5796
|
+
private isSameId;
|
|
5797
|
+
/** 归一化炸开系数,非法值按 0 处理,负数不允许反向收缩。 */
|
|
5798
|
+
private normalizeFactor;
|
|
5799
|
+
/** 将任意值转为稳定数字,用于 level 模式缺少可靠排序时生成确定性偏移。 */
|
|
5800
|
+
private getStableNumber;
|
|
5801
|
+
}
|
|
5802
|
+
|
|
5803
|
+
export declare type ModelExplodeAxis = 'x' | 'y' | 'z';
|
|
5804
|
+
|
|
5805
|
+
export declare type ModelExplodeMode = 'radial' | 'axis' | 'level' | 'type' | 'major';
|
|
5806
|
+
|
|
5807
|
+
/**
|
|
5808
|
+
* 炸开配置。
|
|
5809
|
+
* factor 表示炸开位移倍数:0 为原位,1 为基础位移,2 为基础位移的两倍。
|
|
5810
|
+
* origin 用世界坐标表达,未传时默认使用模型自身包围盒中心。
|
|
5811
|
+
*/
|
|
5812
|
+
export declare type ModelExplodeOptions = {
|
|
5813
|
+
targets?: ModelExplodeTarget[];
|
|
5814
|
+
factor?: number;
|
|
5815
|
+
mode?: ModelExplodeMode;
|
|
5816
|
+
axis?: ModelExplodeAxis;
|
|
5817
|
+
origin?: THREE.Vector3;
|
|
5818
|
+
animate?: boolean;
|
|
5819
|
+
duration?: number;
|
|
5820
|
+
};
|
|
5821
|
+
|
|
5822
|
+
/** 炸开目标。未传 ids 时表示对该 url 下的所有构件执行炸开。 */
|
|
5823
|
+
export declare type ModelExplodeTarget = {
|
|
5824
|
+
url: string;
|
|
5825
|
+
ids?: Array<string | number>;
|
|
5826
|
+
};
|
|
5827
|
+
|
|
5575
5828
|
/**
|
|
5576
5829
|
* 通过 window CustomEvent 实现同页面内多个 3D 引擎实例的轻量联动。
|
|
5577
5830
|
*/
|
|
@@ -5900,6 +6153,8 @@ declare class ModelToolModule {
|
|
|
5900
6153
|
private getModelGuids;
|
|
5901
6154
|
private restoreSplitModelsOnIdle;
|
|
5902
6155
|
getSceneModel(index: number): any;
|
|
6156
|
+
/** 炸开模式下,原模型状态变化后需要同步到代理构件,保证交互语义一致。 */
|
|
6157
|
+
private syncExplodeVisualState;
|
|
5903
6158
|
getModelCenter(models?: any[]): THREE.Vector3 | null;
|
|
5904
6159
|
updateMaterial(): void;
|
|
5905
6160
|
private syncHighlightModelEdges;
|