@planara/core 2.6.1 → 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 +233 -184
- 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/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/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,25 +1,25 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import * as a from "three";
|
|
3
|
-
import { Controls as
|
|
4
|
-
import { FigureType as
|
|
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
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
|
|
6
|
+
import { injectable as u, inject as h, injectAll as U, container as Ke } from "tsyringe";
|
|
7
7
|
import { EventEmitter as qe } from "events";
|
|
8
8
|
import { makeAutoObservable as Qe } from "mobx";
|
|
9
9
|
const Je = {
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[
|
|
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
|
|
@@ -81,7 +81,7 @@ class Ie {
|
|
|
81
81
|
addFigure(e) {
|
|
82
82
|
const s = new a.BufferGeometry();
|
|
83
83
|
s.setAttribute("position", new a.Float32BufferAttribute(e.position, 3)), e.normal && s.setAttribute("normal", new a.Float32BufferAttribute(e.normal, 3)), e.uv && s.setAttribute("uv", new a.Float32BufferAttribute(e.uv, 2));
|
|
84
|
-
const i = new a.Mesh(s,
|
|
84
|
+
const i = new a.Mesh(s, je);
|
|
85
85
|
return this.scene.add(i), this.meshes.push(i), i;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
@@ -198,8 +198,8 @@ let X = class {
|
|
|
198
198
|
X = st([
|
|
199
199
|
u()
|
|
200
200
|
], X);
|
|
201
|
-
var
|
|
202
|
-
const it = 0.03, rt = 0.05, He = 0, ot = 1, nt = 2,
|
|
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;
|
|
@@ -225,9 +225,14 @@ const it = 0.03, rt = 0.05, He = 0, ot = 1, nt = 2, T = 31, z = 16776960, F = 16
|
|
|
225
225
|
new a.LineBasicMaterial({ color: at, linewidth: 1 })
|
|
226
226
|
);
|
|
227
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
238
|
}, Me = (t, e) => (s, i) => e(s, i, t);
|
|
@@ -262,6 +267,7 @@ let G = class extends Ie {
|
|
|
262
267
|
_lastHovered = null;
|
|
263
268
|
/** Gizmo для управления отображением perspective camera */
|
|
264
269
|
_cameraGizmo;
|
|
270
|
+
_transformListeners = /* @__PURE__ */ new Set();
|
|
265
271
|
/**
|
|
266
272
|
* Обновление состояния рендерера.
|
|
267
273
|
*/
|
|
@@ -300,6 +306,13 @@ let G = class extends Ie {
|
|
|
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
|
|
@@ -322,7 +335,7 @@ let G = class extends Ie {
|
|
|
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 Ie {
|
|
|
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 Ie {
|
|
|
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
370
|
Me(0, h("Canvas")),
|
|
356
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,
|
|
@@ -365,7 +380,7 @@ const Ee = { type: "change" }, pe = { type: "start" }, Ye = { type: "end" }, U =
|
|
|
365
380
|
TOUCH_DOLLY_PAN: 5,
|
|
366
381
|
TOUCH_DOLLY_ROTATE: 6
|
|
367
382
|
}, $ = 1e-6;
|
|
368
|
-
class
|
|
383
|
+
class ut extends ze {
|
|
369
384
|
/**
|
|
370
385
|
* Constructs a new controls instance.
|
|
371
386
|
*
|
|
@@ -373,7 +388,7 @@ class pt extends Ue {
|
|
|
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 pt extends Ue {
|
|
|
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 pt extends Ue {
|
|
|
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) > $ || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > $ || this._lastTargetPosition.distanceToSquared(this.target) > $ ? (this.dispatchEvent(
|
|
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;
|
|
@@ -661,13 +676,13 @@ class pt extends Ue {
|
|
|
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
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;
|
|
@@ -678,7 +693,7 @@ function ft(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 gt(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 bt(t) {
|
|
|
737
752
|
break;
|
|
738
753
|
}
|
|
739
754
|
}
|
|
740
|
-
function
|
|
755
|
+
function yt(t) {
|
|
741
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 Mt(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 Mt(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 Et(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
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 ys extends Ie {
|
|
|
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 Ms {
|
|
|
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,11 +904,11 @@ class Ms {
|
|
|
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);
|
|
897
912
|
let K = class {
|
|
898
913
|
constructor(t, e) {
|
|
899
914
|
this._store = e, this._handlers = new Map(t.map((s) => [s.mode, s]));
|
|
@@ -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
|
-
|
|
917
|
-
|
|
931
|
+
Ee(0, U("IDisplayHandler")),
|
|
932
|
+
Ee(1, h("IEditorStore"))
|
|
918
933
|
], K);
|
|
919
|
-
var
|
|
920
|
-
for (var r = i > 1 ? void 0 : i ?
|
|
934
|
+
var P = /* @__PURE__ */ ((t) => (t.Hover = "hover", t.Click = "click", t))(P || {}), Dt = Object.getOwnPropertyDescriptor, Ct = (t, e, s, i) => {
|
|
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,24 +950,24 @@ 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
|
-
class
|
|
970
|
+
class xt {
|
|
956
971
|
/** Доступен ли инструмент при текущем режиме выборки */
|
|
957
972
|
isToolEnabled(e, s) {
|
|
958
973
|
return ye[s].includes(e);
|
|
@@ -962,16 +977,16 @@ class Ct {
|
|
|
962
977
|
return ye[e];
|
|
963
978
|
}
|
|
964
979
|
}
|
|
965
|
-
var At = Object.getOwnPropertyDescriptor,
|
|
980
|
+
var At = Object.getOwnPropertyDescriptor, Rt = (t, e, s, i) => {
|
|
966
981
|
for (var r = i > 1 ? void 0 : i ? At(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
967
982
|
(n = t[o]) && (r = n(r) || r);
|
|
968
983
|
return r;
|
|
969
|
-
},
|
|
984
|
+
}, Pe = (t, e) => (s, i) => e(s, i, t);
|
|
970
985
|
let Q = class {
|
|
971
986
|
constructor(t, e) {
|
|
972
987
|
this._store = e, this._handlers = new Map(t.map((s) => [s.mode, s])), this._unsubSelected = this._store.onSelectedObjectChange(() => {
|
|
973
988
|
this._handlers.get(this._currentTool)?.handle();
|
|
974
|
-
}), this._policy = new
|
|
989
|
+
}), this._policy = new xt();
|
|
975
990
|
}
|
|
976
991
|
/** Текущий выбранный инструмент */
|
|
977
992
|
_currentTool = C.Translate;
|
|
@@ -991,16 +1006,16 @@ let Q = class {
|
|
|
991
1006
|
this._unsubSelected?.(), this._handlers && this._handlers.clear(), this._currentTool = C.Translate, this._store.setToolType(this._currentTool);
|
|
992
1007
|
}
|
|
993
1008
|
};
|
|
994
|
-
Q =
|
|
1009
|
+
Q = Rt([
|
|
995
1010
|
u(),
|
|
996
|
-
|
|
997
|
-
|
|
1011
|
+
Pe(0, U("IToolHandler")),
|
|
1012
|
+
Pe(1, h("IEditorStore"))
|
|
998
1013
|
], Q);
|
|
999
|
-
var jt = Object.getOwnPropertyDescriptor,
|
|
1014
|
+
var jt = Object.getOwnPropertyDescriptor, It = (t, e, s, i) => {
|
|
1000
1015
|
for (var r = i > 1 ? void 0 : i ? jt(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1001
1016
|
(n = t[o]) && (r = n(r) || r);
|
|
1002
1017
|
return r;
|
|
1003
|
-
},
|
|
1018
|
+
}, Ht = (t, e) => (s, i) => e(s, i, t);
|
|
1004
1019
|
let J = class {
|
|
1005
1020
|
/** Текущий режим редактирования сцены */
|
|
1006
1021
|
_currentMode = V.AddFigure;
|
|
@@ -1011,22 +1026,22 @@ let J = class {
|
|
|
1011
1026
|
}
|
|
1012
1027
|
/** Установка режима редактирования сцены */
|
|
1013
1028
|
manage(t, e) {
|
|
1014
|
-
|
|
1029
|
+
t === V.AddFigure ? this._handlers.get(t)?.handle(e) : this._handlers.get(t)?.handle(), this._currentMode = t;
|
|
1015
1030
|
}
|
|
1016
1031
|
/** Освобождает ресурсы менеджера. */
|
|
1017
1032
|
dispose() {
|
|
1018
1033
|
this._handlers && this._handlers.clear(), this._currentMode = V.AddFigure;
|
|
1019
1034
|
}
|
|
1020
1035
|
};
|
|
1021
|
-
J =
|
|
1036
|
+
J = It([
|
|
1022
1037
|
u(),
|
|
1023
|
-
|
|
1038
|
+
Ht(0, U("ISceneHandler"))
|
|
1024
1039
|
], J);
|
|
1025
|
-
var
|
|
1026
|
-
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--)
|
|
1027
1042
|
(n = t[o]) && (r = n(r) || r);
|
|
1028
1043
|
return r;
|
|
1029
|
-
},
|
|
1044
|
+
}, Nt = (t, e) => (s, i) => e(s, i, t);
|
|
1030
1045
|
let ee = class {
|
|
1031
1046
|
constructor(t) {
|
|
1032
1047
|
this._api = t;
|
|
@@ -1083,12 +1098,12 @@ let ee = class {
|
|
|
1083
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));
|
|
1084
1099
|
}
|
|
1085
1100
|
};
|
|
1086
|
-
ee =
|
|
1101
|
+
ee = Vt([
|
|
1087
1102
|
u(),
|
|
1088
|
-
|
|
1103
|
+
Nt(0, h("RendererApi"))
|
|
1089
1104
|
], ee);
|
|
1090
|
-
var
|
|
1091
|
-
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--)
|
|
1092
1107
|
(n = t[o]) && (r = n(r) || r);
|
|
1093
1108
|
return r;
|
|
1094
1109
|
}, Oe = (t, e) => (s, i) => e(s, i, t);
|
|
@@ -1104,13 +1119,13 @@ let te = class {
|
|
|
1104
1119
|
_selectedMesh = null;
|
|
1105
1120
|
// Цвета, необходимые для переключения
|
|
1106
1121
|
/** Цвет ребер для фигуры, на которую навелись */
|
|
1107
|
-
_hoverColor =
|
|
1122
|
+
_hoverColor = W;
|
|
1108
1123
|
/** Цвет ребер для выделенной фигуры */
|
|
1109
1124
|
_selectColor = F;
|
|
1110
1125
|
/** Исходные цвета материалов линий для отката */
|
|
1111
1126
|
_origLineColors = /* @__PURE__ */ new WeakMap();
|
|
1112
1127
|
handle(t, e) {
|
|
1113
|
-
if (this._api.setRaycastMode(this.mode), e ===
|
|
1128
|
+
if (this._api.setRaycastMode(this.mode), e === P.Hover) {
|
|
1114
1129
|
if (!t) {
|
|
1115
1130
|
this._hoveredMesh && this._hoveredMesh !== this._selectedMesh && this._restoreEdgesColor(this._hoveredMesh), this._hoveredMesh = null;
|
|
1116
1131
|
return;
|
|
@@ -1118,7 +1133,7 @@ let te = class {
|
|
|
1118
1133
|
const s = t.intersection.object;
|
|
1119
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);
|
|
1120
1135
|
}
|
|
1121
|
-
if (e ===
|
|
1136
|
+
if (e === P.Click) {
|
|
1122
1137
|
if (!t) {
|
|
1123
1138
|
this._selectedMesh && (this._restoreEdgesColor(this._selectedMesh), this._selectedMesh = null, this._store.setSelectedObject(null));
|
|
1124
1139
|
return;
|
|
@@ -1163,7 +1178,7 @@ let te = class {
|
|
|
1163
1178
|
});
|
|
1164
1179
|
}
|
|
1165
1180
|
};
|
|
1166
|
-
te =
|
|
1181
|
+
te = zt([
|
|
1167
1182
|
u(),
|
|
1168
1183
|
Oe(0, h("RendererApi")),
|
|
1169
1184
|
Oe(1, h("IEditorStore"))
|
|
@@ -1172,7 +1187,7 @@ var Ut = Object.getOwnPropertyDescriptor, Wt = (t, e, s, i) => {
|
|
|
1172
1187
|
for (var r = i > 1 ? void 0 : i ? Ut(e, s) : e, o = t.length - 1, n; o >= 0; o--)
|
|
1173
1188
|
(n = t[o]) && (r = n(r) || r);
|
|
1174
1189
|
return r;
|
|
1175
|
-
},
|
|
1190
|
+
}, Ft = (t, e) => (s, i) => e(s, i, t);
|
|
1176
1191
|
let se = class {
|
|
1177
1192
|
constructor(t) {
|
|
1178
1193
|
this._api = t;
|
|
@@ -1185,13 +1200,13 @@ let se = class {
|
|
|
1185
1200
|
_selected = null;
|
|
1186
1201
|
// Цвета, необходимые для переключения
|
|
1187
1202
|
/** Цвет грани, на которую навелись */
|
|
1188
|
-
_hoverColor =
|
|
1203
|
+
_hoverColor = W;
|
|
1189
1204
|
/** Цвет выделенной граней */
|
|
1190
1205
|
_selectColor = F;
|
|
1191
1206
|
/** Изначальный цвет граней у модели, перед наложением эффектов*/
|
|
1192
1207
|
_defaultColor = 2236962;
|
|
1193
1208
|
handle(t, e) {
|
|
1194
|
-
this._api.setRaycastMode(this.mode), e ===
|
|
1209
|
+
this._api.setRaycastMode(this.mode), e === P.Hover && console.log(t), e === P.Click && console.log(t);
|
|
1195
1210
|
}
|
|
1196
1211
|
rollback() {
|
|
1197
1212
|
throw new Error("Method not implemented.");
|
|
@@ -1203,16 +1218,16 @@ let se = class {
|
|
|
1203
1218
|
};
|
|
1204
1219
|
se = Wt([
|
|
1205
1220
|
u(),
|
|
1206
|
-
|
|
1221
|
+
Ft(0, h("RendererApi"))
|
|
1207
1222
|
], se);
|
|
1208
|
-
var
|
|
1209
|
-
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--)
|
|
1210
1225
|
(n = t[o]) && (r = n(r) || r);
|
|
1211
1226
|
return r;
|
|
1212
|
-
},
|
|
1227
|
+
}, Te = (t, e) => (s, i) => e(s, i, t);
|
|
1213
1228
|
let ie = class {
|
|
1214
1229
|
constructor(t, e) {
|
|
1215
|
-
this._api = t, this._store = e, this._api.enableCameraLayer(
|
|
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);
|
|
1216
1231
|
}
|
|
1217
1232
|
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
1218
1233
|
mode = v.Vertex;
|
|
@@ -1224,11 +1239,11 @@ let ie = class {
|
|
|
1224
1239
|
_selectVertex;
|
|
1225
1240
|
// Цвета, необходимые для переключения
|
|
1226
1241
|
/** Цвет ребра, на которое навелись */
|
|
1227
|
-
_hoverColor =
|
|
1242
|
+
_hoverColor = W;
|
|
1228
1243
|
/** Цвет выделенного ребра */
|
|
1229
1244
|
_selectColor = F;
|
|
1230
1245
|
handle(t, e) {
|
|
1231
|
-
if (this._api.setRaycastMode(this.mode), e ===
|
|
1246
|
+
if (this._api.setRaycastMode(this.mode), e === P.Hover) {
|
|
1232
1247
|
if (!t) {
|
|
1233
1248
|
this._hoverVertex.visible = !1, this._hovered = null;
|
|
1234
1249
|
return;
|
|
@@ -1240,7 +1255,7 @@ let ie = class {
|
|
|
1240
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);
|
|
1241
1256
|
return;
|
|
1242
1257
|
}
|
|
1243
|
-
if (e ===
|
|
1258
|
+
if (e === P.Click) {
|
|
1244
1259
|
if (!t) {
|
|
1245
1260
|
this._selectVertex.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
1246
1261
|
return;
|
|
@@ -1272,7 +1287,7 @@ let ie = class {
|
|
|
1272
1287
|
opacity: 1
|
|
1273
1288
|
}), r = new a.Points(s, i);
|
|
1274
1289
|
return r.renderOrder = 1e3, r.raycast = () => {
|
|
1275
|
-
}, r.layers.set(
|
|
1290
|
+
}, r.layers.set(L), r.visible = !1, r;
|
|
1276
1291
|
}
|
|
1277
1292
|
/** Локальную вершину points переводим в world и пишем в target (прокси-точку) */
|
|
1278
1293
|
_writeWorldVertex(t, e, s) {
|
|
@@ -1294,15 +1309,15 @@ let ie = class {
|
|
|
1294
1309
|
i.getX(e),
|
|
1295
1310
|
i.getY(e),
|
|
1296
1311
|
i.getZ(e)
|
|
1297
|
-
).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 = [];
|
|
1298
1313
|
for (let M = 0; M < _.count; M++)
|
|
1299
|
-
|
|
1314
|
+
D.fromBufferAttribute(_, M), D.distanceToSquared(n) < f && b.push(M);
|
|
1300
1315
|
const O = s.children.find((M) => M?.isLineSegments);
|
|
1301
1316
|
let y = [];
|
|
1302
1317
|
if (O) {
|
|
1303
|
-
const M = new a.Matrix4().copy(O.matrixWorld).invert(), N = r.clone().applyMatrix4(M),
|
|
1304
|
-
for (let
|
|
1305
|
-
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);
|
|
1306
1321
|
}
|
|
1307
1322
|
this._selectVertex.userData.vertexInfo = {
|
|
1308
1323
|
points: t,
|
|
@@ -1326,15 +1341,18 @@ let ie = class {
|
|
|
1326
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);
|
|
1327
1342
|
}
|
|
1328
1343
|
};
|
|
1329
|
-
ie =
|
|
1344
|
+
ie = $t([
|
|
1330
1345
|
u(),
|
|
1331
|
-
|
|
1332
|
-
|
|
1346
|
+
Te(0, h("RendererApi")),
|
|
1347
|
+
Te(1, h("IEditorStore"))
|
|
1333
1348
|
], ie);
|
|
1334
1349
|
class ue {
|
|
1335
1350
|
constructor(e, s) {
|
|
1336
|
-
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
|
+
});
|
|
1337
1354
|
}
|
|
1355
|
+
_unsubscribeTransform;
|
|
1338
1356
|
/**
|
|
1339
1357
|
* Обновляет состояние инструмента под текущее выделение.
|
|
1340
1358
|
*/
|
|
@@ -1352,14 +1370,14 @@ class ue {
|
|
|
1352
1370
|
}
|
|
1353
1371
|
/** Освобождение ресурсов хендлера. */
|
|
1354
1372
|
dispose() {
|
|
1355
|
-
this.rollback();
|
|
1373
|
+
this.rollback(), this._unsubscribeTransform && this._unsubscribeTransform();
|
|
1356
1374
|
}
|
|
1357
1375
|
}
|
|
1358
|
-
var
|
|
1359
|
-
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--)
|
|
1360
1378
|
(n = t[o]) && (r = n(r) || r);
|
|
1361
1379
|
return r;
|
|
1362
|
-
},
|
|
1380
|
+
}, Le = (t, e) => (s, i) => e(s, i, t);
|
|
1363
1381
|
let re = class extends ue {
|
|
1364
1382
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
1365
1383
|
mode = C.Translate;
|
|
@@ -1367,16 +1385,16 @@ let re = class extends ue {
|
|
|
1367
1385
|
super(t, e);
|
|
1368
1386
|
}
|
|
1369
1387
|
};
|
|
1370
|
-
re =
|
|
1388
|
+
re = Xt([
|
|
1371
1389
|
u(),
|
|
1372
|
-
|
|
1373
|
-
|
|
1390
|
+
Le(0, h("RendererApi")),
|
|
1391
|
+
Le(1, h("IEditorStore"))
|
|
1374
1392
|
], re);
|
|
1375
|
-
var
|
|
1376
|
-
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--)
|
|
1377
1395
|
(n = t[o]) && (r = n(r) || r);
|
|
1378
1396
|
return r;
|
|
1379
|
-
},
|
|
1397
|
+
}, De = (t, e) => (s, i) => e(s, i, t);
|
|
1380
1398
|
let oe = class extends ue {
|
|
1381
1399
|
/** Инструмент, которым управляет хендлер, нужен только менеджеру */
|
|
1382
1400
|
mode = C.Scale;
|
|
@@ -1384,13 +1402,13 @@ let oe = class extends ue {
|
|
|
1384
1402
|
super(t, e);
|
|
1385
1403
|
}
|
|
1386
1404
|
};
|
|
1387
|
-
oe =
|
|
1405
|
+
oe = Kt([
|
|
1388
1406
|
u(),
|
|
1389
|
-
|
|
1390
|
-
|
|
1407
|
+
De(0, h("RendererApi")),
|
|
1408
|
+
De(1, h("IEditorStore"))
|
|
1391
1409
|
], oe);
|
|
1392
|
-
var
|
|
1393
|
-
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--)
|
|
1394
1412
|
(n = t[o]) && (r = n(r) || r);
|
|
1395
1413
|
return r;
|
|
1396
1414
|
}, Ce = (t, e) => (s, i) => e(s, i, t);
|
|
@@ -1401,19 +1419,19 @@ let ne = class extends ue {
|
|
|
1401
1419
|
super(t, e);
|
|
1402
1420
|
}
|
|
1403
1421
|
};
|
|
1404
|
-
ne =
|
|
1422
|
+
ne = Qt([
|
|
1405
1423
|
u(),
|
|
1406
1424
|
Ce(0, h("RendererApi")),
|
|
1407
1425
|
Ce(1, h("IEditorStore"))
|
|
1408
1426
|
], ne);
|
|
1409
|
-
var
|
|
1410
|
-
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--)
|
|
1411
1429
|
(n = t[o]) && (r = n(r) || r);
|
|
1412
1430
|
return r;
|
|
1413
|
-
},
|
|
1431
|
+
}, xe = (t, e) => (s, i) => e(s, i, t);
|
|
1414
1432
|
let ae = class {
|
|
1415
1433
|
constructor(t, e) {
|
|
1416
|
-
this._api = t, this._store = e, this._api.enableCameraLayer(
|
|
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);
|
|
1417
1435
|
}
|
|
1418
1436
|
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
1419
1437
|
mode = v.Edge;
|
|
@@ -1427,12 +1445,12 @@ let ae = class {
|
|
|
1427
1445
|
_selected = null;
|
|
1428
1446
|
// Цвета, необходимые для переключения
|
|
1429
1447
|
/** Цвет ребра, на которое навелись */
|
|
1430
|
-
_hoverColor =
|
|
1448
|
+
_hoverColor = W;
|
|
1431
1449
|
/** Цвет выделенного ребра */
|
|
1432
1450
|
_selectColor = F;
|
|
1433
1451
|
/** Обработка текущего режима выборки. */
|
|
1434
1452
|
handle(t, e) {
|
|
1435
|
-
if (this._api.setRaycastMode(this.mode), e ===
|
|
1453
|
+
if (this._api.setRaycastMode(this.mode), e === P.Hover) {
|
|
1436
1454
|
if (!t) {
|
|
1437
1455
|
this._hoverLine.visible = !1, this._hovered = null;
|
|
1438
1456
|
return;
|
|
@@ -1444,7 +1462,7 @@ let ae = class {
|
|
|
1444
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 };
|
|
1445
1463
|
return;
|
|
1446
1464
|
}
|
|
1447
|
-
if (e ===
|
|
1465
|
+
if (e === P.Click) {
|
|
1448
1466
|
if (!t) {
|
|
1449
1467
|
this._selectLine.visible = !1, this._selected = null, this._store.setSelectedObject(null);
|
|
1450
1468
|
return;
|
|
@@ -1479,7 +1497,7 @@ let ae = class {
|
|
|
1479
1497
|
opacity: 1
|
|
1480
1498
|
}), i = new a.Line(e, s);
|
|
1481
1499
|
return i.renderOrder = 1e3, i.raycast = () => {
|
|
1482
|
-
}, i.layers.set(
|
|
1500
|
+
}, i.layers.set(L), i.visible = !1, i;
|
|
1483
1501
|
}
|
|
1484
1502
|
/** Локальные точки сегмента переводим в target (который висит на сцене) */
|
|
1485
1503
|
_writeWorldSegment(t, e, s) {
|
|
@@ -1503,9 +1521,9 @@ let ae = class {
|
|
|
1503
1521
|
if (!isFinite(m) || m === 0) return;
|
|
1504
1522
|
const f = new a.Vector3().addVectors(n, c).multiplyScalar(0.5);
|
|
1505
1523
|
t.position.copy(f);
|
|
1506
|
-
const
|
|
1507
|
-
let b =
|
|
1508
|
-
(!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();
|
|
1509
1527
|
const O = new a.Quaternion().setFromUnitVectors(new a.Vector3(1, 0, 0), _);
|
|
1510
1528
|
t.quaternion.copy(O), t.updateMatrixWorld(!0);
|
|
1511
1529
|
}
|
|
@@ -1518,11 +1536,11 @@ let ae = class {
|
|
|
1518
1536
|
), c = new a.Vector3(i.getX(o), i.getY(o), i.getZ(o)).applyMatrix4(
|
|
1519
1537
|
t.matrixWorld
|
|
1520
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 = [];
|
|
1521
|
-
for (let
|
|
1522
|
-
O.fromBufferAttribute(b,
|
|
1523
|
-
const
|
|
1524
|
-
for (let
|
|
1525
|
-
Z.fromBufferAttribute(me,
|
|
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);
|
|
1526
1544
|
this._selectLine.userData.edgeInfo = {
|
|
1527
1545
|
lines: t,
|
|
1528
1546
|
seg: e,
|
|
@@ -1534,16 +1552,16 @@ let ae = class {
|
|
|
1534
1552
|
};
|
|
1535
1553
|
}
|
|
1536
1554
|
};
|
|
1537
|
-
ae =
|
|
1555
|
+
ae = es([
|
|
1538
1556
|
u(),
|
|
1539
|
-
|
|
1540
|
-
|
|
1557
|
+
xe(0, h("RendererApi")),
|
|
1558
|
+
xe(1, h("IEditorStore"))
|
|
1541
1559
|
], ae);
|
|
1542
|
-
var
|
|
1543
|
-
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--)
|
|
1544
1562
|
(n = t[o]) && (r = n(r) || r);
|
|
1545
1563
|
return r;
|
|
1546
|
-
},
|
|
1564
|
+
}, is = (t, e) => (s, i) => e(s, i, t);
|
|
1547
1565
|
let he = class {
|
|
1548
1566
|
constructor(t) {
|
|
1549
1567
|
this._api = t;
|
|
@@ -1556,7 +1574,7 @@ let he = class {
|
|
|
1556
1574
|
handle(t) {
|
|
1557
1575
|
const e = Je[t](), s = e.getAttribute("position");
|
|
1558
1576
|
s && s.setUsage && s.setUsage(a.DynamicDrawUsage);
|
|
1559
|
-
const i = new a.Mesh(e,
|
|
1577
|
+
const i = new a.Mesh(e, je);
|
|
1560
1578
|
i.layers.enable(He);
|
|
1561
1579
|
const r = Ne(i.geometry);
|
|
1562
1580
|
i.add(r);
|
|
@@ -1572,15 +1590,15 @@ let he = class {
|
|
|
1572
1590
|
this._lastAddedMesh = null;
|
|
1573
1591
|
}
|
|
1574
1592
|
};
|
|
1575
|
-
he =
|
|
1593
|
+
he = ss([
|
|
1576
1594
|
u(),
|
|
1577
|
-
|
|
1595
|
+
is(0, h("RendererApi"))
|
|
1578
1596
|
], he);
|
|
1579
|
-
var
|
|
1580
|
-
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--)
|
|
1581
1599
|
(n = t[o]) && (r = n(r) || r);
|
|
1582
1600
|
return r;
|
|
1583
|
-
},
|
|
1601
|
+
}, Ae = (t, e) => (s, i) => e(s, i, t);
|
|
1584
1602
|
let le = class {
|
|
1585
1603
|
constructor(t, e) {
|
|
1586
1604
|
this._api = t, this._store = e;
|
|
@@ -1602,16 +1620,16 @@ let le = class {
|
|
|
1602
1620
|
this._lastDeletedMesh = null;
|
|
1603
1621
|
}
|
|
1604
1622
|
};
|
|
1605
|
-
le =
|
|
1623
|
+
le = os([
|
|
1606
1624
|
u(),
|
|
1607
|
-
|
|
1608
|
-
|
|
1625
|
+
Ae(0, h("RendererApi")),
|
|
1626
|
+
Ae(1, h("IEditorStore"))
|
|
1609
1627
|
], le);
|
|
1610
|
-
var
|
|
1611
|
-
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--)
|
|
1612
1630
|
(n = t[o]) && (r = n(r) || r);
|
|
1613
1631
|
return r;
|
|
1614
|
-
},
|
|
1632
|
+
}, hs = (t, e) => (s, i) => e(s, i, t);
|
|
1615
1633
|
let ce = class {
|
|
1616
1634
|
constructor(t) {
|
|
1617
1635
|
this._renderer = t;
|
|
@@ -1666,19 +1684,23 @@ let ce = class {
|
|
|
1666
1684
|
enableCameraLayer(t) {
|
|
1667
1685
|
this._renderer.enableCameraLayer(t);
|
|
1668
1686
|
}
|
|
1687
|
+
/** @inheritdoc */
|
|
1688
|
+
onTransformChange(t) {
|
|
1689
|
+
return this._renderer.onTransformChange(t);
|
|
1690
|
+
}
|
|
1669
1691
|
};
|
|
1670
|
-
ce =
|
|
1692
|
+
ce = as([
|
|
1671
1693
|
u(),
|
|
1672
|
-
|
|
1694
|
+
hs(0, h("EditorRenderer"))
|
|
1673
1695
|
], ce);
|
|
1674
|
-
var
|
|
1675
|
-
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--)
|
|
1676
1698
|
(n = t[o]) && (r = n(r) || r);
|
|
1677
1699
|
return r;
|
|
1678
|
-
},
|
|
1700
|
+
}, A = (t, e) => (s, i) => e(s, i, t);
|
|
1679
1701
|
let de = class {
|
|
1680
|
-
constructor(t, e, s, i, r) {
|
|
1681
|
-
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);
|
|
1682
1704
|
}
|
|
1683
1705
|
setDisplayMode(t) {
|
|
1684
1706
|
this._displayManager.manage(t);
|
|
@@ -1701,20 +1723,34 @@ let de = class {
|
|
|
1701
1723
|
addFigure(t, e) {
|
|
1702
1724
|
this._sceneManager.manage(t, e);
|
|
1703
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
|
+
}
|
|
1704
1739
|
dispose() {
|
|
1705
1740
|
this._displayManager.dispose(), this._selectManager.dispose(), this._renderer.dispose();
|
|
1706
1741
|
}
|
|
1707
1742
|
};
|
|
1708
|
-
de =
|
|
1743
|
+
de = cs([
|
|
1709
1744
|
u(),
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
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"))
|
|
1715
1751
|
], de);
|
|
1716
|
-
var
|
|
1717
|
-
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--)
|
|
1718
1754
|
(n = t[o]) && (r = n(r) || r);
|
|
1719
1755
|
return r;
|
|
1720
1756
|
};
|
|
@@ -1729,6 +1765,8 @@ let _e = class {
|
|
|
1729
1765
|
_selectedObject = null;
|
|
1730
1766
|
/** Слушатели событий по изменению выбранного объекта. */
|
|
1731
1767
|
_selectedListeners = /* @__PURE__ */ new Set();
|
|
1768
|
+
/** Слушатели событий трансформации выбранного объекта. */
|
|
1769
|
+
_transformListeners = /* @__PURE__ */ new Set();
|
|
1732
1770
|
constructor() {
|
|
1733
1771
|
Qe(this, {}, { autoBind: !0 });
|
|
1734
1772
|
}
|
|
@@ -1761,6 +1799,11 @@ let _e = class {
|
|
|
1761
1799
|
return this._selectedObject;
|
|
1762
1800
|
}
|
|
1763
1801
|
/** @inheritdoc */
|
|
1802
|
+
getSelectionStats() {
|
|
1803
|
+
const t = this._selectedObject;
|
|
1804
|
+
return t ? ct(t) : null;
|
|
1805
|
+
}
|
|
1806
|
+
/** @inheritdoc */
|
|
1764
1807
|
setSelectedObject(t) {
|
|
1765
1808
|
if (this._selectedObject !== t) {
|
|
1766
1809
|
this._selectedObject = t;
|
|
@@ -1771,25 +1814,31 @@ let _e = class {
|
|
|
1771
1814
|
onSelectedObjectChange(t) {
|
|
1772
1815
|
return this._selectedListeners.add(t), () => this._selectedListeners.delete(t);
|
|
1773
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
|
+
}
|
|
1774
1825
|
};
|
|
1775
|
-
_e =
|
|
1826
|
+
_e = _s([
|
|
1776
1827
|
u()
|
|
1777
1828
|
], _e);
|
|
1778
|
-
let
|
|
1829
|
+
let Re = !1;
|
|
1779
1830
|
const d = Ke.createChildContainer();
|
|
1780
|
-
function
|
|
1781
|
-
return
|
|
1782
|
-
}
|
|
1783
|
-
function Es(t) {
|
|
1784
|
-
return _s(t).resolve("EditorHub");
|
|
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;
|
|
1785
1833
|
}
|
|
1834
|
+
const ws = (t) => ps(t).resolve("EditorHub");
|
|
1786
1835
|
export {
|
|
1787
1836
|
de as EditorHub,
|
|
1788
1837
|
G as EditorRenderer,
|
|
1789
1838
|
X as EventBus,
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1839
|
+
I as EventTopics,
|
|
1840
|
+
Ss as ObjLoader,
|
|
1841
|
+
Ms as PreviewRenderer,
|
|
1793
1842
|
Ie as Renderer,
|
|
1794
|
-
|
|
1843
|
+
ws as createAppHub
|
|
1795
1844
|
};
|