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.
package/dist/index.module2.js
CHANGED
|
@@ -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,
|
|
5
|
-
var
|
|
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(
|
|
7
|
+
it.call(t, e) && et(n, e, t[e]);
|
|
8
8
|
if (k)
|
|
9
9
|
for (var e of k(t))
|
|
10
|
-
|
|
11
|
-
return
|
|
12
|
-
}, q = (
|
|
13
|
-
var rt = (
|
|
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
|
|
16
|
-
it.call(
|
|
17
|
-
if (
|
|
18
|
-
for (var i of k(
|
|
19
|
-
t.indexOf(i) < 0 &&
|
|
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 = (
|
|
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
|
-
|
|
27
|
+
s(o);
|
|
28
28
|
}
|
|
29
29
|
}, l = (c) => {
|
|
30
30
|
try {
|
|
31
31
|
r(e.throw(c));
|
|
32
32
|
} catch (o) {
|
|
33
|
-
|
|
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(
|
|
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";
|
|
@@ -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
|
|
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
|
|
79
|
-
(
|
|
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
|
|
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 =
|
|
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
|
|
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,
|
|
125
|
-
}, re = (
|
|
124
|
+
}, new H(e, s);
|
|
125
|
+
}, re = (n, t) => {
|
|
126
126
|
const e = new R();
|
|
127
|
-
t.forEach((i,
|
|
128
|
-
const a =
|
|
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 (
|
|
132
|
-
|
|
133
|
-
else if (
|
|
134
|
-
const o =
|
|
135
|
-
r.decompose(p, m, u), h[
|
|
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
|
|
179
|
+
const s = i.userData;
|
|
180
180
|
i.userData = {};
|
|
181
181
|
const a = i.clone();
|
|
182
|
-
return i.userData =
|
|
182
|
+
return i.userData = s, a;
|
|
183
183
|
});
|
|
184
184
|
{
|
|
185
185
|
const i = e.userData;
|
|
186
186
|
e.userData = {};
|
|
187
|
-
const
|
|
188
|
-
return e.userData = i,
|
|
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
|
|
197
|
-
return this.materialList[t] =
|
|
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
|
|
210
|
-
Array.isArray(
|
|
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:
|
|
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
|
|
344
|
+
const f = t.instancedAttr.length;
|
|
345
345
|
if (this.object3d instanceof lt)
|
|
346
|
-
o.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
|
|
@@ -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({},
|
|
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) || (
|
|
361
|
-
target: (t == null ? void 0 : t.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
|
|
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(),
|
|
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
|
|
394
|
-
return z.set(0, 0, -t, 1).applyMatrix4(
|
|
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(
|
|
397
|
-
const e =
|
|
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(
|
|
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:
|
|
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(
|
|
414
|
-
const i = t.projectionMatrix, a =
|
|
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 (
|
|
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 (
|
|
420
|
-
const
|
|
421
|
-
|
|
422
|
-
} else if (
|
|
423
|
-
const
|
|
424
|
-
|
|
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
|
-
|
|
427
|
-
const
|
|
428
|
-
M.at(
|
|
429
|
-
const v = kt.lerp(
|
|
430
|
-
if (w &&
|
|
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
|
|
433
|
-
T.distanceSqToSegment(M.start, M.end,
|
|
434
|
-
point:
|
|
435
|
-
pointOnLine:
|
|
436
|
-
distance: T.origin.distanceTo(
|
|
437
|
-
object:
|
|
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,
|
|
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),
|
|
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
|
-
|
|
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,
|
|
470
|
-
|
|
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
|
|
482
|
-
|
|
481
|
+
const f = Math.max(
|
|
482
|
+
s.near,
|
|
483
483
|
U.distanceToPoint(T.origin)
|
|
484
484
|
);
|
|
485
|
-
o =
|
|
486
|
-
|
|
487
|
-
|
|
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
|
|
499
|
-
|
|
498
|
+
const f = Math.max(
|
|
499
|
+
s.near,
|
|
500
500
|
N.distanceToPoint(T.origin)
|
|
501
501
|
);
|
|
502
|
-
h =
|
|
503
|
-
|
|
504
|
-
|
|
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,
|
|
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
|
-
`,
|
|
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;
|
|
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
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
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({},
|
|
688
|
+
super(q(L({}, I), {
|
|
688
689
|
uniforms: {
|
|
689
690
|
lineWidth: { value: e },
|
|
690
|
-
color: { value: new
|
|
691
|
-
opacity: { value:
|
|
692
|
-
map: { value:
|
|
693
|
-
useMap: { value:
|
|
694
|
-
resolution: { value:
|
|
695
|
-
sizeAttenuation: { value:
|
|
696
|
-
offset: { value:
|
|
697
|
-
offsetLoop: { value:
|
|
698
|
-
dashArray: { value:
|
|
699
|
-
dashOffset: { value:
|
|
700
|
-
dashRatio: { value:
|
|
701
|
-
useDash: { value:
|
|
702
|
-
scaleDown: { value:
|
|
703
|
-
alphaTest: { value:
|
|
704
|
-
alphaMap: { value:
|
|
705
|
-
useAlphaMap: { value:
|
|
706
|
-
repeat: { value:
|
|
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:
|
|
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
|
|
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
|
|
742
|
-
return
|
|
749
|
+
function de(n, t) {
|
|
750
|
+
return n.map((e) => {
|
|
743
751
|
const i = [];
|
|
744
|
-
let
|
|
752
|
+
let s;
|
|
745
753
|
return e.forEach((a) => {
|
|
746
|
-
if (
|
|
747
|
-
const l = Ft(a,
|
|
754
|
+
if (s) {
|
|
755
|
+
const l = Ft(a, s) * 180 / Math.PI;
|
|
748
756
|
if (l > t) {
|
|
749
|
-
const r = qt(
|
|
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(
|
|
763
|
+
i.push(s = a);
|
|
756
764
|
}), i;
|
|
757
765
|
});
|
|
758
766
|
}
|
|
759
|
-
function he(
|
|
760
|
-
const a = Math.round(
|
|
761
|
-
|
|
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
|
-
],
|
|
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
|
-
|
|
774
|
+
f(m) && p.push([m, c(u)]);
|
|
767
775
|
}
|
|
768
776
|
return p;
|
|
769
777
|
}
|
|
770
|
-
function Z(
|
|
771
|
-
return e ? $t(t,
|
|
778
|
+
function Z(n, t, e = !1) {
|
|
779
|
+
return e ? $t(t, n) : Ht(n, t);
|
|
772
780
|
}
|
|
773
|
-
function pe(
|
|
774
|
-
const e = { type: "Polygon", coordinates:
|
|
775
|
-
if (Math.min(Math.abs(a - i), Math.abs(l -
|
|
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 ||
|
|
785
|
+
const r = i > a || l >= 89 || s <= -89;
|
|
778
786
|
return he(t, {
|
|
779
787
|
minLng: i,
|
|
780
788
|
maxLng: a,
|
|
781
|
-
minLat:
|
|
789
|
+
minLat: s,
|
|
782
790
|
maxLat: l
|
|
783
791
|
}).filter(
|
|
784
792
|
(c) => Z(c, e, r)
|
|
785
793
|
);
|
|
786
794
|
}
|
|
787
|
-
function me(
|
|
788
|
-
const
|
|
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
|
|
794
|
-
r.map(([
|
|
801
|
+
const y = te(r).triangles(), x = new Map(
|
|
802
|
+
r.map(([A, C], _) => [`${A}-${C}`, _])
|
|
795
803
|
);
|
|
796
|
-
|
|
797
|
-
const
|
|
798
|
-
if (
|
|
799
|
-
const V = `${
|
|
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((
|
|
803
|
-
const
|
|
810
|
+
if (_.some((P) => P < a.length)) {
|
|
811
|
+
const P = A.properties.circumcenter;
|
|
804
812
|
if (!Z(
|
|
805
|
-
|
|
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
|
|
816
|
-
for (let x = 0,
|
|
817
|
-
const
|
|
818
|
-
if (
|
|
819
|
-
const
|
|
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
|
-
|
|
831
|
+
P,
|
|
824
832
|
c,
|
|
825
833
|
u
|
|
826
834
|
))
|
|
827
835
|
continue;
|
|
828
836
|
}
|
|
829
|
-
m.push(...
|
|
837
|
+
m.push(...C);
|
|
830
838
|
}
|
|
831
839
|
} else {
|
|
832
|
-
const { vertices:
|
|
833
|
-
m = Yt(
|
|
840
|
+
const { vertices: y, holes: x = [] } = Ct(s);
|
|
841
|
+
m = Yt(y, x, 2);
|
|
834
842
|
}
|
|
835
|
-
let
|
|
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 [
|
|
838
|
-
|
|
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(
|
|
848
|
+
const w = pt(d, [0, 1]), I = pt(v, [0, 1]), S = r.map(([y, x]) => {
|
|
841
849
|
if (i) {
|
|
842
|
-
const [
|
|
843
|
-
return [w(
|
|
850
|
+
const [A, C] = i([y, x]);
|
|
851
|
+
return [w(A), I(-C)];
|
|
844
852
|
} else
|
|
845
|
-
return [w(
|
|
853
|
+
return [w(y), I(x)];
|
|
846
854
|
});
|
|
847
|
-
return { contour:
|
|
855
|
+
return { contour: s, triangles: { points: r, indices: m, uvs: S } };
|
|
848
856
|
}
|
|
849
857
|
const Mt = new J().setAttribute ? "setAttribute" : "addAttribute";
|
|
850
|
-
function $(
|
|
851
|
-
const
|
|
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(
|
|
868
|
+
return Ct(s);
|
|
861
869
|
}
|
|
862
|
-
function ve(
|
|
870
|
+
function ve(n, t, e, i, s) {
|
|
863
871
|
const { vertices: a, holes: l } = $(
|
|
864
|
-
|
|
872
|
+
n,
|
|
865
873
|
t,
|
|
866
874
|
i,
|
|
867
|
-
|
|
875
|
+
s
|
|
868
876
|
), { vertices: r } = $(
|
|
869
|
-
|
|
877
|
+
n,
|
|
870
878
|
e,
|
|
871
879
|
i,
|
|
872
|
-
|
|
880
|
+
s
|
|
873
881
|
), c = tt([r, a]), o = Math.round(r.length / 3), h = new Set(l);
|
|
874
|
-
let
|
|
882
|
+
let f = 0;
|
|
875
883
|
const p = [];
|
|
876
884
|
for (let m = 0; m < o; m++) {
|
|
877
|
-
let
|
|
878
|
-
if (
|
|
879
|
-
|
|
880
|
-
else if (h.has(
|
|
881
|
-
const v =
|
|
882
|
-
|
|
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,
|
|
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
|
|
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(
|
|
899
|
+
function xt(n, t, e, i, s, a) {
|
|
892
900
|
return {
|
|
893
|
-
indices: i ?
|
|
901
|
+
indices: i ? n.indices : n.indices.slice().reverse(),
|
|
894
902
|
vertices: $(
|
|
895
|
-
[
|
|
903
|
+
[n.points],
|
|
896
904
|
t,
|
|
897
|
-
|
|
905
|
+
s,
|
|
898
906
|
a
|
|
899
907
|
).vertices,
|
|
900
908
|
uvs: e
|
|
901
909
|
};
|
|
902
910
|
}
|
|
903
|
-
const
|
|
904
|
-
polygonGeoJson:
|
|
911
|
+
const ye = ({
|
|
912
|
+
polygonGeoJson: n,
|
|
905
913
|
startHeight: t,
|
|
906
914
|
endHeight: e,
|
|
907
915
|
curvatureResolution: i = 1,
|
|
908
|
-
cartesian:
|
|
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
|
-
|
|
923
|
+
n.forEach((w) => {
|
|
916
924
|
Zt(w) || w.reverse();
|
|
917
925
|
});
|
|
918
|
-
const { contour: h, triangles:
|
|
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
|
-
|
|
936
|
+
s,
|
|
929
937
|
c
|
|
930
938
|
), u = p.topVerts);
|
|
931
939
|
let m = [];
|
|
932
|
-
(l || r) && (m = tt(
|
|
933
|
-
let
|
|
934
|
-
l && (
|
|
935
|
-
|
|
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
|
-
|
|
947
|
+
s,
|
|
940
948
|
c
|
|
941
949
|
));
|
|
942
950
|
let v = {};
|
|
943
951
|
return r && (v = xt(
|
|
944
|
-
|
|
952
|
+
f,
|
|
945
953
|
e,
|
|
946
954
|
m,
|
|
947
955
|
!0,
|
|
948
|
-
|
|
956
|
+
s,
|
|
949
957
|
c
|
|
950
|
-
)), { contour: h, triangles:
|
|
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:
|
|
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:
|
|
976
|
-
let v = [], w = [],
|
|
977
|
-
const
|
|
978
|
-
const x = Math.round(v.length / 3),
|
|
979
|
-
v = v.concat(
|
|
980
|
-
x ?
|
|
981
|
-
), this.addGroup(
|
|
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
|
-
|
|
984
|
-
|
|
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 &&
|
|
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
|
-
|
|
1005
|
+
se as R,
|
|
998
1006
|
mt as a,
|
|
999
|
-
|
|
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=(
|
|
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,
|
|
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
|
|
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={}){
|
|
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;
|