@soonspacejs/plugin-tiles 2.15.9 → 2.15.11
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/index.esm.js +383 -362
- package/dist/plot/plugins/types.d.ts +4 -2
- package/package.json +3 -3
package/dist/index.esm.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import R from "soonspacejs";
|
|
2
|
-
import { TilesRenderer as
|
|
3
|
-
import { GLTFLoader as
|
|
4
|
-
import { MathUtils as f, MeshBasicMaterial as
|
|
5
|
-
import { TilesFadePlugin as z, UpdateOnChangePlugin as B, QuantizedMeshPlugin as U, ImageOverlayPlugin as
|
|
6
|
-
import { CesiumGroundTextPrimitive as
|
|
7
|
-
import { createFineArrow as W, createCurvedArrow as
|
|
8
|
-
class
|
|
2
|
+
import { TilesRenderer as T } from "um-3d-tiles-renderer";
|
|
3
|
+
import { GLTFLoader as oe } from "three/examples/jsm/loaders/GLTFLoader.js";
|
|
4
|
+
import { MathUtils as f, MeshBasicMaterial as le, Color as L, PerspectiveCamera as q, Matrix4 as b, Vector3 as ve, Box3 as _e, Sphere as de, MeshStandardMaterial as Oe, ShaderMaterial as V } from "three";
|
|
5
|
+
import { TilesFadePlugin as z, UpdateOnChangePlugin as B, QuantizedMeshPlugin as U, ImageOverlayPlugin as he, XYZTilesOverlay as ue, ReorientationPlugin as j, StyledGeoJSONOverlay as Z, CesiumIonOverlay as Me, TMSTilesOverlay as Se, UrlTemplateTilesOverlay as we, WMSTilesOverlay as Ce, WMTSCapabilitiesLoader as be, WMTSTilesOverlay as Te, CesiumIonAuthPlugin as ce } from "um-3d-tiles-renderer/plugins";
|
|
6
|
+
import { CesiumGroundTextPrimitive as k, CesiumGroundPolylinePrimitive as I, CesiumGroundPolygonPrimitive as K, CesiumGroundCirclePrimitive as ee, CesiumGroundPointPrimitive as Pe, initializeApproximateTerrainHeights as xe, updateTerrainLogDepthUniforms as ke, CesiumGlobeDepth as Ee, CESIUM_GROUND_NON_PICKABLE_LAYER as Ie } from "cesium-to-three/ground";
|
|
7
|
+
import { createFineArrow as W, createCurvedArrow as pe, createSwallowtailAttackArrow as ge, createAttackArrow as fe, createAssaultDirectionArrow as ye } from "cesium-to-three/arrow";
|
|
8
|
+
class Re {
|
|
9
9
|
constructor(e) {
|
|
10
10
|
this.parser = e, this.name = "KHR_texture_basisu_patch";
|
|
11
11
|
}
|
|
12
12
|
loadTexture(e) {
|
|
13
|
-
const t = this.parser, r = t.json,
|
|
14
|
-
if (!
|
|
13
|
+
const t = this.parser, r = t.json, a = r.textures[e].source, n = r.images[a];
|
|
14
|
+
if (!n || n.mimeType !== "image/ktx2")
|
|
15
15
|
return null;
|
|
16
16
|
const o = t.options.ktx2Loader;
|
|
17
17
|
if (!o)
|
|
18
18
|
throw new Error(`${R.utils.consoleSspTitle}请使用 setModelKtx2DecoderPath 设置 ktx2 解压库路径`);
|
|
19
|
-
return t.loadTextureImage(e,
|
|
19
|
+
return t.loadTextureImage(e, a, o);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
class
|
|
22
|
+
class Mt {
|
|
23
23
|
constructor(e) {
|
|
24
24
|
this.ssp = e;
|
|
25
25
|
const { controls: t, viewport: r } = e;
|
|
@@ -49,12 +49,12 @@ class _t {
|
|
|
49
49
|
R.utils.warn(`${e} already loaded`);
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
|
-
const { ssp: t, ssp: { viewport: r } } = this, i = new
|
|
52
|
+
const { ssp: t, ssp: { viewport: r } } = this, i = new T(e);
|
|
53
53
|
this.lruCache === null ? this.lruCache = i.lruCache : i.lruCache = this.lruCache, this.parseQueue === null ? this.parseQueue = i.parseQueue : i.parseQueue = this.parseQueue, this.downloadQueue === null ? this.downloadQueue = i.downloadQueue : i.downloadQueue = this.downloadQueue;
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
const { dracoLoader:
|
|
57
|
-
|
|
54
|
+
const a = new oe(i.manager);
|
|
55
|
+
a.register((h) => new Re(h));
|
|
56
|
+
const { dracoLoader: n, ktx2Loader: o, meshoptDecoder: d } = t.manager.store.modelManager.gltfLoader;
|
|
57
|
+
n && a.setDRACOLoader(n), o && a.setKTX2Loader(o), d && a.setMeshoptDecoder(d), i.manager.addHandler(/\.gltf$/, a), this.tilesMap.set(e, i), i.setCamera(this._tilesCamera), i.setResolutionFromRenderer(this._tilesCamera, r.renderer), i.lruCache.maxSize = 600, i.lruCache.minSize = 300, i.lruCache.unloadPercent = 0.8, t.addObject(i.group);
|
|
58
58
|
const l = () => {
|
|
59
59
|
this.cameraTransitionStart || (this.needsUpdate = !0, t.render());
|
|
60
60
|
};
|
|
@@ -69,27 +69,27 @@ class _t {
|
|
|
69
69
|
return t ? (t.dispose(), this.tilesMap.delete(e), this.ssp.removeObject(t.group), !0) : !1;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
let
|
|
72
|
+
let Ne = class {
|
|
73
73
|
priority = -999;
|
|
74
74
|
processTileModel(e) {
|
|
75
75
|
e.traverse((t) => {
|
|
76
|
-
t.material && (t.material = new
|
|
76
|
+
t.material && (t.material = new le());
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
-
const
|
|
81
|
-
class
|
|
80
|
+
const Ae = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/";
|
|
81
|
+
class wt {
|
|
82
82
|
constructor(e) {
|
|
83
|
-
this.ssp = e, this.tiles = new
|
|
83
|
+
this.ssp = e, this.tiles = new T(Ae), this.tiles.fetchData = async (t, r) => {
|
|
84
84
|
if (/layer\.json$/.test(t)) {
|
|
85
|
-
const i = await fetch(t, r).then((
|
|
85
|
+
const i = await fetch(t, r).then((a) => a.json());
|
|
86
86
|
return i.metadataAvailability = -1, new Response(JSON.stringify(i));
|
|
87
87
|
}
|
|
88
88
|
return fetch(t, r);
|
|
89
|
-
}, this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), this.quantizedPlugin = new U({}), this.customMaterialPlugin = new
|
|
89
|
+
}, this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), this.quantizedPlugin = new U({}), this.customMaterialPlugin = new Ne(), this.imageOverlayPlugin = new he({
|
|
90
90
|
renderer: e.viewport.renderer,
|
|
91
91
|
overlays: [
|
|
92
|
-
new
|
|
92
|
+
new ue({
|
|
93
93
|
url: "https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"
|
|
94
94
|
})
|
|
95
95
|
]
|
|
@@ -124,16 +124,16 @@ class Mt {
|
|
|
124
124
|
}
|
|
125
125
|
invalidate(e, t, r) {
|
|
126
126
|
const i = () => {
|
|
127
|
-
const
|
|
127
|
+
const n = f.degToRad(t), o = f.degToRad(e);
|
|
128
128
|
this.reorientationPlugin.transformLatLonHeightToOrigin(
|
|
129
|
-
|
|
129
|
+
n,
|
|
130
130
|
o,
|
|
131
131
|
r
|
|
132
|
-
), this.ssp.render(),
|
|
133
|
-
},
|
|
132
|
+
), this.ssp.render(), a();
|
|
133
|
+
}, a = () => {
|
|
134
134
|
this.tiles.removeEventListener("load-root-tileset", i), this.loedTilesSets.delete(i);
|
|
135
135
|
};
|
|
136
|
-
return this.tiles.addEventListener("load-root-tileset", i), this.loedTilesSets.add(i), this.tiles.root && i(),
|
|
136
|
+
return this.tiles.addEventListener("load-root-tileset", i), this.loedTilesSets.add(i), this.tiles.root && i(), a;
|
|
137
137
|
}
|
|
138
138
|
dispose() {
|
|
139
139
|
this.disable(), this.loedTilesSets.forEach(
|
|
@@ -141,7 +141,7 @@ class Mt {
|
|
|
141
141
|
), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
class
|
|
144
|
+
class Le {
|
|
145
145
|
// 使用较低的 priority 确保在 ImageOverlayPlugin 之后执行
|
|
146
146
|
// ImageOverlayPlugin 默认 priority 是 -1
|
|
147
147
|
priority = -999;
|
|
@@ -152,7 +152,7 @@ class Ae {
|
|
|
152
152
|
*/
|
|
153
153
|
processTileModel(e) {
|
|
154
154
|
e.traverse((t) => {
|
|
155
|
-
t.material && (t.material = new
|
|
155
|
+
t.material && (t.material = new le());
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
@@ -184,7 +184,7 @@ class Ae {
|
|
|
184
184
|
e.needsUpdate = !0;
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
-
var u = /* @__PURE__ */ ((s) => (s.GEOJSON = "geojson", s.CESIUM_ION = "cesiumIon", s.TMS = "tms", s.XYZ = "xyz", s.WMS = "wms", s.WMTS = "wmts", s.URL_TEMPLATE = "urlTemplate", s.PLOT = "plot", s))(u || {}),
|
|
187
|
+
var u = /* @__PURE__ */ ((s) => (s.GEOJSON = "geojson", s.CESIUM_ION = "cesiumIon", s.TMS = "tms", s.XYZ = "xyz", s.WMS = "wms", s.WMTS = "wmts", s.URL_TEMPLATE = "urlTemplate", s.PLOT = "plot", s))(u || {}), M = /* @__PURE__ */ ((s) => (s.QUANTIZED_MESH = "quantizedMesh", s.CESIUM_ION = "cesiumIon", s))(M || {});
|
|
188
188
|
class N {
|
|
189
189
|
constructor(e, t) {
|
|
190
190
|
this.imageOverlayPlugin = e, this.resourceManager = t;
|
|
@@ -210,17 +210,17 @@ class N {
|
|
|
210
210
|
...this._getGeoJSONModeFlags(r)
|
|
211
211
|
};
|
|
212
212
|
e.color !== void 0 && (i.color = new L(e.color));
|
|
213
|
-
const
|
|
214
|
-
return t.addOverlay(
|
|
213
|
+
const a = new Z(i);
|
|
214
|
+
return t.addOverlay(a, e.order), this._instances.set(e.id, {
|
|
215
215
|
id: e.id,
|
|
216
216
|
type: e.type,
|
|
217
|
-
instance:
|
|
217
|
+
instance: a,
|
|
218
218
|
options: { ...e, mode: r }
|
|
219
219
|
}), this.resourceManager?.addOverlay({
|
|
220
220
|
id: e.id,
|
|
221
221
|
type: e.type,
|
|
222
222
|
options: e
|
|
223
|
-
}),
|
|
223
|
+
}), a;
|
|
224
224
|
}
|
|
225
225
|
updateGeoJSONColor(e, t) {
|
|
226
226
|
const r = this._instances.get(e);
|
|
@@ -231,62 +231,62 @@ class N {
|
|
|
231
231
|
updateGeoJSONDefaultStyle(e, t) {
|
|
232
232
|
const r = this._instances.get(e);
|
|
233
233
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
234
|
-
const i = r.instance,
|
|
235
|
-
...
|
|
234
|
+
const i = r.instance, a = r.options, n = {
|
|
235
|
+
...a.defaultStyle || {},
|
|
236
236
|
...t
|
|
237
237
|
}, o = {
|
|
238
|
-
...
|
|
239
|
-
defaultStyle:
|
|
238
|
+
...a,
|
|
239
|
+
defaultStyle: n
|
|
240
240
|
};
|
|
241
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle:
|
|
241
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { defaultStyle: n }), !0;
|
|
242
242
|
}
|
|
243
243
|
updateGeoJSONStrokeStyle(e, t) {
|
|
244
244
|
const r = this._instances.get(e);
|
|
245
245
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
246
|
-
const i = r.instance,
|
|
247
|
-
...
|
|
246
|
+
const i = r.instance, a = r.options, n = {
|
|
247
|
+
...a.defaultStyle || {},
|
|
248
248
|
strokeStyle: t
|
|
249
249
|
}, o = {
|
|
250
|
-
...
|
|
250
|
+
...a,
|
|
251
251
|
strokeStyle: t,
|
|
252
|
-
defaultStyle:
|
|
252
|
+
defaultStyle: n
|
|
253
253
|
};
|
|
254
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle:
|
|
254
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeStyle: t, defaultStyle: n }), !0;
|
|
255
255
|
}
|
|
256
256
|
updateGeoJSONStrokeWidth(e, t) {
|
|
257
257
|
const r = this._instances.get(e);
|
|
258
258
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
259
|
-
const i = r.instance,
|
|
260
|
-
...
|
|
259
|
+
const i = r.instance, a = r.options, n = {
|
|
260
|
+
...a.defaultStyle || {},
|
|
261
261
|
strokeWidth: t
|
|
262
262
|
}, o = {
|
|
263
|
-
...
|
|
263
|
+
...a,
|
|
264
264
|
strokeWidth: t,
|
|
265
|
-
defaultStyle:
|
|
265
|
+
defaultStyle: n
|
|
266
266
|
};
|
|
267
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle:
|
|
267
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { strokeWidth: t, defaultStyle: n }), !0;
|
|
268
268
|
}
|
|
269
269
|
updateGeoJSONFillStyle(e, t) {
|
|
270
270
|
const r = this._instances.get(e);
|
|
271
271
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
272
|
-
const i = r.instance,
|
|
273
|
-
...
|
|
272
|
+
const i = r.instance, a = r.options, n = {
|
|
273
|
+
...a.defaultStyle || {},
|
|
274
274
|
fillStyle: t
|
|
275
275
|
}, o = {
|
|
276
|
-
...
|
|
276
|
+
...a,
|
|
277
277
|
fillStyle: t,
|
|
278
|
-
defaultStyle:
|
|
278
|
+
defaultStyle: n
|
|
279
279
|
};
|
|
280
|
-
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle:
|
|
280
|
+
return i.defaultStyle = this._buildGeoJSONDefaultStyle(o, o.mode ?? "overlay"), this._updateOverlayOptions(e, { fillStyle: t, defaultStyle: n }), !0;
|
|
281
281
|
}
|
|
282
282
|
updateGeoJSONMode(e, t) {
|
|
283
283
|
const r = this._instances.get(e);
|
|
284
284
|
if (!r || r.type !== u.GEOJSON) return !1;
|
|
285
|
-
const i = r.instance,
|
|
285
|
+
const i = r.instance, a = {
|
|
286
286
|
...r.options,
|
|
287
287
|
mode: t
|
|
288
|
-
},
|
|
289
|
-
return i.alphaInvert =
|
|
288
|
+
}, n = this._getGeoJSONModeFlags(t);
|
|
289
|
+
return i.alphaInvert = n.alphaInvert, i.alphaMask = n.alphaMask, i.defaultStyle = this._buildGeoJSONDefaultStyle(a, t), i.requestUpdate?.(), this._updateOverlayOptions(e, { mode: t }), !0;
|
|
290
290
|
}
|
|
291
291
|
setGeoJSON(e, t) {
|
|
292
292
|
const r = this._instances.get(e);
|
|
@@ -301,8 +301,8 @@ class N {
|
|
|
301
301
|
setMergedGeoJSON(e, t, r) {
|
|
302
302
|
const i = this._instances.get(e);
|
|
303
303
|
if (!i || i.type !== u.GEOJSON) return null;
|
|
304
|
-
const
|
|
305
|
-
return this._updateOverlayOptions(e, { geojson:
|
|
304
|
+
const n = i.instance.setMergedGeoJSON(t, r);
|
|
305
|
+
return this._updateOverlayOptions(e, { geojson: n }), n;
|
|
306
306
|
}
|
|
307
307
|
getGeoJSONFeatureById(e, t) {
|
|
308
308
|
const r = this._instances.get(e);
|
|
@@ -328,7 +328,7 @@ class N {
|
|
|
328
328
|
addCesiumIonOverlay(e) {
|
|
329
329
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
330
330
|
if (!t) return null;
|
|
331
|
-
const r = new
|
|
331
|
+
const r = new Me({
|
|
332
332
|
assetId: e.assetId,
|
|
333
333
|
apiToken: e.apiToken,
|
|
334
334
|
autoRefreshToken: e.autoRefreshToken ?? !0,
|
|
@@ -350,7 +350,7 @@ class N {
|
|
|
350
350
|
addTMSOverlay(e) {
|
|
351
351
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
352
352
|
if (!t) return null;
|
|
353
|
-
const r = new
|
|
353
|
+
const r = new Se({
|
|
354
354
|
url: e.url,
|
|
355
355
|
color: typeof e.color == "number" ? e.color : 16777215,
|
|
356
356
|
opacity: e.opacity ?? 1
|
|
@@ -370,7 +370,7 @@ class N {
|
|
|
370
370
|
addXYZOverlay(e) {
|
|
371
371
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
372
372
|
if (!t) return null;
|
|
373
|
-
const r = new
|
|
373
|
+
const r = new ue({
|
|
374
374
|
url: e.url,
|
|
375
375
|
color: typeof e.color == "number" ? e.color : 16777215,
|
|
376
376
|
opacity: e.opacity ?? 1
|
|
@@ -421,7 +421,7 @@ class N {
|
|
|
421
421
|
addUrlTemplateOverlay(e) {
|
|
422
422
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
423
423
|
if (!t) return null;
|
|
424
|
-
const r = new
|
|
424
|
+
const r = new we({
|
|
425
425
|
url: e.url,
|
|
426
426
|
subdomains: e.subdomains,
|
|
427
427
|
levels: e.levels,
|
|
@@ -453,7 +453,7 @@ class N {
|
|
|
453
453
|
crs: e.crs || "EPSG:4326",
|
|
454
454
|
format: e.format || "image/png",
|
|
455
455
|
tileDimension: e.tileDimension || 256
|
|
456
|
-
}, i = new
|
|
456
|
+
}, i = new Ce({
|
|
457
457
|
url: e.url,
|
|
458
458
|
layer: r.layer,
|
|
459
459
|
crs: r.crs,
|
|
@@ -478,14 +478,14 @@ class N {
|
|
|
478
478
|
async addWMTSOverlay(e) {
|
|
479
479
|
const t = this._getImageOverlayPluginForAdd(e.id);
|
|
480
480
|
if (!t) return null;
|
|
481
|
-
const r = await new
|
|
482
|
-
let
|
|
483
|
-
r.layers.find((o) => o.identifier ===
|
|
481
|
+
const r = await new be().loadAsync(e.url), i = ["EPSG:4326", "EPSG:3857"];
|
|
482
|
+
let a = e.layer || "";
|
|
483
|
+
r.layers.find((o) => o.identifier === a) || (a = r.layers.find(
|
|
484
484
|
(o) => o?.tileMatrixSets?.some((d) => i.includes(d.supportedCRS))
|
|
485
485
|
)?.identifier || r.layers[0].identifier);
|
|
486
|
-
const
|
|
486
|
+
const n = new Te({
|
|
487
487
|
capabilities: r,
|
|
488
|
-
layer:
|
|
488
|
+
layer: a,
|
|
489
489
|
dimensions: e.dimensions || null,
|
|
490
490
|
style: e.style || void 0,
|
|
491
491
|
tileMatrixSet: e.tileMatrixSet || null,
|
|
@@ -493,16 +493,16 @@ class N {
|
|
|
493
493
|
color: new L(typeof e.color == "number" ? e.color : 16777215),
|
|
494
494
|
opacity: e.opacity ?? 1
|
|
495
495
|
});
|
|
496
|
-
return t.addOverlay(
|
|
496
|
+
return t.addOverlay(n, e.order), this._instances.set(e.id, {
|
|
497
497
|
id: e.id,
|
|
498
498
|
type: e.type,
|
|
499
|
-
instance:
|
|
499
|
+
instance: n,
|
|
500
500
|
options: { ...e }
|
|
501
501
|
}), this.resourceManager?.addOverlay({
|
|
502
502
|
id: e.id,
|
|
503
503
|
type: e.type,
|
|
504
504
|
options: e
|
|
505
|
-
}),
|
|
505
|
+
}), n;
|
|
506
506
|
}
|
|
507
507
|
// =============== 通用方法 ===============
|
|
508
508
|
/**
|
|
@@ -570,8 +570,8 @@ class N {
|
|
|
570
570
|
if (!t) return !1;
|
|
571
571
|
const r = this.imageOverlayPlugin.overlayInfo;
|
|
572
572
|
let i = 0;
|
|
573
|
-
return r.forEach((
|
|
574
|
-
|
|
573
|
+
return r.forEach((a) => {
|
|
574
|
+
a.order > i && (i = a.order);
|
|
575
575
|
}), this.imageOverlayPlugin.setOverlayOrder(t.instance, i + 1), this._updateOverlayOptions(e, { order: i + 1 }), !0;
|
|
576
576
|
}
|
|
577
577
|
/**
|
|
@@ -583,8 +583,8 @@ class N {
|
|
|
583
583
|
if (!t) return !1;
|
|
584
584
|
const r = this.imageOverlayPlugin.overlayInfo;
|
|
585
585
|
let i = 1 / 0;
|
|
586
|
-
return r.forEach((
|
|
587
|
-
|
|
586
|
+
return r.forEach((a) => {
|
|
587
|
+
a.order < i && (i = a.order);
|
|
588
588
|
}), this.imageOverlayPlugin.setOverlayOrder(t.instance, i - 1), this._updateOverlayOptions(e, { order: i - 1 }), !0;
|
|
589
589
|
}
|
|
590
590
|
// =============== 资源恢复 ===============
|
|
@@ -704,7 +704,7 @@ class N {
|
|
|
704
704
|
this.disposeInstances(), this.resourceManager?.clear();
|
|
705
705
|
}
|
|
706
706
|
}
|
|
707
|
-
class
|
|
707
|
+
class De {
|
|
708
708
|
/** Overlay 资源配置 */
|
|
709
709
|
_overlays = /* @__PURE__ */ new Map();
|
|
710
710
|
// =============== Overlay 资源管理 ===============
|
|
@@ -794,7 +794,7 @@ class Le {
|
|
|
794
794
|
e.overlays && (this._overlays.clear(), e.overlays.forEach((t) => this._overlays.set(t.id, { ...t })));
|
|
795
795
|
}
|
|
796
796
|
}
|
|
797
|
-
class
|
|
797
|
+
class Ge {
|
|
798
798
|
/** 地形配置映射表 */
|
|
799
799
|
_terrains = /* @__PURE__ */ new Map();
|
|
800
800
|
/** 当前激活的地形 ID */
|
|
@@ -883,8 +883,8 @@ class De {
|
|
|
883
883
|
this.clear();
|
|
884
884
|
}
|
|
885
885
|
}
|
|
886
|
-
let
|
|
887
|
-
class
|
|
886
|
+
let Fe = 1;
|
|
887
|
+
class O {
|
|
888
888
|
/** 自增字符串 id('1' / '2' / '3' ...) */
|
|
889
889
|
id;
|
|
890
890
|
/**
|
|
@@ -898,7 +898,7 @@ class _ {
|
|
|
898
898
|
*/
|
|
899
899
|
options;
|
|
900
900
|
constructor(e) {
|
|
901
|
-
this.id = String(
|
|
901
|
+
this.id = String(Fe++), this.category = "", this.options = { ...e }, this.options.points && (this.options.points = this.options.points.map(
|
|
902
902
|
(t) => [t[0], t[1]]
|
|
903
903
|
));
|
|
904
904
|
}
|
|
@@ -945,7 +945,7 @@ class _ {
|
|
|
945
945
|
return this.options.points || [];
|
|
946
946
|
}
|
|
947
947
|
}
|
|
948
|
-
class
|
|
948
|
+
class Je extends O {
|
|
949
949
|
category = "point";
|
|
950
950
|
constructor(e) {
|
|
951
951
|
super(e);
|
|
@@ -964,7 +964,7 @@ class Fe extends _ {
|
|
|
964
964
|
return this.getCenterPoints();
|
|
965
965
|
}
|
|
966
966
|
}
|
|
967
|
-
class
|
|
967
|
+
class Ue extends O {
|
|
968
968
|
category = "line";
|
|
969
969
|
constructor(e) {
|
|
970
970
|
super(e);
|
|
@@ -974,7 +974,7 @@ class Je extends _ {
|
|
|
974
974
|
this.options = { ...this.options, ...e };
|
|
975
975
|
}
|
|
976
976
|
}
|
|
977
|
-
class
|
|
977
|
+
class We extends O {
|
|
978
978
|
category = "polygon";
|
|
979
979
|
constructor(e) {
|
|
980
980
|
super(e);
|
|
@@ -984,7 +984,7 @@ class Ue extends _ {
|
|
|
984
984
|
this.options = { ...this.options, ...e };
|
|
985
985
|
}
|
|
986
986
|
}
|
|
987
|
-
class
|
|
987
|
+
class $e extends O {
|
|
988
988
|
category = "rectangle";
|
|
989
989
|
constructor(e) {
|
|
990
990
|
super(e);
|
|
@@ -994,8 +994,8 @@ class We extends _ {
|
|
|
994
994
|
this.options = { ...this.options, ...e };
|
|
995
995
|
}
|
|
996
996
|
}
|
|
997
|
-
const
|
|
998
|
-
class
|
|
997
|
+
const ze = f.DEG2RAD, te = 111320;
|
|
998
|
+
class Be extends O {
|
|
999
999
|
category = "sector";
|
|
1000
1000
|
constructor(e) {
|
|
1001
1001
|
super(e);
|
|
@@ -1008,14 +1008,14 @@ class ze extends _ {
|
|
|
1008
1008
|
getExtentPoints() {
|
|
1009
1009
|
const e = this.options.points;
|
|
1010
1010
|
if (!e || e.length === 0) return [];
|
|
1011
|
-
const t = e[0][0], r = e[0][1], i = this.options.radius || 0,
|
|
1011
|
+
const t = e[0][0], r = e[0][1], i = this.options.radius || 0, a = i / (te * Math.cos(r * ze)), n = i / te;
|
|
1012
1012
|
return [
|
|
1013
|
-
[t -
|
|
1014
|
-
[t +
|
|
1013
|
+
[t - a, r - n],
|
|
1014
|
+
[t + a, r + n]
|
|
1015
1015
|
];
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
1018
|
-
class
|
|
1018
|
+
class je extends O {
|
|
1019
1019
|
category = "arrow";
|
|
1020
1020
|
/** generateCoords() 填充的闭合多边形顶点;初始为空 */
|
|
1021
1021
|
generatedCoords = [];
|
|
@@ -1046,16 +1046,16 @@ class Be extends _ {
|
|
|
1046
1046
|
this.generatedCoords = W(e[0], e[1]);
|
|
1047
1047
|
break;
|
|
1048
1048
|
case "assaultDirection":
|
|
1049
|
-
this.generatedCoords =
|
|
1049
|
+
this.generatedCoords = ye(e[0], e[1]);
|
|
1050
1050
|
break;
|
|
1051
1051
|
case "attack":
|
|
1052
|
-
this.generatedCoords =
|
|
1052
|
+
this.generatedCoords = fe(e);
|
|
1053
1053
|
break;
|
|
1054
1054
|
case "swallowtailAttack":
|
|
1055
|
-
this.generatedCoords =
|
|
1055
|
+
this.generatedCoords = ge(e);
|
|
1056
1056
|
break;
|
|
1057
1057
|
case "curved":
|
|
1058
|
-
this.generatedCoords =
|
|
1058
|
+
this.generatedCoords = pe(e);
|
|
1059
1059
|
break;
|
|
1060
1060
|
default:
|
|
1061
1061
|
this.generatedCoords = W(e[0], e[e.length - 1]);
|
|
@@ -1085,7 +1085,7 @@ class Be extends _ {
|
|
|
1085
1085
|
};
|
|
1086
1086
|
}
|
|
1087
1087
|
}
|
|
1088
|
-
class
|
|
1088
|
+
class Qe extends O {
|
|
1089
1089
|
category = "text";
|
|
1090
1090
|
constructor(e) {
|
|
1091
1091
|
super(e);
|
|
@@ -1105,7 +1105,7 @@ class je extends _ {
|
|
|
1105
1105
|
}
|
|
1106
1106
|
}
|
|
1107
1107
|
const He = f.DEG2RAD, re = 111320;
|
|
1108
|
-
class
|
|
1108
|
+
class Xe extends O {
|
|
1109
1109
|
category = "circle";
|
|
1110
1110
|
constructor(e) {
|
|
1111
1111
|
super(e);
|
|
@@ -1118,27 +1118,27 @@ class Qe extends _ {
|
|
|
1118
1118
|
getExtentPoints() {
|
|
1119
1119
|
const e = this.options.points;
|
|
1120
1120
|
if (!e || e.length === 0) return [];
|
|
1121
|
-
const t = e[0][0], r = e[0][1], i = this.options.radius || 0,
|
|
1121
|
+
const t = e[0][0], r = e[0][1], i = this.options.radius || 0, a = i / (re * Math.cos(r * He)), n = i / re;
|
|
1122
1122
|
return [
|
|
1123
|
-
[t -
|
|
1124
|
-
[t +
|
|
1123
|
+
[t - a, r - n],
|
|
1124
|
+
[t + a, r + n]
|
|
1125
1125
|
];
|
|
1126
1126
|
}
|
|
1127
1127
|
}
|
|
1128
|
-
const
|
|
1129
|
-
function
|
|
1128
|
+
const Ye = 3, qe = 1e3;
|
|
1129
|
+
function Ve(s) {
|
|
1130
1130
|
return Number.isFinite(s) ? Math.max(Math.round(s), 0) : 0;
|
|
1131
1131
|
}
|
|
1132
|
-
function
|
|
1133
|
-
const e =
|
|
1132
|
+
function Ze(s) {
|
|
1133
|
+
const e = Ve(s), t = qe + e * Ye;
|
|
1134
1134
|
if (!Number.isSafeInteger(t))
|
|
1135
1135
|
throw new Error("Plot renderOrder exceeded JavaScript safe integer range.");
|
|
1136
1136
|
return t;
|
|
1137
1137
|
}
|
|
1138
1138
|
function ie(s) {
|
|
1139
|
-
return s instanceof I || s instanceof
|
|
1139
|
+
return s instanceof I || s instanceof k ? s.group : s.classification.group;
|
|
1140
1140
|
}
|
|
1141
|
-
function
|
|
1141
|
+
function Ke(s) {
|
|
1142
1142
|
const e = s.options, t = JSON.stringify(e.points ?? []);
|
|
1143
1143
|
switch (s.category) {
|
|
1144
1144
|
case "circle":
|
|
@@ -1150,22 +1150,34 @@ function Ze(s) {
|
|
|
1150
1150
|
case "arrow":
|
|
1151
1151
|
return `arrow|${t}|${e.arrowType}`;
|
|
1152
1152
|
case "line":
|
|
1153
|
-
return `line|${t}|${e.strokeStyle}|${e.startArrowStyle}|${e.endArrowStyle}`;
|
|
1153
|
+
return `line|${t}|${e.strokeStyle}|${e.showArrow}|${e.startArrowStyle}|${e.endArrowStyle}`;
|
|
1154
1154
|
case "text":
|
|
1155
1155
|
return `text|${t}|${e.content}|${e.fontSize}|${e.textAlign}|${e.verticalAlign}|${e.anchorX}|${e.anchorY}|${e.layoutDirection}|${e.rotation}|${e.boxWidth}|${e.boxHeight}|${JSON.stringify(e.padding)}|${e.offsetX}|${e.offsetY}|${e.scale}`;
|
|
1156
1156
|
default:
|
|
1157
1157
|
return `${s.category}|${t}`;
|
|
1158
1158
|
}
|
|
1159
1159
|
}
|
|
1160
|
-
function se(s) {
|
|
1161
|
-
|
|
1162
|
-
return { lengthMeters: e, widthMetersArrow: t };
|
|
1160
|
+
function se(s, e = "solid") {
|
|
1161
|
+
return s === "unfilledArrow" ? "open" : s === "filledArrow" ? "solid" : e;
|
|
1163
1162
|
}
|
|
1164
|
-
function
|
|
1163
|
+
function et(s) {
|
|
1164
|
+
if (s.showArrow === !1) return "none";
|
|
1165
|
+
const e = s.startArrowStyle !== void 0 && s.startArrowStyle !== null, t = s.endArrowStyle !== void 0 && s.endArrowStyle !== null;
|
|
1166
|
+
return e && t ? "both" : t ? "right" : e ? "left" : "none";
|
|
1167
|
+
}
|
|
1168
|
+
function ae(s) {
|
|
1169
|
+
const e = et(s), t = se(s.startArrowStyle), r = se(s.endArrowStyle);
|
|
1170
|
+
return {
|
|
1171
|
+
arrowMode: e,
|
|
1172
|
+
startArrowStyle: t,
|
|
1173
|
+
endArrowStyle: r
|
|
1174
|
+
};
|
|
1175
|
+
}
|
|
1176
|
+
function tt(s, e) {
|
|
1165
1177
|
const t = s.options;
|
|
1166
1178
|
return `${t.strokeColor}|${t.strokeWidth}|${t.strokeOpacity}|${t.fillColor}|${t.fillOpacity}|${e}|${t.fontColor ?? ""}|${t.fontSize ?? ""}`;
|
|
1167
1179
|
}
|
|
1168
|
-
class
|
|
1180
|
+
class rt {
|
|
1169
1181
|
/** 标绘 id → 渲染记录 */
|
|
1170
1182
|
_entries = /* @__PURE__ */ new Map();
|
|
1171
1183
|
/** 由 GroundDecalManager 写入的标绘集合(引用共享) */
|
|
@@ -1209,14 +1221,14 @@ class et {
|
|
|
1209
1221
|
this._shapes.has(t) || (this._scene.remove(r.group), r.primitive.dispose(), this._entries.delete(t));
|
|
1210
1222
|
let e = 0;
|
|
1211
1223
|
for (const [t, r] of this._shapes) {
|
|
1212
|
-
const i =
|
|
1224
|
+
const i = Ze(e);
|
|
1213
1225
|
e += 1;
|
|
1214
|
-
const
|
|
1215
|
-
if (
|
|
1216
|
-
this._refreshLightweight(
|
|
1226
|
+
const a = this._entries.get(t), n = Ke(r), o = tt(r, this._opacity);
|
|
1227
|
+
if (a !== void 0 && a.signature === n && (this._supportsStyleHotUpdate(a.primitive) || a.styleSignature === o)) {
|
|
1228
|
+
this._refreshLightweight(a, i), a.styleSignature = o;
|
|
1217
1229
|
continue;
|
|
1218
1230
|
}
|
|
1219
|
-
|
|
1231
|
+
a !== void 0 && (this._scene.remove(a.group), a.primitive.dispose(), this._entries.delete(t));
|
|
1220
1232
|
const d = this._buildPrimitive(r, i);
|
|
1221
1233
|
if (d === null) continue;
|
|
1222
1234
|
const l = ie(d);
|
|
@@ -1225,10 +1237,10 @@ class et {
|
|
|
1225
1237
|
plot: r,
|
|
1226
1238
|
primitive: d,
|
|
1227
1239
|
group: l,
|
|
1228
|
-
signature:
|
|
1240
|
+
signature: n,
|
|
1229
1241
|
styleSignature: o
|
|
1230
1242
|
};
|
|
1231
|
-
this._entries.set(t, h), d instanceof
|
|
1243
|
+
this._entries.set(t, h), d instanceof k && this._refreshLightweight(h, i);
|
|
1232
1244
|
}
|
|
1233
1245
|
}
|
|
1234
1246
|
/**
|
|
@@ -1253,7 +1265,7 @@ class et {
|
|
|
1253
1265
|
* 折线(setColor / setWidth)与文字(setText)支持;面类不支持,需重建。
|
|
1254
1266
|
*/
|
|
1255
1267
|
_supportsStyleHotUpdate(e) {
|
|
1256
|
-
return e instanceof I || e instanceof
|
|
1268
|
+
return e instanceof I || e instanceof k;
|
|
1257
1269
|
}
|
|
1258
1270
|
/**
|
|
1259
1271
|
* 几何未变时的轻量刷新:
|
|
@@ -1263,17 +1275,20 @@ class et {
|
|
|
1263
1275
|
*/
|
|
1264
1276
|
_refreshLightweight(e, t) {
|
|
1265
1277
|
if (e.group.visible = e.plot.options.visible !== !1, e.primitive.setRenderOrder?.(t), e.primitive instanceof I) {
|
|
1266
|
-
const r = e.plot.options
|
|
1278
|
+
const r = e.plot.options, {
|
|
1279
|
+
startArrowStyle: i,
|
|
1280
|
+
endArrowStyle: a
|
|
1281
|
+
} = ae(r);
|
|
1267
1282
|
e.primitive.setColor(
|
|
1268
1283
|
r.strokeColor,
|
|
1269
1284
|
(r.strokeOpacity ?? 100) * this._opacity
|
|
1270
1285
|
);
|
|
1271
|
-
const
|
|
1272
|
-
e.primitive.setWidth(i);
|
|
1273
|
-
const
|
|
1274
|
-
e.primitive.setArrowSizeMeters(
|
|
1286
|
+
const n = typeof r.strokeWidth == "number" && r.strokeWidth > 0 ? r.strokeWidth : 5;
|
|
1287
|
+
e.primitive.setWidth(n), e.primitive.setArrowStyles(i, a);
|
|
1288
|
+
const o = Math.max(n * 4, 1), d = Math.max(n * 3, 0.8);
|
|
1289
|
+
e.primitive.setArrowSizeMeters(o, d), e.primitive.setVisible(r.visible !== !1);
|
|
1275
1290
|
}
|
|
1276
|
-
if (e.primitive instanceof
|
|
1291
|
+
if (e.primitive instanceof k) {
|
|
1277
1292
|
const r = e.plot.options;
|
|
1278
1293
|
e.primitive.setText({
|
|
1279
1294
|
content: r.content,
|
|
@@ -1308,18 +1323,18 @@ class et {
|
|
|
1308
1323
|
* @returns 渲染图元;未知类型 / 退化情况返回 null。
|
|
1309
1324
|
*/
|
|
1310
1325
|
_buildPrimitive(e, t) {
|
|
1311
|
-
const r = e.options, i = r.points ?? [],
|
|
1326
|
+
const r = e.options, i = r.points ?? [], a = this._opacity, n = (r.strokeOpacity ?? 100) * a, o = (r.fillOpacity ?? 100) * a, d = r.visible !== !1;
|
|
1312
1327
|
switch (e.category) {
|
|
1313
1328
|
case "point": {
|
|
1314
1329
|
if (i.length === 0) return null;
|
|
1315
1330
|
const l = r;
|
|
1316
|
-
return new
|
|
1331
|
+
return new Pe({
|
|
1317
1332
|
position: i[0],
|
|
1318
1333
|
shape: l.pointStyle ?? "circle",
|
|
1319
1334
|
size: l.size ?? 100,
|
|
1320
1335
|
strokeColor: l.strokeColor,
|
|
1321
1336
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1322
|
-
strokeOpacity:
|
|
1337
|
+
strokeOpacity: n,
|
|
1323
1338
|
fillColor: l.fillColor,
|
|
1324
1339
|
fillOpacity: o,
|
|
1325
1340
|
visible: d,
|
|
@@ -1334,7 +1349,7 @@ class et {
|
|
|
1334
1349
|
radius: l.radius ?? 100,
|
|
1335
1350
|
strokeColor: l.strokeColor,
|
|
1336
1351
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1337
|
-
strokeOpacity:
|
|
1352
|
+
strokeOpacity: n,
|
|
1338
1353
|
fillColor: l.fillColor,
|
|
1339
1354
|
fillOpacity: o,
|
|
1340
1355
|
visible: d,
|
|
@@ -1349,7 +1364,7 @@ class et {
|
|
|
1349
1364
|
radius: l.radius ?? 100,
|
|
1350
1365
|
strokeColor: l.strokeColor,
|
|
1351
1366
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1352
|
-
strokeOpacity:
|
|
1367
|
+
strokeOpacity: n,
|
|
1353
1368
|
fillColor: l.fillColor,
|
|
1354
1369
|
fillOpacity: o,
|
|
1355
1370
|
visible: d,
|
|
@@ -1364,7 +1379,7 @@ class et {
|
|
|
1364
1379
|
points: i,
|
|
1365
1380
|
strokeColor: r.strokeColor,
|
|
1366
1381
|
strokeWidth: r.strokeWidth ?? 0,
|
|
1367
|
-
strokeOpacity:
|
|
1382
|
+
strokeOpacity: n,
|
|
1368
1383
|
fillColor: r.fillColor,
|
|
1369
1384
|
fillOpacity: o,
|
|
1370
1385
|
visible: d,
|
|
@@ -1378,7 +1393,7 @@ class et {
|
|
|
1378
1393
|
points: l,
|
|
1379
1394
|
strokeColor: h.strokeColor,
|
|
1380
1395
|
strokeWidth: h.strokeWidth ?? 0,
|
|
1381
|
-
strokeOpacity:
|
|
1396
|
+
strokeOpacity: n,
|
|
1382
1397
|
fillColor: h.fillColor,
|
|
1383
1398
|
fillOpacity: o,
|
|
1384
1399
|
visible: d,
|
|
@@ -1387,28 +1402,34 @@ class et {
|
|
|
1387
1402
|
}
|
|
1388
1403
|
case "line": {
|
|
1389
1404
|
if (i.length < 2) return null;
|
|
1390
|
-
const l = r,
|
|
1405
|
+
const l = r, {
|
|
1406
|
+
arrowMode: h,
|
|
1407
|
+
startArrowStyle: c,
|
|
1408
|
+
endArrowStyle: y
|
|
1409
|
+
} = ae(l), _ = l.strokeStyle === "dashed", p = _ ? 60 : void 0, g = _ ? 40 : void 0, m = typeof l.strokeWidth == "number" && l.strokeWidth > 0 ? l.strokeWidth : 5, S = Math.max(m * 4, 1), w = Math.max(m * 3, 0.8);
|
|
1391
1410
|
return new I({
|
|
1392
1411
|
points: i,
|
|
1393
1412
|
strokeColor: l.strokeColor,
|
|
1394
|
-
strokeOpacity:
|
|
1413
|
+
strokeOpacity: n,
|
|
1395
1414
|
widthMode: "world",
|
|
1396
|
-
widthMeters:
|
|
1415
|
+
widthMeters: m,
|
|
1397
1416
|
visible: d,
|
|
1398
|
-
arrowMode:
|
|
1399
|
-
arrowStyle:
|
|
1417
|
+
arrowMode: h,
|
|
1418
|
+
arrowStyle: c,
|
|
1419
|
+
startArrowStyle: c,
|
|
1420
|
+
endArrowStyle: y,
|
|
1400
1421
|
arrowWidthMode: "world",
|
|
1401
|
-
arrowLengthMeters:
|
|
1402
|
-
arrowWidthMeters:
|
|
1403
|
-
dashLengthMeters:
|
|
1404
|
-
gapLengthMeters:
|
|
1422
|
+
arrowLengthMeters: S,
|
|
1423
|
+
arrowWidthMeters: w,
|
|
1424
|
+
dashLengthMeters: p,
|
|
1425
|
+
gapLengthMeters: g,
|
|
1405
1426
|
renderOrder: t
|
|
1406
1427
|
});
|
|
1407
1428
|
}
|
|
1408
1429
|
case "text": {
|
|
1409
1430
|
if (i.length === 0) return null;
|
|
1410
1431
|
const l = r;
|
|
1411
|
-
return new
|
|
1432
|
+
return new k({
|
|
1412
1433
|
points: [i[0]],
|
|
1413
1434
|
content: l.content,
|
|
1414
1435
|
fontColor: l.fontColor,
|
|
@@ -1416,7 +1437,7 @@ class et {
|
|
|
1416
1437
|
fillColor: l.fillColor,
|
|
1417
1438
|
fillOpacity: o,
|
|
1418
1439
|
strokeColor: l.strokeColor,
|
|
1419
|
-
strokeOpacity:
|
|
1440
|
+
strokeOpacity: n,
|
|
1420
1441
|
strokeWidth: l.strokeWidth ?? 0,
|
|
1421
1442
|
textAlign: l.textAlign,
|
|
1422
1443
|
verticalAlign: l.verticalAlign,
|
|
@@ -1442,7 +1463,7 @@ class et {
|
|
|
1442
1463
|
}
|
|
1443
1464
|
}
|
|
1444
1465
|
}
|
|
1445
|
-
class
|
|
1466
|
+
class it {
|
|
1446
1467
|
/** 标绘 id → 实例;与桥接器的 shapes 共用同一引用 */
|
|
1447
1468
|
_items = /* @__PURE__ */ new Map();
|
|
1448
1469
|
/** 标绘管理器 id(对外常量,保持与参考项目一致) */
|
|
@@ -1456,7 +1477,7 @@ class tt {
|
|
|
1456
1477
|
/** 合并同一帧内多次 _markDirty,值为 requestAnimationFrame 句柄 */
|
|
1457
1478
|
_redrawTimer = null;
|
|
1458
1479
|
constructor(e) {
|
|
1459
|
-
this.ssp = e.ssp, this._bridge = new
|
|
1480
|
+
this.ssp = e.ssp, this._bridge = new rt({ scene: e.ssp.viewport.scene });
|
|
1460
1481
|
}
|
|
1461
1482
|
/** 暴露内部桥接器,业务若需自定义场景接入可选择性使用 */
|
|
1462
1483
|
get bridge() {
|
|
@@ -1489,42 +1510,42 @@ class tt {
|
|
|
1489
1510
|
switch (e.type) {
|
|
1490
1511
|
case "point": {
|
|
1491
1512
|
const { type: r, ...i } = e;
|
|
1492
|
-
t = new
|
|
1513
|
+
t = new Je(i);
|
|
1493
1514
|
break;
|
|
1494
1515
|
}
|
|
1495
1516
|
case "line": {
|
|
1496
1517
|
const { type: r, ...i } = e;
|
|
1497
|
-
t = new
|
|
1518
|
+
t = new Ue(i);
|
|
1498
1519
|
break;
|
|
1499
1520
|
}
|
|
1500
1521
|
case "polygon": {
|
|
1501
1522
|
const { type: r, ...i } = e;
|
|
1502
|
-
t = new
|
|
1523
|
+
t = new We(i);
|
|
1503
1524
|
break;
|
|
1504
1525
|
}
|
|
1505
1526
|
case "rectangle": {
|
|
1506
1527
|
const { type: r, ...i } = e;
|
|
1507
|
-
t = new
|
|
1528
|
+
t = new $e(i);
|
|
1508
1529
|
break;
|
|
1509
1530
|
}
|
|
1510
1531
|
case "circle": {
|
|
1511
1532
|
const { type: r, ...i } = e;
|
|
1512
|
-
t = new
|
|
1533
|
+
t = new Xe(i);
|
|
1513
1534
|
break;
|
|
1514
1535
|
}
|
|
1515
1536
|
case "sector": {
|
|
1516
1537
|
const { type: r, ...i } = e;
|
|
1517
|
-
t = new
|
|
1538
|
+
t = new Be(i);
|
|
1518
1539
|
break;
|
|
1519
1540
|
}
|
|
1520
1541
|
case "text": {
|
|
1521
1542
|
const { type: r, ...i } = e;
|
|
1522
|
-
t = new
|
|
1543
|
+
t = new Qe(i);
|
|
1523
1544
|
break;
|
|
1524
1545
|
}
|
|
1525
1546
|
case "arrow": {
|
|
1526
1547
|
const { type: r, ...i } = e;
|
|
1527
|
-
t = new
|
|
1548
|
+
t = new je(i);
|
|
1528
1549
|
break;
|
|
1529
1550
|
}
|
|
1530
1551
|
default:
|
|
@@ -1594,8 +1615,8 @@ class tt {
|
|
|
1594
1615
|
insertCoord(e, t, r) {
|
|
1595
1616
|
const i = this._items.get(e);
|
|
1596
1617
|
if (!i || !i.options.points) return;
|
|
1597
|
-
const
|
|
1598
|
-
i.options.points.splice(
|
|
1618
|
+
const a = Math.max(0, Math.min(t, i.options.points.length));
|
|
1619
|
+
i.options.points.splice(a, 0, [...r]), this._markDirty();
|
|
1599
1620
|
}
|
|
1600
1621
|
/**
|
|
1601
1622
|
* 删除指定下标顶点。多边形至少保留 3 点,其余至少 2 点;越界 / 触底静默返回。
|
|
@@ -1612,8 +1633,8 @@ class tt {
|
|
|
1612
1633
|
translateCoords(e, t, r) {
|
|
1613
1634
|
const i = this._items.get(e);
|
|
1614
1635
|
if (!(!i || !i.options.points)) {
|
|
1615
|
-
for (const
|
|
1616
|
-
|
|
1636
|
+
for (const a of i.options.points)
|
|
1637
|
+
a[0] += t, a[1] += r;
|
|
1617
1638
|
this._markDirty();
|
|
1618
1639
|
}
|
|
1619
1640
|
}
|
|
@@ -1643,12 +1664,12 @@ class tt {
|
|
|
1643
1664
|
findNearestCoord(e, t, r) {
|
|
1644
1665
|
const i = this._items.get(e);
|
|
1645
1666
|
if (!i || !i.options.points || i.options.points.length === 0) return -1;
|
|
1646
|
-
let
|
|
1667
|
+
let a = 0, n = 1 / 0;
|
|
1647
1668
|
for (let o = 0; o < i.options.points.length; o++) {
|
|
1648
1669
|
const d = i.options.points[o][0] - t, l = i.options.points[o][1] - r, h = d * d + l * l;
|
|
1649
|
-
h <
|
|
1670
|
+
h < n && (n = h, a = o);
|
|
1650
1671
|
}
|
|
1651
|
-
return
|
|
1672
|
+
return a;
|
|
1652
1673
|
}
|
|
1653
1674
|
// ── 渲染接入 ──
|
|
1654
1675
|
/**
|
|
@@ -1681,22 +1702,22 @@ class tt {
|
|
|
1681
1702
|
}));
|
|
1682
1703
|
}
|
|
1683
1704
|
}
|
|
1684
|
-
const
|
|
1685
|
-
class
|
|
1705
|
+
const st = "https://sooncps.xwbuilders.com/api/ugis-dataprocess/v1/terrain/NhBLlMx3/", at = "https://c.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png";
|
|
1706
|
+
class Ct {
|
|
1686
1707
|
constructor(e, t = {}) {
|
|
1687
1708
|
this.ssp = e, this.options = t;
|
|
1688
|
-
const r = t.baseUrl ||
|
|
1689
|
-
if (this.resourceManager = new
|
|
1690
|
-
const i = t.imageryUrl ||
|
|
1709
|
+
const r = t.baseUrl || st;
|
|
1710
|
+
if (this.resourceManager = new De(), this.terrainManager = new Ge(), t.imageryUrl !== !1) {
|
|
1711
|
+
const i = t.imageryUrl || at;
|
|
1691
1712
|
this.resourceManager.addOverlay({
|
|
1692
1713
|
id: this.defaultImageryId,
|
|
1693
1714
|
type: u.XYZ,
|
|
1694
1715
|
options: { id: this.defaultImageryId, url: i, type: u.XYZ }
|
|
1695
1716
|
});
|
|
1696
1717
|
}
|
|
1697
|
-
this.groundDecalManager = new
|
|
1718
|
+
this.groundDecalManager = new it({ ssp: this.ssp }), xe(), this._alphaClipMode = t.alphaClipMode ?? "alphaTest", this._currentTerrainConfig = {
|
|
1698
1719
|
id: this.defaultTerrainId,
|
|
1699
|
-
type:
|
|
1720
|
+
type: M.QUANTIZED_MESH,
|
|
1700
1721
|
url: r
|
|
1701
1722
|
}, this.terrainManager.add(this._currentTerrainConfig), this.terrainManager.setCurrentId(this._currentTerrainConfig.id), this.tiles = this._initTilesRenderer(this._currentTerrainConfig), this._initPlugins(this.tiles, this._currentTerrainConfig);
|
|
1702
1723
|
}
|
|
@@ -1716,8 +1737,8 @@ class St {
|
|
|
1716
1737
|
* ECEF 相机投影才能与「重定向后地形」对齐,同时保持 reorientation 开启(地形不抖)。
|
|
1717
1738
|
*/
|
|
1718
1739
|
_plotVirtualCamera = new q();
|
|
1719
|
-
_reorientInverse = new
|
|
1720
|
-
_virtualScale = new
|
|
1740
|
+
_reorientInverse = new b();
|
|
1741
|
+
_virtualScale = new ve();
|
|
1721
1742
|
/** 资源管理器(存储配置) */
|
|
1722
1743
|
resourceManager;
|
|
1723
1744
|
/** 地形管理器(记录地形列表) */
|
|
@@ -1738,7 +1759,7 @@ class St {
|
|
|
1738
1759
|
* 是否使用 Cesium Ion 地形
|
|
1739
1760
|
*/
|
|
1740
1761
|
get isCesiumIon() {
|
|
1741
|
-
return this._currentTerrainConfig.type ===
|
|
1762
|
+
return this._currentTerrainConfig.type === M.CESIUM_ION;
|
|
1742
1763
|
}
|
|
1743
1764
|
/**
|
|
1744
1765
|
* 获取当前地形配置
|
|
@@ -1784,9 +1805,9 @@ class St {
|
|
|
1784
1805
|
this._alphaClipMode = e, this.customMaterialPlugin && (this.customMaterialPlugin.alphaClipMode = e), this._updateAlphaClipMode(), this.render();
|
|
1785
1806
|
}
|
|
1786
1807
|
_initTilesRenderer(e) {
|
|
1787
|
-
return e.type ===
|
|
1808
|
+
return e.type === M.CESIUM_ION ? new T() : (
|
|
1788
1809
|
// Cesium Ion 由插件设置 URL
|
|
1789
|
-
new
|
|
1810
|
+
new T(e.url)
|
|
1790
1811
|
);
|
|
1791
1812
|
}
|
|
1792
1813
|
/**
|
|
@@ -1794,8 +1815,8 @@ class St {
|
|
|
1794
1815
|
* @param config 地形配置
|
|
1795
1816
|
*/
|
|
1796
1817
|
_initPlugins(e, t) {
|
|
1797
|
-
if (this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type ===
|
|
1798
|
-
new
|
|
1818
|
+
if (this.tilesFadePlugin = new z({ maximumFadeOutTiles: 200 }), this.updateOnChangePlugin = new B(), e.registerPlugin(this.tilesFadePlugin), e.registerPlugin(this.updateOnChangePlugin), t.type === M.CESIUM_ION ? e.registerPlugin(
|
|
1819
|
+
new ce({
|
|
1799
1820
|
apiToken: t.apiToken,
|
|
1800
1821
|
assetId: t.assetId || "1",
|
|
1801
1822
|
autoRefreshToken: t.autoRefreshToken ?? !0,
|
|
@@ -1810,11 +1831,11 @@ class St {
|
|
|
1810
1831
|
), e.fetchData = async (r) => {
|
|
1811
1832
|
const i = { method: "GET", mode: "cors" };
|
|
1812
1833
|
if (/layer\.json$/.test(r)) {
|
|
1813
|
-
const
|
|
1814
|
-
return
|
|
1834
|
+
const a = await fetch(r, i).then((n) => n.json());
|
|
1835
|
+
return a.metadataAvailability = -1, new Response(JSON.stringify(a));
|
|
1815
1836
|
}
|
|
1816
1837
|
return fetch(r, i);
|
|
1817
|
-
}), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new
|
|
1838
|
+
}), this.options.useCustomMaterial !== !1 && (this.customMaterialPlugin = new Le(), this.customMaterialPlugin.alphaClipMode = this._alphaClipMode, e.registerPlugin(this.customMaterialPlugin)), this.imageOverlayPlugin = new he({
|
|
1818
1839
|
renderer: this.ssp.viewport.renderer,
|
|
1819
1840
|
overlays: []
|
|
1820
1841
|
}), e.registerPlugin(this.imageOverlayPlugin), this._ensureGlobeDepth(), this.overlayManager = new N(
|
|
@@ -1878,7 +1899,7 @@ class St {
|
|
|
1878
1899
|
setTerrain(e, t = void 0) {
|
|
1879
1900
|
if (t && (this.options = { ...this.options, ...t }), this.terrainManager.has(e.id) || this.terrainManager.add(e), this.terrainManager.setCurrentId(e.id), this.terrainManager.currentId === e.id) {
|
|
1880
1901
|
const r = this.terrainManager.getCurrent();
|
|
1881
|
-
e.type ===
|
|
1902
|
+
e.type === M.QUANTIZED_MESH && r?.type === M.QUANTIZED_MESH && (r.url = e.url);
|
|
1882
1903
|
}
|
|
1883
1904
|
this._disposeTilesRenderer(), this._currentTerrainConfig = e, this.tiles = this._initTilesRenderer(e), this._initPlugins(this.tiles, e), this._enabled && this.ssp.addObject(this.tiles.group), this.render();
|
|
1884
1905
|
}
|
|
@@ -2049,13 +2070,13 @@ class St {
|
|
|
2049
2070
|
beforeRenderHandler = () => {
|
|
2050
2071
|
const { camera: e, renderer: t, scene: r } = this.ssp.viewport;
|
|
2051
2072
|
if (e.updateMatrixWorld(), this.tiles.setCamera(e), this.tiles.setResolutionFromRenderer(e, t), this.tiles.update(), this.groundDecalManager && e instanceof q) {
|
|
2052
|
-
const i = this._ensureGlobeDepth(),
|
|
2053
|
-
(i.target.width !==
|
|
2073
|
+
const i = this._ensureGlobeDepth(), a = t.domElement.width, n = t.domElement.height;
|
|
2074
|
+
(i.target.width !== a || i.target.height !== n) && i.resize(a, n), ke(e.near, e.far), i.render(t, e, r, this.tiles.group);
|
|
2054
2075
|
const o = this._buildPlotVirtualCamera(e);
|
|
2055
2076
|
this.groundDecalManager.update({
|
|
2056
2077
|
depthTexture: i.target.texture,
|
|
2057
|
-
width:
|
|
2058
|
-
height:
|
|
2078
|
+
width: a,
|
|
2079
|
+
height: n,
|
|
2059
2080
|
camera: o,
|
|
2060
2081
|
pixelRatio: t.getPixelRatio()
|
|
2061
2082
|
});
|
|
@@ -2087,7 +2108,7 @@ class St {
|
|
|
2087
2108
|
_ensureGlobeDepth() {
|
|
2088
2109
|
if (!this._globeDepth) {
|
|
2089
2110
|
const { renderer: e } = this.ssp.viewport;
|
|
2090
|
-
this._globeDepth = new
|
|
2111
|
+
this._globeDepth = new Ee(
|
|
2091
2112
|
e.domElement.width,
|
|
2092
2113
|
e.domElement.height
|
|
2093
2114
|
);
|
|
@@ -2095,7 +2116,7 @@ class St {
|
|
|
2095
2116
|
return this._globeDepth;
|
|
2096
2117
|
}
|
|
2097
2118
|
enable() {
|
|
2098
|
-
this._enabled = !0, this.ssp.viewport.camera.layers.enable(
|
|
2119
|
+
this._enabled = !0, this.ssp.viewport.camera.layers.enable(Ie), this.ssp.addObject(this.tiles.group), this.ssp.signals.beforeRender.add(this.beforeRenderHandler);
|
|
2099
2120
|
}
|
|
2100
2121
|
disable() {
|
|
2101
2122
|
this._enabled = !1, this.ssp.removeObject(this.tiles.group), this.ssp.signals.beforeRender.remove(this.beforeRenderHandler);
|
|
@@ -2112,13 +2133,13 @@ class St {
|
|
|
2112
2133
|
lat: t,
|
|
2113
2134
|
height: r
|
|
2114
2135
|
};
|
|
2115
|
-
const
|
|
2136
|
+
const a = () => {
|
|
2116
2137
|
const o = f.degToRad(t), d = f.degToRad(e);
|
|
2117
|
-
i.transformLatLonHeightToOrigin(o, d, r), this.render(),
|
|
2118
|
-
},
|
|
2119
|
-
this.tiles.removeEventListener("load-root-tileset",
|
|
2138
|
+
i.transformLatLonHeightToOrigin(o, d, r), this.render(), n();
|
|
2139
|
+
}, n = () => {
|
|
2140
|
+
this.tiles.removeEventListener("load-root-tileset", a), this.loedTilesSets.delete(a);
|
|
2120
2141
|
};
|
|
2121
|
-
return this.tiles.addEventListener("load-root-tileset",
|
|
2142
|
+
return this.tiles.addEventListener("load-root-tileset", a), this.loedTilesSets.add(a), this.tiles.root && a(), n;
|
|
2122
2143
|
}
|
|
2123
2144
|
dispose() {
|
|
2124
2145
|
this.disable(), this.terrainManager.dispose(), this.overlayManager.dispose(), this.groundDecalManager?.dispose(), this._globeDepth?.dispose(), this._globeDepth = void 0, this.loedTilesSets.forEach(
|
|
@@ -2126,12 +2147,12 @@ class St {
|
|
|
2126
2147
|
), this.loedTilesSets.clear(), this.tiles.removeEventListener("needs-render", this.render), this.tiles.removeEventListener("needs-update", this.render), this.tiles.dispose();
|
|
2127
2148
|
}
|
|
2128
2149
|
}
|
|
2129
|
-
const
|
|
2150
|
+
const C = {
|
|
2130
2151
|
DEFAULT: 0,
|
|
2131
2152
|
GRADIENT: 1,
|
|
2132
2153
|
TOPOGRAPHIC_LINES: 2,
|
|
2133
2154
|
LIGHTING: 3
|
|
2134
|
-
},
|
|
2155
|
+
}, nt = {
|
|
2135
2156
|
vertexShader: (
|
|
2136
2157
|
/* glsl */
|
|
2137
2158
|
`
|
|
@@ -2157,7 +2178,7 @@ const T = {
|
|
|
2157
2178
|
}
|
|
2158
2179
|
`
|
|
2159
2180
|
)
|
|
2160
|
-
},
|
|
2181
|
+
}, ot = {
|
|
2161
2182
|
vertexShader: (
|
|
2162
2183
|
/* glsl */
|
|
2163
2184
|
`
|
|
@@ -2204,9 +2225,9 @@ const T = {
|
|
|
2204
2225
|
)
|
|
2205
2226
|
};
|
|
2206
2227
|
let D = null, G = null, F = null;
|
|
2207
|
-
class
|
|
2228
|
+
class lt {
|
|
2208
2229
|
constructor(e, t) {
|
|
2209
|
-
this.ssp = e, this.options = t, "url" in this.options ? this.tiles = new
|
|
2230
|
+
this.ssp = e, this.options = t, "url" in this.options ? this.tiles = new T(this.options.url) : (this.tiles = new T(), this._initCesiumIon(this.options)), this._initBasePlugins(this.options);
|
|
2210
2231
|
}
|
|
2211
2232
|
tiles;
|
|
2212
2233
|
tilesFadePlugin;
|
|
@@ -2214,10 +2235,10 @@ class at {
|
|
|
2214
2235
|
reorientationPlugin;
|
|
2215
2236
|
options;
|
|
2216
2237
|
// 用于模型居中
|
|
2217
|
-
_box = new
|
|
2218
|
-
_sphere = new
|
|
2238
|
+
_box = new _e();
|
|
2239
|
+
_sphere = new de();
|
|
2219
2240
|
// 当前材质类型
|
|
2220
|
-
_materialType =
|
|
2241
|
+
_materialType = C.DEFAULT;
|
|
2221
2242
|
// 按需渲染标志
|
|
2222
2243
|
_needsUpdate = !0;
|
|
2223
2244
|
_cameraTransitionStart = !1;
|
|
@@ -2227,7 +2248,7 @@ class at {
|
|
|
2227
2248
|
*/
|
|
2228
2249
|
_initCesiumIon(e) {
|
|
2229
2250
|
this.tiles.registerPlugin(
|
|
2230
|
-
new
|
|
2251
|
+
new ce({
|
|
2231
2252
|
apiToken: e.apiToken,
|
|
2232
2253
|
assetId: e.assetId,
|
|
2233
2254
|
autoRefreshToken: e.autoRefreshToken ?? !0
|
|
@@ -2256,10 +2277,10 @@ class at {
|
|
|
2256
2277
|
* 设置 GLTF Loader
|
|
2257
2278
|
*/
|
|
2258
2279
|
_setupGLTFLoader() {
|
|
2259
|
-
const e = new
|
|
2280
|
+
const e = new oe(this.tiles.manager), t = this.ssp.manager?.store?.modelManager;
|
|
2260
2281
|
if (t?.gltfLoader) {
|
|
2261
|
-
const { dracoLoader: r, ktx2Loader: i, meshoptDecoder:
|
|
2262
|
-
r && e.setDRACOLoader(r), i && e.setKTX2Loader(i),
|
|
2282
|
+
const { dracoLoader: r, ktx2Loader: i, meshoptDecoder: a } = t.gltfLoader;
|
|
2283
|
+
r && e.setDRACOLoader(r), i && e.setKTX2Loader(i), a && e.setMeshoptDecoder(a);
|
|
2263
2284
|
}
|
|
2264
2285
|
this.tiles.manager.addHandler(/\.gltf$/, e);
|
|
2265
2286
|
}
|
|
@@ -2300,7 +2321,7 @@ class at {
|
|
|
2300
2321
|
onLoadModel = ({ scene: e }) => {
|
|
2301
2322
|
e.traverse((t) => {
|
|
2302
2323
|
t.isMesh && (t.originalMaterial = t.material);
|
|
2303
|
-
}), this._materialType !==
|
|
2324
|
+
}), this._materialType !== C.DEFAULT && this.updateMaterial(e);
|
|
2304
2325
|
};
|
|
2305
2326
|
/**
|
|
2306
2327
|
* 更新场景中所有网格的材质(参考 customMaterial.js)
|
|
@@ -2310,19 +2331,19 @@ class at {
|
|
|
2310
2331
|
e.traverse((r) => {
|
|
2311
2332
|
if (r.isMesh)
|
|
2312
2333
|
switch (r.material && r.material !== r.originalMaterial && r.material.dispose(), t) {
|
|
2313
|
-
case
|
|
2334
|
+
case C.DEFAULT:
|
|
2314
2335
|
r.material = r.originalMaterial, r.material && (r.material.side = 2), r.receiveShadow = !1, r.castShadow = !1;
|
|
2315
2336
|
break;
|
|
2316
|
-
case
|
|
2317
|
-
r.material = new V(
|
|
2337
|
+
case C.GRADIENT:
|
|
2338
|
+
r.material = new V(nt), r.material.side = 2, r.receiveShadow = !1, r.castShadow = !1;
|
|
2318
2339
|
break;
|
|
2319
|
-
case
|
|
2320
|
-
const i = new V(
|
|
2340
|
+
case C.TOPOGRAPHIC_LINES: {
|
|
2341
|
+
const i = new V(ot);
|
|
2321
2342
|
i.extensions = { derivatives: !0 }, i.side = 2, r.material = i, r.receiveShadow = !1, r.castShadow = !1;
|
|
2322
2343
|
break;
|
|
2323
2344
|
}
|
|
2324
|
-
case
|
|
2325
|
-
r.material = new
|
|
2345
|
+
case C.LIGHTING:
|
|
2346
|
+
r.material = new Oe(), r.material.side = 2, r.receiveShadow = !0, r.castShadow = !0;
|
|
2326
2347
|
break;
|
|
2327
2348
|
}
|
|
2328
2349
|
});
|
|
@@ -2368,13 +2389,13 @@ class at {
|
|
|
2368
2389
|
lat: t,
|
|
2369
2390
|
height: r
|
|
2370
2391
|
};
|
|
2371
|
-
const
|
|
2392
|
+
const a = () => {
|
|
2372
2393
|
const o = f.degToRad(t), d = f.degToRad(e);
|
|
2373
|
-
i.transformLatLonHeightToOrigin(o, d, r), this.render(),
|
|
2374
|
-
},
|
|
2375
|
-
this.tiles.removeEventListener("load-root-tileset",
|
|
2394
|
+
i.transformLatLonHeightToOrigin(o, d, r), this.render(), n();
|
|
2395
|
+
}, n = () => {
|
|
2396
|
+
this.tiles.removeEventListener("load-root-tileset", a), this.loedTilesSets.delete(a);
|
|
2376
2397
|
};
|
|
2377
|
-
return this.tiles.addEventListener("load-root-tileset",
|
|
2398
|
+
return this.tiles.addEventListener("load-root-tileset", a), this.loedTilesSets.add(a), this.tiles.root && a(), n;
|
|
2378
2399
|
}
|
|
2379
2400
|
dispose() {
|
|
2380
2401
|
this.disable(), this.loedTilesSets.forEach(
|
|
@@ -2383,7 +2404,7 @@ class at {
|
|
|
2383
2404
|
}
|
|
2384
2405
|
}
|
|
2385
2406
|
const J = 2;
|
|
2386
|
-
class
|
|
2407
|
+
class bt {
|
|
2387
2408
|
constructor(e) {
|
|
2388
2409
|
this.ssp = e;
|
|
2389
2410
|
const { controls: t, viewport: r } = e;
|
|
@@ -2404,12 +2425,12 @@ class wt {
|
|
|
2404
2425
|
_downloadQueue = null;
|
|
2405
2426
|
_referenceOrigin = null;
|
|
2406
2427
|
_referencePlacements = /* @__PURE__ */ new WeakMap();
|
|
2407
|
-
_referenceFrame = new
|
|
2408
|
-
_targetFrame = new
|
|
2409
|
-
_sourceFrame = new
|
|
2410
|
-
_placementMatrix = new
|
|
2411
|
-
_upCorrectionMatrix = new
|
|
2412
|
-
_boundingSphere = new
|
|
2428
|
+
_referenceFrame = new b();
|
|
2429
|
+
_targetFrame = new b();
|
|
2430
|
+
_sourceFrame = new b();
|
|
2431
|
+
_placementMatrix = new b();
|
|
2432
|
+
_upCorrectionMatrix = new b();
|
|
2433
|
+
_boundingSphere = new de();
|
|
2413
2434
|
_beforeRenderHandler = () => {
|
|
2414
2435
|
this.needsUpdate && (this.needsUpdate = !1, this.ssp.viewport.camera.updateMatrixWorld(), this.tilesMap.forEach((e) => {
|
|
2415
2436
|
e.tiles.setCamera(this.ssp.viewport.camera), e.tiles.setResolutionFromRenderer(this.ssp.viewport.camera, this.ssp.viewport.renderer), e.applyAutoCenter(), e.tiles.group.updateMatrixWorld(), e.tiles.update();
|
|
@@ -2433,8 +2454,8 @@ class wt {
|
|
|
2433
2454
|
lat: e.lat,
|
|
2434
2455
|
height: e.height ?? 0.1
|
|
2435
2456
|
}, this.tilesMap.forEach((i) => {
|
|
2436
|
-
const
|
|
2437
|
-
this.applyReferencePlacement(i,
|
|
2457
|
+
const a = this._referencePlacements.get(i) ?? null;
|
|
2458
|
+
this.applyReferencePlacement(i, a);
|
|
2438
2459
|
});
|
|
2439
2460
|
}
|
|
2440
2461
|
clearReferenceOrigin() {
|
|
@@ -2450,20 +2471,20 @@ class wt {
|
|
|
2450
2471
|
const t = "url" in e ? e.url : e.assetId;
|
|
2451
2472
|
if (this.tilesMap.has(t))
|
|
2452
2473
|
return R.utils.warn(`${t} already loaded`), this.tilesMap.get(t);
|
|
2453
|
-
const { ssp: r } = this, i = this._getReferencePlacement(e),
|
|
2454
|
-
...
|
|
2474
|
+
const { ssp: r } = this, i = this._getReferencePlacement(e), a = this._getTilesRendererOptions(e, i), n = new lt(r, {
|
|
2475
|
+
...a,
|
|
2455
2476
|
_managedByPlugin: !0
|
|
2456
2477
|
});
|
|
2457
|
-
i && (this._referencePlacements.set(
|
|
2458
|
-
const { tiles: o } =
|
|
2459
|
-
this._lruCache === null ? this._lruCache = o.lruCache : o.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = o.parseQueue : o.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = o.downloadQueue : o.downloadQueue = this._downloadQueue, o.lruCache.maxSize = 600, o.lruCache.minSize = 300, o.lruCache.unloadPercent = 0.8, this.tilesMap.set(t,
|
|
2478
|
+
i && (this._referencePlacements.set(n, i), n.options.reorientation = i);
|
|
2479
|
+
const { tiles: o } = n;
|
|
2480
|
+
this._lruCache === null ? this._lruCache = o.lruCache : o.lruCache = this._lruCache, this._parseQueue === null ? this._parseQueue = o.parseQueue : o.parseQueue = this._parseQueue, this._downloadQueue === null ? this._downloadQueue = o.downloadQueue : o.downloadQueue = this._downloadQueue, o.lruCache.maxSize = 600, o.lruCache.minSize = 300, o.lruCache.unloadPercent = 0.8, this.tilesMap.set(t, n), o.setCamera(this._tilesCamera), o.setResolutionFromRenderer(this._tilesCamera, r.viewport.renderer), r.addObject(o.group), this._referenceOrigin && this.applyReferencePlacement(n, i);
|
|
2460
2481
|
const d = () => {
|
|
2461
2482
|
this.cameraTransitionStart || (this.needsUpdate = !0, r.render());
|
|
2462
2483
|
};
|
|
2463
2484
|
return o.addEventListener("load-model", d), new Promise((l) => {
|
|
2464
2485
|
o.addEventListener("load-tile-set", () => {
|
|
2465
|
-
const h = this._referencePlacements.get(
|
|
2466
|
-
this._referenceOrigin && this.applyReferencePlacement(
|
|
2486
|
+
const h = this._referencePlacements.get(n);
|
|
2487
|
+
this._referenceOrigin && this.applyReferencePlacement(n, h ?? null), d(), l(n);
|
|
2467
2488
|
});
|
|
2468
2489
|
});
|
|
2469
2490
|
}
|
|
@@ -2497,24 +2518,24 @@ class wt {
|
|
|
2497
2518
|
}), this.tilesMap.clear();
|
|
2498
2519
|
}
|
|
2499
2520
|
invalidate(e, t, r, i) {
|
|
2500
|
-
(i ? [i] : Array.from(this.tilesMap.values())).forEach((
|
|
2501
|
-
const o = this._referencePlacements.get(
|
|
2502
|
-
this._referenceOrigin ? this.applyReferencePlacement(
|
|
2521
|
+
(i ? [i] : Array.from(this.tilesMap.values())).forEach((n) => {
|
|
2522
|
+
const o = this._referencePlacements.get(n) ?? null;
|
|
2523
|
+
this._referenceOrigin ? this.applyReferencePlacement(n, {
|
|
2503
2524
|
...o ?? {},
|
|
2504
2525
|
lon: e,
|
|
2505
2526
|
lat: t,
|
|
2506
2527
|
height: r
|
|
2507
|
-
}) :
|
|
2528
|
+
}) : n.invalidate(e, t, r);
|
|
2508
2529
|
});
|
|
2509
2530
|
}
|
|
2510
2531
|
applyReferencePlacement(e, t) {
|
|
2511
2532
|
if (!this._referenceOrigin)
|
|
2512
2533
|
return R.utils.warn("TilesRendererManager: reference origin is not set."), !1;
|
|
2513
|
-
const { ellipsoid: r, group: i } = e.tiles,
|
|
2534
|
+
const { ellipsoid: r, group: i } = e.tiles, a = this._referenceOrigin, n = this._isGeoreferenced(e);
|
|
2514
2535
|
if (r.getObjectFrame(
|
|
2515
|
-
f.degToRad(
|
|
2516
|
-
f.degToRad(
|
|
2517
|
-
|
|
2536
|
+
f.degToRad(a.lat),
|
|
2537
|
+
f.degToRad(a.lon),
|
|
2538
|
+
a.height ?? 0.1,
|
|
2518
2539
|
0,
|
|
2519
2540
|
0,
|
|
2520
2541
|
0,
|
|
@@ -2530,8 +2551,8 @@ class wt {
|
|
|
2530
2551
|
0,
|
|
2531
2552
|
this._targetFrame,
|
|
2532
2553
|
J
|
|
2533
|
-
), this._placementMatrix.multiply(this._targetFrame),
|
|
2534
|
-
else if (!
|
|
2554
|
+
), this._placementMatrix.multiply(this._targetFrame), n ? (this._sourceFrame.copy(this._getSourceFrame(e)).invert(), this._placementMatrix.multiply(this._sourceFrame)) : (this._getUpCorrectionMatrix(t.up ?? "+z"), this._placementMatrix.multiply(this._upCorrectionMatrix));
|
|
2555
|
+
else if (!n)
|
|
2535
2556
|
return !1;
|
|
2536
2557
|
return i.matrix.copy(this._placementMatrix), i.matrix.decompose(i.position, i.quaternion, i.scale), i.updateMatrixWorld(!0), t && (this._referencePlacements.set(e, t), e.options.reorientation = t), this.needsUpdate = !0, e.render(), !0;
|
|
2537
2558
|
}
|
|
@@ -2601,101 +2622,101 @@ class wt {
|
|
|
2601
2622
|
this.clear(), this.ssp.signals.beforeRender.remove(this._beforeRenderHandler), this.ssp.signals.cameraObjectChange.remove(this._onCameraObjectChange), this._lruCache = null, this._parseQueue = null, this._downloadQueue = null;
|
|
2602
2623
|
}
|
|
2603
2624
|
}
|
|
2604
|
-
function
|
|
2625
|
+
function Tt(s) {
|
|
2605
2626
|
if (s == null) return [0, 0, 0, 0];
|
|
2606
2627
|
const e = String(s).trim().toLowerCase();
|
|
2607
2628
|
if (e === "" || e === "transparent") return [0, 0, 0, 0];
|
|
2608
2629
|
const t = /^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]*\.?[0-9]+)\s*\)$/.exec(e);
|
|
2609
2630
|
if (t !== null) {
|
|
2610
|
-
const i = Number(t[1]) / 255,
|
|
2611
|
-
return [
|
|
2631
|
+
const i = Number(t[1]) / 255, a = Number(t[2]) / 255, n = Number(t[3]) / 255, o = Number(t[4]);
|
|
2632
|
+
return [v(i), v(a), v(n), v(o)];
|
|
2612
2633
|
}
|
|
2613
2634
|
const r = /^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/.exec(e);
|
|
2614
2635
|
if (r !== null) {
|
|
2615
|
-
const i = Number(r[1]) / 255,
|
|
2616
|
-
return [
|
|
2636
|
+
const i = Number(r[1]) / 255, a = Number(r[2]) / 255, n = Number(r[3]) / 255;
|
|
2637
|
+
return [v(i), v(a), v(n), 1];
|
|
2617
2638
|
}
|
|
2618
2639
|
if (e.startsWith("#")) {
|
|
2619
2640
|
const i = e.slice(1);
|
|
2620
2641
|
if (i.length === 3) {
|
|
2621
|
-
const
|
|
2622
|
-
if (Number.isFinite(
|
|
2623
|
-
return [
|
|
2642
|
+
const a = parseInt(i[0] + i[0], 16) / 255, n = parseInt(i[1] + i[1], 16) / 255, o = parseInt(i[2] + i[2], 16) / 255;
|
|
2643
|
+
if (Number.isFinite(a) && Number.isFinite(n) && Number.isFinite(o))
|
|
2644
|
+
return [a, n, o, 1];
|
|
2624
2645
|
} else if (i.length === 6) {
|
|
2625
|
-
const
|
|
2626
|
-
if (Number.isFinite(
|
|
2627
|
-
return [
|
|
2646
|
+
const a = parseInt(i.slice(0, 2), 16) / 255, n = parseInt(i.slice(2, 4), 16) / 255, o = parseInt(i.slice(4, 6), 16) / 255;
|
|
2647
|
+
if (Number.isFinite(a) && Number.isFinite(n) && Number.isFinite(o))
|
|
2648
|
+
return [a, n, o, 1];
|
|
2628
2649
|
} else if (i.length === 8) {
|
|
2629
|
-
const
|
|
2630
|
-
if (Number.isFinite(
|
|
2631
|
-
return [
|
|
2650
|
+
const a = parseInt(i.slice(0, 2), 16) / 255, n = parseInt(i.slice(2, 4), 16) / 255, o = parseInt(i.slice(4, 6), 16) / 255, d = parseInt(i.slice(6, 8), 16) / 255;
|
|
2651
|
+
if (Number.isFinite(a) && Number.isFinite(n) && Number.isFinite(o) && Number.isFinite(d))
|
|
2652
|
+
return [a, n, o, d];
|
|
2632
2653
|
}
|
|
2633
2654
|
}
|
|
2634
2655
|
return [1, 1, 1, 1];
|
|
2635
2656
|
}
|
|
2636
|
-
function
|
|
2637
|
-
typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] =
|
|
2657
|
+
function Pt(s, e) {
|
|
2658
|
+
typeof s.fillOpacity == "number" && Number.isFinite(s.fillOpacity) ? e[0] = v(s.fillOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[0] = v(s.opacity) : e[0] = 1, typeof s.strokeOpacity == "number" && Number.isFinite(s.strokeOpacity) ? e[1] = v(s.strokeOpacity / 100) : typeof s.opacity == "number" && Number.isFinite(s.opacity) ? e[1] = v(s.opacity) : e[1] = 1;
|
|
2638
2659
|
}
|
|
2639
|
-
function
|
|
2660
|
+
function v(s) {
|
|
2640
2661
|
return !Number.isFinite(s) || s < 0 ? 0 : s > 1 ? 1 : s;
|
|
2641
2662
|
}
|
|
2642
|
-
const ne = 100,
|
|
2643
|
-
function
|
|
2663
|
+
const ne = 100, Q = 1e-4;
|
|
2664
|
+
function P(s, e) {
|
|
2644
2665
|
const t = s[0] - e[0], r = s[1] - e[1];
|
|
2645
2666
|
return Math.sqrt(t * t + r * r);
|
|
2646
2667
|
}
|
|
2647
|
-
function
|
|
2668
|
+
function dt(s) {
|
|
2648
2669
|
let e = 0;
|
|
2649
2670
|
for (let t = 0; t < s.length - 1; t++)
|
|
2650
|
-
e +=
|
|
2671
|
+
e += P(s[t], s[t + 1]);
|
|
2651
2672
|
return e;
|
|
2652
2673
|
}
|
|
2653
|
-
function
|
|
2654
|
-
return Math.pow(
|
|
2674
|
+
function xt(s) {
|
|
2675
|
+
return Math.pow(dt(s), 0.99);
|
|
2655
2676
|
}
|
|
2656
|
-
function
|
|
2677
|
+
function me(s, e) {
|
|
2657
2678
|
return [(s[0] + e[0]) / 2, (s[1] + e[1]) / 2];
|
|
2658
2679
|
}
|
|
2659
2680
|
function $(s, e) {
|
|
2660
2681
|
let t;
|
|
2661
2682
|
const r = Math.asin(
|
|
2662
|
-
Math.abs(e[1] - s[1]) /
|
|
2683
|
+
Math.abs(e[1] - s[1]) / P(s, e)
|
|
2663
2684
|
);
|
|
2664
2685
|
return e[1] >= s[1] && e[0] >= s[0] ? t = r + Math.PI : e[1] >= s[1] && e[0] < s[0] ? t = Math.PI * 2 - r : e[1] < s[1] && e[0] < s[0] ? t = r : t = Math.PI - r, t;
|
|
2665
2686
|
}
|
|
2666
|
-
function
|
|
2687
|
+
function kt(s, e, t) {
|
|
2667
2688
|
const r = $(e, s) - $(e, t);
|
|
2668
2689
|
return r < 0 ? r + Math.PI * 2 : r;
|
|
2669
2690
|
}
|
|
2670
|
-
function
|
|
2691
|
+
function ht(s, e, t) {
|
|
2671
2692
|
return (t[1] - s[1]) * (e[0] - s[0]) > (e[1] - s[1]) * (t[0] - s[0]);
|
|
2672
2693
|
}
|
|
2673
|
-
function
|
|
2674
|
-
const
|
|
2694
|
+
function Et(s, e, t, r, i) {
|
|
2695
|
+
const a = $(s, e), n = i ? a + t : a - t, o = r * Math.cos(n), d = r * Math.sin(n);
|
|
2675
2696
|
return [e[0] + o, e[1] + d];
|
|
2676
2697
|
}
|
|
2677
|
-
function
|
|
2698
|
+
function H(s, e, t) {
|
|
2678
2699
|
let r = s[0] - e[0], i = s[1] - e[1];
|
|
2679
|
-
const
|
|
2680
|
-
r /=
|
|
2681
|
-
let
|
|
2682
|
-
const d = Math.sqrt(
|
|
2683
|
-
return
|
|
2700
|
+
const a = Math.sqrt(r * r + i * i);
|
|
2701
|
+
r /= a, i /= a;
|
|
2702
|
+
let n = t[0] - e[0], o = t[1] - e[1];
|
|
2703
|
+
const d = Math.sqrt(n * n + o * o);
|
|
2704
|
+
return n /= d, o /= d, [r + n, i + o];
|
|
2684
2705
|
}
|
|
2685
2706
|
function X(s, e, t, r) {
|
|
2686
|
-
const i =
|
|
2687
|
-
let
|
|
2688
|
-
const h = Math.sqrt(i[0] * i[0] + i[1] * i[1]), c = i[0] / h, y = i[1] / h,
|
|
2689
|
-
return h >
|
|
2707
|
+
const i = H(e, t, r);
|
|
2708
|
+
let a, n, o, d, l;
|
|
2709
|
+
const h = Math.sqrt(i[0] * i[0] + i[1] * i[1]), c = i[0] / h, y = i[1] / h, _ = P(e, t), p = P(t, r);
|
|
2710
|
+
return h > Q ? ht(e, t, r) ? (o = s * _, d = t[0] - o * y, l = t[1] + o * c, a = [d, l], o = s * p, d = t[0] + o * y, l = t[1] - o * c, n = [d, l]) : (o = s * _, d = t[0] + o * y, l = t[1] - o * c, a = [d, l], o = s * p, d = t[0] - o * y, l = t[1] + o * c, n = [d, l]) : (d = t[0] + s * (e[0] - t[0]), l = t[1] + s * (e[1] - t[1]), a = [d, l], d = t[0] + s * (r[0] - t[0]), l = t[1] + s * (r[1] - t[1]), n = [d, l]), [a, n];
|
|
2690
2711
|
}
|
|
2691
|
-
function
|
|
2692
|
-
const e = s[0], t = s[1], r = s[2],
|
|
2712
|
+
function ut(s) {
|
|
2713
|
+
const e = s[0], t = s[1], r = s[2], a = X(0, e, t, r)[0], n = H(e, t, r), o = Math.sqrt(n[0] * n[0] + n[1] * n[1]);
|
|
2693
2714
|
let d;
|
|
2694
|
-
if (o >
|
|
2695
|
-
const l =
|
|
2715
|
+
if (o > Q) {
|
|
2716
|
+
const l = me(e, t), h = e[0] - l[0], c = e[1] - l[1], _ = 2 / P(e, t), p = -_ * c, g = _ * h, m = p * p - g * g, S = 2 * p * g, w = g * g - p * p, E = a[0] - l[0], x = a[1] - l[1];
|
|
2696
2717
|
d = [
|
|
2697
|
-
l[0] +
|
|
2698
|
-
l[1] +
|
|
2718
|
+
l[0] + m * E + S * x,
|
|
2719
|
+
l[1] + S * E + w * x
|
|
2699
2720
|
];
|
|
2700
2721
|
} else
|
|
2701
2722
|
d = [
|
|
@@ -2707,14 +2728,14 @@ function dt(s) {
|
|
|
2707
2728
|
function A(s) {
|
|
2708
2729
|
return 0.3 * s;
|
|
2709
2730
|
}
|
|
2710
|
-
function
|
|
2711
|
-
const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1],
|
|
2731
|
+
function ct(s) {
|
|
2732
|
+
const e = s.length, t = s[e - 3], r = s[e - 2], i = s[e - 1], n = X(0, t, r, i)[1], o = H(t, r, i), d = Math.sqrt(o[0] * o[0] + o[1] * o[1]);
|
|
2712
2733
|
let l;
|
|
2713
|
-
if (d >
|
|
2714
|
-
const h =
|
|
2734
|
+
if (d > Q) {
|
|
2735
|
+
const h = me(r, i), c = i[0] - h[0], y = i[1] - h[1], p = 2 / P(r, i), g = -p * y, m = p * c, S = g * g - m * m, w = 2 * g * m, E = m * m - g * g, x = n[0] - h[0], Y = n[1] - h[1];
|
|
2715
2736
|
l = [
|
|
2716
|
-
h[0] +
|
|
2717
|
-
h[1] +
|
|
2737
|
+
h[0] + S * x + w * Y,
|
|
2738
|
+
h[1] + w * x + E * Y
|
|
2718
2739
|
];
|
|
2719
2740
|
} else
|
|
2720
2741
|
l = [
|
|
@@ -2723,102 +2744,102 @@ function ht(s) {
|
|
|
2723
2744
|
];
|
|
2724
2745
|
return l;
|
|
2725
2746
|
}
|
|
2726
|
-
function
|
|
2727
|
-
const r = [
|
|
2728
|
-
for (let
|
|
2729
|
-
const o = e[
|
|
2747
|
+
function It(s, e) {
|
|
2748
|
+
const r = [ut(e)];
|
|
2749
|
+
for (let n = 0; n < e.length - 2; n++) {
|
|
2750
|
+
const o = e[n], d = e[n + 1], l = e[n + 2], h = X(s, o, d, l);
|
|
2730
2751
|
r.push(h[0], h[1]);
|
|
2731
2752
|
}
|
|
2732
|
-
const i =
|
|
2753
|
+
const i = ct(e);
|
|
2733
2754
|
r.push(i);
|
|
2734
|
-
const
|
|
2735
|
-
for (let
|
|
2736
|
-
const o = e[
|
|
2737
|
-
|
|
2755
|
+
const a = [];
|
|
2756
|
+
for (let n = 0; n < e.length - 1; n++) {
|
|
2757
|
+
const o = e[n], d = e[n + 1];
|
|
2758
|
+
a.push(o);
|
|
2738
2759
|
for (let l = 0; l < ne; l++) {
|
|
2739
|
-
const h = l / ne, c = Math.pow(1 - h, 3) * o[0] + 3 * h * Math.pow(1 - h, 2) * r[
|
|
2740
|
-
|
|
2760
|
+
const h = l / ne, c = Math.pow(1 - h, 3) * o[0] + 3 * h * Math.pow(1 - h, 2) * r[n * 2][0] + 3 * h * h * (1 - h) * r[n * 2 + 1][0] + Math.pow(h, 3) * d[0], y = Math.pow(1 - h, 3) * o[1] + 3 * h * Math.pow(1 - h, 2) * r[n * 2][1] + 3 * h * h * (1 - h) * r[n * 2 + 1][1] + Math.pow(h, 3) * d[1];
|
|
2761
|
+
a.push([c, y]);
|
|
2741
2762
|
}
|
|
2742
|
-
|
|
2763
|
+
a.push(d);
|
|
2743
2764
|
}
|
|
2744
|
-
return
|
|
2765
|
+
return a;
|
|
2745
2766
|
}
|
|
2746
|
-
function
|
|
2767
|
+
function Rt(s) {
|
|
2747
2768
|
if (s.length <= 2) return s;
|
|
2748
2769
|
const e = 2, t = [], r = s.length - e - 1;
|
|
2749
2770
|
t.push(s[0]);
|
|
2750
2771
|
for (let i = 0; i <= r; i++)
|
|
2751
|
-
for (let
|
|
2752
|
-
let
|
|
2772
|
+
for (let a = 0; a <= 1; a += 0.05) {
|
|
2773
|
+
let n = 0, o = 0;
|
|
2753
2774
|
for (let d = 0; d <= e; d++) {
|
|
2754
|
-
const l =
|
|
2755
|
-
|
|
2775
|
+
const l = pt(d, a);
|
|
2776
|
+
n += l * s[i + d][0], o += l * s[i + d][1];
|
|
2756
2777
|
}
|
|
2757
|
-
t.push([
|
|
2778
|
+
t.push([n, o]);
|
|
2758
2779
|
}
|
|
2759
2780
|
return t.push(s[s.length - 1]), t;
|
|
2760
2781
|
}
|
|
2761
|
-
function
|
|
2782
|
+
function pt(s, e) {
|
|
2762
2783
|
return s === 0 ? Math.pow(e - 1, 2) / 2 : s === 1 ? (-2 * Math.pow(e, 2) + 2 * e + 1) / 2 : s === 2 ? Math.pow(e, 2) / 2 : 0;
|
|
2763
2784
|
}
|
|
2764
|
-
function
|
|
2785
|
+
function Nt(s, e) {
|
|
2765
2786
|
return W(s, e);
|
|
2766
2787
|
}
|
|
2767
|
-
function
|
|
2768
|
-
return
|
|
2788
|
+
function At(s, e) {
|
|
2789
|
+
return ye(s, e);
|
|
2769
2790
|
}
|
|
2770
|
-
function
|
|
2771
|
-
return !s || s.length < 3 ? [] :
|
|
2791
|
+
function Lt(s) {
|
|
2792
|
+
return !s || s.length < 3 ? [] : fe(s);
|
|
2772
2793
|
}
|
|
2773
|
-
function
|
|
2774
|
-
return !s || s.length < 3 ? [] :
|
|
2794
|
+
function Dt(s) {
|
|
2795
|
+
return !s || s.length < 3 ? [] : ge(s);
|
|
2775
2796
|
}
|
|
2776
|
-
function
|
|
2777
|
-
return !s || s.length < 2 ? [] :
|
|
2797
|
+
function Gt(s) {
|
|
2798
|
+
return !s || s.length < 2 ? [] : pe(s);
|
|
2778
2799
|
}
|
|
2779
2800
|
export {
|
|
2780
|
-
|
|
2801
|
+
wt as ArcgisTilesRenderer,
|
|
2781
2802
|
ne as FITTING_COUNT,
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2803
|
+
je as GisPlotArrow,
|
|
2804
|
+
O as GisPlotBase,
|
|
2805
|
+
Xe as GisPlotCircle,
|
|
2806
|
+
Ue as GisPlotLine,
|
|
2807
|
+
Je as GisPlotPoint,
|
|
2808
|
+
We as GisPlotPolygon,
|
|
2809
|
+
$e as GisPlotRectangle,
|
|
2810
|
+
Be as GisPlotSector,
|
|
2811
|
+
Qe as GisPlotText,
|
|
2812
|
+
it as GroundDecalManager,
|
|
2813
|
+
C as MaterialType,
|
|
2814
|
+
P as MathDistance,
|
|
2815
|
+
me as Mid,
|
|
2795
2816
|
N as OverlayManager,
|
|
2796
2817
|
u as OverlayType,
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2818
|
+
rt as PlotPrimitiveBridge,
|
|
2819
|
+
Ct as TerrainTilesRenderer,
|
|
2820
|
+
M as TerrainType,
|
|
2821
|
+
Le as TileCustomMaterialPlugin,
|
|
2822
|
+
lt as TilesRenderer,
|
|
2823
|
+
bt as TilesRendererManager,
|
|
2824
|
+
Q as ZERO_TOLERANCE,
|
|
2825
|
+
At as createAssaultDirectionArrow,
|
|
2826
|
+
Lt as createAttackArrow,
|
|
2827
|
+
Gt as createCurvedArrow,
|
|
2828
|
+
Nt as createFineArrow,
|
|
2829
|
+
Dt as createSwallowtailAttackArrow,
|
|
2830
|
+
Mt as default,
|
|
2831
|
+
kt as getAngleOfThreePoints,
|
|
2811
2832
|
$ as getAzimuth,
|
|
2812
|
-
|
|
2833
|
+
xt as getBaseLength,
|
|
2813
2834
|
X as getBisectorNormals,
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2835
|
+
It as getCurvePoints,
|
|
2836
|
+
H as getNormal,
|
|
2837
|
+
Rt as getQBSplinePoints,
|
|
2838
|
+
Et as getThirdPoint,
|
|
2839
|
+
ht as isClockWise,
|
|
2840
|
+
Tt as parseColorToRGBA,
|
|
2841
|
+
Ze as plotOrderToRenderOrder,
|
|
2842
|
+
Pt as resolveOpacity,
|
|
2843
|
+
Ve as sanitizePlotOrder,
|
|
2844
|
+
dt as wholeDistance
|
|
2824
2845
|
};
|