viral-viewer-2 7.0.1 → 7.0.2
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/{batched-mesh-simplifier-CvS2hj8P.mjs → batched-mesh-simplifier-CvB-nu0g.mjs} +1 -1
- package/dist/components/custom-objects/viral-batched-mesh.d.ts +1 -0
- package/dist/components/custom-objects/viral-instanced-mesh-v2.d.ts +1 -0
- package/dist/components/custom-objects/viral-merged-model.d.ts +1 -0
- package/dist/components/visibility-manager/viral-visibility-manager.d.ts +1 -0
- package/dist/gui/draggable-modal/viral-draggable-modal.d.ts +3 -0
- package/dist/{index-eFYSCed2.mjs → index-BE13poZj.mjs} +705 -575
- package/dist/index.mjs +1 -1
- package/dist/types.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
var Ob = Object.defineProperty;
|
|
2
2
|
var Nb = (s, e, t) => e in s ? Ob(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
3
3
|
var ym = (s, e, t) => (Nb(s, typeof e != "symbol" ? e + "" : e, t), t);
|
|
4
|
-
class
|
|
4
|
+
class HR {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.MaterialIndex = 0, this.Vertices = [], this.Indices = [], this.Name = "", this.Instances = [];
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
class
|
|
9
|
+
class YR {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.MaterialIndex = 0, this.Elements = [];
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
class
|
|
14
|
+
class GR {
|
|
15
15
|
constructor() {
|
|
16
16
|
this.Vertices = [], this.Indices = [], this.Instances = [], this.Id = "";
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
class
|
|
19
|
+
class WR {
|
|
20
20
|
constructor() {
|
|
21
21
|
this.Vertices = [], this.Indices = [], this.Transform = null;
|
|
22
22
|
}
|
|
@@ -26,7 +26,7 @@ class fs {
|
|
|
26
26
|
this.X = 0, this.Y = 0, this.Z = 0;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
var yi = /* @__PURE__ */ ((s) => (s[s.ON_MOUSE_MOVE = 0] = "ON_MOUSE_MOVE", s[s.ON_MOUSE_DOWN_LEFT = 1] = "ON_MOUSE_DOWN_LEFT", s[s.ON_MOUSE_UP_LEFT = 2] = "ON_MOUSE_UP_LEFT", s[s.ON_MOUSE_DOWN_RIGHT = 3] = "ON_MOUSE_DOWN_RIGHT", s[s.ON_MOUSE_UP_RIGHT = 4] = "ON_MOUSE_UP_RIGHT", s[s.ON_MOUSE_DOUBLE_CLICK = 5] = "ON_MOUSE_DOUBLE_CLICK", s))(yi || {}), Ls = /* @__PURE__ */ ((s) => (s[s.ON_WAKE = 0] = "ON_WAKE", s[s.ON_SLEEP = 1] = "ON_SLEEP", s[s.ON_UPDATE = 2] = "ON_UPDATE", s))(Ls || {}), lo = /* @__PURE__ */ ((s) => (s[s.KEYDOWN = 0] = "KEYDOWN", s[s.KEYUP = 1] = "KEYUP", s))(lo || {}), At = /* @__PURE__ */ ((s) => (s[s.LOADED_SCENE = 0] = "LOADED_SCENE", s[s.LOADED_MATERIAL_MANAGER = 1] = "LOADED_MATERIAL_MANAGER", s[s.LOADED_RENDERER = 2] = "LOADED_RENDERER", s[s.LOADED_CAMERA = 3] = "LOADED_CAMERA", s[s.LOADED_CUBE = 4] = "LOADED_CUBE", s[s.LOADED_TOOLS = 5] = "LOADED_TOOLS", s[s.LOADED_SEPERATE_MODEL = 6] = "LOADED_SEPERATE_MODEL", s[s.GENERATED_MERGE_MODEL = 7] = "GENERATED_MERGE_MODEL", s[s.LOADED_DATA = 8] = "LOADED_DATA", s))(At || {});
|
|
29
|
+
var yi = /* @__PURE__ */ ((s) => (s[s.ON_MOUSE_MOVE = 0] = "ON_MOUSE_MOVE", s[s.ON_MOUSE_DOWN_LEFT = 1] = "ON_MOUSE_DOWN_LEFT", s[s.ON_MOUSE_UP_LEFT = 2] = "ON_MOUSE_UP_LEFT", s[s.ON_MOUSE_DOWN_RIGHT = 3] = "ON_MOUSE_DOWN_RIGHT", s[s.ON_MOUSE_UP_RIGHT = 4] = "ON_MOUSE_UP_RIGHT", s[s.ON_MOUSE_DOUBLE_CLICK = 5] = "ON_MOUSE_DOUBLE_CLICK", s))(yi || {}), Ls = /* @__PURE__ */ ((s) => (s[s.ON_WAKE = 0] = "ON_WAKE", s[s.ON_SLEEP = 1] = "ON_SLEEP", s[s.ON_UPDATE = 2] = "ON_UPDATE", s))(Ls || {}), lo = /* @__PURE__ */ ((s) => (s[s.KEYDOWN = 0] = "KEYDOWN", s[s.KEYUP = 1] = "KEYUP", s))(lo || {}), At = /* @__PURE__ */ ((s) => (s[s.LOADED_SCENE = 0] = "LOADED_SCENE", s[s.LOADED_MATERIAL_MANAGER = 1] = "LOADED_MATERIAL_MANAGER", s[s.LOADED_RENDERER = 2] = "LOADED_RENDERER", s[s.LOADED_CAMERA = 3] = "LOADED_CAMERA", s[s.LOADED_CUBE = 4] = "LOADED_CUBE", s[s.LOADED_TOOLS = 5] = "LOADED_TOOLS", s[s.LOADED_SEPERATE_MODEL = 6] = "LOADED_SEPERATE_MODEL", s[s.GENERATED_MERGE_MODEL = 7] = "GENERATED_MERGE_MODEL", s[s.LOADED_DATA = 8] = "LOADED_DATA", s[s.SELECT_ELEMENTS = 9] = "SELECT_ELEMENTS", s))(At || {});
|
|
30
30
|
class jr {
|
|
31
31
|
constructor() {
|
|
32
32
|
this.items = {};
|
|
@@ -86,12 +86,12 @@ let Lv = class {
|
|
|
86
86
|
this.min = new fs(), this.max = new fs();
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
|
-
class
|
|
89
|
+
class $R {
|
|
90
90
|
constructor() {
|
|
91
91
|
this.Data = {}, this.CameraData = new Sp(), this.Translation = [];
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
class
|
|
94
|
+
class KR {
|
|
95
95
|
constructor() {
|
|
96
96
|
this.Data = {};
|
|
97
97
|
}
|
|
@@ -121,7 +121,7 @@ const Fb = {
|
|
|
121
121
|
indirectLightIntensity: 1.2,
|
|
122
122
|
shadowcatcher: !0
|
|
123
123
|
};
|
|
124
|
-
class
|
|
124
|
+
class JR {
|
|
125
125
|
constructor() {
|
|
126
126
|
this.children = /* @__PURE__ */ new Map(), this.keys = /* @__PURE__ */ new Set();
|
|
127
127
|
}
|
|
@@ -1982,7 +1982,7 @@ var cw = rc, hw = Ip, dw = lw, uw = Ip, fw = nc, pw = {
|
|
|
1982
1982
|
ungzip: uw,
|
|
1983
1983
|
constants: fw
|
|
1984
1984
|
};
|
|
1985
|
-
const { Inflate: mw, inflate: gw, inflateRaw:
|
|
1985
|
+
const { Inflate: mw, inflate: gw, inflateRaw: eD, ungzip: tD } = pw;
|
|
1986
1986
|
var vw = mw, xw = gw;
|
|
1987
1987
|
class bw {
|
|
1988
1988
|
pakoUnzip(e) {
|
|
@@ -8063,7 +8063,7 @@ class Lo {
|
|
|
8063
8063
|
return new this.constructor().copy(this);
|
|
8064
8064
|
}
|
|
8065
8065
|
}
|
|
8066
|
-
class
|
|
8066
|
+
class Ce {
|
|
8067
8067
|
/**
|
|
8068
8068
|
* Constructs a new 4x4 matrix. The arguments are supposed to be
|
|
8069
8069
|
* in row-major order. If no arguments are provided, the constructor
|
|
@@ -8087,7 +8087,7 @@ class Pe {
|
|
|
8087
8087
|
* @param {number} [n44] - 4-4 matrix element.
|
|
8088
8088
|
*/
|
|
8089
8089
|
constructor(e, t, i, n, r, a, o, l, c, h, d, u, f, p, v, g) {
|
|
8090
|
-
|
|
8090
|
+
Ce.prototype.isMatrix4 = !0, this.elements = [
|
|
8091
8091
|
1,
|
|
8092
8092
|
0,
|
|
8093
8093
|
0,
|
|
@@ -8163,7 +8163,7 @@ class Pe {
|
|
|
8163
8163
|
* @return {Matrix4} A clone of this instance.
|
|
8164
8164
|
*/
|
|
8165
8165
|
clone() {
|
|
8166
|
-
return new
|
|
8166
|
+
return new Ce().fromArray(this.elements);
|
|
8167
8167
|
}
|
|
8168
8168
|
/**
|
|
8169
8169
|
* Copies the values of the given matrix to this instance.
|
|
@@ -8775,7 +8775,7 @@ class Pe {
|
|
|
8775
8775
|
return e[t] = i[0], e[t + 1] = i[1], e[t + 2] = i[2], e[t + 3] = i[3], e[t + 4] = i[4], e[t + 5] = i[5], e[t + 6] = i[6], e[t + 7] = i[7], e[t + 8] = i[8], e[t + 9] = i[9], e[t + 10] = i[10], e[t + 11] = i[11], e[t + 12] = i[12], e[t + 13] = i[13], e[t + 14] = i[14], e[t + 15] = i[15], e;
|
|
8776
8776
|
}
|
|
8777
8777
|
}
|
|
8778
|
-
const Ia = /* @__PURE__ */ new P(), Xn = /* @__PURE__ */ new
|
|
8778
|
+
const Ia = /* @__PURE__ */ new P(), Xn = /* @__PURE__ */ new Ce(), C1 = /* @__PURE__ */ new P(0, 0, 0), I1 = /* @__PURE__ */ new P(1, 1, 1), Ks = /* @__PURE__ */ new P(), Tc = /* @__PURE__ */ new P(), pn = /* @__PURE__ */ new P(), Pg = /* @__PURE__ */ new Ce(), Cg = /* @__PURE__ */ new ui();
|
|
8779
8779
|
class hn {
|
|
8780
8780
|
/**
|
|
8781
8781
|
* Constructs a new euler instance.
|
|
@@ -9047,7 +9047,7 @@ class Hp {
|
|
|
9047
9047
|
}
|
|
9048
9048
|
}
|
|
9049
9049
|
let R1 = 0;
|
|
9050
|
-
const Ig = /* @__PURE__ */ new P(), Ra = /* @__PURE__ */ new ui(), Es = /* @__PURE__ */ new
|
|
9050
|
+
const Ig = /* @__PURE__ */ new P(), Ra = /* @__PURE__ */ new ui(), Es = /* @__PURE__ */ new Ce(), Ec = /* @__PURE__ */ new P(), Qo = /* @__PURE__ */ new P(), D1 = /* @__PURE__ */ new P(), L1 = /* @__PURE__ */ new ui(), Rg = /* @__PURE__ */ new P(1, 0, 0), Dg = /* @__PURE__ */ new P(0, 1, 0), Lg = /* @__PURE__ */ new P(0, 0, 1), Og = { type: "added" }, O1 = { type: "removed" }, Da = { type: "childadded", child: null }, ou = { type: "childremoved", child: null };
|
|
9051
9051
|
class Lt extends Ws {
|
|
9052
9052
|
/**
|
|
9053
9053
|
* Constructs a new 3D object.
|
|
@@ -9116,7 +9116,7 @@ class Lt extends Ws {
|
|
|
9116
9116
|
* @type {Matrix4}
|
|
9117
9117
|
*/
|
|
9118
9118
|
modelViewMatrix: {
|
|
9119
|
-
value: new
|
|
9119
|
+
value: new Ce()
|
|
9120
9120
|
},
|
|
9121
9121
|
/**
|
|
9122
9122
|
* Represents the object's normal matrix.
|
|
@@ -9127,7 +9127,7 @@ class Lt extends Ws {
|
|
|
9127
9127
|
normalMatrix: {
|
|
9128
9128
|
value: new yt()
|
|
9129
9129
|
}
|
|
9130
|
-
}), this.matrix = new
|
|
9130
|
+
}), this.matrix = new Ce(), this.matrixWorld = new Ce(), this.matrixAutoUpdate = Lt.DEFAULT_MATRIX_AUTO_UPDATE, this.matrixWorldAutoUpdate = Lt.DEFAULT_MATRIX_WORLD_AUTO_UPDATE, this.matrixWorldNeedsUpdate = !1, this.layers = new Hp(), this.visible = !0, this.castShadow = !1, this.receiveShadow = !1, this.frustumCulled = !0, this.renderOrder = 0, this.animations = [], this.customDepthMaterial = void 0, this.customDistanceMaterial = void 0, this.userData = {};
|
|
9131
9131
|
}
|
|
9132
9132
|
/**
|
|
9133
9133
|
* A callback that is executed immediately before a 3D object is rendered to a shadow map.
|
|
@@ -11174,7 +11174,7 @@ class et extends ot {
|
|
|
11174
11174
|
}
|
|
11175
11175
|
}
|
|
11176
11176
|
let F1 = 0;
|
|
11177
|
-
const An = /* @__PURE__ */ new
|
|
11177
|
+
const An = /* @__PURE__ */ new Ce(), gu = /* @__PURE__ */ new Lt(), Na = /* @__PURE__ */ new P(), mn = /* @__PURE__ */ new ft(), jo = /* @__PURE__ */ new ft(), Mi = /* @__PURE__ */ new P();
|
|
11178
11178
|
class dt extends Ws {
|
|
11179
11179
|
/**
|
|
11180
11180
|
* Constructs a new geometry.
|
|
@@ -11704,7 +11704,7 @@ class dt extends Ws {
|
|
|
11704
11704
|
this.dispatchEvent({ type: "dispose" });
|
|
11705
11705
|
}
|
|
11706
11706
|
}
|
|
11707
|
-
const Bg = /* @__PURE__ */ new
|
|
11707
|
+
const Bg = /* @__PURE__ */ new Ce(), Or = /* @__PURE__ */ new Lo(), Ic = /* @__PURE__ */ new ni(), Ug = /* @__PURE__ */ new P(), Rc = /* @__PURE__ */ new P(), Dc = /* @__PURE__ */ new P(), Lc = /* @__PURE__ */ new P(), vu = /* @__PURE__ */ new P(), Oc = /* @__PURE__ */ new P(), Fg = /* @__PURE__ */ new P(), Nc = /* @__PURE__ */ new P();
|
|
11708
11708
|
class Q extends Lt {
|
|
11709
11709
|
/**
|
|
11710
11710
|
* Constructs a new mesh.
|
|
@@ -11994,7 +11994,7 @@ class Yp extends Lt {
|
|
|
11994
11994
|
* Constructs a new camera.
|
|
11995
11995
|
*/
|
|
11996
11996
|
constructor() {
|
|
11997
|
-
super(), this.isCamera = !0, this.type = "Camera", this.matrixWorldInverse = new
|
|
11997
|
+
super(), this.isCamera = !0, this.type = "Camera", this.matrixWorldInverse = new Ce(), this.projectionMatrix = new Ce(), this.projectionMatrixInverse = new Ce(), this.coordinateSystem = In, this._reversedDepth = !1;
|
|
11998
11998
|
}
|
|
11999
11999
|
/**
|
|
12000
12000
|
* The flag that indicates whether the camera uses a reversed depth buffer.
|
|
@@ -12995,7 +12995,7 @@ class id extends Di {
|
|
|
12995
12995
|
}
|
|
12996
12996
|
}
|
|
12997
12997
|
let Fa;
|
|
12998
|
-
const qo = /* @__PURE__ */ new P(), za = /* @__PURE__ */ new P(), ka = /* @__PURE__ */ new P(), Va = /* @__PURE__ */ new K(), Zo = /* @__PURE__ */ new K(), zx = /* @__PURE__ */ new
|
|
12998
|
+
const qo = /* @__PURE__ */ new P(), za = /* @__PURE__ */ new P(), ka = /* @__PURE__ */ new P(), Va = /* @__PURE__ */ new K(), Zo = /* @__PURE__ */ new K(), zx = /* @__PURE__ */ new Ce(), Uc = /* @__PURE__ */ new P(), $o = /* @__PURE__ */ new P(), Fc = /* @__PURE__ */ new P(), Vg = /* @__PURE__ */ new K(), bu = /* @__PURE__ */ new K(), Xg = /* @__PURE__ */ new K();
|
|
12999
12999
|
class tp extends Lt {
|
|
13000
13000
|
/**
|
|
13001
13001
|
* Constructs a new sprite.
|
|
@@ -13204,7 +13204,7 @@ class kx extends Lt {
|
|
|
13204
13204
|
return t;
|
|
13205
13205
|
}
|
|
13206
13206
|
}
|
|
13207
|
-
const Yg = /* @__PURE__ */ new P(), Gg = /* @__PURE__ */ new Mt(), Wg = /* @__PURE__ */ new Mt(), W1 = /* @__PURE__ */ new P(), Qg = /* @__PURE__ */ new
|
|
13207
|
+
const Yg = /* @__PURE__ */ new P(), Gg = /* @__PURE__ */ new Mt(), Wg = /* @__PURE__ */ new Mt(), W1 = /* @__PURE__ */ new P(), Qg = /* @__PURE__ */ new Ce(), Vc = /* @__PURE__ */ new P(), yu = /* @__PURE__ */ new ni(), jg = /* @__PURE__ */ new Ce(), _u = /* @__PURE__ */ new Lo();
|
|
13208
13208
|
class Vx extends Q {
|
|
13209
13209
|
/**
|
|
13210
13210
|
* Constructs a new skinned mesh.
|
|
@@ -13213,7 +13213,7 @@ class Vx extends Q {
|
|
|
13213
13213
|
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
13214
13214
|
*/
|
|
13215
13215
|
constructor(e, t) {
|
|
13216
|
-
super(e, t), this.isSkinnedMesh = !0, this.type = "SkinnedMesh", this.bindMode = _g, this.bindMatrix = new
|
|
13216
|
+
super(e, t), this.isSkinnedMesh = !0, this.type = "SkinnedMesh", this.bindMode = _g, this.bindMatrix = new Ce(), this.bindMatrixInverse = new Ce(), this.boundingBox = null, this.boundingSphere = null;
|
|
13217
13217
|
}
|
|
13218
13218
|
/**
|
|
13219
13219
|
* Computes the bounding box of the skinned mesh, and updates {@link SkinnedMesh#boundingBox}.
|
|
@@ -13333,7 +13333,7 @@ class Bn extends ci {
|
|
|
13333
13333
|
super(null, a, o, l, c, h, n, r, d, u), this.isDataTexture = !0, this.image = { data: e, width: t, height: i }, this.generateMipmaps = !1, this.flipY = !1, this.unpackAlignment = 1;
|
|
13334
13334
|
}
|
|
13335
13335
|
}
|
|
13336
|
-
const qg = /* @__PURE__ */ new
|
|
13336
|
+
const qg = /* @__PURE__ */ new Ce(), Q1 = /* @__PURE__ */ new Ce();
|
|
13337
13337
|
class vd {
|
|
13338
13338
|
/**
|
|
13339
13339
|
* Constructs a new skeleton.
|
|
@@ -13357,7 +13357,7 @@ class vd {
|
|
|
13357
13357
|
else if (e.length !== t.length) {
|
|
13358
13358
|
Je("Skeleton: Number of inverse bone matrices does not match amount of bones."), this.boneInverses = [];
|
|
13359
13359
|
for (let i = 0, n = this.bones.length; i < n; i++)
|
|
13360
|
-
this.boneInverses.push(new
|
|
13360
|
+
this.boneInverses.push(new Ce());
|
|
13361
13361
|
}
|
|
13362
13362
|
}
|
|
13363
13363
|
/**
|
|
@@ -13367,7 +13367,7 @@ class vd {
|
|
|
13367
13367
|
calculateInverses() {
|
|
13368
13368
|
this.boneInverses.length = 0;
|
|
13369
13369
|
for (let e = 0, t = this.bones.length; e < t; e++) {
|
|
13370
|
-
const i = new
|
|
13370
|
+
const i = new Ce();
|
|
13371
13371
|
this.bones[e] && i.copy(this.bones[e].matrixWorld).invert(), this.boneInverses.push(i);
|
|
13372
13372
|
}
|
|
13373
13373
|
}
|
|
@@ -13449,7 +13449,7 @@ class vd {
|
|
|
13449
13449
|
for (let i = 0, n = e.bones.length; i < n; i++) {
|
|
13450
13450
|
const r = e.bones[i];
|
|
13451
13451
|
let a = t[r];
|
|
13452
|
-
a === void 0 && (Je("Skeleton: No bone found with UUID:", r), a = new Qp()), this.bones.push(a), this.boneInverses.push(new
|
|
13452
|
+
a === void 0 && (Je("Skeleton: No bone found with UUID:", r), a = new Qp()), this.bones.push(a), this.boneInverses.push(new Ce().fromArray(e.boneInverses[i]));
|
|
13453
13453
|
}
|
|
13454
13454
|
return this.init(), this;
|
|
13455
13455
|
}
|
|
@@ -13500,7 +13500,7 @@ class yn extends ot {
|
|
|
13500
13500
|
return e.meshPerAttribute = this.meshPerAttribute, e.isInstancedBufferAttribute = !0, e;
|
|
13501
13501
|
}
|
|
13502
13502
|
}
|
|
13503
|
-
const Xa = /* @__PURE__ */ new
|
|
13503
|
+
const Xa = /* @__PURE__ */ new Ce(), Zg = /* @__PURE__ */ new Ce(), Xc = [], $g = /* @__PURE__ */ new ft(), j1 = /* @__PURE__ */ new Ce(), Ko = /* @__PURE__ */ new Q(), Jo = /* @__PURE__ */ new ni();
|
|
13504
13504
|
class Hs extends Q {
|
|
13505
13505
|
/**
|
|
13506
13506
|
* Constructs a new instanced mesh.
|
|
@@ -13979,7 +13979,7 @@ class Oo {
|
|
|
13979
13979
|
return new this.constructor().copy(this);
|
|
13980
13980
|
}
|
|
13981
13981
|
}
|
|
13982
|
-
const as = /* @__PURE__ */ new
|
|
13982
|
+
const as = /* @__PURE__ */ new Ce(), os = /* @__PURE__ */ new Oo();
|
|
13983
13983
|
class jp {
|
|
13984
13984
|
/**
|
|
13985
13985
|
* Constructs a new frustum array.
|
|
@@ -14150,7 +14150,7 @@ class eS {
|
|
|
14150
14150
|
this.list.length = 0, this.index = 0;
|
|
14151
14151
|
}
|
|
14152
14152
|
}
|
|
14153
|
-
const rn = /* @__PURE__ */ new
|
|
14153
|
+
const rn = /* @__PURE__ */ new Ce(), tS = /* @__PURE__ */ new Ie(1, 1, 1), Kg = /* @__PURE__ */ new Oo(), iS = /* @__PURE__ */ new jp(), Yc = /* @__PURE__ */ new ft(), Br = /* @__PURE__ */ new ni(), el = /* @__PURE__ */ new P(), Jg = /* @__PURE__ */ new P(), nS = /* @__PURE__ */ new P(), Mu = /* @__PURE__ */ new eS(), ki = /* @__PURE__ */ new Q(), Gc = [];
|
|
14154
14154
|
function sS(s, e, t = 0) {
|
|
14155
14155
|
const i = e.itemSize;
|
|
14156
14156
|
if (s.isInterleavedBufferAttribute || s.array.constructor !== e.array.constructor) {
|
|
@@ -14763,7 +14763,7 @@ class dn extends Di {
|
|
|
14763
14763
|
return super.copy(e), this.color.copy(e.color), this.map = e.map, this.linewidth = e.linewidth, this.linecap = e.linecap, this.linejoin = e.linejoin, this.fog = e.fog, this;
|
|
14764
14764
|
}
|
|
14765
14765
|
}
|
|
14766
|
-
const nd = /* @__PURE__ */ new P(), sd = /* @__PURE__ */ new P(), e0 = /* @__PURE__ */ new
|
|
14766
|
+
const nd = /* @__PURE__ */ new P(), sd = /* @__PURE__ */ new P(), e0 = /* @__PURE__ */ new Ce(), tl = /* @__PURE__ */ new Lo(), Wc = /* @__PURE__ */ new ni(), Au = /* @__PURE__ */ new P(), t0 = /* @__PURE__ */ new P();
|
|
14767
14767
|
class Xi extends Lt {
|
|
14768
14768
|
/**
|
|
14769
14769
|
* Constructs a new line.
|
|
@@ -14917,7 +14917,7 @@ class xd extends Di {
|
|
|
14917
14917
|
return super.copy(e), this.color.copy(e.color), this.map = e.map, this.alphaMap = e.alphaMap, this.size = e.size, this.sizeAttenuation = e.sizeAttenuation, this.fog = e.fog, this;
|
|
14918
14918
|
}
|
|
14919
14919
|
}
|
|
14920
|
-
const s0 = /* @__PURE__ */ new
|
|
14920
|
+
const s0 = /* @__PURE__ */ new Ce(), ip = /* @__PURE__ */ new Lo(), jc = /* @__PURE__ */ new ni(), qc = /* @__PURE__ */ new P();
|
|
14921
14921
|
class _o extends Lt {
|
|
14922
14922
|
/**
|
|
14923
14923
|
* Constructs a new point cloud.
|
|
@@ -15776,7 +15776,7 @@ class ws {
|
|
|
15776
15776
|
* @return {{tangents: Array<Vector3>, normals: Array<Vector3>, binormals: Array<Vector3>}} The Frenet Frames.
|
|
15777
15777
|
*/
|
|
15778
15778
|
computeFrenetFrames(e, t = !1) {
|
|
15779
|
-
const i = new P(), n = [], r = [], a = [], o = new P(), l = new
|
|
15779
|
+
const i = new P(), n = [], r = [], a = [], o = new P(), l = new Ce();
|
|
15780
15780
|
for (let f = 0; f <= e; f++) {
|
|
15781
15781
|
const p = f / e;
|
|
15782
15782
|
n[f] = this.getTangentAt(p, new P());
|
|
@@ -17085,15 +17085,15 @@ class im extends dt {
|
|
|
17085
17085
|
function U(de) {
|
|
17086
17086
|
const he = 10000000000000001e-36;
|
|
17087
17087
|
let ge = de[0];
|
|
17088
|
-
for (let
|
|
17089
|
-
const ve =
|
|
17088
|
+
for (let Pe = 1; Pe <= de.length; Pe++) {
|
|
17089
|
+
const ve = Pe % de.length, Qe = de[ve], ue = Qe.x - ge.x, ke = Qe.y - ge.y, N = ue * ue + ke * ke, I = Math.max(
|
|
17090
17090
|
Math.abs(Qe.x),
|
|
17091
17091
|
Math.abs(Qe.y),
|
|
17092
17092
|
Math.abs(ge.x),
|
|
17093
17093
|
Math.abs(ge.y)
|
|
17094
17094
|
), H = he * I * I;
|
|
17095
17095
|
if (N <= H) {
|
|
17096
|
-
de.splice(ve, 1),
|
|
17096
|
+
de.splice(ve, 1), Pe--;
|
|
17097
17097
|
continue;
|
|
17098
17098
|
}
|
|
17099
17099
|
ge = Qe;
|
|
@@ -17110,20 +17110,20 @@ class im extends dt {
|
|
|
17110
17110
|
}
|
|
17111
17111
|
const re = M.length;
|
|
17112
17112
|
function Z(de, B, he) {
|
|
17113
|
-
let ge,
|
|
17113
|
+
let ge, Pe, ve;
|
|
17114
17114
|
const Qe = de.x - B.x, ue = de.y - B.y, ke = he.x - de.x, N = he.y - de.y, I = Qe * Qe + ue * ue, H = Qe * N - ue * ke;
|
|
17115
17115
|
if (Math.abs(H) > Number.EPSILON) {
|
|
17116
17116
|
const se = Math.sqrt(I), ae = Math.sqrt(ke * ke + N * N), te = B.x - ue / se, qe = B.y + Qe / se, Oe = he.x - N / ae, Ke = he.y + ke / ae, We = ((Oe - te) * N - (Ke - qe) * ke) / (Qe * N - ue * ke);
|
|
17117
|
-
ge = te + Qe * We - de.x,
|
|
17118
|
-
const me = ge * ge +
|
|
17117
|
+
ge = te + Qe * We - de.x, Pe = qe + ue * We - de.y;
|
|
17118
|
+
const me = ge * ge + Pe * Pe;
|
|
17119
17119
|
if (me <= 2)
|
|
17120
|
-
return new K(ge,
|
|
17120
|
+
return new K(ge, Pe);
|
|
17121
17121
|
ve = Math.sqrt(me / 2);
|
|
17122
17122
|
} else {
|
|
17123
17123
|
let se = !1;
|
|
17124
|
-
Qe > Number.EPSILON ? ke > Number.EPSILON && (se = !0) : Qe < -Number.EPSILON ? ke < -Number.EPSILON && (se = !0) : Math.sign(ue) === Math.sign(N) && (se = !0), se ? (ge = -ue,
|
|
17124
|
+
Qe > Number.EPSILON ? ke > Number.EPSILON && (se = !0) : Qe < -Number.EPSILON ? ke < -Number.EPSILON && (se = !0) : Math.sign(ue) === Math.sign(N) && (se = !0), se ? (ge = -ue, Pe = Qe, ve = Math.sqrt(I)) : (ge = Qe, Pe = ue, ve = Math.sqrt(I / 2));
|
|
17125
17125
|
}
|
|
17126
|
-
return new K(ge / ve,
|
|
17126
|
+
return new K(ge / ve, Pe / ve);
|
|
17127
17127
|
}
|
|
17128
17128
|
const ie = [];
|
|
17129
17129
|
for (let de = 0, B = X.length, he = B - 1, ge = de + 1; de < B; de++, he++, ge++)
|
|
@@ -17133,8 +17133,8 @@ class im extends dt {
|
|
|
17133
17133
|
for (let de = 0, B = z; de < B; de++) {
|
|
17134
17134
|
const he = C[de];
|
|
17135
17135
|
Ne = [];
|
|
17136
|
-
for (let ge = 0,
|
|
17137
|
-
ve ===
|
|
17136
|
+
for (let ge = 0, Pe = he.length, ve = Pe - 1, Qe = ge + 1; ge < Pe; ge++, ve++, Qe++)
|
|
17137
|
+
ve === Pe && (ve = 0), Qe === Pe && (Qe = 0), Ne[ge] = Z(he[ge], he[ve], he[Qe]);
|
|
17138
17138
|
pe.push(Ne), ce = ce.concat(Ne);
|
|
17139
17139
|
}
|
|
17140
17140
|
let we;
|
|
@@ -17143,10 +17143,10 @@ class im extends dt {
|
|
|
17143
17143
|
else {
|
|
17144
17144
|
const de = [], B = [];
|
|
17145
17145
|
for (let he = 0; he < g; he++) {
|
|
17146
|
-
const ge = he / g,
|
|
17146
|
+
const ge = he / g, Pe = f * Math.cos(ge * Math.PI / 2), ve = p * Math.sin(ge * Math.PI / 2) + v;
|
|
17147
17147
|
for (let Qe = 0, ue = X.length; Qe < ue; Qe++) {
|
|
17148
17148
|
const ke = j(X[Qe], ie[Qe], ve);
|
|
17149
|
-
Xe(ke.x, ke.y, -
|
|
17149
|
+
Xe(ke.x, ke.y, -Pe), ge === 0 && de.push(ke);
|
|
17150
17150
|
}
|
|
17151
17151
|
for (let Qe = 0, ue = z; Qe < ue; Qe++) {
|
|
17152
17152
|
const ke = C[Qe];
|
|
@@ -17154,7 +17154,7 @@ class im extends dt {
|
|
|
17154
17154
|
const N = [];
|
|
17155
17155
|
for (let I = 0, H = ke.length; I < H; I++) {
|
|
17156
17156
|
const se = j(ke[I], Ne[I], ve);
|
|
17157
|
-
Xe(se.x, se.y, -
|
|
17157
|
+
Xe(se.x, se.y, -Pe), ge === 0 && N.push(se);
|
|
17158
17158
|
}
|
|
17159
17159
|
ge === 0 && B.push(N);
|
|
17160
17160
|
}
|
|
@@ -17173,13 +17173,13 @@ class im extends dt {
|
|
|
17173
17173
|
}
|
|
17174
17174
|
for (let de = g - 1; de >= 0; de--) {
|
|
17175
17175
|
const B = de / g, he = f * Math.cos(B * Math.PI / 2), ge = p * Math.sin(B * Math.PI / 2) + v;
|
|
17176
|
-
for (let
|
|
17177
|
-
const Qe = j(X[
|
|
17176
|
+
for (let Pe = 0, ve = X.length; Pe < ve; Pe++) {
|
|
17177
|
+
const Qe = j(X[Pe], ie[Pe], ge);
|
|
17178
17178
|
Xe(Qe.x, Qe.y, d + he);
|
|
17179
17179
|
}
|
|
17180
|
-
for (let
|
|
17181
|
-
const Qe = C[
|
|
17182
|
-
Ne = pe[
|
|
17180
|
+
for (let Pe = 0, ve = C.length; Pe < ve; Pe++) {
|
|
17181
|
+
const Qe = C[Pe];
|
|
17182
|
+
Ne = pe[Pe];
|
|
17183
17183
|
for (let ue = 0, ke = Qe.length; ue < ke; ue++) {
|
|
17184
17184
|
const N = j(Qe[ue], Ne[ue], ge);
|
|
17185
17185
|
y ? Xe(N.x, N.y + x[h - 1].y, x[h - 1].x + he) : Xe(N.x, N.y, d + he);
|
|
@@ -17192,13 +17192,13 @@ class im extends dt {
|
|
|
17192
17192
|
if (u) {
|
|
17193
17193
|
let B = 0, he = re * B;
|
|
17194
17194
|
for (let ge = 0; ge < ct; ge++) {
|
|
17195
|
-
const
|
|
17196
|
-
Ge(
|
|
17195
|
+
const Pe = we[ge];
|
|
17196
|
+
Ge(Pe[2] + he, Pe[1] + he, Pe[0] + he);
|
|
17197
17197
|
}
|
|
17198
17198
|
B = h + g * 2, he = re * B;
|
|
17199
17199
|
for (let ge = 0; ge < ct; ge++) {
|
|
17200
|
-
const
|
|
17201
|
-
Ge(
|
|
17200
|
+
const Pe = we[ge];
|
|
17201
|
+
Ge(Pe[0] + he, Pe[1] + he, Pe[2] + he);
|
|
17202
17202
|
}
|
|
17203
17203
|
} else {
|
|
17204
17204
|
for (let B = 0; B < ct; B++) {
|
|
@@ -17217,8 +17217,8 @@ class im extends dt {
|
|
|
17217
17217
|
let B = 0;
|
|
17218
17218
|
Te(X, B), B += X.length;
|
|
17219
17219
|
for (let he = 0, ge = C.length; he < ge; he++) {
|
|
17220
|
-
const
|
|
17221
|
-
Te(
|
|
17220
|
+
const Pe = C[he];
|
|
17221
|
+
Te(Pe, B), B += Pe.length;
|
|
17222
17222
|
}
|
|
17223
17223
|
i.addGroup(de, n.length / 3 - de, 1);
|
|
17224
17224
|
}
|
|
@@ -17226,10 +17226,10 @@ class im extends dt {
|
|
|
17226
17226
|
let he = de.length;
|
|
17227
17227
|
for (; --he >= 0; ) {
|
|
17228
17228
|
const ge = he;
|
|
17229
|
-
let
|
|
17230
|
-
|
|
17229
|
+
let Pe = he - 1;
|
|
17230
|
+
Pe < 0 && (Pe = de.length - 1);
|
|
17231
17231
|
for (let ve = 0, Qe = h + g * 2; ve < Qe; ve++) {
|
|
17232
|
-
const ue = re * ve, ke = re * (ve + 1), N = B + ge + ue, I = B +
|
|
17232
|
+
const ue = re * ve, ke = re * (ve + 1), N = B + ge + ue, I = B + Pe + ue, H = B + Pe + ke, se = B + ge + ke;
|
|
17233
17233
|
ht(N, I, H, se);
|
|
17234
17234
|
}
|
|
17235
17235
|
}
|
|
@@ -17239,12 +17239,12 @@ class im extends dt {
|
|
|
17239
17239
|
}
|
|
17240
17240
|
function Ge(de, B, he) {
|
|
17241
17241
|
mt(de), mt(B), mt(he);
|
|
17242
|
-
const ge = n.length / 3,
|
|
17243
|
-
it(
|
|
17242
|
+
const ge = n.length / 3, Pe = b.generateTopUV(i, n, ge - 3, ge - 2, ge - 1);
|
|
17243
|
+
it(Pe[0]), it(Pe[1]), it(Pe[2]);
|
|
17244
17244
|
}
|
|
17245
17245
|
function ht(de, B, he, ge) {
|
|
17246
17246
|
mt(de), mt(B), mt(ge), mt(B), mt(he), mt(ge);
|
|
17247
|
-
const
|
|
17247
|
+
const Pe = n.length / 3, ve = b.generateSideWallUV(i, n, Pe - 6, Pe - 3, Pe - 2, Pe - 1);
|
|
17248
17248
|
it(ve[0]), it(ve[1]), it(ve[3]), it(ve[1]), it(ve[2]), it(ve[3]);
|
|
17249
17249
|
}
|
|
17250
17250
|
function mt(de) {
|
|
@@ -19808,7 +19808,7 @@ class KS extends va {
|
|
|
19808
19808
|
return super.copy(e, t), this.groundColor.copy(e.groundColor), this;
|
|
19809
19809
|
}
|
|
19810
19810
|
}
|
|
19811
|
-
const Iu = /* @__PURE__ */ new
|
|
19811
|
+
const Iu = /* @__PURE__ */ new Ce(), p0 = /* @__PURE__ */ new P(), m0 = /* @__PURE__ */ new P();
|
|
19812
19812
|
class um {
|
|
19813
19813
|
/**
|
|
19814
19814
|
* Constructs a new light shadow.
|
|
@@ -19816,7 +19816,7 @@ class um {
|
|
|
19816
19816
|
* @param {Camera} camera - The light's view of the world.
|
|
19817
19817
|
*/
|
|
19818
19818
|
constructor(e) {
|
|
19819
|
-
this.camera = e, this.intensity = 1, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new K(512, 512), this.mapType = ys, this.map = null, this.mapPass = null, this.matrix = new
|
|
19819
|
+
this.camera = e, this.intensity = 1, this.bias = 0, this.normalBias = 0, this.radius = 1, this.blurSamples = 8, this.mapSize = new K(512, 512), this.mapType = ys, this.map = null, this.mapPass = null, this.matrix = new Ce(), this.autoUpdate = !0, this.needsUpdate = !1, this._frustum = new Oo(), this._frameExtents = new K(1, 1), this._viewportCount = 1, this._viewports = [
|
|
19820
19820
|
new Mt(0, 0, 1, 1)
|
|
19821
19821
|
];
|
|
19822
19822
|
}
|
|
@@ -19980,7 +19980,7 @@ class ob extends va {
|
|
|
19980
19980
|
return super.copy(e, t), this.distance = e.distance, this.angle = e.angle, this.penumbra = e.penumbra, this.decay = e.decay, this.target = e.target.clone(), this.shadow = e.shadow.clone(), this;
|
|
19981
19981
|
}
|
|
19982
19982
|
}
|
|
19983
|
-
const g0 = /* @__PURE__ */ new
|
|
19983
|
+
const g0 = /* @__PURE__ */ new Ce(), il = /* @__PURE__ */ new P(), Ru = /* @__PURE__ */ new P();
|
|
19984
19984
|
class eM extends um {
|
|
19985
19985
|
/**
|
|
19986
19986
|
* Constructs a new point light shadow.
|
|
@@ -20459,7 +20459,7 @@ class fm extends Qs {
|
|
|
20459
20459
|
n.uniforms[r].value = new yt().fromArray(a.value);
|
|
20460
20460
|
break;
|
|
20461
20461
|
case "m4":
|
|
20462
|
-
n.uniforms[r].value = new
|
|
20462
|
+
n.uniforms[r].value = new Ce().fromArray(a.value);
|
|
20463
20463
|
break;
|
|
20464
20464
|
default:
|
|
20465
20465
|
n.uniforms[r].value = a.value;
|
|
@@ -22373,7 +22373,7 @@ class op extends gd {
|
|
|
22373
22373
|
return t.isInstancedInterleavedBuffer = !0, t.meshPerAttribute = this.meshPerAttribute, t;
|
|
22374
22374
|
}
|
|
22375
22375
|
}
|
|
22376
|
-
const b0 = /* @__PURE__ */ new
|
|
22376
|
+
const b0 = /* @__PURE__ */ new Ce();
|
|
22377
22377
|
class _d {
|
|
22378
22378
|
/**
|
|
22379
22379
|
* Constructs a new raycaster.
|
|
@@ -27311,7 +27311,7 @@ an.physical = {
|
|
|
27311
27311
|
vertexShader: St.meshphysical_vert,
|
|
27312
27312
|
fragmentShader: St.meshphysical_frag
|
|
27313
27313
|
};
|
|
27314
|
-
const ah = { r: 0, b: 0, g: 0 }, Fr = /* @__PURE__ */ new hn(), dE = /* @__PURE__ */ new
|
|
27314
|
+
const ah = { r: 0, b: 0, g: 0 }, Fr = /* @__PURE__ */ new hn(), dE = /* @__PURE__ */ new Ce();
|
|
27315
27315
|
function uE(s, e, t, i, n, r, a) {
|
|
27316
27316
|
const o = new Ie(0);
|
|
27317
27317
|
let l = r === !0 ? 0 : 1, c, h, d = null, u = 0, f = null;
|
|
@@ -29768,7 +29768,7 @@ function Y2(s, e, t, i, n, r, a) {
|
|
|
29768
29768
|
we = Ct.vertexShader, ct = Ct.fragmentShader;
|
|
29769
29769
|
} else
|
|
29770
29770
|
we = S.vertexShader, ct = S.fragmentShader, l.update(S), Fe = l.getVertexShaderID(S), ne = l.getFragmentShaderID(S);
|
|
29771
|
-
const ee = s.getRenderTarget(), Te = s.state.buffers.depth.getReversed(), Xe = U.isInstancedMesh === !0, Ge = U.isBatchedMesh === !0, ht = !!S.map, mt = !!S.matcap, it = !!re, de = !!S.aoMap, B = !!S.lightMap, he = !!S.bumpMap, ge = !!S.normalMap,
|
|
29771
|
+
const ee = s.getRenderTarget(), Te = s.state.buffers.depth.getReversed(), Xe = U.isInstancedMesh === !0, Ge = U.isBatchedMesh === !0, ht = !!S.map, mt = !!S.matcap, it = !!re, de = !!S.aoMap, B = !!S.lightMap, he = !!S.bumpMap, ge = !!S.normalMap, Pe = !!S.displacementMap, ve = !!S.emissiveMap, Qe = !!S.metalnessMap, ue = !!S.roughnessMap, ke = S.anisotropy > 0, N = S.clearcoat > 0, I = S.dispersion > 0, H = S.iridescence > 0, se = S.sheen > 0, ae = S.transmission > 0, te = ke && !!S.anisotropyMap, qe = N && !!S.clearcoatMap, Oe = N && !!S.clearcoatNormalMap, Ke = N && !!S.clearcoatRoughnessMap, We = H && !!S.iridescenceMap, me = H && !!S.iridescenceThicknessMap, Ae = se && !!S.sheenColorMap, rt = se && !!S.sheenRoughnessMap, nt = !!S.specularMap, Ve = !!S.specularColorMap, st = !!S.specularIntensityMap, V = ae && !!S.transmissionMap, be = ae && !!S.thicknessMap, Re = !!S.gradientMap, Le = !!S.alphaMap, _e = S.alphaTest > 0, le = !!S.alphaHash, $e = !!S.extensions;
|
|
29772
29772
|
let lt = yr;
|
|
29773
29773
|
S.toneMapped && (ee === null || ee.isXRRenderTarget === !0) && (lt = s.toneMapping);
|
|
29774
29774
|
const Ot = {
|
|
@@ -29800,7 +29800,7 @@ function Y2(s, e, t, i, n, r, a) {
|
|
|
29800
29800
|
lightMap: B,
|
|
29801
29801
|
bumpMap: he,
|
|
29802
29802
|
normalMap: ge,
|
|
29803
|
-
displacementMap: u &&
|
|
29803
|
+
displacementMap: u && Pe,
|
|
29804
29804
|
emissiveMap: ve,
|
|
29805
29805
|
normalMapObjectSpace: ge && S.normalMapType === qw,
|
|
29806
29806
|
normalMapTangentSpace: ge && S.normalMapType === ma,
|
|
@@ -29837,7 +29837,7 @@ function Y2(s, e, t, i, n, r, a) {
|
|
|
29837
29837
|
lightMapUv: B && v(S.lightMap.channel),
|
|
29838
29838
|
bumpMapUv: he && v(S.bumpMap.channel),
|
|
29839
29839
|
normalMapUv: ge && v(S.normalMap.channel),
|
|
29840
|
-
displacementMapUv:
|
|
29840
|
+
displacementMapUv: Pe && v(S.displacementMap.channel),
|
|
29841
29841
|
emissiveMapUv: ve && v(S.emissiveMap.channel),
|
|
29842
29842
|
metalnessMapUv: Qe && v(S.metalnessMap.channel),
|
|
29843
29843
|
roughnessMapUv: ue && v(S.roughnessMap.channel),
|
|
@@ -30198,7 +30198,7 @@ function K2(s) {
|
|
|
30198
30198
|
};
|
|
30199
30199
|
for (let c = 0; c < 9; c++)
|
|
30200
30200
|
i.probe.push(new P());
|
|
30201
|
-
const n = new P(), r = new
|
|
30201
|
+
const n = new P(), r = new Ce(), a = new Ce();
|
|
30202
30202
|
function o(c) {
|
|
30203
30203
|
let h = 0, d = 0, u = 0;
|
|
30204
30204
|
for (let S = 0; S < 9; S++)
|
|
@@ -30718,7 +30718,7 @@ function sP(s, e) {
|
|
|
30718
30718
|
function ge(V) {
|
|
30719
30719
|
V !== Sw ? (ee(s.CULL_FACE), V !== C && (V === xg ? s.cullFace(s.BACK) : V === Mw ? s.cullFace(s.FRONT) : s.cullFace(s.FRONT_AND_BACK))) : Te(s.CULL_FACE), C = V;
|
|
30720
30720
|
}
|
|
30721
|
-
function
|
|
30721
|
+
function Pe(V) {
|
|
30722
30722
|
V !== L && (j && s.lineWidth(V), L = V);
|
|
30723
30723
|
}
|
|
30724
30724
|
function ve(V, be, Re) {
|
|
@@ -30843,7 +30843,7 @@ function sP(s, e) {
|
|
|
30843
30843
|
setMaterial: B,
|
|
30844
30844
|
setFlipSided: he,
|
|
30845
30845
|
setCullFace: ge,
|
|
30846
|
-
setLineWidth:
|
|
30846
|
+
setLineWidth: Pe,
|
|
30847
30847
|
setPolygonOffset: ve,
|
|
30848
30848
|
setScissorTest: Qe,
|
|
30849
30849
|
activeTexture: ue,
|
|
@@ -31268,16 +31268,16 @@ function rP(s, e, t, i, n, r, a) {
|
|
|
31268
31268
|
const Ae = Math.max(1, I.width >> te), rt = Math.max(1, I.height >> te);
|
|
31269
31269
|
ae === s.TEXTURE_3D || ae === s.TEXTURE_2D_ARRAY ? t.texImage3D(ae, te, Ke, Ae, rt, I.depth, 0, qe, Oe, null) : t.texImage2D(ae, te, Ke, Ae, rt, 0, qe, Oe, null);
|
|
31270
31270
|
}
|
|
31271
|
-
t.bindFramebuffer(s.FRAMEBUFFER, N), ve(I) ? o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER, se, ae, me.__webglTexture, 0,
|
|
31271
|
+
t.bindFramebuffer(s.FRAMEBUFFER, N), ve(I) ? o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER, se, ae, me.__webglTexture, 0, Pe(I)) : (ae === s.TEXTURE_2D || ae >= s.TEXTURE_CUBE_MAP_POSITIVE_X && ae <= s.TEXTURE_CUBE_MAP_NEGATIVE_Z) && s.framebufferTexture2D(s.FRAMEBUFFER, se, ae, me.__webglTexture, te), t.bindFramebuffer(s.FRAMEBUFFER, null);
|
|
31272
31272
|
}
|
|
31273
31273
|
function Xe(N, I, H) {
|
|
31274
31274
|
if (s.bindRenderbuffer(s.RENDERBUFFER, N), I.depthBuffer) {
|
|
31275
|
-
const se = I.depthTexture, ae = se && se.isDepthTexture ? se.type : null, te = y(I.stencilBuffer, ae), qe = I.stencilBuffer ? s.DEPTH_STENCIL_ATTACHMENT : s.DEPTH_ATTACHMENT, Oe =
|
|
31275
|
+
const se = I.depthTexture, ae = se && se.isDepthTexture ? se.type : null, te = y(I.stencilBuffer, ae), qe = I.stencilBuffer ? s.DEPTH_STENCIL_ATTACHMENT : s.DEPTH_ATTACHMENT, Oe = Pe(I);
|
|
31276
31276
|
ve(I) ? o.renderbufferStorageMultisampleEXT(s.RENDERBUFFER, Oe, te, I.width, I.height) : H ? s.renderbufferStorageMultisample(s.RENDERBUFFER, Oe, te, I.width, I.height) : s.renderbufferStorage(s.RENDERBUFFER, te, I.width, I.height), s.framebufferRenderbuffer(s.FRAMEBUFFER, qe, s.RENDERBUFFER, N);
|
|
31277
31277
|
} else {
|
|
31278
31278
|
const se = I.textures;
|
|
31279
31279
|
for (let ae = 0; ae < se.length; ae++) {
|
|
31280
|
-
const te = se[ae], qe = r.convert(te.format, te.colorSpace), Oe = r.convert(te.type), Ke = x(te.internalFormat, qe, Oe, te.colorSpace), We =
|
|
31280
|
+
const te = se[ae], qe = r.convert(te.format, te.colorSpace), Oe = r.convert(te.type), Ke = x(te.internalFormat, qe, Oe, te.colorSpace), We = Pe(I);
|
|
31281
31281
|
H && ve(I) === !1 ? s.renderbufferStorageMultisample(s.RENDERBUFFER, We, Ke, I.width, I.height) : ve(I) ? o.renderbufferStorageMultisampleEXT(s.RENDERBUFFER, We, Ke, I.width, I.height) : s.renderbufferStorage(s.RENDERBUFFER, Ke, I.width, I.height);
|
|
31282
31282
|
}
|
|
31283
31283
|
}
|
|
@@ -31290,7 +31290,7 @@ function rP(s, e, t, i, n, r, a) {
|
|
|
31290
31290
|
throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");
|
|
31291
31291
|
const se = i.get(I.depthTexture);
|
|
31292
31292
|
se.__renderTarget = I, (!se.__webglTexture || I.depthTexture.image.width !== I.width || I.depthTexture.image.height !== I.height) && (I.depthTexture.image.width = I.width, I.depthTexture.image.height = I.height, I.depthTexture.needsUpdate = !0), X(I.depthTexture, 0);
|
|
31293
|
-
const ae = se.__webglTexture, te =
|
|
31293
|
+
const ae = se.__webglTexture, te = Pe(I);
|
|
31294
31294
|
if (I.depthTexture.format === da)
|
|
31295
31295
|
ve(I) ? o.framebufferTexture2DMultisampleEXT(s.FRAMEBUFFER, s.DEPTH_ATTACHMENT, s.TEXTURE_2D, ae, 0, te) : s.framebufferTexture2D(s.FRAMEBUFFER, s.DEPTH_ATTACHMENT, s.TEXTURE_2D, ae, 0);
|
|
31296
31296
|
else if (I.depthTexture.format === Sr)
|
|
@@ -31369,7 +31369,7 @@ function rP(s, e, t, i, n, r, a) {
|
|
|
31369
31369
|
for (let Oe = 0; Oe < ae.length; Oe++) {
|
|
31370
31370
|
const Ke = ae[Oe];
|
|
31371
31371
|
H.__webglColorRenderbuffer[Oe] = s.createRenderbuffer(), s.bindRenderbuffer(s.RENDERBUFFER, H.__webglColorRenderbuffer[Oe]);
|
|
31372
|
-
const We = r.convert(Ke.format, Ke.colorSpace), me = r.convert(Ke.type), Ae = x(Ke.internalFormat, We, me, Ke.colorSpace, N.isXRRenderTarget === !0), rt =
|
|
31372
|
+
const We = r.convert(Ke.format, Ke.colorSpace), me = r.convert(Ke.type), Ae = x(Ke.internalFormat, We, me, Ke.colorSpace, N.isXRRenderTarget === !0), rt = Pe(N);
|
|
31373
31373
|
s.renderbufferStorageMultisample(s.RENDERBUFFER, rt, Ae, N.width, N.height), s.framebufferRenderbuffer(s.FRAMEBUFFER, s.COLOR_ATTACHMENT0 + Oe, s.RENDERBUFFER, H.__webglColorRenderbuffer[Oe]);
|
|
31374
31374
|
}
|
|
31375
31375
|
s.bindRenderbuffer(s.RENDERBUFFER, null), N.depthBuffer && (H.__webglDepthRenderbuffer = s.createRenderbuffer(), Xe(H.__webglDepthRenderbuffer, N, !0)), t.bindFramebuffer(s.FRAMEBUFFER, null);
|
|
@@ -31446,7 +31446,7 @@ function rP(s, e, t, i, n, r, a) {
|
|
|
31446
31446
|
}
|
|
31447
31447
|
}
|
|
31448
31448
|
}
|
|
31449
|
-
function
|
|
31449
|
+
function Pe(N) {
|
|
31450
31450
|
return Math.min(n.maxSamples, N.samples);
|
|
31451
31451
|
}
|
|
31452
31452
|
function ve(N) {
|
|
@@ -31841,11 +31841,11 @@ class hP extends Ws {
|
|
|
31841
31841
|
const Z = new P(), ie = new P();
|
|
31842
31842
|
function pe(ne, ee, Te) {
|
|
31843
31843
|
Z.setFromMatrixPosition(ee.matrixWorld), ie.setFromMatrixPosition(Te.matrixWorld);
|
|
31844
|
-
const Xe = Z.distanceTo(ie), Ge = ee.projectionMatrix.elements, ht = Te.projectionMatrix.elements, mt = Ge[14] / (Ge[10] - 1), it = Ge[14] / (Ge[10] + 1), de = (Ge[9] + 1) / Ge[5], B = (Ge[9] - 1) / Ge[5], he = (Ge[8] - 1) / Ge[0], ge = (ht[8] + 1) / ht[0],
|
|
31844
|
+
const Xe = Z.distanceTo(ie), Ge = ee.projectionMatrix.elements, ht = Te.projectionMatrix.elements, mt = Ge[14] / (Ge[10] - 1), it = Ge[14] / (Ge[10] + 1), de = (Ge[9] + 1) / Ge[5], B = (Ge[9] - 1) / Ge[5], he = (Ge[8] - 1) / Ge[0], ge = (ht[8] + 1) / ht[0], Pe = mt * he, ve = mt * ge, Qe = Xe / (-he + ge), ue = Qe * -he;
|
|
31845
31845
|
if (ee.matrixWorld.decompose(ne.position, ne.quaternion, ne.scale), ne.translateX(ue), ne.translateZ(Qe), ne.matrixWorld.compose(ne.position, ne.quaternion, ne.scale), ne.matrixWorldInverse.copy(ne.matrixWorld).invert(), Ge[10] === -1)
|
|
31846
31846
|
ne.projectionMatrix.copy(ee.projectionMatrix), ne.projectionMatrixInverse.copy(ee.projectionMatrixInverse);
|
|
31847
31847
|
else {
|
|
31848
|
-
const ke = mt + Qe, N = it + Qe, I =
|
|
31848
|
+
const ke = mt + Qe, N = it + Qe, I = Pe - ue, H = ve + (Xe - ue), se = de * it / N * ke, ae = B * it / N * ke;
|
|
31849
31849
|
ne.projectionMatrix.makePerspective(I, H, se, ae, ke, N), ne.projectionMatrixInverse.copy(ne.projectionMatrix).invert();
|
|
31850
31850
|
}
|
|
31851
31851
|
}
|
|
@@ -31938,7 +31938,7 @@ class hP extends Ws {
|
|
|
31938
31938
|
};
|
|
31939
31939
|
}
|
|
31940
31940
|
}
|
|
31941
|
-
const zr = /* @__PURE__ */ new hn(), dP = /* @__PURE__ */ new
|
|
31941
|
+
const zr = /* @__PURE__ */ new hn(), dP = /* @__PURE__ */ new Ce();
|
|
31942
31942
|
function uP(s, e) {
|
|
31943
31943
|
function t(g, m) {
|
|
31944
31944
|
g.matrixAutoUpdate === !0 && g.updateMatrix(), m.value.copy(g.matrix);
|
|
@@ -34214,7 +34214,7 @@ class vb {
|
|
|
34214
34214
|
let Fe = !1;
|
|
34215
34215
|
const ne = new Oo();
|
|
34216
34216
|
let ee = !1, Te = !1;
|
|
34217
|
-
const Xe = new
|
|
34217
|
+
const Xe = new Ce(), Ge = new P(), ht = new Mt(), mt = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: !0 };
|
|
34218
34218
|
let it = !1;
|
|
34219
34219
|
function de() {
|
|
34220
34220
|
return M === null ? pe : 1;
|
|
@@ -34242,9 +34242,9 @@ class vb {
|
|
|
34242
34242
|
} catch (D) {
|
|
34243
34243
|
throw D("WebGLRenderer: " + D.message), D;
|
|
34244
34244
|
}
|
|
34245
|
-
let ge,
|
|
34245
|
+
let ge, Pe, ve, Qe, ue, ke, N, I, H, se, ae, te, qe, Oe, Ke, We, me, Ae, rt, nt, Ve, st, V, be;
|
|
34246
34246
|
function Re() {
|
|
34247
|
-
ge = new ME(B), ge.init(), st = new aP(B, ge),
|
|
34247
|
+
ge = new ME(B), ge.init(), st = new aP(B, ge), Pe = new mE(B, ge, e, st), ve = new sP(B, ge), Pe.reversedDepthBuffer && u && ve.buffers.depth.setReversed(!0), Qe = new EE(B), ue = new G2(), ke = new rP(B, ge, ve, ue, Pe, st, Qe), N = new vE(w), I = new SE(w), H = new RM(B), V = new fE(B, H), se = new AE(B, H, Qe, V), ae = new CE(B, se, H, Qe), rt = new PE(B, Pe, ke), We = new gE(ue), te = new Y2(w, N, I, ge, Pe, V, We), qe = new uP(w, ue), Oe = new Q2(), Ke = new J2(ge), Ae = new uE(w, N, I, ve, ae, f, l), me = new iP(w, ae, Pe), be = new fP(B, Qe, Pe, ve), nt = new pE(B, ge, Qe), Ve = new TE(B, ge, Qe), Qe.programs = te.programs, w.capabilities = Pe, w.extensions = ge, w.properties = ue, w.renderLists = Oe, w.shadowMap = me, w.state = ve, w.info = Qe;
|
|
34248
34248
|
}
|
|
34249
34249
|
Re();
|
|
34250
34250
|
const Le = new hP(w, B);
|
|
@@ -34597,7 +34597,7 @@ class vb {
|
|
|
34597
34597
|
if (ve.useProgram(un.program) && (xa = !0, fn = !0, Fo = !0), G.id !== C && (C = G.id, fn = !0), xa || L !== D) {
|
|
34598
34598
|
ve.buffers.depth.getReversed() && D.reversedDepth !== !0 && (D._reversedDepth = !0, D.updateProjectionMatrix()), ri.setValue(B, "projectionMatrix", D.projectionMatrix), ri.setValue(B, "viewMatrix", D.matrixWorldInverse);
|
|
34599
34599
|
const nn = ri.map.cameraPosition;
|
|
34600
|
-
nn !== void 0 && nn.setValue(B, Ge.setFromMatrixPosition(D.matrixWorld)),
|
|
34600
|
+
nn !== void 0 && nn.setValue(B, Ge.setFromMatrixPosition(D.matrixWorld)), Pe.logarithmicDepthBuffer && ri.setValue(
|
|
34601
34601
|
B,
|
|
34602
34602
|
"logDepthBufFC",
|
|
34603
34603
|
2 / (Math.log(D.far + 1) / Math.LN2)
|
|
@@ -34688,11 +34688,11 @@ class vb {
|
|
|
34688
34688
|
ve.bindFramebuffer(B.FRAMEBUFFER, Ue);
|
|
34689
34689
|
try {
|
|
34690
34690
|
const Ze = D.textures[He], ze = Ze.format, je = Ze.type;
|
|
34691
|
-
if (!
|
|
34691
|
+
if (!Pe.textureFormatReadable(ze)) {
|
|
34692
34692
|
vt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");
|
|
34693
34693
|
return;
|
|
34694
34694
|
}
|
|
34695
|
-
if (!
|
|
34695
|
+
if (!Pe.textureTypeReadable(je)) {
|
|
34696
34696
|
vt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");
|
|
34697
34697
|
return;
|
|
34698
34698
|
}
|
|
@@ -34710,9 +34710,9 @@ class vb {
|
|
|
34710
34710
|
if (Y >= 0 && Y <= D.width - G && $ >= 0 && $ <= D.height - W) {
|
|
34711
34711
|
ve.bindFramebuffer(B.FRAMEBUFFER, Ue);
|
|
34712
34712
|
const Ze = D.textures[He], ze = Ze.format, je = Ze.type;
|
|
34713
|
-
if (!
|
|
34713
|
+
if (!Pe.textureFormatReadable(ze))
|
|
34714
34714
|
throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");
|
|
34715
|
-
if (!
|
|
34715
|
+
if (!Pe.textureTypeReadable(je))
|
|
34716
34716
|
throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");
|
|
34717
34717
|
const at = B.createBuffer();
|
|
34718
34718
|
B.bindBuffer(B.PIXEL_PACK_BUFFER, at), B.bufferData(B.PIXEL_PACK_BUFFER, xe.byteLength, B.STREAM_READ), D.textures.length > 1 && B.readBuffer(B.COLOR_ATTACHMENT0 + He), B.readPixels(Y, $, G, W, st.convert(ze), st.convert(je), 0);
|
|
@@ -34799,7 +34799,7 @@ const gP = {
|
|
|
34799
34799
|
Vector3: P,
|
|
34800
34800
|
Vector4: Mt,
|
|
34801
34801
|
Quaternion: ui,
|
|
34802
|
-
Matrix4:
|
|
34802
|
+
Matrix4: Ce,
|
|
34803
34803
|
Spherical: db,
|
|
34804
34804
|
Box3: ft,
|
|
34805
34805
|
Sphere: ni,
|
|
@@ -35164,18 +35164,18 @@ const xP = {
|
|
|
35164
35164
|
added: "#16C47F",
|
|
35165
35165
|
modified: "#FFD65A",
|
|
35166
35166
|
notChanged: "#000000"
|
|
35167
|
-
},
|
|
35167
|
+
}, Ee = xP;
|
|
35168
35168
|
class Pi {
|
|
35169
35169
|
static information(e) {
|
|
35170
35170
|
console.log(
|
|
35171
35171
|
`%c ${e}`,
|
|
35172
|
-
`color: ${
|
|
35172
|
+
`color: ${Ee.primary}; background: ${Ee.background}; font-size: 16px;`
|
|
35173
35173
|
);
|
|
35174
35174
|
}
|
|
35175
35175
|
static error(e) {
|
|
35176
35176
|
console.log(
|
|
35177
35177
|
`%c ${e}`,
|
|
35178
|
-
`color: ${
|
|
35178
|
+
`color: ${Ee.accent}; background: ${Ee.background}; font-size: 16px;`
|
|
35179
35179
|
);
|
|
35180
35180
|
}
|
|
35181
35181
|
static memory(e) {
|
|
@@ -35508,7 +35508,7 @@ class Et {
|
|
|
35508
35508
|
return new Q(n, e.material);
|
|
35509
35509
|
}
|
|
35510
35510
|
}
|
|
35511
|
-
class
|
|
35511
|
+
class rD extends Hs {
|
|
35512
35512
|
/**
|
|
35513
35513
|
*
|
|
35514
35514
|
* @param geometry geometry for instanced mesh
|
|
@@ -35606,12 +35606,12 @@ class nD extends Hs {
|
|
|
35606
35606
|
var t, i;
|
|
35607
35607
|
if (e && this.reverseToOriginal(), this.hoveredIndexs.count() > 0)
|
|
35608
35608
|
for (let n = 0; n < this.hoveredIndexs.keys().length; n++) {
|
|
35609
|
-
let r = this.hoveredIndexs.keys()[n], a = new Q(this.geometry, this.hoveredIndexs.get(r)), o = new
|
|
35609
|
+
let r = this.hoveredIndexs.keys()[n], a = new Q(this.geometry, this.hoveredIndexs.get(r)), o = new Ce();
|
|
35610
35610
|
this.getMatrixAt(r, o), a.applyMatrix4(o), (t = this.parent) == null || t.add(a), this.overrideHoverMeshes.push(a);
|
|
35611
35611
|
}
|
|
35612
35612
|
if (this.selectedIndexs.count() > 0)
|
|
35613
35613
|
for (let n = 0; n < this.selectedIndexs.keys().length; n++) {
|
|
35614
|
-
let r = this.selectedIndexs.keys()[n], a = new Q(this.geometry, this.selectedIndexs.get(r)), o = new
|
|
35614
|
+
let r = this.selectedIndexs.keys()[n], a = new Q(this.geometry, this.selectedIndexs.get(r)), o = new Ce();
|
|
35615
35615
|
this.getMatrixAt(r, o), a.applyMatrix4(o), (i = this.parent) == null || i.add(a), this.overrideSelectMeshes.push(a);
|
|
35616
35616
|
}
|
|
35617
35617
|
}
|
|
@@ -35665,7 +35665,7 @@ class nD extends Hs {
|
|
|
35665
35665
|
const t = new _i(this.geometry);
|
|
35666
35666
|
this._edgeLines = new Ci(t, e);
|
|
35667
35667
|
for (let i = 0; i < this.count; i++) {
|
|
35668
|
-
const n = new
|
|
35668
|
+
const n = new Ce();
|
|
35669
35669
|
this.getMatrixAt(i, n);
|
|
35670
35670
|
const r = this._edgeLines.clone();
|
|
35671
35671
|
r.applyMatrix4(n), this._edgeGroup.add(r);
|
|
@@ -35933,7 +35933,7 @@ function Vu(s, e, t) {
|
|
|
35933
35933
|
return i[n];
|
|
35934
35934
|
return !1;
|
|
35935
35935
|
}
|
|
35936
|
-
const lh = new hn(), qt = new P(0, 1, 0), ev = new P(0, 0, 0), tv = new
|
|
35936
|
+
const lh = new hn(), qt = new P(0, 1, 0), ev = new P(0, 0, 0), tv = new Ce(), ch = new ui(), Yh = new ui(), ls = new P(), iv = new Ce(), _l = new P(1, 0, 0), Gr = new P(0, 1, 0), wl = new P(0, 0, 1), hh = new P(), sl = new P(), rl = new P();
|
|
35937
35937
|
class LP extends Lt {
|
|
35938
35938
|
constructor(e) {
|
|
35939
35939
|
super(), this.isTransformControlsRoot = !0, this.controls = e, this.visible = !1;
|
|
@@ -36999,7 +36999,7 @@ class bb extends gt {
|
|
|
36999
36999
|
this.defines && (e === !0 !== this.alphaToCoverage && (this.needsUpdate = !0), e === !0 ? this.defines.USE_ALPHA_TO_COVERAGE = "" : delete this.defines.USE_ALPHA_TO_COVERAGE);
|
|
37000
37000
|
}
|
|
37001
37001
|
}
|
|
37002
|
-
const Xu = new Mt(), sv = new P(), rv = new P(), Li = new Mt(), Oi = new Mt(), cs = new Mt(), Hu = new P(), Yu = new
|
|
37002
|
+
const Xu = new Mt(), sv = new P(), rv = new P(), Li = new Mt(), Oi = new Mt(), cs = new Mt(), Hu = new P(), Yu = new Ce(), Ui = new _s(), av = new P(), uh = new ft(), fh = new ni(), hs = new Mt();
|
|
37003
37003
|
let ms, sa;
|
|
37004
37004
|
function ov(s, e, t) {
|
|
37005
37005
|
return hs.set(0, 0, -e, 1).applyMatrix4(s.projectionMatrix), hs.multiplyScalar(1 / hs.w), hs.x = sa / t.width, hs.y = sa / t.height, hs.applyMatrix4(s.projectionMatrixInverse), hs.multiplyScalar(1 / hs.w), Math.abs(Math.max(hs.x, hs.y));
|
|
@@ -37711,7 +37711,7 @@ class aC {
|
|
|
37711
37711
|
return o.length < 1 ? null : (o.push(this.parser.createNodeMesh(e)), Promise.all(o).then((c) => {
|
|
37712
37712
|
const h = c.pop(), d = h.isGroup ? h.children : [h], u = c[0].count, f = [];
|
|
37713
37713
|
for (const p of d) {
|
|
37714
|
-
const v = new
|
|
37714
|
+
const v = new Ce(), g = new P(), m = new ui(), b = new P(1, 1, 1), x = new Hs(p.geometry, p.material, u);
|
|
37715
37715
|
for (let y = 0; y < u; y++)
|
|
37716
37716
|
l.TRANSLATION && g.fromBufferAttribute(l.TRANSLATION, y), l.ROTATION && m.fromBufferAttribute(l.ROTATION, y), l.SCALE && b.fromBufferAttribute(l.SCALE, y), x.setMatrixAt(y, v.compose(g, m, b));
|
|
37717
37717
|
for (const y in l)
|
|
@@ -38000,7 +38000,7 @@ function dp(s) {
|
|
|
38000
38000
|
function xC(s) {
|
|
38001
38001
|
return s.search(/\.jpe?g($|\?)/i) > 0 || s.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : s.search(/\.webp($|\?)/i) > 0 || s.search(/^data\:image\/webp/) === 0 ? "image/webp" : s.search(/\.ktx2($|\?)/i) > 0 || s.search(/^data\:image\/ktx2/) === 0 ? "image/ktx2" : "image/png";
|
|
38002
38002
|
}
|
|
38003
|
-
const bC = new
|
|
38003
|
+
const bC = new Ce();
|
|
38004
38004
|
class yC {
|
|
38005
38005
|
constructor(e = {}, t = {}) {
|
|
38006
38006
|
this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new XP(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
|
|
@@ -38556,7 +38556,7 @@ class yC {
|
|
|
38556
38556
|
const d = a[c];
|
|
38557
38557
|
if (d) {
|
|
38558
38558
|
o.push(d);
|
|
38559
|
-
const u = new
|
|
38559
|
+
const u = new Ce();
|
|
38560
38560
|
r !== null && u.fromArray(r.array, c * 16), l.push(u);
|
|
38561
38561
|
} else
|
|
38562
38562
|
console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', t.joints[c]);
|
|
@@ -38657,7 +38657,7 @@ class yC {
|
|
|
38657
38657
|
for (let d = 0, u = c.length; d < u; d++)
|
|
38658
38658
|
h.add(c[d]);
|
|
38659
38659
|
if (r.name && (h.userData.name = r.name, h.name = a), us(h, r), r.extensions && Vr(i, h, r), r.matrix !== void 0) {
|
|
38660
|
-
const d = new
|
|
38660
|
+
const d = new Ce();
|
|
38661
38661
|
d.fromArray(r.matrix), h.applyMatrix4(d);
|
|
38662
38662
|
} else
|
|
38663
38663
|
r.translation !== void 0 && h.position.fromArray(r.translation), r.rotation !== void 0 && h.quaternion.fromArray(r.rotation), r.scale !== void 0 && h.scale.fromArray(r.scale);
|
|
@@ -39001,13 +39001,13 @@ class wC {
|
|
|
39001
39001
|
noise4d(e, t, i, n) {
|
|
39002
39002
|
const r = this.grad4, a = this.simplex, o = this.perm, l = (Math.sqrt(5) - 1) / 4, c = (5 - Math.sqrt(5)) / 20;
|
|
39003
39003
|
let h, d, u, f, p;
|
|
39004
|
-
const v = (e + t + i + n) * l, g = Math.floor(e + v), m = Math.floor(t + v), b = Math.floor(i + v), x = Math.floor(n + v), y = (g + m + b + x) * c, _ = g - y, w = m - y, T = b - y, E = x - y, S = e - _, M = t - w, C = i - T, L = n - E, U = S > M ? 32 : 0, z = S > C ? 16 : 0, X = M > C ? 8 : 0, j = S > L ? 4 : 0, re = M > L ? 2 : 0, Z = C > L ? 1 : 0, ie = U + z + X + j + re + Z, pe = a[ie][0] >= 3 ? 1 : 0, Ne = a[ie][1] >= 3 ? 1 : 0, ce = a[ie][2] >= 3 ? 1 : 0, we = a[ie][3] >= 3 ? 1 : 0, ct = a[ie][0] >= 2 ? 1 : 0, Fe = a[ie][1] >= 2 ? 1 : 0, ne = a[ie][2] >= 2 ? 1 : 0, ee = a[ie][3] >= 2 ? 1 : 0, Te = a[ie][0] >= 1 ? 1 : 0, Xe = a[ie][1] >= 1 ? 1 : 0, Ge = a[ie][2] >= 1 ? 1 : 0, ht = a[ie][3] >= 1 ? 1 : 0, mt = S - pe + c, it = M - Ne + c, de = C - ce + c, B = L - we + c, he = S - ct + 2 * c, ge = M - Fe + 2 * c,
|
|
39004
|
+
const v = (e + t + i + n) * l, g = Math.floor(e + v), m = Math.floor(t + v), b = Math.floor(i + v), x = Math.floor(n + v), y = (g + m + b + x) * c, _ = g - y, w = m - y, T = b - y, E = x - y, S = e - _, M = t - w, C = i - T, L = n - E, U = S > M ? 32 : 0, z = S > C ? 16 : 0, X = M > C ? 8 : 0, j = S > L ? 4 : 0, re = M > L ? 2 : 0, Z = C > L ? 1 : 0, ie = U + z + X + j + re + Z, pe = a[ie][0] >= 3 ? 1 : 0, Ne = a[ie][1] >= 3 ? 1 : 0, ce = a[ie][2] >= 3 ? 1 : 0, we = a[ie][3] >= 3 ? 1 : 0, ct = a[ie][0] >= 2 ? 1 : 0, Fe = a[ie][1] >= 2 ? 1 : 0, ne = a[ie][2] >= 2 ? 1 : 0, ee = a[ie][3] >= 2 ? 1 : 0, Te = a[ie][0] >= 1 ? 1 : 0, Xe = a[ie][1] >= 1 ? 1 : 0, Ge = a[ie][2] >= 1 ? 1 : 0, ht = a[ie][3] >= 1 ? 1 : 0, mt = S - pe + c, it = M - Ne + c, de = C - ce + c, B = L - we + c, he = S - ct + 2 * c, ge = M - Fe + 2 * c, Pe = C - ne + 2 * c, ve = L - ee + 2 * c, Qe = S - Te + 3 * c, ue = M - Xe + 3 * c, ke = C - Ge + 3 * c, N = L - ht + 3 * c, I = S - 1 + 4 * c, H = M - 1 + 4 * c, se = C - 1 + 4 * c, ae = L - 1 + 4 * c, te = g & 255, qe = m & 255, Oe = b & 255, Ke = x & 255, We = o[te + o[qe + o[Oe + o[Ke]]]] % 32, me = o[te + pe + o[qe + Ne + o[Oe + ce + o[Ke + we]]]] % 32, Ae = o[te + ct + o[qe + Fe + o[Oe + ne + o[Ke + ee]]]] % 32, rt = o[te + Te + o[qe + Xe + o[Oe + Ge + o[Ke + ht]]]] % 32, nt = o[te + 1 + o[qe + 1 + o[Oe + 1 + o[Ke + 1]]]] % 32;
|
|
39005
39005
|
let Ve = 0.6 - S * S - M * M - C * C - L * L;
|
|
39006
39006
|
Ve < 0 ? h = 0 : (Ve *= Ve, h = Ve * Ve * this._dot4(r[We], S, M, C, L));
|
|
39007
39007
|
let st = 0.6 - mt * mt - it * it - de * de - B * B;
|
|
39008
39008
|
st < 0 ? d = 0 : (st *= st, d = st * st * this._dot4(r[me], mt, it, de, B));
|
|
39009
|
-
let V = 0.6 - he * he - ge * ge -
|
|
39010
|
-
V < 0 ? u = 0 : (V *= V, u = V * V * this._dot4(r[Ae], he, ge,
|
|
39009
|
+
let V = 0.6 - he * he - ge * ge - Pe * Pe - ve * ve;
|
|
39010
|
+
V < 0 ? u = 0 : (V *= V, u = V * V * this._dot4(r[Ae], he, ge, Pe, ve));
|
|
39011
39011
|
let be = 0.6 - Qe * Qe - ue * ue - ke * ke - N * N;
|
|
39012
39012
|
be < 0 ? f = 0 : (be *= be, f = be * be * this._dot4(r[rt], Qe, ue, ke, N));
|
|
39013
39013
|
let Re = 0.6 - I * I - H * H - se * se - ae * ae;
|
|
@@ -39307,7 +39307,7 @@ class mr extends zn {
|
|
|
39307
39307
|
blending: $t,
|
|
39308
39308
|
depthTest: !1,
|
|
39309
39309
|
depthWrite: !1
|
|
39310
|
-
}), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Ie(), this.oldClearAlpha = 1, this._fsQuad = new Er(null), this.tempPulseColor1 = new Ie(), this.tempPulseColor2 = new Ie(), this.textureMatrix = new
|
|
39310
|
+
}), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Ie(), this.oldClearAlpha = 1, this._fsQuad = new Er(null), this.tempPulseColor1 = new Ie(), this.tempPulseColor2 = new Ie(), this.textureMatrix = new Ce();
|
|
39311
39311
|
function h(d, u) {
|
|
39312
39312
|
const f = u.isPerspectiveCamera ? "perspective" : "orthographic";
|
|
39313
39313
|
return d.replace(/DEPTH_TO_VIEW_Z/g, f + "DepthToViewZ");
|
|
@@ -39760,8 +39760,8 @@ const mh = {
|
|
|
39760
39760
|
size: { value: new K(512, 512) },
|
|
39761
39761
|
cameraNear: { value: 1 },
|
|
39762
39762
|
cameraFar: { value: 100 },
|
|
39763
|
-
cameraProjectionMatrix: { value: new
|
|
39764
|
-
cameraInverseProjectionMatrix: { value: new
|
|
39763
|
+
cameraProjectionMatrix: { value: new Ce() },
|
|
39764
|
+
cameraInverseProjectionMatrix: { value: new Ce() },
|
|
39765
39765
|
scale: { value: 1 },
|
|
39766
39766
|
intensity: { value: 0.1 },
|
|
39767
39767
|
bias: { value: 0.5 },
|
|
@@ -40838,8 +40838,8 @@ const CC = [
|
|
|
40838
40838
|
cameraNear: { value: null },
|
|
40839
40839
|
cameraFar: { value: null },
|
|
40840
40840
|
resolution: { value: new K() },
|
|
40841
|
-
cameraProjectionMatrix: { value: new
|
|
40842
|
-
cameraInverseProjectionMatrix: { value: new
|
|
40841
|
+
cameraProjectionMatrix: { value: new Ce() },
|
|
40842
|
+
cameraInverseProjectionMatrix: { value: new Ce() },
|
|
40843
40843
|
kernelRadius: { value: 8 },
|
|
40844
40844
|
minDistance: { value: 5e-3 },
|
|
40845
40845
|
maxDistance: { value: 0.05 }
|
|
@@ -41675,7 +41675,7 @@ const RC = [
|
|
|
41675
41675
|
|
|
41676
41676
|
}`
|
|
41677
41677
|
)
|
|
41678
|
-
};
|
|
41678
|
+
}, OC = Et.hexToRGB(Ee.accent);
|
|
41679
41679
|
class Fn extends Q {
|
|
41680
41680
|
constructor(e, t, i) {
|
|
41681
41681
|
super(e, t), this.globalMaterialIndex = -1, this.workerPool = null, this._bufferElements = [], this._colors = null, this._originalColor = null, this._elementMap = /* @__PURE__ */ new Map(), this._isBatching = !1, this._batchQueue = [], this._isProcessingQueue = !1, this._edgeLines = null, this._edgeRanges = /* @__PURE__ */ new Map(), this._edgeThreshold = 60, this._edgeMaterial = null, this._selectedElements = [], this._hidingElements = [], this._isolatingElements = [], this._hiddenSet = /* @__PURE__ */ new Set(), this._isolatedSet = /* @__PURE__ */ new Set(), this._elementOpacityMap = /* @__PURE__ */ new Map(), this._isRGBAMode = !1, this._elementOriginalColors = /* @__PURE__ */ new Map(), this._isGeneratedLights = !1, this._pointLight = null, this.workerPool = i || null;
|
|
@@ -41726,7 +41726,11 @@ class Fn extends Q {
|
|
|
41726
41726
|
}
|
|
41727
41727
|
batch(e) {
|
|
41728
41728
|
this._isBatching = !0;
|
|
41729
|
-
const t = this.geometry.getAttribute(
|
|
41729
|
+
const t = this.geometry.getAttribute(
|
|
41730
|
+
"position"
|
|
41731
|
+
), i = this.geometry.getAttribute(
|
|
41732
|
+
"color"
|
|
41733
|
+
), n = this.geometry.getIndex(), r = t ? t.count : 0, a = n ? n.count : 0, o = i ? i.itemSize : 4;
|
|
41730
41734
|
let l = r, c = a;
|
|
41731
41735
|
e.forEach((m) => {
|
|
41732
41736
|
if (m.buffer) {
|
|
@@ -41762,7 +41766,10 @@ class Fn extends Q {
|
|
|
41762
41766
|
count: b,
|
|
41763
41767
|
indices: x
|
|
41764
41768
|
}), v += b, this._bufferElements.push(m);
|
|
41765
|
-
}), this.geometry.setAttribute(
|
|
41769
|
+
}), this.geometry.setAttribute(
|
|
41770
|
+
"position",
|
|
41771
|
+
new ot(h, 3)
|
|
41772
|
+
), this.geometry.setAttribute("color", new ot(d, 4)), this.geometry.setIndex(new ot(u, 1)), this.geometry.hasAttribute("normal") && this.geometry.deleteAttribute("normal"), this.geometry.computeVertexNormals(), this.geometry.boundingSphere = null, this.geometry.computeBoundingSphere();
|
|
41766
41773
|
try {
|
|
41767
41774
|
this.geometry.boundsTree && (this.geometry.boundsTree = null), this.geometry.computeBoundsTree();
|
|
41768
41775
|
} catch {
|
|
@@ -42002,26 +42009,39 @@ class Fn extends Q {
|
|
|
42002
42009
|
* Select elements (highlights them with accent color)
|
|
42003
42010
|
*/
|
|
42004
42011
|
select(e, t = []) {
|
|
42005
|
-
this.
|
|
42006
|
-
|
|
42007
|
-
), this.
|
|
42008
|
-
if (this._bufferElements.find(
|
|
42009
|
-
(n) => n.modelId.toString() == i.modelId && n.elementId == i.elementId
|
|
42010
|
-
)) {
|
|
42011
|
-
const n = Et.hexToRGB(Ce.accent);
|
|
42012
|
-
this.changeColor([i], n), this._selectedElements.push(i);
|
|
42013
|
-
}
|
|
42014
|
-
});
|
|
42012
|
+
this.unselect(), e.forEach((i) => {
|
|
42013
|
+
this._selectedElements.push(i);
|
|
42014
|
+
}), this.changeColor(e, OC);
|
|
42015
42015
|
}
|
|
42016
42016
|
get selectedElements() {
|
|
42017
42017
|
return this._selectedElements;
|
|
42018
42018
|
}
|
|
42019
|
+
unselect() {
|
|
42020
|
+
if (this._selectedElements.length > 0) {
|
|
42021
|
+
if (this._colors) {
|
|
42022
|
+
this._elementMap.forEach((t, i) => {
|
|
42023
|
+
t.forEach((n, r) => {
|
|
42024
|
+
for (const a of n)
|
|
42025
|
+
for (let o = 0; o < a.count; o++) {
|
|
42026
|
+
const l = (a.start + o) * 4;
|
|
42027
|
+
this._originalColor && (this._colors[l] = this._originalColor.r, this._colors[l + 1] = this._originalColor.g, this._colors[l + 2] = this._originalColor.b), this._colors[l + 3] = 1;
|
|
42028
|
+
}
|
|
42029
|
+
});
|
|
42030
|
+
});
|
|
42031
|
+
const e = this.geometry.getAttribute(
|
|
42032
|
+
"color"
|
|
42033
|
+
);
|
|
42034
|
+
e.needsUpdate = !0;
|
|
42035
|
+
}
|
|
42036
|
+
this._selectedElements = [];
|
|
42037
|
+
}
|
|
42038
|
+
}
|
|
42019
42039
|
//#endregion
|
|
42020
42040
|
//#region Hide/Isolate/Show
|
|
42021
42041
|
/**
|
|
42022
42042
|
* Hide elements by setting their alpha to 0 (GPU-accelerated)
|
|
42023
42043
|
* Hidden elements are discarded in fragment shader - no rendering cost
|
|
42024
|
-
*
|
|
42044
|
+
*
|
|
42025
42045
|
* @param elements - Elements to hide (defaults to selected elements)
|
|
42026
42046
|
*/
|
|
42027
42047
|
hide(e) {
|
|
@@ -42033,7 +42053,7 @@ class Fn extends Q {
|
|
|
42033
42053
|
}
|
|
42034
42054
|
/**
|
|
42035
42055
|
* Isolate elements - show ONLY these elements, hide everything else
|
|
42036
|
-
*
|
|
42056
|
+
*
|
|
42037
42057
|
* @param elements - Elements to isolate (defaults to selected elements)
|
|
42038
42058
|
* @returns The isolated elements
|
|
42039
42059
|
*/
|
|
@@ -42095,15 +42115,15 @@ class Fn extends Q {
|
|
|
42095
42115
|
/**
|
|
42096
42116
|
* Set opacity for specific elements (0.0 = invisible, 1.0 = fully opaque)
|
|
42097
42117
|
* Uses custom shader's per-vertex alpha support
|
|
42098
|
-
*
|
|
42118
|
+
*
|
|
42099
42119
|
* @param elements - Elements to modify
|
|
42100
42120
|
* @param opacity - Opacity value (0.0 to 1.0)
|
|
42101
|
-
*
|
|
42121
|
+
*
|
|
42102
42122
|
* @example
|
|
42103
42123
|
* ```typescript
|
|
42104
42124
|
* // Semi-transparent (ghost mode)
|
|
42105
42125
|
* mesh.setElementOpacity([{ modelId: "0", elementId: "abc" }], 0.3);
|
|
42106
|
-
*
|
|
42126
|
+
*
|
|
42107
42127
|
* // Fully hidden but still raycastable
|
|
42108
42128
|
* mesh.setElementOpacity([{ modelId: "0", elementId: "abc" }], 0.0);
|
|
42109
42129
|
* ```
|
|
@@ -42134,7 +42154,7 @@ class Fn extends Q {
|
|
|
42134
42154
|
/**
|
|
42135
42155
|
* Ghost mode - semi-transparent with optional desaturation
|
|
42136
42156
|
* Perfect for showing context while highlighting other elements
|
|
42137
|
-
*
|
|
42157
|
+
*
|
|
42138
42158
|
* @param elements - Elements to ghost
|
|
42139
42159
|
* @param ghostOpacity - Opacity for ghost mode (default: 0.15)
|
|
42140
42160
|
* @param desaturate - Whether to desaturate color (default: true)
|
|
@@ -42163,14 +42183,16 @@ class Fn extends Q {
|
|
|
42163
42183
|
/**
|
|
42164
42184
|
* Ghost all elements EXCEPT the specified ones
|
|
42165
42185
|
* Focused elements remain fully opaque, everything else becomes ghosted
|
|
42166
|
-
*
|
|
42186
|
+
*
|
|
42167
42187
|
* @param focusElements - Elements to keep fully visible
|
|
42168
42188
|
* @param ghostOpacity - Opacity for non-focused elements (default: 0.1)
|
|
42169
42189
|
*/
|
|
42170
42190
|
ghostExcept(e, t = 0.1) {
|
|
42171
42191
|
if (!this._colors)
|
|
42172
42192
|
return;
|
|
42173
|
-
const i = new Set(
|
|
42193
|
+
const i = new Set(
|
|
42194
|
+
e.map((r) => `${r.modelId}:${r.elementId}`)
|
|
42195
|
+
);
|
|
42174
42196
|
this._elementMap.forEach((r, a) => {
|
|
42175
42197
|
r.forEach((o, l) => {
|
|
42176
42198
|
const c = `${a}:${l}`, h = i.has(c), d = h ? 1 : t;
|
|
@@ -42386,7 +42408,10 @@ class Fn extends Q {
|
|
|
42386
42408
|
n[h] = l.r, n[h + 1] = l.g, n[h + 2] = l.b;
|
|
42387
42409
|
}
|
|
42388
42410
|
}
|
|
42389
|
-
this.geometry.setAttribute(
|
|
42411
|
+
this.geometry.setAttribute(
|
|
42412
|
+
"color",
|
|
42413
|
+
new ot(n, t)
|
|
42414
|
+
), this.geometry.attributes.color.needsUpdate = !0, this._colors = n, console.log("✅ Unique colors assigned to each face.");
|
|
42390
42415
|
}
|
|
42391
42416
|
}
|
|
42392
42417
|
/**
|
|
@@ -42519,10 +42544,10 @@ class Fn extends Q {
|
|
|
42519
42544
|
/**
|
|
42520
42545
|
* Create simplified LOD versions of this batched mesh
|
|
42521
42546
|
* All LOD meshes maintain full element mapping functionality (hide, isolate, changeColor)
|
|
42522
|
-
*
|
|
42547
|
+
*
|
|
42523
42548
|
* @param lodLevels - Array of simplification options for each LOD level
|
|
42524
42549
|
* @returns Promise resolving to array of meshes [original, LOD1, LOD2, ...]
|
|
42525
|
-
*
|
|
42550
|
+
*
|
|
42526
42551
|
* @example
|
|
42527
42552
|
* ```typescript
|
|
42528
42553
|
* const lodMeshes = await originalMesh.createSimplifiedLODs([
|
|
@@ -42530,15 +42555,17 @@ class Fn extends Q {
|
|
|
42530
42555
|
* { ratio: 0.4, error: 0.02 }, // LOD2: 40% detail
|
|
42531
42556
|
* { ratio: 0.2, error: 0.05 }, // LOD3: 20% detail
|
|
42532
42557
|
* ]);
|
|
42533
|
-
*
|
|
42558
|
+
*
|
|
42534
42559
|
* // All LODs support full operations
|
|
42535
42560
|
* lodMeshes.forEach(mesh => mesh.hide(elements)); // Works on all!
|
|
42536
42561
|
* ```
|
|
42537
42562
|
*/
|
|
42538
42563
|
async createSimplifiedLODs(e) {
|
|
42539
42564
|
var n, r;
|
|
42540
|
-
const { simplifyBufferElementsBatch: t } = await import("./batched-mesh-simplifier-
|
|
42541
|
-
console.log(
|
|
42565
|
+
const { simplifyBufferElementsBatch: t } = await import("./batched-mesh-simplifier-CvB-nu0g.mjs"), i = [this];
|
|
42566
|
+
console.log(
|
|
42567
|
+
`🔨 Creating ${e.length} LOD levels for batched mesh...`
|
|
42568
|
+
);
|
|
42542
42569
|
for (let a = 0; a < e.length; a++) {
|
|
42543
42570
|
const o = e[a];
|
|
42544
42571
|
console.log(`📦 Processing LOD ${a + 1}/${e.length}...`);
|
|
@@ -42568,10 +42595,10 @@ class Fn extends Q {
|
|
|
42568
42595
|
* FAST: Create simplified LOD by simplifying entire geometry at once
|
|
42569
42596
|
* ⚠️ This breaks element mapping - hide/isolate/changeColor won't work on simplified mesh
|
|
42570
42597
|
* Use this when you only need visual LOD without element operations
|
|
42571
|
-
*
|
|
42598
|
+
*
|
|
42572
42599
|
* @param options - Simplification options
|
|
42573
42600
|
* @returns Promise resolving to simplified mesh
|
|
42574
|
-
*
|
|
42601
|
+
*
|
|
42575
42602
|
* @example
|
|
42576
42603
|
* ```typescript
|
|
42577
42604
|
* const lodMesh = await originalMesh.createSimplifiedLODFast({ ratio: 0.5 });
|
|
@@ -42579,7 +42606,7 @@ class Fn extends Q {
|
|
|
42579
42606
|
* ```
|
|
42580
42607
|
*/
|
|
42581
42608
|
async createSimplifiedLODFast(e) {
|
|
42582
|
-
const { simplifyBatchedMeshFast: t } = await import("./batched-mesh-simplifier-
|
|
42609
|
+
const { simplifyBatchedMeshFast: t } = await import("./batched-mesh-simplifier-CvB-nu0g.mjs");
|
|
42583
42610
|
return t(this, e);
|
|
42584
42611
|
}
|
|
42585
42612
|
/**
|
|
@@ -42591,7 +42618,7 @@ class Fn extends Q {
|
|
|
42591
42618
|
}), this.geometry.index && this.geometry.setIndex(null)), this._edgeLines && (this._edgeLines.geometry && this._edgeLines.geometry.dispose(), this.remove(this._edgeLines), this._edgeLines = null), this.geometry = null;
|
|
42592
42619
|
}
|
|
42593
42620
|
}
|
|
42594
|
-
const Ol = class Ol extends Lt {
|
|
42621
|
+
const NC = Et.hexToRGB(Ee.accent), Ol = class Ol extends Lt {
|
|
42595
42622
|
constructor(e) {
|
|
42596
42623
|
super(), this.material = e, this.globalMaterialIndex = -1, this._instancedMeshes = /* @__PURE__ */ new Map(), this._bufferElements = [], this._originalColor = null, this._elementMap = /* @__PURE__ */ new Map(), this._originalTransforms = /* @__PURE__ */ new Map(), this._elementOpacity = /* @__PURE__ */ new Map(), this._selectedElements = [], this._hidingElements = [], this._isolatingElements = [], this._edgeLines = /* @__PURE__ */ new Map(), this._edgeRanges = /* @__PURE__ */ new Map(), this._edgeThreshold = 60, this._edgeMaterial = null, this._isGeneratedLights = !1, this._pointLight = null, this._hiddenSet = /* @__PURE__ */ new Set(), this._isolatedSet = /* @__PURE__ */ new Set(), this.material && "vertexColors" in this.material && (this.material.vertexColors = !0, this.material.needsUpdate = !0);
|
|
42597
42624
|
}
|
|
@@ -42652,7 +42679,10 @@ const Ol = class Ol extends Lt {
|
|
|
42652
42679
|
});
|
|
42653
42680
|
}), r.instanceColor = new yn(a, 3), r.instanceMatrix.needsUpdate = !0;
|
|
42654
42681
|
const o = new Float32Array(t.length);
|
|
42655
|
-
return o.fill(1), n.setAttribute(
|
|
42682
|
+
return o.fill(1), n.setAttribute(
|
|
42683
|
+
"instanceOpacity",
|
|
42684
|
+
new yn(o, 1)
|
|
42685
|
+
), this.material && "vertexColors" in this.material && (this.material.vertexColors = !0, this.material.needsUpdate = !0), r;
|
|
42656
42686
|
}
|
|
42657
42687
|
_createGeometryFromBuffer(e) {
|
|
42658
42688
|
const t = new dt();
|
|
@@ -42674,9 +42704,9 @@ const Ol = class Ol extends Lt {
|
|
|
42674
42704
|
}
|
|
42675
42705
|
_transformArrayToMatrix4(e) {
|
|
42676
42706
|
if (e.length === 16)
|
|
42677
|
-
return new
|
|
42707
|
+
return new Ce().fromArray(e);
|
|
42678
42708
|
if (e.length === 12) {
|
|
42679
|
-
const t = new
|
|
42709
|
+
const t = new Ce();
|
|
42680
42710
|
return t.set(
|
|
42681
42711
|
e[0],
|
|
42682
42712
|
e[1],
|
|
@@ -42696,7 +42726,7 @@ const Ol = class Ol extends Lt {
|
|
|
42696
42726
|
1
|
|
42697
42727
|
), t;
|
|
42698
42728
|
} else
|
|
42699
|
-
return console.warn("Unsupported transform array length:", e.length), new
|
|
42729
|
+
return console.warn("Unsupported transform array length:", e.length), new Ce().identity();
|
|
42700
42730
|
}
|
|
42701
42731
|
_generateGeometryKey(e) {
|
|
42702
42732
|
let t = e.length.toString();
|
|
@@ -42712,19 +42742,13 @@ const Ol = class Ol extends Lt {
|
|
|
42712
42742
|
}
|
|
42713
42743
|
//#region Selection and Color Control
|
|
42714
42744
|
select(e, t = []) {
|
|
42715
|
-
this.
|
|
42716
|
-
(i) => this.resetColor(
|
|
42717
|
-
i.modelId,
|
|
42718
|
-
i.elementId,
|
|
42719
|
-
t
|
|
42720
|
-
)
|
|
42721
|
-
), this._selectedElements = []), e.forEach((i) => {
|
|
42745
|
+
this.unselect(), e.forEach((i) => {
|
|
42722
42746
|
var r;
|
|
42723
|
-
|
|
42724
|
-
|
|
42725
|
-
|
|
42726
|
-
|
|
42727
|
-
|
|
42747
|
+
((r = this._elementMap.get(i.modelId)) == null ? void 0 : r.get(i.elementId)) && this._selectedElements.push(i);
|
|
42748
|
+
}), this.changeColor(e, NC);
|
|
42749
|
+
}
|
|
42750
|
+
unselect() {
|
|
42751
|
+
this._selectedElements.length > 0 && (this.resetElementOpacity(), this._selectedElements = []);
|
|
42728
42752
|
}
|
|
42729
42753
|
changeColor(e, t) {
|
|
42730
42754
|
e.forEach(({ modelId: i, elementId: n }) => {
|
|
@@ -42784,7 +42808,7 @@ const Ol = class Ol extends Lt {
|
|
|
42784
42808
|
/**
|
|
42785
42809
|
* Hide elements by setting their transform scale to 0
|
|
42786
42810
|
* Zero-scaled instances are automatically culled by GPU - maximum performance
|
|
42787
|
-
*
|
|
42811
|
+
*
|
|
42788
42812
|
* @param elements - Elements to hide (defaults to selected elements)
|
|
42789
42813
|
*/
|
|
42790
42814
|
hide(e) {
|
|
@@ -42796,14 +42820,17 @@ const Ol = class Ol extends Lt {
|
|
|
42796
42820
|
var a;
|
|
42797
42821
|
const r = (a = this._elementMap.get(i)) == null ? void 0 : a.get(n);
|
|
42798
42822
|
r && r.forEach(({ instancedMesh: o, instanceIndex: l }) => {
|
|
42799
|
-
o.setMatrixAt(
|
|
42823
|
+
o.setMatrixAt(
|
|
42824
|
+
l,
|
|
42825
|
+
Ol.ZERO_MATRIX
|
|
42826
|
+
), o.instanceMatrix.needsUpdate = !0;
|
|
42800
42827
|
});
|
|
42801
42828
|
}), this.hideEdge(t));
|
|
42802
42829
|
}
|
|
42803
42830
|
/**
|
|
42804
42831
|
* Isolate elements - show ONLY these elements, hide everything else
|
|
42805
42832
|
* Uses batch matrix update for best performance
|
|
42806
|
-
*
|
|
42833
|
+
*
|
|
42807
42834
|
* @param elements - Elements to isolate (defaults to selected elements)
|
|
42808
42835
|
* @returns The isolated elements
|
|
42809
42836
|
*/
|
|
@@ -42933,7 +42960,9 @@ if (gl_FragColor.a < 0.01) discard;`
|
|
|
42933
42960
|
var r;
|
|
42934
42961
|
const n = (r = this._elementMap.get(e)) == null ? void 0 : r.get(t);
|
|
42935
42962
|
n && n.forEach(({ instancedMesh: a, instanceIndex: o }) => {
|
|
42936
|
-
const l = a.geometry.getAttribute(
|
|
42963
|
+
const l = a.geometry.getAttribute(
|
|
42964
|
+
"instanceOpacity"
|
|
42965
|
+
);
|
|
42937
42966
|
l && (l.array[o] = i, l.needsUpdate = !0);
|
|
42938
42967
|
});
|
|
42939
42968
|
}
|
|
@@ -42991,7 +43020,7 @@ if (gl_FragColor.a < 0.01) discard;`
|
|
|
42991
43020
|
/**
|
|
42992
43021
|
* Desaturate instance color (turn whitish)
|
|
42993
43022
|
* @param modelId - Model ID
|
|
42994
|
-
* @param elementId - Element ID
|
|
43023
|
+
* @param elementId - Element ID
|
|
42995
43024
|
* @param desatFactor - Desaturation factor (0 = original, 1 = full white)
|
|
42996
43025
|
*/
|
|
42997
43026
|
_desaturateInstanceColor(e, t, i = 0.7) {
|
|
@@ -43028,7 +43057,9 @@ if (gl_FragColor.a < 0.01) discard;`
|
|
|
43028
43057
|
*/
|
|
43029
43058
|
resetElementOpacity() {
|
|
43030
43059
|
this._elementOpacity.clear(), this._instancedMeshes.forEach((e) => {
|
|
43031
|
-
const t = e.geometry.getAttribute(
|
|
43060
|
+
const t = e.geometry.getAttribute(
|
|
43061
|
+
"instanceOpacity"
|
|
43062
|
+
);
|
|
43032
43063
|
if (t && (t.array.fill(1), t.needsUpdate = !0), this._originalColor && e.instanceColor) {
|
|
43033
43064
|
const i = e.instanceColor.array;
|
|
43034
43065
|
for (let n = 0; n < e.count; n++) {
|
|
@@ -43106,9 +43137,13 @@ if (gl_FragColor.a < 0.01) discard;`
|
|
|
43106
43137
|
this._edgeThreshold
|
|
43107
43138
|
);
|
|
43108
43139
|
if (n.getAttribute("position")) {
|
|
43109
|
-
const a = n.getAttribute(
|
|
43140
|
+
const a = n.getAttribute(
|
|
43141
|
+
"position"
|
|
43142
|
+
).array, o = e.count, l = new Float32Array(
|
|
43143
|
+
a.length * o
|
|
43144
|
+
);
|
|
43110
43145
|
for (let h = 0; h < o; h++) {
|
|
43111
|
-
const d = new
|
|
43146
|
+
const d = new Ce();
|
|
43112
43147
|
e.getMatrixAt(h, d);
|
|
43113
43148
|
const u = h * a.length;
|
|
43114
43149
|
for (let f = 0; f < a.length; f += 3) {
|
|
@@ -43209,7 +43244,7 @@ if (gl_FragColor.a < 0.01) discard;`
|
|
|
43209
43244
|
const t = e[0], i = (l = this._elementMap.get(t.modelId)) == null ? void 0 : l.get(t.elementId);
|
|
43210
43245
|
if (!i || i.length === 0)
|
|
43211
43246
|
return null;
|
|
43212
|
-
const { instancedMesh: n, instanceIndex: r } = i[0], a = new
|
|
43247
|
+
const { instancedMesh: n, instanceIndex: r } = i[0], a = new Ce();
|
|
43213
43248
|
n.getMatrixAt(r, a);
|
|
43214
43249
|
const o = new ft().setFromBufferAttribute(
|
|
43215
43250
|
n.geometry.getAttribute("position")
|
|
@@ -43287,7 +43322,7 @@ if (gl_FragColor.a < 0.01) discard;`
|
|
|
43287
43322
|
}
|
|
43288
43323
|
//#endregion
|
|
43289
43324
|
};
|
|
43290
|
-
Ol.ZERO_MATRIX = new
|
|
43325
|
+
Ol.ZERO_MATRIX = new Ce().makeScale(0, 0, 0);
|
|
43291
43326
|
let Mr = Ol;
|
|
43292
43327
|
class Sb extends Lt {
|
|
43293
43328
|
constructor() {
|
|
@@ -43378,7 +43413,7 @@ class Sb extends Lt {
|
|
|
43378
43413
|
}
|
|
43379
43414
|
const u = d.array, f = l.count, p = new Float32Array(u.length * f);
|
|
43380
43415
|
for (let v = 0; v < f; v++) {
|
|
43381
|
-
const g = new
|
|
43416
|
+
const g = new Ce();
|
|
43382
43417
|
l.getMatrixAt(v, g);
|
|
43383
43418
|
const m = v * u.length;
|
|
43384
43419
|
for (let b = 0; b < u.length; b += 3) {
|
|
@@ -43587,12 +43622,12 @@ class Sb extends Lt {
|
|
|
43587
43622
|
this._edgeThreshold !== e && (this._edgeThreshold = e, this._edgeLines && this.buildEdges());
|
|
43588
43623
|
}
|
|
43589
43624
|
}
|
|
43590
|
-
let
|
|
43625
|
+
let BC = 1;
|
|
43591
43626
|
class fv {
|
|
43592
43627
|
constructor(e) {
|
|
43593
43628
|
this._worker = new Worker(e), this._worker.onmessage = (t) => {
|
|
43594
43629
|
this._OnMessage(t);
|
|
43595
|
-
}, this._resolve = null, this._id =
|
|
43630
|
+
}, this._resolve = null, this._id = BC++;
|
|
43596
43631
|
}
|
|
43597
43632
|
_OnMessage(e) {
|
|
43598
43633
|
const t = this._resolve;
|
|
@@ -43651,7 +43686,7 @@ class Ar {
|
|
|
43651
43686
|
this._workers.forEach((e) => e.dispose()), this._workers = [], this._free = [], this._busy = {}, this._queue = [];
|
|
43652
43687
|
}
|
|
43653
43688
|
}
|
|
43654
|
-
const
|
|
43689
|
+
const UC = `
|
|
43655
43690
|
// Web Worker code as string (to be created as blob URL)
|
|
43656
43691
|
self.onmessage = function(e) {
|
|
43657
43692
|
const {
|
|
@@ -43765,13 +43800,13 @@ self.onmessage = function(e) {
|
|
|
43765
43800
|
}
|
|
43766
43801
|
};
|
|
43767
43802
|
`;
|
|
43768
|
-
class
|
|
43803
|
+
class FC extends Q {
|
|
43769
43804
|
constructor() {
|
|
43770
43805
|
super(), this.workerPool = null, this.isReady = !1, this._batchedMeshes = [], this._instancedMeshes = [], this._isolatingElements = [], this._initializeWorkerPool(4);
|
|
43771
43806
|
}
|
|
43772
43807
|
_initializeWorkerPool(e) {
|
|
43773
43808
|
try {
|
|
43774
|
-
const t = new Blob([
|
|
43809
|
+
const t = new Blob([UC], {
|
|
43775
43810
|
type: "application/javascript"
|
|
43776
43811
|
}), i = URL.createObjectURL(t);
|
|
43777
43812
|
this.workerPool = new Ar(
|
|
@@ -43796,10 +43831,16 @@ class BC extends Q {
|
|
|
43796
43831
|
}
|
|
43797
43832
|
addBatchedMesh(e) {
|
|
43798
43833
|
if (this._batchedMeshes.includes(e)) {
|
|
43799
|
-
console.warn(
|
|
43834
|
+
console.warn(
|
|
43835
|
+
"⚠️ Attempted to add duplicate batched mesh:",
|
|
43836
|
+
e.globalMaterialIndex
|
|
43837
|
+
);
|
|
43800
43838
|
return;
|
|
43801
43839
|
}
|
|
43802
|
-
this.children.includes(e) ? console.warn(
|
|
43840
|
+
this.children.includes(e) ? console.warn(
|
|
43841
|
+
"⚠️ Mesh already in children, skipping add:",
|
|
43842
|
+
e.globalMaterialIndex
|
|
43843
|
+
) : this.add(e), this._batchedMeshes.push(e);
|
|
43803
43844
|
}
|
|
43804
43845
|
getBatchedMesh(e) {
|
|
43805
43846
|
return this._batchedMeshes.find(
|
|
@@ -43813,7 +43854,13 @@ class BC extends Q {
|
|
|
43813
43854
|
* Get diagnostic info about merged model structure
|
|
43814
43855
|
*/
|
|
43815
43856
|
getDiagnostics() {
|
|
43816
|
-
const e = this.children.filter(
|
|
43857
|
+
const e = this.children.filter(
|
|
43858
|
+
(r) => r instanceof Sb
|
|
43859
|
+
).length, t = this.children.filter(
|
|
43860
|
+
(r) => r instanceof Fn
|
|
43861
|
+
).length, i = this.children.filter(
|
|
43862
|
+
(r) => r instanceof Mr
|
|
43863
|
+
).length;
|
|
43817
43864
|
let n = 0;
|
|
43818
43865
|
return this._batchedMeshes.forEach((r) => {
|
|
43819
43866
|
const a = r.geometry;
|
|
@@ -43881,6 +43928,13 @@ class BC extends Q {
|
|
|
43881
43928
|
i.select(e, t);
|
|
43882
43929
|
});
|
|
43883
43930
|
}
|
|
43931
|
+
unselect() {
|
|
43932
|
+
this._batchedMeshes.forEach((e) => {
|
|
43933
|
+
e.unselect();
|
|
43934
|
+
}), this._instancedMeshes.forEach((e) => {
|
|
43935
|
+
e.unselect();
|
|
43936
|
+
});
|
|
43937
|
+
}
|
|
43884
43938
|
/**
|
|
43885
43939
|
* get bufferEleemnts from given ids
|
|
43886
43940
|
* @param elements
|
|
@@ -44007,7 +44061,9 @@ class BC extends Q {
|
|
|
44007
44061
|
* Kept for backward compatibility but does nothing
|
|
44008
44062
|
*/
|
|
44009
44063
|
optimizeVertices() {
|
|
44010
|
-
console.warn(
|
|
44064
|
+
console.warn(
|
|
44065
|
+
"optimizeVertices() is deprecated - visibility is now alpha-based"
|
|
44066
|
+
);
|
|
44011
44067
|
}
|
|
44012
44068
|
/**
|
|
44013
44069
|
* *everytime add new model in scene this model will be regenerated again, for that reason we should dispose this model
|
|
@@ -44017,7 +44073,7 @@ class BC extends Q {
|
|
|
44017
44073
|
this.isReady = !1, this._batchedMeshes.forEach((e) => e.dispose()), this._batchedMeshes = [], this._instancedMeshes.forEach((e) => e.dispose()), this._instancedMeshes = [], this.children = [];
|
|
44018
44074
|
}
|
|
44019
44075
|
}
|
|
44020
|
-
class
|
|
44076
|
+
class zC {
|
|
44021
44077
|
constructor(e) {
|
|
44022
44078
|
this.viralViewerApi = e, this.position = new K(), this.rawPosition = new K(), this.mouseMoveQueuedEvents = [], this.mouseDownLeftQueuedEvents = [], this.mouseUpLeftQueuedEvents = [], this.mouseDownRightQueuedEvents = [], this.mouseUpRightQueuedEvents = [], this.mouseDoubleClickQueuedEvents = [], this.hoverMeshes = [], this.handleClick = async (t) => {
|
|
44023
44079
|
var i, n, r;
|
|
@@ -44239,9 +44295,9 @@ const Qr = {
|
|
|
44239
44295
|
outlineModel: "viral_outline_model",
|
|
44240
44296
|
sunlight: "viral_sunlight"
|
|
44241
44297
|
};
|
|
44242
|
-
class
|
|
44298
|
+
class kC {
|
|
44243
44299
|
constructor(e) {
|
|
44244
|
-
this.viralViewerApi = e, this.scene = new lc(), this.objects = [], this.models = [], this.mainModels = [], this.isolateModel = new Q(), this.mergedModel = new
|
|
44300
|
+
this.viralViewerApi = e, this.scene = new lc(), this.objects = [], this.models = [], this.mainModels = [], this.isolateModel = new Q(), this.mergedModel = new FC(), this.outlineModel = new Q(), this.hideables = [], this.selectables = [], this.edges = [], this.sunLight = null, this.lights = [], this.transformControls = null, this.lightHelpers = [], this.fullScreenQuadMaterial = new Ii({
|
|
44245
44301
|
map: null,
|
|
44246
44302
|
// Use the render target's texture
|
|
44247
44303
|
side: pi
|
|
@@ -44291,7 +44347,7 @@ class FC {
|
|
|
44291
44347
|
//#endregion
|
|
44292
44348
|
addPivotPoint() {
|
|
44293
44349
|
const e = new So(1, 16, 16), t = new Ii({
|
|
44294
|
-
color: Et.hexToThreejsColor(
|
|
44350
|
+
color: Et.hexToThreejsColor(Ee.accent)
|
|
44295
44351
|
// transparent: true,
|
|
44296
44352
|
// opacity: 0.5,
|
|
44297
44353
|
}), i = new Q(e, t);
|
|
@@ -44383,7 +44439,7 @@ class FC {
|
|
|
44383
44439
|
}
|
|
44384
44440
|
//#endregion
|
|
44385
44441
|
}
|
|
44386
|
-
class
|
|
44442
|
+
class VC extends dt {
|
|
44387
44443
|
constructor() {
|
|
44388
44444
|
super();
|
|
44389
44445
|
ym(this, "boundingSphere", new ni());
|
|
@@ -44406,13 +44462,13 @@ class zC extends dt {
|
|
|
44406
44462
|
computeBoundingSphere() {
|
|
44407
44463
|
}
|
|
44408
44464
|
}
|
|
44409
|
-
const
|
|
44465
|
+
const XC = /* @__PURE__ */ new VC(), HC = /* @__PURE__ */ new Ys();
|
|
44410
44466
|
class Qa {
|
|
44411
44467
|
constructor(e) {
|
|
44412
|
-
this._mesh = new Q(
|
|
44468
|
+
this._mesh = new Q(XC, e), this._mesh.frustumCulled = !1;
|
|
44413
44469
|
}
|
|
44414
44470
|
render(e) {
|
|
44415
|
-
e.render(this._mesh,
|
|
44471
|
+
e.render(this._mesh, HC);
|
|
44416
44472
|
}
|
|
44417
44473
|
get material() {
|
|
44418
44474
|
return this._mesh.material;
|
|
@@ -44424,7 +44480,7 @@ class Qa {
|
|
|
44424
44480
|
this._mesh.material.dispose(), this._mesh.geometry.dispose();
|
|
44425
44481
|
}
|
|
44426
44482
|
}
|
|
44427
|
-
const
|
|
44483
|
+
const YC = {
|
|
44428
44484
|
uniforms: {
|
|
44429
44485
|
sceneDiffuse: {
|
|
44430
44486
|
value: null
|
|
@@ -44436,19 +44492,19 @@ const XC = {
|
|
|
44436
44492
|
value: null
|
|
44437
44493
|
},
|
|
44438
44494
|
projMat: {
|
|
44439
|
-
value: /* @__PURE__ */ new
|
|
44495
|
+
value: /* @__PURE__ */ new Ce()
|
|
44440
44496
|
},
|
|
44441
44497
|
viewMat: {
|
|
44442
|
-
value: /* @__PURE__ */ new
|
|
44498
|
+
value: /* @__PURE__ */ new Ce()
|
|
44443
44499
|
},
|
|
44444
44500
|
projViewMat: {
|
|
44445
|
-
value: /* @__PURE__ */ new
|
|
44501
|
+
value: /* @__PURE__ */ new Ce()
|
|
44446
44502
|
},
|
|
44447
44503
|
projectionMatrixInv: {
|
|
44448
|
-
value: /* @__PURE__ */ new
|
|
44504
|
+
value: /* @__PURE__ */ new Ce()
|
|
44449
44505
|
},
|
|
44450
44506
|
viewMatrixInv: {
|
|
44451
|
-
value: /* @__PURE__ */ new
|
|
44507
|
+
value: /* @__PURE__ */ new Ce()
|
|
44452
44508
|
},
|
|
44453
44509
|
cameraPos: {
|
|
44454
44510
|
value: /* @__PURE__ */ new P()
|
|
@@ -44737,7 +44793,7 @@ void main() {
|
|
|
44737
44793
|
gl_FragColor = vec4(occ, 0.5 + 0.5 * normal);
|
|
44738
44794
|
}`
|
|
44739
44795
|
)
|
|
44740
|
-
},
|
|
44796
|
+
}, GC = {
|
|
44741
44797
|
uniforms: {
|
|
44742
44798
|
sceneDiffuse: {
|
|
44743
44799
|
value: null
|
|
@@ -44761,16 +44817,16 @@ void main() {
|
|
|
44761
44817
|
value: !1
|
|
44762
44818
|
},
|
|
44763
44819
|
projMat: {
|
|
44764
|
-
value: /* @__PURE__ */ new
|
|
44820
|
+
value: /* @__PURE__ */ new Ce()
|
|
44765
44821
|
},
|
|
44766
44822
|
viewMat: {
|
|
44767
|
-
value: /* @__PURE__ */ new
|
|
44823
|
+
value: /* @__PURE__ */ new Ce()
|
|
44768
44824
|
},
|
|
44769
44825
|
projectionMatrixInv: {
|
|
44770
|
-
value: /* @__PURE__ */ new
|
|
44826
|
+
value: /* @__PURE__ */ new Ce()
|
|
44771
44827
|
},
|
|
44772
44828
|
viewMatrixInv: {
|
|
44773
|
-
value: /* @__PURE__ */ new
|
|
44829
|
+
value: /* @__PURE__ */ new Ce()
|
|
44774
44830
|
},
|
|
44775
44831
|
cameraPos: {
|
|
44776
44832
|
value: /* @__PURE__ */ new P()
|
|
@@ -45098,7 +45154,7 @@ void main() {
|
|
|
45098
45154
|
}
|
|
45099
45155
|
`
|
|
45100
45156
|
)
|
|
45101
|
-
},
|
|
45157
|
+
}, WC = {
|
|
45102
45158
|
uniforms: {
|
|
45103
45159
|
sceneDiffuse: {
|
|
45104
45160
|
value: null
|
|
@@ -45110,16 +45166,16 @@ void main() {
|
|
|
45110
45166
|
value: null
|
|
45111
45167
|
},
|
|
45112
45168
|
projMat: {
|
|
45113
|
-
value: /* @__PURE__ */ new
|
|
45169
|
+
value: /* @__PURE__ */ new Ce()
|
|
45114
45170
|
},
|
|
45115
45171
|
viewMat: {
|
|
45116
|
-
value: /* @__PURE__ */ new
|
|
45172
|
+
value: /* @__PURE__ */ new Ce()
|
|
45117
45173
|
},
|
|
45118
45174
|
projectionMatrixInv: {
|
|
45119
|
-
value: /* @__PURE__ */ new
|
|
45175
|
+
value: /* @__PURE__ */ new Ce()
|
|
45120
45176
|
},
|
|
45121
45177
|
viewMatrixInv: {
|
|
45122
|
-
value: /* @__PURE__ */ new
|
|
45178
|
+
value: /* @__PURE__ */ new Ce()
|
|
45123
45179
|
},
|
|
45124
45180
|
cameraPos: {
|
|
45125
45181
|
value: /* @__PURE__ */ new P()
|
|
@@ -45299,7 +45355,7 @@ void main() {
|
|
|
45299
45355
|
}
|
|
45300
45356
|
`
|
|
45301
45357
|
)
|
|
45302
|
-
},
|
|
45358
|
+
}, QC = {
|
|
45303
45359
|
uniforms: {
|
|
45304
45360
|
sceneDepth: {
|
|
45305
45361
|
value: null
|
|
@@ -45314,10 +45370,10 @@ void main() {
|
|
|
45314
45370
|
value: 1e3
|
|
45315
45371
|
},
|
|
45316
45372
|
viewMatrixInv: {
|
|
45317
|
-
value: /* @__PURE__ */ new
|
|
45373
|
+
value: /* @__PURE__ */ new Ce()
|
|
45318
45374
|
},
|
|
45319
45375
|
projectionMatrixInv: {
|
|
45320
|
-
value: /* @__PURE__ */ new
|
|
45376
|
+
value: /* @__PURE__ */ new Ce()
|
|
45321
45377
|
},
|
|
45322
45378
|
logDepth: {
|
|
45323
45379
|
value: !1
|
|
@@ -45458,9 +45514,9 @@ void main() {
|
|
|
45458
45514
|
), 0.0);
|
|
45459
45515
|
}`
|
|
45460
45516
|
)
|
|
45461
|
-
}, WC = "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", QC = Uint8Array.from(atob(WC), (s) => s.charCodeAt(0));
|
|
45462
|
-
var
|
|
45463
|
-
const
|
|
45517
|
+
}, jC = "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", qC = Uint8Array.from(atob(jC), (s) => s.charCodeAt(0));
|
|
45518
|
+
var ZC = qC;
|
|
45519
|
+
const $C = parseInt(Do.replace(/\D+/g, "")), KC = $C >= 162 ? class extends Tt {
|
|
45464
45520
|
constructor(s = 1, e = 1, t = 1, i = {}) {
|
|
45465
45521
|
super(s, e, {
|
|
45466
45522
|
...i,
|
|
@@ -45508,7 +45564,7 @@ const bi = {
|
|
|
45508
45564
|
Log: 2,
|
|
45509
45565
|
Reverse: 3
|
|
45510
45566
|
};
|
|
45511
|
-
class
|
|
45567
|
+
class JC extends zn {
|
|
45512
45568
|
/**
|
|
45513
45569
|
*
|
|
45514
45570
|
* @param {THREE.Scene} scene
|
|
@@ -45556,7 +45612,7 @@ class $C extends zn {
|
|
|
45556
45612
|
stencilBuffer: o
|
|
45557
45613
|
}), this.beautyRenderTarget.depthTexture = new bs(this.width, this.height, o ? wr : $n), this.beautyRenderTarget.depthTexture.format = o ? Sr : da), !0;
|
|
45558
45614
|
}
|
|
45559
|
-
}), this.samples = [], this.samplesDenoise = [], this.autoDetectTransparency = !0, this.frame = 0, this.lastViewMatrix = new
|
|
45615
|
+
}), this.samples = [], this.samplesDenoise = [], this.autoDetectTransparency = !0, this.frame = 0, this.lastViewMatrix = new Ce(), this.lastProjectionMatrix = new Ce(), this.beautyRenderTarget = new Tt(this.width, this.height, {
|
|
45560
45616
|
minFilter: jt,
|
|
45561
45617
|
magFilter: Dt,
|
|
45562
45618
|
type: Ht,
|
|
@@ -45581,7 +45637,7 @@ class $C extends zn {
|
|
|
45581
45637
|
stencilBuffer: !1,
|
|
45582
45638
|
depthBuffer: !1,
|
|
45583
45639
|
alpha: !0
|
|
45584
|
-
}), this.bluenoise = new Bn(
|
|
45640
|
+
}), this.bluenoise = new Bn(ZC, 128, 128), this.accumulationQuad = new Qa(new gt({
|
|
45585
45641
|
uniforms: {
|
|
45586
45642
|
frame: {
|
|
45587
45643
|
value: 0
|
|
@@ -45611,9 +45667,9 @@ class $C extends zn {
|
|
|
45611
45667
|
}
|
|
45612
45668
|
configureHalfResTargets() {
|
|
45613
45669
|
if (this.firstFrame(), this.configuration.halfRes) {
|
|
45614
|
-
this.depthDownsampleTarget = new
|
|
45670
|
+
this.depthDownsampleTarget = new KC(this.width / 2, this.height / 2, 2), this.depthDownsampleTarget.textures[0].format = oc, this.depthDownsampleTarget.textures[0].type = Zi, this.depthDownsampleTarget.textures[0].minFilter = Dt, this.depthDownsampleTarget.textures[0].magFilter = Dt, this.depthDownsampleTarget.textures[0].depthBuffer = !1, this.depthDownsampleTarget.textures[1].format = Kt, this.depthDownsampleTarget.textures[1].type = Ht, this.depthDownsampleTarget.textures[1].minFilter = Dt, this.depthDownsampleTarget.textures[1].magFilter = Dt, this.depthDownsampleTarget.textures[1].depthBuffer = !1;
|
|
45615
45671
|
const e = {
|
|
45616
|
-
...
|
|
45672
|
+
...QC
|
|
45617
45673
|
};
|
|
45618
45674
|
this.configuration.depthBufferType === bi.Reverse && (e.fragmentShader = `#define REVERSEDEPTH
|
|
45619
45675
|
` + e.fragmentShader), this.depthDownsampleQuad = new Qa(new gt(e));
|
|
@@ -45698,7 +45754,7 @@ class $C extends zn {
|
|
|
45698
45754
|
configureAOPass(e = bi.Default, t = !1) {
|
|
45699
45755
|
this.firstFrame(), this.samples = this.generateHemisphereSamples(this.configuration.aoSamples);
|
|
45700
45756
|
const i = {
|
|
45701
|
-
...
|
|
45757
|
+
...YC
|
|
45702
45758
|
};
|
|
45703
45759
|
i.fragmentShader = i.fragmentShader.replace("16", this.configuration.aoSamples).replace("16.0", this.configuration.aoSamples + ".0"), e === bi.Log ? i.fragmentShader = `#define LOGDEPTH
|
|
45704
45760
|
` + i.fragmentShader : e === bi.Reverse && (i.fragmentShader = `#define REVERSEDEPTH
|
|
@@ -45709,7 +45765,7 @@ class $C extends zn {
|
|
|
45709
45765
|
configureDenoisePass(e = bi.Default, t = !1) {
|
|
45710
45766
|
this.firstFrame(), this.samplesDenoise = this.generateDenoiseSamples(this.configuration.denoiseSamples, 11);
|
|
45711
45767
|
const i = {
|
|
45712
|
-
...
|
|
45768
|
+
...WC
|
|
45713
45769
|
};
|
|
45714
45770
|
i.fragmentShader = i.fragmentShader.replace("16", this.configuration.denoiseSamples), e === bi.Log ? i.fragmentShader = `#define LOGDEPTH
|
|
45715
45771
|
` + i.fragmentShader : e === bi.Reverse && (i.fragmentShader = `#define REVERSEDEPTH
|
|
@@ -45719,7 +45775,7 @@ class $C extends zn {
|
|
|
45719
45775
|
configureEffectCompositer(e = bi.Default, t = !1) {
|
|
45720
45776
|
this.firstFrame();
|
|
45721
45777
|
const i = {
|
|
45722
|
-
...
|
|
45778
|
+
...GC
|
|
45723
45779
|
};
|
|
45724
45780
|
e === bi.Log ? i.fragmentShader = `#define LOGDEPTH
|
|
45725
45781
|
` + i.fragmentShader : e === bi.Reverse && (i.fragmentShader = `#define REVERSEDEPTH
|
|
@@ -45816,7 +45872,7 @@ class $C extends zn {
|
|
|
45816
45872
|
e === "Performance" ? (this.configuration.aoSamples = 8, this.configuration.denoiseSamples = 4, this.configuration.denoiseRadius = 12) : e === "Low" ? (this.configuration.aoSamples = 16, this.configuration.denoiseSamples = 4, this.configuration.denoiseRadius = 12) : e === "Medium" ? (this.configuration.aoSamples = 16, this.configuration.denoiseSamples = 8, this.configuration.denoiseRadius = 12) : e === "High" ? (this.configuration.aoSamples = 64, this.configuration.denoiseSamples = 8, this.configuration.denoiseRadius = 6) : e === "Ultra" && (this.configuration.aoSamples = 64, this.configuration.denoiseSamples = 16, this.configuration.denoiseRadius = 6);
|
|
45817
45873
|
}
|
|
45818
45874
|
}
|
|
45819
|
-
class
|
|
45875
|
+
class e3 {
|
|
45820
45876
|
static getDeviceType() {
|
|
45821
45877
|
const e = navigator.userAgent.toLowerCase(), t = /iphone|ipod|android.*mobile|blackberry|opera mini|windows phone/i.test(
|
|
45822
45878
|
e
|
|
@@ -45826,7 +45882,7 @@ class KC {
|
|
|
45826
45882
|
return t ? "mobile" : i ? "tablet" : "pc";
|
|
45827
45883
|
}
|
|
45828
45884
|
}
|
|
45829
|
-
class
|
|
45885
|
+
class t3 {
|
|
45830
45886
|
constructor() {
|
|
45831
45887
|
this.gl = null, this.specs = null, this.initWebGL(), this.detectSpecs();
|
|
45832
45888
|
}
|
|
@@ -45970,7 +46026,7 @@ class JC {
|
|
|
45970
46026
|
});
|
|
45971
46027
|
}
|
|
45972
46028
|
}
|
|
45973
|
-
function
|
|
46029
|
+
function i3() {
|
|
45974
46030
|
const s = new bd({
|
|
45975
46031
|
side: pi
|
|
45976
46032
|
});
|
|
@@ -45992,7 +46048,7 @@ function e3() {
|
|
|
45992
46048
|
);
|
|
45993
46049
|
}, s;
|
|
45994
46050
|
}
|
|
45995
|
-
function
|
|
46051
|
+
function n3() {
|
|
45996
46052
|
const s = new Ii({
|
|
45997
46053
|
colorWrite: !1,
|
|
45998
46054
|
side: pi
|
|
@@ -46015,7 +46071,7 @@ function t3() {
|
|
|
46015
46071
|
);
|
|
46016
46072
|
}, s;
|
|
46017
46073
|
}
|
|
46018
|
-
const
|
|
46074
|
+
const s3 = {
|
|
46019
46075
|
edgeColor: new Ie(0),
|
|
46020
46076
|
edgeOpacity: 0.6,
|
|
46021
46077
|
// Reduced for subtlety, better perf
|
|
@@ -46033,14 +46089,14 @@ const i3 = {
|
|
|
46033
46089
|
// Keep - good for creases
|
|
46034
46090
|
enableObjectIdEdges: !1
|
|
46035
46091
|
// Disable by default - most expensive (extra render pass)
|
|
46036
|
-
},
|
|
46092
|
+
}, r3 = `
|
|
46037
46093
|
varying vec2 vUv;
|
|
46038
46094
|
|
|
46039
46095
|
void main() {
|
|
46040
46096
|
vUv = uv;
|
|
46041
46097
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
46042
46098
|
}
|
|
46043
|
-
`,
|
|
46099
|
+
`, a3 = `
|
|
46044
46100
|
precision highp float;
|
|
46045
46101
|
|
|
46046
46102
|
uniform sampler2D tDiffuse; // Color buffer (from main render)
|
|
@@ -46206,7 +46262,7 @@ void main() {
|
|
|
46206
46262
|
|
|
46207
46263
|
gl_FragColor = vec4(finalColor, color.a);
|
|
46208
46264
|
}
|
|
46209
|
-
`,
|
|
46265
|
+
`, o3 = `
|
|
46210
46266
|
attribute float objectIndex;
|
|
46211
46267
|
varying float vObjectIndex;
|
|
46212
46268
|
|
|
@@ -46214,7 +46270,7 @@ void main() {
|
|
|
46214
46270
|
vObjectIndex = objectIndex;
|
|
46215
46271
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
46216
46272
|
}
|
|
46217
|
-
`,
|
|
46273
|
+
`, l3 = `
|
|
46218
46274
|
precision highp float;
|
|
46219
46275
|
varying float vObjectIndex;
|
|
46220
46276
|
|
|
@@ -46230,9 +46286,9 @@ void main() {
|
|
|
46230
46286
|
gl_FragColor = vec4(packIndex(vObjectIndex), 1.0);
|
|
46231
46287
|
}
|
|
46232
46288
|
`;
|
|
46233
|
-
class
|
|
46289
|
+
class c3 extends zn {
|
|
46234
46290
|
constructor(e, t, i, n) {
|
|
46235
|
-
super(), this.bypass = !1, this.scene = e, this.camera = t, this.resolution = i || new K(window.innerWidth, window.innerHeight), this.options = { ...
|
|
46291
|
+
super(), this.bypass = !1, this.scene = e, this.camera = t, this.resolution = i || new K(window.innerWidth, window.innerHeight), this.options = { ...s3, ...n };
|
|
46236
46292
|
const r = {
|
|
46237
46293
|
format: Kt,
|
|
46238
46294
|
type: Ht,
|
|
@@ -46265,9 +46321,9 @@ class o3 extends zn {
|
|
|
46265
46321
|
this.resolution.x,
|
|
46266
46322
|
this.resolution.y,
|
|
46267
46323
|
r
|
|
46268
|
-
), this.normalMaterial =
|
|
46269
|
-
vertexShader:
|
|
46270
|
-
fragmentShader:
|
|
46324
|
+
), this.normalMaterial = i3(), this.depthMaterial = n3(), this.objectIdMaterial = new gt({
|
|
46325
|
+
vertexShader: o3,
|
|
46326
|
+
fragmentShader: l3,
|
|
46271
46327
|
side: pi
|
|
46272
46328
|
}), this.edgeMaterial = new gt({
|
|
46273
46329
|
uniforms: {
|
|
@@ -46290,8 +46346,8 @@ class o3 extends zn {
|
|
|
46290
46346
|
enableNormalEdges: { value: this.options.enableNormalEdges },
|
|
46291
46347
|
enableObjectIdEdges: { value: this.options.enableObjectIdEdges }
|
|
46292
46348
|
},
|
|
46293
|
-
vertexShader:
|
|
46294
|
-
fragmentShader:
|
|
46349
|
+
vertexShader: r3,
|
|
46350
|
+
fragmentShader: a3
|
|
46295
46351
|
}), this.copyMaterial = new gt({
|
|
46296
46352
|
uniforms: {
|
|
46297
46353
|
tDiffuse: { value: null }
|
|
@@ -46362,9 +46418,9 @@ class o3 extends zn {
|
|
|
46362
46418
|
}
|
|
46363
46419
|
}
|
|
46364
46420
|
new K(1024, 1024), new Ie(0);
|
|
46365
|
-
class
|
|
46421
|
+
class h3 {
|
|
46366
46422
|
constructor(e, t) {
|
|
46367
|
-
this.renderer = e, this.viralViewerApi = t, this.gammaPass = null, this.ssaoPass = null, this.saoPass = null, this.smaaPass = null, this.ssaaPass = null, this.fxaaPass = null, this.taaPass = null, this.sobelPass = null, this.whitePass = null, this.shadowRemovalPass = null, this.outlinePass = null, this.screenSpaceEdgesPass = null, this.perfChecker = new
|
|
46423
|
+
this.renderer = e, this.viralViewerApi = t, this.gammaPass = null, this.ssaoPass = null, this.saoPass = null, this.smaaPass = null, this.ssaaPass = null, this.fxaaPass = null, this.taaPass = null, this.sobelPass = null, this.whitePass = null, this.shadowRemovalPass = null, this.outlinePass = null, this.screenSpaceEdgesPass = null, this.perfChecker = new t3(), this._whiteShader = {
|
|
46368
46424
|
uniforms: {
|
|
46369
46425
|
tDiffuse: { value: null },
|
|
46370
46426
|
shadowTexture: { value: null },
|
|
@@ -46437,7 +46493,7 @@ class l3 {
|
|
|
46437
46493
|
//#region N8AOPass
|
|
46438
46494
|
initn8aoPass(e, t) {
|
|
46439
46495
|
//! need to optimize this base on performance
|
|
46440
|
-
this.n8aoPass = new
|
|
46496
|
+
this.n8aoPass = new JC(e, t), this.n8aoPass.configuration.aoSamples = 16, this.n8aoPass.configuration.denoiseRadius = 16, this.n8aoPass.configuration.intensity = 5, this.n8aoPass.configuration.aoRadius = 10, this.n8aoPass.configuration.quality = "Low", this.n8aoPass.configuration.gammaCorrection = !1, this.n8aoPass.configuration.halfRes = !1, this.n8aoPass.configuration.distanceFalloff = 5, this.n8aoPass.configuration.accumulate = !1, this.n8aoPass.configuration.renderToScreen = !1, this.composer.addPass(this.n8aoPass);
|
|
46441
46497
|
}
|
|
46442
46498
|
enableN8AOPass() {
|
|
46443
46499
|
this.n8aoPass && (this.n8aoPass.setDisplayMode("Combined"), this.n8aoPass.enabled = !0);
|
|
@@ -46508,7 +46564,7 @@ class l3 {
|
|
|
46508
46564
|
* - Object ID discontinuity detection (object boundaries)
|
|
46509
46565
|
*/
|
|
46510
46566
|
initScreenSpaceEdgesPass(e, t) {
|
|
46511
|
-
this.screenSpaceEdgesPass = new
|
|
46567
|
+
this.screenSpaceEdgesPass = new c3(
|
|
46512
46568
|
e,
|
|
46513
46569
|
t,
|
|
46514
46570
|
new K(window.innerWidth, window.innerHeight),
|
|
@@ -46622,7 +46678,7 @@ class l3 {
|
|
|
46622
46678
|
t,
|
|
46623
46679
|
// TODO : investigate why this effect when render new model
|
|
46624
46680
|
[this.viralViewerApi.viralScene.outlineModel]
|
|
46625
|
-
), this.outlinePass.edgeStrength = 5, this.outlinePass.edgeGlow = 0.4, this.outlinePass.edgeThickness = 2, this.outlinePass.pulsePeriod = 0, this.outlinePass.visibleEdgeColor.set(
|
|
46681
|
+
), this.outlinePass.edgeStrength = 5, this.outlinePass.edgeGlow = 0.4, this.outlinePass.edgeThickness = 2, this.outlinePass.pulsePeriod = 0, this.outlinePass.visibleEdgeColor.set(Ee.accent), this.outlinePass.hiddenEdgeColor.set(Ee.accent), this.outlinePass.enabled = !1, this.outlinePass.renderToScreen = !1, this.composer.addPass(this.outlinePass);
|
|
46626
46682
|
}
|
|
46627
46683
|
enableOutline() {
|
|
46628
46684
|
this.outlinePass && (this.outlinePass.enabled = !0, this.outlinePass.renderToScreen = !0);
|
|
@@ -46632,7 +46688,7 @@ class l3 {
|
|
|
46632
46688
|
}
|
|
46633
46689
|
//#endregion
|
|
46634
46690
|
}
|
|
46635
|
-
class
|
|
46691
|
+
class d3 {
|
|
46636
46692
|
constructor(e) {
|
|
46637
46693
|
this.viralViewerApi = e, this.renderer = new vb({
|
|
46638
46694
|
alpha: !0,
|
|
@@ -46648,7 +46704,7 @@ class c3 {
|
|
|
46648
46704
|
console.log("Max Fragment Uniform Vectors ->", i), this.renderer.setPixelRatio(window.devicePixelRatio), this.renderer.setSize(
|
|
46649
46705
|
this.viralViewerApi.targetElement.offsetWidth,
|
|
46650
46706
|
this.viralViewerApi.targetElement.offsetHeight
|
|
46651
|
-
), this.renderer.outputColorSpace = Ei, this.renderer.shadowMap.enabled = !0, this.renderer.shadowMap.type = ds, this.renderer.shadowMap.autoUpdate = !1, this.renderer.shadowMap.needsUpdate = !0, this.renderer.info.autoReset = !1, this.viralViewerApi.targetElement.appendChild(this.renderer.domElement), this.viralViewerApi.options.enablePostProcessing !== !1 && (this.postProcessingRenderer = new
|
|
46707
|
+
), this.renderer.outputColorSpace = Ei, this.renderer.shadowMap.enabled = !0, this.renderer.shadowMap.type = ds, this.renderer.shadowMap.autoUpdate = !1, this.renderer.shadowMap.needsUpdate = !0, this.renderer.info.autoReset = !1, this.viralViewerApi.targetElement.appendChild(this.renderer.domElement), this.viralViewerApi.options.enablePostProcessing !== !1 && (this.postProcessingRenderer = new h3(
|
|
46652
46708
|
this.renderer,
|
|
46653
46709
|
this.viralViewerApi
|
|
46654
46710
|
)), this.jitterOffsets = this.generateJitterOffsets(), this.viralViewerApi.emit(At.LOADED_RENDERER);
|
|
@@ -46756,7 +46812,7 @@ class c3 {
|
|
|
46756
46812
|
return this.renderer.domElement.toDataURL("image/png");
|
|
46757
46813
|
}
|
|
46758
46814
|
}
|
|
46759
|
-
class
|
|
46815
|
+
class u3 {
|
|
46760
46816
|
// 5 seconds for cleanup
|
|
46761
46817
|
constructor(e) {
|
|
46762
46818
|
this.viralViewerApi = e, this.clock = new hb(), this.lastSpatialUpdateTime = 0, this.lastCleanupTime = 0, this.spatialUpdateInterval = 16, this.cleanupInterval = 5e3, this.isRainEnabled = !1;
|
|
@@ -46808,7 +46864,7 @@ class h3 {
|
|
|
46808
46864
|
this.isRainEnabled = e, this.isRainEnabled && this.rainAnimation();
|
|
46809
46865
|
}
|
|
46810
46866
|
}
|
|
46811
|
-
class
|
|
46867
|
+
class f3 {
|
|
46812
46868
|
set(e, t) {
|
|
46813
46869
|
localStorage[e] = t;
|
|
46814
46870
|
}
|
|
@@ -46853,7 +46909,7 @@ class d3 {
|
|
|
46853
46909
|
localStorage.clear();
|
|
46854
46910
|
}
|
|
46855
46911
|
}
|
|
46856
|
-
class
|
|
46912
|
+
class p3 {
|
|
46857
46913
|
constructor(e) {
|
|
46858
46914
|
this.viralViewerApi = e, this.keydownQueuedEvents = [], this.keyupQueuedEvents = [], this.setupKeyPress();
|
|
46859
46915
|
}
|
|
@@ -46901,7 +46957,7 @@ class u3 {
|
|
|
46901
46957
|
}
|
|
46902
46958
|
//#endregion
|
|
46903
46959
|
}
|
|
46904
|
-
class
|
|
46960
|
+
class m3 {
|
|
46905
46961
|
constructor(e) {
|
|
46906
46962
|
this.viralViewerApi = e, this.contextMenu = null, this.contextItems = [], this.injectContextMenu();
|
|
46907
46963
|
}
|
|
@@ -46911,14 +46967,14 @@ class f3 {
|
|
|
46911
46967
|
transition: background-color 0.3s ease;
|
|
46912
46968
|
}
|
|
46913
46969
|
.hover-element:hover {
|
|
46914
|
-
background-color: ${
|
|
46970
|
+
background-color: ${Ee.hover};
|
|
46915
46971
|
|
|
46916
46972
|
}`, t = document.createElement("style");
|
|
46917
46973
|
t.innerHTML = e, document.head.appendChild(t), this.viralViewerApi.targetElement && (this.contextMenu = document.createElement("div"), this.contextMenu.addEventListener("contextmenu", function(i) {
|
|
46918
46974
|
i.preventDefault();
|
|
46919
46975
|
}), this.contextMenu.setAttribute(
|
|
46920
46976
|
"style",
|
|
46921
|
-
`position: absolute;top:0px;left:0px;background-color: ${
|
|
46977
|
+
`position: absolute;top:0px;left:0px;background-color: ${Ee.background};justify-content: center;display:none; z-index: 100; flex-direction:column; padding: 10px 0; border-radius:10px`
|
|
46922
46978
|
), this.viralViewerApi.targetElement.appendChild(this.contextMenu));
|
|
46923
46979
|
}
|
|
46924
46980
|
showContextMenu(e, t, i) {
|
|
@@ -46935,7 +46991,7 @@ class f3 {
|
|
|
46935
46991
|
if (e.findIndex((c) => c == this.contextItems[i][0]) < 0)
|
|
46936
46992
|
continue;
|
|
46937
46993
|
const [n, r, a, o] = this.contextItems[i], l = Md.createElementFromHTML(
|
|
46938
|
-
`<div class="hover-element" style="padding: 5px 10px; cursor: pointer; color:${
|
|
46994
|
+
`<div class="hover-element" style="padding: 5px 10px; cursor: pointer; color:${Ee.primary}; display:flex; align-items:center">${a} <p style="margin:0px !important;padding-left:5px">${r}</p></div>`
|
|
46939
46995
|
);
|
|
46940
46996
|
l.addEventListener("click", (c) => {
|
|
46941
46997
|
c.stopPropagation(), o(c);
|
|
@@ -46958,7 +47014,7 @@ const ol = {
|
|
|
46958
47014
|
focus: (s, e) => `<svg xmlns="http://www.w3.org/2000/svg" fill=${e || ""} height=${s || 24} viewBox="0 -960 960 960" width="24"><path d="M120-120v-200h80v120h120v80H120Zm520 0v-80h120v-120h80v200H640ZM120-640v-200h200v80H200v120h-80Zm640 0v-120H640v-80h200v200h-80Z"/></svg>`,
|
|
46959
47015
|
properties: (s, e) => `<svg xmlns="http://www.w3.org/2000/svg" fill=${e || ""} height=${s || 24} viewBox="0 -960 960 960" width="24"><path d="M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>`
|
|
46960
47016
|
};
|
|
46961
|
-
class
|
|
47017
|
+
class g3 {
|
|
46962
47018
|
constructor(e) {
|
|
46963
47019
|
this.viralViewerApi = e, this.elementProperties = {}, this._sleepDebounceTimer = null, this._sleepDebounceDelay = 150, this.resizeObserver = null, this._hoverElementEnable = !0, this._selectElementEnable = !0, this.isShiftPressed = !1, this.windowHandler(), this.contextMenuEventHandler(), this.selectElementHandler2(), this.doubleClickElementHandler(), this.keyboardHandler(), this.cameraHandler(), this._visibilityManager = this.viralViewerApi.viralVisibilityManager;
|
|
46964
47020
|
}
|
|
@@ -46966,35 +47022,35 @@ class p3 {
|
|
|
46966
47022
|
this.viralViewerApi.viralContextMenu && (this.viralViewerApi.viralContextMenu.addContextItem(
|
|
46967
47023
|
0,
|
|
46968
47024
|
"Show all elements",
|
|
46969
|
-
ol.showAll(void 0,
|
|
47025
|
+
ol.showAll(void 0, Ee.primary),
|
|
46970
47026
|
(e) => {
|
|
46971
47027
|
this._visibilityManager.showAll2(), this.viralViewerApi.viralContextMenu.hideContextMenu();
|
|
46972
47028
|
}
|
|
46973
47029
|
), this.viralViewerApi.viralContextMenu.addContextItem(
|
|
46974
47030
|
1,
|
|
46975
47031
|
"Isolate",
|
|
46976
|
-
ol.isolate(void 0,
|
|
47032
|
+
ol.isolate(void 0, Ee.primary),
|
|
46977
47033
|
(e) => {
|
|
46978
47034
|
this._visibilityManager.isolate2(), this.viralViewerApi.viralContextMenu.hideContextMenu();
|
|
46979
47035
|
}
|
|
46980
47036
|
), this.viralViewerApi.viralContextMenu.addContextItem(
|
|
46981
47037
|
2,
|
|
46982
47038
|
"Hide",
|
|
46983
|
-
ol.hide(void 0,
|
|
47039
|
+
ol.hide(void 0, Ee.primary),
|
|
46984
47040
|
(e) => {
|
|
46985
47041
|
this._visibilityManager.hide2(), this.viralViewerApi.viralContextMenu.hideContextMenu();
|
|
46986
47042
|
}
|
|
46987
47043
|
), this.viralViewerApi.viralContextMenu.addContextItem(
|
|
46988
47044
|
3,
|
|
46989
47045
|
"Focus",
|
|
46990
|
-
ol.focus(void 0,
|
|
47046
|
+
ol.focus(void 0, Ee.primary),
|
|
46991
47047
|
(e) => {
|
|
46992
47048
|
this._visibilityManager.zoomTo(), this.viralViewerApi.viralContextMenu.hideContextMenu();
|
|
46993
47049
|
}
|
|
46994
47050
|
), this.viralViewerApi.viralContextMenu.addContextItem(
|
|
46995
47051
|
4,
|
|
46996
47052
|
"Properties",
|
|
46997
|
-
ol.properties(void 0,
|
|
47053
|
+
ol.properties(void 0, Ee.secondary),
|
|
46998
47054
|
(e) => {
|
|
46999
47055
|
this.viralViewerApi.viralDraggableModal.show(), this.viralViewerApi.viralContextMenu.hideContextMenu();
|
|
47000
47056
|
}
|
|
@@ -47095,7 +47151,7 @@ class p3 {
|
|
|
47095
47151
|
var n;
|
|
47096
47152
|
if (e !== null && performance.now() - e < t) {
|
|
47097
47153
|
let o = this.viralViewerApi.viralCamera.clientToWorld();
|
|
47098
|
-
if (
|
|
47154
|
+
if (o && (o == null ? void 0 : o.length) > 0)
|
|
47099
47155
|
if ((n = this.viralViewerApi.viralSectionBox) != null && n.isEnabling) {
|
|
47100
47156
|
let l = o.find(
|
|
47101
47157
|
(c) => c.object.name == "Clipping Plane"
|
|
@@ -47223,7 +47279,7 @@ class p3 {
|
|
|
47223
47279
|
}
|
|
47224
47280
|
//#endregion
|
|
47225
47281
|
}
|
|
47226
|
-
function
|
|
47282
|
+
function v3() {
|
|
47227
47283
|
class s {
|
|
47228
47284
|
constructor() {
|
|
47229
47285
|
this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
@@ -47308,8 +47364,8 @@ function m3() {
|
|
|
47308
47364
|
}), self.postMessage(a);
|
|
47309
47365
|
};
|
|
47310
47366
|
}
|
|
47311
|
-
const
|
|
47312
|
-
class
|
|
47367
|
+
const x3 = v3;
|
|
47368
|
+
class b3 extends Q {
|
|
47313
47369
|
constructor() {
|
|
47314
47370
|
super(), this._viralMeshes = [], this._viralInstancedMeshes = [];
|
|
47315
47371
|
}
|
|
@@ -47350,15 +47406,15 @@ class v3 extends Q {
|
|
|
47350
47406
|
this.geometry = null, this.removeFromParent();
|
|
47351
47407
|
}
|
|
47352
47408
|
}
|
|
47353
|
-
class
|
|
47409
|
+
class y3 {
|
|
47354
47410
|
constructor() {
|
|
47355
|
-
this.modelId = -1, this.elements = [], this.materials = [], this.mapMaterialsToMaterialManager = new jr(), this.seperateModel = new
|
|
47411
|
+
this.modelId = -1, this.elements = [], this.materials = [], this.mapMaterialsToMaterialManager = new jr(), this.seperateModel = new b3();
|
|
47356
47412
|
}
|
|
47357
47413
|
dispose() {
|
|
47358
47414
|
this.elements = [], this.materials = [], this.mapMaterialsToMaterialManager = new jr(), this.seperateModel.dispose();
|
|
47359
47415
|
}
|
|
47360
47416
|
}
|
|
47361
|
-
function
|
|
47417
|
+
function _3() {
|
|
47362
47418
|
class s {
|
|
47363
47419
|
constructor() {
|
|
47364
47420
|
this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
@@ -47449,8 +47505,8 @@ function b3() {
|
|
|
47449
47505
|
}), self.postMessage(a);
|
|
47450
47506
|
};
|
|
47451
47507
|
}
|
|
47452
|
-
const
|
|
47453
|
-
class
|
|
47508
|
+
const w3 = _3;
|
|
47509
|
+
class S3 {
|
|
47454
47510
|
constructor() {
|
|
47455
47511
|
this.MIN_VERTEX_INSTANCES_FOR_INSTANCING = 1e3, this.MIN_INSTANCES_FOR_INSTANCING = 3, this.MAX_DRAW_CALLS = 25, this.MIN_INSTANCED_VERTEX_RATIO = 0.6, this.HIGH_VERTEX_THRESHOLD = 500;
|
|
47456
47512
|
}
|
|
@@ -47633,18 +47689,18 @@ class _3 {
|
|
|
47633
47689
|
}
|
|
47634
47690
|
}
|
|
47635
47691
|
}
|
|
47636
|
-
const
|
|
47692
|
+
const M3 = new S3();
|
|
47637
47693
|
class Ab {
|
|
47638
47694
|
// Or 5K objects
|
|
47639
47695
|
//#endregion
|
|
47640
47696
|
constructor(e) {
|
|
47641
47697
|
this.viralViewerApi = e, this.lastRenderTime = 0, this.elementBuffer = /* @__PURE__ */ new Map(), this.BATCH_THRESHOLD_VERTICES = 1e5, this.BATCH_THRESHOLD_OBJECTS = 5e3;
|
|
47642
|
-
const t = new Blob([`(${
|
|
47698
|
+
const t = new Blob([`(${x3})()`]), i = URL.createObjectURL(t);
|
|
47643
47699
|
this.workerPool = new Ar(
|
|
47644
47700
|
navigator.hardwareConcurrency || this.viralViewerApi.options.numberOfWorker,
|
|
47645
47701
|
i
|
|
47646
47702
|
);
|
|
47647
|
-
const n = new Blob([`(${
|
|
47703
|
+
const n = new Blob([`(${w3})()`]), r = URL.createObjectURL(n);
|
|
47648
47704
|
this.workerPool2 = new Ar(
|
|
47649
47705
|
this.viralViewerApi.options.numberOfWorker,
|
|
47650
47706
|
r
|
|
@@ -47657,7 +47713,7 @@ class Ab {
|
|
|
47657
47713
|
*/
|
|
47658
47714
|
initial(e) {
|
|
47659
47715
|
console.log(e);
|
|
47660
|
-
let t = new
|
|
47716
|
+
let t = new y3();
|
|
47661
47717
|
t.modelId = this.viralViewerApi.viralScene.mainModels.length, this.viralViewerApi.viralScene.mainModels.push(t);
|
|
47662
47718
|
let i = this.viralViewerApi.viralScene.mainModels.length - 1;
|
|
47663
47719
|
for (let n = 0; n < e.length; n++) {
|
|
@@ -47697,7 +47753,7 @@ class Ab {
|
|
|
47697
47753
|
*/
|
|
47698
47754
|
loadElement(e, t, i = () => {
|
|
47699
47755
|
}, n = null) {
|
|
47700
|
-
const { highDuplicationElements: r, lowDuplicationElements: a } =
|
|
47756
|
+
const { highDuplicationElements: r, lowDuplicationElements: a } = M3.analyze(t), o = a.map((p) => p.element), l = r.map((p) => p.element), c = o.length > 0, h = l.length > 0;
|
|
47701
47757
|
if (!c && !h) {
|
|
47702
47758
|
i();
|
|
47703
47759
|
return;
|
|
@@ -47822,7 +47878,7 @@ class Ab {
|
|
|
47822
47878
|
* Uses onBeforeCompile to inject custom shader code for RGBA vertex colors
|
|
47823
47879
|
*/
|
|
47824
47880
|
createOptimizedMaterial(e) {
|
|
47825
|
-
const t =
|
|
47881
|
+
const t = e3.getDeviceType() == "pc", i = (a, o = 2) => {
|
|
47826
47882
|
if (!a)
|
|
47827
47883
|
return 16777215;
|
|
47828
47884
|
const l = a.clone();
|
|
@@ -47995,7 +48051,7 @@ class Ab {
|
|
|
47995
48051
|
}
|
|
47996
48052
|
//#endregion
|
|
47997
48053
|
}
|
|
47998
|
-
class
|
|
48054
|
+
class A3 {
|
|
47999
48055
|
constructor(e) {
|
|
48000
48056
|
this.viralViewerApi = e, this.elements = [], this._loadElementPatchWorker = new Ab(e);
|
|
48001
48057
|
}
|
|
@@ -48092,7 +48148,7 @@ class S3 {
|
|
|
48092
48148
|
const i = await (await this.viralViewerApi.viralDataManager.gzipFetch(
|
|
48093
48149
|
e
|
|
48094
48150
|
)).arrayBuffer(), n = new Uint8Array(i);
|
|
48095
|
-
return
|
|
48151
|
+
return VR.parseBuffer(n);
|
|
48096
48152
|
}
|
|
48097
48153
|
async getTracking(e) {
|
|
48098
48154
|
return await (await this.viralViewerApi.viralDataManager.normalFetch(
|
|
@@ -48113,7 +48169,7 @@ class S3 {
|
|
|
48113
48169
|
}
|
|
48114
48170
|
//#endregion
|
|
48115
48171
|
}
|
|
48116
|
-
var
|
|
48172
|
+
var T3 = { 746: (s, e, t) => {
|
|
48117
48173
|
t.d(e, { Z: () => i });
|
|
48118
48174
|
const i = `
|
|
48119
48175
|
precision highp float;
|
|
@@ -49032,7 +49088,7 @@ function Pn(s) {
|
|
|
49032
49088
|
if (e !== void 0)
|
|
49033
49089
|
return e.exports;
|
|
49034
49090
|
var t = pv[s] = { exports: {} };
|
|
49035
|
-
return
|
|
49091
|
+
return T3[s](t, t.exports, Pn), t.exports;
|
|
49036
49092
|
}
|
|
49037
49093
|
Pn.d = (s, e) => {
|
|
49038
49094
|
for (var t in e)
|
|
@@ -49040,8 +49096,8 @@ Pn.d = (s, e) => {
|
|
|
49040
49096
|
}, Pn.o = (s, e) => Object.prototype.hasOwnProperty.call(s, e);
|
|
49041
49097
|
var Ft = {};
|
|
49042
49098
|
(() => {
|
|
49043
|
-
Pn.d(Ft, { HY: () => c, K8: () => i, vF: () => g, jM: () => m, st: () => b, J7: () => ht, KV: () => Te, Tl: () => ee, gv: () => mt, LR: () => ce, C9: () => I, zF: () =>
|
|
49044
|
-
const s = (e = { AdditiveBlending: () => Hl, Box3: () => ft, BufferAttribute: () => ot, BufferGeometry: () => dt, CanvasTexture: () => np, Color: () => Ie, DataTexture: () => Bn, EventDispatcher: () => Ws, Frustum: () => Oo, GLSL3: () => ep, LessEqualDepth: () => la, LineBasicMaterial: () => dn, LineSegments: () => Ci, LinearFilter: () => jt, Matrix4: () =>
|
|
49099
|
+
Pn.d(Ft, { HY: () => c, K8: () => i, vF: () => g, jM: () => m, st: () => b, J7: () => ht, KV: () => Te, Tl: () => ee, gv: () => mt, LR: () => ce, C9: () => I, zF: () => Pe, XL: () => ge, uv: () => ve, vs: () => ue, YJ: () => N, i9: () => l, uD: () => o, lV: () => r, Sp: () => n, RJ: () => Ss, SB: () => kn, TL: () => x, oe: () => y, AB: () => a, dZ: () => _, Gf: () => le, gK: () => w, BT: () => S, bt: () => T, sX: () => E });
|
|
49100
|
+
const s = (e = { AdditiveBlending: () => Hl, Box3: () => ft, BufferAttribute: () => ot, BufferGeometry: () => dt, CanvasTexture: () => np, Color: () => Ie, DataTexture: () => Bn, EventDispatcher: () => Ws, Frustum: () => Oo, GLSL3: () => ep, LessEqualDepth: () => la, LineBasicMaterial: () => dn, LineSegments: () => Ci, LinearFilter: () => jt, Matrix4: () => Ce, NearestFilter: () => Dt, NoBlending: () => $t, Object3D: () => Lt, Points: () => _o, RGBAFormat: () => Kt, RawShaderMaterial: () => hm, Scene: () => lc, ShaderMaterial: () => gt, Sphere: () => ni, Texture: () => ci, Uint8BufferAttribute: () => U1, Vector2: () => K, Vector3: () => P, Vector4: () => Mt, WebGLRenderTarget: () => Tt }, t = {}, Pn.d(t, e), t);
|
|
49045
49101
|
var e, t, i, n, r, a, o, l;
|
|
49046
49102
|
class c extends s.ShaderMaterial {
|
|
49047
49103
|
constructor() {
|
|
@@ -49373,7 +49429,7 @@ var Ft = {};
|
|
|
49373
49429
|
}
|
|
49374
49430
|
}
|
|
49375
49431
|
ge.idCount = 0;
|
|
49376
|
-
class
|
|
49432
|
+
class Pe {
|
|
49377
49433
|
constructor(A, R, O, F, q) {
|
|
49378
49434
|
this.loader = A, this.boundingBox = R, this.tightBoundingBox = O, this.offset = F, this.xhrRequest = q, this.disposed = !1, this.needsUpdate = !0, this.octreeDir = "", this.hierarchyStepSize = -1, this.nodes = {}, this.numNodesLoading = 0, this.maxNumNodesLoading = 3, this.spacing = 0, this.pointAttributes = new mt([]), this.projection = null, this.url = null;
|
|
49379
49435
|
}
|
|
@@ -50160,7 +50216,7 @@ var Ft = {};
|
|
|
50160
50216
|
ze.min.set(at, wt, Nt), ze.max.set(Yt, zt, tt);
|
|
50161
50217
|
}
|
|
50162
50218
|
return Ze.min.sub(je), Ze.max.sub(je), ze.min.sub(je), ze.max.sub(je), { offset: je, boundingBox: Ze, tightBoundingBox: ze };
|
|
50163
|
-
}(Be), $ = new lt({ getUrl: De, version: Be.version, boundingBox: D, scale: Be.scale, xhrRequest: Me }), G = new
|
|
50219
|
+
}(Be), $ = new lt({ getUrl: De, version: Be.version, boundingBox: D, scale: Be.scale, xhrRequest: Me }), G = new Pe($, D, Y, xt, Me);
|
|
50164
50220
|
G.url = Se, G.octreeDir = Be.octreeDir, G.needsUpdate = !0, G.spacing = Be.spacing, G.hierarchyStepSize = Be.hierarchyStepSize, G.projection = Be.projection, G.offset = xt, G.pointAttributes = new mt(Be.pointAttributes), console.log(G.pointAttributes);
|
|
50165
50221
|
const W = {}, xe = new le(Be.version);
|
|
50166
50222
|
return function(ye, He, Ue, Ze) {
|
|
@@ -50303,9 +50359,9 @@ Ft.XL;
|
|
|
50303
50359
|
Ft.uv;
|
|
50304
50360
|
Ft.vs;
|
|
50305
50361
|
Ft.YJ;
|
|
50306
|
-
var
|
|
50362
|
+
var E3 = Ft.i9;
|
|
50307
50363
|
Ft.uD;
|
|
50308
|
-
var
|
|
50364
|
+
var P3 = Ft.lV, C3 = Ft.Sp, I3 = Ft.RJ;
|
|
50309
50365
|
Ft.SB;
|
|
50310
50366
|
Ft.TL;
|
|
50311
50367
|
Ft.oe;
|
|
@@ -50316,9 +50372,9 @@ Ft.gK;
|
|
|
50316
50372
|
Ft.BT;
|
|
50317
50373
|
Ft.bt;
|
|
50318
50374
|
Ft.sX;
|
|
50319
|
-
class
|
|
50375
|
+
class R3 {
|
|
50320
50376
|
constructor(e) {
|
|
50321
|
-
this.viralViewerApi = e, this.potree = new
|
|
50377
|
+
this.viralViewerApi = e, this.potree = new I3(), this.pointClouds = [];
|
|
50322
50378
|
}
|
|
50323
50379
|
/**
|
|
50324
50380
|
*
|
|
@@ -50333,7 +50389,7 @@ class C3 {
|
|
|
50333
50389
|
this.viralViewerApi.viralRenderer.postProcessingRenderer.disableOutline(), this.potree.pointBudget = n, this.potree.loadPointCloudCustom(e, t, i).then((a) => {
|
|
50334
50390
|
var d;
|
|
50335
50391
|
let o = a.material;
|
|
50336
|
-
o.size = 1, o.pointSizeType =
|
|
50392
|
+
o.size = 1, o.pointSizeType = C3.ADAPTIVE, o.shape = P3.CIRCLE, o.pointColorType = E3.RGB, o.inputColorEncoding = 1, o.outputColorEncoding = 1, console.log(a.boundingBox);
|
|
50337
50393
|
let l = new P(0, -1.5, 3), c = new hn(-Math.PI / 2, 0, 0), h = new P(2, 2, 2);
|
|
50338
50394
|
a.position.copy(l), a.rotation.copy(c), a.scale.copy(h), this.viralViewerApi.viralScene.addModel(a), this.viralViewerApi.viralScene.selectables.push(a), this.pointClouds.push(a), this.viralViewerApi.viralCamera.camera && ((d = this.viralViewerApi.viralCamera.cameraControls) == null || d.fitToBox(
|
|
50339
50395
|
a.boundingBox,
|
|
@@ -50342,7 +50398,7 @@ class C3 {
|
|
|
50342
50398
|
});
|
|
50343
50399
|
}
|
|
50344
50400
|
}
|
|
50345
|
-
class
|
|
50401
|
+
class D3 {
|
|
50346
50402
|
constructor(e) {
|
|
50347
50403
|
this.viralViewerApi = e, this.elements = [], this._loadElementBatchWorker = new Ab(e);
|
|
50348
50404
|
}
|
|
@@ -50449,7 +50505,7 @@ class I3 {
|
|
|
50449
50505
|
u.Offset.Z,
|
|
50450
50506
|
u.Offset.Y,
|
|
50451
50507
|
1
|
|
50452
|
-
], g = new
|
|
50508
|
+
], g = new Ce();
|
|
50453
50509
|
g.fromArray(v), p.applyMatrix4(g);
|
|
50454
50510
|
const m = new _i(p.geometry), b = new Ci(
|
|
50455
50511
|
m,
|
|
@@ -50524,7 +50580,7 @@ class I3 {
|
|
|
50524
50580
|
l.Offset.Z,
|
|
50525
50581
|
l.Offset.Y,
|
|
50526
50582
|
1
|
|
50527
|
-
], u = new
|
|
50583
|
+
], u = new Ce();
|
|
50528
50584
|
u.fromArray(d), h.applyMatrix4(u);
|
|
50529
50585
|
var a = h.getAttribute("position").array;
|
|
50530
50586
|
n = n.concat(Array.from(a)), h.dispose();
|
|
@@ -50846,7 +50902,7 @@ class I3 {
|
|
|
50846
50902
|
), this.viralViewerApi.viralMaterialManager.mergeMaterials = [], this.viralViewerApi.viralVisibilityManager.disableGroundShadow(), this.viralViewerApi.viralRenderer.render(), this.viralViewerApi.viralDataManager.dataTree = [], this.viralViewerApi.viralScene.selectables = [];
|
|
50847
50903
|
}
|
|
50848
50904
|
}
|
|
50849
|
-
class
|
|
50905
|
+
class L3 {
|
|
50850
50906
|
constructor(e) {
|
|
50851
50907
|
this.viralViewerApi = e, this.objectLoader = new aM(), this.gltfLoader = new VP();
|
|
50852
50908
|
}
|
|
@@ -50860,9 +50916,9 @@ class R3 {
|
|
|
50860
50916
|
this.gltfLoader.load(e, t, i, n);
|
|
50861
50917
|
}
|
|
50862
50918
|
}
|
|
50863
|
-
class
|
|
50919
|
+
class O3 {
|
|
50864
50920
|
constructor(e) {
|
|
50865
|
-
this.viralViewerApi = e, this.revitLoader = new
|
|
50921
|
+
this.viralViewerApi = e, this.revitLoader = new D3(this.viralViewerApi), this.pointCloudLoader = new R3(this.viralViewerApi), this.threeLoader = new L3(this.viralViewerApi), this.flatbufferLoader = new A3(this.viralViewerApi);
|
|
50866
50922
|
}
|
|
50867
50923
|
}
|
|
50868
50924
|
var Rl = function() {
|
|
@@ -50917,24 +50973,24 @@ Rl.Panel = function(s, e, t) {
|
|
|
50917
50973
|
}
|
|
50918
50974
|
};
|
|
50919
50975
|
};
|
|
50920
|
-
class
|
|
50976
|
+
class N3 {
|
|
50921
50977
|
constructor(e) {
|
|
50922
50978
|
this.viralViewerApi = e, this.stats = null, this.viralViewerApi.targetElement && (this.stats = Rl(), this.stats.showPanel(0), this.viralViewerApi.targetElement.appendChild(this.stats.dom));
|
|
50923
50979
|
}
|
|
50924
50980
|
}
|
|
50925
|
-
const Tb = 0,
|
|
50926
|
-
function
|
|
50981
|
+
const Tb = 0, B3 = 1, U3 = 2, mv = 2, qu = 1.25, gv = 1, Dl = 6 * 4 + 4 + 4, Td = 65535, F3 = Math.pow(2, -24), Zu = Symbol("SKIP_GENERATION");
|
|
50982
|
+
function z3(s) {
|
|
50927
50983
|
return s.index ? s.index.count : s.attributes.position.count;
|
|
50928
50984
|
}
|
|
50929
50985
|
function Pr(s) {
|
|
50930
|
-
return
|
|
50986
|
+
return z3(s) / 3;
|
|
50931
50987
|
}
|
|
50932
|
-
function
|
|
50988
|
+
function k3(s, e = ArrayBuffer) {
|
|
50933
50989
|
return s > 65535 ? new Uint32Array(new e(4 * s)) : new Uint16Array(new e(2 * s));
|
|
50934
50990
|
}
|
|
50935
|
-
function
|
|
50991
|
+
function V3(s, e) {
|
|
50936
50992
|
if (!s.index) {
|
|
50937
|
-
const t = s.attributes.position.count, i = e.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer, n =
|
|
50993
|
+
const t = s.attributes.position.count, i = e.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer, n = k3(t, i);
|
|
50938
50994
|
s.setIndex(new ot(n, 1));
|
|
50939
50995
|
for (let r = 0; r < t; r++)
|
|
50940
50996
|
n[r] = r;
|
|
@@ -50965,7 +51021,7 @@ function Pb(s, e) {
|
|
|
50965
51021
|
}
|
|
50966
51022
|
return t;
|
|
50967
51023
|
}
|
|
50968
|
-
function
|
|
51024
|
+
function X3(s, e) {
|
|
50969
51025
|
const t = Pr(s), i = Pb(s, e).sort((a, o) => a.offset - o.offset), n = i[i.length - 1];
|
|
50970
51026
|
n.count = Math.min(t - n.offset, n.count);
|
|
50971
51027
|
let r = 0;
|
|
@@ -50983,7 +51039,7 @@ function $u(s, e, t, i, n) {
|
|
|
50983
51039
|
}
|
|
50984
51040
|
i[0] = r, i[1] = a, i[2] = o, i[3] = l, i[4] = c, i[5] = h, n[0] = d, n[1] = u, n[2] = f, n[3] = p, n[4] = v, n[5] = g;
|
|
50985
51041
|
}
|
|
50986
|
-
function
|
|
51042
|
+
function H3(s, e = null, t = null, i = null) {
|
|
50987
51043
|
const n = s.attributes.position, r = s.index ? s.index.array : null, a = Pr(s), o = n.normalized;
|
|
50988
51044
|
let l;
|
|
50989
51045
|
e === null ? l = new Float32Array(a * 6) : l = e, t = t || 0, i = i || a;
|
|
@@ -51003,7 +51059,7 @@ function V3(s, e = null, t = null, i = null) {
|
|
|
51003
51059
|
let E = y;
|
|
51004
51060
|
_ > E && (E = _), w > E && (E = w);
|
|
51005
51061
|
const S = (E - T) / 2, M = x * 2;
|
|
51006
|
-
l[v + M + 0] = T + S, l[v + M + 1] = S + (Math.abs(T) + S) *
|
|
51062
|
+
l[v + M + 0] = T + S, l[v + M + 1] = S + (Math.abs(T) + S) * F3;
|
|
51007
51063
|
}
|
|
51008
51064
|
}
|
|
51009
51065
|
return l;
|
|
@@ -51039,20 +51095,20 @@ function ll(s) {
|
|
|
51039
51095
|
const e = s[3] - s[0], t = s[4] - s[1], i = s[5] - s[2];
|
|
51040
51096
|
return 2 * (e * t + t * i + i * e);
|
|
51041
51097
|
}
|
|
51042
|
-
const Ds = 32,
|
|
51098
|
+
const Ds = 32, Y3 = (s, e) => s.candidate - e.candidate, sr = new Array(Ds).fill().map(() => ({
|
|
51043
51099
|
count: 0,
|
|
51044
51100
|
bounds: new Float32Array(6),
|
|
51045
51101
|
rightCacheBounds: new Float32Array(6),
|
|
51046
51102
|
leftCacheBounds: new Float32Array(6),
|
|
51047
51103
|
candidate: 0
|
|
51048
51104
|
})), wh = new Float32Array(6);
|
|
51049
|
-
function
|
|
51105
|
+
function G3(s, e, t, i, n, r) {
|
|
51050
51106
|
let a = -1, o = 0;
|
|
51051
51107
|
if (r === Tb)
|
|
51052
51108
|
a = vv(e), a !== -1 && (o = (e[a] + e[a + 3]) / 2);
|
|
51053
|
-
else if (r ===
|
|
51054
|
-
a = vv(s), a !== -1 && (o =
|
|
51055
|
-
else if (r ===
|
|
51109
|
+
else if (r === B3)
|
|
51110
|
+
a = vv(s), a !== -1 && (o = W3(t, i, n, a));
|
|
51111
|
+
else if (r === U3) {
|
|
51056
51112
|
const l = ll(s);
|
|
51057
51113
|
let c = qu * n;
|
|
51058
51114
|
const h = i * 6, d = (i + n) * 6;
|
|
@@ -51074,7 +51130,7 @@ function H3(s, e, t, i, n, r) {
|
|
|
51074
51130
|
E[S] = 1 / 0, E[S + 3] = -1 / 0, T[S] = 1 / 0, T[S + 3] = -1 / 0, w[S] = 1 / 0, w[S + 3] = -1 / 0;
|
|
51075
51131
|
_h(y, t, w);
|
|
51076
51132
|
}
|
|
51077
|
-
m.sort(
|
|
51133
|
+
m.sort(Y3);
|
|
51078
51134
|
let x = n;
|
|
51079
51135
|
for (let y = 0; y < x; y++) {
|
|
51080
51136
|
const _ = m[y];
|
|
@@ -51134,7 +51190,7 @@ function H3(s, e, t, i, n, r) {
|
|
|
51134
51190
|
console.warn(`MeshBVH: Invalid build strategy value ${r} used.`);
|
|
51135
51191
|
return { axis: a, pos: o };
|
|
51136
51192
|
}
|
|
51137
|
-
function
|
|
51193
|
+
function W3(s, e, t, i) {
|
|
51138
51194
|
let n = 0;
|
|
51139
51195
|
for (let r = e, a = e + t; r < a; r++)
|
|
51140
51196
|
n += s[r * 6 + i * 2];
|
|
@@ -51145,7 +51201,7 @@ class Ku {
|
|
|
51145
51201
|
this.boundingData = new Float32Array(6);
|
|
51146
51202
|
}
|
|
51147
51203
|
}
|
|
51148
|
-
function
|
|
51204
|
+
function Q3(s, e, t, i, n, r) {
|
|
51149
51205
|
let a = i, o = i + n - 1;
|
|
51150
51206
|
const l = r.pos, c = r.axis * 2;
|
|
51151
51207
|
for (; ; ) {
|
|
@@ -51167,7 +51223,7 @@ function G3(s, e, t, i, n, r) {
|
|
|
51167
51223
|
return a;
|
|
51168
51224
|
}
|
|
51169
51225
|
}
|
|
51170
|
-
function
|
|
51226
|
+
function j3(s, e, t, i, n, r) {
|
|
51171
51227
|
let a = i, o = i + n - 1;
|
|
51172
51228
|
const l = r.pos, c = r.axis * 2;
|
|
51173
51229
|
for (; ; ) {
|
|
@@ -51206,11 +51262,11 @@ function Cb(s, e) {
|
|
|
51206
51262
|
return e[s + 7];
|
|
51207
51263
|
}
|
|
51208
51264
|
let Ib, Sl, Wh, Rb;
|
|
51209
|
-
const
|
|
51265
|
+
const q3 = Math.pow(2, 32);
|
|
51210
51266
|
function up(s) {
|
|
51211
51267
|
return "count" in s ? 1 : 1 + up(s.left) + up(s.right);
|
|
51212
51268
|
}
|
|
51213
|
-
function
|
|
51269
|
+
function Z3(s, e, t) {
|
|
51214
51270
|
return Ib = new Float32Array(t), Sl = new Uint32Array(t), Wh = new Uint16Array(t), Rb = new Uint8Array(t), fp(s, e);
|
|
51215
51271
|
}
|
|
51216
51272
|
function fp(s, e) {
|
|
@@ -51233,18 +51289,18 @@ function fp(s, e) {
|
|
|
51233
51289
|
else {
|
|
51234
51290
|
const a = e.left, o = e.right, l = e.splitAxis;
|
|
51235
51291
|
let c;
|
|
51236
|
-
if (c = fp(s + Dl, a), c / 4 >
|
|
51292
|
+
if (c = fp(s + Dl, a), c / 4 > q3)
|
|
51237
51293
|
throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");
|
|
51238
51294
|
return Sl[t + 6] = c / 4, c = fp(c, o), Sl[t + 7] = l, c;
|
|
51239
51295
|
}
|
|
51240
51296
|
}
|
|
51241
|
-
function
|
|
51297
|
+
function $3(s, e) {
|
|
51242
51298
|
const t = (s.index ? s.index.count : s.attributes.position.count) / 3, i = t > 2 ** 16, n = i ? 4 : 2, r = e ? new SharedArrayBuffer(t * n) : new ArrayBuffer(t * n), a = i ? new Uint32Array(r) : new Uint16Array(r);
|
|
51243
51299
|
for (let o = 0, l = a.length; o < l; o++)
|
|
51244
51300
|
a[o] = o;
|
|
51245
51301
|
return a;
|
|
51246
51302
|
}
|
|
51247
|
-
function
|
|
51303
|
+
function K3(s, e, t, i, n) {
|
|
51248
51304
|
const {
|
|
51249
51305
|
maxDepth: r,
|
|
51250
51306
|
verbose: a,
|
|
@@ -51252,7 +51308,7 @@ function Z3(s, e, t, i, n) {
|
|
|
51252
51308
|
strategy: l,
|
|
51253
51309
|
onProgress: c,
|
|
51254
51310
|
indirect: h
|
|
51255
|
-
} = n, d = s._indirectBuffer, u = s.geometry, f = u.index ? u.index.array : null, p = h ?
|
|
51311
|
+
} = n, d = s._indirectBuffer, u = s.geometry, f = u.index ? u.index.array : null, p = h ? j3 : Q3, v = Pr(u), g = new Float32Array(6);
|
|
51256
51312
|
let m = !1;
|
|
51257
51313
|
const b = new Ku();
|
|
51258
51314
|
return $u(e, t, i, b.boundingData, g), y(b, t, i, g), b;
|
|
@@ -51262,7 +51318,7 @@ function Z3(s, e, t, i, n) {
|
|
|
51262
51318
|
function y(_, w, T, E = null, S = 0) {
|
|
51263
51319
|
if (!m && S >= r && (m = !0, a && (console.warn(`MeshBVH: Max depth of ${r} reached when generating BVH. Consider increasing maxDepth.`), console.warn(u))), T <= o || S >= r)
|
|
51264
51320
|
return x(w + T), _.offset = w, _.count = T, _;
|
|
51265
|
-
const M =
|
|
51321
|
+
const M = G3(_.boundingData, E, e, w, T, l);
|
|
51266
51322
|
if (M.axis === -1)
|
|
51267
51323
|
return x(w + T), _.offset = w, _.count = T, _;
|
|
51268
51324
|
const C = p(d, f, e, w, T, M);
|
|
@@ -51278,15 +51334,15 @@ function Z3(s, e, t, i, n) {
|
|
|
51278
51334
|
return _;
|
|
51279
51335
|
}
|
|
51280
51336
|
}
|
|
51281
|
-
function
|
|
51337
|
+
function J3(s, e) {
|
|
51282
51338
|
const t = s.geometry;
|
|
51283
|
-
e.indirect && (s._indirectBuffer =
|
|
51339
|
+
e.indirect && (s._indirectBuffer = $3(t, e.useSharedArrayBuffer), X3(t, e.range) && !e.verbose && console.warn(
|
|
51284
51340
|
'MeshBVH: Provided geometry contains groups or a range that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.'
|
|
51285
|
-
)), s._indirectBuffer ||
|
|
51286
|
-
const i = e.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer, n = Eb(t, e.range), r =
|
|
51341
|
+
)), s._indirectBuffer || V3(t, e);
|
|
51342
|
+
const i = e.useSharedArrayBuffer ? SharedArrayBuffer : ArrayBuffer, n = Eb(t, e.range), r = H3(t, null, n[0].offset, n[0].count), a = e.indirect ? n : Pb(t, e.range);
|
|
51287
51343
|
s._roots = a.map((o) => {
|
|
51288
|
-
const l =
|
|
51289
|
-
return
|
|
51344
|
+
const l = K3(s, r, o.offset, o.count, e), c = up(l), h = new i(Dl * c);
|
|
51345
|
+
return Z3(0, l, h), h;
|
|
51290
51346
|
});
|
|
51291
51347
|
}
|
|
51292
51348
|
class Gs {
|
|
@@ -51328,7 +51384,7 @@ Gs.prototype.setFromBox = function() {
|
|
|
51328
51384
|
this.min = a, this.max = o;
|
|
51329
51385
|
};
|
|
51330
51386
|
}();
|
|
51331
|
-
const
|
|
51387
|
+
const eI = function() {
|
|
51332
51388
|
const s = new P(), e = new P(), t = new P();
|
|
51333
51389
|
return function(n, r, a) {
|
|
51334
51390
|
const o = n.start, l = s, c = r.start, h = e;
|
|
@@ -51340,7 +51396,7 @@ const K3 = function() {
|
|
|
51340
51396
|
}(), vm = function() {
|
|
51341
51397
|
const s = new K(), e = new P(), t = new P();
|
|
51342
51398
|
return function(n, r, a, o) {
|
|
51343
|
-
|
|
51399
|
+
eI(n, r, s);
|
|
51344
51400
|
let l = s.x, c = s.y;
|
|
51345
51401
|
if (l >= 0 && l <= 1 && c >= 0 && c <= 1) {
|
|
51346
51402
|
n.at(l, a), r.at(c, o);
|
|
@@ -51366,7 +51422,7 @@ const K3 = function() {
|
|
|
51366
51422
|
}
|
|
51367
51423
|
}
|
|
51368
51424
|
};
|
|
51369
|
-
}(),
|
|
51425
|
+
}(), tI = function() {
|
|
51370
51426
|
const s = new P(), e = new P(), t = new ji(), i = new _s();
|
|
51371
51427
|
return function(r, a) {
|
|
51372
51428
|
const { radius: o, center: l } = r, { a: c, b: h, c: d } = a;
|
|
@@ -51380,7 +51436,7 @@ const K3 = function() {
|
|
|
51380
51436
|
}
|
|
51381
51437
|
return !1;
|
|
51382
51438
|
};
|
|
51383
|
-
}(),
|
|
51439
|
+
}(), iI = ["x", "y", "z"], Bs = 1e-15, yv = Bs * Bs;
|
|
51384
51440
|
function Tn(s) {
|
|
51385
51441
|
return Math.abs(s) < Bs;
|
|
51386
51442
|
}
|
|
@@ -51389,7 +51445,7 @@ class es extends vn {
|
|
|
51389
51445
|
super(...e), this.isExtendedTriangle = !0, this.satAxes = new Array(4).fill().map(() => new P()), this.satBounds = new Array(4).fill().map(() => new Gs()), this.points = [this.a, this.b, this.c], this.plane = new ji(), this.isDegenerateIntoSegment = !1, this.isDegenerateIntoPoint = !1, this.degenerateSegment = new _s(), this.needsUpdate = !0;
|
|
51390
51446
|
}
|
|
51391
51447
|
intersectsSphere(e) {
|
|
51392
|
-
return
|
|
51448
|
+
return tI(e, this);
|
|
51393
51449
|
}
|
|
51394
51450
|
update() {
|
|
51395
51451
|
const e = this.a, t = this.b, i = this.c, n = this.points, r = this.satAxes, a = this.satBounds, o = r[0], l = a[0];
|
|
@@ -51511,7 +51567,7 @@ es.prototype.intersectsTriangle = function() {
|
|
|
51511
51567
|
let Ne = 0, ce = Math.abs(pe.x);
|
|
51512
51568
|
const we = Math.abs(pe.y);
|
|
51513
51569
|
we > ce && (ce = we, Ne = 1), Math.abs(pe.z) > ce && (Ne = 2);
|
|
51514
|
-
const Fe =
|
|
51570
|
+
const Fe = iI[Ne], ne = this.a[Fe], ee = this.b[Fe], Te = this.c[Fe], Xe = y.a[Fe], Ge = y.b[Fe], ht = y.c[Fe];
|
|
51515
51571
|
if (p(this, ne, ee, Te, U, z, M, C, L, h, o))
|
|
51516
51572
|
return u(this, y, _, w);
|
|
51517
51573
|
if (p(y, Xe, Ge, ht, Z, ie, X, j, re, d, l))
|
|
@@ -51562,7 +51618,7 @@ es.prototype.distanceToTriangle = function() {
|
|
|
51562
51618
|
}();
|
|
51563
51619
|
class Ji {
|
|
51564
51620
|
constructor(e, t, i) {
|
|
51565
|
-
this.isOrientedBox = !0, this.min = new P(), this.max = new P(), this.matrix = new
|
|
51621
|
+
this.isOrientedBox = !0, this.min = new P(), this.max = new P(), this.matrix = new Ce(), this.invMatrix = new Ce(), this.points = new Array(8).fill().map(() => new P()), this.satAxes = new Array(3).fill().map(() => new P()), this.satBounds = new Array(3).fill().map(() => new Gs()), this.alignedSatBounds = new Array(3).fill().map(() => new Gs()), this.needsUpdate = !1, e && this.min.copy(e), t && this.max.copy(t), i && this.matrix.copy(i);
|
|
51566
51622
|
}
|
|
51567
51623
|
set(e, t, i) {
|
|
51568
51624
|
this.min.copy(e), this.max.copy(t), this.matrix.copy(i), this.needsUpdate = !0;
|
|
@@ -51699,13 +51755,13 @@ class xm {
|
|
|
51699
51755
|
this._primitives.push(e);
|
|
51700
51756
|
}
|
|
51701
51757
|
}
|
|
51702
|
-
class
|
|
51758
|
+
class nI extends xm {
|
|
51703
51759
|
constructor() {
|
|
51704
51760
|
super(() => new es());
|
|
51705
51761
|
}
|
|
51706
51762
|
}
|
|
51707
|
-
const On = /* @__PURE__ */ new
|
|
51708
|
-
class
|
|
51763
|
+
const On = /* @__PURE__ */ new nI();
|
|
51764
|
+
class sI {
|
|
51709
51765
|
constructor() {
|
|
51710
51766
|
this.float32Array = null, this.uint16Array = null, this.uint32Array = null;
|
|
51711
51767
|
const e = [];
|
|
@@ -51717,10 +51773,10 @@ class iI {
|
|
|
51717
51773
|
};
|
|
51718
51774
|
}
|
|
51719
51775
|
}
|
|
51720
|
-
const Jt = new
|
|
51776
|
+
const Jt = new sI();
|
|
51721
51777
|
let gr, oo;
|
|
51722
51778
|
const ja = [], Sh = /* @__PURE__ */ new xm(() => new ft());
|
|
51723
|
-
function
|
|
51779
|
+
function rI(s, e, t, i, n, r) {
|
|
51724
51780
|
gr = Sh.getPrimitive(), oo = Sh.getPrimitive(), ja.push(gr, oo), Jt.setBuffer(s._roots[e]);
|
|
51725
51781
|
const a = pp(0, s.geometry, t, i, n, r);
|
|
51726
51782
|
Jt.clearBuffer(), Sh.releasePrimitive(gr), Sh.releasePrimitive(oo), ja.pop(), ja.pop();
|
|
@@ -51792,7 +51848,7 @@ function pp(s, e, t, i, n = null, r = 0, a = 0) {
|
|
|
51792
51848
|
}
|
|
51793
51849
|
}
|
|
51794
51850
|
const cl = /* @__PURE__ */ new P(), Ju = /* @__PURE__ */ new P();
|
|
51795
|
-
function
|
|
51851
|
+
function aI(s, e, t = {}, i = 0, n = 1 / 0) {
|
|
51796
51852
|
const r = i * i, a = n * n;
|
|
51797
51853
|
let o = 1 / 0, l = null;
|
|
51798
51854
|
if (s.shapecast(
|
|
@@ -51810,8 +51866,8 @@ function sI(s, e, t = {}, i = 0, n = 1 / 0) {
|
|
|
51810
51866
|
const c = Math.sqrt(o);
|
|
51811
51867
|
return t.point ? t.point.copy(Ju) : t.point = Ju.clone(), t.distance = c, t.faceIndex = l, t;
|
|
51812
51868
|
}
|
|
51813
|
-
const Mh = parseInt(Do) >= 169,
|
|
51814
|
-
function
|
|
51869
|
+
const Mh = parseInt(Do) >= 169, oI = parseInt(Do) <= 161, Xr = /* @__PURE__ */ new P(), Hr = /* @__PURE__ */ new P(), Yr = /* @__PURE__ */ new P(), Ah = /* @__PURE__ */ new K(), Th = /* @__PURE__ */ new K(), Eh = /* @__PURE__ */ new K(), _v = /* @__PURE__ */ new P(), wv = /* @__PURE__ */ new P(), Sv = /* @__PURE__ */ new P(), hl = /* @__PURE__ */ new P();
|
|
51870
|
+
function lI(s, e, t, i, n, r, a, o) {
|
|
51815
51871
|
let l;
|
|
51816
51872
|
if (r === $i ? l = s.intersectTriangle(i, t, e, !0, n) : l = s.intersectTriangle(e, t, i, r !== pi, n), l === null)
|
|
51817
51873
|
return null;
|
|
@@ -51821,9 +51877,9 @@ function aI(s, e, t, i, n, r, a, o) {
|
|
|
51821
51877
|
point: n.clone()
|
|
51822
51878
|
};
|
|
51823
51879
|
}
|
|
51824
|
-
function
|
|
51880
|
+
function cI(s, e, t, i, n, r, a, o, l, c, h) {
|
|
51825
51881
|
Xr.fromBufferAttribute(e, r), Hr.fromBufferAttribute(e, a), Yr.fromBufferAttribute(e, o);
|
|
51826
|
-
const d =
|
|
51882
|
+
const d = lI(s, Xr, Hr, Yr, hl, l, c, h);
|
|
51827
51883
|
if (d) {
|
|
51828
51884
|
if (i) {
|
|
51829
51885
|
Ah.fromBufferAttribute(i, r), Th.fromBufferAttribute(i, a), Eh.fromBufferAttribute(i, o), d.uv = new K();
|
|
@@ -51833,7 +51889,7 @@ function oI(s, e, t, i, n, r, a, o, l, c, h) {
|
|
|
51833
51889
|
if (n) {
|
|
51834
51890
|
Ah.fromBufferAttribute(n, r), Th.fromBufferAttribute(n, a), Eh.fromBufferAttribute(n, o), d.uv1 = new K();
|
|
51835
51891
|
const f = vn.getInterpolation(hl, Xr, Hr, Yr, Ah, Th, Eh, d.uv1);
|
|
51836
|
-
Mh || (d.uv1 = f),
|
|
51892
|
+
Mh || (d.uv1 = f), oI && (d.uv2 = d.uv1);
|
|
51837
51893
|
}
|
|
51838
51894
|
if (t) {
|
|
51839
51895
|
_v.fromBufferAttribute(t, r), wv.fromBufferAttribute(t, a), Sv.fromBufferAttribute(t, o), d.normal = new P();
|
|
@@ -51859,7 +51915,7 @@ function Ed(s, e, t, i, n, r, a) {
|
|
|
51859
51915
|
let l = o + 0, c = o + 1, h = o + 2;
|
|
51860
51916
|
const d = s.index;
|
|
51861
51917
|
s.index && (l = d.getX(l), c = d.getX(c), h = d.getX(h));
|
|
51862
|
-
const { position: u, normal: f, uv: p, uv1: v } = s.attributes, g =
|
|
51918
|
+
const { position: u, normal: f, uv: p, uv1: v } = s.attributes, g = cI(t, u, f, p, v, l, c, h, e, r, a);
|
|
51863
51919
|
return g ? (g.faceIndex = i, n && n.push(g), g) : null;
|
|
51864
51920
|
}
|
|
51865
51921
|
function xi(s, e, t, i) {
|
|
@@ -51867,12 +51923,12 @@ function xi(s, e, t, i) {
|
|
|
51867
51923
|
let o = e, l = e + 1, c = e + 2;
|
|
51868
51924
|
t && (o = t.getX(o), l = t.getX(l), c = t.getX(c)), n.x = i.getX(o), n.y = i.getY(o), n.z = i.getZ(o), r.x = i.getX(l), r.y = i.getY(l), r.z = i.getZ(l), a.x = i.getX(c), a.y = i.getY(c), a.z = i.getZ(c);
|
|
51869
51925
|
}
|
|
51870
|
-
function
|
|
51926
|
+
function hI(s, e, t, i, n, r, a, o) {
|
|
51871
51927
|
const { geometry: l, _indirectBuffer: c } = s;
|
|
51872
51928
|
for (let h = i, d = i + n; h < d; h++)
|
|
51873
51929
|
Ed(l, e, t, h, r, a, o);
|
|
51874
51930
|
}
|
|
51875
|
-
function
|
|
51931
|
+
function dI(s, e, t, i, n, r, a) {
|
|
51876
51932
|
const { geometry: o, _indirectBuffer: l } = s;
|
|
51877
51933
|
let c = 1 / 0, h = null;
|
|
51878
51934
|
for (let d = i, u = i + n; d < u; d++) {
|
|
@@ -51881,7 +51937,7 @@ function cI(s, e, t, i, n, r, a) {
|
|
|
51881
51937
|
}
|
|
51882
51938
|
return h;
|
|
51883
51939
|
}
|
|
51884
|
-
function
|
|
51940
|
+
function uI(s, e, t, i, n, r, a) {
|
|
51885
51941
|
const { geometry: o } = t, { index: l } = o, c = o.attributes.position;
|
|
51886
51942
|
for (let h = s, d = e + s; h < d; h++) {
|
|
51887
51943
|
let u;
|
|
@@ -51890,7 +51946,7 @@ function hI(s, e, t, i, n, r, a) {
|
|
|
51890
51946
|
}
|
|
51891
51947
|
return !1;
|
|
51892
51948
|
}
|
|
51893
|
-
function
|
|
51949
|
+
function fI(s, e = null) {
|
|
51894
51950
|
e && Array.isArray(e) && (e = new Set(e));
|
|
51895
51951
|
const t = s.geometry, i = t.index ? t.index.array : null, n = t.attributes.position;
|
|
51896
51952
|
let r, a, o, l, c = 0;
|
|
@@ -51933,14 +51989,14 @@ function Tr(s, e, t, i, n) {
|
|
|
51933
51989
|
let m = e[s], b = e[s + 3], x = e[s + 1], y = e[s + 3 + 1], _ = e[s + 2], w = e[s + 3 + 2];
|
|
51934
51990
|
return d >= 0 ? (r = (m - p) * d, a = (b - p) * d) : (r = (b - p) * d, a = (m - p) * d), u >= 0 ? (o = (x - v) * u, l = (y - v) * u) : (o = (y - v) * u, l = (x - v) * u), r > l || o > a || ((o > r || isNaN(r)) && (r = o), (l < a || isNaN(a)) && (a = l), f >= 0 ? (c = (_ - g) * f, h = (w - g) * f) : (c = (w - g) * f, h = (_ - g) * f), r > h || c > a) ? !1 : ((c > r || r !== r) && (r = c), (h < a || a !== a) && (a = h), r <= n && a >= i);
|
|
51935
51991
|
}
|
|
51936
|
-
function
|
|
51992
|
+
function pI(s, e, t, i, n, r, a, o) {
|
|
51937
51993
|
const { geometry: l, _indirectBuffer: c } = s;
|
|
51938
51994
|
for (let h = i, d = i + n; h < d; h++) {
|
|
51939
51995
|
let u = c ? c[h] : h;
|
|
51940
51996
|
Ed(l, e, t, u, r, a, o);
|
|
51941
51997
|
}
|
|
51942
51998
|
}
|
|
51943
|
-
function
|
|
51999
|
+
function mI(s, e, t, i, n, r, a) {
|
|
51944
52000
|
const { geometry: o, _indirectBuffer: l } = s;
|
|
51945
52001
|
let c = 1 / 0, h = null;
|
|
51946
52002
|
for (let d = i, u = i + n; d < u; d++) {
|
|
@@ -51949,7 +52005,7 @@ function fI(s, e, t, i, n, r, a) {
|
|
|
51949
52005
|
}
|
|
51950
52006
|
return h;
|
|
51951
52007
|
}
|
|
51952
|
-
function
|
|
52008
|
+
function gI(s, e, t, i, n, r, a) {
|
|
51953
52009
|
const { geometry: o } = t, { index: l } = o, c = o.attributes.position;
|
|
51954
52010
|
for (let h = s, d = e + s; h < d; h++) {
|
|
51955
52011
|
let u;
|
|
@@ -51958,14 +52014,14 @@ function pI(s, e, t, i, n, r, a) {
|
|
|
51958
52014
|
}
|
|
51959
52015
|
return !1;
|
|
51960
52016
|
}
|
|
51961
|
-
function
|
|
52017
|
+
function vI(s, e, t, i, n, r, a) {
|
|
51962
52018
|
Jt.setBuffer(s._roots[e]), mp(0, s, t, i, n, r, a), Jt.clearBuffer();
|
|
51963
52019
|
}
|
|
51964
52020
|
function mp(s, e, t, i, n, r, a) {
|
|
51965
52021
|
const { float32Array: o, uint16Array: l, uint32Array: c } = Jt, h = s * 2;
|
|
51966
52022
|
if (ln(h, l)) {
|
|
51967
52023
|
const u = _n(s, c), f = Rn(h, l);
|
|
51968
|
-
|
|
52024
|
+
hI(e, t, i, u, f, n, r, a);
|
|
51969
52025
|
} else {
|
|
51970
52026
|
const u = Dn(s);
|
|
51971
52027
|
Tr(u, o, i, r, a) && mp(u, e, t, i, n, r, a);
|
|
@@ -51973,8 +52029,8 @@ function mp(s, e, t, i, n, r, a) {
|
|
|
51973
52029
|
Tr(f, o, i, r, a) && mp(f, e, t, i, n, r, a);
|
|
51974
52030
|
}
|
|
51975
52031
|
}
|
|
51976
|
-
const
|
|
51977
|
-
function
|
|
52032
|
+
const xI = ["x", "y", "z"];
|
|
52033
|
+
function bI(s, e, t, i, n, r) {
|
|
51978
52034
|
Jt.setBuffer(s._roots[e]);
|
|
51979
52035
|
const a = gp(0, s, t, i, n, r);
|
|
51980
52036
|
return Jt.clearBuffer(), a;
|
|
@@ -51984,9 +52040,9 @@ function gp(s, e, t, i, n, r) {
|
|
|
51984
52040
|
let c = s * 2;
|
|
51985
52041
|
if (ln(c, o)) {
|
|
51986
52042
|
const d = _n(s, l), u = Rn(c, o);
|
|
51987
|
-
return
|
|
52043
|
+
return dI(e, t, i, d, u, n, r);
|
|
51988
52044
|
} else {
|
|
51989
|
-
const d = Cb(s, l), u =
|
|
52045
|
+
const d = Cb(s, l), u = xI[d], p = i.direction[u] >= 0;
|
|
51990
52046
|
let v, g;
|
|
51991
52047
|
p ? (v = Dn(s), g = Ln(s, l)) : (v = Ln(s, l), g = Dn(s));
|
|
51992
52048
|
const b = Tr(v, a, i, n, r) ? gp(v, e, t, i, n, r) : null;
|
|
@@ -52002,8 +52058,8 @@ function gp(s, e, t, i, n, r) {
|
|
|
52002
52058
|
return b && y ? b.distance <= y.distance ? b : y : b || y || null;
|
|
52003
52059
|
}
|
|
52004
52060
|
}
|
|
52005
|
-
const Ph = /* @__PURE__ */ new ft(), qa = /* @__PURE__ */ new es(), Za = /* @__PURE__ */ new es(), dl = /* @__PURE__ */ new
|
|
52006
|
-
function
|
|
52061
|
+
const Ph = /* @__PURE__ */ new ft(), qa = /* @__PURE__ */ new es(), Za = /* @__PURE__ */ new es(), dl = /* @__PURE__ */ new Ce(), Mv = /* @__PURE__ */ new Ji(), Ch = /* @__PURE__ */ new Ji();
|
|
52062
|
+
function yI(s, e, t, i) {
|
|
52007
52063
|
Jt.setBuffer(s._roots[e]);
|
|
52008
52064
|
const n = vp(0, s, t, i);
|
|
52009
52065
|
return Jt.clearBuffer(), n;
|
|
@@ -52038,12 +52094,12 @@ function vp(s, e, t, i, n = null) {
|
|
|
52038
52094
|
return di(h, r, Ph), !!(n.intersectsBox(Ph) && vp(h, e, t, i, n) || (di(d, r, Ph), n.intersectsBox(Ph) && vp(d, e, t, i, n)));
|
|
52039
52095
|
}
|
|
52040
52096
|
}
|
|
52041
|
-
const Ih = /* @__PURE__ */ new
|
|
52042
|
-
function
|
|
52097
|
+
const Ih = /* @__PURE__ */ new Ce(), ef = /* @__PURE__ */ new Ji(), ul = /* @__PURE__ */ new Ji(), _I = /* @__PURE__ */ new P(), wI = /* @__PURE__ */ new P(), SI = /* @__PURE__ */ new P(), MI = /* @__PURE__ */ new P();
|
|
52098
|
+
function AI(s, e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
52043
52099
|
e.boundingBox || e.computeBoundingBox(), ef.set(e.boundingBox.min, e.boundingBox.max, t), ef.needsUpdate = !0;
|
|
52044
52100
|
const o = s.geometry, l = o.attributes.position, c = o.index, h = e.attributes.position, d = e.index, u = On.getPrimitive(), f = On.getPrimitive();
|
|
52045
|
-
let p =
|
|
52046
|
-
n && (g =
|
|
52101
|
+
let p = _I, v = wI, g = null, m = null;
|
|
52102
|
+
n && (g = SI, m = MI);
|
|
52047
52103
|
let b = 1 / 0, x = null, y = null;
|
|
52048
52104
|
return Ih.copy(t).invert(), ul.matrix.copy(Ih), s.shapecast(
|
|
52049
52105
|
{
|
|
@@ -52082,7 +52138,7 @@ function SI(s, e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
|
52082
52138
|
}
|
|
52083
52139
|
), On.releasePrimitive(u), On.releasePrimitive(f), b === 1 / 0 ? null : (i.point ? i.point.copy(v) : i.point = v.clone(), i.distance = b, i.faceIndex = x, n && (n.point ? n.point.copy(m) : n.point = m.clone(), n.point.applyMatrix4(Ih), v.applyMatrix4(Ih), n.distance = v.sub(n.point).length(), n.faceIndex = y), i);
|
|
52084
52140
|
}
|
|
52085
|
-
function
|
|
52141
|
+
function TI(s, e = null) {
|
|
52086
52142
|
e && Array.isArray(e) && (e = new Set(e));
|
|
52087
52143
|
const t = s.geometry, i = t.index ? t.index.array : null, n = t.attributes.position;
|
|
52088
52144
|
let r, a, o, l, c = 0;
|
|
@@ -52123,14 +52179,14 @@ function MI(s, e = null) {
|
|
|
52123
52179
|
}
|
|
52124
52180
|
}
|
|
52125
52181
|
}
|
|
52126
|
-
function
|
|
52182
|
+
function EI(s, e, t, i, n, r, a) {
|
|
52127
52183
|
Jt.setBuffer(s._roots[e]), xp(0, s, t, i, n, r, a), Jt.clearBuffer();
|
|
52128
52184
|
}
|
|
52129
52185
|
function xp(s, e, t, i, n, r, a) {
|
|
52130
52186
|
const { float32Array: o, uint16Array: l, uint32Array: c } = Jt, h = s * 2;
|
|
52131
52187
|
if (ln(h, l)) {
|
|
52132
52188
|
const u = _n(s, c), f = Rn(h, l);
|
|
52133
|
-
|
|
52189
|
+
pI(e, t, i, u, f, n, r, a);
|
|
52134
52190
|
} else {
|
|
52135
52191
|
const u = Dn(s);
|
|
52136
52192
|
Tr(u, o, i, r, a) && xp(u, e, t, i, n, r, a);
|
|
@@ -52138,8 +52194,8 @@ function xp(s, e, t, i, n, r, a) {
|
|
|
52138
52194
|
Tr(f, o, i, r, a) && xp(f, e, t, i, n, r, a);
|
|
52139
52195
|
}
|
|
52140
52196
|
}
|
|
52141
|
-
const
|
|
52142
|
-
function
|
|
52197
|
+
const PI = ["x", "y", "z"];
|
|
52198
|
+
function CI(s, e, t, i, n, r) {
|
|
52143
52199
|
Jt.setBuffer(s._roots[e]);
|
|
52144
52200
|
const a = bp(0, s, t, i, n, r);
|
|
52145
52201
|
return Jt.clearBuffer(), a;
|
|
@@ -52149,9 +52205,9 @@ function bp(s, e, t, i, n, r) {
|
|
|
52149
52205
|
let c = s * 2;
|
|
52150
52206
|
if (ln(c, o)) {
|
|
52151
52207
|
const d = _n(s, l), u = Rn(c, o);
|
|
52152
|
-
return
|
|
52208
|
+
return mI(e, t, i, d, u, n, r);
|
|
52153
52209
|
} else {
|
|
52154
|
-
const d = Cb(s, l), u =
|
|
52210
|
+
const d = Cb(s, l), u = PI[d], p = i.direction[u] >= 0;
|
|
52155
52211
|
let v, g;
|
|
52156
52212
|
p ? (v = Dn(s), g = Ln(s, l)) : (v = Ln(s, l), g = Dn(s));
|
|
52157
52213
|
const b = Tr(v, a, i, n, r) ? bp(v, e, t, i, n, r) : null;
|
|
@@ -52167,8 +52223,8 @@ function bp(s, e, t, i, n, r) {
|
|
|
52167
52223
|
return b && y ? b.distance <= y.distance ? b : y : b || y || null;
|
|
52168
52224
|
}
|
|
52169
52225
|
}
|
|
52170
|
-
const Rh = /* @__PURE__ */ new ft(), $a = /* @__PURE__ */ new es(), Ka = /* @__PURE__ */ new es(), fl = /* @__PURE__ */ new
|
|
52171
|
-
function
|
|
52226
|
+
const Rh = /* @__PURE__ */ new ft(), $a = /* @__PURE__ */ new es(), Ka = /* @__PURE__ */ new es(), fl = /* @__PURE__ */ new Ce(), Av = /* @__PURE__ */ new Ji(), Dh = /* @__PURE__ */ new Ji();
|
|
52227
|
+
function II(s, e, t, i) {
|
|
52172
52228
|
Jt.setBuffer(s._roots[e]);
|
|
52173
52229
|
const n = yp(0, s, t, i);
|
|
52174
52230
|
return Jt.clearBuffer(), n;
|
|
@@ -52204,12 +52260,12 @@ function yp(s, e, t, i, n = null) {
|
|
|
52204
52260
|
return di(h, r, Rh), !!(n.intersectsBox(Rh) && yp(h, e, t, i, n) || (di(d, r, Rh), n.intersectsBox(Rh) && yp(d, e, t, i, n)));
|
|
52205
52261
|
}
|
|
52206
52262
|
}
|
|
52207
|
-
const Lh = /* @__PURE__ */ new
|
|
52208
|
-
function
|
|
52263
|
+
const Lh = /* @__PURE__ */ new Ce(), tf = /* @__PURE__ */ new Ji(), pl = /* @__PURE__ */ new Ji(), RI = /* @__PURE__ */ new P(), DI = /* @__PURE__ */ new P(), LI = /* @__PURE__ */ new P(), OI = /* @__PURE__ */ new P();
|
|
52264
|
+
function NI(s, e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
52209
52265
|
e.boundingBox || e.computeBoundingBox(), tf.set(e.boundingBox.min, e.boundingBox.max, t), tf.needsUpdate = !0;
|
|
52210
52266
|
const o = s.geometry, l = o.attributes.position, c = o.index, h = e.attributes.position, d = e.index, u = On.getPrimitive(), f = On.getPrimitive();
|
|
52211
|
-
let p =
|
|
52212
|
-
n && (g =
|
|
52267
|
+
let p = RI, v = DI, g = null, m = null;
|
|
52268
|
+
n && (g = LI, m = OI);
|
|
52213
52269
|
let b = 1 / 0, x = null, y = null;
|
|
52214
52270
|
return Lh.copy(t).invert(), pl.matrix.copy(Lh), s.shapecast(
|
|
52215
52271
|
{
|
|
@@ -52252,18 +52308,18 @@ function LI(s, e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
|
52252
52308
|
}
|
|
52253
52309
|
), On.releasePrimitive(u), On.releasePrimitive(f), b === 1 / 0 ? null : (i.point ? i.point.copy(v) : i.point = v.clone(), i.distance = b, i.faceIndex = x, n && (n.point ? n.point.copy(m) : n.point = m.clone(), n.point.applyMatrix4(Lh), v.applyMatrix4(Lh), n.distance = v.sub(n.point).length(), n.faceIndex = y), i);
|
|
52254
52310
|
}
|
|
52255
|
-
function
|
|
52311
|
+
function BI() {
|
|
52256
52312
|
return typeof SharedArrayBuffer < "u";
|
|
52257
52313
|
}
|
|
52258
52314
|
const Ll = new Jt.constructor(), ld = new Jt.constructor(), or = new xm(() => new ft()), Ja = new ft(), eo = new ft(), nf = new ft(), sf = new ft();
|
|
52259
52315
|
let rf = !1;
|
|
52260
|
-
function
|
|
52316
|
+
function UI(s, e, t, i) {
|
|
52261
52317
|
if (rf)
|
|
52262
52318
|
throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");
|
|
52263
52319
|
rf = !0;
|
|
52264
52320
|
const n = s._roots, r = e._roots;
|
|
52265
52321
|
let a, o = 0, l = 0;
|
|
52266
|
-
const c = new
|
|
52322
|
+
const c = new Ce().copy(t).invert();
|
|
52267
52323
|
for (let h = 0, d = n.length; h < d; h++) {
|
|
52268
52324
|
Ll.setBuffer(n[h]), l = 0;
|
|
52269
52325
|
const u = or.getPrimitive();
|
|
@@ -52469,7 +52525,7 @@ function Gn(s, e, t, i, n, r = 0, a = 0, o = 0, l = 0, c = null, h = !1) {
|
|
|
52469
52525
|
}
|
|
52470
52526
|
return T;
|
|
52471
52527
|
}
|
|
52472
|
-
const Oh = /* @__PURE__ */ new Ji(), Tv = /* @__PURE__ */ new ft(),
|
|
52528
|
+
const Oh = /* @__PURE__ */ new Ji(), Tv = /* @__PURE__ */ new ft(), FI = {
|
|
52473
52529
|
strategy: Tb,
|
|
52474
52530
|
maxDepth: 40,
|
|
52475
52531
|
maxLeafTris: 10,
|
|
@@ -52525,16 +52581,16 @@ class bm {
|
|
|
52525
52581
|
} else
|
|
52526
52582
|
throw new Error("MeshBVH: Only BufferGeometries are supported.");
|
|
52527
52583
|
if (t = Object.assign({
|
|
52528
|
-
...
|
|
52584
|
+
...FI,
|
|
52529
52585
|
// undocumented options
|
|
52530
52586
|
// Whether to skip generating the tree. Used for deserialization.
|
|
52531
52587
|
[Zu]: !1
|
|
52532
|
-
}, t), t.useSharedArrayBuffer && !
|
|
52588
|
+
}, t), t.useSharedArrayBuffer && !BI())
|
|
52533
52589
|
throw new Error("MeshBVH: SharedArrayBuffer is not available.");
|
|
52534
|
-
this.geometry = e, this._roots = null, this._indirectBuffer = null, t[Zu] || (
|
|
52590
|
+
this.geometry = e, this._roots = null, this._indirectBuffer = null, t[Zu] || (J3(this, t), !e.boundingBox && t.setBoundingBox && (e.boundingBox = this.getBoundingBox(new ft()))), this.resolveTriangleIndex = t.indirect ? (i) => this._indirectBuffer[i] : (i) => i;
|
|
52535
52591
|
}
|
|
52536
52592
|
refit(e = null) {
|
|
52537
|
-
return (this.indirect ?
|
|
52593
|
+
return (this.indirect ? TI : fI)(this, e);
|
|
52538
52594
|
}
|
|
52539
52595
|
traverse(e, t = 0) {
|
|
52540
52596
|
const i = this._roots[t], n = new Uint32Array(i), r = new Uint16Array(i);
|
|
@@ -52552,7 +52608,7 @@ class bm {
|
|
|
52552
52608
|
}
|
|
52553
52609
|
/* Core Cast Functions */
|
|
52554
52610
|
raycast(e, t = wn, i = 0, n = 1 / 0) {
|
|
52555
|
-
const r = this._roots, a = this.geometry, o = [], l = t.isMaterial, c = Array.isArray(t), h = a.groups, d = l ? t.side : t, u = this.indirect ?
|
|
52611
|
+
const r = this._roots, a = this.geometry, o = [], l = t.isMaterial, c = Array.isArray(t), h = a.groups, d = l ? t.side : t, u = this.indirect ? EI : vI;
|
|
52556
52612
|
for (let f = 0, p = r.length; f < p; f++) {
|
|
52557
52613
|
const v = c ? t[h[f].materialIndex].side : d, g = o.length;
|
|
52558
52614
|
if (u(this, f, v, e, o, i, n), c) {
|
|
@@ -52566,7 +52622,7 @@ class bm {
|
|
|
52566
52622
|
raycastFirst(e, t = wn, i = 0, n = 1 / 0) {
|
|
52567
52623
|
const r = this._roots, a = this.geometry, o = t.isMaterial, l = Array.isArray(t);
|
|
52568
52624
|
let c = null;
|
|
52569
|
-
const h = a.groups, d = o ? t.side : t, u = this.indirect ?
|
|
52625
|
+
const h = a.groups, d = o ? t.side : t, u = this.indirect ? CI : bI;
|
|
52570
52626
|
for (let f = 0, p = r.length; f < p; f++) {
|
|
52571
52627
|
const v = l ? t[h[f].materialIndex].side : d, g = u(this, f, v, e, i, n);
|
|
52572
52628
|
g != null && (c == null || g.distance < c.distance) && (c = g, l && (g.face.materialIndex = h[f].materialIndex));
|
|
@@ -52575,13 +52631,13 @@ class bm {
|
|
|
52575
52631
|
}
|
|
52576
52632
|
intersectsGeometry(e, t) {
|
|
52577
52633
|
let i = !1;
|
|
52578
|
-
const n = this._roots, r = this.indirect ?
|
|
52634
|
+
const n = this._roots, r = this.indirect ? II : yI;
|
|
52579
52635
|
for (let a = 0, o = n.length; a < o && (i = r(this, a, e, t), !i); a++)
|
|
52580
52636
|
;
|
|
52581
52637
|
return i;
|
|
52582
52638
|
}
|
|
52583
52639
|
shapecast(e) {
|
|
52584
|
-
const t = On.getPrimitive(), i = this.indirect ?
|
|
52640
|
+
const t = On.getPrimitive(), i = this.indirect ? gI : uI;
|
|
52585
52641
|
let {
|
|
52586
52642
|
boundsTraverseOrder: n,
|
|
52587
52643
|
intersectsBounds: r,
|
|
@@ -52597,7 +52653,7 @@ class bm {
|
|
|
52597
52653
|
const h = this._roots;
|
|
52598
52654
|
for (let d = 0, u = h.length; d < u; d++) {
|
|
52599
52655
|
const f = h[d];
|
|
52600
|
-
if (l =
|
|
52656
|
+
if (l = rI(this, d, r, a, n, c), l)
|
|
52601
52657
|
break;
|
|
52602
52658
|
c += f.byteLength;
|
|
52603
52659
|
}
|
|
@@ -52637,7 +52693,7 @@ class bm {
|
|
|
52637
52693
|
} else
|
|
52638
52694
|
n = p;
|
|
52639
52695
|
}
|
|
52640
|
-
return
|
|
52696
|
+
return UI(this, e, t, n);
|
|
52641
52697
|
}
|
|
52642
52698
|
/* Derived Cast Functions */
|
|
52643
52699
|
intersectsBox(e, t) {
|
|
@@ -52657,7 +52713,7 @@ class bm {
|
|
|
52657
52713
|
);
|
|
52658
52714
|
}
|
|
52659
52715
|
closestPointToGeometry(e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
52660
|
-
return (this.indirect ?
|
|
52716
|
+
return (this.indirect ? NI : AI)(
|
|
52661
52717
|
this,
|
|
52662
52718
|
e,
|
|
52663
52719
|
t,
|
|
@@ -52668,7 +52724,7 @@ class bm {
|
|
|
52668
52724
|
);
|
|
52669
52725
|
}
|
|
52670
52726
|
closestPointToPoint(e, t = {}, i = 0, n = 1 / 0) {
|
|
52671
|
-
return
|
|
52727
|
+
return aI(
|
|
52672
52728
|
this,
|
|
52673
52729
|
e,
|
|
52674
52730
|
t,
|
|
@@ -52685,11 +52741,11 @@ class bm {
|
|
|
52685
52741
|
function Ev(s, e, t) {
|
|
52686
52742
|
return s === null ? null : (s.point.applyMatrix4(e.matrixWorld), s.distance = s.point.distanceTo(t.ray.origin), s.object = e, s);
|
|
52687
52743
|
}
|
|
52688
|
-
const Nh = /* @__PURE__ */ new Lo(), Pv = /* @__PURE__ */ new P(), Cv = /* @__PURE__ */ new
|
|
52689
|
-
function
|
|
52690
|
-
this.isBatchedMesh ?
|
|
52744
|
+
const Nh = /* @__PURE__ */ new Lo(), Pv = /* @__PURE__ */ new P(), Cv = /* @__PURE__ */ new Ce(), zI = Q.prototype.raycast, kI = Xx.prototype.raycast, Iv = /* @__PURE__ */ new P(), Ni = /* @__PURE__ */ new Q(), Bh = [];
|
|
52745
|
+
function VI(s, e) {
|
|
52746
|
+
this.isBatchedMesh ? XI.call(this, s, e) : HI.call(this, s, e);
|
|
52691
52747
|
}
|
|
52692
|
-
function
|
|
52748
|
+
function XI(s, e) {
|
|
52693
52749
|
if (this.boundsTrees) {
|
|
52694
52750
|
const t = this.boundsTrees, i = this._drawInfo || this._instanceInfo, n = this._drawRanges || this._geometryInfo, r = this.matrixWorld;
|
|
52695
52751
|
Ni.material = this.material, Ni.geometry = this.geometry;
|
|
@@ -52713,9 +52769,9 @@ function kI(s, e) {
|
|
|
52713
52769
|
}
|
|
52714
52770
|
Ni.geometry.boundsTree = a, Ni.geometry.drawRange = o, Ni.material = null, Ni.geometry = null;
|
|
52715
52771
|
} else
|
|
52716
|
-
|
|
52772
|
+
kI.call(this, s, e);
|
|
52717
52773
|
}
|
|
52718
|
-
function
|
|
52774
|
+
function HI(s, e) {
|
|
52719
52775
|
if (this.geometry.boundsTree) {
|
|
52720
52776
|
if (this.material === void 0)
|
|
52721
52777
|
return;
|
|
@@ -52732,40 +52788,40 @@ function VI(s, e) {
|
|
|
52732
52788
|
}
|
|
52733
52789
|
}
|
|
52734
52790
|
} else
|
|
52735
|
-
|
|
52791
|
+
zI.call(this, s, e);
|
|
52736
52792
|
}
|
|
52737
|
-
function
|
|
52793
|
+
function YI(s = {}) {
|
|
52738
52794
|
return this.boundsTree = new bm(this, s), this.boundsTree;
|
|
52739
52795
|
}
|
|
52740
|
-
function
|
|
52796
|
+
function GI() {
|
|
52741
52797
|
this.boundsTree = null;
|
|
52742
52798
|
}
|
|
52743
|
-
class
|
|
52799
|
+
class WI {
|
|
52744
52800
|
constructor() {
|
|
52745
|
-
dt.prototype.computeBoundsTree =
|
|
52801
|
+
dt.prototype.computeBoundsTree = YI, dt.prototype.disposeBoundsTree = GI, Q.prototype.raycast = VI;
|
|
52746
52802
|
}
|
|
52747
52803
|
applyThreeMeshBVH(e) {
|
|
52748
52804
|
e.boundsTree || e.computeBoundsTree();
|
|
52749
52805
|
}
|
|
52750
52806
|
}
|
|
52751
|
-
class
|
|
52807
|
+
class QI {
|
|
52752
52808
|
constructor(e) {
|
|
52753
52809
|
this.viralViewerApi = e, this.hoverMaterial = new ia({
|
|
52754
|
-
color: Et.hexToThreejsColor(
|
|
52810
|
+
color: Et.hexToThreejsColor(Ee.secondary),
|
|
52755
52811
|
opacity: 0.7,
|
|
52756
52812
|
transparent: !0,
|
|
52757
52813
|
depthTest: !1,
|
|
52758
52814
|
name: "Render Material",
|
|
52759
52815
|
flatShading: !0
|
|
52760
52816
|
}), this.selectedMaterial = new ia({
|
|
52761
|
-
color: Et.hexToThreejsColor(
|
|
52817
|
+
color: Et.hexToThreejsColor(Ee.secondary),
|
|
52762
52818
|
opacity: 0.7,
|
|
52763
52819
|
transparent: !0,
|
|
52764
52820
|
name: "Render Material",
|
|
52765
52821
|
depthTest: !1,
|
|
52766
52822
|
flatShading: !0
|
|
52767
52823
|
}), this.edgeMaterial = new bb({
|
|
52768
|
-
color: Et.hexToThreejsColor(
|
|
52824
|
+
color: Et.hexToThreejsColor(Ee.edge),
|
|
52769
52825
|
linewidth: 2,
|
|
52770
52826
|
resolution: new K(window.innerWidth, window.innerHeight),
|
|
52771
52827
|
transparent: !0,
|
|
@@ -52799,7 +52855,7 @@ class GI {
|
|
|
52799
52855
|
}
|
|
52800
52856
|
}
|
|
52801
52857
|
}
|
|
52802
|
-
class
|
|
52858
|
+
class jI {
|
|
52803
52859
|
constructor() {
|
|
52804
52860
|
this.events = {
|
|
52805
52861
|
[At.LOADED_SCENE]: [],
|
|
@@ -52839,7 +52895,7 @@ class WI {
|
|
|
52839
52895
|
i && i.forEach((n) => n(...t));
|
|
52840
52896
|
}
|
|
52841
52897
|
}
|
|
52842
|
-
class
|
|
52898
|
+
class qI {
|
|
52843
52899
|
constructor(e, t) {
|
|
52844
52900
|
this.viralViewerApi = e, this.options = t, this.viralViewerApi.on(
|
|
52845
52901
|
At.LOADED_SCENE,
|
|
@@ -52914,14 +52970,14 @@ const Db = {
|
|
|
52914
52970
|
importLink: "https://fonts.googleapis.com/css2?family=Quicksand:wght@300&display=swap",
|
|
52915
52971
|
fontFamily: "Quicksand, sans-serif"
|
|
52916
52972
|
}
|
|
52917
|
-
},
|
|
52973
|
+
}, ZI = (s) => {
|
|
52918
52974
|
const e = document.createElement("style");
|
|
52919
52975
|
e.innerHTML = `@import url(${Db[s]});`, document.head.appendChild(e);
|
|
52920
|
-
},
|
|
52976
|
+
}, $I = (s, e) => {
|
|
52921
52977
|
let t = Db[e];
|
|
52922
52978
|
s && t && (s.style.fontFamily = t.fontFamily);
|
|
52923
52979
|
};
|
|
52924
|
-
class
|
|
52980
|
+
class KI {
|
|
52925
52981
|
constructor(e) {
|
|
52926
52982
|
this.viralViewerApi = e, this.hoverMeshes = [], this.hoverInstancedMesh = null, this.selectedMeshes = [], this.selectedInstancedMeshes = [], this.isolateMeshes = [], this.isolateInstancedMeshes = [], this.hiddenMeshes = [], this.hiddenInstancedMeshes = [], this.exceptElements = [], this.isolateModelId = "0", this.sunConfiguration = Fb, this._ground = null, this.opacity = 1, this._fog = new md(13421772, 1, 1e3), this.rainGeometry = new dt(), this.rain = null, this._isGeneratedRain = !1, this._batchColors = /* @__PURE__ */ new Map(), this._originalBatchMaterials = /* @__PURE__ */ new Map(), this._batchVisualizationEnabled = !1, this.showHidePercentage = 100, this.randomColor = 100;
|
|
52927
52983
|
}
|
|
@@ -53019,10 +53075,10 @@ class ZI {
|
|
|
53019
53075
|
* Select elements (replaces current selection)
|
|
53020
53076
|
*/
|
|
53021
53077
|
selectElements(e) {
|
|
53022
|
-
e.length > 0 && (this.viralViewerApi.viralScene.mergedModel.select(
|
|
53078
|
+
e.length > 0 && (this.viralViewerApi.emit(At.SELECT_ELEMENTS, e), this.viralViewerApi.viralScene.mergedModel.select(
|
|
53023
53079
|
e,
|
|
53024
53080
|
this.exceptElements
|
|
53025
|
-
), this.
|
|
53081
|
+
), this.viralViewerApi.viralRenderer.render());
|
|
53026
53082
|
}
|
|
53027
53083
|
/**
|
|
53028
53084
|
* Add elements to current selection (multi-select with Shift)
|
|
@@ -53050,7 +53106,22 @@ class ZI {
|
|
|
53050
53106
|
* Unselect all elements
|
|
53051
53107
|
*/
|
|
53052
53108
|
unselectElements() {
|
|
53053
|
-
this.viralViewerApi.viralScene.mergedModel.
|
|
53109
|
+
this.viralViewerApi.viralScene.mergedModel.unselect(), this.viralViewerApi.viralRenderer.render();
|
|
53110
|
+
}
|
|
53111
|
+
selectAllElements() {
|
|
53112
|
+
console.time("⏱️ selectAllElements - gathering elements");
|
|
53113
|
+
let e = [];
|
|
53114
|
+
for (let t = 0; t < this.viralViewerApi.viralDataManager.dataTree.length; t++) {
|
|
53115
|
+
const n = this.viralViewerApi.viralDataManager.dataTree[t].getAllElements();
|
|
53116
|
+
for (let r = 0; r < n.length; r++) {
|
|
53117
|
+
const a = n[r];
|
|
53118
|
+
e.push({
|
|
53119
|
+
elementId: a.elementId.toString(),
|
|
53120
|
+
modelId: t.toString()
|
|
53121
|
+
});
|
|
53122
|
+
}
|
|
53123
|
+
}
|
|
53124
|
+
console.timeEnd("⏱️ selectAllElements - gathering elements"), console.log(`📊 Total elements gathered: ${e.length}`), this.selectElements(e);
|
|
53054
53125
|
}
|
|
53055
53126
|
isolateModel(e = [this.isolateModelId]) {
|
|
53056
53127
|
this.viralViewerApi.viralScene.mergedModel.resetVisibility(), this.viralViewerApi.viralScene.mergedModel.isolateModel(e), this.viralViewerApi.viralRenderer.render();
|
|
@@ -53676,7 +53747,7 @@ class bt {
|
|
|
53676
53747
|
return i && n && r;
|
|
53677
53748
|
}
|
|
53678
53749
|
}
|
|
53679
|
-
function
|
|
53750
|
+
function JI() {
|
|
53680
53751
|
class s {
|
|
53681
53752
|
constructor() {
|
|
53682
53753
|
this.children = /* @__PURE__ */ new Map(), this.keys = /* @__PURE__ */ new Set();
|
|
@@ -53758,10 +53829,10 @@ function $I() {
|
|
|
53758
53829
|
}
|
|
53759
53830
|
};
|
|
53760
53831
|
}
|
|
53761
|
-
const
|
|
53762
|
-
class
|
|
53832
|
+
const eR = JI;
|
|
53833
|
+
class tR {
|
|
53763
53834
|
constructor() {
|
|
53764
|
-
const e = new Blob([`(${
|
|
53835
|
+
const e = new Blob([`(${eR})()`]), t = URL.createObjectURL(e);
|
|
53765
53836
|
this.workerPool = new Ar(
|
|
53766
53837
|
2,
|
|
53767
53838
|
t
|
|
@@ -53774,7 +53845,7 @@ class JI {
|
|
|
53774
53845
|
});
|
|
53775
53846
|
}
|
|
53776
53847
|
}
|
|
53777
|
-
function
|
|
53848
|
+
function iR() {
|
|
53778
53849
|
self.addEventListener(
|
|
53779
53850
|
"message",
|
|
53780
53851
|
(s) => {
|
|
@@ -53808,10 +53879,10 @@ function eR() {
|
|
|
53808
53879
|
!1
|
|
53809
53880
|
);
|
|
53810
53881
|
}
|
|
53811
|
-
const
|
|
53812
|
-
class
|
|
53882
|
+
const nR = iR;
|
|
53883
|
+
class sR {
|
|
53813
53884
|
constructor() {
|
|
53814
|
-
const e = new Blob([`(${
|
|
53885
|
+
const e = new Blob([`(${nR})()`]), t = URL.createObjectURL(e);
|
|
53815
53886
|
this.workerPool = new Ar(
|
|
53816
53887
|
2,
|
|
53817
53888
|
t
|
|
@@ -53819,18 +53890,18 @@ class iR {
|
|
|
53819
53890
|
}
|
|
53820
53891
|
fetch(e, t = (r) => {
|
|
53821
53892
|
}, i, n) {
|
|
53822
|
-
let r = new
|
|
53893
|
+
let r = new rR(e, i, n);
|
|
53823
53894
|
this.workerPool.Enqueue(r, (a) => {
|
|
53824
53895
|
t(a);
|
|
53825
53896
|
});
|
|
53826
53897
|
}
|
|
53827
53898
|
}
|
|
53828
|
-
class
|
|
53899
|
+
class rR {
|
|
53829
53900
|
constructor(e, t, i) {
|
|
53830
53901
|
this.url = "", this.url = e, this.byteRangeStart = t, this.byteRangeEnd = i;
|
|
53831
53902
|
}
|
|
53832
53903
|
}
|
|
53833
|
-
function
|
|
53904
|
+
function aR() {
|
|
53834
53905
|
class s {
|
|
53835
53906
|
constructor(t, i, n) {
|
|
53836
53907
|
this.X = 0, this.Y = 0, this.Z = 0, this.X = t, this.Y = i, this.Z = n;
|
|
@@ -53852,10 +53923,10 @@ function sR() {
|
|
|
53852
53923
|
self.postMessage(i());
|
|
53853
53924
|
};
|
|
53854
53925
|
}
|
|
53855
|
-
const
|
|
53856
|
-
class
|
|
53926
|
+
const oR = aR;
|
|
53927
|
+
class lR {
|
|
53857
53928
|
constructor() {
|
|
53858
|
-
const e = new Blob([`(${
|
|
53929
|
+
const e = new Blob([`(${oR})()`]), t = URL.createObjectURL(e);
|
|
53859
53930
|
this.workerPool = new Ar(navigator.hardwareConcurrency || 10, t);
|
|
53860
53931
|
}
|
|
53861
53932
|
getBoundingBox(e, t = (i) => {
|
|
@@ -53868,7 +53939,7 @@ class aR {
|
|
|
53868
53939
|
);
|
|
53869
53940
|
}
|
|
53870
53941
|
}
|
|
53871
|
-
function
|
|
53942
|
+
function cR() {
|
|
53872
53943
|
self.onmessage = function(s) {
|
|
53873
53944
|
const e = s.data;
|
|
53874
53945
|
function t(n, r, a = 0.1) {
|
|
@@ -53886,10 +53957,10 @@ function oR() {
|
|
|
53886
53957
|
self.postMessage(i);
|
|
53887
53958
|
};
|
|
53888
53959
|
}
|
|
53889
|
-
const
|
|
53890
|
-
class
|
|
53960
|
+
const hR = cR;
|
|
53961
|
+
class dR {
|
|
53891
53962
|
constructor() {
|
|
53892
|
-
const e = new Blob([`(${
|
|
53963
|
+
const e = new Blob([`(${hR})()`]), t = URL.createObjectURL(e);
|
|
53893
53964
|
this.workerPool = new Ar(4, t);
|
|
53894
53965
|
}
|
|
53895
53966
|
checkIntersect(e, t = (i) => {
|
|
@@ -53899,7 +53970,7 @@ class cR {
|
|
|
53899
53970
|
});
|
|
53900
53971
|
}
|
|
53901
53972
|
}
|
|
53902
|
-
function
|
|
53973
|
+
function uR() {
|
|
53903
53974
|
class s {
|
|
53904
53975
|
constructor(f, p, v) {
|
|
53905
53976
|
this.x = 0, this.y = 0, this.z = 0, this.x = f, this.y = p, this.z = v;
|
|
@@ -53981,10 +54052,10 @@ function hR() {
|
|
|
53981
54052
|
self.postMessage(!1);
|
|
53982
54053
|
};
|
|
53983
54054
|
}
|
|
53984
|
-
const
|
|
53985
|
-
class
|
|
54055
|
+
const fR = uR;
|
|
54056
|
+
class pR {
|
|
53986
54057
|
constructor() {
|
|
53987
|
-
const e = new Blob([`(${
|
|
54058
|
+
const e = new Blob([`(${fR})()`]), t = URL.createObjectURL(e);
|
|
53988
54059
|
this.workerPool = new Ar(
|
|
53989
54060
|
navigator.hardwareConcurrency || 10,
|
|
53990
54061
|
t
|
|
@@ -53997,9 +54068,9 @@ class uR {
|
|
|
53997
54068
|
});
|
|
53998
54069
|
}
|
|
53999
54070
|
}
|
|
54000
|
-
class
|
|
54071
|
+
class mR {
|
|
54001
54072
|
constructor(e) {
|
|
54002
|
-
this.viralViewerApi = e, this.dataTree = [], this.trackingData = /* @__PURE__ */ new Map(), this.fetchDataWorker = new
|
|
54073
|
+
this.viralViewerApi = e, this.dataTree = [], this.trackingData = /* @__PURE__ */ new Map(), this.fetchDataWorker = new sR(), this.buildTreeNodeWorker = new tR(), this._boundingBoxWorker = new lR(), this._boundingBoxIntersectWorker = new dR(), this._checkClashWorker = new pR(), this.searchValue = "", this.firstElementId = "211850", this.secondElementId = "680539", this.groupByKeyword = "Category", this._shallowCompare = (t, i) => JSON.stringify(Object.keys(t).sort()) === JSON.stringify(Object.keys(i).sort()) && JSON.stringify(Object.values(t).sort()) === JSON.stringify(Object.values(i).sort());
|
|
54003
54074
|
}
|
|
54004
54075
|
addTrackingData(e, t) {
|
|
54005
54076
|
this.trackingData.set(e, t);
|
|
@@ -54154,40 +54225,40 @@ class fR {
|
|
|
54154
54225
|
}
|
|
54155
54226
|
return this.viralViewerApi.viralVisibilityManager.exceptElements = [], this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54156
54227
|
i.deleted.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54157
|
-
Et.hexToRGB(
|
|
54228
|
+
Et.hexToRGB(Ee.deleted)
|
|
54158
54229
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54159
54230
|
elements: i.deleted.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54160
|
-
color: Et.hexToRGB(
|
|
54231
|
+
color: Et.hexToRGB(Ee.deleted)
|
|
54161
54232
|
}), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54162
54233
|
i.added.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54163
|
-
Et.hexToRGB(
|
|
54234
|
+
Et.hexToRGB(Ee.added)
|
|
54164
54235
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54165
54236
|
elements: i.added.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54166
|
-
color: Et.hexToRGB(
|
|
54237
|
+
color: Et.hexToRGB(Ee.added)
|
|
54167
54238
|
}), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54168
54239
|
i.modified.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54169
|
-
Et.hexToRGB(
|
|
54240
|
+
Et.hexToRGB(Ee.modified)
|
|
54170
54241
|
), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54171
54242
|
i.modified.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54172
|
-
Et.hexToRGB(
|
|
54243
|
+
Et.hexToRGB(Ee.modified)
|
|
54173
54244
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54174
54245
|
elements: i.modified.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54175
|
-
color: Et.hexToRGB(
|
|
54246
|
+
color: Et.hexToRGB(Ee.modified)
|
|
54176
54247
|
}), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54177
54248
|
elements: i.modified.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54178
|
-
color: Et.hexToRGB(
|
|
54249
|
+
color: Et.hexToRGB(Ee.modified)
|
|
54179
54250
|
}), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54180
54251
|
i.notChanged.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54181
|
-
Et.hexToRGB(
|
|
54252
|
+
Et.hexToRGB(Ee.notChanged)
|
|
54182
54253
|
), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54183
54254
|
i.notChanged.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54184
|
-
Et.hexToRGB(
|
|
54255
|
+
Et.hexToRGB(Ee.notChanged)
|
|
54185
54256
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54186
54257
|
elements: i.notChanged.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54187
|
-
color: Et.hexToRGB(
|
|
54258
|
+
color: Et.hexToRGB(Ee.notChanged)
|
|
54188
54259
|
}), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54189
54260
|
elements: i.notChanged.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54190
|
-
color: Et.hexToRGB(
|
|
54261
|
+
color: Et.hexToRGB(Ee.notChanged)
|
|
54191
54262
|
}), this.viralViewerApi.viralRenderer.render(), i;
|
|
54192
54263
|
}
|
|
54193
54264
|
uncompareModels() {
|
|
@@ -54360,7 +54431,7 @@ class fR {
|
|
|
54360
54431
|
}
|
|
54361
54432
|
//#endregion
|
|
54362
54433
|
}
|
|
54363
|
-
class
|
|
54434
|
+
class gR {
|
|
54364
54435
|
constructor(e) {
|
|
54365
54436
|
this.viralViewerApi = e, this.spinner = null, this.logo = `<svg
|
|
54366
54437
|
width="348.25488"
|
|
@@ -54421,9 +54492,9 @@ class pR {
|
|
|
54421
54492
|
100% { transform: rotate(360deg); }
|
|
54422
54493
|
}`, t = document.createElement("style");
|
|
54423
54494
|
if (t.innerHTML = e, document.head.appendChild(t), this.viralViewerApi.targetElement) {
|
|
54424
|
-
this.spinner = document.createElement("div"), this.spinner.setAttribute("style", `position: absolute;top:0px;left:0px;right:0px;bottom:0px;background-color: ${
|
|
54495
|
+
this.spinner = document.createElement("div"), this.spinner.setAttribute("style", `position: absolute;top:0px;left:0px;right:0px;bottom:0px;background-color: ${Ee.background};justify-content: center;align-items: center;display:none; z-index: 100`);
|
|
54425
54496
|
const i = document.createElement("div"), n = document.createElement("div");
|
|
54426
|
-
n.setAttribute("style", `width: 200px; height: 200px; border-radius: 50%; border: 2px solid #ccc; border-top: 2px solid ${
|
|
54497
|
+
n.setAttribute("style", `width: 200px; height: 200px; border-radius: 50%; border: 2px solid #ccc; border-top: 2px solid ${Ee.primary}; animation: spin 1.5s linear infinite;`);
|
|
54427
54498
|
const r = Md.createElementFromHTML(this.logo);
|
|
54428
54499
|
r.setAttribute("style", "height:150px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)"), i.appendChild(n), i.appendChild(r), this.spinner.appendChild(i), this.viralViewerApi.targetElement.appendChild(this.spinner);
|
|
54429
54500
|
}
|
|
@@ -54435,35 +54506,71 @@ class pR {
|
|
|
54435
54506
|
this.spinner && this.spinner.style.setProperty("display", "none");
|
|
54436
54507
|
}
|
|
54437
54508
|
}
|
|
54438
|
-
class
|
|
54509
|
+
class vR {
|
|
54439
54510
|
constructor(e) {
|
|
54440
54511
|
this.viralViewerApi = e, this.modal = null, this.modalTitle = null, this.modalBody = null, this.modalBodyLeft = null, this.modalBodyRight = null, this.properties = {}, this.rawModal = `<div class="modal" id="myModal">
|
|
54441
54512
|
<div class="modal-content">
|
|
54442
54513
|
<div id="modal-header" style="
|
|
54443
|
-
cursor:
|
|
54514
|
+
cursor: move;
|
|
54444
54515
|
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
|
54445
54516
|
padding-bottom: 5px;
|
|
54517
|
+
margin-bottom: 10px;
|
|
54518
|
+
flex-shrink: 0;
|
|
54446
54519
|
">
|
|
54447
54520
|
<span class="close" id="closeBtn">×</span>
|
|
54448
|
-
<h2 style="margin: 0px !important;color:${
|
|
54521
|
+
<h2 style="margin: 0px !important;color:${Ee.secondary};white-space: nowrap;overflow: hidden;text-overflow: ellipsis;" id="modal-title">
|
|
54449
54522
|
</h2>
|
|
54450
54523
|
</div>
|
|
54451
|
-
<div id="modal-body" style="
|
|
54452
|
-
<div id="modal-body-left" style="flex:1;"></div>
|
|
54453
|
-
<div id="modal-body-right" style="margin-left:10px"></div>
|
|
54524
|
+
<div id="modal-body" style="overflow: auto;display:flex;flex: 1;min-height: 0;">
|
|
54525
|
+
<div id="modal-body-left" style="flex:1;min-width: 0;"></div>
|
|
54526
|
+
<div id="modal-body-right" style="margin-left:10px;min-width: 0;"></div>
|
|
54454
54527
|
</div>
|
|
54528
|
+
<div class="resize-handle" id="resizeHandle"></div>
|
|
54455
54529
|
</div>
|
|
54456
54530
|
</div>`, this.rawModalStyle = `.modal {
|
|
54457
54531
|
display: none;
|
|
54458
54532
|
position: fixed;
|
|
54459
54533
|
z-index: 1;
|
|
54534
|
+
min-width: 200px;
|
|
54535
|
+
min-height: 150px;
|
|
54460
54536
|
}
|
|
54461
54537
|
|
|
54462
54538
|
.modal-content {
|
|
54463
|
-
background-color: ${
|
|
54539
|
+
background-color: ${Ee.background};
|
|
54464
54540
|
border: 1px solid #ccc;
|
|
54465
54541
|
border-radius: 5px;
|
|
54466
54542
|
padding: 10px;
|
|
54543
|
+
position: relative;
|
|
54544
|
+
width: 100%;
|
|
54545
|
+
height: 100%;
|
|
54546
|
+
box-sizing: border-box;
|
|
54547
|
+
display: flex;
|
|
54548
|
+
flex-direction: column;
|
|
54549
|
+
overflow: hidden;
|
|
54550
|
+
}
|
|
54551
|
+
|
|
54552
|
+
.resize-handle {
|
|
54553
|
+
position: absolute;
|
|
54554
|
+
bottom: 0;
|
|
54555
|
+
right: 0;
|
|
54556
|
+
width: 15px;
|
|
54557
|
+
height: 15px;
|
|
54558
|
+
cursor: nwse-resize;
|
|
54559
|
+
background: linear-gradient(135deg, transparent 0%, transparent 50%, ${Ee.secondary} 50%, ${Ee.secondary} 100%);
|
|
54560
|
+
opacity: 0.5;
|
|
54561
|
+
border-bottom-right-radius: 5px;
|
|
54562
|
+
}
|
|
54563
|
+
|
|
54564
|
+
.resize-handle:hover {
|
|
54565
|
+
opacity: 1;
|
|
54566
|
+
}
|
|
54567
|
+
|
|
54568
|
+
#modal-body-left p,
|
|
54569
|
+
#modal-body-right p {
|
|
54570
|
+
white-space: nowrap;
|
|
54571
|
+
overflow: hidden;
|
|
54572
|
+
text-overflow: ellipsis;
|
|
54573
|
+
max-width: 100%;
|
|
54467
54574
|
}
|
|
54468
54575
|
|
|
54469
54576
|
.close {
|
|
@@ -54473,7 +54580,7 @@ class mR {
|
|
|
54473
54580
|
}
|
|
54474
54581
|
|
|
54475
54582
|
.close:hover {
|
|
54476
|
-
color: ${
|
|
54583
|
+
color: ${Ee.accent};
|
|
54477
54584
|
}
|
|
54478
54585
|
::-webkit-scrollbar {
|
|
54479
54586
|
width: 5px;
|
|
@@ -54501,22 +54608,41 @@ class mR {
|
|
|
54501
54608
|
::-webkit-scrollbar-thumb:hover {
|
|
54502
54609
|
background: rgba(0, 0, 0, 0.5);
|
|
54503
54610
|
}
|
|
54504
|
-
`, this.isDragging = !1, this.offsetX = 0, this.offsetY = 0, this.inject();
|
|
54611
|
+
`, this.isDragging = !1, this.isResizing = !1, this.offsetX = 0, this.offsetY = 0, this.minWidth = 200, this.minHeight = 150, this.inject();
|
|
54505
54612
|
}
|
|
54506
54613
|
inject() {
|
|
54507
54614
|
if (this.viralViewerApi.targetElement) {
|
|
54508
54615
|
const e = document.createElement("style");
|
|
54509
54616
|
e.innerHTML = this.rawModalStyle, document.head.appendChild(e), this.modal = Md.createElementFromHTML(this.rawModal), this.viralViewerApi.targetElement.appendChild(this.modal);
|
|
54510
|
-
const t = document.getElementById("modal-header");
|
|
54617
|
+
const t = document.getElementById("modal-header"), i = document.getElementById("resizeHandle");
|
|
54511
54618
|
this.modalTitle = document.getElementById("modal-title"), this.modalBody = document.getElementById("modal-body"), this.modalBodyLeft = document.getElementById("modal-body-left"), this.modalBodyRight = document.getElementById("modal-body-right");
|
|
54512
|
-
const
|
|
54513
|
-
t.addEventListener("mousedown", (
|
|
54514
|
-
this.isDragging = !0, this.
|
|
54515
|
-
|
|
54516
|
-
this.
|
|
54517
|
-
}),
|
|
54518
|
-
this.
|
|
54519
|
-
})
|
|
54619
|
+
const n = document.getElementById("closeBtn");
|
|
54620
|
+
t.addEventListener("mousedown", (o) => {
|
|
54621
|
+
o.preventDefault(), this.isDragging = !0, this.viralViewerApi.targetElement.getBoundingClientRect();
|
|
54622
|
+
const l = this.modal.getBoundingClientRect();
|
|
54623
|
+
this.offsetX = o.clientX - l.left, this.offsetY = o.clientY - l.top, this.modal.style.zIndex = "2";
|
|
54624
|
+
}), i.addEventListener("mousedown", (o) => {
|
|
54625
|
+
o.preventDefault(), o.stopPropagation(), this.isResizing = !0, this.modal.style.zIndex = "2";
|
|
54626
|
+
});
|
|
54627
|
+
const r = (o) => {
|
|
54628
|
+
if (this.isDragging) {
|
|
54629
|
+
const l = this.viralViewerApi.targetElement.getBoundingClientRect(), c = this.modal.getBoundingClientRect();
|
|
54630
|
+
let h = o.clientX - l.left - this.offsetX, d = o.clientY - l.top - this.offsetY;
|
|
54631
|
+
h = Math.max(0, Math.min(h, l.width - c.width)), d = Math.max(0, Math.min(d, l.height - c.height)), this.modal.style.left = h + "px", this.modal.style.top = d + "px";
|
|
54632
|
+
}
|
|
54633
|
+
if (this.isResizing) {
|
|
54634
|
+
const l = this.viralViewerApi.targetElement.getBoundingClientRect(), c = this.modal.getBoundingClientRect();
|
|
54635
|
+
let h = o.clientX - c.left, d = o.clientY - c.top;
|
|
54636
|
+
h = Math.max(this.minWidth, h), d = Math.max(this.minHeight, d);
|
|
54637
|
+
const u = l.width - (c.left - l.left), f = l.height - (c.top - l.top);
|
|
54638
|
+
h = Math.min(h, u), d = Math.min(d, f), this.modal.style.width = h + "px", this.modal.style.height = d + "px";
|
|
54639
|
+
}
|
|
54640
|
+
};
|
|
54641
|
+
document.addEventListener("mousemove", r);
|
|
54642
|
+
const a = () => {
|
|
54643
|
+
(this.isDragging || this.isResizing) && (this.isDragging = !1, this.isResizing = !1, this.modal.style.zIndex = "1");
|
|
54644
|
+
};
|
|
54645
|
+
document.addEventListener("mouseup", a), n.addEventListener("click", () => {
|
|
54520
54646
|
this.modal.style.display = "none";
|
|
54521
54647
|
});
|
|
54522
54648
|
}
|
|
@@ -54528,7 +54654,11 @@ class mR {
|
|
|
54528
54654
|
this.modal && (this.modal.style.display = "none");
|
|
54529
54655
|
}
|
|
54530
54656
|
updatePosition(e, t) {
|
|
54531
|
-
this.isDragging &&
|
|
54657
|
+
if (this.isDragging && this.modal && this.viralViewerApi.targetElement) {
|
|
54658
|
+
const i = this.viralViewerApi.targetElement.getBoundingClientRect(), n = this.modal.getBoundingClientRect();
|
|
54659
|
+
let r = e - i.left - this.offsetX, a = t - i.top - this.offsetY;
|
|
54660
|
+
r = Math.max(0, Math.min(r, i.width - n.width)), a = Math.max(0, Math.min(a, i.height - n.height)), this.modal.style.left = r + "px", this.modal.style.top = a + "px";
|
|
54661
|
+
}
|
|
54532
54662
|
}
|
|
54533
54663
|
updateModalContent(e, t) {
|
|
54534
54664
|
var n, r;
|
|
@@ -54536,12 +54666,12 @@ class mR {
|
|
|
54536
54666
|
this.modalBodyLeft.innerHTML = "", this.modalBodyRight.innerHTML = "";
|
|
54537
54667
|
for (var i in this.properties) {
|
|
54538
54668
|
let a = this.properties[i];
|
|
54539
|
-
this.modalBodyLeft.innerHTML += `<p style="margin:0px !important;color:${
|
|
54669
|
+
this.modalBodyLeft.innerHTML += `<p style="margin:0px !important;color:${Ee.primary};font-weight:600;font-size:14px;line-height:20px;" title="${a.name}">${a.name}</p>`, this.modalBodyRight.innerHTML += `<p style="margin:0px !important;color:${Ee.primary};font-size:14px;line-height:20px;" title="${a.value}">${a.value}</p>`;
|
|
54540
54670
|
}
|
|
54541
54671
|
}
|
|
54542
54672
|
}
|
|
54543
54673
|
}
|
|
54544
|
-
class
|
|
54674
|
+
class xR {
|
|
54545
54675
|
constructor(e) {
|
|
54546
54676
|
this.viralTools = e;
|
|
54547
54677
|
}
|
|
@@ -54550,7 +54680,7 @@ class gR {
|
|
|
54550
54680
|
e.activate && console.log((t = this.viralTools.viralViewerApi.viralCamera.camera) == null ? void 0 : t.position);
|
|
54551
54681
|
}
|
|
54552
54682
|
}
|
|
54553
|
-
class
|
|
54683
|
+
class bR {
|
|
54554
54684
|
constructor(e) {
|
|
54555
54685
|
this.viralTools = e;
|
|
54556
54686
|
}
|
|
@@ -54558,7 +54688,7 @@ class vR {
|
|
|
54558
54688
|
this.viralTools.viralViewerApi.targetElement && e.activate;
|
|
54559
54689
|
}
|
|
54560
54690
|
}
|
|
54561
|
-
class
|
|
54691
|
+
class yR {
|
|
54562
54692
|
constructor(e) {
|
|
54563
54693
|
this.viralTools = e;
|
|
54564
54694
|
}
|
|
@@ -54566,7 +54696,7 @@ class xR {
|
|
|
54566
54696
|
this.viralTools.viralViewerApi.targetElement && (e.activate ? this.viralTools.viralViewerApi.targetElement.style.setProperty("background-color", "#303030") : this.viralTools.viralViewerApi.targetElement.style.setProperty("background-color", "unset"), this.viralTools.viralViewerApi.localStorageService.setObject("viral-viewer-tool", this.viralTools.tools));
|
|
54567
54697
|
}
|
|
54568
54698
|
}
|
|
54569
|
-
class
|
|
54699
|
+
class _R {
|
|
54570
54700
|
constructor(e) {
|
|
54571
54701
|
this.viralTools = e, this.isActivated = !1;
|
|
54572
54702
|
}
|
|
@@ -54586,7 +54716,7 @@ class bR {
|
|
|
54586
54716
|
}
|
|
54587
54717
|
}
|
|
54588
54718
|
}
|
|
54589
|
-
class
|
|
54719
|
+
class wR {
|
|
54590
54720
|
constructor(e) {
|
|
54591
54721
|
this.viralTools = e, this.viralToolMeasureScene = new lc(), this.isActivated = !1, this.measures = [], this.point1 = null, this.point2 = null, this.tempPoint2 = null, this.defaultSprite = this.makeSprite(), this.measureObject = new Q(), this.tempMeasure = new Q(), this.tempSprite1 = null, this.tempLine = null, this.tempSprite2 = null;
|
|
54592
54722
|
}
|
|
@@ -54645,7 +54775,7 @@ class yR {
|
|
|
54645
54775
|
let r = document.createElement("canvas"), a = r.getContext("2d"), o = 32;
|
|
54646
54776
|
r.width = o, r.height = o;
|
|
54647
54777
|
let l = o * 0.8 / 2;
|
|
54648
|
-
return a && (a.shadowBlur = 5, a.shadowColor = "#555", a.fillStyle = "#fff", a.beginPath(), a.arc(o / 2, o / 2, l, 0, Math.PI * 2), a.closePath(), a.fill(), a.shadowBlur = 0, a.fillStyle =
|
|
54778
|
+
return a && (a.shadowBlur = 5, a.shadowColor = "#555", a.fillStyle = "#fff", a.beginPath(), a.arc(o / 2, o / 2, l, 0, Math.PI * 2), a.closePath(), a.fill(), a.shadowBlur = 0, a.fillStyle = Ee.primary, a.beginPath(), a.arc(o / 2, o / 2, l * 0.5, 0, Math.PI * 2), a.closePath(), a.fill()), r;
|
|
54649
54779
|
}
|
|
54650
54780
|
let t = new np(e()), i = new id({
|
|
54651
54781
|
map: t,
|
|
@@ -54655,7 +54785,7 @@ class yR {
|
|
|
54655
54785
|
}
|
|
54656
54786
|
makeLine(e, t) {
|
|
54657
54787
|
let i = new dn({
|
|
54658
|
-
color: Et.hexToThreejsColor(
|
|
54788
|
+
color: Et.hexToThreejsColor(Ee.primary),
|
|
54659
54789
|
linewidth: 20
|
|
54660
54790
|
});
|
|
54661
54791
|
const n = [e, t], r = new dt().setFromPoints(n);
|
|
@@ -54669,7 +54799,7 @@ class yR {
|
|
|
54669
54799
|
if (r) {
|
|
54670
54800
|
r.font = "bolder " + a + 'px "Open Sans", Arial';
|
|
54671
54801
|
let d = "~ " + Math.round(e.distanceTo(t)), u = r.measureText(d), f = 20, p = 10, v = 10;
|
|
54672
|
-
n.width = u.width + f * 2 + v * 2, n.height = a + p * 2 + v * 2, r.shadowBlur = 10, r.shadowColor = "#555", r.fillStyle =
|
|
54802
|
+
n.width = u.width + f * 2 + v * 2, n.height = a + p * 2 + v * 2, r.shadowBlur = 10, r.shadowColor = "#555", r.fillStyle = Ee.primary, i(r, v, v, n.width - v * 2, n.height - v * 2, 10), r.shadowBlur = 0, r.fillStyle = "#fff", r.textAlign = "left", r.textBaseline = "top", r.font = "bolder " + a + 'px "Open Sans", Arial', r.fillText(d, f + v, p + v);
|
|
54673
54803
|
}
|
|
54674
54804
|
let o = new np(n), l = new tp(new id({
|
|
54675
54805
|
map: o,
|
|
@@ -54686,7 +54816,7 @@ class yR {
|
|
|
54686
54816
|
e.code == "Escape" && (Et.clearChildren(this.tempMeasure), this.point1 = null, this.point2 = null, this.tempPoint2 = null, this.viralTools.viralViewerApi.viralRenderer.render());
|
|
54687
54817
|
}
|
|
54688
54818
|
}
|
|
54689
|
-
class
|
|
54819
|
+
class SR {
|
|
54690
54820
|
constructor(e) {
|
|
54691
54821
|
this.viralTools = e;
|
|
54692
54822
|
}
|
|
@@ -54722,14 +54852,14 @@ class _R {
|
|
|
54722
54852
|
}
|
|
54723
54853
|
}
|
|
54724
54854
|
}
|
|
54725
|
-
class
|
|
54855
|
+
class MR {
|
|
54726
54856
|
constructor(e) {
|
|
54727
54857
|
this.viralViewerApi = e, this.tools = [
|
|
54728
54858
|
{
|
|
54729
54859
|
name: "navigation",
|
|
54730
54860
|
tools: [
|
|
54731
54861
|
{
|
|
54732
|
-
svg: `<svg fill="${
|
|
54862
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>cursor-move</title><path d="M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z" /></svg>`,
|
|
54733
54863
|
index: 0,
|
|
54734
54864
|
activate: !0,
|
|
54735
54865
|
allowDehydrated: !1,
|
|
@@ -54738,7 +54868,7 @@ class wR {
|
|
|
54738
54868
|
}
|
|
54739
54869
|
},
|
|
54740
54870
|
{
|
|
54741
|
-
svg: `<svg fill="${
|
|
54871
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>nature-people-outline</title><path d="M16 20V16.12C19.47 15.71 22.17 12.76 22.17 9.17C22.17 5.3 19.04 2.17 15.17 2.17C13.31 2.17 11.53 2.91 10.22 4.22C8.91 5.53 8.17 7.31 8.17 9.17C8.17 9.95 8.3 10.69 8.53 11.38C8.64 11.71 8.77 12.03 8.93 12.33C9.91 14.27 11.78 15.68 14 16.06V20H6V17H7V12.95C7 12.72 6.89 12.5 6.74 12.33L6.71 12.29L6.66 12.25C6.5 12.09 6.25 12 6 12H3C2.76 12 2.5 12.09 2.34 12.25L2.29 12.29C2.11 12.5 2 12.74 2 13V17H3V22H19V20H16M15.08 14.22L14.33 14.09C11.96 13.69 10.17 11.64 10.17 9.17C10.17 7.84 10.7 6.57 11.63 5.63C12.57 4.7 13.85 4.17 15.17 4.17C17.93 4.17 20.17 6.41 20.17 9.17C20.17 11.73 18.24 13.84 15.77 14.13L15.08 14.21M4.5 11C5.33 11 6 10.33 6 9.5C6 8.67 5.33 8 4.5 8C3.67 8 3 8.67 3 9.5C3 10.33 3.67 11 4.5 11Z" /></svg>`,
|
|
54742
54872
|
index: 1,
|
|
54743
54873
|
activate: !1,
|
|
54744
54874
|
allowDehydrated: !1,
|
|
@@ -54751,7 +54881,7 @@ class wR {
|
|
|
54751
54881
|
name: "helper",
|
|
54752
54882
|
tools: [
|
|
54753
54883
|
{
|
|
54754
|
-
svg: `<svg fill="${
|
|
54884
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>flag-variant-outline</title><path d="M6,3A1,1 0 0,1 7,4V4.88C8.06,4.44 9.5,4 11,4C14,4 14,6 16,6C19,6 20,4 20,4V12C20,12 19,14 16,14C13,14 13,12 11,12C8,12 7,14 7,14V21H5V4A1,1 0 0,1 6,3M7,7.25V11.5C7,11.5 9,10 11,10C13,10 14,12 16,12C18,12 18,11 18,11V7.5C18,7.5 17,8 16,8C14,8 13,6 11,6C9,6 7,7.25 7,7.25Z" /></svg>`,
|
|
54755
54885
|
index: 0,
|
|
54756
54886
|
activate: !1,
|
|
54757
54887
|
allowDehydrated: !1,
|
|
@@ -54759,7 +54889,7 @@ class wR {
|
|
|
54759
54889
|
action: (t) => this.viralToolElevation.activate(t)
|
|
54760
54890
|
},
|
|
54761
54891
|
{
|
|
54762
|
-
svg: `<svg fill="${
|
|
54892
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>ruler</title><path d="M1.39,18.36L3.16,16.6L4.58,18L5.64,16.95L4.22,15.54L5.64,14.12L8.11,16.6L9.17,15.54L6.7,13.06L8.11,11.65L9.53,13.06L10.59,12L9.17,10.59L10.59,9.17L13.06,11.65L14.12,10.59L11.65,8.11L13.06,6.7L14.47,8.11L15.54,7.05L14.12,5.64L15.54,4.22L18,6.7L19.07,5.64L16.6,3.16L18.36,1.39L22.61,5.64L5.64,22.61L1.39,18.36Z" /></svg>`,
|
|
54763
54893
|
index: 1,
|
|
54764
54894
|
activate: !1,
|
|
54765
54895
|
allowDehydrated: !1,
|
|
@@ -54767,7 +54897,7 @@ class wR {
|
|
|
54767
54897
|
action: (t) => this.viralToolMeasure.activate(t)
|
|
54768
54898
|
},
|
|
54769
54899
|
{
|
|
54770
|
-
svg: `<svg fill="${
|
|
54900
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>vector-intersection</title><path d="M3.14,1A2.14,2.14 0 0,0 1,3.14V5H3V3H5V1H3.14M7,1V3H10V1H7M12,1V3H14V5H16V3.14C16,1.96 15.04,1 13.86,1H12M1,7V10H3V7H1M9,7C7.89,7 7,7.89 7,9C7,11.33 7,16 7,16C7,16 11.57,16 13.86,16A2.14,2.14 0 0,0 16,13.86C16,11.57 16,7 16,7C16,7 11.33,7 9,7M18,7V9H20V11H22V9C22,7.89 21.11,7 20,7H18M9,9H14V14H9V9M1,12V13.86C1,15.04 1.96,16 3.14,16H5V14H3V12H1M20,13V16H22V13H20M7,18V20C7,21.11 7.89,22 9,22H11V20H9V18H7M20,18V20H18V22H20C21.11,22 22,21.11 22,20V18H20M13,20V22H16V20H13Z" /></svg>`,
|
|
54771
54901
|
index: 2,
|
|
54772
54902
|
activate: !1,
|
|
54773
54903
|
allowDehydrated: !1,
|
|
@@ -54781,7 +54911,7 @@ class wR {
|
|
|
54781
54911
|
name: "environment",
|
|
54782
54912
|
tools: [
|
|
54783
54913
|
{
|
|
54784
|
-
svg: `<svg fill="${
|
|
54914
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>white-balance-sunny</title><path d="M3.55 19.09L4.96 20.5L6.76 18.71L5.34 17.29M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12C18 8.68 15.31 6 12 6M20 13H23V11H20M17.24 18.71L19.04 20.5L20.45 19.09L18.66 17.29M20.45 5L19.04 3.6L17.24 5.39L18.66 6.81M13 1H11V4H13M6.76 5.39L4.96 3.6L3.55 5L5.34 6.81L6.76 5.39M1 13H4V11H1M13 20H11V23H13" /></svg>`,
|
|
54785
54915
|
index: 0,
|
|
54786
54916
|
activate: !1,
|
|
54787
54917
|
allowDehydrated: !1,
|
|
@@ -54789,7 +54919,7 @@ class wR {
|
|
|
54789
54919
|
action: (t) => this.viralToolSunlight.activate(t)
|
|
54790
54920
|
},
|
|
54791
54921
|
{
|
|
54792
|
-
svg: `<svg fill="${
|
|
54922
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480-120q-75 0-140.5-28.5t-114-77q-48.5-48.5-77-114T120-480q0-75 28.5-140.5t77-114q48.5-48.5 114-77T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120ZM200-480q0 83 44.5 152T365-225q-42-51-63.5-120T280-492q0-66 16-125t46-107q-66 38-104 103t-38 141Zm348 272q75-19 130-74t74-130L548-208Zm-67-18 278-278q-2-14-4-28.5t-7-28.5L444-257q8 9 17.5 16.5T481-226Zm-74-79 315-315q-6-10-12-19.5T696-658L385-348q5 11 10.5 21.5T407-305Zm-40-108 286-287q-10-8-19.5-14.5T613-727L360-474q1 16 2.5 31t4.5 30Zm0-152 185-186q-15-4-30-6t-30-3q-49 29-81 79t-44 116Zm-25-159Z"/></svg>`,
|
|
54793
54923
|
index: 1,
|
|
54794
54924
|
activate: !1,
|
|
54795
54925
|
allowDehydrated: !1,
|
|
@@ -54802,7 +54932,7 @@ class wR {
|
|
|
54802
54932
|
name: "theme",
|
|
54803
54933
|
tools: [
|
|
54804
54934
|
{
|
|
54805
|
-
svg: `<svg fill="${
|
|
54935
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>moon-waning-crescent</title><path d="M2 12A10 10 0 0 0 15 21.54A10 10 0 0 1 15 2.46A10 10 0 0 0 2 12Z" /></svg>`,
|
|
54806
54936
|
index: 0,
|
|
54807
54937
|
activate: !1,
|
|
54808
54938
|
allowDehydrated: !0,
|
|
@@ -54815,7 +54945,7 @@ class wR {
|
|
|
54815
54945
|
name: "debug",
|
|
54816
54946
|
tools: [
|
|
54817
54947
|
{
|
|
54818
|
-
svg: `<svg fill="${
|
|
54948
|
+
svg: `<svg fill="${Ee.primary}" style="height: 20px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>cube-scan</title><path d="M17 22L22 19V13L17 16V22M17 8V2L22 5V11L17 8M1 8L6 11L11 8L6 5L1 8M6 13L1 10V16L6 19V13M13 16L8 13V19L13 22V16M13 8L8 5V11L13 8Z" /></svg>`,
|
|
54819
54949
|
index: 0,
|
|
54820
54950
|
activate: !1,
|
|
54821
54951
|
allowDehydrated: !1,
|
|
@@ -54826,7 +54956,7 @@ class wR {
|
|
|
54826
54956
|
}
|
|
54827
54957
|
]
|
|
54828
54958
|
}
|
|
54829
|
-
], this.items = [], this.viralToolAvatar = new
|
|
54959
|
+
], this.items = [], this.viralToolAvatar = new bR(this), this.viralToolDarkMode = new yR(this), this.viralToolSunlight = new SR(this), this.viralToolElevation = new _R(this), this.viralToolMeasure = new wR(this), this.viralToolAmbientOcclusion = new xR(this), this.dehydratedCachedData(), this.executeToolsByDefault(), this.injectTools(), this.viralViewerApi.emit(At.LOADED_TOOLS);
|
|
54830
54960
|
}
|
|
54831
54961
|
//#region Init
|
|
54832
54962
|
injectTools() {
|
|
@@ -54840,7 +54970,7 @@ class wR {
|
|
|
54840
54970
|
const i = this.tools[t], n = document.createElement("div");
|
|
54841
54971
|
n.setAttribute(
|
|
54842
54972
|
"style",
|
|
54843
|
-
`padding: 8px 10px 10px 10px; display: flex;flex-direction: row;justify-content: center; align-items: center; background-color: ${
|
|
54973
|
+
`padding: 8px 10px 10px 10px; display: flex;flex-direction: row;justify-content: center; align-items: center; background-color: ${Ee.background}; border-radius: 10px; pointer-events: visible;margin: 0 2.5px;`
|
|
54844
54974
|
);
|
|
54845
54975
|
for (let r = 0; r < i.tools.length; r++) {
|
|
54846
54976
|
const a = i.tools[r], o = document.createElement("div");
|
|
@@ -54853,10 +54983,10 @@ class wR {
|
|
|
54853
54983
|
const l = document.createElement("div");
|
|
54854
54984
|
l.setAttribute(
|
|
54855
54985
|
"style",
|
|
54856
|
-
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${
|
|
54986
|
+
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${Ee.background};`
|
|
54857
54987
|
), a.activate && l.setAttribute(
|
|
54858
54988
|
"style",
|
|
54859
|
-
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${
|
|
54989
|
+
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${Ee.secondary};`
|
|
54860
54990
|
), o.appendChild(l);
|
|
54861
54991
|
const c = document.createElement("div");
|
|
54862
54992
|
c.setAttribute(
|
|
@@ -54871,7 +55001,7 @@ class wR {
|
|
|
54871
55001
|
c.style.setProperty("background-color", "unset");
|
|
54872
55002
|
};
|
|
54873
55003
|
const h = Md.createElementFromHTML(a.svg);
|
|
54874
|
-
a.activate && h && h.setAttribute("fill", `${
|
|
55004
|
+
a.activate && h && h.setAttribute("fill", `${Ee.secondary}`), c.appendChild(h), o.appendChild(c), n.appendChild(o);
|
|
54875
55005
|
}
|
|
54876
55006
|
e.appendChild(n);
|
|
54877
55007
|
}
|
|
@@ -54905,15 +55035,15 @@ class wR {
|
|
|
54905
55035
|
if (n) {
|
|
54906
55036
|
n.activate = !n.activate;
|
|
54907
55037
|
const r = t.children[0], o = t.children[1].children[0];
|
|
54908
|
-
n.activate ? (r.style.setProperty("border-color", `${
|
|
55038
|
+
n.activate ? (r.style.setProperty("border-color", `${Ee.secondary}`), o.setAttribute("fill", `${Ee.secondary}`)) : (r.style.setProperty(
|
|
54909
55039
|
"border-color",
|
|
54910
|
-
`${
|
|
54911
|
-
), o.setAttribute("fill", `${
|
|
55040
|
+
`${Ee.background}`
|
|
55041
|
+
), o.setAttribute("fill", `${Ee.primary}`)), n.action(n);
|
|
54912
55042
|
}
|
|
54913
55043
|
}
|
|
54914
55044
|
//#endregion
|
|
54915
55045
|
}
|
|
54916
|
-
class
|
|
55046
|
+
class AR {
|
|
54917
55047
|
constructor(e) {
|
|
54918
55048
|
this.viralNavigationCube = e, this.camera = null, this.cameraControls = null, this.cameraControlOldPosition = new P(), this.cameraControlNewPosition = new P(), this.cameraControlHasMoved = !1, this.setupCamera(), this.setupHandle();
|
|
54919
55049
|
}
|
|
@@ -54944,7 +55074,7 @@ class SR {
|
|
|
54944
55074
|
window.addEventListener("mousedown", e, !1), window.addEventListener("mousemove", t, !1), window.addEventListener("touchstart", e, !1), window.addEventListener("touchmove", t, !0);
|
|
54945
55075
|
}
|
|
54946
55076
|
}
|
|
54947
|
-
class
|
|
55077
|
+
class TR {
|
|
54948
55078
|
constructor(e) {
|
|
54949
55079
|
this.viralNavigationCube = e, this.renderer = new vb({
|
|
54950
55080
|
alpha: !0,
|
|
@@ -54973,7 +55103,7 @@ class MR {
|
|
|
54973
55103
|
// }
|
|
54974
55104
|
// }
|
|
54975
55105
|
}
|
|
54976
|
-
class
|
|
55106
|
+
class ER {
|
|
54977
55107
|
constructor(e) {
|
|
54978
55108
|
this.viralNavigationCube = e, this.scene = new lc(), this.objects = [], this.cube = null, this.activePlane = null, this.addCube(), this.addPlanes();
|
|
54979
55109
|
}
|
|
@@ -54984,9 +55114,9 @@ class AR {
|
|
|
54984
55114
|
let e = [], t = ["RIGHT", "LEFT", "TOP", "BOTTOM", "FRONT", "BACK"], i = new ab(), n = document.createElement("canvas"), r = n.getContext("2d"), a = 64;
|
|
54985
55115
|
if (n.width = a, n.height = a, r) {
|
|
54986
55116
|
r.font = 'bolder 12px "Open sans", Arial', r.textBaseline = "middle", r.textAlign = "center";
|
|
54987
|
-
let o = `${
|
|
55117
|
+
let o = `${Ee.background}`;
|
|
54988
55118
|
for (let l = 0; l < 6; l++)
|
|
54989
|
-
t[l] == "TOP" || t[l] == "BOTTOM", r.fillStyle = o, r.fillRect(0, 0, a, a), r.strokeStyle = `${
|
|
55119
|
+
t[l] == "TOP" || t[l] == "BOTTOM", r.fillStyle = o, r.fillRect(0, 0, a, a), r.strokeStyle = `${Ee.primary}`, r.setLineDash([8, 8]), r.lineWidth = 4, r.strokeRect(0, 0, a, a), r.fillStyle = `${Ee.primary}`, r.fillText(t[l], a / 2, a / 2), e[l] = new Ii({
|
|
54990
55120
|
map: i.load(n.toDataURL())
|
|
54991
55121
|
});
|
|
54992
55122
|
this.cube = new Q(new oi(1, 1, 1), e), this.addObject(this.cube);
|
|
@@ -55089,8 +55219,8 @@ class AR {
|
|
|
55089
55219
|
he.rotation.x = Math.PI / 2, he.position.y = l, he.position.z = t / 2 + n / 2, he.position.x = t / 2 + n / 2;
|
|
55090
55220
|
let ge = new Q(o, e.clone());
|
|
55091
55221
|
ge.rotation.x = Math.PI / 2, ge.position.y = l, ge.position.z = t / 2 + n / 2, ge.position.x = -(t / 2 + n / 2);
|
|
55092
|
-
let
|
|
55093
|
-
|
|
55222
|
+
let Pe = new Q(r, e.clone());
|
|
55223
|
+
Pe.rotation.x = Math.PI / 2, Pe.position.y = -l, Pe.name = "BOTTOM";
|
|
55094
55224
|
let ve = new Q(a, e.clone());
|
|
55095
55225
|
ve.rotation.x = Math.PI / 2, ve.position.y = -l, ve.position.x = t / 2 + n / 2;
|
|
55096
55226
|
let Qe = new Q(a, e.clone());
|
|
@@ -55110,7 +55240,7 @@ class AR {
|
|
|
55110
55240
|
let ae = new Ii({
|
|
55111
55241
|
color: 11184810
|
|
55112
55242
|
}), te = new ii(1, 1), qe = new Q(te, ae);
|
|
55113
|
-
qe.rotation.x = -Math.PI / 2, qe.position.y = -0.6, this.addObject(c), this.addObject(b), this.addObject(C), this.addObject(pe), this.addObject(Xe), this.addObject(
|
|
55243
|
+
qe.rotation.x = -Math.PI / 2, qe.position.y = -0.6, this.addObject(c), this.addObject(b), this.addObject(C), this.addObject(pe), this.addObject(Xe), this.addObject(Pe), this.addObject(qe);
|
|
55114
55244
|
const Oe = new Q();
|
|
55115
55245
|
Oe.name = "1131", Oe.add(h), Oe.add(L), this.addObject(Oe);
|
|
55116
55246
|
const Ke = new Q();
|
|
@@ -55153,7 +55283,7 @@ class AR {
|
|
|
55153
55283
|
mi.name = "corner8", mi.add(M), mi.add(Z), mi.add(H), this.addObject(mi);
|
|
55154
55284
|
}
|
|
55155
55285
|
}
|
|
55156
|
-
class
|
|
55286
|
+
class PR {
|
|
55157
55287
|
constructor(e) {
|
|
55158
55288
|
this.viralNavigationCube = e, this._mouseDownTime = null, this.clickThreshold = 250, this._handleClick = async (t) => {
|
|
55159
55289
|
var h, d, u, f, p, v, g, m, b, x, y, _, w, T, E, S, M, C, L, U, z;
|
|
@@ -55323,10 +55453,10 @@ class TR {
|
|
|
55323
55453
|
}
|
|
55324
55454
|
//#endregion
|
|
55325
55455
|
}
|
|
55326
|
-
class
|
|
55456
|
+
class CR {
|
|
55327
55457
|
//* view cube from third party (new approach)
|
|
55328
55458
|
constructor(e) {
|
|
55329
|
-
this.viralViewerApi = e, this.targetElement = null, this.cubeScene = null, this.cubeRenderer = null, this.cubeCamera = null, this.cubeMouse = null, this.injectCubeWrapperElement(), this.targetElement = document.getElementById("orientCubeWrapper"), this.targetElement && (this.cubeScene = new
|
|
55459
|
+
this.viralViewerApi = e, this.targetElement = null, this.cubeScene = null, this.cubeRenderer = null, this.cubeCamera = null, this.cubeMouse = null, this.injectCubeWrapperElement(), this.targetElement = document.getElementById("orientCubeWrapper"), this.targetElement && (this.cubeScene = new ER(this), this.cubeRenderer = new TR(this), this.cubeCamera = new AR(this), this.cubeMouse = new PR(this)), this.viralViewerApi.emit(At.LOADED_CUBE);
|
|
55330
55460
|
}
|
|
55331
55461
|
injectCubeWrapperElement() {
|
|
55332
55462
|
if (this.viralViewerApi.targetElement) {
|
|
@@ -55347,7 +55477,7 @@ class ER {
|
|
|
55347
55477
|
this.viralViewerApi.viralCamera.focusModelByName();
|
|
55348
55478
|
}
|
|
55349
55479
|
}
|
|
55350
|
-
class
|
|
55480
|
+
class IR {
|
|
55351
55481
|
static generateRandomString(e) {
|
|
55352
55482
|
const t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
55353
55483
|
let i = "";
|
|
@@ -55358,16 +55488,16 @@ class PR {
|
|
|
55358
55488
|
return i;
|
|
55359
55489
|
}
|
|
55360
55490
|
}
|
|
55361
|
-
const
|
|
55362
|
-
class
|
|
55491
|
+
const RR = 0.032;
|
|
55492
|
+
class DR {
|
|
55363
55493
|
constructor(e, t, i, n, r = 2, a = 1, o, l) {
|
|
55364
|
-
this.viralViewerApi = e, this.scaleRatio = r, this.mixer = null, this.idleAnimation = null, this.walkAnimation = null, this.avatar = null, this.destination = null, this.isReady = !1, this.name = "", this.id =
|
|
55494
|
+
this.viralViewerApi = e, this.scaleRatio = r, this.mixer = null, this.idleAnimation = null, this.walkAnimation = null, this.avatar = null, this.destination = null, this.isReady = !1, this.name = "", this.id = IR.generateRandomString(10), this.MOVEMENT_SPEED = 0.032, this.talkContent = "", o && (this.id = o), l && (this.name = l, this.nameDiv = document.createElement("div"), this.nameDiv.setAttribute(
|
|
55365
55495
|
"style",
|
|
55366
55496
|
"position: absolute; top:0; left:0;transform: translateX(-50%); pointer-events: none; background-color:rgba(226, 230, 220,1); color:rgb(23, 49, 44); padding: 5px ; border-radius:5px; font-size:x-small"
|
|
55367
55497
|
), this.nameDiv.id = this.id, this.nameDiv.append(this.name), this.viralViewerApi.targetElement.appendChild(this.nameDiv)), this.chatDiv = document.createElement("div"), this.chatDiv.setAttribute(
|
|
55368
55498
|
"style",
|
|
55369
55499
|
"position: absolute;display:none; top:0; left:0;transform: translate(-50%, -100%); pointer-events: none; background-color:rgba(226, 230, 220,1); color:rgb(23, 49, 44); padding: 5px ; border-radius:5px; font-size:x-small"
|
|
55370
|
-
), this.viralViewerApi.targetElement.appendChild(this.chatDiv), this.MOVEMENT_SPEED =
|
|
55500
|
+
), this.viralViewerApi.targetElement.appendChild(this.chatDiv), this.MOVEMENT_SPEED = RR * a, this.viralViewerApi.viralLoader.threeLoader.loadGLTF(
|
|
55371
55501
|
t,
|
|
55372
55502
|
(c) => {
|
|
55373
55503
|
this.avatar = c.scene;
|
|
@@ -55441,12 +55571,12 @@ class IR {
|
|
|
55441
55571
|
(e = this.avatar) == null || e.removeFromParent(), this.mixer = null, this.walkAnimation = null, this.avatar = null, (i = (t = this.nameDiv) == null ? void 0 : t.parentNode) == null || i.removeChild(this.nameDiv), (r = (n = this.chatDiv) == null ? void 0 : n.parentNode) == null || r.removeChild(this.chatDiv);
|
|
55442
55572
|
}
|
|
55443
55573
|
}
|
|
55444
|
-
class
|
|
55574
|
+
class LR {
|
|
55445
55575
|
constructor(e) {
|
|
55446
55576
|
this.viralViewerApi = e, this.avatars = [];
|
|
55447
55577
|
}
|
|
55448
55578
|
load(e, t, i, n = 2, r = 1, a, o) {
|
|
55449
|
-
let l = new
|
|
55579
|
+
let l = new DR(
|
|
55450
55580
|
this.viralViewerApi,
|
|
55451
55581
|
e,
|
|
55452
55582
|
t,
|
|
@@ -55463,7 +55593,7 @@ class RR {
|
|
|
55463
55593
|
t && t.dispose(), this.avatars = this.avatars.filter((i) => i.id != e);
|
|
55464
55594
|
}
|
|
55465
55595
|
}
|
|
55466
|
-
class
|
|
55596
|
+
class OR {
|
|
55467
55597
|
constructor(e) {
|
|
55468
55598
|
this.viralViewerApi = e, this.isGeneratingMergeModel = !1;
|
|
55469
55599
|
}
|
|
@@ -55493,7 +55623,7 @@ class DR {
|
|
|
55493
55623
|
i.Offset.Z,
|
|
55494
55624
|
i.Offset.Y,
|
|
55495
55625
|
1
|
|
55496
|
-
], a = new
|
|
55626
|
+
], a = new Ce();
|
|
55497
55627
|
a.fromArray(r);
|
|
55498
55628
|
let o = [];
|
|
55499
55629
|
for (let c = 0; c < t.length; c++) {
|
|
@@ -55598,7 +55728,7 @@ class DR {
|
|
|
55598
55728
|
}), this.viralViewerApi.options.isDev && Pi.memory("merge model successfully!"), this.viralViewerApi.viralScene.mergedModel.setReady(!0), this.isGeneratingMergeModel = !1, console.log(this.viralViewerApi.viralScene.mergedModel.children), console.log("Time to generate model: ", performance.now() - e), this.viralViewerApi.emit(At.GENERATED_MERGE_MODEL);
|
|
55599
55729
|
}
|
|
55600
55730
|
}
|
|
55601
|
-
class
|
|
55731
|
+
class NR {
|
|
55602
55732
|
constructor(e) {
|
|
55603
55733
|
this.viralViewerApi = e, this.planeEdges = null, this._isGenerated = !1, this.planeMaterial = new Ii({
|
|
55604
55734
|
color: 16777215,
|
|
@@ -55607,7 +55737,7 @@ class LR {
|
|
|
55607
55737
|
opacity: 0.1
|
|
55608
55738
|
// wireframe: true,
|
|
55609
55739
|
}), this._planX0 = null, this._planX1 = null, this._planY0 = null, this._planY1 = null, this._planZ0 = null, this._planZ1 = null, this._edgesX0 = null, this._edgesX1 = null, this._edgesY0 = null, this._edgesY1 = null, this._edgesZ0 = null, this._edgeX0 = null, this._edgeX1 = null, this._edgeY0 = null, this._edgeY1 = null, this._edgeZ0 = null, this.edgeMaterial = new dn({
|
|
55610
|
-
color: Et.hexToThreejsColor(
|
|
55740
|
+
color: Et.hexToThreejsColor(Ee.accent)
|
|
55611
55741
|
// Blue edges
|
|
55612
55742
|
}), this._isEnabling = !1;
|
|
55613
55743
|
}
|
|
@@ -55695,14 +55825,14 @@ class LR {
|
|
|
55695
55825
|
this.createPlaneEdges();
|
|
55696
55826
|
}
|
|
55697
55827
|
}
|
|
55698
|
-
class
|
|
55828
|
+
class BR {
|
|
55699
55829
|
constructor(e) {
|
|
55700
55830
|
this.viralViewerApi = e, this.contextMenu = null, this.injectContextMenu();
|
|
55701
55831
|
}
|
|
55702
55832
|
injectContextMenu() {
|
|
55703
55833
|
this.viralViewerApi.targetElement && (this.contextMenu = document.createElement("div"), this.contextMenu.setAttribute("id", "viral-pivot-point"), this.contextMenu.setAttribute(
|
|
55704
55834
|
"style",
|
|
55705
|
-
`position: absolute;top:0px;left:0px;background-color: ${
|
|
55835
|
+
`position: absolute;top:0px;left:0px;background-color: ${Ee.secondary}; border-radius:5px; height: 10px; width:10px; opacity:80%; transform: translate(-50%, -50%);display: none`
|
|
55706
55836
|
), this.viralViewerApi.targetElement.appendChild(this.contextMenu));
|
|
55707
55837
|
}
|
|
55708
55838
|
show(e, t) {
|
|
@@ -55712,7 +55842,7 @@ class OR {
|
|
|
55712
55842
|
this.contextMenu && this.contextMenu.style.setProperty("display", "none");
|
|
55713
55843
|
}
|
|
55714
55844
|
}
|
|
55715
|
-
class
|
|
55845
|
+
class UR {
|
|
55716
55846
|
constructor(e) {
|
|
55717
55847
|
this.viralViewerApi = e, this.panel = null, this.batchListContainer = null, this.isVisible = !1, this.selectedBatchMesh = null, this.inject();
|
|
55718
55848
|
}
|
|
@@ -55727,7 +55857,7 @@ class NR {
|
|
|
55727
55857
|
right: 10px;
|
|
55728
55858
|
width: 300px;
|
|
55729
55859
|
max-height: 80vh;
|
|
55730
|
-
background-color: ${
|
|
55860
|
+
background-color: ${Ee.background};
|
|
55731
55861
|
border: 1px solid #ccc;
|
|
55732
55862
|
border-radius: 8px;
|
|
55733
55863
|
padding: 15px;
|
|
@@ -55741,8 +55871,8 @@ class NR {
|
|
|
55741
55871
|
const e = document.createElement("div");
|
|
55742
55872
|
e.innerHTML = `
|
|
55743
55873
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;">
|
|
55744
|
-
<h3 style="margin: 0; color: ${
|
|
55745
|
-
<span id="batch-debug-close" style="cursor: pointer; font-size: 20px; color: ${
|
|
55874
|
+
<h3 style="margin: 0; color: ${Ee.secondary}; font-size: 16px;">Batch Debug Panel</h3>
|
|
55875
|
+
<span id="batch-debug-close" style="cursor: pointer; font-size: 20px; color: ${Ee.secondary};">×</span>
|
|
55746
55876
|
</div>
|
|
55747
55877
|
`, this.panel.appendChild(e);
|
|
55748
55878
|
const t = document.createElement("div");
|
|
@@ -55754,7 +55884,7 @@ class NR {
|
|
|
55754
55884
|
t.appendChild(i), t.appendChild(n), this.panel.appendChild(t);
|
|
55755
55885
|
const r = document.createElement("div");
|
|
55756
55886
|
r.innerHTML = `
|
|
55757
|
-
<h4 style="margin: 10px 0 5px 0; color: ${
|
|
55887
|
+
<h4 style="margin: 10px 0 5px 0; color: ${Ee.secondary}; font-size: 14px;">Batched Meshes</h4>
|
|
55758
55888
|
`, this.panel.appendChild(r), this.batchListContainer = document.createElement("div"), this.batchListContainer.setAttribute(
|
|
55759
55889
|
"style",
|
|
55760
55890
|
`
|
|
@@ -55771,7 +55901,7 @@ class NR {
|
|
|
55771
55901
|
`
|
|
55772
55902
|
flex: 1;
|
|
55773
55903
|
padding: 8px;
|
|
55774
|
-
background-color: ${
|
|
55904
|
+
background-color: ${Ee.primary};
|
|
55775
55905
|
color: white;
|
|
55776
55906
|
border: none;
|
|
55777
55907
|
border-radius: 4px;
|
|
@@ -55781,9 +55911,9 @@ class NR {
|
|
|
55781
55911
|
transition: background-color 0.2s;
|
|
55782
55912
|
`
|
|
55783
55913
|
), i.addEventListener("mouseenter", () => {
|
|
55784
|
-
i.style.backgroundColor =
|
|
55914
|
+
i.style.backgroundColor = Ee.accent;
|
|
55785
55915
|
}), i.addEventListener("mouseleave", () => {
|
|
55786
|
-
i.style.backgroundColor =
|
|
55916
|
+
i.style.backgroundColor = Ee.primary;
|
|
55787
55917
|
}), i;
|
|
55788
55918
|
}
|
|
55789
55919
|
injectStyles() {
|
|
@@ -55802,12 +55932,12 @@ class NR {
|
|
|
55802
55932
|
background-color: rgba(0, 0, 0, 0.1);
|
|
55803
55933
|
}
|
|
55804
55934
|
.batch-item.selected {
|
|
55805
|
-
border-color: ${
|
|
55935
|
+
border-color: ${Ee.accent};
|
|
55806
55936
|
background-color: rgba(128, 214, 218, 0.2);
|
|
55807
55937
|
}
|
|
55808
55938
|
.batch-item-title {
|
|
55809
55939
|
font-weight: 600;
|
|
55810
|
-
color: ${
|
|
55940
|
+
color: ${Ee.secondary};
|
|
55811
55941
|
font-size: 13px;
|
|
55812
55942
|
margin-bottom: 4px;
|
|
55813
55943
|
}
|
|
@@ -55888,7 +56018,7 @@ class NR {
|
|
|
55888
56018
|
background-color: rgba(128, 214, 218, 0.1);
|
|
55889
56019
|
border-radius: 4px;
|
|
55890
56020
|
font-size: 11px;
|
|
55891
|
-
color: ${
|
|
56021
|
+
color: ${Ee.secondary};
|
|
55892
56022
|
text-align: center;
|
|
55893
56023
|
`
|
|
55894
56024
|
), i.innerHTML = `
|
|
@@ -55931,7 +56061,7 @@ class NR {
|
|
|
55931
56061
|
this.clearIsolation(), this.panel && (this.panel.remove(), this.panel = null);
|
|
55932
56062
|
}
|
|
55933
56063
|
}
|
|
55934
|
-
class
|
|
56064
|
+
class FR {
|
|
55935
56065
|
constructor(e) {
|
|
55936
56066
|
this.viralViewerApi = e, this.panel = null, this.contentContainer = null, this.isVisible = !1, this.lastAnalysis = null, this.inject();
|
|
55937
56067
|
}
|
|
@@ -55946,7 +56076,7 @@ class BR {
|
|
|
55946
56076
|
left: 10px;
|
|
55947
56077
|
width: 450px;
|
|
55948
56078
|
max-height: 85vh;
|
|
55949
|
-
background-color: ${
|
|
56079
|
+
background-color: ${Ee.background};
|
|
55950
56080
|
border: 1px solid #ccc;
|
|
55951
56081
|
border-radius: 8px;
|
|
55952
56082
|
padding: 15px;
|
|
@@ -55961,8 +56091,8 @@ class BR {
|
|
|
55961
56091
|
const e = document.createElement("div");
|
|
55962
56092
|
e.innerHTML = `
|
|
55963
56093
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
|
|
55964
|
-
<h3 style="margin: 0; color: ${
|
|
55965
|
-
<span id="render-debug-close" style="cursor: pointer; font-size: 20px; color: ${
|
|
56094
|
+
<h3 style="margin: 0; color: ${Ee.secondary}; font-size: 16px;">🔍 Render Debug Panel</h3>
|
|
56095
|
+
<span id="render-debug-close" style="cursor: pointer; font-size: 20px; color: ${Ee.secondary};">×</span>
|
|
55966
56096
|
</div>
|
|
55967
56097
|
`, this.panel.appendChild(e);
|
|
55968
56098
|
const t = document.createElement("div");
|
|
@@ -55986,7 +56116,7 @@ class BR {
|
|
|
55986
56116
|
"style",
|
|
55987
56117
|
`
|
|
55988
56118
|
padding: 8px 12px;
|
|
55989
|
-
background-color: ${
|
|
56119
|
+
background-color: ${Ee.primary};
|
|
55990
56120
|
color: white;
|
|
55991
56121
|
border: none;
|
|
55992
56122
|
border-radius: 4px;
|
|
@@ -55996,9 +56126,9 @@ class BR {
|
|
|
55996
56126
|
transition: background-color 0.2s;
|
|
55997
56127
|
`
|
|
55998
56128
|
), i.addEventListener("mouseenter", () => {
|
|
55999
|
-
i.style.backgroundColor =
|
|
56129
|
+
i.style.backgroundColor = Ee.accent;
|
|
56000
56130
|
}), i.addEventListener("mouseleave", () => {
|
|
56001
|
-
i.style.backgroundColor =
|
|
56131
|
+
i.style.backgroundColor = Ee.primary;
|
|
56002
56132
|
}), i;
|
|
56003
56133
|
}
|
|
56004
56134
|
injectStyles() {
|
|
@@ -56012,7 +56142,7 @@ class BR {
|
|
|
56012
56142
|
}
|
|
56013
56143
|
.render-section-title {
|
|
56014
56144
|
font-weight: 600;
|
|
56015
|
-
color: ${
|
|
56145
|
+
color: ${Ee.secondary};
|
|
56016
56146
|
font-size: 13px;
|
|
56017
56147
|
margin-bottom: 8px;
|
|
56018
56148
|
display: flex;
|
|
@@ -56058,7 +56188,7 @@ class BR {
|
|
|
56058
56188
|
}
|
|
56059
56189
|
.stat-value {
|
|
56060
56190
|
font-weight: 600;
|
|
56061
|
-
color: ${
|
|
56191
|
+
color: ${Ee.secondary};
|
|
56062
56192
|
}
|
|
56063
56193
|
.warning-box {
|
|
56064
56194
|
padding: 8px;
|
|
@@ -56534,7 +56664,7 @@ class BR {
|
|
|
56534
56664
|
this.panel && (this.panel.remove(), this.panel = null);
|
|
56535
56665
|
}
|
|
56536
56666
|
}
|
|
56537
|
-
class
|
|
56667
|
+
class zR {
|
|
56538
56668
|
constructor(e) {
|
|
56539
56669
|
this.viralViewerApi = e, this.panel = null, this.instancedListContainer = null, this.isVisible = !1, this.selectedInstancedMesh = null, this.selectedInternalMesh = null, this.inject();
|
|
56540
56670
|
}
|
|
@@ -56549,7 +56679,7 @@ class UR {
|
|
|
56549
56679
|
right: 320px;
|
|
56550
56680
|
width: 350px;
|
|
56551
56681
|
max-height: 80vh;
|
|
56552
|
-
background-color: ${
|
|
56682
|
+
background-color: ${Ee.background};
|
|
56553
56683
|
border: 1px solid #ccc;
|
|
56554
56684
|
border-radius: 8px;
|
|
56555
56685
|
padding: 15px;
|
|
@@ -56563,8 +56693,8 @@ class UR {
|
|
|
56563
56693
|
const e = document.createElement("div");
|
|
56564
56694
|
e.innerHTML = `
|
|
56565
56695
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;">
|
|
56566
|
-
<h3 style="margin: 0; color: ${
|
|
56567
|
-
<span id="instanced-debug-close" style="cursor: pointer; font-size: 20px; color: ${
|
|
56696
|
+
<h3 style="margin: 0; color: ${Ee.secondary}; font-size: 16px;">🔄 Instanced Debug Panel</h3>
|
|
56697
|
+
<span id="instanced-debug-close" style="cursor: pointer; font-size: 20px; color: ${Ee.secondary};">×</span>
|
|
56568
56698
|
</div>
|
|
56569
56699
|
`, this.panel.appendChild(e);
|
|
56570
56700
|
const t = document.createElement("div");
|
|
@@ -56576,7 +56706,7 @@ class UR {
|
|
|
56576
56706
|
t.appendChild(i), t.appendChild(n), t.appendChild(r), this.panel.appendChild(t);
|
|
56577
56707
|
const a = document.createElement("div");
|
|
56578
56708
|
a.innerHTML = `
|
|
56579
|
-
<h4 style="margin: 10px 0 5px 0; color: ${
|
|
56709
|
+
<h4 style="margin: 10px 0 5px 0; color: ${Ee.secondary}; font-size: 14px;">Instanced Meshes (ViralInstancedMeshV2)</h4>
|
|
56580
56710
|
`, this.panel.appendChild(a), this.instancedListContainer = document.createElement("div"), this.instancedListContainer.setAttribute(
|
|
56581
56711
|
"style",
|
|
56582
56712
|
`
|
|
@@ -56593,7 +56723,7 @@ class UR {
|
|
|
56593
56723
|
`
|
|
56594
56724
|
flex: 1;
|
|
56595
56725
|
padding: 8px;
|
|
56596
|
-
background-color: ${
|
|
56726
|
+
background-color: ${Ee.primary};
|
|
56597
56727
|
color: white;
|
|
56598
56728
|
border: none;
|
|
56599
56729
|
border-radius: 4px;
|
|
@@ -56604,9 +56734,9 @@ class UR {
|
|
|
56604
56734
|
min-width: 80px;
|
|
56605
56735
|
`
|
|
56606
56736
|
), i.addEventListener("mouseenter", () => {
|
|
56607
|
-
i.style.backgroundColor =
|
|
56737
|
+
i.style.backgroundColor = Ee.accent;
|
|
56608
56738
|
}), i.addEventListener("mouseleave", () => {
|
|
56609
|
-
i.style.backgroundColor =
|
|
56739
|
+
i.style.backgroundColor = Ee.primary;
|
|
56610
56740
|
}), i;
|
|
56611
56741
|
}
|
|
56612
56742
|
injectStyles() {
|
|
@@ -56627,12 +56757,12 @@ class UR {
|
|
|
56627
56757
|
background-color: rgba(0, 0, 0, 0.1);
|
|
56628
56758
|
}
|
|
56629
56759
|
.instanced-item.selected {
|
|
56630
|
-
border-color: ${
|
|
56760
|
+
border-color: ${Ee.accent};
|
|
56631
56761
|
background-color: rgba(128, 214, 218, 0.2);
|
|
56632
56762
|
}
|
|
56633
56763
|
.instanced-item-title {
|
|
56634
56764
|
font-weight: 600;
|
|
56635
|
-
color: ${
|
|
56765
|
+
color: ${Ee.secondary};
|
|
56636
56766
|
font-size: 13px;
|
|
56637
56767
|
margin-bottom: 4px;
|
|
56638
56768
|
}
|
|
@@ -56679,7 +56809,7 @@ class UR {
|
|
|
56679
56809
|
}
|
|
56680
56810
|
.internal-mesh-item.selected {
|
|
56681
56811
|
background-color: rgba(33, 150, 243, 0.2);
|
|
56682
|
-
border-left-color: ${
|
|
56812
|
+
border-left-color: ${Ee.accent};
|
|
56683
56813
|
}
|
|
56684
56814
|
`, document.head.appendChild(e);
|
|
56685
56815
|
}
|
|
@@ -56796,7 +56926,7 @@ class UR {
|
|
|
56796
56926
|
background-color: rgba(128, 214, 218, 0.1);
|
|
56797
56927
|
border-radius: 4px;
|
|
56798
56928
|
font-size: 11px;
|
|
56799
|
-
color: ${
|
|
56929
|
+
color: ${Ee.secondary};
|
|
56800
56930
|
text-align: center;
|
|
56801
56931
|
`
|
|
56802
56932
|
), r.innerHTML = `
|
|
@@ -56923,7 +57053,7 @@ class UR {
|
|
|
56923
57053
|
this.clearIsolation(), this.panel && (this.panel.remove(), this.panel = null);
|
|
56924
57054
|
}
|
|
56925
57055
|
}
|
|
56926
|
-
class
|
|
57056
|
+
class aD extends jI {
|
|
56927
57057
|
constructor(e = {
|
|
56928
57058
|
isDev: !1,
|
|
56929
57059
|
cameraZUp: !1,
|
|
@@ -56935,12 +57065,12 @@ class sD extends WI {
|
|
|
56935
57065
|
adaptiveEdges: !0,
|
|
56936
57066
|
adaptiveAmbientOcclusion: !0
|
|
56937
57067
|
}) {
|
|
56938
|
-
super(), this.viralCompressProcessor = new bw(), this.localStorageService = new
|
|
57068
|
+
super(), this.viralCompressProcessor = new bw(), this.localStorageService = new f3(), this.viralStats = null, this.viralGeometryHandler = null, this.viralSectionBox = null, this.viralBatchDebugPanel = null, this.viralRenderDebugPanel = null, this.viralInstancedDebugPanel = null, this.options = e, this.viralLifecycleEventHandler = new qI(
|
|
56939
57069
|
this,
|
|
56940
57070
|
this.options
|
|
56941
|
-
), this.targetElement = e.container,
|
|
57071
|
+
), this.targetElement = e.container, ZI("QUICK_SAND"), $I(this.targetElement, "QUICK_SAND"), this.options.enableTools && (this.viralTools = new MR(this)), this.viralSpinner = new gR(this), this.viralDraggableModal = new vR(this), this.viralContextMenu = new m3(this), this.viralPivotPoint = new BR(this), this.viralScene = new kC(this), this.viralMaterialManager = new QI(this), this.viralRenderer = new d3(this), this.viralCamera = new vP(this), this.options.enableNavigationCube && (this.viralNavigationCube = new CR(this)), this.viralMouse = new zC(this), this.viralKeyboard = new p3(this), this.viralAnimation = new u3(this), this.viralVisibilityManager = new KI(this), this.viralCentralizedEventHandler = new g3(this), this.viralLoader = new O3(this), this.viralBVH = new WI(), this.viralDataManager = new mR(this), this.viralAvatarManager = new LR(this), this.options.isDev && (this.viralStats = new N3(this)), this.options.isDev ? this.viralAnimation.devAnimation() : this.viralAnimation.animation();
|
|
56942
57072
|
let t = window;
|
|
56943
|
-
t.VIRAL_VIEWER = this, this.viralGeometryHandler = new
|
|
57073
|
+
t.VIRAL_VIEWER = this, this.viralGeometryHandler = new OR(this), this.viralSectionBox = new NR(this), this.viralBatchDebugPanel = new UR(this), this.viralRenderDebugPanel = new FR(this), this.viralInstancedDebugPanel = new zR(this), this.options.isDev && import("./lil-gui.esm-BtfdsiIY.mjs").then(({ GUI: i }) => {
|
|
56944
57074
|
var g, m, b, x, y;
|
|
56945
57075
|
const n = new i({ title: "Controls" }), r = n.addFolder("Sun Light");
|
|
56946
57076
|
r.add(this.viralScene.sunLight, "visible").onChange(() => {
|
|
@@ -56966,7 +57096,7 @@ class sD extends WI {
|
|
|
56966
57096
|
a.add(this.viralVisibilityManager, "isolateModelId"), a.add(this.viralVisibilityManager, "isolateModel"), a.add(this.viralVisibilityManager, "enableEdge"), a.add(this.viralVisibilityManager, "disableEdge"), a.add(this.viralVisibilityManager, "enableGroundShadow"), a.add(
|
|
56967
57097
|
this.viralVisibilityManager,
|
|
56968
57098
|
"disableGroundShadow"
|
|
56969
|
-
), a.add(this.viralVisibilityManager, "enableAllWhite"), a.add(this.viralVisibilityManager, "disableAllWhite"), a.add(this.viralVisibilityManager, "enableNight"), a.add(this.viralVisibilityManager, "disableNight"), a.add(this.viralVisibilityManager, "enableFog"), a.add(this.viralVisibilityManager, "disableFog"), a.add(this.viralVisibilityManager, "enableRain"), a.add(this.viralVisibilityManager, "disableRain"), a.add(this.viralVisibilityManager, "showBatches"), a.add(this.viralVisibilityManager, "hideBatches");
|
|
57099
|
+
), a.add(this.viralVisibilityManager, "enableAllWhite"), a.add(this.viralVisibilityManager, "disableAllWhite"), a.add(this.viralVisibilityManager, "enableNight"), a.add(this.viralVisibilityManager, "disableNight"), a.add(this.viralVisibilityManager, "enableFog"), a.add(this.viralVisibilityManager, "disableFog"), a.add(this.viralVisibilityManager, "enableRain"), a.add(this.viralVisibilityManager, "disableRain"), a.add(this.viralVisibilityManager, "showBatches"), a.add(this.viralVisibilityManager, "hideBatches"), a.add(this.viralVisibilityManager, "selectAllElements");
|
|
56970
57100
|
const o = n.addFolder("Debug Panels"), l = {
|
|
56971
57101
|
showBatchDebugPanel: () => {
|
|
56972
57102
|
var _;
|
|
@@ -57387,9 +57517,9 @@ class ra {
|
|
|
57387
57517
|
return i;
|
|
57388
57518
|
}
|
|
57389
57519
|
}
|
|
57390
|
-
const
|
|
57520
|
+
const kR = {}, ta = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
57391
57521
|
__proto__: null,
|
|
57392
|
-
default:
|
|
57522
|
+
default: kR
|
|
57393
57523
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
57394
57524
|
class Wi {
|
|
57395
57525
|
constructor() {
|
|
@@ -57576,7 +57706,7 @@ class ur {
|
|
|
57576
57706
|
return ur.startViralutionInformation(e), ur.addData(e, t), ur.endViralutionInformation(e);
|
|
57577
57707
|
}
|
|
57578
57708
|
}
|
|
57579
|
-
class
|
|
57709
|
+
class VR {
|
|
57580
57710
|
/**
|
|
57581
57711
|
* Reads a FlatBuffer from a URL and parses it into the elementData structure
|
|
57582
57712
|
* @param url - Full URL or path to fetch the .fb file from
|
|
@@ -58361,25 +58491,25 @@ class wp {
|
|
|
58361
58491
|
}
|
|
58362
58492
|
}
|
|
58363
58493
|
export {
|
|
58364
|
-
|
|
58494
|
+
VR as A,
|
|
58365
58495
|
dt as B,
|
|
58366
58496
|
kb as C,
|
|
58367
58497
|
jr as D,
|
|
58368
|
-
|
|
58369
|
-
|
|
58498
|
+
GR as E,
|
|
58499
|
+
YR as F,
|
|
58370
58500
|
Xb as G,
|
|
58371
58501
|
Md as H,
|
|
58372
|
-
|
|
58502
|
+
KR as I,
|
|
58373
58503
|
wp as J,
|
|
58374
58504
|
Pi as L,
|
|
58375
|
-
|
|
58505
|
+
JR as T,
|
|
58376
58506
|
Fn as V,
|
|
58377
58507
|
ot as a,
|
|
58378
|
-
|
|
58379
|
-
|
|
58380
|
-
|
|
58381
|
-
|
|
58382
|
-
|
|
58508
|
+
FR as b,
|
|
58509
|
+
UR as c,
|
|
58510
|
+
zR as d,
|
|
58511
|
+
HR as e,
|
|
58512
|
+
WR as f,
|
|
58383
58513
|
fs as g,
|
|
58384
58514
|
yi as h,
|
|
58385
58515
|
Ls as i,
|
|
@@ -58390,14 +58520,14 @@ export {
|
|
|
58390
58520
|
wm as n,
|
|
58391
58521
|
Sp as o,
|
|
58392
58522
|
Lv as p,
|
|
58393
|
-
|
|
58523
|
+
$R as q,
|
|
58394
58524
|
Ub as r,
|
|
58395
58525
|
Sm as s,
|
|
58396
58526
|
Fb as t,
|
|
58397
58527
|
zb as u,
|
|
58398
58528
|
Vb as v,
|
|
58399
|
-
|
|
58529
|
+
aD as w,
|
|
58400
58530
|
Et as x,
|
|
58401
|
-
|
|
58402
|
-
|
|
58531
|
+
rD as y,
|
|
58532
|
+
FC as z
|
|
58403
58533
|
};
|