gl-draw 0.15.0-beta.34 → 0.15.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.module2.js
CHANGED
|
@@ -35,12 +35,12 @@ var ot = (n, t, e) => new Promise((i, s) => {
|
|
|
35
35
|
}, r = (c) => c.done ? i(c.value) : Promise.resolve(c.value).then(a, l);
|
|
36
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
|
|
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
|
|
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";
|
|
@@ -125,14 +125,14 @@ const ne = (n, t = 1) => {
|
|
|
125
125
|
}, re = (n, t) => {
|
|
126
126
|
const e = new R();
|
|
127
127
|
t.forEach((i, s) => {
|
|
128
|
-
const a =
|
|
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
131
|
if (n instanceof wt || n.isInstantiate)
|
|
132
132
|
n.setMatrixAt(s, r);
|
|
133
133
|
else if (n instanceof H || n.type === "Points") {
|
|
134
|
-
const o = n.geometry, h = o.attributes.position.array,
|
|
135
|
-
r.decompose(p, m, u), h[
|
|
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
|
};
|
|
@@ -341,12 +341,12 @@ class mt extends ae {
|
|
|
341
341
|
var h;
|
|
342
342
|
if (this.object3d) {
|
|
343
343
|
if ((h = t == null ? void 0 : t.instancedAttr) != null && h.length) {
|
|
344
|
-
const
|
|
344
|
+
const f = t.instancedAttr.length;
|
|
345
345
|
if (this.object3d instanceof lt)
|
|
346
|
-
o.object3d = ne(this.object3d,
|
|
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,
|
|
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
|
|
@@ -411,22 +411,22 @@ function ce(n, t) {
|
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
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),
|
|
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 (b.fromBufferAttribute(c, p), g.fromBufferAttribute(o, p), b.w = 1, g.w = 1, b.applyMatrix4(Y), g.applyMatrix4(Y), b.z >
|
|
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 (b.z >
|
|
420
|
-
const S = b.z - g.z, j = (b.z -
|
|
419
|
+
if (b.z > f) {
|
|
420
|
+
const S = b.z - g.z, j = (b.z - f) / S;
|
|
421
421
|
b.lerp(g, j);
|
|
422
|
-
} else if (g.z >
|
|
423
|
-
const S = g.z - b.z, j = (g.z -
|
|
422
|
+
} else if (g.z > f) {
|
|
423
|
+
const S = g.z - b.z, j = (g.z - f) / S;
|
|
424
424
|
g.lerp(b, j);
|
|
425
425
|
}
|
|
426
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
|
|
428
|
-
M.at(
|
|
429
|
-
const v = kt.lerp(b.z, g.z,
|
|
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
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
432
|
const S = new D(), j = new D();
|
|
@@ -478,13 +478,13 @@ class Le extends St {
|
|
|
478
478
|
if (i)
|
|
479
479
|
o = E * 0.5;
|
|
480
480
|
else {
|
|
481
|
-
const
|
|
481
|
+
const f = Math.max(
|
|
482
482
|
s.near,
|
|
483
483
|
U.distanceToPoint(T.origin)
|
|
484
484
|
);
|
|
485
485
|
o = gt(
|
|
486
486
|
s,
|
|
487
|
-
|
|
487
|
+
f,
|
|
488
488
|
c.resolution
|
|
489
489
|
);
|
|
490
490
|
}
|
|
@@ -495,13 +495,13 @@ class Le extends St {
|
|
|
495
495
|
if (i)
|
|
496
496
|
h = E * 0.5;
|
|
497
497
|
else {
|
|
498
|
-
const
|
|
498
|
+
const f = Math.max(
|
|
499
499
|
s.near,
|
|
500
500
|
N.distanceToPoint(T.origin)
|
|
501
501
|
);
|
|
502
502
|
h = gt(
|
|
503
503
|
s,
|
|
504
|
-
|
|
504
|
+
f,
|
|
505
505
|
c.resolution
|
|
506
506
|
);
|
|
507
507
|
}
|
|
@@ -555,7 +555,7 @@ void main() {
|
|
|
555
555
|
#include <fog_fragment>
|
|
556
556
|
#include <${parseInt(Wt) < 154 ? "encodings_fragment" : "colorspace_fragment"}>
|
|
557
557
|
}
|
|
558
|
-
`,
|
|
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;
|
|
602
|
+
float actualWidth = lineWidth * width *0.3;
|
|
603
603
|
|
|
604
604
|
vec2 dir;
|
|
605
605
|
if(nextScreen == currentScreen) {
|
|
@@ -660,11 +660,11 @@ class Oe extends Nt {
|
|
|
660
660
|
dashArray: c = 0,
|
|
661
661
|
dashRatio: o = 0,
|
|
662
662
|
sizeAttenuation: h = !0,
|
|
663
|
-
offsetLoop:
|
|
663
|
+
offsetLoop: f = !0,
|
|
664
664
|
offset: p = new K(0, 0),
|
|
665
665
|
scaleDown: u = 0,
|
|
666
666
|
alphaMap: m = void 0,
|
|
667
|
-
alphaTest:
|
|
667
|
+
alphaTest: d = 0,
|
|
668
668
|
repeat: v = new K(1, 1),
|
|
669
669
|
resolution: w = new K(1, 1)
|
|
670
670
|
} = S, I = rt(S, [
|
|
@@ -688,25 +688,25 @@ class Oe extends Nt {
|
|
|
688
688
|
super(q(L({}, I), {
|
|
689
689
|
uniforms: {
|
|
690
690
|
lineWidth: { value: e },
|
|
691
|
-
color: { value: new
|
|
691
|
+
color: { value: new ft(i) },
|
|
692
692
|
opacity: { value: s },
|
|
693
693
|
map: { value: a },
|
|
694
694
|
useMap: { value: a ? 1 : l },
|
|
695
695
|
resolution: { value: w },
|
|
696
696
|
sizeAttenuation: { value: h ? 1 : 0 },
|
|
697
697
|
offset: { value: p },
|
|
698
|
-
offsetLoop: { value:
|
|
698
|
+
offsetLoop: { value: f ? 1 : 0 },
|
|
699
699
|
dashArray: { value: c },
|
|
700
700
|
dashOffset: { value: r },
|
|
701
701
|
dashRatio: { value: o },
|
|
702
702
|
useDash: { value: c > 0 ? 1 : 0 },
|
|
703
703
|
scaleDown: { value: u / 10 },
|
|
704
|
-
alphaTest: { value:
|
|
704
|
+
alphaTest: { value: d },
|
|
705
705
|
alphaMap: { value: m },
|
|
706
706
|
useAlphaMap: { value: m ? 1 : 0 },
|
|
707
707
|
repeat: { value: v }
|
|
708
708
|
},
|
|
709
|
-
vertexShader:
|
|
709
|
+
vertexShader: fe,
|
|
710
710
|
fragmentShader: ue
|
|
711
711
|
})), this.type = "MeshLineMaterial";
|
|
712
712
|
}
|
|
@@ -715,13 +715,14 @@ class Oe extends Nt {
|
|
|
715
715
|
return this.uniforms.color.value;
|
|
716
716
|
}
|
|
717
717
|
set color(t) {
|
|
718
|
-
this.uniforms.color.value = new
|
|
718
|
+
this.uniforms.color.value = new ft(t);
|
|
719
719
|
}
|
|
720
720
|
get opacity() {
|
|
721
|
-
|
|
721
|
+
var t;
|
|
722
|
+
return ((t = this.uniforms) == null ? void 0 : t.opacity.value) || 1;
|
|
722
723
|
}
|
|
723
724
|
set opacity(t) {
|
|
724
|
-
this.uniforms.opacity.value = t;
|
|
725
|
+
this.uniforms && (this.uniforms.opacity.value = t);
|
|
725
726
|
}
|
|
726
727
|
// Getter and setter for map
|
|
727
728
|
get map() {
|
|
@@ -730,6 +731,12 @@ class Oe extends Nt {
|
|
|
730
731
|
set map(t) {
|
|
731
732
|
this.uniforms.map.value = t, this.uniforms.useMap.value = t ? 1 : 0;
|
|
732
733
|
}
|
|
734
|
+
get repeat() {
|
|
735
|
+
return this.uniforms.repeat.value;
|
|
736
|
+
}
|
|
737
|
+
set repeat(t) {
|
|
738
|
+
this.uniforms.repeat.value.copy(t);
|
|
739
|
+
}
|
|
733
740
|
// Getter and setter for lineWidth
|
|
734
741
|
get lineWidth() {
|
|
735
742
|
return this.uniforms.lineWidth.value;
|
|
@@ -745,7 +752,7 @@ class Oe extends Nt {
|
|
|
745
752
|
this.uniforms.sizeAttenuation.value = t ? 1 : 0;
|
|
746
753
|
}
|
|
747
754
|
}
|
|
748
|
-
function
|
|
755
|
+
function de(n, t) {
|
|
749
756
|
return n.map((e) => {
|
|
750
757
|
const i = [];
|
|
751
758
|
let s;
|
|
@@ -767,10 +774,10 @@ function he(n, { minLng: t, maxLng: e, minLat: i, maxLat: s } = {}) {
|
|
|
767
774
|
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 = [
|
|
768
775
|
s !== void 0 ? Math.ceil(o(s)) : 0,
|
|
769
776
|
i !== void 0 ? Math.floor(o(i)) : a - 1
|
|
770
|
-
],
|
|
777
|
+
], 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 = [];
|
|
771
778
|
for (let u = h[0]; u <= h[1]; u++) {
|
|
772
779
|
const m = r(u);
|
|
773
|
-
|
|
780
|
+
f(m) && p.push([m, c(u)]);
|
|
774
781
|
}
|
|
775
782
|
return p;
|
|
776
783
|
}
|
|
@@ -792,7 +799,7 @@ function pe(n, t) {
|
|
|
792
799
|
);
|
|
793
800
|
}
|
|
794
801
|
function me(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
795
|
-
const s =
|
|
802
|
+
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
|
|
796
803
|
p >= 89 || // crosses north pole
|
|
797
804
|
h <= -89;
|
|
798
805
|
let m = [];
|
|
@@ -839,12 +846,12 @@ function me(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
839
846
|
const { vertices: y, holes: x = [] } = Ct(s);
|
|
840
847
|
m = Yt(y, x, 2);
|
|
841
848
|
}
|
|
842
|
-
let
|
|
849
|
+
let d = e ? [e[0], e[2]] : ht(r, (y) => y[0]), v = e ? [e[1], e[3]] : ht(r, (y) => y[1]);
|
|
843
850
|
if (i) {
|
|
844
|
-
const [y, x] = i([
|
|
845
|
-
|
|
851
|
+
const [y, x] = i([d[0], v[0]]), [A, C] = i([d[1], v[1]]);
|
|
852
|
+
d = [y, A], v = [-x, -C];
|
|
846
853
|
}
|
|
847
|
-
const w = pt(
|
|
854
|
+
const w = pt(d, [0, 1]), I = pt(v, [0, 1]), S = r.map(([y, x]) => {
|
|
848
855
|
if (i) {
|
|
849
856
|
const [A, C] = i([y, x]);
|
|
850
857
|
return [w(A), I(-C)];
|
|
@@ -878,21 +885,21 @@ function ve(n, t, e, i, s) {
|
|
|
878
885
|
i,
|
|
879
886
|
s
|
|
880
887
|
), c = tt([r, a]), o = Math.round(r.length / 3), h = new Set(l);
|
|
881
|
-
let
|
|
888
|
+
let f = 0;
|
|
882
889
|
const p = [];
|
|
883
890
|
for (let m = 0; m < o; m++) {
|
|
884
|
-
let
|
|
885
|
-
if (
|
|
886
|
-
|
|
887
|
-
else if (h.has(
|
|
888
|
-
const v =
|
|
889
|
-
|
|
891
|
+
let d = m + 1;
|
|
892
|
+
if (d === o)
|
|
893
|
+
d = f;
|
|
894
|
+
else if (h.has(d)) {
|
|
895
|
+
const v = d;
|
|
896
|
+
d = f, f = v;
|
|
890
897
|
}
|
|
891
|
-
p.push(m, m + o,
|
|
898
|
+
p.push(m, m + o, d + o), p.push(d + o, d, m);
|
|
892
899
|
}
|
|
893
900
|
const u = [];
|
|
894
901
|
for (let m = 1; m >= 0; m--)
|
|
895
|
-
for (let
|
|
902
|
+
for (let d = 0; d < o; d += 1) u.push(d / (o - 1), m);
|
|
896
903
|
return { indices: p, vertices: c, uvs: u, topVerts: r };
|
|
897
904
|
}
|
|
898
905
|
function xt(n, t, e, i, s, a) {
|
|
@@ -922,7 +929,7 @@ const ye = ({
|
|
|
922
929
|
n.forEach((w) => {
|
|
923
930
|
Zt(w) || w.reverse();
|
|
924
931
|
});
|
|
925
|
-
const { contour: h, triangles:
|
|
932
|
+
const { contour: h, triangles: f } = me(n, {
|
|
926
933
|
resolution: i,
|
|
927
934
|
bbox: o,
|
|
928
935
|
projection: c
|
|
@@ -936,10 +943,10 @@ const ye = ({
|
|
|
936
943
|
c
|
|
937
944
|
), u = p.topVerts);
|
|
938
945
|
let m = [];
|
|
939
|
-
(l || r) && (m = tt(
|
|
940
|
-
let
|
|
941
|
-
l && (
|
|
942
|
-
|
|
946
|
+
(l || r) && (m = tt(f.uvs));
|
|
947
|
+
let d = {};
|
|
948
|
+
l && (d = xt(
|
|
949
|
+
f,
|
|
943
950
|
t,
|
|
944
951
|
m,
|
|
945
952
|
!1,
|
|
@@ -948,13 +955,13 @@ const ye = ({
|
|
|
948
955
|
));
|
|
949
956
|
let v = {};
|
|
950
957
|
return r && (v = xt(
|
|
951
|
-
|
|
958
|
+
f,
|
|
952
959
|
e,
|
|
953
960
|
m,
|
|
954
961
|
!0,
|
|
955
962
|
s,
|
|
956
963
|
c
|
|
957
|
-
)), { contour: h, triangles:
|
|
964
|
+
)), { contour: h, triangles: f, sideTorso: p, bottomCap: d, topCap: v, topVerts: u };
|
|
958
965
|
};
|
|
959
966
|
class Ve extends J {
|
|
960
967
|
constructor(t, e = {}) {
|
|
@@ -979,7 +986,7 @@ class Ve extends J {
|
|
|
979
986
|
cartesian: c,
|
|
980
987
|
userDataRsoOffset: o,
|
|
981
988
|
projection: h
|
|
982
|
-
} = this.parameters, { contour:
|
|
989
|
+
} = this.parameters, { contour: f, sideTorso: p, topVerts: u, bottomCap: m, topCap: d } = ye(L({}, this.parameters));
|
|
983
990
|
let v = [], w = [], I = [], S = 0;
|
|
984
991
|
const j = (y) => {
|
|
985
992
|
const x = Math.round(v.length / 3), A = I.length;
|
|
@@ -987,12 +994,12 @@ class Ve extends J {
|
|
|
987
994
|
x ? y.indices.map((C) => C + x) : y.indices
|
|
988
995
|
), this.addGroup(A, I.length - A, S++);
|
|
989
996
|
};
|
|
990
|
-
s && a && j(
|
|
991
|
-
|
|
997
|
+
s && a && j(d), r && (j(p), this.userData.topVerts = o ? $(
|
|
998
|
+
f,
|
|
992
999
|
i + o,
|
|
993
1000
|
c,
|
|
994
1001
|
h
|
|
995
|
-
).vertices : u), l && j(m), s && !a && j(
|
|
1002
|
+
).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();
|
|
996
1003
|
}
|
|
997
1004
|
}
|
|
998
1005
|
export {
|
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=(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"),
|
|
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"),ye=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"),be=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,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,
|
|
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,y=i*1;s.decompose(m,v,d),p[h]=m.x,p[h+1]=m.y,p[h+2]=m.z,f[y]=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 ye.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 y=o.MathUtils.lerp(g.z,M.z,h),w=y>=-1&&y<=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 be.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;
|
|
91
|
+
float actualWidth = lineWidth * width *0.3;
|
|
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={}){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:
|
|
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:y=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:y}},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 repeat(){return this.uniforms.repeat.value}set repeat(e){this.uniforms.repeat.value.copy(e)}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 b=xe.geoVoronoi(s).triangles(),x=new Map(s.map(([C,P],z)=>[`${C}-${P}`,z]));b.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 b=Me.from(s);for(let x=0,C=b.triangles.length;x<C;x+=3){const P=[2,1,0].map(B=>b.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:b,holes:x=[]}=X.flatten(i);v=X(b,x,2)}let h=t?[t[0],t[2]]:L.extent(s,b=>b[0]),y=t?[t[1],t[3]]:L.extent(s,b=>b[1]);if(r){const[b,x]=r([h[0],y[0]]),[C,P]=r([h[1],y[1]]);h=[b,C],y=[-x,-P]}const w=se.scaleLinear(h,[0,1]),I=se.scaleLinear(y,[0,1]),j=s.map(([b,x])=>{if(r){const[C,P]=r([b,x]);return[w(C),I(-P)]}else return[w(b),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 y=h;h=f,f=y}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 y={};return s&&(y=de(f,t,v,!0,i,l)),{contour:p,triangles:f,sideTorso:m,bottomCap:h,topCap:y,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 y=[],w=[],I=[],j=0;const A=b=>{const x=Math.round(y.length/3),C=I.length;y=y.concat(b.vertices),w=w.concat(b.uvs),I=I.concat(x?b.indices.map(P=>P+x):b.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(y,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;
|
|
@@ -71,6 +71,8 @@ export declare class MeshLineMaterial extends ShaderMaterial {
|
|
|
71
71
|
set opacity(value: number);
|
|
72
72
|
get map(): Texture | null;
|
|
73
73
|
set map(value: Texture | null);
|
|
74
|
+
get repeat(): Vector2;
|
|
75
|
+
set repeat(value: Vector2);
|
|
74
76
|
get lineWidth(): number;
|
|
75
77
|
set lineWidth(value: number);
|
|
76
78
|
get sizeAttenuation(): boolean;
|