gl-draw 0.15.0-beta.33 → 0.15.0-beta.35

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.
@@ -1,46 +1,46 @@
1
1
  var Pt = Object.defineProperty, It = Object.defineProperties;
2
2
  var Dt = Object.getOwnPropertyDescriptors;
3
3
  var k = Object.getOwnPropertySymbols;
4
- var it = Object.prototype.hasOwnProperty, nt = Object.prototype.propertyIsEnumerable;
5
- var st = Math.pow, et = (s, t, e) => t in s ? Pt(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e, L = (s, t) => {
4
+ var it = Object.prototype.hasOwnProperty, st = Object.prototype.propertyIsEnumerable;
5
+ var nt = Math.pow, et = (n, t, e) => t in n ? Pt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e, L = (n, t) => {
6
6
  for (var e in t || (t = {}))
7
- it.call(t, e) && et(s, e, t[e]);
7
+ it.call(t, e) && et(n, e, t[e]);
8
8
  if (k)
9
9
  for (var e of k(t))
10
- nt.call(t, e) && et(s, e, t[e]);
11
- return s;
12
- }, q = (s, t) => It(s, Dt(t));
13
- var rt = (s, t) => {
10
+ st.call(t, e) && et(n, e, t[e]);
11
+ return n;
12
+ }, q = (n, t) => It(n, Dt(t));
13
+ var rt = (n, t) => {
14
14
  var e = {};
15
- for (var i in s)
16
- it.call(s, i) && t.indexOf(i) < 0 && (e[i] = s[i]);
17
- if (s != null && k)
18
- for (var i of k(s))
19
- t.indexOf(i) < 0 && nt.call(s, i) && (e[i] = s[i]);
15
+ for (var i in n)
16
+ it.call(n, i) && t.indexOf(i) < 0 && (e[i] = n[i]);
17
+ if (n != null && k)
18
+ for (var i of k(n))
19
+ t.indexOf(i) < 0 && st.call(n, i) && (e[i] = n[i]);
20
20
  return e;
21
21
  };
22
- var ot = (s, t, e) => new Promise((i, n) => {
22
+ var ot = (n, t, e) => new Promise((i, s) => {
23
23
  var a = (c) => {
24
24
  try {
25
25
  r(e.next(c));
26
26
  } catch (o) {
27
- n(o);
27
+ s(o);
28
28
  }
29
29
  }, l = (c) => {
30
30
  try {
31
31
  r(e.throw(c));
32
32
  } catch (o) {
33
- n(o);
33
+ s(o);
34
34
  }
35
35
  }, r = (c) => c.done ? i(c.value) : Promise.resolve(c.value).then(a, l);
36
- r((e = e.apply(s, t)).next());
36
+ r((e = e.apply(n, t)).next());
37
37
  });
38
- import { Material as at, Object3D as R, Texture as ct, VideoTexture as Bt, BufferGeometry as J, Float32BufferAttribute as G, PointsMaterial as zt, Points as H, InstancedMesh as wt, Vector3 as D, Quaternion as Tt, Group as _t, Mesh as St, Sprite as lt, Box3 as jt, Vector4 as O, Matrix4 as Et, Line3 as Lt, Sphere as Ot, InstancedInterleavedBuffer as Vt, InterleavedBufferAttribute as ut, MathUtils as kt, REVISION as Wt, ShaderChunk as W, ShaderMaterial as Nt, Vector2 as K, Color as dt } from "three";
38
+ import { Material as at, Object3D as R, Texture as ct, VideoTexture as Bt, BufferGeometry as J, Float32BufferAttribute as G, PointsMaterial as zt, Points as H, InstancedMesh as wt, Vector3 as D, Quaternion as Tt, Group as _t, Mesh as St, Sprite as lt, Box3 as jt, Vector4 as O, Matrix4 as Et, Line3 as Lt, Sphere as Ot, InstancedInterleavedBuffer as Vt, InterleavedBufferAttribute as ut, MathUtils as kt, REVISION as Wt, ShaderChunk as W, ShaderMaterial as Nt, Vector2 as K, Color as ft } from "three";
39
39
  import { CSS2DObject as Ut } from "three/examples/jsm/renderers/CSS2DRenderer";
40
40
  import { CSS3DObject as Rt, CSS3DSprite as Gt } from "three/examples/jsm/renderers/CSS3DRenderer";
41
41
  import { geoBounds as At, geoContains as $t, geoDistance as Ft, geoInterpolate as qt } from "d3-geo";
42
42
  import "d3-geo-projection";
43
- import { p as ft, a as Kt } from "./parseVector.module.js";
43
+ import { p as dt, a as Kt } from "./parseVector.module.js";
44
44
  import { LineSegmentsGeometry as Qt } from "three/examples/jsm/lines/LineSegmentsGeometry";
45
45
  import { merge as tt, mean as Xt, extent as ht } from "d3-array";
46
46
  import Yt, { flatten as Ct } from "earcut";
@@ -50,7 +50,7 @@ import Ht from "@turf/boolean-point-in-polygon";
50
50
  import { geoVoronoi as te } from "d3-geo-voronoi";
51
51
  import { scaleLinear as pt } from "d3-scale";
52
52
  const ee = 0, _e = 1, ie = 2, Ee = !1;
53
- class ne {
53
+ class se {
54
54
  constructor() {
55
55
  this.resources = /* @__PURE__ */ new Set(), this.disposeMaterial = !0, this.disposeVideo = !0;
56
56
  }
@@ -75,8 +75,8 @@ class ne {
75
75
  if (e.uniforms) {
76
76
  for (const i of Object.values(e.uniforms))
77
77
  if (i) {
78
- const n = i.value;
79
- (n instanceof ct || Array.isArray(n)) && this.track(n);
78
+ const s = i.value;
79
+ (s instanceof ct || Array.isArray(s)) && this.track(s);
80
80
  }
81
81
  }
82
82
  } else this.disposeVideo && t instanceof Bt && t.source.data && this.resources.add(t.source.data);
@@ -91,7 +91,7 @@ class ne {
91
91
  }), t.length = 0, this.resources.clear();
92
92
  }
93
93
  }
94
- const se = (s, t = 1) => {
94
+ const ne = (n, t = 1) => {
95
95
  const e = new J();
96
96
  e.setAttribute(
97
97
  "position",
@@ -100,7 +100,7 @@ const se = (s, t = 1) => {
100
100
  "scaleAtt",
101
101
  new G(new Array(t).fill(1), 1)
102
102
  );
103
- const i = s.material, n = new zt({
103
+ const i = n.material, s = new zt({
104
104
  size: 10,
105
105
  map: i.map,
106
106
  alphaMap: i.alphaMap,
@@ -113,7 +113,7 @@ const se = (s, t = 1) => {
113
113
  alphaTest: i.alphaTest,
114
114
  sizeAttenuation: !1
115
115
  });
116
- return n.onBeforeCompile = (a) => {
116
+ return s.onBeforeCompile = (a) => {
117
117
  a.vertexShader = `
118
118
  attribute float scaleAtt;
119
119
  ${a.vertexShader.replace(
@@ -121,18 +121,18 @@ const se = (s, t = 1) => {
121
121
  "gl_PointSize = size * scaleAtt;"
122
122
  )}
123
123
  `;
124
- }, new H(e, n);
125
- }, re = (s, t) => {
124
+ }, new H(e, s);
125
+ }, re = (n, t) => {
126
126
  const e = new R();
127
- t.forEach((i, n) => {
128
- const a = ft(i.position), l = ft(i.scale || [1, 1, 1]);
127
+ t.forEach((i, s) => {
128
+ const a = dt(i.position), l = dt(i.scale || [1, 1, 1]);
129
129
  e.position.copy(a), e.scale.copy(l), e.updateMatrix();
130
130
  const r = e.matrix.clone();
131
- if (s instanceof wt || s.isInstantiate)
132
- s.setMatrixAt(n, r);
133
- else if (s instanceof H || s.type === "Points") {
134
- const o = s.geometry, h = o.attributes.position.array, d = o.attributes.scaleAtt.array, p = new D(), u = new D(), m = new Tt(), f = n * 3, v = n * 1;
135
- r.decompose(p, m, u), h[f] = p.x, h[f + 1] = p.y, h[f + 2] = p.z, d[v] = Math.max(u.x, u.y, u.z), o.attributes.position.needsUpdate = !0, o.attributes.scaleAtt.needsUpdate = !0;
131
+ if (n instanceof wt || n.isInstantiate)
132
+ n.setMatrixAt(s, r);
133
+ else if (n instanceof H || n.type === "Points") {
134
+ const o = n.geometry, h = o.attributes.position.array, f = o.attributes.scaleAtt.array, p = new D(), u = new D(), m = new Tt(), d = s * 3, v = s * 1;
135
+ r.decompose(p, m, u), h[d] = p.x, h[d + 1] = p.y, h[d + 2] = p.z, f[v] = Math.max(u.x, u.y, u.z), o.attributes.position.needsUpdate = !0, o.attributes.scaleAtt.needsUpdate = !0;
136
136
  }
137
137
  });
138
138
  };
@@ -176,16 +176,16 @@ class ae extends oe {
176
176
  const e = t.material;
177
177
  if (Array.isArray(e))
178
178
  return e.map((i) => {
179
- const n = i.userData;
179
+ const s = i.userData;
180
180
  i.userData = {};
181
181
  const a = i.clone();
182
- return i.userData = n, a;
182
+ return i.userData = s, a;
183
183
  });
184
184
  {
185
185
  const i = e.userData;
186
186
  e.userData = {};
187
- const n = e.clone();
188
- return e.userData = i, n;
187
+ const s = e.clone();
188
+ return e.userData = i, s;
189
189
  }
190
190
  }
191
191
  setMaterialList(t, e) {
@@ -193,8 +193,8 @@ class ae extends oe {
193
193
  if (!i || !i.material)
194
194
  return;
195
195
  this.materialList.origin || (this.materialList.origin = i.material);
196
- const n = e === "clone" ? this.cloneMaterial() : Array.isArray(e) ? e.slice() : e;
197
- return this.materialList[t] = n, n;
196
+ const s = e === "clone" ? this.cloneMaterial() : Array.isArray(e) ? e.slice() : e;
197
+ return this.materialList[t] = s, s;
198
198
  }
199
199
  useMaterial(t) {
200
200
  const e = this.object3d;
@@ -206,8 +206,8 @@ class ae extends oe {
206
206
  const i = this.mList.get(t);
207
207
  if (!i)
208
208
  return;
209
- const n = this.object3d;
210
- Array.isArray(n.material) && e !== void 0 ? n.material[e] = i : n.material = i;
209
+ const s = this.object3d;
210
+ Array.isArray(s.material) && e !== void 0 ? s.material[e] = i : s.material = i;
211
211
  }
212
212
  useMListByName(t, e) {
213
213
  if (!this.mList)
@@ -335,18 +335,18 @@ class mt extends ae {
335
335
  instantiate(t) {
336
336
  return ot(this, null, function* () {
337
337
  var c;
338
- const e = (c = t == null ? void 0 : t.recursive) != null ? c : !0, { objectType: i, objectOptions: n } = this, [, a] = i.split("#");
338
+ const e = (c = t == null ? void 0 : t.recursive) != null ? c : !0, { objectType: i, objectOptions: s } = this, [, a] = i.split("#");
339
339
  let l = t == null ? void 0 : t.create;
340
340
  l === void 0 && (l = (o) => {
341
341
  var h;
342
342
  if (this.object3d) {
343
343
  if ((h = t == null ? void 0 : t.instancedAttr) != null && h.length) {
344
- const d = t.instancedAttr.length;
344
+ const f = t.instancedAttr.length;
345
345
  if (this.object3d instanceof lt)
346
- o.object3d = se(this.object3d, d);
346
+ o.object3d = ne(this.object3d, f);
347
347
  else {
348
348
  const p = this.object3d, u = this.cloneMaterial();
349
- o.object3d = new wt(p.geometry, u, d);
349
+ o.object3d = new wt(p.geometry, u, f);
350
350
  }
351
351
  re(o.object3d, t == null ? void 0 : t.instancedAttr);
352
352
  } else
@@ -354,11 +354,11 @@ class mt extends ae {
354
354
  o.object3d.userData.prefab && delete o.object3d.userData.prefab;
355
355
  }
356
356
  });
357
- const r = yield this.lead.draw(a, q(L({}, n || {}), {
357
+ const r = yield this.lead.draw(a, q(L({}, s || {}), {
358
358
  create: l,
359
359
  prefab: !1,
360
- key: (t == null ? void 0 : t.key) || (n == null ? void 0 : n.key),
361
- target: (t == null ? void 0 : t.target) || (n == null ? void 0 : n.target)
360
+ key: (t == null ? void 0 : t.key) || (s == null ? void 0 : s.key),
361
+ target: (t == null ? void 0 : t.target) || (s == null ? void 0 : s.target)
362
362
  }));
363
363
  return this.isBloom && r.enableBloom(), e && (yield Promise.all(
364
364
  this.children.map(
@@ -383,26 +383,26 @@ class mt extends ae {
383
383
  dispose() {
384
384
  var t;
385
385
  if (super.dispose(), (t = this.pencil.composerController) == null || t.bloomSelection.delete(this), this.lead && (this.lead.objects.delete(this.key), this.lead.objectWrapChindIdMap.delete(this), this.object3d && this.lead.objMap.delete(this.object3d)), this.disposeTrack) {
386
- const e = new ne();
386
+ const e = new se();
387
387
  e.disposeMaterial = !1, e.track(this), e.dispose();
388
388
  }
389
389
  }
390
390
  }
391
- const Q = new O(), vt = new D(), bt = new D(), g = new O(), y = new O(), B = new O(), X = new D(), Y = new Et(), M = new Lt(), gt = new D(), N = new jt(), U = new Ot(), z = new O();
391
+ const Q = new O(), vt = new D(), yt = new D(), b = new O(), g = new O(), B = new O(), X = new D(), Y = new Et(), M = new Lt(), bt = new D(), N = new jt(), U = new Ot(), z = new O();
392
392
  let T, E;
393
- function yt(s, t, e) {
394
- return z.set(0, 0, -t, 1).applyMatrix4(s.projectionMatrix), z.multiplyScalar(1 / z.w), z.x = E / e.width, z.y = E / e.height, z.applyMatrix4(s.projectionMatrixInverse), z.multiplyScalar(1 / z.w), Math.abs(Math.max(z.x, z.y));
393
+ function gt(n, t, e) {
394
+ return z.set(0, 0, -t, 1).applyMatrix4(n.projectionMatrix), z.multiplyScalar(1 / z.w), z.x = E / e.width, z.y = E / e.height, z.applyMatrix4(n.projectionMatrixInverse), z.multiplyScalar(1 / z.w), Math.abs(Math.max(z.x, z.y));
395
395
  }
396
- function ce(s, t) {
397
- const e = s.matrixWorld, i = s.geometry, n = i.attributes.instanceStart, a = i.attributes.instanceEnd, l = Math.min(i.instanceCount, n.count);
396
+ function ce(n, t) {
397
+ const e = n.matrixWorld, i = n.geometry, s = i.attributes.instanceStart, a = i.attributes.instanceEnd, l = Math.min(i.instanceCount, s.count);
398
398
  for (let r = 0, c = l; r < c; r++) {
399
- M.start.fromBufferAttribute(n, r), M.end.fromBufferAttribute(a, r), M.applyMatrix4(e);
399
+ M.start.fromBufferAttribute(s, r), M.end.fromBufferAttribute(a, r), M.applyMatrix4(e);
400
400
  const o = new D(), h = new D();
401
401
  T.distanceSqToSegment(M.start, M.end, h, o), h.distanceTo(o) < E * 0.5 && t.push({
402
402
  point: h,
403
403
  pointOnLine: o,
404
404
  distance: T.origin.distanceTo(h),
405
- object: s,
405
+ object: n,
406
406
  face: null,
407
407
  faceIndex: r,
408
408
  uv: null,
@@ -410,31 +410,31 @@ function ce(s, t) {
410
410
  });
411
411
  }
412
412
  }
413
- function le(s, t, e) {
414
- const i = t.projectionMatrix, a = s.material.resolution, l = s.matrixWorld, r = s.geometry, c = r.attributes.instanceStart, o = r.attributes.instanceEnd, h = Math.min(r.instanceCount, c.count), d = -t.near;
413
+ function le(n, t, e) {
414
+ const i = t.projectionMatrix, a = n.material.resolution, l = n.matrixWorld, r = n.geometry, c = r.attributes.instanceStart, o = r.attributes.instanceEnd, h = Math.min(r.instanceCount, c.count), f = -t.near;
415
415
  T.at(1, B), B.w = 1, B.applyMatrix4(t.matrixWorldInverse), B.applyMatrix4(i), B.multiplyScalar(1 / B.w), B.x *= a.x / 2, B.y *= a.y / 2, B.z = 0, X.copy(B), Y.multiplyMatrices(t.matrixWorldInverse, l);
416
416
  for (let p = 0, u = h; p < u; p++) {
417
- if (g.fromBufferAttribute(c, p), y.fromBufferAttribute(o, p), g.w = 1, y.w = 1, g.applyMatrix4(Y), y.applyMatrix4(Y), g.z > d && y.z > d)
417
+ if (b.fromBufferAttribute(c, p), g.fromBufferAttribute(o, p), b.w = 1, g.w = 1, b.applyMatrix4(Y), g.applyMatrix4(Y), b.z > f && g.z > f)
418
418
  continue;
419
- if (g.z > d) {
420
- const j = g.z - y.z, A = (g.z - d) / j;
421
- g.lerp(y, A);
422
- } else if (y.z > d) {
423
- const j = y.z - g.z, A = (y.z - d) / j;
424
- y.lerp(g, A);
419
+ if (b.z > f) {
420
+ const S = b.z - g.z, j = (b.z - f) / S;
421
+ b.lerp(g, j);
422
+ } else if (g.z > f) {
423
+ const S = g.z - b.z, j = (g.z - f) / S;
424
+ g.lerp(b, j);
425
425
  }
426
- g.applyMatrix4(i), y.applyMatrix4(i), g.multiplyScalar(1 / g.w), y.multiplyScalar(1 / y.w), g.x *= a.x / 2, g.y *= a.y / 2, y.x *= a.x / 2, y.y *= a.y / 2, M.start.copy(g), M.start.z = 0, M.end.copy(y), M.end.z = 0;
427
- const f = M.closestPointToPointParameter(X, !0);
428
- M.at(f, gt);
429
- const v = kt.lerp(g.z, y.z, f), w = v >= -1 && v <= 1, S = X.distanceTo(gt) < E * 0.5;
430
- if (w && S) {
426
+ b.applyMatrix4(i), g.applyMatrix4(i), b.multiplyScalar(1 / b.w), g.multiplyScalar(1 / g.w), b.x *= a.x / 2, b.y *= a.y / 2, g.x *= a.x / 2, g.y *= a.y / 2, M.start.copy(b), M.start.z = 0, M.end.copy(g), M.end.z = 0;
427
+ const d = M.closestPointToPointParameter(X, !0);
428
+ M.at(d, bt);
429
+ const v = kt.lerp(b.z, g.z, d), w = v >= -1 && v <= 1, I = X.distanceTo(bt) < E * 0.5;
430
+ if (w && I) {
431
431
  M.start.fromBufferAttribute(c, p), M.end.fromBufferAttribute(o, p), M.start.applyMatrix4(l), M.end.applyMatrix4(l);
432
- const j = new D(), A = new D();
433
- T.distanceSqToSegment(M.start, M.end, A, j), e.push({
434
- point: A,
435
- pointOnLine: j,
436
- distance: T.origin.distanceTo(A),
437
- object: s,
432
+ const S = new D(), j = new D();
433
+ T.distanceSqToSegment(M.start, M.end, j, S), e.push({
434
+ point: j,
435
+ pointOnLine: S,
436
+ distance: T.origin.distanceTo(j),
437
+ object: n,
438
438
  face: null,
439
439
  faceIndex: p,
440
440
  uv: null,
@@ -449,11 +449,11 @@ class Le extends St {
449
449
  }
450
450
  // for backwards-compatibility, but could be a method of LineSegmentsGeometry...
451
451
  computeLineDistances() {
452
- const t = this.geometry, e = t.attributes.instanceStart, i = t.attributes.instanceEnd, n = new Float32Array(2 * e.count);
452
+ const t = this.geometry, e = t.attributes.instanceStart, i = t.attributes.instanceEnd, s = new Float32Array(2 * e.count);
453
453
  for (let l = 0, r = 0, c = e.count; l < c; l++, r += 2)
454
- vt.fromBufferAttribute(e, l), bt.fromBufferAttribute(i, l), n[r] = r === 0 ? 0 : n[r - 1], n[r + 1] = n[r] + vt.distanceTo(bt);
454
+ vt.fromBufferAttribute(e, l), yt.fromBufferAttribute(i, l), s[r] = r === 0 ? 0 : s[r - 1], s[r + 1] = s[r] + vt.distanceTo(yt);
455
455
  const a = new Vt(
456
- n,
456
+ s,
457
457
  2,
458
458
  1
459
459
  );
@@ -466,8 +466,8 @@ class Le extends St {
466
466
  ), this;
467
467
  }
468
468
  raycast(t, e) {
469
- const i = this.material.worldUnits, n = t.camera;
470
- n === null && !i && console.error(
469
+ const i = this.material.worldUnits, s = t.camera;
470
+ s === null && !i && console.error(
471
471
  'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'
472
472
  );
473
473
  const a = t.params.Line2 !== void 0 && t.params.Line2.threshold || 0;
@@ -478,13 +478,13 @@ class Le extends St {
478
478
  if (i)
479
479
  o = E * 0.5;
480
480
  else {
481
- const d = Math.max(
482
- n.near,
481
+ const f = Math.max(
482
+ s.near,
483
483
  U.distanceToPoint(T.origin)
484
484
  );
485
- o = yt(
486
- n,
487
- d,
485
+ o = gt(
486
+ s,
487
+ f,
488
488
  c.resolution
489
489
  );
490
490
  }
@@ -495,17 +495,17 @@ class Le extends St {
495
495
  if (i)
496
496
  h = E * 0.5;
497
497
  else {
498
- const d = Math.max(
499
- n.near,
498
+ const f = Math.max(
499
+ s.near,
500
500
  N.distanceToPoint(T.origin)
501
501
  );
502
- h = yt(
503
- n,
504
- d,
502
+ h = gt(
503
+ s,
504
+ f,
505
505
  c.resolution
506
506
  );
507
507
  }
508
- N.expandByScalar(h), T.intersectsBox(N) !== !1 && (i ? ce(this, e) : le(this, n, e));
508
+ N.expandByScalar(h), T.intersectsBox(N) !== !1 && (i ? ce(this, e) : le(this, s, e));
509
509
  }
510
510
  onBeforeRender(t) {
511
511
  const e = this.material.uniforms;
@@ -555,7 +555,7 @@ void main() {
555
555
  #include <fog_fragment>
556
556
  #include <${parseInt(Wt) < 154 ? "encodings_fragment" : "colorspace_fragment"}>
557
557
  }
558
- `, de = `
558
+ `, fe = `
559
559
  #include <common>
560
560
  ${W.logdepthbuf_pars_vertex}
561
561
  ${W.fog_pars_vertex}
@@ -599,7 +599,7 @@ void main() {
599
599
  vec2 prevScreen = intoScreen(prevNormed);
600
600
  vec2 nextScreen = intoScreen(nextNormed);
601
601
 
602
- float actualWidth = lineWidth * width *0.25;
602
+ float actualWidth = lineWidth * width;
603
603
 
604
604
  vec2 dir;
605
605
  if(nextScreen == currentScreen) {
@@ -650,26 +650,27 @@ void main() {
650
650
  `;
651
651
  class Oe extends Nt {
652
652
  constructor(t = {}) {
653
- var j;
654
653
  const S = t, {
655
654
  lineWidth: e = 1,
656
655
  color: i = "#ffffff",
657
- map: n = null,
658
- useMap: a = 0,
659
- dashOffset: l = 0,
660
- dashArray: r = 0,
661
- dashRatio: c = 0,
662
- sizeAttenuation: o = !0,
663
- offsetLoop: h = !0,
664
- offset: d = new K(0, 0),
665
- scaleDown: p = 0,
666
- alphaMap: u = void 0,
667
- alphaTest: m = 0,
668
- repeat: f = new K(1, 1),
669
- resolution: v = new K(1, 1)
670
- } = S, w = rt(S, [
656
+ opacity: s = 1,
657
+ map: a = null,
658
+ useMap: l = 0,
659
+ dashOffset: r = 0,
660
+ dashArray: c = 0,
661
+ dashRatio: o = 0,
662
+ sizeAttenuation: h = !0,
663
+ offsetLoop: f = !0,
664
+ offset: p = new K(0, 0),
665
+ scaleDown: u = 0,
666
+ alphaMap: m = void 0,
667
+ alphaTest: d = 0,
668
+ repeat: v = new K(1, 1),
669
+ resolution: w = new K(1, 1)
670
+ } = S, I = rt(S, [
671
671
  "lineWidth",
672
672
  "color",
673
+ "opacity",
673
674
  "map",
674
675
  "useMap",
675
676
  "dashOffset",
@@ -684,28 +685,28 @@ class Oe extends Nt {
684
685
  "repeat",
685
686
  "resolution"
686
687
  ]);
687
- super(q(L({}, w), {
688
+ super(q(L({}, I), {
688
689
  uniforms: {
689
690
  lineWidth: { value: e },
690
- color: { value: new dt(i) },
691
- opacity: { value: (j = t.opacity) != null ? j : 1 },
692
- map: { value: n },
693
- useMap: { value: n ? 1 : a },
694
- resolution: { value: v },
695
- sizeAttenuation: { value: o ? 1 : 0 },
696
- offset: { value: d },
697
- offsetLoop: { value: h ? 1 : 0 },
698
- dashArray: { value: r },
699
- dashOffset: { value: l },
700
- dashRatio: { value: c },
701
- useDash: { value: r > 0 ? 1 : 0 },
702
- scaleDown: { value: p / 10 },
703
- alphaTest: { value: m },
704
- alphaMap: { value: u },
705
- useAlphaMap: { value: u ? 1 : 0 },
706
- repeat: { value: f }
691
+ color: { value: new ft(i) },
692
+ opacity: { value: s },
693
+ map: { value: a },
694
+ useMap: { value: a ? 1 : l },
695
+ resolution: { value: w },
696
+ sizeAttenuation: { value: h ? 1 : 0 },
697
+ offset: { value: p },
698
+ offsetLoop: { value: f ? 1 : 0 },
699
+ dashArray: { value: c },
700
+ dashOffset: { value: r },
701
+ dashRatio: { value: o },
702
+ useDash: { value: c > 0 ? 1 : 0 },
703
+ scaleDown: { value: u / 10 },
704
+ alphaTest: { value: d },
705
+ alphaMap: { value: m },
706
+ useAlphaMap: { value: m ? 1 : 0 },
707
+ repeat: { value: v }
707
708
  },
708
- vertexShader: de,
709
+ vertexShader: fe,
709
710
  fragmentShader: ue
710
711
  })), this.type = "MeshLineMaterial";
711
712
  }
@@ -714,7 +715,14 @@ class Oe extends Nt {
714
715
  return this.uniforms.color.value;
715
716
  }
716
717
  set color(t) {
717
- this.uniforms.color.value = new dt(t);
718
+ this.uniforms.color.value = new ft(t);
719
+ }
720
+ get opacity() {
721
+ var t;
722
+ return ((t = this.uniforms) == null ? void 0 : t.opacity.value) || 1;
723
+ }
724
+ set opacity(t) {
725
+ this.uniforms && (this.uniforms.opacity.value = t);
718
726
  }
719
727
  // Getter and setter for map
720
728
  get map() {
@@ -738,71 +746,71 @@ class Oe extends Nt {
738
746
  this.uniforms.sizeAttenuation.value = t ? 1 : 0;
739
747
  }
740
748
  }
741
- function fe(s, t) {
742
- return s.map((e) => {
749
+ function de(n, t) {
750
+ return n.map((e) => {
743
751
  const i = [];
744
- let n;
752
+ let s;
745
753
  return e.forEach((a) => {
746
- if (n) {
747
- const l = Ft(a, n) * 180 / Math.PI;
754
+ if (s) {
755
+ const l = Ft(a, s) * 180 / Math.PI;
748
756
  if (l > t) {
749
- const r = qt(n, a), c = 1 / Math.ceil(l / t);
757
+ const r = qt(s, a), c = 1 / Math.ceil(l / t);
750
758
  let o = c;
751
759
  for (; o < 1; )
752
760
  i.push(r(o)), o += c;
753
761
  }
754
762
  }
755
- i.push(n = a);
763
+ i.push(s = a);
756
764
  }), i;
757
765
  });
758
766
  }
759
- function he(s, { minLng: t, maxLng: e, minLat: i, maxLat: n } = {}) {
760
- const a = Math.round(st(360 / s, 2) / Math.PI), l = (1 + Math.sqrt(5)) / 2, r = (u) => u / l * 360 % 360 - 180, c = (u) => Math.acos(2 * u / a - 1) / Math.PI * 180 - 90, o = (u) => a * (Math.cos((u + 90) * Math.PI / 180) + 1) / 2, h = [
761
- n !== void 0 ? Math.ceil(o(n)) : 0,
767
+ function he(n, { minLng: t, maxLng: e, minLat: i, maxLat: s } = {}) {
768
+ const a = Math.round(nt(360 / n, 2) / Math.PI), l = (1 + Math.sqrt(5)) / 2, r = (u) => u / l * 360 % 360 - 180, c = (u) => Math.acos(2 * u / a - 1) / Math.PI * 180 - 90, o = (u) => a * (Math.cos((u + 90) * Math.PI / 180) + 1) / 2, h = [
769
+ s !== void 0 ? Math.ceil(o(s)) : 0,
762
770
  i !== void 0 ? Math.floor(o(i)) : a - 1
763
- ], d = t === void 0 && e === void 0 ? () => !0 : t === void 0 ? (u) => u <= e : e === void 0 ? (u) => u >= t : e >= t ? (u) => u >= t && u <= e : (u) => u >= t || u <= e, p = [];
771
+ ], f = t === void 0 && e === void 0 ? () => !0 : t === void 0 ? (u) => u <= e : e === void 0 ? (u) => u >= t : e >= t ? (u) => u >= t && u <= e : (u) => u >= t || u <= e, p = [];
764
772
  for (let u = h[0]; u <= h[1]; u++) {
765
773
  const m = r(u);
766
- d(m) && p.push([m, c(u)]);
774
+ f(m) && p.push([m, c(u)]);
767
775
  }
768
776
  return p;
769
777
  }
770
- function Z(s, t, e = !1) {
771
- return e ? $t(t, s) : Ht(s, t);
778
+ function Z(n, t, e = !1) {
779
+ return e ? $t(t, n) : Ht(n, t);
772
780
  }
773
- function pe(s, t) {
774
- const e = { type: "Polygon", coordinates: s }, [[i, n], [a, l]] = At(e);
775
- if (Math.min(Math.abs(a - i), Math.abs(l - n)) < t)
781
+ function pe(n, t) {
782
+ const e = { type: "Polygon", coordinates: n }, [[i, s], [a, l]] = At(e);
783
+ if (Math.min(Math.abs(a - i), Math.abs(l - s)) < t)
776
784
  return [];
777
- const r = i > a || l >= 89 || n <= -89;
785
+ const r = i > a || l >= 89 || s <= -89;
778
786
  return he(t, {
779
787
  minLng: i,
780
788
  maxLng: a,
781
- minLat: n,
789
+ minLat: s,
782
790
  maxLat: l
783
791
  }).filter(
784
792
  (c) => Z(c, e, r)
785
793
  );
786
794
  }
787
- function me(s, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
788
- const n = fe(s, t), a = tt(n), l = pe(s, t), r = [...a, ...l], c = { type: "Polygon", coordinates: s }, [[o, h], [d, p]] = At(c), u = o > d || // crosses antimeridian
795
+ function me(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
796
+ const s = de(n, t), a = tt(s), l = pe(n, t), r = [...a, ...l], c = { type: "Polygon", coordinates: n }, [[o, h], [f, p]] = At(c), u = o > f || // crosses antimeridian
789
797
  p >= 89 || // crosses north pole
790
798
  h <= -89;
791
799
  let m = [];
792
800
  if (u) {
793
- const b = te(r).triangles(), x = new Map(
794
- r.map(([C, P], _) => [`${C}-${P}`, _])
801
+ const y = te(r).triangles(), x = new Map(
802
+ r.map(([A, C], _) => [`${A}-${C}`, _])
795
803
  );
796
- b.features.forEach((C) => {
797
- const P = C.geometry.coordinates[0].slice(0, 3).reverse(), _ = [];
798
- if (P.forEach(([I, F]) => {
799
- const V = `${I}-${F}`;
804
+ y.features.forEach((A) => {
805
+ const C = A.geometry.coordinates[0].slice(0, 3).reverse(), _ = [];
806
+ if (C.forEach(([P, F]) => {
807
+ const V = `${P}-${F}`;
800
808
  x.has(V) && _.push(x.get(V));
801
809
  }), _.length === 3) {
802
- if (_.some((I) => I < a.length)) {
803
- const I = C.properties.circumcenter;
810
+ if (_.some((P) => P < a.length)) {
811
+ const P = A.properties.circumcenter;
804
812
  if (!Z(
805
- I,
813
+ P,
806
814
  c,
807
815
  u
808
816
  ))
@@ -812,43 +820,43 @@ function me(s, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
812
820
  }
813
821
  });
814
822
  } else if (l.length) {
815
- const b = Jt.from(r);
816
- for (let x = 0, C = b.triangles.length; x < C; x += 3) {
817
- const P = [2, 1, 0].map((I) => b.triangles[x + I]), _ = P.map((I) => r[I]);
818
- if (P.some((I) => I < a.length)) {
819
- const I = [0, 1].map(
823
+ const y = Jt.from(r);
824
+ for (let x = 0, A = y.triangles.length; x < A; x += 3) {
825
+ const C = [2, 1, 0].map((P) => y.triangles[x + P]), _ = C.map((P) => r[P]);
826
+ if (C.some((P) => P < a.length)) {
827
+ const P = [0, 1].map(
820
828
  (F) => Xt(_, (V) => V[F])
821
829
  );
822
830
  if (!Z(
823
- I,
831
+ P,
824
832
  c,
825
833
  u
826
834
  ))
827
835
  continue;
828
836
  }
829
- m.push(...P);
837
+ m.push(...C);
830
838
  }
831
839
  } else {
832
- const { vertices: b, holes: x = [] } = Ct(n);
833
- m = Yt(b, x, 2);
840
+ const { vertices: y, holes: x = [] } = Ct(s);
841
+ m = Yt(y, x, 2);
834
842
  }
835
- let f = e ? [e[0], e[2]] : ht(r, (b) => b[0]), v = e ? [e[1], e[3]] : ht(r, (b) => b[1]);
843
+ let d = e ? [e[0], e[2]] : ht(r, (y) => y[0]), v = e ? [e[1], e[3]] : ht(r, (y) => y[1]);
836
844
  if (i) {
837
- const [b, x] = i([f[0], v[0]]), [C, P] = i([f[1], v[1]]);
838
- f = [b, C], v = [-x, -P];
845
+ const [y, x] = i([d[0], v[0]]), [A, C] = i([d[1], v[1]]);
846
+ d = [y, A], v = [-x, -C];
839
847
  }
840
- const w = pt(f, [0, 1]), S = pt(v, [0, 1]), j = r.map(([b, x]) => {
848
+ const w = pt(d, [0, 1]), I = pt(v, [0, 1]), S = r.map(([y, x]) => {
841
849
  if (i) {
842
- const [C, P] = i([b, x]);
843
- return [w(C), S(-P)];
850
+ const [A, C] = i([y, x]);
851
+ return [w(A), I(-C)];
844
852
  } else
845
- return [w(b), S(x)];
853
+ return [w(y), I(x)];
846
854
  });
847
- return { contour: n, triangles: { points: r, indices: m, uvs: j } };
855
+ return { contour: s, triangles: { points: r, indices: m, uvs: S } };
848
856
  }
849
857
  const Mt = new J().setAttribute ? "setAttribute" : "addAttribute";
850
- function $(s, t, e, i) {
851
- const n = s.map(
858
+ function $(n, t, e, i) {
859
+ const s = n.map(
852
860
  (a) => a.map(([l, r]) => {
853
861
  if (i) {
854
862
  const [c, o] = i([l, r]);
@@ -857,65 +865,65 @@ function $(s, t, e, i) {
857
865
  return e ? Kt(l, r, t) : [l, r, t];
858
866
  })
859
867
  );
860
- return Ct(n);
868
+ return Ct(s);
861
869
  }
862
- function ve(s, t, e, i, n) {
870
+ function ve(n, t, e, i, s) {
863
871
  const { vertices: a, holes: l } = $(
864
- s,
872
+ n,
865
873
  t,
866
874
  i,
867
- n
875
+ s
868
876
  ), { vertices: r } = $(
869
- s,
877
+ n,
870
878
  e,
871
879
  i,
872
- n
880
+ s
873
881
  ), c = tt([r, a]), o = Math.round(r.length / 3), h = new Set(l);
874
- let d = 0;
882
+ let f = 0;
875
883
  const p = [];
876
884
  for (let m = 0; m < o; m++) {
877
- let f = m + 1;
878
- if (f === o)
879
- f = d;
880
- else if (h.has(f)) {
881
- const v = f;
882
- f = d, d = v;
885
+ let d = m + 1;
886
+ if (d === o)
887
+ d = f;
888
+ else if (h.has(d)) {
889
+ const v = d;
890
+ d = f, f = v;
883
891
  }
884
- p.push(m, m + o, f + o), p.push(f + o, f, m);
892
+ p.push(m, m + o, d + o), p.push(d + o, d, m);
885
893
  }
886
894
  const u = [];
887
895
  for (let m = 1; m >= 0; m--)
888
- for (let f = 0; f < o; f += 1) u.push(f / (o - 1), m);
896
+ for (let d = 0; d < o; d += 1) u.push(d / (o - 1), m);
889
897
  return { indices: p, vertices: c, uvs: u, topVerts: r };
890
898
  }
891
- function xt(s, t, e, i, n, a) {
899
+ function xt(n, t, e, i, s, a) {
892
900
  return {
893
- indices: i ? s.indices : s.indices.slice().reverse(),
901
+ indices: i ? n.indices : n.indices.slice().reverse(),
894
902
  vertices: $(
895
- [s.points],
903
+ [n.points],
896
904
  t,
897
- n,
905
+ s,
898
906
  a
899
907
  ).vertices,
900
908
  uvs: e
901
909
  };
902
910
  }
903
- const be = ({
904
- polygonGeoJson: s,
911
+ const ye = ({
912
+ polygonGeoJson: n,
905
913
  startHeight: t,
906
914
  endHeight: e,
907
915
  curvatureResolution: i = 1,
908
- cartesian: n = !0,
916
+ cartesian: s = !0,
909
917
  hasSide: a = !0,
910
918
  hasBottom: l = !1,
911
919
  hasTop: r = !1,
912
920
  projection: c,
913
921
  bbox: o
914
922
  }) => {
915
- s.forEach((w) => {
923
+ n.forEach((w) => {
916
924
  Zt(w) || w.reverse();
917
925
  });
918
- const { contour: h, triangles: d } = me(s, {
926
+ const { contour: h, triangles: f } = me(n, {
919
927
  resolution: i,
920
928
  bbox: o,
921
929
  projection: c
@@ -925,29 +933,29 @@ const be = ({
925
933
  h,
926
934
  t != null ? t : e,
927
935
  e != null ? e : t,
928
- n,
936
+ s,
929
937
  c
930
938
  ), u = p.topVerts);
931
939
  let m = [];
932
- (l || r) && (m = tt(d.uvs));
933
- let f = {};
934
- l && (f = xt(
935
- d,
940
+ (l || r) && (m = tt(f.uvs));
941
+ let d = {};
942
+ l && (d = xt(
943
+ f,
936
944
  t,
937
945
  m,
938
946
  !1,
939
- n,
947
+ s,
940
948
  c
941
949
  ));
942
950
  let v = {};
943
951
  return r && (v = xt(
944
- d,
952
+ f,
945
953
  e,
946
954
  m,
947
955
  !0,
948
- n,
956
+ s,
949
957
  c
950
- )), { contour: h, triangles: d, sideTorso: p, bottomCap: f, topCap: v, topVerts: u };
958
+ )), { contour: h, triangles: f, sideTorso: p, bottomCap: d, topCap: v, topVerts: u };
951
959
  };
952
960
  class Ve extends J {
953
961
  constructor(t, e = {}) {
@@ -965,27 +973,27 @@ class Ve extends J {
965
973
  }, e);
966
974
  const {
967
975
  endHeight: i,
968
- hasTop: n,
976
+ hasTop: s,
969
977
  topFirst: a,
970
978
  hasBottom: l,
971
979
  hasSide: r,
972
980
  cartesian: c,
973
981
  userDataRsoOffset: o,
974
982
  projection: h
975
- } = this.parameters, { contour: d, sideTorso: p, topVerts: u, bottomCap: m, topCap: f } = be(L({}, this.parameters));
976
- let v = [], w = [], S = [], j = 0;
977
- const A = (b) => {
978
- const x = Math.round(v.length / 3), C = S.length;
979
- v = v.concat(b.vertices), w = w.concat(b.uvs), S = S.concat(
980
- x ? b.indices.map((P) => P + x) : b.indices
981
- ), this.addGroup(C, S.length - C, j++);
983
+ } = this.parameters, { contour: f, sideTorso: p, topVerts: u, bottomCap: m, topCap: d } = ye(L({}, this.parameters));
984
+ let v = [], w = [], I = [], S = 0;
985
+ const j = (y) => {
986
+ const x = Math.round(v.length / 3), A = I.length;
987
+ v = v.concat(y.vertices), w = w.concat(y.uvs), I = I.concat(
988
+ x ? y.indices.map((C) => C + x) : y.indices
989
+ ), this.addGroup(A, I.length - A, S++);
982
990
  };
983
- n && a && A(f), r && (A(p), this.userData.topVerts = o ? $(
984
- d,
991
+ s && a && j(d), r && (j(p), this.userData.topVerts = o ? $(
992
+ f,
985
993
  i + o,
986
994
  c,
987
995
  h
988
- ).vertices : u), l && A(m), n && !a && A(f), this.setIndex(S), this[Mt]("position", new G(v, 3)), this[Mt]("uv", new G(w, 2)), this.computeVertexNormals();
996
+ ).vertices : u), l && j(m), s && !a && j(d), this.setIndex(I), this[Mt]("position", new G(v, 3)), this[Mt]("uv", new G(w, 2)), this.computeVertexNormals();
989
997
  }
990
998
  }
991
999
  export {
@@ -994,7 +1002,7 @@ export {
994
1002
  Le as L,
995
1003
  Oe as M,
996
1004
  Ve as P,
997
- ne as R,
1005
+ se as R,
998
1006
  mt as a,
999
- be as g
1007
+ ye as g
1000
1008
  };
package/dist/index2.js CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var pe=Object.defineProperty,me=Object.defineProperties;var ve=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,ee=Object.prototype.propertyIsEnumerable;var te=Math.pow,J=(i,e,t)=>e in i?pe(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,_=(i,e)=>{for(var t in e||(e={}))H.call(e,t)&&J(i,t,e[t]);if(W)for(var t of W(e))ee.call(e,t)&&J(i,t,e[t]);return i},q=(i,e)=>me(i,ve(e));var re=(i,e)=>{var t={};for(var r in i)H.call(i,r)&&e.indexOf(r)<0&&(t[r]=i[r]);if(i!=null&&W)for(var r of W(i))e.indexOf(r)<0&&ee.call(i,r)&&(t[r]=i[r]);return t};var ne=(i,e,t)=>new Promise((r,n)=>{var c=l=>{try{s(t.next(l))}catch(a){n(a)}},u=l=>{try{s(t.throw(l))}catch(a){n(a)}},s=l=>l.done?r(l.value):Promise.resolve(l.value).then(c,u);s((t=t.apply(i,e)).next())});const o=require("three"),be=require("three/examples/jsm/renderers/CSS2DRenderer"),ie=require("three/examples/jsm/renderers/CSS3DRenderer"),O=require("d3-geo");require("d3-geo-projection");const Q=require("./parseVector.js"),ge=require("three/examples/jsm/lines/LineSegmentsGeometry"),L=require("d3-array"),X=require("earcut"),ye=require("@turf/boolean-clockwise"),Me=require("delaunator"),Se=require("@turf/boolean-point-in-polygon"),xe=require("d3-geo-voronoi"),se=require("d3-scale"),we=0,je=1,Ae=2,Ce=!1;class fe{constructor(){this.resources=new Set,this.disposeMaterial=!0,this.disposeVideo=!0}track(e){if(!e)return e;if(Array.isArray(e))return e.forEach(t=>this.track(t)),e;if(!this.disposeMaterial&&e instanceof o.Material)return e;if(e instanceof Y?(e.disposeTrack&&e.object3d?this.track(e.object3d):this.resources.add(e),Object.values(e.materialList).map(t=>this.track(t))):(e instanceof o.Object3D||Reflect.has(e,"dispose"))&&this.resources.add(e),e instanceof Y)e.children.forEach(t=>{t.disposeTrack=!1}),this.track(e.children);else if(e instanceof o.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof o.Material){for(const r of Object.values(e))r instanceof o.Texture&&this.track(r);const t=e;if(t.uniforms){for(const r of Object.values(t.uniforms))if(r){const n=r.value;(n instanceof o.Texture||Array.isArray(n))&&this.track(n)}}}else this.disposeVideo&&e instanceof o.VideoTexture&&e.source.data&&this.resources.add(e.source.data);return e}dispose(){const e=[];for(const t of this.resources)t instanceof o.Object3D?e.push(t):t instanceof HTMLVideoElement&&t.pause(),Reflect.has(t,"dispose")&&t.dispose();e.forEach(t=>{t.removeFromParent()}),e.length=0,this.resources.clear()}}const Pe=(i,e=1)=>{const t=new o.BufferGeometry;t.setAttribute("position",new o.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new o.Float32BufferAttribute(new Array(e).fill(1),1));const r=i.material,n=new o.PointsMaterial({size:10,map:r.map,alphaMap:r.alphaMap,color:r.color,blending:r.blending,depthTest:r.depthTest,depthWrite:!1,opacity:r.opacity,transparent:!0,alphaTest:r.alphaTest,sizeAttenuation:!1});return n.onBeforeCompile=c=>{c.vertexShader=`
1
+ "use strict";var pe=Object.defineProperty,me=Object.defineProperties;var ve=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,ee=Object.prototype.propertyIsEnumerable;var te=Math.pow,J=(n,e,t)=>e in n?pe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,_=(n,e)=>{for(var t in e||(e={}))H.call(e,t)&&J(n,t,e[t]);if(W)for(var t of W(e))ee.call(e,t)&&J(n,t,e[t]);return n},q=(n,e)=>me(n,ve(e));var re=(n,e)=>{var t={};for(var r in n)H.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&W)for(var r of W(n))e.indexOf(r)<0&&ee.call(n,r)&&(t[r]=n[r]);return t};var ie=(n,e,t)=>new Promise((r,i)=>{var c=l=>{try{s(t.next(l))}catch(a){i(a)}},u=l=>{try{s(t.throw(l))}catch(a){i(a)}},s=l=>l.done?r(l.value):Promise.resolve(l.value).then(c,u);s((t=t.apply(n,e)).next())});const o=require("three"),be=require("three/examples/jsm/renderers/CSS2DRenderer"),ne=require("three/examples/jsm/renderers/CSS3DRenderer"),O=require("d3-geo");require("d3-geo-projection");const Q=require("./parseVector.js"),ye=require("three/examples/jsm/lines/LineSegmentsGeometry"),L=require("d3-array"),X=require("earcut"),ge=require("@turf/boolean-clockwise"),Me=require("delaunator"),Se=require("@turf/boolean-point-in-polygon"),xe=require("d3-geo-voronoi"),se=require("d3-scale"),we=0,je=1,Ae=2,Ce=!1;class fe{constructor(){this.resources=new Set,this.disposeMaterial=!0,this.disposeVideo=!0}track(e){if(!e)return e;if(Array.isArray(e))return e.forEach(t=>this.track(t)),e;if(!this.disposeMaterial&&e instanceof o.Material)return e;if(e instanceof Y?(e.disposeTrack&&e.object3d?this.track(e.object3d):this.resources.add(e),Object.values(e.materialList).map(t=>this.track(t))):(e instanceof o.Object3D||Reflect.has(e,"dispose"))&&this.resources.add(e),e instanceof Y)e.children.forEach(t=>{t.disposeTrack=!1}),this.track(e.children);else if(e instanceof o.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof o.Material){for(const r of Object.values(e))r instanceof o.Texture&&this.track(r);const t=e;if(t.uniforms){for(const r of Object.values(t.uniforms))if(r){const i=r.value;(i instanceof o.Texture||Array.isArray(i))&&this.track(i)}}}else this.disposeVideo&&e instanceof o.VideoTexture&&e.source.data&&this.resources.add(e.source.data);return e}dispose(){const e=[];for(const t of this.resources)t instanceof o.Object3D?e.push(t):t instanceof HTMLVideoElement&&t.pause(),Reflect.has(t,"dispose")&&t.dispose();e.forEach(t=>{t.removeFromParent()}),e.length=0,this.resources.clear()}}const Pe=(n,e=1)=>{const t=new o.BufferGeometry;t.setAttribute("position",new o.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new o.Float32BufferAttribute(new Array(e).fill(1),1));const r=n.material,i=new o.PointsMaterial({size:10,map:r.map,alphaMap:r.alphaMap,color:r.color,blending:r.blending,depthTest:r.depthTest,depthWrite:!1,opacity:r.opacity,transparent:!0,alphaTest:r.alphaTest,sizeAttenuation:!1});return i.onBeforeCompile=c=>{c.vertexShader=`
2
2
  attribute float scaleAtt;
3
3
  ${c.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
4
- `},new o.Points(t,n)},Be=(i,e)=>{const t=new o.Object3D;e.forEach((r,n)=>{const c=Q.parseVector3(r.position),u=Q.parseVector3(r.scale||[1,1,1]);t.position.copy(c),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(i instanceof o.InstancedMesh||i.isInstantiate)i.setMatrixAt(n,s);else if(i instanceof o.Points||i.type==="Points"){const a=i.geometry,p=a.attributes.position.array,f=a.attributes.scaleAtt.array,m=new o.Vector3,d=new o.Vector3,v=new o.Quaternion,h=n*3,b=n*1;s.decompose(m,v,d),p[h]=m.x,p[h+1]=m.y,p[h+2]=m.z,f[b]=Math.max(d.x,d.y,d.z),a.attributes.position.needsUpdate=!0,a.attributes.scaleAtt.needsUpdate=!0}})};class Ie{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const r=this.lead.handlePick([this],e,t);this.onPointerIndex.push(r)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerLeave(e){this.onPointerEvent("leave",e)}onPointerMove(e){this.onPointerEvent("move",e)}onPointerDown(e){this.onPointerEvent("down",e)}dispose(){this.onPointerIndex.forEach(e=>{this.lead.removePick(e)})}}class De extends Ie{constructor(){super(...arguments),this.userData={},this.materialList={},this.useMaterialType="origin",this.disposeMaterialIfNotUsed=!0}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(r=>{const n=r.userData;r.userData={};const c=r.clone();return r.userData=n,c});{const r=t.userData;t.userData={};const n=t.clone();return t.userData=r,n}}setMaterialList(e,t){const r=this.object3d;if(!r||!r.material)return;this.materialList.origin||(this.materialList.origin=r.material);const n=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=n,n}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}useMListById(e,t){if(!this.mList)return;const r=this.mList.get(e);if(!r)return;const n=this.object3d;Array.isArray(n.material)&&t!==void 0?n.material[t]=r:n.material=r}useMListByName(e,t){if(!this.mList)return;const r=this.mList.getKeyByName(e);r&&this.useMListById(r,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class Y extends De{constructor(){super(...arguments),this.objectType="BaseObject",this.userData={},this.prefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.disposeTrack=!0}get parent(){const e=this.object3d.parent;return e&&this.lead.objMap.get(e)||null}get children(){return this.object3d.children.map(e=>this.lead.objMap.get(e)).filter(e=>!!e)}get position(){return this.object3d.position}get rotation(){return this.object3d.rotation}get scale(){return this.object3d.scale}get lookAt(){return this.object3d.lookAt}add(...e){[...e].forEach(t=>{this.lead.objMap.get(t)?this.object3d.add(t):this.lead.createBaseObject(t,{target:this})})}remove(...e){[...e].forEach(t=>{var r;this.lead.objMap.get(t)?(r=this.lead.objMap.get(t))==null||r.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}get visibleWithAncestors(){if(this.visible){let e=this.parent;for(;e;){if(!e.visible)return!1;e=e.parent}return!0}else return!1}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.object3d.layers.set(we),this}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Ae),this}createGroup(){return this.object3d=new o.Group,this}createMesh(...e){return this.object3d=new o.Mesh(...e),this}createPoints(...e){return this.object3d=new o.Points(...e),this}createCSS2DObject(e){return this.object3d=new be.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ie.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ie.CSS3DSprite(e),this}createSprite(e){return this.object3d=new o.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new o.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new o.Vector3),center:e.getCenter(new o.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return ne(this,null,function*(){var l;const t=(l=e==null?void 0:e.recursive)!=null?l:!0,{objectType:r,objectOptions:n}=this,[,c]=r.split("#");let u=e==null?void 0:e.create;u===void 0&&(u=a=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const f=e.instancedAttr.length;if(this.object3d instanceof o.Sprite)a.object3d=Pe(this.object3d,f);else{const m=this.object3d,d=this.cloneMaterial();a.object3d=new o.InstancedMesh(m.geometry,d,f)}Be(a.object3d,e==null?void 0:e.instancedAttr)}else a.object3d=this.object3d.clone(!1),a.object3d.material&&(a.object3d.material=this.cloneMaterial());a.object3d.userData.prefab&&delete a.object3d.userData.prefab}});const s=yield this.lead.draw(c,q(_({},n||{}),{create:u,prefab:!1,key:(e==null?void 0:e.key)||(n==null?void 0:n.key),target:(e==null?void 0:e.target)||(n==null?void 0:n.target)}));return this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(a=>a.instantiate({target:s})))),s.isInstantiate=!0,s})}erase(){this.lead.erase(this)}enableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!0),this.isBloom=!0}disableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!1),this.isBloom=!1}dispose(){var e;if(super.dispose(),(e=this.pencil.composerController)==null||e.bloomSelection.delete(this),this.lead&&(this.lead.objects.delete(this.key),this.lead.objectWrapChindIdMap.delete(this),this.object3d&&this.lead.objMap.delete(this.object3d)),this.disposeTrack){const t=new fe;t.disposeMaterial=!1,t.track(this),t.dispose()}}}const F=new o.Vector4,oe=new o.Vector3,ae=new o.Vector3,y=new o.Vector4,M=new o.Vector4,D=new o.Vector4,$=new o.Vector3,K=new o.Matrix4,S=new o.Line3,ce=new o.Vector3,N=new o.Box3,U=new o.Sphere,V=new o.Vector4;let T,E;function le(i,e,t){return V.set(0,0,-e,1).applyMatrix4(i.projectionMatrix),V.multiplyScalar(1/V.w),V.x=E/t.width,V.y=E/t.height,V.applyMatrix4(i.projectionMatrixInverse),V.multiplyScalar(1/V.w),Math.abs(Math.max(V.x,V.y))}function Ve(i,e){const t=i.matrixWorld,r=i.geometry,n=r.attributes.instanceStart,c=r.attributes.instanceEnd,u=Math.min(r.instanceCount,n.count);for(let s=0,l=u;s<l;s++){S.start.fromBufferAttribute(n,s),S.end.fromBufferAttribute(c,s),S.applyMatrix4(t);const a=new o.Vector3,p=new o.Vector3;T.distanceSqToSegment(S.start,S.end,p,a),p.distanceTo(a)<E*.5&&e.push({point:p,pointOnLine:a,distance:T.origin.distanceTo(p),object:i,face:null,faceIndex:s,uv:null,uv1:null})}}function Te(i,e,t){const r=e.projectionMatrix,c=i.material.resolution,u=i.matrixWorld,s=i.geometry,l=s.attributes.instanceStart,a=s.attributes.instanceEnd,p=Math.min(s.instanceCount,l.count),f=-e.near;T.at(1,D),D.w=1,D.applyMatrix4(e.matrixWorldInverse),D.applyMatrix4(r),D.multiplyScalar(1/D.w),D.x*=c.x/2,D.y*=c.y/2,D.z=0,$.copy(D),K.multiplyMatrices(e.matrixWorldInverse,u);for(let m=0,d=p;m<d;m++){if(y.fromBufferAttribute(l,m),M.fromBufferAttribute(a,m),y.w=1,M.w=1,y.applyMatrix4(K),M.applyMatrix4(K),y.z>f&&M.z>f)continue;if(y.z>f){const A=y.z-M.z,C=(y.z-f)/A;y.lerp(M,C)}else if(M.z>f){const A=M.z-y.z,C=(M.z-f)/A;M.lerp(y,C)}y.applyMatrix4(r),M.applyMatrix4(r),y.multiplyScalar(1/y.w),M.multiplyScalar(1/M.w),y.x*=c.x/2,y.y*=c.y/2,M.x*=c.x/2,M.y*=c.y/2,S.start.copy(y),S.start.z=0,S.end.copy(M),S.end.z=0;const h=S.closestPointToPointParameter($,!0);S.at(h,ce);const b=o.MathUtils.lerp(y.z,M.z,h),w=b>=-1&&b<=1,j=$.distanceTo(ce)<E*.5;if(w&&j){S.start.fromBufferAttribute(l,m),S.end.fromBufferAttribute(a,m),S.start.applyMatrix4(u),S.end.applyMatrix4(u);const A=new o.Vector3,C=new o.Vector3;T.distanceSqToSegment(S.start,S.end,C,A),t.push({point:C,pointOnLine:A,distance:T.origin.distanceTo(C),object:i,face:null,faceIndex:m,uv:null,uv1:null})}}}class ze extends o.Mesh{constructor(e=new ge.LineSegmentsGeometry,t){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,r=e.attributes.instanceEnd,n=new Float32Array(2*t.count);for(let u=0,s=0,l=t.count;u<l;u++,s+=2)oe.fromBufferAttribute(t,u),ae.fromBufferAttribute(r,u),n[s]=s===0?0:n[s-1],n[s+1]=n[s]+oe.distanceTo(ae);const c=new o.InstancedInterleavedBuffer(n,2,1);return e.setAttribute("instanceDistanceStart",new o.InterleavedBufferAttribute(c,1,0)),e.setAttribute("instanceDistanceEnd",new o.InterleavedBufferAttribute(c,1,1)),this}raycast(e,t){const r=this.material.worldUnits,n=e.camera;n===null&&!r&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const c=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const u=this.matrixWorld,s=this.geometry,l=this.material;E=l.linewidth+c,s.boundingSphere===null&&s.computeBoundingSphere(),U.copy(s.boundingSphere).applyMatrix4(u);let a;if(r)a=E*.5;else{const f=Math.max(n.near,U.distanceToPoint(T.origin));a=le(n,f,l.resolution)}if(U.radius+=a,T.intersectsSphere(U)===!1)return;s.boundingBox===null&&s.computeBoundingBox(),N.copy(s.boundingBox).applyMatrix4(u);let p;if(r)p=E*.5;else{const f=Math.max(n.near,N.distanceToPoint(T.origin));p=le(n,f,l.resolution)}N.expandByScalar(p),T.intersectsBox(N)!==!1&&(r?Ve(this,t):Te(this,n,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(F),this.material.uniforms.resolution.value.set(F.z,F.w))}}const Ee=`
4
+ `},new o.Points(t,i)},Be=(n,e)=>{const t=new o.Object3D;e.forEach((r,i)=>{const c=Q.parseVector3(r.position),u=Q.parseVector3(r.scale||[1,1,1]);t.position.copy(c),t.scale.copy(u),t.updateMatrix();const s=t.matrix.clone();if(n instanceof o.InstancedMesh||n.isInstantiate)n.setMatrixAt(i,s);else if(n instanceof o.Points||n.type==="Points"){const a=n.geometry,p=a.attributes.position.array,f=a.attributes.scaleAtt.array,m=new o.Vector3,d=new o.Vector3,v=new o.Quaternion,h=i*3,b=i*1;s.decompose(m,v,d),p[h]=m.x,p[h+1]=m.y,p[h+2]=m.z,f[b]=Math.max(d.x,d.y,d.z),a.attributes.position.needsUpdate=!0,a.attributes.scaleAtt.needsUpdate=!0}})};class Ie{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const r=this.lead.handlePick([this],e,t);this.onPointerIndex.push(r)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerLeave(e){this.onPointerEvent("leave",e)}onPointerMove(e){this.onPointerEvent("move",e)}onPointerDown(e){this.onPointerEvent("down",e)}dispose(){this.onPointerIndex.forEach(e=>{this.lead.removePick(e)})}}class De extends Ie{constructor(){super(...arguments),this.userData={},this.materialList={},this.useMaterialType="origin",this.disposeMaterialIfNotUsed=!0}cloneMaterial(){const e=this.object3d;if(!e||!e.material)return;const t=e.material;if(Array.isArray(t))return t.map(r=>{const i=r.userData;r.userData={};const c=r.clone();return r.userData=i,c});{const r=t.userData;t.userData={};const i=t.clone();return t.userData=r,i}}setMaterialList(e,t){const r=this.object3d;if(!r||!r.material)return;this.materialList.origin||(this.materialList.origin=r.material);const i=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=i,i}useMaterial(e){const t=this.object3d;!t||!t.material||this.useMaterialType===e||!this.materialList[e]||(this.useMaterialType=e,t.material=this.materialList[e])}useMListById(e,t){if(!this.mList)return;const r=this.mList.get(e);if(!r)return;const i=this.object3d;Array.isArray(i.material)&&t!==void 0?i.material[t]=r:i.material=r}useMListByName(e,t){if(!this.mList)return;const r=this.mList.getKeyByName(e);r&&this.useMListById(r,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class Y extends De{constructor(){super(...arguments),this.objectType="BaseObject",this.userData={},this.prefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.disposeTrack=!0}get parent(){const e=this.object3d.parent;return e&&this.lead.objMap.get(e)||null}get children(){return this.object3d.children.map(e=>this.lead.objMap.get(e)).filter(e=>!!e)}get position(){return this.object3d.position}get rotation(){return this.object3d.rotation}get scale(){return this.object3d.scale}get lookAt(){return this.object3d.lookAt}add(...e){[...e].forEach(t=>{this.lead.objMap.get(t)?this.object3d.add(t):this.lead.createBaseObject(t,{target:this})})}remove(...e){[...e].forEach(t=>{var r;this.lead.objMap.get(t)?(r=this.lead.objMap.get(t))==null||r.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}get visibleWithAncestors(){if(this.visible){let e=this.parent;for(;e;){if(!e.visible)return!1;e=e.parent}return!0}else return!1}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.object3d.layers.set(we),this}hide(){return this.object3d.visible=!1,this.object3d.layers.set(Ae),this}createGroup(){return this.object3d=new o.Group,this}createMesh(...e){return this.object3d=new o.Mesh(...e),this}createPoints(...e){return this.object3d=new o.Points(...e),this}createCSS2DObject(e){return this.object3d=new be.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ne.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ne.CSS3DSprite(e),this}createSprite(e){return this.object3d=new o.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new o.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new o.Vector3),center:e.getCenter(new o.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return ie(this,null,function*(){var l;const t=(l=e==null?void 0:e.recursive)!=null?l:!0,{objectType:r,objectOptions:i}=this,[,c]=r.split("#");let u=e==null?void 0:e.create;u===void 0&&(u=a=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const f=e.instancedAttr.length;if(this.object3d instanceof o.Sprite)a.object3d=Pe(this.object3d,f);else{const m=this.object3d,d=this.cloneMaterial();a.object3d=new o.InstancedMesh(m.geometry,d,f)}Be(a.object3d,e==null?void 0:e.instancedAttr)}else a.object3d=this.object3d.clone(!1),a.object3d.material&&(a.object3d.material=this.cloneMaterial());a.object3d.userData.prefab&&delete a.object3d.userData.prefab}});const s=yield this.lead.draw(c,q(_({},i||{}),{create:u,prefab:!1,key:(e==null?void 0:e.key)||(i==null?void 0:i.key),target:(e==null?void 0:e.target)||(i==null?void 0:i.target)}));return this.isBloom&&s.enableBloom(),t&&(yield Promise.all(this.children.map(a=>a.instantiate({target:s})))),s.isInstantiate=!0,s})}erase(){this.lead.erase(this)}enableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!0),this.isBloom=!0}disableBloom(){var e;(e=this.pencil.composerController)==null||e.setBloomSelection(this,!1),this.isBloom=!1}dispose(){var e;if(super.dispose(),(e=this.pencil.composerController)==null||e.bloomSelection.delete(this),this.lead&&(this.lead.objects.delete(this.key),this.lead.objectWrapChindIdMap.delete(this),this.object3d&&this.lead.objMap.delete(this.object3d)),this.disposeTrack){const t=new fe;t.disposeMaterial=!1,t.track(this),t.dispose()}}}const F=new o.Vector4,oe=new o.Vector3,ae=new o.Vector3,g=new o.Vector4,M=new o.Vector4,D=new o.Vector4,$=new o.Vector3,K=new o.Matrix4,S=new o.Line3,ce=new o.Vector3,N=new o.Box3,U=new o.Sphere,V=new o.Vector4;let T,E;function le(n,e,t){return V.set(0,0,-e,1).applyMatrix4(n.projectionMatrix),V.multiplyScalar(1/V.w),V.x=E/t.width,V.y=E/t.height,V.applyMatrix4(n.projectionMatrixInverse),V.multiplyScalar(1/V.w),Math.abs(Math.max(V.x,V.y))}function Ve(n,e){const t=n.matrixWorld,r=n.geometry,i=r.attributes.instanceStart,c=r.attributes.instanceEnd,u=Math.min(r.instanceCount,i.count);for(let s=0,l=u;s<l;s++){S.start.fromBufferAttribute(i,s),S.end.fromBufferAttribute(c,s),S.applyMatrix4(t);const a=new o.Vector3,p=new o.Vector3;T.distanceSqToSegment(S.start,S.end,p,a),p.distanceTo(a)<E*.5&&e.push({point:p,pointOnLine:a,distance:T.origin.distanceTo(p),object:n,face:null,faceIndex:s,uv:null,uv1:null})}}function Te(n,e,t){const r=e.projectionMatrix,c=n.material.resolution,u=n.matrixWorld,s=n.geometry,l=s.attributes.instanceStart,a=s.attributes.instanceEnd,p=Math.min(s.instanceCount,l.count),f=-e.near;T.at(1,D),D.w=1,D.applyMatrix4(e.matrixWorldInverse),D.applyMatrix4(r),D.multiplyScalar(1/D.w),D.x*=c.x/2,D.y*=c.y/2,D.z=0,$.copy(D),K.multiplyMatrices(e.matrixWorldInverse,u);for(let m=0,d=p;m<d;m++){if(g.fromBufferAttribute(l,m),M.fromBufferAttribute(a,m),g.w=1,M.w=1,g.applyMatrix4(K),M.applyMatrix4(K),g.z>f&&M.z>f)continue;if(g.z>f){const j=g.z-M.z,A=(g.z-f)/j;g.lerp(M,A)}else if(M.z>f){const j=M.z-g.z,A=(M.z-f)/j;M.lerp(g,A)}g.applyMatrix4(r),M.applyMatrix4(r),g.multiplyScalar(1/g.w),M.multiplyScalar(1/M.w),g.x*=c.x/2,g.y*=c.y/2,M.x*=c.x/2,M.y*=c.y/2,S.start.copy(g),S.start.z=0,S.end.copy(M),S.end.z=0;const h=S.closestPointToPointParameter($,!0);S.at(h,ce);const b=o.MathUtils.lerp(g.z,M.z,h),w=b>=-1&&b<=1,I=$.distanceTo(ce)<E*.5;if(w&&I){S.start.fromBufferAttribute(l,m),S.end.fromBufferAttribute(a,m),S.start.applyMatrix4(u),S.end.applyMatrix4(u);const j=new o.Vector3,A=new o.Vector3;T.distanceSqToSegment(S.start,S.end,A,j),t.push({point:A,pointOnLine:j,distance:T.origin.distanceTo(A),object:n,face:null,faceIndex:m,uv:null,uv1:null})}}}class ze extends o.Mesh{constructor(e=new ye.LineSegmentsGeometry,t){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,r=e.attributes.instanceEnd,i=new Float32Array(2*t.count);for(let u=0,s=0,l=t.count;u<l;u++,s+=2)oe.fromBufferAttribute(t,u),ae.fromBufferAttribute(r,u),i[s]=s===0?0:i[s-1],i[s+1]=i[s]+oe.distanceTo(ae);const c=new o.InstancedInterleavedBuffer(i,2,1);return e.setAttribute("instanceDistanceStart",new o.InterleavedBufferAttribute(c,1,0)),e.setAttribute("instanceDistanceEnd",new o.InterleavedBufferAttribute(c,1,1)),this}raycast(e,t){const r=this.material.worldUnits,i=e.camera;i===null&&!r&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const c=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const u=this.matrixWorld,s=this.geometry,l=this.material;E=l.linewidth+c,s.boundingSphere===null&&s.computeBoundingSphere(),U.copy(s.boundingSphere).applyMatrix4(u);let a;if(r)a=E*.5;else{const f=Math.max(i.near,U.distanceToPoint(T.origin));a=le(i,f,l.resolution)}if(U.radius+=a,T.intersectsSphere(U)===!1)return;s.boundingBox===null&&s.computeBoundingBox(),N.copy(s.boundingBox).applyMatrix4(u);let p;if(r)p=E*.5;else{const f=Math.max(i.near,N.distanceToPoint(T.origin));p=le(i,f,l.resolution)}N.expandByScalar(p),T.intersectsBox(N)!==!1&&(r?Ve(this,t):Te(this,i,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(F),this.material.uniforms.resolution.value.set(F.z,F.w))}}const Ee=`
5
5
  #include <fog_pars_fragment>
6
6
  #include <logdepthbuf_pars_fragment>
7
7
 
@@ -88,7 +88,7 @@ void main() {
88
88
  vec2 prevScreen = intoScreen(prevNormed);
89
89
  vec2 nextScreen = intoScreen(nextNormed);
90
90
 
91
- float actualWidth = lineWidth * width *0.25;
91
+ float actualWidth = lineWidth * width;
92
92
 
93
93
  vec2 dir;
94
94
  if(nextScreen == currentScreen) {
@@ -136,4 +136,4 @@ void main() {
136
136
  ${o.ShaderChunk.logdepthbuf_vertex}
137
137
  ${o.ShaderChunk.fog_vertex}
138
138
  }
139
- `;class _e extends o.ShaderMaterial{constructor(e={}){var A;const j=e,{lineWidth:t=1,color:r="#ffffff",map:n=null,useMap:c=0,dashOffset:u=0,dashArray:s=0,dashRatio:l=0,sizeAttenuation:a=!0,offsetLoop:p=!0,offset:f=new o.Vector2(0,0),scaleDown:m=0,alphaMap:d=void 0,alphaTest:v=0,repeat:h=new o.Vector2(1,1),resolution:b=new o.Vector2(1,1)}=j,w=re(j,["lineWidth","color","map","useMap","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super(q(_({},w),{uniforms:{lineWidth:{value:t},color:{value:new o.Color(r)},opacity:{value:(A=e.opacity)!=null?A:1},map:{value:n},useMap:{value:n?1:c},resolution:{value:b},sizeAttenuation:{value:a?1:0},offset:{value:f},offsetLoop:{value:p?1:0},dashArray:{value:s},dashOffset:{value:u},dashRatio:{value:l},useDash:{value:s>0?1:0},scaleDown:{value:m/10},alphaTest:{value:v},alphaMap:{value:d},useAlphaMap:{value:d?1:0},repeat:{value:h}},vertexShader:Le,fragmentShader:Ee})),this.type="MeshLineMaterial"}get color(){return this.uniforms.color.value}set color(e){this.uniforms.color.value=new o.Color(e)}get map(){return this.uniforms.map.value}set map(e){this.uniforms.map.value=e,this.uniforms.useMap.value=e?1:0}get lineWidth(){return this.uniforms.lineWidth.value}set lineWidth(e){this.uniforms.lineWidth.value=e}get sizeAttenuation(){return this.uniforms.sizeAttenuation.value===1}set sizeAttenuation(e){this.uniforms.sizeAttenuation.value=e?1:0}}function Oe(i,e){return i.map(t=>{const r=[];let n;return t.forEach(c=>{if(n){const u=O.geoDistance(c,n)*180/Math.PI;if(u>e){const s=O.geoInterpolate(n,c),l=1/Math.ceil(u/e);let a=l;for(;a<1;)r.push(s(a)),a+=l}}r.push(n=c)}),r})}function ke(i,{minLng:e,maxLng:t,minLat:r,maxLat:n}={}){const c=Math.round(te(360/i,2)/Math.PI),u=(1+Math.sqrt(5))/2,s=d=>d/u*360%360-180,l=d=>Math.acos(2*d/c-1)/Math.PI*180-90,a=d=>c*(Math.cos((d+90)*Math.PI/180)+1)/2,p=[n!==void 0?Math.ceil(a(n)):0,r!==void 0?Math.floor(a(r)):c-1],f=e===void 0&&t===void 0?()=>!0:e===void 0?d=>d<=t:t===void 0?d=>d>=e:t>=e?d=>d>=e&&d<=t:d=>d>=e||d<=t,m=[];for(let d=p[0];d<=p[1];d++){const v=s(d);f(v)&&m.push([v,l(d)])}return m}function Z(i,e,t=!1){return t?O.geoContains(e,i):Se(i,e)}function We(i,e){const t={type:"Polygon",coordinates:i},[[r,n],[c,u]]=O.geoBounds(t);if(Math.min(Math.abs(c-r),Math.abs(u-n))<e)return[];const s=r>c||u>=89||n<=-89;return ke(e,{minLng:r,maxLng:c,minLat:n,maxLat:u}).filter(l=>Z(l,t,s))}function Ne(i,{resolution:e=1/0,bbox:t,projection:r}={}){const n=Oe(i,e),c=L.merge(n),u=We(i,e),s=[...c,...u],l={type:"Polygon",coordinates:i},[[a,p],[f,m]]=O.geoBounds(l),d=a>f||m>=89||p<=-89;let v=[];if(d){const g=xe.geoVoronoi(s).triangles(),x=new Map(s.map(([P,B],z)=>[`${P}-${B}`,z]));g.features.forEach(P=>{const B=P.geometry.coordinates[0].slice(0,3).reverse(),z=[];if(B.forEach(([I,R])=>{const k=`${I}-${R}`;x.has(k)&&z.push(x.get(k))}),z.length===3){if(z.some(I=>I<c.length)){const I=P.properties.circumcenter;if(!Z(I,l,d))return}v.push(...z)}})}else if(u.length){const g=Me.from(s);for(let x=0,P=g.triangles.length;x<P;x+=3){const B=[2,1,0].map(I=>g.triangles[x+I]),z=B.map(I=>s[I]);if(B.some(I=>I<c.length)){const I=[0,1].map(R=>L.mean(z,k=>k[R]));if(!Z(I,l,d))continue}v.push(...B)}}else{const{vertices:g,holes:x=[]}=X.flatten(n);v=X(g,x,2)}let h=t?[t[0],t[2]]:L.extent(s,g=>g[0]),b=t?[t[1],t[3]]:L.extent(s,g=>g[1]);if(r){const[g,x]=r([h[0],b[0]]),[P,B]=r([h[1],b[1]]);h=[g,P],b=[-x,-B]}const w=se.scaleLinear(h,[0,1]),j=se.scaleLinear(b,[0,1]),A=s.map(([g,x])=>{if(r){const[P,B]=r([g,x]);return[w(P),j(-B)]}else return[w(g),j(x)]});return{contour:n,triangles:{points:s,indices:v,uvs:A}}}const ue=new o.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(i,e,t,r){const n=i.map(c=>c.map(([u,s])=>{if(r){const[l,a]=r([u,s]);return[l,-a,e]}return t?Q.polar2Cartesian(u,s,e):[u,s,e]}));return X.flatten(n)}function Ue(i,e,t,r,n){const{vertices:c,holes:u}=G(i,e,r,n),{vertices:s}=G(i,t,r,n),l=L.merge([s,c]),a=Math.round(s.length/3),p=new Set(u);let f=0;const m=[];for(let v=0;v<a;v++){let h=v+1;if(h===a)h=f;else if(p.has(h)){const b=h;h=f,f=b}m.push(v,v+a,h+a),m.push(h+a,h,v)}const d=[];for(let v=1;v>=0;v--)for(let h=0;h<a;h+=1)d.push(h/(a-1),v);return{indices:m,vertices:l,uvs:d,topVerts:s}}function de(i,e,t,r,n,c){return{indices:r?i.indices:i.indices.slice().reverse(),vertices:G([i.points],e,n,c).vertices,uvs:t}}const he=({polygonGeoJson:i,startHeight:e,endHeight:t,curvatureResolution:r=1,cartesian:n=!0,hasSide:c=!0,hasBottom:u=!1,hasTop:s=!1,projection:l,bbox:a})=>{i.forEach(w=>{ye(w)||w.reverse()});const{contour:p,triangles:f}=Ne(i,{resolution:r,bbox:a,projection:l});let m={},d;c&&(m=Ue(p,e!=null?e:t,t!=null?t:e,n,l),d=m.topVerts);let v=[];(u||s)&&(v=L.merge(f.uvs));let h={};u&&(h=de(f,e,v,!1,n,l));let b={};return s&&(b=de(f,t,v,!0,n,l)),{contour:p,triangles:f,sideTorso:m,bottomCap:h,topCap:b,topVerts:d}};class Ge extends o.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=_({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:r,hasTop:n,topFirst:c,hasBottom:u,hasSide:s,cartesian:l,userDataRsoOffset:a,projection:p}=this.parameters,{contour:f,sideTorso:m,topVerts:d,bottomCap:v,topCap:h}=he(_({},this.parameters));let b=[],w=[],j=[],A=0;const C=g=>{const x=Math.round(b.length/3),P=j.length;b=b.concat(g.vertices),w=w.concat(g.uvs),j=j.concat(x?g.indices.map(B=>B+x):g.indices),this.addGroup(P,j.length-P,A++)};n&&c&&C(h),s&&(C(m),this.userData.topVerts=a?G(f,r+a,l,p).vertices:d),u&&C(v),n&&!c&&C(h),this.setIndex(j),this[ue]("position",new o.Float32BufferAttribute(b,3)),this[ue]("uv",new o.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}exports.BLOOM_SCENE=je;exports.BaseObject=Y;exports.IS_DEV=Ce;exports.LineSegments2=ze;exports.MeshLineMaterial=_e;exports.PolygonGeometry=Ge;exports.ResourceTracker=fe;exports.getMetas=he;
139
+ `;class _e extends o.ShaderMaterial{constructor(e={}){const j=e,{lineWidth:t=1,color:r="#ffffff",opacity:i=1,map:c=null,useMap:u=0,dashOffset:s=0,dashArray:l=0,dashRatio:a=0,sizeAttenuation:p=!0,offsetLoop:f=!0,offset:m=new o.Vector2(0,0),scaleDown:d=0,alphaMap:v=void 0,alphaTest:h=0,repeat:b=new o.Vector2(1,1),resolution:w=new o.Vector2(1,1)}=j,I=re(j,["lineWidth","color","opacity","map","useMap","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super(q(_({},I),{uniforms:{lineWidth:{value:t},color:{value:new o.Color(r)},opacity:{value:i},map:{value:c},useMap:{value:c?1:u},resolution:{value:w},sizeAttenuation:{value:p?1:0},offset:{value:m},offsetLoop:{value:f?1:0},dashArray:{value:l},dashOffset:{value:s},dashRatio:{value:a},useDash:{value:l>0?1:0},scaleDown:{value:d/10},alphaTest:{value:h},alphaMap:{value:v},useAlphaMap:{value:v?1:0},repeat:{value:b}},vertexShader:Le,fragmentShader:Ee})),this.type="MeshLineMaterial"}get color(){return this.uniforms.color.value}set color(e){this.uniforms.color.value=new o.Color(e)}get opacity(){var e;return((e=this.uniforms)==null?void 0:e.opacity.value)||1}set opacity(e){this.uniforms&&(this.uniforms.opacity.value=e)}get map(){return this.uniforms.map.value}set map(e){this.uniforms.map.value=e,this.uniforms.useMap.value=e?1:0}get lineWidth(){return this.uniforms.lineWidth.value}set lineWidth(e){this.uniforms.lineWidth.value=e}get sizeAttenuation(){return this.uniforms.sizeAttenuation.value===1}set sizeAttenuation(e){this.uniforms.sizeAttenuation.value=e?1:0}}function Oe(n,e){return n.map(t=>{const r=[];let i;return t.forEach(c=>{if(i){const u=O.geoDistance(c,i)*180/Math.PI;if(u>e){const s=O.geoInterpolate(i,c),l=1/Math.ceil(u/e);let a=l;for(;a<1;)r.push(s(a)),a+=l}}r.push(i=c)}),r})}function ke(n,{minLng:e,maxLng:t,minLat:r,maxLat:i}={}){const c=Math.round(te(360/n,2)/Math.PI),u=(1+Math.sqrt(5))/2,s=d=>d/u*360%360-180,l=d=>Math.acos(2*d/c-1)/Math.PI*180-90,a=d=>c*(Math.cos((d+90)*Math.PI/180)+1)/2,p=[i!==void 0?Math.ceil(a(i)):0,r!==void 0?Math.floor(a(r)):c-1],f=e===void 0&&t===void 0?()=>!0:e===void 0?d=>d<=t:t===void 0?d=>d>=e:t>=e?d=>d>=e&&d<=t:d=>d>=e||d<=t,m=[];for(let d=p[0];d<=p[1];d++){const v=s(d);f(v)&&m.push([v,l(d)])}return m}function Z(n,e,t=!1){return t?O.geoContains(e,n):Se(n,e)}function We(n,e){const t={type:"Polygon",coordinates:n},[[r,i],[c,u]]=O.geoBounds(t);if(Math.min(Math.abs(c-r),Math.abs(u-i))<e)return[];const s=r>c||u>=89||i<=-89;return ke(e,{minLng:r,maxLng:c,minLat:i,maxLat:u}).filter(l=>Z(l,t,s))}function Ne(n,{resolution:e=1/0,bbox:t,projection:r}={}){const i=Oe(n,e),c=L.merge(i),u=We(n,e),s=[...c,...u],l={type:"Polygon",coordinates:n},[[a,p],[f,m]]=O.geoBounds(l),d=a>f||m>=89||p<=-89;let v=[];if(d){const y=xe.geoVoronoi(s).triangles(),x=new Map(s.map(([C,P],z)=>[`${C}-${P}`,z]));y.features.forEach(C=>{const P=C.geometry.coordinates[0].slice(0,3).reverse(),z=[];if(P.forEach(([B,R])=>{const k=`${B}-${R}`;x.has(k)&&z.push(x.get(k))}),z.length===3){if(z.some(B=>B<c.length)){const B=C.properties.circumcenter;if(!Z(B,l,d))return}v.push(...z)}})}else if(u.length){const y=Me.from(s);for(let x=0,C=y.triangles.length;x<C;x+=3){const P=[2,1,0].map(B=>y.triangles[x+B]),z=P.map(B=>s[B]);if(P.some(B=>B<c.length)){const B=[0,1].map(R=>L.mean(z,k=>k[R]));if(!Z(B,l,d))continue}v.push(...P)}}else{const{vertices:y,holes:x=[]}=X.flatten(i);v=X(y,x,2)}let h=t?[t[0],t[2]]:L.extent(s,y=>y[0]),b=t?[t[1],t[3]]:L.extent(s,y=>y[1]);if(r){const[y,x]=r([h[0],b[0]]),[C,P]=r([h[1],b[1]]);h=[y,C],b=[-x,-P]}const w=se.scaleLinear(h,[0,1]),I=se.scaleLinear(b,[0,1]),j=s.map(([y,x])=>{if(r){const[C,P]=r([y,x]);return[w(C),I(-P)]}else return[w(y),I(x)]});return{contour:i,triangles:{points:s,indices:v,uvs:j}}}const ue=new o.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function G(n,e,t,r){const i=n.map(c=>c.map(([u,s])=>{if(r){const[l,a]=r([u,s]);return[l,-a,e]}return t?Q.polar2Cartesian(u,s,e):[u,s,e]}));return X.flatten(i)}function Ue(n,e,t,r,i){const{vertices:c,holes:u}=G(n,e,r,i),{vertices:s}=G(n,t,r,i),l=L.merge([s,c]),a=Math.round(s.length/3),p=new Set(u);let f=0;const m=[];for(let v=0;v<a;v++){let h=v+1;if(h===a)h=f;else if(p.has(h)){const b=h;h=f,f=b}m.push(v,v+a,h+a),m.push(h+a,h,v)}const d=[];for(let v=1;v>=0;v--)for(let h=0;h<a;h+=1)d.push(h/(a-1),v);return{indices:m,vertices:l,uvs:d,topVerts:s}}function de(n,e,t,r,i,c){return{indices:r?n.indices:n.indices.slice().reverse(),vertices:G([n.points],e,i,c).vertices,uvs:t}}const he=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:r=1,cartesian:i=!0,hasSide:c=!0,hasBottom:u=!1,hasTop:s=!1,projection:l,bbox:a})=>{n.forEach(w=>{ge(w)||w.reverse()});const{contour:p,triangles:f}=Ne(n,{resolution:r,bbox:a,projection:l});let m={},d;c&&(m=Ue(p,e!=null?e:t,t!=null?t:e,i,l),d=m.topVerts);let v=[];(u||s)&&(v=L.merge(f.uvs));let h={};u&&(h=de(f,e,v,!1,i,l));let b={};return s&&(b=de(f,t,v,!0,i,l)),{contour:p,triangles:f,sideTorso:m,bottomCap:h,topCap:b,topVerts:d}};class Ge extends o.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=_({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:r,hasTop:i,topFirst:c,hasBottom:u,hasSide:s,cartesian:l,userDataRsoOffset:a,projection:p}=this.parameters,{contour:f,sideTorso:m,topVerts:d,bottomCap:v,topCap:h}=he(_({},this.parameters));let b=[],w=[],I=[],j=0;const A=y=>{const x=Math.round(b.length/3),C=I.length;b=b.concat(y.vertices),w=w.concat(y.uvs),I=I.concat(x?y.indices.map(P=>P+x):y.indices),this.addGroup(C,I.length-C,j++)};i&&c&&A(h),s&&(A(m),this.userData.topVerts=a?G(f,r+a,l,p).vertices:d),u&&A(v),i&&!c&&A(h),this.setIndex(I),this[ue]("position",new o.Float32BufferAttribute(b,3)),this[ue]("uv",new o.Float32BufferAttribute(w,2)),this.computeVertexNormals()}}exports.BLOOM_SCENE=je;exports.BaseObject=Y;exports.IS_DEV=Ce;exports.LineSegments2=ze;exports.MeshLineMaterial=_e;exports.PolygonGeometry=Ge;exports.ResourceTracker=fe;exports.getMetas=he;
@@ -10,6 +10,7 @@ export interface MeshLineMaterialParameters extends ShaderMaterialParameters {
10
10
  * @default '#ffffff'
11
11
  */
12
12
  color?: ColorRepresentation;
13
+ opacity?: number;
13
14
  /**
14
15
  * Texture map
15
16
  */
@@ -66,6 +67,8 @@ export declare class MeshLineMaterial extends ShaderMaterial {
66
67
  constructor(parameters?: MeshLineMaterialParameters);
67
68
  get color(): Color;
68
69
  set color(value: ColorRepresentation);
70
+ get opacity(): number;
71
+ set opacity(value: number);
69
72
  get map(): Texture | null;
70
73
  set map(value: Texture | null);
71
74
  get lineWidth(): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-draw",
3
- "version": "0.15.0-beta.33",
3
+ "version": "0.15.0-beta.35",
4
4
  "author": "gitplus <hstits@gmail.com>",
5
5
  "scripts": {
6
6
  "start": "bundler-dev",