@planara/core 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/editor-renderer.d.ts +7 -0
- package/dist/core/editor-renderer.d.ts.map +1 -1
- package/dist/handlers/tool/base-tool-handler.d.ts +1 -0
- package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
- package/dist/hub/app-hub.d.ts +1 -1
- package/dist/hub/app-hub.d.ts.map +1 -1
- package/dist/hub/editor-hub.d.ts +6 -2
- package/dist/hub/editor-hub.d.ts.map +1 -1
- package/dist/index.cjs.js +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +291 -227
- package/dist/index.full.d.ts +66 -2
- package/dist/index.public.d.ts +62 -2
- package/dist/index.umd.js +2 -2
- package/dist/interfaces/api/transform-helpers-api.d.ts +4 -3
- package/dist/interfaces/api/transform-helpers-api.d.ts.map +1 -1
- package/dist/interfaces/policy/tool-availability-policy.d.ts +12 -0
- package/dist/interfaces/policy/tool-availability-policy.d.ts.map +1 -0
- package/dist/interfaces/store/editor-store.d.ts +10 -2
- package/dist/interfaces/store/editor-store.d.ts.map +1 -1
- package/dist/managers/scene/scene-manager.d.ts.map +1 -1
- package/dist/managers/tool/tool-manager.d.ts +3 -0
- package/dist/managers/tool/tool-manager.d.ts.map +1 -1
- package/dist/policy/tool-availability-policy.d.ts +13 -0
- package/dist/policy/tool-availability-policy.d.ts.map +1 -0
- package/dist/store/index.d.ts +10 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/types/listener/selected-listener.d.ts +1 -0
- package/dist/types/listener/selected-listener.d.ts.map +1 -1
- package/dist/types/listener/transform-listener.d.ts +3 -0
- package/dist/types/listener/transform-listener.d.ts.map +1 -0
- package/dist/utils/helpers.d.ts +3 -0
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/renderer-api.d.ts +4 -1
- package/dist/utils/renderer-api.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.es.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import * as a from "three";
|
|
3
|
-
import { Controls as
|
|
4
|
-
import { FigureType as
|
|
5
|
-
import { SymmetricAxesHelper as $e, OrbitWithState as
|
|
6
|
-
import { injectable as u, inject as h, injectAll as
|
|
7
|
-
import { EventEmitter as
|
|
8
|
-
import { makeAutoObservable as
|
|
9
|
-
const
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
3
|
+
import { Controls as ze, Vector3 as T, MOUSE as j, TOUCH as R, Quaternion as be, Spherical as ve, Vector2 as w, Ray as Ue, Plane as We, MathUtils as Fe } from "three";
|
|
4
|
+
import { FigureType as E, SelectMode as v, Figure as Ze, DisplayMode as k, DEFAULT_TOOL_RULES as ye, ToolType as C, SceneMode as V } from "@planara/types";
|
|
5
|
+
import { SymmetricAxesHelper as $e, OrbitWithState as Be, CameraAxesGizmo as Xe, ModelingTransformControls as Ge } from "@planara/three";
|
|
6
|
+
import { injectable as u, inject as h, injectAll as U, container as Ke } from "tsyringe";
|
|
7
|
+
import { EventEmitter as qe } from "events";
|
|
8
|
+
import { makeAutoObservable as Qe } from "mobx";
|
|
9
|
+
const Je = {
|
|
10
|
+
[E.Plane]: () => new a.PlaneGeometry(1, 1, 1, 1),
|
|
11
|
+
[E.Cube]: () => new a.BoxGeometry(1, 1, 1, 1, 1, 1),
|
|
12
|
+
[E.UVSphere]: () => new a.SphereGeometry(0.5, 32, 16),
|
|
13
|
+
[E.Icosphere]: () => new a.IcosahedronGeometry(0.5, 0),
|
|
14
|
+
[E.Cylinder]: () => new a.CylinderGeometry(0.5, 0.5, 1, 32, 1, !1),
|
|
15
|
+
[E.Cone]: () => new a.ConeGeometry(0.5, 1, 32, 1, !1),
|
|
16
|
+
[E.Torus]: () => new a.TorusGeometry(0.5, 0.2, 16, 64),
|
|
17
|
+
[E.Circle]: () => new a.CircleGeometry(0.5, 32),
|
|
18
|
+
[E.Sphere]: () => new a.SphereGeometry(0.5, 32, 16),
|
|
19
|
+
[E.Custom]: function() {
|
|
20
20
|
throw new Error("Custom geometry is not generated here.");
|
|
21
21
|
}
|
|
22
22
|
}, je = new a.MeshStandardMaterial({
|
|
23
23
|
color: 12566463,
|
|
24
24
|
metalness: 0,
|
|
25
25
|
roughness: 0.6
|
|
26
|
-
}),
|
|
27
|
-
class
|
|
26
|
+
}), et = 8;
|
|
27
|
+
class Ie {
|
|
28
28
|
/** Корневой объект сцены */
|
|
29
29
|
scene;
|
|
30
30
|
/** Камера для сцены */
|
|
@@ -172,15 +172,15 @@ class Re {
|
|
|
172
172
|
this.meshes && (this.meshes.length = 0, this.meshes = []), this.scene = null, this.camera = null, this.renderer?.dispose(), this.canvas = null;
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
-
var
|
|
176
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
175
|
+
var tt = Object.getOwnPropertyDescriptor, st = (t, e, s, i) => {
|
|
176
|
+
for (var r = i > 1 ? void 0 : i ? tt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
177
177
|
(n = t[o]) && (r = n(r) || r);
|
|
178
178
|
return r;
|
|
179
179
|
};
|
|
180
180
|
let X = class {
|
|
181
181
|
_emitter;
|
|
182
182
|
constructor() {
|
|
183
|
-
this._emitter = new
|
|
183
|
+
this._emitter = new qe();
|
|
184
184
|
}
|
|
185
185
|
/** Публикация события */
|
|
186
186
|
emit(t, e) {
|
|
@@ -195,22 +195,22 @@ let X = class {
|
|
|
195
195
|
this._emitter.off(t, e);
|
|
196
196
|
}
|
|
197
197
|
};
|
|
198
|
-
X =
|
|
198
|
+
X = st([
|
|
199
199
|
u()
|
|
200
200
|
], X);
|
|
201
|
-
var
|
|
202
|
-
const
|
|
201
|
+
var I = /* @__PURE__ */ ((t) => (t.SelectHover = "select.hover", t.SelectClick = "select.click", t.ToolSelect = "tool.select", t))(I || {});
|
|
202
|
+
const it = 0.03, rt = 0.05, He = 0, ot = 1, nt = 2, L = 31, W = 16776960, F = 16755200, at = 2236962, ht = 2236962, lt = (t) => !!t && t.isMesh, ke = (t) => {
|
|
203
203
|
let e = t;
|
|
204
204
|
for (; e; ) {
|
|
205
205
|
if (e.isMesh) return e;
|
|
206
206
|
e = e.parent;
|
|
207
207
|
}
|
|
208
208
|
return null;
|
|
209
|
-
},
|
|
209
|
+
}, Ve = (t) => {
|
|
210
210
|
const e = new a.BufferGeometry();
|
|
211
211
|
e.setAttribute("position", t.getAttribute("position")), e.computeBoundingSphere(), e.computeBoundingBox();
|
|
212
212
|
const s = new a.PointsMaterial({
|
|
213
|
-
color:
|
|
213
|
+
color: ht,
|
|
214
214
|
size: 6,
|
|
215
215
|
sizeAttenuation: !1,
|
|
216
216
|
depthTest: !1,
|
|
@@ -218,31 +218,36 @@ const st = 0.03, it = 0.05, Ie = 0, rt = 1, ot = 2, L = 31, z = 16776960, Z = 16
|
|
|
218
218
|
transparent: !0,
|
|
219
219
|
opacity: 0.9
|
|
220
220
|
}), i = new a.Points(e, s);
|
|
221
|
-
return i.layers.set(
|
|
222
|
-
},
|
|
221
|
+
return i.layers.set(nt), i.renderOrder = 1e3, i.visible = !1, i;
|
|
222
|
+
}, Ne = (t) => {
|
|
223
223
|
const e = new a.EdgesGeometry(t), s = new a.LineSegments(
|
|
224
224
|
e,
|
|
225
|
-
new a.LineBasicMaterial({ color:
|
|
225
|
+
new a.LineBasicMaterial({ color: at, linewidth: 1 })
|
|
226
226
|
);
|
|
227
|
-
return s.layers.set(
|
|
227
|
+
return s.layers.set(ot), s;
|
|
228
|
+
}, ct = (t) => {
|
|
229
|
+
const e = { x: t.position.x, y: t.position.y, z: t.position.z }, s = { x: t.rotation.x, y: t.rotation.y, z: t.rotation.z }, i = { x: t.scale.x, y: t.scale.y, z: t.scale.z }, r = new a.Box3().setFromObject(t), o = new a.Vector3();
|
|
230
|
+
r.getSize(o);
|
|
231
|
+
const n = { x: o.x, y: o.y, z: o.z };
|
|
232
|
+
return { position: e, rotation: s, scale: i, size: n };
|
|
228
233
|
};
|
|
229
|
-
var
|
|
230
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
234
|
+
var dt = Object.getOwnPropertyDescriptor, _t = (t, e, s, i) => {
|
|
235
|
+
for (var r = i > 1 ? void 0 : i ? dt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
231
236
|
(n = t[o]) && (r = n(r) || r);
|
|
232
237
|
return r;
|
|
233
|
-
},
|
|
234
|
-
let G = class extends
|
|
238
|
+
}, Me = (t, e) => (s, i) => e(s, i, t);
|
|
239
|
+
let G = class extends Ie {
|
|
235
240
|
constructor(t, e) {
|
|
236
241
|
super(t), this._canvas = t, this._bus = e;
|
|
237
242
|
const s = new a.GridHelper(10, 10);
|
|
238
243
|
s.position.y = -1e-3, this.scene.add(s);
|
|
239
244
|
const i = new $e(6);
|
|
240
|
-
this.scene.add(i), this._orbit = new
|
|
245
|
+
this.scene.add(i), this._orbit = new Be(this.camera, this.renderer.domElement), this._orbit.enableDamping = !0, this._orbit.dampingFactor = 0.05, this._cameraGizmo = new Xe(this.renderer, this.camera, {
|
|
241
246
|
size: 96,
|
|
242
247
|
// Размер квадрата
|
|
243
248
|
margin: 36
|
|
244
249
|
// Отступы по сторонам (снизу и справа)
|
|
245
|
-
}), this._raycaster = new a.Raycaster(), this._mouse = new a.Vector2(), this.scene.add(new a.HemisphereLight(16777215, 4473924, 0.6)), this.camera.layers.enable(0), this.camera.layers.enable(1), this._transform = new
|
|
250
|
+
}), this._raycaster = new a.Raycaster(), this._mouse = new a.Vector2(), this.scene.add(new a.HemisphereLight(16777215, 4473924, 0.6)), this.camera.layers.enable(0), this.camera.layers.enable(1), this._transform = new Ge(this.camera, this.renderer.domElement), this._transformHelper = this._transform.getHelper(), this.scene.add(this._transformHelper), this._isEventListenersAdded || this._initMouseListeners();
|
|
246
251
|
}
|
|
247
252
|
/** Orbit-контроллер для управления камерой */
|
|
248
253
|
_orbit;
|
|
@@ -262,6 +267,7 @@ let G = class extends Re {
|
|
|
262
267
|
_lastHovered = null;
|
|
263
268
|
/** Gizmo для управления отображением perspective camera */
|
|
264
269
|
_cameraGizmo;
|
|
270
|
+
_transformListeners = /* @__PURE__ */ new Set();
|
|
265
271
|
/**
|
|
266
272
|
* Обновление состояния рендерера.
|
|
267
273
|
*/
|
|
@@ -271,10 +277,10 @@ let G = class extends Re {
|
|
|
271
277
|
/** Добавление фигуры на сцену */
|
|
272
278
|
addFigure(t) {
|
|
273
279
|
const e = super.addFigure(t);
|
|
274
|
-
e.layers.enable(
|
|
275
|
-
const s =
|
|
280
|
+
e.layers.enable(He);
|
|
281
|
+
const s = Ne(e.geometry);
|
|
276
282
|
e.add(s);
|
|
277
|
-
const i =
|
|
283
|
+
const i = Ve(e.geometry);
|
|
278
284
|
return e.add(i), e;
|
|
279
285
|
}
|
|
280
286
|
/**
|
|
@@ -300,6 +306,13 @@ let G = class extends Re {
|
|
|
300
306
|
detachTransformControls() {
|
|
301
307
|
this._transform.detach();
|
|
302
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Подписывает слушателя на изменения трансформации текущего объекта.
|
|
311
|
+
* @internal
|
|
312
|
+
*/
|
|
313
|
+
onTransformChange(t) {
|
|
314
|
+
return this._transformListeners.add(t), () => this._transformListeners.delete(t);
|
|
315
|
+
}
|
|
303
316
|
/**
|
|
304
317
|
* Настройка режимов для `Raycaster`.
|
|
305
318
|
* @internal
|
|
@@ -312,17 +325,17 @@ let G = class extends Re {
|
|
|
312
325
|
e.layers.set(0);
|
|
313
326
|
break;
|
|
314
327
|
case v.Edge:
|
|
315
|
-
e.layers.set(1), e.params.Line.threshold =
|
|
328
|
+
e.layers.set(1), e.params.Line.threshold = it;
|
|
316
329
|
break;
|
|
317
330
|
case v.Vertex:
|
|
318
|
-
e.layers.set(2), e.params.Points.threshold =
|
|
331
|
+
e.layers.set(2), e.params.Points.threshold = rt;
|
|
319
332
|
break;
|
|
320
333
|
}
|
|
321
334
|
}
|
|
322
335
|
dispose() {
|
|
323
336
|
this._isEventListenersAdded && (this.canvas.removeEventListener("mousemove", this._handleMouseMove, !1), this.canvas.removeEventListener("click", this._handleMouseClick, !1), this.canvas.removeEventListener("pointerdown", (t) => this._transform.pointerDown(t)), this.canvas.removeEventListener("pointermove", (t) => this._transform.pointerMove(t)), this.canvas.removeEventListener("pointerup", (t) => this._transform.pointerUp(t)), this.canvas.removeEventListener("pointerleave", () => this._transform.pointerHover(null)), this._transform.removeEventListener("dragging-changed", () => {
|
|
324
337
|
this._orbit.enabled = !this._transform.dragging;
|
|
325
|
-
}), this._isEventListenersAdded = !1), this._orbit?.dispose(), this._transform?.dispose(), this._transformHelper?.parent && this._transformHelper.parent.remove(this._transformHelper), this._lastHovered = null, super.dispose();
|
|
338
|
+
}), this._transformListeners.clear(), this._isEventListenersAdded = !1), this._orbit?.dispose(), this._transform?.dispose(), this._transformHelper?.parent && this._transformHelper.parent.remove(this._transformHelper), this._lastHovered = null, super.dispose();
|
|
326
339
|
}
|
|
327
340
|
render() {
|
|
328
341
|
super.render(), this._cameraGizmo.render(this.canvas.width, this.canvas.height);
|
|
@@ -331,15 +344,17 @@ let G = class extends Re {
|
|
|
331
344
|
_initMouseListeners() {
|
|
332
345
|
this.canvas.addEventListener("mousemove", this._handleMouseMove, !1), this.canvas.addEventListener("click", this._handleMouseClick, !1), this.canvas.addEventListener("pointerdown", (t) => this._transform.pointerDown(t)), this.canvas.addEventListener("pointermove", (t) => this._transform.pointerMove(t)), this.canvas.addEventListener("pointerup", (t) => this._transform.pointerUp(t)), this.canvas.addEventListener("pointerleave", () => this._transform.pointerHover(null)), this._transform.addEventListener("dragging-changed", () => {
|
|
333
346
|
this._orbit.enabled = !this._transform.dragging;
|
|
347
|
+
}), this._transform.addEventListener("objectChange", () => {
|
|
348
|
+
for (const t of this._transformListeners) t();
|
|
334
349
|
}), this._isEventListenersAdded = !0;
|
|
335
350
|
}
|
|
336
351
|
/** Обработчик события для hover */
|
|
337
352
|
_handleMouseMove = (t) => {
|
|
338
|
-
this._processRaycastEvent(t,
|
|
353
|
+
this._processRaycastEvent(t, I.SelectHover, !0);
|
|
339
354
|
};
|
|
340
355
|
/** Обработчик события на click */
|
|
341
356
|
_handleMouseClick = (t) => {
|
|
342
|
-
this._processRaycastEvent(t,
|
|
357
|
+
this._processRaycastEvent(t, I.SelectClick, !1);
|
|
343
358
|
};
|
|
344
359
|
/** Вспомогательный метод для получения модели, которую выбрали и отправки события в event bus */
|
|
345
360
|
_processRaycastEvent(t, e, s) {
|
|
@@ -350,12 +365,12 @@ let G = class extends Re {
|
|
|
350
365
|
s ? n !== this._lastHovered && (this.meshes.forEach((c) => c.userData.isHit = !1), n && (n.userData.isHit = !0), this._lastHovered = n, this._bus.emit(e, o ? { intersection: o } : null)) : this._bus.emit(e, o ? { intersection: o } : null);
|
|
351
366
|
}
|
|
352
367
|
};
|
|
353
|
-
G =
|
|
368
|
+
G = _t([
|
|
354
369
|
u(),
|
|
355
|
-
|
|
356
|
-
|
|
370
|
+
Me(0, h("Canvas")),
|
|
371
|
+
Me(1, h("EventBus"))
|
|
357
372
|
], G);
|
|
358
|
-
const
|
|
373
|
+
const Se = { type: "change" }, pe = { type: "start" }, Ye = { type: "end" }, z = new Ue(), we = new We(), pt = Math.cos(70 * Fe.DEG2RAD), p = new T(), g = 2 * Math.PI, l = {
|
|
359
374
|
NONE: -1,
|
|
360
375
|
ROTATE: 0,
|
|
361
376
|
DOLLY: 1,
|
|
@@ -364,8 +379,8 @@ const Me = { type: "change" }, pe = { type: "start" }, Ne = { type: "end" }, U =
|
|
|
364
379
|
TOUCH_PAN: 4,
|
|
365
380
|
TOUCH_DOLLY_PAN: 5,
|
|
366
381
|
TOUCH_DOLLY_ROTATE: 6
|
|
367
|
-
},
|
|
368
|
-
class
|
|
382
|
+
}, $ = 1e-6;
|
|
383
|
+
class ut extends ze {
|
|
369
384
|
/**
|
|
370
385
|
* Constructs a new controls instance.
|
|
371
386
|
*
|
|
@@ -373,7 +388,7 @@ class _t extends Ye {
|
|
|
373
388
|
* @param {?HTMLElement} domElement - The HTML element used for event listeners.
|
|
374
389
|
*/
|
|
375
390
|
constructor(e, s = null) {
|
|
376
|
-
super(e, s), this.state = l.NONE, this.target = new
|
|
391
|
+
super(e, s), this.state = l.NONE, this.target = new T(), this.cursor = new T(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: j.ROTATE, MIDDLE: j.DOLLY, RIGHT: j.PAN }, this.touches = { ONE: R.ROTATE, TWO: R.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new T(), this._lastQuaternion = new be(), this._lastTargetPosition = new T(), this._quat = new be().setFromUnitVectors(e.up, new T(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new ve(), this._sphericalDelta = new ve(), this._scale = 1, this._panOffset = new T(), this._rotateStart = new w(), this._rotateEnd = new w(), this._rotateDelta = new w(), this._panStart = new w(), this._panEnd = new w(), this._panDelta = new w(), this._dollyStart = new w(), this._dollyEnd = new w(), this._dollyDelta = new w(), this._dollyDirection = new T(), this._mouse = new w(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = ft.bind(this), this._onPointerDown = mt.bind(this), this._onPointerUp = gt.bind(this), this._onContextMenu = Et.bind(this), this._onMouseWheel = yt.bind(this), this._onKeyDown = Mt.bind(this), this._onTouchStart = St.bind(this), this._onTouchMove = wt.bind(this), this._onMouseDown = bt.bind(this), this._onMouseMove = vt.bind(this), this._interceptControlDown = Pt.bind(this), this._interceptControlUp = Ot.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
|
|
377
392
|
}
|
|
378
393
|
connect(e) {
|
|
379
394
|
super.connect(e), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointercancel", this._onPointerUp), this.domElement.addEventListener("contextmenu", this._onContextMenu), this.domElement.addEventListener("wheel", this._onMouseWheel, { passive: !1 }), this.domElement.getRootNode().addEventListener("keydown", this._interceptControlDown, { passive: !0, capture: !0 }), this.domElement.style.touchAction = "none";
|
|
@@ -434,7 +449,7 @@ class _t extends Ye {
|
|
|
434
449
|
* was called, or the initial state.
|
|
435
450
|
*/
|
|
436
451
|
reset() {
|
|
437
|
-
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(
|
|
452
|
+
this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(Se), this.update(), this.state = l.NONE;
|
|
438
453
|
}
|
|
439
454
|
update(e = null) {
|
|
440
455
|
const s = this.object.position;
|
|
@@ -456,20 +471,20 @@ class _t extends Ye {
|
|
|
456
471
|
const _ = c - n;
|
|
457
472
|
this.object.position.addScaledVector(this._dollyDirection, _), this.object.updateMatrixWorld(), o = !!_;
|
|
458
473
|
} else if (this.object.isOrthographicCamera) {
|
|
459
|
-
const c = new
|
|
474
|
+
const c = new T(this._mouse.x, this._mouse.y, 0);
|
|
460
475
|
c.unproject(this.object);
|
|
461
476
|
const _ = this.object.zoom;
|
|
462
477
|
this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), this.object.updateProjectionMatrix(), o = _ !== this.object.zoom;
|
|
463
|
-
const m = new
|
|
478
|
+
const m = new T(this._mouse.x, this._mouse.y, 0);
|
|
464
479
|
m.unproject(this.object), this.object.position.sub(m).add(c), this.object.updateMatrixWorld(), n = p.length();
|
|
465
480
|
} else
|
|
466
481
|
console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), this.zoomToCursor = !1;
|
|
467
|
-
n !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(n).add(this.object.position) : (
|
|
482
|
+
n !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(n).add(this.object.position) : (z.origin.copy(this.object.position), z.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(z.direction)) < pt ? this.object.lookAt(this.target) : (we.setFromNormalAndCoplanarPoint(this.object.up, this.target), z.intersectPlane(we, this.target))));
|
|
468
483
|
} else if (this.object.isOrthographicCamera) {
|
|
469
484
|
const n = this.object.zoom;
|
|
470
485
|
this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), n !== this.object.zoom && (this.object.updateProjectionMatrix(), o = !0);
|
|
471
486
|
}
|
|
472
|
-
return this._scale = 1, this._performCursorZoom = !1, o || this._lastPosition.distanceToSquared(this.object.position) >
|
|
487
|
+
return this._scale = 1, this._performCursorZoom = !1, o || this._lastPosition.distanceToSquared(this.object.position) > $ || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > $ || this._lastTargetPosition.distanceToSquared(this.target) > $ ? (this.dispatchEvent(Se), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
|
|
473
488
|
}
|
|
474
489
|
_getAutoRotationAngle(e) {
|
|
475
490
|
return e !== null ? g / 60 * this.autoRotateSpeed * e : g / 60 / 60 * this.autoRotateSpeed;
|
|
@@ -637,7 +652,7 @@ class _t extends Ye {
|
|
|
637
652
|
}
|
|
638
653
|
_trackPointer(e) {
|
|
639
654
|
let s = this._pointerPositions[e.pointerId];
|
|
640
|
-
s === void 0 && (s = new
|
|
655
|
+
s === void 0 && (s = new w(), this._pointerPositions[e.pointerId] = s), s.set(e.pageX, e.pageY);
|
|
641
656
|
}
|
|
642
657
|
_getSecondPointerPosition(e) {
|
|
643
658
|
const s = e.pointerId === this._pointers[0] ? this._pointers[1] : this._pointers[0];
|
|
@@ -661,16 +676,16 @@ class _t extends Ye {
|
|
|
661
676
|
return e.ctrlKey && !this._controlActive && (i.deltaY *= 10), i;
|
|
662
677
|
}
|
|
663
678
|
}
|
|
664
|
-
function
|
|
679
|
+
function mt(t) {
|
|
665
680
|
this.enabled !== !1 && (this._pointers.length === 0 && (this.domElement.setPointerCapture(t.pointerId), this.domElement.addEventListener("pointermove", this._onPointerMove), this.domElement.addEventListener("pointerup", this._onPointerUp)), !this._isTrackingPointer(t) && (this._addPointer(t), t.pointerType === "touch" ? this._onTouchStart(t) : this._onMouseDown(t)));
|
|
666
681
|
}
|
|
667
|
-
function
|
|
682
|
+
function ft(t) {
|
|
668
683
|
this.enabled !== !1 && (t.pointerType === "touch" ? this._onTouchMove(t) : this._onMouseMove(t));
|
|
669
684
|
}
|
|
670
|
-
function
|
|
685
|
+
function gt(t) {
|
|
671
686
|
switch (this._removePointer(t), this._pointers.length) {
|
|
672
687
|
case 0:
|
|
673
|
-
this.domElement.releasePointerCapture(t.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(
|
|
688
|
+
this.domElement.releasePointerCapture(t.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(Ye), this.state = l.NONE;
|
|
674
689
|
break;
|
|
675
690
|
case 1:
|
|
676
691
|
const e = this._pointers[0], s = this._pointerPositions[e];
|
|
@@ -678,7 +693,7 @@ function mt(t) {
|
|
|
678
693
|
break;
|
|
679
694
|
}
|
|
680
695
|
}
|
|
681
|
-
function
|
|
696
|
+
function bt(t) {
|
|
682
697
|
let e;
|
|
683
698
|
switch (t.button) {
|
|
684
699
|
case 0:
|
|
@@ -721,7 +736,7 @@ function ft(t) {
|
|
|
721
736
|
}
|
|
722
737
|
this.state !== l.NONE && this.dispatchEvent(pe);
|
|
723
738
|
}
|
|
724
|
-
function
|
|
739
|
+
function vt(t) {
|
|
725
740
|
switch (this.state) {
|
|
726
741
|
case l.ROTATE:
|
|
727
742
|
if (this.enableRotate === !1) return;
|
|
@@ -737,21 +752,21 @@ function gt(t) {
|
|
|
737
752
|
break;
|
|
738
753
|
}
|
|
739
754
|
}
|
|
740
|
-
function
|
|
741
|
-
this.enabled === !1 || this.enableZoom === !1 || this.state !== l.NONE || (t.preventDefault(), this.dispatchEvent(pe), this._handleMouseWheel(this._customWheelEvent(t)), this.dispatchEvent(
|
|
755
|
+
function yt(t) {
|
|
756
|
+
this.enabled === !1 || this.enableZoom === !1 || this.state !== l.NONE || (t.preventDefault(), this.dispatchEvent(pe), this._handleMouseWheel(this._customWheelEvent(t)), this.dispatchEvent(Ye));
|
|
742
757
|
}
|
|
743
|
-
function
|
|
758
|
+
function Mt(t) {
|
|
744
759
|
this.enabled !== !1 && this._handleKeyDown(t);
|
|
745
760
|
}
|
|
746
|
-
function
|
|
761
|
+
function St(t) {
|
|
747
762
|
switch (this._trackPointer(t), this._pointers.length) {
|
|
748
763
|
case 1:
|
|
749
764
|
switch (this.touches.ONE) {
|
|
750
|
-
case
|
|
765
|
+
case R.ROTATE:
|
|
751
766
|
if (this.enableRotate === !1) return;
|
|
752
767
|
this._handleTouchStartRotate(t), this.state = l.TOUCH_ROTATE;
|
|
753
768
|
break;
|
|
754
|
-
case
|
|
769
|
+
case R.PAN:
|
|
755
770
|
if (this.enablePan === !1) return;
|
|
756
771
|
this._handleTouchStartPan(t), this.state = l.TOUCH_PAN;
|
|
757
772
|
break;
|
|
@@ -761,11 +776,11 @@ function yt(t) {
|
|
|
761
776
|
break;
|
|
762
777
|
case 2:
|
|
763
778
|
switch (this.touches.TWO) {
|
|
764
|
-
case
|
|
779
|
+
case R.DOLLY_PAN:
|
|
765
780
|
if (this.enableZoom === !1 && this.enablePan === !1) return;
|
|
766
781
|
this._handleTouchStartDollyPan(t), this.state = l.TOUCH_DOLLY_PAN;
|
|
767
782
|
break;
|
|
768
|
-
case
|
|
783
|
+
case R.DOLLY_ROTATE:
|
|
769
784
|
if (this.enableZoom === !1 && this.enableRotate === !1) return;
|
|
770
785
|
this._handleTouchStartDollyRotate(t), this.state = l.TOUCH_DOLLY_ROTATE;
|
|
771
786
|
break;
|
|
@@ -778,7 +793,7 @@ function yt(t) {
|
|
|
778
793
|
}
|
|
779
794
|
this.state !== l.NONE && this.dispatchEvent(pe);
|
|
780
795
|
}
|
|
781
|
-
function
|
|
796
|
+
function wt(t) {
|
|
782
797
|
switch (this._trackPointer(t), this.state) {
|
|
783
798
|
case l.TOUCH_ROTATE:
|
|
784
799
|
if (this.enableRotate === !1) return;
|
|
@@ -800,20 +815,20 @@ function Mt(t) {
|
|
|
800
815
|
this.state = l.NONE;
|
|
801
816
|
}
|
|
802
817
|
}
|
|
803
|
-
function
|
|
818
|
+
function Et(t) {
|
|
804
819
|
this.enabled !== !1 && t.preventDefault();
|
|
805
820
|
}
|
|
806
|
-
function
|
|
821
|
+
function Pt(t) {
|
|
807
822
|
t.key === "Control" && (this._controlActive = !0, this.domElement.getRootNode().addEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
|
|
808
823
|
}
|
|
809
|
-
function
|
|
824
|
+
function Ot(t) {
|
|
810
825
|
t.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
|
|
811
826
|
}
|
|
812
|
-
class
|
|
827
|
+
class Ms extends Ie {
|
|
813
828
|
/** Orbit-контроллер для управления камерой */
|
|
814
829
|
_orbit;
|
|
815
830
|
constructor(e) {
|
|
816
|
-
super(e), this.camera.position.set(1, 1, 7), this.camera.lookAt(0, 0, 0), this._orbit = new
|
|
831
|
+
super(e), this.camera.position.set(1, 1, 7), this.camera.lookAt(0, 0, 0), this._orbit = new ut(this.camera, this.canvas), this._orbit.target.set(0, 0, 0), this._orbit.minPolarAngle = Math.PI / 2, this._orbit.maxPolarAngle = Math.PI / 2, this._orbit.enableRotate = !0, this._orbit.enableZoom = !1, this._orbit.enablePan = !1;
|
|
817
832
|
}
|
|
818
833
|
/**
|
|
819
834
|
* Обновление состояния рендерера.
|
|
@@ -822,7 +837,7 @@ class bs extends Re {
|
|
|
822
837
|
this._orbit?.update();
|
|
823
838
|
}
|
|
824
839
|
}
|
|
825
|
-
class
|
|
840
|
+
class Ss {
|
|
826
841
|
/** Позиции вершин */
|
|
827
842
|
_positions = [];
|
|
828
843
|
/** Нормали вершин */
|
|
@@ -859,7 +874,7 @@ class vs {
|
|
|
859
874
|
}
|
|
860
875
|
}
|
|
861
876
|
const i = {
|
|
862
|
-
type:
|
|
877
|
+
type: E.Custom,
|
|
863
878
|
position: this._positions,
|
|
864
879
|
...this._normals.length > 0 && { normal: this._normals },
|
|
865
880
|
...this._uvs.length > 0 && { uv: this._uvs }
|
|
@@ -889,8 +904,8 @@ class vs {
|
|
|
889
904
|
}
|
|
890
905
|
}
|
|
891
906
|
}
|
|
892
|
-
var
|
|
893
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
907
|
+
var Tt = Object.getOwnPropertyDescriptor, Lt = (t, e, s, i) => {
|
|
908
|
+
for (var r = i > 1 ? void 0 : i ? Tt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
894
909
|
(n = t[o]) && (r = n(r) || r);
|
|
895
910
|
return r;
|
|
896
911
|
}, Ee = (t, e) => (s, i) => e(s, i, t);
|
|
@@ -911,19 +926,19 @@ let K = class {
|
|
|
911
926
|
this._handlers && this._handlers.clear(), this._currentMode = k.Plane, this._store.setDisplayMode(this._currentMode);
|
|
912
927
|
}
|
|
913
928
|
};
|
|
914
|
-
K =
|
|
929
|
+
K = Lt([
|
|
915
930
|
u(),
|
|
916
|
-
Ee(0,
|
|
931
|
+
Ee(0, U("IDisplayHandler")),
|
|
917
932
|
Ee(1, h("IEditorStore"))
|
|
918
933
|
], K);
|
|
919
|
-
var
|
|
934
|
+
var P = /* @__PURE__ */ ((t) => (t.Hover = "hover", t.Click = "click", t))(P || {}), Dt = Object.getOwnPropertyDescriptor, Ct = (t, e, s, i) => {
|
|
920
935
|
for (var r = i > 1 ? void 0 : i ? Dt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
921
936
|
(n = t[o]) && (r = n(r) || r);
|
|
922
937
|
return r;
|
|
923
938
|
}, B = (t, e) => (s, i) => e(s, i, t);
|
|
924
939
|
let q = class {
|
|
925
940
|
constructor(t, e, s) {
|
|
926
|
-
this._eventBus = t, this._store = s, this._handlers = new Map(e.map((i) => [i.mode, i])), this._eventBus.on(
|
|
941
|
+
this._eventBus = t, this._store = s, this._handlers = new Map(e.map((i) => [i.mode, i])), this._eventBus.on(I.SelectHover, this._onHover), this._eventBus.on(I.SelectClick, this._onClick);
|
|
927
942
|
}
|
|
928
943
|
/** Текущий режим выборки */
|
|
929
944
|
_currentMode = v.Mesh;
|
|
@@ -935,25 +950,35 @@ let q = class {
|
|
|
935
950
|
}
|
|
936
951
|
/** Обработчик события наведения на модель */
|
|
937
952
|
_onHover = (t) => {
|
|
938
|
-
this._handlers.get(this._currentMode)?.handle(t,
|
|
953
|
+
this._handlers.get(this._currentMode)?.handle(t, P.Hover);
|
|
939
954
|
};
|
|
940
955
|
/** Обработчик события клика на модель */
|
|
941
956
|
_onClick = (t) => {
|
|
942
|
-
this._handlers.get(this._currentMode)?.handle(t,
|
|
957
|
+
this._handlers.get(this._currentMode)?.handle(t, P.Click);
|
|
943
958
|
};
|
|
944
959
|
/** Освобождает ресурсы менеджера. */
|
|
945
960
|
dispose() {
|
|
946
|
-
this._handlers && this._handlers.clear(), this._eventBus.off(
|
|
961
|
+
this._handlers && this._handlers.clear(), this._eventBus.off(I.SelectHover, this._onHover), this._currentMode = v.Mesh, this._store.setSelectMode(this._currentMode);
|
|
947
962
|
}
|
|
948
963
|
};
|
|
949
|
-
q =
|
|
964
|
+
q = Ct([
|
|
950
965
|
u(),
|
|
951
966
|
B(0, h("EventBus")),
|
|
952
|
-
B(1,
|
|
967
|
+
B(1, U("ISelectHandler")),
|
|
953
968
|
B(2, h("IEditorStore"))
|
|
954
969
|
], q);
|
|
955
|
-
|
|
956
|
-
|
|
970
|
+
class xt {
|
|
971
|
+
/** Доступен ли инструмент при текущем режиме выборки */
|
|
972
|
+
isToolEnabled(e, s) {
|
|
973
|
+
return ye[s].includes(e);
|
|
974
|
+
}
|
|
975
|
+
/** Получение доступных инструментов для режима выборки*/
|
|
976
|
+
getEnabledTools(e) {
|
|
977
|
+
return ye[e];
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
var At = Object.getOwnPropertyDescriptor, Rt = (t, e, s, i) => {
|
|
981
|
+
for (var r = i > 1 ? void 0 : i ? At(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
957
982
|
(n = t[o]) && (r = n(r) || r);
|
|
958
983
|
return r;
|
|
959
984
|
}, Pe = (t, e) => (s, i) => e(s, i, t);
|
|
@@ -961,31 +986,36 @@ let Q = class {
|
|
|
961
986
|
constructor(t, e) {
|
|
962
987
|
this._store = e, this._handlers = new Map(t.map((s) => [s.mode, s])), this._unsubSelected = this._store.onSelectedObjectChange(() => {
|
|
963
988
|
this._handlers.get(this._currentTool)?.handle();
|
|
964
|
-
});
|
|
989
|
+
}), this._policy = new xt();
|
|
965
990
|
}
|
|
966
991
|
/** Текущий выбранный инструмент */
|
|
967
992
|
_currentTool = C.Translate;
|
|
968
993
|
/** Хендлеры, которые управляют инструментами */
|
|
969
994
|
_handlers;
|
|
995
|
+
/** Событие обновления выбора объекта */
|
|
970
996
|
_unsubSelected;
|
|
997
|
+
/** Политика доступности инструментов */
|
|
998
|
+
_policy;
|
|
971
999
|
manage(t) {
|
|
972
|
-
|
|
1000
|
+
if (this._currentTool === t) return;
|
|
1001
|
+
const e = this._store.getSelectMode();
|
|
1002
|
+
this._policy.isToolEnabled(t, e) && (this._handlers.get(this._currentTool)?.rollback(), this._currentTool = t, this._store.setToolType(this._currentTool), this._handlers.get(this._currentTool)?.handle());
|
|
973
1003
|
}
|
|
974
1004
|
/** Освобождает ресурсы менеджера. */
|
|
975
1005
|
dispose() {
|
|
976
1006
|
this._unsubSelected?.(), this._handlers && this._handlers.clear(), this._currentTool = C.Translate, this._store.setToolType(this._currentTool);
|
|
977
1007
|
}
|
|
978
1008
|
};
|
|
979
|
-
Q =
|
|
1009
|
+
Q = Rt([
|
|
980
1010
|
u(),
|
|
981
|
-
Pe(0,
|
|
1011
|
+
Pe(0, U("IToolHandler")),
|
|
982
1012
|
Pe(1, h("IEditorStore"))
|
|
983
1013
|
], Q);
|
|
984
|
-
var
|
|
985
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1014
|
+
var jt = Object.getOwnPropertyDescriptor, It = (t, e, s, i) => {
|
|
1015
|
+
for (var r = i > 1 ? void 0 : i ? jt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
986
1016
|
(n = t[o]) && (r = n(r) || r);
|
|
987
1017
|
return r;
|
|
988
|
-
},
|
|
1018
|
+
}, Ht = (t, e) => (s, i) => e(s, i, t);
|
|
989
1019
|
let J = class {
|
|
990
1020
|
/** Текущий режим редактирования сцены */
|
|
991
1021
|
_currentMode = V.AddFigure;
|
|
@@ -996,22 +1026,22 @@ let J = class {
|
|
|
996
1026
|
}
|
|
997
1027
|
/** Установка режима редактирования сцены */
|
|
998
1028
|
manage(t, e) {
|
|
999
|
-
|
|
1029
|
+
t === V.AddFigure ? this._handlers.get(t)?.handle(e) : this._handlers.get(t)?.handle(), this._currentMode = t;
|
|
1000
1030
|
}
|
|
1001
1031
|
/** Освобождает ресурсы менеджера. */
|
|
1002
1032
|
dispose() {
|
|
1003
1033
|
this._handlers && this._handlers.clear(), this._currentMode = V.AddFigure;
|
|
1004
1034
|
}
|
|
1005
1035
|
};
|
|
1006
|
-
J =
|
|
1036
|
+
J = It([
|
|
1007
1037
|
u(),
|
|
1008
|
-
|
|
1038
|
+
Ht(0, U("ISceneHandler"))
|
|
1009
1039
|
], J);
|
|
1010
|
-
var
|
|
1011
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1040
|
+
var kt = Object.getOwnPropertyDescriptor, Vt = (t, e, s, i) => {
|
|
1041
|
+
for (var r = i > 1 ? void 0 : i ? kt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1012
1042
|
(n = t[o]) && (r = n(r) || r);
|
|
1013
1043
|
return r;
|
|
1014
|
-
},
|
|
1044
|
+
}, Nt = (t, e) => (s, i) => e(s, i, t);
|
|
1015
1045
|
let ee = class {
|
|
1016
1046
|
constructor(t) {
|
|
1017
1047
|
this._api = t;
|
|
@@ -1068,15 +1098,15 @@ let ee = class {
|
|
|
1068
1098
|
"wireframe" in e && !this._prevWireframe.has(t) && (this._prevWireframe.set(t, !!e.wireframe), e.wireframe = !0, t.needsUpdate = !0), e.color?.isColor && (this._prevColorMesh.has(t) || this._prevColorMesh.set(t, e.color.clone()), e.color.copy(this._wireColor));
|
|
1069
1099
|
}
|
|
1070
1100
|
};
|
|
1071
|
-
ee =
|
|
1101
|
+
ee = Vt([
|
|
1072
1102
|
u(),
|
|
1073
|
-
|
|
1103
|
+
Nt(0, h("RendererApi"))
|
|
1074
1104
|
], ee);
|
|
1075
|
-
var
|
|
1076
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1105
|
+
var Yt = Object.getOwnPropertyDescriptor, zt = (t, e, s, i) => {
|
|
1106
|
+
for (var r = i > 1 ? void 0 : i ? Yt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1077
1107
|
(n = t[o]) && (r = n(r) || r);
|
|
1078
1108
|
return r;
|
|
1079
|
-
},
|
|
1109
|
+
}, Oe = (t, e) => (s, i) => e(s, i, t);
|
|
1080
1110
|
let te = class {
|
|
1081
1111
|
constructor(t, e) {
|
|
1082
1112
|
this._api = t, this._store = e;
|
|
@@ -1089,13 +1119,13 @@ let te = class {
|
|
|
1089
1119
|
_selectedMesh = null;
|
|
1090
1120
|
// Цвета, необходимые для переключения
|
|
1091
1121
|
/** Цвет ребер для фигуры, на которую навелись */
|
|
1092
|
-
_hoverColor =
|
|
1122
|
+
_hoverColor = W;
|
|
1093
1123
|
/** Цвет ребер для выделенной фигуры */
|
|
1094
|
-
_selectColor =
|
|
1124
|
+
_selectColor = F;
|
|
1095
1125
|
/** Исходные цвета материалов линий для отката */
|
|
1096
1126
|
_origLineColors = /* @__PURE__ */ new WeakMap();
|
|
1097
1127
|
handle(t, e) {
|
|
1098
|
-
if (this._api.setRaycastMode(this.mode), e ===
|
|
1128
|
+
if (this._api.setRaycastMode(this.mode), e === P.Hover) {
|
|
1099
1129
|
if (!t) {
|
|
1100
1130
|
this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), this._hoveredMesh = null;
|
|
1101
1131
|
return;
|
|
@@ -1103,7 +1133,7 @@ let te = class {
|
|
|
1103
1133
|
const s = t.intersection.object;
|
|
1104
1134
|
this._hoveredMesh !== s && (this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), s !== this._selectedMesh && this._paintEdges(s, this._hoverColor), this._hoveredMesh = s);
|
|
1105
1135
|
}
|
|
1106
|
-
if (e ===
|
|
1136
|
+
if (e === P.Click) {
|
|
1107
1137
|
if (!t) {
|
|
1108
1138
|
this._selectedMesh && (this._restoreEdgesColor(this._selectedMesh), this._selectedMesh = null, this._store.setSelectedObject(null));
|
|
1109
1139
|
return;
|
|
@@ -1148,16 +1178,16 @@ let te = class {
|
|
|
1148
1178
|
});
|
|
1149
1179
|
}
|
|
1150
1180
|
};
|
|
1151
|
-
te =
|
|
1181
|
+
te = zt([
|
|
1152
1182
|
u(),
|
|
1153
|
-
|
|
1154
|
-
|
|
1183
|
+
Oe(0, h("RendererApi")),
|
|
1184
|
+
Oe(1, h("IEditorStore"))
|
|
1155
1185
|
], te);
|
|
1156
|
-
var
|
|
1157
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1186
|
+
var Ut = Object.getOwnPropertyDescriptor, Wt = (t, e, s, i) => {
|
|
1187
|
+
for (var r = i > 1 ? void 0 : i ? Ut(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1158
1188
|
(n = t[o]) && (r = n(r) || r);
|
|
1159
1189
|
return r;
|
|
1160
|
-
},
|
|
1190
|
+
}, Ft = (t, e) => (s, i) => e(s, i, t);
|
|
1161
1191
|
let se = class {
|
|
1162
1192
|
constructor(t) {
|
|
1163
1193
|
this._api = t;
|
|
@@ -1170,13 +1200,13 @@ let se = class {
|
|
|
1170
1200
|
_selected = null;
|
|
1171
1201
|
// Цвета, необходимые для переключения
|
|
1172
1202
|
/** Цвет грани, на которую навелись */
|
|
1173
|
-
_hoverColor =
|
|
1203
|
+
_hoverColor = W;
|
|
1174
1204
|
/** Цвет выделенной граней */
|
|
1175
|
-
_selectColor =
|
|
1205
|
+
_selectColor = F;
|
|
1176
1206
|
/** Изначальный цвет граней у модели, перед наложением эффектов*/
|
|
1177
1207
|
_defaultColor = 2236962;
|
|
1178
1208
|
handle(t, e) {
|
|
1179
|
-
this._api.setRaycastMode(this.mode), e ===
|
|
1209
|
+
this._api.setRaycastMode(this.mode), e === P.Hover && console.log(t), e === P.Click && console.log(t);
|
|
1180
1210
|
}
|
|
1181
1211
|
rollback() {
|
|
1182
1212
|
throw new Error("Method not implemented.");
|
|
@@ -1186,15 +1216,15 @@ let se = class {
|
|
|
1186
1216
|
throw new Error("Method not implemented.");
|
|
1187
1217
|
}
|
|
1188
1218
|
};
|
|
1189
|
-
se =
|
|
1219
|
+
se = Wt([
|
|
1190
1220
|
u(),
|
|
1191
|
-
|
|
1221
|
+
Ft(0, h("RendererApi"))
|
|
1192
1222
|
], se);
|
|
1193
|
-
var
|
|
1194
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1223
|
+
var Zt = Object.getOwnPropertyDescriptor, $t = (t, e, s, i) => {
|
|
1224
|
+
for (var r = i > 1 ? void 0 : i ? Zt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1195
1225
|
(n = t[o]) && (r = n(r) || r);
|
|
1196
1226
|
return r;
|
|
1197
|
-
},
|
|
1227
|
+
}, Te = (t, e) => (s, i) => e(s, i, t);
|
|
1198
1228
|
let ie = class {
|
|
1199
1229
|
constructor(t, e) {
|
|
1200
1230
|
this._api = t, this._store = e, this._api.enableCameraLayer(L), this._hoverVertex = this._makeOverlayVertex(this._hoverColor), this._selectVertex = this._makeOverlayVertex(this._selectColor), this._api.addObject(this._hoverVertex, L), this._api.addObject(this._selectVertex, L);
|
|
@@ -1209,11 +1239,11 @@ let ie = class {
|
|
|
1209
1239
|
_selectVertex;
|
|
1210
1240
|
// Цвета, необходимые для переключения
|
|
1211
1241
|
/** Цвет ребра, на которое навелись */
|
|
1212
|
-
_hoverColor =
|
|
1242
|
+
_hoverColor = W;
|
|
1213
1243
|
/** Цвет выделенного ребра */
|
|
1214
|
-
_selectColor =
|
|
1244
|
+
_selectColor = F;
|
|
1215
1245
|
handle(t, e) {
|
|
1216
|
-
if (this._api.setRaycastMode(this.mode), e ===
|
|
1246
|
+
if (this._api.setRaycastMode(this.mode), e === P.Hover) {
|
|
1217
1247
|
if (!t) {
|
|
1218
1248
|
this._hoverVertex.visible = !1, this._hovered = null;
|
|
1219
1249
|
return;
|
|
@@ -1225,7 +1255,7 @@ let ie = class {
|
|
|
1225
1255
|
this._selected && this._same({ points: i, index: r }, this._selected) ? this._hoverVertex.visible = !1 : (this._writeWorldVertex(this._hoverVertex, i, r), this._hoverVertex.visible = !0);
|
|
1226
1256
|
return;
|
|
1227
1257
|
}
|
|
1228
|
-
if (e ===
|
|
1258
|
+
if (e === P.Click) {
|
|
1229
1259
|
if (!t) {
|
|
1230
1260
|
this._selectVertex.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
1231
1261
|
return;
|
|
@@ -1244,7 +1274,7 @@ let ie = class {
|
|
|
1244
1274
|
dispose() {
|
|
1245
1275
|
this.rollback(), this._api.removeObject(this._hoverVertex), this._api.removeObject(this._selectVertex), this._hoverVertex.geometry.dispose(), this._hoverVertex.material.dispose(), this._selectVertex.geometry.dispose(), this._selectVertex.material.dispose();
|
|
1246
1276
|
}
|
|
1247
|
-
_makeOverlayVertex(t, e =
|
|
1277
|
+
_makeOverlayVertex(t, e = et) {
|
|
1248
1278
|
const s = new a.BufferGeometry();
|
|
1249
1279
|
s.setAttribute("position", new a.Float32BufferAttribute([0, 0, 0], 3));
|
|
1250
1280
|
const i = new a.PointsMaterial({
|
|
@@ -1273,21 +1303,21 @@ let ie = class {
|
|
|
1273
1303
|
}
|
|
1274
1304
|
/** Готовит метаданные для выбранной вершины и пишет их в _selectVertex.userData */
|
|
1275
1305
|
_prepareVertexMetadata(t, e) {
|
|
1276
|
-
const s =
|
|
1306
|
+
const s = ke(t);
|
|
1277
1307
|
if (!s) return;
|
|
1278
1308
|
const i = t.geometry.getAttribute("position"), r = new a.Vector3(
|
|
1279
1309
|
i.getX(e),
|
|
1280
1310
|
i.getY(e),
|
|
1281
1311
|
i.getZ(e)
|
|
1282
|
-
).applyMatrix4(t.matrixWorld), o = new a.Matrix4().copy(s.matrixWorld).invert(), n = r.clone().applyMatrix4(o), _ = s.geometry.getAttribute("position"), m = 1e-6, f = m * m,
|
|
1312
|
+
).applyMatrix4(t.matrixWorld), o = new a.Matrix4().copy(s.matrixWorld).invert(), n = r.clone().applyMatrix4(o), _ = s.geometry.getAttribute("position"), m = 1e-6, f = m * m, D = new a.Vector3(), b = [];
|
|
1283
1313
|
for (let M = 0; M < _.count; M++)
|
|
1284
|
-
|
|
1314
|
+
D.fromBufferAttribute(_, M), D.distanceToSquared(n) < f && b.push(M);
|
|
1285
1315
|
const O = s.children.find((M) => M?.isLineSegments);
|
|
1286
1316
|
let y = [];
|
|
1287
1317
|
if (O) {
|
|
1288
|
-
const M = new a.Matrix4().copy(O.matrixWorld).invert(), N = r.clone().applyMatrix4(M),
|
|
1289
|
-
for (let
|
|
1290
|
-
Y.fromBufferAttribute(
|
|
1318
|
+
const M = new a.Matrix4().copy(O.matrixWorld).invert(), N = r.clone().applyMatrix4(M), H = O.geometry.getAttribute("position"), Y = new a.Vector3();
|
|
1319
|
+
for (let x = 0; x < H.count; x++)
|
|
1320
|
+
Y.fromBufferAttribute(H, x), Y.distanceToSquared(N) < f && y.push(x);
|
|
1291
1321
|
}
|
|
1292
1322
|
this._selectVertex.userData.vertexInfo = {
|
|
1293
1323
|
points: t,
|
|
@@ -1311,15 +1341,18 @@ let ie = class {
|
|
|
1311
1341
|
(!n || n.count < 1) && (o.setAttribute("position", new a.BufferAttribute(new Float32Array(3), 3)), n = o.getAttribute("position")), n.setXYZ(0, 0, 0, 0), n.needsUpdate = !0, t.quaternion.identity(), t.scale.set(1, 1, 1), t.updateMatrixWorld(!0);
|
|
1312
1342
|
}
|
|
1313
1343
|
};
|
|
1314
|
-
ie =
|
|
1344
|
+
ie = $t([
|
|
1315
1345
|
u(),
|
|
1316
|
-
|
|
1317
|
-
|
|
1346
|
+
Te(0, h("RendererApi")),
|
|
1347
|
+
Te(1, h("IEditorStore"))
|
|
1318
1348
|
], ie);
|
|
1319
1349
|
class ue {
|
|
1320
1350
|
constructor(e, s) {
|
|
1321
|
-
this.api = e, this.store = s
|
|
1351
|
+
this.api = e, this.store = s, this._unsubscribeTransform = this.api.onTransformChange(() => {
|
|
1352
|
+
this.store.getSelectedObject() && this.store.notifySelectedTransformChange?.();
|
|
1353
|
+
});
|
|
1322
1354
|
}
|
|
1355
|
+
_unsubscribeTransform;
|
|
1323
1356
|
/**
|
|
1324
1357
|
* Обновляет состояние инструмента под текущее выделение.
|
|
1325
1358
|
*/
|
|
@@ -1337,14 +1370,14 @@ class ue {
|
|
|
1337
1370
|
}
|
|
1338
1371
|
/** Освобождение ресурсов хендлера. */
|
|
1339
1372
|
dispose() {
|
|
1340
|
-
this.rollback();
|
|
1373
|
+
this.rollback(), this._unsubscribeTransform && this._unsubscribeTransform();
|
|
1341
1374
|
}
|
|
1342
1375
|
}
|
|
1343
|
-
var
|
|
1344
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1376
|
+
var Bt = Object.getOwnPropertyDescriptor, Xt = (t, e, s, i) => {
|
|
1377
|
+
for (var r = i > 1 ? void 0 : i ? Bt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1345
1378
|
(n = t[o]) && (r = n(r) || r);
|
|
1346
1379
|
return r;
|
|
1347
|
-
},
|
|
1380
|
+
}, Le = (t, e) => (s, i) => e(s, i, t);
|
|
1348
1381
|
let re = class extends ue {
|
|
1349
1382
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
1350
1383
|
mode = C.Translate;
|
|
@@ -1352,16 +1385,16 @@ let re = class extends ue {
|
|
|
1352
1385
|
super(t, e);
|
|
1353
1386
|
}
|
|
1354
1387
|
};
|
|
1355
|
-
re =
|
|
1388
|
+
re = Xt([
|
|
1356
1389
|
u(),
|
|
1357
|
-
|
|
1358
|
-
|
|
1390
|
+
Le(0, h("RendererApi")),
|
|
1391
|
+
Le(1, h("IEditorStore"))
|
|
1359
1392
|
], re);
|
|
1360
|
-
var
|
|
1361
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1393
|
+
var Gt = Object.getOwnPropertyDescriptor, Kt = (t, e, s, i) => {
|
|
1394
|
+
for (var r = i > 1 ? void 0 : i ? Gt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1362
1395
|
(n = t[o]) && (r = n(r) || r);
|
|
1363
1396
|
return r;
|
|
1364
|
-
},
|
|
1397
|
+
}, De = (t, e) => (s, i) => e(s, i, t);
|
|
1365
1398
|
let oe = class extends ue {
|
|
1366
1399
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
1367
1400
|
mode = C.Scale;
|
|
@@ -1369,16 +1402,16 @@ let oe = class extends ue {
|
|
|
1369
1402
|
super(t, e);
|
|
1370
1403
|
}
|
|
1371
1404
|
};
|
|
1372
|
-
oe =
|
|
1405
|
+
oe = Kt([
|
|
1373
1406
|
u(),
|
|
1374
|
-
|
|
1375
|
-
|
|
1407
|
+
De(0, h("RendererApi")),
|
|
1408
|
+
De(1, h("IEditorStore"))
|
|
1376
1409
|
], oe);
|
|
1377
|
-
var
|
|
1378
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1410
|
+
var qt = Object.getOwnPropertyDescriptor, Qt = (t, e, s, i) => {
|
|
1411
|
+
for (var r = i > 1 ? void 0 : i ? qt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1379
1412
|
(n = t[o]) && (r = n(r) || r);
|
|
1380
1413
|
return r;
|
|
1381
|
-
},
|
|
1414
|
+
}, Ce = (t, e) => (s, i) => e(s, i, t);
|
|
1382
1415
|
let ne = class extends ue {
|
|
1383
1416
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
1384
1417
|
mode = C.Rotate;
|
|
@@ -1386,16 +1419,16 @@ let ne = class extends ue {
|
|
|
1386
1419
|
super(t, e);
|
|
1387
1420
|
}
|
|
1388
1421
|
};
|
|
1389
|
-
ne =
|
|
1422
|
+
ne = Qt([
|
|
1390
1423
|
u(),
|
|
1391
|
-
|
|
1392
|
-
|
|
1424
|
+
Ce(0, h("RendererApi")),
|
|
1425
|
+
Ce(1, h("IEditorStore"))
|
|
1393
1426
|
], ne);
|
|
1394
|
-
var
|
|
1395
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1427
|
+
var Jt = Object.getOwnPropertyDescriptor, es = (t, e, s, i) => {
|
|
1428
|
+
for (var r = i > 1 ? void 0 : i ? Jt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1396
1429
|
(n = t[o]) && (r = n(r) || r);
|
|
1397
1430
|
return r;
|
|
1398
|
-
},
|
|
1431
|
+
}, xe = (t, e) => (s, i) => e(s, i, t);
|
|
1399
1432
|
let ae = class {
|
|
1400
1433
|
constructor(t, e) {
|
|
1401
1434
|
this._api = t, this._store = e, this._api.enableCameraLayer(L), this._hoverLine = this._makeOverlayLine(this._hoverColor), this._selectLine = this._makeOverlayLine(this._selectColor), this._api.addObject(this._hoverLine, L), this._api.addObject(this._selectLine, L);
|
|
@@ -1412,12 +1445,12 @@ let ae = class {
|
|
|
1412
1445
|
_selected = null;
|
|
1413
1446
|
// Цвета, необходимые для переключения
|
|
1414
1447
|
/** Цвет ребра, на которое навелись */
|
|
1415
|
-
_hoverColor =
|
|
1448
|
+
_hoverColor = W;
|
|
1416
1449
|
/** Цвет выделенного ребра */
|
|
1417
|
-
_selectColor =
|
|
1450
|
+
_selectColor = F;
|
|
1418
1451
|
/** Обработка текущего режима выборки. */
|
|
1419
1452
|
handle(t, e) {
|
|
1420
|
-
if (this._api.setRaycastMode(this.mode), e ===
|
|
1453
|
+
if (this._api.setRaycastMode(this.mode), e === P.Hover) {
|
|
1421
1454
|
if (!t) {
|
|
1422
1455
|
this._hoverLine.visible = !1, this._hovered = null;
|
|
1423
1456
|
return;
|
|
@@ -1429,7 +1462,7 @@ let ae = class {
|
|
|
1429
1462
|
this._selected && this._same({ lines: i, seg: r }, this._selected) ? this._hoverLine.visible = !1 : (this._writeWorldSegment(this._hoverLine, i, r), this._hoverLine.visible = !0), this._hovered = { lines: i, seg: r };
|
|
1430
1463
|
return;
|
|
1431
1464
|
}
|
|
1432
|
-
if (e ===
|
|
1465
|
+
if (e === P.Click) {
|
|
1433
1466
|
if (!t) {
|
|
1434
1467
|
this._selectLine.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
1435
1468
|
return;
|
|
@@ -1488,26 +1521,26 @@ let ae = class {
|
|
|
1488
1521
|
if (!isFinite(m) || m === 0) return;
|
|
1489
1522
|
const f = new a.Vector3().addVectors(n, c).multiplyScalar(0.5);
|
|
1490
1523
|
t.position.copy(f);
|
|
1491
|
-
const
|
|
1492
|
-
let b =
|
|
1493
|
-
(!b || b.count < 2) && (
|
|
1524
|
+
const D = t.geometry;
|
|
1525
|
+
let b = D.getAttribute("position");
|
|
1526
|
+
(!b || b.count < 2) && (D.setAttribute("position", new a.BufferAttribute(new Float32Array(6), 3)), b = D.getAttribute("position")), b.setXYZ(0, -m / 2, 0, 0), b.setXYZ(1, m / 2, 0, 0), b.needsUpdate = !0, _.normalize();
|
|
1494
1527
|
const O = new a.Quaternion().setFromUnitVectors(new a.Vector3(1, 0, 0), _);
|
|
1495
1528
|
t.quaternion.copy(O), t.updateMatrixWorld(!0);
|
|
1496
1529
|
}
|
|
1497
1530
|
/** Запись метаданных выбранного ребра для использования инструментов */
|
|
1498
1531
|
_prepareEdgeMetadata(t, e) {
|
|
1499
|
-
const s =
|
|
1532
|
+
const s = ke(t);
|
|
1500
1533
|
if (!s) return;
|
|
1501
1534
|
const i = t.geometry.getAttribute("position"), r = e * 2, o = r + 1, n = new a.Vector3(i.getX(r), i.getY(r), i.getZ(r)).applyMatrix4(
|
|
1502
1535
|
t.matrixWorld
|
|
1503
1536
|
), c = new a.Vector3(i.getX(o), i.getY(o), i.getZ(o)).applyMatrix4(
|
|
1504
1537
|
t.matrixWorld
|
|
1505
1538
|
), _ = new a.Matrix4().copy(s.matrixWorld).invert(), m = n.clone().applyMatrix4(_), f = c.clone().applyMatrix4(_), b = s.geometry.getAttribute("position"), O = new a.Vector3(), y = 1e-6, M = [], N = [];
|
|
1506
|
-
for (let
|
|
1507
|
-
O.fromBufferAttribute(b,
|
|
1508
|
-
const
|
|
1509
|
-
for (let
|
|
1510
|
-
|
|
1539
|
+
for (let S = 0; S < b.count; S++)
|
|
1540
|
+
O.fromBufferAttribute(b, S), O.distanceToSquared(m) < y * y ? M.push(S) : O.distanceToSquared(f) < y * y && N.push(S);
|
|
1541
|
+
const H = new a.Matrix4().copy(t.matrixWorld).invert(), Y = n.clone().applyMatrix4(H), x = c.clone().applyMatrix4(H), me = t.geometry.getAttribute("position"), Z = new a.Vector3(), fe = [], ge = [];
|
|
1542
|
+
for (let S = 0; S < me.count; S++)
|
|
1543
|
+
Z.fromBufferAttribute(me, S), Z.distanceToSquared(Y) < y * y ? fe.push(S) : Z.distanceToSquared(x) < y * y && ge.push(S);
|
|
1511
1544
|
this._selectLine.userData.edgeInfo = {
|
|
1512
1545
|
lines: t,
|
|
1513
1546
|
seg: e,
|
|
@@ -1519,16 +1552,16 @@ let ae = class {
|
|
|
1519
1552
|
};
|
|
1520
1553
|
}
|
|
1521
1554
|
};
|
|
1522
|
-
ae =
|
|
1555
|
+
ae = es([
|
|
1523
1556
|
u(),
|
|
1524
|
-
|
|
1525
|
-
|
|
1557
|
+
xe(0, h("RendererApi")),
|
|
1558
|
+
xe(1, h("IEditorStore"))
|
|
1526
1559
|
], ae);
|
|
1527
|
-
var
|
|
1528
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1560
|
+
var ts = Object.getOwnPropertyDescriptor, ss = (t, e, s, i) => {
|
|
1561
|
+
for (var r = i > 1 ? void 0 : i ? ts(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1529
1562
|
(n = t[o]) && (r = n(r) || r);
|
|
1530
1563
|
return r;
|
|
1531
|
-
},
|
|
1564
|
+
}, is = (t, e) => (s, i) => e(s, i, t);
|
|
1532
1565
|
let he = class {
|
|
1533
1566
|
constructor(t) {
|
|
1534
1567
|
this._api = t;
|
|
@@ -1539,13 +1572,13 @@ let he = class {
|
|
|
1539
1572
|
_lastAddedMesh = null;
|
|
1540
1573
|
/** Добавление базовых фигур на сцену, которые приписаны в `FigureType`. */
|
|
1541
1574
|
handle(t) {
|
|
1542
|
-
const e =
|
|
1575
|
+
const e = Je[t](), s = e.getAttribute("position");
|
|
1543
1576
|
s && s.setUsage && s.setUsage(a.DynamicDrawUsage);
|
|
1544
1577
|
const i = new a.Mesh(e, je);
|
|
1545
|
-
i.layers.enable(
|
|
1546
|
-
const r =
|
|
1578
|
+
i.layers.enable(He);
|
|
1579
|
+
const r = Ne(i.geometry);
|
|
1547
1580
|
i.add(r);
|
|
1548
|
-
const o =
|
|
1581
|
+
const o = Ve(i.geometry);
|
|
1549
1582
|
i.add(o), this._api.addMesh(i), this._lastAddedMesh = i;
|
|
1550
1583
|
}
|
|
1551
1584
|
/** Срабатывает только на `ctrl + z`. */
|
|
@@ -1557,12 +1590,12 @@ let he = class {
|
|
|
1557
1590
|
this._lastAddedMesh = null;
|
|
1558
1591
|
}
|
|
1559
1592
|
};
|
|
1560
|
-
he =
|
|
1593
|
+
he = ss([
|
|
1561
1594
|
u(),
|
|
1562
|
-
|
|
1595
|
+
is(0, h("RendererApi"))
|
|
1563
1596
|
], he);
|
|
1564
|
-
var
|
|
1565
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1597
|
+
var rs = Object.getOwnPropertyDescriptor, os = (t, e, s, i) => {
|
|
1598
|
+
for (var r = i > 1 ? void 0 : i ? rs(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1566
1599
|
(n = t[o]) && (r = n(r) || r);
|
|
1567
1600
|
return r;
|
|
1568
1601
|
}, Ae = (t, e) => (s, i) => e(s, i, t);
|
|
@@ -1576,7 +1609,7 @@ let le = class {
|
|
|
1576
1609
|
_lastDeletedMesh = null;
|
|
1577
1610
|
handle() {
|
|
1578
1611
|
const t = this._store.getSelectedObject();
|
|
1579
|
-
|
|
1612
|
+
lt(t) && (this._api.removeMesh(t), this._store.setSelectedObject(null), this._lastDeletedMesh = t);
|
|
1580
1613
|
}
|
|
1581
1614
|
/** Срабатывает только на `ctrl + z`. */
|
|
1582
1615
|
rollback() {
|
|
@@ -1587,16 +1620,16 @@ let le = class {
|
|
|
1587
1620
|
this._lastDeletedMesh = null;
|
|
1588
1621
|
}
|
|
1589
1622
|
};
|
|
1590
|
-
le =
|
|
1623
|
+
le = os([
|
|
1591
1624
|
u(),
|
|
1592
1625
|
Ae(0, h("RendererApi")),
|
|
1593
1626
|
Ae(1, h("IEditorStore"))
|
|
1594
1627
|
], le);
|
|
1595
|
-
var
|
|
1596
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1628
|
+
var ns = Object.getOwnPropertyDescriptor, as = (t, e, s, i) => {
|
|
1629
|
+
for (var r = i > 1 ? void 0 : i ? ns(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1597
1630
|
(n = t[o]) && (r = n(r) || r);
|
|
1598
1631
|
return r;
|
|
1599
|
-
},
|
|
1632
|
+
}, hs = (t, e) => (s, i) => e(s, i, t);
|
|
1600
1633
|
let ce = class {
|
|
1601
1634
|
constructor(t) {
|
|
1602
1635
|
this._renderer = t;
|
|
@@ -1651,19 +1684,23 @@ let ce = class {
|
|
|
1651
1684
|
enableCameraLayer(t) {
|
|
1652
1685
|
this._renderer.enableCameraLayer(t);
|
|
1653
1686
|
}
|
|
1687
|
+
/** @inheritdoc */
|
|
1688
|
+
onTransformChange(t) {
|
|
1689
|
+
return this._renderer.onTransformChange(t);
|
|
1690
|
+
}
|
|
1654
1691
|
};
|
|
1655
|
-
ce =
|
|
1692
|
+
ce = as([
|
|
1656
1693
|
u(),
|
|
1657
|
-
|
|
1694
|
+
hs(0, h("EditorRenderer"))
|
|
1658
1695
|
], ce);
|
|
1659
|
-
var
|
|
1660
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1696
|
+
var ls = Object.getOwnPropertyDescriptor, cs = (t, e, s, i) => {
|
|
1697
|
+
for (var r = i > 1 ? void 0 : i ? ls(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1661
1698
|
(n = t[o]) && (r = n(r) || r);
|
|
1662
1699
|
return r;
|
|
1663
|
-
},
|
|
1700
|
+
}, A = (t, e) => (s, i) => e(s, i, t);
|
|
1664
1701
|
let de = class {
|
|
1665
|
-
constructor(t, e, s, i, r) {
|
|
1666
|
-
this._displayManager = t, this._selectManager = e, this._toolManager = s, this._sceneManager = i, this._renderer = r, this.setSelectMode(v.Mesh), this.setToolMode(C.Translate);
|
|
1702
|
+
constructor(t, e, s, i, r, o) {
|
|
1703
|
+
this._displayManager = t, this._selectManager = e, this._toolManager = s, this._sceneManager = i, this._renderer = r, this._store = o, this.setSelectMode(v.Mesh), this.setToolMode(C.Translate);
|
|
1667
1704
|
}
|
|
1668
1705
|
setDisplayMode(t) {
|
|
1669
1706
|
this._displayManager.manage(t);
|
|
@@ -1686,20 +1723,34 @@ let de = class {
|
|
|
1686
1723
|
addFigure(t, e) {
|
|
1687
1724
|
this._sceneManager.manage(t, e);
|
|
1688
1725
|
}
|
|
1726
|
+
getSelectionStats() {
|
|
1727
|
+
return this._store.getSelectionStats();
|
|
1728
|
+
}
|
|
1729
|
+
onSelectionStatsChange(t) {
|
|
1730
|
+
const e = this._store.onSelectedObjectChange(() => {
|
|
1731
|
+
t();
|
|
1732
|
+
}), s = this._store.onSelectedTransformChange(() => {
|
|
1733
|
+
t();
|
|
1734
|
+
});
|
|
1735
|
+
return () => {
|
|
1736
|
+
e(), s();
|
|
1737
|
+
};
|
|
1738
|
+
}
|
|
1689
1739
|
dispose() {
|
|
1690
1740
|
this._displayManager.dispose(), this._selectManager.dispose(), this._renderer.dispose();
|
|
1691
1741
|
}
|
|
1692
1742
|
};
|
|
1693
|
-
de =
|
|
1743
|
+
de = cs([
|
|
1694
1744
|
u(),
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1745
|
+
A(0, h("IDisplayManager")),
|
|
1746
|
+
A(1, h("ISelectManager")),
|
|
1747
|
+
A(2, h("IToolManager")),
|
|
1748
|
+
A(3, h("ISceneManager")),
|
|
1749
|
+
A(4, h("EditorRenderer")),
|
|
1750
|
+
A(5, h("IEditorStore"))
|
|
1700
1751
|
], de);
|
|
1701
|
-
var
|
|
1702
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
1752
|
+
var ds = Object.getOwnPropertyDescriptor, _s = (t, e, s, i) => {
|
|
1753
|
+
for (var r = i > 1 ? void 0 : i ? ds(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1703
1754
|
(n = t[o]) && (r = n(r) || r);
|
|
1704
1755
|
return r;
|
|
1705
1756
|
};
|
|
@@ -1714,8 +1765,10 @@ let _e = class {
|
|
|
1714
1765
|
_selectedObject = null;
|
|
1715
1766
|
/** Слушатели событий по изменению выбранного объекта. */
|
|
1716
1767
|
_selectedListeners = /* @__PURE__ */ new Set();
|
|
1768
|
+
/** Слушатели событий трансформации выбранного объекта. */
|
|
1769
|
+
_transformListeners = /* @__PURE__ */ new Set();
|
|
1717
1770
|
constructor() {
|
|
1718
|
-
|
|
1771
|
+
Qe(this, {}, { autoBind: !0 });
|
|
1719
1772
|
}
|
|
1720
1773
|
/** @inheritdoc */
|
|
1721
1774
|
getSelectMode() {
|
|
@@ -1746,6 +1799,11 @@ let _e = class {
|
|
|
1746
1799
|
return this._selectedObject;
|
|
1747
1800
|
}
|
|
1748
1801
|
/** @inheritdoc */
|
|
1802
|
+
getSelectionStats() {
|
|
1803
|
+
const t = this._selectedObject;
|
|
1804
|
+
return t ? ct(t) : null;
|
|
1805
|
+
}
|
|
1806
|
+
/** @inheritdoc */
|
|
1749
1807
|
setSelectedObject(t) {
|
|
1750
1808
|
if (this._selectedObject !== t) {
|
|
1751
1809
|
this._selectedObject = t;
|
|
@@ -1756,25 +1814,31 @@ let _e = class {
|
|
|
1756
1814
|
onSelectedObjectChange(t) {
|
|
1757
1815
|
return this._selectedListeners.add(t), () => this._selectedListeners.delete(t);
|
|
1758
1816
|
}
|
|
1817
|
+
/** @inheritdoc */
|
|
1818
|
+
onSelectedTransformChange(t) {
|
|
1819
|
+
return this._transformListeners.add(t), () => this._transformListeners.delete(t);
|
|
1820
|
+
}
|
|
1821
|
+
/** @inheritdoc */
|
|
1822
|
+
notifySelectedTransformChange() {
|
|
1823
|
+
for (const t of this._transformListeners) t();
|
|
1824
|
+
}
|
|
1759
1825
|
};
|
|
1760
|
-
_e =
|
|
1826
|
+
_e = _s([
|
|
1761
1827
|
u()
|
|
1762
1828
|
], _e);
|
|
1763
|
-
let
|
|
1764
|
-
const d =
|
|
1765
|
-
function
|
|
1766
|
-
return
|
|
1767
|
-
}
|
|
1768
|
-
function ys(t) {
|
|
1769
|
-
return cs(t).resolve("EditorHub");
|
|
1829
|
+
let Re = !1;
|
|
1830
|
+
const d = Ke.createChildContainer();
|
|
1831
|
+
function ps(t) {
|
|
1832
|
+
return Re || (d.registerInstance("Canvas", t), d.registerSingleton("EventBus", X), d.registerSingleton("EditorRenderer", G), d.registerSingleton("RendererApi", ce), d.registerSingleton("IDisplayHandler", ee), d.registerSingleton("ISelectHandler", te), d.registerSingleton("ISelectHandler", se), d.registerSingleton("ISelectHandler", ae), d.registerSingleton("ISelectHandler", ie), d.registerSingleton("IToolHandler", re), d.registerSingleton("IToolHandler", oe), d.registerSingleton("IToolHandler", ne), d.registerSingleton("ISceneHandler", he), d.registerSingleton("ISceneHandler", le), d.registerSingleton("IDisplayManager", K), d.registerSingleton("ISelectManager", q), d.registerSingleton("IToolManager", Q), d.registerSingleton("ISceneManager", J), d.registerSingleton("EditorHub", de), d.registerSingleton("IEditorStore", _e), Re = !0), d;
|
|
1770
1833
|
}
|
|
1834
|
+
const ws = (t) => ps(t).resolve("EditorHub");
|
|
1771
1835
|
export {
|
|
1772
1836
|
de as EditorHub,
|
|
1773
1837
|
G as EditorRenderer,
|
|
1774
1838
|
X as EventBus,
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1839
|
+
I as EventTopics,
|
|
1840
|
+
Ss as ObjLoader,
|
|
1841
|
+
Ms as PreviewRenderer,
|
|
1842
|
+
Ie as Renderer,
|
|
1843
|
+
ws as createAppHub
|
|
1780
1844
|
};
|