viral-viewer-2 7.0.0 → 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-CuO9gLeI.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/event-handler/viral-centralized-event-handler.d.ts +2 -2
- 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-D6VcfG2I.mjs → index-BE13poZj.mjs} +712 -584
- 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,43 +47014,43 @@ 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
|
-
this.viralViewerApi = e, this.elementProperties = {}, this._sleepDebounceTimer = null, this._sleepDebounceDelay = 150, this.resizeObserver =
|
|
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
|
}
|
|
46965
47021
|
contextMenuEventHandler() {
|
|
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
|
}
|
|
@@ -47034,18 +47090,16 @@ class p3 {
|
|
|
47034
47090
|
}
|
|
47035
47091
|
));
|
|
47036
47092
|
}
|
|
47037
|
-
//#endregion
|
|
47038
|
-
//#region Window
|
|
47039
47093
|
windowHandler() {
|
|
47040
47094
|
window.onresize = () => {
|
|
47041
47095
|
this.viralViewerApi.viralCamera.resizeCanvas();
|
|
47042
|
-
}, this.
|
|
47043
|
-
this.viralViewerApi.viralCamera.resizeCanvas();
|
|
47044
|
-
};
|
|
47096
|
+
}, this.resizeObserver = new ResizeObserver((e) => {
|
|
47097
|
+
this.viralViewerApi.viralCamera && this.viralViewerApi.viralCamera.resizeCanvas();
|
|
47098
|
+
}), this.resizeObserver.observe(this.viralViewerApi.options.container);
|
|
47045
47099
|
}
|
|
47046
|
-
//
|
|
47047
|
-
|
|
47048
|
-
this.
|
|
47100
|
+
// Call this when disposing the viewer to prevent memory leaks
|
|
47101
|
+
disposeWindowHandler() {
|
|
47102
|
+
this.resizeObserver && (this.resizeObserver.disconnect(), this.resizeObserver = null);
|
|
47049
47103
|
}
|
|
47050
47104
|
hoverElementHandler() {
|
|
47051
47105
|
const e = new Ub(
|
|
@@ -47097,7 +47151,7 @@ class p3 {
|
|
|
47097
47151
|
var n;
|
|
47098
47152
|
if (e !== null && performance.now() - e < t) {
|
|
47099
47153
|
let o = this.viralViewerApi.viralCamera.clientToWorld();
|
|
47100
|
-
if (
|
|
47154
|
+
if (o && (o == null ? void 0 : o.length) > 0)
|
|
47101
47155
|
if ((n = this.viralViewerApi.viralSectionBox) != null && n.isEnabling) {
|
|
47102
47156
|
let l = o.find(
|
|
47103
47157
|
(c) => c.object.name == "Clipping Plane"
|
|
@@ -47225,7 +47279,7 @@ class p3 {
|
|
|
47225
47279
|
}
|
|
47226
47280
|
//#endregion
|
|
47227
47281
|
}
|
|
47228
|
-
function
|
|
47282
|
+
function v3() {
|
|
47229
47283
|
class s {
|
|
47230
47284
|
constructor() {
|
|
47231
47285
|
this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
@@ -47310,8 +47364,8 @@ function m3() {
|
|
|
47310
47364
|
}), self.postMessage(a);
|
|
47311
47365
|
};
|
|
47312
47366
|
}
|
|
47313
|
-
const
|
|
47314
|
-
class
|
|
47367
|
+
const x3 = v3;
|
|
47368
|
+
class b3 extends Q {
|
|
47315
47369
|
constructor() {
|
|
47316
47370
|
super(), this._viralMeshes = [], this._viralInstancedMeshes = [];
|
|
47317
47371
|
}
|
|
@@ -47352,15 +47406,15 @@ class v3 extends Q {
|
|
|
47352
47406
|
this.geometry = null, this.removeFromParent();
|
|
47353
47407
|
}
|
|
47354
47408
|
}
|
|
47355
|
-
class
|
|
47409
|
+
class y3 {
|
|
47356
47410
|
constructor() {
|
|
47357
|
-
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();
|
|
47358
47412
|
}
|
|
47359
47413
|
dispose() {
|
|
47360
47414
|
this.elements = [], this.materials = [], this.mapMaterialsToMaterialManager = new jr(), this.seperateModel.dispose();
|
|
47361
47415
|
}
|
|
47362
47416
|
}
|
|
47363
|
-
function
|
|
47417
|
+
function _3() {
|
|
47364
47418
|
class s {
|
|
47365
47419
|
constructor() {
|
|
47366
47420
|
this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
@@ -47451,8 +47505,8 @@ function b3() {
|
|
|
47451
47505
|
}), self.postMessage(a);
|
|
47452
47506
|
};
|
|
47453
47507
|
}
|
|
47454
|
-
const
|
|
47455
|
-
class
|
|
47508
|
+
const w3 = _3;
|
|
47509
|
+
class S3 {
|
|
47456
47510
|
constructor() {
|
|
47457
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;
|
|
47458
47512
|
}
|
|
@@ -47635,18 +47689,18 @@ class _3 {
|
|
|
47635
47689
|
}
|
|
47636
47690
|
}
|
|
47637
47691
|
}
|
|
47638
|
-
const
|
|
47692
|
+
const M3 = new S3();
|
|
47639
47693
|
class Ab {
|
|
47640
47694
|
// Or 5K objects
|
|
47641
47695
|
//#endregion
|
|
47642
47696
|
constructor(e) {
|
|
47643
47697
|
this.viralViewerApi = e, this.lastRenderTime = 0, this.elementBuffer = /* @__PURE__ */ new Map(), this.BATCH_THRESHOLD_VERTICES = 1e5, this.BATCH_THRESHOLD_OBJECTS = 5e3;
|
|
47644
|
-
const t = new Blob([`(${
|
|
47698
|
+
const t = new Blob([`(${x3})()`]), i = URL.createObjectURL(t);
|
|
47645
47699
|
this.workerPool = new Ar(
|
|
47646
47700
|
navigator.hardwareConcurrency || this.viralViewerApi.options.numberOfWorker,
|
|
47647
47701
|
i
|
|
47648
47702
|
);
|
|
47649
|
-
const n = new Blob([`(${
|
|
47703
|
+
const n = new Blob([`(${w3})()`]), r = URL.createObjectURL(n);
|
|
47650
47704
|
this.workerPool2 = new Ar(
|
|
47651
47705
|
this.viralViewerApi.options.numberOfWorker,
|
|
47652
47706
|
r
|
|
@@ -47659,7 +47713,7 @@ class Ab {
|
|
|
47659
47713
|
*/
|
|
47660
47714
|
initial(e) {
|
|
47661
47715
|
console.log(e);
|
|
47662
|
-
let t = new
|
|
47716
|
+
let t = new y3();
|
|
47663
47717
|
t.modelId = this.viralViewerApi.viralScene.mainModels.length, this.viralViewerApi.viralScene.mainModels.push(t);
|
|
47664
47718
|
let i = this.viralViewerApi.viralScene.mainModels.length - 1;
|
|
47665
47719
|
for (let n = 0; n < e.length; n++) {
|
|
@@ -47699,7 +47753,7 @@ class Ab {
|
|
|
47699
47753
|
*/
|
|
47700
47754
|
loadElement(e, t, i = () => {
|
|
47701
47755
|
}, n = null) {
|
|
47702
|
-
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;
|
|
47703
47757
|
if (!c && !h) {
|
|
47704
47758
|
i();
|
|
47705
47759
|
return;
|
|
@@ -47824,7 +47878,7 @@ class Ab {
|
|
|
47824
47878
|
* Uses onBeforeCompile to inject custom shader code for RGBA vertex colors
|
|
47825
47879
|
*/
|
|
47826
47880
|
createOptimizedMaterial(e) {
|
|
47827
|
-
const t =
|
|
47881
|
+
const t = e3.getDeviceType() == "pc", i = (a, o = 2) => {
|
|
47828
47882
|
if (!a)
|
|
47829
47883
|
return 16777215;
|
|
47830
47884
|
const l = a.clone();
|
|
@@ -47997,7 +48051,7 @@ class Ab {
|
|
|
47997
48051
|
}
|
|
47998
48052
|
//#endregion
|
|
47999
48053
|
}
|
|
48000
|
-
class
|
|
48054
|
+
class A3 {
|
|
48001
48055
|
constructor(e) {
|
|
48002
48056
|
this.viralViewerApi = e, this.elements = [], this._loadElementPatchWorker = new Ab(e);
|
|
48003
48057
|
}
|
|
@@ -48094,7 +48148,7 @@ class S3 {
|
|
|
48094
48148
|
const i = await (await this.viralViewerApi.viralDataManager.gzipFetch(
|
|
48095
48149
|
e
|
|
48096
48150
|
)).arrayBuffer(), n = new Uint8Array(i);
|
|
48097
|
-
return
|
|
48151
|
+
return VR.parseBuffer(n);
|
|
48098
48152
|
}
|
|
48099
48153
|
async getTracking(e) {
|
|
48100
48154
|
return await (await this.viralViewerApi.viralDataManager.normalFetch(
|
|
@@ -48115,7 +48169,7 @@ class S3 {
|
|
|
48115
48169
|
}
|
|
48116
48170
|
//#endregion
|
|
48117
48171
|
}
|
|
48118
|
-
var
|
|
48172
|
+
var T3 = { 746: (s, e, t) => {
|
|
48119
48173
|
t.d(e, { Z: () => i });
|
|
48120
48174
|
const i = `
|
|
48121
48175
|
precision highp float;
|
|
@@ -49034,7 +49088,7 @@ function Pn(s) {
|
|
|
49034
49088
|
if (e !== void 0)
|
|
49035
49089
|
return e.exports;
|
|
49036
49090
|
var t = pv[s] = { exports: {} };
|
|
49037
|
-
return
|
|
49091
|
+
return T3[s](t, t.exports, Pn), t.exports;
|
|
49038
49092
|
}
|
|
49039
49093
|
Pn.d = (s, e) => {
|
|
49040
49094
|
for (var t in e)
|
|
@@ -49042,8 +49096,8 @@ Pn.d = (s, e) => {
|
|
|
49042
49096
|
}, Pn.o = (s, e) => Object.prototype.hasOwnProperty.call(s, e);
|
|
49043
49097
|
var Ft = {};
|
|
49044
49098
|
(() => {
|
|
49045
|
-
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: () =>
|
|
49046
|
-
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);
|
|
49047
49101
|
var e, t, i, n, r, a, o, l;
|
|
49048
49102
|
class c extends s.ShaderMaterial {
|
|
49049
49103
|
constructor() {
|
|
@@ -49375,7 +49429,7 @@ var Ft = {};
|
|
|
49375
49429
|
}
|
|
49376
49430
|
}
|
|
49377
49431
|
ge.idCount = 0;
|
|
49378
|
-
class
|
|
49432
|
+
class Pe {
|
|
49379
49433
|
constructor(A, R, O, F, q) {
|
|
49380
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;
|
|
49381
49435
|
}
|
|
@@ -50162,7 +50216,7 @@ var Ft = {};
|
|
|
50162
50216
|
ze.min.set(at, wt, Nt), ze.max.set(Yt, zt, tt);
|
|
50163
50217
|
}
|
|
50164
50218
|
return Ze.min.sub(je), Ze.max.sub(je), ze.min.sub(je), ze.max.sub(je), { offset: je, boundingBox: Ze, tightBoundingBox: ze };
|
|
50165
|
-
}(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);
|
|
50166
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);
|
|
50167
50221
|
const W = {}, xe = new le(Be.version);
|
|
50168
50222
|
return function(ye, He, Ue, Ze) {
|
|
@@ -50305,9 +50359,9 @@ Ft.XL;
|
|
|
50305
50359
|
Ft.uv;
|
|
50306
50360
|
Ft.vs;
|
|
50307
50361
|
Ft.YJ;
|
|
50308
|
-
var
|
|
50362
|
+
var E3 = Ft.i9;
|
|
50309
50363
|
Ft.uD;
|
|
50310
|
-
var
|
|
50364
|
+
var P3 = Ft.lV, C3 = Ft.Sp, I3 = Ft.RJ;
|
|
50311
50365
|
Ft.SB;
|
|
50312
50366
|
Ft.TL;
|
|
50313
50367
|
Ft.oe;
|
|
@@ -50318,9 +50372,9 @@ Ft.gK;
|
|
|
50318
50372
|
Ft.BT;
|
|
50319
50373
|
Ft.bt;
|
|
50320
50374
|
Ft.sX;
|
|
50321
|
-
class
|
|
50375
|
+
class R3 {
|
|
50322
50376
|
constructor(e) {
|
|
50323
|
-
this.viralViewerApi = e, this.potree = new
|
|
50377
|
+
this.viralViewerApi = e, this.potree = new I3(), this.pointClouds = [];
|
|
50324
50378
|
}
|
|
50325
50379
|
/**
|
|
50326
50380
|
*
|
|
@@ -50335,7 +50389,7 @@ class C3 {
|
|
|
50335
50389
|
this.viralViewerApi.viralRenderer.postProcessingRenderer.disableOutline(), this.potree.pointBudget = n, this.potree.loadPointCloudCustom(e, t, i).then((a) => {
|
|
50336
50390
|
var d;
|
|
50337
50391
|
let o = a.material;
|
|
50338
|
-
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);
|
|
50339
50393
|
let l = new P(0, -1.5, 3), c = new hn(-Math.PI / 2, 0, 0), h = new P(2, 2, 2);
|
|
50340
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(
|
|
50341
50395
|
a.boundingBox,
|
|
@@ -50344,7 +50398,7 @@ class C3 {
|
|
|
50344
50398
|
});
|
|
50345
50399
|
}
|
|
50346
50400
|
}
|
|
50347
|
-
class
|
|
50401
|
+
class D3 {
|
|
50348
50402
|
constructor(e) {
|
|
50349
50403
|
this.viralViewerApi = e, this.elements = [], this._loadElementBatchWorker = new Ab(e);
|
|
50350
50404
|
}
|
|
@@ -50451,7 +50505,7 @@ class I3 {
|
|
|
50451
50505
|
u.Offset.Z,
|
|
50452
50506
|
u.Offset.Y,
|
|
50453
50507
|
1
|
|
50454
|
-
], g = new
|
|
50508
|
+
], g = new Ce();
|
|
50455
50509
|
g.fromArray(v), p.applyMatrix4(g);
|
|
50456
50510
|
const m = new _i(p.geometry), b = new Ci(
|
|
50457
50511
|
m,
|
|
@@ -50526,7 +50580,7 @@ class I3 {
|
|
|
50526
50580
|
l.Offset.Z,
|
|
50527
50581
|
l.Offset.Y,
|
|
50528
50582
|
1
|
|
50529
|
-
], u = new
|
|
50583
|
+
], u = new Ce();
|
|
50530
50584
|
u.fromArray(d), h.applyMatrix4(u);
|
|
50531
50585
|
var a = h.getAttribute("position").array;
|
|
50532
50586
|
n = n.concat(Array.from(a)), h.dispose();
|
|
@@ -50848,7 +50902,7 @@ class I3 {
|
|
|
50848
50902
|
), this.viralViewerApi.viralMaterialManager.mergeMaterials = [], this.viralViewerApi.viralVisibilityManager.disableGroundShadow(), this.viralViewerApi.viralRenderer.render(), this.viralViewerApi.viralDataManager.dataTree = [], this.viralViewerApi.viralScene.selectables = [];
|
|
50849
50903
|
}
|
|
50850
50904
|
}
|
|
50851
|
-
class
|
|
50905
|
+
class L3 {
|
|
50852
50906
|
constructor(e) {
|
|
50853
50907
|
this.viralViewerApi = e, this.objectLoader = new aM(), this.gltfLoader = new VP();
|
|
50854
50908
|
}
|
|
@@ -50862,9 +50916,9 @@ class R3 {
|
|
|
50862
50916
|
this.gltfLoader.load(e, t, i, n);
|
|
50863
50917
|
}
|
|
50864
50918
|
}
|
|
50865
|
-
class
|
|
50919
|
+
class O3 {
|
|
50866
50920
|
constructor(e) {
|
|
50867
|
-
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);
|
|
50868
50922
|
}
|
|
50869
50923
|
}
|
|
50870
50924
|
var Rl = function() {
|
|
@@ -50919,24 +50973,24 @@ Rl.Panel = function(s, e, t) {
|
|
|
50919
50973
|
}
|
|
50920
50974
|
};
|
|
50921
50975
|
};
|
|
50922
|
-
class
|
|
50976
|
+
class N3 {
|
|
50923
50977
|
constructor(e) {
|
|
50924
50978
|
this.viralViewerApi = e, this.stats = null, this.viralViewerApi.targetElement && (this.stats = Rl(), this.stats.showPanel(0), this.viralViewerApi.targetElement.appendChild(this.stats.dom));
|
|
50925
50979
|
}
|
|
50926
50980
|
}
|
|
50927
|
-
const Tb = 0,
|
|
50928
|
-
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) {
|
|
50929
50983
|
return s.index ? s.index.count : s.attributes.position.count;
|
|
50930
50984
|
}
|
|
50931
50985
|
function Pr(s) {
|
|
50932
|
-
return
|
|
50986
|
+
return z3(s) / 3;
|
|
50933
50987
|
}
|
|
50934
|
-
function
|
|
50988
|
+
function k3(s, e = ArrayBuffer) {
|
|
50935
50989
|
return s > 65535 ? new Uint32Array(new e(4 * s)) : new Uint16Array(new e(2 * s));
|
|
50936
50990
|
}
|
|
50937
|
-
function
|
|
50991
|
+
function V3(s, e) {
|
|
50938
50992
|
if (!s.index) {
|
|
50939
|
-
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);
|
|
50940
50994
|
s.setIndex(new ot(n, 1));
|
|
50941
50995
|
for (let r = 0; r < t; r++)
|
|
50942
50996
|
n[r] = r;
|
|
@@ -50967,7 +51021,7 @@ function Pb(s, e) {
|
|
|
50967
51021
|
}
|
|
50968
51022
|
return t;
|
|
50969
51023
|
}
|
|
50970
|
-
function
|
|
51024
|
+
function X3(s, e) {
|
|
50971
51025
|
const t = Pr(s), i = Pb(s, e).sort((a, o) => a.offset - o.offset), n = i[i.length - 1];
|
|
50972
51026
|
n.count = Math.min(t - n.offset, n.count);
|
|
50973
51027
|
let r = 0;
|
|
@@ -50985,7 +51039,7 @@ function $u(s, e, t, i, n) {
|
|
|
50985
51039
|
}
|
|
50986
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;
|
|
50987
51041
|
}
|
|
50988
|
-
function
|
|
51042
|
+
function H3(s, e = null, t = null, i = null) {
|
|
50989
51043
|
const n = s.attributes.position, r = s.index ? s.index.array : null, a = Pr(s), o = n.normalized;
|
|
50990
51044
|
let l;
|
|
50991
51045
|
e === null ? l = new Float32Array(a * 6) : l = e, t = t || 0, i = i || a;
|
|
@@ -51005,7 +51059,7 @@ function V3(s, e = null, t = null, i = null) {
|
|
|
51005
51059
|
let E = y;
|
|
51006
51060
|
_ > E && (E = _), w > E && (E = w);
|
|
51007
51061
|
const S = (E - T) / 2, M = x * 2;
|
|
51008
|
-
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;
|
|
51009
51063
|
}
|
|
51010
51064
|
}
|
|
51011
51065
|
return l;
|
|
@@ -51041,20 +51095,20 @@ function ll(s) {
|
|
|
51041
51095
|
const e = s[3] - s[0], t = s[4] - s[1], i = s[5] - s[2];
|
|
51042
51096
|
return 2 * (e * t + t * i + i * e);
|
|
51043
51097
|
}
|
|
51044
|
-
const Ds = 32,
|
|
51098
|
+
const Ds = 32, Y3 = (s, e) => s.candidate - e.candidate, sr = new Array(Ds).fill().map(() => ({
|
|
51045
51099
|
count: 0,
|
|
51046
51100
|
bounds: new Float32Array(6),
|
|
51047
51101
|
rightCacheBounds: new Float32Array(6),
|
|
51048
51102
|
leftCacheBounds: new Float32Array(6),
|
|
51049
51103
|
candidate: 0
|
|
51050
51104
|
})), wh = new Float32Array(6);
|
|
51051
|
-
function
|
|
51105
|
+
function G3(s, e, t, i, n, r) {
|
|
51052
51106
|
let a = -1, o = 0;
|
|
51053
51107
|
if (r === Tb)
|
|
51054
51108
|
a = vv(e), a !== -1 && (o = (e[a] + e[a + 3]) / 2);
|
|
51055
|
-
else if (r ===
|
|
51056
|
-
a = vv(s), a !== -1 && (o =
|
|
51057
|
-
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) {
|
|
51058
51112
|
const l = ll(s);
|
|
51059
51113
|
let c = qu * n;
|
|
51060
51114
|
const h = i * 6, d = (i + n) * 6;
|
|
@@ -51076,7 +51130,7 @@ function H3(s, e, t, i, n, r) {
|
|
|
51076
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;
|
|
51077
51131
|
_h(y, t, w);
|
|
51078
51132
|
}
|
|
51079
|
-
m.sort(
|
|
51133
|
+
m.sort(Y3);
|
|
51080
51134
|
let x = n;
|
|
51081
51135
|
for (let y = 0; y < x; y++) {
|
|
51082
51136
|
const _ = m[y];
|
|
@@ -51136,7 +51190,7 @@ function H3(s, e, t, i, n, r) {
|
|
|
51136
51190
|
console.warn(`MeshBVH: Invalid build strategy value ${r} used.`);
|
|
51137
51191
|
return { axis: a, pos: o };
|
|
51138
51192
|
}
|
|
51139
|
-
function
|
|
51193
|
+
function W3(s, e, t, i) {
|
|
51140
51194
|
let n = 0;
|
|
51141
51195
|
for (let r = e, a = e + t; r < a; r++)
|
|
51142
51196
|
n += s[r * 6 + i * 2];
|
|
@@ -51147,7 +51201,7 @@ class Ku {
|
|
|
51147
51201
|
this.boundingData = new Float32Array(6);
|
|
51148
51202
|
}
|
|
51149
51203
|
}
|
|
51150
|
-
function
|
|
51204
|
+
function Q3(s, e, t, i, n, r) {
|
|
51151
51205
|
let a = i, o = i + n - 1;
|
|
51152
51206
|
const l = r.pos, c = r.axis * 2;
|
|
51153
51207
|
for (; ; ) {
|
|
@@ -51169,7 +51223,7 @@ function G3(s, e, t, i, n, r) {
|
|
|
51169
51223
|
return a;
|
|
51170
51224
|
}
|
|
51171
51225
|
}
|
|
51172
|
-
function
|
|
51226
|
+
function j3(s, e, t, i, n, r) {
|
|
51173
51227
|
let a = i, o = i + n - 1;
|
|
51174
51228
|
const l = r.pos, c = r.axis * 2;
|
|
51175
51229
|
for (; ; ) {
|
|
@@ -51208,11 +51262,11 @@ function Cb(s, e) {
|
|
|
51208
51262
|
return e[s + 7];
|
|
51209
51263
|
}
|
|
51210
51264
|
let Ib, Sl, Wh, Rb;
|
|
51211
|
-
const
|
|
51265
|
+
const q3 = Math.pow(2, 32);
|
|
51212
51266
|
function up(s) {
|
|
51213
51267
|
return "count" in s ? 1 : 1 + up(s.left) + up(s.right);
|
|
51214
51268
|
}
|
|
51215
|
-
function
|
|
51269
|
+
function Z3(s, e, t) {
|
|
51216
51270
|
return Ib = new Float32Array(t), Sl = new Uint32Array(t), Wh = new Uint16Array(t), Rb = new Uint8Array(t), fp(s, e);
|
|
51217
51271
|
}
|
|
51218
51272
|
function fp(s, e) {
|
|
@@ -51235,18 +51289,18 @@ function fp(s, e) {
|
|
|
51235
51289
|
else {
|
|
51236
51290
|
const a = e.left, o = e.right, l = e.splitAxis;
|
|
51237
51291
|
let c;
|
|
51238
|
-
if (c = fp(s + Dl, a), c / 4 >
|
|
51292
|
+
if (c = fp(s + Dl, a), c / 4 > q3)
|
|
51239
51293
|
throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");
|
|
51240
51294
|
return Sl[t + 6] = c / 4, c = fp(c, o), Sl[t + 7] = l, c;
|
|
51241
51295
|
}
|
|
51242
51296
|
}
|
|
51243
|
-
function
|
|
51297
|
+
function $3(s, e) {
|
|
51244
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);
|
|
51245
51299
|
for (let o = 0, l = a.length; o < l; o++)
|
|
51246
51300
|
a[o] = o;
|
|
51247
51301
|
return a;
|
|
51248
51302
|
}
|
|
51249
|
-
function
|
|
51303
|
+
function K3(s, e, t, i, n) {
|
|
51250
51304
|
const {
|
|
51251
51305
|
maxDepth: r,
|
|
51252
51306
|
verbose: a,
|
|
@@ -51254,7 +51308,7 @@ function Z3(s, e, t, i, n) {
|
|
|
51254
51308
|
strategy: l,
|
|
51255
51309
|
onProgress: c,
|
|
51256
51310
|
indirect: h
|
|
51257
|
-
} = 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);
|
|
51258
51312
|
let m = !1;
|
|
51259
51313
|
const b = new Ku();
|
|
51260
51314
|
return $u(e, t, i, b.boundingData, g), y(b, t, i, g), b;
|
|
@@ -51264,7 +51318,7 @@ function Z3(s, e, t, i, n) {
|
|
|
51264
51318
|
function y(_, w, T, E = null, S = 0) {
|
|
51265
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)
|
|
51266
51320
|
return x(w + T), _.offset = w, _.count = T, _;
|
|
51267
|
-
const M =
|
|
51321
|
+
const M = G3(_.boundingData, E, e, w, T, l);
|
|
51268
51322
|
if (M.axis === -1)
|
|
51269
51323
|
return x(w + T), _.offset = w, _.count = T, _;
|
|
51270
51324
|
const C = p(d, f, e, w, T, M);
|
|
@@ -51280,15 +51334,15 @@ function Z3(s, e, t, i, n) {
|
|
|
51280
51334
|
return _;
|
|
51281
51335
|
}
|
|
51282
51336
|
}
|
|
51283
|
-
function
|
|
51337
|
+
function J3(s, e) {
|
|
51284
51338
|
const t = s.geometry;
|
|
51285
|
-
e.indirect && (s._indirectBuffer =
|
|
51339
|
+
e.indirect && (s._indirectBuffer = $3(t, e.useSharedArrayBuffer), X3(t, e.range) && !e.verbose && console.warn(
|
|
51286
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.'
|
|
51287
|
-
)), s._indirectBuffer ||
|
|
51288
|
-
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);
|
|
51289
51343
|
s._roots = a.map((o) => {
|
|
51290
|
-
const l =
|
|
51291
|
-
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;
|
|
51292
51346
|
});
|
|
51293
51347
|
}
|
|
51294
51348
|
class Gs {
|
|
@@ -51330,7 +51384,7 @@ Gs.prototype.setFromBox = function() {
|
|
|
51330
51384
|
this.min = a, this.max = o;
|
|
51331
51385
|
};
|
|
51332
51386
|
}();
|
|
51333
|
-
const
|
|
51387
|
+
const eI = function() {
|
|
51334
51388
|
const s = new P(), e = new P(), t = new P();
|
|
51335
51389
|
return function(n, r, a) {
|
|
51336
51390
|
const o = n.start, l = s, c = r.start, h = e;
|
|
@@ -51342,7 +51396,7 @@ const K3 = function() {
|
|
|
51342
51396
|
}(), vm = function() {
|
|
51343
51397
|
const s = new K(), e = new P(), t = new P();
|
|
51344
51398
|
return function(n, r, a, o) {
|
|
51345
|
-
|
|
51399
|
+
eI(n, r, s);
|
|
51346
51400
|
let l = s.x, c = s.y;
|
|
51347
51401
|
if (l >= 0 && l <= 1 && c >= 0 && c <= 1) {
|
|
51348
51402
|
n.at(l, a), r.at(c, o);
|
|
@@ -51368,7 +51422,7 @@ const K3 = function() {
|
|
|
51368
51422
|
}
|
|
51369
51423
|
}
|
|
51370
51424
|
};
|
|
51371
|
-
}(),
|
|
51425
|
+
}(), tI = function() {
|
|
51372
51426
|
const s = new P(), e = new P(), t = new ji(), i = new _s();
|
|
51373
51427
|
return function(r, a) {
|
|
51374
51428
|
const { radius: o, center: l } = r, { a: c, b: h, c: d } = a;
|
|
@@ -51382,7 +51436,7 @@ const K3 = function() {
|
|
|
51382
51436
|
}
|
|
51383
51437
|
return !1;
|
|
51384
51438
|
};
|
|
51385
|
-
}(),
|
|
51439
|
+
}(), iI = ["x", "y", "z"], Bs = 1e-15, yv = Bs * Bs;
|
|
51386
51440
|
function Tn(s) {
|
|
51387
51441
|
return Math.abs(s) < Bs;
|
|
51388
51442
|
}
|
|
@@ -51391,7 +51445,7 @@ class es extends vn {
|
|
|
51391
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;
|
|
51392
51446
|
}
|
|
51393
51447
|
intersectsSphere(e) {
|
|
51394
|
-
return
|
|
51448
|
+
return tI(e, this);
|
|
51395
51449
|
}
|
|
51396
51450
|
update() {
|
|
51397
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];
|
|
@@ -51513,7 +51567,7 @@ es.prototype.intersectsTriangle = function() {
|
|
|
51513
51567
|
let Ne = 0, ce = Math.abs(pe.x);
|
|
51514
51568
|
const we = Math.abs(pe.y);
|
|
51515
51569
|
we > ce && (ce = we, Ne = 1), Math.abs(pe.z) > ce && (Ne = 2);
|
|
51516
|
-
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];
|
|
51517
51571
|
if (p(this, ne, ee, Te, U, z, M, C, L, h, o))
|
|
51518
51572
|
return u(this, y, _, w);
|
|
51519
51573
|
if (p(y, Xe, Ge, ht, Z, ie, X, j, re, d, l))
|
|
@@ -51564,7 +51618,7 @@ es.prototype.distanceToTriangle = function() {
|
|
|
51564
51618
|
}();
|
|
51565
51619
|
class Ji {
|
|
51566
51620
|
constructor(e, t, i) {
|
|
51567
|
-
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);
|
|
51568
51622
|
}
|
|
51569
51623
|
set(e, t, i) {
|
|
51570
51624
|
this.min.copy(e), this.max.copy(t), this.matrix.copy(i), this.needsUpdate = !0;
|
|
@@ -51701,13 +51755,13 @@ class xm {
|
|
|
51701
51755
|
this._primitives.push(e);
|
|
51702
51756
|
}
|
|
51703
51757
|
}
|
|
51704
|
-
class
|
|
51758
|
+
class nI extends xm {
|
|
51705
51759
|
constructor() {
|
|
51706
51760
|
super(() => new es());
|
|
51707
51761
|
}
|
|
51708
51762
|
}
|
|
51709
|
-
const On = /* @__PURE__ */ new
|
|
51710
|
-
class
|
|
51763
|
+
const On = /* @__PURE__ */ new nI();
|
|
51764
|
+
class sI {
|
|
51711
51765
|
constructor() {
|
|
51712
51766
|
this.float32Array = null, this.uint16Array = null, this.uint32Array = null;
|
|
51713
51767
|
const e = [];
|
|
@@ -51719,10 +51773,10 @@ class iI {
|
|
|
51719
51773
|
};
|
|
51720
51774
|
}
|
|
51721
51775
|
}
|
|
51722
|
-
const Jt = new
|
|
51776
|
+
const Jt = new sI();
|
|
51723
51777
|
let gr, oo;
|
|
51724
51778
|
const ja = [], Sh = /* @__PURE__ */ new xm(() => new ft());
|
|
51725
|
-
function
|
|
51779
|
+
function rI(s, e, t, i, n, r) {
|
|
51726
51780
|
gr = Sh.getPrimitive(), oo = Sh.getPrimitive(), ja.push(gr, oo), Jt.setBuffer(s._roots[e]);
|
|
51727
51781
|
const a = pp(0, s.geometry, t, i, n, r);
|
|
51728
51782
|
Jt.clearBuffer(), Sh.releasePrimitive(gr), Sh.releasePrimitive(oo), ja.pop(), ja.pop();
|
|
@@ -51794,7 +51848,7 @@ function pp(s, e, t, i, n = null, r = 0, a = 0) {
|
|
|
51794
51848
|
}
|
|
51795
51849
|
}
|
|
51796
51850
|
const cl = /* @__PURE__ */ new P(), Ju = /* @__PURE__ */ new P();
|
|
51797
|
-
function
|
|
51851
|
+
function aI(s, e, t = {}, i = 0, n = 1 / 0) {
|
|
51798
51852
|
const r = i * i, a = n * n;
|
|
51799
51853
|
let o = 1 / 0, l = null;
|
|
51800
51854
|
if (s.shapecast(
|
|
@@ -51812,8 +51866,8 @@ function sI(s, e, t = {}, i = 0, n = 1 / 0) {
|
|
|
51812
51866
|
const c = Math.sqrt(o);
|
|
51813
51867
|
return t.point ? t.point.copy(Ju) : t.point = Ju.clone(), t.distance = c, t.faceIndex = l, t;
|
|
51814
51868
|
}
|
|
51815
|
-
const Mh = parseInt(Do) >= 169,
|
|
51816
|
-
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) {
|
|
51817
51871
|
let l;
|
|
51818
51872
|
if (r === $i ? l = s.intersectTriangle(i, t, e, !0, n) : l = s.intersectTriangle(e, t, i, r !== pi, n), l === null)
|
|
51819
51873
|
return null;
|
|
@@ -51823,9 +51877,9 @@ function aI(s, e, t, i, n, r, a, o) {
|
|
|
51823
51877
|
point: n.clone()
|
|
51824
51878
|
};
|
|
51825
51879
|
}
|
|
51826
|
-
function
|
|
51880
|
+
function cI(s, e, t, i, n, r, a, o, l, c, h) {
|
|
51827
51881
|
Xr.fromBufferAttribute(e, r), Hr.fromBufferAttribute(e, a), Yr.fromBufferAttribute(e, o);
|
|
51828
|
-
const d =
|
|
51882
|
+
const d = lI(s, Xr, Hr, Yr, hl, l, c, h);
|
|
51829
51883
|
if (d) {
|
|
51830
51884
|
if (i) {
|
|
51831
51885
|
Ah.fromBufferAttribute(i, r), Th.fromBufferAttribute(i, a), Eh.fromBufferAttribute(i, o), d.uv = new K();
|
|
@@ -51835,7 +51889,7 @@ function oI(s, e, t, i, n, r, a, o, l, c, h) {
|
|
|
51835
51889
|
if (n) {
|
|
51836
51890
|
Ah.fromBufferAttribute(n, r), Th.fromBufferAttribute(n, a), Eh.fromBufferAttribute(n, o), d.uv1 = new K();
|
|
51837
51891
|
const f = vn.getInterpolation(hl, Xr, Hr, Yr, Ah, Th, Eh, d.uv1);
|
|
51838
|
-
Mh || (d.uv1 = f),
|
|
51892
|
+
Mh || (d.uv1 = f), oI && (d.uv2 = d.uv1);
|
|
51839
51893
|
}
|
|
51840
51894
|
if (t) {
|
|
51841
51895
|
_v.fromBufferAttribute(t, r), wv.fromBufferAttribute(t, a), Sv.fromBufferAttribute(t, o), d.normal = new P();
|
|
@@ -51861,7 +51915,7 @@ function Ed(s, e, t, i, n, r, a) {
|
|
|
51861
51915
|
let l = o + 0, c = o + 1, h = o + 2;
|
|
51862
51916
|
const d = s.index;
|
|
51863
51917
|
s.index && (l = d.getX(l), c = d.getX(c), h = d.getX(h));
|
|
51864
|
-
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);
|
|
51865
51919
|
return g ? (g.faceIndex = i, n && n.push(g), g) : null;
|
|
51866
51920
|
}
|
|
51867
51921
|
function xi(s, e, t, i) {
|
|
@@ -51869,12 +51923,12 @@ function xi(s, e, t, i) {
|
|
|
51869
51923
|
let o = e, l = e + 1, c = e + 2;
|
|
51870
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);
|
|
51871
51925
|
}
|
|
51872
|
-
function
|
|
51926
|
+
function hI(s, e, t, i, n, r, a, o) {
|
|
51873
51927
|
const { geometry: l, _indirectBuffer: c } = s;
|
|
51874
51928
|
for (let h = i, d = i + n; h < d; h++)
|
|
51875
51929
|
Ed(l, e, t, h, r, a, o);
|
|
51876
51930
|
}
|
|
51877
|
-
function
|
|
51931
|
+
function dI(s, e, t, i, n, r, a) {
|
|
51878
51932
|
const { geometry: o, _indirectBuffer: l } = s;
|
|
51879
51933
|
let c = 1 / 0, h = null;
|
|
51880
51934
|
for (let d = i, u = i + n; d < u; d++) {
|
|
@@ -51883,7 +51937,7 @@ function cI(s, e, t, i, n, r, a) {
|
|
|
51883
51937
|
}
|
|
51884
51938
|
return h;
|
|
51885
51939
|
}
|
|
51886
|
-
function
|
|
51940
|
+
function uI(s, e, t, i, n, r, a) {
|
|
51887
51941
|
const { geometry: o } = t, { index: l } = o, c = o.attributes.position;
|
|
51888
51942
|
for (let h = s, d = e + s; h < d; h++) {
|
|
51889
51943
|
let u;
|
|
@@ -51892,7 +51946,7 @@ function hI(s, e, t, i, n, r, a) {
|
|
|
51892
51946
|
}
|
|
51893
51947
|
return !1;
|
|
51894
51948
|
}
|
|
51895
|
-
function
|
|
51949
|
+
function fI(s, e = null) {
|
|
51896
51950
|
e && Array.isArray(e) && (e = new Set(e));
|
|
51897
51951
|
const t = s.geometry, i = t.index ? t.index.array : null, n = t.attributes.position;
|
|
51898
51952
|
let r, a, o, l, c = 0;
|
|
@@ -51935,14 +51989,14 @@ function Tr(s, e, t, i, n) {
|
|
|
51935
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];
|
|
51936
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);
|
|
51937
51991
|
}
|
|
51938
|
-
function
|
|
51992
|
+
function pI(s, e, t, i, n, r, a, o) {
|
|
51939
51993
|
const { geometry: l, _indirectBuffer: c } = s;
|
|
51940
51994
|
for (let h = i, d = i + n; h < d; h++) {
|
|
51941
51995
|
let u = c ? c[h] : h;
|
|
51942
51996
|
Ed(l, e, t, u, r, a, o);
|
|
51943
51997
|
}
|
|
51944
51998
|
}
|
|
51945
|
-
function
|
|
51999
|
+
function mI(s, e, t, i, n, r, a) {
|
|
51946
52000
|
const { geometry: o, _indirectBuffer: l } = s;
|
|
51947
52001
|
let c = 1 / 0, h = null;
|
|
51948
52002
|
for (let d = i, u = i + n; d < u; d++) {
|
|
@@ -51951,7 +52005,7 @@ function fI(s, e, t, i, n, r, a) {
|
|
|
51951
52005
|
}
|
|
51952
52006
|
return h;
|
|
51953
52007
|
}
|
|
51954
|
-
function
|
|
52008
|
+
function gI(s, e, t, i, n, r, a) {
|
|
51955
52009
|
const { geometry: o } = t, { index: l } = o, c = o.attributes.position;
|
|
51956
52010
|
for (let h = s, d = e + s; h < d; h++) {
|
|
51957
52011
|
let u;
|
|
@@ -51960,14 +52014,14 @@ function pI(s, e, t, i, n, r, a) {
|
|
|
51960
52014
|
}
|
|
51961
52015
|
return !1;
|
|
51962
52016
|
}
|
|
51963
|
-
function
|
|
52017
|
+
function vI(s, e, t, i, n, r, a) {
|
|
51964
52018
|
Jt.setBuffer(s._roots[e]), mp(0, s, t, i, n, r, a), Jt.clearBuffer();
|
|
51965
52019
|
}
|
|
51966
52020
|
function mp(s, e, t, i, n, r, a) {
|
|
51967
52021
|
const { float32Array: o, uint16Array: l, uint32Array: c } = Jt, h = s * 2;
|
|
51968
52022
|
if (ln(h, l)) {
|
|
51969
52023
|
const u = _n(s, c), f = Rn(h, l);
|
|
51970
|
-
|
|
52024
|
+
hI(e, t, i, u, f, n, r, a);
|
|
51971
52025
|
} else {
|
|
51972
52026
|
const u = Dn(s);
|
|
51973
52027
|
Tr(u, o, i, r, a) && mp(u, e, t, i, n, r, a);
|
|
@@ -51975,8 +52029,8 @@ function mp(s, e, t, i, n, r, a) {
|
|
|
51975
52029
|
Tr(f, o, i, r, a) && mp(f, e, t, i, n, r, a);
|
|
51976
52030
|
}
|
|
51977
52031
|
}
|
|
51978
|
-
const
|
|
51979
|
-
function
|
|
52032
|
+
const xI = ["x", "y", "z"];
|
|
52033
|
+
function bI(s, e, t, i, n, r) {
|
|
51980
52034
|
Jt.setBuffer(s._roots[e]);
|
|
51981
52035
|
const a = gp(0, s, t, i, n, r);
|
|
51982
52036
|
return Jt.clearBuffer(), a;
|
|
@@ -51986,9 +52040,9 @@ function gp(s, e, t, i, n, r) {
|
|
|
51986
52040
|
let c = s * 2;
|
|
51987
52041
|
if (ln(c, o)) {
|
|
51988
52042
|
const d = _n(s, l), u = Rn(c, o);
|
|
51989
|
-
return
|
|
52043
|
+
return dI(e, t, i, d, u, n, r);
|
|
51990
52044
|
} else {
|
|
51991
|
-
const d = Cb(s, l), u =
|
|
52045
|
+
const d = Cb(s, l), u = xI[d], p = i.direction[u] >= 0;
|
|
51992
52046
|
let v, g;
|
|
51993
52047
|
p ? (v = Dn(s), g = Ln(s, l)) : (v = Ln(s, l), g = Dn(s));
|
|
51994
52048
|
const b = Tr(v, a, i, n, r) ? gp(v, e, t, i, n, r) : null;
|
|
@@ -52004,8 +52058,8 @@ function gp(s, e, t, i, n, r) {
|
|
|
52004
52058
|
return b && y ? b.distance <= y.distance ? b : y : b || y || null;
|
|
52005
52059
|
}
|
|
52006
52060
|
}
|
|
52007
|
-
const Ph = /* @__PURE__ */ new ft(), qa = /* @__PURE__ */ new es(), Za = /* @__PURE__ */ new es(), dl = /* @__PURE__ */ new
|
|
52008
|
-
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) {
|
|
52009
52063
|
Jt.setBuffer(s._roots[e]);
|
|
52010
52064
|
const n = vp(0, s, t, i);
|
|
52011
52065
|
return Jt.clearBuffer(), n;
|
|
@@ -52040,12 +52094,12 @@ function vp(s, e, t, i, n = null) {
|
|
|
52040
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)));
|
|
52041
52095
|
}
|
|
52042
52096
|
}
|
|
52043
|
-
const Ih = /* @__PURE__ */ new
|
|
52044
|
-
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) {
|
|
52045
52099
|
e.boundingBox || e.computeBoundingBox(), ef.set(e.boundingBox.min, e.boundingBox.max, t), ef.needsUpdate = !0;
|
|
52046
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();
|
|
52047
|
-
let p =
|
|
52048
|
-
n && (g =
|
|
52101
|
+
let p = _I, v = wI, g = null, m = null;
|
|
52102
|
+
n && (g = SI, m = MI);
|
|
52049
52103
|
let b = 1 / 0, x = null, y = null;
|
|
52050
52104
|
return Ih.copy(t).invert(), ul.matrix.copy(Ih), s.shapecast(
|
|
52051
52105
|
{
|
|
@@ -52084,7 +52138,7 @@ function SI(s, e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
|
52084
52138
|
}
|
|
52085
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);
|
|
52086
52140
|
}
|
|
52087
|
-
function
|
|
52141
|
+
function TI(s, e = null) {
|
|
52088
52142
|
e && Array.isArray(e) && (e = new Set(e));
|
|
52089
52143
|
const t = s.geometry, i = t.index ? t.index.array : null, n = t.attributes.position;
|
|
52090
52144
|
let r, a, o, l, c = 0;
|
|
@@ -52125,14 +52179,14 @@ function MI(s, e = null) {
|
|
|
52125
52179
|
}
|
|
52126
52180
|
}
|
|
52127
52181
|
}
|
|
52128
|
-
function
|
|
52182
|
+
function EI(s, e, t, i, n, r, a) {
|
|
52129
52183
|
Jt.setBuffer(s._roots[e]), xp(0, s, t, i, n, r, a), Jt.clearBuffer();
|
|
52130
52184
|
}
|
|
52131
52185
|
function xp(s, e, t, i, n, r, a) {
|
|
52132
52186
|
const { float32Array: o, uint16Array: l, uint32Array: c } = Jt, h = s * 2;
|
|
52133
52187
|
if (ln(h, l)) {
|
|
52134
52188
|
const u = _n(s, c), f = Rn(h, l);
|
|
52135
|
-
|
|
52189
|
+
pI(e, t, i, u, f, n, r, a);
|
|
52136
52190
|
} else {
|
|
52137
52191
|
const u = Dn(s);
|
|
52138
52192
|
Tr(u, o, i, r, a) && xp(u, e, t, i, n, r, a);
|
|
@@ -52140,8 +52194,8 @@ function xp(s, e, t, i, n, r, a) {
|
|
|
52140
52194
|
Tr(f, o, i, r, a) && xp(f, e, t, i, n, r, a);
|
|
52141
52195
|
}
|
|
52142
52196
|
}
|
|
52143
|
-
const
|
|
52144
|
-
function
|
|
52197
|
+
const PI = ["x", "y", "z"];
|
|
52198
|
+
function CI(s, e, t, i, n, r) {
|
|
52145
52199
|
Jt.setBuffer(s._roots[e]);
|
|
52146
52200
|
const a = bp(0, s, t, i, n, r);
|
|
52147
52201
|
return Jt.clearBuffer(), a;
|
|
@@ -52151,9 +52205,9 @@ function bp(s, e, t, i, n, r) {
|
|
|
52151
52205
|
let c = s * 2;
|
|
52152
52206
|
if (ln(c, o)) {
|
|
52153
52207
|
const d = _n(s, l), u = Rn(c, o);
|
|
52154
|
-
return
|
|
52208
|
+
return mI(e, t, i, d, u, n, r);
|
|
52155
52209
|
} else {
|
|
52156
|
-
const d = Cb(s, l), u =
|
|
52210
|
+
const d = Cb(s, l), u = PI[d], p = i.direction[u] >= 0;
|
|
52157
52211
|
let v, g;
|
|
52158
52212
|
p ? (v = Dn(s), g = Ln(s, l)) : (v = Ln(s, l), g = Dn(s));
|
|
52159
52213
|
const b = Tr(v, a, i, n, r) ? bp(v, e, t, i, n, r) : null;
|
|
@@ -52169,8 +52223,8 @@ function bp(s, e, t, i, n, r) {
|
|
|
52169
52223
|
return b && y ? b.distance <= y.distance ? b : y : b || y || null;
|
|
52170
52224
|
}
|
|
52171
52225
|
}
|
|
52172
|
-
const Rh = /* @__PURE__ */ new ft(), $a = /* @__PURE__ */ new es(), Ka = /* @__PURE__ */ new es(), fl = /* @__PURE__ */ new
|
|
52173
|
-
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) {
|
|
52174
52228
|
Jt.setBuffer(s._roots[e]);
|
|
52175
52229
|
const n = yp(0, s, t, i);
|
|
52176
52230
|
return Jt.clearBuffer(), n;
|
|
@@ -52206,12 +52260,12 @@ function yp(s, e, t, i, n = null) {
|
|
|
52206
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)));
|
|
52207
52261
|
}
|
|
52208
52262
|
}
|
|
52209
|
-
const Lh = /* @__PURE__ */ new
|
|
52210
|
-
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) {
|
|
52211
52265
|
e.boundingBox || e.computeBoundingBox(), tf.set(e.boundingBox.min, e.boundingBox.max, t), tf.needsUpdate = !0;
|
|
52212
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();
|
|
52213
|
-
let p =
|
|
52214
|
-
n && (g =
|
|
52267
|
+
let p = RI, v = DI, g = null, m = null;
|
|
52268
|
+
n && (g = LI, m = OI);
|
|
52215
52269
|
let b = 1 / 0, x = null, y = null;
|
|
52216
52270
|
return Lh.copy(t).invert(), pl.matrix.copy(Lh), s.shapecast(
|
|
52217
52271
|
{
|
|
@@ -52254,18 +52308,18 @@ function LI(s, e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
|
52254
52308
|
}
|
|
52255
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);
|
|
52256
52310
|
}
|
|
52257
|
-
function
|
|
52311
|
+
function BI() {
|
|
52258
52312
|
return typeof SharedArrayBuffer < "u";
|
|
52259
52313
|
}
|
|
52260
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();
|
|
52261
52315
|
let rf = !1;
|
|
52262
|
-
function
|
|
52316
|
+
function UI(s, e, t, i) {
|
|
52263
52317
|
if (rf)
|
|
52264
52318
|
throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");
|
|
52265
52319
|
rf = !0;
|
|
52266
52320
|
const n = s._roots, r = e._roots;
|
|
52267
52321
|
let a, o = 0, l = 0;
|
|
52268
|
-
const c = new
|
|
52322
|
+
const c = new Ce().copy(t).invert();
|
|
52269
52323
|
for (let h = 0, d = n.length; h < d; h++) {
|
|
52270
52324
|
Ll.setBuffer(n[h]), l = 0;
|
|
52271
52325
|
const u = or.getPrimitive();
|
|
@@ -52471,7 +52525,7 @@ function Gn(s, e, t, i, n, r = 0, a = 0, o = 0, l = 0, c = null, h = !1) {
|
|
|
52471
52525
|
}
|
|
52472
52526
|
return T;
|
|
52473
52527
|
}
|
|
52474
|
-
const Oh = /* @__PURE__ */ new Ji(), Tv = /* @__PURE__ */ new ft(),
|
|
52528
|
+
const Oh = /* @__PURE__ */ new Ji(), Tv = /* @__PURE__ */ new ft(), FI = {
|
|
52475
52529
|
strategy: Tb,
|
|
52476
52530
|
maxDepth: 40,
|
|
52477
52531
|
maxLeafTris: 10,
|
|
@@ -52527,16 +52581,16 @@ class bm {
|
|
|
52527
52581
|
} else
|
|
52528
52582
|
throw new Error("MeshBVH: Only BufferGeometries are supported.");
|
|
52529
52583
|
if (t = Object.assign({
|
|
52530
|
-
...
|
|
52584
|
+
...FI,
|
|
52531
52585
|
// undocumented options
|
|
52532
52586
|
// Whether to skip generating the tree. Used for deserialization.
|
|
52533
52587
|
[Zu]: !1
|
|
52534
|
-
}, t), t.useSharedArrayBuffer && !
|
|
52588
|
+
}, t), t.useSharedArrayBuffer && !BI())
|
|
52535
52589
|
throw new Error("MeshBVH: SharedArrayBuffer is not available.");
|
|
52536
|
-
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;
|
|
52537
52591
|
}
|
|
52538
52592
|
refit(e = null) {
|
|
52539
|
-
return (this.indirect ?
|
|
52593
|
+
return (this.indirect ? TI : fI)(this, e);
|
|
52540
52594
|
}
|
|
52541
52595
|
traverse(e, t = 0) {
|
|
52542
52596
|
const i = this._roots[t], n = new Uint32Array(i), r = new Uint16Array(i);
|
|
@@ -52554,7 +52608,7 @@ class bm {
|
|
|
52554
52608
|
}
|
|
52555
52609
|
/* Core Cast Functions */
|
|
52556
52610
|
raycast(e, t = wn, i = 0, n = 1 / 0) {
|
|
52557
|
-
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;
|
|
52558
52612
|
for (let f = 0, p = r.length; f < p; f++) {
|
|
52559
52613
|
const v = c ? t[h[f].materialIndex].side : d, g = o.length;
|
|
52560
52614
|
if (u(this, f, v, e, o, i, n), c) {
|
|
@@ -52568,7 +52622,7 @@ class bm {
|
|
|
52568
52622
|
raycastFirst(e, t = wn, i = 0, n = 1 / 0) {
|
|
52569
52623
|
const r = this._roots, a = this.geometry, o = t.isMaterial, l = Array.isArray(t);
|
|
52570
52624
|
let c = null;
|
|
52571
|
-
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;
|
|
52572
52626
|
for (let f = 0, p = r.length; f < p; f++) {
|
|
52573
52627
|
const v = l ? t[h[f].materialIndex].side : d, g = u(this, f, v, e, i, n);
|
|
52574
52628
|
g != null && (c == null || g.distance < c.distance) && (c = g, l && (g.face.materialIndex = h[f].materialIndex));
|
|
@@ -52577,13 +52631,13 @@ class bm {
|
|
|
52577
52631
|
}
|
|
52578
52632
|
intersectsGeometry(e, t) {
|
|
52579
52633
|
let i = !1;
|
|
52580
|
-
const n = this._roots, r = this.indirect ?
|
|
52634
|
+
const n = this._roots, r = this.indirect ? II : yI;
|
|
52581
52635
|
for (let a = 0, o = n.length; a < o && (i = r(this, a, e, t), !i); a++)
|
|
52582
52636
|
;
|
|
52583
52637
|
return i;
|
|
52584
52638
|
}
|
|
52585
52639
|
shapecast(e) {
|
|
52586
|
-
const t = On.getPrimitive(), i = this.indirect ?
|
|
52640
|
+
const t = On.getPrimitive(), i = this.indirect ? gI : uI;
|
|
52587
52641
|
let {
|
|
52588
52642
|
boundsTraverseOrder: n,
|
|
52589
52643
|
intersectsBounds: r,
|
|
@@ -52599,7 +52653,7 @@ class bm {
|
|
|
52599
52653
|
const h = this._roots;
|
|
52600
52654
|
for (let d = 0, u = h.length; d < u; d++) {
|
|
52601
52655
|
const f = h[d];
|
|
52602
|
-
if (l =
|
|
52656
|
+
if (l = rI(this, d, r, a, n, c), l)
|
|
52603
52657
|
break;
|
|
52604
52658
|
c += f.byteLength;
|
|
52605
52659
|
}
|
|
@@ -52639,7 +52693,7 @@ class bm {
|
|
|
52639
52693
|
} else
|
|
52640
52694
|
n = p;
|
|
52641
52695
|
}
|
|
52642
|
-
return
|
|
52696
|
+
return UI(this, e, t, n);
|
|
52643
52697
|
}
|
|
52644
52698
|
/* Derived Cast Functions */
|
|
52645
52699
|
intersectsBox(e, t) {
|
|
@@ -52659,7 +52713,7 @@ class bm {
|
|
|
52659
52713
|
);
|
|
52660
52714
|
}
|
|
52661
52715
|
closestPointToGeometry(e, t, i = {}, n = {}, r = 0, a = 1 / 0) {
|
|
52662
|
-
return (this.indirect ?
|
|
52716
|
+
return (this.indirect ? NI : AI)(
|
|
52663
52717
|
this,
|
|
52664
52718
|
e,
|
|
52665
52719
|
t,
|
|
@@ -52670,7 +52724,7 @@ class bm {
|
|
|
52670
52724
|
);
|
|
52671
52725
|
}
|
|
52672
52726
|
closestPointToPoint(e, t = {}, i = 0, n = 1 / 0) {
|
|
52673
|
-
return
|
|
52727
|
+
return aI(
|
|
52674
52728
|
this,
|
|
52675
52729
|
e,
|
|
52676
52730
|
t,
|
|
@@ -52687,11 +52741,11 @@ class bm {
|
|
|
52687
52741
|
function Ev(s, e, t) {
|
|
52688
52742
|
return s === null ? null : (s.point.applyMatrix4(e.matrixWorld), s.distance = s.point.distanceTo(t.ray.origin), s.object = e, s);
|
|
52689
52743
|
}
|
|
52690
|
-
const Nh = /* @__PURE__ */ new Lo(), Pv = /* @__PURE__ */ new P(), Cv = /* @__PURE__ */ new
|
|
52691
|
-
function
|
|
52692
|
-
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);
|
|
52693
52747
|
}
|
|
52694
|
-
function
|
|
52748
|
+
function XI(s, e) {
|
|
52695
52749
|
if (this.boundsTrees) {
|
|
52696
52750
|
const t = this.boundsTrees, i = this._drawInfo || this._instanceInfo, n = this._drawRanges || this._geometryInfo, r = this.matrixWorld;
|
|
52697
52751
|
Ni.material = this.material, Ni.geometry = this.geometry;
|
|
@@ -52715,9 +52769,9 @@ function kI(s, e) {
|
|
|
52715
52769
|
}
|
|
52716
52770
|
Ni.geometry.boundsTree = a, Ni.geometry.drawRange = o, Ni.material = null, Ni.geometry = null;
|
|
52717
52771
|
} else
|
|
52718
|
-
|
|
52772
|
+
kI.call(this, s, e);
|
|
52719
52773
|
}
|
|
52720
|
-
function
|
|
52774
|
+
function HI(s, e) {
|
|
52721
52775
|
if (this.geometry.boundsTree) {
|
|
52722
52776
|
if (this.material === void 0)
|
|
52723
52777
|
return;
|
|
@@ -52734,40 +52788,40 @@ function VI(s, e) {
|
|
|
52734
52788
|
}
|
|
52735
52789
|
}
|
|
52736
52790
|
} else
|
|
52737
|
-
|
|
52791
|
+
zI.call(this, s, e);
|
|
52738
52792
|
}
|
|
52739
|
-
function
|
|
52793
|
+
function YI(s = {}) {
|
|
52740
52794
|
return this.boundsTree = new bm(this, s), this.boundsTree;
|
|
52741
52795
|
}
|
|
52742
|
-
function
|
|
52796
|
+
function GI() {
|
|
52743
52797
|
this.boundsTree = null;
|
|
52744
52798
|
}
|
|
52745
|
-
class
|
|
52799
|
+
class WI {
|
|
52746
52800
|
constructor() {
|
|
52747
|
-
dt.prototype.computeBoundsTree =
|
|
52801
|
+
dt.prototype.computeBoundsTree = YI, dt.prototype.disposeBoundsTree = GI, Q.prototype.raycast = VI;
|
|
52748
52802
|
}
|
|
52749
52803
|
applyThreeMeshBVH(e) {
|
|
52750
52804
|
e.boundsTree || e.computeBoundsTree();
|
|
52751
52805
|
}
|
|
52752
52806
|
}
|
|
52753
|
-
class
|
|
52807
|
+
class QI {
|
|
52754
52808
|
constructor(e) {
|
|
52755
52809
|
this.viralViewerApi = e, this.hoverMaterial = new ia({
|
|
52756
|
-
color: Et.hexToThreejsColor(
|
|
52810
|
+
color: Et.hexToThreejsColor(Ee.secondary),
|
|
52757
52811
|
opacity: 0.7,
|
|
52758
52812
|
transparent: !0,
|
|
52759
52813
|
depthTest: !1,
|
|
52760
52814
|
name: "Render Material",
|
|
52761
52815
|
flatShading: !0
|
|
52762
52816
|
}), this.selectedMaterial = new ia({
|
|
52763
|
-
color: Et.hexToThreejsColor(
|
|
52817
|
+
color: Et.hexToThreejsColor(Ee.secondary),
|
|
52764
52818
|
opacity: 0.7,
|
|
52765
52819
|
transparent: !0,
|
|
52766
52820
|
name: "Render Material",
|
|
52767
52821
|
depthTest: !1,
|
|
52768
52822
|
flatShading: !0
|
|
52769
52823
|
}), this.edgeMaterial = new bb({
|
|
52770
|
-
color: Et.hexToThreejsColor(
|
|
52824
|
+
color: Et.hexToThreejsColor(Ee.edge),
|
|
52771
52825
|
linewidth: 2,
|
|
52772
52826
|
resolution: new K(window.innerWidth, window.innerHeight),
|
|
52773
52827
|
transparent: !0,
|
|
@@ -52801,7 +52855,7 @@ class GI {
|
|
|
52801
52855
|
}
|
|
52802
52856
|
}
|
|
52803
52857
|
}
|
|
52804
|
-
class
|
|
52858
|
+
class jI {
|
|
52805
52859
|
constructor() {
|
|
52806
52860
|
this.events = {
|
|
52807
52861
|
[At.LOADED_SCENE]: [],
|
|
@@ -52841,7 +52895,7 @@ class WI {
|
|
|
52841
52895
|
i && i.forEach((n) => n(...t));
|
|
52842
52896
|
}
|
|
52843
52897
|
}
|
|
52844
|
-
class
|
|
52898
|
+
class qI {
|
|
52845
52899
|
constructor(e, t) {
|
|
52846
52900
|
this.viralViewerApi = e, this.options = t, this.viralViewerApi.on(
|
|
52847
52901
|
At.LOADED_SCENE,
|
|
@@ -52916,14 +52970,14 @@ const Db = {
|
|
|
52916
52970
|
importLink: "https://fonts.googleapis.com/css2?family=Quicksand:wght@300&display=swap",
|
|
52917
52971
|
fontFamily: "Quicksand, sans-serif"
|
|
52918
52972
|
}
|
|
52919
|
-
},
|
|
52973
|
+
}, ZI = (s) => {
|
|
52920
52974
|
const e = document.createElement("style");
|
|
52921
52975
|
e.innerHTML = `@import url(${Db[s]});`, document.head.appendChild(e);
|
|
52922
|
-
},
|
|
52976
|
+
}, $I = (s, e) => {
|
|
52923
52977
|
let t = Db[e];
|
|
52924
52978
|
s && t && (s.style.fontFamily = t.fontFamily);
|
|
52925
52979
|
};
|
|
52926
|
-
class
|
|
52980
|
+
class KI {
|
|
52927
52981
|
constructor(e) {
|
|
52928
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;
|
|
52929
52983
|
}
|
|
@@ -53021,10 +53075,10 @@ class ZI {
|
|
|
53021
53075
|
* Select elements (replaces current selection)
|
|
53022
53076
|
*/
|
|
53023
53077
|
selectElements(e) {
|
|
53024
|
-
e.length > 0 && (this.viralViewerApi.viralScene.mergedModel.select(
|
|
53078
|
+
e.length > 0 && (this.viralViewerApi.emit(At.SELECT_ELEMENTS, e), this.viralViewerApi.viralScene.mergedModel.select(
|
|
53025
53079
|
e,
|
|
53026
53080
|
this.exceptElements
|
|
53027
|
-
), this.
|
|
53081
|
+
), this.viralViewerApi.viralRenderer.render());
|
|
53028
53082
|
}
|
|
53029
53083
|
/**
|
|
53030
53084
|
* Add elements to current selection (multi-select with Shift)
|
|
@@ -53052,7 +53106,22 @@ class ZI {
|
|
|
53052
53106
|
* Unselect all elements
|
|
53053
53107
|
*/
|
|
53054
53108
|
unselectElements() {
|
|
53055
|
-
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);
|
|
53056
53125
|
}
|
|
53057
53126
|
isolateModel(e = [this.isolateModelId]) {
|
|
53058
53127
|
this.viralViewerApi.viralScene.mergedModel.resetVisibility(), this.viralViewerApi.viralScene.mergedModel.isolateModel(e), this.viralViewerApi.viralRenderer.render();
|
|
@@ -53678,7 +53747,7 @@ class bt {
|
|
|
53678
53747
|
return i && n && r;
|
|
53679
53748
|
}
|
|
53680
53749
|
}
|
|
53681
|
-
function
|
|
53750
|
+
function JI() {
|
|
53682
53751
|
class s {
|
|
53683
53752
|
constructor() {
|
|
53684
53753
|
this.children = /* @__PURE__ */ new Map(), this.keys = /* @__PURE__ */ new Set();
|
|
@@ -53760,10 +53829,10 @@ function $I() {
|
|
|
53760
53829
|
}
|
|
53761
53830
|
};
|
|
53762
53831
|
}
|
|
53763
|
-
const
|
|
53764
|
-
class
|
|
53832
|
+
const eR = JI;
|
|
53833
|
+
class tR {
|
|
53765
53834
|
constructor() {
|
|
53766
|
-
const e = new Blob([`(${
|
|
53835
|
+
const e = new Blob([`(${eR})()`]), t = URL.createObjectURL(e);
|
|
53767
53836
|
this.workerPool = new Ar(
|
|
53768
53837
|
2,
|
|
53769
53838
|
t
|
|
@@ -53776,7 +53845,7 @@ class JI {
|
|
|
53776
53845
|
});
|
|
53777
53846
|
}
|
|
53778
53847
|
}
|
|
53779
|
-
function
|
|
53848
|
+
function iR() {
|
|
53780
53849
|
self.addEventListener(
|
|
53781
53850
|
"message",
|
|
53782
53851
|
(s) => {
|
|
@@ -53810,10 +53879,10 @@ function eR() {
|
|
|
53810
53879
|
!1
|
|
53811
53880
|
);
|
|
53812
53881
|
}
|
|
53813
|
-
const
|
|
53814
|
-
class
|
|
53882
|
+
const nR = iR;
|
|
53883
|
+
class sR {
|
|
53815
53884
|
constructor() {
|
|
53816
|
-
const e = new Blob([`(${
|
|
53885
|
+
const e = new Blob([`(${nR})()`]), t = URL.createObjectURL(e);
|
|
53817
53886
|
this.workerPool = new Ar(
|
|
53818
53887
|
2,
|
|
53819
53888
|
t
|
|
@@ -53821,18 +53890,18 @@ class iR {
|
|
|
53821
53890
|
}
|
|
53822
53891
|
fetch(e, t = (r) => {
|
|
53823
53892
|
}, i, n) {
|
|
53824
|
-
let r = new
|
|
53893
|
+
let r = new rR(e, i, n);
|
|
53825
53894
|
this.workerPool.Enqueue(r, (a) => {
|
|
53826
53895
|
t(a);
|
|
53827
53896
|
});
|
|
53828
53897
|
}
|
|
53829
53898
|
}
|
|
53830
|
-
class
|
|
53899
|
+
class rR {
|
|
53831
53900
|
constructor(e, t, i) {
|
|
53832
53901
|
this.url = "", this.url = e, this.byteRangeStart = t, this.byteRangeEnd = i;
|
|
53833
53902
|
}
|
|
53834
53903
|
}
|
|
53835
|
-
function
|
|
53904
|
+
function aR() {
|
|
53836
53905
|
class s {
|
|
53837
53906
|
constructor(t, i, n) {
|
|
53838
53907
|
this.X = 0, this.Y = 0, this.Z = 0, this.X = t, this.Y = i, this.Z = n;
|
|
@@ -53854,10 +53923,10 @@ function sR() {
|
|
|
53854
53923
|
self.postMessage(i());
|
|
53855
53924
|
};
|
|
53856
53925
|
}
|
|
53857
|
-
const
|
|
53858
|
-
class
|
|
53926
|
+
const oR = aR;
|
|
53927
|
+
class lR {
|
|
53859
53928
|
constructor() {
|
|
53860
|
-
const e = new Blob([`(${
|
|
53929
|
+
const e = new Blob([`(${oR})()`]), t = URL.createObjectURL(e);
|
|
53861
53930
|
this.workerPool = new Ar(navigator.hardwareConcurrency || 10, t);
|
|
53862
53931
|
}
|
|
53863
53932
|
getBoundingBox(e, t = (i) => {
|
|
@@ -53870,7 +53939,7 @@ class aR {
|
|
|
53870
53939
|
);
|
|
53871
53940
|
}
|
|
53872
53941
|
}
|
|
53873
|
-
function
|
|
53942
|
+
function cR() {
|
|
53874
53943
|
self.onmessage = function(s) {
|
|
53875
53944
|
const e = s.data;
|
|
53876
53945
|
function t(n, r, a = 0.1) {
|
|
@@ -53888,10 +53957,10 @@ function oR() {
|
|
|
53888
53957
|
self.postMessage(i);
|
|
53889
53958
|
};
|
|
53890
53959
|
}
|
|
53891
|
-
const
|
|
53892
|
-
class
|
|
53960
|
+
const hR = cR;
|
|
53961
|
+
class dR {
|
|
53893
53962
|
constructor() {
|
|
53894
|
-
const e = new Blob([`(${
|
|
53963
|
+
const e = new Blob([`(${hR})()`]), t = URL.createObjectURL(e);
|
|
53895
53964
|
this.workerPool = new Ar(4, t);
|
|
53896
53965
|
}
|
|
53897
53966
|
checkIntersect(e, t = (i) => {
|
|
@@ -53901,7 +53970,7 @@ class cR {
|
|
|
53901
53970
|
});
|
|
53902
53971
|
}
|
|
53903
53972
|
}
|
|
53904
|
-
function
|
|
53973
|
+
function uR() {
|
|
53905
53974
|
class s {
|
|
53906
53975
|
constructor(f, p, v) {
|
|
53907
53976
|
this.x = 0, this.y = 0, this.z = 0, this.x = f, this.y = p, this.z = v;
|
|
@@ -53983,10 +54052,10 @@ function hR() {
|
|
|
53983
54052
|
self.postMessage(!1);
|
|
53984
54053
|
};
|
|
53985
54054
|
}
|
|
53986
|
-
const
|
|
53987
|
-
class
|
|
54055
|
+
const fR = uR;
|
|
54056
|
+
class pR {
|
|
53988
54057
|
constructor() {
|
|
53989
|
-
const e = new Blob([`(${
|
|
54058
|
+
const e = new Blob([`(${fR})()`]), t = URL.createObjectURL(e);
|
|
53990
54059
|
this.workerPool = new Ar(
|
|
53991
54060
|
navigator.hardwareConcurrency || 10,
|
|
53992
54061
|
t
|
|
@@ -53999,9 +54068,9 @@ class uR {
|
|
|
53999
54068
|
});
|
|
54000
54069
|
}
|
|
54001
54070
|
}
|
|
54002
|
-
class
|
|
54071
|
+
class mR {
|
|
54003
54072
|
constructor(e) {
|
|
54004
|
-
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());
|
|
54005
54074
|
}
|
|
54006
54075
|
addTrackingData(e, t) {
|
|
54007
54076
|
this.trackingData.set(e, t);
|
|
@@ -54156,40 +54225,40 @@ class fR {
|
|
|
54156
54225
|
}
|
|
54157
54226
|
return this.viralViewerApi.viralVisibilityManager.exceptElements = [], this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54158
54227
|
i.deleted.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54159
|
-
Et.hexToRGB(
|
|
54228
|
+
Et.hexToRGB(Ee.deleted)
|
|
54160
54229
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54161
54230
|
elements: i.deleted.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54162
|
-
color: Et.hexToRGB(
|
|
54231
|
+
color: Et.hexToRGB(Ee.deleted)
|
|
54163
54232
|
}), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54164
54233
|
i.added.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54165
|
-
Et.hexToRGB(
|
|
54234
|
+
Et.hexToRGB(Ee.added)
|
|
54166
54235
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54167
54236
|
elements: i.added.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54168
|
-
color: Et.hexToRGB(
|
|
54237
|
+
color: Et.hexToRGB(Ee.added)
|
|
54169
54238
|
}), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54170
54239
|
i.modified.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54171
|
-
Et.hexToRGB(
|
|
54240
|
+
Et.hexToRGB(Ee.modified)
|
|
54172
54241
|
), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54173
54242
|
i.modified.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54174
|
-
Et.hexToRGB(
|
|
54243
|
+
Et.hexToRGB(Ee.modified)
|
|
54175
54244
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54176
54245
|
elements: i.modified.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54177
|
-
color: Et.hexToRGB(
|
|
54246
|
+
color: Et.hexToRGB(Ee.modified)
|
|
54178
54247
|
}), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54179
54248
|
elements: i.modified.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54180
|
-
color: Et.hexToRGB(
|
|
54249
|
+
color: Et.hexToRGB(Ee.modified)
|
|
54181
54250
|
}), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54182
54251
|
i.notChanged.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54183
|
-
Et.hexToRGB(
|
|
54252
|
+
Et.hexToRGB(Ee.notChanged)
|
|
54184
54253
|
), this.viralViewerApi.viralScene.mergedModel.changeColor(
|
|
54185
54254
|
i.notChanged.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54186
|
-
Et.hexToRGB(
|
|
54255
|
+
Et.hexToRGB(Ee.notChanged)
|
|
54187
54256
|
), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54188
54257
|
elements: i.notChanged.map((l) => ({ elementId: l.toString(), modelId: e.toString() })),
|
|
54189
|
-
color: Et.hexToRGB(
|
|
54258
|
+
color: Et.hexToRGB(Ee.notChanged)
|
|
54190
54259
|
}), this.viralViewerApi.viralVisibilityManager.exceptElements.push({
|
|
54191
54260
|
elements: i.notChanged.map((l) => ({ elementId: l.toString(), modelId: t.toString() })),
|
|
54192
|
-
color: Et.hexToRGB(
|
|
54261
|
+
color: Et.hexToRGB(Ee.notChanged)
|
|
54193
54262
|
}), this.viralViewerApi.viralRenderer.render(), i;
|
|
54194
54263
|
}
|
|
54195
54264
|
uncompareModels() {
|
|
@@ -54362,7 +54431,7 @@ class fR {
|
|
|
54362
54431
|
}
|
|
54363
54432
|
//#endregion
|
|
54364
54433
|
}
|
|
54365
|
-
class
|
|
54434
|
+
class gR {
|
|
54366
54435
|
constructor(e) {
|
|
54367
54436
|
this.viralViewerApi = e, this.spinner = null, this.logo = `<svg
|
|
54368
54437
|
width="348.25488"
|
|
@@ -54423,9 +54492,9 @@ class pR {
|
|
|
54423
54492
|
100% { transform: rotate(360deg); }
|
|
54424
54493
|
}`, t = document.createElement("style");
|
|
54425
54494
|
if (t.innerHTML = e, document.head.appendChild(t), this.viralViewerApi.targetElement) {
|
|
54426
|
-
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`);
|
|
54427
54496
|
const i = document.createElement("div"), n = document.createElement("div");
|
|
54428
|
-
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;`);
|
|
54429
54498
|
const r = Md.createElementFromHTML(this.logo);
|
|
54430
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);
|
|
54431
54500
|
}
|
|
@@ -54437,35 +54506,71 @@ class pR {
|
|
|
54437
54506
|
this.spinner && this.spinner.style.setProperty("display", "none");
|
|
54438
54507
|
}
|
|
54439
54508
|
}
|
|
54440
|
-
class
|
|
54509
|
+
class vR {
|
|
54441
54510
|
constructor(e) {
|
|
54442
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">
|
|
54443
54512
|
<div class="modal-content">
|
|
54444
54513
|
<div id="modal-header" style="
|
|
54445
|
-
cursor:
|
|
54514
|
+
cursor: move;
|
|
54446
54515
|
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
|
54447
54516
|
padding-bottom: 5px;
|
|
54517
|
+
margin-bottom: 10px;
|
|
54518
|
+
flex-shrink: 0;
|
|
54448
54519
|
">
|
|
54449
54520
|
<span class="close" id="closeBtn">×</span>
|
|
54450
|
-
<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">
|
|
54451
54522
|
</h2>
|
|
54452
54523
|
</div>
|
|
54453
|
-
<div id="modal-body" style="
|
|
54454
|
-
<div id="modal-body-left" style="flex:1;"></div>
|
|
54455
|
-
<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>
|
|
54456
54527
|
</div>
|
|
54528
|
+
<div class="resize-handle" id="resizeHandle"></div>
|
|
54457
54529
|
</div>
|
|
54458
54530
|
</div>`, this.rawModalStyle = `.modal {
|
|
54459
54531
|
display: none;
|
|
54460
54532
|
position: fixed;
|
|
54461
54533
|
z-index: 1;
|
|
54534
|
+
min-width: 200px;
|
|
54535
|
+
min-height: 150px;
|
|
54462
54536
|
}
|
|
54463
54537
|
|
|
54464
54538
|
.modal-content {
|
|
54465
|
-
background-color: ${
|
|
54539
|
+
background-color: ${Ee.background};
|
|
54466
54540
|
border: 1px solid #ccc;
|
|
54467
54541
|
border-radius: 5px;
|
|
54468
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%;
|
|
54469
54574
|
}
|
|
54470
54575
|
|
|
54471
54576
|
.close {
|
|
@@ -54475,7 +54580,7 @@ class mR {
|
|
|
54475
54580
|
}
|
|
54476
54581
|
|
|
54477
54582
|
.close:hover {
|
|
54478
|
-
color: ${
|
|
54583
|
+
color: ${Ee.accent};
|
|
54479
54584
|
}
|
|
54480
54585
|
::-webkit-scrollbar {
|
|
54481
54586
|
width: 5px;
|
|
@@ -54503,22 +54608,41 @@ class mR {
|
|
|
54503
54608
|
::-webkit-scrollbar-thumb:hover {
|
|
54504
54609
|
background: rgba(0, 0, 0, 0.5);
|
|
54505
54610
|
}
|
|
54506
|
-
`, 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();
|
|
54507
54612
|
}
|
|
54508
54613
|
inject() {
|
|
54509
54614
|
if (this.viralViewerApi.targetElement) {
|
|
54510
54615
|
const e = document.createElement("style");
|
|
54511
54616
|
e.innerHTML = this.rawModalStyle, document.head.appendChild(e), this.modal = Md.createElementFromHTML(this.rawModal), this.viralViewerApi.targetElement.appendChild(this.modal);
|
|
54512
|
-
const t = document.getElementById("modal-header");
|
|
54617
|
+
const t = document.getElementById("modal-header"), i = document.getElementById("resizeHandle");
|
|
54513
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");
|
|
54514
|
-
const
|
|
54515
|
-
t.addEventListener("mousedown", (
|
|
54516
|
-
this.isDragging = !0, this.
|
|
54517
|
-
|
|
54518
|
-
this.
|
|
54519
|
-
}),
|
|
54520
|
-
this.
|
|
54521
|
-
})
|
|
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", () => {
|
|
54522
54646
|
this.modal.style.display = "none";
|
|
54523
54647
|
});
|
|
54524
54648
|
}
|
|
@@ -54530,7 +54654,11 @@ class mR {
|
|
|
54530
54654
|
this.modal && (this.modal.style.display = "none");
|
|
54531
54655
|
}
|
|
54532
54656
|
updatePosition(e, t) {
|
|
54533
|
-
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
|
+
}
|
|
54534
54662
|
}
|
|
54535
54663
|
updateModalContent(e, t) {
|
|
54536
54664
|
var n, r;
|
|
@@ -54538,12 +54666,12 @@ class mR {
|
|
|
54538
54666
|
this.modalBodyLeft.innerHTML = "", this.modalBodyRight.innerHTML = "";
|
|
54539
54667
|
for (var i in this.properties) {
|
|
54540
54668
|
let a = this.properties[i];
|
|
54541
|
-
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>`;
|
|
54542
54670
|
}
|
|
54543
54671
|
}
|
|
54544
54672
|
}
|
|
54545
54673
|
}
|
|
54546
|
-
class
|
|
54674
|
+
class xR {
|
|
54547
54675
|
constructor(e) {
|
|
54548
54676
|
this.viralTools = e;
|
|
54549
54677
|
}
|
|
@@ -54552,7 +54680,7 @@ class gR {
|
|
|
54552
54680
|
e.activate && console.log((t = this.viralTools.viralViewerApi.viralCamera.camera) == null ? void 0 : t.position);
|
|
54553
54681
|
}
|
|
54554
54682
|
}
|
|
54555
|
-
class
|
|
54683
|
+
class bR {
|
|
54556
54684
|
constructor(e) {
|
|
54557
54685
|
this.viralTools = e;
|
|
54558
54686
|
}
|
|
@@ -54560,7 +54688,7 @@ class vR {
|
|
|
54560
54688
|
this.viralTools.viralViewerApi.targetElement && e.activate;
|
|
54561
54689
|
}
|
|
54562
54690
|
}
|
|
54563
|
-
class
|
|
54691
|
+
class yR {
|
|
54564
54692
|
constructor(e) {
|
|
54565
54693
|
this.viralTools = e;
|
|
54566
54694
|
}
|
|
@@ -54568,7 +54696,7 @@ class xR {
|
|
|
54568
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));
|
|
54569
54697
|
}
|
|
54570
54698
|
}
|
|
54571
|
-
class
|
|
54699
|
+
class _R {
|
|
54572
54700
|
constructor(e) {
|
|
54573
54701
|
this.viralTools = e, this.isActivated = !1;
|
|
54574
54702
|
}
|
|
@@ -54588,7 +54716,7 @@ class bR {
|
|
|
54588
54716
|
}
|
|
54589
54717
|
}
|
|
54590
54718
|
}
|
|
54591
|
-
class
|
|
54719
|
+
class wR {
|
|
54592
54720
|
constructor(e) {
|
|
54593
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;
|
|
54594
54722
|
}
|
|
@@ -54647,7 +54775,7 @@ class yR {
|
|
|
54647
54775
|
let r = document.createElement("canvas"), a = r.getContext("2d"), o = 32;
|
|
54648
54776
|
r.width = o, r.height = o;
|
|
54649
54777
|
let l = o * 0.8 / 2;
|
|
54650
|
-
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;
|
|
54651
54779
|
}
|
|
54652
54780
|
let t = new np(e()), i = new id({
|
|
54653
54781
|
map: t,
|
|
@@ -54657,7 +54785,7 @@ class yR {
|
|
|
54657
54785
|
}
|
|
54658
54786
|
makeLine(e, t) {
|
|
54659
54787
|
let i = new dn({
|
|
54660
|
-
color: Et.hexToThreejsColor(
|
|
54788
|
+
color: Et.hexToThreejsColor(Ee.primary),
|
|
54661
54789
|
linewidth: 20
|
|
54662
54790
|
});
|
|
54663
54791
|
const n = [e, t], r = new dt().setFromPoints(n);
|
|
@@ -54671,7 +54799,7 @@ class yR {
|
|
|
54671
54799
|
if (r) {
|
|
54672
54800
|
r.font = "bolder " + a + 'px "Open Sans", Arial';
|
|
54673
54801
|
let d = "~ " + Math.round(e.distanceTo(t)), u = r.measureText(d), f = 20, p = 10, v = 10;
|
|
54674
|
-
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);
|
|
54675
54803
|
}
|
|
54676
54804
|
let o = new np(n), l = new tp(new id({
|
|
54677
54805
|
map: o,
|
|
@@ -54688,7 +54816,7 @@ class yR {
|
|
|
54688
54816
|
e.code == "Escape" && (Et.clearChildren(this.tempMeasure), this.point1 = null, this.point2 = null, this.tempPoint2 = null, this.viralTools.viralViewerApi.viralRenderer.render());
|
|
54689
54817
|
}
|
|
54690
54818
|
}
|
|
54691
|
-
class
|
|
54819
|
+
class SR {
|
|
54692
54820
|
constructor(e) {
|
|
54693
54821
|
this.viralTools = e;
|
|
54694
54822
|
}
|
|
@@ -54724,14 +54852,14 @@ class _R {
|
|
|
54724
54852
|
}
|
|
54725
54853
|
}
|
|
54726
54854
|
}
|
|
54727
|
-
class
|
|
54855
|
+
class MR {
|
|
54728
54856
|
constructor(e) {
|
|
54729
54857
|
this.viralViewerApi = e, this.tools = [
|
|
54730
54858
|
{
|
|
54731
54859
|
name: "navigation",
|
|
54732
54860
|
tools: [
|
|
54733
54861
|
{
|
|
54734
|
-
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>`,
|
|
54735
54863
|
index: 0,
|
|
54736
54864
|
activate: !0,
|
|
54737
54865
|
allowDehydrated: !1,
|
|
@@ -54740,7 +54868,7 @@ class wR {
|
|
|
54740
54868
|
}
|
|
54741
54869
|
},
|
|
54742
54870
|
{
|
|
54743
|
-
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>`,
|
|
54744
54872
|
index: 1,
|
|
54745
54873
|
activate: !1,
|
|
54746
54874
|
allowDehydrated: !1,
|
|
@@ -54753,7 +54881,7 @@ class wR {
|
|
|
54753
54881
|
name: "helper",
|
|
54754
54882
|
tools: [
|
|
54755
54883
|
{
|
|
54756
|
-
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>`,
|
|
54757
54885
|
index: 0,
|
|
54758
54886
|
activate: !1,
|
|
54759
54887
|
allowDehydrated: !1,
|
|
@@ -54761,7 +54889,7 @@ class wR {
|
|
|
54761
54889
|
action: (t) => this.viralToolElevation.activate(t)
|
|
54762
54890
|
},
|
|
54763
54891
|
{
|
|
54764
|
-
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>`,
|
|
54765
54893
|
index: 1,
|
|
54766
54894
|
activate: !1,
|
|
54767
54895
|
allowDehydrated: !1,
|
|
@@ -54769,7 +54897,7 @@ class wR {
|
|
|
54769
54897
|
action: (t) => this.viralToolMeasure.activate(t)
|
|
54770
54898
|
},
|
|
54771
54899
|
{
|
|
54772
|
-
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>`,
|
|
54773
54901
|
index: 2,
|
|
54774
54902
|
activate: !1,
|
|
54775
54903
|
allowDehydrated: !1,
|
|
@@ -54783,7 +54911,7 @@ class wR {
|
|
|
54783
54911
|
name: "environment",
|
|
54784
54912
|
tools: [
|
|
54785
54913
|
{
|
|
54786
|
-
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>`,
|
|
54787
54915
|
index: 0,
|
|
54788
54916
|
activate: !1,
|
|
54789
54917
|
allowDehydrated: !1,
|
|
@@ -54791,7 +54919,7 @@ class wR {
|
|
|
54791
54919
|
action: (t) => this.viralToolSunlight.activate(t)
|
|
54792
54920
|
},
|
|
54793
54921
|
{
|
|
54794
|
-
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>`,
|
|
54795
54923
|
index: 1,
|
|
54796
54924
|
activate: !1,
|
|
54797
54925
|
allowDehydrated: !1,
|
|
@@ -54804,7 +54932,7 @@ class wR {
|
|
|
54804
54932
|
name: "theme",
|
|
54805
54933
|
tools: [
|
|
54806
54934
|
{
|
|
54807
|
-
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>`,
|
|
54808
54936
|
index: 0,
|
|
54809
54937
|
activate: !1,
|
|
54810
54938
|
allowDehydrated: !0,
|
|
@@ -54817,7 +54945,7 @@ class wR {
|
|
|
54817
54945
|
name: "debug",
|
|
54818
54946
|
tools: [
|
|
54819
54947
|
{
|
|
54820
|
-
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>`,
|
|
54821
54949
|
index: 0,
|
|
54822
54950
|
activate: !1,
|
|
54823
54951
|
allowDehydrated: !1,
|
|
@@ -54828,7 +54956,7 @@ class wR {
|
|
|
54828
54956
|
}
|
|
54829
54957
|
]
|
|
54830
54958
|
}
|
|
54831
|
-
], 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);
|
|
54832
54960
|
}
|
|
54833
54961
|
//#region Init
|
|
54834
54962
|
injectTools() {
|
|
@@ -54842,7 +54970,7 @@ class wR {
|
|
|
54842
54970
|
const i = this.tools[t], n = document.createElement("div");
|
|
54843
54971
|
n.setAttribute(
|
|
54844
54972
|
"style",
|
|
54845
|
-
`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;`
|
|
54846
54974
|
);
|
|
54847
54975
|
for (let r = 0; r < i.tools.length; r++) {
|
|
54848
54976
|
const a = i.tools[r], o = document.createElement("div");
|
|
@@ -54855,10 +54983,10 @@ class wR {
|
|
|
54855
54983
|
const l = document.createElement("div");
|
|
54856
54984
|
l.setAttribute(
|
|
54857
54985
|
"style",
|
|
54858
|
-
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${
|
|
54986
|
+
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${Ee.background};`
|
|
54859
54987
|
), a.activate && l.setAttribute(
|
|
54860
54988
|
"style",
|
|
54861
|
-
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${
|
|
54989
|
+
`border-top: 2px solid ; padding-bottom: 2px; border-color: ${Ee.secondary};`
|
|
54862
54990
|
), o.appendChild(l);
|
|
54863
54991
|
const c = document.createElement("div");
|
|
54864
54992
|
c.setAttribute(
|
|
@@ -54873,7 +55001,7 @@ class wR {
|
|
|
54873
55001
|
c.style.setProperty("background-color", "unset");
|
|
54874
55002
|
};
|
|
54875
55003
|
const h = Md.createElementFromHTML(a.svg);
|
|
54876
|
-
a.activate && h && h.setAttribute("fill", `${
|
|
55004
|
+
a.activate && h && h.setAttribute("fill", `${Ee.secondary}`), c.appendChild(h), o.appendChild(c), n.appendChild(o);
|
|
54877
55005
|
}
|
|
54878
55006
|
e.appendChild(n);
|
|
54879
55007
|
}
|
|
@@ -54907,15 +55035,15 @@ class wR {
|
|
|
54907
55035
|
if (n) {
|
|
54908
55036
|
n.activate = !n.activate;
|
|
54909
55037
|
const r = t.children[0], o = t.children[1].children[0];
|
|
54910
|
-
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(
|
|
54911
55039
|
"border-color",
|
|
54912
|
-
`${
|
|
54913
|
-
), o.setAttribute("fill", `${
|
|
55040
|
+
`${Ee.background}`
|
|
55041
|
+
), o.setAttribute("fill", `${Ee.primary}`)), n.action(n);
|
|
54914
55042
|
}
|
|
54915
55043
|
}
|
|
54916
55044
|
//#endregion
|
|
54917
55045
|
}
|
|
54918
|
-
class
|
|
55046
|
+
class AR {
|
|
54919
55047
|
constructor(e) {
|
|
54920
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();
|
|
54921
55049
|
}
|
|
@@ -54946,7 +55074,7 @@ class SR {
|
|
|
54946
55074
|
window.addEventListener("mousedown", e, !1), window.addEventListener("mousemove", t, !1), window.addEventListener("touchstart", e, !1), window.addEventListener("touchmove", t, !0);
|
|
54947
55075
|
}
|
|
54948
55076
|
}
|
|
54949
|
-
class
|
|
55077
|
+
class TR {
|
|
54950
55078
|
constructor(e) {
|
|
54951
55079
|
this.viralNavigationCube = e, this.renderer = new vb({
|
|
54952
55080
|
alpha: !0,
|
|
@@ -54975,7 +55103,7 @@ class MR {
|
|
|
54975
55103
|
// }
|
|
54976
55104
|
// }
|
|
54977
55105
|
}
|
|
54978
|
-
class
|
|
55106
|
+
class ER {
|
|
54979
55107
|
constructor(e) {
|
|
54980
55108
|
this.viralNavigationCube = e, this.scene = new lc(), this.objects = [], this.cube = null, this.activePlane = null, this.addCube(), this.addPlanes();
|
|
54981
55109
|
}
|
|
@@ -54986,9 +55114,9 @@ class AR {
|
|
|
54986
55114
|
let e = [], t = ["RIGHT", "LEFT", "TOP", "BOTTOM", "FRONT", "BACK"], i = new ab(), n = document.createElement("canvas"), r = n.getContext("2d"), a = 64;
|
|
54987
55115
|
if (n.width = a, n.height = a, r) {
|
|
54988
55116
|
r.font = 'bolder 12px "Open sans", Arial', r.textBaseline = "middle", r.textAlign = "center";
|
|
54989
|
-
let o = `${
|
|
55117
|
+
let o = `${Ee.background}`;
|
|
54990
55118
|
for (let l = 0; l < 6; l++)
|
|
54991
|
-
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({
|
|
54992
55120
|
map: i.load(n.toDataURL())
|
|
54993
55121
|
});
|
|
54994
55122
|
this.cube = new Q(new oi(1, 1, 1), e), this.addObject(this.cube);
|
|
@@ -55091,8 +55219,8 @@ class AR {
|
|
|
55091
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;
|
|
55092
55220
|
let ge = new Q(o, e.clone());
|
|
55093
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);
|
|
55094
|
-
let
|
|
55095
|
-
|
|
55222
|
+
let Pe = new Q(r, e.clone());
|
|
55223
|
+
Pe.rotation.x = Math.PI / 2, Pe.position.y = -l, Pe.name = "BOTTOM";
|
|
55096
55224
|
let ve = new Q(a, e.clone());
|
|
55097
55225
|
ve.rotation.x = Math.PI / 2, ve.position.y = -l, ve.position.x = t / 2 + n / 2;
|
|
55098
55226
|
let Qe = new Q(a, e.clone());
|
|
@@ -55112,7 +55240,7 @@ class AR {
|
|
|
55112
55240
|
let ae = new Ii({
|
|
55113
55241
|
color: 11184810
|
|
55114
55242
|
}), te = new ii(1, 1), qe = new Q(te, ae);
|
|
55115
|
-
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);
|
|
55116
55244
|
const Oe = new Q();
|
|
55117
55245
|
Oe.name = "1131", Oe.add(h), Oe.add(L), this.addObject(Oe);
|
|
55118
55246
|
const Ke = new Q();
|
|
@@ -55155,7 +55283,7 @@ class AR {
|
|
|
55155
55283
|
mi.name = "corner8", mi.add(M), mi.add(Z), mi.add(H), this.addObject(mi);
|
|
55156
55284
|
}
|
|
55157
55285
|
}
|
|
55158
|
-
class
|
|
55286
|
+
class PR {
|
|
55159
55287
|
constructor(e) {
|
|
55160
55288
|
this.viralNavigationCube = e, this._mouseDownTime = null, this.clickThreshold = 250, this._handleClick = async (t) => {
|
|
55161
55289
|
var h, d, u, f, p, v, g, m, b, x, y, _, w, T, E, S, M, C, L, U, z;
|
|
@@ -55325,10 +55453,10 @@ class TR {
|
|
|
55325
55453
|
}
|
|
55326
55454
|
//#endregion
|
|
55327
55455
|
}
|
|
55328
|
-
class
|
|
55456
|
+
class CR {
|
|
55329
55457
|
//* view cube from third party (new approach)
|
|
55330
55458
|
constructor(e) {
|
|
55331
|
-
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);
|
|
55332
55460
|
}
|
|
55333
55461
|
injectCubeWrapperElement() {
|
|
55334
55462
|
if (this.viralViewerApi.targetElement) {
|
|
@@ -55349,7 +55477,7 @@ class ER {
|
|
|
55349
55477
|
this.viralViewerApi.viralCamera.focusModelByName();
|
|
55350
55478
|
}
|
|
55351
55479
|
}
|
|
55352
|
-
class
|
|
55480
|
+
class IR {
|
|
55353
55481
|
static generateRandomString(e) {
|
|
55354
55482
|
const t = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
55355
55483
|
let i = "";
|
|
@@ -55360,16 +55488,16 @@ class PR {
|
|
|
55360
55488
|
return i;
|
|
55361
55489
|
}
|
|
55362
55490
|
}
|
|
55363
|
-
const
|
|
55364
|
-
class
|
|
55491
|
+
const RR = 0.032;
|
|
55492
|
+
class DR {
|
|
55365
55493
|
constructor(e, t, i, n, r = 2, a = 1, o, l) {
|
|
55366
|
-
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(
|
|
55367
55495
|
"style",
|
|
55368
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"
|
|
55369
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(
|
|
55370
55498
|
"style",
|
|
55371
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"
|
|
55372
|
-
), 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(
|
|
55373
55501
|
t,
|
|
55374
55502
|
(c) => {
|
|
55375
55503
|
this.avatar = c.scene;
|
|
@@ -55443,12 +55571,12 @@ class IR {
|
|
|
55443
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);
|
|
55444
55572
|
}
|
|
55445
55573
|
}
|
|
55446
|
-
class
|
|
55574
|
+
class LR {
|
|
55447
55575
|
constructor(e) {
|
|
55448
55576
|
this.viralViewerApi = e, this.avatars = [];
|
|
55449
55577
|
}
|
|
55450
55578
|
load(e, t, i, n = 2, r = 1, a, o) {
|
|
55451
|
-
let l = new
|
|
55579
|
+
let l = new DR(
|
|
55452
55580
|
this.viralViewerApi,
|
|
55453
55581
|
e,
|
|
55454
55582
|
t,
|
|
@@ -55465,7 +55593,7 @@ class RR {
|
|
|
55465
55593
|
t && t.dispose(), this.avatars = this.avatars.filter((i) => i.id != e);
|
|
55466
55594
|
}
|
|
55467
55595
|
}
|
|
55468
|
-
class
|
|
55596
|
+
class OR {
|
|
55469
55597
|
constructor(e) {
|
|
55470
55598
|
this.viralViewerApi = e, this.isGeneratingMergeModel = !1;
|
|
55471
55599
|
}
|
|
@@ -55495,7 +55623,7 @@ class DR {
|
|
|
55495
55623
|
i.Offset.Z,
|
|
55496
55624
|
i.Offset.Y,
|
|
55497
55625
|
1
|
|
55498
|
-
], a = new
|
|
55626
|
+
], a = new Ce();
|
|
55499
55627
|
a.fromArray(r);
|
|
55500
55628
|
let o = [];
|
|
55501
55629
|
for (let c = 0; c < t.length; c++) {
|
|
@@ -55600,7 +55728,7 @@ class DR {
|
|
|
55600
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);
|
|
55601
55729
|
}
|
|
55602
55730
|
}
|
|
55603
|
-
class
|
|
55731
|
+
class NR {
|
|
55604
55732
|
constructor(e) {
|
|
55605
55733
|
this.viralViewerApi = e, this.planeEdges = null, this._isGenerated = !1, this.planeMaterial = new Ii({
|
|
55606
55734
|
color: 16777215,
|
|
@@ -55609,7 +55737,7 @@ class LR {
|
|
|
55609
55737
|
opacity: 0.1
|
|
55610
55738
|
// wireframe: true,
|
|
55611
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({
|
|
55612
|
-
color: Et.hexToThreejsColor(
|
|
55740
|
+
color: Et.hexToThreejsColor(Ee.accent)
|
|
55613
55741
|
// Blue edges
|
|
55614
55742
|
}), this._isEnabling = !1;
|
|
55615
55743
|
}
|
|
@@ -55697,14 +55825,14 @@ class LR {
|
|
|
55697
55825
|
this.createPlaneEdges();
|
|
55698
55826
|
}
|
|
55699
55827
|
}
|
|
55700
|
-
class
|
|
55828
|
+
class BR {
|
|
55701
55829
|
constructor(e) {
|
|
55702
55830
|
this.viralViewerApi = e, this.contextMenu = null, this.injectContextMenu();
|
|
55703
55831
|
}
|
|
55704
55832
|
injectContextMenu() {
|
|
55705
55833
|
this.viralViewerApi.targetElement && (this.contextMenu = document.createElement("div"), this.contextMenu.setAttribute("id", "viral-pivot-point"), this.contextMenu.setAttribute(
|
|
55706
55834
|
"style",
|
|
55707
|
-
`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`
|
|
55708
55836
|
), this.viralViewerApi.targetElement.appendChild(this.contextMenu));
|
|
55709
55837
|
}
|
|
55710
55838
|
show(e, t) {
|
|
@@ -55714,7 +55842,7 @@ class OR {
|
|
|
55714
55842
|
this.contextMenu && this.contextMenu.style.setProperty("display", "none");
|
|
55715
55843
|
}
|
|
55716
55844
|
}
|
|
55717
|
-
class
|
|
55845
|
+
class UR {
|
|
55718
55846
|
constructor(e) {
|
|
55719
55847
|
this.viralViewerApi = e, this.panel = null, this.batchListContainer = null, this.isVisible = !1, this.selectedBatchMesh = null, this.inject();
|
|
55720
55848
|
}
|
|
@@ -55729,7 +55857,7 @@ class NR {
|
|
|
55729
55857
|
right: 10px;
|
|
55730
55858
|
width: 300px;
|
|
55731
55859
|
max-height: 80vh;
|
|
55732
|
-
background-color: ${
|
|
55860
|
+
background-color: ${Ee.background};
|
|
55733
55861
|
border: 1px solid #ccc;
|
|
55734
55862
|
border-radius: 8px;
|
|
55735
55863
|
padding: 15px;
|
|
@@ -55743,8 +55871,8 @@ class NR {
|
|
|
55743
55871
|
const e = document.createElement("div");
|
|
55744
55872
|
e.innerHTML = `
|
|
55745
55873
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;">
|
|
55746
|
-
<h3 style="margin: 0; color: ${
|
|
55747
|
-
<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>
|
|
55748
55876
|
</div>
|
|
55749
55877
|
`, this.panel.appendChild(e);
|
|
55750
55878
|
const t = document.createElement("div");
|
|
@@ -55756,7 +55884,7 @@ class NR {
|
|
|
55756
55884
|
t.appendChild(i), t.appendChild(n), this.panel.appendChild(t);
|
|
55757
55885
|
const r = document.createElement("div");
|
|
55758
55886
|
r.innerHTML = `
|
|
55759
|
-
<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>
|
|
55760
55888
|
`, this.panel.appendChild(r), this.batchListContainer = document.createElement("div"), this.batchListContainer.setAttribute(
|
|
55761
55889
|
"style",
|
|
55762
55890
|
`
|
|
@@ -55773,7 +55901,7 @@ class NR {
|
|
|
55773
55901
|
`
|
|
55774
55902
|
flex: 1;
|
|
55775
55903
|
padding: 8px;
|
|
55776
|
-
background-color: ${
|
|
55904
|
+
background-color: ${Ee.primary};
|
|
55777
55905
|
color: white;
|
|
55778
55906
|
border: none;
|
|
55779
55907
|
border-radius: 4px;
|
|
@@ -55783,9 +55911,9 @@ class NR {
|
|
|
55783
55911
|
transition: background-color 0.2s;
|
|
55784
55912
|
`
|
|
55785
55913
|
), i.addEventListener("mouseenter", () => {
|
|
55786
|
-
i.style.backgroundColor =
|
|
55914
|
+
i.style.backgroundColor = Ee.accent;
|
|
55787
55915
|
}), i.addEventListener("mouseleave", () => {
|
|
55788
|
-
i.style.backgroundColor =
|
|
55916
|
+
i.style.backgroundColor = Ee.primary;
|
|
55789
55917
|
}), i;
|
|
55790
55918
|
}
|
|
55791
55919
|
injectStyles() {
|
|
@@ -55804,12 +55932,12 @@ class NR {
|
|
|
55804
55932
|
background-color: rgba(0, 0, 0, 0.1);
|
|
55805
55933
|
}
|
|
55806
55934
|
.batch-item.selected {
|
|
55807
|
-
border-color: ${
|
|
55935
|
+
border-color: ${Ee.accent};
|
|
55808
55936
|
background-color: rgba(128, 214, 218, 0.2);
|
|
55809
55937
|
}
|
|
55810
55938
|
.batch-item-title {
|
|
55811
55939
|
font-weight: 600;
|
|
55812
|
-
color: ${
|
|
55940
|
+
color: ${Ee.secondary};
|
|
55813
55941
|
font-size: 13px;
|
|
55814
55942
|
margin-bottom: 4px;
|
|
55815
55943
|
}
|
|
@@ -55890,7 +56018,7 @@ class NR {
|
|
|
55890
56018
|
background-color: rgba(128, 214, 218, 0.1);
|
|
55891
56019
|
border-radius: 4px;
|
|
55892
56020
|
font-size: 11px;
|
|
55893
|
-
color: ${
|
|
56021
|
+
color: ${Ee.secondary};
|
|
55894
56022
|
text-align: center;
|
|
55895
56023
|
`
|
|
55896
56024
|
), i.innerHTML = `
|
|
@@ -55933,7 +56061,7 @@ class NR {
|
|
|
55933
56061
|
this.clearIsolation(), this.panel && (this.panel.remove(), this.panel = null);
|
|
55934
56062
|
}
|
|
55935
56063
|
}
|
|
55936
|
-
class
|
|
56064
|
+
class FR {
|
|
55937
56065
|
constructor(e) {
|
|
55938
56066
|
this.viralViewerApi = e, this.panel = null, this.contentContainer = null, this.isVisible = !1, this.lastAnalysis = null, this.inject();
|
|
55939
56067
|
}
|
|
@@ -55948,7 +56076,7 @@ class BR {
|
|
|
55948
56076
|
left: 10px;
|
|
55949
56077
|
width: 450px;
|
|
55950
56078
|
max-height: 85vh;
|
|
55951
|
-
background-color: ${
|
|
56079
|
+
background-color: ${Ee.background};
|
|
55952
56080
|
border: 1px solid #ccc;
|
|
55953
56081
|
border-radius: 8px;
|
|
55954
56082
|
padding: 15px;
|
|
@@ -55963,8 +56091,8 @@ class BR {
|
|
|
55963
56091
|
const e = document.createElement("div");
|
|
55964
56092
|
e.innerHTML = `
|
|
55965
56093
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;">
|
|
55966
|
-
<h3 style="margin: 0; color: ${
|
|
55967
|
-
<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>
|
|
55968
56096
|
</div>
|
|
55969
56097
|
`, this.panel.appendChild(e);
|
|
55970
56098
|
const t = document.createElement("div");
|
|
@@ -55988,7 +56116,7 @@ class BR {
|
|
|
55988
56116
|
"style",
|
|
55989
56117
|
`
|
|
55990
56118
|
padding: 8px 12px;
|
|
55991
|
-
background-color: ${
|
|
56119
|
+
background-color: ${Ee.primary};
|
|
55992
56120
|
color: white;
|
|
55993
56121
|
border: none;
|
|
55994
56122
|
border-radius: 4px;
|
|
@@ -55998,9 +56126,9 @@ class BR {
|
|
|
55998
56126
|
transition: background-color 0.2s;
|
|
55999
56127
|
`
|
|
56000
56128
|
), i.addEventListener("mouseenter", () => {
|
|
56001
|
-
i.style.backgroundColor =
|
|
56129
|
+
i.style.backgroundColor = Ee.accent;
|
|
56002
56130
|
}), i.addEventListener("mouseleave", () => {
|
|
56003
|
-
i.style.backgroundColor =
|
|
56131
|
+
i.style.backgroundColor = Ee.primary;
|
|
56004
56132
|
}), i;
|
|
56005
56133
|
}
|
|
56006
56134
|
injectStyles() {
|
|
@@ -56014,7 +56142,7 @@ class BR {
|
|
|
56014
56142
|
}
|
|
56015
56143
|
.render-section-title {
|
|
56016
56144
|
font-weight: 600;
|
|
56017
|
-
color: ${
|
|
56145
|
+
color: ${Ee.secondary};
|
|
56018
56146
|
font-size: 13px;
|
|
56019
56147
|
margin-bottom: 8px;
|
|
56020
56148
|
display: flex;
|
|
@@ -56060,7 +56188,7 @@ class BR {
|
|
|
56060
56188
|
}
|
|
56061
56189
|
.stat-value {
|
|
56062
56190
|
font-weight: 600;
|
|
56063
|
-
color: ${
|
|
56191
|
+
color: ${Ee.secondary};
|
|
56064
56192
|
}
|
|
56065
56193
|
.warning-box {
|
|
56066
56194
|
padding: 8px;
|
|
@@ -56536,7 +56664,7 @@ class BR {
|
|
|
56536
56664
|
this.panel && (this.panel.remove(), this.panel = null);
|
|
56537
56665
|
}
|
|
56538
56666
|
}
|
|
56539
|
-
class
|
|
56667
|
+
class zR {
|
|
56540
56668
|
constructor(e) {
|
|
56541
56669
|
this.viralViewerApi = e, this.panel = null, this.instancedListContainer = null, this.isVisible = !1, this.selectedInstancedMesh = null, this.selectedInternalMesh = null, this.inject();
|
|
56542
56670
|
}
|
|
@@ -56551,7 +56679,7 @@ class UR {
|
|
|
56551
56679
|
right: 320px;
|
|
56552
56680
|
width: 350px;
|
|
56553
56681
|
max-height: 80vh;
|
|
56554
|
-
background-color: ${
|
|
56682
|
+
background-color: ${Ee.background};
|
|
56555
56683
|
border: 1px solid #ccc;
|
|
56556
56684
|
border-radius: 8px;
|
|
56557
56685
|
padding: 15px;
|
|
@@ -56565,8 +56693,8 @@ class UR {
|
|
|
56565
56693
|
const e = document.createElement("div");
|
|
56566
56694
|
e.innerHTML = `
|
|
56567
56695
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;">
|
|
56568
|
-
<h3 style="margin: 0; color: ${
|
|
56569
|
-
<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>
|
|
56570
56698
|
</div>
|
|
56571
56699
|
`, this.panel.appendChild(e);
|
|
56572
56700
|
const t = document.createElement("div");
|
|
@@ -56578,7 +56706,7 @@ class UR {
|
|
|
56578
56706
|
t.appendChild(i), t.appendChild(n), t.appendChild(r), this.panel.appendChild(t);
|
|
56579
56707
|
const a = document.createElement("div");
|
|
56580
56708
|
a.innerHTML = `
|
|
56581
|
-
<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>
|
|
56582
56710
|
`, this.panel.appendChild(a), this.instancedListContainer = document.createElement("div"), this.instancedListContainer.setAttribute(
|
|
56583
56711
|
"style",
|
|
56584
56712
|
`
|
|
@@ -56595,7 +56723,7 @@ class UR {
|
|
|
56595
56723
|
`
|
|
56596
56724
|
flex: 1;
|
|
56597
56725
|
padding: 8px;
|
|
56598
|
-
background-color: ${
|
|
56726
|
+
background-color: ${Ee.primary};
|
|
56599
56727
|
color: white;
|
|
56600
56728
|
border: none;
|
|
56601
56729
|
border-radius: 4px;
|
|
@@ -56606,9 +56734,9 @@ class UR {
|
|
|
56606
56734
|
min-width: 80px;
|
|
56607
56735
|
`
|
|
56608
56736
|
), i.addEventListener("mouseenter", () => {
|
|
56609
|
-
i.style.backgroundColor =
|
|
56737
|
+
i.style.backgroundColor = Ee.accent;
|
|
56610
56738
|
}), i.addEventListener("mouseleave", () => {
|
|
56611
|
-
i.style.backgroundColor =
|
|
56739
|
+
i.style.backgroundColor = Ee.primary;
|
|
56612
56740
|
}), i;
|
|
56613
56741
|
}
|
|
56614
56742
|
injectStyles() {
|
|
@@ -56629,12 +56757,12 @@ class UR {
|
|
|
56629
56757
|
background-color: rgba(0, 0, 0, 0.1);
|
|
56630
56758
|
}
|
|
56631
56759
|
.instanced-item.selected {
|
|
56632
|
-
border-color: ${
|
|
56760
|
+
border-color: ${Ee.accent};
|
|
56633
56761
|
background-color: rgba(128, 214, 218, 0.2);
|
|
56634
56762
|
}
|
|
56635
56763
|
.instanced-item-title {
|
|
56636
56764
|
font-weight: 600;
|
|
56637
|
-
color: ${
|
|
56765
|
+
color: ${Ee.secondary};
|
|
56638
56766
|
font-size: 13px;
|
|
56639
56767
|
margin-bottom: 4px;
|
|
56640
56768
|
}
|
|
@@ -56681,7 +56809,7 @@ class UR {
|
|
|
56681
56809
|
}
|
|
56682
56810
|
.internal-mesh-item.selected {
|
|
56683
56811
|
background-color: rgba(33, 150, 243, 0.2);
|
|
56684
|
-
border-left-color: ${
|
|
56812
|
+
border-left-color: ${Ee.accent};
|
|
56685
56813
|
}
|
|
56686
56814
|
`, document.head.appendChild(e);
|
|
56687
56815
|
}
|
|
@@ -56798,7 +56926,7 @@ class UR {
|
|
|
56798
56926
|
background-color: rgba(128, 214, 218, 0.1);
|
|
56799
56927
|
border-radius: 4px;
|
|
56800
56928
|
font-size: 11px;
|
|
56801
|
-
color: ${
|
|
56929
|
+
color: ${Ee.secondary};
|
|
56802
56930
|
text-align: center;
|
|
56803
56931
|
`
|
|
56804
56932
|
), r.innerHTML = `
|
|
@@ -56925,7 +57053,7 @@ class UR {
|
|
|
56925
57053
|
this.clearIsolation(), this.panel && (this.panel.remove(), this.panel = null);
|
|
56926
57054
|
}
|
|
56927
57055
|
}
|
|
56928
|
-
class
|
|
57056
|
+
class aD extends jI {
|
|
56929
57057
|
constructor(e = {
|
|
56930
57058
|
isDev: !1,
|
|
56931
57059
|
cameraZUp: !1,
|
|
@@ -56937,12 +57065,12 @@ class sD extends WI {
|
|
|
56937
57065
|
adaptiveEdges: !0,
|
|
56938
57066
|
adaptiveAmbientOcclusion: !0
|
|
56939
57067
|
}) {
|
|
56940
|
-
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(
|
|
56941
57069
|
this,
|
|
56942
57070
|
this.options
|
|
56943
|
-
), 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();
|
|
56944
57072
|
let t = window;
|
|
56945
|
-
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 }) => {
|
|
56946
57074
|
var g, m, b, x, y;
|
|
56947
57075
|
const n = new i({ title: "Controls" }), r = n.addFolder("Sun Light");
|
|
56948
57076
|
r.add(this.viralScene.sunLight, "visible").onChange(() => {
|
|
@@ -56968,7 +57096,7 @@ class sD extends WI {
|
|
|
56968
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(
|
|
56969
57097
|
this.viralVisibilityManager,
|
|
56970
57098
|
"disableGroundShadow"
|
|
56971
|
-
), 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");
|
|
56972
57100
|
const o = n.addFolder("Debug Panels"), l = {
|
|
56973
57101
|
showBatchDebugPanel: () => {
|
|
56974
57102
|
var _;
|
|
@@ -57389,9 +57517,9 @@ class ra {
|
|
|
57389
57517
|
return i;
|
|
57390
57518
|
}
|
|
57391
57519
|
}
|
|
57392
|
-
const
|
|
57520
|
+
const kR = {}, ta = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
57393
57521
|
__proto__: null,
|
|
57394
|
-
default:
|
|
57522
|
+
default: kR
|
|
57395
57523
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
57396
57524
|
class Wi {
|
|
57397
57525
|
constructor() {
|
|
@@ -57578,7 +57706,7 @@ class ur {
|
|
|
57578
57706
|
return ur.startViralutionInformation(e), ur.addData(e, t), ur.endViralutionInformation(e);
|
|
57579
57707
|
}
|
|
57580
57708
|
}
|
|
57581
|
-
class
|
|
57709
|
+
class VR {
|
|
57582
57710
|
/**
|
|
57583
57711
|
* Reads a FlatBuffer from a URL and parses it into the elementData structure
|
|
57584
57712
|
* @param url - Full URL or path to fetch the .fb file from
|
|
@@ -58363,25 +58491,25 @@ class wp {
|
|
|
58363
58491
|
}
|
|
58364
58492
|
}
|
|
58365
58493
|
export {
|
|
58366
|
-
|
|
58494
|
+
VR as A,
|
|
58367
58495
|
dt as B,
|
|
58368
58496
|
kb as C,
|
|
58369
58497
|
jr as D,
|
|
58370
|
-
|
|
58371
|
-
|
|
58498
|
+
GR as E,
|
|
58499
|
+
YR as F,
|
|
58372
58500
|
Xb as G,
|
|
58373
58501
|
Md as H,
|
|
58374
|
-
|
|
58502
|
+
KR as I,
|
|
58375
58503
|
wp as J,
|
|
58376
58504
|
Pi as L,
|
|
58377
|
-
|
|
58505
|
+
JR as T,
|
|
58378
58506
|
Fn as V,
|
|
58379
58507
|
ot as a,
|
|
58380
|
-
|
|
58381
|
-
|
|
58382
|
-
|
|
58383
|
-
|
|
58384
|
-
|
|
58508
|
+
FR as b,
|
|
58509
|
+
UR as c,
|
|
58510
|
+
zR as d,
|
|
58511
|
+
HR as e,
|
|
58512
|
+
WR as f,
|
|
58385
58513
|
fs as g,
|
|
58386
58514
|
yi as h,
|
|
58387
58515
|
Ls as i,
|
|
@@ -58392,14 +58520,14 @@ export {
|
|
|
58392
58520
|
wm as n,
|
|
58393
58521
|
Sp as o,
|
|
58394
58522
|
Lv as p,
|
|
58395
|
-
|
|
58523
|
+
$R as q,
|
|
58396
58524
|
Ub as r,
|
|
58397
58525
|
Sm as s,
|
|
58398
58526
|
Fb as t,
|
|
58399
58527
|
zb as u,
|
|
58400
58528
|
Vb as v,
|
|
58401
|
-
|
|
58529
|
+
aD as w,
|
|
58402
58530
|
Et as x,
|
|
58403
|
-
|
|
58404
|
-
|
|
58531
|
+
rD as y,
|
|
58532
|
+
FC as z
|
|
58405
58533
|
};
|