@planara/core 3.2.1 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hub/benchmark-hub.d.ts +2 -1
- package/dist/hub/benchmark-hub.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +662 -658
- package/dist/index.full.d.ts +2 -1
- package/dist/index.public.d.ts +2 -1
- package/dist/index.umd.js +1 -1
- package/dist/store/metrics-store.d.ts +2 -2
- package/dist/store/metrics-store.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import * as a from "three";
|
|
3
|
-
import { Loader as
|
|
4
|
-
import { injectable as v, inject as c, injectAll as H, container as
|
|
5
|
-
import { FigureType as E, Figure as
|
|
6
|
-
import { OrbitWithState as
|
|
7
|
-
import { EventEmitter as
|
|
8
|
-
import { makeAutoObservable as bt, observable as $
|
|
9
|
-
const
|
|
10
|
-
function
|
|
3
|
+
import { Loader as ws, FileLoader as Ss, Color as Kt, SRGBColorSpace as qt, Group as xs, BufferGeometry as Ct, Float32BufferAttribute as U, LineBasicMaterial as we, Material as Ot, PointsMaterial as te, MeshPhongMaterial as As, LineSegments as Et, Points as Se, Mesh as Pt, Vector3 as z, Vector2 as Is, Matrix3 as Cs, ColorManagement as Os } from "three";
|
|
4
|
+
import { injectable as v, inject as c, injectAll as H, container as Es } from "tsyringe";
|
|
5
|
+
import { FigureType as E, Figure as Ps, SelectMode as O, DisplayMode as J, SceneMode as T, ToolType as W, BenchmarkTestType as X, BenchmarkTestStatus as Pe, DEFAULT_TOOL_RULES as Ls, ResponseType as G } from "@planara/types";
|
|
6
|
+
import { OrbitWithState as Ts, ModelingTransformControls as Ds, CameraAxesGizmo as js, SymmetricAxesHelper as Vs } from "@planara/three";
|
|
7
|
+
import { EventEmitter as Hs } from "events";
|
|
8
|
+
import { makeAutoObservable as bt, observable as $s } from "mobx";
|
|
9
|
+
const Rs = /^[og]\s*(.+)?/, Bs = /^mtllib /, Fs = /^usemtl /, ks = /^usemap /, Lt = /\s+/, Tt = new z(), xe = new z(), Dt = new z(), jt = new z(), V = new z(), se = new Kt();
|
|
10
|
+
function Gs() {
|
|
11
11
|
const e = {
|
|
12
12
|
objects: [],
|
|
13
13
|
object: {},
|
|
@@ -17,15 +17,15 @@ function Gr() {
|
|
|
17
17
|
uvs: [],
|
|
18
18
|
materials: {},
|
|
19
19
|
materialLibraries: [],
|
|
20
|
-
startObject: function(t,
|
|
20
|
+
startObject: function(t, s) {
|
|
21
21
|
if (this.object && this.object.fromDeclaration === !1) {
|
|
22
|
-
this.object.name = t, this.object.fromDeclaration =
|
|
22
|
+
this.object.name = t, this.object.fromDeclaration = s !== !1;
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
-
const
|
|
25
|
+
const r = this.object && typeof this.object.currentMaterial == "function" ? this.object.currentMaterial() : void 0;
|
|
26
26
|
if (this.object && typeof this.object._finalize == "function" && this.object._finalize(!0), this.object = {
|
|
27
27
|
name: t || "",
|
|
28
|
-
fromDeclaration:
|
|
28
|
+
fromDeclaration: s !== !1,
|
|
29
29
|
geometry: {
|
|
30
30
|
vertices: [],
|
|
31
31
|
normals: [],
|
|
@@ -77,8 +77,8 @@ function Gr() {
|
|
|
77
77
|
smooth: this.smooth
|
|
78
78
|
}), n;
|
|
79
79
|
}
|
|
80
|
-
},
|
|
81
|
-
const i =
|
|
80
|
+
}, r && r.name && typeof r.clone == "function") {
|
|
81
|
+
const i = r.clone(0);
|
|
82
82
|
i.inherited = !0, this.object.materials.push(i);
|
|
83
83
|
}
|
|
84
84
|
this.objects.push(this.object);
|
|
@@ -86,57 +86,57 @@ function Gr() {
|
|
|
86
86
|
finalize: function() {
|
|
87
87
|
this.object && typeof this.object._finalize == "function" && this.object._finalize(!0);
|
|
88
88
|
},
|
|
89
|
-
parseVertexIndex: function(t,
|
|
90
|
-
const
|
|
91
|
-
return (
|
|
89
|
+
parseVertexIndex: function(t, s) {
|
|
90
|
+
const r = parseInt(t, 10);
|
|
91
|
+
return (r >= 0 ? r - 1 : r + s / 3) * 3;
|
|
92
92
|
},
|
|
93
|
-
parseNormalIndex: function(t,
|
|
94
|
-
const
|
|
95
|
-
return (
|
|
93
|
+
parseNormalIndex: function(t, s) {
|
|
94
|
+
const r = parseInt(t, 10);
|
|
95
|
+
return (r >= 0 ? r - 1 : r + s / 3) * 3;
|
|
96
96
|
},
|
|
97
|
-
parseUVIndex: function(t,
|
|
98
|
-
const
|
|
99
|
-
return (
|
|
97
|
+
parseUVIndex: function(t, s) {
|
|
98
|
+
const r = parseInt(t, 10);
|
|
99
|
+
return (r >= 0 ? r - 1 : r + s / 2) * 2;
|
|
100
100
|
},
|
|
101
|
-
addVertex: function(t,
|
|
101
|
+
addVertex: function(t, s, r) {
|
|
102
102
|
const i = this.vertices, n = this.object.geometry.vertices;
|
|
103
|
-
n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[
|
|
103
|
+
n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[s + 0], i[s + 1], i[s + 2]), n.push(i[r + 0], i[r + 1], i[r + 2]);
|
|
104
104
|
},
|
|
105
105
|
addVertexPoint: function(t) {
|
|
106
|
-
const
|
|
107
|
-
this.object.geometry.vertices.push(
|
|
106
|
+
const s = this.vertices;
|
|
107
|
+
this.object.geometry.vertices.push(s[t + 0], s[t + 1], s[t + 2]);
|
|
108
108
|
},
|
|
109
109
|
addVertexLine: function(t) {
|
|
110
|
-
const
|
|
111
|
-
this.object.geometry.vertices.push(
|
|
110
|
+
const s = this.vertices;
|
|
111
|
+
this.object.geometry.vertices.push(s[t + 0], s[t + 1], s[t + 2]);
|
|
112
112
|
},
|
|
113
|
-
addNormal: function(t,
|
|
113
|
+
addNormal: function(t, s, r) {
|
|
114
114
|
const i = this.normals, n = this.object.geometry.normals;
|
|
115
|
-
n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[
|
|
115
|
+
n.push(i[t + 0], i[t + 1], i[t + 2]), n.push(i[s + 0], i[s + 1], i[s + 2]), n.push(i[r + 0], i[r + 1], i[r + 2]);
|
|
116
116
|
},
|
|
117
|
-
addFaceNormal: function(t,
|
|
117
|
+
addFaceNormal: function(t, s, r) {
|
|
118
118
|
const i = this.vertices, n = this.object.geometry.normals;
|
|
119
|
-
Tt.fromArray(i, t), xe.fromArray(i,
|
|
119
|
+
Tt.fromArray(i, t), xe.fromArray(i, s), Dt.fromArray(i, r), V.subVectors(Dt, xe), jt.subVectors(Tt, xe), V.cross(jt), V.normalize(), n.push(V.x, V.y, V.z), n.push(V.x, V.y, V.z), n.push(V.x, V.y, V.z);
|
|
120
120
|
},
|
|
121
|
-
addColor: function(t,
|
|
121
|
+
addColor: function(t, s, r) {
|
|
122
122
|
const i = this.colors, n = this.object.geometry.colors;
|
|
123
|
-
i[t] !== void 0 && n.push(i[t + 0], i[t + 1], i[t + 2]), i[
|
|
123
|
+
i[t] !== void 0 && n.push(i[t + 0], i[t + 1], i[t + 2]), i[s] !== void 0 && n.push(i[s + 0], i[s + 1], i[s + 2]), i[r] !== void 0 && n.push(i[r + 0], i[r + 1], i[r + 2]);
|
|
124
124
|
},
|
|
125
|
-
addUV: function(t,
|
|
125
|
+
addUV: function(t, s, r) {
|
|
126
126
|
const i = this.uvs, n = this.object.geometry.uvs;
|
|
127
|
-
n.push(i[t + 0], i[t + 1]), n.push(i[
|
|
127
|
+
n.push(i[t + 0], i[t + 1]), n.push(i[s + 0], i[s + 1]), n.push(i[r + 0], i[r + 1]);
|
|
128
128
|
},
|
|
129
129
|
addDefaultUV: function() {
|
|
130
130
|
const t = this.object.geometry.uvs;
|
|
131
131
|
t.push(0, 0), t.push(0, 0), t.push(0, 0);
|
|
132
132
|
},
|
|
133
133
|
addUVLine: function(t) {
|
|
134
|
-
const
|
|
135
|
-
this.object.geometry.uvs.push(
|
|
134
|
+
const s = this.uvs;
|
|
135
|
+
this.object.geometry.uvs.push(s[t + 0], s[t + 1]);
|
|
136
136
|
},
|
|
137
|
-
addFace: function(t,
|
|
137
|
+
addFace: function(t, s, r, i, n, o, l, h, d) {
|
|
138
138
|
const p = this.vertices.length;
|
|
139
|
-
let u = this.parseVertexIndex(t, p), m = this.parseVertexIndex(
|
|
139
|
+
let u = this.parseVertexIndex(t, p), m = this.parseVertexIndex(s, p), f = this.parseVertexIndex(r, p);
|
|
140
140
|
if (this.addVertex(u, m, f), this.addColor(u, m, f), l !== void 0 && l !== "") {
|
|
141
141
|
const _ = this.normals.length;
|
|
142
142
|
u = this.parseNormalIndex(l, _), m = this.parseNormalIndex(h, _), f = this.parseNormalIndex(d, _), this.addNormal(u, m, f);
|
|
@@ -150,24 +150,24 @@ function Gr() {
|
|
|
150
150
|
},
|
|
151
151
|
addPointGeometry: function(t) {
|
|
152
152
|
this.object.geometry.type = "Points";
|
|
153
|
-
const
|
|
154
|
-
for (let
|
|
155
|
-
const n = this.parseVertexIndex(t[
|
|
153
|
+
const s = this.vertices.length;
|
|
154
|
+
for (let r = 0, i = t.length; r < i; r++) {
|
|
155
|
+
const n = this.parseVertexIndex(t[r], s);
|
|
156
156
|
this.addVertexPoint(n), this.addColor(n);
|
|
157
157
|
}
|
|
158
158
|
},
|
|
159
|
-
addLineGeometry: function(t,
|
|
159
|
+
addLineGeometry: function(t, s) {
|
|
160
160
|
this.object.geometry.type = "Line";
|
|
161
|
-
const
|
|
161
|
+
const r = this.vertices.length, i = this.uvs.length;
|
|
162
162
|
for (let n = 0, o = t.length; n < o; n++)
|
|
163
|
-
this.addVertexLine(this.parseVertexIndex(t[n],
|
|
164
|
-
for (let n = 0, o =
|
|
165
|
-
this.addUVLine(this.parseUVIndex(
|
|
163
|
+
this.addVertexLine(this.parseVertexIndex(t[n], r));
|
|
164
|
+
for (let n = 0, o = s.length; n < o; n++)
|
|
165
|
+
this.addUVLine(this.parseUVIndex(s[n], i));
|
|
166
166
|
}
|
|
167
167
|
};
|
|
168
168
|
return e.startObject("", !1), e;
|
|
169
169
|
}
|
|
170
|
-
class
|
|
170
|
+
class zs extends ws {
|
|
171
171
|
/**
|
|
172
172
|
* Constructs a new OBJ loader.
|
|
173
173
|
*
|
|
@@ -185,15 +185,15 @@ class zr extends wr {
|
|
|
185
185
|
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
186
186
|
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
187
187
|
*/
|
|
188
|
-
load(t,
|
|
189
|
-
const n = this, o = new
|
|
188
|
+
load(t, s, r, i) {
|
|
189
|
+
const n = this, o = new Ss(this.manager);
|
|
190
190
|
o.setPath(this.path), o.setRequestHeader(this.requestHeader), o.setWithCredentials(this.withCredentials), o.load(t, function(l) {
|
|
191
191
|
try {
|
|
192
|
-
|
|
192
|
+
s(n.parse(l));
|
|
193
193
|
} catch (h) {
|
|
194
194
|
i ? i(h) : console.error(h), n.manager.itemError(t);
|
|
195
195
|
}
|
|
196
|
-
},
|
|
196
|
+
}, r, i);
|
|
197
197
|
}
|
|
198
198
|
/**
|
|
199
199
|
* Sets the material creator for this OBJ. This object is loaded via {@link MTLLoader}.
|
|
@@ -211,16 +211,16 @@ class zr extends wr {
|
|
|
211
211
|
* @return {Group} The parsed OBJ.
|
|
212
212
|
*/
|
|
213
213
|
parse(t) {
|
|
214
|
-
const
|
|
214
|
+
const s = new Gs();
|
|
215
215
|
t.indexOf(`\r
|
|
216
216
|
`) !== -1 && (t = t.replace(/\r\n/g, `
|
|
217
217
|
`)), t.indexOf(`\\
|
|
218
218
|
`) !== -1 && (t = t.replace(/\\\n/g, ""));
|
|
219
|
-
const
|
|
219
|
+
const r = t.split(`
|
|
220
220
|
`);
|
|
221
221
|
let i = [];
|
|
222
|
-
for (let l = 0, h =
|
|
223
|
-
const d =
|
|
222
|
+
for (let l = 0, h = r.length; l < h; l++) {
|
|
223
|
+
const d = r[l].trimStart();
|
|
224
224
|
if (d.length === 0) continue;
|
|
225
225
|
const p = d.charAt(0);
|
|
226
226
|
if (p !== "#")
|
|
@@ -228,26 +228,26 @@ class zr extends wr {
|
|
|
228
228
|
const u = d.split(Lt);
|
|
229
229
|
switch (u[0]) {
|
|
230
230
|
case "v":
|
|
231
|
-
|
|
231
|
+
s.vertices.push(
|
|
232
232
|
parseFloat(u[1]),
|
|
233
233
|
parseFloat(u[2]),
|
|
234
234
|
parseFloat(u[3])
|
|
235
|
-
), u.length >= 7 ? (
|
|
235
|
+
), u.length >= 7 ? (se.setRGB(
|
|
236
236
|
parseFloat(u[4]),
|
|
237
237
|
parseFloat(u[5]),
|
|
238
238
|
parseFloat(u[6]),
|
|
239
239
|
qt
|
|
240
|
-
),
|
|
240
|
+
), s.colors.push(se.r, se.g, se.b)) : s.colors.push(void 0, void 0, void 0);
|
|
241
241
|
break;
|
|
242
242
|
case "vn":
|
|
243
|
-
|
|
243
|
+
s.normals.push(
|
|
244
244
|
parseFloat(u[1]),
|
|
245
245
|
parseFloat(u[2]),
|
|
246
246
|
parseFloat(u[3])
|
|
247
247
|
);
|
|
248
248
|
break;
|
|
249
249
|
case "vt":
|
|
250
|
-
|
|
250
|
+
s.uvs.push(
|
|
251
251
|
parseFloat(u[1]),
|
|
252
252
|
parseFloat(u[2])
|
|
253
253
|
);
|
|
@@ -265,7 +265,7 @@ class zr extends wr {
|
|
|
265
265
|
const _ = f[0];
|
|
266
266
|
for (let g = 1, b = f.length - 1; g < b; g++) {
|
|
267
267
|
const x = f[g], S = f[g + 1];
|
|
268
|
-
|
|
268
|
+
s.addFace(
|
|
269
269
|
_[0],
|
|
270
270
|
x[0],
|
|
271
271
|
S[0],
|
|
@@ -288,37 +288,37 @@ class zr extends wr {
|
|
|
288
288
|
const b = u[_].split("/");
|
|
289
289
|
b[0] !== "" && m.push(b[0]), b[1] !== "" && f.push(b[1]);
|
|
290
290
|
}
|
|
291
|
-
|
|
291
|
+
s.addLineGeometry(m, f);
|
|
292
292
|
} else if (p === "p") {
|
|
293
293
|
const m = d.slice(1).trim().split(" ");
|
|
294
|
-
|
|
295
|
-
} else if ((i =
|
|
294
|
+
s.addPointGeometry(m);
|
|
295
|
+
} else if ((i = Rs.exec(d)) !== null) {
|
|
296
296
|
const u = (" " + i[0].slice(1).trim()).slice(1);
|
|
297
|
-
|
|
298
|
-
} else if (
|
|
299
|
-
|
|
300
|
-
else if (
|
|
301
|
-
|
|
302
|
-
else if (
|
|
297
|
+
s.startObject(u);
|
|
298
|
+
} else if (Fs.test(d))
|
|
299
|
+
s.object.startMaterial(d.substring(7).trim(), s.materialLibraries);
|
|
300
|
+
else if (Bs.test(d))
|
|
301
|
+
s.materialLibraries.push(d.substring(7).trim());
|
|
302
|
+
else if (ks.test(d))
|
|
303
303
|
console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');
|
|
304
304
|
else if (p === "s") {
|
|
305
305
|
if (i = d.split(" "), i.length > 1) {
|
|
306
306
|
const m = i[1].trim().toLowerCase();
|
|
307
|
-
|
|
307
|
+
s.object.smooth = m !== "0" && m !== "off";
|
|
308
308
|
} else
|
|
309
|
-
|
|
310
|
-
const u =
|
|
311
|
-
u && (u.smooth =
|
|
309
|
+
s.object.smooth = !0;
|
|
310
|
+
const u = s.object.currentMaterial();
|
|
311
|
+
u && (u.smooth = s.object.smooth);
|
|
312
312
|
} else {
|
|
313
313
|
if (d === "\0") continue;
|
|
314
314
|
console.warn('THREE.OBJLoader: Unexpected line: "' + d + '"');
|
|
315
315
|
}
|
|
316
316
|
}
|
|
317
|
-
|
|
318
|
-
const n = new
|
|
319
|
-
if (n.materialLibraries = [].concat(
|
|
320
|
-
for (let l = 0, h =
|
|
321
|
-
const d =
|
|
317
|
+
s.finalize();
|
|
318
|
+
const n = new xs();
|
|
319
|
+
if (n.materialLibraries = [].concat(s.materialLibraries), !(s.objects.length === 1 && s.objects[0].geometry.vertices.length === 0) === !0)
|
|
320
|
+
for (let l = 0, h = s.objects.length; l < h; l++) {
|
|
321
|
+
const d = s.objects[l], p = d.geometry, u = d.materials, m = p.type === "Line", f = p.type === "Points";
|
|
322
322
|
let _ = !1;
|
|
323
323
|
if (p.vertices.length === 0) continue;
|
|
324
324
|
const g = new Ct();
|
|
@@ -326,7 +326,7 @@ class zr extends wr {
|
|
|
326
326
|
const b = [];
|
|
327
327
|
for (let S = 0, w = u.length; S < w; S++) {
|
|
328
328
|
const M = u[S], I = M.name + "_" + M.smooth + "_" + _;
|
|
329
|
-
let y =
|
|
329
|
+
let y = s.materials[I];
|
|
330
330
|
if (this.materials !== null) {
|
|
331
331
|
if (y = this.materials.create(M.name), m && y && !(y instanceof we)) {
|
|
332
332
|
const C = new we();
|
|
@@ -336,7 +336,7 @@ class zr extends wr {
|
|
|
336
336
|
Ot.prototype.copy.call(C, y), C.color.copy(y.color), C.map = y.map, y = C;
|
|
337
337
|
}
|
|
338
338
|
}
|
|
339
|
-
y === void 0 && (m ? y = new we() : f ? y = new te({ size: 1, sizeAttenuation: !1 }) : y = new
|
|
339
|
+
y === void 0 && (m ? y = new we() : f ? y = new te({ size: 1, sizeAttenuation: !1 }) : y = new As(), y.name = M.name, y.flatShading = !M.smooth, y.vertexColors = _, s.materials[I] = y), b.push(y);
|
|
340
340
|
}
|
|
341
341
|
let x;
|
|
342
342
|
if (b.length > 1) {
|
|
@@ -349,16 +349,16 @@ class zr extends wr {
|
|
|
349
349
|
m ? x = new Et(g, b[0]) : f ? x = new Se(g, b[0]) : x = new Pt(g, b[0]);
|
|
350
350
|
x.name = d.name, n.add(x);
|
|
351
351
|
}
|
|
352
|
-
else if (
|
|
352
|
+
else if (s.vertices.length > 0) {
|
|
353
353
|
const l = new te({ size: 1, sizeAttenuation: !1 }), h = new Ct();
|
|
354
|
-
h.setAttribute("position", new U(
|
|
354
|
+
h.setAttribute("position", new U(s.vertices, 3)), s.colors.length > 0 && s.colors[0] !== void 0 && (h.setAttribute("color", new U(s.colors, 3)), l.vertexColors = !0);
|
|
355
355
|
const d = new Se(h, l);
|
|
356
356
|
n.add(d);
|
|
357
357
|
}
|
|
358
358
|
return n;
|
|
359
359
|
}
|
|
360
360
|
}
|
|
361
|
-
const be = 16776960, Me = 16755200,
|
|
361
|
+
const be = 16776960, Me = 16755200, Ws = 2236962, Ns = 2236962, Us = {
|
|
362
362
|
/**
|
|
363
363
|
* Плоскость (PlaneGeometry)
|
|
364
364
|
* @returns Плоскость размером 1x1 с одной сегментацией
|
|
@@ -450,38 +450,38 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
|
|
|
450
450
|
color: 12566463,
|
|
451
451
|
metalness: 0,
|
|
452
452
|
roughness: 0.6
|
|
453
|
-
}),
|
|
453
|
+
}), Xs = 8, k = 0, Jt = 1, Qt = 2, $ = 31, Ys = 0.03, Ks = 0.05, Mt = 900, Vt = 300, Ht = 300, $t = 300, yt = (e) => !!e && e.isMesh, es = (e) => {
|
|
454
454
|
let t = e;
|
|
455
455
|
for (; t; ) {
|
|
456
456
|
if (t.isMesh) return t;
|
|
457
457
|
t = t.parent;
|
|
458
458
|
}
|
|
459
459
|
return null;
|
|
460
|
-
},
|
|
460
|
+
}, ts = (e) => {
|
|
461
461
|
const t = new a.BufferGeometry();
|
|
462
462
|
t.setAttribute("position", e.getAttribute("position")), t.computeBoundingSphere(), t.computeBoundingBox();
|
|
463
|
-
const
|
|
464
|
-
color:
|
|
463
|
+
const s = new a.PointsMaterial({
|
|
464
|
+
color: Ns,
|
|
465
465
|
size: 6,
|
|
466
466
|
sizeAttenuation: !1,
|
|
467
467
|
depthTest: !1,
|
|
468
468
|
depthWrite: !1,
|
|
469
469
|
transparent: !0,
|
|
470
470
|
opacity: 0.9
|
|
471
|
-
}),
|
|
472
|
-
return
|
|
473
|
-
},
|
|
474
|
-
const t = new a.EdgesGeometry(e),
|
|
471
|
+
}), r = new a.Points(t, s);
|
|
472
|
+
return r.layers.set(Qt), r.renderOrder = 1e3, r.visible = !1, r;
|
|
473
|
+
}, ss = (e) => {
|
|
474
|
+
const t = new a.EdgesGeometry(e), s = new a.LineSegments(
|
|
475
475
|
t,
|
|
476
|
-
new a.LineBasicMaterial({ color:
|
|
476
|
+
new a.LineBasicMaterial({ color: Ws, linewidth: 1 })
|
|
477
477
|
);
|
|
478
|
-
return
|
|
479
|
-
},
|
|
480
|
-
const t = { x: e.position.x, y: e.position.y, z: e.position.z },
|
|
478
|
+
return s.layers.set(Jt), s;
|
|
479
|
+
}, qs = (e) => {
|
|
480
|
+
const t = { x: e.position.x, y: e.position.y, z: e.position.z }, s = { x: e.rotation.x, y: e.rotation.y, z: e.rotation.z }, r = { x: e.scale.x, y: e.scale.y, z: e.scale.z }, i = new a.Box3().setFromObject(e), n = new a.Vector3();
|
|
481
481
|
i.getSize(n);
|
|
482
482
|
const o = { x: n.x, y: n.y, z: n.z };
|
|
483
|
-
return { position: t, rotation:
|
|
484
|
-
},
|
|
483
|
+
return { position: t, rotation: s, scale: r, size: o };
|
|
484
|
+
}, Zs = (e, t) => t ? {
|
|
485
485
|
background: {
|
|
486
486
|
...e.background,
|
|
487
487
|
...t.background
|
|
@@ -512,7 +512,7 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
|
|
|
512
512
|
}
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
|
-
} : e, Y = (e) => (e.userData.isProxy = !0, e.userData.isExportable = !1, e), N = (e) => (e.userData.isExportable = !1, e),
|
|
515
|
+
} : e, Y = (e) => (e.userData.isProxy = !0, e.userData.isExportable = !1, e), N = (e) => (e.userData.isExportable = !1, e), rs = (e) => e.userData.isProxy === !0, Js = (e) => {
|
|
516
516
|
let t = e;
|
|
517
517
|
for (; t; ) {
|
|
518
518
|
if (t.userData.isExportable === !1)
|
|
@@ -520,19 +520,19 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
|
|
|
520
520
|
t = t.parent;
|
|
521
521
|
}
|
|
522
522
|
return !1;
|
|
523
|
-
},
|
|
523
|
+
}, Qs = (e) => !yt(e) || !e.visible || rs(e) || Js(e) ? !1 : e.userData.isExportable !== !1, er = (e) => {
|
|
524
524
|
const t = new a.Group();
|
|
525
|
-
return t.name = "Planara_OBJ_Export", e.updateMatrixWorld(!0), e.traverse((
|
|
526
|
-
if (!
|
|
525
|
+
return t.name = "Planara_OBJ_Export", e.updateMatrixWorld(!0), e.traverse((s) => {
|
|
526
|
+
if (!Qs(s))
|
|
527
527
|
return;
|
|
528
|
-
const
|
|
529
|
-
|
|
528
|
+
const r = s.clone(!1);
|
|
529
|
+
r.geometry = s.geometry.clone(), Array.isArray(s.material) ? r.material = s.material.map((i) => i.clone()) : r.material = s.material.clone(), r.matrix.copy(s.matrixWorld), r.matrixAutoUpdate = !1, t.add(r);
|
|
530
530
|
}), t;
|
|
531
|
-
},
|
|
532
|
-
const
|
|
533
|
-
|
|
534
|
-
const
|
|
535
|
-
return
|
|
531
|
+
}, is = (e) => {
|
|
532
|
+
const s = new zs().parse(e);
|
|
533
|
+
s.updateMatrixWorld(!0);
|
|
534
|
+
const r = [];
|
|
535
|
+
return s.traverse((i) => {
|
|
536
536
|
if (!yt(i))
|
|
537
537
|
return;
|
|
538
538
|
const n = i.geometry.clone();
|
|
@@ -546,12 +546,12 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
|
|
|
546
546
|
h && h.setUsage && h.setUsage(a.DynamicDrawUsage);
|
|
547
547
|
const d = new a.Mesh(n, Zt.clone());
|
|
548
548
|
d.position.copy(l), d.layers.enable(k);
|
|
549
|
-
const p = n.index ? n.toNonIndexed() : n, u = N(
|
|
549
|
+
const p = n.index ? n.toNonIndexed() : n, u = N(ss(p));
|
|
550
550
|
u.layers.enable(k), d.add(u);
|
|
551
|
-
const m = N(
|
|
552
|
-
m.layers.enable(k), d.add(m),
|
|
553
|
-
}),
|
|
554
|
-
},
|
|
551
|
+
const m = N(ts(p));
|
|
552
|
+
m.layers.enable(k), d.add(m), r.push(d);
|
|
553
|
+
}), r;
|
|
554
|
+
}, tr = {
|
|
555
555
|
background: {
|
|
556
556
|
color: 1710618,
|
|
557
557
|
transparent: !1
|
|
@@ -588,11 +588,11 @@ const be = 16776960, Me = 16755200, Wr = 2236962, Nr = 2236962, Ur = {
|
|
|
588
588
|
}
|
|
589
589
|
}
|
|
590
590
|
};
|
|
591
|
-
var
|
|
592
|
-
for (var i =
|
|
591
|
+
var sr = Object.getOwnPropertyDescriptor, rr = (e, t, s, r) => {
|
|
592
|
+
for (var i = r > 1 ? void 0 : r ? sr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
593
593
|
(o = e[n]) && (i = o(i) || i);
|
|
594
594
|
return i;
|
|
595
|
-
}, Rt = (e, t) => (
|
|
595
|
+
}, Rt = (e, t) => (s, r) => t(s, r, e);
|
|
596
596
|
let Le = class {
|
|
597
597
|
/**
|
|
598
598
|
* Конструктор рендерера.
|
|
@@ -625,22 +625,22 @@ let Le = class {
|
|
|
625
625
|
antialias: this._config.renderer.antialias,
|
|
626
626
|
alpha: this._config.background.transparent || this._config.renderer.alpha
|
|
627
627
|
}), this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight), this._config.background.transparent ? this.renderer.setClearAlpha(0) : this.renderer.setClearColor(this._config.background.color, 1), this._config.lights.ambient.enabled) {
|
|
628
|
-
const
|
|
628
|
+
const s = new a.AmbientLight(
|
|
629
629
|
this._config.lights.ambient.color,
|
|
630
630
|
this._config.lights.ambient.intensity
|
|
631
631
|
);
|
|
632
|
-
this.scene.add(N(
|
|
632
|
+
this.scene.add(N(s));
|
|
633
633
|
}
|
|
634
634
|
if (this._config.lights.directional.enabled) {
|
|
635
|
-
const
|
|
635
|
+
const s = new a.DirectionalLight(
|
|
636
636
|
this._config.lights.directional.color,
|
|
637
637
|
this._config.lights.directional.intensity
|
|
638
638
|
);
|
|
639
|
-
|
|
639
|
+
s.position.set(
|
|
640
640
|
this._config.lights.directional.position.x,
|
|
641
641
|
this._config.lights.directional.position.y,
|
|
642
642
|
this._config.lights.directional.position.z
|
|
643
|
-
), this.scene.add(N(
|
|
643
|
+
), this.scene.add(N(s));
|
|
644
644
|
}
|
|
645
645
|
}
|
|
646
646
|
/**
|
|
@@ -770,7 +770,7 @@ let Le = class {
|
|
|
770
770
|
this.scene = null, this.camera = null, this.renderer?.dispose(), this.canvas = null;
|
|
771
771
|
}
|
|
772
772
|
};
|
|
773
|
-
Le =
|
|
773
|
+
Le = rr([
|
|
774
774
|
v(),
|
|
775
775
|
Rt(0, c("Canvas")),
|
|
776
776
|
Rt(1, c("RendererConfig"))
|
|
@@ -791,9 +791,9 @@ class Yn {
|
|
|
791
791
|
* @param objContent - Строка содержимого .obj файла
|
|
792
792
|
*/
|
|
793
793
|
load(t) {
|
|
794
|
-
const
|
|
794
|
+
const s = t.split(`
|
|
795
795
|
`);
|
|
796
|
-
for (const i of
|
|
796
|
+
for (const i of s) {
|
|
797
797
|
if (!i.trim() || i.startsWith("#")) continue;
|
|
798
798
|
const n = i.trim().split(/\s+/);
|
|
799
799
|
switch (n[0]) {
|
|
@@ -811,22 +811,22 @@ class Yn {
|
|
|
811
811
|
break;
|
|
812
812
|
}
|
|
813
813
|
}
|
|
814
|
-
const
|
|
814
|
+
const r = {
|
|
815
815
|
type: E.Custom,
|
|
816
816
|
position: this._positions,
|
|
817
817
|
...this._normals.length > 0 && { normal: this._normals },
|
|
818
818
|
...this._uvs.length > 0 && { uv: this._uvs }
|
|
819
819
|
};
|
|
820
|
-
return new
|
|
820
|
+
return new Ps(r);
|
|
821
821
|
}
|
|
822
822
|
/**
|
|
823
823
|
* Обрабатывает строку face (f) и разворачивает индексы в массивы для рендеринга
|
|
824
824
|
*/
|
|
825
825
|
processFaceLine(t) {
|
|
826
|
-
for (let
|
|
827
|
-
const
|
|
828
|
-
if (!
|
|
829
|
-
const [i, n, o] =
|
|
826
|
+
for (let s = 1; s < t.length; s++) {
|
|
827
|
+
const r = t[s];
|
|
828
|
+
if (!r) continue;
|
|
829
|
+
const [i, n, o] = r.split("/"), l = i ? parseInt(i, 10) : void 0, h = n ? parseInt(n, 10) : void 0, d = o ? parseInt(o, 10) : void 0;
|
|
830
830
|
if (l !== void 0) {
|
|
831
831
|
const p = this._tmpPositions[l - 1];
|
|
832
832
|
p && this._positions.push(...p);
|
|
@@ -842,11 +842,11 @@ class Yn {
|
|
|
842
842
|
}
|
|
843
843
|
}
|
|
844
844
|
}
|
|
845
|
-
var
|
|
846
|
-
for (var i =
|
|
845
|
+
var ir = Object.getOwnPropertyDescriptor, nr = (e, t, s, r) => {
|
|
846
|
+
for (var i = r > 1 ? void 0 : r ? ir(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
847
847
|
(o = e[n]) && (i = o(i) || i);
|
|
848
848
|
return i;
|
|
849
|
-
}, K = (e, t) => (
|
|
849
|
+
}, K = (e, t) => (s, r) => t(s, r, e);
|
|
850
850
|
let Te = class {
|
|
851
851
|
/**
|
|
852
852
|
* Конструктор контроллера.
|
|
@@ -860,8 +860,8 @@ let Te = class {
|
|
|
860
860
|
* @internal
|
|
861
861
|
* @constructor
|
|
862
862
|
*/
|
|
863
|
-
constructor(e, t,
|
|
864
|
-
this._updatable = e, this._renderable = t, this._observers =
|
|
863
|
+
constructor(e, t, s, r, i) {
|
|
864
|
+
this._updatable = e, this._renderable = t, this._observers = s, this._runtime = r, this._renderer = i;
|
|
865
865
|
}
|
|
866
866
|
/**
|
|
867
867
|
* ID анимационного цикла (для остановки)
|
|
@@ -903,7 +903,7 @@ let Te = class {
|
|
|
903
903
|
this._animationId = null;
|
|
904
904
|
}
|
|
905
905
|
};
|
|
906
|
-
Te =
|
|
906
|
+
Te = nr([
|
|
907
907
|
v(),
|
|
908
908
|
K(0, H("IUpdatableModule", { isOptional: !0 })),
|
|
909
909
|
K(1, H("IRenderableModule", { isOptional: !0 })),
|
|
@@ -911,11 +911,11 @@ Te = ns([
|
|
|
911
911
|
K(3, H("IRuntimeModule", { isOptional: !0 })),
|
|
912
912
|
K(4, c("IRenderable"))
|
|
913
913
|
], Te);
|
|
914
|
-
var
|
|
915
|
-
for (var i =
|
|
914
|
+
var or = Object.getOwnPropertyDescriptor, ar = (e, t, s, r) => {
|
|
915
|
+
for (var i = r > 1 ? void 0 : r ? or(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
916
916
|
(o = e[n]) && (i = o(i) || i);
|
|
917
917
|
return i;
|
|
918
|
-
},
|
|
918
|
+
}, lr = (e, t) => (s, r) => t(s, r, e);
|
|
919
919
|
let De = class {
|
|
920
920
|
/** @constructor */
|
|
921
921
|
constructor(e) {
|
|
@@ -928,15 +928,15 @@ let De = class {
|
|
|
928
928
|
return this._controlsModule.isTransformDragging();
|
|
929
929
|
}
|
|
930
930
|
};
|
|
931
|
-
De =
|
|
931
|
+
De = ar([
|
|
932
932
|
v(),
|
|
933
|
-
|
|
933
|
+
lr(0, c("ControlsModule"))
|
|
934
934
|
], De);
|
|
935
|
-
var
|
|
936
|
-
for (var i =
|
|
935
|
+
var cr = Object.getOwnPropertyDescriptor, hr = (e, t, s, r) => {
|
|
936
|
+
for (var i = r > 1 ? void 0 : r ? cr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
937
937
|
(o = e[n]) && (i = o(i) || i);
|
|
938
938
|
return i;
|
|
939
|
-
},
|
|
939
|
+
}, dr = (e, t) => (s, r) => t(s, r, e);
|
|
940
940
|
let je = class {
|
|
941
941
|
/** @constructor */
|
|
942
942
|
constructor(e) {
|
|
@@ -958,15 +958,15 @@ let je = class {
|
|
|
958
958
|
return this._sceneModule.getMeshes();
|
|
959
959
|
}
|
|
960
960
|
};
|
|
961
|
-
je =
|
|
961
|
+
je = hr([
|
|
962
962
|
v(),
|
|
963
|
-
|
|
963
|
+
dr(0, c("SceneModule"))
|
|
964
964
|
], je);
|
|
965
|
-
var
|
|
966
|
-
for (var i =
|
|
965
|
+
var _r = Object.getOwnPropertyDescriptor, ur = (e, t, s, r) => {
|
|
966
|
+
for (var i = r > 1 ? void 0 : r ? _r(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
967
967
|
(o = e[n]) && (i = o(i) || i);
|
|
968
968
|
return i;
|
|
969
|
-
},
|
|
969
|
+
}, pr = (e, t) => (s, r) => t(s, r, e);
|
|
970
970
|
let Ve = class {
|
|
971
971
|
/** @constructor */
|
|
972
972
|
constructor(e) {
|
|
@@ -976,15 +976,15 @@ let Ve = class {
|
|
|
976
976
|
this._raycastModule.setRaycastMode(e);
|
|
977
977
|
}
|
|
978
978
|
};
|
|
979
|
-
Ve =
|
|
979
|
+
Ve = ur([
|
|
980
980
|
v(),
|
|
981
|
-
|
|
981
|
+
pr(0, c("RaycastModule"))
|
|
982
982
|
], Ve);
|
|
983
|
-
var
|
|
984
|
-
for (var i =
|
|
983
|
+
var mr = Object.getOwnPropertyDescriptor, fr = (e, t, s, r) => {
|
|
984
|
+
for (var i = r > 1 ? void 0 : r ? mr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
985
985
|
(o = e[n]) && (i = o(i) || i);
|
|
986
986
|
return i;
|
|
987
|
-
},
|
|
987
|
+
}, gr = (e, t) => (s, r) => t(s, r, e);
|
|
988
988
|
let He = class {
|
|
989
989
|
/** @constructor */
|
|
990
990
|
constructor(e) {
|
|
@@ -1003,15 +1003,15 @@ let He = class {
|
|
|
1003
1003
|
return this._controlsModule.onTransformChange(e);
|
|
1004
1004
|
}
|
|
1005
1005
|
};
|
|
1006
|
-
He =
|
|
1006
|
+
He = fr([
|
|
1007
1007
|
v(),
|
|
1008
|
-
|
|
1008
|
+
gr(0, c("ControlsModule"))
|
|
1009
1009
|
], He);
|
|
1010
|
-
var
|
|
1011
|
-
for (var i =
|
|
1010
|
+
var vr = Object.getOwnPropertyDescriptor, br = (e, t, s, r) => {
|
|
1011
|
+
for (var i = r > 1 ? void 0 : r ? vr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1012
1012
|
(o = e[n]) && (i = o(i) || i);
|
|
1013
1013
|
return i;
|
|
1014
|
-
},
|
|
1014
|
+
}, Mr = (e, t) => (s, r) => t(s, r, e);
|
|
1015
1015
|
let $e = class {
|
|
1016
1016
|
constructor(e) {
|
|
1017
1017
|
this._interactive = e;
|
|
@@ -1023,15 +1023,15 @@ let $e = class {
|
|
|
1023
1023
|
this._interactive.forEach((t) => t.setInteractionEnabled(e));
|
|
1024
1024
|
}
|
|
1025
1025
|
};
|
|
1026
|
-
$e =
|
|
1026
|
+
$e = br([
|
|
1027
1027
|
v(),
|
|
1028
|
-
|
|
1028
|
+
Mr(0, H("IInteractiveModule"))
|
|
1029
1029
|
], $e);
|
|
1030
|
-
var
|
|
1031
|
-
for (var i =
|
|
1030
|
+
var yr = Object.getOwnPropertyDescriptor, wr = (e, t, s, r) => {
|
|
1031
|
+
for (var i = r > 1 ? void 0 : r ? yr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1032
1032
|
(o = e[n]) && (i = o(i) || i);
|
|
1033
1033
|
return i;
|
|
1034
|
-
},
|
|
1034
|
+
}, Sr = (e, t) => (s, r) => t(s, r, e);
|
|
1035
1035
|
let Re = class {
|
|
1036
1036
|
constructor(e) {
|
|
1037
1037
|
this._cameraAccessApi = e;
|
|
@@ -1046,15 +1046,15 @@ let Re = class {
|
|
|
1046
1046
|
this._cameraAccessApi.getCamera().layers.disable(e);
|
|
1047
1047
|
}
|
|
1048
1048
|
};
|
|
1049
|
-
Re =
|
|
1049
|
+
Re = wr([
|
|
1050
1050
|
v(),
|
|
1051
|
-
|
|
1051
|
+
Sr(0, c("IRendererCameraAccess"))
|
|
1052
1052
|
], Re);
|
|
1053
|
-
var
|
|
1054
|
-
for (var i =
|
|
1053
|
+
var xr = Object.getOwnPropertyDescriptor, Ar = (e, t, s, r) => {
|
|
1054
|
+
for (var i = r > 1 ? void 0 : r ? xr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1055
1055
|
(o = e[n]) && (i = o(i) || i);
|
|
1056
1056
|
return i;
|
|
1057
|
-
},
|
|
1057
|
+
}, Ir = (e, t) => (s, r) => t(s, r, e);
|
|
1058
1058
|
let Be = class {
|
|
1059
1059
|
constructor(e) {
|
|
1060
1060
|
this._domAccessApi = e;
|
|
@@ -1066,15 +1066,15 @@ let Be = class {
|
|
|
1066
1066
|
return this._domAccessApi.getDomElement();
|
|
1067
1067
|
}
|
|
1068
1068
|
};
|
|
1069
|
-
Be =
|
|
1069
|
+
Be = Ar([
|
|
1070
1070
|
v(),
|
|
1071
|
-
|
|
1071
|
+
Ir(0, c("IRendererDomAccess"))
|
|
1072
1072
|
], Be);
|
|
1073
|
-
var
|
|
1074
|
-
for (var i =
|
|
1073
|
+
var Cr = Object.getOwnPropertyDescriptor, Or = (e, t, s, r) => {
|
|
1074
|
+
for (var i = r > 1 ? void 0 : r ? Cr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1075
1075
|
(o = e[n]) && (i = o(i) || i);
|
|
1076
1076
|
return i;
|
|
1077
|
-
},
|
|
1077
|
+
}, Er = (e, t) => (s, r) => t(s, r, e);
|
|
1078
1078
|
let Fe = class {
|
|
1079
1079
|
constructor(e) {
|
|
1080
1080
|
this._sceneAccessApi = e;
|
|
@@ -1089,8 +1089,8 @@ let Fe = class {
|
|
|
1089
1089
|
this._sceneAccessApi.getScene().remove(e), t && this._disposeObject(e);
|
|
1090
1090
|
}
|
|
1091
1091
|
addObject(e, t) {
|
|
1092
|
-
const
|
|
1093
|
-
|
|
1092
|
+
const s = this._sceneAccessApi.getScene();
|
|
1093
|
+
s && (typeof t == "number" && e.layers.set(t), s.add(e));
|
|
1094
1094
|
}
|
|
1095
1095
|
/**
|
|
1096
1096
|
* Освобождает ресурсы объекта и его дочерних элементов.
|
|
@@ -1104,7 +1104,7 @@ let Fe = class {
|
|
|
1104
1104
|
e.traverse((t) => {
|
|
1105
1105
|
if (t instanceof a.Mesh) {
|
|
1106
1106
|
if (t.geometry.dispose(), Array.isArray(t.material)) {
|
|
1107
|
-
t.material.forEach((
|
|
1107
|
+
t.material.forEach((s) => this._disposeMaterial(s));
|
|
1108
1108
|
return;
|
|
1109
1109
|
}
|
|
1110
1110
|
this._disposeMaterial(t.material);
|
|
@@ -1125,15 +1125,15 @@ let Fe = class {
|
|
|
1125
1125
|
}), e.dispose();
|
|
1126
1126
|
}
|
|
1127
1127
|
};
|
|
1128
|
-
Fe =
|
|
1128
|
+
Fe = Or([
|
|
1129
1129
|
v(),
|
|
1130
|
-
|
|
1130
|
+
Er(0, c("IRendererSceneAccess"))
|
|
1131
1131
|
], Fe);
|
|
1132
|
-
var
|
|
1133
|
-
for (var i =
|
|
1132
|
+
var Pr = Object.getOwnPropertyDescriptor, Lr = (e, t, s, r) => {
|
|
1133
|
+
for (var i = r > 1 ? void 0 : r ? Pr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1134
1134
|
(o = e[n]) && (i = o(i) || i);
|
|
1135
1135
|
return i;
|
|
1136
|
-
},
|
|
1136
|
+
}, Tr = (e, t) => (s, r) => t(s, r, e);
|
|
1137
1137
|
let ke = class {
|
|
1138
1138
|
/**
|
|
1139
1139
|
* Конструктор API статистики рендерера.
|
|
@@ -1152,18 +1152,18 @@ let ke = class {
|
|
|
1152
1152
|
return this._rendererInfoAccess.getRendererInfo();
|
|
1153
1153
|
}
|
|
1154
1154
|
};
|
|
1155
|
-
ke =
|
|
1155
|
+
ke = Lr([
|
|
1156
1156
|
v(),
|
|
1157
|
-
|
|
1157
|
+
Tr(0, c("IRendererInfoAccess"))
|
|
1158
1158
|
], ke);
|
|
1159
|
-
var
|
|
1160
|
-
for (var i =
|
|
1159
|
+
var Dr = Object.getOwnPropertyDescriptor, jr = (e, t, s, r) => {
|
|
1160
|
+
for (var i = r > 1 ? void 0 : r ? Dr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1161
1161
|
(o = e[n]) && (i = o(i) || i);
|
|
1162
1162
|
return i;
|
|
1163
|
-
}, Ae = (e, t) => (
|
|
1163
|
+
}, Ae = (e, t) => (s, r) => t(s, r, e);
|
|
1164
1164
|
let me = class {
|
|
1165
|
-
constructor(e, t,
|
|
1166
|
-
this._cameraApi = e, this._domApi = t, this._sceneApi =
|
|
1165
|
+
constructor(e, t, s) {
|
|
1166
|
+
this._cameraApi = e, this._domApi = t, this._sceneApi = s;
|
|
1167
1167
|
}
|
|
1168
1168
|
/**
|
|
1169
1169
|
* Orbit-контроллер для управления камерой
|
|
@@ -1196,7 +1196,7 @@ let me = class {
|
|
|
1196
1196
|
*/
|
|
1197
1197
|
_isInteractionEnabled = !0;
|
|
1198
1198
|
init() {
|
|
1199
|
-
this._orbit = new
|
|
1199
|
+
this._orbit = new Ts(this._cameraApi.getCamera(), this._domApi.getDomElement()), this._orbit.enableDamping = !0, this._orbit.dampingFactor = 0.05, this._transform = new Ds(
|
|
1200
1200
|
this._cameraApi.getCamera(),
|
|
1201
1201
|
this._domApi.getDomElement()
|
|
1202
1202
|
), this._transformHelper = this._transform.getHelper(), this._sceneApi.addToScene(N(this._transformHelper)), this._initMouseListeners();
|
|
@@ -1261,20 +1261,20 @@ let me = class {
|
|
|
1261
1261
|
this._orbit?.dispose(), this._orbit = null, this._transform?.dispose(), this._transform = null, this._transformHelper?.parent && this._transformHelper.parent.remove(this._transformHelper);
|
|
1262
1262
|
}
|
|
1263
1263
|
};
|
|
1264
|
-
me =
|
|
1264
|
+
me = jr([
|
|
1265
1265
|
v(),
|
|
1266
1266
|
Ae(0, c("ICameraApi")),
|
|
1267
1267
|
Ae(1, c("IDomApi")),
|
|
1268
1268
|
Ae(2, c("ISceneApi"))
|
|
1269
1269
|
], me);
|
|
1270
|
-
var
|
|
1271
|
-
for (var i =
|
|
1270
|
+
var Vr = Object.getOwnPropertyDescriptor, Hr = (e, t, s, r) => {
|
|
1271
|
+
for (var i = r > 1 ? void 0 : r ? Vr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1272
1272
|
(o = e[n]) && (i = o(i) || i);
|
|
1273
1273
|
return i;
|
|
1274
|
-
}, Ie = (e, t) => (
|
|
1274
|
+
}, Ie = (e, t) => (s, r) => t(s, r, e);
|
|
1275
1275
|
let Ge = class {
|
|
1276
|
-
constructor(e, t,
|
|
1277
|
-
this._cameraApi = e, this._domApi = t, this._rendererApi =
|
|
1276
|
+
constructor(e, t, s) {
|
|
1277
|
+
this._cameraApi = e, this._domApi = t, this._rendererApi = s;
|
|
1278
1278
|
}
|
|
1279
1279
|
/**
|
|
1280
1280
|
* Gizmo для управления отображением perspective camera
|
|
@@ -1298,7 +1298,7 @@ let Ge = class {
|
|
|
1298
1298
|
}
|
|
1299
1299
|
init() {
|
|
1300
1300
|
const e = this._cameraApi.getCamera(), t = this._rendererApi.getRenderer();
|
|
1301
|
-
this._cameraGizmo = new
|
|
1301
|
+
this._cameraGizmo = new js(t, e, {
|
|
1302
1302
|
size: 96,
|
|
1303
1303
|
// Размер квадрата
|
|
1304
1304
|
margin: 36
|
|
@@ -1315,14 +1315,14 @@ let Ge = class {
|
|
|
1315
1315
|
this._cameraGizmo?.dispose(), this._cameraGizmo = null;
|
|
1316
1316
|
}
|
|
1317
1317
|
};
|
|
1318
|
-
Ge =
|
|
1318
|
+
Ge = Hr([
|
|
1319
1319
|
v(),
|
|
1320
1320
|
Ie(0, c("ICameraApi")),
|
|
1321
1321
|
Ie(1, c("IDomApi")),
|
|
1322
1322
|
Ie(2, c("IRendererAccess"))
|
|
1323
1323
|
], Ge);
|
|
1324
|
-
var $
|
|
1325
|
-
for (var i =
|
|
1324
|
+
var $r = Object.getOwnPropertyDescriptor, Rr = (e, t, s, r) => {
|
|
1325
|
+
for (var i = r > 1 ? void 0 : r ? $r(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1326
1326
|
(o = e[n]) && (i = o(i) || i);
|
|
1327
1327
|
return i;
|
|
1328
1328
|
};
|
|
@@ -1336,7 +1336,7 @@ let ze = class {
|
|
|
1336
1336
|
_emitter;
|
|
1337
1337
|
/** @constructor */
|
|
1338
1338
|
constructor() {
|
|
1339
|
-
this._emitter = new
|
|
1339
|
+
this._emitter = new Hs();
|
|
1340
1340
|
}
|
|
1341
1341
|
/**
|
|
1342
1342
|
* Публикует событие в шину.
|
|
@@ -1425,17 +1425,17 @@ let ze = class {
|
|
|
1425
1425
|
this._emitter.off(e, t);
|
|
1426
1426
|
}
|
|
1427
1427
|
};
|
|
1428
|
-
ze =
|
|
1428
|
+
ze = Rr([
|
|
1429
1429
|
v()
|
|
1430
1430
|
], ze);
|
|
1431
|
-
var B = /* @__PURE__ */ ((e) => (e.SelectHover = "select.hover", e.SelectClick = "select.click", e))(B || {}),
|
|
1432
|
-
for (var i =
|
|
1431
|
+
var B = /* @__PURE__ */ ((e) => (e.SelectHover = "select.hover", e.SelectClick = "select.click", e))(B || {}), Br = Object.getOwnPropertyDescriptor, Fr = (e, t, s, r) => {
|
|
1432
|
+
for (var i = r > 1 ? void 0 : r ? Br(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1433
1433
|
(o = e[n]) && (i = o(i) || i);
|
|
1434
1434
|
return i;
|
|
1435
|
-
}, q = (e, t) => (
|
|
1435
|
+
}, q = (e, t) => (s, r) => t(s, r, e);
|
|
1436
1436
|
let We = class {
|
|
1437
|
-
constructor(e, t,
|
|
1438
|
-
this._domApi = e, this._cameraApi = t, this._meshApi =
|
|
1437
|
+
constructor(e, t, s, r, i) {
|
|
1438
|
+
this._domApi = e, this._cameraApi = t, this._meshApi = s, this._controlsState = r, this._bus = i;
|
|
1439
1439
|
}
|
|
1440
1440
|
/**
|
|
1441
1441
|
* Raycast для получения событий наведения/клика по модели
|
|
@@ -1514,19 +1514,19 @@ let We = class {
|
|
|
1514
1514
|
e.layers.set(k);
|
|
1515
1515
|
break;
|
|
1516
1516
|
case O.Edge:
|
|
1517
|
-
e.layers.set(Jt), e.params.Line.threshold =
|
|
1517
|
+
e.layers.set(Jt), e.params.Line.threshold = Ys;
|
|
1518
1518
|
break;
|
|
1519
1519
|
case O.Vertex:
|
|
1520
|
-
e.layers.set(Qt), e.params.Points.threshold =
|
|
1520
|
+
e.layers.set(Qt), e.params.Points.threshold = Ks;
|
|
1521
1521
|
break;
|
|
1522
1522
|
}
|
|
1523
1523
|
}
|
|
1524
1524
|
/** Возвращает ближайшее пересечение по текущему положению курсора */
|
|
1525
1525
|
_getHitIntersection(e) {
|
|
1526
|
-
const t = this._controlsState.isOrbitInteracting() || this._controlsState.isTransformDragging(),
|
|
1526
|
+
const t = this._controlsState.isOrbitInteracting() || this._controlsState.isTransformDragging(), s = this._domApi.getCanvas(), r = this._cameraApi.getCamera(), i = this._meshApi.getMeshes();
|
|
1527
1527
|
if (t) return;
|
|
1528
|
-
const n =
|
|
1529
|
-
this._mouse.x = (e.clientX - n.left) / n.width * 2 - 1, this._mouse.y = -((e.clientY - n.top) / n.height) * 2 + 1, this._raycaster.setFromCamera(this._mouse,
|
|
1528
|
+
const n = s.getBoundingClientRect();
|
|
1529
|
+
this._mouse.x = (e.clientX - n.left) / n.width * 2 - 1, this._mouse.y = -((e.clientY - n.top) / n.height) * 2 + 1, this._raycaster.setFromCamera(this._mouse, r);
|
|
1530
1530
|
const o = this._raycaster.intersectObjects(i, !0)[0] ?? null;
|
|
1531
1531
|
if (this._currentRaycastMode === O.Mesh || this._currentRaycastMode === O.Face)
|
|
1532
1532
|
return o;
|
|
@@ -1538,27 +1538,27 @@ let We = class {
|
|
|
1538
1538
|
// Hover сравнивается не только по object, но и по режимному ключу попадания.
|
|
1539
1539
|
// Это нужно для Face/Edge/Vertex режимов, где разные элементы могут принадлежать одному и тому же Object3D.
|
|
1540
1540
|
/** Вспомогательный метод для получения модели, которую выбрали и отправки события в event bus */
|
|
1541
|
-
_processRaycastEvent(e, t,
|
|
1542
|
-
const
|
|
1543
|
-
if (
|
|
1544
|
-
const n =
|
|
1545
|
-
if (
|
|
1546
|
-
if (!
|
|
1541
|
+
_processRaycastEvent(e, t, s) {
|
|
1542
|
+
const r = this._getHitIntersection(e), i = this._meshApi.getMeshes();
|
|
1543
|
+
if (r === void 0) return;
|
|
1544
|
+
const n = r?.object ?? null;
|
|
1545
|
+
if (s) {
|
|
1546
|
+
if (!r) {
|
|
1547
1547
|
i.forEach((l) => l.userData.isHit = !1), this._lastHoverKey = null, this._bus.emit(t, null);
|
|
1548
1548
|
return;
|
|
1549
1549
|
}
|
|
1550
|
-
const o = this._makeHoverKey(
|
|
1551
|
-
o !== this._lastHoverKey && (i.forEach((l) => l.userData.isHit = !1), n && (n.userData.isHit = !0), this._lastHoverKey = o, this._bus.emit(t, { intersection:
|
|
1550
|
+
const o = this._makeHoverKey(r);
|
|
1551
|
+
o !== this._lastHoverKey && (i.forEach((l) => l.userData.isHit = !1), n && (n.userData.isHit = !0), this._lastHoverKey = o, this._bus.emit(t, { intersection: r }));
|
|
1552
1552
|
return;
|
|
1553
1553
|
}
|
|
1554
|
-
|
|
1554
|
+
r && this._bus.emit(t, { intersection: r });
|
|
1555
1555
|
}
|
|
1556
1556
|
/**
|
|
1557
1557
|
* Поиск видимой части меша
|
|
1558
1558
|
* необходимо это для того, чтобы отправлять только видимые элементы модели, а не все попадания
|
|
1559
1559
|
*/
|
|
1560
|
-
_getVisibleHit(e, t,
|
|
1561
|
-
return e ? t ? e.distance <= t.distance +
|
|
1560
|
+
_getVisibleHit(e, t, s = 1e-4) {
|
|
1561
|
+
return e ? t ? e.distance <= t.distance + s ? e : null : e : null;
|
|
1562
1562
|
}
|
|
1563
1563
|
/** Строит ключ hover-пересечения с учетом текущего режима выборки */
|
|
1564
1564
|
_makeHoverKey(e) {
|
|
@@ -1607,7 +1607,7 @@ let We = class {
|
|
|
1607
1607
|
this._removeMouseListeners(), this._isEventListenersAdded = !1, this._isInteractionEnabled = !0, this._lastHoverKey = null;
|
|
1608
1608
|
}
|
|
1609
1609
|
};
|
|
1610
|
-
We =
|
|
1610
|
+
We = Fr([
|
|
1611
1611
|
v(),
|
|
1612
1612
|
q(0, c("IDomApi")),
|
|
1613
1613
|
q(1, c("ICameraApi")),
|
|
@@ -1615,11 +1615,11 @@ We = Fs([
|
|
|
1615
1615
|
q(3, c("IControlsStateApi")),
|
|
1616
1616
|
q(4, c("EventBus"))
|
|
1617
1617
|
], We);
|
|
1618
|
-
var
|
|
1619
|
-
for (var i =
|
|
1618
|
+
var kr = Object.getOwnPropertyDescriptor, Gr = (e, t, s, r) => {
|
|
1619
|
+
for (var i = r > 1 ? void 0 : r ? kr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1620
1620
|
(o = e[n]) && (i = o(i) || i);
|
|
1621
1621
|
return i;
|
|
1622
|
-
},
|
|
1622
|
+
}, zr = (e, t) => (s, r) => t(s, r, e);
|
|
1623
1623
|
let Ne = class {
|
|
1624
1624
|
constructor(e) {
|
|
1625
1625
|
this._api = e;
|
|
@@ -1633,7 +1633,7 @@ let Ne = class {
|
|
|
1633
1633
|
/** Базовый свет сцены */
|
|
1634
1634
|
_light = null;
|
|
1635
1635
|
init() {
|
|
1636
|
-
this._grid = new a.GridHelper(10, 10), this._grid.position.y = -1e-3, this._api.addToScene(this._grid), this._axes = new
|
|
1636
|
+
this._grid = new a.GridHelper(10, 10), this._grid.position.y = -1e-3, this._api.addToScene(this._grid), this._axes = new Vs(6), this._api.addToScene(this._axes), this._light = new a.HemisphereLight(16777215, 4473924, 0.6), this._api.addToScene(this._light);
|
|
1637
1637
|
}
|
|
1638
1638
|
getMeshes() {
|
|
1639
1639
|
return this._meshes;
|
|
@@ -1660,15 +1660,15 @@ let Ne = class {
|
|
|
1660
1660
|
this._meshes.length = 0, this._grid && (this._api.removeFromScene(this._grid), this._grid.geometry.dispose(), this._grid.material.dispose(), this._grid = null), this._axes && (this._api.removeFromScene(this._axes), this._axes = null), this._light && (this._api.removeFromScene(this._light), this._light = null);
|
|
1661
1661
|
}
|
|
1662
1662
|
};
|
|
1663
|
-
Ne =
|
|
1663
|
+
Ne = Gr([
|
|
1664
1664
|
v(),
|
|
1665
|
-
|
|
1665
|
+
zr(0, c("ISceneApi"))
|
|
1666
1666
|
], Ne);
|
|
1667
|
-
var
|
|
1668
|
-
for (var i =
|
|
1667
|
+
var Wr = Object.getOwnPropertyDescriptor, Nr = (e, t, s, r) => {
|
|
1668
|
+
for (var i = r > 1 ? void 0 : r ? Wr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1669
1669
|
(o = e[n]) && (i = o(i) || i);
|
|
1670
1670
|
return i;
|
|
1671
|
-
},
|
|
1671
|
+
}, Ur = (e, t) => (s, r) => t(s, r, e);
|
|
1672
1672
|
let Ue = class {
|
|
1673
1673
|
constructor(e) {
|
|
1674
1674
|
this._api = e;
|
|
@@ -1705,15 +1705,15 @@ let Ue = class {
|
|
|
1705
1705
|
this._meshes.length = 0, this._light && (this._api.removeFromScene(this._light), this._light = null);
|
|
1706
1706
|
}
|
|
1707
1707
|
};
|
|
1708
|
-
Ue =
|
|
1708
|
+
Ue = Nr([
|
|
1709
1709
|
v(),
|
|
1710
|
-
|
|
1710
|
+
Ur(0, c("ISceneApi"))
|
|
1711
1711
|
], Ue);
|
|
1712
|
-
var
|
|
1713
|
-
for (var i =
|
|
1712
|
+
var Xr = Object.getOwnPropertyDescriptor, Yr = (e, t, s, r) => {
|
|
1713
|
+
for (var i = r > 1 ? void 0 : r ? Xr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1714
1714
|
(o = e[n]) && (i = o(i) || i);
|
|
1715
1715
|
return i;
|
|
1716
|
-
},
|
|
1716
|
+
}, Kr = (e, t) => (s, r) => t(s, r, e);
|
|
1717
1717
|
let Xe = class {
|
|
1718
1718
|
/**
|
|
1719
1719
|
* Конструктор модуля метрик.
|
|
@@ -1821,7 +1821,7 @@ let Xe = class {
|
|
|
1821
1821
|
* @method
|
|
1822
1822
|
*/
|
|
1823
1823
|
getMetrics() {
|
|
1824
|
-
const e = this._getDurationMs(), t = this._frames > 0 ? this._frameTimeSum / this._frames : 0,
|
|
1824
|
+
const e = this._getDurationMs(), t = this._frames > 0 ? this._frameTimeSum / this._frames : 0, s = {
|
|
1825
1825
|
durationMs: e,
|
|
1826
1826
|
frames: this._frames,
|
|
1827
1827
|
averageFps: t > 0 ? 1e3 / t : 0,
|
|
@@ -1834,7 +1834,7 @@ let Xe = class {
|
|
|
1834
1834
|
geometries: this._geometries,
|
|
1835
1835
|
textures: this._textures
|
|
1836
1836
|
};
|
|
1837
|
-
return this._memoryUsedMb !== void 0 && (
|
|
1837
|
+
return this._memoryUsedMb !== void 0 && (s.memoryUsedMb = this._memoryUsedMb), s;
|
|
1838
1838
|
}
|
|
1839
1839
|
/**
|
|
1840
1840
|
* Регистрирует слушатель изменения метрик.
|
|
@@ -1904,21 +1904,21 @@ let Xe = class {
|
|
|
1904
1904
|
if (e - this._lastNotifyAt < this._notifyIntervalMs) return;
|
|
1905
1905
|
this._lastNotifyAt = e;
|
|
1906
1906
|
const t = this.getMetrics();
|
|
1907
|
-
this._listeners.forEach((
|
|
1907
|
+
this._listeners.forEach((s) => s(t));
|
|
1908
1908
|
}
|
|
1909
1909
|
};
|
|
1910
|
-
Xe =
|
|
1910
|
+
Xe = Yr([
|
|
1911
1911
|
v(),
|
|
1912
|
-
|
|
1912
|
+
Kr(0, c("IRendererInfoApi"))
|
|
1913
1913
|
], Xe);
|
|
1914
|
-
var P = /* @__PURE__ */ ((e) => (e[e.Display = 0] = "Display", e[e.Scene = 1] = "Scene", e[e.Select = 2] = "Select", e[e.Tool = 3] = "Tool", e[e.Benchmark = 4] = "Benchmark", e))(P || {}),
|
|
1915
|
-
for (var i =
|
|
1914
|
+
var P = /* @__PURE__ */ ((e) => (e[e.Display = 0] = "Display", e[e.Scene = 1] = "Scene", e[e.Select = 2] = "Select", e[e.Tool = 3] = "Tool", e[e.Benchmark = 4] = "Benchmark", e))(P || {}), qr = Object.getOwnPropertyDescriptor, Zr = (e, t, s, r) => {
|
|
1915
|
+
for (var i = r > 1 ? void 0 : r ? qr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1916
1916
|
(o = e[n]) && (i = o(i) || i);
|
|
1917
1917
|
return i;
|
|
1918
|
-
}, Bt = (e, t) => (
|
|
1918
|
+
}, Bt = (e, t) => (s, r) => t(s, r, e);
|
|
1919
1919
|
let Ye = class {
|
|
1920
1920
|
constructor(e, t) {
|
|
1921
|
-
this._store = t, this._handlers = new Map(e.map((
|
|
1921
|
+
this._store = t, this._handlers = new Map(e.map((s) => [s.mode, s]));
|
|
1922
1922
|
}
|
|
1923
1923
|
/** Текущий режим отображения */
|
|
1924
1924
|
_currentMode = J.Plane;
|
|
@@ -1935,16 +1935,16 @@ let Ye = class {
|
|
|
1935
1935
|
this._handlers && this._handlers.clear(), this._currentMode = J.Plane, this._store.setDisplayMode(this._currentMode);
|
|
1936
1936
|
}
|
|
1937
1937
|
};
|
|
1938
|
-
Ye =
|
|
1938
|
+
Ye = Zr([
|
|
1939
1939
|
v(),
|
|
1940
1940
|
Bt(0, H("IDisplayHandler")),
|
|
1941
1941
|
Bt(1, c("EditorStore"))
|
|
1942
1942
|
], Ye);
|
|
1943
|
-
var
|
|
1944
|
-
for (var i =
|
|
1943
|
+
var Jr = Object.getOwnPropertyDescriptor, Qr = (e, t, s, r) => {
|
|
1944
|
+
for (var i = r > 1 ? void 0 : r ? Jr(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1945
1945
|
(o = e[n]) && (i = o(i) || i);
|
|
1946
1946
|
return i;
|
|
1947
|
-
}, ei = (e, t) => (
|
|
1947
|
+
}, ei = (e, t) => (s, r) => t(s, r, e);
|
|
1948
1948
|
let Ke = class {
|
|
1949
1949
|
/** Текущий режим редактирования сцены */
|
|
1950
1950
|
_currentMode = T.AddFigure;
|
|
@@ -1964,18 +1964,18 @@ let Ke = class {
|
|
|
1964
1964
|
this._handlers && this._handlers.clear(), this._currentMode = T.AddFigure;
|
|
1965
1965
|
}
|
|
1966
1966
|
};
|
|
1967
|
-
Ke =
|
|
1967
|
+
Ke = Qr([
|
|
1968
1968
|
v(),
|
|
1969
1969
|
ei(0, H("ISceneHandler"))
|
|
1970
1970
|
], Ke);
|
|
1971
|
-
var R = /* @__PURE__ */ ((e) => (e.Hover = "hover", e.Click = "click", e))(R || {}), ti = Object.getOwnPropertyDescriptor,
|
|
1972
|
-
for (var i =
|
|
1971
|
+
var R = /* @__PURE__ */ ((e) => (e.Hover = "hover", e.Click = "click", e))(R || {}), ti = Object.getOwnPropertyDescriptor, si = (e, t, s, r) => {
|
|
1972
|
+
for (var i = r > 1 ? void 0 : r ? ti(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
1973
1973
|
(o = e[n]) && (i = o(i) || i);
|
|
1974
1974
|
return i;
|
|
1975
|
-
}, Ce = (e, t) => (
|
|
1975
|
+
}, Ce = (e, t) => (s, r) => t(s, r, e);
|
|
1976
1976
|
let qe = class {
|
|
1977
|
-
constructor(e, t,
|
|
1978
|
-
this._eventBus = e, this._store =
|
|
1977
|
+
constructor(e, t, s) {
|
|
1978
|
+
this._eventBus = e, this._store = s, this._handlers = new Map(t.map((r) => [r.mode, r])), this._eventBus.on(B.SelectHover, this._onHover), this._eventBus.on(B.SelectClick, this._onClick);
|
|
1979
1979
|
}
|
|
1980
1980
|
/** Текущий режим выборки */
|
|
1981
1981
|
_currentMode = O.Mesh;
|
|
@@ -2000,35 +2000,35 @@ let qe = class {
|
|
|
2000
2000
|
this._handlers && this._handlers.clear(), this._eventBus.off(B.SelectHover, this._onHover), this._currentMode = O.Mesh, this._store.setSelectMode(this._currentMode);
|
|
2001
2001
|
}
|
|
2002
2002
|
};
|
|
2003
|
-
qe =
|
|
2003
|
+
qe = si([
|
|
2004
2004
|
v(),
|
|
2005
2005
|
Ce(0, c("EventBus")),
|
|
2006
2006
|
Ce(1, H("ISelectHandler")),
|
|
2007
2007
|
Ce(2, c("EditorStore"))
|
|
2008
2008
|
], qe);
|
|
2009
|
-
const
|
|
2010
|
-
const i =
|
|
2009
|
+
const ri = (e) => (t, s, r) => {
|
|
2010
|
+
const i = r.value;
|
|
2011
2011
|
if (!i)
|
|
2012
2012
|
throw new Error("usePolicy can only be applied to method");
|
|
2013
|
-
return
|
|
2013
|
+
return r.value = function(...n) {
|
|
2014
2014
|
return e(this).check(...n), i.apply(this, n);
|
|
2015
|
-
},
|
|
2016
|
-
},
|
|
2017
|
-
const i =
|
|
2015
|
+
}, r;
|
|
2016
|
+
}, ns = (e) => (t, s, r) => {
|
|
2017
|
+
const i = r.value;
|
|
2018
2018
|
if (!i)
|
|
2019
2019
|
throw new Error("useValidator can only be applied to method");
|
|
2020
|
-
return
|
|
2020
|
+
return r.value = function(...n) {
|
|
2021
2021
|
return e(this).validate(...n), i.apply(this, n);
|
|
2022
|
-
},
|
|
2022
|
+
}, r;
|
|
2023
2023
|
};
|
|
2024
|
-
var ii = Object.defineProperty, ni = Object.getOwnPropertyDescriptor,
|
|
2025
|
-
for (var i =
|
|
2026
|
-
(o = e[n]) && (i = (
|
|
2027
|
-
return
|
|
2028
|
-
}, Oe = (e, t) => (
|
|
2024
|
+
var ii = Object.defineProperty, ni = Object.getOwnPropertyDescriptor, os = (e, t, s, r) => {
|
|
2025
|
+
for (var i = r > 1 ? void 0 : r ? ni(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2026
|
+
(o = e[n]) && (i = (r ? o(t, s, i) : o(i)) || i);
|
|
2027
|
+
return r && i && ii(t, s, i), i;
|
|
2028
|
+
}, Oe = (e, t) => (s, r) => t(s, r, e);
|
|
2029
2029
|
let fe = class {
|
|
2030
|
-
constructor(e, t,
|
|
2031
|
-
this._store = t, this._policy =
|
|
2030
|
+
constructor(e, t, s) {
|
|
2031
|
+
this._store = t, this._policy = s, this._handlers = new Map(e.map((r) => [r.mode, r])), this._unsubSelected = this._store.onSelectedObjectChange(() => {
|
|
2032
2032
|
this._handlers.get(this._currentTool)?.handle();
|
|
2033
2033
|
});
|
|
2034
2034
|
}
|
|
@@ -2048,20 +2048,20 @@ let fe = class {
|
|
|
2048
2048
|
this._unsubSelected?.(), this._handlers && this._handlers.clear(), this._currentTool = W.Translate, this._store.setToolType(this._currentTool);
|
|
2049
2049
|
}
|
|
2050
2050
|
};
|
|
2051
|
-
|
|
2052
|
-
|
|
2051
|
+
os([
|
|
2052
|
+
ri((e) => e._policy)
|
|
2053
2053
|
], fe.prototype, "manage", 1);
|
|
2054
|
-
fe =
|
|
2054
|
+
fe = os([
|
|
2055
2055
|
v(),
|
|
2056
2056
|
Oe(0, H("IToolHandler")),
|
|
2057
2057
|
Oe(1, c("EditorStore")),
|
|
2058
2058
|
Oe(2, c("ToolPolicy"))
|
|
2059
2059
|
], fe);
|
|
2060
|
-
var oi = Object.getOwnPropertyDescriptor, ai = (e, t,
|
|
2061
|
-
for (var i =
|
|
2060
|
+
var oi = Object.getOwnPropertyDescriptor, ai = (e, t, s, r) => {
|
|
2061
|
+
for (var i = r > 1 ? void 0 : r ? oi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2062
2062
|
(o = e[n]) && (i = o(i) || i);
|
|
2063
2063
|
return i;
|
|
2064
|
-
}, li = (e, t) => (
|
|
2064
|
+
}, li = (e, t) => (s, r) => t(s, r, e);
|
|
2065
2065
|
let Ze = class {
|
|
2066
2066
|
/** Тип фичи, за которую отвечает менеджер. */
|
|
2067
2067
|
type = P.Benchmark;
|
|
@@ -2083,11 +2083,11 @@ Ze = ai([
|
|
|
2083
2083
|
v(),
|
|
2084
2084
|
li(0, H("IBenchmarkHandler"))
|
|
2085
2085
|
], Ze);
|
|
2086
|
-
var ci = Object.getOwnPropertyDescriptor, hi = (e, t,
|
|
2087
|
-
for (var i =
|
|
2086
|
+
var ci = Object.getOwnPropertyDescriptor, hi = (e, t, s, r) => {
|
|
2087
|
+
for (var i = r > 1 ? void 0 : r ? ci(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2088
2088
|
(o = e[n]) && (i = o(i) || i);
|
|
2089
2089
|
return i;
|
|
2090
|
-
}, di = (e, t) => (
|
|
2090
|
+
}, di = (e, t) => (s, r) => t(s, r, e);
|
|
2091
2091
|
let Je = class {
|
|
2092
2092
|
constructor(e) {
|
|
2093
2093
|
this._api = e;
|
|
@@ -2105,11 +2105,11 @@ let Je = class {
|
|
|
2105
2105
|
handle() {
|
|
2106
2106
|
const e = this._api.getMeshes();
|
|
2107
2107
|
for (const t of e) {
|
|
2108
|
-
const
|
|
2109
|
-
for (const
|
|
2110
|
-
t.traverse((
|
|
2111
|
-
if (
|
|
2112
|
-
const i =
|
|
2108
|
+
const s = Array.isArray(t.material) ? t.material : [t.material];
|
|
2109
|
+
for (const r of s) this._enableWireframeOnMaterial(r);
|
|
2110
|
+
t.traverse((r) => {
|
|
2111
|
+
if (r.isLineSegments) {
|
|
2112
|
+
const i = r;
|
|
2113
2113
|
if (!this._prevColorLines.has(i.material)) {
|
|
2114
2114
|
const o = i.material;
|
|
2115
2115
|
this._prevColorLines.set(o, o.color.clone());
|
|
@@ -2126,8 +2126,8 @@ let Je = class {
|
|
|
2126
2126
|
"wireframe" in e && (e.wireframe = t), e.needsUpdate = !0;
|
|
2127
2127
|
this._prevWireframe.clear();
|
|
2128
2128
|
for (const [e, t] of this._prevColorMesh) {
|
|
2129
|
-
const
|
|
2130
|
-
|
|
2129
|
+
const s = e;
|
|
2130
|
+
s.color?.isColor && s.color.copy(t);
|
|
2131
2131
|
}
|
|
2132
2132
|
this._prevColorMesh.clear();
|
|
2133
2133
|
for (const [e, t] of this._prevColorLines)
|
|
@@ -2148,14 +2148,14 @@ Je = hi([
|
|
|
2148
2148
|
v(),
|
|
2149
2149
|
di(0, c("IMeshApi"))
|
|
2150
2150
|
], Je);
|
|
2151
|
-
var _i = Object.getOwnPropertyDescriptor, ui = (e, t,
|
|
2152
|
-
for (var i =
|
|
2151
|
+
var _i = Object.getOwnPropertyDescriptor, ui = (e, t, s, r) => {
|
|
2152
|
+
for (var i = r > 1 ? void 0 : r ? _i(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2153
2153
|
(o = e[n]) && (i = o(i) || i);
|
|
2154
2154
|
return i;
|
|
2155
|
-
},
|
|
2155
|
+
}, re = (e, t) => (s, r) => t(s, r, e);
|
|
2156
2156
|
let Qe = class {
|
|
2157
|
-
constructor(e, t,
|
|
2158
|
-
this._sceneApi = e, this._cameraApi = t, this._raycastApi =
|
|
2157
|
+
constructor(e, t, s, r) {
|
|
2158
|
+
this._sceneApi = e, this._cameraApi = t, this._raycastApi = s, this._store = r, this._cameraApi.enableCameraLayer($), this._hoverLine = Y(this._makeOverlayLine(this._hoverColor)), this._selectLine = Y(this._makeOverlayLine(this._selectColor)), this._sceneApi.addObject(this._hoverLine, $), this._sceneApi.addObject(this._selectLine, $);
|
|
2159
2159
|
}
|
|
2160
2160
|
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
2161
2161
|
mode = O.Edge;
|
|
@@ -2179,11 +2179,11 @@ let Qe = class {
|
|
|
2179
2179
|
this._hoverLine.visible = !1, this._hovered = null;
|
|
2180
2180
|
return;
|
|
2181
2181
|
}
|
|
2182
|
-
const
|
|
2183
|
-
if (!
|
|
2184
|
-
const
|
|
2182
|
+
const s = e.intersection.object;
|
|
2183
|
+
if (!s?.isLineSegments) return;
|
|
2184
|
+
const r = s, i = Math.floor((e.intersection.index ?? -1) / 2);
|
|
2185
2185
|
if (i < 0) return;
|
|
2186
|
-
this._selected && this._same({ lines:
|
|
2186
|
+
this._selected && this._same({ lines: r, seg: i }, this._selected) ? this._hoverLine.visible = !1 : (this._writeWorldSegment(this._hoverLine, r, i), this._hoverLine.visible = !0), this._hovered = { lines: r, seg: i };
|
|
2187
2187
|
return;
|
|
2188
2188
|
}
|
|
2189
2189
|
if (t === R.Click) {
|
|
@@ -2191,11 +2191,11 @@ let Qe = class {
|
|
|
2191
2191
|
this._selectLine.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
2192
2192
|
return;
|
|
2193
2193
|
}
|
|
2194
|
-
const
|
|
2195
|
-
if (!
|
|
2196
|
-
const
|
|
2194
|
+
const s = e.intersection.object;
|
|
2195
|
+
if (!s?.isLineSegments) return;
|
|
2196
|
+
const r = s, i = Math.floor((e.intersection.index ?? -1) / 2);
|
|
2197
2197
|
if (i < 0) return;
|
|
2198
|
-
this._writeWorldSegment(this._selectLine,
|
|
2198
|
+
this._writeWorldSegment(this._selectLine, r, i), this._centerAndOrientLineOnSegment(this._selectLine, r, i), this._selectLine.visible = !0, this._prepareEdgeMetadata(r, i), this._store.setSelectedObject(this._selectLine), this._selected = { lines: r, seg: i }, this._hovered && this._same(this._hovered, this._selected) && (this._hoverLine.visible = !1);
|
|
2199
2199
|
}
|
|
2200
2200
|
}
|
|
2201
2201
|
/** Откат текущего режима выборки */
|
|
@@ -2213,21 +2213,21 @@ let Qe = class {
|
|
|
2213
2213
|
_makeOverlayLine(e) {
|
|
2214
2214
|
const t = new a.BufferGeometry();
|
|
2215
2215
|
t.setAttribute("position", new a.Float32BufferAttribute(6, 3));
|
|
2216
|
-
const
|
|
2216
|
+
const s = new a.LineBasicMaterial({
|
|
2217
2217
|
color: e,
|
|
2218
2218
|
depthTest: !1,
|
|
2219
2219
|
depthWrite: !1,
|
|
2220
2220
|
transparent: !0,
|
|
2221
2221
|
opacity: 1
|
|
2222
|
-
}),
|
|
2223
|
-
return
|
|
2224
|
-
},
|
|
2222
|
+
}), r = new a.Line(t, s);
|
|
2223
|
+
return r.renderOrder = 1e3, r.raycast = () => {
|
|
2224
|
+
}, r.layers.set($), r.visible = !1, r;
|
|
2225
2225
|
}
|
|
2226
2226
|
/** Локальные точки сегмента переводим в target (который висит на сцене) */
|
|
2227
|
-
_writeWorldSegment(e, t,
|
|
2228
|
-
const
|
|
2227
|
+
_writeWorldSegment(e, t, s) {
|
|
2228
|
+
const r = t.geometry.getAttribute("position"), i = s * 2, n = i + 1, o = new a.Vector3(r.getX(i), r.getY(i), r.getZ(i)).applyMatrix4(
|
|
2229
2229
|
t.matrixWorld
|
|
2230
|
-
), l = new a.Vector3(
|
|
2230
|
+
), l = new a.Vector3(r.getX(n), r.getY(n), r.getZ(n)).applyMatrix4(
|
|
2231
2231
|
t.matrixWorld
|
|
2232
2232
|
), h = e.geometry.getAttribute("position");
|
|
2233
2233
|
h.setXYZ(0, o.x, o.y, o.z), h.setXYZ(1, l.x, l.y, l.z), h.needsUpdate = !0;
|
|
@@ -2236,10 +2236,10 @@ let Qe = class {
|
|
|
2236
2236
|
return !!e && !!t && e.lines === t.lines && e.seg === t.seg;
|
|
2237
2237
|
}
|
|
2238
2238
|
/** Центрует `THREE.Line` на сегменте и ориентирует её вдоль ребра */
|
|
2239
|
-
_centerAndOrientLineOnSegment(e, t,
|
|
2240
|
-
const
|
|
2239
|
+
_centerAndOrientLineOnSegment(e, t, s) {
|
|
2240
|
+
const r = t.geometry.getAttribute("position"), i = s * 2, n = i + 1, o = new a.Vector3(r.getX(i), r.getY(i), r.getZ(i)).applyMatrix4(
|
|
2241
2241
|
t.matrixWorld
|
|
2242
|
-
), l = new a.Vector3(
|
|
2242
|
+
), l = new a.Vector3(r.getX(n), r.getY(n), r.getZ(n)).applyMatrix4(
|
|
2243
2243
|
t.matrixWorld
|
|
2244
2244
|
), h = new a.Vector3().subVectors(l, o), d = h.length();
|
|
2245
2245
|
if (!isFinite(d) || d === 0) return;
|
|
@@ -2253,13 +2253,13 @@ let Qe = class {
|
|
|
2253
2253
|
}
|
|
2254
2254
|
/** Запись метаданных выбранного ребра для использования инструментов */
|
|
2255
2255
|
_prepareEdgeMetadata(e, t) {
|
|
2256
|
-
const
|
|
2257
|
-
if (!
|
|
2258
|
-
const
|
|
2256
|
+
const s = es(e);
|
|
2257
|
+
if (!s) return;
|
|
2258
|
+
const r = e.geometry.getAttribute("position"), i = t * 2, n = i + 1, o = new a.Vector3(r.getX(i), r.getY(i), r.getZ(i)).applyMatrix4(
|
|
2259
2259
|
e.matrixWorld
|
|
2260
|
-
), l = new a.Vector3(
|
|
2260
|
+
), l = new a.Vector3(r.getX(n), r.getY(n), r.getZ(n)).applyMatrix4(
|
|
2261
2261
|
e.matrixWorld
|
|
2262
|
-
), h = new a.Matrix4().copy(
|
|
2262
|
+
), h = new a.Matrix4().copy(s.matrixWorld).invert(), d = o.clone().applyMatrix4(h), p = l.clone().applyMatrix4(h), m = s.geometry.getAttribute("position"), f = new a.Vector3(), _ = 1e-6, g = [], b = [];
|
|
2263
2263
|
for (let A = 0; A < m.count; A++)
|
|
2264
2264
|
f.fromBufferAttribute(m, A), f.distanceToSquared(d) < _ * _ ? g.push(A) : f.distanceToSquared(p) < _ * _ && b.push(A);
|
|
2265
2265
|
const x = new a.Matrix4().copy(e.matrixWorld).invert(), S = o.clone().applyMatrix4(x), w = l.clone().applyMatrix4(x), M = e.geometry.getAttribute("position"), I = new a.Vector3(), y = [], C = [];
|
|
@@ -2268,7 +2268,7 @@ let Qe = class {
|
|
|
2268
2268
|
this._selectLine.userData.edgeInfo = {
|
|
2269
2269
|
lines: e,
|
|
2270
2270
|
seg: t,
|
|
2271
|
-
mesh:
|
|
2271
|
+
mesh: s,
|
|
2272
2272
|
aIndices: g,
|
|
2273
2273
|
bIndices: b,
|
|
2274
2274
|
aEdgeIndices: y,
|
|
@@ -2278,19 +2278,19 @@ let Qe = class {
|
|
|
2278
2278
|
};
|
|
2279
2279
|
Qe = ui([
|
|
2280
2280
|
v(),
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2281
|
+
re(0, c("ISceneApi")),
|
|
2282
|
+
re(1, c("ICameraApi")),
|
|
2283
|
+
re(2, c("IRaycastApi")),
|
|
2284
|
+
re(3, c("EditorStore"))
|
|
2285
2285
|
], Qe);
|
|
2286
|
-
var pi = Object.getOwnPropertyDescriptor, mi = (e, t,
|
|
2287
|
-
for (var i =
|
|
2286
|
+
var pi = Object.getOwnPropertyDescriptor, mi = (e, t, s, r) => {
|
|
2287
|
+
for (var i = r > 1 ? void 0 : r ? pi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2288
2288
|
(o = e[n]) && (i = o(i) || i);
|
|
2289
2289
|
return i;
|
|
2290
|
-
}, ie = (e, t) => (
|
|
2290
|
+
}, ie = (e, t) => (s, r) => t(s, r, e);
|
|
2291
2291
|
let et = class {
|
|
2292
|
-
constructor(e, t,
|
|
2293
|
-
this._cameraApi = e, this._sceneApi = t, this._raycastApi =
|
|
2292
|
+
constructor(e, t, s, r) {
|
|
2293
|
+
this._cameraApi = e, this._sceneApi = t, this._raycastApi = s, this._store = r, this._cameraApi.enableCameraLayer($), this._hoverFace = Y(this._makeOverlayFace(this._hoverColor)), this._selectFace = Y(this._makeOverlayFace(this._selectColor)), this._sceneApi.addObject(this._hoverFace, $), this._sceneApi.addObject(this._selectFace, $);
|
|
2294
2294
|
}
|
|
2295
2295
|
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
2296
2296
|
mode = O.Face;
|
|
@@ -2323,11 +2323,11 @@ let et = class {
|
|
|
2323
2323
|
this._hoverFace.visible = !1, this._hovered = null;
|
|
2324
2324
|
return;
|
|
2325
2325
|
}
|
|
2326
|
-
const
|
|
2327
|
-
if (!
|
|
2328
|
-
const
|
|
2326
|
+
const s = e.intersection.object;
|
|
2327
|
+
if (!s?.isMesh) return;
|
|
2328
|
+
const r = s, i = e.intersection.faceIndex ?? -1;
|
|
2329
2329
|
if (i < 0) return;
|
|
2330
|
-
const n = this._collectFaceGroup(
|
|
2330
|
+
const n = this._collectFaceGroup(r, i);
|
|
2331
2331
|
if (!n) return;
|
|
2332
2332
|
this._selected && this._same(n, this._selected) ? this._hoverFace.visible = !1 : (this._writeWorldFaceGroup(this._hoverFace, n), this._hoverFace.visible = !0), this._hovered = n;
|
|
2333
2333
|
return;
|
|
@@ -2337,11 +2337,11 @@ let et = class {
|
|
|
2337
2337
|
this._selectFace.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
2338
2338
|
return;
|
|
2339
2339
|
}
|
|
2340
|
-
const
|
|
2341
|
-
if (!
|
|
2342
|
-
const
|
|
2340
|
+
const s = e.intersection.object;
|
|
2341
|
+
if (!s?.isMesh) return;
|
|
2342
|
+
const r = s, i = e.intersection.faceIndex ?? -1;
|
|
2343
2343
|
if (i < 0) return;
|
|
2344
|
-
const n = this._collectFaceGroup(
|
|
2344
|
+
const n = this._collectFaceGroup(r, i);
|
|
2345
2345
|
if (!n) return;
|
|
2346
2346
|
this._writeWorldFaceGroup(this._selectFace, n), this._centerFaceProxy(this._selectFace), this._selectFace.visible = !0, this._prepareFaceMetadata(n), this._store.setSelectedObject(this._selectFace), this._selected = n, this._hovered && this._same(this._hovered, this._selected) && (this._hoverFace.visible = !1);
|
|
2347
2347
|
}
|
|
@@ -2360,7 +2360,7 @@ let et = class {
|
|
|
2360
2360
|
* геометрия которых переписывается под текущую грань.
|
|
2361
2361
|
*/
|
|
2362
2362
|
_makeOverlayFace(e) {
|
|
2363
|
-
const t = new a.BufferGeometry(),
|
|
2363
|
+
const t = new a.BufferGeometry(), s = new a.MeshBasicMaterial({
|
|
2364
2364
|
color: e,
|
|
2365
2365
|
transparent: !0,
|
|
2366
2366
|
opacity: 0.35,
|
|
@@ -2370,18 +2370,18 @@ let et = class {
|
|
|
2370
2370
|
polygonOffset: !0,
|
|
2371
2371
|
polygonOffsetFactor: -1,
|
|
2372
2372
|
polygonOffsetUnits: -1
|
|
2373
|
-
}),
|
|
2374
|
-
return
|
|
2375
|
-
},
|
|
2373
|
+
}), r = new a.Mesh(t, s);
|
|
2374
|
+
return r.renderOrder = 1e3, r.layers.set($), r.visible = !1, r.raycast = () => {
|
|
2375
|
+
}, r;
|
|
2376
2376
|
}
|
|
2377
2377
|
/**
|
|
2378
2378
|
* Сбор логической грани как связной группы компланарных треугольников.
|
|
2379
2379
|
* Если geometry неиндексированная — пока возвращаем только стартовый triangle.
|
|
2380
2380
|
*/
|
|
2381
2381
|
_collectFaceGroup(e, t) {
|
|
2382
|
-
const
|
|
2383
|
-
if (!
|
|
2384
|
-
const i =
|
|
2382
|
+
const s = e.geometry, r = s.getAttribute("position");
|
|
2383
|
+
if (!r) return null;
|
|
2384
|
+
const i = s.index;
|
|
2385
2385
|
if (!i) {
|
|
2386
2386
|
const M = t * 3, I = t * 3 + 1, y = t * 3 + 2;
|
|
2387
2387
|
return {
|
|
@@ -2394,13 +2394,13 @@ let et = class {
|
|
|
2394
2394
|
}
|
|
2395
2395
|
const n = Math.floor(i.count / 3);
|
|
2396
2396
|
if (t < 0 || t >= n) return null;
|
|
2397
|
-
const o = this._buildTriangleAdjacency(i,
|
|
2397
|
+
const o = this._buildTriangleAdjacency(i, r), [l, h, d] = this._getTriangleIndices(i, t), p = this._readVertex(r, l), u = this._readVertex(r, h), m = this._readVertex(r, d), f = new a.Vector3().subVectors(u, p).cross(new a.Vector3().subVectors(m, p)).normalize(), _ = new a.Plane().setFromNormalAndCoplanarPoint(f, p), g = /* @__PURE__ */ new Set(), b = [], x = [t];
|
|
2398
2398
|
for (; x.length > 0; ) {
|
|
2399
2399
|
const M = x.pop();
|
|
2400
2400
|
if (g.has(M)) continue;
|
|
2401
2401
|
g.add(M);
|
|
2402
|
-
const [I, y, C] = this._getTriangleIndices(i, M), A = this._readVertex(
|
|
2403
|
-
if (!
|
|
2402
|
+
const [I, y, C] = this._getTriangleIndices(i, M), A = this._readVertex(r, I), D = this._readVertex(r, y), j = this._readVertex(r, C), F = new a.Vector3().subVectors(D, A).cross(new a.Vector3().subVectors(j, A)).normalize(), Ms = Math.abs(F.dot(f)) >= 1 - this._normalEps, ys = Math.abs(_.distanceToPoint(A)) < this._planeEps && Math.abs(_.distanceToPoint(D)) < this._planeEps && Math.abs(_.distanceToPoint(j)) < this._planeEps;
|
|
2403
|
+
if (!Ms || !ys) continue;
|
|
2404
2404
|
b.push(M);
|
|
2405
2405
|
const At = o.get(M);
|
|
2406
2406
|
if (At)
|
|
@@ -2423,12 +2423,12 @@ let et = class {
|
|
|
2423
2423
|
}
|
|
2424
2424
|
/** Перезаписывает overlay mesh world-space треугольниками выбранной грани */
|
|
2425
2425
|
_writeWorldFaceGroup(e, t) {
|
|
2426
|
-
const
|
|
2426
|
+
const s = t.mesh.geometry, r = s.getAttribute("position"), i = s.index, n = new Float32Array(t.triangleIndices.length * 9);
|
|
2427
2427
|
let o = 0;
|
|
2428
2428
|
for (const h of t.triangleIndices) {
|
|
2429
2429
|
let d, p, u;
|
|
2430
2430
|
i ? [d, p, u] = this._getTriangleIndices(i, h) : (d = h * 3, p = h * 3 + 1, u = h * 3 + 2);
|
|
2431
|
-
const m = this._readVertex(
|
|
2431
|
+
const m = this._readVertex(r, d).applyMatrix4(t.mesh.matrixWorld), f = this._readVertex(r, p).applyMatrix4(t.mesh.matrixWorld), _ = this._readVertex(r, u).applyMatrix4(t.mesh.matrixWorld);
|
|
2432
2432
|
n[o++] = m.x, n[o++] = m.y, n[o++] = m.z, n[o++] = f.x, n[o++] = f.y, n[o++] = f.z, n[o++] = _.x, n[o++] = _.y, n[o++] = _.z;
|
|
2433
2433
|
}
|
|
2434
2434
|
const l = e.geometry;
|
|
@@ -2436,19 +2436,19 @@ let et = class {
|
|
|
2436
2436
|
}
|
|
2437
2437
|
/** Сравнение двух логических граней */
|
|
2438
2438
|
_same(e, t) {
|
|
2439
|
-
return !!e && !!t && e.mesh === t.mesh && e.triangleIndices.length === t.triangleIndices.length && e.triangleIndices.every((
|
|
2439
|
+
return !!e && !!t && e.mesh === t.mesh && e.triangleIndices.length === t.triangleIndices.length && e.triangleIndices.every((s, r) => s === t.triangleIndices[r]);
|
|
2440
2440
|
}
|
|
2441
2441
|
/** Подготовка метаданных выбранной грани для инструментов */
|
|
2442
2442
|
_prepareFaceMetadata(e) {
|
|
2443
|
-
const { vertexIndexGroups: t, proxyVertexMap:
|
|
2443
|
+
const { vertexIndexGroups: t, proxyVertexMap: s, lines: r, lineVertexIndexGroups: i } = this._buildFaceVertexGroups(e);
|
|
2444
2444
|
this._selectFace.userData.faceInfo = {
|
|
2445
2445
|
mesh: e.mesh,
|
|
2446
2446
|
faceIndex: e.faceIndex,
|
|
2447
2447
|
triangleIndices: e.triangleIndices,
|
|
2448
2448
|
vertexIndices: e.vertexIndices,
|
|
2449
2449
|
vertexIndexGroups: t,
|
|
2450
|
-
proxyVertexMap:
|
|
2451
|
-
lines:
|
|
2450
|
+
proxyVertexMap: s,
|
|
2451
|
+
lines: r,
|
|
2452
2452
|
lineVertexIndexGroups: i
|
|
2453
2453
|
};
|
|
2454
2454
|
}
|
|
@@ -2457,32 +2457,32 @@ let et = class {
|
|
|
2457
2457
|
* После записи world-space вершин переносит геометрию в локальные координаты proxy mesh.
|
|
2458
2458
|
*/
|
|
2459
2459
|
_centerFaceProxy(e) {
|
|
2460
|
-
const t = e.geometry,
|
|
2461
|
-
if (!
|
|
2462
|
-
const
|
|
2463
|
-
for (let i = 0; i <
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
for (let i = 0; i <
|
|
2467
|
-
|
|
2468
|
-
|
|
2460
|
+
const t = e.geometry, s = t.getAttribute("position");
|
|
2461
|
+
if (!s || s.count === 0) return;
|
|
2462
|
+
const r = new a.Vector3();
|
|
2463
|
+
for (let i = 0; i < s.count; i++)
|
|
2464
|
+
r.x += s.getX(i), r.y += s.getY(i), r.z += s.getZ(i);
|
|
2465
|
+
r.multiplyScalar(1 / s.count);
|
|
2466
|
+
for (let i = 0; i < s.count; i++)
|
|
2467
|
+
s.setXYZ(i, s.getX(i) - r.x, s.getY(i) - r.y, s.getZ(i) - r.z);
|
|
2468
|
+
s.needsUpdate = !0, e.position.copy(r), e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0), t.computeBoundingBox(), t.computeBoundingSphere();
|
|
2469
2469
|
}
|
|
2470
2470
|
/** Регистрирует ребро треугольника в edge map */
|
|
2471
|
-
_pushEdge(e, t,
|
|
2472
|
-
const i = t <
|
|
2473
|
-
n ? n.push(
|
|
2471
|
+
_pushEdge(e, t, s, r) {
|
|
2472
|
+
const i = t < s ? `${t}_${s}` : `${s}_${t}`, n = e.get(i);
|
|
2473
|
+
n ? n.push(r) : e.set(i, [r]);
|
|
2474
2474
|
}
|
|
2475
2475
|
/** Строит граф соседства треугольников по общим ребрам */
|
|
2476
2476
|
_buildTriangleAdjacency(e, t) {
|
|
2477
|
-
const
|
|
2478
|
-
for (let l = 0; l <
|
|
2477
|
+
const s = Math.floor(e.count / 3), r = /* @__PURE__ */ new Map(), i = this._buildWeldMap(e, t);
|
|
2478
|
+
for (let l = 0; l < s; l++) {
|
|
2479
2479
|
const [h, d, p] = this._getTriangleIndices(e, l), u = i.get(h), m = i.get(d), f = i.get(p);
|
|
2480
|
-
this._pushEdge(
|
|
2480
|
+
this._pushEdge(r, u, m, l), this._pushEdge(r, m, f, l), this._pushEdge(r, f, u, l);
|
|
2481
2481
|
}
|
|
2482
2482
|
const n = /* @__PURE__ */ new Map();
|
|
2483
|
-
for (let l = 0; l <
|
|
2483
|
+
for (let l = 0; l < s; l++)
|
|
2484
2484
|
n.set(l, /* @__PURE__ */ new Set());
|
|
2485
|
-
for (const l of
|
|
2485
|
+
for (const l of r.values())
|
|
2486
2486
|
if (!(l.length < 2))
|
|
2487
2487
|
for (let h = 0; h < l.length; h++)
|
|
2488
2488
|
for (let d = 0; d < l.length; d++)
|
|
@@ -2501,9 +2501,9 @@ let et = class {
|
|
|
2501
2501
|
return new a.Vector3(e.getX(t), e.getY(t), e.getZ(t));
|
|
2502
2502
|
}
|
|
2503
2503
|
/** Построение ключа вершины по позиции */
|
|
2504
|
-
_vertexKey(e, t,
|
|
2505
|
-
const
|
|
2506
|
-
return `${
|
|
2504
|
+
_vertexKey(e, t, s = 1e-6) {
|
|
2505
|
+
const r = Math.round(e.getX(t) / s), i = Math.round(e.getY(t) / s), n = Math.round(e.getZ(t) / s);
|
|
2506
|
+
return `${r}_${i}_${n}`;
|
|
2507
2507
|
}
|
|
2508
2508
|
/**
|
|
2509
2509
|
* Строит отображение исходных индексов вершин в "сваренные" ids по координате.
|
|
@@ -2511,27 +2511,27 @@ let et = class {
|
|
|
2511
2511
|
* но используют разные индексы вершин (например, цилиндрические крышки, UV seams и т.п.).
|
|
2512
2512
|
*/
|
|
2513
2513
|
_buildWeldMap(e, t) {
|
|
2514
|
-
const
|
|
2514
|
+
const s = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
2515
2515
|
let i = 0;
|
|
2516
2516
|
for (let n = 0; n < e.count; n++) {
|
|
2517
2517
|
const o = e.getX(n);
|
|
2518
|
-
if (
|
|
2518
|
+
if (r.has(o)) continue;
|
|
2519
2519
|
const l = this._vertexKey(t, o);
|
|
2520
|
-
let h =
|
|
2521
|
-
h == null && (h = i++,
|
|
2520
|
+
let h = s.get(l);
|
|
2521
|
+
h == null && (h = i++, s.set(l, h)), r.set(o, h);
|
|
2522
2522
|
}
|
|
2523
|
-
return
|
|
2523
|
+
return r;
|
|
2524
2524
|
}
|
|
2525
2525
|
/** Сбрасывает transform proxy-граням */
|
|
2526
2526
|
_resetFaceProxyTransform(e) {
|
|
2527
2527
|
e.position.set(0, 0, 0), e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0);
|
|
2528
2528
|
}
|
|
2529
2529
|
_buildFaceVertexGroups(e) {
|
|
2530
|
-
const
|
|
2530
|
+
const s = e.mesh.geometry.getAttribute("position"), r = 1e-6, i = new a.Vector3(), n = e.vertexIndices, o = [], l = /* @__PURE__ */ new Map();
|
|
2531
2531
|
for (const m of n) {
|
|
2532
|
-
const f = this._readVertex(
|
|
2533
|
-
for (let b = 0; b <
|
|
2534
|
-
i.fromBufferAttribute(
|
|
2532
|
+
const f = this._readVertex(s, m), _ = [];
|
|
2533
|
+
for (let b = 0; b < s.count; b++)
|
|
2534
|
+
i.fromBufferAttribute(s, b), i.distanceToSquared(f) < r * r && _.push(b);
|
|
2535
2535
|
const g = o.length;
|
|
2536
2536
|
o.push(_);
|
|
2537
2537
|
for (const b of _)
|
|
@@ -2555,11 +2555,11 @@ let et = class {
|
|
|
2555
2555
|
return null;
|
|
2556
2556
|
}
|
|
2557
2557
|
_buildLineVertexGroups(e, t) {
|
|
2558
|
-
const
|
|
2558
|
+
const r = t.geometry.getAttribute("position"), n = e.mesh.geometry.getAttribute("position"), o = 1e-6, l = new a.Vector3(), h = t.matrixWorld, d = e.mesh.matrixWorld, p = [];
|
|
2559
2559
|
for (const u of e.vertexIndices) {
|
|
2560
2560
|
const m = this._readVertex(n, u).applyMatrix4(d), f = [];
|
|
2561
|
-
for (let _ = 0; _ <
|
|
2562
|
-
l.fromBufferAttribute(
|
|
2561
|
+
for (let _ = 0; _ < r.count; _++)
|
|
2562
|
+
l.fromBufferAttribute(r, _).applyMatrix4(h), l.distanceToSquared(m) < o * o && f.push(_);
|
|
2563
2563
|
p.push(f);
|
|
2564
2564
|
}
|
|
2565
2565
|
return p;
|
|
@@ -2572,11 +2572,11 @@ et = mi([
|
|
|
2572
2572
|
ie(2, c("IRaycastApi")),
|
|
2573
2573
|
ie(3, c("EditorStore"))
|
|
2574
2574
|
], et);
|
|
2575
|
-
var fi = Object.getOwnPropertyDescriptor, gi = (e, t,
|
|
2576
|
-
for (var i =
|
|
2575
|
+
var fi = Object.getOwnPropertyDescriptor, gi = (e, t, s, r) => {
|
|
2576
|
+
for (var i = r > 1 ? void 0 : r ? fi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2577
2577
|
(o = e[n]) && (i = o(i) || i);
|
|
2578
2578
|
return i;
|
|
2579
|
-
}, Ft = (e, t) => (
|
|
2579
|
+
}, Ft = (e, t) => (s, r) => t(s, r, e);
|
|
2580
2580
|
let tt = class {
|
|
2581
2581
|
constructor(e, t) {
|
|
2582
2582
|
this._api = e, this._store = t;
|
|
@@ -2600,16 +2600,16 @@ let tt = class {
|
|
|
2600
2600
|
this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), this._hoveredMesh = null;
|
|
2601
2601
|
return;
|
|
2602
2602
|
}
|
|
2603
|
-
const
|
|
2604
|
-
this._hoveredMesh !==
|
|
2603
|
+
const s = e.intersection.object;
|
|
2604
|
+
this._hoveredMesh !== s && (this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), s !== this._selectedMesh && this._paintEdges(s, this._hoverColor), this._hoveredMesh = s);
|
|
2605
2605
|
}
|
|
2606
2606
|
if (t === R.Click) {
|
|
2607
2607
|
if (!e) {
|
|
2608
2608
|
this._selectedMesh && (this._restoreEdgesColor(this._selectedMesh), this._selectedMesh = null, this._store.setSelectedObject(null));
|
|
2609
2609
|
return;
|
|
2610
2610
|
}
|
|
2611
|
-
const
|
|
2612
|
-
this._selectedMesh && this._selectedMesh !==
|
|
2611
|
+
const s = e.intersection.object;
|
|
2612
|
+
this._selectedMesh && this._selectedMesh !== s && this._restoreEdgesColor(this._selectedMesh), this._paintEdges(s, this._selectColor), this._selectedMesh = s, this._store.setSelectedObject(s);
|
|
2613
2613
|
}
|
|
2614
2614
|
}
|
|
2615
2615
|
rollback() {
|
|
@@ -2623,11 +2623,11 @@ let tt = class {
|
|
|
2623
2623
|
* Перекрасить рёбра меша и запомнить оригинальный цвет (один раз на LineSegments).
|
|
2624
2624
|
*/
|
|
2625
2625
|
_paintEdges(e, t) {
|
|
2626
|
-
e.children.forEach((
|
|
2627
|
-
const
|
|
2628
|
-
if (
|
|
2629
|
-
const i =
|
|
2630
|
-
this._origLineColors.has(
|
|
2626
|
+
e.children.forEach((s) => {
|
|
2627
|
+
const r = s;
|
|
2628
|
+
if (r.isLineSegments && r.material) {
|
|
2629
|
+
const i = r.material;
|
|
2630
|
+
this._origLineColors.has(r) || this._origLineColors.set(r, i.color.clone()), i.color.setHex(t), i.needsUpdate = !0;
|
|
2631
2631
|
}
|
|
2632
2632
|
});
|
|
2633
2633
|
}
|
|
@@ -2637,12 +2637,12 @@ let tt = class {
|
|
|
2637
2637
|
*/
|
|
2638
2638
|
_restoreEdgesColor(e) {
|
|
2639
2639
|
e.children.forEach((t) => {
|
|
2640
|
-
const
|
|
2641
|
-
if (
|
|
2642
|
-
const
|
|
2643
|
-
if (
|
|
2644
|
-
const i =
|
|
2645
|
-
i.color.copy(
|
|
2640
|
+
const s = t;
|
|
2641
|
+
if (s.isLineSegments && s.material) {
|
|
2642
|
+
const r = this._origLineColors.get(s);
|
|
2643
|
+
if (r) {
|
|
2644
|
+
const i = s.material;
|
|
2645
|
+
i.color.copy(r), i.needsUpdate = !0;
|
|
2646
2646
|
}
|
|
2647
2647
|
}
|
|
2648
2648
|
});
|
|
@@ -2653,14 +2653,14 @@ tt = gi([
|
|
|
2653
2653
|
Ft(0, c("IRaycastApi")),
|
|
2654
2654
|
Ft(1, c("EditorStore"))
|
|
2655
2655
|
], tt);
|
|
2656
|
-
var vi = Object.getOwnPropertyDescriptor, bi = (e, t,
|
|
2657
|
-
for (var i =
|
|
2656
|
+
var vi = Object.getOwnPropertyDescriptor, bi = (e, t, s, r) => {
|
|
2657
|
+
for (var i = r > 1 ? void 0 : r ? vi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2658
2658
|
(o = e[n]) && (i = o(i) || i);
|
|
2659
2659
|
return i;
|
|
2660
|
-
}, ne = (e, t) => (
|
|
2661
|
-
let
|
|
2662
|
-
constructor(e, t,
|
|
2663
|
-
this._cameraApi = e, this._sceneApi = t, this._raycastApi =
|
|
2660
|
+
}, ne = (e, t) => (s, r) => t(s, r, e);
|
|
2661
|
+
let st = class {
|
|
2662
|
+
constructor(e, t, s, r) {
|
|
2663
|
+
this._cameraApi = e, this._sceneApi = t, this._raycastApi = s, this._store = r, this._cameraApi.enableCameraLayer($), this._hoverVertex = Y(this._makeOverlayVertex(this._hoverColor)), this._selectVertex = Y(this._makeOverlayVertex(this._selectColor)), this._sceneApi.addObject(this._hoverVertex, $), this._sceneApi.addObject(this._selectVertex, $);
|
|
2664
2664
|
}
|
|
2665
2665
|
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
2666
2666
|
mode = O.Vertex;
|
|
@@ -2681,11 +2681,11 @@ let rt = class {
|
|
|
2681
2681
|
this._hoverVertex.visible = !1, this._hovered = null;
|
|
2682
2682
|
return;
|
|
2683
2683
|
}
|
|
2684
|
-
const
|
|
2685
|
-
if (!
|
|
2686
|
-
const
|
|
2684
|
+
const s = e.intersection.object;
|
|
2685
|
+
if (!s?.isPoints) return;
|
|
2686
|
+
const r = s, i = e.intersection.index ?? -1;
|
|
2687
2687
|
if (i < 0) return;
|
|
2688
|
-
this._selected && this._same({ points:
|
|
2688
|
+
this._selected && this._same({ points: r, index: i }, this._selected) ? this._hoverVertex.visible = !1 : (this._writeWorldVertex(this._hoverVertex, r, i), this._hoverVertex.visible = !0);
|
|
2689
2689
|
return;
|
|
2690
2690
|
}
|
|
2691
2691
|
if (t === R.Click) {
|
|
@@ -2693,11 +2693,11 @@ let rt = class {
|
|
|
2693
2693
|
this._selectVertex.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
2694
2694
|
return;
|
|
2695
2695
|
}
|
|
2696
|
-
const
|
|
2697
|
-
if (!
|
|
2698
|
-
const
|
|
2696
|
+
const s = e.intersection.object;
|
|
2697
|
+
if (!s?.isPoints) return;
|
|
2698
|
+
const r = s, i = e.intersection.index ?? -1;
|
|
2699
2699
|
if (i < 0) return;
|
|
2700
|
-
this._writeWorldVertex(this._selectVertex,
|
|
2700
|
+
this._writeWorldVertex(this._selectVertex, r, i), this._centerVertexOnPoint(this._selectVertex, r, i), this._selectVertex.visible = !0, this._prepareVertexMetadata(r, i), this._store.setSelectedObject(this._selectVertex), this._selected = { points: r, index: i }, this._hovered && this._same(this._hovered, this._selected) && (this._hoverVertex.visible = !1);
|
|
2701
2701
|
return;
|
|
2702
2702
|
}
|
|
2703
2703
|
}
|
|
@@ -2707,10 +2707,10 @@ let rt = class {
|
|
|
2707
2707
|
dispose() {
|
|
2708
2708
|
this.rollback(), this._sceneApi.removeFromScene(this._hoverVertex), this._sceneApi.removeFromScene(this._selectVertex), this._hoverVertex.geometry.dispose(), this._hoverVertex.material.dispose(), this._selectVertex.geometry.dispose(), this._selectVertex.material.dispose();
|
|
2709
2709
|
}
|
|
2710
|
-
_makeOverlayVertex(e, t =
|
|
2711
|
-
const
|
|
2712
|
-
|
|
2713
|
-
const
|
|
2710
|
+
_makeOverlayVertex(e, t = Xs) {
|
|
2711
|
+
const s = new a.BufferGeometry();
|
|
2712
|
+
s.setAttribute("position", new a.Float32BufferAttribute([0, 0, 0], 3));
|
|
2713
|
+
const r = new a.PointsMaterial({
|
|
2714
2714
|
color: e,
|
|
2715
2715
|
size: t,
|
|
2716
2716
|
sizeAttenuation: !1,
|
|
@@ -2718,16 +2718,16 @@ let rt = class {
|
|
|
2718
2718
|
depthWrite: !1,
|
|
2719
2719
|
transparent: !0,
|
|
2720
2720
|
opacity: 1
|
|
2721
|
-
}), i = new a.Points(
|
|
2721
|
+
}), i = new a.Points(s, r);
|
|
2722
2722
|
return i.renderOrder = 1e3, i.raycast = () => {
|
|
2723
2723
|
}, i.layers.set($), i.visible = !1, i;
|
|
2724
2724
|
}
|
|
2725
2725
|
/** Локальную вершину points переводим в world и пишем в target (прокси-точку) */
|
|
2726
|
-
_writeWorldVertex(e, t,
|
|
2727
|
-
const
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2726
|
+
_writeWorldVertex(e, t, s) {
|
|
2727
|
+
const r = t.geometry.getAttribute("position"), i = new a.Vector3(
|
|
2728
|
+
r.getX(s),
|
|
2729
|
+
r.getY(s),
|
|
2730
|
+
r.getZ(s)
|
|
2731
2731
|
).applyMatrix4(t.matrixWorld), n = e.geometry.getAttribute("position");
|
|
2732
2732
|
n.setXYZ(0, i.x, i.y, i.z), n.needsUpdate = !0;
|
|
2733
2733
|
}
|
|
@@ -2736,16 +2736,16 @@ let rt = class {
|
|
|
2736
2736
|
}
|
|
2737
2737
|
/** Готовит метаданные для выбранной вершины и пишет их в _selectVertex.userData */
|
|
2738
2738
|
_prepareVertexMetadata(e, t) {
|
|
2739
|
-
const
|
|
2740
|
-
if (!
|
|
2741
|
-
const
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
).applyMatrix4(e.matrixWorld), n = new a.Matrix4().copy(
|
|
2739
|
+
const s = es(e);
|
|
2740
|
+
if (!s) return;
|
|
2741
|
+
const r = e.geometry.getAttribute("position"), i = new a.Vector3(
|
|
2742
|
+
r.getX(t),
|
|
2743
|
+
r.getY(t),
|
|
2744
|
+
r.getZ(t)
|
|
2745
|
+
).applyMatrix4(e.matrixWorld), n = new a.Matrix4().copy(s.matrixWorld).invert(), o = i.clone().applyMatrix4(n), h = s.geometry.getAttribute("position"), d = 1e-6, p = d * d, u = new a.Vector3(), m = [];
|
|
2746
2746
|
for (let g = 0; g < h.count; g++)
|
|
2747
2747
|
u.fromBufferAttribute(h, g), u.distanceToSquared(o) < p && m.push(g);
|
|
2748
|
-
const f =
|
|
2748
|
+
const f = s.children.find((g) => g?.isLineSegments);
|
|
2749
2749
|
let _ = [];
|
|
2750
2750
|
if (f) {
|
|
2751
2751
|
const g = new a.Matrix4().copy(f.matrixWorld).invert(), b = i.clone().applyMatrix4(g), x = f.geometry.getAttribute("position"), S = new a.Vector3();
|
|
@@ -2755,18 +2755,18 @@ let rt = class {
|
|
|
2755
2755
|
this._selectVertex.userData.vertexInfo = {
|
|
2756
2756
|
points: e,
|
|
2757
2757
|
index: t,
|
|
2758
|
-
mesh:
|
|
2758
|
+
mesh: s,
|
|
2759
2759
|
vertexIndices: m,
|
|
2760
2760
|
lines: f ?? null,
|
|
2761
2761
|
edgeVertexIndices: _
|
|
2762
2762
|
};
|
|
2763
2763
|
}
|
|
2764
2764
|
/** Центрует прокси-вершину на выбранной точке */
|
|
2765
|
-
_centerVertexOnPoint(e, t,
|
|
2766
|
-
const
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2765
|
+
_centerVertexOnPoint(e, t, s) {
|
|
2766
|
+
const r = t.geometry.getAttribute("position"), i = new a.Vector3(
|
|
2767
|
+
r.getX(s),
|
|
2768
|
+
r.getY(s),
|
|
2769
|
+
r.getZ(s)
|
|
2770
2770
|
).applyMatrix4(t.matrixWorld);
|
|
2771
2771
|
e.position.copy(i);
|
|
2772
2772
|
const n = e.geometry;
|
|
@@ -2774,16 +2774,16 @@ let rt = class {
|
|
|
2774
2774
|
(!o || o.count < 1) && (n.setAttribute("position", new a.BufferAttribute(new Float32Array(3), 3)), o = n.getAttribute("position")), o.setXYZ(0, 0, 0, 0), o.needsUpdate = !0, e.quaternion.identity(), e.scale.set(1, 1, 1), e.updateMatrixWorld(!0);
|
|
2775
2775
|
}
|
|
2776
2776
|
};
|
|
2777
|
-
|
|
2777
|
+
st = bi([
|
|
2778
2778
|
v(),
|
|
2779
2779
|
ne(0, c("ICameraApi")),
|
|
2780
2780
|
ne(1, c("ISceneApi")),
|
|
2781
2781
|
ne(2, c("IRaycastApi")),
|
|
2782
2782
|
ne(3, c("EditorStore"))
|
|
2783
|
-
],
|
|
2783
|
+
], st);
|
|
2784
2784
|
class wt {
|
|
2785
|
-
constructor(t,
|
|
2786
|
-
this.api = t, this.store =
|
|
2785
|
+
constructor(t, s) {
|
|
2786
|
+
this.api = t, this.store = s, this._unsubscribeTransform = this.api.onTransformChange(() => {
|
|
2787
2787
|
this.store.getSelectedObject() && this.store.notifySelectedTransformChange?.();
|
|
2788
2788
|
});
|
|
2789
2789
|
}
|
|
@@ -2808,28 +2808,28 @@ class wt {
|
|
|
2808
2808
|
this.rollback(), this._unsubscribeTransform && this._unsubscribeTransform();
|
|
2809
2809
|
}
|
|
2810
2810
|
}
|
|
2811
|
-
var Mi = Object.getOwnPropertyDescriptor, yi = (e, t,
|
|
2812
|
-
for (var i =
|
|
2811
|
+
var Mi = Object.getOwnPropertyDescriptor, yi = (e, t, s, r) => {
|
|
2812
|
+
for (var i = r > 1 ? void 0 : r ? Mi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2813
2813
|
(o = e[n]) && (i = o(i) || i);
|
|
2814
2814
|
return i;
|
|
2815
|
-
}, kt = (e, t) => (
|
|
2816
|
-
let
|
|
2815
|
+
}, kt = (e, t) => (s, r) => t(s, r, e);
|
|
2816
|
+
let rt = class extends wt {
|
|
2817
2817
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
2818
2818
|
mode = W.Rotate;
|
|
2819
2819
|
constructor(e, t) {
|
|
2820
2820
|
super(e, t);
|
|
2821
2821
|
}
|
|
2822
2822
|
};
|
|
2823
|
-
|
|
2823
|
+
rt = yi([
|
|
2824
2824
|
v(),
|
|
2825
2825
|
kt(0, c("ITransformApi")),
|
|
2826
2826
|
kt(1, c("EditorStore"))
|
|
2827
|
-
],
|
|
2828
|
-
var wi = Object.getOwnPropertyDescriptor, Si = (e, t,
|
|
2829
|
-
for (var i =
|
|
2827
|
+
], rt);
|
|
2828
|
+
var wi = Object.getOwnPropertyDescriptor, Si = (e, t, s, r) => {
|
|
2829
|
+
for (var i = r > 1 ? void 0 : r ? wi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2830
2830
|
(o = e[n]) && (i = o(i) || i);
|
|
2831
2831
|
return i;
|
|
2832
|
-
}, Gt = (e, t) => (
|
|
2832
|
+
}, Gt = (e, t) => (s, r) => t(s, r, e);
|
|
2833
2833
|
let it = class extends wt {
|
|
2834
2834
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
2835
2835
|
mode = W.Scale;
|
|
@@ -2842,11 +2842,11 @@ it = Si([
|
|
|
2842
2842
|
Gt(0, c("ITransformApi")),
|
|
2843
2843
|
Gt(1, c("EditorStore"))
|
|
2844
2844
|
], it);
|
|
2845
|
-
var xi = Object.getOwnPropertyDescriptor, Ai = (e, t,
|
|
2846
|
-
for (var i =
|
|
2845
|
+
var xi = Object.getOwnPropertyDescriptor, Ai = (e, t, s, r) => {
|
|
2846
|
+
for (var i = r > 1 ? void 0 : r ? xi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2847
2847
|
(o = e[n]) && (i = o(i) || i);
|
|
2848
2848
|
return i;
|
|
2849
|
-
}, zt = (e, t) => (
|
|
2849
|
+
}, zt = (e, t) => (s, r) => t(s, r, e);
|
|
2850
2850
|
let nt = class extends wt {
|
|
2851
2851
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
2852
2852
|
mode = W.Translate;
|
|
@@ -2859,11 +2859,11 @@ nt = Ai([
|
|
|
2859
2859
|
zt(0, c("ITransformApi")),
|
|
2860
2860
|
zt(1, c("EditorStore"))
|
|
2861
2861
|
], nt);
|
|
2862
|
-
var Ii = Object.getOwnPropertyDescriptor, Ci = (e, t,
|
|
2863
|
-
for (var i =
|
|
2862
|
+
var Ii = Object.getOwnPropertyDescriptor, Ci = (e, t, s, r) => {
|
|
2863
|
+
for (var i = r > 1 ? void 0 : r ? Ii(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2864
2864
|
(o = e[n]) && (i = o(i) || i);
|
|
2865
2865
|
return i;
|
|
2866
|
-
}, Oi = (e, t) => (
|
|
2866
|
+
}, Oi = (e, t) => (s, r) => t(s, r, e);
|
|
2867
2867
|
let ge = class {
|
|
2868
2868
|
constructor(e) {
|
|
2869
2869
|
this._api = e;
|
|
@@ -2874,14 +2874,14 @@ let ge = class {
|
|
|
2874
2874
|
_lastAddedMesh = null;
|
|
2875
2875
|
/** Добавление базовых фигур на сцену, которые приписаны в `FigureType`. */
|
|
2876
2876
|
handle(e) {
|
|
2877
|
-
const t =
|
|
2878
|
-
|
|
2879
|
-
const
|
|
2880
|
-
|
|
2881
|
-
const i = t.index ? t.toNonIndexed() : t, n = N(
|
|
2882
|
-
n.layers.enable(k),
|
|
2883
|
-
const o = N(
|
|
2884
|
-
o.layers.enable(k),
|
|
2877
|
+
const t = Us[e](), s = t.getAttribute("position");
|
|
2878
|
+
s && s.setUsage && s.setUsage(a.DynamicDrawUsage);
|
|
2879
|
+
const r = new a.Mesh(t, Zt.clone());
|
|
2880
|
+
r.layers.enable(k);
|
|
2881
|
+
const i = t.index ? t.toNonIndexed() : t, n = N(ss(i));
|
|
2882
|
+
n.layers.enable(k), r.add(n);
|
|
2883
|
+
const o = N(ts(i));
|
|
2884
|
+
o.layers.enable(k), r.add(o), this._api.addMesh(r), this._lastAddedMesh = r;
|
|
2885
2885
|
}
|
|
2886
2886
|
/** Срабатывает только на `ctrl + z`. */
|
|
2887
2887
|
rollback() {
|
|
@@ -2896,11 +2896,11 @@ ge = Ci([
|
|
|
2896
2896
|
v(),
|
|
2897
2897
|
Oi(0, c("IMeshApi"))
|
|
2898
2898
|
], ge);
|
|
2899
|
-
var Ei = Object.getOwnPropertyDescriptor, Pi = (e, t,
|
|
2900
|
-
for (var i =
|
|
2899
|
+
var Ei = Object.getOwnPropertyDescriptor, Pi = (e, t, s, r) => {
|
|
2900
|
+
for (var i = r > 1 ? void 0 : r ? Ei(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
2901
2901
|
(o = e[n]) && (i = o(i) || i);
|
|
2902
2902
|
return i;
|
|
2903
|
-
}, Wt = (e, t) => (
|
|
2903
|
+
}, Wt = (e, t) => (s, r) => t(s, r, e);
|
|
2904
2904
|
let ot = class {
|
|
2905
2905
|
constructor(e, t) {
|
|
2906
2906
|
this._api = e, this._store = t;
|
|
@@ -2911,7 +2911,7 @@ let ot = class {
|
|
|
2911
2911
|
_lastDeletedMesh = null;
|
|
2912
2912
|
handle() {
|
|
2913
2913
|
const e = this._store.getSelectedObject();
|
|
2914
|
-
yt(e) && !
|
|
2914
|
+
yt(e) && !rs(e) && (this._api.removeMesh(e), this._store.setSelectedObject(null), this._lastDeletedMesh = e);
|
|
2915
2915
|
}
|
|
2916
2916
|
/** Срабатывает только на `ctrl + z`. */
|
|
2917
2917
|
rollback() {
|
|
@@ -2937,94 +2937,94 @@ class Li {
|
|
|
2937
2937
|
* @return {string} The exported OBJ.
|
|
2938
2938
|
*/
|
|
2939
2939
|
parse(t) {
|
|
2940
|
-
let
|
|
2941
|
-
const o = new z(), l = new Kt(), h = new z(), d = new
|
|
2940
|
+
let s = "", r = 0, i = 0, n = 0;
|
|
2941
|
+
const o = new z(), l = new Kt(), h = new z(), d = new Is(), p = [];
|
|
2942
2942
|
function u(_) {
|
|
2943
2943
|
let g = 0, b = 0, x = 0;
|
|
2944
|
-
const S = _.geometry, w = new
|
|
2945
|
-
if (
|
|
2946
|
-
`, _.material && _.material.name && (
|
|
2944
|
+
const S = _.geometry, w = new Cs(), M = S.getAttribute("position"), I = S.getAttribute("normal"), y = S.getAttribute("uv"), C = S.getIndex();
|
|
2945
|
+
if (s += "o " + _.name + `
|
|
2946
|
+
`, _.material && _.material.name && (s += "usemtl " + _.material.name + `
|
|
2947
2947
|
`), M !== void 0)
|
|
2948
2948
|
for (let A = 0, D = M.count; A < D; A++, g++)
|
|
2949
|
-
o.fromBufferAttribute(M, A), o.applyMatrix4(_.matrixWorld),
|
|
2949
|
+
o.fromBufferAttribute(M, A), o.applyMatrix4(_.matrixWorld), s += "v " + o.x + " " + o.y + " " + o.z + `
|
|
2950
2950
|
`;
|
|
2951
2951
|
if (y !== void 0)
|
|
2952
2952
|
for (let A = 0, D = y.count; A < D; A++, x++)
|
|
2953
|
-
d.fromBufferAttribute(y, A),
|
|
2953
|
+
d.fromBufferAttribute(y, A), s += "vt " + d.x + " " + d.y + `
|
|
2954
2954
|
`;
|
|
2955
2955
|
if (I !== void 0) {
|
|
2956
2956
|
w.getNormalMatrix(_.matrixWorld);
|
|
2957
2957
|
for (let A = 0, D = I.count; A < D; A++, b++)
|
|
2958
|
-
h.fromBufferAttribute(I, A), h.applyMatrix3(w).normalize(),
|
|
2958
|
+
h.fromBufferAttribute(I, A), h.applyMatrix3(w).normalize(), s += "vn " + h.x + " " + h.y + " " + h.z + `
|
|
2959
2959
|
`;
|
|
2960
2960
|
}
|
|
2961
2961
|
if (C !== null)
|
|
2962
2962
|
for (let A = 0, D = C.count; A < D; A += 3) {
|
|
2963
2963
|
for (let j = 0; j < 3; j++) {
|
|
2964
2964
|
const F = C.getX(A + j) + 1;
|
|
2965
|
-
p[j] =
|
|
2965
|
+
p[j] = r + F + (I || y ? "/" + (y ? i + F : "") + (I ? "/" + (n + F) : "") : "");
|
|
2966
2966
|
}
|
|
2967
|
-
|
|
2967
|
+
s += "f " + p.join(" ") + `
|
|
2968
2968
|
`;
|
|
2969
2969
|
}
|
|
2970
2970
|
else
|
|
2971
2971
|
for (let A = 0, D = M.count; A < D; A += 3) {
|
|
2972
2972
|
for (let j = 0; j < 3; j++) {
|
|
2973
2973
|
const F = A + j + 1;
|
|
2974
|
-
p[j] =
|
|
2974
|
+
p[j] = r + F + (I || y ? "/" + (y ? i + F : "") + (I ? "/" + (n + F) : "") : "");
|
|
2975
2975
|
}
|
|
2976
|
-
|
|
2976
|
+
s += "f " + p.join(" ") + `
|
|
2977
2977
|
`;
|
|
2978
2978
|
}
|
|
2979
|
-
|
|
2979
|
+
r += g, i += x, n += b;
|
|
2980
2980
|
}
|
|
2981
2981
|
function m(_) {
|
|
2982
2982
|
let g = 0;
|
|
2983
2983
|
const b = _.geometry, x = _.type, S = b.getAttribute("position");
|
|
2984
|
-
if (
|
|
2984
|
+
if (s += "o " + _.name + `
|
|
2985
2985
|
`, S !== void 0)
|
|
2986
2986
|
for (let w = 0, M = S.count; w < M; w++, g++)
|
|
2987
|
-
o.fromBufferAttribute(S, w), o.applyMatrix4(_.matrixWorld),
|
|
2987
|
+
o.fromBufferAttribute(S, w), o.applyMatrix4(_.matrixWorld), s += "v " + o.x + " " + o.y + " " + o.z + `
|
|
2988
2988
|
`;
|
|
2989
2989
|
if (x === "Line") {
|
|
2990
|
-
|
|
2990
|
+
s += "l ";
|
|
2991
2991
|
for (let w = 1, M = S.count; w <= M; w++)
|
|
2992
|
-
|
|
2993
|
-
|
|
2992
|
+
s += r + w + " ";
|
|
2993
|
+
s += `
|
|
2994
2994
|
`;
|
|
2995
2995
|
}
|
|
2996
2996
|
if (x === "LineSegments")
|
|
2997
2997
|
for (let w = 1, M = w + 1, I = S.count; w < I; w += 2, M = w + 1)
|
|
2998
|
-
|
|
2998
|
+
s += "l " + (r + w) + " " + (r + M) + `
|
|
2999
2999
|
`;
|
|
3000
|
-
|
|
3000
|
+
r += g;
|
|
3001
3001
|
}
|
|
3002
3002
|
function f(_) {
|
|
3003
3003
|
let g = 0;
|
|
3004
3004
|
const b = _.geometry, x = b.getAttribute("position"), S = b.getAttribute("color");
|
|
3005
|
-
if (
|
|
3005
|
+
if (s += "o " + _.name + `
|
|
3006
3006
|
`, x !== void 0) {
|
|
3007
3007
|
for (let w = 0, M = x.count; w < M; w++, g++)
|
|
3008
|
-
o.fromBufferAttribute(x, w), o.applyMatrix4(_.matrixWorld),
|
|
3008
|
+
o.fromBufferAttribute(x, w), o.applyMatrix4(_.matrixWorld), s += "v " + o.x + " " + o.y + " " + o.z, S !== void 0 && (l.fromBufferAttribute(S, w), Os.workingToColorSpace(l, qt), s += " " + l.r + " " + l.g + " " + l.b), s += `
|
|
3009
3009
|
`;
|
|
3010
|
-
|
|
3010
|
+
s += "p ";
|
|
3011
3011
|
for (let w = 1, M = x.count; w <= M; w++)
|
|
3012
|
-
|
|
3013
|
-
|
|
3012
|
+
s += r + w + " ";
|
|
3013
|
+
s += `
|
|
3014
3014
|
`;
|
|
3015
3015
|
}
|
|
3016
|
-
|
|
3016
|
+
r += g;
|
|
3017
3017
|
}
|
|
3018
3018
|
return t.traverse(function(_) {
|
|
3019
3019
|
_.isMesh === !0 && u(_), _.isLine === !0 && m(_), _.isPoints === !0 && f(_);
|
|
3020
|
-
}),
|
|
3020
|
+
}), s;
|
|
3021
3021
|
}
|
|
3022
3022
|
}
|
|
3023
|
-
var Ti = Object.getOwnPropertyDescriptor, Di = (e, t,
|
|
3024
|
-
for (var i =
|
|
3023
|
+
var Ti = Object.getOwnPropertyDescriptor, Di = (e, t, s, r) => {
|
|
3024
|
+
for (var i = r > 1 ? void 0 : r ? Ti(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3025
3025
|
(o = e[n]) && (i = o(i) || i);
|
|
3026
3026
|
return i;
|
|
3027
|
-
}, Nt = (e, t) => (
|
|
3027
|
+
}, Nt = (e, t) => (s, r) => t(s, r, e);
|
|
3028
3028
|
let ve = class {
|
|
3029
3029
|
constructor(e, t) {
|
|
3030
3030
|
this._api = e, this._exportStore = t;
|
|
@@ -3033,12 +3033,12 @@ let ve = class {
|
|
|
3033
3033
|
mode = T.Export;
|
|
3034
3034
|
/** Экспорт всей сцены в ExportStore для последующей загрузки в виде файла. */
|
|
3035
3035
|
handle() {
|
|
3036
|
-
const e = this._api.getScene(), t =
|
|
3036
|
+
const e = this._api.getScene(), t = er(e), r = new Li().parse(t), i = Date.now();
|
|
3037
3037
|
this._exportStore.setResult({
|
|
3038
3038
|
format: "obj",
|
|
3039
3039
|
filename: `scene-${i}.obj`,
|
|
3040
3040
|
mimeType: "text/plain;charset=utf-8",
|
|
3041
|
-
content:
|
|
3041
|
+
content: r,
|
|
3042
3042
|
createdAt: i
|
|
3043
3043
|
});
|
|
3044
3044
|
}
|
|
@@ -3054,11 +3054,11 @@ ve = Di([
|
|
|
3054
3054
|
Nt(0, c("ISceneApi")),
|
|
3055
3055
|
Nt(1, c("ExportStore"))
|
|
3056
3056
|
], ve);
|
|
3057
|
-
var ji = Object.defineProperty, Vi = Object.getOwnPropertyDescriptor,
|
|
3058
|
-
for (var i =
|
|
3059
|
-
(o = e[n]) && (i = (
|
|
3060
|
-
return
|
|
3061
|
-
}, Ut = (e, t) => (
|
|
3057
|
+
var ji = Object.defineProperty, Vi = Object.getOwnPropertyDescriptor, as = (e, t, s, r) => {
|
|
3058
|
+
for (var i = r > 1 ? void 0 : r ? Vi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3059
|
+
(o = e[n]) && (i = (r ? o(t, s, i) : o(i)) || i);
|
|
3060
|
+
return r && i && ji(t, s, i), i;
|
|
3061
|
+
}, Ut = (e, t) => (s, r) => t(s, r, e);
|
|
3062
3062
|
let Q = class {
|
|
3063
3063
|
constructor(e, t) {
|
|
3064
3064
|
this._api = e, this._validator = t;
|
|
@@ -3068,8 +3068,8 @@ let Q = class {
|
|
|
3068
3068
|
handle(e) {
|
|
3069
3069
|
const t = [...this._api.getMeshes()];
|
|
3070
3070
|
this._api.removeMeshes(t);
|
|
3071
|
-
const
|
|
3072
|
-
this._api.addMeshes(
|
|
3071
|
+
const s = is(e);
|
|
3072
|
+
this._api.addMeshes(s);
|
|
3073
3073
|
}
|
|
3074
3074
|
rollback() {
|
|
3075
3075
|
}
|
|
@@ -3077,19 +3077,19 @@ let Q = class {
|
|
|
3077
3077
|
dispose() {
|
|
3078
3078
|
}
|
|
3079
3079
|
};
|
|
3080
|
-
|
|
3081
|
-
|
|
3080
|
+
as([
|
|
3081
|
+
ns((e) => e._validator)
|
|
3082
3082
|
], Q.prototype, "handle", 1);
|
|
3083
|
-
Q =
|
|
3083
|
+
Q = as([
|
|
3084
3084
|
v(),
|
|
3085
3085
|
Ut(0, c("IMeshApi")),
|
|
3086
3086
|
Ut(1, c("ObjValidator"))
|
|
3087
3087
|
], Q);
|
|
3088
|
-
var Hi = Object.defineProperty, $i = Object.getOwnPropertyDescriptor,
|
|
3089
|
-
for (var i =
|
|
3090
|
-
(o = e[n]) && (i = (
|
|
3091
|
-
return
|
|
3092
|
-
}, Xt = (e, t) => (
|
|
3088
|
+
var Hi = Object.defineProperty, $i = Object.getOwnPropertyDescriptor, ls = (e, t, s, r) => {
|
|
3089
|
+
for (var i = r > 1 ? void 0 : r ? $i(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3090
|
+
(o = e[n]) && (i = (r ? o(t, s, i) : o(i)) || i);
|
|
3091
|
+
return r && i && Hi(t, s, i), i;
|
|
3092
|
+
}, Xt = (e, t) => (s, r) => t(s, r, e);
|
|
3093
3093
|
let ee = class {
|
|
3094
3094
|
constructor(e, t) {
|
|
3095
3095
|
this._api = e, this._validator = t;
|
|
@@ -3097,7 +3097,7 @@ let ee = class {
|
|
|
3097
3097
|
/** Режим редактирования сцены */
|
|
3098
3098
|
mode = T.LoadFigure;
|
|
3099
3099
|
handle(e) {
|
|
3100
|
-
const t =
|
|
3100
|
+
const t = is(e);
|
|
3101
3101
|
this._api.addMeshes(t);
|
|
3102
3102
|
}
|
|
3103
3103
|
rollback() {
|
|
@@ -3106,17 +3106,17 @@ let ee = class {
|
|
|
3106
3106
|
dispose() {
|
|
3107
3107
|
}
|
|
3108
3108
|
};
|
|
3109
|
-
|
|
3110
|
-
|
|
3109
|
+
ls([
|
|
3110
|
+
ns((e) => e._validator)
|
|
3111
3111
|
], ee.prototype, "handle", 1);
|
|
3112
|
-
ee =
|
|
3112
|
+
ee = ls([
|
|
3113
3113
|
v(),
|
|
3114
3114
|
Xt(0, c("IMeshApi")),
|
|
3115
3115
|
Xt(1, c("ObjValidator"))
|
|
3116
3116
|
], ee);
|
|
3117
3117
|
class ye {
|
|
3118
|
-
constructor(t,
|
|
3119
|
-
this._sceneApi = t, this._interactionApi =
|
|
3118
|
+
constructor(t, s, r, i) {
|
|
3119
|
+
this._sceneApi = t, this._interactionApi = s, this._metricsApi = r, this._store = i;
|
|
3120
3120
|
}
|
|
3121
3121
|
/** Группа объектов текущего benchmark-теста. */
|
|
3122
3122
|
_group = null;
|
|
@@ -3131,8 +3131,8 @@ class ye {
|
|
|
3131
3131
|
*/
|
|
3132
3132
|
async handle(t) {
|
|
3133
3133
|
this._interactionApi.setInteractionEnabled(!1), this._prepareScene(), this._metricsApi.start(this.objectsCount), this._startLiveMetrics(), await this._wait(t), this._stopLiveMetrics(), this._metricsApi.stop();
|
|
3134
|
-
const
|
|
3135
|
-
this._store.setCurrentMetrics(
|
|
3134
|
+
const s = this._metricsApi.getMetrics();
|
|
3135
|
+
this._store.setCurrentMetrics(s), this._store.addMetrics(this.mode, s), this._interactionApi.setInteractionEnabled(!0);
|
|
3136
3136
|
}
|
|
3137
3137
|
/**
|
|
3138
3138
|
* Выполняет откат действий хендлера.
|
|
@@ -3168,8 +3168,8 @@ class ye {
|
|
|
3168
3168
|
* @method
|
|
3169
3169
|
*/
|
|
3170
3170
|
_wait(t) {
|
|
3171
|
-
return new Promise((
|
|
3172
|
-
window.setTimeout(
|
|
3171
|
+
return new Promise((s) => {
|
|
3172
|
+
window.setTimeout(s, t);
|
|
3173
3173
|
});
|
|
3174
3174
|
}
|
|
3175
3175
|
_startLiveMetrics() {
|
|
@@ -3181,11 +3181,11 @@ class ye {
|
|
|
3181
3181
|
this._liveTimerId !== null && (window.clearInterval(this._liveTimerId), this._liveTimerId = null);
|
|
3182
3182
|
}
|
|
3183
3183
|
}
|
|
3184
|
-
var Ri = Object.getOwnPropertyDescriptor, Bi = (e, t,
|
|
3185
|
-
for (var i =
|
|
3184
|
+
var Ri = Object.getOwnPropertyDescriptor, Bi = (e, t, s, r) => {
|
|
3185
|
+
for (var i = r > 1 ? void 0 : r ? Ri(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3186
3186
|
(o = e[n]) && (i = o(i) || i);
|
|
3187
3187
|
return i;
|
|
3188
|
-
}, oe = (e, t) => (
|
|
3188
|
+
}, oe = (e, t) => (s, r) => t(s, r, e);
|
|
3189
3189
|
let at = class extends ye {
|
|
3190
3190
|
/** Тип benchmark-теста. */
|
|
3191
3191
|
mode = X.Light;
|
|
@@ -3193,8 +3193,8 @@ let at = class extends ye {
|
|
|
3193
3193
|
groupName = "__LIGHT_BENCHMARK__";
|
|
3194
3194
|
/** Количество объектов в тестовой сцене. */
|
|
3195
3195
|
objectsCount = Mt;
|
|
3196
|
-
constructor(e, t,
|
|
3197
|
-
super(e, t,
|
|
3196
|
+
constructor(e, t, s, r) {
|
|
3197
|
+
super(e, t, s, r);
|
|
3198
3198
|
}
|
|
3199
3199
|
/**
|
|
3200
3200
|
* Заполняет группу объектами легкого benchmark-теста.
|
|
@@ -3205,10 +3205,10 @@ let at = class extends ye {
|
|
|
3205
3205
|
* @method
|
|
3206
3206
|
*/
|
|
3207
3207
|
fillGroup(e) {
|
|
3208
|
-
const t = Math.ceil(Math.sqrt(this.objectsCount)),
|
|
3209
|
-
for (let
|
|
3210
|
-
const i =
|
|
3211
|
-
h.position.set(i -
|
|
3208
|
+
const t = Math.ceil(Math.sqrt(this.objectsCount)), s = t / 2;
|
|
3209
|
+
for (let r = 0; r < this.objectsCount; r += 1) {
|
|
3210
|
+
const i = r % t, n = Math.floor(r / t), o = new a.BoxGeometry(0.4, 0.4, 0.4), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
|
|
3211
|
+
h.position.set(i - s, 0.2, n - s), e.add(h);
|
|
3212
3212
|
}
|
|
3213
3213
|
}
|
|
3214
3214
|
};
|
|
@@ -3219,11 +3219,11 @@ at = Bi([
|
|
|
3219
3219
|
oe(2, c("IMetricsApi")),
|
|
3220
3220
|
oe(3, c("MetricsStore"))
|
|
3221
3221
|
], at);
|
|
3222
|
-
var Fi = Object.getOwnPropertyDescriptor, ki = (e, t,
|
|
3223
|
-
for (var i =
|
|
3222
|
+
var Fi = Object.getOwnPropertyDescriptor, ki = (e, t, s, r) => {
|
|
3223
|
+
for (var i = r > 1 ? void 0 : r ? Fi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3224
3224
|
(o = e[n]) && (i = o(i) || i);
|
|
3225
3225
|
return i;
|
|
3226
|
-
}, ae = (e, t) => (
|
|
3226
|
+
}, ae = (e, t) => (s, r) => t(s, r, e);
|
|
3227
3227
|
let lt = class extends ye {
|
|
3228
3228
|
/** Тип benchmark-теста. */
|
|
3229
3229
|
mode = X.Medium;
|
|
@@ -3231,8 +3231,8 @@ let lt = class extends ye {
|
|
|
3231
3231
|
groupName = "__MEDIUM_BENCHMARK__";
|
|
3232
3232
|
/** Количество объектов в тестовой сцене. */
|
|
3233
3233
|
objectsCount = Mt;
|
|
3234
|
-
constructor(e, t,
|
|
3235
|
-
super(e, t,
|
|
3234
|
+
constructor(e, t, s, r) {
|
|
3235
|
+
super(e, t, s, r);
|
|
3236
3236
|
}
|
|
3237
3237
|
/**
|
|
3238
3238
|
* Заполняет группу объектами среднего benchmark-теста.
|
|
@@ -3243,10 +3243,10 @@ let lt = class extends ye {
|
|
|
3243
3243
|
* @method
|
|
3244
3244
|
*/
|
|
3245
3245
|
fillGroup(e) {
|
|
3246
|
-
const t = Math.ceil(Math.sqrt(this.objectsCount)),
|
|
3247
|
-
for (let
|
|
3248
|
-
const i =
|
|
3249
|
-
h.position.set((i -
|
|
3246
|
+
const t = Math.ceil(Math.sqrt(this.objectsCount)), s = t / 2;
|
|
3247
|
+
for (let r = 0; r < this.objectsCount; r += 1) {
|
|
3248
|
+
const i = r % t, n = Math.floor(r / t), o = new a.CylinderGeometry(0.18, 0.18, 0.45, 24), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
|
|
3249
|
+
h.position.set((i - s) * 0.6, 0.225, (n - s) * 0.6), e.add(h);
|
|
3250
3250
|
}
|
|
3251
3251
|
}
|
|
3252
3252
|
};
|
|
@@ -3257,11 +3257,11 @@ lt = ki([
|
|
|
3257
3257
|
ae(2, c("IMetricsApi")),
|
|
3258
3258
|
ae(3, c("MetricsStore"))
|
|
3259
3259
|
], lt);
|
|
3260
|
-
var Gi = Object.getOwnPropertyDescriptor, zi = (e, t,
|
|
3261
|
-
for (var i =
|
|
3260
|
+
var Gi = Object.getOwnPropertyDescriptor, zi = (e, t, s, r) => {
|
|
3261
|
+
for (var i = r > 1 ? void 0 : r ? Gi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3262
3262
|
(o = e[n]) && (i = o(i) || i);
|
|
3263
3263
|
return i;
|
|
3264
|
-
}, le = (e, t) => (
|
|
3264
|
+
}, le = (e, t) => (s, r) => t(s, r, e);
|
|
3265
3265
|
let ct = class extends ye {
|
|
3266
3266
|
/** Тип benchmark-теста. */
|
|
3267
3267
|
mode = X.Heavy;
|
|
@@ -3269,8 +3269,8 @@ let ct = class extends ye {
|
|
|
3269
3269
|
groupName = "__HEAVY_BENCHMARK__";
|
|
3270
3270
|
/** Количество объектов в тестовой сцене. */
|
|
3271
3271
|
objectsCount = Mt;
|
|
3272
|
-
constructor(e, t,
|
|
3273
|
-
super(e, t,
|
|
3272
|
+
constructor(e, t, s, r) {
|
|
3273
|
+
super(e, t, s, r);
|
|
3274
3274
|
}
|
|
3275
3275
|
/**
|
|
3276
3276
|
* Заполняет группу объектами тяжелого benchmark-теста.
|
|
@@ -3281,10 +3281,10 @@ let ct = class extends ye {
|
|
|
3281
3281
|
* @method
|
|
3282
3282
|
*/
|
|
3283
3283
|
fillGroup(e) {
|
|
3284
|
-
const t = Math.ceil(Math.sqrt(this.objectsCount)),
|
|
3285
|
-
for (let
|
|
3286
|
-
const i =
|
|
3287
|
-
h.position.set((i -
|
|
3284
|
+
const t = Math.ceil(Math.sqrt(this.objectsCount)), s = t / 2;
|
|
3285
|
+
for (let r = 0; r < this.objectsCount; r += 1) {
|
|
3286
|
+
const i = r % t, n = Math.floor(r / t), o = new a.TorusKnotGeometry(0.16, 0.05, 64, 12), l = new a.MeshStandardMaterial(), h = new a.Mesh(o, l);
|
|
3287
|
+
h.position.set((i - s) * 0.7, 0.25, (n - s) * 0.7), e.add(h);
|
|
3288
3288
|
}
|
|
3289
3289
|
}
|
|
3290
3290
|
};
|
|
@@ -3295,11 +3295,11 @@ ct = zi([
|
|
|
3295
3295
|
le(2, c("IMetricsApi")),
|
|
3296
3296
|
le(3, c("MetricsStore"))
|
|
3297
3297
|
], ct);
|
|
3298
|
-
var Wi = Object.getOwnPropertyDescriptor, Ni = (e, t,
|
|
3299
|
-
for (var i =
|
|
3298
|
+
var Wi = Object.getOwnPropertyDescriptor, Ni = (e, t, s, r) => {
|
|
3299
|
+
for (var i = r > 1 ? void 0 : r ? Wi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3300
3300
|
(o = e[n]) && (i = o(i) || i);
|
|
3301
3301
|
return i;
|
|
3302
|
-
}, ce = (e, t) => (
|
|
3302
|
+
}, ce = (e, t) => (s, r) => t(s, r, e);
|
|
3303
3303
|
let ht = class extends ye {
|
|
3304
3304
|
/** Тип benchmark-теста. */
|
|
3305
3305
|
mode = X.Mixed;
|
|
@@ -3307,8 +3307,8 @@ let ht = class extends ye {
|
|
|
3307
3307
|
groupName = "__MIXED_BENCHMARK__";
|
|
3308
3308
|
/** Количество объектов в тестовой сцене. */
|
|
3309
3309
|
objectsCount = Vt + Ht + $t;
|
|
3310
|
-
constructor(e, t,
|
|
3311
|
-
super(e, t,
|
|
3310
|
+
constructor(e, t, s, r) {
|
|
3311
|
+
super(e, t, s, r);
|
|
3312
3312
|
}
|
|
3313
3313
|
/**
|
|
3314
3314
|
* Заполняет группу объектами смешанного benchmark-теста.
|
|
@@ -3336,11 +3336,11 @@ let ht = class extends ye {
|
|
|
3336
3336
|
new a.MeshStandardMaterial()
|
|
3337
3337
|
));
|
|
3338
3338
|
}
|
|
3339
|
-
_addGrid(e, t,
|
|
3339
|
+
_addGrid(e, t, s, r) {
|
|
3340
3340
|
const i = Math.ceil(Math.sqrt(t)), n = i / 2;
|
|
3341
3341
|
for (let o = 0; o < t; o += 1) {
|
|
3342
|
-
const l = o % i, h = Math.floor(o / i), d =
|
|
3343
|
-
d.position.set(
|
|
3342
|
+
const l = o % i, h = Math.floor(o / i), d = r(o);
|
|
3343
|
+
d.position.set(s + (l - n) * 0.65, 0.25, (h - n) * 0.65), e.add(d);
|
|
3344
3344
|
}
|
|
3345
3345
|
}
|
|
3346
3346
|
};
|
|
@@ -3351,14 +3351,14 @@ ht = Ni([
|
|
|
3351
3351
|
ce(2, c("IMetricsApi")),
|
|
3352
3352
|
ce(3, c("MetricsStore"))
|
|
3353
3353
|
], ht);
|
|
3354
|
-
var Ui = Object.getOwnPropertyDescriptor, Xi = (e, t,
|
|
3355
|
-
for (var i =
|
|
3354
|
+
var Ui = Object.getOwnPropertyDescriptor, Xi = (e, t, s, r) => {
|
|
3355
|
+
for (var i = r > 1 ? void 0 : r ? Ui(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3356
3356
|
(o = e[n]) && (i = o(i) || i);
|
|
3357
3357
|
return i;
|
|
3358
|
-
}, Z = (e, t) => (
|
|
3358
|
+
}, Z = (e, t) => (s, r) => t(s, r, e);
|
|
3359
3359
|
let dt = class {
|
|
3360
|
-
constructor(e, t,
|
|
3361
|
-
this._renderer = e, this._mediator = t, this._store =
|
|
3360
|
+
constructor(e, t, s, r, i) {
|
|
3361
|
+
this._renderer = e, this._mediator = t, this._store = s, this._exportStore = r, this._worker = i, this.setSelectMode(O.Mesh), this.setToolMode(W.Translate);
|
|
3362
3362
|
}
|
|
3363
3363
|
setDisplayMode(e) {
|
|
3364
3364
|
return this._mediator.send({
|
|
@@ -3433,11 +3433,11 @@ let dt = class {
|
|
|
3433
3433
|
onSelectionStatsChange(e) {
|
|
3434
3434
|
const t = this._store.onSelectedObjectChange(() => {
|
|
3435
3435
|
e();
|
|
3436
|
-
}),
|
|
3436
|
+
}), s = this._store.onSelectedTransformChange(() => {
|
|
3437
3437
|
e();
|
|
3438
3438
|
});
|
|
3439
3439
|
return () => {
|
|
3440
|
-
t(),
|
|
3440
|
+
t(), s();
|
|
3441
3441
|
};
|
|
3442
3442
|
}
|
|
3443
3443
|
dispose() {
|
|
@@ -3452,14 +3452,14 @@ dt = Xi([
|
|
|
3452
3452
|
Z(3, c("ExportStore")),
|
|
3453
3453
|
Z(4, c("IWorker"))
|
|
3454
3454
|
], dt);
|
|
3455
|
-
var Yi = Object.getOwnPropertyDescriptor, Ki = (e, t,
|
|
3456
|
-
for (var i =
|
|
3455
|
+
var Yi = Object.getOwnPropertyDescriptor, Ki = (e, t, s, r) => {
|
|
3456
|
+
for (var i = r > 1 ? void 0 : r ? Yi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3457
3457
|
(o = e[n]) && (i = o(i) || i);
|
|
3458
3458
|
return i;
|
|
3459
|
-
}, Ee = (e, t) => (
|
|
3459
|
+
}, Ee = (e, t) => (s, r) => t(s, r, e);
|
|
3460
3460
|
let _t = class {
|
|
3461
|
-
constructor(e, t,
|
|
3462
|
-
this._renderer = e, this._mediator = t, this._worker =
|
|
3461
|
+
constructor(e, t, s) {
|
|
3462
|
+
this._renderer = e, this._mediator = t, this._worker = s;
|
|
3463
3463
|
}
|
|
3464
3464
|
addFigure(e) {
|
|
3465
3465
|
return this._mediator.send({
|
|
@@ -3505,14 +3505,14 @@ _t = Ki([
|
|
|
3505
3505
|
Ee(1, c("IMediator")),
|
|
3506
3506
|
Ee(2, c("IWorker"))
|
|
3507
3507
|
], _t);
|
|
3508
|
-
var qi = Object.getOwnPropertyDescriptor, Zi = (e, t,
|
|
3509
|
-
for (var i =
|
|
3508
|
+
var qi = Object.getOwnPropertyDescriptor, Zi = (e, t, s, r) => {
|
|
3509
|
+
for (var i = r > 1 ? void 0 : r ? qi(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3510
3510
|
(o = e[n]) && (i = o(i) || i);
|
|
3511
3511
|
return i;
|
|
3512
|
-
}, he = (e, t) => (
|
|
3512
|
+
}, he = (e, t) => (s, r) => t(s, r, e);
|
|
3513
3513
|
let ut = class {
|
|
3514
|
-
constructor(e, t,
|
|
3515
|
-
this._renderer = e, this._mediator = t, this._store =
|
|
3514
|
+
constructor(e, t, s, r) {
|
|
3515
|
+
this._renderer = e, this._mediator = t, this._store = s, this._worker = r;
|
|
3516
3516
|
}
|
|
3517
3517
|
/**
|
|
3518
3518
|
* Запускает benchmark-тестирование.
|
|
@@ -3524,17 +3524,17 @@ let ut = class {
|
|
|
3524
3524
|
* @public
|
|
3525
3525
|
* @method
|
|
3526
3526
|
*/
|
|
3527
|
-
run(e) {
|
|
3527
|
+
async run(e) {
|
|
3528
3528
|
this._store.clear();
|
|
3529
3529
|
const t = [];
|
|
3530
|
-
for (const
|
|
3531
|
-
const
|
|
3530
|
+
for (const s of e.tests) {
|
|
3531
|
+
const r = this._mediator.send({
|
|
3532
3532
|
type: P.Benchmark,
|
|
3533
|
-
payload: [
|
|
3533
|
+
payload: [s, e.durationMs]
|
|
3534
3534
|
});
|
|
3535
|
-
t.push({
|
|
3536
|
-
type:
|
|
3537
|
-
status:
|
|
3535
|
+
await this._wait(e.durationMs + 300), t.push({
|
|
3536
|
+
type: s,
|
|
3537
|
+
status: r === null ? Pe.Success : Pe.Failed
|
|
3538
3538
|
});
|
|
3539
3539
|
}
|
|
3540
3540
|
return { tests: t };
|
|
@@ -3582,6 +3582,11 @@ let ut = class {
|
|
|
3582
3582
|
dispose() {
|
|
3583
3583
|
this._mediator.dispose(), this._worker.dispose(), this._store.clear();
|
|
3584
3584
|
}
|
|
3585
|
+
_wait(e) {
|
|
3586
|
+
return new Promise((t) => {
|
|
3587
|
+
window.setTimeout(t, e);
|
|
3588
|
+
});
|
|
3589
|
+
}
|
|
3585
3590
|
};
|
|
3586
3591
|
ut = Zi([
|
|
3587
3592
|
v(),
|
|
@@ -3590,8 +3595,8 @@ ut = Zi([
|
|
|
3590
3595
|
he(2, c("MetricsStore")),
|
|
3591
3596
|
he(3, c("IWorker"))
|
|
3592
3597
|
], ut);
|
|
3593
|
-
var Ji = Object.getOwnPropertyDescriptor, Qi = (e, t,
|
|
3594
|
-
for (var i =
|
|
3598
|
+
var Ji = Object.getOwnPropertyDescriptor, Qi = (e, t, s, r) => {
|
|
3599
|
+
for (var i = r > 1 ? void 0 : r ? Ji(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3595
3600
|
(o = e[n]) && (i = o(i) || i);
|
|
3596
3601
|
return i;
|
|
3597
3602
|
};
|
|
@@ -3634,7 +3639,7 @@ let pt = class {
|
|
|
3634
3639
|
}
|
|
3635
3640
|
getSelectionStats() {
|
|
3636
3641
|
const e = this._selectedObject;
|
|
3637
|
-
return e ?
|
|
3642
|
+
return e ? qs(e) : null;
|
|
3638
3643
|
}
|
|
3639
3644
|
setSelectedObject(e) {
|
|
3640
3645
|
if (this._selectedObject !== e) {
|
|
@@ -3655,13 +3660,13 @@ let pt = class {
|
|
|
3655
3660
|
pt = Qi([
|
|
3656
3661
|
v()
|
|
3657
3662
|
], pt);
|
|
3658
|
-
class
|
|
3663
|
+
class cs {
|
|
3659
3664
|
_result = null;
|
|
3660
3665
|
constructor() {
|
|
3661
3666
|
bt(
|
|
3662
3667
|
this,
|
|
3663
3668
|
{
|
|
3664
|
-
_result: $
|
|
3669
|
+
_result: $s.ref
|
|
3665
3670
|
},
|
|
3666
3671
|
{
|
|
3667
3672
|
autoBind: !0
|
|
@@ -3684,16 +3689,16 @@ class cr {
|
|
|
3684
3689
|
this._result = null;
|
|
3685
3690
|
}
|
|
3686
3691
|
}
|
|
3687
|
-
var en = Object.getOwnPropertyDescriptor, tn = (e, t,
|
|
3688
|
-
for (var i =
|
|
3692
|
+
var en = Object.getOwnPropertyDescriptor, tn = (e, t, s, r) => {
|
|
3693
|
+
for (var i = r > 1 ? void 0 : r ? en(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3689
3694
|
(o = e[n]) && (i = o(i) || i);
|
|
3690
3695
|
return i;
|
|
3691
3696
|
};
|
|
3692
3697
|
let mt = class {
|
|
3693
3698
|
/** Дата создания текущего отчета. */
|
|
3694
3699
|
_createdAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
3695
|
-
/**
|
|
3696
|
-
|
|
3700
|
+
/** Отчеты успешно выполненных тестов. */
|
|
3701
|
+
_tests = [];
|
|
3697
3702
|
/** Текущие live-метрики. */
|
|
3698
3703
|
_currentMetrics = null;
|
|
3699
3704
|
/** Слушатели обновления live-метрик. */
|
|
@@ -3702,10 +3707,14 @@ let mt = class {
|
|
|
3702
3707
|
bt(this, {}, { autoBind: !0 });
|
|
3703
3708
|
}
|
|
3704
3709
|
clear() {
|
|
3705
|
-
this._createdAt = (/* @__PURE__ */ new Date()).toISOString(), this.
|
|
3710
|
+
this._createdAt = (/* @__PURE__ */ new Date()).toISOString(), this._tests = [], this.setCurrentMetrics(null);
|
|
3706
3711
|
}
|
|
3707
3712
|
addMetrics(e, t) {
|
|
3708
|
-
this.
|
|
3713
|
+
this._tests.push({
|
|
3714
|
+
type: e,
|
|
3715
|
+
status: Pe.Success,
|
|
3716
|
+
metrics: t
|
|
3717
|
+
});
|
|
3709
3718
|
}
|
|
3710
3719
|
setCurrentMetrics(e) {
|
|
3711
3720
|
this._currentMetrics = e;
|
|
@@ -3721,52 +3730,47 @@ let mt = class {
|
|
|
3721
3730
|
};
|
|
3722
3731
|
}
|
|
3723
3732
|
getReport() {
|
|
3724
|
-
const e = [...this._metrics.entries()].map(([t, r]) => ({
|
|
3725
|
-
type: t,
|
|
3726
|
-
status: Pe.Success,
|
|
3727
|
-
metrics: r
|
|
3728
|
-
}));
|
|
3729
3733
|
return {
|
|
3730
3734
|
createdAt: this._createdAt,
|
|
3731
|
-
tests:
|
|
3735
|
+
tests: [...this._tests]
|
|
3732
3736
|
};
|
|
3733
3737
|
}
|
|
3734
3738
|
};
|
|
3735
3739
|
mt = tn([
|
|
3736
3740
|
v()
|
|
3737
3741
|
], mt);
|
|
3738
|
-
class
|
|
3739
|
-
constructor(t,
|
|
3740
|
-
super(
|
|
3742
|
+
class hs extends Error {
|
|
3743
|
+
constructor(t, s, r, i) {
|
|
3744
|
+
super(s), this.type = t, this.code = r, this.meta = i, this.name = this._name;
|
|
3741
3745
|
}
|
|
3742
3746
|
_name = "PolicyException";
|
|
3743
3747
|
}
|
|
3744
3748
|
class pe extends Error {
|
|
3745
|
-
constructor(t,
|
|
3746
|
-
super(
|
|
3749
|
+
constructor(t, s, r, i) {
|
|
3750
|
+
super(s), this.type = t, this.code = r, this.meta = i, this.name = this._name;
|
|
3747
3751
|
}
|
|
3748
3752
|
_name = "ValidationException";
|
|
3749
3753
|
}
|
|
3750
|
-
var
|
|
3751
|
-
for (var i =
|
|
3754
|
+
var sn = Object.getOwnPropertyDescriptor, rn = (e, t, s, r) => {
|
|
3755
|
+
for (var i = r > 1 ? void 0 : r ? sn(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3752
3756
|
(o = e[n]) && (i = o(i) || i);
|
|
3753
3757
|
return i;
|
|
3754
|
-
}, nn = (e, t) => (
|
|
3758
|
+
}, nn = (e, t) => (s, r) => t(s, r, e);
|
|
3755
3759
|
let ft = class {
|
|
3756
3760
|
constructor(e) {
|
|
3757
3761
|
this._store = e;
|
|
3758
3762
|
}
|
|
3759
3763
|
check(e) {
|
|
3760
3764
|
const t = this._store.getSelectMode();
|
|
3761
|
-
if (!
|
|
3762
|
-
throw new
|
|
3765
|
+
if (!Ls[t].includes(e))
|
|
3766
|
+
throw new hs(
|
|
3763
3767
|
G.NotAllowed,
|
|
3764
3768
|
`Tool ${e} is not allowed`,
|
|
3765
3769
|
"TOOL_NOT_ALLOWED"
|
|
3766
3770
|
);
|
|
3767
3771
|
}
|
|
3768
3772
|
};
|
|
3769
|
-
ft =
|
|
3773
|
+
ft = rn([
|
|
3770
3774
|
v(),
|
|
3771
3775
|
nn(0, c("EditorStore"))
|
|
3772
3776
|
], ft);
|
|
@@ -3774,20 +3778,20 @@ class on {
|
|
|
3774
3778
|
constructor() {
|
|
3775
3779
|
}
|
|
3776
3780
|
validate(t) {
|
|
3777
|
-
const
|
|
3778
|
-
if (!
|
|
3781
|
+
const s = t.trim();
|
|
3782
|
+
if (!s)
|
|
3779
3783
|
throw new pe(
|
|
3780
3784
|
G.ValidationError,
|
|
3781
3785
|
"File content is empty.",
|
|
3782
3786
|
"FILE_CONTENT_EMPTY"
|
|
3783
3787
|
);
|
|
3784
|
-
if (!/^v\s+[-+.\deE]+\s+[-+.\deE]+\s+[-+.\deE]+/m.test(
|
|
3788
|
+
if (!/^v\s+[-+.\deE]+\s+[-+.\deE]+\s+[-+.\deE]+/m.test(s))
|
|
3785
3789
|
throw new pe(
|
|
3786
3790
|
G.ValidationError,
|
|
3787
3791
|
"OBJ content does not contain vertices.",
|
|
3788
3792
|
"WRONG_FILE_CONTENT"
|
|
3789
3793
|
);
|
|
3790
|
-
if (!/^f\s+/m.test(
|
|
3794
|
+
if (!/^f\s+/m.test(s))
|
|
3791
3795
|
throw new pe(
|
|
3792
3796
|
G.ValidationError,
|
|
3793
3797
|
"OBJ content does not contain faces.",
|
|
@@ -3795,8 +3799,8 @@ class on {
|
|
|
3795
3799
|
);
|
|
3796
3800
|
}
|
|
3797
3801
|
}
|
|
3798
|
-
var an = Object.getOwnPropertyDescriptor, ln = (e, t,
|
|
3799
|
-
for (var i =
|
|
3802
|
+
var an = Object.getOwnPropertyDescriptor, ln = (e, t, s, r) => {
|
|
3803
|
+
for (var i = r > 1 ? void 0 : r ? an(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3800
3804
|
(o = e[n]) && (i = o(i) || i);
|
|
3801
3805
|
return i;
|
|
3802
3806
|
};
|
|
@@ -3805,7 +3809,7 @@ let gt = class {
|
|
|
3805
3809
|
try {
|
|
3806
3810
|
return e();
|
|
3807
3811
|
} catch (t) {
|
|
3808
|
-
return t instanceof
|
|
3812
|
+
return t instanceof hs ? {
|
|
3809
3813
|
type: t.type,
|
|
3810
3814
|
message: t.message,
|
|
3811
3815
|
code: t.code,
|
|
@@ -3832,14 +3836,14 @@ let gt = class {
|
|
|
3832
3836
|
gt = ln([
|
|
3833
3837
|
v()
|
|
3834
3838
|
], gt);
|
|
3835
|
-
var cn = Object.getOwnPropertyDescriptor, hn = (e, t,
|
|
3836
|
-
for (var i =
|
|
3839
|
+
var cn = Object.getOwnPropertyDescriptor, hn = (e, t, s, r) => {
|
|
3840
|
+
for (var i = r > 1 ? void 0 : r ? cn(t, s) : t, n = e.length - 1, o; n >= 0; n--)
|
|
3837
3841
|
(o = e[n]) && (i = o(i) || i);
|
|
3838
3842
|
return i;
|
|
3839
|
-
}, Yt = (e, t) => (
|
|
3843
|
+
}, Yt = (e, t) => (s, r) => t(s, r, e);
|
|
3840
3844
|
let vt = class {
|
|
3841
3845
|
constructor(e, t) {
|
|
3842
|
-
this._middlewares = t, this._managers = new Map(e.map((
|
|
3846
|
+
this._middlewares = t, this._managers = new Map(e.map((s) => [s.type, s]));
|
|
3843
3847
|
}
|
|
3844
3848
|
_managers;
|
|
3845
3849
|
send(e) {
|
|
@@ -3851,8 +3855,8 @@ let vt = class {
|
|
|
3851
3855
|
code: "MANAGER_NOT_FOUND",
|
|
3852
3856
|
blocked: !0
|
|
3853
3857
|
};
|
|
3854
|
-
const
|
|
3855
|
-
return this._middlewares.reduceRight((i, n) => () => n.handle(i),
|
|
3858
|
+
const s = () => (t.manage(...e.payload), null);
|
|
3859
|
+
return this._middlewares.reduceRight((i, n) => () => n.handle(i), s)();
|
|
3856
3860
|
}
|
|
3857
3861
|
dispose() {
|
|
3858
3862
|
this._managers && this._managers.clear();
|
|
@@ -3865,15 +3869,15 @@ vt = hn([
|
|
|
3865
3869
|
], vt);
|
|
3866
3870
|
let de = null, _e = null, ue = null;
|
|
3867
3871
|
function St() {
|
|
3868
|
-
return
|
|
3872
|
+
return Es.createChildContainer();
|
|
3869
3873
|
}
|
|
3870
|
-
function
|
|
3874
|
+
function ds(e, t) {
|
|
3871
3875
|
e.registerInstance("Canvas", t);
|
|
3872
3876
|
}
|
|
3873
|
-
function
|
|
3877
|
+
function _s(e, t) {
|
|
3874
3878
|
e.registerInstance(
|
|
3875
3879
|
"RendererConfig",
|
|
3876
|
-
|
|
3880
|
+
Zs(tr, t)
|
|
3877
3881
|
);
|
|
3878
3882
|
}
|
|
3879
3883
|
function xt(e) {
|
|
@@ -3888,38 +3892,38 @@ function _n(e) {
|
|
|
3888
3892
|
function un(e) {
|
|
3889
3893
|
e.registerSingleton("ToolPolicy", ft);
|
|
3890
3894
|
}
|
|
3891
|
-
function
|
|
3895
|
+
function us(e) {
|
|
3892
3896
|
e.registerSingleton("ObjValidator", on);
|
|
3893
3897
|
}
|
|
3894
|
-
function
|
|
3898
|
+
function ps(e) {
|
|
3895
3899
|
e.registerSingleton("IMeshApi", je), e.registerSingleton("ICameraApi", Re), e.registerSingleton("IDomApi", Be), e.registerSingleton("ISceneApi", Fe);
|
|
3896
3900
|
}
|
|
3897
|
-
function
|
|
3898
|
-
|
|
3901
|
+
function ms(e) {
|
|
3902
|
+
ps(e), e.registerSingleton("IControlsStateApi", De), e.registerSingleton("IRaycastApi", Ve), e.registerSingleton("ITransformApi", He), e.registerSingleton("IInteractionApi", $e);
|
|
3899
3903
|
}
|
|
3900
3904
|
function pn(e) {
|
|
3901
|
-
|
|
3905
|
+
ps(e);
|
|
3902
3906
|
}
|
|
3903
3907
|
function mn(e) {
|
|
3904
|
-
|
|
3908
|
+
ms(e), e.registerSingleton("IRendererInfoApi", ke);
|
|
3905
3909
|
}
|
|
3906
|
-
function
|
|
3910
|
+
function fs(e) {
|
|
3907
3911
|
e.registerSingleton("ControlsModule", me), e.registerSingleton("GizmoModule", Ge), e.registerSingleton("RaycastModule", We), e.registerSingleton("SceneModule", Ne), e.register("IUpdatableModule", { useToken: "ControlsModule" }), e.register("IRenderableModule", { useToken: "GizmoModule" }), e.register("IRuntimeModule", { useToken: "RaycastModule" }), e.register("IRuntimeModule", { useToken: "SceneModule" }), e.register("IInteractiveModule", { useToken: "ControlsModule" }), e.register("IInteractiveModule", { useToken: "RaycastModule" }), e.register("IInteractiveModule", { useToken: "GizmoModule" });
|
|
3908
3912
|
}
|
|
3909
3913
|
function fn(e) {
|
|
3910
3914
|
e.registerSingleton("ControlsModule", me), e.registerSingleton("SceneModule", Ue), e.register("IUpdatableModule", { useToken: "ControlsModule" }), e.register("IRuntimeModule", { useToken: "SceneModule" }), e.register("IInteractiveModule", { useToken: "ControlsModule" });
|
|
3911
3915
|
}
|
|
3912
3916
|
function gn(e) {
|
|
3913
|
-
|
|
3917
|
+
fs(e), e.registerSingleton("MetricsModule", Xe), e.register("IObserverModule", { useToken: "MetricsModule" }), e.register("IMetricsApi", { useToken: "MetricsModule" });
|
|
3914
3918
|
}
|
|
3915
3919
|
function vn(e) {
|
|
3916
3920
|
e.registerSingleton("IDisplayHandler", Je);
|
|
3917
3921
|
}
|
|
3918
3922
|
function bn(e) {
|
|
3919
|
-
e.registerSingleton("ISelectHandler", tt), e.registerSingleton("ISelectHandler", et), e.registerSingleton("ISelectHandler", Qe), e.registerSingleton("ISelectHandler",
|
|
3923
|
+
e.registerSingleton("ISelectHandler", tt), e.registerSingleton("ISelectHandler", et), e.registerSingleton("ISelectHandler", Qe), e.registerSingleton("ISelectHandler", st);
|
|
3920
3924
|
}
|
|
3921
3925
|
function Mn(e) {
|
|
3922
|
-
e.registerSingleton("IToolHandler", nt), e.registerSingleton("IToolHandler", it), e.registerSingleton("IToolHandler",
|
|
3926
|
+
e.registerSingleton("IToolHandler", nt), e.registerSingleton("IToolHandler", it), e.registerSingleton("IToolHandler", rt);
|
|
3923
3927
|
}
|
|
3924
3928
|
function yn(e) {
|
|
3925
3929
|
e.registerSingleton("ISceneHandler", ge), e.registerSingleton("ISceneHandler", ot), e.registerSingleton("ISceneHandler", ve), e.registerSingleton("ISceneHandler", ee), e.registerSingleton("ISceneHandler", Q);
|
|
@@ -3939,26 +3943,26 @@ function An(e) {
|
|
|
3939
3943
|
function In(e) {
|
|
3940
3944
|
e.registerSingleton("ToolManager", fe), e.register("IToolManager", { useToken: "ToolManager" }), e.register("IManager", { useToken: "ToolManager" });
|
|
3941
3945
|
}
|
|
3942
|
-
function
|
|
3946
|
+
function gs(e) {
|
|
3943
3947
|
e.registerSingleton("SceneManager", Ke), e.register("ISceneManager", { useToken: "SceneManager" }), e.register("IManager", { useToken: "SceneManager" });
|
|
3944
3948
|
}
|
|
3945
3949
|
function Cn(e) {
|
|
3946
3950
|
e.registerSingleton("BenchmarkManager", Ze), e.register("IBenchmarkManager", { useToken: "BenchmarkManager" }), e.register("IManager", { useToken: "BenchmarkManager" });
|
|
3947
3951
|
}
|
|
3948
3952
|
function On(e) {
|
|
3949
|
-
xn(e), An(e), In(e),
|
|
3953
|
+
xn(e), An(e), In(e), gs(e);
|
|
3950
3954
|
}
|
|
3951
3955
|
function En(e) {
|
|
3952
|
-
|
|
3956
|
+
gs(e);
|
|
3953
3957
|
}
|
|
3954
|
-
function
|
|
3958
|
+
function vs(e) {
|
|
3955
3959
|
e.registerSingleton("IMiddleware", gt), e.registerSingleton("IMediator", vt);
|
|
3956
3960
|
}
|
|
3957
3961
|
function Pn(e) {
|
|
3958
|
-
e.registerSingleton("EditorStore", pt), e.registerSingleton("ExportStore",
|
|
3962
|
+
e.registerSingleton("EditorStore", pt), e.registerSingleton("ExportStore", cs);
|
|
3959
3963
|
}
|
|
3960
3964
|
function Ln(e) {
|
|
3961
|
-
e.registerSingleton("ExportStore",
|
|
3965
|
+
e.registerSingleton("ExportStore", cs);
|
|
3962
3966
|
}
|
|
3963
3967
|
function Tn(e) {
|
|
3964
3968
|
e.registerSingleton("MetricsStore", mt);
|
|
@@ -3972,17 +3976,17 @@ function jn(e) {
|
|
|
3972
3976
|
function Vn(e) {
|
|
3973
3977
|
e.registerSingleton("BenchmarkHub", ut);
|
|
3974
3978
|
}
|
|
3975
|
-
function
|
|
3976
|
-
return
|
|
3979
|
+
function bs(e, t, s) {
|
|
3980
|
+
return ds(e, t), _s(e, s), _n(e), xt(e), un(e), us(e), ms(e), fs(e), vn(e), bn(e), Mn(e), yn(e), On(e), vs(e), Dn(e), Pn(e), e;
|
|
3977
3981
|
}
|
|
3978
|
-
function Hn(e, t,
|
|
3979
|
-
return
|
|
3982
|
+
function Hn(e, t, s) {
|
|
3983
|
+
return bs(e, t, s), dn(e), gn(e), mn(e), Sn(e), Cn(e), Tn(e), Vn(e), e;
|
|
3980
3984
|
}
|
|
3981
|
-
function $n(e, t,
|
|
3982
|
-
return
|
|
3985
|
+
function $n(e, t, s) {
|
|
3986
|
+
return ds(e, t), _s(e, s), xt(e), us(e), pn(e), fn(e), wn(e), En(e), vs(e), jn(e), Ln(e), e;
|
|
3983
3987
|
}
|
|
3984
3988
|
function Rn(e, t) {
|
|
3985
|
-
return de || (de =
|
|
3989
|
+
return de || (de = bs(St(), e, t), de);
|
|
3986
3990
|
}
|
|
3987
3991
|
function Bn(e, t) {
|
|
3988
3992
|
return _e || (_e = $n(St(), e, t), _e);
|