gl-draw 0.17.0-beta.32 → 0.17.0-beta.34
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/core/BaseObject/index.d.ts +12 -0
- package/dist/index.module2.js +93 -73
- package/dist/index2.js +4 -4
- package/package.json +1 -1
|
@@ -30,12 +30,24 @@ export default class BaseObject extends UseMaterial {
|
|
|
30
30
|
add(...object: Object3D[]): void;
|
|
31
31
|
remove(...object: Object3D[]): void;
|
|
32
32
|
get visible(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* 检查是否实际可见(自己和所有祖先都 visible)
|
|
35
|
+
*/
|
|
36
|
+
isActuallyVisible(): boolean;
|
|
33
37
|
create(): void;
|
|
34
38
|
render(): void;
|
|
35
39
|
update(_delta: number, _elapsed: number): void;
|
|
36
40
|
resize(_width: number, _height: number): void;
|
|
37
41
|
show(): this;
|
|
38
42
|
hide(): this;
|
|
43
|
+
/**
|
|
44
|
+
* 递归禁用 layers(不管子级自己的 visible 状态,全部 disable)
|
|
45
|
+
*/
|
|
46
|
+
protected _disableLayersRecursive(): void;
|
|
47
|
+
/**
|
|
48
|
+
* 递归启用 layers(只有自己 visible=true 时才 enable 并继续递归)
|
|
49
|
+
*/
|
|
50
|
+
protected _enableLayersRecursive(): void;
|
|
39
51
|
createGroup(): this;
|
|
40
52
|
createMesh(...args: ConstructorParameters<typeof Mesh>): this;
|
|
41
53
|
createPoints(...args: ConstructorParameters<typeof Points>): this;
|
package/dist/index.module2.js
CHANGED
|
@@ -2,7 +2,7 @@ var Oe = Object.defineProperty, De = Object.defineProperties;
|
|
|
2
2
|
var Te = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var W = Object.getOwnPropertySymbols;
|
|
4
4
|
var se = Object.prototype.hasOwnProperty, re = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var ne = Math.pow, ie = (n, e, t) => e in n ? Oe(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t,
|
|
5
|
+
var ne = Math.pow, ie = (n, e, t) => e in n ? Oe(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, z = (n, e) => {
|
|
6
6
|
for (var t in e || (e = {}))
|
|
7
7
|
se.call(e, t) && ie(n, t, e[t]);
|
|
8
8
|
if (W)
|
|
@@ -35,9 +35,9 @@ var ae = (n, e, t) => new Promise((i, s) => {
|
|
|
35
35
|
}, r = (a) => a.done ? i(a.value) : Promise.resolve(a.value).then(o, c);
|
|
36
36
|
r((t = t.apply(n, e)).next());
|
|
37
37
|
});
|
|
38
|
-
import { merge as H, mean as
|
|
39
|
-
import
|
|
40
|
-
import { Material as le, Object3D as R, Texture as ue, BufferGeometry as ee, Float32BufferAttribute as G, PointsMaterial as
|
|
38
|
+
import { merge as H, mean as Ee, extent as ce } from "d3-array";
|
|
39
|
+
import Le, { flatten as Ce } from "earcut";
|
|
40
|
+
import { Material as le, Object3D as R, Texture as ue, BufferGeometry as ee, Float32BufferAttribute as G, PointsMaterial as ke, Points as te, InstancedMesh as Ae, Vector3 as S, Quaternion as ze, Group as Ve, Mesh as Pe, Sprite as de, Box3 as Ie, ShaderMaterial as Ne, Vector2 as K, Color as he, Vector4 as V, Matrix4 as We, Line3 as _e, Sphere as Ue, InstancedInterleavedBuffer as Re, InterleavedBufferAttribute as fe, MathUtils as Ge } from "three";
|
|
41
41
|
import $e from "@turf/boolean-clockwise";
|
|
42
42
|
import { p as pe, a as Fe } from "./polar2Cartesian.module.js";
|
|
43
43
|
import qe from "delaunator";
|
|
@@ -100,7 +100,7 @@ const st = (n, e = 1) => {
|
|
|
100
100
|
"scaleAtt",
|
|
101
101
|
new G(new Array(e).fill(1), 1)
|
|
102
102
|
);
|
|
103
|
-
const i = n.material, s = new
|
|
103
|
+
const i = n.material, s = new ke({
|
|
104
104
|
size: 10,
|
|
105
105
|
map: i.map,
|
|
106
106
|
alphaMap: i.alphaMap,
|
|
@@ -128,10 +128,10 @@ const st = (n, e = 1) => {
|
|
|
128
128
|
const o = pe(i.position), c = pe(i.scale || [1, 1, 1]);
|
|
129
129
|
t.position.copy(o), t.scale.copy(c), t.updateMatrix();
|
|
130
130
|
const r = t.matrix.clone();
|
|
131
|
-
if (n instanceof
|
|
131
|
+
if (n instanceof Ae || n.isInstantiate)
|
|
132
132
|
n.setMatrixAt(s, r);
|
|
133
133
|
else if (n instanceof te || n.type === "Points") {
|
|
134
|
-
const l = n.geometry, m = l.attributes.position.array, u = l.attributes.scaleAtt.array, f = new S(), d = new S(), p = new
|
|
134
|
+
const l = n.geometry, m = l.attributes.position.array, u = l.attributes.scaleAtt.array, f = new S(), d = new S(), p = new ze(), h = s * 3, v = s * 1;
|
|
135
135
|
r.decompose(f, p, d), m[h] = f.x, m[h + 1] = f.y, m[h + 2] = f.z, u[v] = Math.max(d.x, d.y, d.z), l.attributes.position.needsUpdate = !0, l.attributes.scaleAtt.needsUpdate = !0;
|
|
136
136
|
}
|
|
137
137
|
});
|
|
@@ -266,6 +266,14 @@ class Z extends ot {
|
|
|
266
266
|
get visible() {
|
|
267
267
|
return this.object3d.visible;
|
|
268
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* 检查是否实际可见(自己和所有祖先都 visible)
|
|
271
|
+
*/
|
|
272
|
+
isActuallyVisible() {
|
|
273
|
+
if (!this.object3d.visible) return !1;
|
|
274
|
+
const e = this.parent;
|
|
275
|
+
return e ? e.isActuallyVisible() : !0;
|
|
276
|
+
}
|
|
269
277
|
create() {
|
|
270
278
|
this.createGroup();
|
|
271
279
|
}
|
|
@@ -276,22 +284,34 @@ class Z extends ot {
|
|
|
276
284
|
resize(e, t) {
|
|
277
285
|
}
|
|
278
286
|
show() {
|
|
279
|
-
return this.object3d.visible = !0, this.
|
|
280
|
-
var t;
|
|
281
|
-
(e.visible || e === this) && ((t = e.object3d) == null || t.layers.enable(ve));
|
|
282
|
-
}), this;
|
|
287
|
+
return this.object3d.visible = !0, this.isActuallyVisible() && this._enableLayersRecursive(), this;
|
|
283
288
|
}
|
|
284
289
|
hide() {
|
|
285
|
-
return this.object3d.visible = !1, this.
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
290
|
+
return this.object3d.visible = !1, this._disableLayersRecursive(), this;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* 递归禁用 layers(不管子级自己的 visible 状态,全部 disable)
|
|
294
|
+
*/
|
|
295
|
+
_disableLayersRecursive() {
|
|
296
|
+
var e;
|
|
297
|
+
(e = this.object3d) == null || e.layers.disable(ve), this.children.forEach((t) => {
|
|
298
|
+
t._disableLayersRecursive();
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* 递归启用 layers(只有自己 visible=true 时才 enable 并继续递归)
|
|
303
|
+
*/
|
|
304
|
+
_enableLayersRecursive() {
|
|
305
|
+
var e;
|
|
306
|
+
this.object3d.visible && ((e = this.object3d) == null || e.layers.enable(ve), this.children.forEach((t) => {
|
|
307
|
+
t._enableLayersRecursive();
|
|
308
|
+
}));
|
|
289
309
|
}
|
|
290
310
|
createGroup() {
|
|
291
311
|
return this.object3d = new Ve(), this;
|
|
292
312
|
}
|
|
293
313
|
createMesh(...e) {
|
|
294
|
-
return this.object3d = new
|
|
314
|
+
return this.object3d = new Pe(...e), this;
|
|
295
315
|
}
|
|
296
316
|
createPoints(...e) {
|
|
297
317
|
return this.object3d = new te(...e), this;
|
|
@@ -346,7 +366,7 @@ class Z extends ot {
|
|
|
346
366
|
u.object3d = st(this.object3d, d);
|
|
347
367
|
else {
|
|
348
368
|
const p = this.object3d, h = i ? this.cloneMaterial() : p.material;
|
|
349
|
-
u.object3d = new
|
|
369
|
+
u.object3d = new Ae(
|
|
350
370
|
p.geometry,
|
|
351
371
|
h,
|
|
352
372
|
d
|
|
@@ -357,7 +377,7 @@ class Z extends ot {
|
|
|
357
377
|
u.object3d = this.object3d.clone(!1), i && u.object3d.material && (u.object3d.material = this.cloneMaterial());
|
|
358
378
|
u.object3d.userData.prefab && delete u.object3d.userData.prefab;
|
|
359
379
|
}
|
|
360
|
-
}), r = yield this.lead.draw(s, q(
|
|
380
|
+
}), r = yield this.lead.draw(s, q(z({}, o || {}), {
|
|
361
381
|
create: c,
|
|
362
382
|
prefab: !1,
|
|
363
383
|
keyType: this.keyType,
|
|
@@ -470,16 +490,16 @@ function ut(n, { resolution: e = 1 / 0, bbox: t, projection: i } = {}) {
|
|
|
470
490
|
let p = [];
|
|
471
491
|
if (d) {
|
|
472
492
|
const y = Ze(r).triangles(), x = new Map(
|
|
473
|
-
r.map(([
|
|
493
|
+
r.map(([P, I], L) => [`${P}-${I}`, L])
|
|
474
494
|
);
|
|
475
|
-
y.features.forEach((
|
|
476
|
-
const I =
|
|
495
|
+
y.features.forEach((P) => {
|
|
496
|
+
const I = P.geometry.coordinates[0].slice(0, 3).reverse(), L = [];
|
|
477
497
|
if (I.forEach(([B, F]) => {
|
|
478
498
|
const N = `${B}-${F}`;
|
|
479
|
-
x.has(N) &&
|
|
480
|
-
}),
|
|
481
|
-
if (
|
|
482
|
-
const B =
|
|
499
|
+
x.has(N) && L.push(x.get(N));
|
|
500
|
+
}), L.length === 3) {
|
|
501
|
+
if (L.some((B) => B < o.length)) {
|
|
502
|
+
const B = P.properties.circumcenter;
|
|
483
503
|
if (!J(
|
|
484
504
|
B,
|
|
485
505
|
a,
|
|
@@ -487,16 +507,16 @@ function ut(n, { resolution: e = 1 / 0, bbox: t, projection: i } = {}) {
|
|
|
487
507
|
))
|
|
488
508
|
return;
|
|
489
509
|
}
|
|
490
|
-
p.push(...
|
|
510
|
+
p.push(...L);
|
|
491
511
|
}
|
|
492
512
|
});
|
|
493
513
|
} else if (c.length) {
|
|
494
514
|
const y = qe.from(r);
|
|
495
|
-
for (let x = 0,
|
|
496
|
-
const I = [2, 1, 0].map((B) => y.triangles[x + B]),
|
|
515
|
+
for (let x = 0, P = y.triangles.length; x < P; x += 3) {
|
|
516
|
+
const I = [2, 1, 0].map((B) => y.triangles[x + B]), L = I.map((B) => r[B]);
|
|
497
517
|
if (I.some((B) => B < o.length)) {
|
|
498
518
|
const B = [0, 1].map(
|
|
499
|
-
(F) =>
|
|
519
|
+
(F) => Ee(L, (N) => N[F])
|
|
500
520
|
);
|
|
501
521
|
if (!J(
|
|
502
522
|
B,
|
|
@@ -509,17 +529,17 @@ function ut(n, { resolution: e = 1 / 0, bbox: t, projection: i } = {}) {
|
|
|
509
529
|
}
|
|
510
530
|
} else {
|
|
511
531
|
const { vertices: y, holes: x = [] } = Ce(s);
|
|
512
|
-
p =
|
|
532
|
+
p = Le(y, x, 2);
|
|
513
533
|
}
|
|
514
534
|
let h = t ? [t[0], t[2]] : ce(r, (y) => y[0]), v = t ? [t[1], t[3]] : ce(r, (y) => y[1]);
|
|
515
535
|
if (i) {
|
|
516
|
-
const [y, x] = i([h[0], v[0]]), [
|
|
517
|
-
h = [y,
|
|
536
|
+
const [y, x] = i([h[0], v[0]]), [P, I] = i([h[1], v[1]]);
|
|
537
|
+
h = [y, P], v = [-x, -I];
|
|
518
538
|
}
|
|
519
539
|
const j = me(h, [0, 1]), C = me(v, [0, 1]), O = r.map(([y, x]) => {
|
|
520
540
|
if (i) {
|
|
521
|
-
const [
|
|
522
|
-
return [j(
|
|
541
|
+
const [P, I] = i([y, x]);
|
|
542
|
+
return [j(P), C(-I)];
|
|
523
543
|
} else
|
|
524
544
|
return [j(y), C(x)];
|
|
525
545
|
});
|
|
@@ -628,9 +648,9 @@ const ht = ({
|
|
|
628
648
|
a
|
|
629
649
|
)), { contour: m, triangles: u, sideTorso: f, bottomCap: h, topCap: v, topVerts: d };
|
|
630
650
|
};
|
|
631
|
-
class
|
|
651
|
+
class Et extends ee {
|
|
632
652
|
constructor(e, t = {}) {
|
|
633
|
-
super(), this.type = "PolygonBufferGeometry", this.parameters =
|
|
653
|
+
super(), this.type = "PolygonBufferGeometry", this.parameters = z({
|
|
634
654
|
polygonGeoJson: e,
|
|
635
655
|
startHeight: 0,
|
|
636
656
|
endHeight: 1,
|
|
@@ -651,20 +671,20 @@ class kt extends ee {
|
|
|
651
671
|
cartesian: a,
|
|
652
672
|
userDataRsoOffset: l,
|
|
653
673
|
projection: m
|
|
654
|
-
} = this.parameters, { contour: u, sideTorso: f, topVerts: d, bottomCap: p, topCap: h } = ht(
|
|
674
|
+
} = this.parameters, { contour: u, sideTorso: f, topVerts: d, bottomCap: p, topCap: h } = ht(z({}, this.parameters));
|
|
655
675
|
let v = [], j = [], C = [], O = 0;
|
|
656
|
-
const
|
|
657
|
-
const x = Math.round(v.length / 3),
|
|
676
|
+
const A = (y) => {
|
|
677
|
+
const x = Math.round(v.length / 3), P = C.length;
|
|
658
678
|
v = v.concat(y.vertices), j = j.concat(y.uvs), C = C.concat(
|
|
659
679
|
x ? y.indices.map((I) => I + x) : y.indices
|
|
660
|
-
), this.addGroup(
|
|
680
|
+
), this.addGroup(P, C.length - P, O++);
|
|
661
681
|
};
|
|
662
|
-
s && o &&
|
|
682
|
+
s && o && A(h), r && (A(f), this.userData.topVerts = l ? $(
|
|
663
683
|
u,
|
|
664
684
|
i + l,
|
|
665
685
|
a,
|
|
666
686
|
m
|
|
667
|
-
).vertices : d), c &&
|
|
687
|
+
).vertices : d), c && A(p), s && !o && A(h), this.setIndex(C), this[ye]("position", new G(v, 3)), this[ye]("uv", new G(j, 2)), this.computeVertexNormals();
|
|
668
688
|
}
|
|
669
689
|
}
|
|
670
690
|
const ft = `
|
|
@@ -804,7 +824,7 @@ void main() {
|
|
|
804
824
|
#include <fog_vertex>
|
|
805
825
|
}
|
|
806
826
|
`;
|
|
807
|
-
class
|
|
827
|
+
class Lt extends Ne {
|
|
808
828
|
constructor(e = {}) {
|
|
809
829
|
const C = e, {
|
|
810
830
|
lineWidth: t = 1,
|
|
@@ -839,7 +859,7 @@ class zt extends Ne {
|
|
|
839
859
|
"repeat",
|
|
840
860
|
"resolution"
|
|
841
861
|
]);
|
|
842
|
-
super(q(
|
|
862
|
+
super(q(z({}, j), {
|
|
843
863
|
uniforms: {
|
|
844
864
|
lineWidth: { value: t },
|
|
845
865
|
color: { value: new he(i) },
|
|
@@ -912,20 +932,20 @@ class zt extends Ne {
|
|
|
912
932
|
this.uniforms.sizeAttenuation.value = e ? 1 : 0;
|
|
913
933
|
}
|
|
914
934
|
}
|
|
915
|
-
const Q = new V(), Me = new S(), we = new S(), g = new V(), M = new V(), D = new V(), X = new S(), Y = new We(), w = new
|
|
916
|
-
let
|
|
935
|
+
const Q = new V(), Me = new S(), we = new S(), g = new V(), M = new V(), D = new V(), X = new S(), Y = new We(), w = new _e(), xe = new S(), _ = new Ie(), U = new Ue(), T = new V();
|
|
936
|
+
let E, k;
|
|
917
937
|
function Se(n, e, t) {
|
|
918
|
-
return T.set(0, 0, -e, 1).applyMatrix4(n.projectionMatrix), T.multiplyScalar(1 / T.w), T.x =
|
|
938
|
+
return T.set(0, 0, -e, 1).applyMatrix4(n.projectionMatrix), T.multiplyScalar(1 / T.w), T.x = k / t.width, T.y = k / t.height, T.applyMatrix4(n.projectionMatrixInverse), T.multiplyScalar(1 / T.w), Math.abs(Math.max(T.x, T.y));
|
|
919
939
|
}
|
|
920
940
|
function mt(n, e) {
|
|
921
941
|
const t = n.matrixWorld, i = n.geometry, s = i.attributes.instanceStart, o = i.attributes.instanceEnd, c = Math.min(i.instanceCount, s.count);
|
|
922
942
|
for (let r = 0, a = c; r < a; r++) {
|
|
923
943
|
w.start.fromBufferAttribute(s, r), w.end.fromBufferAttribute(o, r), w.applyMatrix4(t);
|
|
924
944
|
const l = new S(), m = new S();
|
|
925
|
-
|
|
945
|
+
E.distanceSqToSegment(w.start, w.end, m, l), m.distanceTo(l) < k * 0.5 && e.push({
|
|
926
946
|
point: m,
|
|
927
947
|
pointOnLine: l,
|
|
928
|
-
distance:
|
|
948
|
+
distance: E.origin.distanceTo(m),
|
|
929
949
|
object: n,
|
|
930
950
|
face: null,
|
|
931
951
|
faceIndex: r,
|
|
@@ -936,28 +956,28 @@ function mt(n, e) {
|
|
|
936
956
|
}
|
|
937
957
|
function vt(n, e, t) {
|
|
938
958
|
const i = e.projectionMatrix, o = n.material.resolution, c = n.matrixWorld, r = n.geometry, a = r.attributes.instanceStart, l = r.attributes.instanceEnd, m = Math.min(r.instanceCount, a.count), u = -e.near;
|
|
939
|
-
|
|
959
|
+
E.at(1, D), D.w = 1, D.applyMatrix4(e.matrixWorldInverse), D.applyMatrix4(i), D.multiplyScalar(1 / D.w), D.x *= o.x / 2, D.y *= o.y / 2, D.z = 0, X.copy(D), Y.multiplyMatrices(e.matrixWorldInverse, c);
|
|
940
960
|
for (let f = 0, d = m; f < d; f++) {
|
|
941
961
|
if (g.fromBufferAttribute(a, f), M.fromBufferAttribute(l, f), g.w = 1, M.w = 1, g.applyMatrix4(Y), M.applyMatrix4(Y), g.z > u && M.z > u)
|
|
942
962
|
continue;
|
|
943
963
|
if (g.z > u) {
|
|
944
|
-
const O = g.z - M.z,
|
|
945
|
-
g.lerp(M,
|
|
964
|
+
const O = g.z - M.z, A = (g.z - u) / O;
|
|
965
|
+
g.lerp(M, A);
|
|
946
966
|
} else if (M.z > u) {
|
|
947
|
-
const O = M.z - g.z,
|
|
948
|
-
M.lerp(g,
|
|
967
|
+
const O = M.z - g.z, A = (M.z - u) / O;
|
|
968
|
+
M.lerp(g, A);
|
|
949
969
|
}
|
|
950
970
|
g.applyMatrix4(i), M.applyMatrix4(i), g.multiplyScalar(1 / g.w), M.multiplyScalar(1 / M.w), g.x *= o.x / 2, g.y *= o.y / 2, M.x *= o.x / 2, M.y *= o.y / 2, w.start.copy(g), w.start.z = 0, w.end.copy(M), w.end.z = 0;
|
|
951
971
|
const h = w.closestPointToPointParameter(X, !0);
|
|
952
972
|
w.at(h, xe);
|
|
953
|
-
const v = Ge.lerp(g.z, M.z, h), j = v >= -1 && v <= 1, C = X.distanceTo(xe) <
|
|
973
|
+
const v = Ge.lerp(g.z, M.z, h), j = v >= -1 && v <= 1, C = X.distanceTo(xe) < k * 0.5;
|
|
954
974
|
if (j && C) {
|
|
955
975
|
w.start.fromBufferAttribute(a, f), w.end.fromBufferAttribute(l, f), w.start.applyMatrix4(c), w.end.applyMatrix4(c);
|
|
956
|
-
const O = new S(),
|
|
957
|
-
|
|
958
|
-
point:
|
|
976
|
+
const O = new S(), A = new S();
|
|
977
|
+
E.distanceSqToSegment(w.start, w.end, A, O), t.push({
|
|
978
|
+
point: A,
|
|
959
979
|
pointOnLine: O,
|
|
960
|
-
distance:
|
|
980
|
+
distance: E.origin.distanceTo(A),
|
|
961
981
|
object: n,
|
|
962
982
|
face: null,
|
|
963
983
|
faceIndex: f,
|
|
@@ -967,7 +987,7 @@ function vt(n, e, t) {
|
|
|
967
987
|
}
|
|
968
988
|
}
|
|
969
989
|
}
|
|
970
|
-
class
|
|
990
|
+
class kt extends Pe {
|
|
971
991
|
constructor(e = new Je(), t) {
|
|
972
992
|
super(e, t), this.isLineSegments2 = !0, this.type = "LineSegments2";
|
|
973
993
|
}
|
|
@@ -995,16 +1015,16 @@ class Et extends Ae {
|
|
|
995
1015
|
'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'
|
|
996
1016
|
);
|
|
997
1017
|
const o = e.params.Line2 !== void 0 && e.params.Line2.threshold || 0;
|
|
998
|
-
|
|
1018
|
+
E = e.ray;
|
|
999
1019
|
const c = this.matrixWorld, r = this.geometry, a = this.material;
|
|
1000
|
-
|
|
1020
|
+
k = a.linewidth + o, r.boundingSphere === null && r.computeBoundingSphere(), U.copy(r.boundingSphere).applyMatrix4(c);
|
|
1001
1021
|
let l;
|
|
1002
1022
|
if (i)
|
|
1003
|
-
l =
|
|
1023
|
+
l = k * 0.5;
|
|
1004
1024
|
else {
|
|
1005
1025
|
const u = Math.max(
|
|
1006
1026
|
s.near,
|
|
1007
|
-
|
|
1027
|
+
U.distanceToPoint(E.origin)
|
|
1008
1028
|
);
|
|
1009
1029
|
l = Se(
|
|
1010
1030
|
s,
|
|
@@ -1012,16 +1032,16 @@ class Et extends Ae {
|
|
|
1012
1032
|
a.resolution
|
|
1013
1033
|
);
|
|
1014
1034
|
}
|
|
1015
|
-
if (
|
|
1035
|
+
if (U.radius += l, E.intersectsSphere(U) === !1)
|
|
1016
1036
|
return;
|
|
1017
|
-
r.boundingBox === null && r.computeBoundingBox(),
|
|
1037
|
+
r.boundingBox === null && r.computeBoundingBox(), _.copy(r.boundingBox).applyMatrix4(c);
|
|
1018
1038
|
let m;
|
|
1019
1039
|
if (i)
|
|
1020
|
-
m =
|
|
1040
|
+
m = k * 0.5;
|
|
1021
1041
|
else {
|
|
1022
1042
|
const u = Math.max(
|
|
1023
1043
|
s.near,
|
|
1024
|
-
|
|
1044
|
+
_.distanceToPoint(E.origin)
|
|
1025
1045
|
);
|
|
1026
1046
|
m = Se(
|
|
1027
1047
|
s,
|
|
@@ -1029,7 +1049,7 @@ class Et extends Ae {
|
|
|
1029
1049
|
a.resolution
|
|
1030
1050
|
);
|
|
1031
1051
|
}
|
|
1032
|
-
|
|
1052
|
+
_.expandByScalar(m), E.intersectsBox(_) !== !1 && (i ? mt(this, t) : vt(this, s, t));
|
|
1033
1053
|
}
|
|
1034
1054
|
onBeforeRender(e) {
|
|
1035
1055
|
const t = this.material.uniforms;
|
|
@@ -1038,7 +1058,7 @@ class Et extends Ae {
|
|
|
1038
1058
|
}
|
|
1039
1059
|
const b = class b extends Z {
|
|
1040
1060
|
constructor(e) {
|
|
1041
|
-
super(), this.objectType = "Node", this.onNodePointerIndex = [], this.options =
|
|
1061
|
+
super(), this.objectType = "Node", this.onNodePointerIndex = [], this.options = z({
|
|
1042
1062
|
type: "2d"
|
|
1043
1063
|
}, e);
|
|
1044
1064
|
}
|
|
@@ -1087,10 +1107,10 @@ let je = b;
|
|
|
1087
1107
|
export {
|
|
1088
1108
|
be as B,
|
|
1089
1109
|
Tt as I,
|
|
1090
|
-
|
|
1091
|
-
|
|
1110
|
+
kt as L,
|
|
1111
|
+
Lt as M,
|
|
1092
1112
|
je as N,
|
|
1093
|
-
|
|
1113
|
+
Et as P,
|
|
1094
1114
|
it as R,
|
|
1095
1115
|
Z as a,
|
|
1096
1116
|
ht as g
|
package/dist/index2.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var ye=Object.defineProperty,ge=Object.defineProperties;var Me=Object.getOwnPropertyDescriptors;var
|
|
1
|
+
"use strict";var ye=Object.defineProperty,ge=Object.defineProperties;var Me=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var re=Math.pow,te=(n,e,t)=>e in n?ye(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,k=(n,e)=>{for(var t in e||(e={}))ie.call(e,t)&&te(n,t,e[t]);if(W)for(var t of W(e))se.call(e,t)&&te(n,t,e[t]);return n},$=(n,e)=>ge(n,Me(e));var ne=(n,e)=>{var t={};for(var i in n)ie.call(n,i)&&e.indexOf(i)<0&&(t[i]=n[i]);if(n!=null&&W)for(var i of W(n))e.indexOf(i)<0&&se.call(n,i)&&(t[i]=n[i]);return t};var oe=(n,e,t)=>new Promise((i,s)=>{var o=c=>{try{r(t.next(c))}catch(u){s(u)}},l=c=>{try{r(t.throw(c))}catch(u){s(u)}},r=c=>c.done?i(c.value):Promise.resolve(c.value).then(o,l);r((t=t.apply(n,e)).next())});const z=require("d3-array"),Y=require("earcut"),a=require("three"),we=require("@turf/boolean-clockwise"),Z=require("./polar2Cartesian.js"),xe=require("delaunator"),Se=require("@turf/boolean-point-in-polygon"),N=require("d3-geo"),je=require("d3-geo-voronoi"),ae=require("d3-scale"),Ce=require("three/examples/jsm/lines/LineSegmentsGeometry"),Ae=require("three/examples/jsm/renderers/CSS2DRenderer"),ce=require("three/examples/jsm/renderers/CSS3DRenderer");require("d3-geo-projection");const le=0,J=1,Pe=!1;class ve{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 a.Material)return e;if(e instanceof G?(e.disposeTrack&&e.object3d?this.track(e.object3d):this.resources.add(e),Object.values(e.materialList).map(t=>this.track(t))):(e instanceof a.Object3D||Reflect.has(e,"dispose"))&&this.resources.add(e),e instanceof G)e.children.forEach(t=>{t.disposeTrack=!1}),this.track(e.children);else if(e instanceof a.Object3D){const t=e;this.track(t.geometry),this.track(t.material),this.track(t.children)}else if(e instanceof a.Material){for(const i of Object.values(e))i instanceof a.Texture&&this.track(i);const t=e;if(t.uniforms){for(const i of Object.values(t.uniforms))if(i){const s=i.value;(s instanceof a.Texture||Array.isArray(s))&&this.track(s)}}}else this.disposeVideo&&e.isVideoTexture&&e.source.data&&this.resources.add(e.source.data);return e}dispose(){const e=[];for(const t of this.resources)t instanceof a.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 Be=(n,e=1)=>{const t=new a.BufferGeometry;t.setAttribute("position",new a.Float32BufferAttribute(new Array(e*3).fill(0),3)),t.setAttribute("scaleAtt",new a.Float32BufferAttribute(new Array(e).fill(1),1));const i=n.material,s=new a.PointsMaterial({size:10,map:i.map,alphaMap:i.alphaMap,color:i.color,blending:i.blending,depthTest:i.depthTest,depthWrite:!1,opacity:i.opacity,transparent:!0,alphaTest:i.alphaTest,sizeAttenuation:!1});return s.onBeforeCompile=o=>{o.vertexShader=`
|
|
2
2
|
attribute float scaleAtt;
|
|
3
3
|
${o.vertexShader.replace("gl_PointSize = size;","gl_PointSize = size * scaleAtt;")}
|
|
4
|
-
`},new a.Points(t,s)},Ie=(n,e)=>{const t=new a.Object3D;e.forEach((i,s)=>{const o=Z.parseVector3(i.position),l=Z.parseVector3(i.scale||[1,1,1]);t.position.copy(o),t.scale.copy(l),t.updateMatrix();const r=t.matrix.clone();if(n instanceof a.InstancedMesh||n.isInstantiate)n.setMatrixAt(s,r);else if(n instanceof a.Points||n.type==="Points"){const u=n.geometry,v=u.attributes.position.array,d=u.attributes.scaleAtt.array,p=new a.Vector3,h=new a.Vector3,m=new a.Quaternion,f=s*3,b=s*1;r.decompose(p,m,h),v[f]=p.x,v[f+1]=p.y,v[f+2]=p.z,d[b]=Math.max(h.x,h.y,h.z),u.attributes.position.needsUpdate=!0,u.attributes.scaleAtt.needsUpdate=!0}})};class Oe{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const i=this.lead.handlePick([this],e,t);this.onPointerIndex.push(i)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerEnterOnStop(e){this.onPointerEvent("enterOnStop",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 Oe{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(i=>{const s=i.userData;i.userData={};const o=i.clone();return i.userData=s,o});{const i=t.userData;t.userData={};const s=t.clone();return t.userData=i,s}}setMaterialList(e,t){const i=this.object3d;if(!i||!i.material)return;this.materialList.origin||(this.materialList.origin=i.material);const s=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=s,s}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 i=this.mList.get(e);if(!i)return;const s=this.object3d;Array.isArray(s.material)&&t!==void 0?s.material[t]=i:s.material=i}useMListByName(e,t){if(!this.mList)return;const i=this.mList.getKeyByName(e);i&&this.useMListById(i,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class R extends De{constructor(){super(...arguments),this.key="",this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,this.disposeTrack=!0,this.isDispose=!1}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}lookAt(e){const t=e instanceof a.Vector3?e:new a.Vector3(...e);this.object3d.lookAt(t)}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 i;this.lead.objMap.get(t)?(i=this.lead.objMap.get(t))==null||i.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.traverse(e=>{var t;(e.visible||e===this)&&((t=e.object3d)==null||t.layers.enable(le))}),this}hide(){return this.object3d.visible=!1,this.traverse(e=>{var t;(e.visible||e===this)&&((t=e.object3d)==null||t.layers.disable(le))}),this}createGroup(){return this.object3d=new a.Group,this}createMesh(...e){return this.object3d=new a.Mesh(...e),this}createPoints(...e){return this.object3d=new a.Points(...e),this}createCSS2DObject(e){return this.object3d=new Ae.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ce.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ce.CSS3DSprite(e),this}createSprite(e){return this.object3d=new a.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new a.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new a.Vector3),center:e.getCenter(new a.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return oe(this,null,function*(){var u,v;const t=(u=e==null?void 0:e.recursive)!=null?u:!0,i=(v=e==null?void 0:e.cloneMaterial)!=null?v:!1,{objectType:s,objectOptions:o}=this;let l=e==null?void 0:e.create,r,c=(e==null?void 0:e.target)||this.parent;return c===this.lead.prefabGroup&&(c=this.lead.group),this.objectType==="BaseObject"?r=this.lead.createBaseObject(this.object3d.clone(!1),{target:c}):(l===void 0&&(l=d=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const h=e.instancedAttr.length;if(this.object3d instanceof a.Sprite)d.object3d=Be(this.object3d,h);else{const m=this.object3d,f=i?this.cloneMaterial():m.material;d.object3d=new a.InstancedMesh(m.geometry,f,h)}Ie(d.object3d,e==null?void 0:e.instancedAttr)}else d.object3d=this.object3d.clone(!1),i&&d.object3d.material&&(d.object3d.material=this.cloneMaterial());d.object3d.userData.prefab&&delete d.object3d.userData.prefab}}),r=yield this.lead.draw(s,$(z({},o||{}),{create:l,prefab:!1,keyType:this.keyType,key:(e==null?void 0:e.key)||this.keyName,uId:(e==null?void 0:e.uId)||this.keyUId,target:c}))),this.isBloom&&r.enableBloom(),t&&(yield Promise.all(this.children.map(d=>d.instantiate({key:d.keyUId&&d.keyName?`${d.keyName}-${d.keyUId}`:d.keyName,uId:e==null?void 0:e.uId,cloneMaterial:i,target:r})))),r.isInstantiate=!0,r})}erase(){this.lead.erase(this)}handleMaterialChange(e){}enableBloom(e=!0){var t,i,s;if(!((t=this.pencil.composerController)!=null&&t.bloomComposer)){console.warn("err:pencil.options.bloom");return}if(e){this.traverse(o=>{o.enableBloom(!1)});return}this.object3d&&((i=this.pencil.composerController)==null||i.bloomSelection.add(this),this.object3d.layers.enable(J)),(s=this.pencil.composerController)==null||s.checkBloomComposerActive(),this.isBloom=!0}disableBloom(e=!0){var t,i,s;if(!((t=this.pencil.composerController)!=null&&t.bloomComposer)){console.warn("err:pencil.options.bloom");return}if(e){this.traverse(o=>{o.disableBloom(!1)});return}this.object3d&&((i=this.pencil.composerController)==null||i.bloomSelection.delete(this),this.object3d.layers.disable(J)),(s=this.pencil.composerController)==null||s.checkBloomComposerActive(),this.isBloom=!1}dispose(){var e,t;if(!this.isDispose&&(this.isDispose=!0,super.dispose(),this.isBloom&&(this.disableBloom(!1),(e=this.pencil.composerController)==null||e.checkBloomComposerActive()),(t=this.lead)==null||t.disableCursor(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 i=new ve;i.disposeMaterial=!1,i.track(this),i.dispose()}}}function Ve(n,e){return n.map(t=>{const i=[];let s;return t.forEach(o=>{if(s){const l=N.geoDistance(o,s)*180/Math.PI;if(l>e){const r=N.geoInterpolate(s,o),c=1/Math.ceil(l/e);let u=c;for(;u<1;)i.push(r(u)),u+=c}}i.push(s=o)}),i})}function Te(n,{minLng:e,maxLng:t,minLat:i,maxLat:s}={}){const o=Math.round(re(360/n,2)/Math.PI),l=(1+Math.sqrt(5))/2,r=h=>h/l*360%360-180,c=h=>Math.acos(2*h/o-1)/Math.PI*180-90,u=h=>o*(Math.cos((h+90)*Math.PI/180)+1)/2,v=[s!==void 0?Math.ceil(u(s)):0,i!==void 0?Math.floor(u(i)):o-1],d=e===void 0&&t===void 0?()=>!0:e===void 0?h=>h<=t:t===void 0?h=>h>=e:t>=e?h=>h>=e&&h<=t:h=>h>=e||h<=t,p=[];for(let h=v[0];h<=v[1];h++){const m=r(h);d(m)&&p.push([m,c(h)])}return p}function H(n,e,t=!1){return t?N.geoContains(e,n):Se(n,e)}function Ee(n,e){const t={type:"Polygon",coordinates:n},[[i,s],[o,l]]=N.geoBounds(t);if(Math.min(Math.abs(o-i),Math.abs(l-s))<e)return[];const r=i>o||l>=89||s<=-89;return Te(e,{minLng:i,maxLng:o,minLat:s,maxLat:l}).filter(c=>H(c,t,r))}function ke(n,{resolution:e=1/0,bbox:t,projection:i}={}){const s=Ve(n,e),o=L.merge(s),l=Ee(n,e),r=[...o,...l],c={type:"Polygon",coordinates:n},[[u,v],[d,p]]=N.geoBounds(c),h=u>d||p>=89||v<=-89;let m=[];if(h){const g=je.geoVoronoi(r).triangles(),S=new Map(r.map(([P,B],E)=>[`${P}-${B}`,E]));g.features.forEach(P=>{const B=P.geometry.coordinates[0].slice(0,3).reverse(),E=[];if(B.forEach(([I,F])=>{const W=`${I}-${F}`;S.has(W)&&E.push(S.get(W))}),E.length===3){if(E.some(I=>I<o.length)){const I=P.properties.circumcenter;if(!H(I,c,h))return}m.push(...E)}})}else if(l.length){const g=xe.from(r);for(let S=0,P=g.triangles.length;S<P;S+=3){const B=[2,1,0].map(I=>g.triangles[S+I]),E=B.map(I=>r[I]);if(B.some(I=>I<o.length)){const I=[0,1].map(F=>L.mean(E,W=>W[F]));if(!H(I,c,h))continue}m.push(...B)}}else{const{vertices:g,holes:S=[]}=Y.flatten(s);m=Y(g,S,2)}let f=t?[t[0],t[2]]:L.extent(r,g=>g[0]),b=t?[t[1],t[3]]:L.extent(r,g=>g[1]);if(i){const[g,S]=i([f[0],b[0]]),[P,B]=i([f[1],b[1]]);f=[g,P],b=[-S,-B]}const j=ae.scaleLinear(f,[0,1]),C=ae.scaleLinear(b,[0,1]),O=r.map(([g,S])=>{if(i){const[P,B]=i([g,S]);return[j(P),C(-B)]}else return[j(g),C(S)]});return{contour:s,triangles:{points:r,indices:m,uvs:O}}}const ue=new a.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function q(n,e,t,i){const s=n.map(o=>o.map(([l,r])=>{if(i){const[c,u]=i([l,r]);return[c,-u,e]}return t?Z.polar2Cartesian(l,r,e):[l,r,e]}));return Y.flatten(s)}function ze(n,e,t,i,s){const{vertices:o,holes:l}=q(n,e,i,s),{vertices:r}=q(n,t,i,s),c=L.merge([r,o]),u=Math.round(r.length/3),v=new Set(l);let d=0;const p=[];for(let m=0;m<u;m++){let f=m+1;if(f===u)f=d;else if(v.has(f)){const b=f;f=d,d=b}p.push(m,m+u,f+u),p.push(f+u,f,m)}const h=[];for(let m=1;m>=0;m--)for(let f=0;f<u;f+=1)h.push(f/(u-1),m);return{indices:p,vertices:c,uvs:h,topVerts:r}}function de(n,e,t,i,s,o){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:q([n.points],e,s,o).vertices,uvs:t}}const be=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:s=!0,hasSide:o=!0,hasBottom:l=!1,hasTop:r=!1,projection:c,bbox:u})=>{n.forEach(j=>{we(j)||j.reverse()});const{contour:v,triangles:d}=ke(n,{resolution:i,bbox:u,projection:c});let p={},h;o&&(p=ze(v,e!=null?e:t,t!=null?t:e,s,c),h=p.topVerts);let m=[];(l||r)&&(m=L.merge(d.uvs));let f={};l&&(f=de(d,e,m,!1,s,c));let b={};return r&&(b=de(d,t,m,!0,s,c)),{contour:v,triangles:d,sideTorso:p,bottomCap:f,topCap:b,topVerts:h}};class Le extends a.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=z({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:i,hasTop:s,topFirst:o,hasBottom:l,hasSide:r,cartesian:c,userDataRsoOffset:u,projection:v}=this.parameters,{contour:d,sideTorso:p,topVerts:h,bottomCap:m,topCap:f}=be(z({},this.parameters));let b=[],j=[],C=[],O=0;const A=g=>{const S=Math.round(b.length/3),P=C.length;b=b.concat(g.vertices),j=j.concat(g.uvs),C=C.concat(S?g.indices.map(B=>B+S):g.indices),this.addGroup(P,C.length-P,O++)};s&&o&&A(f),r&&(A(p),this.userData.topVerts=u?q(d,i+u,c,v).vertices:h),l&&A(m),s&&!o&&A(f),this.setIndex(C),this[ue]("position",new a.Float32BufferAttribute(b,3)),this[ue]("uv",new a.Float32BufferAttribute(j,2)),this.computeVertexNormals()}}const Ne=`
|
|
4
|
+
`},new a.Points(t,s)},Ie=(n,e)=>{const t=new a.Object3D;e.forEach((i,s)=>{const o=Z.parseVector3(i.position),l=Z.parseVector3(i.scale||[1,1,1]);t.position.copy(o),t.scale.copy(l),t.updateMatrix();const r=t.matrix.clone();if(n instanceof a.InstancedMesh||n.isInstantiate)n.setMatrixAt(s,r);else if(n instanceof a.Points||n.type==="Points"){const u=n.geometry,v=u.attributes.position.array,d=u.attributes.scaleAtt.array,p=new a.Vector3,h=new a.Vector3,m=new a.Quaternion,f=s*3,b=s*1;r.decompose(p,m,h),v[f]=p.x,v[f+1]=p.y,v[f+2]=p.z,d[b]=Math.max(h.x,h.y,h.z),u.attributes.position.needsUpdate=!0,u.attributes.scaleAtt.needsUpdate=!0}})};class Oe{constructor(){this.onPointerIndex=[]}onPointerEvent(e,t){const i=this.lead.handlePick([this],e,t);this.onPointerIndex.push(i)}onClick(e){this.onPointerEvent("click",e)}onPointerEnter(e){this.onPointerEvent("enter",e)}onPointerEnterOnStop(e){this.onPointerEvent("enterOnStop",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 Oe{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(i=>{const s=i.userData;i.userData={};const o=i.clone();return i.userData=s,o});{const i=t.userData;t.userData={};const s=t.clone();return t.userData=i,s}}setMaterialList(e,t){const i=this.object3d;if(!i||!i.material)return;this.materialList.origin||(this.materialList.origin=i.material);const s=t==="clone"?this.cloneMaterial():Array.isArray(t)?t.slice():t;return this.materialList[e]=s,s}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 i=this.mList.get(e);if(!i)return;const s=this.object3d;Array.isArray(s.material)&&t!==void 0?s.material[t]=i:s.material=i}useMListByName(e,t){if(!this.mList)return;const i=this.mList.getKeyByName(e);i&&this.useMListById(i,t)}dispose(){super.dispose(),this.mList.rmBaseObjectMap(this,void 0,this.disposeMaterialIfNotUsed)}}class G extends De{constructor(){super(...arguments),this.key="",this.objectType="BaseObject",this.userData={},this.isPrefab=!1,this.isInstantiate=!1,this.isBloom=!1,this.isBaseObject=!0,this.disposeTrack=!0,this.isDispose=!1}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}lookAt(e){const t=e instanceof a.Vector3?e:new a.Vector3(...e);this.object3d.lookAt(t)}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 i;this.lead.objMap.get(t)?(i=this.lead.objMap.get(t))==null||i.erase():this.object3d.remove(t)})}get visible(){return this.object3d.visible}isActuallyVisible(){if(!this.object3d.visible)return!1;const e=this.parent;return e?e.isActuallyVisible():!0}create(){this.createGroup()}render(){}update(e,t){}resize(e,t){}show(){return this.object3d.visible=!0,this.isActuallyVisible()&&this._enableLayersRecursive(),this}hide(){return this.object3d.visible=!1,this._disableLayersRecursive(),this}_disableLayersRecursive(){var e;(e=this.object3d)==null||e.layers.disable(le),this.children.forEach(t=>{t._disableLayersRecursive()})}_enableLayersRecursive(){var e;this.object3d.visible&&((e=this.object3d)==null||e.layers.enable(le),this.children.forEach(t=>{t._enableLayersRecursive()}))}createGroup(){return this.object3d=new a.Group,this}createMesh(...e){return this.object3d=new a.Mesh(...e),this}createPoints(...e){return this.object3d=new a.Points(...e),this}createCSS2DObject(e){return this.object3d=new Ae.CSS2DObject(e),this}createCSS3DObject(e){return this.object3d=new ce.CSS3DObject(e),this}createCSS3DSprite(e){return this.object3d=new ce.CSS3DSprite(e),this}createSprite(e){return this.object3d=new a.Sprite(e),this}attach(...e){return[...e].forEach(t=>{this.object3d.attach(t.object3d)}),this}getSize(){const e=new a.Box3().setFromObject(this.object3d);return{min:e.min,max:e.max,size:e.getSize(new a.Vector3),center:e.getCenter(new a.Vector3)}}setTop(e){this.object3d&&(this.object3d.renderOrder=e)}traverse(e){e(this),this.children.forEach(t=>{t.traverse(e)})}instantiate(e){return oe(this,null,function*(){var u,v;const t=(u=e==null?void 0:e.recursive)!=null?u:!0,i=(v=e==null?void 0:e.cloneMaterial)!=null?v:!1,{objectType:s,objectOptions:o}=this;let l=e==null?void 0:e.create,r,c=(e==null?void 0:e.target)||this.parent;return c===this.lead.prefabGroup&&(c=this.lead.group),this.objectType==="BaseObject"?r=this.lead.createBaseObject(this.object3d.clone(!1),{target:c}):(l===void 0&&(l=d=>{var p;if(this.object3d){if((p=e==null?void 0:e.instancedAttr)!=null&&p.length){const h=e.instancedAttr.length;if(this.object3d instanceof a.Sprite)d.object3d=Be(this.object3d,h);else{const m=this.object3d,f=i?this.cloneMaterial():m.material;d.object3d=new a.InstancedMesh(m.geometry,f,h)}Ie(d.object3d,e==null?void 0:e.instancedAttr)}else d.object3d=this.object3d.clone(!1),i&&d.object3d.material&&(d.object3d.material=this.cloneMaterial());d.object3d.userData.prefab&&delete d.object3d.userData.prefab}}),r=yield this.lead.draw(s,$(k({},o||{}),{create:l,prefab:!1,keyType:this.keyType,key:(e==null?void 0:e.key)||this.keyName,uId:(e==null?void 0:e.uId)||this.keyUId,target:c}))),this.isBloom&&r.enableBloom(),t&&(yield Promise.all(this.children.map(d=>d.instantiate({key:d.keyUId&&d.keyName?`${d.keyName}-${d.keyUId}`:d.keyName,uId:e==null?void 0:e.uId,cloneMaterial:i,target:r})))),r.isInstantiate=!0,r})}erase(){this.lead.erase(this)}handleMaterialChange(e){}enableBloom(e=!0){var t,i,s;if(!((t=this.pencil.composerController)!=null&&t.bloomComposer)){console.warn("err:pencil.options.bloom");return}if(e){this.traverse(o=>{o.enableBloom(!1)});return}this.object3d&&((i=this.pencil.composerController)==null||i.bloomSelection.add(this),this.object3d.layers.enable(J)),(s=this.pencil.composerController)==null||s.checkBloomComposerActive(),this.isBloom=!0}disableBloom(e=!0){var t,i,s;if(!((t=this.pencil.composerController)!=null&&t.bloomComposer)){console.warn("err:pencil.options.bloom");return}if(e){this.traverse(o=>{o.disableBloom(!1)});return}this.object3d&&((i=this.pencil.composerController)==null||i.bloomSelection.delete(this),this.object3d.layers.disable(J)),(s=this.pencil.composerController)==null||s.checkBloomComposerActive(),this.isBloom=!1}dispose(){var e,t;if(!this.isDispose&&(this.isDispose=!0,super.dispose(),this.isBloom&&(this.disableBloom(!1),(e=this.pencil.composerController)==null||e.checkBloomComposerActive()),(t=this.lead)==null||t.disableCursor(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 i=new ve;i.disposeMaterial=!1,i.track(this),i.dispose()}}}function Ve(n,e){return n.map(t=>{const i=[];let s;return t.forEach(o=>{if(s){const l=N.geoDistance(o,s)*180/Math.PI;if(l>e){const r=N.geoInterpolate(s,o),c=1/Math.ceil(l/e);let u=c;for(;u<1;)i.push(r(u)),u+=c}}i.push(s=o)}),i})}function Te(n,{minLng:e,maxLng:t,minLat:i,maxLat:s}={}){const o=Math.round(re(360/n,2)/Math.PI),l=(1+Math.sqrt(5))/2,r=h=>h/l*360%360-180,c=h=>Math.acos(2*h/o-1)/Math.PI*180-90,u=h=>o*(Math.cos((h+90)*Math.PI/180)+1)/2,v=[s!==void 0?Math.ceil(u(s)):0,i!==void 0?Math.floor(u(i)):o-1],d=e===void 0&&t===void 0?()=>!0:e===void 0?h=>h<=t:t===void 0?h=>h>=e:t>=e?h=>h>=e&&h<=t:h=>h>=e||h<=t,p=[];for(let h=v[0];h<=v[1];h++){const m=r(h);d(m)&&p.push([m,c(h)])}return p}function H(n,e,t=!1){return t?N.geoContains(e,n):Se(n,e)}function Ee(n,e){const t={type:"Polygon",coordinates:n},[[i,s],[o,l]]=N.geoBounds(t);if(Math.min(Math.abs(o-i),Math.abs(l-s))<e)return[];const r=i>o||l>=89||s<=-89;return Te(e,{minLng:i,maxLng:o,minLat:s,maxLat:l}).filter(c=>H(c,t,r))}function Le(n,{resolution:e=1/0,bbox:t,projection:i}={}){const s=Ve(n,e),o=z.merge(s),l=Ee(n,e),r=[...o,...l],c={type:"Polygon",coordinates:n},[[u,v],[d,p]]=N.geoBounds(c),h=u>d||p>=89||v<=-89;let m=[];if(h){const g=je.geoVoronoi(r).triangles(),S=new Map(r.map(([P,B],E)=>[`${P}-${B}`,E]));g.features.forEach(P=>{const B=P.geometry.coordinates[0].slice(0,3).reverse(),E=[];if(B.forEach(([I,F])=>{const _=`${I}-${F}`;S.has(_)&&E.push(S.get(_))}),E.length===3){if(E.some(I=>I<o.length)){const I=P.properties.circumcenter;if(!H(I,c,h))return}m.push(...E)}})}else if(l.length){const g=xe.from(r);for(let S=0,P=g.triangles.length;S<P;S+=3){const B=[2,1,0].map(I=>g.triangles[S+I]),E=B.map(I=>r[I]);if(B.some(I=>I<o.length)){const I=[0,1].map(F=>z.mean(E,_=>_[F]));if(!H(I,c,h))continue}m.push(...B)}}else{const{vertices:g,holes:S=[]}=Y.flatten(s);m=Y(g,S,2)}let f=t?[t[0],t[2]]:z.extent(r,g=>g[0]),b=t?[t[1],t[3]]:z.extent(r,g=>g[1]);if(i){const[g,S]=i([f[0],b[0]]),[P,B]=i([f[1],b[1]]);f=[g,P],b=[-S,-B]}const j=ae.scaleLinear(f,[0,1]),C=ae.scaleLinear(b,[0,1]),O=r.map(([g,S])=>{if(i){const[P,B]=i([g,S]);return[j(P),C(-B)]}else return[j(g),C(S)]});return{contour:s,triangles:{points:r,indices:m,uvs:O}}}const ue=new a.BufferGeometry().setAttribute?"setAttribute":"addAttribute";function q(n,e,t,i){const s=n.map(o=>o.map(([l,r])=>{if(i){const[c,u]=i([l,r]);return[c,-u,e]}return t?Z.polar2Cartesian(l,r,e):[l,r,e]}));return Y.flatten(s)}function ke(n,e,t,i,s){const{vertices:o,holes:l}=q(n,e,i,s),{vertices:r}=q(n,t,i,s),c=z.merge([r,o]),u=Math.round(r.length/3),v=new Set(l);let d=0;const p=[];for(let m=0;m<u;m++){let f=m+1;if(f===u)f=d;else if(v.has(f)){const b=f;f=d,d=b}p.push(m,m+u,f+u),p.push(f+u,f,m)}const h=[];for(let m=1;m>=0;m--)for(let f=0;f<u;f+=1)h.push(f/(u-1),m);return{indices:p,vertices:c,uvs:h,topVerts:r}}function de(n,e,t,i,s,o){return{indices:i?n.indices:n.indices.slice().reverse(),vertices:q([n.points],e,s,o).vertices,uvs:t}}const be=({polygonGeoJson:n,startHeight:e,endHeight:t,curvatureResolution:i=1,cartesian:s=!0,hasSide:o=!0,hasBottom:l=!1,hasTop:r=!1,projection:c,bbox:u})=>{n.forEach(j=>{we(j)||j.reverse()});const{contour:v,triangles:d}=Le(n,{resolution:i,bbox:u,projection:c});let p={},h;o&&(p=ke(v,e!=null?e:t,t!=null?t:e,s,c),h=p.topVerts);let m=[];(l||r)&&(m=z.merge(d.uvs));let f={};l&&(f=de(d,e,m,!1,s,c));let b={};return r&&(b=de(d,t,m,!0,s,c)),{contour:v,triangles:d,sideTorso:p,bottomCap:f,topCap:b,topVerts:h}};class ze extends a.BufferGeometry{constructor(e,t={}){super(),this.type="PolygonBufferGeometry",this.parameters=k({polygonGeoJson:e,startHeight:0,endHeight:1,hasTop:!0,topFirst:!1,hasBottom:!0,hasSide:!0,curvatureResolution:1,cartesian:!0,userDataRsoOffset:0},t);const{endHeight:i,hasTop:s,topFirst:o,hasBottom:l,hasSide:r,cartesian:c,userDataRsoOffset:u,projection:v}=this.parameters,{contour:d,sideTorso:p,topVerts:h,bottomCap:m,topCap:f}=be(k({},this.parameters));let b=[],j=[],C=[],O=0;const A=g=>{const S=Math.round(b.length/3),P=C.length;b=b.concat(g.vertices),j=j.concat(g.uvs),C=C.concat(S?g.indices.map(B=>B+S):g.indices),this.addGroup(P,C.length-P,O++)};s&&o&&A(f),r&&(A(p),this.userData.topVerts=u?q(d,i+u,c,v).vertices:h),l&&A(m),s&&!o&&A(f),this.setIndex(C),this[ue]("position",new a.Float32BufferAttribute(b,3)),this[ue]("uv",new a.Float32BufferAttribute(j,2)),this.computeVertexNormals()}}const Ne=`
|
|
5
5
|
#include <fog_pars_fragment>
|
|
6
6
|
#include <logdepthbuf_pars_fragment>
|
|
7
7
|
|
|
@@ -45,7 +45,7 @@ void main() {
|
|
|
45
45
|
#include <tonemapping_fragment>
|
|
46
46
|
#include <colorspace_fragment>
|
|
47
47
|
}
|
|
48
|
-
`,
|
|
48
|
+
`,_e=`
|
|
49
49
|
#include <common>
|
|
50
50
|
#include <logdepthbuf_pars_vertex>
|
|
51
51
|
#include <fog_pars_vertex>
|
|
@@ -137,4 +137,4 @@ void main() {
|
|
|
137
137
|
#include <logdepthbuf_vertex>
|
|
138
138
|
#include <fog_vertex>
|
|
139
139
|
}
|
|
140
|
-
`;class
|
|
140
|
+
`;class We extends a.ShaderMaterial{constructor(e={}){const C=e,{lineWidth:t=1,color:i="#ffffff",opacity:s=1,map:o=null,dashOffset:l=0,dashArray:r=0,dashRatio:c=0,sizeAttenuation:u=!0,offsetLoop:v=!0,offset:d=new a.Vector2(0,0),scaleDown:p=0,alphaMap:h=void 0,alphaTest:m=0,repeat:f=new a.Vector2(1,1),resolution:b=new a.Vector2(1,1)}=C,j=ne(C,["lineWidth","color","opacity","map","dashOffset","dashArray","dashRatio","sizeAttenuation","offsetLoop","offset","scaleDown","alphaMap","alphaTest","repeat","resolution"]);super($(k({},j),{uniforms:{lineWidth:{value:t},color:{value:new a.Color(i)},opacity:{value:s},map:{value:o},useMap:{value:o?1:0},resolution:{value:b},sizeAttenuation:{value:u?1:0},offset:{value:d},offsetLoop:{value:v?1:0},dashArray:{value:r},dashOffset:{value:l},dashRatio:{value:c},useDash:{value:r>0?1:0},scaleDown:{value:p/10},alphaTest:{value:m},alphaMap:{value:h},useAlphaMap:{value:h?1:0},repeat:{value:f}},vertexShader:_e,fragmentShader:Ne})),this.type="MeshLineMaterial"}get color(){return this.uniforms.color.value}set color(e){this.uniforms.color.value=new a.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 alphaTest(){return this.uniforms.alphaTest.value}set alphaTest(e){this.uniforms&&(this.uniforms.alphaTest.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}}const K=new a.Vector4,he=new a.Vector3,fe=new a.Vector3,M=new a.Vector4,w=new a.Vector4,D=new a.Vector4,Q=new a.Vector3,X=new a.Matrix4,x=new a.Line3,pe=new a.Vector3,U=new a.Box3,R=new a.Sphere,V=new a.Vector4;let T,L;function me(n,e,t){return V.set(0,0,-e,1).applyMatrix4(n.projectionMatrix),V.multiplyScalar(1/V.w),V.x=L/t.width,V.y=L/t.height,V.applyMatrix4(n.projectionMatrixInverse),V.multiplyScalar(1/V.w),Math.abs(Math.max(V.x,V.y))}function Ue(n,e){const t=n.matrixWorld,i=n.geometry,s=i.attributes.instanceStart,o=i.attributes.instanceEnd,l=Math.min(i.instanceCount,s.count);for(let r=0,c=l;r<c;r++){x.start.fromBufferAttribute(s,r),x.end.fromBufferAttribute(o,r),x.applyMatrix4(t);const u=new a.Vector3,v=new a.Vector3;T.distanceSqToSegment(x.start,x.end,v,u),v.distanceTo(u)<L*.5&&e.push({point:v,pointOnLine:u,distance:T.origin.distanceTo(v),object:n,face:null,faceIndex:r,uv:null,uv1:null})}}function Re(n,e,t){const i=e.projectionMatrix,o=n.material.resolution,l=n.matrixWorld,r=n.geometry,c=r.attributes.instanceStart,u=r.attributes.instanceEnd,v=Math.min(r.instanceCount,c.count),d=-e.near;T.at(1,D),D.w=1,D.applyMatrix4(e.matrixWorldInverse),D.applyMatrix4(i),D.multiplyScalar(1/D.w),D.x*=o.x/2,D.y*=o.y/2,D.z=0,Q.copy(D),X.multiplyMatrices(e.matrixWorldInverse,l);for(let p=0,h=v;p<h;p++){if(M.fromBufferAttribute(c,p),w.fromBufferAttribute(u,p),M.w=1,w.w=1,M.applyMatrix4(X),w.applyMatrix4(X),M.z>d&&w.z>d)continue;if(M.z>d){const O=M.z-w.z,A=(M.z-d)/O;M.lerp(w,A)}else if(w.z>d){const O=w.z-M.z,A=(w.z-d)/O;w.lerp(M,A)}M.applyMatrix4(i),w.applyMatrix4(i),M.multiplyScalar(1/M.w),w.multiplyScalar(1/w.w),M.x*=o.x/2,M.y*=o.y/2,w.x*=o.x/2,w.y*=o.y/2,x.start.copy(M),x.start.z=0,x.end.copy(w),x.end.z=0;const f=x.closestPointToPointParameter(Q,!0);x.at(f,pe);const b=a.MathUtils.lerp(M.z,w.z,f),j=b>=-1&&b<=1,C=Q.distanceTo(pe)<L*.5;if(j&&C){x.start.fromBufferAttribute(c,p),x.end.fromBufferAttribute(u,p),x.start.applyMatrix4(l),x.end.applyMatrix4(l);const O=new a.Vector3,A=new a.Vector3;T.distanceSqToSegment(x.start,x.end,A,O),t.push({point:A,pointOnLine:O,distance:T.origin.distanceTo(A),object:n,face:null,faceIndex:p,uv:null,uv1:null})}}}class Ge extends a.Mesh{constructor(e=new Ce.LineSegmentsGeometry,t){super(e,t),this.isLineSegments2=!0,this.type="LineSegments2"}computeLineDistances(){const e=this.geometry,t=e.attributes.instanceStart,i=e.attributes.instanceEnd,s=new Float32Array(2*t.count);for(let l=0,r=0,c=t.count;l<c;l++,r+=2)he.fromBufferAttribute(t,l),fe.fromBufferAttribute(i,l),s[r]=r===0?0:s[r-1],s[r+1]=s[r]+he.distanceTo(fe);const o=new a.InstancedInterleavedBuffer(s,2,1);return e.setAttribute("instanceDistanceStart",new a.InterleavedBufferAttribute(o,1,0)),e.setAttribute("instanceDistanceEnd",new a.InterleavedBufferAttribute(o,1,1)),this}raycast(e,t){const i=this.material.worldUnits,s=e.camera;s===null&&!i&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.');const o=e.params.Line2!==void 0&&e.params.Line2.threshold||0;T=e.ray;const l=this.matrixWorld,r=this.geometry,c=this.material;L=c.linewidth+o,r.boundingSphere===null&&r.computeBoundingSphere(),R.copy(r.boundingSphere).applyMatrix4(l);let u;if(i)u=L*.5;else{const d=Math.max(s.near,R.distanceToPoint(T.origin));u=me(s,d,c.resolution)}if(R.radius+=u,T.intersectsSphere(R)===!1)return;r.boundingBox===null&&r.computeBoundingBox(),U.copy(r.boundingBox).applyMatrix4(l);let v;if(i)v=L*.5;else{const d=Math.max(s.near,U.distanceToPoint(T.origin));v=me(s,d,c.resolution)}U.expandByScalar(v),T.intersectsBox(U)!==!1&&(i?Ue(this,t):Re(this,s,t))}onBeforeRender(e){const t=this.material.uniforms;t&&t.resolution&&(e.getViewport(K),this.material.uniforms.resolution.value.set(K.z,K.w))}}const y=class y extends G{constructor(e){super(),this.objectType="Node",this.onNodePointerIndex=[],this.options=k({type:"2d"},e)}create(){const{position:e,children:t}=this.options,i=document.createElement("div");this.element=i,t&&i.appendChild(t),this.options.type==="3d"?this.createCSS3DObject(i):this.options.type==="3dSprite"?this.createCSS3DSprite(i):this.createCSS2DObject(i),e&&this.object3d.position.copy(e)}setChildren(e){this.options.children=e,this.element.innerHTML="",this.element.appendChild(e)}showAndEnsureVisible(){const e=this.options.children;e&&(e.style.visibility="hidden",this.show(),setTimeout(()=>{e.style.visibility="",this.ensureVisible()}))}moveElementToViewport(){const e=this.options.children;if(!e)return;const t=e.getBoundingClientRect(),i=window.innerWidth,s=window.innerHeight,o=t.width,l=t.height;let r=0,c=0;o>i?t.left>0&&(r=-t.left):t.left<0?r=-t.left:t.right>i&&(r=i-t.right,t.left+r<0&&(r=-t.left)),l>s?t.top>0&&(c=-t.top):t.top<0?c=-t.top:t.bottom>s&&(c=s-t.bottom,t.top+c<0&&(c=-t.top)),(r!==0||c!==0)&&(e.style.transform=`translate(${r}px, ${c}px)`)}ensureVisible(){const e=this.options.children;e&&(e.style.transform&&(e.style.transform=""),!y.observerMap.has(e)&&(y.sharedObserver||(y.sharedObserver=new IntersectionObserver(t=>{t.forEach(i=>{const s=i.target,o=y.observerMap.get(s);o&&i.isIntersecting&&(o.moveElementToViewport(),y.observerMap.delete(s),y.sharedObserver&&(y.sharedObserver.unobserve(s),y.observerMap.size===0&&(y.sharedObserver.disconnect(),y.sharedObserver=void 0)))})})),y.observerMap.set(e,this),y.sharedObserver.observe(e)))}onPointerEvent(e,t){const i=this.lead.handlePickNode([this],e,t);this.onNodePointerIndex.push(i)}dispose(){const e=this.options.children;e&&y.sharedObserver&&(y.observerMap.delete(e),y.sharedObserver.unobserve(e),y.observerMap.size===0&&(y.sharedObserver.disconnect(),y.sharedObserver=void 0)),this.onNodePointerIndex.forEach(t=>{this.lead.removePickNode(t)}),super.dispose()}};y.observerMap=new Map;let ee=y;exports.BLOOM_SCENE=J;exports.BaseObject=G;exports.IS_DEV=Pe;exports.LineSegments2=Ge;exports.MeshLineMaterial=We;exports.Node=ee;exports.PolygonGeometry=ze;exports.ResourceTracker=ve;exports.getMetas=be;
|