gl-draw 0.16.0-beta.1 → 0.16.0-beta.3
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/WebGPULineSegments2.js +3 -3
- package/dist/WebGPULineSegments2.module.js +234 -233
- package/dist/core/BaseObject/index.d.ts +2 -1
- package/dist/index.js +2 -2
- package/dist/index.module.js +263 -263
- package/dist/objects/index.js +1 -1
- package/dist/objects/index.module.js +32 -32
- package/dist/objects/node/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -2,38 +2,38 @@ var Ct = Object.defineProperty, Pt = Object.defineProperties;
|
|
|
2
2
|
var It = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var k = Object.getOwnPropertySymbols;
|
|
4
4
|
var et = Object.prototype.hasOwnProperty, it = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var
|
|
5
|
+
var st = Math.pow, tt = (n, t, e) => t in n ? Ct(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
|
-
et.call(t, e) && tt(
|
|
7
|
+
et.call(t, e) && tt(n, e, t[e]);
|
|
8
8
|
if (k)
|
|
9
9
|
for (var e of k(t))
|
|
10
|
-
it.call(t, e) && tt(
|
|
11
|
-
return
|
|
12
|
-
}, $ = (
|
|
13
|
-
var
|
|
10
|
+
it.call(t, e) && tt(n, e, t[e]);
|
|
11
|
+
return n;
|
|
12
|
+
}, $ = (n, t) => Pt(n, It(t));
|
|
13
|
+
var nt = (n, t) => {
|
|
14
14
|
var e = {};
|
|
15
|
-
for (var i in
|
|
16
|
-
et.call(
|
|
17
|
-
if (
|
|
18
|
-
for (var i of k(
|
|
19
|
-
t.indexOf(i) < 0 && it.call(
|
|
15
|
+
for (var i in n)
|
|
16
|
+
et.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 && it.call(n, i) && (e[i] = n[i]);
|
|
20
20
|
return e;
|
|
21
21
|
};
|
|
22
|
-
var rt = (
|
|
22
|
+
var rt = (n, t, e) => new Promise((i, s) => {
|
|
23
23
|
var a = (o) => {
|
|
24
24
|
try {
|
|
25
25
|
r(e.next(o));
|
|
26
26
|
} catch (c) {
|
|
27
|
-
|
|
27
|
+
s(c);
|
|
28
28
|
}
|
|
29
|
-
},
|
|
29
|
+
}, l = (o) => {
|
|
30
30
|
try {
|
|
31
31
|
r(e.throw(o));
|
|
32
32
|
} catch (c) {
|
|
33
|
-
|
|
33
|
+
s(c);
|
|
34
34
|
}
|
|
35
|
-
}, r = (o) => o.done ? i(o.value) : Promise.resolve(o.value).then(a,
|
|
36
|
-
r((e = e.apply(
|
|
35
|
+
}, r = (o) => o.done ? i(o.value) : Promise.resolve(o.value).then(a, l);
|
|
36
|
+
r((e = e.apply(n, t)).next());
|
|
37
37
|
});
|
|
38
38
|
import { Material as at, Object3D as N, Texture as ot, BufferGeometry as Z, Float32BufferAttribute as R, PointsMaterial as Dt, Points as J, InstancedMesh as xt, Vector3 as I, Quaternion as Bt, Group as Tt, Mesh as wt, Sprite as ct, Box3 as St, ShaderMaterial as zt, Vector2 as q, Color as lt, Vector4 as O, Matrix4 as _t, Line3 as Et, Sphere as Lt, InstancedInterleavedBuffer as Ot, InterleavedBufferAttribute as ut, MathUtils as Vt } from "three";
|
|
39
39
|
import { CSS2DObject as kt } from "three/examples/jsm/renderers/CSS2DRenderer";
|
|
@@ -75,8 +75,8 @@ class te {
|
|
|
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 ot || Array.isArray(s)) && this.track(s);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
} else this.disposeVideo && t.isVideoTexture && t.source.data && this.resources.add(t.source.data);
|
|
@@ -91,7 +91,7 @@ class te {
|
|
|
91
91
|
}), t.length = 0, this.resources.clear();
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
const ee = (
|
|
94
|
+
const ee = (n, t = 1) => {
|
|
95
95
|
const e = new Z();
|
|
96
96
|
e.setAttribute(
|
|
97
97
|
"position",
|
|
@@ -100,7 +100,7 @@ const ee = (s, t = 1) => {
|
|
|
100
100
|
"scaleAtt",
|
|
101
101
|
new R(new Array(t).fill(1), 1)
|
|
102
102
|
);
|
|
103
|
-
const i =
|
|
103
|
+
const i = n.material, s = new Dt({
|
|
104
104
|
size: 10,
|
|
105
105
|
map: i.map,
|
|
106
106
|
alphaMap: i.alphaMap,
|
|
@@ -113,7 +113,7 @@ const ee = (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,22 +121,22 @@ const ee = (s, t = 1) => {
|
|
|
121
121
|
"gl_PointSize = size * scaleAtt;"
|
|
122
122
|
)}
|
|
123
123
|
`;
|
|
124
|
-
}, new J(e,
|
|
125
|
-
}, ie = (
|
|
124
|
+
}, new J(e, s);
|
|
125
|
+
}, ie = (n, t) => {
|
|
126
126
|
const e = new N();
|
|
127
|
-
t.forEach((i,
|
|
128
|
-
const a = ft(i.position),
|
|
129
|
-
e.position.copy(a), e.scale.copy(
|
|
127
|
+
t.forEach((i, s) => {
|
|
128
|
+
const a = ft(i.position), l = ft(i.scale || [1, 1, 1]);
|
|
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 c =
|
|
135
|
-
r.decompose(h,
|
|
131
|
+
if (n instanceof xt || n.isInstantiate)
|
|
132
|
+
n.setMatrixAt(s, r);
|
|
133
|
+
else if (n instanceof J || n.type === "Points") {
|
|
134
|
+
const c = n.geometry, f = c.attributes.position.array, d = c.attributes.scaleAtt.array, h = new I(), u = new I(), m = new Bt(), p = s * 3, v = s * 1;
|
|
135
|
+
r.decompose(h, m, u), f[p] = h.x, f[p + 1] = h.y, f[p + 2] = h.z, d[v] = Math.max(u.x, u.y, u.z), c.attributes.position.needsUpdate = !0, c.attributes.scaleAtt.needsUpdate = !0;
|
|
136
136
|
}
|
|
137
137
|
});
|
|
138
138
|
};
|
|
139
|
-
class
|
|
139
|
+
class se {
|
|
140
140
|
constructor() {
|
|
141
141
|
this.onPointerIndex = [];
|
|
142
142
|
}
|
|
@@ -165,7 +165,7 @@ class ne {
|
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
class
|
|
168
|
+
class ne extends se {
|
|
169
169
|
constructor() {
|
|
170
170
|
super(...arguments), this.userData = {}, this.materialList = {}, this.useMaterialType = "origin", this.disposeMaterialIfNotUsed = !0;
|
|
171
171
|
}
|
|
@@ -176,16 +176,16 @@ class se extends ne {
|
|
|
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 se extends ne {
|
|
|
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 se extends ne {
|
|
|
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)
|
|
@@ -223,9 +223,9 @@ class se extends ne {
|
|
|
223
223
|
);
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
|
-
class pt extends
|
|
226
|
+
class pt extends ne {
|
|
227
227
|
constructor() {
|
|
228
|
-
super(...arguments), this.objectType = "BaseObject", this.userData = {}, this.
|
|
228
|
+
super(...arguments), this.objectType = "BaseObject", this.userData = {}, this.isPrefab = !1, this.isInstantiate = !1, this.isBloom = !1, this.isBaseObject = !0, this.disposeTrack = !0;
|
|
229
229
|
}
|
|
230
230
|
get parent() {
|
|
231
231
|
const t = this.object3d.parent;
|
|
@@ -334,19 +334,19 @@ class pt extends se {
|
|
|
334
334
|
}
|
|
335
335
|
instantiate(t) {
|
|
336
336
|
return rt(this, null, function* () {
|
|
337
|
-
var
|
|
338
|
-
const e = (
|
|
339
|
-
let
|
|
340
|
-
|
|
341
|
-
var
|
|
337
|
+
var o, c;
|
|
338
|
+
const e = (o = t == null ? void 0 : t.recursive) != null ? o : !0, i = (c = t == null ? void 0 : t.cloneMaterial) != null ? c : !1, { objectType: s, objectOptions: a } = this;
|
|
339
|
+
let l = t == null ? void 0 : t.create;
|
|
340
|
+
l === void 0 && (l = (f) => {
|
|
341
|
+
var d;
|
|
342
342
|
if (this.object3d) {
|
|
343
|
-
if ((
|
|
344
|
-
const
|
|
343
|
+
if ((d = t == null ? void 0 : t.instancedAttr) != null && d.length) {
|
|
344
|
+
const h = t.instancedAttr.length;
|
|
345
345
|
if (this.object3d instanceof ct)
|
|
346
|
-
f.object3d = ee(this.object3d,
|
|
346
|
+
f.object3d = ee(this.object3d, h);
|
|
347
347
|
else {
|
|
348
|
-
const
|
|
349
|
-
f.object3d = new xt(
|
|
348
|
+
const u = this.object3d, m = i ? this.cloneMaterial() : u.material;
|
|
349
|
+
f.object3d = new xt(u.geometry, m, h);
|
|
350
350
|
}
|
|
351
351
|
ie(f.object3d, t == null ? void 0 : t.instancedAttr);
|
|
352
352
|
} else
|
|
@@ -354,19 +354,20 @@ class pt extends se {
|
|
|
354
354
|
f.object3d.userData.prefab && delete f.object3d.userData.prefab;
|
|
355
355
|
}
|
|
356
356
|
});
|
|
357
|
-
const
|
|
358
|
-
create:
|
|
357
|
+
const r = yield this.lead.draw(s, $(L({}, a || {}), {
|
|
358
|
+
create: l,
|
|
359
359
|
prefab: !1,
|
|
360
360
|
key: (t == null ? void 0 : t.key) || (a == null ? void 0 : a.key),
|
|
361
361
|
target: (t == null ? void 0 : t.target) || (a == null ? void 0 : a.target)
|
|
362
362
|
}));
|
|
363
|
-
return this.isBloom &&
|
|
363
|
+
return this.isBloom && r.enableBloom(), e && (yield Promise.all(
|
|
364
364
|
this.children.map(
|
|
365
365
|
(f) => f.instantiate({
|
|
366
|
-
|
|
366
|
+
cloneMaterial: i,
|
|
367
|
+
target: r
|
|
367
368
|
})
|
|
368
369
|
)
|
|
369
|
-
)),
|
|
370
|
+
)), r.isInstantiate = !0, r;
|
|
370
371
|
});
|
|
371
372
|
}
|
|
372
373
|
erase() {
|
|
@@ -390,62 +391,62 @@ class pt extends se {
|
|
|
390
391
|
}
|
|
391
392
|
}
|
|
392
393
|
}
|
|
393
|
-
function re(
|
|
394
|
-
return
|
|
394
|
+
function re(n, t) {
|
|
395
|
+
return n.map((e) => {
|
|
395
396
|
const i = [];
|
|
396
|
-
let
|
|
397
|
+
let s;
|
|
397
398
|
return e.forEach((a) => {
|
|
398
|
-
if (
|
|
399
|
-
const
|
|
400
|
-
if (
|
|
401
|
-
const r = Gt(
|
|
399
|
+
if (s) {
|
|
400
|
+
const l = Rt(a, s) * 180 / Math.PI;
|
|
401
|
+
if (l > t) {
|
|
402
|
+
const r = Gt(s, a), o = 1 / Math.ceil(l / t);
|
|
402
403
|
let c = o;
|
|
403
404
|
for (; c < 1; )
|
|
404
405
|
i.push(r(c)), c += o;
|
|
405
406
|
}
|
|
406
407
|
}
|
|
407
|
-
i.push(
|
|
408
|
+
i.push(s = a);
|
|
408
409
|
}), i;
|
|
409
410
|
});
|
|
410
411
|
}
|
|
411
|
-
function ae(
|
|
412
|
-
const a = Math.round(
|
|
413
|
-
|
|
412
|
+
function ae(n, { minLng: t, maxLng: e, minLat: i, maxLat: s } = {}) {
|
|
413
|
+
const a = Math.round(st(360 / n, 2) / Math.PI), l = (1 + Math.sqrt(5)) / 2, r = (u) => u / l * 360 % 360 - 180, o = (u) => Math.acos(2 * u / a - 1) / Math.PI * 180 - 90, c = (u) => a * (Math.cos((u + 90) * Math.PI / 180) + 1) / 2, f = [
|
|
414
|
+
s !== void 0 ? Math.ceil(c(s)) : 0,
|
|
414
415
|
i !== void 0 ? Math.floor(c(i)) : a - 1
|
|
415
|
-
],
|
|
416
|
-
for (let
|
|
417
|
-
const
|
|
418
|
-
|
|
416
|
+
], 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, h = [];
|
|
417
|
+
for (let u = f[0]; u <= f[1]; u++) {
|
|
418
|
+
const m = r(u);
|
|
419
|
+
d(m) && h.push([m, o(u)]);
|
|
419
420
|
}
|
|
420
421
|
return h;
|
|
421
422
|
}
|
|
422
|
-
function Y(
|
|
423
|
-
return e ? Nt(t,
|
|
423
|
+
function Y(n, t, e = !1) {
|
|
424
|
+
return e ? Nt(t, n) : Xt(n, t);
|
|
424
425
|
}
|
|
425
|
-
function oe(
|
|
426
|
-
const e = { type: "Polygon", coordinates:
|
|
427
|
-
if (Math.min(Math.abs(a - i), Math.abs(
|
|
426
|
+
function oe(n, t) {
|
|
427
|
+
const e = { type: "Polygon", coordinates: n }, [[i, s], [a, l]] = jt(e);
|
|
428
|
+
if (Math.min(Math.abs(a - i), Math.abs(l - s)) < t)
|
|
428
429
|
return [];
|
|
429
|
-
const r = i > a ||
|
|
430
|
+
const r = i > a || l >= 89 || s <= -89;
|
|
430
431
|
return ae(t, {
|
|
431
432
|
minLng: i,
|
|
432
433
|
maxLng: a,
|
|
433
|
-
minLat:
|
|
434
|
-
maxLat:
|
|
434
|
+
minLat: s,
|
|
435
|
+
maxLat: l
|
|
435
436
|
}).filter(
|
|
436
437
|
(o) => Y(o, e, r)
|
|
437
438
|
);
|
|
438
439
|
}
|
|
439
|
-
function ce(
|
|
440
|
-
const
|
|
440
|
+
function ce(n, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
441
|
+
const s = re(n, t), a = H(s), l = oe(n, t), r = [...a, ...l], o = { type: "Polygon", coordinates: n }, [[c, f], [d, h]] = jt(o), u = c > d || // crosses antimeridian
|
|
441
442
|
h >= 89 || // crosses north pole
|
|
442
|
-
|
|
443
|
-
let
|
|
444
|
-
if (
|
|
445
|
-
const
|
|
443
|
+
f <= -89;
|
|
444
|
+
let m = [];
|
|
445
|
+
if (u) {
|
|
446
|
+
const g = Yt(r).triangles(), x = new Map(
|
|
446
447
|
r.map(([A, C], _) => [`${A}-${C}`, _])
|
|
447
448
|
);
|
|
448
|
-
|
|
449
|
+
g.features.forEach((A) => {
|
|
449
450
|
const C = A.geometry.coordinates[0].slice(0, 3).reverse(), _ = [];
|
|
450
451
|
if (C.forEach(([P, F]) => {
|
|
451
452
|
const V = `${P}-${F}`;
|
|
@@ -456,17 +457,17 @@ function ce(s, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
456
457
|
if (!Y(
|
|
457
458
|
P,
|
|
458
459
|
o,
|
|
459
|
-
|
|
460
|
+
u
|
|
460
461
|
))
|
|
461
462
|
return;
|
|
462
463
|
}
|
|
463
|
-
|
|
464
|
+
m.push(..._);
|
|
464
465
|
}
|
|
465
466
|
});
|
|
466
|
-
} else if (
|
|
467
|
-
const
|
|
468
|
-
for (let x = 0, A =
|
|
469
|
-
const C = [2, 1, 0].map((P) =>
|
|
467
|
+
} else if (l.length) {
|
|
468
|
+
const g = Qt.from(r);
|
|
469
|
+
for (let x = 0, A = g.triangles.length; x < A; x += 3) {
|
|
470
|
+
const C = [2, 1, 0].map((P) => g.triangles[x + P]), _ = C.map((P) => r[P]);
|
|
470
471
|
if (C.some((P) => P < a.length)) {
|
|
471
472
|
const P = [0, 1].map(
|
|
472
473
|
(F) => $t(_, (V) => V[F])
|
|
@@ -474,132 +475,132 @@ function ce(s, { resolution: t = 1 / 0, bbox: e, projection: i } = {}) {
|
|
|
474
475
|
if (!Y(
|
|
475
476
|
P,
|
|
476
477
|
o,
|
|
477
|
-
|
|
478
|
+
u
|
|
478
479
|
))
|
|
479
480
|
continue;
|
|
480
481
|
}
|
|
481
|
-
|
|
482
|
+
m.push(...C);
|
|
482
483
|
}
|
|
483
484
|
} else {
|
|
484
|
-
const { vertices:
|
|
485
|
-
|
|
485
|
+
const { vertices: g, holes: x = [] } = At(s);
|
|
486
|
+
m = qt(g, x, 2);
|
|
486
487
|
}
|
|
487
|
-
let
|
|
488
|
+
let p = e ? [e[0], e[2]] : dt(r, (g) => g[0]), v = e ? [e[1], e[3]] : dt(r, (g) => g[1]);
|
|
488
489
|
if (i) {
|
|
489
|
-
const [
|
|
490
|
-
|
|
490
|
+
const [g, x] = i([p[0], v[0]]), [A, C] = i([p[1], v[1]]);
|
|
491
|
+
p = [g, A], v = [-x, -C];
|
|
491
492
|
}
|
|
492
|
-
const w = ht(
|
|
493
|
+
const w = ht(p, [0, 1]), S = ht(v, [0, 1]), D = r.map(([g, x]) => {
|
|
493
494
|
if (i) {
|
|
494
|
-
const [A, C] = i([
|
|
495
|
+
const [A, C] = i([g, x]);
|
|
495
496
|
return [w(A), S(-C)];
|
|
496
497
|
} else
|
|
497
|
-
return [w(
|
|
498
|
+
return [w(g), S(x)];
|
|
498
499
|
});
|
|
499
|
-
return { contour:
|
|
500
|
+
return { contour: s, triangles: { points: r, indices: m, uvs: D } };
|
|
500
501
|
}
|
|
501
502
|
const mt = new Z().setAttribute ? "setAttribute" : "addAttribute";
|
|
502
|
-
function G(
|
|
503
|
-
const
|
|
504
|
-
(a) => a.map(([
|
|
503
|
+
function G(n, t, e, i) {
|
|
504
|
+
const s = n.map(
|
|
505
|
+
(a) => a.map(([l, r]) => {
|
|
505
506
|
if (i) {
|
|
506
|
-
const [o, c] = i([
|
|
507
|
+
const [o, c] = i([l, r]);
|
|
507
508
|
return [o, -c, t];
|
|
508
509
|
}
|
|
509
|
-
return e ? Ft(
|
|
510
|
+
return e ? Ft(l, r, t) : [l, r, t];
|
|
510
511
|
})
|
|
511
512
|
);
|
|
512
|
-
return At(
|
|
513
|
+
return At(s);
|
|
513
514
|
}
|
|
514
|
-
function le(
|
|
515
|
-
const { vertices: a, holes:
|
|
516
|
-
|
|
515
|
+
function le(n, t, e, i, s) {
|
|
516
|
+
const { vertices: a, holes: l } = G(
|
|
517
|
+
n,
|
|
517
518
|
t,
|
|
518
519
|
i,
|
|
519
|
-
|
|
520
|
+
s
|
|
520
521
|
), { vertices: r } = G(
|
|
521
|
-
|
|
522
|
+
n,
|
|
522
523
|
e,
|
|
523
524
|
i,
|
|
524
|
-
|
|
525
|
-
), o = H([r, a]), c = Math.round(r.length / 3),
|
|
526
|
-
let
|
|
525
|
+
s
|
|
526
|
+
), o = H([r, a]), c = Math.round(r.length / 3), f = new Set(l);
|
|
527
|
+
let d = 0;
|
|
527
528
|
const h = [];
|
|
528
|
-
for (let
|
|
529
|
-
let
|
|
530
|
-
if (
|
|
531
|
-
|
|
532
|
-
else if (
|
|
533
|
-
const v =
|
|
534
|
-
|
|
529
|
+
for (let m = 0; m < c; m++) {
|
|
530
|
+
let p = m + 1;
|
|
531
|
+
if (p === c)
|
|
532
|
+
p = d;
|
|
533
|
+
else if (f.has(p)) {
|
|
534
|
+
const v = p;
|
|
535
|
+
p = d, d = v;
|
|
535
536
|
}
|
|
536
|
-
h.push(
|
|
537
|
+
h.push(m, m + c, p + c), h.push(p + c, p, m);
|
|
537
538
|
}
|
|
538
|
-
const
|
|
539
|
-
for (let
|
|
540
|
-
for (let
|
|
541
|
-
return { indices: h, vertices: o, uvs:
|
|
539
|
+
const u = [];
|
|
540
|
+
for (let m = 1; m >= 0; m--)
|
|
541
|
+
for (let p = 0; p < c; p += 1) u.push(p / (c - 1), m);
|
|
542
|
+
return { indices: h, vertices: o, uvs: u, topVerts: r };
|
|
542
543
|
}
|
|
543
|
-
function vt(
|
|
544
|
+
function vt(n, t, e, i, s, a) {
|
|
544
545
|
return {
|
|
545
|
-
indices: i ?
|
|
546
|
+
indices: i ? n.indices : n.indices.slice().reverse(),
|
|
546
547
|
vertices: G(
|
|
547
|
-
[
|
|
548
|
+
[n.points],
|
|
548
549
|
t,
|
|
549
|
-
|
|
550
|
+
s,
|
|
550
551
|
a
|
|
551
552
|
).vertices,
|
|
552
553
|
uvs: e
|
|
553
554
|
};
|
|
554
555
|
}
|
|
555
556
|
const ue = ({
|
|
556
|
-
polygonGeoJson:
|
|
557
|
+
polygonGeoJson: n,
|
|
557
558
|
startHeight: t,
|
|
558
559
|
endHeight: e,
|
|
559
560
|
curvatureResolution: i = 1,
|
|
560
|
-
cartesian:
|
|
561
|
+
cartesian: s = !0,
|
|
561
562
|
hasSide: a = !0,
|
|
562
|
-
hasBottom:
|
|
563
|
+
hasBottom: l = !1,
|
|
563
564
|
hasTop: r = !1,
|
|
564
565
|
projection: o,
|
|
565
566
|
bbox: c
|
|
566
567
|
}) => {
|
|
567
|
-
|
|
568
|
+
n.forEach((w) => {
|
|
568
569
|
Kt(w) || w.reverse();
|
|
569
570
|
});
|
|
570
|
-
const { contour:
|
|
571
|
+
const { contour: f, triangles: d } = ce(n, {
|
|
571
572
|
resolution: i,
|
|
572
573
|
bbox: c,
|
|
573
574
|
projection: o
|
|
574
575
|
});
|
|
575
|
-
let h = {},
|
|
576
|
+
let h = {}, u;
|
|
576
577
|
a && (h = le(
|
|
577
|
-
|
|
578
|
+
f,
|
|
578
579
|
t != null ? t : e,
|
|
579
580
|
e != null ? e : t,
|
|
580
|
-
|
|
581
|
+
s,
|
|
581
582
|
o
|
|
582
|
-
),
|
|
583
|
-
let
|
|
584
|
-
(
|
|
585
|
-
let
|
|
586
|
-
|
|
587
|
-
|
|
583
|
+
), u = h.topVerts);
|
|
584
|
+
let m = [];
|
|
585
|
+
(l || r) && (m = H(d.uvs));
|
|
586
|
+
let p = {};
|
|
587
|
+
l && (p = vt(
|
|
588
|
+
d,
|
|
588
589
|
t,
|
|
589
|
-
|
|
590
|
+
m,
|
|
590
591
|
!1,
|
|
591
|
-
|
|
592
|
+
s,
|
|
592
593
|
o
|
|
593
594
|
));
|
|
594
595
|
let v = {};
|
|
595
596
|
return r && (v = vt(
|
|
596
|
-
|
|
597
|
+
d,
|
|
597
598
|
e,
|
|
598
|
-
|
|
599
|
+
m,
|
|
599
600
|
!0,
|
|
600
|
-
|
|
601
|
+
s,
|
|
601
602
|
o
|
|
602
|
-
)), { contour:
|
|
603
|
+
)), { contour: f, triangles: d, sideTorso: h, bottomCap: p, topCap: v, topVerts: u };
|
|
603
604
|
};
|
|
604
605
|
class ze extends Z {
|
|
605
606
|
constructor(t, e = {}) {
|
|
@@ -617,27 +618,27 @@ class ze extends Z {
|
|
|
617
618
|
}, e);
|
|
618
619
|
const {
|
|
619
620
|
endHeight: i,
|
|
620
|
-
hasTop:
|
|
621
|
+
hasTop: s,
|
|
621
622
|
topFirst: a,
|
|
622
|
-
hasBottom:
|
|
623
|
+
hasBottom: l,
|
|
623
624
|
hasSide: r,
|
|
624
625
|
cartesian: o,
|
|
625
626
|
userDataRsoOffset: c,
|
|
626
|
-
projection:
|
|
627
|
-
} = this.parameters, { contour:
|
|
627
|
+
projection: f
|
|
628
|
+
} = this.parameters, { contour: d, sideTorso: h, topVerts: u, bottomCap: m, topCap: p } = ue(L({}, this.parameters));
|
|
628
629
|
let v = [], w = [], S = [], D = 0;
|
|
629
|
-
const j = (
|
|
630
|
+
const j = (g) => {
|
|
630
631
|
const x = Math.round(v.length / 3), A = S.length;
|
|
631
|
-
v = v.concat(
|
|
632
|
-
x ?
|
|
632
|
+
v = v.concat(g.vertices), w = w.concat(g.uvs), S = S.concat(
|
|
633
|
+
x ? g.indices.map((C) => C + x) : g.indices
|
|
633
634
|
), this.addGroup(A, S.length - A, D++);
|
|
634
635
|
};
|
|
635
|
-
|
|
636
|
-
|
|
636
|
+
s && a && j(p), r && (j(h), this.userData.topVerts = c ? G(
|
|
637
|
+
d,
|
|
637
638
|
i + c,
|
|
638
639
|
o,
|
|
639
|
-
|
|
640
|
-
).vertices :
|
|
640
|
+
f
|
|
641
|
+
).vertices : u), l && j(m), s && !a && j(p), this.setIndex(S), this[mt]("position", new R(v, 3)), this[mt]("uv", new R(w, 2)), this.computeVertexNormals();
|
|
641
642
|
}
|
|
642
643
|
}
|
|
643
644
|
const fe = `
|
|
@@ -782,20 +783,20 @@ class _e extends zt {
|
|
|
782
783
|
const S = t, {
|
|
783
784
|
lineWidth: e = 1,
|
|
784
785
|
color: i = "#ffffff",
|
|
785
|
-
opacity:
|
|
786
|
+
opacity: s = 1,
|
|
786
787
|
map: a = null,
|
|
787
|
-
dashOffset:
|
|
788
|
+
dashOffset: l = 0,
|
|
788
789
|
dashArray: r = 0,
|
|
789
790
|
dashRatio: o = 0,
|
|
790
791
|
sizeAttenuation: c = !0,
|
|
791
|
-
offsetLoop:
|
|
792
|
-
offset:
|
|
792
|
+
offsetLoop: f = !0,
|
|
793
|
+
offset: d = new q(0, 0),
|
|
793
794
|
scaleDown: h = 0,
|
|
794
|
-
alphaMap:
|
|
795
|
-
alphaTest:
|
|
796
|
-
repeat:
|
|
795
|
+
alphaMap: u = void 0,
|
|
796
|
+
alphaTest: m = 0,
|
|
797
|
+
repeat: p = new q(1, 1),
|
|
797
798
|
resolution: v = new q(1, 1)
|
|
798
|
-
} = S, w =
|
|
799
|
+
} = S, w = nt(S, [
|
|
799
800
|
"lineWidth",
|
|
800
801
|
"color",
|
|
801
802
|
"opacity",
|
|
@@ -816,22 +817,22 @@ class _e extends zt {
|
|
|
816
817
|
uniforms: {
|
|
817
818
|
lineWidth: { value: e },
|
|
818
819
|
color: { value: new lt(i) },
|
|
819
|
-
opacity: { value:
|
|
820
|
+
opacity: { value: s },
|
|
820
821
|
map: { value: a },
|
|
821
822
|
useMap: { value: a ? 1 : 0 },
|
|
822
823
|
resolution: { value: v },
|
|
823
824
|
sizeAttenuation: { value: c ? 1 : 0 },
|
|
824
|
-
offset: { value:
|
|
825
|
-
offsetLoop: { value:
|
|
825
|
+
offset: { value: d },
|
|
826
|
+
offsetLoop: { value: f ? 1 : 0 },
|
|
826
827
|
dashArray: { value: r },
|
|
827
|
-
dashOffset: { value:
|
|
828
|
+
dashOffset: { value: l },
|
|
828
829
|
dashRatio: { value: o },
|
|
829
830
|
useDash: { value: r > 0 ? 1 : 0 },
|
|
830
831
|
scaleDown: { value: h / 10 },
|
|
831
|
-
alphaTest: { value:
|
|
832
|
-
alphaMap: { value:
|
|
833
|
-
useAlphaMap: { value:
|
|
834
|
-
repeat: { value:
|
|
832
|
+
alphaTest: { value: m },
|
|
833
|
+
alphaMap: { value: u },
|
|
834
|
+
useAlphaMap: { value: u ? 1 : 0 },
|
|
835
|
+
repeat: { value: p }
|
|
835
836
|
},
|
|
836
837
|
vertexShader: de,
|
|
837
838
|
fragmentShader: fe
|
|
@@ -885,21 +886,21 @@ class _e extends zt {
|
|
|
885
886
|
this.uniforms.sizeAttenuation.value = t ? 1 : 0;
|
|
886
887
|
}
|
|
887
888
|
}
|
|
888
|
-
const K = new O(),
|
|
889
|
+
const K = new O(), gt = new I(), yt = new I(), y = new O(), b = new O(), B = new O(), Q = new I(), X = new _t(), M = new Et(), bt = new I(), W = new St(), U = new Lt(), T = new O();
|
|
889
890
|
let z, E;
|
|
890
|
-
function Mt(
|
|
891
|
-
return T.set(0, 0, -t, 1).applyMatrix4(
|
|
891
|
+
function Mt(n, t, e) {
|
|
892
|
+
return T.set(0, 0, -t, 1).applyMatrix4(n.projectionMatrix), T.multiplyScalar(1 / T.w), T.x = E / e.width, T.y = E / e.height, T.applyMatrix4(n.projectionMatrixInverse), T.multiplyScalar(1 / T.w), Math.abs(Math.max(T.x, T.y));
|
|
892
893
|
}
|
|
893
|
-
function he(
|
|
894
|
-
const e =
|
|
895
|
-
for (let r = 0, o =
|
|
896
|
-
M.start.fromBufferAttribute(
|
|
897
|
-
const c = new I(),
|
|
898
|
-
z.distanceSqToSegment(M.start, M.end,
|
|
899
|
-
point:
|
|
894
|
+
function he(n, t) {
|
|
895
|
+
const e = n.matrixWorld, i = n.geometry, s = i.attributes.instanceStart, a = i.attributes.instanceEnd, l = Math.min(i.instanceCount, s.count);
|
|
896
|
+
for (let r = 0, o = l; r < o; r++) {
|
|
897
|
+
M.start.fromBufferAttribute(s, r), M.end.fromBufferAttribute(a, r), M.applyMatrix4(e);
|
|
898
|
+
const c = new I(), f = new I();
|
|
899
|
+
z.distanceSqToSegment(M.start, M.end, f, c), f.distanceTo(c) < E * 0.5 && t.push({
|
|
900
|
+
point: f,
|
|
900
901
|
pointOnLine: c,
|
|
901
|
-
distance: z.origin.distanceTo(
|
|
902
|
-
object:
|
|
902
|
+
distance: z.origin.distanceTo(f),
|
|
903
|
+
object: n,
|
|
903
904
|
face: null,
|
|
904
905
|
faceIndex: r,
|
|
905
906
|
uv: null,
|
|
@@ -907,31 +908,31 @@ function he(s, t) {
|
|
|
907
908
|
});
|
|
908
909
|
}
|
|
909
910
|
}
|
|
910
|
-
function pe(
|
|
911
|
-
const i = t.projectionMatrix, a =
|
|
912
|
-
z.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, Q.copy(B), X.multiplyMatrices(t.matrixWorldInverse,
|
|
913
|
-
for (let h = 0,
|
|
914
|
-
if (
|
|
911
|
+
function pe(n, t, e) {
|
|
912
|
+
const i = t.projectionMatrix, a = n.material.resolution, l = n.matrixWorld, r = n.geometry, o = r.attributes.instanceStart, c = r.attributes.instanceEnd, f = Math.min(r.instanceCount, o.count), d = -t.near;
|
|
913
|
+
z.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, Q.copy(B), X.multiplyMatrices(t.matrixWorldInverse, l);
|
|
914
|
+
for (let h = 0, u = f; h < u; h++) {
|
|
915
|
+
if (y.fromBufferAttribute(o, h), b.fromBufferAttribute(c, h), y.w = 1, b.w = 1, y.applyMatrix4(X), b.applyMatrix4(X), y.z > d && b.z > d)
|
|
915
916
|
continue;
|
|
916
|
-
if (
|
|
917
|
-
const D =
|
|
918
|
-
|
|
919
|
-
} else if (b.z >
|
|
920
|
-
const D = b.z -
|
|
921
|
-
b.lerp(
|
|
917
|
+
if (y.z > d) {
|
|
918
|
+
const D = y.z - b.z, j = (y.z - d) / D;
|
|
919
|
+
y.lerp(b, j);
|
|
920
|
+
} else if (b.z > d) {
|
|
921
|
+
const D = b.z - y.z, j = (b.z - d) / D;
|
|
922
|
+
b.lerp(y, j);
|
|
922
923
|
}
|
|
923
|
-
|
|
924
|
-
const
|
|
925
|
-
M.at(
|
|
926
|
-
const v = Vt.lerp(
|
|
924
|
+
y.applyMatrix4(i), b.applyMatrix4(i), y.multiplyScalar(1 / y.w), b.multiplyScalar(1 / b.w), y.x *= a.x / 2, y.y *= a.y / 2, b.x *= a.x / 2, b.y *= a.y / 2, M.start.copy(y), M.start.z = 0, M.end.copy(b), M.end.z = 0;
|
|
925
|
+
const p = M.closestPointToPointParameter(Q, !0);
|
|
926
|
+
M.at(p, bt);
|
|
927
|
+
const v = Vt.lerp(y.z, b.z, p), w = v >= -1 && v <= 1, S = Q.distanceTo(bt) < E * 0.5;
|
|
927
928
|
if (w && S) {
|
|
928
|
-
M.start.fromBufferAttribute(o, h), M.end.fromBufferAttribute(c, h), M.start.applyMatrix4(
|
|
929
|
+
M.start.fromBufferAttribute(o, h), M.end.fromBufferAttribute(c, h), M.start.applyMatrix4(l), M.end.applyMatrix4(l);
|
|
929
930
|
const D = new I(), j = new I();
|
|
930
931
|
z.distanceSqToSegment(M.start, M.end, j, D), e.push({
|
|
931
932
|
point: j,
|
|
932
933
|
pointOnLine: D,
|
|
933
934
|
distance: z.origin.distanceTo(j),
|
|
934
|
-
object:
|
|
935
|
+
object: n,
|
|
935
936
|
face: null,
|
|
936
937
|
faceIndex: h,
|
|
937
938
|
uv: null,
|
|
@@ -946,11 +947,11 @@ class Ee extends wt {
|
|
|
946
947
|
}
|
|
947
948
|
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
948
949
|
computeLineDistances() {
|
|
949
|
-
const t = this.geometry, e = t.attributes.instanceStart, i = t.attributes.instanceEnd,
|
|
950
|
-
for (let
|
|
951
|
-
|
|
950
|
+
const t = this.geometry, e = t.attributes.instanceStart, i = t.attributes.instanceEnd, s = new Float32Array(2 * e.count);
|
|
951
|
+
for (let l = 0, r = 0, o = e.count; l < o; l++, r += 2)
|
|
952
|
+
gt.fromBufferAttribute(e, l), yt.fromBufferAttribute(i, l), s[r] = r === 0 ? 0 : s[r - 1], s[r + 1] = s[r] + gt.distanceTo(yt);
|
|
952
953
|
const a = new Ot(
|
|
953
|
-
|
|
954
|
+
s,
|
|
954
955
|
2,
|
|
955
956
|
1
|
|
956
957
|
);
|
|
@@ -963,46 +964,46 @@ class Ee extends wt {
|
|
|
963
964
|
), this;
|
|
964
965
|
}
|
|
965
966
|
raycast(t, e) {
|
|
966
|
-
const i = this.material.worldUnits,
|
|
967
|
-
|
|
967
|
+
const i = this.material.worldUnits, s = t.camera;
|
|
968
|
+
s === null && !i && console.error(
|
|
968
969
|
'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'
|
|
969
970
|
);
|
|
970
971
|
const a = t.params.Line2 !== void 0 && t.params.Line2.threshold || 0;
|
|
971
972
|
z = t.ray;
|
|
972
|
-
const
|
|
973
|
-
E = o.linewidth + a, r.boundingSphere === null && r.computeBoundingSphere(), U.copy(r.boundingSphere).applyMatrix4(
|
|
973
|
+
const l = this.matrixWorld, r = this.geometry, o = this.material;
|
|
974
|
+
E = o.linewidth + a, r.boundingSphere === null && r.computeBoundingSphere(), U.copy(r.boundingSphere).applyMatrix4(l);
|
|
974
975
|
let c;
|
|
975
976
|
if (i)
|
|
976
977
|
c = E * 0.5;
|
|
977
978
|
else {
|
|
978
|
-
const
|
|
979
|
-
|
|
979
|
+
const d = Math.max(
|
|
980
|
+
s.near,
|
|
980
981
|
U.distanceToPoint(z.origin)
|
|
981
982
|
);
|
|
982
983
|
c = Mt(
|
|
983
|
-
|
|
984
|
-
|
|
984
|
+
s,
|
|
985
|
+
d,
|
|
985
986
|
o.resolution
|
|
986
987
|
);
|
|
987
988
|
}
|
|
988
989
|
if (U.radius += c, z.intersectsSphere(U) === !1)
|
|
989
990
|
return;
|
|
990
|
-
r.boundingBox === null && r.computeBoundingBox(), W.copy(r.boundingBox).applyMatrix4(
|
|
991
|
-
let
|
|
991
|
+
r.boundingBox === null && r.computeBoundingBox(), W.copy(r.boundingBox).applyMatrix4(l);
|
|
992
|
+
let f;
|
|
992
993
|
if (i)
|
|
993
|
-
|
|
994
|
+
f = E * 0.5;
|
|
994
995
|
else {
|
|
995
|
-
const
|
|
996
|
-
|
|
996
|
+
const d = Math.max(
|
|
997
|
+
s.near,
|
|
997
998
|
W.distanceToPoint(z.origin)
|
|
998
999
|
);
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1000
|
+
f = Mt(
|
|
1001
|
+
s,
|
|
1002
|
+
d,
|
|
1002
1003
|
o.resolution
|
|
1003
1004
|
);
|
|
1004
1005
|
}
|
|
1005
|
-
W.expandByScalar(
|
|
1006
|
+
W.expandByScalar(f), z.intersectsBox(W) !== !1 && (i ? he(this, e) : pe(this, s, e));
|
|
1006
1007
|
}
|
|
1007
1008
|
onBeforeRender(t) {
|
|
1008
1009
|
const e = this.material.uniforms;
|