@aibee/crc-bmap 0.0.141 → 0.0.142

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/lib/bmap.esm.js CHANGED
@@ -454,7 +454,7 @@ var require_Graph = __commonJS({
454
454
  });
455
455
 
456
456
  // src/bmap.ts
457
- import { EventDispatcher as EventDispatcher7, Vector3 as Vector320 } from "three";
457
+ import { EventDispatcher as EventDispatcher7, Vector3 as Vector321 } from "three";
458
458
 
459
459
  // src/utils/timer.ts
460
460
  var Timer = class {
@@ -952,6 +952,16 @@ function darkenColor(hexColor, factor = 0.85) {
952
952
  let darkHexColor = "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
953
953
  return darkHexColor;
954
954
  }
955
+ function hexToRgb(hex, opacity) {
956
+ hex = hex.replace(/^#/, "");
957
+ const r = parseInt(hex.substring(0, 2), 16);
958
+ const g = parseInt(hex.substring(2, 4), 16);
959
+ const b = parseInt(hex.substring(4, 6), 16);
960
+ if (opacity !== void 0) {
961
+ return `rgba(${r}, ${g}, ${b}, ${opacity})`;
962
+ }
963
+ return `rgb(${r}, ${g}, ${b})`;
964
+ }
955
965
 
956
966
  // src/utils/model.ts
957
967
  import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
@@ -2112,11 +2122,22 @@ function toWebWorker(obj) {
2112
2122
  };
2113
2123
  }
2114
2124
 
2125
+ // src/utils/create.ts
2126
+ import { BufferGeometry, Line, LineBasicMaterial } from "three";
2127
+ function createThreeLine(points, color = 16711680) {
2128
+ const material = new LineBasicMaterial({
2129
+ color
2130
+ });
2131
+ const geometry = new BufferGeometry().setFromPoints(points);
2132
+ const line = new Line(geometry, material);
2133
+ return line;
2134
+ }
2135
+
2115
2136
  // src/context.ts
2116
2137
  import {
2117
2138
  EventDispatcher as EventDispatcher6,
2118
2139
  Box2 as Box23,
2119
- Vector3 as Vector319,
2140
+ Vector3 as Vector320,
2120
2141
  Vector2 as Vector210,
2121
2142
  Raycaster as Raycaster4,
2122
2143
  Box3 as Box310,
@@ -2134,8 +2155,8 @@ import {
2134
2155
  ExtrudeGeometry,
2135
2156
  Mesh,
2136
2157
  Box3,
2137
- Vector3 as Vector32,
2138
- BufferGeometry,
2158
+ Vector3 as Vector33,
2159
+ BufferGeometry as BufferGeometry2,
2139
2160
  LineSegments,
2140
2161
  Ray,
2141
2162
  Vector2 as Vector24
@@ -2261,7 +2282,7 @@ var Graphic = class extends Object3D {
2261
2282
  if (this.options.geometry.type === "point") {
2262
2283
  return this.position.clone();
2263
2284
  }
2264
- const center2 = new Vector32();
2285
+ const center2 = new Vector33();
2265
2286
  const box = new Box3();
2266
2287
  box.setFromObject(this);
2267
2288
  box.getCenter(center2);
@@ -2269,10 +2290,10 @@ var Graphic = class extends Object3D {
2269
2290
  }
2270
2291
  getSize() {
2271
2292
  if (this.options.geometry.type === "point") {
2272
- return new Vector32(0, 0, 0);
2293
+ return new Vector33(0, 0, 0);
2273
2294
  }
2274
2295
  const box = new Box3();
2275
- const size = new Vector32();
2296
+ const size = new Vector33();
2276
2297
  box.setFromObject(this);
2277
2298
  box.getSize(size);
2278
2299
  return size;
@@ -2375,11 +2396,11 @@ var Graphic = class extends Object3D {
2375
2396
  const box = new Box3().setFromObject(this);
2376
2397
  const minOrigin = pos.clone().add(dir.clone().multiplyScalar(1e3));
2377
2398
  const raycaster = new Ray(minOrigin, dir.clone().multiplyScalar(-1));
2378
- const min = new Vector32();
2399
+ const min = new Vector33();
2379
2400
  raycaster.intersectBox(box, min);
2380
2401
  const maxOrigin = pos.clone().add(dir.clone().multiplyScalar(-1e3));
2381
2402
  const raycaster2 = new Ray(maxOrigin, dir.clone());
2382
- const max = new Vector32();
2403
+ const max = new Vector33();
2383
2404
  raycaster2.intersectBox(box, max);
2384
2405
  return {
2385
2406
  max,
@@ -2391,14 +2412,14 @@ var Graphic = class extends Object3D {
2391
2412
  const _max = max.clone().sub(min);
2392
2413
  const maxValue = Math.max(_max.x, _max.y, _max.z) / 2;
2393
2414
  const pos = this.getPosition();
2394
- const dir = new Vector32(-1, 0.2, 0).normalize();
2415
+ const dir = new Vector33(-1, 0.2, 0).normalize();
2395
2416
  const { max: __max, min: _min } = this.getMaxAndMin(pos, dir);
2396
2417
  const material = this.context.materialFactory.createShaderMaterial({
2397
2418
  gradualColor: this.options.gradualColor,
2398
2419
  center: this.getPosition(),
2399
2420
  maxValue,
2400
2421
  opacity: this.options.fillOpacity,
2401
- direction: new Vector32(-1, 0.2, 0),
2422
+ direction: new Vector33(-1, 0.2, 0),
2402
2423
  max: __max,
2403
2424
  min: _min
2404
2425
  });
@@ -2407,7 +2428,7 @@ var Graphic = class extends Object3D {
2407
2428
  return material;
2408
2429
  }
2409
2430
  const center2 = this.getCenter();
2410
- const dir2 = new Vector32(-1, 0.2, 1).normalize();
2431
+ const dir2 = new Vector33(-1, 0.2, 1).normalize();
2411
2432
  const { max: ___max, min: __min } = this.getMaxAndMin(center2, dir2);
2412
2433
  const material1 = this.context.materialFactory.createShaderMaterial({
2413
2434
  gradualColor: [
@@ -2417,7 +2438,7 @@ var Graphic = class extends Object3D {
2417
2438
  center: this.getCenter(),
2418
2439
  maxValue,
2419
2440
  opacity: this.options.fillOpacity,
2420
- direction: new Vector32(-1, 0.2, 1),
2441
+ direction: new Vector33(-1, 0.2, 1),
2421
2442
  max: ___max,
2422
2443
  min: __min
2423
2444
  });
@@ -2455,8 +2476,8 @@ var Graphic = class extends Object3D {
2455
2476
  for (let i = 0; i < curCds.length; i++) {
2456
2477
  const cur = curCds[i];
2457
2478
  const next = i + 1 === curCds.length ? curCds[0] : curCds[i + 1];
2458
- points.push(new Vector32(cur[0], cur[1], height));
2459
- points.push(new Vector32(next[0], next[1], height));
2479
+ points.push(new Vector33(cur[0], cur[1], height));
2480
+ points.push(new Vector33(next[0], next[1], height));
2460
2481
  }
2461
2482
  }
2462
2483
  return points;
@@ -2466,7 +2487,7 @@ var Graphic = class extends Object3D {
2466
2487
  this.lineGeometry.dispose();
2467
2488
  }
2468
2489
  const points = this.getBorderPoints();
2469
- const lineGeometry = new BufferGeometry().setFromPoints(points);
2490
+ const lineGeometry = new BufferGeometry2().setFromPoints(points);
2470
2491
  this.lineGeometry = lineGeometry;
2471
2492
  }
2472
2493
  createBorder() {
@@ -2573,10 +2594,10 @@ var Shadow = class extends Object3D2 {
2573
2594
  };
2574
2595
 
2575
2596
  // src/elements/poi.ts
2576
- import { EventDispatcher as EventDispatcher2, Vector3 as Vector35 } from "three";
2597
+ import { EventDispatcher as EventDispatcher2, Vector3 as Vector36 } from "three";
2577
2598
 
2578
2599
  // src/elements/overlay.ts
2579
- import { Box3 as Box32, EventDispatcher, Vector3 as Vector34 } from "three";
2600
+ import { Box3 as Box32, EventDispatcher, Vector3 as Vector35 } from "three";
2580
2601
  import { debounce } from "lodash";
2581
2602
  var defaultOptions = {
2582
2603
  autoUpdate: true,
@@ -2598,7 +2619,7 @@ var Overlay = class extends EventDispatcher {
2598
2619
  }
2599
2620
  div;
2600
2621
  element;
2601
- position = new Vector34();
2622
+ position = new Vector35();
2602
2623
  clientPos = { x: 0, y: 0 };
2603
2624
  visible = true;
2604
2625
  options;
@@ -2625,28 +2646,28 @@ var Overlay = class extends EventDispatcher {
2625
2646
  const centerX = (max.x + min.x) / 2;
2626
2647
  const centerY = (max.y + min.y) / 2;
2627
2648
  return {
2628
- left: new Vector34(min.x, centerY, max.z),
2629
- leftTop: new Vector34(min.x, max.y, max.z),
2630
- top: new Vector34(centerX, max.y, max.z),
2631
- rightTop: new Vector34(max.x, max.y, max.z),
2632
- right: new Vector34(max.x, centerY, max.z),
2633
- rightBottom: new Vector34(max.x, min.y, max.z),
2634
- bottom: new Vector34(centerX, min.y, max.z),
2635
- leftBottom: new Vector34(min.x, min.y, max.z),
2636
- center: new Vector34(centerX, centerY, max.z)
2649
+ left: new Vector35(min.x, centerY, max.z),
2650
+ leftTop: new Vector35(min.x, max.y, max.z),
2651
+ top: new Vector35(centerX, max.y, max.z),
2652
+ rightTop: new Vector35(max.x, max.y, max.z),
2653
+ right: new Vector35(max.x, centerY, max.z),
2654
+ rightBottom: new Vector35(max.x, min.y, max.z),
2655
+ bottom: new Vector35(centerX, min.y, max.z),
2656
+ leftBottom: new Vector35(min.x, min.y, max.z),
2657
+ center: new Vector35(centerX, centerY, max.z)
2637
2658
  };
2638
2659
  }
2639
2660
  const { x, y, z } = this.element?.getPosition?.() || this.position;
2640
2661
  return {
2641
- left: new Vector34(x, y, z),
2642
- leftTop: new Vector34(x, y, z),
2643
- top: new Vector34(x, y, z),
2644
- rightTop: new Vector34(x, y, z),
2645
- right: new Vector34(x, y, z),
2646
- rightBottom: new Vector34(x, y, z),
2647
- bottom: new Vector34(x, y, z),
2648
- leftBottom: new Vector34(x, y, z),
2649
- center: new Vector34(x, y, z)
2662
+ left: new Vector35(x, y, z),
2663
+ leftTop: new Vector35(x, y, z),
2664
+ top: new Vector35(x, y, z),
2665
+ rightTop: new Vector35(x, y, z),
2666
+ right: new Vector35(x, y, z),
2667
+ rightBottom: new Vector35(x, y, z),
2668
+ bottom: new Vector35(x, y, z),
2669
+ leftBottom: new Vector35(x, y, z),
2670
+ center: new Vector35(x, y, z)
2650
2671
  };
2651
2672
  }
2652
2673
  getPlacementScreenPosition() {
@@ -2810,7 +2831,7 @@ var Overlay = class extends EventDispatcher {
2810
2831
  return this.element.getPosition();
2811
2832
  }
2812
2833
  const box = new Box32().setFromObject(this.element);
2813
- const center2 = box.getCenter(new Vector34());
2834
+ const center2 = box.getCenter(new Vector35());
2814
2835
  return center2;
2815
2836
  } else {
2816
2837
  return this.position;
@@ -2955,7 +2976,7 @@ var Poi = class extends EventDispatcher2 {
2955
2976
  options;
2956
2977
  visible = true;
2957
2978
  size = { width: 0, height: 0 };
2958
- position = new Vector35();
2979
+ position = new Vector36();
2959
2980
  userData = {};
2960
2981
  showTextStatus = true;
2961
2982
  disposed = false;
@@ -3148,7 +3169,7 @@ var Poi = class extends EventDispatcher2 {
3148
3169
  };
3149
3170
 
3150
3171
  // src/elements/floor.ts
3151
- import { Box3 as Box35, Object3D as Object3D8, Vector3 as Vector39 } from "three";
3172
+ import { Box3 as Box35, Object3D as Object3D8, Vector3 as Vector310 } from "three";
3152
3173
 
3153
3174
  // src/elements/heatmap.ts
3154
3175
  import {
@@ -3248,13 +3269,13 @@ var HeatmapElement = class extends Object3D5 {
3248
3269
  };
3249
3270
 
3250
3271
  // src/elements/model.ts
3251
- import { Object3D as Object3D6, Vector3 as Vector36 } from "three";
3272
+ import { Object3D as Object3D6, Vector3 as Vector37 } from "three";
3252
3273
  var Model = class extends Object3D6 {
3253
3274
  constructor(context, options) {
3254
3275
  super();
3255
3276
  this.context = context;
3256
3277
  this.options = options;
3257
- this.position.copy(options.position || new Vector36(0, 0, 0));
3278
+ this.position.copy(options.position || new Vector37(0, 0, 0));
3258
3279
  this.loadModel();
3259
3280
  }
3260
3281
  model = null;
@@ -3271,7 +3292,7 @@ var Model = class extends Object3D6 {
3271
3292
  };
3272
3293
 
3273
3294
  // src/layer/graphic-layer.ts
3274
- import { Box3 as Box34, Vector3 as Vector37 } from "three";
3295
+ import { Box3 as Box34, Vector3 as Vector38 } from "three";
3275
3296
 
3276
3297
  // src/layer/layer.ts
3277
3298
  import { Object3D as Object3D7 } from "three";
@@ -3295,7 +3316,7 @@ var GraphicLayer = class extends Layer {
3295
3316
  }
3296
3317
  getCenter() {
3297
3318
  const box = new Box34().setFromObject(this);
3298
- return box.getCenter(new Vector37());
3319
+ return box.getCenter(new Vector38());
3299
3320
  }
3300
3321
  createGraphic(options) {
3301
3322
  const graphic = new Graphic(this.context, options);
@@ -3481,7 +3502,7 @@ var PoiLayer = class extends Layer {
3481
3502
 
3482
3503
  // src/layer/poi-layer2.ts
3483
3504
  import { debounce as debounce3 } from "lodash";
3484
- import { Vector2 as Vector26, Vector3 as Vector38 } from "three";
3505
+ import { Vector2 as Vector26, Vector3 as Vector39 } from "three";
3485
3506
  var PoiLayer2 = class extends Layer {
3486
3507
  pois = [];
3487
3508
  debounceCollisionDetection;
@@ -3607,7 +3628,7 @@ var PoiLayer2 = class extends Layer {
3607
3628
  m4.multiply(camera.matrixWorldInverse);
3608
3629
  const pois = this.pois.filter((item) => {
3609
3630
  if (item.visible) {
3610
- const vector = new Vector38().setFromMatrixPosition(item.matrixWorld);
3631
+ const vector = new Vector39().setFromMatrixPosition(item.matrixWorld);
3611
3632
  vector.applyMatrix4(m4);
3612
3633
  item.screenPosition = vector;
3613
3634
  return isValid(vector.x) && isValid(vector.y) && isValid(vector.z);
@@ -3665,6 +3686,7 @@ var Floor = class extends Object3D8 {
3665
3686
  this.glbModelLayer = new Layer(this.context);
3666
3687
  this.laneLayer = new Layer(this.context);
3667
3688
  this.mergeGraphicLayer = new Layer(this.context);
3689
+ this.textTextureLayer = new Layer(this.context);
3668
3690
  this.groundUpper.add(this.graphicLayer);
3669
3691
  this.groundUpper.add(this.poiLayer);
3670
3692
  this.groundUpper.add(this.poiLayer2);
@@ -3673,6 +3695,7 @@ var Floor = class extends Object3D8 {
3673
3695
  this.groundUpper.add(this.glbModelLayer);
3674
3696
  this.groundUpper.add(this.laneLayer);
3675
3697
  this.groundUpper.add(this.mergeGraphicLayer);
3698
+ this.groundUpper.add(this.textTextureLayer);
3676
3699
  this.add(this.groundUpper);
3677
3700
  this.add(this.groundLayer);
3678
3701
  this.add(this.models);
@@ -3685,6 +3708,7 @@ var Floor = class extends Object3D8 {
3685
3708
  glbModelLayer;
3686
3709
  laneLayer;
3687
3710
  mergeGraphicLayer;
3711
+ textTextureLayer;
3688
3712
  grounds = /* @__PURE__ */ new Set();
3689
3713
  groundLayer;
3690
3714
  shadow = new Shadow();
@@ -3697,7 +3721,7 @@ var Floor = class extends Object3D8 {
3697
3721
  key = "";
3698
3722
  box = new Box35();
3699
3723
  getPosition() {
3700
- return this.box.getCenter(new Vector39());
3724
+ return this.box.getCenter(new Vector310());
3701
3725
  }
3702
3726
  createGround(options) {
3703
3727
  const ground = new Graphic(this.context, options);
@@ -3722,7 +3746,7 @@ var Floor = class extends Object3D8 {
3722
3746
  return !!(this.grounds.size || this.graphicLayer.children.length);
3723
3747
  }
3724
3748
  getCenter() {
3725
- return new Box35().setFromObject(this).getCenter(new Vector39());
3749
+ return new Box35().setFromObject(this).getCenter(new Vector310());
3726
3750
  }
3727
3751
  addModel(options) {
3728
3752
  const model = new Model(this.context, options);
@@ -3732,8 +3756,8 @@ var Floor = class extends Object3D8 {
3732
3756
  }
3733
3757
  addShadow() {
3734
3758
  const box = new Box35().setFromObject(this.groundUpper);
3735
- const center2 = box.getCenter(new Vector39());
3736
- const size = box.getSize(new Vector39());
3759
+ const center2 = box.getCenter(new Vector310());
3760
+ const size = box.getSize(new Vector310());
3737
3761
  this.shadow.setPosition(center2);
3738
3762
  this.shadow.changeLightCamera(size);
3739
3763
  }
@@ -3780,6 +3804,7 @@ var Floor = class extends Object3D8 {
3780
3804
  this.glbModelLayer.dispose();
3781
3805
  this.laneLayer.dispose();
3782
3806
  this.mergeGraphicLayer.dispose();
3807
+ this.textTextureLayer.dispose();
3783
3808
  this.grounds.forEach((ground) => ground.dispose());
3784
3809
  this.heatmap?.dispose();
3785
3810
  this.groundUpper.clear();
@@ -3791,7 +3816,7 @@ var Floor = class extends Object3D8 {
3791
3816
  };
3792
3817
 
3793
3818
  // src/elements/base-svg.ts
3794
- import { EventDispatcher as EventDispatcher3, Vector3 as Vector310 } from "three";
3819
+ import { EventDispatcher as EventDispatcher3, Vector3 as Vector311 } from "three";
3795
3820
  var BaseSvg = class extends EventDispatcher3 {
3796
3821
  constructor(context) {
3797
3822
  super();
@@ -3829,7 +3854,7 @@ var BaseSvg = class extends EventDispatcher3 {
3829
3854
  const { clientWidth, clientHeight } = renderer.domElement;
3830
3855
  const nx = x / clientWidth * 2 - 1;
3831
3856
  const ny = 1 - y / clientHeight * 2;
3832
- const v = new Vector310(nx, ny, 0);
3857
+ const v = new Vector311(nx, ny, 0);
3833
3858
  return v.unproject(camera);
3834
3859
  }
3835
3860
  getSvgCoordinate(vector) {
@@ -4181,14 +4206,14 @@ var SelectBox = class extends BaseSvg {
4181
4206
 
4182
4207
  // src/elements/wall.ts
4183
4208
  import {
4184
- BufferGeometry as BufferGeometry2,
4209
+ BufferGeometry as BufferGeometry3,
4185
4210
  Color as Color3,
4186
4211
  ExtrudeGeometry as ExtrudeGeometry2,
4187
4212
  LineSegments as LineSegments2,
4188
4213
  Mesh as Mesh4,
4189
4214
  Object3D as Object3D9,
4190
4215
  ShaderMaterial as ShaderMaterial2,
4191
- Vector3 as Vector311
4216
+ Vector3 as Vector312
4192
4217
  } from "three";
4193
4218
  import { mergeGeometries } from "three/examples/jsm/utils/BufferGeometryUtils";
4194
4219
  var Wall = class extends Object3D9 {
@@ -4319,8 +4344,8 @@ var Wall = class extends Object3D9 {
4319
4344
  for (let i = 0; i < curCds.length; i++) {
4320
4345
  const cur = curCds[i];
4321
4346
  const next = i + 1 === curCds.length ? curCds[0] : curCds[i + 1];
4322
- points.push(new Vector311(cur[0], cur[1], _height));
4323
- points.push(new Vector311(next[0], next[1], _height));
4347
+ points.push(new Vector312(cur[0], cur[1], _height));
4348
+ points.push(new Vector312(next[0], next[1], _height));
4324
4349
  }
4325
4350
  }
4326
4351
  return points;
@@ -4328,7 +4353,7 @@ var Wall = class extends Object3D9 {
4328
4353
  initLineGeometry() {
4329
4354
  const geometries = this.options.map((option) => {
4330
4355
  const points = this.getBorderPoints(option);
4331
- return new BufferGeometry2().setFromPoints(points);
4356
+ return new BufferGeometry3().setFromPoints(points);
4332
4357
  });
4333
4358
  this.lineGeometry = mergeGeometries(geometries);
4334
4359
  }
@@ -4414,7 +4439,7 @@ var GroundTexture = class extends Object3D10 {
4414
4439
  const texture = await this.context.textureFactory.getTexture(iconUrl);
4415
4440
  const material = new MeshBasicMaterial3({
4416
4441
  map: texture,
4417
- alphaTest: 0.5,
4442
+ alphaTest: 1,
4418
4443
  side: DoubleSide3
4419
4444
  });
4420
4445
  return material;
@@ -4432,7 +4457,7 @@ var GroundTexture = class extends Object3D10 {
4432
4457
  };
4433
4458
 
4434
4459
  // src/elements/glb-model.ts
4435
- import { Box3 as Box38, Mesh as Mesh6, Object3D as Object3D11, Vector3 as Vector312 } from "three";
4460
+ import { Box3 as Box38, Mesh as Mesh6, Object3D as Object3D11, Vector3 as Vector313 } from "three";
4436
4461
  var defaultGlbOptions = {
4437
4462
  url: "",
4438
4463
  geometry: { type: "polygon", cds: [], coords: [], curveCpt: [], curveIndex: [] },
@@ -4457,7 +4482,7 @@ var GlbModel = class extends Object3D11 {
4457
4482
  const object = await loadModel(this.options.url);
4458
4483
  object.scene.rotation.set(Math.PI / 2, 0, 0);
4459
4484
  const box = new Box38().setFromObject(object.scene);
4460
- const size = box.getSize(new Vector312());
4485
+ const size = box.getSize(new Vector313());
4461
4486
  const max = Math.max(size.x, size.y);
4462
4487
  const scale = this.options.width / max;
4463
4488
  this.scale.set(scale, scale, scale);
@@ -4488,9 +4513,9 @@ var GlbModel = class extends Object3D11 {
4488
4513
  };
4489
4514
 
4490
4515
  // src/elements/lane.ts
4491
- import { BufferGeometry as BufferGeometry3, LineSegments as LineSegments3, Mesh as Mesh7, Object3D as Object3D12, ShapeGeometry as ShapeGeometry2, Vector3 as Vector313 } from "three";
4516
+ import { BufferGeometry as BufferGeometry4, LineSegments as LineSegments3, Mesh as Mesh7, Object3D as Object3D12, ShapeGeometry as ShapeGeometry2, Vector3 as Vector314 } from "three";
4492
4517
  import { mergeGeometries as mergeGeometries3 } from "three/examples/jsm/utils/BufferGeometryUtils";
4493
- import { Line2 } from "three/examples/jsm/lines/Line2";
4518
+ import { Line2 as Line22 } from "three/examples/jsm/lines/Line2";
4494
4519
  import { LineGeometry } from "three/examples/jsm/lines/LineGeometry";
4495
4520
  var Lane = class extends Object3D12 {
4496
4521
  constructor(context, options) {
@@ -4553,8 +4578,8 @@ var Lane = class extends Object3D12 {
4553
4578
  for (let i = 0; i < curCds.length; i++) {
4554
4579
  const cur = curCds[i];
4555
4580
  const next = i + 1 === curCds.length ? curCds[0] : curCds[i + 1];
4556
- points.push(new Vector313(cur[0], cur[1], _height));
4557
- points.push(new Vector313(next[0], next[1], _height));
4581
+ points.push(new Vector314(cur[0], cur[1], _height));
4582
+ points.push(new Vector314(next[0], next[1], _height));
4558
4583
  }
4559
4584
  }
4560
4585
  return points;
@@ -4584,7 +4609,7 @@ var Lane = class extends Object3D12 {
4584
4609
  const geometry = new LineGeometry();
4585
4610
  const vec = option.geometry.otherCoords[1].map((item) => [...item, option.airHeight + (option.deltaHeight || 0)]).flat(2);
4586
4611
  geometry.setPositions(vec);
4587
- const line = new Line2(geometry, material);
4612
+ const line = new Line22(geometry, material);
4588
4613
  line.computeLineDistances();
4589
4614
  line.position.z += 1e-3;
4590
4615
  this.add(line);
@@ -4595,7 +4620,7 @@ var Lane = class extends Object3D12 {
4595
4620
  initLineGeometry() {
4596
4621
  const geometries = this.options.map((option) => {
4597
4622
  const points = this.getBorderPoints(option);
4598
- return new BufferGeometry3().setFromPoints(points);
4623
+ return new BufferGeometry4().setFromPoints(points);
4599
4624
  });
4600
4625
  this.lineGeometry = mergeGeometries3(geometries);
4601
4626
  }
@@ -4631,8 +4656,8 @@ import {
4631
4656
  Object3D as Object3D13,
4632
4657
  ExtrudeGeometry as ExtrudeGeometry3,
4633
4658
  Mesh as Mesh8,
4634
- Vector3 as Vector314,
4635
- BufferGeometry as BufferGeometry4,
4659
+ Vector3 as Vector315,
4660
+ BufferGeometry as BufferGeometry5,
4636
4661
  LineSegments as LineSegments4,
4637
4662
  ShaderMaterial as ShaderMaterial3,
4638
4663
  Color as Color4
@@ -4762,8 +4787,8 @@ var MergeGraphic = class extends Object3D13 {
4762
4787
  for (let i = 0; i < curCds.length; i++) {
4763
4788
  const cur = curCds[i];
4764
4789
  const next = i + 1 === curCds.length ? curCds[0] : curCds[i + 1];
4765
- points.push(new Vector314(cur[0], cur[1], height));
4766
- points.push(new Vector314(next[0], next[1], height));
4790
+ points.push(new Vector315(cur[0], cur[1], height));
4791
+ points.push(new Vector315(next[0], next[1], height));
4767
4792
  }
4768
4793
  }
4769
4794
  });
@@ -4774,7 +4799,7 @@ var MergeGraphic = class extends Object3D13 {
4774
4799
  this.lineGeometry.dispose();
4775
4800
  }
4776
4801
  const points = this.getBorderPoints();
4777
- const lineGeometry = new BufferGeometry4().setFromPoints(points);
4802
+ const lineGeometry = new BufferGeometry5().setFromPoints(points);
4778
4803
  this.lineGeometry = lineGeometry;
4779
4804
  }
4780
4805
  createBorder() {
@@ -5030,6 +5055,389 @@ var Poi2 = class extends Object3D14 {
5030
5055
  }
5031
5056
  };
5032
5057
 
5058
+ // src/elements/text-texture.ts
5059
+ import {
5060
+ DoubleSide as DoubleSide5,
5061
+ Matrix4 as Matrix42,
5062
+ Mesh as Mesh9,
5063
+ MeshBasicMaterial as MeshBasicMaterial6,
5064
+ Object3D as Object3D15,
5065
+ PlaneGeometry as PlaneGeometry3
5066
+ } from "three";
5067
+ import { mergeGeometries as mergeGeometries5 } from "three/examples/jsm/utils/BufferGeometryUtils";
5068
+
5069
+ // src/factory/material.ts
5070
+ import { LineMaterial } from "three/examples/jsm/lines/LineMaterial";
5071
+ import {
5072
+ Color as Color5,
5073
+ LineBasicMaterial as LineBasicMaterial6,
5074
+ MeshStandardMaterial as MeshStandardMaterial2,
5075
+ MeshBasicMaterial as MeshBasicMaterial5,
5076
+ ShaderMaterial as ShaderMaterial4,
5077
+ DoubleSide as DoubleSide4,
5078
+ Vector2 as Vector28
5079
+ } from "three";
5080
+ function vectorToString(vector) {
5081
+ return `${vector.x}-${vector.y}-${vector.z}`;
5082
+ }
5083
+ var MaterialFactory = class {
5084
+ constructor(context) {
5085
+ this.context = context;
5086
+ }
5087
+ lineMaterialMap = /* @__PURE__ */ new Map();
5088
+ meshStandardMaterialMap = /* @__PURE__ */ new Map();
5089
+ meshBasicMaterialMap = /* @__PURE__ */ new Map();
5090
+ shaderMaterialMap = /* @__PURE__ */ new Map();
5091
+ groundTextureMaterialMap = /* @__PURE__ */ new Map();
5092
+ line2MaterialMap = /* @__PURE__ */ new Map();
5093
+ generateLineMaterialKey({ color, opacity }) {
5094
+ return `${color}-${opacity}`;
5095
+ }
5096
+ createLineMaterial({ color, opacity }) {
5097
+ const key = this.generateLineMaterialKey({ color, opacity });
5098
+ if (this.lineMaterialMap.has(key)) {
5099
+ return this.lineMaterialMap.get(key);
5100
+ }
5101
+ const lineMaterial = new LineBasicMaterial6({
5102
+ color: new Color5(color).convertLinearToSRGB(),
5103
+ transparent: true,
5104
+ opacity
5105
+ });
5106
+ this.lineMaterialMap.set(key, lineMaterial);
5107
+ return lineMaterial;
5108
+ }
5109
+ createMeshStandardMaterial({ color, opacity }) {
5110
+ const key = `${color}-${opacity}`;
5111
+ if (this.meshStandardMaterialMap.has(key)) {
5112
+ return this.meshStandardMaterialMap.get(key);
5113
+ }
5114
+ const material = new MeshStandardMaterial2({
5115
+ color: new Color5(color).convertLinearToSRGB(),
5116
+ roughness: 1,
5117
+ transparent: true,
5118
+ opacity,
5119
+ depthWrite: true
5120
+ });
5121
+ this.meshStandardMaterialMap.set(key, material);
5122
+ return material;
5123
+ }
5124
+ createMeshBasicMaterial({ color, opacity }) {
5125
+ const key = `${color}-${opacity}`;
5126
+ if (this.meshBasicMaterialMap.has(key)) {
5127
+ return this.meshBasicMaterialMap.get(key);
5128
+ }
5129
+ const material = new MeshBasicMaterial5({
5130
+ color,
5131
+ transparent: true,
5132
+ opacity,
5133
+ depthWrite: true
5134
+ });
5135
+ this.meshBasicMaterialMap.set(key, material);
5136
+ return material;
5137
+ }
5138
+ createShaderMaterial({
5139
+ gradualColor,
5140
+ center: center2,
5141
+ maxValue,
5142
+ opacity,
5143
+ direction,
5144
+ max,
5145
+ min
5146
+ }) {
5147
+ const key = `${gradualColor.toString()}-${vectorToString(
5148
+ center2
5149
+ )}-${maxValue}-${opacity}-${vectorToString(direction)}`;
5150
+ if (this.shaderMaterialMap.has(key)) {
5151
+ return this.shaderMaterialMap.get(key);
5152
+ }
5153
+ const vertexShader = `
5154
+ uniform vec3 uColor;
5155
+ uniform vec3 uGradualColor;
5156
+ uniform vec3 center;
5157
+ uniform vec3 uDirection;
5158
+ uniform vec3 uMax;
5159
+ uniform vec3 uMin;
5160
+ uniform float maxValue;
5161
+ varying vec3 vColor;
5162
+
5163
+ void main() {
5164
+ vec3 lineVec = uMax - uMin; // \u7EBF\u6BB5AB\u7684\u65B9\u5411\u5411\u91CF
5165
+ vec3 AP = position - uMin; // \u5411\u91CFAP
5166
+ float t = dot(AP, lineVec) / dot(lineVec, lineVec); // \u53C2\u6570t
5167
+ t = clamp(t, 0.0, 1.0); // \u9650\u5236t\u5728[0, 1]\u8303\u56F4\u5185\uFF0C\u786E\u4FDD\u6700\u77ED\u8DDD\u79BB\u5728\u7EBF\u6BB5AB\u4E0A
5168
+
5169
+ vec3 closestPoint = uMin + t * lineVec; // \u6700\u77ED\u8DDD\u79BB\u70B9\u7684\u4F4D\u7F6E
5170
+ vec3 vecAP = closestPoint - uMin; // \u5411\u91CFAP'
5171
+ float distance = length(vecAP);
5172
+ float maxLen = length(lineVec);
5173
+
5174
+ // vec3 direction = normalize(uDirection);
5175
+ // float gradient = dot(normalize(normal), normalize(uDirection));
5176
+ // vec3 currentPosition = position - center;
5177
+ // float colorFactor = (dot(direction, currentPosition) / maxValue) * 0.5 + 0.5;
5178
+ float colorFactor = distance / maxLen;
5179
+
5180
+ vColor = mix(uColor, uGradualColor, 1.0 - t);
5181
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
5182
+ }
5183
+ `;
5184
+ const fragmentShader = `
5185
+ varying vec3 vColor;
5186
+ uniform float opacity;
5187
+
5188
+ void main() {
5189
+ gl_FragColor = vec4(vColor.x, vColor.y, vColor.z, opacity);
5190
+ }
5191
+ `;
5192
+ const material = new ShaderMaterial4({
5193
+ uniforms: {
5194
+ uColor: {
5195
+ value: new Color5(gradualColor[0]).convertLinearToSRGB()
5196
+ },
5197
+ uGradualColor: {
5198
+ value: new Color5(gradualColor[1]).convertLinearToSRGB()
5199
+ },
5200
+ center: {
5201
+ value: center2
5202
+ },
5203
+ maxValue: {
5204
+ value: maxValue
5205
+ },
5206
+ opacity: {
5207
+ value: opacity
5208
+ },
5209
+ uDirection: {
5210
+ value: direction
5211
+ },
5212
+ uMax: {
5213
+ value: max
5214
+ },
5215
+ uMin: {
5216
+ value: min
5217
+ }
5218
+ },
5219
+ vertexShader,
5220
+ fragmentShader,
5221
+ side: DoubleSide4
5222
+ });
5223
+ this.shaderMaterialMap.set(key, material);
5224
+ return material;
5225
+ }
5226
+ async createGroundTextureMaterial({ url, opacity }) {
5227
+ const key = `${url}-${opacity}`;
5228
+ if (this.groundTextureMaterialMap.has(key)) {
5229
+ return this.groundTextureMaterialMap.get(key);
5230
+ }
5231
+ const texture = await this.context.textureFactory.getTexture(url);
5232
+ const material = new MeshBasicMaterial5({
5233
+ map: texture,
5234
+ alphaTest: 0.2,
5235
+ side: DoubleSide4
5236
+ });
5237
+ texture.needsUpdate = true;
5238
+ this.groundTextureMaterialMap.set(key, material);
5239
+ return material;
5240
+ }
5241
+ createLine2MaterialMap({ color, width, dashed }) {
5242
+ const key = `${color}-${width}-${dashed}`;
5243
+ if (this.line2MaterialMap.has(key)) {
5244
+ return this.line2MaterialMap.get(key);
5245
+ }
5246
+ const material = new LineMaterial({
5247
+ color: parseInt(color.slice(1), 16),
5248
+ dashed,
5249
+ linewidth: width,
5250
+ worldUnits: true,
5251
+ dashSize: 1,
5252
+ gapSize: 3,
5253
+ dashScale: 1,
5254
+ resolution: new Vector28(this.context.clientSize.width, this.context.clientSize.height)
5255
+ });
5256
+ this.line2MaterialMap.set(key, material);
5257
+ return material;
5258
+ }
5259
+ dispose() {
5260
+ this.lineMaterialMap.forEach((val, _) => {
5261
+ val.dispose();
5262
+ });
5263
+ this.lineMaterialMap.clear();
5264
+ this.meshStandardMaterialMap.forEach((val, _) => {
5265
+ val.dispose();
5266
+ });
5267
+ this.meshStandardMaterialMap.clear();
5268
+ this.meshBasicMaterialMap.forEach((val, _) => {
5269
+ val.dispose();
5270
+ });
5271
+ this.meshBasicMaterialMap.clear();
5272
+ this.shaderMaterialMap.forEach((val, _) => {
5273
+ val.dispose();
5274
+ });
5275
+ this.shaderMaterialMap.clear();
5276
+ this.groundTextureMaterialMap.forEach((val, _) => {
5277
+ val.dispose();
5278
+ val.map?.dispose();
5279
+ });
5280
+ this.groundTextureMaterialMap.clear();
5281
+ this.line2MaterialMap.forEach((val, _) => {
5282
+ val.dispose();
5283
+ });
5284
+ this.line2MaterialMap.clear();
5285
+ }
5286
+ };
5287
+
5288
+ // src/factory/text-texture.ts
5289
+ import { DataTexture as DataTexture2, LinearFilter as LinearFilter2, RGBAFormat as RGBAFormat2 } from "three";
5290
+ var TextTextureFactory = class {
5291
+ static canvas = null;
5292
+ static ctx = null;
5293
+ static options = {
5294
+ width: 1024,
5295
+ height: 64,
5296
+ font: "54px sans-serif",
5297
+ textBaseline: "hanging",
5298
+ lineWidth: 12,
5299
+ fillStyle: "rgba(0,0,0,1)",
5300
+ strokeStyle: "white"
5301
+ };
5302
+ static getCanvas() {
5303
+ if (this.canvas) {
5304
+ return this.canvas;
5305
+ } else {
5306
+ const canvas2 = document.createElement("canvas");
5307
+ this.canvas = canvas2;
5308
+ return canvas2;
5309
+ }
5310
+ }
5311
+ static getCtx() {
5312
+ if (this.ctx) {
5313
+ return this.ctx;
5314
+ }
5315
+ const canvas2 = this.getCanvas();
5316
+ const ctx2 = canvas2.getContext("2d");
5317
+ this.ctx = ctx2;
5318
+ return ctx2;
5319
+ }
5320
+ static getMergedOptions(options) {
5321
+ return {
5322
+ ...this.options,
5323
+ ...options
5324
+ };
5325
+ }
5326
+ static setCtxStyle(options) {
5327
+ const canvas2 = this.getCanvas();
5328
+ const ctx2 = this.getCtx();
5329
+ canvas2.width = options.width;
5330
+ canvas2.height = options.height;
5331
+ ctx2.font = options.font;
5332
+ ctx2.textBaseline = options.textBaseline;
5333
+ ctx2.lineWidth = options.lineWidth;
5334
+ ctx2.fillStyle = options.fillStyle;
5335
+ ctx2.strokeStyle = options.strokeStyle;
5336
+ }
5337
+ static getTextureByText(text, options) {
5338
+ const mergedOptions = this.getMergedOptions(options);
5339
+ const canvas2 = this.getCanvas();
5340
+ const ctx2 = this.getCtx();
5341
+ ctx2.clearRect(0, 0, canvas2.width, canvas2.height);
5342
+ this.setCtxStyle(mergedOptions);
5343
+ const y = hasChinese(text) ? 4 : 8;
5344
+ if (mergedOptions.lineWidth) {
5345
+ ctx2.strokeText(text, 2, y);
5346
+ }
5347
+ ctx2.fillText(text, 2, y);
5348
+ let width = Math.ceil(ctx2.measureText(text).width);
5349
+ width = width % 2 === 0 ? width : width + 1;
5350
+ width += 2;
5351
+ const imageData = ctx2.getImageData(0, 0, width, 64);
5352
+ const texture = new DataTexture2(
5353
+ Uint8Array.from(imageData.data),
5354
+ width,
5355
+ 64,
5356
+ RGBAFormat2
5357
+ );
5358
+ texture.flipY = true;
5359
+ texture.minFilter = LinearFilter2;
5360
+ texture.magFilter = LinearFilter2;
5361
+ return texture;
5362
+ }
5363
+ static dispose() {
5364
+ this.ctx = null;
5365
+ this.canvas = null;
5366
+ }
5367
+ };
5368
+
5369
+ // src/elements/text-texture.ts
5370
+ var defaultTextTextureOptions = {
5371
+ airHeight: 0,
5372
+ deltaHeight: 0,
5373
+ height: 0,
5374
+ geometry: {
5375
+ cds: [],
5376
+ type: "polygon",
5377
+ coords: [],
5378
+ curveCpt: [],
5379
+ curveIndex: []
5380
+ },
5381
+ texts: [],
5382
+ fillColor: "#ffffff",
5383
+ fillOpacity: 0,
5384
+ strokeColor: "#ffffff",
5385
+ strokeOpacity: 0,
5386
+ secondHeight: 0,
5387
+ secondRotate: 0
5388
+ };
5389
+ var TextTexture = class extends Object3D15 {
5390
+ constructor(context, options) {
5391
+ super();
5392
+ this.context = context;
5393
+ this.options = options.map((item) => ({ ...defaultTextTextureOptions, ...item }));
5394
+ this.init();
5395
+ }
5396
+ options;
5397
+ mesh;
5398
+ async init() {
5399
+ const textures = this.options.map((options) => {
5400
+ return TextTextureFactory.getTextureByText(options.texts[0], {
5401
+ fillStyle: hexToRgb(options.fillColor, options.fillOpacity),
5402
+ strokeStyle: hexToRgb(options.strokeColor, options.strokeOpacity),
5403
+ lineWidth: 6,
5404
+ font: "54px sans-serif"
5405
+ });
5406
+ });
5407
+ const geometries = textures.map((item, index) => {
5408
+ const options = this.options[index];
5409
+ const { width, height } = item.image;
5410
+ const aspect = width / height;
5411
+ const secondWidth = options.secondHeight * aspect;
5412
+ const geometry2 = new PlaneGeometry3(secondWidth, options.secondHeight);
5413
+ const center2 = getCenter(options.geometry.coords[0]);
5414
+ const matrix = new Matrix42().makeTranslation(center2[0], center2[1], options.airHeight + options.deltaHeight + options.height).multiply(new Matrix42().makeRotationZ(options.secondRotate));
5415
+ geometry2.applyMatrix4(matrix);
5416
+ return geometry2;
5417
+ });
5418
+ const geometry = mergeGeometries5(geometries, true);
5419
+ geometries.forEach((geometry2) => geometry2.dispose());
5420
+ const materials = textures.map((texture) => {
5421
+ const material = new MeshBasicMaterial6({
5422
+ map: texture,
5423
+ alphaTest: 1,
5424
+ side: DoubleSide5
5425
+ });
5426
+ texture.needsUpdate = true;
5427
+ return material;
5428
+ });
5429
+ const mesh = new Mesh9(geometry, materials);
5430
+ this.mesh = mesh;
5431
+ this.position.z += 4e-3;
5432
+ this.add(mesh);
5433
+ }
5434
+ dispose() {
5435
+ this.mesh?.geometry.dispose();
5436
+ (this.mesh?.material).forEach((item) => item.dispose());
5437
+ this.clear();
5438
+ }
5439
+ };
5440
+
5033
5441
  // src/operations/selection/box-selection.ts
5034
5442
  import { Frustum as Frustum2 } from "three";
5035
5443
  var BoxSelection = class extends BaseSvg {
@@ -5287,7 +5695,7 @@ var Selection = class extends EventDispatcher4 {
5287
5695
  };
5288
5696
 
5289
5697
  // src/operations/hover/hover-helper.ts
5290
- import { EventDispatcher as EventDispatcher5, Vector2 as Vector28 } from "three";
5698
+ import { EventDispatcher as EventDispatcher5, Vector2 as Vector29 } from "three";
5291
5699
  var HoverHelper = class extends EventDispatcher5 {
5292
5700
  constructor(context) {
5293
5701
  super();
@@ -5319,7 +5727,7 @@ var HoverHelper = class extends EventDispatcher5 {
5319
5727
  resGraphic = graphic;
5320
5728
  }
5321
5729
  } else if (poi instanceof Poi2) {
5322
- const { x, y } = poi.box.getCenter(new Vector28());
5730
+ const { x, y } = poi.box.getCenter(new Vector29());
5323
5731
  let curDistance = Math.sqrt((x - e.offsetX) ** 2 + (y - e.offsetY) ** 2);
5324
5732
  if (curDistance < distance) {
5325
5733
  distance = curDistance;
@@ -5396,227 +5804,8 @@ var HoverHelper = class extends EventDispatcher5 {
5396
5804
  }
5397
5805
  };
5398
5806
 
5399
- // src/factory/material.ts
5400
- import { LineMaterial } from "three/examples/jsm/lines/LineMaterial";
5401
- import {
5402
- Color as Color5,
5403
- LineBasicMaterial as LineBasicMaterial5,
5404
- MeshStandardMaterial as MeshStandardMaterial2,
5405
- MeshBasicMaterial as MeshBasicMaterial5,
5406
- ShaderMaterial as ShaderMaterial4,
5407
- DoubleSide as DoubleSide4,
5408
- Vector2 as Vector29
5409
- } from "three";
5410
- function vectorToString(vector) {
5411
- return `${vector.x}-${vector.y}-${vector.z}`;
5412
- }
5413
- var MaterialFactory = class {
5414
- constructor(context) {
5415
- this.context = context;
5416
- }
5417
- lineMaterialMap = /* @__PURE__ */ new Map();
5418
- meshStandardMaterialMap = /* @__PURE__ */ new Map();
5419
- meshBasicMaterialMap = /* @__PURE__ */ new Map();
5420
- shaderMaterialMap = /* @__PURE__ */ new Map();
5421
- groundTextureMaterialMap = /* @__PURE__ */ new Map();
5422
- line2MaterialMap = /* @__PURE__ */ new Map();
5423
- generateLineMaterialKey({ color, opacity }) {
5424
- return `${color}-${opacity}`;
5425
- }
5426
- createLineMaterial({ color, opacity }) {
5427
- const key = this.generateLineMaterialKey({ color, opacity });
5428
- if (this.lineMaterialMap.has(key)) {
5429
- return this.lineMaterialMap.get(key);
5430
- }
5431
- const lineMaterial = new LineBasicMaterial5({
5432
- color: new Color5(color).convertLinearToSRGB(),
5433
- transparent: true,
5434
- opacity
5435
- });
5436
- this.lineMaterialMap.set(key, lineMaterial);
5437
- return lineMaterial;
5438
- }
5439
- createMeshStandardMaterial({ color, opacity }) {
5440
- const key = `${color}-${opacity}`;
5441
- if (this.meshStandardMaterialMap.has(key)) {
5442
- return this.meshStandardMaterialMap.get(key);
5443
- }
5444
- const material = new MeshStandardMaterial2({
5445
- color: new Color5(color).convertLinearToSRGB(),
5446
- roughness: 1,
5447
- transparent: true,
5448
- opacity,
5449
- depthWrite: true
5450
- });
5451
- this.meshStandardMaterialMap.set(key, material);
5452
- return material;
5453
- }
5454
- createMeshBasicMaterial({ color, opacity }) {
5455
- const key = `${color}-${opacity}`;
5456
- if (this.meshBasicMaterialMap.has(key)) {
5457
- return this.meshBasicMaterialMap.get(key);
5458
- }
5459
- const material = new MeshBasicMaterial5({
5460
- color,
5461
- transparent: true,
5462
- opacity,
5463
- depthWrite: true
5464
- });
5465
- this.meshBasicMaterialMap.set(key, material);
5466
- return material;
5467
- }
5468
- createShaderMaterial({
5469
- gradualColor,
5470
- center: center2,
5471
- maxValue,
5472
- opacity,
5473
- direction,
5474
- max,
5475
- min
5476
- }) {
5477
- const key = `${gradualColor.toString()}-${vectorToString(
5478
- center2
5479
- )}-${maxValue}-${opacity}-${vectorToString(direction)}`;
5480
- if (this.shaderMaterialMap.has(key)) {
5481
- return this.shaderMaterialMap.get(key);
5482
- }
5483
- const vertexShader = `
5484
- uniform vec3 uColor;
5485
- uniform vec3 uGradualColor;
5486
- uniform vec3 center;
5487
- uniform vec3 uDirection;
5488
- uniform vec3 uMax;
5489
- uniform vec3 uMin;
5490
- uniform float maxValue;
5491
- varying vec3 vColor;
5492
-
5493
- void main() {
5494
- vec3 lineVec = uMax - uMin; // \u7EBF\u6BB5AB\u7684\u65B9\u5411\u5411\u91CF
5495
- vec3 AP = position - uMin; // \u5411\u91CFAP
5496
- float t = dot(AP, lineVec) / dot(lineVec, lineVec); // \u53C2\u6570t
5497
- t = clamp(t, 0.0, 1.0); // \u9650\u5236t\u5728[0, 1]\u8303\u56F4\u5185\uFF0C\u786E\u4FDD\u6700\u77ED\u8DDD\u79BB\u5728\u7EBF\u6BB5AB\u4E0A
5498
-
5499
- vec3 closestPoint = uMin + t * lineVec; // \u6700\u77ED\u8DDD\u79BB\u70B9\u7684\u4F4D\u7F6E
5500
- vec3 vecAP = closestPoint - uMin; // \u5411\u91CFAP'
5501
- float distance = length(vecAP);
5502
- float maxLen = length(lineVec);
5503
-
5504
- // vec3 direction = normalize(uDirection);
5505
- // float gradient = dot(normalize(normal), normalize(uDirection));
5506
- // vec3 currentPosition = position - center;
5507
- // float colorFactor = (dot(direction, currentPosition) / maxValue) * 0.5 + 0.5;
5508
- float colorFactor = distance / maxLen;
5509
-
5510
- vColor = mix(uColor, uGradualColor, 1.0 - t);
5511
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
5512
- }
5513
- `;
5514
- const fragmentShader = `
5515
- varying vec3 vColor;
5516
- uniform float opacity;
5517
-
5518
- void main() {
5519
- gl_FragColor = vec4(vColor.x, vColor.y, vColor.z, opacity);
5520
- }
5521
- `;
5522
- const material = new ShaderMaterial4({
5523
- uniforms: {
5524
- uColor: {
5525
- value: new Color5(gradualColor[0]).convertLinearToSRGB()
5526
- },
5527
- uGradualColor: {
5528
- value: new Color5(gradualColor[1]).convertLinearToSRGB()
5529
- },
5530
- center: {
5531
- value: center2
5532
- },
5533
- maxValue: {
5534
- value: maxValue
5535
- },
5536
- opacity: {
5537
- value: opacity
5538
- },
5539
- uDirection: {
5540
- value: direction
5541
- },
5542
- uMax: {
5543
- value: max
5544
- },
5545
- uMin: {
5546
- value: min
5547
- }
5548
- },
5549
- vertexShader,
5550
- fragmentShader,
5551
- side: DoubleSide4
5552
- });
5553
- this.shaderMaterialMap.set(key, material);
5554
- return material;
5555
- }
5556
- async createGroundTextureMaterial({ url, opacity }) {
5557
- const key = `${url}-${opacity}`;
5558
- if (this.groundTextureMaterialMap.has(key)) {
5559
- return this.groundTextureMaterialMap.get(key);
5560
- }
5561
- const texture = await this.context.textureFactory.getTexture(url);
5562
- const material = new MeshBasicMaterial5({
5563
- map: texture,
5564
- alphaTest: 0.2,
5565
- side: DoubleSide4
5566
- });
5567
- texture.needsUpdate = true;
5568
- this.groundTextureMaterialMap.set(key, material);
5569
- return material;
5570
- }
5571
- createLine2MaterialMap({ color, width, dashed }) {
5572
- const key = `${color}-${width}-${dashed}`;
5573
- if (this.line2MaterialMap.has(key)) {
5574
- return this.line2MaterialMap.get(key);
5575
- }
5576
- const material = new LineMaterial({
5577
- color: parseInt(color.slice(1), 16),
5578
- dashed,
5579
- linewidth: width,
5580
- worldUnits: true,
5581
- dashSize: 1,
5582
- gapSize: 3,
5583
- dashScale: 1,
5584
- resolution: new Vector29(this.context.clientSize.width, this.context.clientSize.height)
5585
- });
5586
- this.line2MaterialMap.set(key, material);
5587
- return material;
5588
- }
5589
- dispose() {
5590
- this.lineMaterialMap.forEach((val, _) => {
5591
- val.dispose();
5592
- });
5593
- this.lineMaterialMap.clear();
5594
- this.meshStandardMaterialMap.forEach((val, _) => {
5595
- val.dispose();
5596
- });
5597
- this.meshStandardMaterialMap.clear();
5598
- this.meshBasicMaterialMap.forEach((val, _) => {
5599
- val.dispose();
5600
- });
5601
- this.meshBasicMaterialMap.clear();
5602
- this.shaderMaterialMap.forEach((val, _) => {
5603
- val.dispose();
5604
- });
5605
- this.shaderMaterialMap.clear();
5606
- this.groundTextureMaterialMap.forEach((val, _) => {
5607
- val.dispose();
5608
- val.map?.dispose();
5609
- });
5610
- this.groundTextureMaterialMap.clear();
5611
- this.line2MaterialMap.forEach((val, _) => {
5612
- val.dispose();
5613
- });
5614
- this.line2MaterialMap.clear();
5615
- }
5616
- };
5617
-
5618
5807
  // src/utils/camera-bound.ts
5619
- import { Box3 as Box39, Vector3 as Vector318 } from "three";
5808
+ import { Box3 as Box39, Vector3 as Vector319 } from "three";
5620
5809
  var CameraBound = class {
5621
5810
  constructor(context) {
5622
5811
  this.context = context;
@@ -5624,9 +5813,9 @@ var CameraBound = class {
5624
5813
  this.changePrevCamera();
5625
5814
  }
5626
5815
  prevCamera = {
5627
- position: new Vector318(),
5816
+ position: new Vector319(),
5628
5817
  zoom: 1,
5629
- target: new Vector318()
5818
+ target: new Vector319()
5630
5819
  };
5631
5820
  enable = true;
5632
5821
  box = new Box39();
@@ -5672,8 +5861,8 @@ var CameraBound = class {
5672
5861
  const { min, max } = box;
5673
5862
  const lb = vector3ToDevice(min, camera, w, h);
5674
5863
  const rt = vector3ToDevice(max, camera, w, h);
5675
- const lt = vector3ToDevice(new Vector318(min.x, max.y, max.z), camera, w, h);
5676
- const rb = vector3ToDevice(new Vector318(max.x, min.y, min.z), camera, w, h);
5864
+ const lt = vector3ToDevice(new Vector319(min.x, max.y, max.z), camera, w, h);
5865
+ const rb = vector3ToDevice(new Vector319(max.x, min.y, min.z), camera, w, h);
5677
5866
  const left = Math.min(lb.x, rt.x, lt.x, rb.x);
5678
5867
  const right = Math.max(lb.x, rt.x, lt.x, rb.x);
5679
5868
  const top = Math.min(lb.y, rt.y, lt.y, rb.y);
@@ -5712,7 +5901,7 @@ var CameraBound = class {
5712
5901
  };
5713
5902
 
5714
5903
  // src/factory/texture.ts
5715
- import { LinearFilter as LinearFilter2, RGBAFormat as RGBAFormat2, TextureLoader as TextureLoader2 } from "three";
5904
+ import { LinearFilter as LinearFilter3, RGBAFormat as RGBAFormat3, TextureLoader as TextureLoader2 } from "three";
5716
5905
  var TextureFactory = class {
5717
5906
  constructor(context) {
5718
5907
  this.context = context;
@@ -5725,9 +5914,9 @@ var TextureFactory = class {
5725
5914
  }
5726
5915
  const texturePromise = this.loader.loadAsync(url).then((texture) => {
5727
5916
  this.textureMap.set(url, texture);
5728
- texture.format = RGBAFormat2;
5729
- texture.magFilter = LinearFilter2;
5730
- texture.minFilter = LinearFilter2;
5917
+ texture.format = RGBAFormat3;
5918
+ texture.magFilter = LinearFilter3;
5919
+ texture.minFilter = LinearFilter3;
5731
5920
  texture.colorSpace = "srgb";
5732
5921
  return texture;
5733
5922
  });
@@ -5820,7 +6009,7 @@ var Context = class extends EventDispatcher6 {
5820
6009
  /**
5821
6010
  * 获取两个点之间的像素数
5822
6011
  */
5823
- getRatio(point1 = new Vector319(0, 0, 0), point22 = new Vector319(100, 0, 0)) {
6012
+ getRatio(point1 = new Vector320(0, 0, 0), point22 = new Vector320(100, 0, 0)) {
5824
6013
  const { clientWidth, clientHeight } = this.container;
5825
6014
  const device1 = vector3ToDevice(point1, this.camera, clientWidth, clientHeight);
5826
6015
  const device2 = vector3ToDevice(point22, this.camera, clientWidth, clientHeight);
@@ -6023,7 +6212,7 @@ var Context = class extends EventDispatcher6 {
6023
6212
  );
6024
6213
  }
6025
6214
  getCameraLookAt() {
6026
- return new Vector319().subVectors(this.control.target, this.camera.position);
6215
+ return new Vector320().subVectors(this.control.target, this.camera.position);
6027
6216
  }
6028
6217
  /**
6029
6218
  * 按照一个中心点设置相机的放大缩小
@@ -6078,10 +6267,10 @@ var Context = class extends EventDispatcher6 {
6078
6267
  const boundingBox = new Box310().setFromObject(object);
6079
6268
  this.setPolarAngle(polar, 0);
6080
6269
  const { max, min } = boundingBox;
6081
- const leftTop = new Vector319(min.x, max.y, max.z);
6082
- const rightTop = new Vector319(max.x, max.y, max.z);
6083
- const rightBottom = new Vector319(max.x, min.y, min.z);
6084
- const leftBottom = new Vector319(min.x, min.y, min.z);
6270
+ const leftTop = new Vector320(min.x, max.y, max.z);
6271
+ const rightTop = new Vector320(max.x, max.y, max.z);
6272
+ const rightBottom = new Vector320(max.x, min.y, min.z);
6273
+ const leftBottom = new Vector320(min.x, min.y, min.z);
6085
6274
  const leftTop2d = vector3ToDevice(leftTop, this.camera, width, height);
6086
6275
  const rightTop2d = vector3ToDevice(rightTop, this.camera, width, height);
6087
6276
  const leftBottom2d = vector3ToDevice(leftBottom, this.camera, width, height);
@@ -6096,7 +6285,7 @@ var Context = class extends EventDispatcher6 {
6096
6285
  const xScale = (width - right - left) / size.x;
6097
6286
  const yScale = (height - top - bottom) / size.y;
6098
6287
  const scale = Math.min(xScale, yScale);
6099
- const center2 = new Vector319((max.x + min.x) / 2, (max.y + min.y) / 2, (max.z + min.z) / 2);
6288
+ const center2 = new Vector320((max.x + min.x) / 2, (max.y + min.y) / 2, (max.z + min.z) / 2);
6100
6289
  return { zoom: scale * this.camera.zoom, center: center2 };
6101
6290
  }
6102
6291
  /**
@@ -6656,7 +6845,7 @@ var BMap = class extends EventDispatcher7 {
6656
6845
  } = this.context;
6657
6846
  const device = vector3ToDevice(position, camera, width, height);
6658
6847
  const offsetX = device.x - width / 2;
6659
- const v3 = new Vector320();
6848
+ const v3 = new Vector321();
6660
6849
  v3.setFromMatrixColumn(this.context.camera.matrix, 0);
6661
6850
  v3.normalize();
6662
6851
  v3.multiplyScalar(offsetX / this.context.camera.zoom);
@@ -6928,6 +7117,7 @@ var BMap = class extends EventDispatcher7 {
6928
7117
  clearCanvas();
6929
7118
  disposeLoader();
6930
7119
  this.unRegistryEvent();
7120
+ TextTextureFactory.dispose();
6931
7121
  }
6932
7122
  };
6933
7123
 
@@ -7030,21 +7220,21 @@ function Worker2() {
7030
7220
 
7031
7221
  // src/plugins/navigation/path.ts
7032
7222
  import {
7033
- Mesh as Mesh9,
7034
- Object3D as Object3D17,
7223
+ Mesh as Mesh10,
7224
+ Object3D as Object3D18,
7035
7225
  TextureLoader as TextureLoader3,
7036
7226
  Color as Color8,
7037
7227
  Vector2 as Vector212,
7038
- Vector3 as Vector322,
7228
+ Vector3 as Vector323,
7039
7229
  NormalBlending,
7040
7230
  RepeatWrapping
7041
7231
  } from "three";
7042
7232
 
7043
7233
  // src/external/meshLine.js
7044
7234
  import {
7045
- BufferGeometry as BufferGeometry5,
7046
- Matrix4 as Matrix42,
7047
- Vector3 as Vector321,
7235
+ BufferGeometry as BufferGeometry6,
7236
+ Matrix4 as Matrix43,
7237
+ Vector3 as Vector322,
7048
7238
  Ray as Ray2,
7049
7239
  Sphere,
7050
7240
  LineSegments as LineSegments5,
@@ -7055,7 +7245,7 @@ import {
7055
7245
  Color as Color7,
7056
7246
  Vector2 as Vector211
7057
7247
  } from "three";
7058
- var MeshLine = class extends BufferGeometry5 {
7248
+ var MeshLine = class extends BufferGeometry6 {
7059
7249
  constructor() {
7060
7250
  super();
7061
7251
  this.isMeshLine = true;
@@ -7071,7 +7261,7 @@ var MeshLine = class extends BufferGeometry5 {
7071
7261
  this._points = [];
7072
7262
  this._geom = null;
7073
7263
  this.widthCallback = null;
7074
- this.matrixWorld = new Matrix42();
7264
+ this.matrixWorld = new Matrix43();
7075
7265
  Object.defineProperties(this, {
7076
7266
  // this is now a bufferGeometry
7077
7267
  // add getter to support previous api
@@ -7124,7 +7314,7 @@ MeshLine.prototype.setPoints = function(points, wcb) {
7124
7314
  this.widthCallback = wcb;
7125
7315
  this.positions = [];
7126
7316
  this.counters = [];
7127
- if (points.length && points[0] instanceof Vector321) {
7317
+ if (points.length && points[0] instanceof Vector322) {
7128
7318
  for (var j = 0; j < points.length; j++) {
7129
7319
  var p = points[j];
7130
7320
  var c = j / points.length;
@@ -7145,10 +7335,10 @@ MeshLine.prototype.setPoints = function(points, wcb) {
7145
7335
  this.process();
7146
7336
  };
7147
7337
  function MeshLineRaycast(raycaster, intersects) {
7148
- var inverseMatrix = new Matrix42();
7338
+ var inverseMatrix = new Matrix43();
7149
7339
  var ray = new Ray2();
7150
7340
  var sphere = new Sphere();
7151
- var interRay = new Vector321();
7341
+ var interRay = new Vector322();
7152
7342
  var geometry = this.geometry;
7153
7343
  if (!geometry.boundingSphere) geometry.computeBoundingSphere();
7154
7344
  sphere.copy(geometry.boundingSphere);
@@ -7158,9 +7348,9 @@ function MeshLineRaycast(raycaster, intersects) {
7158
7348
  }
7159
7349
  inverseMatrix.copy(this.matrixWorld).invert();
7160
7350
  ray.copy(raycaster.ray).applyMatrix4(inverseMatrix);
7161
- var vStart = new Vector321();
7162
- var vEnd = new Vector321();
7163
- var interSegment = new Vector321();
7351
+ var vStart = new Vector322();
7352
+ var vEnd = new Vector322();
7353
+ var interSegment = new Vector322();
7164
7354
  var step = this instanceof LineSegments5 ? 2 : 1;
7165
7355
  var index = geometry.index;
7166
7356
  var attributes = geometry.attributes;
@@ -7214,8 +7404,8 @@ MeshLine.prototype.getDistance = function(i) {
7214
7404
  let maxLength = 0;
7215
7405
  for (let k = 0; k < i; k++) {
7216
7406
  const index = 6 * k;
7217
- const p0 = new Vector321(this.positions[index], this.positions[index + 1], this.positions[index + 2]);
7218
- const p1 = new Vector321(this.positions[index + 6], this.positions[index + 7], this.positions[index + 8]);
7407
+ const p0 = new Vector322(this.positions[index], this.positions[index + 1], this.positions[index + 2]);
7408
+ const p1 = new Vector322(this.positions[index + 6], this.positions[index + 7], this.positions[index + 8]);
7219
7409
  const distance = p0.distanceTo(p1);
7220
7410
  maxLength += distance;
7221
7411
  }
@@ -7695,7 +7885,7 @@ var defaultConfig2 = {
7695
7885
  lineWidth: 8,
7696
7886
  color: 16777215
7697
7887
  };
7698
- var Path2 = class extends Object3D17 {
7888
+ var Path2 = class extends Object3D18 {
7699
7889
  constructor(navigation, config) {
7700
7890
  super();
7701
7891
  this.navigation = navigation;
@@ -7751,7 +7941,7 @@ var Path2 = class extends Object3D17 {
7751
7941
  }
7752
7942
  } = this;
7753
7943
  const screenPoints = points.map(
7754
- ([x, y]) => vector3ToDevice(new Vector322(x, y, 0), camera, width, height)
7944
+ ([x, y]) => vector3ToDevice(new Vector323(x, y, 0), camera, width, height)
7755
7945
  ).map(({ x, y }) => [x, y]);
7756
7946
  const pointLength = getPathLength(screenPoints);
7757
7947
  return pointLength / 32;
@@ -7815,7 +8005,7 @@ var Path2 = class extends Object3D17 {
7815
8005
  blending: NormalBlending,
7816
8006
  repeat: new Vector212(this.getRepeat(), 1)
7817
8007
  });
7818
- const mesh = this.mesh = new Mesh9(lineGeometry, material);
8008
+ const mesh = this.mesh = new Mesh10(lineGeometry, material);
7819
8009
  mesh.renderOrder = 9;
7820
8010
  this.add(mesh);
7821
8011
  return mesh;
@@ -7831,7 +8021,7 @@ var Path2 = class extends Object3D17 {
7831
8021
 
7832
8022
  // src/plugins/navigation/navigation.ts
7833
8023
  import { Group as TweenGroup2, Tween as Tween2 } from "@tweenjs/tween.js";
7834
- import { Vector3 as Vector323 } from "three";
8024
+ import { Vector3 as Vector324 } from "three";
7835
8025
  var defaultConfig3 = {
7836
8026
  path: {},
7837
8027
  speed: 10,
@@ -8111,8 +8301,8 @@ var Navigation = class extends Plugin {
8111
8301
  this.animationPathOptions.cPathIndex = prevCPathIndex + pastRouteIndex;
8112
8302
  if (this.startPoi) {
8113
8303
  this.startPoi.position.setX(pos2[0]).setY(pos2[1]);
8114
- const target = new Vector323(pos2[0], pos2[1], 0);
8115
- const offset = new Vector323();
8304
+ const target = new Vector324(pos2[0], pos2[1], 0);
8305
+ const offset = new Vector324();
8116
8306
  offset.setFromMatrixColumn(this.bmap.context.camera.matrix, 1);
8117
8307
  offset.normalize();
8118
8308
  offset.multiplyScalar(150 / this.bmap.context.camera.zoom);
@@ -8142,10 +8332,10 @@ var Navigation = class extends Plugin {
8142
8332
  const p2 = path[2];
8143
8333
  const angle = calc_angle(p0, p1, p2);
8144
8334
  if (Math.abs(angle) >= 179 && Math.abs(angle) <= 180) {
8145
- const v1 = new Vector323(p2[0] - p1[0], p2[1] - p1[1], 0).normalize();
8146
- const v2 = new Vector323(0, 1, 0).normalize();
8335
+ const v1 = new Vector324(p2[0] - p1[0], p2[1] - p1[1], 0).normalize();
8336
+ const v2 = new Vector324(0, 1, 0).normalize();
8147
8337
  const angle2 = v1.angleTo(v2);
8148
- const cross = new Vector323().crossVectors(v2, v1);
8338
+ const cross = new Vector324().crossVectors(v2, v1);
8149
8339
  const sign = Object.is(cross.y, 0) ? -1 : 1;
8150
8340
  const finalAngle = sign * angle2;
8151
8341
  return finalAngle;
@@ -8185,7 +8375,7 @@ var Navigation = class extends Plugin {
8185
8375
  this.bmap.context.control.target.copy(this.startPoi.position);
8186
8376
  this.bmap.context.setAzimuthalAngle(start.azimuthal, 0);
8187
8377
  const target = control.target.clone();
8188
- const offset = new Vector323();
8378
+ const offset = new Vector324();
8189
8379
  offset.setFromMatrixColumn(this.bmap.context.camera.matrix, 1);
8190
8380
  offset.normalize();
8191
8381
  offset.multiplyScalar(offsetDistance);
@@ -8226,18 +8416,18 @@ var Navigation = class extends Plugin {
8226
8416
  return;
8227
8417
  }
8228
8418
  if (Math.abs(offsetX) >= 1) {
8229
- const xv3 = new Vector323();
8419
+ const xv3 = new Vector324();
8230
8420
  xv3.setFromMatrixColumn(camera.matrix, 0);
8231
8421
  xv3.normalize();
8232
8422
  xv3.multiplyScalar(offsetX / camera.zoom);
8233
- target.add(new Vector323(xv3.x, 0, 0));
8423
+ target.add(new Vector324(xv3.x, 0, 0));
8234
8424
  }
8235
8425
  if (Math.abs(offsetY) >= 1) {
8236
- const v3 = new Vector323();
8426
+ const v3 = new Vector324();
8237
8427
  v3.setFromMatrixColumn(camera.matrix, 1);
8238
8428
  v3.normalize();
8239
8429
  v3.multiplyScalar(offsetY / camera.zoom);
8240
- target.add(new Vector323(0, v3.y, 0));
8430
+ target.add(new Vector324(0, v3.y, 0));
8241
8431
  }
8242
8432
  return this.bmap.context.setCameraPosition(target, duration);
8243
8433
  }
@@ -8540,14 +8730,14 @@ function translatePosToCenter(cds, center2) {
8540
8730
  return [cds[0] - center2[0], cds[1] - center2[1]];
8541
8731
  }
8542
8732
 
8543
- // src/assets/icon/parkingSpace/half.svg
8544
- var half_default = 'data:image/svg+xml,<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1722508608758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1737" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M671.672075 807.841824l-12.086033-1.711297-5.561715 10.695605a235.303309 235.303309 0 1 1-328.889852-310.172544l8.128659-4.813022v-9.519089c0.855648-28.236397-13.369506-48.45109-38.183309-54.226717l-6.738232-1.497385-5.989538 3.52955a314.450786 314.450786 0 1 0 438.519803 419.695539l3.850418-6.952143-2.887813-7.807792a60.216256 60.216256 0 0 0-50.162388-37.220705z" fill="%23ffffff" p-id="1738"></path><path d="M893.498922 805.167922c-2.994769-21.39121-16.578188-37.541573-30.268562-35.616364l-70.911861 9.839956-57.64931-189.633075a10.695605 10.695605 0 0 1 0-1.069561 37.969398 37.969398 0 0 0-35.830277-25.99032H435.620074V414.029649h157.760173v-78.826609H435.620074v-50.162387a39.466782 39.466782 0 1 0-78.826609 0v305.787346a44.065892 44.065892 0 0 0-1.711297 11.337341 39.680694 39.680694 0 0 0 17.540793 33.156376A37.755486 37.755486 0 0 0 407.918457 641.846035h260.117113l61.71364 203.216494a30.268562 30.268562 0 0 0 28.98509 19.145133h0.855648a48.985871 48.985871 0 0 0 16.364276-2.139121h0.641736l97.330005-13.369506c13.79733-2.887813 22.567726-21.92599 19.572957-43.531113zM406.955852 197.229736a98.613478 98.613478 0 1 0-98.506521-98.506521 98.506522 98.506522 0 0 0 98.506521 98.506521z" fill="%23ffffff" p-id="1739"></path></svg>';
8733
+ // src/assets/icon/parkingSpace/half.png
8734
+ var half_default = "data:image/png;base64,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";
8545
8735
 
8546
- // src/assets/icon/parkingSpace/power.svg
8547
- var power_default = 'data:image/svg+xml,<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1722508633972" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3840" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M568 171.84v285.312h144.64a12.8 12.8 0 0 1 10.816 19.648l-243.84 382.208a12.8 12.8 0 0 1-23.616-6.848V566.848h-144.64a12.8 12.8 0 0 1-10.816-19.648l243.84-382.208a12.8 12.8 0 0 1 23.616 6.848z" fill="%23ffffff" fill-opacity=".88" p-id="3841"></path></svg>';
8736
+ // src/assets/icon/parkingSpace/power.png
8737
+ var power_default = "data:image/png;base64,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";
8548
8738
 
8549
- // src/assets/icon/parkingSpace/mechanical.svg
8550
- var mechanical_default = 'data:image/svg+xml,<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1722508689425" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9597" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M354.1 768.4l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m0 0l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m0 0l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m0 0l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m0 0l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m0 0l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m375.5-7.1l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m0 0l-63.1 7.1c-0.1 0.3-0.2 0.7-0.2 1.1v15.9c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-23.5c0.1-0.2 0.1-0.4 0-0.6z m-375.5 7.1l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z m0 0l-63.1-7.1v24.1c0 0.3 0 0.6 0.1 0.9h63.1c0.1-0.3 0.1-0.6 0.1-0.9v-15.9c0-0.3-0.1-0.7-0.2-1.1z" p-id="9598" fill="%23ffffff"></path><path d="M354.3 769.6v15.9c0 0.3 0 0.6-0.1 0.9h-63.1c-0.1-0.3-0.1-0.6-0.1-0.9V762v-0.6l63.1 7.1c0.1 0.3 0.2 0.7 0.2 1.1z" p-id="9599" fill="%23ffffff"></path><path d="M354.3 769.6v15.9c0 0.3 0 0.6-0.1 0.9h-63.1c-0.1-0.3-0.1-0.6-0.1-0.9V762v-0.6l63.1 7.1c0.1 0.3 0.2 0.7 0.2 1.1zM729.7 761.9v23.5c0 0.3 0 0.6-0.1 0.9h-63.1c-0.1-0.3-0.1-0.6-0.1-0.9v-15.9c0-0.4 0.1-0.8 0.2-1.1l63.1-7.1v0.6z" p-id="9600" fill="%23ffffff"></path><path d="M729.7 761.9v23.5c0 0.3 0 0.6-0.1 0.9h-63.1c-0.1-0.3-0.1-0.6-0.1-0.9v-15.9c0-0.4 0.1-0.8 0.2-1.1l63.1-7.1v0.6zM158.3 132.8h50.6v38h-50.6zM253.8 132.8h50.6v38h-50.6zM353.8 132.8h50.6v38h-50.6zM441.3 132.8h139.2v38H441.3zM614.8 132.8h50.6v38h-50.6zM711.6 132.8h50.6v38h-50.6zM809.1 132.8h50.6v38h-50.6z" p-id="9601" fill="%23ffffff"></path><path d="M158.3 132.8h50.6v38h-50.6zM253.8 132.8h50.6v38h-50.6zM353.8 132.8h50.6v38h-50.6zM441.3 132.8h139.2v38H441.3zM614.8 132.8h50.6v38h-50.6zM711.6 132.8h50.6v38h-50.6zM809.1 132.8h50.6v38h-50.6z" p-id="9602" fill="%23ffffff"></path><path d="M967.6 202.4V101.2c0-24.4-19.8-44.3-44.3-44.3H100.7c-24.5 0-44.3 19.8-44.3 44.3v101.3c0 24 19.2 43.6 43 44.3v673.8h-24c-10.5 0-19 8.5-19 19s8.5 19 19 19h873.2c10.5 0 19-8.5 19-19s-8.5-19-19-19h-22.8v-674c23.3-1.3 41.8-20.6 41.8-44.2z m-873.2 0V101.2c0-3.5 2.8-6.3 6.3-6.3h822.6c3.5 0.1 6.3 2.9 6.3 6.3v101.3c0 3.5-2.8 6.3-6.3 6.3H100.7c-3.4-0.1-6.3-3-6.3-6.4zM253 785.5V762c0-11.9 4.9-23 13.5-30.4 7.5-6.6 17.5-9.5 27.4-8.1l66.7 7.5c18.3 2.8 31.6 19.3 31.6 38.6v15.9c0 21.4-16.1 38.9-35.9 38.9H289c-19.9-0.1-36-17.5-36-38.9z m60.3 116c0 10.5-8.5 19-19 19s-19-8.5-19-19V884l38 0.2v17.3z m34.5 19c2.1-6 3.5-12.3 3.5-19v-17.1l159.7 0.8h0.2l155.2-0.8v17.1c0 6.7 1.4 13 3.5 19H347.8z m394.5-19c0 10.5-8.5 19-19 19s-19-8.5-19-19v-17.3l38-0.2v17.5z m25.3-116.1c0 21.4-16.1 38.9-35.9 38.9h-67.3c-19.8 0-35.9-17.4-35.9-38.9v-15.9c0-19.3 13.3-35.8 30.9-38.5l68.1-7.7c9.1-1.4 19 1.6 26.7 8.2 8.6 7.4 13.5 18.5 13.5 30.4v23.5zM611.1 661.7c4.1-12.8 15.9-22.1 30-22.1s26 9.4 30 22.1h-60z m98.8-0.2c-4.7-33.8-33.8-59.9-68.8-59.9-35.1 0-64.2 26.2-68.9 60.1H315.9c-27 0-45.6-10.5-63.7-26.7 2.9-7.8 5.7-15.4 8.2-22.2 3.7-10 6.7-18.2 8.3-22.7 0.9-2.6 1.7-5.2 2.2-7.8l27.9-75.6c20.8-54.4 74.5-55.6 76.7-55.7h270c0.6 0 55.3 0.6 77.9 55.4l27.9 75.8c0.6 2.7 1.3 5.2 2.2 7.8l8.3 22.6c2.4 6.4 5.1 13.9 7.9 21.6-19.7 16.3-35.4 26.3-59.8 27.3z m178 259H776.8c2.1-6 3.5-12.3 3.5-19v-17.7h2c15.1 0.1 29.6-5.8 40.3-16.5 11.3-11.2 17.6-26.4 17.5-42.3v-83.2c0-17.6-13.8-62.2-13.9-62.7-2.7-8.4-15.1-42.4-28.8-79.5l-8.2-22.4c-0.4-1.1-0.7-2.3-0.9-3.5-0.2-1.1-0.5-2.1-0.9-3.1l-28.7-77.9c-32.3-78.7-110-79.6-113.2-79.6h-270c-3.3 0-81.9 0.9-112.2 80.3l-28.4 77.2c-0.4 1-0.7 2.1-0.9 3.1-0.2 1.2-0.5 2.3-0.9 3.5-1.6 4.4-4.6 12.6-8.3 22.5-10.6 28.8-25.2 68.1-28.7 79.5-0.2 0.4-13.9 44.9-13.9 62.6V825c-0.1 15.9 6.2 31.1 17.5 42.3 10.3 10.2 23.9 15.6 37.8 16.3v17.9c0 6.7 1.4 13 3.5 19H137.4V246.7h750.5v673.8z" p-id="9603" fill="%23ffffff"></path><path d="M441.3 132.8h139.2v38H441.3zM353.8 132.8h50.6v38h-50.6zM253.8 132.8h50.6v38h-50.6zM158.3 132.8h50.6v38h-50.6zM809.1 132.8h50.6v38h-50.6zM711.6 132.8h50.6v38h-50.6zM614.8 132.8h50.6v38h-50.6z" p-id="9604" fill="%23ffffff"></path></svg>';
8739
+ // src/assets/icon/parkingSpace/mechanical.png
8740
+ var mechanical_default = "data:image/png;base64,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";
8551
8741
 
8552
8742
  // src/loader/AibeeLoader/index.ts
8553
8743
  var defaultAibeeLoaderOption = {
@@ -8719,11 +8909,11 @@ var AibeeLoader = class {
8719
8909
  {}
8720
8910
  );
8721
8911
  Object.values(group).forEach((options) => {
8722
- const mergeGeometries5 = new MergeGraphic(
8912
+ const mergeGeometries6 = new MergeGraphic(
8723
8913
  this.bmap.context,
8724
8914
  options
8725
8915
  );
8726
- floor.mergeGraphicLayer.add(mergeGeometries5);
8916
+ floor.mergeGraphicLayer.add(mergeGeometries6);
8727
8917
  });
8728
8918
  break;
8729
8919
  case "ground":
@@ -8915,6 +9105,11 @@ var AibeeLoader = class {
8915
9105
  floor.userData.parkingSpaces = parkingSpacesGraphics;
8916
9106
  floor.userData.parkingSpacesGraphicMap = parkingSpacesGraphicMap;
8917
9107
  break;
9108
+ case "text":
9109
+ transformGraphicData(layer.elements, center2);
9110
+ const textTexture = new TextTexture(this.bmap.context, layer.elements);
9111
+ floor.textTextureLayer.add(textTexture);
9112
+ break;
8918
9113
  }
8919
9114
  });
8920
9115
  floor.userData.center = center2;
@@ -8967,6 +9162,7 @@ export {
8967
9162
  SplitLoad,
8968
9163
  SvgLine,
8969
9164
  SvgPolygon,
9165
+ TextTexture,
8970
9166
  Timer,
8971
9167
  UniqueKey,
8972
9168
  Wall,
@@ -8982,11 +9178,13 @@ export {
8982
9178
  createRect,
8983
9179
  createSvg,
8984
9180
  createSvgElement,
9181
+ createThreeLine,
8985
9182
  darkenColor,
8986
9183
  defaultAibeeLoaderOption,
8987
9184
  defaultConfig,
8988
9185
  defaultGraphicOptions,
8989
9186
  defaultOptions3 as defaultOptions,
9187
+ defaultTextTextureOptions,
8990
9188
  dispose,
8991
9189
  disposeLoader,
8992
9190
  distancePointToSegment,
@@ -9003,6 +9201,7 @@ export {
9003
9201
  getTextureByText,
9004
9202
  getTextureByUrl,
9005
9203
  hasChinese,
9204
+ hexToRgb,
9006
9205
  initCamera,
9007
9206
  initCanvas,
9008
9207
  initControl,